Обзор PHPStorm

PhpStorm splash screen.jpg Профессия обязывает каждый день писать на php и поэтому первый важнейший инструмент после головы для меня является среда разработки (IDE). До сих пор я сидел на Zend 5.5, но столкнувшись с PhpStorm 1.0 от чехов с JetBrains сразу перешёл на него.

Понятно что редактор - дело субъективное и многое зависит от проектов с которыми вы работаете. Zend 5.5 мне нравился удовлетворительной скоростью и простым доступом к ftp. Я знал что там ещё были всякие дебаги, интеграция с SVN и sql-серверами но практически их не смог применить. Я пробовал Netbeans, Aptana и PDT, Zend 6 но во все они медленные особенно при индексации файлов и монстроидальный интерфейс с кучами кнопочек. Поэтому и начну сразу с недостатков.

PhpStorm welcome screen.png PhpStorm settings plugins screen.png

Недостатки

  • Невозможно сразу начать работать при медленных (>5 сек) сетевых соединениях (VPN) и обращению к файловой системе
  • Синхронизация файлов при deployment'е удалённого проекта не совмещает различия, а просто перезаписывает удалённые файлы, что делает невозможным изменение файлов двумя пользователями. Есть возможность ручной проверки одиночного файла, но сверять каждый раз самому неудобно.
  • Подвисание процесса при долгой индексации дополнительных папок к проекту и отсутсвие полоски прогресса этого процесса. При обычной индексации всё-таки прогресс показывается и может уходить на задний план.
  • Редактирования по FTP нету. Можно файлы читать, но для полноценного редактирования надо делать локальную копию проекта с настройкой синхронизации и deployment'а, а при переходе с одного IDE на другой и большом количестве проектов ждать скачивание каждого - жуть
  • Автосохранение файлов сразу во время редактирования, хотя и компенсируется "локальной версией изменений файла", однако многим может быть непривычно при переходе из других IDE.
  • Глупое автодополнение тэгов в html режиме (вечно мне добавляет comment тэг!). В редактировании php кода методы не подсказываются автоматически а только с нажатием Ctrl+Space, видимо из-за погони за скоростью.
  • Импорт remote-проекта без возможности фильтра ненужных папок. Точней этот фильтр появляется в настройках после того как вы скачаете весь проект. Очень удручающая ситуация когда есть папка с кучей картинок которые не нужны. Конечно есть фильтр типов файлов с масками, но это не совсем то
  • Пугающие настройки. Их просто много. Разве что они понятней чем в Эклипсе - сразу разбиение на настройки проекта и настройки IDE.
  • Непривычность клавишных связок (hotkey binding) - например у меня несколько раз возникала ситуация когда я двигался назад по истории изменений (Undo), а потом хотел вернуться нажимая Ctrl+Y и вместо этого терял Redo-историю потому что Ctrl-Y на самом деле удаляет строку
  • Мало плагинов. Из серверов управления задачами только Jira и собственній youtrack. То же касается систем версионирования (Есть CVS, SVN, git, perforce). В основном они пишутся для общего редактора IntelliJ idea, а php-просто как частный случай

Как у всех..

Редактор визуально очень похож на все существующие IDE - динамические панели как у eclipse но с меньшим визуальным шумом иконок. Тут собственно меню, панель дерева файлов, панель структуры класса, внизу дополнительные панельки для todo, версионирования, иерархий и удалённого редактирования (появляются по мере необходимости).

Очевидно что редактор не компилятор и не настолько умён что-бы понимать переменные при использовании extract() или при переменных с динамическими именами через $$var — анализ этого на лету просто нереально ожидать и соответсвенно в проектах такие дела подсвечиваются как ошибки деклараций переменных. То же касается закриптованных частей через Ioncube или Zend guard.

Про автодополнение с Ctrl+Space я уже говорил, так же тут и Ctrl+click работает для перехода к собственно декларации метода или класса. И Ctrl+D дублирует строку. Тут есть и закладки строчек через Ctrl+Shift+цифра. Есть тут и поддержка PHPdoc и @todo синтаксиса.

Основные фишки

Главные прелести редактора - хорошая скорость в обычном редактировании текста - ничего не прыгает, не задумывается на три секунды покуда я печатаю.. Вобщем есть "основа" которая дополнена мелочами в которых и кроется секрет хорошего блюда:
  • Поиск классов Ctrl+N и файлов Ctrl+Shift+N в том числе и со звёздочками (wildcard). Очень полезно и быстро, потому что файлы как правило разбросаны в разных ветках дерева и консоль всегда оперативна
  • Скролл при поиске или при навигации по своим закладкам строк через Ctrl + цифра. Очень помогает не потеряться и интуитивно понимаешь в какую сторону файла ты прыгаешь.
  • Рефакторинг имён файлов, классов и методов во всём проекте и/или поиск их использования. Потому что часто просто боишься поменять старое название на более информативное потому что не помнишь где это используется, а искать как фразу через Ctrl+F запаришься
  • Подключение внешних папок. Скажем если у вас 10 проектов в которых используется повторяемый фреймворк (PEAR к примеру) или закриптованный код, то можно подключить внешнюю папку чтобы IDE понимала пространство имён
  • Версионирование. Как встроенная история изменений, так и отлично встраиваемый SVN со всякими диффами, определённо лучше TortoiseSVN.
Приятно удивили и некоторые мелочи
  • Поддержка smarty шаблонизатора. С одной стороны для меня это позитив - я его использую. С другой стороны так же обойдены стороной остальные фреймворки для которых тоже неплохо бы иметь плагины что-ли для быстрого запуска комманд генерации кода и тп.
  • Иерархия вызовов метода и вызываемых методов в hierarchy блоке
  • Статус и ручная чистка памяти в статус-баре - сразу говорит о заботе
  • Локальная история изменений файла
  • Перетаскивание строки или целого выделенного блока с сохранением табуляции через Ctrl+Shift+Up/Down вместо того что-бы делать Copy-Delete-Paste с ручным форматированием
  • Вернуться к последнему месту редактирования Сtrl+Shift+Backspace

Кроме этого в редакторе есть простор для изучения до которого я ещё не дорос:

  1. XDebug для профилирования скриптов.. Для удалённого проекта надо что-бы расширение на сервере было установлено, поэтому всюду использовать нельзя.
  2. PHPUnit для автоматического тестирования кода
  3. SASS для более гибкого написания css

Софт для TV-тюнера

Когда я был помоложе, я почемуто думал что раз телевизор так схож с монитором, то показывать телевидение на компьютере должно быть пустяком. Даже когда в университете объясняли о передаче телесигнала, частотной модуляции, пределах возможностей передачи данных у медного кабеля, я всё больше подтверждался что компьютер посложней чем телевизор, следовательно последний легко интегрируется с компом

Наконец практическое устройство попала и в мой огород - ввиду отсутсвия телевизора но присутсвия подключения к телевидению (такой у STV маркетинг с интернетом), решил чего уж добру пропадать - куплю TV-тюнер, благо они относительно дешёвые

500x_wmc2.jpg

Глаза загорелись и я без предварительной проверки по интернету, ухватился за некий дигитальный тюнер от Kworld. Продавец K-arvutid тем более утверждал что он и аналоговые поддерживает и вообще чудо устройство. После хитрых манипуляция с созданием iso-образа установочного диска на ноуте и перекидыванию через флешку (от CD/DVD я отказался уже года два как), установки софта "Hypermedia 3.5", оказалось что я взял только дигитальный USB-тюнер. Пришлось идти менять на более старую и аналоговую PCI-версию

Впрочем поставив PCI-устройство, софт оказался по прежнему глючным и практически Hypermedia ничего не нашло и никакого прогресса не показывало. Как выход я стал пробовать тн. TV-tuner software:

Название Описание Оценка
Windows Media Center Встроенный в Windows Vista Ultimate вполне симпатичен, понимает инфракрасный пульт поставляемый с тюнером и вообще всячески оптимизирован для полного экрана. Увы, правильно найденные 80 каналов хоть и с хорошим качеством, но большинство без звука 4
Snapstream Beyond TV 4,8 Даже триальная версия нашла так же с дублями каналы, но со звуком. В минус - каналы оказались в хаотичном порядке без возможности переименовать и с очень неудобным интерфейсом (переключение каналов в частности)
4
ArcSoft TotalMedia Поиск каналов происходит в реальном режиме с картинкой, каналы можно добавлять в избранное. Качество картинки хорошее, но опять же - многие каналы без звука 3
SageTV Упал с надписями "Java Missing. Could not get information on current JVM. Please install Java Runtime Environment 1.4", хотя у меня уже JRE 1.6.3 стоит. После переустановки Java, заработала но не смогла ничего найти
2
SesamTV media center Внешне показался вполне нормальным, но на 100% проценте сканирования как это часто случается, вдруг взял и упал. Три попытки повторить эксперимент привёл к тому же результату 2
DScaler 4.1 Внешне достаточно много настроек, но ограниченное карточка и тюнер не автоматически не распознались (в списке было порядка 20 и 50 соответсвенно) 2
Got All Media Позиционирующися как и медиа центр, программа с кучей настроек. Состоит из конфигурации и собственно программы. В конфигурации каналы нашлись отлично, звук тоже есть. Но при сохранении каналов, за которые он посчитал даже лишние 200 сигналов, подвис и не вернулся 3
MediaPortal Так и не дошёл до настройки каналов - поставила DirectX, захотела поставить ещё и SQL server или MySQL, не смогла соединиться, опять отдельные программы настроек и "пустая" полноэкранная программка как Media Center 2
GB-PVR Чуть странное название. Поддерживались только порядка 30-50 карточек, среди которых моей небыло. 2
MeediOS Началось качание .NET 3.5 SP1, на этом оно и остановилось
1
CT-PVR Поставилась, и сразу полезла в полноэкранный режим, но нашла 10 пустых каналов, а управление сделанное через контекстное меню (sic!) никак не помогло в настройке. Позиционируется с фичами записи телевещания
2

Кроме WMC практически все предлагали ручные настройки PAL/NTSC/SECAM, впрочем вместе с настройками по стране.

Теперь пара определений которые часто используются на коробках этих самых продаваемых тюнеров.

 

Placeshifting - подразумевается передача принимаемого тюнером с антенны сигнала и передачи его по сети, интернету на удалённый компьютер

Timeshifting - телевизионная передача записывается на жёсткий диск, а по приходу домой, хозяин может просмотреть передачу когда ему удобно

Home automation - подразумеваются умные дома и квартиры, где устройства взаимодействуют друг с другом, в том числе и телевизор может поддаваться включениию/изменению со стороны других интерфейсов (Firewire / Bluetooth / IRDA / USB / WiFi)

После экспериментов всё-таки остался на Media Center. Он каким-то хитрым образом определяет кодирование каналов в зависимости от страны. Наиболее подходящими для Эстонии как оказалось стали не Россия и Германия, а Израиль

По теме:

Управление СУБД

С СУБД сталкивается практически каждый разработчик, начиная как правило с PhpMyAdmin, PhpPgAdmin, простейших серверных скриптов, постепенно переходя на более тяжёлое но удобное ПО, которое я тут постараюсь описать.

Maestro group

SQL Maestro это компания, производящая административные программы баз данных. Практическая реализация очень схожа с SQLyog, т.е. так же позволяет легко управлять таблицами, данными, базами, схемами, функциями, тригеррами и тп. В плюс - возможность составление диаграммы структур. В комплекте есть поддержка MySQL, Postgre, Oracle, MS SQL server, Firebird, Max DB. В последних версиях есть HTTP-туннелирование. В минусы - порой выпадают ошибки нехватки памяти.

SQL yog

SQLyog 6 Enterprise стоит 67$, что для фирмы, которая хочет экономить время своих работников, цена приемлимая. Интерфейс построен как и в pgadmin - слева список таблиц с подразделами (поля, индексы, триггеры), справа - данные таблицы и sql запрос. Сверху - меню с удобными диалогами создания FOREIGN KEY, управлением привилегиями, структурой таблиц, возможностями импорта/экспорта и т.п.

См. также

Синхронизация Google Calendar c MS Outlook

Синхронизируем Outlook и Google calendar. Самый недавно вышедший и простой способ - Google Calendar Sync.

Iframe

Для начала самый простой и не настоящий способ. Идём в Outlook под Calendar слайд, и под "My Calendars" жмём правой кнопкой по нужному календарю, ставим на нём Properties->Home Page->Address равным http://www.google.com/calendar/render. Браво, теперь у вас iframe вместо настоящего календарика.

Plug-in RemoteCalendars

  1. Закрываем Outlook
  2. Устанавливаем NET 2.0
  3. Устанавливаем RemoteCalendars (включая файлы O2003PIA.EXE, O2003PIA.MSI, vstor.exe, RemoteCalendarsVSTOSetup.msi)
  4. Открываем Outlook, ставим во вдруг появившемся окошке настроек временную зону и Auto Update.
  5. Видим такую панельку
  6. Добавляем новый календарь. Для этого берём из Google Calendar настроек ссылку  . После этого - вводим логин пароль, и вуаля - двусторонняя синхронизация есть.

Читайте также:

CVS и SVN

CVS и SVN (Subversion) это программы хранения истории изменения проекта в файловой системе разными пользователями в результате одновременной совместной работы. Существует клиентская и серверная часть.

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

SVN это наследник CVS, впрочем если вы испытываете большую симпатию к Microsoft, вы можете использовать Visual SourceSafe. Из себя это представляет сетевую программу, где центральный сервер хранит все вносимые изменения, а клиенты уже производят операции над этими изменениями. Поэтому если вы работаете в фирме, и сервер уже имеется, то вам достаточно установить клиентскую программу.