---
# System prepended metadata

title: python_test_tasks review for dmitry_kuznetsov

---

# 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`
