Как стать автором
Обновить
350
0
Коробов Михаил @kmike

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

Отправить сообщение

Про колеса

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

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

pymorphy2

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

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

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

Читать дальше →
Всего голосов 103: ↑100 и ↓3 +97
Комментарии 44

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

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

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

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

Читать дальше →
Всего голосов 59: ↑58 и ↓1 +57
Комментарии 18

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

Время на прочтение 11 мин
Количество просмотров 6.1K
Недавно запустили сервис по бронированию ресторанов ПанГурман. Внутри это более-менее типичный django-сайт. Попробую рассказать, как там что устроено (с картинками). В статье не будет ничего супер-хитрого, но, надеюсь, кому-нибудь пара трюков или идей покажутся полезными и как-то упростят жизнь.
Читать дальше →
Всего голосов 43: ↑38 и ↓5 +33
Комментарии 38

Что будет в django 1.3

Время на прочтение 4 мин
Количество просмотров 1.3K
Релиз django 1.3 совсем скоро. Думаю, многие уже RC в продакшне используют. Но все равно, пробегусь еще раз по тому, что нас ждет, стараясь не скатиться в перевод release notes.
Читать дальше →
Всего голосов 71: ↑65 и ↓6 +59
Комментарии 29

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

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

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

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

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

Читать дальше →
Всего голосов 49: ↑47 и ↓2 +45
Комментарии 30

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

Время на прочтение 1 мин
Количество просмотров 23K
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.
Всего голосов 141: ↑118 и ↓23 +95
Комментарии 39

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

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

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

Читать дальше →
Всего голосов 159: ↑153 и ↓6 +147
Комментарии 37

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

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

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

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

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

Разберемся поподробнее.
Читать дальше →
Всего голосов 105: ↑100 и ↓5 +95
Комментарии 45

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

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

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

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

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

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

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

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

Это не хорошо и не плохо, это просто данность, которая продиктована бизнес-причинами.
Всего голосов 140: ↑99 и ↓41 +58
Комментарии 40

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

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

Читать дальше →
Всего голосов 52: ↑48 и ↓4 +44
Комментарии 19

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

Время на прочтение 4 мин
Количество просмотров 3.4K

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

Читать дальше →
Всего голосов 223: ↑206 и ↓17 +189
Комментарии 140

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

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

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

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

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

Читать дальше →
Всего голосов 55: ↑50 и ↓5 +45
Комментарии 51

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

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

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

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

Читать дальше →
Всего голосов 66: ↑62 и ↓4 +58
Комментарии 45

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

Время на прочтение 8 мин
Количество просмотров 53K
Морфологический анализатор для русского языка — это что-то заумное? Программа, которая приводит слово к начальной форме, определяет падеж, находит словоформы — непонятно, как и подступиться? А на самом деле все не так и сложно. В статье — как я писал аналог mystem, lemmatizer и phpmorphy на Python, и что из этого получилось.
Читать дальше →
Всего голосов 115: ↑109 и ↓6 +103
Комментарии 44

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

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

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

С ее помощью суслики(и не только) могут узнать, с какой скоростью им следует размножаться, чтобы удвоить свою численность за X лет. Работать с программой очень просто: вводишь X, получаешь %, на который стоит увеличивать свою популяцию за год.
Читать дальше →
Всего голосов 119: ↑106 и ↓13 +93
Комментарии 82

Информация

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