PHP → Установка ImageMagick
Так уж вышло, что понадобилось для для одного проекта такое расширение, как ImageMagick. Ну а раз понадобилось, то надо устанавливать.
На рабочем макинтоше всяческие апачи и пэхэпэшки проинсталлированы у меня через MacPorts, потому и установка разрешилась поиском по интернету и парой команд, что ниже
1 2 | sudo port install ImageMagick
sudo port install php5-imagick
|
Минут 45 ожидания (и наблюдения за компьютерной жизнью в консоли) и готово. Так долго вышло потому, что порты давно не обновлялись, а с установкой расширения попутно пересобралось всё, что только можно.
PHP → Локальные проблемы PHP
Подключился на днях к новому проекту на Symfony 2 и начались проблемы :) Проблемы не с симфонией, конечно, а с php, точнее, с его настройками. Скачал проект, установил внешние библиотеки и буквально с первой команды наблюдаю такую красоту в терминале.
Zend Framework → Zend_Service_Twitter, последние записи twitter
Внимание, данная запись устарела. Описанное работоспособно для ZF 1.12.2 (и ниже) и twitter API 1.0, более актуальная запись находится тут → Zend_Service_Twitter, небольшие изменения
Обещался почти месяц назад описать внутренности кода, вытягивающего последние записи из твиттера, так что теперь придётся. Или забью и забуду.
Сложного ничего нет. Необходима лишь документация и гугл. Кроме того, нужно зарегистрировать своё веб-приложение на dev.twitter.com для того, чтобы получить consumer key и consumer secret. Там же вами для приложения будет указан callbackURL, который примет токен для авторизации.
Параметры для аутентификации поместим в application.ini
1 2 3 4 | twitter.callbackUrl = "http://yourhost.com/twitter/callback"
twitter.siteUrl = "http://twitter.com/oauth"
twitter.consumerKey = "dadd58b24026011e2ce361"
twitter.consumerSecret = "ljsvb3fEM28e8c5a4fbb4f38bc378pNRzL5I1CrfV5B"
|
Далее создаём контроллер для твиттера приблизительно такого вида.
Zend Framework → Отправка писем в спул
Под отправкой писем в спул, я подразумеваю именно стратегию, когда реальная отправка письма происходит в фоновом процессе, а не в том, который отправку письма инициализировал. Поясню на примере данного блога. Некто отправляет комментарий, отвечая на комментарий другого пользователя. Этим действием запускается механизм, который отправляет письмо мне, т.е. хозяину блога, о том, что кто-то что-то написал. Дальше отправляется письмо тому, на чей комментарий ответили. Ну и, допустим, что письма о комментарии отправляются всем, кто подписался на комментарии к конкретному топику блога. Так вот зачем нашему некто ожидать, пока всем письма отправятся? В случае же массовых рассылок, когда адресатов сотни и тысячи, по другому и нельзя, по моему.
Решением данной ситуации и будет отправка писем в спул, т.е. помещение их в некую очередь, откуда они будут извлекаться фоновым скриптом, и рассылаться адресатам.
News → Работа над ошибками
Начал переработку отходов движка этого блога. Он, конечно, нормально функционирует, но начинал я его в то время, когда знания мои в данной области были крайне скудны. Тот же самый JOIN, например, в SQL запросах был для меня загадкой, а потому приходилось извлекать данные из отдельных таблиц, а потом лепить внутри PHP-кода то, что мне надо.
Хотелось дождаться выхода Zend Framework 2, чтобы поупражняться в нём, но, видимо, не судьба, так что в основе будет лежать первая версия моего любимого фреймворка. Можно было, конечно, затеять деятельность и с Symfony 2, т.к. инструмент реально мощный, но только не вижу целесообразности его применения, отсутствует простота, да и на работе мне его хватает с головой :)
Вот, собственно, и всё. Запись эта нужна мне только в качестве точки отсчёта по времени, более ни для чего.
Zend Framework → Использование Zend_Feed
Не претендую на лучшее решение, это скорее первый опыт общения с Zend_Feed вообще, но написать что-то надо. Хотя бы ради ссылки на спецификации RSS 2.0
Ну а теперь, собственно, реализация RSS-ленты. Поскольку я стараюсь придерживаться паттернов проектирования MVC, то запрос обрабатывается контроллером, а данные для ленты формируются в модели. Вид (View) нам не нужен, как таковой, потому в контроллере мы его выключаем.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?php
public function feedAction()
{
//определяем тип ленты, RSS или Atom
$feedType = $this->_getParam('feed');
//выключаем View и Layout
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
$topics = new Application_Model_DbTable_Topics();
//запрашиваем данные ленты из модели
$feedArray = $topics->getFeedData($feedType);
//Импортируем ленту с помощью Zend_Feed и выводим её
$feed = Zend_Feed::importArray($feedArray, $feedType);
$feed->send();
}
|
News → Подсветка кода
Благодаря такой штуке, как SyntaxHighlighter, добавил себе в блог подсветку кода. Работает она только на странице записи, в ленте пока не организовывал её.
Собственно:
1 2 3 4 5 | <?php
if ($ok) {
echo 'Превед, Медвед';
}
|
Zend Framework → Пощупал Zend_Cache
Заинтересовался компонентами Zend Framework, пользоваться которыми ещё не приходилось. Решил попробовать Zend_Cache. Собственно попробовал кеш на этом самом блоге, который родился и продолжает развиваться из моего тестового задания для приёма на работу.
Выбрал 3 не самых ресурсоёмких запроса, которые происходят при каждом обращении к IndexController-у. Это выборка из БД названий непустых категорий и тегов, в которых уже имеются записи, а также имён пользователей блога (я тут пока один).
Работа → Magento
Буквально ещё несколько дней назад хотелось попробовать на работе чего-нибудь новенького, дабы мозги не застаивались, а теперь голова пухнет, так как появилось это самое - новенькое. Необходимо будет сделать магазин на основе Magento.
На второй день в голове что-то уже проясняется по поводу сей системы, насобиралось на просторах инета немного документации и т.п. В общем, будет то, что будет, всё равно ведь придётся участвовать в работе, не самоликвидироваться же :) Документация документацией, её можно месяцами читать, а какое-то понимание пойдёт уже после ковыряния с конкретными задачами.
PHP → Регулярные выражения
Если не разобрался на все сто процентов, то использовал, по крайней мере, кое какие штуки из сабжа (чтобы подсветить ссылки в этом самом блоге). Оставляю полезные ссылки по теме на всякий случай.