# python_test_tasks review for dmitry_kuznetsov
комментарии/рекомендации к решению
- code_review
- можно заменить, что в текущем документе был бы полезен .dockerignore для makefile
- `*.py`
- исправления корректны
- `Dockerfile`
- не было замечено, что использование базового образа не оптимально, к примеру можно было использовать slim, так же можно было сослаться на более оптимизированный вариант образа на alpine-based
- не было замечено, что можно использовать apt update && apt install для уменьшение слоев в OverlayFS, рекомендации - можно было удалить эту строчку, а так же надо не забывать про лишние файлы, которые могут создаться каждой командой и записаны в docker-образ. именно для этого обычно используют &&
```Docker
RUN apt-get -qq -y update && \
apt-get -qq -y upgrade && \
apt-get -qq -y install cowsay && \
apt-get -y autoclean && \
apt-get -y autoremove && \
rm -rf /var/lib/apt-get/lists/* && \
ln -s /usr/games/cowsay /usr/bin/cowsay
```
- не было замечено, что apt install tar это бесполезная операция в данном случае
- было замечено, что `COPY data.tgz data.tgz` является лишней
- не было замечено, что `COPY . ./` не оптимальная команда, которая каждый раз будет причиной билдинга образа из-за обновления кэша
- не было замечено, что есть команда `ADD`, которая разархивировает `tar.gz` и добавляет их в файловую систему контейнера
- было замечено, что можно использовать `CMD [ "python3", "csv_sum.py" ]` - для упрощения
- `requirements.txt`
- не было замечено, что можно удалить numpy
- было замечено, что можно зафиксировать версию модуля python `pandas==***`
- `makefile`
- было замечено, что отсутствие комментариев
- было замечено, что нешироко используемое название `makefile`
- tessellation
- решение не проходит тесты для `desk_size=[6, 7]` смотри описание для запуска проверки решения
- о решении такого типа задач можно почитать статью [How good is the Warnsdorff’s knight’s tour heuristic?](https://arxiv.org/pdf/0803.4321.pdf)
- в тоже время все переменные и функции хорошо названы, читаемость кода высокая, можно еще было добавить комментариев для функций, см. [рекомендации](https://google.github.io/styleguide/pyguide.html#383-functions-and-methods)
- можно было бы попробовать использовать numpy для упрощения и ускорения некоторых операций с матрицами см. примеры в `test_solution.py`