Различия между версиями 4 и 5
Версия 4 от 2021-02-11 09:56:07
Размер: 5537
Редактор: FrBrGeorge
Комментарий:
Версия 5 от 2021-02-15 18:28:08
Размер: 6856
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 35: Строка 35:
== Коротко о разработке == == О разработке ==
Строка 42: Строка 42:
  * что меняется   * раздельные yнаборы модулей
  * только манипуляция `$PATH`, никакой изоляции/виртуализации
  * стандартные именования (python вместо python3 и т. п.)
  * `. bin/activate`
  * `deactivate`
Строка 45: Строка 49:
== Коротко о VCS/DVCS ==
[[RW:Система_управления_версиями|VCS]]:
 * [[RW:Revision_Control_System|rcs]]
 * [[RW:CVS]]
 * [[RW:Subversion]]
 * [[https://fossil-scm.org|Fossil]], [[WP:Comparison_of_version-control_software|чёрт в ступе]]
=== Цикл работы с VCS ===
 1. Синхронизация
 1. Редактировние
 1. Оформление коммита
 1. Публикация
== Об IDE ==
Недостаток «больших» IDE в плане обучения:
 * Ориентация на тех, кто ''уже'' понимает процесс разработки
 * Готовая преднастройка того, в чём планируется разобраться
 * Эффективно при большом объёме работ
Строка 57: Строка 55:
Проблема: совместная работа над одним корпусом текстов
 * Интерференция изменений
 * Изменения оп
убликованных исходников задним числом

===
DVCS ===
* [[http://darcs.net|Darcs]]
 * [[RW:Mercurial]], [[RW:Bazaar]]
 * bitkeeper, [[RW:Git]]

=== Цикл работы с DVCS ===
 1. Синхронизация
 1. Разработка (в цикле)
   1. Редактировние
   1. Оформление коммита
 1. Публикация

Минимальные правила:
 * Одно изменение — один коммит
  * (по возможности не вносящий регрессий)
 * Описательные commit message
 * Ответственная публикация

Остальные правила (ветки, теги и т. п. — определяются дисциплиной разработки)

Структура:
 * Публичный репозиторий
 * Локальная рабочая копия и ''полный'' локальный репозиторий

Пример:
 1.#0 `init`/`clone` (развёртывание)
  * («проблема зарождения жизни»: создание репозитория для ''публикации'')
 1. `pull` (синхронизация)
 1. Разработка
  1. Редактирование
  1. `add` (регистрация изменений)
  1. `commit` (фиксация изменений)
 1. `push` (публикация)

Редактор для commit message
Тем не менее:
 * !PyCharm, !WingIDE, !VSCode
 * [[https://www.spyder-ide.org|Spyder]], [[https://github.com/pyscripter/pyscripter|PyScripter]]
 * [[http://geany.org|Geany]] и просто UI-специфичные редакторы с поддержкой языка, например [[https://kate-editor.org|Kate]]
 * [[https://docs.python.org/3/library/idle.html|IDLE]] — часть дистри
бутива Python
 * командная строка, iPython, bPython и т. д.
## Не
успели
## == Коротко о VCS/
DVCS ==
## [[RW:Система_управления_версиями|VCS]]:
## * [[RW:Revision_Control_System|rcs]]
## * [[RW:CVS]]
## * [[RW:Subversion]]
## * [[https://fossil-scm.org|Fossil]], [[WP:Comparison_of_version-control_software|чёрт в ступе]]
## === Цикл работы с VCS ===
## 1. Синхронизация
## 1. Редактировние
## 1. Оформление коммита
## 1. Публикация
##
## Проблема: совместная работа над одним корпусом текстов
## * Интерференция изменений
## * Изменения опубликованных исходников задним числом
##
## === DVCS ===
##
* [[http://darcs.net|Darcs]]
## * [[RW:Mercurial]], [[RW:Bazaar]]
## * bitkeeper, [[RW:Git]]
##
##
=== Цикл работы с DVCS ===
## 1. Синхронизация
## 1. Разработка (в цикле)
## 1. Редактировние
## 1. Оформление коммита
## 1. Публикация
##
##
Минимальные правила:
## * Одно изменение — один коммит
## * (по возможности не вносящий регрессий)
## * Описательные commit message
## * Ответственная публикация
##
##
Остальные правила (ветки, теги и т. п. — определяются дисциплиной разработки)
##
##
Структура:
## * Публичный репозиторий
## * Локальная рабочая копия и ''полный'' локальный репозиторий
##
##
Пример:
## 1.#0 `init`/`clone` (развёртывание)
## * («проблема зарождения жизни»: создание репозитория для ''публикации'')
## 1. `pull` (синхронизация)
## 1. Разработка
## 1. Редактирование
## 1. `add` (регистрация изменений)
## 1. `commit` (фиксация изменений)
## 1. `push` (публикация)
##
##
Редактор для commit message
##

Python и открытая разработка

  • (повторение) Свободное лицензирование и Python
  • Открытая разработка:
    • Низкий порог входа-выхода
    • Произвольная мотивация
    • Динамическая профессиональная иерархия
    • Свободное распространение как условие развития
    • Распределённая совместная разработка
    • Информационное пространство (документация/взаимодействие)

Сообщество Python и разработка

  • Сам Python:
    • PEP-ы

      • Примеры: (разные), pep-635 и его товарищи

      • Гвидо
      • pep-0572 — формальная причина «выхода на пенсию» (письмо)

      • ⇒ комитет по принятию
  • Python Package Index

    • 2021-02-10: 288,767 projects, 2,378,715 releases, 3,869,692 files, 484,667 users

      • Несколько сотен несвободных проектов, остальные — свободные

    • Python Packaging User Guide

    • https://readthedocs.org — документация

    • (никто не мешает использовать GH или вообще что угодно)
    • История с pip search (баг, картинка)

  • Python Packaging Authority

    • См. выше про packaging
    • Разработка стандартов (egg, wheel)
    • Поддержка утилит (pip, setuptools, venv, pipenv)

О разработке

  • Структура каталогов с Python и системными модулями
  • Linux: пользовательские модули в ~/.local/lib/python3

  • pip

    • Куда приезжают .py и запускаемые файлы
    • {i} Установка модуля pyfiglet

  • venv

    • раздельные yнаборы модулей
    • только манипуляция $PATH, никакой изоляции/виртуализации

    • стандартные именования (python вместо python3 и т. п.)
    • . bin/activate

    • deactivate

  • Pipenv (если успеем)

Об IDE

Недостаток «больших» IDE в плане обучения:

  • Ориентация на тех, кто уже понимает процесс разработки

  • Готовая преднастройка того, в чём планируется разобраться
  • Эффективно при большом объёме работ

Тем не менее:

  • PyCharm, !WingIDE, !VSCode

  • Spyder, PyScripter

  • Geany и просто UI-специфичные редакторы с поддержкой языка, например Kate

  • IDLE — часть дистрибутива Python

  • командная строка, iPython, bPython и т. д.

Д/З

  • Зарегистрировать публичный репозиторий (SourceHut, GitHub, GitLab, где угодно)

  • Установить и научиться пользоваться командной строкой git в объёме
  • Для windows рекомендуется официальый клиент, в состав которого входит unix-подобная командная строка — для совместимости с лекциями

LecturesCMC/PythonDevelopment2021/00_OpenDevelopment (последним исправлял пользователь FrBrGeorge 2021-02-15 18:45:14)