Обновить
512K+

Python *

Высокоуровневый язык программирования

464,6
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Путеводитель по Python. Пишем великолепный код

Время на прочтение6 мин
Охват и читатели85K

Доброго времени суток, Хабрахабр. Сегодня на крыле принес еще один перевод я (pdf-ки гугловского стайл гайда выложены). Хотя, кто знает, если кто-то оценит сию работу — быть может появится и продолжение. Как-то днём одним, предложил мне мой широко известный в узких кругах коллега scraplesh почитать ресурс — The Hitchhiker’s Guide to Python! называемый. Ресурс этот понравился мне. Понравились советы выдаваемые там. Понравилась канва повествования и вообще понравилось направление мысли автора. А если что-то хорошо на Ваш вкус, то нужно передавать это из уст в уста:) Итак, решил я сделать перевод данного ресурса. Но не всё так сразу — сначала будет пробная статья «на отклик» хабрасообщества. Если уважаемым гикам понравится сия тематика и изложение — будем стараться выпускать новые части. На первый «отклик» я выбрал раздел — "Writing Great Code" и в нем два подпункта «Structure is Key» и «Modules». Откликнемся под катом.
Читать дальше →

Паттерны проектирования без ООП

Время на прочтение4 мин
Охват и читатели42K
Во времена, когда я писал на Лиспе и совсем не был знаком с ООП, я пытался найти паттерны проектирования, которые мог бы применить у себя в коде. И всё время натыкался на какие-то жуткие схемы классов. В итоге сделал вывод, что эти паттерны в функциональном программировании не применимы.

Теперь я пишу на Питоне и с ООП знаком. И паттерны мне теперь намного понятней. Но меня по-прежнему воротит от развесистых схем классов. Многие паттерны прекрасно работают в функциональной парадигме. Опишу несколько примеров.
Читать примеры

Chatter — основанный на python 2.7 websocket-framework с использованием tornado

Время на прочтение3 мин
Охват и читатели8.2K
Хочу представить сообществу своё небольшое творение — Chatter.

Chatter основан на python 2.7, использует tornado.

Имеется готовое API для python (бэкэнд) и для js (фронтэнд)

Примеры и исходный код на github.

Для чего же собственно он был создан?



Читать дальше →

Взлом аккаунта и юникодные символы

Время на прочтение3 мин
Охват и читатели36K
В техническом блоге «Спотифая» было опубликовано интересное исследование на тему взлома аккаунтов сервиса путём использования особенностей канонизации вводимых пользователем данных. Это стало возможным благодаря тому, чем спотифаевцы гордятся, — полностью юникодному логину. К примеру, пользователь легко может иметь снеговика в качестве имени аккаунта, если он того пожелает. Реализация подобного, впрочем, с самого начала доставляла некоторые неудобства.

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

Хакер действовал следующим образом: желая взломать аккаунт с именем, скажем, bigbird, он регистрировал аккаунт с именем ᴮᴵᴳᴮᴵᴿᴰ (в Пайтоне эта строчка выглядит как u’\u1d2e\u1d35\u1d33\u1d2e\u1d35\u1d3f\u1d30′). После запроса ссылки на сброс пароля задавался новый пароль, который подходил к аккаунту bigbird.
Читать дальше →

Удобное скачивание музыки из vkontakte

Время на прочтение3 мин
Охват и читатели21K
Внимание! Статья не претендует на научное соискательство. Опубликована исключительно в целях помочь тем, кто не хочет писать код сам. Если Вы не слушаете музыку вконтакте, не пользуетесь соц. сетями и у Вас аллергия на мой говнокод код написанный студентом, Вам будет не интересно.

Примерно год назад я написал скрипт для скачивания музыки из vk, причем в нормальном качестве (хотя бы > 250 кбит/c ). Он будет полезен для тех, кто хочет скачать свой плейлист вконтакте или просто для удобного выкачивания музыки пока не поздно. Под «удобным скачиванием», на тот момент, я понимал скачивание песен являющимися саундтреками к какому-либо сериалу или фильму, скачивание по артисту и скачивание по названию. Например вводим «OST Pulp Fiction» и получаем папку с песнями из кинофильма Криминальное чтиво.
Читать дальше →

PyRegs: анализатор регулярных выражений Python 3

Время на прочтение2 мин
Охват и читатели7.6K

Когда не стало Kodos


Беда пришла неожиданно. Из Debian Wheezy изъяли старый, добрый PyQt3. А с ним на покой отправился и Kodos — мой любимый дебаггер регулярных выражений Питона. Много лет он помогал тестировать красивые и жуткие конструкци и тот факт, что apt-get install kodos больше не работает, вызвал желание немедленно исправить это досадное недоразумение.
Читать дальше →

Сортировка треков в плейлисте VK

Время на прочтение1 мин
Охват и читатели67K


Disclaimer: я начал писать этот скрипт, когда весёлые новости ещё не подоспели.

Буду краток.
  • Что оно делает?
    • Переупорядочивает треки в вашем плейлисте в VK так, чтобы с минимальным вмешательством он стал выглядеть аккуратнее.
  • Где взять?
  • Как пользоваться?
    • Понадобится Python 2.7.x. Качаете, устанавливаете. Берёте файл vk_music_organizer.py из архива, открываете в блокноте, в самом начале пишете в строках email = '...' и password = '...' свой логин и пароль соответственно. Сохраняете. Если у вас корректно установлен Python, то после этого достаточно просто запустить этот файл двойным щелчком.

Читать дальше →

Новые версии Flask и Werkzeug с поддержкой питона 3.3

Время на прочтение2 мин
Охват и читатели12K


Армин Ронахер опубликовал в своем блоге новость об обновлении популярных веб-фреймоворков для питона: Flask и лежащего в его основе Werkzeug. Самым главным изменением стала поддержка питона 3 версии (начиная с 3.3 и выше). Также низкоуровнеый API Werkzeug был несколько изменен, чтобы с одной стороны реализовать поддержку спецификации из PEP 3333, а с другой — не потерять в производительности. С новой версией теряется поддержка питона версии 2.5.

Если вы используете Werkzeug, то, с обновленной версией, возможно, придется повозиться. Что касается Flask — то тут все несколько проще, т.к. API не сильно изменился.

Важно заметить, что Flask и Werkzeug в определенном смысле несколько затянули обновлением, ведь наиболее популярные компоненты, составляющие стандартный стек фласк-приложения: шаблонный движок Jinja2 и ORM SQLAlchemy уже достаточно продолжительное время поддерживают питон третьей версии. К слову, в свое время, Армин критиковал у себя в блоге слишком радикальные изменения языка, и довольно холодно отзывался о третьей версии.
Пара слов о других изменениях

Используем bower в django проектах с django-bower

Время на прочтение2 мин
Охват и читатели15K


Многим уже надоело лазить по куче сайтов и скачивать js библиотеки и плагины. Да и таскать когда-то скачанные, но уже давно протухшие версии не очень круто. Эти проблемы решает bower.

Но с ним тоже многое нужно делать вручную: следить за components каждого проекта, руками дёргать bower install. После pip с requirements.txt это делать даже как-то лень.

Поэтому представляю вам django-bower, который берёт на себя установку и обновление bower пакетов по списку из settings и прозрачную работу с staticfiles.
Читать дальше →

DevConf::Python 2013 — пройдет 14 июня в Москве, приезжает автор книги «Porting to Python 3» Lennart Regebro

Время на прочтение2 мин
Охват и читатели4.3K
image
Приглашаем всех разработчиков на Python принять участие в DevConf::Python
14 июня в Москве.
Приезжает автор книги «Porting to Python 3» Lennart Regebro
Секция организована Moscow Django Meetup при активной поддержке Python.su

Первым трем — приславшим в оргкомитет свое фото с галстуком «Python» —
бесплатное участие в основном дне конференции!

(Акция проводится с 9 по 13 июня. Фотошоп не принимается)

Питонисты всех стран, соединяйтесь!

Читать дальше →

Чтение официальных данных о численности муниципальных образований с параметрами форматирования текста с помощью библиотеки xlrd

Время на прочтение3 мин
Охват и читатели4.8K
Для одного общественного проекта (визуализация бюджетов поселений и районов) мне потребовались данные об иерархии муниципальных образований и их численности.
Нужные данные я нашел, но форма их представления для корректного использования оставляла желать лучшего.
Все необходимые данные были в одном файле, однако, его форматирование затрудняло извлечение иерархии.
Читать дальше →

Тестирование производительности Python 2.7 при обработке списков различными способами

Время на прочтение4 мин
Охват и читатели15K
image

В ходе одного из моих питоновских проектов, с большой примесью ООП и обработкой большого числа данных — у меня возник вопрос, а насколько эффективно обрабатывать списки в классе с использованием вызовов его методов, или может использовать вызов внешней функции? Для этого были написаны 24 теста которые показали очень интересные результаты, Кому интересна данная тема, прошу в подробности.
Подробности

Найдены серьёзные баги в pymongo

Время на прочтение1 мин
Охват и читатели10K
Жаль отменили топики ссылки. Этот топик получается изрядно коротким.
В багтрекере разработчиков mongodb появился забавный bug, касающийся качества исполнения драйвера Python->MongoDB.
Я думаю, всем заинтересованным лучше проверить, затронет ли их эта проблема. И, похоже, null pointer dereference может встретиться далеко за пределами pymongo. Ждём красивых багрепортов от Монги.

Ближайшие события

Django 1.6 alpha 1

Время на прочтение2 мин
Охват и читатели16K


На этой неделе вышла первая альфа-версия Django 1.6. Этот выпуск посвящается активному участнику Django-сообщества — Малкольму Трединнику (Malcolm Tredinnick), погибшему 17 марта.

В новой версии фреймворка заметно упростили файл с конфигурацией. Теперь django.contrib.admin включен по-умолчанию, а django.contrib.sites наоборот — выключен. Кроме того, теперь определение локали и защита от кликджекинга включены по-умолчанию.

Читать дальше →

Реляционное отображение коллекций — альтернатива объектно-реляционному отображению?

Время на прочтение6 мин
Охват и читатели11K
Данный текст рассматривает вкратце особенности объектно-реляционного отображения (Object-Relational Mapping — ORM) и вводит новое понятие реляционного отображения коллекций (Collection-Relational Mapping — CoRM), предлагая обсудить перспективы и возможности технической реализации новой концепции долговременного хранения состояния объектов
Читать дальше →

Необыкновенный способ генерации лабиринтов

Время на прочтение6 мин
Охват и читатели89K
В этой статье я расскажу об одном необычном подходе к генерации лабиринтов. Он основан на модели Амари́ нейронной активности коры головного мозга, являющейся непрерывным аналогом нейронных сетей. При определенных условиях она позволяет создавать красивые лабиринты очень сложной формы, подобные тому, что приведен на картинке.

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

Читать дальше →

Советы Google по кодированию на языке Python. Часть вторая: советы по форматированию исходного кода

Время на прочтение14 мин
Охват и читатели86K

Доброго времени суток. Вот и пришло время для публикации второй части так понравившегося многим хабровчанам перевода стайл гайда для языка Python от компании Google, (первая часть бережно хранится хабром). Теперь мы коснемся напрямую форматирования исходного кода на языке программирования Python. Как известно, чистота — залог здоровья, а чистота программного кода — залог уважения коллег и (в идеале) поощрения от кого-нибудь свыше. Вообще, Python сам по себе является хорошо читаемым языком, и даже синтаксис данного языка призывает к порядку в коде (и, как следствие — в голове). Но каждый из нас сам себе документатор и сам себе творец оформления. А как уже говорилось однажды — ко мнению авторитетных товарищей нельзя не прислушиваться. Итак, вторая часть Google Python Style Guide — Python Style Rules ждет Вас под катом. И pdf тут как тут.
Читать дальше →

Разработка системы синхронизации в реальном времени с использованием SockJS, Django, Tornado и ZeroMQ

Время на прочтение5 мин
Охват и читатели22K
Не так давно, разрабатывая очередной программный продукт, наша команда разработчиков столкнулись с задачей реализации полноценной системы синхронизации пользовательских данных в реальном времени, путем рассылки (PUSH метод) изменений сервером. В самом приложении объем данных был не велик, но они могли просматриваться несколькими пользователями одновременно. Поэтому нам был необходим легковесный и достаточно производительный подход к синхронизации данных в рамках Веб-приложения. После того как были рассмотрены различные пути к решению этой задачи, мы остановили свой выбор на достаточно популярном эмуляторе WebSocket’ов – SockJS, который использует различные алгоритмы обмена данными между клиентом и сервером, в зависимости от браузера, которым пользуется клиент. В рамках данной статьи я не буду заострять внимание на том, почему был сделан именно такой выбор (по этому поводу написано немало статей, в том числе и на хабрахабре), а просто скажу, что мы ещё ни разу об этом не пожалели.

Изначально при изучении стандартных подходов к реализации подобного рода задач мы столкнулись с одной проблемой. Эта проблема заключалась в том, что взаимодействие с нашей системой производилось не только посредством веб интерфейса, но также посредством использования API сторонними продуктами, которые мы не могли контролировать. И конечный пользователь нашего продукта, безусловно, ожидает увидеть всю информацию об изменениях в данных, которые его касаются. Стандартный подход использования sockjs сервера подразумевает, что уведомления об изменении каких-либо данных в системе будут посылаться с использованием того же самого JS клиента, который используется для получения информации об этих изменениях. Именно поэтому в нашем случае такой подход был бы неприменим.

В этой статье я хотел бы рассказать о том, как мы решили эту задачу.
Читать дальше →

Django: Использование QR-кодов для быстрого входа на сайт с мобильных устройств

Время на прочтение9 мин
Охват и читатели23K
Если у вас есть сайт, которым часто пользуются с мобильных устройств (таких как телефоны и планшетные ПК), то вы, возможно, задавались вопросом, как реализовать быстрый вход — так, чтобы пользователю не требовалось вводить ни адрес сайта, ни логин и пароль (либо E-mail и пароль).

На некоторых сайтах вы, возможно, видели возможность отправить SMS-сообщение со ссылкой для быстрого входа — это, по сути, приблизительно то же самое. Основное отличие описанного в данной заметке подхода в том, что вместо отправки SMS-сообщения мы будем генерировать QR-код, который содержит ссылку, позволяющую войти на сайт без ввода авторизационных данных.

Скриншот с экрана мобильного телефона

Кстати, весь процесс написания приложения, которое приводится далее, можно посмотреть в скринкасте (есть на YouTube, либо в более хорошем качестве в виде файла MPEG2 в 1080p).
Читать дальше →

Пишем свой шаблонизатор на Python

Время на прочтение6 мин
Охват и читатели26K
Наверняка многие из вас задумывались о том, как устроены шаблонизаторы, какого его внутреннее устройство и каким образом происходит преобразование в фрагменты HTML-кода, однако не догадывались о каких-то особенностях его реализации. Поэтому давайте реализуем упрощенную версию движка шаблонов и продемонстрируем как это работает «под капотом».
Читать дальше →