Автор: amdy

Итоги 2014

No Picture

В 2014 году в блоге не появилось ни одной новой записи, но помню про него, копится материал, появилась парочка черновиков и в 2015 обязательно разрожусь целым циклом постов. Год получился отличным, есть о чём рассказать. Помимо написания кода, активно начал заниматься обучением: появилась стажёрская программа, организуем воркшопы внутри компании, готовим небольшой хакатон, провел тьму собеседований. Приятно наблюдать как это всё приносит результаты, да ещё быстрее чем планировалось. Огромное спасибо за это HR и просто отличному человеку Ольге Бобко, которая дала возможность и подталкивает в этом направлении. А вот за код мне стыдно, он становится всё более пахнущим, работа в команде и бизнес требования…

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

Continuous integration с Jenkins

No Picture

Continuous integration или непрерывная интеграция — это практика создания  автоматизированной сборки проекта. Хотя это и звучит как-то заковыристо, но это то, что программист делает ежедневно. Мы пишем код и проверяем его на синтаксические ошибки, на соответствие стилю кодирования, прогоняем тесты, боремся с copy-past и тд. и т.п. В PHP существует масса инструментов. позволяющих это автоматизировать, в PEAR есть пакет phpqatools, который ставит сразу пачку таких утилит. Но прогонять их руками неудобно, к тому же хочется иметь какой-то графический интерфейс, чтобы просматривать отчёты, чтобы наблюдать как изменяется проект, иметь возможность смотреть на старые версии и т.д. Здесь на помощь приходит Jenkins.

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

ORDER BY FIELD в Laravel

No Picture

Есть замечательная SQL конструкция, позволяющая задавать свой порядок сортировки для ORDER BY. Сегодня мне понадобилось использовать ORDER BY FIELD(priority, 2,1,3), ситуация осложнялась тем, что используется ORM от Laravel и его Query Builder экранирует то. что передано через ->orderBy. Решение же оказалось очень простым, нужно использовать raw \Model::orderBy( \DB::raw(‘FIELD(status, 2, 1, 3)’) );

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

Laravel-4

No Picture

Последнее время меня пугают некоторые тенденции для библиотек в PHP, вместо простого и быстрой разработки мы получаем JAVA. Сейчас много php фреймворков и я их делю на две основные категории: 1. Монстры с большой гибкостью и возможностью менять любой компонент. Они отлично подходят для кровавого энтерпрайза. В этой категории два лидера Symfony 2 и Zend Framework 2, хотя последний у меня вызывает скепсис, слишком уж сырой он появился на свет. 2. Фреймворки для быстрой разработки, они менее архитектурно красивы, зато не требуют писать такую кучу кода. Среди них следует отметить широко известные Yii и Kohana. Есть ещё микрофреймворки, php расширения,…

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

Шаблон для PHP приложений

No Picture

В очередной раз увидел чей-то велосипед и решил — с меня хватит. Сейчас в мире php наступила пора стандартизации и этим нужно пользоваться, хватит лепить приложения как попало. Сел, создал репозиторий  на github и заполнил его кусками из своих проектов. Все желающие могут присылать пожелания, баги, и пулл реквесты https://github.com/AmdY/php-app-skeleton.

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

Паттерн Decorator

No Picture

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

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

Вкусности twig

No Picture

Не могу не поделиться. На форуме 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.

No Picture

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

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

AJAX в Zend Framework

No Picture

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

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

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

No Picture

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

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