Отличная реализация караоке с использование ранее описаной мной javascript библиотеки, которая работает с музыкальными файлами SoundManager2 и текстов в формате StepMania.
Что из этого получилось:

Но лучше всего увидить и спеть самому: http://dt.in.th/src/lyricscroll/ , правда автор этой штуковины из Тайланда, но я не думаю, для “нашего” человека после пива это будет являться проблемой.
Сегодня мы поговорим о новой системе роутинга – роутинг фрейморк.
Роутинги как объекты класса
До symfony 1.2, система роутинга (через класс sfPatternRouting ) хранила роуты в ассоциативном массиве. Старая система отлично работает, но при этом трудно настраиваемая под свои нужды. Для того чтоб дать разработчикам свободу в модификации и улучшении процесса роутинга, в новой версии все роуты хранятся как массив объекта sfRoute.
Роутинг 1.2 совместим с 1.1 и не требует никаких дополнительных изменений в routing.yml файле.
Если вы хотите прописать роуты напрямую в PHP, теперь нужно указывать объект sfRoute вторым аргументов для методов connect(), preprendRoute(), appendRoute(), и insertRouteBefore() :
$routing->connect('foo_bar', new sfRoute('/foo/:bar', array('module' => 'foo', 'action' => 'bar')));
Настройка роута
Конструктор класса sfRoute принимает последним аргументом массив опций, который позволяет легко настраивать роуты. В конфигурационном файле routing.yml , ключ options применяется для замены настроек по умолчанию:
article:
url: /article/:id-:slug
options: { segment_separators: [/, ., -] }
В опции segment_separators указываются символы разделители для роута. В предыдущем примере как разделитель испольются - (дефис), которые в нашем случае так же валиден как и два разделителя встроенных по умолчанию (/ и .). Таких образом допускаются ссылки вида /article/1-my_article_title с переменной id равной 1 и slug равной my_article_title.
Читать дальше →
Отпуск пролетел на одном дыхании, пора и поработать.
Все таки Крым не сравнишь ни с Кавказаом, ни с Турцией или Египтом.
Крым – одна сплошная красотища!
Ласточкино гнездо (малееенькое)

Безумный подъем на Ай-Пертри (на высоты более 1200 м за 15 минут)

С самой высокой точки Ай-Петри фото станции фуникулера (подъемника), здание треугольником

Внизу Ялта, Мисхор

Во время web 2.0 валидность документов стандартрам w3.org xhtml, html, css является неотемлемой частью любого проекта
Осообенно трепетно к этому относятся заказчики за пределами СНГ
Валидатор от w3.org, конечно хорошо, но как всегда хочеться большего.
В нашем случае “большее” – это живой валидатор в реальном времени, автор живого валидатора (Validator.nu) Henri Sivonon взял Hixie’s Live DOM Viewer, и на его основе собрал свой парсер DOM.
Получилось я вам скажу очень даже неплохо.

Очень полезный класс для разборки DOM модели веб документа с селектора в jQuery стиле.
Это просто незаменимая вещь если вы любитель обдирать чужие сайты )). А вообще одно из основных применений – это к примеру брать котировки валют прям со страницы банка и тд.
Почему собственно PHP Simple HTML DOM Parser:
- Написан на PHP5+ и позволяет легко управлять HTML
- Поддерживает не валидный HTML
- Поиск тагов в HTML с селекторами в jQuery стиле
- Может разложить все содержимое HTML в строку
Скачать последнюю версию с Sourceforge.
Онлайн документация.
Небольшой пример, как извлеть HTML элемент:
// Create DOM from URL or file$html = file_get_html('http://www.google.com/');
// Find all images
foreach($html->find('img') as $element)
echo $element->src . '<br>';
// Find all links
foreach($html->find('a') as $element)
echo $element->href . '<br>';
Разработчики не перестают удивлять скоростью реакции на фидбеки от комьюнити. Вот очередная серия доработок к системе плагинов:
- Появилось новое поле для описания плагина. Это поле не зависит от версии плагина и будет выводиться на главном табе “Plugin Information”.
- Каждый плагин можо связать с ORM, который он использует. Первоначально это свойство задавалось автоматически основываясь на имени плагина и некоторых “таинственных” характеристиках. Теперь это поле может задать разработчик. С этого момента информаци о используемом ORM в плагине станет более достоверной.
- Добавлен полезный инструмент для тестирования README файла перед созданием PEAR пакета. Для проверки заходим на страницу проверки валидности Markdown. На этой же странице вы найдете и шпаргалку по разметке Markdown.
Читать дальше →

Ежегодная встреча сообщества symfony состоиться 12-13 сентября в Dutch Open Projects (DOP), что в Голландии.
Мероприятие начнется с тренинга по symfony 1.1, предствляет Nicolas Perriault (менеджер релиза symfony 1.1).
Докладов не так много, и на мой взгляд как-то маловато для такого мероприятия, вот список некоторых из них:
- Обучающие уроки от Yahoo! (Dustin Whittle)
- Производительность symfony (Fabian Lange) – это интересно
- symfony и Doctrine vs Propel (Jonathan Wage, главный разработчик Doctrine)
- Библиотеки интерфейса пользователя от Yahoo (Dustin Whittle)
- Плагины и как создавать свои собственные (Lambert Beekhuis)
- Генерация Админ панели (Ian Christian)
- symfony 2.0
Кто созрел, регистрируется, и потом рассказуется всем нам как там было хорошо ))
Прошедшая 21-25 июля самая большая конференция по open source в Portland, Oregon собрала более
2500 профессионалов. Были представлены проекты на Linux, PHP, Perl, Python, Ruby, Java, Mobile, Databases, Desktop Applications, Web Applications, Administration, Security, People, Business.
На офф сайте доступно 100 презентаций (все на английском языке), вот некоторые из них:
Море интересных презентаций, просто глаза разбегаются
Плагины в symfony – это самый простой способ внести свой вклад в развитие фреймворка symfony. Плагины легко пишуться, пакуются, устанавливаются и они могут переписать все что угодно в фреймворке.
Но существующаю система работы с плагинами не может ответить на вопросы:
- А есть ли плагин который добавляет “вот такую штуку” ?
- А поддерживает ли мой любимый плагин новую версию symfony 1.1?
- А совместим ли плагин с Doctrine?
- А какие самые популярные плагины?
- Как я могу помочь доработать плагин?
С текущей системой управления плагинами Trac, на эти вопросы ответить тяжело. Сейчас в системе более 200 плагинов, вот потому и решино было сделать для них отдельную систему.
Читать дальше →
Давайте дружно попросим пользователей наших сайтов незабывать обновлять их браузеры! Для этого нам поможет Pushup.
Установив небольшой скрипт pushup на вашем сайте, пользователь который использует устаревшую версию браузера получит ненавязчивое уведомление о том что его браузер устарел и его нужно обновить с ссылкой на обновление.
Юзер сможет либо сразу пойти и обновиться либо попросить напомнить ему об этом позже, время напоминания указывается в опциях скрипта.
На сегодняшний момент Pushup поддерживает
Установка
В хидер страниц (на которых будет напоминание) добавьте:
<link rel='stylesheet' type='text/css' href='css/pushup.css' />
<script type='text/javascript' src='js/pushup.js'></script>
Скачать Pushup 1.0.0