вторник, 16 апреля 2013 г.

DevConf 2013 ищет докладчиков

Коллеги!

Московская конференция DevConf, которая состоится 14 июня, ищет докладчиков.

Сейчас в разделе Python всего две заявки: я и Lennart Regebro (классный дядька, с удовольствием его увижу снова и послушаю).

Неужели никто больше не желает ничего рассказать?
Темы исчерпались или порох отсырел?

P.S. Информация для иногородних: организаторы конференции берут на себя расходы по трасферу и проживанию. От вас же требуются хорошие интересные доклады.

четверг, 11 апреля 2013 г.

Pythons Innards

Перечитываю снова Pythons Innards (Yaniv Aknin).

Это — серия из нескольких статей о том, как устроен CPython изнутри.
  • Интерпретатор байткода
  • Что из себя представляет этот самый байткод
  • Что такое стек в понятии CPython, и как оно работает
  • Как устроены дескрипторы, слоты и классы на нижнем уровне
  • Пространства имен (namespaces)

Для «простых программистов, работающих работу» — наверное, ничего интересного.
Тем, кто желает разобраться в Питоне «до последнего байта» — очень рекомендую.

Вдобавок очень хочу посоветовать Ely Bendersky с его Python Internals. Эта серия статей тоже посвящена «внутреннему устройству» и прекрасно сочетается с тестами Yaniv Aknin.

  • Как создаётся объект (в деталях)
  • Что такое class и чем отличается от type
  • Как именно происходит вызов callable
  • И т.д. (symbol tables, например)

На самом деле подобного рода информации очень немного. Документация хорошо описывает CPython C API но не рассказывает о деталях, о том как это всё работает.

У меня до C кода дело доходило разве до обсуждения реализации GIL насколько я помню.

Если есть еще интересные статьи по внутреннему устройству — пишите в комментариях, я добавлю сюда. Наверняка что-то запамятовал, но в целом тема раскрыта очень скудно.

Так что если хотите узнать «как оно работает на самом деле» — читайте  статьи по ссылкам.

UPD.
По устройству типов данных:
Строки
Целые числа
Списки
Словари (для версий Python <3.3)

Лекция Larry Hastings (release manager для Python 3.4, между прочим) с US PyCon 2012 на рассматриваемую тему.


понедельник, 4 марта 2013 г.

Python Sprint во Львове


Как я уже писал, 6 апреля будет Kyiv.py #10, на который уже зарегистрировались два докладчика: Ростислав Дзинько (Sockets from the ground up) и Тарас Ляпун (Cython - close to the metal python). Приходите, будет интересно.

А 7 апреля (да-да, на следующий день) во Львове пройдёт спринт по Питону, который организовывает Юля Савьюк @juljetta. Моя роль в этом мероприятии — sprint leader.

Регистрация, место и время

UPD:
Форма регистрации: здесь.
Место проведения: офис Lohika, Лемківська 15, 3 этаж.
Начало в 11.00. Заканчиваем когда устанет последний боец. Реально, думаю, часов через шесть.

Что такое sprint?

Это практически субботник — сознательный организованный бесплатный труд на благо общества в свободное от работы время. Работать предлагается над CPython. Берем готовую issue в багтрекере или создаём свою новую. Если есть трудности с выбором — я помогу и поскажу. Когда вся работа будет сделана — я просматриваю код и, если всё хорошо, тут же делаю push в hg.python.org.

Зачем это делается? Не для того, чтобы решить большую серьёзную проблему. Главное — показать процесс работы над Питоном, объяснить и рассказать. Спринт — отличная возможность для новичка стать python contributor. 

Обычная проблема Open Source: нужно довольно долго переписываться, при этом работа может затухнуть сама собой просто потому что вам никто не отвечает.

Наличие sprint leader (т.е. меня в данном случае) позволяет максимально всё ускорить. 

В результате — приятное чувство: решил проблему (пусть и небольшую)  и принёс пользу Python Community. Хочется продолжать работать дальше в том же духе.

Инструкция

Чтобы спринт был удачным, к нему нужно подготовиться.
Приходим со своими ноутбуками (думаю, это не проблема).

На ноуте может быть любая система: Linux, Windows, Mac OS X.

Нужно установить компилятор С
- gcc на Линуксе идет в комплекте
- на Маке не знаю (там вроде бы можно еще и clang использовать, Питон должен его понимать)
- для Windows нужно установить Visual Studio, Visual Studio Express доступна для бесплатного скачивания и использования. Для работы нужны обе версии 2008 и 2010.

Также требуется Mercurial HG: http://mercurial.selenic.com/

Работа ведется над CPython repo, установленный из коробки Питон не подходит.

Подробные инструкции на английском языке здесь: http://docs.python.org/devguide/

Делаем:

$ hg clone http://hg.python.org/cpython
$ cd cpython
$ ./configure --with-pydebug
$ make -j4
make install делать не нужно

Далее. Чтобы не тратить время зря советую зарегистрироваться на bugs.python.org и просмотреть заранее список issues.
Выбирайте помеченные как easy — они как правило действительно простые.

Если у вас уже есть темы, над которыми хотите поработать — добро пожаловать.
Если не сможете определиться — тоже не беда, я подскажу.

Работа выглядит так:
- создается issue или берется готовая
- готовятся исправления
- делается патч: $ hg diff > issueXXX.diff
- он заливается через форму на bugs.python.org Там же добавляете меня (asvetlov) в nosy list
- я закачиваю патч и применяю его: $ curl http://path-to-patch|patch -p1
- если всё нормально — делаю push в repo

У Питона сейчас открыты для патчей четыре ветки: 2.7, 3.2, 3.3, default (3.4).
Новые фичи принимаются в default, баги и правки по документации могут попасть и в остальные три.
Если кто не знает как работать с ветками — я покажу на месте.

Юниттесты запускаются так:
$ make test
или
$ ./python Lib/test/regrtest.py

Отдельный тест можно запустить
$ ./python Lib/test/test_xxx.py

Перед отсылкой патча настоятельно рекомендую запускать чекер
$ make patchcheck
Эта процедура как минимум убирает лишние пробелы — постоянная головная боль при приеме патчей.

Заключение

Я буду на месте всё время, помогу вам советом, правкой кода и т.д. Все затруднения быстро порешаем.





вторник, 26 февраля 2013 г.

RU PyCon 2013

Закончился первый русский PyCon.

Было очень здорово!

Организация мероприятия выше всех похвал!

Залы просторные, еда вкусная, Wi-Fi работал.

Место проведения — за городом в сосновом лесу.

Антон Патрушев, девчонки из ITPeople и волонтёры поработали очень хорошо, большое спасибо.

Перейду с содержательной части.

Armin Ronacher говорил о Flask . Рассказчик он хороший, всё было очень доходчиво.

К сожалению меня Flask мало интересует, я его нигде не применяю. На вопрос: «Когда Flask заработает на Python 3?» получил не очень обнадеживающий ответ: когда-нибудь. Армин недолюбливает тройку, тратить время прямо сейчас на добавление поддержки Python 3 в Werkzeug не намерен. Ему это не нужно.

Куда интересней было обсуждение достоинств и недостатков Python 3. Как по мне Python 3 — замечательная штука, её стоит пытаться использовать повсеместно. Есть определенные сложности с поддержкой HTTP и WSGI, но webob успешно работает и не жужжит.

Армин же считает что юникод в Python 3 «сломан» (дословно — the unicode support is broken), что мне кажется экспрессивным преувеличением. Чтобы починить Werzeug нужно немного поменять public interface, разрушив таким образом обратную совместимость. Ничего страшного, как по мне. Весь мир успешно решает такие задачи через deprecation process в новых версиях продукта.

Некоторые участники конференции считают, что Ронахеру просто лень. Назову это по другому: он недостаточно замотивирован. Если ему самому изменения не нужны, то их и не будет. Тем более что Flask и Werkzeug — продукты одного человека с относительно небольшим количеством контрибуторов.

Возвращаясь к Питону, Армин считает что:

  1. Python 3 ломает обратную совместимость и при этом его отличия недостаточно радикальны чтобы замотивировать разработчиков переходить на тройку. Утверждение спорное: пытаясь реализовать слишком радикальные изменения мы бы на данный момент имели Python 3.0 alpha вместо Python 3.3.1 и Python 3.4 alpha. А переход библиотек был бы куда более мучительным процессом.

  2. Нужно выпустить Python 2.8 и Python 3.4, облегчающие миграцию библиотек. Я очень скептически отношусь к идее активной разработки 2.8. И, главное, без списка конкретных предложений идея ничего не стоит и скорее напоминает недовольное ворчание (даже если недовольство имеет объективые корни).

Хватит о Ронахере.

Было два отличных доклада о Redis от David Cramer и Amir Salihefendic. Особенно полезны для тех неторопливых разработчиков, кто еще не оценил Redis по достоинству. В двух словах: Redis это больше чем просто кэш. Правильное использование редисовских структур позволяет решать сложные задачи, связанные с быстрой обработкой больших объемов данных. При этом тратить минимальное количество памяти и CPU.

Russell Keith-Magee рассказал (в два приёма) об истории Django, Django community и о том куда всё идет, что нам ждать от следующий версий этого очень популярного инструмента. Любопытная информация и Рассел отличный рассказчик.

Саня Кошелев показал свои эксперименты с асинхронным сетевым кодом и замеры скорости работы при разных схемах использования. Результаты вполне ожидаемые, но подача очень хорошая.

Костя Лопухин подал стандартную задачу версионирования данных в БД с несколько неожиданной для меня стороны. Насколько я видел версионирование обычно делается на уровне кода в бизнес-логике. Косте с коллегами удалось написать вполне на первый взгляд удачную библиотеку для Django, которая экономит много кода и времени. Может, кому-то эта штука придётся очень кстати.

И, наконец, Holger Krekel. Очень мощный доклад о разрабатываемом им инструменте под названием devpi. Это реализация pypi сервера, которая может работать с upstream, выступать в роли proxy, кешировать локально устанавливаемые через нее пакеты, запускать тесты и т.д.

Масштаб задачи и элегантная простота решения меня сразила наповал. Смотрите видео (скоро обещали выложить).

Первый релиз devpi планируется на средину 2013 года, планов громадьё. Уже сейчас то что работает выглядит крайне интересно.

На другие доклады попасть не смог, о себе рассказывать не интересно.

На Lighting Talks набралось пару дюжин желающих. Слушать было в целом интересно, но ничего поражающего воображение (типа презентации argparse на лайтинге в Чикаго 2009) не нашел.

В качестве приятных довесков наговорился с коллегами о разном, попарился в бане, подержал на руках живого питона.

Приятных впечатлений море, полезной информации тоже. Конференция явно удалась, за что большое спасибо организаторам.

Всем рекомендую не пропустить русский PyCon в следующем году.

И, пользуясь случаем, приглашаю в Киев на наш украинский PyCon в конце октября. Уверяю, у нас тоже очень здорово и интересно!

четверг, 21 февраля 2013 г.

Kyiv.py #10

В субботу 6 апреля состоится Kyiv.py #10. Начало в 11.00.

Как обычно, Циклум любезно предоставил нам своё замечательное помещение на Амосова 12.

А теперь самое главное: доклады.

Пока список пуст, так что предлагайте свои темы.

Желающих выступить прошу слать заявку на <andrew.svetlov@gmail.com>.

вторник, 12 февраля 2013 г.

RU PyCon

24-25 февраля состоится Русский PyCon — первая в России конференция по Питону с таким статусом.

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

Сам буду рассказывать о сетевом программировании и грядущем PEP 3156 — общем стандарте на асинхронное программирование для Python 3.

Уже предвкушаю встречу с коллегами, которых вижу максимум пару раз в году если не учитывать переписку по интернету.

Ребята и девчонки, приезжайте! Будет очень интересно и полезно, обещаю.

Первая польза просто от докладов — они расширяют поле внимания, позволяют отвлечься на время от ваших рабочих задач и, возможно, увидеть решение в новом: библиотеке, подходе и т.д. Поток информации большой, много можно почерпнуть.

Вторая польза — собирается несколько сотен программистов. Мы все открыты к общению. Разговоры в кулуарах-корридорах-холлах часто не менее интересны чем лекции. Тут уж приходится выбирать: остаться поговорить здесь или пойти на доклад там.

Третье: нас ищут. Хорошие специалисты нужны всем. У вас есть еще одна возможность найти интересную работу по душе.

P.S.
Да и вообще это очень классная штука — конференции.
После неё хочу работать больше, быстрее, выше — хочу писать код, хороший и красивый. 

Если кто еще не купил билет — у вас есть время это сделать .