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

Меня периодически спрашивают, насколько быстр 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" - это понятие, которое описывает тот факт, что объектно-ориентированное моделирование и реляционное моделирование построены ...

Функция или свойство

Во многих современных языках есть возможность создавать для объектов свойства: публичные поля, которые с точки зрения пользователя выглядят и работают как простые переменные, но к которым в объекте можно привязать обработчики на чтение и запись значений (getter'ы и setter'ы). Отсюда следует, что свойство, у которого есть только доступ на чтение, ...

Публичные конструкторы ни в чем не виноваты

Сергей Осипчук попросил меня прокомментировать свою статью про зло, заключенное в публичных конструкторах. Я решил это сделать отдельной статьей потому что кратко вряд ли получится, да и многим, думаю будет интересно. Итак, Сергей говорит о том, что публичные конструкторы классов побуждают программиста создавать непосредственно объекты классов с помощью явно заданных ...

lesscode.org

Simon Willison прорекламировал у себя на блоге новый проект: lesscode.org. Это место, в котором обсуждаются набирающие популярность подходы к проектированию систем, построенные в первую очередь на простоте. В последнее время все чаще наталкиваюсь на противопоставление двух подходов к проектированию программных систем: Большие серьезные фреймворки, мощные серверы БД, долгое и обстоятельное ...

Когда сделать функцию

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

Джоэл об Exception'ах

Джоэл Спольски снова наехал на exception'ы (они же — исключения) :-). Кто не в курсе, некоторое время назад он уже писал, почему, по его мнению, exception'ы — это плохо. К его мнению присоединился знаменитый программист из Microsoft Реймонд Чен. Однако, похоже, что весь остальной интернет против :-). Если интересно, можно ...

Универсальные системы

У меня есть давний профессиональный "зуб" на чудесные мегауниверсальные и супергибкие системы, нарушающие KISS и YAGNI, гибкость которых может сравниться только с их непознаваемостью. Профессиональный, потому что сам сейчас на работе имею дело с такой же. Возможно, напишу когда-нибудь об этом подробней (если будет интерес). Так вот, блуждая по русским ...