IT-новости про Python, которые стоит знать

Собрали в одном месте самые важные ссылки
читайте нас в Telegram

     28.12.2015       Выпуск 106 (28.12.2015 - 03.01.2016)       Статьи

Прямой доступ к диску из python

Расскажу я вам сегодня о том, как пытался я добраться из питона до интерфейса жесткого диска, и что из этого получилось.

Появляется у меня периодически необходимость тестирования большого количества жестких дисков. Обычно для этого используется досовая Victoria загружающаяся по сети. Она тестирует диски по одному, что не очень удобно. К тому же последнее время пошли платы не имеющие режима IDE, что дополнительно усложняет задачу. По началу у меня возникла идея взять готовый софт под линукс с открытыми исходниками и добавить ему возможность параллельного тестирования нескольких дисков. После беглого поиска выяснилось удручающее состояние этой области в линуксе. Из софта, ведущего при тестировании статистику по времени доступа к секторам и типам ошибок нашел только whdd. Попытка разобраться с кодом whdd закончилась полным провалом. Для меня, ни разу не программиста, код показался очень запутанным. К тому же большую его часть занимает совсем не работа с железом.

     29.12.2015       Выпуск 106 (28.12.2015 - 03.01.2016)       Учебные материалы

Python в научных вычислениях

Доктор физико-математических наук Андрей Грозин прочитал цикл лекций об использовании Python в целях ликвидации безграмотности среди студентов, аспирантов и прочих.

     25.12.2015       Выпуск 105 (21.12.2015 - 27.12.2015)       Конференции, события, встречи разработчиков

Открылось Slack-сообщество Python.ru

В преддверии открытия python.ru появилось сообщество в Slack, где любой русскоговорящий python-разработчик может пообщаться в тематической обстановке

     25.12.2015       Выпуск 105 (21.12.2015 - 27.12.2015)       Колонка автора

Полезные инструменты: clonedigger - поиск дубликатов кода

Количество кода - это некоторый критерий для ПО. Практика показывает, что чем больше кода - тем сложнее поддерживать и развивать продукт. А если в этом коде много copy-past'ы, то совсем плохо.

Для выявления повторяющихся кусков кода существуют различные инструменты. Один из них CloneDigger. Это старая разработка (еще в 2008 году автор выступал на EuroPython), однако, работает хорошо и на данный момент.

     25.12.2015       Выпуск 105 (21.12.2015 - 27.12.2015)       Колонка автора

Синтаксис Python: all и any

Коротко: all и any - встроенные методы, которые позволяют проверять все элементов списка на выполнение условия.

При валидации данных часто возникает задача проверить структуру на корректность. Например, пускай есть список словарей:

     25.12.2015       Выпуск 105 (21.12.2015 - 27.12.2015)       Колонка автора

Синтаксис Python: __slots__

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

Но что если хочется максимально уменьшить размер объектов (а в python все объекты) и при этом не потерять в функциональности? Для примера возьмем плоскость. На плоскости, пускай, надо разместить миллион точек (что не так много). При этом надо иметь возможность красить точку в разные цвета, расстояния подсчитывать и прочие действия.

     25.12.2015       Выпуск 105 (21.12.2015 - 27.12.2015)       Колонка автора

Практические задачи: Задача #003 - система генерации описаний

Продолжаем предлагать различные задачи для практики. Кто заинтересуется решением этих задач, просим помогать друг-другу. Но при этом в течении недели не кидать ссылок на полностью готовое решение. А также, чтобы читать код было удобно - публикуйте его на https://gist.github.com/ или какой-то подобный сервис.

Описание задачи:

     25.12.2015       Выпуск 105 (21.12.2015 - 27.12.2015)       Колонка автора

Пишем web-проекты: исправляем битый HTML с помощью Tidy

При парсинге возникают совсем странные ошибки - одна из них - не валидный HTML. Т.е. с ошибками. Верстальщик забыл закрыть таблицу или body. Еще бывает что вставляют HTML из Word, а там тааккккооооой код.

Чтобы очистить HTML от мусора можно применять инструмент Tidy.

     25.12.2015       Выпуск 105 (21.12.2015 - 27.12.2015)       Колонка автора

Полезные инструменты: virtualenv + pip

Опыт показывает, что каждый проект обладает своими зависимостями (библиотеками), а если и одинаковыми, то версии не совпадают. Чтобы упростить запуск и настройку проекта разработчики пишутINSTALL.md, README.md, make-файлы и что более важно - requirements.txt.

Файл requirements.txt - это правило хорошего тона для Python проектов. Файл содержит список необходимых библиотек для запуска с указанием версий:

     25.12.2015       Выпуск 105 (21.12.2015 - 27.12.2015)       Колонка автора

Таинство стандартной библиотеки: пути до файлов

Python прикладывает множество усилий чтобы скрыть все различия операционных систем. Если смотреть на файлы, а точнее на пути файлов, то легко можно заметить различия между Linux и Windows:

C:\Program Files (x86)

/home/user/documents

     22.12.2015       Выпуск 105 (21.12.2015 - 27.12.2015)       Статьи

Asterisk + Huawei E1550 или как не стоит экономить на телефонии

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

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

     21.12.2015       Выпуск 105 (21.12.2015 - 27.12.2015)       Конференции, события, встречи разработчиков

Moscow Python Meetup №31

22-го декабря на площадке ФРИИ City Hall состоится 31-й Новогодний MoscowPython-митап. На встрече будет объявлено о некоторых «сюрпризах», которые мы готовим в следующем году, ну и конечно, как обычно мы услышим интересные и полезные доклады, включая доклад одного из евангелистов сообщества. Подробнее

     20.12.2015       Выпуск 104 (14.12.2015 - 20.12.2015)       Статьи

Умножение по методу русских крестьян

Иногда этот метод называют «крестьянское умножение», иногда «древнеегипетское», иногда «эфиопское», иногда «умножение через удвоение и деление пополам». Некоторым он хорошо известен, некоторым – непонятен, но при этом он достаточно полезен и может использоваться не только для умножения, но и для возведения в степень и расчётов матриц.

     18.12.2015       Выпуск 104 (14.12.2015 - 20.12.2015)       Статьи

Python->Cython->C++, да и COM в придачу: написание фреймворка для автотестов

Я думаю все в курсе о пользе автотестов. Они помогают держать код в работоспособном состоянии даже при существенных изменениях. Так же это может избавить тестировщиков от нудной ручной работы и позволяет сосредоточиться на более интересных видах тестирования.

Несмотря на то, что отдельным частям нашего проекта более 25 лет, мы только в самом начале пути внедрения автоматического тестирования. Тем не менее, у нас уже есть некоторые успехи, о которых я хочу поведать в этой статье.

Как писать хорошие автотесты – тема отдельной статьи. И, вероятно, не одной. Я же расскажу вам как мы внедрили тестирование отдельных компонентов. Компоненты написаны на С++ и имеют интерфейсы очень похожие на СОМ. В качестве языка для тестов мы выбрали python и используем очень мощный тестовый фреймворк PyTest. В статье я расскажу про сложности связки С++/СОМ и питона, подводные камни, на которые мы наткнулись и как решали эти проблемы.

     17.12.2015       Выпуск 104 (14.12.2015 - 20.12.2015)       Статьи

Синхронный код в асинхронном Twisted, или сказ о том, как скрестить ежа с ужом

Twisted — асинхронный (событийно-ориентированный) фреймворк, написанный на Python. Мощное средство для быстрой разработки сетевых (и не только) сервисов. Он разработан с использованием паттерна проектирования Reactor. Сервисы созданные с использованием Twisted быстры и надежны, фреймворк позволяет не писать макаронный код, насыщенный непонятными коллбэками, имеет внутри себя красивые хелперы (Deferred, Transport, Protocol etc). Другими словами, делает нашу жизнь бекенд разработчиков лучше.
Но есть и проблемы

     17.12.2015       Выпуск 104 (14.12.2015 - 20.12.2015)       Статьи

Сборка XGBoost для Python под Windows

Библиотека XGBoost гремит на всех соревнованиях по машинному обучению и помогает завоёвывать призовые места. Однако, стать обладателем этого пакета для Python под Windows не так просто.

Процесс установки скудно описан на GitHub и немногим шире на форуме Kaggle. Поэтому попробую описать пошагово и более подробно. Надеюсь это поможет сохранить много времени неопытным пользователям.

     16.12.2015       Выпуск 104 (14.12.2015 - 20.12.2015)       Видео

Основы REST API и OAuth2

В ходе этого выступления мы создадим веб-приложение на Django, при помощи которого продемонстрируем всем желающим, как может быть реализован согласованный с принципами REST программный интерфейс к нему, а также узнаем для чего нужны подобные интерфейсы. Помимо принципов REST, будет затронута тема ограничения доступа к веб-ресурсам при помощи OAuth2 (с примерами использования приложения django-oauthost).

     16.12.2015       Выпуск 104 (14.12.2015 - 20.12.2015)       Видео

Мир Python: функционалим с помощью библиотек

Мы рассмотрим популярные библиотеки для функционального программирования на Python — fn.py, functools, itertools, funcy, hask. Узнаем о возможностях каждой из них, а также о том, как в динамическом языке имитировать мощную систему типов. Затронем характеристики функционального программирования.

     16.12.2015       Выпуск 104 (14.12.2015 - 20.12.2015)       Статьи

Selenium для Python. Глава 6. Объекты Страницы

Продолжение перевода неофициальной документации Selenium для Python.
Оригинал можно найти здесь.

     16.12.2015       Выпуск 104 (14.12.2015 - 20.12.2015)       Статьи

Парсинг формул в 50 строк на Python

Вдохновение — задача с собеседования Яндекса и статья «Парсинг формул в 40 строк». Моей целью было посмотреть, как будет выглядеть «pythonic» решение этой задачи. Хотелось, чтобы решение было простым, код читаемым и разделённым. В итоге ещё получился и пример применения цепочки генераторов (generators pipeline).