Відвідализ Ігорем на вихідних конференцію ЛОБ 2019. Пошкодував, що не взяли з собою маркетологів, бо контент більшою частиною був про маркетинг. Тому оцифровую конспект, щоб зашарити його одразу усім. Continue reading
Проблема з capifony
Якщо в вас виникла схожа трабла
cap deploy /home/stfalcon/.rvm/gems/ruby-2.1.1/gems/capistrano-2.15.5/lib/capistrano/configuration/loading.rb:191:in `find_file_in_load_path': no such file to load -- (LoadError) from /home/stfalcon/.rvm/gems/ruby-2.1.1/gems/capistrano-2.15.5/lib/capistrano/configuration/loading.rb:179:in `load_from_file' from /home/stfalcon/.rvm/gems/ruby-2.1.1/gems/capistrano-2.15.5/lib/capistrano/configuration/loading.rb:89:in `load' from /home/stfalcon/.rvm/gems/ruby-2.1.1/gems/capistrano-2.15.5/lib/capistrano/configuration/loading.rb:86:in `block in load' from /home/stfalcon/.rvm/gems/ruby-2.1.1/gems/capistrano-2.15.5/lib/capistrano/configuration/loading.rb:86:in `each' from /home/stfalcon/.rvm/gems/ruby-2.1.1/gems/capistrano-2.15.5/lib/capistrano/configuration/loading.rb:86:in `load' from Capfile:3:in `load' from /home/stfalcon/.rvm/gems/ruby-2.1.1/gems/capistrano-2.15.5/lib/capistrano/configuration/loading.rb:93:in `instance_eval' from /home/stfalcon/.rvm/gems/ruby-2.1.1/gems/capistrano-2.15.5/lib/capistrano/configuration/loading.rb:93:in `load' from /home/stfalcon/.rvm/gems/ruby-2.1.1/gems/capistrano-2.15.5/lib/capistrano/configuration/loading.rb:180:in `load_from_file' from /home/stfalcon/.rvm/gems/ruby-2.1.1/gems/capistrano-2.15.5/lib/capistrano/configuration/loading.rb:89:in `load' from /home/stfalcon/.rvm/gems/ruby-2.1.1/gems/capistrano-2.15.5/lib/capistrano/configuration/loading.rb:86:in `block in load' from /home/stfalcon/.rvm/gems/ruby-2.1.1/gems/capistrano-2.15.5/lib/capistrano/configuration/loading.rb:86:in `each' from /home/stfalcon/.rvm/gems/ruby-2.1.1/gems/capistrano-2.15.5/lib/capistrano/configuration/loading.rb:86:in `load' from /home/stfalcon/.rvm/gems/ruby-2.1.1/gems/capistrano-2.15.5/lib/capistrano/cli/execute.rb:65:in `block in load_recipes' from /home/stfalcon/.rvm/gems/ruby-2.1.1/gems/capistrano-2.15.5/lib/capistrano/cli/execute.rb:65:in `each' from /home/stfalcon/.rvm/gems/ruby-2.1.1/gems/capistrano-2.15.5/lib/capistrano/cli/execute.rb:65:in `load_recipes' from /home/stfalcon/.rvm/gems/ruby-2.1.1/gems/capistrano-2.15.5/lib/capistrano/cli/execute.rb:31:in `execute!' from /home/stfalcon/.rvm/gems/ruby-2.1.1/gems/capistrano-2.15.5/lib/capistrano/cli/execute.rb:14:in `execute' from /home/stfalcon/.rvm/gems/ruby-2.1.1/gems/capistrano-2.15.5/bin/cap:4:in `' from /home/stfalcon/.rvm/gems/ruby-2.1.1/bin/cap:23:in `load' from /home/stfalcon/.rvm/gems/ruby-2.1.1/bin/cap:23:in ` |
$ rm ./Capfile $ capifony . |
PS. Тепер буду вести цей блог виключно українською або англійською.
Негативный отзыв о работе туроператора ИльТур (ILTOUR)
Только что вернулись с нашего недельного отпуска в Болгарии. Отдохнули хорошо, но рассказать хочу не об этом т.к. есть большие претензии к работе туроператора ИльТур.
Отзыв предназначен в основном для тех, кто собирается ехать отдыхать с этим туроператором.
Программисты не любят KISS?
Картинку взял из статьи “Будьте проще (и к вам потянутся люди)“. Статью можно почитать.
Вот один из свежих примеров
На одном из проектов сделали доску объявлений и там есть фича “Пожаловаться на объявление” (вдруг в тексте что-то противозаконное и т.д.). Фича работает через ajax — т.е. нажав на ссылку “Пожаловаться” пользователь видит всплывашку аля “Спасибо! Мы рассмотрим вашу жалобу.”.
Заметка по VichUploaderBundle
Долго мы мудохались (по другому не скажу) с парой-тройкой багов, которые полезли в результате использования VichUploaderBundle. И главное мы к ним возвращались по 2-3 раза на разных проектах за последние полгода :).
Symfony’s form component cleanup
Наименее костыльное решение предложили здесь. Чтобы постоянно не прописывать data_class в формах я добавил его в DefaultOptions для FileType и отправил PR в Symfony2. Чуть позже доделаем тесты и думаю PR примут.
The file is not updated if there are not other changes in the entity
Это хитрый баг, который возникает когда в форме меняется только файл. Словили его когда решили обновить логотип для спонсора на http://fwdays.com. Сегодня я выделил время на дебаг и понял, что нормальным путем проблему не решить. Смотрите сами:
... // биндим данные на форму // - запускаем дата трансформеры // - дергаем сеттеры сущности (setFile и др.) $form->bind($request); // валидируем форму // в $file должен быть объект загружаемого файла (UploadableField), чтобы пройти валидацию if ($form->isValid()) { $em = $this->getDoctrine()->getManager(); // готовим сущность к сохранению в БД // вычисляется хеш объекта и определяется его состояние (новый, обновленный и т.д.) // здесь дергается хук preUpdate (обновление) или prePersist (новая сущность) и файл физически перемещается в место назначения, но // !! если нужно просто обновить файл, то проблема т.к. имя файла (которое хранится в БД) ещё не изменилось, а preUpdate запускается только если в сущности есть изменения !! $em->persist($entity); // сохранение данных $em->flush(); ... |
Получается, что нужно зааплоадить новый файл и засетить его имя в сущность до того как отправить сущность в persist() менеджера сущностей. Иначе Doctrine не видит изменений в сущности, не дергает хук preUpdate и аплоад средствами VichUploaderBundle не происходит :(.
Спасает костыль от автора бандла, который предлагает делать в сущности поле updatetAt и обновлять его если в сеттер файла приходит что-то новенькое:
public function setFile($file) { $this->file = $file; if ($file instanceof UploadedFile) { $this->setUpdatedAt(new \DateTime()); } } |
Как-то так 🙂
Debian & “Transport endpoint is not connected”
Такая проблема возникает время от времени. Поэтому записываю решение, чтобы не опять искать.
Если работа системы была завершена некорректно, то в системе остается файл блокировки mongodb “/var/lib/mongodb/mongod.lock”.
Логично, что для возобновления нормальной работы его нужно удалять и заново стартовать монгу.
sudo rm /var/lib/mongodb/mongod.lock; sudo service mongodb start |
Карпатський похід. Операція “Мармороси”
Минулого тижня ми з Даною повернулися з походу в Карпати (Мармороським хребтом). Похід був відносно коротким (чотири дні), але доволі цікавим і насиченим. Під катом публікую невеличкий фотозвіт з коментарями.
Continue reading
Шпаргалка по PEAR
Примерно раз в полгода я запускаю в консоли pear и лезу в хелп или гуглю нужные команды (хорошо если натыкаюсь на http://pear.php.net/manual/en/guide.users.commandline.commands.php или на http://pear.php.net/manual/en/guide.users.commandline.channels.php)
Итак. На примере обновления PHPUnit до версии 3.6.0RC4.
1. Просмотр списка каналов
$ pear list-channels
2. Просмотр всех доступных пакетов с определенного канала
$ pear list-all -c pear.phpunit.de
3. Обновить все пакеты
$ sudo pear upgrade-all
4. Разрешаем установку бета версий
$ sudo pear config-set preferred_state beta
5. Обновиться до определенной версии пакета
$ sudo pear upgrade phpunit/PHPUnit-3.6.0RC4
6. Посмотреть список установленных пакетов
$ pear list -a
Пока все 🙂
PS. Разгребаю черновики записей в блоге
Простые правила сильного текста
Беседовали о том, какие у нас херовые плохие тексты в портфолио. И Олег скинул ссылку на вот это видео:
Меня зацепило и решил попробовал изменить описания категорий.
Вот такое было описание для категории “Веб-разработка”:
Специализируемся на разработке больших и средних сайтов/порталов с нестандартным функционалом. Умеем справляться с большими нагрузками и с радостью беремся за решение сложных задач. В работе используем PHP (Symfony2, Zend Framework, Doctrine2), JavaScript (jQuery, YUI, MooTools), SQL (MySQL, PgSQL), HTML5, багтрекер Redmine и системы контроля версий (SVN, Git).
А вот такое стало:
Делаем стартапы. Справляемся с большими нагрузками и решаем сложные задачи. Используем современные инструменты и практики разработки.
Что скажете?
UPD. Для “Дизайн сайтов” тоже текст укоротили.
Было:
Первое впечатление о сайте, которое формируется у посетителя, очень сильно зависит от его дизайна и удобства использования. Мы поможем сделать это впечатление наиболее положительным, разработав красивый и функциональный дизайн для Вашего сайта.
Стало:
Создаем удобный и функциональный дизайн
Конференция для веб-разработчиков «ZFConf 2012»
21 апреля в Москве пройдет очередная ежегодная конференция для веб-разработчиков ZFConf 2012, посвященная популярной платформе Zend Framework.
В этом году с докладом выступит гость из Италии — Enrico Zimuel из Zend Framework Core Team. А также Виктор Фараздаги, Александр Веремьев, Алексей Качаев и многие другие специалисты.
На сайте опубликован полный список докладов и открыта регистрация.
Доклады
Zend Framework 2, a quick start Enrico Zimuel (Zend Technologies, Zend Framework Core Team)
Code Generation и Scaffolding в Zend Framework 2 Виктор Фараздаги (Simple Square, Senior Developer)
Реализация доступа к СУБД IBM DB2 посредством встраиваемого SQL Александр Веремьев (Zend Framework contributor)
Распределенные сетевые приложения c Zend Framework 2 и ZeroMQ Алексей Качаев (Сogniance, Senior Software Engineer)
Dependency Management в PHP и Zend Framework 2 Кирилл Чебунин (Creara, Senior PHP Developer)
Кеш без промахов средствами Zend Framework 2 Никита Грибалев (Nival, Lead PHP Developer)
Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного проекта на основе ZF Антон Великанов (Sand Sign, Founder&CEO)
Capistrano для деплоймента PHP-приложений Роман Лапин (Evercode Lab, Senior Developer)
PS. И небольшое промо видео 🙂