Posted by: kuroikaze85 on: 24 Ноябрь, 2009

Синхронизация developement и production серверов в Drupal — занятие нелёгкое. Даже в 6 версии не хватает простого способа переноса и восстановления контента. В модуле CCK есть нужный функционал, но одним custom-контентом сайт обычно не ограничивается. Код модулей и ядра можно синхронизировать с помощью систем контроля версий, но что делать с базой?
Posted by: kuroikaze85 on: 17 Ноябрь, 2009
Набрёл сегодня у Jens Meiert на интересный букмарклет: он проверяет установлены ли title и href у ссылок, alt и title у картинок и прочие мелочи, удобно выделяя недостатки жирным красным кантом или ядовитыми фоновыми цветами. Сам букмарклет можно найти здесь, там же ссылка на объяснение что означает каждое оформление.
Posted by: kuroikaze85 on: 16 Ноябрь, 2009

В пятницу я наконец то получил книгу Флэнагана «JavaScript. Подробное руководство» 5-й редакции. Как раз недавно видел у Крокфорда упоминание о том что это единственная книга по JavaScript, которую можно рекомендовать в качестве учебного пособия. В общем, я очень рад. Кроме того, нашёл хороший цикл статей по стандарту ECMAScript.
Также вчера был открыт обновлённый HabraWars – аналог C robots на JavaScript. Желающие могут присоединяться, писать своих роботов и участвовать в турнире в четверг
Posted by: kuroikaze85 on: 5 Ноябрь, 2009
В предыдущем посте я обещал рассказать почему я выбрал именно такой способ обращения к REST API — через прокси-скрипт. Here goes:
В JavaScript есть такая вещь как Same Origin Policy. Вкратце она означает что JavaScript в окне браузера может делать запросы только к страницам находящимся на том же домене которому принадлежит объект окна (а не файл скрипта, заметьте). Причём два окна могут обмениваться информацией только если у них совпадают домен, порт и схема (окна http не могут общаться с окнами https). Впрочем, тут есть одна лазейка. Скрипт может менять URL фреймов и самого верхнего окна, уже без ограничений по домену.
Прочтите эту запись до конца »
Posted by: kuroikaze85 on: 5 Ноябрь, 2009
Вкратце посмотрим на архитектуру SF. Вот так выглядит workflow:
Итак, нам надо получить с сервера список созданий (лучших, случайных, созданий конкретного пользователя — в данном случае не так важно). Потом мы этот список красиво показываем пользователю, он выбирает нужных существ, они преобразовываются в формат DF (нет смысла преобразовывать всех подряд), и отдаются пользователю в стандартном для DF текстовом виде.
Прочтите эту запись до конца »
Posted by: kuroikaze85 on: 3 Ноябрь, 2009
![]()
Сейчас мы по быстрому рассмотрим Spore API, который я использую в маленьком проекте. API построена на протоколе REST, постоянно дорабатывается и развивается, и возможности его, хоть и ограничены, но довольно неплохи. Документация пока скудная и частично разбросана по форумам Maxis в ответах разработчиков компании. Вот сводка о Spore API на ProgrammableWeb.
Posted by: kuroikaze85 on: 29 Октябрь, 2009

При множестве мелких запросов к MySQL сам overhead запроса может занимать значительную часть времени. Например, нам нужно создать алиасы для элементов:
$elements_result = db_query("SELECT
`element_id` AS `id`,
`element_name` AS `name`
FROM `web_elements` WHERE 1");
while ($element = db_fetch_object($elements_result)) {
$alias = create_element_alias($element->name);
$result = db_query("INSERT INTO `element_aliases` VALUES ('%d', '%s')", $element->id, $alias);
}
unset($elements_result);
На первый взгляд, обычный код. Но при большом количестве элементов выполняться он может довольно долго. Как вариант можно собирать значения в пакеты и отправлять их по 100-1000 штук. Попробуем:
Posted by: kuroikaze85 on: 29 Октябрь, 2009
Некоторые инсталляции PEAR, как оказывается, получаются изначально нерабочими. На pear.php.net написано что этому подвержены PHP 5.2.9 и 5.2.10, но я столкнулся на 5.2.11. Официальное решение простое:
cd `pear config-get php_dir` rm -r .channels pear update-channels
Правда это удалит все дополнительные каналы, которые придётся ставить заново. Как вариант – можно скопировать сожержимое каталога .channels из рабочей инсталляции (или скачать – например тут)
Posted by: kuroikaze85 on: 23 Октябрь, 2009
А всего то надо было – выставить innodb_force_recovery в 0. Innodb_force_recovery – режим только для восстановления данных!
Posted by: kuroikaze85 on: 21 Октябрь, 2009
При использовании SimpleXML для обработки уже принятого xml может возникнуть вышеуказанная ошибка. Это значит что XML вам подсунули не первой свежести не в той кодировке. Лечится очень просто:
$data = mb_convert_encoding($data, 'UTF-8');
Для mb_convert_encoding указывать исходную кодировку необязательно.
Я с этим столкнулся когда обнаружил что Spore REST API отдаёт некоторые файлы в UTF-8, а некоторые – в UTF-16.