CSSWARP — интересный сервис, позволяющий средствами CSS3, а именно применением трансформаций к каждой букве, пустить текст по кривой.
Работает везде, где поддерживаются трансформации.
11 марта 2011
CSSWARP — интересный сервис, позволяющий средствами CSS3, а именно применением трансформаций к каждой букве, пустить текст по кривой.
Работает везде, где поддерживаются трансформации.
10 марта 2011
Добавил к записям кнопки для быстрого расшаривания в twitter и facebook, сгенерированные отличным сервисом Dimox-а share42.
Если что-то работает не так или хочется каких-нибудь других сервисов — пишите.
10 марта 2011
Казалось бы, зачем изобретать велосипед и писать свой Active Record, а не взять существующую реализацию… например, phpactiverecord, RedBeanPHP или тот же ORM Doctrine. В случае Yii всё не так однозначно:
7 марта 2011
13 комментариев5 марта 2011
Microsoft запустила официальный сайт-статистику, показывающую распространение IE6 в мире. Основана она на данных netapplications.com, так что слепо доверять ей не стоит: проверяйте свои проекты самостоятельно. Тут, например, доля IE6 за последний месяц — 7,98%.
Вообще картина довольно радостная: скоро IE6 почти не останется. Хорошо-бы, чтобы и IE7 оперативно отправился за ним…
4 марта 2011
Отладка Google Analytics — очень непростая задача. Фактически мы можем проверить только входы и выходы этого чёрного ящика. Если что-то работает не так, понять, что же на самом деле происходит сложно. Раньше в ход шли исключительно Firebug и Live HTTP Headers (или другой HTTP-профайлер). К большому нашему счастью, Google позаботился о разработчиках и выпустил сначала отладочный код ga_debug.js
, а потом и упрощающее его использование официальное отладочное расширение для Chrome — Google Analytics Tracking Code Debugger.
Включив его и открыв отладочную консоль, мы получаем довольно детальную информацию о том, какие методы API были вызваны:
_gaq.push processing : "[gwo._setAccount,UA-xxxxxxx-1]" _gaq.push processing : "[gwo._trackPageview,/xxxxxxxxxx/test]" _gaq.push processing : "[_setAccount,UA-xxxxxxx-2]" _gaq.push processing : "[_setAllowAnchor,true]" _gaq.push processing : "[_trackPageview]"
Кроме того, показываются предупреждения об использовании устаревших методов и других возможных проблемах. И всё это не меняя трекинг-код.
4 марта 2011
В очередной раз забывшись отправил на сервер
console.log("something happened");
Всё хорошо, но в IE этого объекта нет и браузер будет ругаться. Можно проверить объект и метод на undefined
, а можно подавить ошибки короче и надёжнее:
try { console.log("something happened"); } catch (e) {}
4 марта 2011
Незаменимость — это плохо. Плохо для всех: для заказчика, для исполнителя… да и для самого проекта тоже. И вот почему:
Лучше работать так, чтобы хоть компания и могла бы вас легко «устранить», но не хотела бы.
3 марта 2011
В RFC PHP попала новая идея: встроенный вебсервер. Штука определённо замечательная: можно будет разрабатывать не запуская тот же Apache и не занимаясь его настройкой. Пока реакция разработчиков положительная, поэтому можно надеяться, что нововведение будет в ядре.
Запускать это дело предлагается очень просто:
php -S localhost:8000 docroot
При этом можно использовать роутинг-скрипт, заменяющий, например mod_rewrite и выглядящий так:
if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) return false; // отдаём как есть else ...
К странице в wiki прилагается патч, так что любопытные могут собрать PHP из исходников и попробовать нововведение.
26 февраля 2011
Очень удивился, когда не нашёл внятной схемы синтаксиса и работы JOIN
в SQL. Нарисовал свою:
FULL JOIN
. Эмулируется через UNION
.CROSS JOIN
эквивалентен INNER JOIN
. Можно использовать как один, так и другой. В стандарте SQL это не так: INNER JOIN
используется с ON
, CROSS JOIN
— без.RIGHT OUTER JOIN
.PDF версии: