Partition tolerance

Артём Данилов обратил моё внимание на неверное толкование понятия "partition tolerance" в старом посте про CAP-теорему. За это я ему очень благодарен, потому что сам долго осознавал, что не понимаю этой части теоремы, но стеснялся признаться :-). Артём написал про это свой пост на Хабре, в котором всё хорошо объяснено, ...

Continuation-based фреймворки

Макс Лапшин написал о том, куда нужно двигаться Рельсам на примере Nitrogen, и резюмировал: Важно понять, что код тут выходит за рамки классического «запрос-ответ» и позволяет в процессе обработки долгоживущего процесса что-то рисовать в браузере. […] даже на таком маленьком примере кода ясно, что классический подход а-ля php: reply on ...

Засранцы и Болваны

Это вольный перевод статьи Марка Пилгрима "Why specs matter" от 2004 года. Статья определяет базовую терминологию, применяемую в процессах стандартизации. В рунете она, к сожалению, почти неизвестна, поэтому я решил восполнить этот пробел. Большинство разработчиков — болваны, а остальные — засранцы. Я в разное время причислял себя к обеим группам, ...

Вместе или врозь

Есть у нас в Яндексе кластер, на котором живёт много проектов на Питоне. Большие, маленькие — около двух десятков. И все они пользуются общими библиотеками. Не отдельными копиями одних и тех же библиотек, а именно общими файлами, лежащими в системных каталогах. Периодически эта система вызывает вопросы и сомнения, и мы ...

О сложности и практичности REST

Keel: Прошло уже какое-то время после внедрения - получали какой-нибудь фидбэк от девелоперов, использующих API? Основной вопрос для меня сейчас в том, оправданно ли применение полноценного REST'а с гипертекстом, в ситуациях, когда девелоперы скорее всего не будут разрабатывать полноценный клиент, а когда им нужна какая-то одна конкретная фича. В таком ...

Дизайн API Я.ру

Вчера мы открыли в бету API для Я.ру. Это был первый пост в корпоративном блоге Яндекса с кодом на Питоне, что даже породило фан-арт :-). Для меня этот запуск имеет большое эмоциональное значение, потому что машиночитаемый веб — мой давний интерес, и этот проект — первый неигрушечный публичный API, где ...

Безопасные умолчания

По наводке Романа Ворушина почитал пост Дика Липтона о том, что в проектировании систем должны закладываться безопасные умолчания. И мне вспомнилась похожая штука из истории Джанго. Когда-то давно у модели пользователя был метод is_anonymous(), который предполагалось проверять в шаблонах для определения, что показывать незалогиненному пользователю: {% if user.is_anonymous %} Login... ...

CAP-теорема Брюера

По большей части эта статья — изложение сути статьи "Brewer's CAP Theorem" Джулиана Брауна. В оригинале много полезных ссылок и интересных примеров, поэтому если позволяет время и знание языка, почитайте его. А здесь у меня просто самая суть, покороче и по-русски. В 2000 году Эрик Брюер выдвинул гипотезу, касающуюся ключевых ...

Параллелизм 2

Да, заголовок поста на этот раз скучный :-). Это продолжение темы, начатой в "Надо всё переписать", составленное в большей части по комментариям. Пользуясь случаем хочу сказать большое спасибо комментаторам! Написали много полезного и интересного, статья была бы неполной без этого. Терминология Как многие отметили, термины, которые я использовал, не отличаются ...

Надо всё переписать

На днях Саймон Виллисон написал очень хороший пост про node.js. Саймону очень удаётся писать такие intro-посты про технологии, которые очень ясно передают самую суть вещей. Когда-то он так сподвиг меня взяться за изучение Джанго. Пост про node.js тоже хорошо даёт понять, почему это круто, и какое место в современной экосистеме ...

Кеш - не хак

Периодически встречаюсь (стукаюсь лбом, точнее) со странным отношением к кешированию. Как будто это такой "грязный" способ заставить плохо спроектированную тормозную систему работать сносно. Попробую-ка я развеять это заблуждение... Оптимизация скорости Существует не так много принципиально разных способов софтверно ускорить работу какого-то алгоритма. Можно поменять алгоритм на более быстрый (пузырьковую сортировку ...

Зачем нужны сигналы

На днях у меня в форуме возникли почти подряд два топика про сигналы. Оба напомнили мне давно закравшееся в голове подозрение о том, что для многих сигналы — это магия из серии "если что-то не выходит, наверняка для этого нужны сигналы" :-). Хочу раскрыть тему, потому как рамки форумного ответа ...

REST и WS-*

Этот пост лежит у меня в черновиках уже очень давно. Все боюсь флейм нездоровый породить :-). Но все же тема мне представляется важной, и в рамках борьбы со старинными хвостами я его таки вот написал. Заранее извиняюсь, если это "и так все знают", тема действительно уже не нова. Также должен ...

Разный Agile

Хочу поспорить/покомментировать пост Ильи Хамушкина про его, как мне показалось, в целом нерадужные впечатления от agile-методологий. С начала статьи у меня было ощущение, что я понимаю слово "agile" по-другому, и так оно и оказалось: Итак, главная фишка agile методологии разработки — это непосредственное общение внутри команды, с минимумом спецификаций и ...

Случаи непреждевременной оптимизации

Premature optimization is the root of all evil Как любая одиозная фраза, эта, известная всем программистам цитата Дональда Кнута цитаты Энтони Хоара, имеет тенденцию применяться догматически. Или, выражаясь попроще, очень часто ярлык преждевременной оптимизации навешивают на чей-то чужой программный код, потому что этот код говорящему просто не нравится или вообще ...

CouchDB

Ok, афера с упоминанием CouchDB в прошлом посте удалась :-). Если серьезно, то есть один комментарий, на который я хочу ответить отдельным постом, чтобы не смешивать с впечателниями о HighLoad. Одна из ключевых фишек, если я правильно понял - RESTful JSON API и она в целом документо-ориентированная бд (точнее ее ...

Побочные эффекты императивного программирования

Наверное многие заметили, что в последние эдак пару лет интерес к штуке под названием "функциональное программирование" растет прямо на глазах. Там и тут все чаще люди с придыханием говорят слова "Хаскел" и "Эрланг", а также периодически вспоминают, что вот был еще такой "Лисп" — это да, это был настоящий язык! ...

Контролируемое скачивание 2

Это долгожданное (в основном мной :-) ) продолжение статьи "Контролируемое скачивание", где я писал про то, как я реализовывал скачивание с авторизацией, контролем скорости и успешного завершения в Неком Музыкальном Сервисе. Сервис мы запустили в конце декабря в работу, и о нем у меня будет еще, что написать в самое ...

Хороший фреймворк плохого не посоветует

Одна из неочевидных, но очень сильных сторон Django в том, что он заставляет проектировать веб-приложение правильно. В основном путем отказа включения в фреймворк вещей, которые слишком легко использовать неправильно. Один из ярких примеров — отказ включать "поддержку ajax". Я взял это в кавычки, потому что это оксюморон: ajax не нуждается ...

Duck typing в действии

Практический пример использования особенности, известной как "duck typing", для не программирующих на Питоне. Впрочем, программирующим тоже может быть интересно :-) "Если это ходит, как утка, и крякает, как утка, то значит это утка" — это принцип, по которому в Питоне и некоторых других динамических языках считается, что то, что объект ...