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

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

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

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

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

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

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

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

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

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

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

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

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

XHTML еще разок

Пост про XHTML принес мне немало трафика. Хочу еще! Если серьезно, то в комментариях к последней статье "Учебника" titmouse снова поднял вопрос о совместимости с XHTML, и я решил еще раз осветить этот вопрос с меньшим техническим уклоном и добавлением еще пары мыслей. Отвечу по частям. Смотря на сорс без ...

Велосипед для веб-фреймворка

Макс Ищенко решил не следовать моему совету выбрать Django для веб-разработки и выбрал TurboGears :-). Ни в коем случае не хочу как-то спорить с этим решением: может быть миллион причин выбрать то или это. Вместо этого я, как пропагандист Django, хочу прокомментировать то, как он обосновал свое решение в двух ...

Django

Давно хочу написать про Django. В итоге, вот, сподвигся, прочитав песню о Ruby и Rails на Julik Live. Многим людям, особенно занимающимся программированием, дизайном и прочей деятельностью, связанной с hi-tech творчеством, думаю, знакомо ощущение, что ты в этом мире катастрофически не успеваешь за временем. Что, в общем-то, и понятно: благодаря ...

Статистика запросов фидов

Некоторое время назад два человека из тех, блоги которых я читаю, выражали желание заняться написанием Правильной Статистики. Хочу поделиться идеей для такого сервиса. С распространением фид-агрегаторов в статистике появилась проблема. Количество запросов фида на порядки превышает количество запросов всего остального (у меня на блоге — в 100 раз). Такое большое ...

Корзины и заказы

При разработке интернет-магазина почти любого рода вам обязательно придется столкнуться с придумыванием структур "корзины" и "заказа". И здесь можно попасться на одну заманчивую обманку, от которой я хочу веб-программистов предостеречь. Дело в том, что корзина и заказ очень похожи по сути: и то, и другое хранит описание того, что клиент ...

Разъяснения к статье о хранении объектов

К своей статье о хранении объектов я получил некоторое количество откликов, некоторые из которых были полезными (спасибо!), а некоторые немало меня удивили. Настолько, что я не могу удержаться от разъяснений. В частности, мне посоветовали посмотреть в сторону объектных БД. Да, я понимаю, что красной линией в статье проходит несоответствие между ...

Хранение объектов не в БД

При проектировании веб-систем более-менее неигрушечного размера (форум, баг-тракинг, wiki) обычно принято хранить данные в какой-нибудь серверной БД. При разработке TaCo я решил отойти от этого решения. И вот почему... Impedance mismatch Или точнее "Object-relational impedance mismatch" - это понятие, которое описывает тот факт, что объектно-ориентированное моделирование и реляционное моделирование построены ...