CakePHP без базы данных

CakePHP без базы данныхЧасто видел в интернете упреки в сторону CakePHP в том смысле, что ему для работы обязательно нужна база данных, и это, мол, великое зло. Как-то не обращал внимания на данные утверждения (и правильно делал), так как всегда использовал базу данных. Но вот случилась необходимость сделать сайт на CakePHP без БД (временный сайт, со статикой, в будущем подразумевающий развитие до использования базы). В русскоязычной части интернета не удалось найти решения этой задачи (ясно примерно как это сделать, но хочется готового 🙂 ), к счастью, на англоязычном блоге был найден ответ.

Итак, приступим.
Читать далее CakePHP без базы данных

Flv и субтитры

Flv и субтитрыПредположим, вам понравился какой-то видео файл на youtube (или в любой подобной системе, суть в том, что этот файл хранится в интернете в формате flv), и вы хотите его показать другим людям, разместив это видео на своем сайте или блоге, но, к сожалению, фильм не на русском языке. В этом случае может появиться потребность в его русификации, самый простой способ сделать это — создание субтитров для фильма.

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

  • нужно уметь пользоваться подобными видео-редакторами,
  • нельзя будет легко откорректировать титры при необходимости (ведь они уже будут намертво замурованы в видео),
  • так как на выходе вы получите свой модифицированный видео-файл, вам нужно будет дополнительно заботиться о том, где его хранить в интернете, чтоб иметь возможность показывать его на своем сайте, а если же хранить прямо на своем сайте, то это может угрожать нежелательным расходом трафика,
  • при сохранении отредактированного видео его качество будет хуже оригинала.

Мне этот способ не подошел из-за последних трех минусов, поэтому пришлось искать другое решение, более гибкое и простое, которым я и хочу поделиться.
Читать далее Flv и субтитры

PHP и BBCode

У меня периодически появляется потребность в использовании «интерпретатора» BBCode в своих проектах (написанного на PHP), и постоянно нет времени искать какое-то более-менее удобоваримое решение, что в итоге выливается в использование или создание «костылей» для каждого конкретного случая.
Но вот, похоже, получилось найти то, что хотелось.

Моя претензия к подобным готовым решениям обычно в первую очередь заключается в неспособности этих библиотек правильно обрабатывать абзацы. Фактически они обычно вообще не используют абзацы (тэг P), вместо этого в результате своей работы они просто вставляют тег <br /> , заменяя обычные символы переноса строки. Я считаю такой метод эмулирования абзацев в 98 процентах, мягко говоря, не уместным. Но так как перенос строк по средствам <br /> намного легче реализовать вместо «человеческих» <p>, так большинство и делает 🙁 Некоторые даже придумывают оправдания, что мол с br даже правильнее, отчасти, из-за подобной лени разработчиков различных готовых библиотек, другая часть людей думает, что тэг P является устаревшим (ведь даже во многих готовых продуктах и сайтах абзацы формируются путем использования <br />) 🙂
Читать далее PHP и BBCode

Правильный редактор для PHP

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

Хочется иметь нормальную реализацию IntelliSense, а не «деревянную» пародию на него в виде заранее определенного списка методов и констант языка, «вываливающегося» во время работы по поводу и без повода в виде полного списка. IntelliSense обязательно должен «знать» о всех используемыми вами классах, о их методах и переменных, то есть подключил через #include файл с определением своего класса, и редактор сразу же его подхватывает, подсказывая информацию о всех «внутренностях» объектов этого класса.
Читать далее Правильный редактор для PHP

Борьба со спамом в форумах phpBB2

Борьба со спамом (c) :-)Недавно на своем форуме изменил тактику борьбы со спамом (по сути, просто поставил другой мод 🙂 ), что принесло свои плоды.

Раньше для борьбы со спамерскими роботами был установлен мод расширенной графической капчиAdvanced Visual Confirmation и одна из первых версия мода Stop Advertisement Bots (уже есть более свежая версия).

Stop Advertisement Bots скрывает от глаз посетителей поле для ввода сайта и при этом определяет, что регистрационную форму заполнил робот, если заполнено это скрытое поле.

Еще установлен прекрасный мод, который автоматически удаляет пользователей (и их сообщения), которые использовали более чем 1 ссылку в тексте своего поста (Detector Bots) (макс. допустимое количество ссылок в одном сообщении можно настраивать).
Читать далее Борьба со спамом в форумах phpBB2

jQuery. Мое первое знакомство с «волшебной палочкой» для JavaScript

Логотип jQueryНа днях познакомился с очень хорошим фреймворком для JavaScript с названием jQuery. Дня три не мог нарадоваться 🙂 И захотелось поделиться этим.

До этого использовал чистый JavaScript, а для задач, требующих использования AJAX, использовал библиотеку JsHttpRequest от dkLab.

«Я почему раньше такой злой был — потому что у меня велосипеда не было!» (с) Почтальон Печкин

В целом до знакомства с jQuery я достаточно негативно воспринимал работу с JavaScript, душа у меня к нему явно не лежит. Причем использую в JavaScript обычно самый необходимый функционал, например, оперирование объектами из DOM, на уровне скрыть/показать, или же для валидации данных форм на стороне клиента.
Читать далее jQuery. Мое первое знакомство с «волшебной палочкой» для JavaScript

MySql и русская кодировка

Проблема возникает, если вы работаете с кодировкой, отличной от UTF-8, и храните в базе данных тексты, к примеру, в кодировке cp1251. Но MySql не всегда использует по умолчанию кодировку cp1251, в частности, не всегда по умолчанию используется эта кодировка для соединений с базой. Из-за этого возникают ситуации, когда в базе тексты хранятся в нормальном читабельном виде, но при выводе этих данных на сайт появляются одни лишь «кракозяблы» (знаки вопросов вместо букв – «?????????? ????»).
Читать далее MySql и русская кодировка

Обтекание текстом в Photoshop

Пример обтекания текстомМеня одно время мучил вопрос, как сделать обтекание текстом (text wrapping) какого-либо объекта в Photoshop,так как при разработке эскизов дизайна для сайтов этой возможности ой как не хватало. Потом решение нашлось (с помощью метода «проб и ошибок» 🙂 ), несмотря на то, что достаточно часто на некоторых форумах упоминается, что это просто невозможно сделать.

Вам будут необходимы навыки работы с кривыми (Patchs/контуры), если вы вдруг их не имеете, можете посмотреть неплохой урок на эту тему.

В общем, рецепт прост.
Читать далее Обтекание текстом в Photoshop

Эффект бурундука при проигрывании mp3 файлов в flash плеерах

Мне нужен был плеер, сделанный на флеше для проигрывания mp3 файлов на сайте. Вспомнил про «JW FLV Media Player«, не плохой бесплатный (для не коммерческого использования) плеер, раньше я пробовал его использовать, но только для проигрывания видео файлов (*.flv).

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

Звук заработал, но скорость проигрывания была где-то в два раза быстрее 🙂 Получался голос с эффектом мультяшных бурундуков (так этот эффект обозвали в иностранных источниках – «chipmunk») 😕
Читать далее Эффект бурундука при проигрывании mp3 файлов в flash плеерах

Обманная полупрозрачность для gif

Почему-то достаточно часто на сайтах встречаю вот такую (иногда такое встречается и на сайтах веб студий 😯 ) неверную реализацию (не всегда настолько сильно видны белые ореолы), вставки прозрачных gif изображений на сайт с неким абстрактным фоном (с каким-то мелким узором на фоне или просто некая цветовая заливка, пусть даже градиентная). Вот пример неправильного и правильного варианта:

Не правильно Правильно
Не правильно Правильно

Проблема возникает из-за того, что gif не поддерживает полупрозрачности.
Читать далее Обманная полупрозрачность для gif