Паттерн Decorator

В больших проектах, особенно где ядро должно оставаться стабильным зачастую требуется изменения поведения объекта рантайм без дописывания кода в сам класс. Есть несколько вариантов, в этот раз я продемонстрирую паттерн Decorator (декоратор, wrapper, обёртка). Нам довелось активно использовать сей паттерн при разработке проета для IBM на базе Sugar CRM. В шуге заложено много гибкости, но некоторые части написаны очень очень давно и наружу торчит только Bean, который мы и декорировали чтобы добавить функционал или подменить стандартную реализацию. К сожалению, это не стало серебряной пулей и нам довелось хлебать кислые щи дырявой оловянной ложкой.

Читать далее »

Вкусности twig

Не могу не поделиться. На форуме phpclub.ru задавал вопрос о том, чтоб бы посмотреть по шаблонизатору Twig. И пользователь fixxxer дал замечательную подборку ссылок. Макросы в QuickForm2 http://svn.php.net/viewvc/pear/pack…es/array-twig.tpl?revision=325495&view=markup Вывод дерева (обезличенный продакшен код ({% url .. %} — мой кастомный тэг, вставляет вызовы UrlBuilder-а в момент компиляции) http://pastebin.com/PdVbMM2b Наследование: с обычным все понятно, horizontal reuse позволяет реюзать код, когда, например, встречаются 1, 2 и 3-колоночные варианты одинаковых в остальном страниц — пример с сайдбаром в доке вполне наглядный. Человеческий эскейпинг и автоэскейпинг с понятием стратегии (в смарти — хардкод, при этом отменить экскейпинг в общем случае нельзя — есть только возможность отменить все фильтры вообще) Человеческое консистентное…

Читать далее »

Паттерн Money.

Все знают вредные паттерны Singleton, Registry, MVC и т.д. Но есть очень полезный паттерн, который помогает нам зарабатывать и считать деньги, в то же время его не встретишь в популярных фреймворках. Задача. Нужно считать деньги, выполняя с ними обычные математические операции. Проблема. PHP как и многие языки страдает известной проблемой двоичного представления чисел. Для приведения десятичного числа к двоичному внутреннему используется деление на 2, соответственно числа вроде 1/3 округляются до энного знака. Паттерн Money реализует работу с деньгами: математические операции (+, -, *, /), сравнения (>, <, >=, <=, ==, <>) и учёт курса обмена.

Читать далее »

AJAX в Zend Framework

Издавно у меня выработалась привычка писать приложения так, чтобы они могли с лёгкостью работать и через AJAX и как его сейчас называют HMVC. При этом самое важное условие — изменения в коде контроллеров не должно быть вовсе или они должны быть минимальны. На самом деле будет написано об AJAH, потому что общение идёт через html, а не xml, но AJAX более привычное название, поэтому ниже буду использовать его. Для начала нам нужен двухшаговая шаблониция, когда в начале генерируется основной контент, а затем он вставляется в мастер шаблон. В ZF для этого есть layouts. Подключаем их в конфиге resources.layout.layoutPath = APPLICATION_PATH…

Читать далее »

Meetup в Гродно: дизайн и юзабилити

27 января 2011 года в Гродно прошёл meetup по дизайну и юзабилити. И я там был, сок-кофе пил. Но начну с несколько иного события, которое расскажет как я туда попал.

Читать далее »

Комбинаторика, нахождение слагаемых по сумме

Я начинал свой программистский путь с выполнения лаб по Delphi для друга и желания замутить свой футбольный менеджер. С первым у меня всё получилось, и товарищ благополучно отстрелялся, а с футбольным менеджером не вышло и вряд ли получится, потому что я теперь осознаю что не смогу сделать графический показ матча, как у конкурентов. Но у той мечты есть положительный момент — я столкнулся с комбинаторикой. Вот один из примеров, служит для нахождения слагаемых по известной сумме. Алгоритм вроде бы не совсем мой, а переписан с варианта на pascal. $parts = array(0, 1, 2, 3, 4, 5, 7, 8, 9); rsort($parts);…

Читать далее »

Ciklum PHP Saturday

Я до сих пор не могу в поверить, но ЭТО случилось — я побывал на первой белорусской конференции веб разработчиков, где мне ВСЁ понравилось. Мне прямо сейчас нужно активно работать и нагонять время потерянное в отпуске, но не могу сдержаться и буду писать отчёт о Ciklum PHP Saturday. Это встреча php разработчиков, которая прошла в Минске 13 августа 2011 года.

Читать далее »

Yandex и приватные данные

Недавно прошла целая волна эпик фейлов с участием Яндекса, Яндекс метрики и криворуких программистов. Особенно радует позор и уязвимость shop script от Webasyst, который является коробочным решением и доказывает опасность такого выбора. Это очень хороший аргумент в общении с заказчиком, когда захочу всучить кустомное решение. Вот решил высказать своё ИМХО по поводу происходящих вещей. Ситуация не стоит и выеденного яйца, но даже среди разработчиков оказалось много тех, кто не доехал до сути проблемы.

Читать далее »

Задание на php для новичка

Проблемы новичков в php. Я уже писал о том что стоит читать новичку, теперь продолжим переходя от теории к практике. Очень часто начав изучать php новички приходят к моменту, когда хочется опробовать свои силы в реальной разработке или даже попробовать устроиться на работу. Перед ними встаёт вопрос «с чего начинать новичку«, «какой первый проект написать«. Самое удивительное, что зачастую они пытаются придумать нечто экзотическое, а нужно писать типичный проект. Один из распространённых советов — напиши гостевую книгу, это не плохой вариант, но и не лучший. В реальной жизни веб программисты оперируются всего парочкой типичных задач — вывод списка записей, просмотр одиночной записи, редактирование-добавление, удаление-изменение единичного…

Читать далее »

Разработка на фреймворке fatfree

Недавно взялся за проект на микрофреймворке fatfree или как его ещё именуют F3. В целом, этой мой первый серьёзный опыт работы с такой крохой,  весит он всего 55k. При этом очень шустрый, имеет готовые решения: Роутинг Встроенное кэширование Active Record Шаблонизатор Расширяемость через плагины. Выглядит всё это довольно внушительно, примеры уровня «Hello world» смотрятся потрасающе, но что будет, коль копнуть поглубже.

Читать далее »