Янв 26

The Top 10 Javascript MVC Frameworks Reviewed
Лучшим признан Ember.js. Надо поковырять)

UPD: поковырял. В принципе, более стройная архитектура, чем у того же backbone, у которого часть логики контроллера во вью. Но из коробки нет router и не так просто с pushState, так что не стал использовать серьёзно. Возможно, через полгода-год этот фреймворк будет интереснее.

Теги:
Дек 02

На конференции «.Тостер» попал на доклад Jordi Romero API design and more (слайды).
Говорил про создание API, про кеширование, про масштабирование, клиентскую оптимизацию.
Понемножку, сжато.
Понравилось.
Странно только, что у них три уровня хранения данных:

  1. mySQL master-slave
  2. Redis для сложного кеша, чтобы не нагружать mySQL
  3. memcache для простого кеша
Теги:
Ноя 25

Использовали мы на проекте одну лебедевскую библиотеку – include.js. Умеет она интересные вещи, вроде последовательной загрузки зависимых библиотек в нужном порядке. Нужно в яваскрипте написать js.include( ‘my/coolwiidget’ );. Работает она, если на пальцах, следующим образом: делается ajax-запрос, которым грузится текст нужного скрипта, потом ищутся в тексте все js.include, делается их подгрузка, после чего делается eval полученных текстов в обратном порядке. При этом ещё и отсекаются попытки по несколько раз грузить один и тот же яваскрипт.
Работал он очень неплохо, хотя и неудобно было в firebug-е искать скрипт по его имени.
Основная проблема встала, когда стало нужно вынести все яваскрипты на отдельный домен. Вот тут-то и проявились проблемы – ajax-ом нельзя грузить код с других доменов. Помогает заголовок Access-Control-Allow-Origin, но его понимают только современные браузеры (к примеру, firefox с версии 3.5), а на проекте критична максимально возможная совместимость (как обычно и бывает). Так что этот способ может быть актуален года через 3-5.
Посмотрели на другие способы, в итоге пришли к динамическому добавлению тега script в head, но особого смысла в этом нет, т.к. зависимости, для которых и городился изначально огород, при этом способе не отслеживаются (JSONP с колбэками не подошёл, т.к. в проекте много legacy-кода, который использует глобальные переменные, причём даже не как константы).
В итоге было принято гениальное в своей простоте решение – отказаться от всех этих изысков нафик и грузить скрипты как раньше – при загрузке страницы.

Ноя 16

Выбирал между backbone (habrahabr.ru/blogs/javascript/118782/) и knockout (http://habrahabr.ru/blogs/javascript/121926/).
Для выбора полезно почитать stackoverflow.com/questions/5112899/knockout-js-vs-backbone-js-vs.
В итоге выбрал knockout – менее монструозный и лично мне показался понятнее, к тому же не навязывает REST и не требует дополнительных библиотек.
Он реализует паттерн MVVM, который, думаю, больше подходит для клиентской части web-приложения, чем MVC.
На сайте есть подробные доки и очень удобный интерактивный туториал.
Пока в проектах не использовал, так что писать особо нечего(

Теги:
Мар 13

Читаю книгу Джоэла Спольски «И снова о программировании».
Книжка несколько скаучная, постоянно рекламирует свою компанию и свои продукты, но есть и интересные главы (а книга собственно и состоит из отдельных глав – записей в блоге). Интересная глава – двадцатая, «Планирование с учётом прежних результатов» (http://www.joelonsoftware.com/items/2007/10/26.html).
Основная мысль – надо учитывать всё время над задачей, неважно, занимался ли ты в это время этой задачей или чем-то совсем другим. Потом постоянно вести график соотношения оцененного времени к реально затраченному «грязному». При этом соотношение всегда будет меньше единицы, но главное – это добиться постоянности этого соотношения, чтобы потом оценивать более объективно оценивать время, которое реально потребуется для реализации задачи, которая была оценена в определённое количество часов.

Теги:
Сен 19

Обнаружил вот такой бесплатный инструмент для построения UML-диаграмм – ArgoUML

Теги:
Сен 13

http://dev.mysql.com/tech-resources/articles/hierarchical-data.html

Теги:
Авг 11

Вот заинтересовало;).
Решил почитать.
Статья в Википедии (англ.)
Архитектура Google (оригинал).
видео про BigTable

Теги:
Июл 25

Паттерн «Decorator» («Wrapper») динамически добавляет объекту новые обязанности.
Является гибкой альтернативой подклассам, расширяющим базовый класс.
Continue reading »

Теги:
Июл 24

Введение

Шаблоны проектирования были представлены общественности в книге Design Patterns (Erich Gamma, Richard Helm, Ralph Johnson и John Vlissides (известные как «банда четырёх»)). Основная концепция, представленная во введении, была простой. За годы разработки программного обеспечения Gamma и сотоварищи открыли определённые шаблоны («паттерны») проектирования, как и архитекторы, строящие дома и здания, могут разработать шаблоны расположения уборных или обустройства кухни. Используя эти шаблоны, или паттерны проектирования, можно проектировать качественные здания быстрее. То же применимо и к разработке программного обеспечения.
Continue reading »

Теги:
preload preload preload