Архив рубрики: Программирование

Недостатки laravel

Я очень люблю фреймворк laravel, пользуюсь им начиная с 3-й версии, тогда он был как глоток свежего воздуха на фоне zend и symfony. Уважаю Тейлора за проделанную работу, за принесённую в php фреймворки идею удобного апи и умение копировать лучшее из других фреймворков вроде RoR. О плюсах сказано уже много, но у него есть свои недостатки.
Well, nobody perfectЭти недостатки не фатальны, а некоторые и вовсе мои личные привычки, которые другим покажутся надуманными. Всё дерьмо вылитое ниже не сильно влияет на мою оценку laravel, который считаю лучшим фреймворком в мире PHP. И спасибо @kotchuprik и его статье, который подтолкнул высказаться и дал некоторые идеи. Читать далее

Continuous Integration, delivery, deployment

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

Сидит программист, пишет свой код, думает о пиве и здесь появляется другой программист, с ним тестировщик и, прости Господи, проектный менеджер. Здесь уже не до пива, код больше нельзя править на сервере через удалённый доступ. Приходится разворачивать git, лепить ветки, создавать билды и гонять тесты и в дело вступает супергерой Continuous. Последнее время принято мешать три шага Continuous в одну кучу, хотя эти шаги сильно отличаются по целям и подходам. Эти шаги — Continuous Integration, Continuous Delivery и Continuous Deployment.CI_part1_cover_optima Читать далее

Continuous integration с Jenkins

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

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

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

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

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

Убиваем плохой плагин без загрузки 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), которые тоже в лучшем случае с образованием психолога, но ни где не изучают остальные секреты профессии. И у нас происходит ситауция, когда один непрофессионал, приходит к другому не профессионалу. Подтвердить свои знания корочкой и зачастую даже сертификатами мы не можем и начинается собеседование. Аэчаров оббижать не буду, затронем техническое. Как правило это вопросы и тестовое задание. Но мы помним, что нас опрашивает такой же технический специалист без навыков рекрутёра и психолога, который не умеет задавать вопросы и зачастую пытается по петушиться и показать насколько он умный.

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

Отчёт о «Всемирном дне юзабилити» в Минске

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

Конференция получилась значительно лучше, чем я скептически ожидал. Организаторы и докладчики молодцы, даже те, кого буду критиковать.

Читать далее

Учёт времени работы

Иногда приходится работать на фрилансе, причём с проектами, время выполнения которых неизвестно или трудно высчитываемо. Для пользователь фриланс биржи oDesc есть удобная утилита для контроля времени. Суть довольно проста: садишься работать, включаешь таймер, время тикает и система наблюдает за тобой, делает скриншоты, смотрит активность кликов мышкой, нажатия на клавиши клавиатуры. В итоге у заказчика есть некая картина того, чем ты занимался всё это время. Читать далее