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, я решил наговнокодить прямо в основном лэйауте. Continue reading

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

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

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

Я начинал свой программистский путь с выполнения лаб по 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 года. Continue reading

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

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

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

Continue reading

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

Проблемы новичков в php.

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

В реальной жизни веб программисты оперируются всего парочкой типичных задач — вывод списка записей, просмотр одиночной записи, редактирование-добавление, удаление-изменение единичного параметра, работа с деревьями (её в некой степени можно аппроксимировать до вывода списка). Ещё важным моментом является работа с фалами, особенно изображениями. Continue reading

Социальная безысходность Google

На днях Google решил сделать очередную попытку пробиться на социальный рынок. Всё началось с установки кнопки +1, которая является аналогом фейсбуковским лайкам. Но оказалось что появляется не только кнопка, а целый сервис google plus (google +). В целом ничего инновационного они не сделали, практически всё есть в facebook и vkontakte, но у гугла местами удобнее, а местами понятно только гикам. Интересным может быть только видео комментарии, да и то. практика видео звонков показала, что люди не любят светить своё лицо при общении, предпочитают скрываться за аватарами.

Но обсудить хочется не это, а их систему инвайтов. Помним мы, как точно так же начинал усопший Google Wave. В принципе гугловские инвайты — это этакий фейк, потому что каждый зарегистрировавшийся может притащить ещё определённое число пользователей, т.е. количество зарегистрированных фактически не регулируется, лишь создаётся занавеса избранности.

Так как сервис — социальный, значит люди должны прийти сами и привести весь свой круг общения. Естественно, все коммуникабельные пользователи получили инвайты на google plus уже в первый день. Но есть одно большое НО — гугл это тусовка гиков и в сервис кроме них никто из обычных пользователе не перелезет со своих обжитых аккаунтов в вконтакте и на фейсбуке.

А дальше начинается та самая безысходность социальных проектов из заголовка статьи. О сервисе начинают писать и в комментариях появляются орды гиков, желающих заполучить аккаунт в этот самый социальный google +. То есть получается, что весь этот народ так и не нашёл в своём кругу общения знакомых имеющих инвайты. Почему же так?  Потому что гики не очень то социально активные люди, они больше любят девайсы, нежели людей.

Понятное дело, что среди гиков есть и представители с тысячами фолоуверов в твиттере, сотнями друзей в реальной жизни, но их не так много в общей массе гиков. И такие люди явно не уйдут из других социалок, потому что среди их круга общения есть масса людей пользующихся поиском яндекса и зарегистрированных только в вконтакте, даже без аккаунта в православном фейсбуке.

И если на wave действительно были какие-то надежды, то у google plus такая же безысходность как у google buzz, который не может соперничать с не гиковским твиттером, к котором регистрируются даже политики, актёры, футболисты и прочие интересные всем люди…

Постепенно начинается обсуждаться вопрос, как отключить google plus, ещё один привет истории buzz. Я вот тоже посмотрел, пощупал. покрутил и собираюсь забыть.

p.s. Если кому из знакомых нужен инвайт, пишите, обязательно пришлю, т.к. раздавать незнакомым не собираюсь и инвайтов хватит на всех знакомых гиков.

Убиваем плохой плагин без загрузки netbeans

Недавно сделал большую глупость и установил на netbeans 7.0 плагин для поддержки smarty. Раньше пользховался этим очень хорошим плагином, но толи в новой версии netbean ситуация изменилась, толи плагин так испортился. В общем, после установки ничего не подхватилось, решил перегрузить IDE и приплыли, загрузить по новому не получилось, примерно на 70% индикатора загрузки процесс остановился.

Бросился в интернеты, искать как загрузить netbeans в режиме safe mode, чтобы не загружались все плагины и можно было в настройках отключить бажный. Ничего не нашёл. Пришлось выбрать иной путь и покопаться в конфигах, благо они в xml.

Делюсь навыком отключения плагина в netbeans через конфиги. Задим в папочку пользователя и следуем по пути .netbeans\7.0\config\Modules\ там и находим наш плагин, открываем в редакторе и видим такую структуру

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//NetBeans//DTD Module Status 1.0//EN"
                        "http://www.netbeans.org/dtds/module-status-1_0.dtd">
<module name="org.netbeans.modules.php.smarty">
    <param name="autoload">false</param>
    <param name="eager">false</param>
    <param name="enabled">true</param>
    <param name="jar">modules/org-netbeans-modules-php-smarty.jar</param>
    <param name="reloadable">false</param>
</module>

Соответственно нужный нам параметр enable выставляем в false и спокойно загружаемся. После загрузки я опять активировал плагин и больше проблем с загрузкой не было. Но вот плагин так и не подхватил tpl, даже когда создавал новый через визард и выбирал smarty template. В итоге пришлось отказаться от него. Благо у меня всего 1 проект со smarty.

Тестовое задание и вопросы на собеседовании для программиста

На DOU недавно разразились циклом статей про рекрутёрство. Это для нашего айти является огромной чёрной дырой. Начиная с профильного образования, которое практически нельзя получить ни в одном ВУЗе страны, где учат чему угодно, только не тому, что реально пригодится в работе. Следующим идут айчары (hr), которые тоже в лучшем случае с образованием психолога, но ни где не изучают остальные секреты профессии. И у нас происходит ситауция, когда один непрофессионал, приходит к другому не профессионалу. Подтвердить свои знания корочкой и зачастую даже сертификатами мы не можем и начинается собеседование. Аэчаров оббижать не буду, затронем техническое. Как правило это вопросы и тестовое задание. Но мы помним, что нас опрашивает такой же технический специалист без навыков рекрутёра и психолога, который не умеет задавать вопросы и зачастую пытается по петушиться и показать насколько он умный.

Не очень то хочется писать своё ИМХО и получать ярлык «недооценённого гения», но вот приведу очень хороший комментарий, с который совпадает с моими наблюдениями. Читайте под катом. Continue reading

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

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

  1. Роутинг
  2. Встроенное кэширование
  3. Active Record
  4. Шаблонизатор
  5. Расширяемость через плагины.

Выглядит всё это довольно внушительно, примеры уровня «Hello world» смотрятся потрасающе, но что будет, коль копнуть поглубже.

Continue reading