from memcache import Client
c = Client(('127.0.0.1:11211',))
c.flush_all()
Программирование, машинное обучение, и жизнь
from memcache import Client
c = Client(('127.0.0.1:11211',))
c.flush_all()
В django есть хорошее встроенное приложение comments с поддержкой модерации. Сегодня написал AkismetModerator - крохотный класс, который фильтрует спам в комментариях с помощью сервиса Akismet:
from akismet import Akismet
from django.contrib.comments.moderation import CommentModerator, moderator
from django.utils.encoding import smart_str
class AkismetModerator(CommentModerator):
def moderate(self, comment, content_object, request):
api = Akismet(agent='AkismetModerator@vorushin.ru')
if not api.key:
api.setAPIKey(settings.AKISMET_KEY, 'http://vorushin2.wordpress.com')
if not api.verify_key():
return True
return api.comment_check(smart_str(comment.comment),
{'user_ip': request.META['REMOTE_ADDR'],
'user_agent': request.META['HTTP_USER_AGENT']})
moderator.register(Entry, AkismetModerator)
moderator.register(Link, AkismetModerator)
Entry, Link - модели, комментарии к которым будут прогоняться через AkismetModerator.
Сегодня получил письмо от Михаила:
Если есть такая возможность, напишите про Erlang. Как я понял, в "Рисоваське" он используется. Просто в Интернете катастрофически мало статей об Erlang-е на русском языке. А у Вас, наверняка, есть, чем поделиться. )
Про наш опыт использования Erlang Толик Востряков уже написал две статьи: Erlang в Рисоваське, часть 1 — обзор языка и Erlang в Рисоваське, часть 2 — ответы на вопросы.
От себя добавлю только, что не для всех серверных задач Erlang оказался оптимальным. Сейчас бы мы написали 80% фукнционала на Python, а Erlang использовали бы преимущественно для Comet-части.
Это замечательную книгу я начал читать по рекомендации Anatoly Vorobey. Автор провел 15 интервью с выдающимися программистами нашего времени: от Бреда Фитцпатрика (создатель ЖЖ и, насколько я знаю, самый молодой из интервьюируемых) до Дональда Кнута.
Типичная беседа строилась следующим образом - первую половину составляли расспросы о том как люди начинали свою программистскую карьеру (Фитцпатрик программировал то ли с трех лет, то ли с четырех :))), а во второй части автор задавал примерно одни и те же вопросы - используете ли unit-тесты, что думаете о C++, читали ли Кнута, стоит ли ждать пятидесятилетнего возраста, чтобы начинать писать действительно крутые проекты.
Книга безусловно выдающаяся - пока я читал, у меня разрушались “незыблемые” убеждения, открывался совершенно новый для меня мир лабораторий (почти половина этих крутых ребят много времени работали во всяких labs - Bell Labs, PARC и пр.), приходило понимание что историю могут изменять люди, которые занимаются тем, что им действительно интересно. Многое узнал про то, как построена работа в Google (многие из этих ребят сейчас работают там).
Больше всего мне запомнились интервью с Jamie Zawinski, Brad Fitzpatrick, Ken Thompson и Donald Knuth. Книга великолепная, рекомендую!
В джанге многое сразу покорило мое сердце - прекрасные модели, мощный URLconf, красивые шаблоны. Но вот джанго-формы открылись для меня во всей красе лишь недавно. Я быстро научился верстать и обрабатывать формы руками, поэтому не было надобности вникать в довольно большой посвященный им раздел документации (10 разделов!). В новом большом django-проекте я пишу код уже не один, а с отличными разработчиками - Димой Смолиным и Толиком Востряковым, которые и помогли мне быстрее “вьехать” в суть джанго-форм.
Потребовалось мне на днях сделать сериализацию простого Python-dictionary в XML. Элементы словаря - списки и прочие объекты. Готового сниппета я не нашел, написал свой компактный (меньше 30 строчек) сериализатор.
В одном из проектов необходимо регулярно выкладывать код из ветки stage на staging сервер. Начали делать это вручную - входишь через ssh, делаешь git push origin stage, если нужно - обновляешь базу и затем перезапускаешь apache. К концу этой недели решили, что хорошо бы все эти действия выполнять одной командой. Я прошерстил блоги - сейчас очень активно пишут про использования для этих целей библиотеки Fabric (это аналог Capistrano из Ruby on Rails).
Краткий перевод обсуждения Recommendation against Python?:
kng Я слышал, что сотрудникам Google не рекомендуют использовать Python для новых проектов, что мне кажется глупым, учитывая как много питоновского кода и поддержки самого языка Python исходит из Google. Я начал поиски информации, но ничего не нашел. Вы знаете что-то об этом или это просто слухи?
Поскольку часть моих постов заключается в том, чтобы “дать ссылку на интересную статью”, то сегодня я создал отдельный раздел блога “Интересные ссылки” (справа на главной странице). Часть постов я сконвертировал в статьи-ссылки и из-за этого вы могли получить в свои RSS-ридеры несколько старых записей. Сорри :))))
Я регулярно отслеживаю у себя желание достичь результата одним прыжком - одним удачным выбором технологии (супер-язык или супер-база-данных), выбором супер-идеи, которая перевернет мир, одним программистским запоем, в котором я напишу всё-превсё за выходные. Порой это действительно приводит к прорывам, но чаще это приносит много боли. И чем опытнее становлюсь, тем больше понимаю, что можно делать успешные продукты исходя из других принципов.
9 ноября я беседовал с ребятами из kamblog.ru, рассказывал про свой опыт перехода из сытой тёплой корпорации в свой рискованный стартап, где нужно было все делать самому и пули буквально свистели над головой :)))) Эту беседу-интервью ребята записали на видео. Разговор получился длинным - больше часа. Ниже я запишу основные тезисы беседы.
3 года назад я завел себе ЖЖ, основной функцией которого было отвечать на вопрос “Как дела?”, который многочисленные друзья из разных городов задавали мне по аське с завидной регулярностью. Большинство моих постов были на личные темы, а редкие программерские посты не привлекали особого внимания.
В этом году я снова стал много программировать. Очень много интересной информации, которая помогает очень быстро продвигаться на этом пути, приходит ко мне из программистских блогов: Ивана Сагалаева, Саймона Виллисона, Jacob Kaplan-Moss и других.
Много брать и ничего отдавать - как-то нечестно. Поэтому я начинаю отдавать через этот блог все программистские прорубы, мысли, постить ссылки на интересные статьи и события.
Один из создателей GitHub, Chris Wanstrath, выступил на конференции Ruby Hoedown 2008. Особенно порадовали слова о том, каким нужно быть (а точнее что нужно делать), чтобы начать делать интересные проекты с самыми лучшими разрабочиками со всего мира:
In fact, stop worrying so much about other people. Every time I’ve worked on a project I thought other people would really love, it was a massive flop. Every time I’ve worked on a project I loved, it worked. If you’re sitting in this room, your taste is not as far off from those around you as you’d think. Build something you love and others will love it, too. (Not everyone, of course.)
Alternatively, do something hard, the hardest thing you can think of, in your language of choice. Stretch the boundries. Make Ruby cry out in pain. Install ImageMagick. Rewrite all of the standard library. Write an Objective-C bridge. You know, something just devilish. Flex your brain.
Work on your small project for a few Sundays, declare it complete then move on. Learn another language, or write something else in your new language. Pick up a new web framework or work on flashy effect number two. Add concurrent task execution to your Rake. The more acclimated you get to this process, the more creative your ideas will be. It’s the whole 10% inspiration 90% perspiration thing, and it worked for me.
Текст речи - http://gist.github.com/6443 (особенно интересно читать со строчки 206 :)))). Видео - http://rubyhoedown2008.confreaks.com/08-chris-wanstrath-keynote.html