Паттерн 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 «/layouts/scripts/» При этом будет по дефолту рентериться layout.phtml. У себя я практикую подмену мастер шаблона на ajax.tpl.php, в ZF это можно сделать через плагины или бутстрапы, но они меня пугают своей кривой документацией и примеры из мануала зачастую не работают. Можно использовать смену контекста AjaxContext, но опять же у меня возникли проблемы, да и это не очень мне нравится.  Поэтому, следуя принципу KISS, я решил наговнокодить прямо в основном лэйауте.

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

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

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

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

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

Я начинал свой программистский путь с выполнения лаб по Delphi для друга и желания замутить свой футбольный менеджер. С первым у меня всё получилось, и товарищ благополучно отстрелялся, а с футбольным менеджером не вышло и вряд ли получится, потому что я теперь осознаю что не смогу сделать графический показ матча, как у конкурентов. Но у той мечты есть положительный момент — я столкнулся с комбинаторикой. Вот один из примеров, служит для нахождения слагаемых по известной сумме. Алгоритм вроде бы не совсем мой, а переписан с варианта на pascal. $parts = array(0, 1, 2, 3, 4, 5, 7, 8, 9); rsort($parts); $sum = 23; var_dump(findSummand($sum, $parts)); function findSummand($sum, $parts, $depth = 0) { static $args = array(); foreach ($parts as $k => $part) { if ($part == $sum) { $args[$depth] = $part; return true; } if ($part < $sum) { $args[$depth] = $part; if (findSummand($sum — $part, array_slice($parts, $k + 1), $depth + 1)) { if ($depth == 0) { return $args; } return true; } } } if ($depth == 0) { return ‘Решение не найдено’; } } Этот алгоритм остался бы у меня в закромах, если бы не случайный вопрос на форуме phpclub. Да и руки давно не доходили до блога, решил совместить.

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

Ciklum PHP Saturday

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

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

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

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

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

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

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

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

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

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

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

Парочка скриншотов рабочего стола программиста

В твиттере вступил в переписку с фоловером насчёт удобства разработки под linux и windows. Я ранее писал пост рабочем месте программиста, а сейчас решил наделать парочку скриншотов для тех, кто не понимает какое счастье находиться в лоне заботливой корпорации добра — microsoft. С каждым днём я всё больше подседаю на их продукты, надёюсь, когда нибудь весь софт у меня будет лицензионный, но пока меня мучает совесть. Но совесть я готов идти на некоторые компромиссы с совестью. Самая большая прелесть это сама windows 7. У неё очень удобная панель задач, которую очень здорово дополняет бесплатный для некоммерческого использования Dexpot. Теперь у меня есть несколько рабочих столов. Аллилуйя. Ниже будет много картинок.

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

Шутливый код на майку

Давненько не писал, в ближайшие дни набросаю пост о Spl решениях для массивов, позволяющих улучшить скорость и работу с памтью при использовании больших объёмов данных. А пока вспомнил бородатый свой код-шутку, который хотел поместить на майку class Iam extends Govnocoder implements God { final public function drinkBeer() { return true; } final protected function doWork() { return false; } } Перевод: я подвид гавнокодера с амбициями бога, всегда открыт и готов для пива и недоступен для работы.

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