Autoload своих библотек в Zend Framework 1.8+

Posted in Development, PHP, Tips And Tricks, ZendFramework on December 11th, 2009 by Yaroslav Vorozhko – Be the first to comment

Чтоб загружать в Zend Framework свои библиотеки, нам надо сделать следующее:
Первое - это добавить физический путь к библиотеке в include_path.
Второе - это указать префикс классов библиотеки, если такой вообще используется.

Добавить путь в include_path можно двумя способами:
1. Жетско прописать путь в public/index.php файле:

CODE:
  1. set_include_path(implode(PATH_SEPARATOR, array(
  2.     realpath(APPLICATION_PATH . '/../library'),
  3.     realpath(APPLICATION_PATH . '/../mylib'),
  4.     get_include_path(),
  5. )));

2. Прописать путь в конфигруационном файле application/configs/application.ini

CODE:
  1. includePaths.mylib = APPLICATION_PATH "/../mylib"

В обоих случаях мы добавляем путь к mylib в include_path. Второй способ более предпочтительный, так как на основе выбранной конфигурации (production, develeopment, test) можно устанавливать путь к различным версиям mylib.
Кстати используя этот же прием, можно устанавливать путь и к каталогу library/Zend и на основе конфигураций подгружать различный версии Zend Framework.

И так, второе что нам необходимо сделать - это подключить автозагрузчик и установить префикс используемый классами библиотеки.
Я прописал автозагрузчик в файле public/index.php

CODE:
  1. require_once 'Zend/Loader/Autoloader.php';
  2. $loader = Zend_Loader_Autoloader::getInstance();
  3. $loader->registerNamespace('My_');

В данном случае префикс классов в моей библиотеки "My_".

Также, этот же код можно прописать и в классе Bootstrap.php

CODE:
  1. protected function _initAutoload()
  2.     {
  3.         require_once 'Zend/Loader/Autoloader.php';
  4.         $loader = Zend_Loader_Autoloader::getInstance();
  5.         $loader->registerNamespace('My');
  6.     }

Все, теперь ZF знает как загружать классы из вашей бибилиотеки.

Zend Studio: Workspace in use choose different workspace

Posted in Clients Configuration, Tips And Tricks, Zend Studio on December 7th, 2009 by Yaroslav Vorozhko – Be the first to comment

Вот такую ошибку я увидел недавно, после того как экстренно завершила работу Zend студия.
Причем заставить выбрать рабочее простраство по умолчанию не представляется возможным.
Вот как решается это под Linux (Ubuntu):
rm -rf /tmp/eclipse
С данной проблемой под Windows не сталкивался, поэтому точного решения не подскажу.
Но, как ориентир, я порекомендовал бы почистить "tmp" каталог в Application Data.

Lighttpd создаем виртуальные хосты автоматически

Posted in Lighttpd, Server Configuration on December 6th, 2009 by Yaroslav Vorozhko – Be the first to comment

Для создания автоматических вартуальных хостов нам потребуется модуль evhost. Этот модуль идет в стандартной поставке Lighttpd.
В секции modules расскомментируйте соответсвующую строку или добавте новую, если модуля нет в списке.
Первое, что нам надо знать - это то как lighttpd читает и парсит URI с помощью этого модуля.

CODE:
  1. %% => % sign
  2.   %0 => domain name + tld
  3.   %1 => tld
  4.   %2 => domain name without tld
  5.   %3 => subdomain 1 name
  6.   %4 => subdomain 2 name
  7.   %_ => full domain name

Нас интересуют сабдомены первого уровня, которые хранятся в переменной %3.
Создадим для них специальный конфиг:

CODE:
  1. $HTTP["host"] =~ ".*\.example\.org" {
  2.       evhost.path-pattern = "/home/%3/public_html/"
  3.   }

Этим конфигом мы будем перехватытвать все запросы обращенные к example.org и всем его сабдоменам.
Директива evhost.path-pattern устанавливает document root для каждого сабдомена.
Note: не указывайте server.document-root как путь по умолчанию к вашим сабдоменам. Это может быть опасно.

Теперь каждый каталог в /home будет считатся сабдоменом для example.org.
Незабудте также прописать каждый сабдомен в DNS или /etc/hosts.
Перезапускаем Lighttpd и проверяем.
Спасибо!

HG Mercurial email уведомления

Posted in Mercurial HG, Server Configuration, Tips And Tricks on November 24th, 2009 by Yaroslav Vorozhko – Be the first to comment

В каждом серьезном проекте используется контроль версий и разработку зачастую ведет не один программист. Как минимум, кроме программиста есть еще и главный программист, который следит за качеством разработки.
С помощью hg mercural мы можем предоставить главному программисту мониторинг изменений в репозитории, особенно когда это касается обновления главной ветки.
В mercurial для этого есть замечательный встроенный плагин notify, который поможет нам настроить уведомления по email.

Схема репозиториев будет следующая:

  1. Главный /www/mybigsite.com/
  2. Транзитный /home/repos/mybigsite
  3. Репозиторий разработчика находится в его домашнем каталоге.

Когда разработчику надо отправить новую порцию изменений в главный репозиторий, он:

  1. Отправляет данные в транзитный репозиторий (команда hg pus)
  2. А потом главный разработчик проверяет изменения и обновляет главный репозиторий (команда hg pus && hg up)

Настроим два уведомления:

  1. По событию hg pus в транзитный репозиторий - будем отправлять diff изменений главному программисту. Таких обновлений (hg pus) разработчик или разработчики могут сделать несколько, до того как будет обновлен главный репозиторий.
  2. Главный программист получив уведомления об обновлении транзитного репозитория проверяет изменения и обновляет главный репозиторий. По этому событию мы отправляем главному разработчику новую порцию diff изменений, который содержит именно все порции обновлений, что попали на главный репозиторий.

Теперь перейдем к настройке уведомлений используя hghook notify.
Открываем файл команд hgrc транзитного репозитория, если файла нет, то создаем его /home/repos/mybigsite/.hg/hgrc и добавляем следующие строки

read more »

MySQL меняем storage engine в нескольких таблицах на InnoDB

Posted in Development, MySQL, Tips And Tricks on November 17th, 2009 by Yaroslav Vorozhko – 3 Comments

Задача изменить storage engine для всех таблиц mysql в одной базе данных.

Это решение работает для тех таблиц, которые имеют одинаковый префикс, например для таблиц wordpress и других CMS поддерживающих префиксы.

Коротко, задача решается получением списка всех таблиц в один файл, с помощью замены строк строятся правильные SQL команды и последнее - надо выполнить команды.

1)Получаем список таблиц в файл:

CODE:
  1. mysql -u username -ppassword -D dbname -e "show tables"> outputfile.txt

2)Открываем файл outputfile.txt например в vim и делаем следующие замены:

  • Префикс меняем на ALTER TABLE prefix_ - для vim: %s/prefix_/ALTER TABLE prefix_/g
  • Перенос строки меняем на ENGINE=InnoDB плюс перенос строки - для vim: %s/\n/ ENGINE=InnoDB;\r/g

3)Выполняем скрипт, но прежде делаем бэкап базы:

CODE:
  1. mysqldump -u username -ppassword -D dbname> dbname.sql
  2. mysql -u username -ppassword -D dbname <outputfile.txt

Может кто нибудь подскажет как сделать то же самое для таблиц без одинакового префикса?

Введение в Unit тестрование на Zend Framework 1.8+

Posted in Clear Code, MySQL, Testing, ZendFramework on November 2nd, 2009 by Yaroslav Vorozhko – 2 Comments

Michelangelo van Dam написал краткое введение в Unit тестрование на Zend Framework 1.8+.
Так как версия Zend Framwork 1.8 была сильно переработана, то по сути это первое руководство описывающее как писать Unit тесты в ZF 1.8+.
Начиная с этого момента, можно сказать, что теперь разработчикам не на что жаловаться - руководство есть, начинаем писать тесты. :)

Вышла Zend Studio 7.1 Beta

Posted in Events, Self Development on October 22nd, 2009 by Yaroslav Vorozhko – 4 Comments

С тех пор как вышла Zend Studio 7.0 Beta прошло около полугода, за это время я успел разочароваться в новой версии ZS по части скорости работы и перешел на использование NetBeans 6, которая кстати тоже не без глюков, но зато работает быстро.

Что можно сказать про новую ZS  версии 7.1.

  • проекты открываются быстрее раза в 2-3
  • навигация по файлам уже не глючит
  • сама студия работает шустрее предыдущей версии

Еще заметил изменение shortcats, видимо инсталляция подхватила не все настройки предыдущей студии.

Вернусь пока с NetBeans на Zend Studio, все таки NB уступает в плане юзабилити очень сильно.

Скачать ZS Beta 7.1
Лекарство к ZS Beta 7.1 для Linux и Windows