Zend Studio – які враження?

ZendStudioЩо сподобалось?

1) Ctrl+space – автозаповнення і механізм шаблонів
2) Ctrl+O – швидкий перехід до потрібного методу в класі
3) OpenType(Ctrl+Shift+T швидке відкриття файлів по назві з потрібним класом), OpenMethod(швидке відкриття файлів по назві з потрібним методом) , OpenResource(швидке відкриття файлів по назві)
Групові операції з текстом в файлах (наприклад перейменування)
4) Підсвітка всіх помилок і можливість їх швидкого виправлення QuickFix(Ctrl+1)
5) Можна підсвічувати потрібну змінну в файлі. На полосці справа будуть видні всі її появи в тексті – сірим буде позначено ситання, оранжевим – запис
6) Можна перейменовувати змінну так, щоб одночасно вона переменувалась по всьому файлу
7) Корисні методи Refactor->ExtractMethod, Refactor->ExtractValue
8) Широкі можливості по роботі з проектом написаним на ZF, зокрема наявність консолі
9) Ну, і звичайно ж дебагінг…

Дебагінг

Фірма Зенд випускає ряд продуктів, серед яких виділимо
Zend Server – веб-стек схожий на Денвер плюс ряд скриптів для веб-розробки плю додаткові речі, такі як Zend Debugger, ZendFramework і т.д.
Zend Platform – те саме, тільки для більш крупних клієнтів
Zend Server CE – дещо урізаний безкоштовний Zend Server

При дебагінгу Zend Studio шукає встановлений Zend Server і якщо знаходить, все налаштовує сама. Але часто буває, що ставити Zend Server бажання немає (вже є Денвер, наприклад). В цьому випадку просто закачується Zend Debugger, який являє собою звичайний серверний модуль, що можна встановити на Апач. (Існує ще один аналог Zend Debugger’а – xDebug, його можна підключити до Zend Studio, але вже з меншими можливостями, зокрема без профайлінгу – а це дуже цікава річ, до речі )

Zend Studio підтримує кілька підходів до дебагінгу(та відповідно профайлінгу):
1)Локальний дебаг РНР скрипта(вбудованими в Зенд засобами)
2)Дебаг скрипта на сервері(тільки зі встановленим Zend Debugger)
3)Дебаг веб-сторінки на сервері
4)Дебаг вказаного УРЛ
5)Дебаг за допомогою плагіна в браузері – як на мене єдиний нормальний спосіб, оскільки у великому проекті окремий файл не надто протестуєш, а вводити по пам’яті УРЛ(спосіб №4) не надто зручно.
Отже, для дебагінгу на даний момент мені найбільше сподобалась на зв’язка Zend Studio + Zend Debugger+ плагін до Firefox
Zend Debugger працює тільки з non-thread-safe версією PHP. Це означає, що якщо розробка ведеться під Віндовс, то використовувати доведеться тільки Apache 1.3 Гілка Apache 2.х  під ОС від Майкрософт НЕ ПІДТРИМУЄ non-thread-safe PHP. Якщо коротко, то справа у 2-х варіантах реалізацї розподілу процесів в Апач: prefork(1.3,2.х) та worker(2.х). Для nts-версії PHP потрібна prefork реалізація, а під Віндовс вона є лише для гілки 1.3

До речі, популярний дистрибутив Денвер-3 йде з Apache 2 у поставці, тому там про Zend Debugger можна забути. Єдина альтернатива – можливе використання xDebug. Це рішення ніби має реалізації і для звичайного РНР і для nts-версії.

Коментарів немає

Завантаження великих файлів на сервер

Є принципово два шляхи: використання постійних запитів до серверу і через Флеш(коли рахується відправлена інформація, а не прийнята сервером). В обох випадках цим підходам допомагає JS

1) Перший варіант не надто вдало реалізований на PHP. По суті він став можливий з версії 5.2 та й то з використанням додаткової бібліотеки – APC (бібліотека для опимізації і прискорення роботи скриптів через роботу з кешем). Працює ця бібліотека(точніше її використання для індикації процесу загрузки) глючно, багато скарг. В принципі можна використовувати інші серверні мови – такі як PERL. Скажімо ресурс Rapidshare теж використовує певний cgi сценарій для інформування користувача, скільки байт завантажено.

2) Другий варіант є теж широко вживаним. Найбільш популярні бібліотеки – це swfupload і fancyupload. По своїй суті – це об’єкти флеш в обгортці з JS. fancyupload використовує MooTools а swfupload – щось своє.

Отож, якщо вам не хочеться заморочуватись з Perl, то рекомендується позаморочуватись з Flash…

Коментарів немає

Redmine+SVN інтеграція

Спочатку треба ввести правильні папаметри в самому Редмайні (хост, логін, пароль). Щоб все працювало, необхідно, щоб Редмайн мала доступ до встановленого в системі SVN (навіть якщо репозиторій на іншому сайті).
Якщо не працює, то в файлі /var/www/rails/redmine/lib/redmine/scm/adapters/subversion_adapter.rb необхідно прописати правильний шлях до SVN. Тобто замінити

SVN_BIN = "svn"
на щось на зразок
SVN_BIN = "/path_to_svn/svn –config-dir /etc/subversion"

(Звичайно ж в папці /etc/subversion мають бути скопійовані конфіги)

mkdir /etc/subversion
cp -r /root/.subversion/* /etc/subversion/ 

Після зміни рубі-файлу потрібно не забути перезавантажити Апач

service httpd restart

Якщо все-одно не працює, то слід дивитись логи помилок Апача або SVN-сервера (залежно, що стоїть)

До речі, не так давно весь Рунет захоплено обговорював новину про “взлом” 3 тисяч сайтів двома умільцями завдяки “експлойту” в SVN. Хотілося б поділитись власними враженнями з цього приводу.
В принципі, розгортання через svn update досить зручне – а для безпеки потрібно всього лише заборонити Апачу віддавати папки з розширенням .svn (про що і сказано в статті). І ніякого есплойту не буде.
Інший спосіб “деплоінгу”- робити svn export, але це дуже незручно у випадку частих апдейтів сайту – адже доведеться копіювати ВЕСЬ сайт щоразу.
Зрештою, можна робити svn update на проміжний(бета), недоступний широкій публіці сервер, а вже звідти робити синхронізацію за допомогою rsync.

Коментарів немає

JS файл засобами РНР

Підключити JS файл з розширенням *.рнр в документі досить просто. Нещодавно дізнався про простий та ефективний рецепт: :

<script type="text/javascript" src="myscript.php"></script>

або навіть так:

<script type="text/javascript" src="myscript.php?id=3&name=george"></script>

Сам файл myscript.php може бути цілком звичайним. Потрібно лише незабути наділити його коректним РНР-хідером, щоб браузер знав що перед ним саме js-файл:

<?
Header(”content-type: application/x-javascript”);
?>

Коментарів немає

Встановлення Bugzilla під Denwer

Щоб заявляти, що Redmine зручніший за Bugzilla, треба хоча б спробувати Bugzilla…

(В якості вихідної інструкції я взяв матеріал з цього блогу(рос.))
Bugzilla написана на Perl – а це означає, що нам потрібна підтримка цієї мови на нашому веб-сервері. В пакеті Denwer Perl вже є, але практично без додаткових модулів, їх треба “доустановити”. Спочатку качається Багзілла, встановлюється як звичайний сайт для Денвера
*denwer*\home\site_name\www\
після чого в її каталозі запускається команда
perl checksetup.pl –check-modules
(шлях до Перл зручно прописати в системі, щоб кожного разу не писати щось на зразок E:\Denwer\usr\local\perl\bin\perl.exe)
Скрипт виведе нам список модулів, які необхідно доустановити в Перл.
Далі запускаємо менеджер пакетів Перл
*denver*\usr\local\perl\bin\ppm
В налаштуваннях (Ctrl+P) вказуємо шлях куди будуть встановлены модулі і додаємо репозиторій (http://ppm.tcool.org/archives/package.xml )
Після того як всі модулі знайдені та встановлені, можна перейти до налаштувань БД.
В Денвері відключено по замовчуванню механізм використання таблиць InnoDB. Потрібно включити. В файлі my.cnf знаходимо рядок
skip-innodb
і закоментовуємо його:
#skip-innodb
Перезапускаємо Денвер. (БЕЗ підтримки innoDB Багзілла не працюватиме; MySQL підтримує 2 типи таблиць з транзакціями:Berkeley DB і InnoDB. По замовчуванню використовує MyISAM)
Далі в каталозі Багзілла необхідно створити файл .htaccess і додати рядки

Options +Indexes +ExecCGI
DirectoryIndex index.cgi

Цим самим ми дозволяємо серверу виконувати скрипти з www каталога (по замовчуванню це заборонено) і вказуємо файл по замовчуванню.
Виконуємо команду
perl checksetup.pl
В каталозі буде створено файл localconfig. Його потрібно відкрити і задати вірні параметри для змінних $db_host, $db_name, $db_user, $db_pass
Знову
perl checksetup.pl
Цього разу буде задано кілька питань (про і-мейл і т.д.) Після відповіді на ці питання встановлення вважається завершеним – можна заходити, логінитись і користуватись.
P.S. Вважаю за необхдне додати, що в такому випадку Perl працює через CGI. Для кращої швидкості роботи можна встановити mod_perl – спеціальний модуль під Apache

Коментарів немає