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

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

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

31.01.2010 23:49

Web, Проектирование

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

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

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

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

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

Кеш - не хак

22.06.2009 00:43

Проектирование

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

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

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

REST и WS-*

02.11.2008 19:51

Проектирование

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

Разный Agile

06.01.2008 17:22

Проектирование

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

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

24.11.2007 14:37

Проектирование

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

CouchDB

26.09.2007 19:13

Проектирование

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

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

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

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

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

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

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

Duck typing в действии

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

Скорость фреймворка

Меня периодически спрашивают, насколько быстр Django. Или как он быстр в сравнении с PHP, Java или Rails. И я не менее периодически затрудняюсь на такой вопрос сразу ответить. Ответ прямо С одной стороны, если отвечать на этот вопрос прямо, то Django "очень быстрый". Или, что точнее, "очень мало тормозит", потому ...

Питону не хватает `protected`

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

Фреймворк, который не мешает

Прочитал в статье про RoR на Never-Invited.com: Только нужно понимать одну вещь: Rails облегчает стандартные вещи. Если вам нужно что-то уникальное от начала и до конца, то Rails будет скорее мешать. Как, впрочем, и любой другой framework. Секундочку! Я никогда не писал ничего в Rails, поэтому не могу сказать, насколько ...

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

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

Черновой стайлинг

26.03.2006 16:02

Web, Проектирование

Считается, что при создании веб-приложений графическим дизайном и программированием должны заниматься разные люди. Ведь известно, что инженерный и художественный таланты редко уживаются в одном человеке. А еще есть юзабилисты, которые до недавнего времени вообще были очень несчастными людьми, когда пытались объяснить миру саму необходимость своей профессии, и что часто чисто ...

Идея для агрегатора

13.03.2006 17:32

Web, Проектирование

HTTP не случайно стал одним из самых используемых транспортов в программировании всяческих веб-сервисов. Он, во-первых, прост в использвании, чему способствует и сама архитектура, и то, что хорошие библиотеки для него есть, наверное, под любую среду. А во-вторых, у него есть куча дополнительных сервисов, о которых в начале программирования вообще не ...