Differences between revisions 3 and 4
Revision 3 as of 2019-03-29 08:40:24
Size: 1548
Editor: FrBrGeorge
Comment:
Revision 4 as of 2019-03-29 11:04:16
Size: 5196
Editor: FrBrGeorge
Comment:
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
== Про коммит == В принципе, всё, что хотелось рассказать, есть [[https://github.com/FrBrGeorge/PythonDevelopment2019/commits/06_canvas|вот в этой ветке]], начиная с [[https://github.com/FrBrGeorge/PythonDevelopment2019/releases/tag/Lecture_06|этого места]] (Коммит c33c8a7, тег Lecture_06)
Line 7: Line 7:
 '''TODO'''
 По-хорошему, надо каждый коммит сопроводить комментарием.

== Git ==
Итак
Line 10: Line 15:
=== Про теги ===

На commit-ID ссылаться неудобно, он не говорящий. Поэтому можно использовать[[https://git-scm.com/book/en/v2/Git-Basics-Tagging|теги]]. Теги бываю аннотированные и неаннотированные (то есть только метки или метки с каким-то пояснением).

'''TODO'''
 
=== Про коммит ===
Line 14: Line 26:
 * [[FrBrGeorge/Using git add -p|Пример]]  * [[FrBrGeorge/Using git add -p|Пример]] — большая статья, пересказывающая декцию
Line 17: Line 29:
 '''TODO'''  * '''ВАЖНО''' начать группироваться с кем-нибудь в мини-группу для написания и сдачи семестрового проекта (2-3 человека в зависимости от размера задачи)
  * Подробности по мини-группе и требованиям к проекту пожзе
 * Прочитать про различные виждеты `tkinter` в любом имеющемся учебнике: ([[https://tkdocs.com/tutorial/index.html|документация]], [[https://infohost.nmt.edu/tcc/help/pubs/tkinter/web/index.html|Нью-Мехико тек]], [[https://ru.wikiversity.org/wiki/Курс_по_библиотеке_Tkinter_языка_Python|Викиверситет]]
  * В частности, прочитать про `Canvas` и его объекты
 * Взять за основу [[https://github.com/FrBrGeorge/PythonDevelopment2019/releases/tag/Homework-29.03.2019|вот эту заготовку]] и доделать в ней следующее:
  * скопировать `06_canvas.py` в `06_идентификатор.py`, как это было в прошлом задании
  * забрать все элементы управления в единый `Frame` и сделать так, чтобы они не ездили при изменении размера
  * Сделать так, чтобы индикатор цвета был нужного цвета :)
   * (необязательно) …и чтобы имя этого цвета было видно
   * (необязательно) переделать его в `Entry` и задать проверку правильность ввода
  * Завести второй элемент `Canvas` и научиться копировать все элементы из первого во второй и обратно
  * Сделать кнопки обнуления элементов в Canvas-ах
  * Сделать запись в файл и чтение из файла с помощью `tkinter.filedialog`
  * Сделать с помощью `Canvas.find_closest` «таскание» правой кнопкой (Button '''3''') уже имеющихся объектов в классе `Paint`
  * (необязательно) резвиться дальше: рисовать нее только отрезки, генерировать растровое изображение, перекладывать из одного канваса в другое и т. п.!
 * Сформировать pull-request

Объектный подход, Canvas и структура коммита

Canvas

В принципе, всё, что хотелось рассказать, есть вот в этой ветке, начиная с этого места (Коммит c33c8a7, тег Lecture_06)

  • TODO По-хорошему, надо каждый коммит сопроводить комментарием.

Git

Итак

  • Git хранит объекты (а не изменения в них)
  • Коммит — это указание на некоторый набор файлов, которые в какой-то момент присутствовали в процессе разработки
  • Ветка — это последовательность коммитов с учётом того, какой файл предыдущего коммита в какой файл текущего превратился

Про теги

На commit-ID ссылаться неудобно, он не говорящий. Поэтому можно использоватьтеги. Теги бываю аннотированные и неаннотированные (то есть только метки или метки с каким-то пояснением).

TODO

Про коммит

  • При разработке программист рассматривает коммит не как список файлов, а как набор именно изменений, которые с ними произошли (т. н. ханков)

    • Несколько изменений в одном файле считаются за несколько изменений :)

    • Сами ханки нигде не хранятся, они вычисляются всякий раз, когда программисту необходимо знать, чем один коммит отличается от другого.

  • Можно, например, сделать много неатомарных изменений, а потом разделить их на отдельные коммиты:
  • Пример — большая статья, пересказывающая декцию

Д/З

  • ВАЖНО начать группироваться с кем-нибудь в мини-группу для написания и сдачи семестрового проекта (2-3 человека в зависимости от размера задачи)

    • Подробности по мини-группе и требованиям к проекту пожзе
  • Прочитать про различные виждеты tkinter в любом имеющемся учебнике: (документация, Нью-Мехико тек, Викиверситет

    • В частности, прочитать про Canvas и его объекты

  • Взять за основу вот эту заготовку и доделать в ней следующее:

    • скопировать 06_canvas.py в 06_идентификатор.py, как это было в прошлом задании

    • забрать все элементы управления в единый Frame и сделать так, чтобы они не ездили при изменении размера

    • Сделать так, чтобы индикатор цвета был нужного цвета :)

      • (необязательно) …и чтобы имя этого цвета было видно
      • (необязательно) переделать его в Entry и задать проверку правильность ввода

    • Завести второй элемент Canvas и научиться копировать все элементы из первого во второй и обратно

    • Сделать кнопки обнуления элементов в Canvas-ах
    • Сделать запись в файл и чтение из файла с помощью tkinter.filedialog

    • Сделать с помощью Canvas.find_closest «таскание» правой кнопкой (Button 3) уже имеющихся объектов в классе Paint

    • (необязательно) резвиться дальше: рисовать нее только отрезки, генерировать растровое изображение, перекладывать из одного канваса в другое и т. п.!
  • Сформировать pull-request

LecturesCMC/PythonDevelopment2019/06_CanvasAndObjects (last edited 2019-06-04 08:14:34 by FrBrGeorge)