понедельник, 25 июля 2011 г.

Проект перевода блога Python Insider

Источник: Python Insider Translation Project

Мы считаем, что содержимое данного блога полезно для всего сообщества Python, поэтому одна из наших приоритетных задач - донести эту информацию до максимально большого числа людей. С целью расширения аудитории читателей мы собрали команду переводчиков, которые параллельно ведут этот блог на разных языках. Сегодня мы запускаем перевод еще на двух языках: японском и испанском.

Переводы будут немного отставать от публикаций оригинального блога Python Insider, но переводчики будут стараться, чтобы блоги были более или менее актуальными.

 

Требуется помощь

 

Команда переводчиков пока что невелика, поэтому мы ищем желающих присоединиться. Нам нужны люди, которые могли бы работать с уже переводимыми блогами или помочь в переводе блога на другие языки. Если Вы можете нам в этом помочь, обращайтесь к Doug Hellmann (doug dot hellmann at gmail).

четверг, 14 июля 2011 г.

Знакомьтесь с командой: Брайан Кёртин

Этот пост является частью цикла "Знакомьтесь с командой", который создан, чтобы представить и поближе узнать членов команды разработки ядра Python.

Источник: Meet the Team: Brian Curtin

Имя:Брайан Кёртин
Местонахождение:Чикаго, Иллинойс
Домашняя страница:http://blog.briancurtin.com/

Как долго Вы программируете на Python?

На ежедневной основе - 6 лет. До этого я время от времени использовал Python на уроках в колледже, а также на летней практике.

Как долго Вы являетесь разработчиком ядра?

Чуть больше года. 24 марта ознаменовало мой первый год в команде.

Как вы стали разработчиком ядра? Помните ли свой первый коммит?

Началось все с того, что я заметил ошибку в документации, когда писал модуль расширения на работе. Затем я прислал незамысловатый патч и Георг Брандл практически сразу поместил его в репозиторий. После такого быстрого успеха, получив из репозитория свежий исходный код, я захотел в него углубиться и узнать побольше о модулях, которые я использовал. В итоге, я написал патч для поддержки протокола context manager в модуле zipfile.

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

Над какими частями Python Вы сейчас работаете?

Поскольку я один из немногих в команде разработки CPython, кто программирует под Windows, я стараюсь следить за проблемами, возникающими у разработчиков под Windows. В связи с этим у меня была возможность поработать над группой модулей стандартной библиотеки, включая и те, которые я раньше не использовал. Непосредственно интерпретатором я практически не занимался, но я надеюсь изменить эту ситуацию.

Как Вы еще используете Python, помимо работы по разработке ядра?

Я создаю различные инструменты для тестирования трейдинговой базы данных, которая написана на C++. Для работы с ее данными существует модуль расширения, что позволяет нам легко создавать регрессионные тесты, тесты производительности. Мы стараемся создать больше разных тестов.

Чем вы занимаетесь, когда не программируете?

Я большой фанат бейсбола. Я сужу бейсбол в колледже весной и в различных лигах летом, а также смотрю или хожу на игры команды Chicago Cubs.

пятница, 8 июля 2011 г.

Знакомьтесь с командой: Ник Коглэн

Этот пост является частью цикла "Знакомьтесь с командой", который создан, чтобы представить и поближе узнать членов команды разработки ядра Python.

Источник: Meet the Team: Nick Coghlan

Имя:Ник Коглэн
Местонахождение:Брисбен, Австралия
Домашняя страница:http://www.boredomandlaziness.org

Как долго Вы программируете на Python?

Впервые повстречал версию Python 1.5.2 примерно в 1999 году, когда наш лектор использовал его для курса компьютерных сетей. Начал использовать версию 2.2 профессионально для автоматизированного тестирования приблизительно в 2002 году и никогда не оглядывался на прошлое.

Как долго Вы являетесь разработчиком ядра?

Гвидо дал мне доступ в 2005 году для обновления PEP 343(главным образом изменения, связанные с методом __context__).

Как вы стали разработчиком ядра? Помните ли свой первый коммит?

В процессе помощи проекту патчами у меня был трёхмесячный отпуск в 2004 году, и я провёл большую его часть, работая с Реймондом и Факундо над модулем decimal, большей частью запуская тесты telco, пытаясь повысить производительность кода. Некоторые посторонние хаки в модуле decimal(например, быстрый способ проверки специальных случаев и использование строк для преобразования кортежей цифр в целые числа) обитают там с того времени.

Мою настоящую первую заливку я сделал, наверное, в PEP 343, а затем после этого, вероятно, в ветку AST-компилятора, как только мы завершили его для включения в версию 2.5.

Над какими частями Python Вы сейчас работаете?

runpy, functools и contextlib являются главными вещами, которые имеют обыкновение попадать в мой почтовый ящик. Также я слежу за тем, чем занимаются Брет и Виктор касательно импорта, что делает Реймонд с модулями collections и itertools, а ещё мне интересно всё, что происходит с компилятором. Ещё меня привлекает культурная часть всех этих вещей.

Как Вы еще используете Python, помимо работы по разработке ядра?

Не так и много, в действительности. Программы на Python на работе просто выполняют свои функции как часы, таким образом, нет особой необходимости дорабатывать их прямо сейчас. Я хотел бы сделать что-нибудь для упорядочивания моей цифровой музыкальной библиотеки, так как имеющиеся для этого сейчас скрипты - это просто набор костылей.

Чем вы занимаетесь, когда не программируете?

Тхэквондо, компьютерные игры, футбол, чтение и многое, многое другое...

пятница, 1 июля 2011 г.

Новый дизайн блога

Источник: New Blog Design

Если Вы читаете блог Python Insider с помощью новостной ленты, то Вы, вероятно, не видели новый дизайн блога, который сделал для нас Мартин Войтчук. Новый дизайн выглядит здорово, оставляя при этом ощущение легкости, большего мы не могли и желать.

Мартин, спасибо за потраченные время и усилия!

суббота, 25 июня 2011 г.

Исправлена уязвимость в безопасности модулей urllib/urllib2

Источник: urllib Security Vulnerability Fixed

Гвидо ван Россум недавно разместил в репозитории исправление уязвимости CVE-2011-1521, проблемы безопасности в библиотеках Python, обеспечивающих работу с URL. Несмотря на то, что проблемы безопасности возникают редко, это событие - хороший повод посвятить сообщество в ход работы в случае их возникновения. Работа обычно состоит из 3 этапов: сообщения о проблеме, её анализе и исправления.

Сообщение о проблеме


Если Вы нашли проблему безопасности в CPython, то первое, о чем мы просим, - не разглашать подробности этой проблемы. После того, как Вы убедились, что действительно нашли проблему безопасности, лучшим способом донести эти знания до разработчиков ядра будет создать краткий, но детальный отчет.

Из хорошего отчета можно точно определить, как обнаруженная проблема влияет на соответствующие части системы. Если проблема проявляется на какой-то конкретной платформе или зависит от наличия какого-либо другого кода в системе, то это также полезно знать разработчикам. Хорошо бы знать версии Python, которые затрагивает данная проблема, все актуальные версии Python будут протестированы на наличие указанной уязвимости. И последнее, если у Вас есть тест, отражающий данную проблему, не забудьте включить его в отчет. Всю информацию следует отправить группе security@python.org.

Нилс Хайнен из команды безопасности Google не так давно представил на рассмотрение хороший отчет. Он обнаружил проблему в обработке перенаправления HTTP 302 модулями urllib и urllib2 из стандартной бибилиотеки Python. А выявил Нилс то, что сервер может перенаправлять запросы на неподходящие схемы, что приводит к ситуациям, опасным как для данных, так и для систем. В своем исходном сообщении Нилс рассказал о двух сценариях, когда такие перенаправления могут вызвать проблемы.

Во-первых, поскольку urllib/urllib2 использует обработчик для URL схемы file://, то перенаправление на file:///etc/passwd может раскрыть информацию о паролях. Нилс также пояснил, что перенаправление на системное устройство, подобно file:///dev/zero, может привести к исчерпанию ресурсов и, как следствие, к отказу от обслуживания.

Анализ сообщения об уязвимости


Для уменьшения риска разглашения информации об уязвимости в список рассылки security@python.org входит небольшая группа доверенных разработчиков, которые анализируют и обрабатывают сообщения как можно скорее. Если Вы хотите передавать информацию этой группе в зашифрованном виде, подробно об использовании OpenPGP читайте на страничке новостей безопасности.

Если группа подтвердит наличие проблемы в безопасности, то эта уязвимость может быть анонсирована совместно с устраняющим ее патчем. В данном случае Гвидо ван Россум публично сообщил об уязвимости, которую нашел Нилс, в issue #11662, включив патч.

 

Исправление проблемы


Патч, опубликованный Гвидо, ограничивает перенаправление следующими URL схемами: http://, https:// и ftp://. Использование FTP перенаправления было признано допустимым, оно часто используется системами зеркалирования серверов загрузки, которые иногда перенаправляют запросы на географически более близкие FTP сервера.

Теперь в Python версий 2.x, когда запрашивается перенаправление на неподходящую схему, метод redirect_internal класса FancyURLopener генерирует исключение IOError. Метод http_error_302 класса HTTPRedirectHandler ведет себя аналогично, только будет генерировать исключение HTTPError. В Python 3 такие же исправления внесены в работу модуля urllib.request. В патч включены два теста, проверяющие перенаправление как на правильные, так и на неправильные схемы.

Что касается пользователей Python, то последний выпуск Python 2.5, с доработкой в области безопасности, скоро появится. Несмотря на то, что плановые даты выпуска обновлений для версий 2.6, 2.7, 3.1 и 3.2 пока не определены, их исходный код был доработан для исправления данной уязвимости.

пятница, 24 июня 2011 г.

Знакомьтесь с командой: Тарек Зиади

Этот пост является частью цикла "Знакомьтесь с командой", который создан, чтобы представить и поближе узнать членов команды разработки ядра Python.

Источник: Meet the Team: Tarek Ziadé

Имя:Тарек Зиади
Местонахождение:Тюрси неподалёку от Дижона, Бургундия, Франция
Домашняя страница:http://ziade.org

Как долго Вы программируете на Python?

Около 10 лет.

Как долго Вы являетесь разработчиком ядра?

С 21 декабря 2008 года.

Как вы стали разработчиком ядра? Помните ли свой первый коммит?

Я стал разработчиком ядра с целью поддерживать и развивать Distutils.

Моим первым коммитом была правка небольшой ошибки в функциональности distutils, которую я предложил перед тем, как стать коммитером. Эта функциональность была добавлена в Python неделей раньше. Новшество заключалось в возможности конфигурировать команды Distutils register и upload, чтобы они могли работать с несколькими серверами, подобными pypi.

Правка ошибки в этой функциональности и была моим первым коммитом, который я совершил 24 декабря 2008 года с моими только что полученными привилегиями. Этот день является ещё и моим днём рождения, а также 17-летней годовщиной выхода релиза Python 0.9.4.

Над какими частями Python Вы сейчас работаете?

Над стандартной библиотекой: sysconfig, distutils, packaging(добавлен в версии 3.3), shutil, pkgutil, а также время от времени над другими модулями.

Как Вы еще используете Python, помимо работы по разработке ядра?

Я работаю в Mozilla в сервис-команде, где создаю веб-службы с использованием Python.

Чем вы занимаетесь, когда не программируете?

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

пятница, 10 июня 2011 г.

Формализация политики управления изменением AST

Источник: Formalizing the AST Change Control Policy

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

Хотя смысл Python-кода определён в справочнике языка Python, модуль AST является деталью реализации CPython, и он не является необходимым для реализации в других воплощениях Python.

Совместимость AST

В процессе выполнения работы по переписыванию локального оптимизатора CPython для работы с AST (а не обработки сырого байткода, как это сейчас происходит), Евгению Тодеру было необходимо внести некоторые изменения в структуру AST. Так как это является особенностью реализации CPython, сразу и не ясно, какую политику обратной совместимости нужно применять к AST. По этой причине Евгений задал вопрос в списке рассылки python-dev: "Является ли необходимым при изменении AST обеспечивать обратную совместимость?"

Выработанное общими усилиями мнение было таково: совместимость не является необходимой. У модуля AST есть константа ast.__version__, которая предоставляет программисту способ изменять поведение кода в зависимости от версии AST, с которой тот столкнулся. Эта возможность была признана достаточной для обеспечения совместимости в специфичном для воплощения Python модуле.

Другие воплощения Python

В действительности, мейнтейнеры Jython и IronPython указывали, что их соответствующие реализации обе имеют совместимые AST модули, или планируют предоставлять такую возможность. Однако, они не считают, что модуль AST должен быть заморожен, и не находят ничего плохого в том, что при изменении константы ast.__version__ AST будет изменяться с нарушением совместимости.

Ещё один вопрос, который поднимался, касался полного набора тестов в test_ast.py. Такой набор помог бы другим воплощениям Python обеспечить совместимость с CPython. Увеличение покрытия в test_ast.py было бы хорошим проектом для кого-нибудь, кто хочет заняться разработкой ядра Python.

Что же дальше?

Патч, который послужил причиной дискуссии, до сих пор не включён в CPython. Поэтому, вероятно, всё останется как есть. Хотя, если он будет внесён в репозиторий, AST будет изменён с потерей совместимости. Константа ast.__version__ изменится для того, чтобы отразить это. Код пользователей сможет с помощью этой переменной определить, как себя вести. Если обобщить, то это будет способ изменить AST, который вероятно будет применяться в будущем.

Разработчики Python заинтересованы в определении того, как широко используется AST, и насколько много коллизий будет иметь данная политика. Если у кого-нибудь из читателей есть код, на который будет влиять данное изменение, у них есть стимул поучаствовать в обсуждении на python-dev этого вопроса.