18.05.2012
7.05.2012

Проверка соблюдения стандартов кодирования в PHP на примере связки Denwer3 + Code Sniffer + PhpStorm4 + SVN

Если над проектом работает несколько человек, то рано или поздно встаёт вопрос, что неплохо было бы выработать общие правила кодирования. Так как, когда код оформлен единообразно, то значительно улучшается его читаемость, да и ошибки увидеть проще.

Конечно, попытка внедрения стиля кодирования в команде программистов может вызвать на первом этапе сопротивление тех, кто не любит писать комментарии к классам и методам или тех, кому придётся пересмотреть свой стиль написания кода. Но как показывает мой опыт, если программистам предоставить удобный инструмент для отслеживания стиля, то переход на единый стандарт пройдёт менее болезненно, а через некоторое время вопрос “Зачем это надо?” будет совершенно не актуален.

Ниже я рассмотрю настройку рабочего места PHP програмиста, для работы с автоматическим контролёром стиля кодирования PHP Code Sniffer.

Подробнее


9.04.2012

Работа с mod rewrite через htaccess на хостинге с Parallels Automation

Если для своих сайтов вы используете mod rewrite в .htaccess и ваш сайт занесло на хостинг под управлением Parallels Automation, то можете столкнуться с тем, что mod rewrite не отрабатывает, а отдаётся 404 ошибка.

Чтобы это поправить надо пройти по длинному пути:

Хостинг - Обзор домена - Выбрать свой домен - Конфигурация веб-сервиса - Сообщений об ошибках - Выбрать 404 ошибку - Изменить - Установить режим “Отключен”.

Уф. Mod rewrite заработал.


30.03.2012

Исправление работы плагина jQuery.hotkeys с полем типа password

Есть хороший плагин jQuery.hotkeys, который позволяет реализовать работу с горячими клавишами на web-страницах. В процессе работы с ним выявилась особенность, что при печати текста в поле с типом password продолжают срабатывать горячие клавиши, хотя в других полях они не работают (и это правильно).

Чтобы исправить эту неприятность необходимо немного поправить код плагина:

Было

if ( this !== event.target && (/textarea|select/i.test(event.target.nodeName) 
|| event.target.type === "text")) {
return;
}

Стало

if ( this !== event.target && (/textarea|select/i.test(event.target.nodeName) 
|| event.target.type === "text"
|| event.target.type === "password")) {
return;
}

В код добавлена строка, которая проверяет соответствие инпута типу password. После этого исправления плагин будет работать, как от него это и ожидается.

Хочу обратить внимание, что если в своём приложении вы используете типы HTML5, такие как email, search, то для них то же надо прописать условия в коде плагина.

P.S. Обратите внимание, что есть ещё одна версия плагина jQuery.hotkeys, которая то же содержит эту ошибку, но кроме этого она не совместима с другим плагином jQuery.Maskedinput


По теме: #plugin #jquery #hotkeys #javascript .
10.03.2012

Отладка PHP без головной боли: настройка связки Denwer + Xdebug + PHPStorm

Если вам надоело для отладки своих скриптов использовать вариации echo(), var_dump() и print_r(), то обратитесь к мощному отладчику Xdebug, который значительно упростит вам работу. Ниже я расскажу, как настроить его под Windows для популярного набора для web-разработки Denwer и использовать в IDE PHPStorm.

Вначале надо посмотреть, что сообщит phpinfo() о версии php, которую вы используете. Кроме версии нужно обратить внимание и на PHP Extension Build. В зависимости от их значений нужно выбрать какую версию Xdebug качать с официального сайта.

Для параметров, как на скриншоте выше, со страницы Xdebug надо скачать релиз  PHP 5.3 VC6 TS (32 bit).

Подробнее


1.03.2012

Установка полного русского словаря для проверки орфографии в PHPStorm

Официальный русский словарь доступен на сайте JetBrains, но к сожалению, он далеко не полон и многих русских слов не знает. На наше счастье, dikmax подготовил большой русский словарь, который подходит для всех продуктов JetBrains (IDEA, RubyMine, WebStorm, PyCharm, PhpStorm, MPS, и т.д.)

Скачать словарь можно здесь, а установить его достаточно просто.

Скаченный архив распаковываем, файл russian.dic кладём в какую-нибудь папку поближе к JetBrains, например “C:\Program Files\JetBrains\dictionary\russian.dic”

Открываем в PhpStorm меню File -> Settings -> Spelling,  вкладка  Dictionaries.

Нажимаем кнопку «Add» и выбираем папку, в которую сохранили russian.dic

Кроме этого проверьте, что в настройках проверки орфографии у вас установлен тип сообщения об ошибке “As info”. Там же можно отключить проверку орфографии, например, в коде, а оставить только в комментариях.

После этого слова, которые словарь считает неправильными, будут подсвечиваться, будет доступно контекстное меню, в котором можно будет или выбрать правильное слово из предлагаемого списка, либо внести слово в словарь.


По теме: #phpstorm #dictionary #russian #soft .
19.02.2012

Как в PHPStorm после коммита в репозитарий автоматически заливать изменившиеся файлы на сервер

Для того, чтобы настроить в JetBrains PhpStorm заливку файлов на сервер, надо сделать File - Settings… - Deployment. В появившемся окне необходимо настроить доступ к серверу. Если серверов несколько, то можно их добавлять в список. Для каждого сервера доступна вкладка Connection, где настраивается тип доступа, путь к серверу и логины с паролями. Вкладка Mappings позволяет связать различные части вашей файловой системы с разными папками на сервере. Excluded path позволяет прописать какие папки не нужно трогать при деплое.

После этой настройки можно пользоваться опцией Tools - Deployment, через которую можно заливать файлы на сервер, сливать с сервера, синхронизировать и т.п.

Если вы используете в своей работе репозиторий и у вас возникает необходимость после коммита изменений в него тут же залить изменившиеся файлы на сервер, то в окне коммита есть для этого специальная опция “After commit”. Если в ней из выпадающего списка выбрать нужный сервер, то файлы, участвующие в коммите, автоматом заливаются на сервер.

Хочу предупредить, что нужно быть осторожным с этой возможностью:

1) Неудачный коммит может поломать программу, поэтому сразу лить его на боевой сервер - чревато.
2) Если вы работаете в команде, то будете на сервере перетирать файлы с изменениями друг друга.


По теме: #svn #phpstorm #ftp .
4.02.2012

Что делать, если PHPStorm 3.0 перестал работать с svn

Если вы обновили свой PHPStorm до версии 3.0, то у вас может обнаружится ошибка, когда PHPStorm не может работать с репозиторием svn по ssl протоколу, выдавая ошибку:

 svn: Received fatal alert: bad_record_mac
svn: OPTIONS request failed on 'ссылка на репозиторий'

Самое простое решение, обновиться до версии 3.0.1, в которой эту ошибку исправили. Но если по какой-то причине нет возможности обновления, то решить эту проблему можно другим способом - заменить содержимое “\JetBrains\PhpStorm 3.0\plugins\svn4ideaOld” на содержимое этой же папки, но из ранней версии программы.


По теме: #soft #phpstorm #svn .
19.01.2012

Решение проблемы с загрузкой Google Reader в Firefox 9

Столкнулся с тем, что Google Reader перестал работать в Firefox 9. Левая колонка грузится, а правая колонка с контентом - нет. При этом в других браузера всё работает и на другом компьютере с Firefox 9, то же работает.

Решил посмотреть через Firebug (он был установлен в моём Firefox, но отключён для ридера), может быть есть какие-то ошибки на странице Google Reader, которые могут пролить свет на проблему. В отладке действительно увидел сообщение о javascript ошибке, но происходила она не в скриптах Google, а в скрипте spy.js самого Firebug’a.

Тогда я решил обратить внимание на Firebug и увидел, что есть более свежая его версия (у меня стояла 1.8.4). Поставил Firebug 1.9.0 - и всё заработало.

Отсюда выводы: Firebug может ломать страницы, да же если он отключен для них. Оперативно обновляйтесь.


18.01.2012

FirePHP под Nginx: исправление ошибки 502 Bad Gateway

Столкнулся с такой проблемой: под Nginx запущен PHP в режиме Fast-CGI с помощью PHP-FPM. При попытке отладки приложения с помощью FirePHP я получил ошибку 502 Bad Gateway. В логах ошибок Nginx видно следующее:

2012/01/18 09:17:35 [error] 14657#0: *7980 upstream sent too big header while reading response header from upstream

Выглядит так, как будто в Nginx стоит ограничение на размер заголовка ответа. Чтобы это исправить, надо поправить конфиг Nginx, добавив две директивы для  Fast-CGI  в кофиг Nginx (например, /etc/nginx/fastcgi-params):

fastcgi_buffer_size 16k; 
fastcgi_buffers 4 16k;