Обновить
347
@kmikeread⁠-⁠only

Пользователь

139
Подписчики
Отправить сообщение

Про колеса

Время на прочтение2 мин
Охват и читатели16K
Многие уже слышали про колеса / wheels; рассказывать про них подробно не буду — на хабре были хорошие статьи. Опишу пошагово один (очевидный) способ использования колес на машине разработчика.

Все, кто устанавливал пакеты вроде numpy или scipy через pip знают, что это долго: компиляция может и десять минут занять, и двадцать, и тридцать. Среду для компиляции-то можно настроить (ну по крайней мере под mac и linux это не так сложно), но устанавливать такие зависимости в каждый virtualenv — то еще удовольствие. Можно, конечно, чай попить. Или виртуаленвы не использовать / использовать один общий.
Читать дальше →

pymorphy2

Время на прочтение16 мин
Охват и читатели89K
В далеком 2009 году на хабре уже была статья "Кузявые ли бутявки.." про pymorphy — морфологический анализатор для русского языка на Python (штуковину, которая умеет склонять слова, сообщать информацию о части речи, падеже и т.д.)

В 2012м я начал потихоньку делать pymorphy2 (github, bitbucket) — думаю, самое время представить эту библиотеку тут: pymorphy2 может работать в сотни раз быстрее, чем pymorphy (втч без использования C/C++ расширений) и при этом требовать меньше памяти; там лучше словари, лучше качество разбора, лучше поддержка буквы ё, проще установка и более «честный» API. Из негатива — не все возможности pymorphy сейчас реализованы в pymorphy2.

Эта статья о том, как pymorphy2 создавался (иногда с довольно скучными техническими подробностями), и сколько глупостей я при этом наделал; если хочется просто все попробовать, то можно почитать документацию.

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

Префиксные деревья в Python

Время на прочтение6 мин
Охват и читатели15K
Доделал на днях питонью библиотеку datrie, реализующую префиксное дерево (см. википедию или хабр), спешу поделиться.

Если вкратце, то можно считать, что datrie.Trie — это замена стандартному питоньему dict, которая при определенных условиях (ключи — строки) занимает меньше памяти, имеет сравнимую скорость получения отдельного элемента и поддерживает дополнительные операции (получение всех префиксов данной строки, получение всех строк, начинающихся с данной строки и др.), которые работают примерно так же быстро, как и «словарные» операции.

Работает под Python 2.6-3.3, поддерживает юникод, лицензия LGPL.

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

Рецепты от ПанГурмана

Время на прочтение11 мин
Охват и читатели6.5K
Недавно запустили сервис по бронированию ресторанов ПанГурман. Внутри это более-менее типичный django-сайт. Попробую рассказать, как там что устроено (с картинками). В статье не будет ничего супер-хитрого, но, надеюсь, кому-нибудь пара трюков или идей покажутся полезными и как-то упростят жизнь.
Читать дальше →

Что будет в django 1.3

Время на прочтение4 мин
Охват и читатели1.4K
Релиз django 1.3 совсем скоро. Думаю, многие уже RC в продакшне используют. Но все равно, пробегусь еще раз по тому, что нас ждет, стараясь не скатиться в перевод release notes.
Читать дальше →

Автоматизируем выкладку django-проектов на сервер

Время на прочтение7 мин
Охват и читатели13K
Настраивать VDS'ки для выкладки django-проектов довольно утомительно бывает, да и легко что-то забыть (т.к. делаешь это не каждый день). Гораздо лучше, когда этот процесс автоматизирован: с меньшими усилиями можно получить правильно настроенный проект и набор команд для работы с ним.

Существую разные подходы к этому процессу: специфичные для питона (fabric, buildout) или неспецифичные (puppet, Chef, наборы shell-скриптов и т.д.).

Подход fabric — локально выполняемый скрипт ходит по ssh на сервер и выполняет там команды. Этот подход довольно прямолинеен и прост в отладке, тем и хорош (обзор на хабре). Из разнообразных команд fabric постепенно вырисовался велосипед под названием django-fab-deploy. Это набор fabric-скриптов, который умеет настраивать серверы под Debian Lenny или Squeeze, а потом с минимальными усилиями разворачивать там django-проекты и управлять этими проектами в дальнейшем.

С выходом Debian Squeeze взялся за django-fab-deploy посерьезнее, поправил некоторые шероховатости и теперь, думаю, самое время об этом проекте рассказать. У проекта есть документация, тут будет краткий пересказ с лирическими отступлениями.

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

История создания Javascript

Время на прочтение1 мин
Охват и читатели25K
Brendan Eich (создатель языка JavaScript) между делом пишет о том, как язык создавался, и почему он такой, какой есть.

JS был обязан «выглядеть как Java», только поменьше, быть эдаким младшим братом-тупицей для Java. Кроме того, он должен был быть написан за 10 дней, а иначе мы бы имели что-то похуже JS.
…
что-то вроде PHP, только еще хуже. Его босс Netcsape быстро «зарубил» (в июле 1995, если мне не изменяет память; я сдлелал JS в начале/середине мая), т.к. это был уже третий язык после Java и JS. Было и так трудно обосновать то, что у нас 2 новых языка программирования для web.
…

В то время мы должны были двигаться очень быстро, т.к. знали, что Microsoft идет за нами.
…

Считайте, что JavaScript (пожалуйста, только не «JScript») спас вас от VBScript.
…

10 дней на то, чтобы сделать лексер, парсер, компилятор в байткод (bytecode emitter), интерпретатор, встроенные классы и декомпилятор. Помощь была только с файлом jsdate.c — от Ken Smith из Netscape (который, по нашему излишне оптимистичному соглашению, склонировал java.util.Date — Y2K баги и т.д. Гослинг...).

Простите, времени было мало для того, чтобы сделать правильную оптимизацию хвостовой рекурсии. 10 дней почти без сна, чтобы сделать JS с чистого листа, заставить его «выглядеть как Java» (я сделал, чтобы он выглядел как C), и тайком протащить туда его спасительные фишки: first class functions (замыкания сделал позже, но они были частью плана сразу) и прототипы (примерно как в языке Self).

I'll do better in the next life.

Сумбурные заметки про python и django

Время на прочтение5 мин
Охват и читатели47K
Накопилось несколько маленьких заметок/советов про python и django, которые на отдельные топики не тянут, поэтому публикую все сразу.

Под катом:
  • как упростить код вьюх ровно в 2 раза
  • легкий способ рисования графиков
  • почему Ian Bicking воскликнул «Cool!»
  • приложения для ВКонтакте на django за 5 минут
  • хорош ли pymorphy?
  • пара фишек насчет выкладки пакетов на pypi
  • что общего между декораторами и with-контекст-менеджерами
  • принимаем оплату на django-сайтах
  • показываем Яндекс.Карту для заданного адреса

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

Улучшаем админку

Время на прочтение6 мин
Охват и читатели82K
Одно из слабых мест джанго-админки — главная страница. Идея авто-группировки моделей по приложениям и вывод столбиком в одну колонку работает только на начальных этапах, дальше это становится просто неудобно — куча лишней информации и довольно сложные пути для того, чтобы добавить полезную. Ну, например, чтобы названия приложений писались русскими буквами — полностью перекрывать шаблон.

И тут на помощь приходит django-admin-tools. С этим приложением минут за 20 можно получить «приборную панель» с произвольной группировкой приложений/моделей, вкладками, любым числом колонок, различными блоками, которые каждый пользователь сможет расставить, как ему удобнее, скрывать и сворачивать по желанию, закладками, настраиваемым меню и удобным способом добавления во все это хозяйство всего, чего только можно придумать.

Вот так, например, сейчас выглядит админка к сайту НадоВместе:

image
(это только часть, вот скриншот целиком)

Разберемся поподробнее.
Читать дальше →

Почему ВКонтакте не станет провайдером OpenID

Время на прочтение1 мин
Охват и читатели5.2K
Если что, к «ВКонтакте» я не имею никакого отношения, это просто рассуждения.

Для каждого сайта, которому нужен вход через Open API, сейчас требуется завести вконтактовское приложение типа «веб-сайт». При этом владельцы сайта соглашаются с определенными условиями. Среди них есть, например, такое:

При размещении приложений на сайте ВКонтакте запрещается:
3. Принимать оплату услуг в приложении отличными от внутренней валюты ВКонтакте способами, в том числе на сторонних сайтах.

Надеюсь, все читали это перед тем, как начать прикручивать вход через ВКонтакте к своему интернет-магазину. Отключение приложения и, как следствие, потеря пользователями возможности зайти в свой аккаунт — это очень серьезно.

Именно поэтому я уверен, что ВКонтакте никогда не будет провайдером OpenID (и будет душить все попытки его таковым сделать косвенно). Став провайдером OpenID, ВКонтакте потеряет возможность диктовать сайтам условия (выбор платежной системы, например) и не получит при этом никаких плюсов по сравнению с Open API.

Единственный реалистичный расклад, при котором контакт все-таки станет провайдером OpenID — убытки от негативной репутации превысят выгоду, получаемую от того, что владельцы сайтов соглашаются с навязанными условиями. Выгода — реальные осязаемые $$ прямо сейчас, которые со сторонних сайтов идут через вконтактовскую платежную систему. А потеря репутации — для небольшого круга гиков?

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

Это не хорошо и не плохо, это просто данность, которая продиктована бизнес-причинами.

Пишем функциональные/интеграционные тесты для проекта на django

Время на прочтение8 мин
Охват и читатели18K
В этой захватывающей статье я расскажу про инструменты, с помощью которых можно писать функциональные тесты для django-проекта. Есть куча разных других способов это делать, но я опишу один — тот, который, на мой взгляд, самый простой. Между делом создадим красивый отчет по code coverage (субъективно — приятнее тех, что делает coverage.py). И еще, в качестве приправы, будет немного болтовни про тестирование.

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

Никогда не говорите слово …, или регистрация в 2 щелчка мышью

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

Люди не очень любят регистрироваться. Это же нужно (в общем случае) придумать логин и пароль, зайти в свою почту, дождаться письма, открыть его, перейти по ссылке активации аккаунта, а потом еще этот логин с паролем не забыть. Но ведь уже давно есть способ, с помощью которого все эти шаги не нужны. Более того, не нужно вообще ничего вводить с клавиатуры, 2 щелчка мышью и все, человек зарегистрирован.

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

Определение пола по истории навигации, шаг 2й

Время на прочтение2 мин
Охват и читатели4.6K
Добрый день.
Сперва ссылка: угадываем пол посетителя.

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

Но зарубежные определялки работают у нас не очень, т.к. учитывают сайты, популярные в США.
Собрал информацию по русским сайтам, немного переписал скрипты.
Практическое применение (ха, очень важное и полезное): на сайте есть форма, где нужно указать свой пол. Если человек ранее пол не указывал, то с помощью этой технологии сайт пробует его угадать и подставить нужный.

Если кто-то захочет сделать у себя, то выкладываю наработки: там серверное приложение django, js-файл, дамп собранной базы данных. Лицензия, если где-то не указано, — MIT. Без джанги все тоже легко можно использовать.

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

Как можно снизить потребление оперативной памяти на VPS в 2 раза, ничего не меняя в настройках программ

Время на прочтение3 мин
Охват и читатели34K
Взял VPS, построенный на OpenVZ. Поставил туда Debian Lenny и всякие программы (обычный LAMP, по сути). С точки зрения потребления ресурсов ничего почти не настраивал, вышло где-то 200М занятой оперативной памяти (сразу после старта).
Написал ulimit -s 1024 в /etc/init.d/rc ближе к верху. Перезагрузился. Потребление памяти на VPS упало более чем вдвое, стало около 100М.

Если у Вас VPS на Xen или аналогичных, то у Вас нет граблей, с которыми я тут боролся. Если на OpenVZ (Virtuozzo) со товарищи — у Вас, скорее всего, на VPS эти же грабли.

В статье — почему и как это работает.

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

Кузявые ли бутявки, т.е. пишем морфологический анализатор на Python

Время на прочтение8 мин
Охват и читатели56K
Морфологический анализатор для русского языка — это что-то заумное? Программа, которая приводит слово к начальной форме, определяет падеж, находит словоформы — непонятно, как и подступиться? А на самом деле все не так и сложно. В статье — как я писал аналог mystem, lemmatizer и phpmorphy на Python, и что из этого получилось.
Читать дальше →

Программирование на языке Piet для сусликов

Время на прочтение1 мин
Охват и читатели8.9K
Добрый день.
Кризис, мало заказов, появилось немного свободного времени? Самое время научиться писать важные и полезные программы на эзотерическом языке Piet, который использует разноцветные изображения в качестве операторов. Я написал вот такую:

программа на Piet

С ее помощью суслики(и не только) могут узнать, с какой скоростью им следует размножаться, чтобы удвоить свою численность за X лет. Работать с программой очень просто: вводишь X, получаешь %, на который стоит увеличивать свою популяцию за год.
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Екатеринбург, Свердловская обл., Россия
Работает в
Дата рождения
Зарегистрирован
Активность