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:
-
set_include_path(implode(PATH_SEPARATOR, array(
-
realpath(APPLICATION_PATH . '/../library'),
-
realpath(APPLICATION_PATH . '/../mylib'),
-
get_include_path(),
-
)));
2. Прописать путь в конфигруационном файле application/configs/application.ini
CODE:
-
includePaths.mylib = APPLICATION_PATH "/../mylib"
В обоих случаях мы добавляем путь к mylib в include_path. Второй способ более предпочтительный, так как на основе выбранной конфигурации (production, develeopment, test) можно устанавливать путь к различным версиям mylib.
Кстати используя этот же прием, можно устанавливать путь и к каталогу library/Zend и на основе конфигураций подгружать различный версии Zend Framework.
И так, второе что нам необходимо сделать - это подключить автозагрузчик и установить префикс используемый классами библиотеки.
Я прописал автозагрузчик в файле public/index.php
CODE:
-
require_once 'Zend/Loader/Autoloader.php';
-
$loader = Zend_Loader_Autoloader::getInstance();
-
$loader->registerNamespace('My_');
В данном случае префикс классов в моей библиотеки "My_".
Также, этот же код можно прописать и в классе Bootstrap.php
CODE:
-
protected function _initAutoload()
-
{
-
require_once 'Zend/Loader/Autoloader.php';
-
$loader = Zend_Loader_Autoloader::getInstance();
-
$loader->registerNamespace('My');
-
}
Все, теперь ZF знает как загружать классы из вашей бибилиотеки.
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.
Posted in Lighttpd, Server Configuration on December 6th, 2009 by Yaroslav Vorozhko – Be the first to comment
Для создания автоматических вартуальных хостов нам потребуется модуль evhost. Этот модуль идет в стандартной поставке Lighttpd.
В секции modules расскомментируйте соответсвующую строку или добавте новую, если модуля нет в списке.
Первое, что нам надо знать - это то как lighttpd читает и парсит URI с помощью этого модуля.
CODE:
-
%% => % sign
-
%0 => domain name + tld
-
%1 => tld
-
%2 => domain name without tld
-
%3 => subdomain 1 name
-
%4 => subdomain 2 name
-
%_ => full domain name
Нас интересуют сабдомены первого уровня, которые хранятся в переменной %3.
Создадим для них специальный конфиг:
CODE:
-
$HTTP["host"] =~ ".*\.example\.org" {
-
evhost.path-pattern = "/home/%3/public_html/"
-
}
Этим конфигом мы будем перехватытвать все запросы обращенные к example.org и всем его сабдоменам.
Директива evhost.path-pattern устанавливает document root для каждого сабдомена.
Note: не указывайте server.document-root как путь по умолчанию к вашим сабдоменам. Это может быть опасно.
Теперь каждый каталог в /home будет считатся сабдоменом для example.org.
Незабудте также прописать каждый сабдомен в DNS или /etc/hosts.
Перезапускаем Lighttpd и проверяем.
Спасибо!
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.
Схема репозиториев будет следующая:
- Главный /www/mybigsite.com/
- Транзитный /home/repos/mybigsite
- Репозиторий разработчика находится в его домашнем каталоге.
Когда разработчику надо отправить новую порцию изменений в главный репозиторий, он:
- Отправляет данные в транзитный репозиторий (команда hg pus)
- А потом главный разработчик проверяет изменения и обновляет главный репозиторий (команда hg pus && hg up)
Настроим два уведомления:
- По событию hg pus в транзитный репозиторий - будем отправлять diff изменений главному программисту. Таких обновлений (hg pus) разработчик или разработчики могут сделать несколько, до того как будет обновлен главный репозиторий.
- Главный программист получив уведомления об обновлении транзитного репозитория проверяет изменения и обновляет главный репозиторий. По этому событию мы отправляем главному разработчику новую порцию diff изменений, который содержит именно все порции обновлений, что попали на главный репозиторий.
Теперь перейдем к настройке уведомлений используя hghook notify.
Открываем файл команд hgrc транзитного репозитория, если файла нет, то создаем его /home/repos/mybigsite/.hg/hgrc и добавляем следующие строки
read more »
Posted in Development, MySQL, Tips And Tricks on November 17th, 2009 by Yaroslav Vorozhko – 3 Comments
Задача изменить storage engine для всех таблиц mysql в одной базе данных.
Это решение работает для тех таблиц, которые имеют одинаковый префикс, например для таблиц wordpress и других CMS поддерживающих префиксы.
Коротко, задача решается получением списка всех таблиц в один файл, с помощью замены строк строятся правильные SQL команды и последнее - надо выполнить команды.
1)Получаем список таблиц в файл:
CODE:
-
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:
-
mysqldump -u username -ppassword -D dbname> dbname.sql
-
mysql -u username -ppassword -D dbname <outputfile.txt
Может кто нибудь подскажет как сделать то же самое для таблиц без одинакового префикса?
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+.
Начиная с этого момента, можно сказать, что теперь разработчикам не на что жаловаться - руководство есть, начинаем писать тесты. :)
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