Аспектно-ориентированное программирование в PHP

Обычно, чтобы было понятнее, что такое аспектно-ориентированное программирование, приводят пример с логированием. Допустим нам нужно веси лог удалений. Причем, удалений всего и вся. Самый простой способ  это добавить вызов логирующего метода в тех местах где происходит удаление сущности, например, в методе deleteUser(). Разумеется логирование придется добавить во все подобные методы всех сущностей. Во первых это муторно, во вторых нарушает четкое предназначение класса(метод не только удаляет, но еще и записывает лог). Еще один способ этот использование паттерна наблюдателя.

АОП придумана как раз таки для реализации такой сквозной функциональности. Как это реализовать в PHP с помощью фреймворка FLOW3 читайте в статье Aspect-Oriented Programming in PHP .

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

1
2
3
4
5
6
7
8
/**
* An aspect that is executed on all methods that start with "delete".
*
* @FLOW3\Before("method(.*->delete.*())")
*/

public function logginMethod() {
// Do some logging here.
}

Ну а фреймворк уже сам позаботится о вставке вашего метода в нужные места.

 
Технологии

  • OAuth 2.0 простым и понятным языком – не свежий, но полезный пост про OAuth 2.0
  • Помните отличную презентацию про HTML5? Можно забабахать презентацию не хуже с помощью LakTEK. На первый взгляд всё просто.
  • В хроме появился новый атрибут download у тега A. Атрибут указывает на то, что ресурс указанный в ссылке нужно предложить скачать, а не пытаться открыть его в браузере
  • HTML5 Audio — The State of Play -подробный разбор: методы, атрибуты, события…вплоть до настройки Апача, для корректной отдачи аудио-файлов.

PHP

  • XDebug исполнилось 10 лет! Этому событию посвящен новый релиз 2.2.0.
  • Если вы переживаете за качество вашего php-кода, обратите внимание на инструменты и представленные на сайте The PHP Quality Assurance Toolchain
  • Mobile_Detect – облегченный класс для обнаружения мобильных устройств.

Разное

Губит людей не пиво…

Как появился <blink> – забавная история от разработчика Lynx`a(ну Netscape). Парни пошли выпить пивка. Вели разговор про то, как lynx обидно уступает позиции графическим браузерам. И в шутку придумали тэг BLINK, благодаря которому бы текст немного преобразился. К утру эта фича уже была реализована(!). А потом пошло поехало и уже скоро на всех сайтах появились мигающие “Купи”, “Зайди”, “Посмотри”. Никто не хотел этого(честно, честно), но так получилось.

Технологии

Современная веб-разработка – офигитильное описание средств разработчика в браузере Chrome. Я хоть и сижу в инспекторе целыми днями, но про некоторые вещи не знал.

Файловая система внутри браузера, вернее библиотека для её эмуляции в браузерах, без поддержки HTML5 FileSyste API. Браузеры уже больше напоминают операционные системы, чем просто средства серфинга по интернет.

Отличная библиотека visibility.js, которая позволяет узнать активна ли сейча вкладка с вашим сайтом, или пользователь переключился на другой сайт. Оченб полезная фича, например, не надо постоянно долбать сервер и просить новые данные, если сейчас вкладка с сайтом не активна. Page Visibility API и Visibility.js – хорошая статья на эту тему.

Разное

Тетрис в фав-иконке. Прикольно! Управление через стрелоски на клавиатуре.

Гид покупателя. Как купить электронику или одежду за границей и получить почтой – интересная серия статей от Эльдара Муртазина про покупки за рубежом через интернет. После прочтения можно смело залазить в инет за покупками. 

Расценки в России: Сколько стоит заказать ТЗ на веб-сайт и сделать к нему прототип?! – очень прикольный вопрос. Интересно, как бы ответил Тема? 😉

Просто электронная почта

Электронная почта очень простой инструмент, который делает то, что от него требуется и делает это очень хорошо. Но есть и такие кому это не нравится. Есть возможность использования плагинов в почтовом клиенте, для  навешивания всякой дополнительной функциональности почты(списки todo, календарь…). Идея простая – в заголовке почтового сообщения можно посылать любую информацию какую вам здумается. Если у получателя не стоит плагин для разбора информации, то пользователь увидит обычное письмо. На перовом этапе изменения протокола этого будет достаточно, чтобы испробовать изменения.

Само собой нашлись и защитники электронной почты. Email is not broken: It’s a framework, not an application – руки прочь от  электронной почты. Она реализует асинхронный протокол обмена сообщениями. Если вам чего то не хватает в протоколе, реализуйте это в почтовом клиенте, но не трогайте спецификацию самой почты.

Вот кстати, как можно пользоваться почтой http://angel.co/fluent

Технологии

Разное

  • Evolution of a Web Developer: From PHP Newbie To Python Ninja – парень разложил по пунктикам свою программистскую деятельность. В рассказе указывает на поворотные вехи в своем развитии. Пишет, не без юмора, читать интересно.
  • Интересный проект, который представляет жизненный цикл вирусного видео. Просто нажите play: e.m-bed.de/d/ (открывать лучше в Хроме). Не бойтесь, что оно само все делает )))

Сервисы

  • QArt Coder – сделай красивый QRcode. Например, вот такой:

PHP сосет!

PHP Sucks, But It Doesn’t Matter – автор статьи пинает PHP за его не неуклюжесть, не понятность, не прозрачность и т.д. Но не смотря на все недостатки признает, что существует много очень популярных сервисов, которые написаны на PHP(вордпресс, фейсбук(на момент написания статьи),..). Все дело в людях, разрабатывающих эти сервисы, говорит автор, а не в PHP.

И еще одна мега статья про то, почему PHP-отстой. PHP: a fractal of bad design – очень(местами даже очень очень) подробно разбираются всесторонние аспекты языка:переменные, языковые конструкции, функции, работа с ошибками, модули… Чувак не пожалел сил и упорства, что бы расковырять множество косяков языка. Я считаю, что это статья обязательна к изучению для всех php-программистов. Хотя бы для того, что бы знать проблемные места в PHP.

Не то в в поддержку PHP, не то в его оправдание, статья PHP Sucks! But I Like It!, ответ на предыдущую статью.

Технологии

  • Writing Browser Extensions – Comparing Firefox, Chrome and Opera – анализ различий в разработке расширений для хрома, оперы и фаерфокса.
  • Thinking Async -отличная статья о том как совершать асинхронную загрузку JS-скрипта. Рассматривается  несколько способов,  в том числе и как это сделана в гугле, твитторе и фейсбуке.
  • Что может сделать  андроид-приложение, если у него нет никаких прав. Интересный эксперимент описан  в статье   ZERO-PERMISSION ANDROID APPLICATIONS. Безправное приложение смогло получить список файлов с SD-карты. В теории, даже если приложение сможет получить какую то информацию, оно не сможет передать эти данные в интернет, т.к. мы не дадим ему такого права. Но это лишь в теории, потому как приложению, в любом случае, разрешено открывать любую ссылку в браузере, а через GET можно передать много чего.
  • Программисты мельчают. Повсеместно использование различных фреймворков, готовый библиотек и модулей привело к снижению уроню программистов. Andy Firth в своей статье  The demise of the low level Programmer составил список(постоянно дополняемый) тек вещей, которые должен знать программист пишущий код на низком уровне. Много полезных ссылок.

Разное

Как вернуть радость от программирования

А давно ли вас затягивало в процесс программирование, да так, что бы вы забыли про время и еду? Наверное давненько. А почему? Вот и некто samzenpus задался вопросом, а как вернуть радость от программирования? Ответов дали много. Самые распространенные ответы: найти новую интересную работу и заняться своим проектом или поучаствовать в опенсорсном.

Технологии

Разное

 

Библиотечки на HTML5

Технологии

  • JS1K – Много демок на JS. Главная цель уместится в 1024 байта. Посмотрите в код )))
  • Backbone.js предоставляет чрезвычайно простые способы для создания модели и представления(MVC) для организации вашего кода логичным образом. Хотя тут нет контролера, что требует MVС-фреймворк. Контролер нужен когда есть взаимодействия клиента и сервера. Когда же нет такого взаимодействия, можно обойтись и без контролера. В Backbone.js реалезован паттерн наблюдателя, что позволяет измененять представления при любых изменениях в модели.
  • Envision.js – библиотека для построения графики и подобной визуализаций. Самом собой на HTML5
  • Rust -новый язык от Mozilla.Визуально похож на языки семейства С, хотя сильно отличается в плане семантики и синтаксиса.
Сервисы
  • Ping Pong Spider Mother – очень забавная игрушка написанная на HTML5
  • Picozu Editor – онлайн графический редактор, апять таки написанный на HTML5
  • Яндекс.Диск — файловое хранилище от Яндекса. До 10 Гбайт бесплатно. Пока, что вход по приглашениям.

Разное