С сегодняшними мощностями и каналами всё больше разработчиков не обращают внимания на размер JavaScript и CSS. Не так давно прошёл третий JS1K, призванный показать, что в один килобайт можно при желании вместить очень многое. Jacob Rask запустил похожий проект, но про CSS: CSS1K. Смысл — уложиться в один килобайт и превратить стандартную разметку в нечто красивое или необычное.
-
CSS1K
29 июня 2011
-
Paper.js
28 июня 2011
Интересная библиотека для работы с canvas. Отличается наличием объектной модели и приятным простым API. Например, прямоугольник можно построить так:
var topLeft = new Point(10, 20); var rectSize = new Size(200, 100); var rect = new Rectangle(topLeft, rectSize);
Пользуясь случаем вспомнил давнее увлечение и набросал абстрактную штуковину.
-
Yiiclipse, поддержка Yii для Eclipse PDT
27 июня 2011
В лагере IDE, умеющих работать с Yii прибыло. Конечно, с фреймворком и так довольно приятно работать во всех IDE с нормальной поддержкой PHP, но некоторые специфичные вещи всё-таки бывают очень полезными.
Yiiclipse добавляет две возможности к стандартным для PDT: wizard для создания проекта и, что самое главное, навигацию по вызовам view и layout.
-
Yii 1.1.8
27 июня 2011
Вышел релиз Yii 1.1.8, включающий более 80 багфиксов, новых возможностей и улучшений. Огромное спасибо тем, кто репортил баги, предлагал новые фичи и использовал по назначению Orphus на yiiframework.ru.
Забрать свежий дистрибутив можно с официального сайта.
Инструкции по обновлению можно почитать в UPGRADE.
Полный список изменений, как обычно, можно прочитать в CHANGELOG, мы же бегло рассмотрим самое интересное.
-
YiiCookbook.org
25 июня 2011
По случаю завершения работ над текстом книги запустил посвящённый ей сайт, на котором будут собираться описки и отзывы, а также, после печати книги, будут выложены код и, возможно, бесплатная глава.
-
Sprite Cow
25 июня 2011
Отличный инструмент, позволяющий легко работать с изображениями-спрайтами. Загружаем картинку, щёлкаем на область, получаем CSS со смещением, высотой и шириной.
Очень удобно, меня даже затянуло и я загнал все изображения этого блога в пару спрайтов. Единственный минус — не работает в Opera.
-
Несколько SQL-запросов за один раз через PDO
24 июня 2011
Понадобилось исполнить несколько не однотипных запросов за один раз. Также, как это делает mysqli::multi_query, но через PDO. Сделать это, оказалось, вполне реально, но и без интересностей не обошлось.
Во-первых нагуглить это оказалось почему-то не так просто: вылезали какие-то обсуждения
PDO_MYSQLND
2008-го года и, хоть и свежие, но оставшиеся без внятного ответа вопросы на StackOverflow.Оказалось, что
PDO_MYSQLND
с релизом PHP 5.3 заменилPDO_MYSQL
, который такие вещи не поддерживал. Причём заменил под тем же именемPDO_MYSQL
.Итого, для выполнения нескольких запросов за один раз понадобится:
- PHP 5.3+
- mysqlnd
- Эмуляция prepared statement через
PDO::ATTR_EMULATE_PREPARES
, выставленный в1
(по умолчанию) или, как альтернатива, не использование prepared statements и выполнение запроса напрямую через$pdo->exec
.
Используем exec
$db = new PDO("mysql:host=localhost;dbname=test", 'root', ''); // работает как для реальных statement-ов, так и для эмуляции $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0); $sql = "DELETE FROM car; INSERT INTO car(name, type) VALUES ('car1', 'coupe'); INSERT INTO car(name, type) VALUES ('car2', 'coupe');"; try { $db->exec($sql); } catch(PDOException $e) { echo $e->getMessage(); die(); }
Используем statement-ы
$db = new PDO("mysql:host=localhost;dbname=test", 'root', ''); // Не будет работать с реальными statement-ами. Только с эмуляцией. // Строку ниже можно закомментировать, это умолчание $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1); $sql = "DELETE FROM car; INSERT INTO car(name, type) VALUES ('car1', 'coupe'); INSERT INTO car(name, type) VALUES ('car2', 'coupe');"; try { $stmt = $db->prepare($sql); $stmt->execute(); } catch(PDOException $e) { echo $e->getMessage(); die(); }
-
Book of speed
17 июня 2011
Англоязычная онлайн-книга по клиентской оптимизации за авторством Stoyan Stefanov, подарившего нам YSlow и smush.it.
Готовы пять глав из девяти:
- The Performance Business Case
- The Life of Page 2.0
- Fewer Page Components
- Smaller Components
- Optimizing Images
- Parallel downloads
- Optimizing JavaScript and Ajax
- Optimizing CSS
- Psychology of performance
-
Порядок регистрации автозагрузчиков классов в Yii
14 июня 2011
Вплоть до версии 1.1.7 можно было регистрировать автозагрузчики классов только в одном порядке. Перед родным автозагрузчиком:
Kohana Zend Framework Yii
В итоге при загрузке родных классов срабатывал сначала автозагрузчик Kohana, затем Zend Framework и только потом родной. И происходило это для каждого класса. С версии 1.1.8 этого можно избежать, поставив сторонние загрузчики после Yii:
Yii Zend Framework Kohana
Достаточно добавить всего один параметр:
Yii::app()->registerAutoloader(array('EZendAutoloader', 'load'), true); Yii::app()->registerAutoloader(array('EKohanaAutoloader', 'load'), true);
Реализация:
-
Интерактивный учебник Ильи Кантора по JavaScript (alpha)
8 июня 2011
Илья Кантор, скорее всего известный вам как создатель javascript.ru, выложил предварительную версию интерактивного учебника по JavaScript на английском языке. После завершения работы над английской версией, будет перевод на русский.
Главные критерии, по которым данный труд создавался:
- Правильный — если вы видели учебники и статьи по JavaScript, то понимаете, о чем это.
- Современный — с учётом HTML5, IE9 и FF4. Основное внимание на «сейчас», но при этом «с прицелом на будущее».
- Задачи! Да, в учебнике должны быть задачи, а не только текст. Единственный способ освоить — это сделать. Иначе говоря, учебник должен быть и самоучителем.
Так как версия предварительная, очень нужны замечания, предложения и исправления.