вторник, 11 мая 2010 г.

Chrome JS Error ReferenceERror: doIt is not defined

Если отлаживая Javascript на своем сайте вы уже столкнулись мистической ошибкой "doIt is not defined", безуспешно не можете отыскать ее в в недрах чужого (или хуже своего) кода и уже оглядываете рабочий стол на предмет магического бубна, то этот совет наверняка окажется полезным. ;-)

Оказывается, эту ошибку вызывает один из экстеншенов Chrome, а именно, Chrome SEO. Если отключить его, то ошибка пропадает бесследно.

пятница, 7 мая 2010 г.

Пара замечаний по настройке Apache после перехода на Ubuntu 10.04

После конфигурации виртуальных хостов рабочих проектов и перезапуска Apache вижу в консоли следующие предупреждения:
noe@studio:~/etc/apache2$ sudo apache2ctl restart
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[Fri May 07 22:09:13 2010] [warn] VirtualHost 127.0.0.1:80 overlaps with VirtualHost 127.0.0.1:80, the first has precedence, perhaps you need a NameVirtualHost directive
[Fri May 07 22:09:13 2010] [warn] NameVirtualHost *:80 has no VirtualHosts

Вижу, что Apache перегрузился и работает нормально, но меня абсолютно не устраивают вывод предупреждений всякий раз, когда я буду перезапускать сервер.

Could not reliably determine the server’s fully qualified domain name

Проблема решается просто, добавлением строки "ServerName localhost" в файл /etc/apache2/httpd.conf

NameVirtualHost *:80 has no VirtualHosts

Насколько я понял, эта проблема связана с многократным переопределением VirtualHost при конфигурации виртуальных хостов. Переписываем инструкцию следующим образом. Перезапускаем Apache. Любуемся полученным результатом.

За подсказки спасибо авторам Jeremy Kendall, Mohamed Aslam и Ивану

четверг, 6 мая 2010 г.

UPDATE + JOIN + COUNT() в MySQL

Сегодня столкнулся с проблемой. Данные одной таблицы надо обновить данными тз другой таблицы с учетом статуса в третьей ;-)

Недолго думая написал следующий скрипт:
UPDATE `tags` AS t
LEFT JOIN `auction_tags` AS at ON t.id = at.tag_id
INNER JOIN `auctions` AS a ON a.id = at.auction_id AND a.status = 'active'
SET t.auctions_count = COUNT(at.auction_id)
Не прошло. :-( Оказывается такая конструкция инструкции UPDATE не допускает использование функции COUNT(). После получасового общения с всемирным разумом посредством Google был найден неожиданный вариант выполняющий ту же самую работу:
UPDATE `tags` AS t
SET t.auctions_count = (
SELECT COUNT(at.auction_id)
LEFT JOIN `auction_tags` AS at ON t.id = at.tag_id
INNER JOIN `auctions` AS a ON a.id = at.auction_id AND a.status = 'active'
)
Хм, век живи -век учись...