Механический мир

Синхронизация Drupal-сайтов с помощью migraine

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


Синхронизация developement и production серверов в Drupal — занятие нелёгкое. Даже в 6 версии не хватает простого способа переноса и восстановления контента. В модуле CCK есть нужный функционал, но одним custom-контентом сайт обычно не ограничивается. Код модулей и ядра можно синхронизировать с помощью систем контроля версий, но что делать с базой?

Прочтите эту запись до конца »

Диагностика с помощью CSS-стилей

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

Главная страница Google после применения букмарклета

Набрёл сегодня у Jens Meiert на интересный букмарклет: он проверяет установлены ли title и href у ссылок, alt и title у картинок и прочие мелочи, удобно выделяя недостатки жирным красным кантом или ядовитыми фоновыми цветами. Сам букмарклет можно найти здесь, там же ссылка на объяснение что означает каждое оформление.

Various JavaScript nonsense

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

Дэвид Флэнаган: JavaScript

В пятницу я наконец то получил книгу Флэнагана «JavaScript. Подробное руководство» 5-й редакции. Как раз недавно видел у Крокфорда упоминание о том что это единственная книга по JavaScript, которую можно рекомендовать в качестве учебного пособия. В общем, я очень рад. Кроме того, нашёл хороший цикл статей по стандарту ECMAScript.

Также вчера был открыт обновлённый HabraWars – аналог C robots на JavaScript. Желающие могут присоединяться, писать своих роботов и участвовать в турнире в четверг :)

Обращение к REST-сервисам из JavaScript

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

В предыдущем посте я обещал рассказать почему я выбрал именно такой способ обращения к REST API — через прокси-скрипт. Here goes:

В JavaScript есть такая вещь как Same Origin Policy. Вкратце она означает что JavaScript в окне браузера может делать запросы только к страницам находящимся на том же домене которому принадлежит объект окна (а не файл скрипта, заметьте). Причём два окна могут обмениваться информацией только если у них совпадают домен, порт и схема (окна http не могут общаться с окнами https). Впрочем, тут есть одна лазейка. Скрипт может менять URL фреймов и самого верхнего окна, уже без ограничений по домену.
Прочтите эту запись до конца »

Общая архитектура Spore Fortress

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

Вкратце посмотрим на архитектуру SF. Вот так выглядит workflow:

Процесс работы SF

Итак, нам надо получить с сервера список созданий (лучших, случайных, созданий конкретного пользователя — в данном случае не так важно). Потом мы этот список красиво показываем пользователю, он выбирает нужных существ, они преобразовываются в формат DF (нет смысла преобразовывать всех подряд), и отдаются пользователю в стандартном для DF текстовом виде.
Прочтите эту запись до конца »

Maxis Spore API

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

Random Spore creature

Сейчас мы по быстрому рассмотрим Spore API, который я использую в маленьком проекте. API построена на протоколе REST, постоянно дорабатывается и развивается, и возможности его, хоть и ограничены, но довольно неплохи. Документация пока скудная и частично разбросана по форумам Maxis в ответах разработчиков компании. Вот сводка о Spore API на ProgrammableWeb.

Прочтите эту запись до конца »

При множестве мелких запросов к 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 штук. Попробуем:

Прочтите эту запись до конца »

pear.php.net is using a unsupported protocal

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 из рабочей инсталляции (или скачать – например тут)

#1030 – Got error -1 from storage engine

Posted by: kuroikaze85 on: 23 Октябрь, 2009

А всего то надо было – выставить innodb_force_recovery в 0. Innodb_force_recovery – режим только для восстановления данных!

Метки: ,

parser error : Input is not proper UTF-8, indicate encoding !

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.

Метки: , ,