Чехия 2014












Ближайшие пару месяцев я проведу в Праге. Я приехал сюда несколько дней назад по делам и хочу зафиксировать свои первые впечатления. Так как поездка деловая, то в рабочее время я нахожусь в офисе и только оставшуюся часть рабочих дней и выходные могу посвятить туристическим делам.
Взялся за перевод на русский язык книги “PHP Internals Book”. Книга посвящена внутренней логике работы интерпретатора PHP и в первую очередь будет интересна разработчикам на языке C, которые хотят научиться писать расширения для PHP, но и PHP-разработчики, думаю, найдут для себя немало полезной информации.
Перевод является неофициальным (хотя и сделан с разрешения авторов), так что все камни о качестве перевода кидать в меня.
Почитать книгу онлайн можно тут: http://romka.gitbooks.io/php-internals-book-ru/, скачать в формате для читалок тут: https://www.gitbook.io/book/romka/php-internals-book-ru, помочь с переводом тут: https://github.com/romka/phpinternalsbook-ru.
На данный момент переведена только одна глава, но я продолжаю работу.
Важно учитывать, что структуры данных, описанные в книге, актуальны для современных версий PHP (на данный момент это PHP 5.5). Если один из следующих релизов будет слит с веткой phpng, то часть структур и алгоритмов, описанных в текущей версии книги, устареют.
Цитата из книги Стива Макконелла “Совершенный код”:
Разница между философией «удобства» и философией «интеллектуальной управляемости» сводится к различию между ориентацией на написание программы и ориентацией на ее чтение. Максимизация области видимости может облегчить написание программы, но программу, в которой каждый метод может вызвать любую переменную в любой момент времени, сложнее понять, чем код, основанный на грамотно организованных методах. Сделав данные глобальными, вы не сможете ограничиться пониманием работы одного метода: вы должны будете понимать работу всех других методов, которые вместе с ним используют те же глобальные данные. Подобные программы сложно читать, сложно отлаживать и сложно изменять.
В конце марта - начале апреля 2014 года ездил на Мальту. Решил совместить приятное с полезным: отдохнуть у моря и подтянуть свой английский язык. Март-апрель на Мальте это еще низкий сезон (высокий начинается в мае). С одной стороны это хорошо: цены на жильё, обучение и аренду авто в это время сильно ниже летних. С другой — не очень, температура воздуха не превышает 18 градусов, находиться на улице в такую погоду очень комфортно даже в самый сонцепёк, но вот купаться в море еще рановато.
Полный фотоотчет о поездке можно посмотреть в фотогалерее.
Некоторое время назад я разработал ряд плагинов для javascript-видеопроигрывателя MedialElement, сейчас выложил их в открытый доступ. Эти плагины расширяют функциональность плейера таким образом, что он может быть использован для просмотра видеороликов, обучающих иностранным языкам.
Tetcolor — это ремейк классического Tetris color для OS Android (и в ближайшее время для iOS, так как игра построена на кроссплатформенном движке Gideros). В игре реализовано несколько режимов, локальные и глобальные таблицы рекордов и удобное управление (пара слов об этом ниже).
Сайт игры с подробным описанием правил и таблицами рекордов: http://tetcolor.net/. Прямая ссылка на Google Play: https://play.google.com/store/apps/details?id=eu.romka.tetcolor.
Это мой первый опыт разработки игры по мобильные платформы в целом и с использованием Gideros Mobile в частности, по этому начать решил с максимально простого проекта, чтобы параллельно с разработкой освоить базовые API движка. В отличии от десятка подобных игр уже опубликованных в Google Play в моей версии игры управление основано не на кнопках (в которые сложно попасть не глядя), а на жестах, которые можно использовать в любой части экрана.
Гидерос оказался достаточно функциональным движком (заточенным только по 2D-приложения!), практически все мои потребности были покрыты или стандартным его функционалом, или готовыми сторонними библиотеками. Из недостатков могу пока назвать только отсутствие возможности использовать native UI компоненты, по этому мне не удалось реализовать полноценный сервис рекордов с регистрацией пользователей, но разработчики, судя по roadmap, активно над этим работают.
Обновление от 01.12.2013 Теперь игра доступна и в Apple AppStore.
Это третья (последняя) часть статьи, посвященной разработке простого приложения при помощи Zend Framework 2. В первой статье я рассмотрел структуру ZendSkeletonApplication, во второй части привел пример разработки простого модуля. Эта часть посвящена работе с пользователями.
Код написанный в предыдущих частях, позволяет создавать, редактировать и удалять блогпосты всем посетителям сайта. Такой подход неприемлем для любого рабочего сайта, по этому сейчас настало время решить вопросы регистрации/авторизации и распределения прав доступа к различным возможностям приложения.
Для Zend фреймворка написано достаточно много модулей, решающих стандартные задачи, найти их можно на специальном сайте: http://modules.zendframework.com/. Вместо разработки своих велосипедов для решения стандартных задач я считаю более правильным использовать/адаптировать под себя готовые решения (по крайней мере готовые решения нужно изучить прежде чем браться за разработку велосипеда).
Среди множества разработчиков модулей выделяется команда ZF Commons, ребятами из этой команды разработан ряд очень полезных модулей, которые мы будем использовать в этом проекте: https://github.com/ZF-Commons. Рассмотрим некоторые из них, которые необходимы нам на данном этапе.
Это вторая из трех частей статьи, посвященной разработке простого приложения при помощи Zend Framework 2. В первой статье я рассмотрел структуру ZendSkeletonApplication, а в этой части приведу пример разработки простого модуля. Третья часть будет посвящена работе с пользователями.
Первым делом хочу отметить, что установка стороннего модуля в Zend Framework обычно состоит из примерно таких четырех шагов:
composer.json
, чтобы сообщить Композеру о новом модуле,php composer.phar update
, чтобы Композер загрузил новый модуль и при необходимости перегенерировал автолоад файлы,config/application.config.php
,config
модуля) в config/autoload
и делаем в нем необходимые правки.Также, хочу подчеркнуть, что для всех модулей, перечисленных далее я задаю минимально необходимые для их работы настройки, более подробно о настройках и возможностях каждого из модулей можно узнать на их страницах документации.
Давайте начнем с установки простого, но полезного модуля Zend Developer Tools.