PhpStorm. Заменяем все array() на []
11 февраля 2015 PHP 12397 просмотров
Захотел я заменить в одном проекте синтаксис создания массивов, со старого array() на вариант с квадратными скобками []. Естественно, делать это нужно как-то автоматически. Легко заменить пустые массивы, но как заменить вложенные массивы, мультилайновые массивы. На помощь приходит Code Inspector от PhpStorm.
Демоны на PHP
18 декабря 2014 PHP 24869 просмотров
В общих словах демон - это служба, запускаемая один раз и работающая в фоновом режиме без прямого общения с пользователем. Для чего может пригодиться? Нам необходимо непрерывно отслеживать папку на наличие изменений в ней и выполнять определенные команды. Наш демон должен запускаться из консоли, ничего в нее не выводить, ошибки логировать.
Вопросы для собеседования PHP(Intermediate?) программиста
5 ноября 2014 PHP 32459 просмотров
Вот уже почти месяц как я работаю на новом месте во Вьетнаме. Помимо, собственно, программирования я занимаюсь интервьюированием сотрудников в нашу компанию. За это время мы с коллегой проверили уже порядка десяти собеседований. Естественно, у нас собрался список вопросов, которые мы задаем кандидатам. У нас нет разграничений на вопросы для Senior Developer, для Intermediate и т.д. Мы просто ищем человека, с которым мы хотели бы работать в команде. Мне хотелось бы поделиться списком этих вопросов, не делая их каким-то стандартом для собеседований.
Принцип открытости / закрытости (топик-ссылка)
2 сентября 2014 PHP 11342 просмотра
Должен признаться, когда впервые увидел академическое определение принципа открытости/закрытости, его смысл был для меня удивительно ясен. Я отбросил из определения весь технический жаргон, и принцип читался как заклинание, которое мы слышали раньше много раз: «Не ломай ядро».

Ну, правда, здесь существует некоторая двусмысленность высказывания, так как есть по крайней мере два общих подхода к поддержанию «ядра» в полной сохранности, позволяющие аккуратно расширять его функциональные возможности. Первый подход (вот почему я использовал намеренно термин «расширение») — Наследование. Наследование является, пожалуй, самым переоцененным приемом для повторной реализации. Такой процесс легко осуществим, но здесь существует определенный риск разрушить хрупкую иерархию моделей. Второй подход называется Композиция. Подход не так прост, как наследование, но это тоже довольно аккуратный способ расширить программный модуль, не меняя его.
Релиз PHP 5.6.0
28 августа 2014 PHP 15950 просмотров
Сегодня вышел PHP 5.6.0. Ура! Сейчас разработчики работают над PHP 7 и PHPNG, пока мы осваиваем новые возможности новой версии. Пока серверы с моими проектами обновлять не буду, но новые проекты несомненно попробую написать в PHP 5.6.0. Дальше я опишу новые возможности топовой версии PHP.
Senior PHP Developer. Упрощенный T9 алгоритм
28 августа 2014 PHP 13549 просмотров
Представьте, что вы сейчас проходите собеседование на должность PHP Senior Developer. Очень вероятно, что вас могут попросить реализовать какой-то упрощенный алгоритм, вложившись в определенное время. В нашем случае - это 45 минут. А алгоритмом будет реализация упрощенного алгоритма T9. В реальных приложениях T9 использует дерево-словарь, но алгоритм наш проще, он должен просто вернуть всевозможные слова, основываясь на данных, введенных пользователем.
error.log рассылка
12 августа 2014 PHP 13026 просмотров
Не все ошибки может отследить разработчик, многие появляются в процессе использования ПО, в зависимости от окружения и т.д. Для меня очень важно отслеживать такие возможные баги, особенно на этапе запуска проекта. Я сильно не ухищрялся, просто периодически просматривал содержимое error.log файлов. Но проектов, которые приходится поддерживать, становится всё больше, на многих из них развернуто по несколько серверов. В итоге для меня эта операция стала довольно трудоемкой. Естественно, это дело нужно автоматизировать.
Постраничная выборка для динамических данных
22 июля 2014 PHP 13800 просмотров
Я уже давно внес в свой стиль программирования негласное правило о том, что все перечисления, будь это таблицы или списки, картинки или комментарии, должны загружаться порциями и поддерживать постраничную загрузку. Дело в том, что потом добавить этот функционал бывает гораздо сложнее, нежели чем сделать это сразу. Особенно на этапе разработки этим многие пренебрегают. Основным способом сделать постраничную загрузку является имплементация limit-offset подхода. Сейчас мы будем говорить о данных, возвращаемых из базы, соответственно, примеры я тоже буду строить отталкиваясь от этого. Но limit-offset, естественно, применим и для других случаев. Но что будет, если у нас высока вероятность появления новых данных? Возьмем для примера новости. Например, у нас на данный момент 20 новостей, а мы выводим по 10. Вывели первые 10 новостей, но еще до того как мы перешли к следующим десяти новостям, у нас появилась еще одна новость. Каждая новая запись будет смещать новости, и в результатах 2-й страницы мы увидим дубликат последней записи из первой выборки.
Установка Composer в OpenServer
26 мая 2014 PHP 31935 просмотров
Composer - это инструмент для сборки проектов и управления зависимостями в PHP. Представьте, когда ваш проект написан на Zend Framework, использует Doctrine в качестве ORM, работает с сокетами при помощи Ratchet и т.д. Скорее всего, вам будет непросто создать один загрузчик, без конфликтов, чтобы всегда был доступ к какому-то классу. Composer же собирает все эти зависимости по заданным условиям. Всё, что вам нужно - это правильно описать файл-конфигуратор composer.json. Но статья пойдет не совсем об этом, так как хорошими людьми написано уже достаточное количество хорошего материала на эту тему.
Упрощаем регистрацию с Gravatar
16 апреля 2014 PHP 12245 просмотров
Всем уже давно известен сервис Gravatar, который упрощает процесс работы с аватарами. Как для пользователей, так и для сайтов. Можно не загружать каждый раз своё фото на новый сайт, сайт может получить ваше фото из Gravatar по вашему email. Это удобно пользователю, потому что можно поменять своё изображение в одном месте и оно сменится везде. Удобно и сайтам, нет необходимости имплементировать процесс загрузки файлов. Конечно, в какой-то степени это затрагивает вопрос о безопасности, но у вас всегда есть право не использовать то или иное решение. Итак, об аватарках, думаю, знают многие. Но Gravatar также позволяет получить по email базовую информацию о пользователе.
GitHub и самый продуктивный день
3 апреля 2014 PHP 9924 просмотра
Всем нравятся красивые графики. Поэтому иногда я люблю заходить на GitHub в свои репозитории и смотреть их графики по количеству коммитов, количеству новых файлов и т.д. А тут мне захотелось узнать в какой день я делаю больше всего коммитов. Скорее всего, это и можно назвать самым продуктивным днем. Итак, напишем скрипт, который поможет это сделать.
PHP: Правильный путь
2 февраля 2014 PHP 16545 просмотров
На днях я наткнулся на замечательную карманную книгу для PHP разработчиков "PHP: The Right Way". Скорее, она будет более полезна новичкам. Чем именно? По интернету разбросано огромное количество материла по PHP, но многое уже устарело или не приводит к написанию качественного кода. В этой книге присутствуют основные актуальные сведения с ссылками на проверенные ресурсы. На самом деле, сначала я хотел перевести ее, форкнуть репозиторий, благо лицензия это позволяет. Но оказалось, что перевод уже есть. Нет только русской книги в форматах для электронных книг, но так как используется Markdown в русском форке, то это не составит труда.
Импорт фотографий к себе на сайт из Facebook, Vkontakte и Instagram.
6 июля 2013 PHP 29492 просмотра
Сейчас рассмотрим, как импортировать фотографии из Facebook, Vkontakte и Instagram к себе на сайт, красиво и охуенно, используя API этих сервисов. Представленный код написан для Zend Framework 1.* приложения, но вы можете его использовать где угодно с небольшими изменениями. Посмотреть процесс в действии вы можете на Tuffle.com (на странице создания воспоминания).
Markdown разметка
12 ноября 2012 PHP 11905 просмотров
Сейчас существует очень много "облегченных" языков разметки: BBCode, Wiki, Textile. Но самым "облегченным", на мой взгляд, языком является Markdown. За последнее время он стал очень популярным в связи с использованием на таких гигантах как GitHub и Stackoverflow.
Тестирование web-приложений с использованием Selenium и PHPUnit
10 июля 2012 PHP 17728 просмотров
Кратко, Selenium - это инструмент для тестирования web-приложений. Он позволяет тестировать сайт “от лица пользователя” на уровне операций браузера, таких как клики, ожидание загрузки, поиск элементов на странице. Selenium устанавливается как http-сервер, написанный на java, который умеет управлять браузером и делать в нем различные действия.
Лицензия PhpStorm для open source проекта
6 апреля 2012 PHP 10078 просмотров
Я пользуюсь PhpStorm и люблю этот продукт. Но всё время пользовался взломанной версией. На их сайте можно получить лицензию для open source проекта, но для этого нужно иметь страницу проекта. В этой статье я расскажу как получить такую лицензию на 1 год имея лишь активный репозиторий на GitHub и Demo страницу.
Командная строка в PhpStorm
23 сентября 2011 PHP 16762 просмотра
PhpStorm — IDE от хорошо зарекомендовавшей себя компании по производству ПО для разработчиков. Цель любой IDE — создать комфортные условия для быстрой и качественной разработки. И в создании этих условий вам может помочь Command Line Tool, позволяющий делать быстро шаблонные действия. К сожалению, сейчас доступны команды только для Zend Framework и Symfony. В этой статье я помогу вам настроить командную строку на свой лад (Custom Framework).
Web-сервис на Zend_Soap
13 сентября 2011 PHP 16374 просмотра
Web-сервис — компонент, предоставляющий Internet-клиентам набор функций API или web-методов. Основная задача web-сервисов — обеспечение межпрограммного взаимодействия. В отличие от традиционного web-приложения, у web-сервиса нет пользовательского интерфейса (GUI). Вместо этого у него есть программный интерфейс, то есть web-сервис предоставляет функции (web-методы), которые могут быть вызваны удаленно. Web-сервис не предназначен для обслуживания конечных пользователей. Его задача — предоставление услуг другим приложениям, будь то web-приложения, приложения с графическим пользовательским интерфейсом или консольные приложения.