Программирование, веб, python, django и многое-многое другое
3 августа с 6 до 9 вечера. Лев - редактор журнала "Практика функционального программирования" и CTO компании Echo
https://twitter.com/#!/levwalkin/status/96841584062111744
Простое и четкое объяснение механизма __slots__ (via @raymondh)
Tom Preston-Werner (сооснователь и CTO github.com) рассказывает про git, показывая в консоли как он сам пользуется гитом. Я скоро два года как пользователь git'a, но все же узнал интересные вещи.
http://vimeo.com/17118008
"The biggest rule is that the point of code review is to find problems in code before it gets committed - what you're looking for is correctness. The most common mistake in code review - the mistake that everyone makes when they're new to it - is judging code by whether it's what the reviewer would have written."
http://scientopia.org/blogs/goodmath/2011/07/06/things-everyone-should-do-code-review/
Замечательная бесплатная Khan Academy начала издавать видео-лекции по Computer Science с примерами на Python. И как они пишут в комментариях к одному видео "Google uses it [Python] for a lot of their development (I believe it is their language of choice). Khan Academy's server side code is all Python."
http://www.youtube.com/user/khanacademy#g/c/36E7A2B75028A3D6
"Wikipedia says software erosion is "slow deterioration of software over time that will eventually lead to it becoming faulty [or] unusable" and, importantly, that "the software does not actually decay, but rather suffers from a lack of being updated with respect to the changing environment in which it resides."
Если еще не читали 2 статьи на близкую тему в блоге Ивана Сагалаева, рекомендую прочитать: Вместе или врозь, Вместе или врозь: новая идея
http://blog.heroku.com/archives/2011/6/28/the_new_heroku_4_erosion_resistance_explicit_contracts/
А вот и видео с DjangoCon Europe подоспели. Их по традиции выложили на blip.tv (в отличии от Europython, которые выложили на амазоновский cloudfront).
http://blip.tv/djangocon-europe-2011
Видеозаписи выложены на страничках с выступлениями. (via reddit)
http://ep2011.europython.eu/p3/schedule/ep2011/
Обновил в соответствии с новыми фичами Django 1.3, подчистил и выложил в открытый доступ код этого блога.
https://github.com/vorushin/vorushin_ru
Очень простое django app, которое делает "Sign in with Twitter".
https://github.com/mdiep/django-twitter-users
Guido van Rossum рассказывает о двух беседах с людьми, активно использующими Python в очень разных областях. Annie Liu - professor of computer science, Drew Houston - co-founder and CEO of Dropbox.
http://neopythonic.blogspot.com/2011/06/depth-and-breadth-of-python.html
Написал маленький (меньше 100 LOC) плагин для редактора SublimeText 2. Плагин проверяет *.py файлы через pep8 и pyflakes. PEP-8 проверяет соответствие кода python style guide, а pyflakes находит глупые и не очень ошибки (пропущенные/неиспользуемые импорты, неиспользуемые переменные и пр.). Upd. Reddit link - redd.it/hnf08
https://github.com/vorushin/sublimetext_python_checker
Очень простое знакомство с Markov chains.
http://matthewshotton.wordpress.com/2011/02/23/clothed-all-in-the-morning-you-know-by-the-river-a-lite-introduction-to-markov-chains-and-nonsense/
О разных подходах в решении задач машинного перевода, распознавания речи, поиска в интернет.
См. также Chomsky random text generator (Python recipe)
http://norvig.com/chomsky.html
"Contrary to what you might believe, merely doing your job every day doesn't qualify as real practice. Going to meetings isn't practicing your people skills, and replying to mail isn't practicing your typing. You have to set aside some time once in a while and do focused practice in order to get better at something. ... Separating the practicing from the profession is often referred to as code kata."
http://www.codinghorror.com/blog/2008/06/the-ultimate-code-kata.html
"The goal is to encourage programmers/hackers to explore/write some new: code, tests, docs. And I mean new – not something bogged down by their every day projects. It could just be a clever one liner ala Raymond’s python tips. It could be a few-hundred-line piece of code that just tracks how many times they’ve watched their favorite show using some cool module. Just keep the hand moving; just take 3, 10 or 30 minutes a day and keep a private code journal of new ideas, concepts, etc. Write some morning pages."
http://jessenoller.com/2011/05/22/free-idea-code-equivalent-to-morning-pages750-words/
Как пересекаются (и помогают друг другу) занятия фотографией, музыкой, танцами, программированием (и прочие хобби). PS. Я сам только что вернулся с четырехдневного семинара по контактанго и за эти дни мне пришло много идей и новых подходов для моей программистской жизни.
http://stevelosh.com/blog/2011/05/on-learning-and-teaching/
"Mark Guzdial and Barb Erickson have shown that introducing students to programming by teaching them Python and writing programs that manipulate images and sound (an approach they call Media Computation) clearly improves overall success rates for students in CS 1 and CS 2. (The use of Pyton lowers the learning curve, and the user of muti-media based assignments improves interest and motivation.)"
http://spin.atomicobject.com/2011/05/17/the-deep-end-of-the-pool/
"You are not a Software Engineer. You do not build skyscrapers. You do not build bridges.
You grow gardens.
You are a Software Gardener."
http://chrisaitchison.com/2011/05/03/you-are-not-a-software-engineer
Мой друг Акве делает проект Comindwork. Ищет нового человека в команду. Команда в Киеве (м. Контрактова площа).
http://habrahabr.ru/job/4935/
Читаю про то, как Steve Losh делал редизайн своего блога, и все более укрепляюсь во мнении, что для того чтобы становиться все более лучшим программистом недостаточно заниматься только программированием. Нужно делать что-то еще - танцевать, играть на музыкальных инструментах, читать хорошую литературу. Upd. Если вам понравилось, прочитайте еще Beauty in Computer Science
http://stevelosh.com/blog/2010/09/making-my-site-sing/
Уже посмотрел 3 выступления, просто напалм.
http://pycon.blip.tv/posts?view=archive
Компания, в которой я программирую, вкусно кушаю и пью чай, ищет тестера. Идеально - крутого программиста, которому нравится тестирование (настраивать CI сервер, писать реюзабельный чистый код тестов, делиться полученным опытом на конференциях). Если поддержка и развитие тестов будет занимать мало времени, то можно часть времени писать с командой интересные проекты на Java/Python/Javascript. Денег можем предложить много, лишь бы специалист был выдающийся и человек хороший.
http://rabota.ua/company870723/vacancy4654019
Как настроить несколько Solr instances (cores) на одном сервере под управлением Ubuntu (по умолчанию в Ubuntu конфигурируется только 1 инстанс). Для тех, у кого Solr запущен под Tomcat, установленным вручную (как у меня на Mac OS X) - инструкция тут
PS. Похоже Solr стал очень распространенным поисковым движком.
http://davidpoblador.com/multiple-solr-instances-the-clean-ubuntu-way/
Brian Jones портировал библиотеку dateutil на python 3, потратив всего 5 часов. Так держать! (У меня стоит python 3.2 и нехватка привычных библиотек очень чувствуется).
http://www.protocolostomy.com/2011/02/25/lessons-learned-porting-dateutil-to-python-3
Automating Page Checking without Brittleness (как хорошо писать тесты для selenium на питоне) via convore
http://pragprog.com/magazines/2010-08/page-objects-in-python
Альтарнативный способ написания юниттестов. Если кратко, то в большинстве случаев можно просто писать assert f(a, b, c) = 123 и все равно получать полные сообщения об ошибках. Есть интеграция с django - django-pytest. Via convore
http://pytest.org/
"Imagine you're driving in your car when something terrible happens: the brakes fail. By a bizarre coincidence, at the exact same moment your throttle and gearshift lever both get stuck. You can neither speed up nor slow down. The only thing that works is the steering wheel. You can turn, changing your direction, but you can't change your speed at all.
...
You can change your direction, but you cannot change your speed.
...
That's how it is to move through our universe. You've got a steering wheel, but no throttle."
http://www.reddit.com/r/askscience/comments/fjwkh/why_exactly_can_nothing_go_faster_than_the_speed/
"I made it a rule that as soon as I finished any task, or got bored with it, I had to power off my computer.
I could turn it back on right away—this wasn’t about trying to use the computer less. The rule was just that the moment I finished (or lost interest in) the thing I was doing, and felt like checking Google News et. al., before I had time to think too much, I’d start the shutdown process. There was no struggle of willpower; I knew that after I hit the button, I could decide to do anything I wanted. But if I decided to look at a website, I’d have to wait through the startup, and once I was done, I’d have to turn it off again before doing anything else"
http://blog.xkcd.com/2011/02/18/distraction-affliction-correction-extensio/
Отличные примеры Zen of Python в виде питоновского кода
http://artifex.org/~hblanks/talks/2011/pep20_by_example.html
Newer browsers do a pretty good job of downloading resources in parallel, and with a few exceptions (I’m looking at you Opera), can download all kinds of resources in parallel with each other. This is a huge change from just 4 years ago. However, are we, as web page developers, building pages that can take advantage of this parallelism?
http://calendar.perfplanet.com/2010/thoughts-on-performance/
Any regular semi-technical user of your site should be able to navigate 90% of your app based off memory of the URL structure. In order to achieve this, your URLs will need to be pragmatic. Almost like they were a math equation — many simple rules combined in a strategic fashion to get to the page they want.
http://warpspire.com/posts/url-design/
There’s a great quote from Peter Drucker about risks — laminate this quote, frame it at your desk, make it your screensaver, and put a copy of it in your wallet:
"People who don’t take risks generally make about two big mistakes a year. People who do take risks generally make about two big mistakes a year."
http://blog.chaddickerson.com/2010/08/05/scaling-startups/
Стас Крвсс про свой форк django-social-auth, который поддерживает дополнительно Yandex OpenID, ЖЖ, Вконтакте.
http://www.ikrvss.ru/2011/01/22/django-social-auth/
Автор языка Clojure (см. статью Ивана Сагалаева) Rich Hickey рассказывает про свой процесс решения сложных проблем. Должно быть актуальным для всех, кто делает что-то новое. 3 вещи хочу особо отметить: background mind, книгу How to Solve It и "work on more than one thing, not interleaved within one day, but over the course of time".
http://clojure.blip.tv/file/4457042/
Преимущество TestCase.assertEqual(status, 200) vs. assert status == 200 в том, что сообщение об ошибке выдается более информативное: AssertionError: 302 != 200 vs AssertionError.
https://groups.google.com/d/topic/django-developers/a1nG_WXe_yM/discussion
"PEP 444 is a moving target as people still want to keep changing it and no one agrees about it. PEP 3333 isn't going to change and is what Apache/mod_wsgi has supported for the last two years. CherryPy WSGI server and uWSGI are also PEP 3333 compliant for Python 3." Graham Dumpleton
https://groups.google.com/d/msg/django-developers/Q7xxH2b3Q7o/Dhf81-WtN0EJ
Компания, в которой я сейчас работаю, ищет второго дизайнера. По ссылке - описание вакансии. Там написаны требования к техническому дизайнеру, но если вы или кто-то из ваших знакомых в сто раз круче, чем написано в вакансии - это еще лучше и как раз то, что нужно. Программистов у нас много, дизайнеров на всех не хватает.
http://rabota.ua/company870723/vacancy4613157
"If you need to get the content of the block from the parent template, the {{ block.super }} variable will do the trick. This is useful if you want to add to the contents of a parent block instead of completely overriding it. Data inserted using {{ block.super }} will not be automatically escaped (see the next section), since it was already escaped, if necessary, in the parent template."
А я как-то просмотрел эту возможность. Источник - reddit
http://docs.djangoproject.com/en/dev/topics/templates/#template-inheritance
О том как к разработчикам переходит все больше задач, которые раньше делали только админы (Ops): dba, deployment. Что через 5 лет в веб-проектах все эти задачи будут выполнять сами разрабочики. Про то, как делать это "в программистком стиле".
http://www.pkshiu.com/loft/archive/2010/12/jacob-kaplan-moss-on-devops
Пакет вспомогательных инструментов тестирования для django-проектов. Testmaker записывает тесты, пока вы кликаете мышкой по сайту, Crawler проходит по всем URL-ам, которые может найти на сайте, Persistent Database Test Runner выполняет тесты, не пересоздавая тестовую базу. А также Twill Runner и Mock Objects.
http://django-test-utils.readthedocs.org/
"Leaders of businesses, founders of start-ups, organisers of events: one designer is not enough! Finding one ace-blooded designer who can ‘do everything’ will always result in bottleneck and burnout. Like the nuances between different development languages, design is a multifaceted discipline, and very few can claim to be equally strong in every aspect."
http://24ways.org/2010/extreme-design
Автоматическое удаление whitespaces с концов строк, чтобы они не отсвечивали в diff'ах. Инструкция по настройке TextMate
http://blogobaggins.com/2009/03/31/waging-war-on-whitespace.html
PyFlakes запускается при сохранении файла и по Cmd-Shift-V (или Option-Shift-V, смотрите Bundles -> Python Tools Bundle). У себя установил, очень доволен! PS. Кто не читает еще блог Дэвида Крэмера - рекомендую подписаться.
http://www.davidcramer.net/code/36327/integrating-pyflakes-into-textmate.html
Интервью с Джо Армстронгом и Саймоном Пейтоном-Джонсом. Статьи "Почему Scala", "Сравнение Erlang и Node.js" и еще две статьи со словом "инкрементальный" в названии :)
http://fprog.ru/2010/issue6/
До этого самое высокое место (седьмое) он занимал в мае 2004-го. Похоже мы перестаем быть миноритариями, пишущими на стильном экзотическом языке :)))
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
PyPy все быстрее и быстрее, а также совместим с virtualenv. Похоже скоро у нас появится в 2 раза более быстрая замена CPython. Перевел им 10 долларов
http://feedproxy.google.com/~r/PyPyStatusBlog/~3/mq1skB4a1kE/pypy-14-ouroboros-in-practice.html
Отличное описание алгоритмов ранжирования hot algorithm, Wilson score interval, используемых в Reddit. Примеры на Python.
http://amix.dk/blog/post/19588
В документации твиттера упоминаются другие библиотеки: oauth-python-twitter2, python-oauth2, обе на сегодняший день не слишком активно развиваются. А у tweepy - 427 watchers и активные коммиты в октябре.
https://github.com/joshthecoder/tweepy
Функция, которой мне так горячо не хватало, оказывается живет себе тихонько начиная с Django 1.0 ;))) Передаете ей результат reverse, а она добавляет протокол (request.is_secure) и имя хоста (request.get_host).
http://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.build_absolute_uri
Jacob Kaplan-Moss и Frank Wiles (а также другие известные питонисты) отвечают на вопросы, связанные с django.
http://www.revsys.com/officehours/2010/nov/05/
Подход к хранению древовидных данных в реляционной базе данных от P.J. Eby. Используется closure table, хранящая parent_id, child_id, depth. Получение дерева - за один sql-запрос (с join'ом к closure table).
http://dirtsimple.org/2010/11/simplest-way-to-do-tree-based-queries.html
В Google App Engine будет SQL-подобный интерфейс к BigTable. А в django скорее всего будет хороший db-backend к нему. Результат - можно будет использовать django в Google App Engine без лишних патчей.
http://groups.google.com/group/django-developers/browse_thread/thread/eee872b03286075e
Еще рекомендую прочитать - Story of Jython
http://hugunin.net/microsoft_farewell.html
Новое видео от Ryan Singer (37signals) про дизайн. Переход от разрозненных дополнительных полей (отправляли ли футболку, размер футболки, история задержек платежей) к Notes - чистый напалм! 34 минуты мудрости для тех, кому не безразличен дизайн веб-приложений.
http://37signals.com/svn/posts/2608-ryans-talk-at-future-of-web-apps-2010-london
Изменения в процессе разработки django по мотивам обсуждений на DjangoCon 2010 (в том числе - Why django sucks and how we can fix it
http://groups.google.com/group/django-developers/browse_thread/thread/9ebc3e57d539d1ff
"I will be speaking at Pycon Ukraine about good API design :)"
http://twitter.com/mitsuhiko/status/25781797514
Вдогонку к langpop.com. В GitHub python на 4-м месте, после ruby, javascript, perl. Похоже python перестал быть редким языком, для которого не найти программистов.
http://github.com/languages
Еще одна попытка сделать WSGI, совместимый с Python 3. На этот раз автор - P.J. Eby. Единственное серьезное изменение - "headers are strings, bodies are bytes". См. также обсуждение в Python-dev,
http://www.python.org/dev/peps/pep-3333/
Еще один сайт с оценками популярности разных языков программирования. Оценки довольно близки к Tiobe Language Index
http://langpop.com/
Мне не нравится стандартный питоновский модуль logging, а вот модуль logbook, который разрабатывает mitsuhiko (Armin Ronacher) - очень даже ничего!
http://github.com/mitsuhiko/logbook/
Отличное видео про огранизацию взаимодействия программистов и дизайнеров в проектах. И про то, почему хороши template languages with logic. PS. Мечтаю поработать с дизайнером, который будет сам редактировать шаблоны в проекте, коммиттить их в dvcs.
http://vimeo.com/15083781
GDD 2010. Москва. Регистрация открылась. В прошлом году было очень здорово!
http://www.google.com/events/developerday/2010/moscow/
Мне понравился ход с TEMPLATE_TAGS - добавлю его в текущий проект, чтобы не прописывать часто {% load something_tags %}. local_settings.py используем давно и довольны
Москва, отличный офис на м. Китай-город, креативные сильные ребята в команде, хорошие основатели-руководители. Собственные прорывные проекты (один из них - http://bookmate.ru). Работать вместе с Димой Смолиным (одним из лучших программистов, с кем я когда-либо работал).
http://moikrug.ru/vacancies/811974196/
Я зарегистрировался. Если и правда приедут Armin Ronacher и Andrew Godwin - это будет очень круто!
http://habrahabr.ru/blogs/python/103551/
Похоже веб-приложениям на python3 быть! Chris McDonough, Armin Ronacher - спасибо!
http://www.python.org/dev/peps/pep-0444/
"So, contribute to an open source community! Communicate! Communicate by creating code, writing documentation, or perhaps just by making people chuckle. Communication makes you more engaged in the project, and more motivated to contribute, and more creative and productive as a result. You may also be pleasantly surprised by the feedback."
http://faassen.n--tree.net/blog/view/weblog/2009/12/19/0
Отличная возможность выпить пива с Tom Preston-Werner, сооснователем GitHub'a.
http://github.com/blog/718-github-meetup-moscow-tonight-sep-15
Линки на слайды со всех выступлений на DjangoCon 2010 в Portland (для тех кто не читает reddit.com ;))
http://djangocon.us/wiki/slides/
Снова слайды с DjangoCon 2010. Очень непростая тема. См также обсуждение на hacker news, объяснение про закрытый список рассылки в django-dev.
http://www.scribd.com/doc/37113340/Why-Django-Sucks-and-How-we-Can-Fix-it
Django-app для логина через Google, Facebook, Twitter, Yahoo!, LinkedIn или произвольный OpenID provider. Это - ссылка на самую активную ветку (и похоже - ветку разработчиков из Hyderabad, India), есть еще десяток активных репозиториев, которые посылают много pull requests.
http://github.com/agiliq/Django-Socialauth
Про то как ребята из Disqus справляются с высокой нагрузкой (17 000 запросов в секунду). Используют Python/Django/Postres. Написали/дописали хорошие инструменты, поддерживающие процесс разработки.
http://www.slideshare.net/zeeg/djangocon-2010-scaling-disqus
Автор - Douglas Crockford, Yahoo! JavaScript Architect
http://javascript.crockford.com/code.html
Кроме отличных доводов за и против, есть отличные ссылки на книги, видео и прочие ресурсы для углубленного влюбления в язык
http://skilldrick.co.uk/2010/09/why-javascript-is-awesome/
Если что-то не получилось - http://www.facebook.com/help/?page=781 (у меня не был прописан тег author, без которого импорт не проходил)
http://www.facebook.com/help/?page=818
Простое, гибко настраиваемое приложение для добавления captcha в формы
http://code.google.com/p/django-simple-captcha/
Хороший программист развивает свое мышление (а с ним - и всего себя), а не просто "набирает годы работы в правильных технологиях". Признак хорошего объявления о поиске - когда ищут хорошего мыслителя, хорошего человека, а не "знатока технологий".
http://dotmac.rationalmind.net/2010/08/some-lesser-known-truths-about-programming/
I was going to be faced with a choice sooner than I had anticipated. I could either sign on as a Microsoft employee or quit and go GitHub full time…In the end, just as Indiana Jones could never turn down the opportunity to search for the Holy Grail, I could no less turn down the chance to work for myself on something I truly love, no matter how safe the alternative might be. When I’m old and dying, I plan to look back on my life and say “wow, that was an adventure,” not “wow, I sure felt safe. (via 37 signals)
http://tom.preston-werner.com/2008/10/18/how-i-turned-down-300k.html
Я пишу IFrame-приложение для ВКонтакте, которое постит картинки пользователям на стену. По клику на картинку открывается приложение в компактном виде, в котором можно показать картинку в увеличенном виде и перейти к самому приложению. Сложность в том, что "приложение в компактном виде" сейчас разрешено только как .swf файл. Выкладываю полностью рабочий пример показа крупной картинки: из flashVars получается post_id, по post_id я запрашиваю на своем сервере URL крупной картинки и загружаю его во флешку. Есть одна внешняя зависимость - as3corelib для парсинга json.
http://gist.github.com/501814
His childhood was spent travelling North America with his father, Martin Demaine, an artist and sculptor; he was home-schooled. Erik entered Dalhousie University in Canada at the age of 12, and completed his bachelor's degree when only 14. He joined the MIT faculty in 2001, at age 20, reportedly the youngest professor in the history of the Massachusetts Institute of Technology.
http://en.wikipedia.org/wiki/Erik_Demaine
Модуль ipdb, позволяющий использовать встроенный в IPython дебаггер (работает автодополнение и все прочие приятности). import ipdb; ipdb.set_trace() Upd. pip install ipdb (via Andrey Popp)
http://gremu.net/blog/2010/using-ipythons-debugger-pdb-replacement/
Питоновская библиотечка, упрощающая хранение бекапов в Amazon S3.
http://amix.dk/blog/post/19529
"Hidden Hires was founded by Django developers trying to make hiring within open source communities awesome. Companies win when they can hire the best open source developers; developers win when they get to work for the best companies. We're trying to make that happen."
http://django.hiddenhires.com/
jQuery плагин для декларативной валидации форм - описываете в JS-коде или даже в HTML-разметке ( например, <input id="cname" name="name" size="25" class="required" minlength="2" />) правила валидации и набор сообщений об ошибках (если вам не подходят встроенные). Поддерживаются и внешние валидаторы - с отправлением запроса на server-side.
http://docs.jquery.com/Plugins/Validation
"Postgres’ site now is apparently generated from a bespoke PHP script mishmash. Josh said that tasks like creating new forms was much harder than they ought to be. So…they’re moving it to Django."
http://seeknuance.com/2010/06/03/postgres-site-will-migrate-to-django/
uWSGI is a fast (pure C), self-healing, developer-friendly WSGI server, aimed for professional python webapps deployment and development (есть модули для apache2, nginx, cherokee и lighttpd)
http://projects.unbit.it/uwsgi
Еще одна схема разделения django-проекта на директории-поддиректории, специфичные для делоймента настройки и т.д. (via Simon Willison)
http://blog.zacharyvoase.com/2010/02/03/django-project-conventions/
Как настроить hg diff, чтобы он вел себя как git diff - подсветка + less (спасибо Диме Смолину за ссылку)
http://www.selenic.com/pipermail/mercurial/2009-September/027376.html
Дима пишет: "В кои-то веки сделал Python реализацию Enum, которая мне нравится :) Опыт использования показал, что пользоваться очень удобно :) Идея трюка с определением порядка атрибутов класса сперта из Django. Мы используем строковые константы, но если кому-то нужна числовая автонумерация - код очень легко дополнить"
http://gist.github.com/401547
Каждый раз, когда ты создаешь правильный сайт в неком локальном информационном пространстве, ты выводишь это пространство на новый уровень структурированности, а значит производительности и "силы влияния". Ты становишься флагманом и на тебя начинают ровняться. Если ты не отпускаешь процесс, то равнение на тебя создает очень благоприятные возможности для развития тебя же. Внутри этого локального информационного пространства быстро поднимается планка минимальных требований. Появляется большое количество отмирающих структур, которые освобождают место для Проявления Нового.
http://internet.ksan.ru/tom-03/2003/lotos-017.shtml
Они используют в одном (большом) проекте несколько групп репозиториев. При деплойменте создают общий tag.
http://kiln.stackexchange.com/questions/500/should-i-use-more-than-one-repository
Русско-американский ученый, один из авторов STL. 4 видео-ролика, общей сложностью около 6 часов. (по наводке Льва Валкина)
http://video.yandex.ru/users/ya-events/tag/%D0%B0.%D1%81%D1%82%D0%B5%D0%BF%D0%B0%D0%BD%D0%BE%D0%B2/
Programming as a profession is only moderately interesting. It can be a good job, but if you want to make about the same money and be happier you could actually just go run a fast food joint. You are much better off using code as your secret weapon in another profession. People who can code in the world of technology companies are a dime a dozen and get no respect. People who can code in biology, medicine, government, sociology, physics, history, and mathematics are respected and can do amazing things to advance those disciplines.
http://learnpythonthehardway.org
Отличные аннотированные слайды с 3-часового семинара Саймона Виллисона (одного из создателей django), посвященные Redis, в рамках конференции NoSQL Europe.
http://simonwillison.net/static/2010/redis-tutorial/
В одной компании было 2 команды: одна писала на C#, другая на Python. Прежде чем сделать окончательный переход на Python+Django для веб-приложений, они 6 месяцев проводили измерения скорости разработки в обоих командах. По их измерениям, Python+Django разработчик заменяет двоих разработчиков на C#+ASP.NET
http://kurtgrandis.com/blog/2010/02/24/python-django-vs-c-asp-net-productivity-showdown/
Q: When will Django finally have every feature I want? A: "Ambition has its disappointments to sour us, but never the good fortune to satisfy us." (спасибо Толику Вострякову за наводку!)
http://groups.google.com/group/django-developers/browse_thread/thread/b5e492a42cada7b7
Сегодня делаем большой рефакторинг проекта, в частности разносим модели по разным приложениям. Нашел отличную инструкцию по написании south migrations для этого случая.
http://stackoverflow.com/questions/1258130/how-do-i-migrate-a-model-out-of-one-django-app-and-into-a-new-one
Знакомые ребята регулярно проводят мероприятие Harvest. Приглашают людей с идеями, программистов, дизайнеров, маркетологов, объединяют их в команды, подключают экспертов и создают проект за 2 дня. Ближайший harvest - 17-18 апреля (эти выходные).
http://harvest.greenfield-project.ru/program/
Питоновская библиотека, делающая транслитерацию unicode-строк в максимально близкие ascii-строки. Поддерживается даже китайский язык.
http://www.tablix.org/~avian/blog/archives/2009/01/unicode_transliteration_in_python/
Выложили чуть-чуть исправленную версию django-markitup - воркараунд бага #12882. Автор изменений - Михаил Корнеев
http://bitbucket.org/vorushin/django-markitup/
Django Lint is a static analysis tool that checks (or "lints") projects and applications that use the Django web development framework. It reports on common programming errors and bad code smells, including checking for nullable CharField field types, the use of brittle or deprecated Django features (such as auto_now_add) as well as the absence of recommended options in settings.py. It aims to encourage the development of high-quality re-usable Django applications.
http://chris-lamb.co.uk/projects/django-lint/
Из этого списка я пропустил только itertools. Ну и Python Cookbook не читал (электронную читать не хочу, разве что бумажную найду когда-нибудь - в метро почитать). Itertools - ого-го! Все остальное - и подавно must read.
http://wordaligned.org/articles/essential-python-reading-list
Ребята из Twitter выложили на GitHub свой фреймворк для управления шардингом, написанным на Scala. Пишут, что поддерживает не только реляционные базы данных, но и Lucene, Redis и "все что вы можете себе представить".
http://github.com/twitter/gizzard
It all got started, I believe, because the very earliest Googlers (Sergey, Larry, Craig, ...) made a good engineering decision: "Python where we can, C++ where we must" (Alex Martelli)
http://stackoverflow.com/questions/2560310/heavy-usage-of-python-at-google/2561008
Лучший инструмент для django-миграций. Мы использовали недавно его прямо из транка (потому что версия 0.6.x не поддерживала multi-db), и даже тогда он был вполне себе рабочим инструментом. А сейчас он стал еще стабильнее. Andrew Godwin, ура!
http://www.aeracode.org/2010/3/25/south-07-released/
Отличная статья о распределенных хранилищах данных и их свойствах. Как получается eventual consistency и какими свойствами обладает ваша система при различном соотношении общего числа нод N, числа нод для обязательной записи W и числа нод для обязательного чтения R.
http://www.allthingsdistributed.com/2008/12/eventually_consistent.html
И еще один снаряд в тему DVCS от Джоэла Спольски: "With distributed version control, the distributed part is actually not the most interesting part. The interesting part is that these systems think in terms of changes, not in terms of versions."
http://www.joelonsoftware.com/items/2010/03/17.html
Pure-Python implementation of the Git file formats and protocols. Named after the village in which Mr. and Mrs. Git live in the Monty Python sketch.
https://launchpad.net/dulwich
Получасовое выступление Scott Chacon из команды GitHub, автора Hg-Git mercurial plugin. Hg и Git пусть дружат, они не враги друг другу. Общий враг - SVN :)))
http://us.pycon.org/2010/conference/schedule/event/137/
Лекции и упражнения по программированию: AJAX Programming, Algorithms, Android Programming, Distributed Systems, Web Security, Languages
http://code.google.com/edu/
По совету из статьи Code Like a Pythonista скачал документацию по питону - теперь нырять в неё немного быстрее. Кто бы мог подумать, что в 2010 году, в Москве, с многомегабитным интернетом, это будет актуально :)))))
http://www.python.org/doc/2.6.4/download
Swap Values
In other languages:
temp = a
a = b
b = temp
In Python:
b, a = a, b
http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html
Юрий Юревич пишет: "Есть один интересный человек, Янис Ляйдель, также известный под ником jezdez. Помимо всего прочего (Pinax & Django core dev, ключевая фигура в немецком Django-коммунити), он известен коллекционированием полезных Django-приложений. Рекомендую посмотреть список “зафоловленных” им приложений на GitHub и Bitbucket, возможно найдете что-нибудь интересное."
http://pyobject.ru/blog/2010/03/05/useful-django-tools/
There’s a really simple tip almost everybody can use to increase productivity tremendously. Not only is the tip free, it might even make you a bit of money. And it’ll make you smarter. It’s really easy, there’s only one step involved: Sell your TVs.
http://howtogetfocused.com/chapters/how-software-engineers-and-designers-can-increase-their-focus/
Набор лучших практик от ребят из Chicago Tribune: version control, python, django, javascript, html/css, images, testing.
http://blog.apps.chicagotribune.com/2010/02/26/best-practices/
Людвиг - отличный питонист из Швеции. Одна из его библиотек, pylibmc, скорее всего будет использоваться в django.
http://lericson.blogg.se/code/
Особенно понравилось про daemontools. Если кто-то еще не читает Django Advent - рекомендую начать читать :)))
http://djangoadvent.com/1.2/deploying-django-site-using-fastcgi/
Some quick notes about the coming plans by the "other" Python implementations from today's Python Language Summit at PyCon 2010
http://trentmick.blogspot.com/2010/02/other-python-vms-upcoming-python.html
Werkzeug - набор wsgi-утилит, я пользуюсь очень часто их дебаггером. Новая версия дружит с Google Appengine SDK.
http://lucumr.pocoo.org/2010/2/18/werkzeug-0-6-hammer-released
"Живой опыт программирования, Python, Django, современные языки и немного фотографий" - много работал с Толиком, даже на питоне вместе от души попрограммировали. Отличный человек и программист, а сейчас еще и блоггер. Рекомендую читать!
http://vostryakov.ru/
django-devserver provides a simple drop-in runserver replacement. It allows you to run a command, python manage.py rundevserver, and to get some additional information. As of writing, that additional information includes real-time SQL logging (aka mass query spam in your terminal), and a summary of cache calls.
http://www.davidcramer.net/code/1174/presenting-django-devserver-a-better-runserver.html
The key principle seems to be: do not rely on an action, but on the structure of the system. Make the default, a passive state, a safe state so that when the system fails, it gets to the safe state by default. (via Brett Slatkin)
http://rjlipton.wordpress.com/2010/02/08/trains-elevators-and-computer-science/
Отличный пример создания небольшого, но выразительного веб-приложения на Clojure
http://www.bestinclass.dk/index.php/2010/02/reddit-clone-in-10-minutes-and-91-lines-of-clojure/
Ура, node.js оказался более масштабируемым для comet-приложения, чем решение на Java + JBoss Netty:
"We have rewritten to node.js from Java+JBoss Netty, because the old solution had scalability problems. We have also been able to build a very sophisticated messaging system given JavaScript expressiveness and the simplicity of node.js. Generally, we have found node.js and V8 very impressive - and it uses about 10 times less memory than Java+Netty did. The bottom line is if you implement anything comet related - - try to use node.js!"
http://feedproxy.google.com/~r/amixdk/~3/TwhkLuhxcqc/19490
django-app для серверной и клиентской обработки pingbacks (уведомлений о том, что на ваш материал поставили ссылку где-то там в вебе)
http://softwaremaniacs.org/blog/2010/01/21/pingdjack/
Интересная схема веток (branches) git - master для продакшн-кода, develop - integration, hotfixes, ...
http://nvie.com/archives/323
Толик Востряков пишет про библиотеку Coverage, показывающую покрытие тестами python/django кода
http://magic-tolik.livejournal.com/124726.html
"Experimental (but obviously restricted) Python-to-C++ compiler." Спросил у автора, в чем отличие от Cython, ответ - "cython relies on type declarations and other manual 'hints' to optimize programs. shed skin's goal is to statically compile restricted python code without any such manual hints"
http://shed-skin.blogspot.com/2010/01/shed-skin-03.html
coev framework is a stab on providing reasonably fast asynchronous IO to both Python code itself, and any C extension modules used
http://code.google.com/p/coev/
Разработчики из ядра проекта Django рассказывают о технических решениях, лежащих в основе фреймворка. PS. Отличная возможность посмотреть на людей, которых вы (скорее всего) так много читали :)))
http://www.youtube.com/watch?v=tscMnoS4YU8
Толик Востряков выложил код cache-бэкэнда для Django, который хранит данные в Tokyo Tyrant. Подробности - в блоге Толика
http://github.com/avostryakov/django-tyrant-cache#
Акве пишет: "К новому году радиостанция Попутка-FM, то есть я, Акве, подготовил сборник песен. И не простых песен, а таких, с которыми хорошо наводить фэн-шуй в проектах. На той стадии, где нужно с любовью полировать каждую деталь - проверено, работает!"
http://akve.livejournal.com/717186.html
Отличный туториал от Mozilla по html5-элементу Canvas.
https://developer.mozilla.org/en/Canvas_tutorial
Первый программистский пост Толика Вострякова. 1. MultiTextInputWidget - виджет для формы, представляющий json-поле из базы данных в виде нескольких полей на форме. 2. Разные способы определения свойств в Python
http://magic-tolik.livejournal.com/123477.html
Сегодня ночью в django trunk закомиттили multi-db patch. Ура, Alex Gaynor и все-все-все!
http://docs.djangoproject.com/en/dev/topics/db/multi-db/#topics-db-multi-db
В Unladen Swallow (проект по ускорению CPython) используются патчи к cPickle, изначально написанные для YouTube.
http://groups.google.com/group/unladen-swallow/browse_thread/thread/7b2277b2e3d835d7
David Beazley использует улучшенные Python-генераторы для реализации coroutines. И с помощью этих coroutines строит кооперативную нано-ОС и микро-веб-фреймворк. Я встречал coroutines в первом томе Кнута и с тех пор не видел их много лет, и вот теперь снова встречаю их в Python. Удивительно и познавательно! Иван, спасибо за наводку!
http://www.dabeaz.com/coroutines/index.html
Очень интересное и свежее (всего 11 дней назад) обсуждение про различные асинхронные python-фреймворки. Все больше и больше новых библиотек опирается на Coroutines via Enhanced Generators и это очень хорошо!
http://stackoverflow.com/questions/1824418/a-clean-lightweight-alternative-to-pythons-twisted
Python-библиотечка (2 декоратора и 1 класс) для удобного написания асинхронного кода без явного указания callbacks.
http://softwaremaniacs.org/blog/2009/12/11/adisp/
Описание формата подписи REST-запросов для всех Amazon Web Services. Детально, безопасно, расширяемо.
http://docs.amazonwebservices.com/AmazonSimpleDB/2009-04-15/DeveloperGuide/index.html?REST_RESTAuth.html
Исходники reddit.com. Используют pylons, paste. Понравился декоратор @validateForm - форма создается на лету и валидирует параметры API. Очередь асинхронных задач работает через AMQP (RabbitMQ, Erlang).
http://blog.reddit.com/2009/11/rpython-hits-10k-subscribers-so-we.html
Платформа для рендеринга сложных динамических изображений на веб-страницах. JS, Canvas, VML. А что они делают с графиками! (жмите стрелку вправо и пробуйте таскать графики)
http://www.ajax.org/#home
Сегодня нашел сайт со ссылками на русскоязычные ресурсы по Python, в том числе - блоги питонистов.
http://pyweb.ru/#topic-blog
Отличный пост Ивана Сагалаева про два разных способа организации многозадачности: многопоточность и асинхронный неблокирующий ввод-вывод.
http://softwaremaniacs.org/blog/2009/11/30/gotta-rewrite-everything/
Дополнительные команды manage.py для визуализации моделей и отношений между ними, ajax-отладки, db-agnostic экспорта-импорта данных и многого другого. Для Mac OS X рекомендую ставить через порты - sudo port install py26-django-extensions py26-pygraphviz py26-werkzeug. См. также скринкаст
http://code.google.com/p/django-command-extensions/
Элегантное решение для создания пространств имен (namespaces) в Memcached. Патчи не требуются!
http://lexabug.habrahabr.ru/blog/55265/
Part1 и Part 2 - в последние месяцы в блогах о Python и Django много пишут про Fabric, инструмент позволяющий автоматизировать деплоймент Python-проектов.
http://lincolnloop.com/blog/2009/sep/22/easy-fabric-deployment-part-1-gitmercurial-and-ssh/
По умолчанию все сессии Django хранит в базе данных. Чтобы снять нагрузку на базу, сессии лучше хранить в чем-то побыстрее и проще - memcached (есть в составе django), tokyo-tyrant (есть библиотека django-tokyo-sessions) или redis. Я думаю, что redis будет немного быстрее чем tokyo-tyrant и лишь чуть менее надежнее в плане сохранности сессий (сохранение данных на диск в redis производится асинхронно)
http://adam.gomaa.us/blog/2009/may/6/a-redis-session-backend-for-django/
The goal of self-contained apps is that you can basically plug a few apps together, write a few lines to connect everything, and get your website finished as quickly as possible.
http://code.google.com/p/app-engine-patch/wiki/SelfContainedApps
Node describes itself as “evented I/O for V8 javascript”. It’s a toolkit for writing extremely high performance non-blocking event driven network servers in JavaScript. Think similar to Twisted or EventMachine but for JavaScript instead of Python or Ruby.
http://simonwillison.net/2009/Nov/23/node/
Науки юношей питают
Но каждый юнош как питон
И он с земли своей взлетает
Надев на голову бидон
http://www.falshivim-vmeste.ru/songs/579052800.html
Обсуждение в гугл-группе Unladen Swallow на следующие темы: почему Python используется нечасто в новых проектах Google, какие задачи будут решать Unladen Swallow и PyPy, какова роль Cython. Участвуют сотрудники Google, работающие над Unladen Swallow (ускорение CPython в 5 раз), и другие интересные люди.
http://groups.google.com/group/unladen-swallow/browse_thread/thread/4edbc406f544643e#
Very compliant Python interpreter. Not ready as a drop-in replacement of CPython ... yet. They plan to release JIT-ready version somewhere early 2010. It should be able to speed up real-world programs.
http://codespeak.net/svn/pypy/extradoc/talk/rupy2009/talk.pdf
Чтобы вывод команд hg diff, hg status стал разноцветным, достаточно добавить 2 строчки в ~/.hgrc
http://shitmores.blogspot.com/2008/06/mercurial-hg-is-nicer-with-colors-turn.html
Они собрали воедино лучшие элементы со всех современных систем: Mac-like Spaces (окна), табы и приложения из Google Chrome, панели, похожие на Vista Gadgets.
http://www.chromium.org/chromium-os/user-experience
Отличное руководство об использовании библиотеки pdb для отладки python-приложений (via Simon Willison)
http://pythonconquerstheuniverse.wordpress.com/2009/09/10/debugging-in-python/
В протоколе OAuth обнаруживают уязвимость, сообщают разработчику API Твиттера. Твиттер отключает API 30 секунд спустя и группа специалистов из ведущих компаний, поддерживающих OAuth, начинает работу по устранению уязвимости. А тем временем многие поливают Твиттер грязью за отключенное API, Твиттер держится и ничего не рассказывает - чтобы не утекала информация о уязвимости, которая может поставить под удар другие компании. Через неделю совместной работы уязвимость закрыта.
http://www.readwriteweb.com/archives/how_the_oauth_security_battle_was_won_open_web_sty.php