2009/04/30

jQuery.ready

Занимательная и научно-познавательная функция ready() в jQuery (хотя на самом деле это метод объекта) делает одну мегаполезную вещь. Как известно, в неё можно пихать document и она будет вызвана после полной загрузки документа со всеми скриптами, цссками и картинками.
Как известно меньшему количеству народа, в неё можно запихать любой элемент, и функция будет вызвана после полной загрузки этого элемента.

И, как оказалось, $.ready(element) вызывается не только после полной загрузки элемента, но и после показа этого элемента на экране. Т.е. для element style="display: none;" ready не работает; или отработает только когда этот элемент станет видимым.
В документации этого не вычитал, случайно обнаружил.

ps: причем, этот эффект не распространяется на дочерние элементы; ready будет выполнен для элемента внутри невидимого блока

2009/04/23

Правильная вёрстка

Просто пиар хорошего ресурса :)
http://www.xiper.net/ Сайт верстальщиков для верстальщиков. Много полезной информации о приёмах, решениях, хаках и глюках браузеров. Конечно, в наличии справка по хтмл и цсс.
И много, много полезных статей.

2009/04/11

PostgreSQL, Apache, PHP, Windows(tm) и онлайн мануалы

Начать хорошо бы матом.
Но вдруг этот блог кто-нибудь читает?

Кто-нибудь пытался включать постгрес-экстеншн? Вот я попытался. Нет экстеншена. (касается апач2.2 постгрес>8.3.1 пхп>5.2.8)
Нормальный запуск, в логах апача - ошибка: Системе не удаётся загрузить библиотеку...
Два часа тырканий по разным каталогам - обычная в винде ситуация, либо путь в дефолтный пропиши, либо длл переложи - и поиска нужной библиотеки ни к чему не привели. Не грузится, хоть тресни. Не работает php-way.

Гугл подсказал блог то ли поляка, то ли чеха http://bscsro.blogspot.com/2009/01/apache.html За что ему спасибо. Гику этому пхпшному.
Тот же гугл выдал итальянскую страницу мана в домене .id (Индонезия). Там в комментариях тот же самый рецепт. Смотрю в русский ман - нет камента. Украинский домен ua.php.net - есть камент. Русский ru.php.net - есть камент. Переключаю вкладку обратно - нет камента. Обновляю, всё равно нет. Всё, думаю, прощай крыша.
Поискал фильм посмотреть, обратно в браузер, смотрю адреса: один ru2.php.net, другой ru.php.net. Полегчало.
Так заодно мы узнали, что Ринет, который держит ru2.php.net, не любит пхп.

ах, да, рецепт.
http://ru.php.net/manual/ru/pgsql.setup.php#88042
необходимо загрузить клиента постгреса в тот же слой, что и транслятор пхп.
если вы использовали инсталляторы, то в конфиге апача есть такой камент:
#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
PHPIniDir "C:/server/php/"
Loadfile "C:/server/php/php5ts.dll"
Loadfile "C:\server\pgsql\bin\libpq.dll"
LoadModule php5_module "C:/server/php/php5apache2_2.dll"
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
добавлены строки принудительной погрузки библиотек

2009/04/10

yeap. Передача параметров

Непростая это задача - правильная передача параметров.
Мы ведь решили делать RESTful ;) систему. А описания принципа рэст говорят нам, что вся информация запроса содержится в uri (Точнее, наоборот: любая доступная информация однозначно идентифицируется uri, что, соот-но, см. утверждение выше.)
Но мы также решили сделать внутренним форматом (вообще, единственным форматом передачи) данных - XML.
Мы схитрим. Введём специальный параметр в uri, указывающий на то, что параметры переданы отдельно. Назовём его request. Кусок uri будет выглядеть так /path/parameters/request/ .
Далее, т.к. модуль сам разбирает свои параметры, то он сам знает, откуда брать параметры, то параметр request фактически является декларативным, для нас.
Вроде всё. Запоминаем и работаем дальше.

ps: зарезервируем на всякий случай $_REQUEST['module']['module_name'] для передачи параметров. хаком можно пользоваться и надо не забывать очищать. модуль-враппер-компоновщик параметров из массивов в хмл писать не будем. хотя надо бы. позже

2009/04/02

yeap. Ещё соглашения

Мы уже договаривались о некоторых соглашениях, касательно работы системы и модулей в ней. Обяжем модули возвращать XML такого свойства
[module name="module_name" path="fullpath"]
[head]
[title]
[meta = ]
[meta = ]
[link = ]
[script]
[description]
блок содрежит разного рода служебное и не очень описалово, типа автора, дата последнего изменения итп. делит важность с виджетом
[/description]
[/head]
[body] // %)
[widget]
это такая хитрая штуковина для визуального оформления, которая внедряется только по месту расположения модуля в документе. для разного рода рсс, разумеется, игнорируется
[/widget]
[data]
[row]
[smthng_field]
[/row]
[/data]
[/body]
[/module]