Определение мобильного устройства на PHP

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

Удалить весь JavaScript из текста сообщения

Для удаления всех JavaScript-ов из текста сообщения можно воспользоваться следующим регулярным выражением:
/<script\b[^>]*>(.*?)<\/script>/is
В PHP делаем вот так:

$textClear = preg_replace('/]*>(.*?)<\/script>/is', '', $text);

Шаблон проектирования — Модель — Представление — Контроллер (MVC)

Model-view-controller («модель-представление-контроллер», «модель-вид-контроллер») — схема использования нескольких шаблонов проектирования, с помощью которых модель приложения, пользовательский интерфейс и взаимодействие с пользователем разделены на три отдельных компонента таким образом, чтобы модификация одного из компонентов оказывала минимальное воздействие на остальные. Данная схема проектирования часто используется для построения архитектурного каркаса для разрабатываемого приложения.

Концепция:

  • Модель (Model) — содержит данные и методы работы с этими данными, реагирует на запросы, изменяя своё состояние. Не содержит информации, как эти знания можно визуализировать.
  • Представление, вид (View). — используется для отображения (визуализации, рендеринга) данных из модели.
  • Контроллер (Controller) — обеспечивает связь между пользователем системы и моделями данных.

В системе модель не зависит ни от контроллера, ни от представления, а те, в свою очередь, зависят от модели.
Читать далее

Шаблон проектирования — Одиночка

Одиночка (Singleton) — порождающий шаблон проектирования, гарантирующий, что в однопоточном приложении будет единственный экземпляр класса.
Применение — когда необходим только один экземпляр класса, с возможностью доступа к нему из любой точки приложения.
Примеры использования:

  • Запись сообщений в лог-файл
  • Доступ к базе данных

В случае когда Одиночка используется для организации доступа к базе данных, могут возникнуть проблемы, когда будет необходимо работать с несколькими серверами баз данных.
Читать далее

Триггеры в MySQL

Триггер в MySQL — поименованный объект БД, который ассоциирован с таблицей и активируемый при наступлении определенного события, события связанного с этой таблицей.
Такими событиями могут быть:

  • INSERT — при операциях вставки или аналогичных ей выражениях (INSERT, LOAD DATA, и REPLACE)
  • UPDATE — когда сущность (строка) модифицирована
  • DELETE — когда запись удаляется (запросы, содержащие выражения DELETE и/или REPLACE)

Кроме того, для каждого события есть два варианта:
BEFORE — выполняется до исполнения команды. Допустим, при BEFORE INSERT могут быть изменены данные перед вставкой их в таблицу или рассчитаны дополнительные поля для вставки.
AFTER — данное событие вызывается, после завершения исполнения команды. Как правило, это событие используется для обновления статистических данных или вставки данных в другие таблицы.
Читать далее

Шаблоны проектирования. Введение

Шаблоны проектирования (design patterns) — архитектурные конструкции, решающие часто возникающие задачи при разработке и проектировании программного продукта.
Как правило, шаблон проектирования не является законченным решением, а всего лишь пример решения задачи, который в большинстве случаев необходимо немного модифицировать под конкретную задачу.
Все шаблоны проектирования делятся на 4 основные группы, в которые входят уже конкретные шаблоны.
Читать далее

Управление memcached через cli

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

Из консоли linux можно сделать запрос на IP:PORT сервера и выполнить необходимые.

В общем случае это выглядит так:
echo "command" | nc 127.0.0.1 11211
или
echo "command" | nc -U ~/memcached.sock
где:
command — выполняемая команда
127.0.0.1 — адрес где запущен сервер memcache
11211 — порт
memcached.sock — сокет процесса memcached

Например, для полного сброса кеша необходимо выполнить
echo "flush_all" | nc 127.0.0.1 11211
или
echo "flush_all" | nc -U ~/memcached.sock
Для получения статистики сервера:
echo "stats" | nc 127.0.0.1 11211
Для получения дополнительной статистики необходимо выполнить
echo "stats slabs" | nc 127.0.0.1 11211