Как заставить Google XML Sitemaps дружить с WordPress MultiSite
При попытке использования плагина Google XML Sitemaps с WordPress 3.0 в конфигурации multisite, плагин обижается и работать категорически отказывается:
Google XML Sitemaps is not multisite compatible.
Unfortunately the Google XML Sitemaps plugin was not tested with the multisite feature of WordPress 3.0 yet. The plugin will not be active until you disable the multisite mode. Otherwise go to active plugins and deactivate the Google XML Sitemaps plugin to make this message disappear.
Это раздражает. Но к счастью, проблема решаема. Далее »
Автор: Wandering Soul, опубликовано в: Плагины WordPress, комментариев: 2Авг
2010
Simple Tags 1.7.4.4: The New Bugs
Сегодня наконец-то появилось время обновить старые плагины; в их числе оказался и Simple Tags. Честно говоря, версия 1.7.4.4 меня разочаровала: автор сломал автоматические ссылки меток. Теперь они не работают даже для английского языка.
Резюмируя: в данной версии нужно исправить:
- автоматические ссылки меток;
- поддержку многобайтовых символов в автоматических ссылках;
- вызов
register_uninstall_hook()при каждом обращении к блогу.
Мар
2010
Ошибка в ORM Kohana 3 при использовании префиксов таблиц
Ситуация: имеем две таблицы: пользователи и подписки:
id INTEGER NOT NULL PRIMARY KEY,
name VARCHAR(255) NOT NULL
);
CREATE TABLE prefix_subscriptions (
id INTEGER NOT NULL PRIMARY KEY,
user_id INTEGER UNSIGNED NOT NULL,
some_data TEXT NOT NULL
);
Один пользователь может иметь несколько подписок, одна подписка может принадлежать только одному пользователю. Далее »
Автор: Vladimir, опубликовано в: Kohana, комментариев: 6Фев
2010
cpio: ./lib/udev/firmware.sh: не удаётся stat: Нет такого файла или каталога
Если вы — счастливый обладатель тестовой версии Ubuntu 10.04 (Lucid Lynx), и после обновления udev система выдаёт такую ошибку:
update-initramfs: Generating /boot/initrd.img-2.6.32-12-server
cpio: ./lib/udev/firmware.sh: не удаётся stat: Нет такого файла или каталога
update-initramfs: failed for /boot/initrd.img-2.6.32-12-server
dpkg: подпроцесс установлен сценарий post-installation возвратил код ошибки 1
E: Sub-process /usr/bin/dpkg returned an error code (2)
Не удалось установить пакет. Попытка восстановить:
Настраивается пакет initramfs-tools (0.92bubuntu64) ...
update-initramfs: deferring update (trigger activated)
Обрабатываются триггеры для initramfs-tools ...
update-initramfs: Generating /boot/initrd.img-2.6.32-12-server
cpio: ./lib/udev/firmware.sh: не удаётся stat: Нет такого файла или каталога
update-initramfs: failed for /boot/initrd.img-2.6.32-12-server
dpkg: подпроцесс установлен сценарий post-installation возвратил код ошибки 1
E: dpkg был прерван, Вы должны вручную выполнить 'sudo dpkg --configure -a' чтобы исправить эту проблему.
E: Не удалось получить системную блокировку! (Возможно, запущен другой экземпляр apt или dpkg?)
E: dpkg был прерван, Вы должны вручную выполнить 'sudo dpkg --configure -a' чтобы исправить эту проблему.
Выполнение sudo dpkg --configure -a ни к чему хорошему не приводит:
update-initramfs: deferring update (trigger activated)
Обрабатываются триггеры для initramfs-tools ...
update-initramfs: Generating /boot/initrd.img-2.6.32-12-server
cpio: ./lib/udev/firmware.sh: не удаётся stat: Нет такого файла или каталога
update-initramfs: failed for /boot/initrd.img-2.6.32-12-server
dpkg: подпроцесс установлен сценарий post-installation возвратил код ошибки 1
либо
update-initramfs: deferring update (trigger activated)
Processing triggers for initramfs-tools ...
update-initramfs: Generating /boot/initrd.img-2.6.32-12-server
cpio: ./lib/udev/firmware.sh: Cannot stat: No such file or directory
update-initramfs: failed for /boot/initrd.img-2.6.32-12-server
dpkg: subprocess installed post-installation script returned error exit status 1
Если всё так, то вы попали по адресу. К счастью, проблема исправляется просто. Но до тех пор, пока её не исправить, обновить систему будет весьма и весьма проблематично.
Для решения проблемы нужно исправить файл /usr/share/initramfs-tools/hooks/udev:
Нужно найти строку
и исправить её на
После чего нужно сохранить файл и выполнить
Для любителей патчей: патч для /usr/share/initramfs-tools/hooks/udev:
+++ /usr/share/initramfs-tools/hooks/udev 2010-02-10 18:25:18.000000000 +0200
@@ -41,7 +41,7 @@
mkdir -p ${DESTDIR}/lib/udev
# 50-udev-default.rules
# 50-firmware.rules
-copy_exec /lib/udev/firmware.sh /lib/udev
+copy_exec /lib/udev/firmware /lib/udev
# 60-persistent-storage.rules
copy_exec /lib/udev/ata_id /lib/udev
copy_exec /lib/udev/usb_id /lib/udev
PS — а дистростроителям, ленящимся протестировать обновление, прежде чем пихать его в репозиторий, оторвал бы все выступающие части тела
UPDATE: ссылка на официальный баг в Launchpad. Возможно, там предложат лучшее решение, чем я.
Автор: Vladimir, опубликовано в: Linux, комментариев: 1Фев
2010
Simple Tags 1.7.4.2
Недавно вышла очередная версия плагина Simple Tags. Проблема с UTF-8/многобайтными строками осталась (нужно бы написать автору ещё раз). Вдобавок появилась проблема с вызовом register_uninstall_hook() при каждой загрузки страницы (я исправлял аналогичную проблему с NextGen Gallery).
Из плюсов: Simple Tags 1.7.4.2 нормально работает с WordPress 3.0. Далее »
Автор: Vladimir, опубликовано в: Плагины WordPress, комментариев: 7Фев
2010
Исправление ошибки с поддержкой VERP в PHPMailer
PHPMailer — класс для отправки почты из PHP; используется многими известными приложениями, в том числе и WordPress.
VERP — техника, упрощающая автоматическое определение и удаление email-адресов из списков рассылки, сообщения которым не могут быть доставлены.
Поддержка VERP в PHPMailer хоть и реализована, но не работает. Далее »
Автор: Vladimir, опубликовано в: PHP, комментариев: нетФев
2010
Патч для php-cgi, позволяющий конфигурировать значение listen backlog
По умолчанию значение listen backlog в php-cgi жёстко задано — 128. Это означает, что PHP не сможет обработать более 128 запросов одновременно (точнее, что очередь запросов не сможет превысить данного значения). Я столкнулся с тем, что 128 — это мало.
Для тех, кто столкнулся с данной проблемой, но по каким-либо причинам не хочет/не может поставить php-fpm (в котором backlog конфигурируется), я сделал небольшой патч. Далее »
Автор: Vladimir, опубликовано в: C/C++, PHP, комментариев: 10Янв
2010
Оптимизация All in One SEO Pack
Как оказалось, плагин All in One SEO Pack — один из основных источников запросов к базе данных на блогах с большим количеством страниц (page). Всё дело в том, что в All in One SEO Pack есть одна неотключаемая особенность: он пытается переписать все ссылки, которые выводятся через функцию wp_list_pages() (обычно эта функция вызывается из заголовка или подвала темы и используется для создания меню).
Вообще переписывание ссылок — это отдельная история, заслуживающая отдельной статьи. Если вкратце, то плагин берёт метаданные из поста и заменяет ими title и текст ссылки.
Что характерно, если поле Title Attribute пустое, то All in One SEO Pack вообще затрёт title ссылки.
Проблема с запросами возникает из-за того, что All in One SEO Pack читает метаданные для каждой страницы, присутствующей в результате, который вернула функция wp_list_pages(). Если в меню тридцать страниц, то в результате получим тридцать лишних запросов к базе данных. Умножаем на количество показов страниц (страниц в широком смысле, а не в терминах WordPress) и получаем большую цифру. Далее »
Ноя
2009
Еще одна оптимизация NextGen Gallery
Плагин NextGen Gallery имеет одну неприятную особенность: при каждом обращении к блогу выполняется обновление (UPDATE в терминах MySQL) таблицы wp_options. Хотя для «средних» блогов это не критично, для хорошо посещаемых ресурсов это плохо по ряду причин:
- Обновление таблицы
wp_optionsсбрасывает кэш запросов MySQL к таблицеwp_options, что приводит к необходимости реального выполнения запросов на выборку данных (с учётом огромного количества записей — благодаря всяким разным плагинам — это лишний трафик между PHP и MySQL). - Выполнение операции обновления таблицы при использовании MyISAM приводит к блокировке таблицы; при высокой посещаемости это приводит к вынужденному ожиданию освобождения таблицы и негативно сказывается на нагрузке и производительности.
- При использовании плагинов объектного кэширования каждый вызов
update_option()приводит к необходимости обновления и записи кэша; обновление файлового объектного кэша приводит к лишним обращениям к диску (которых на виртуальных серверах лучше избегать). - В конце концов, это лишний запрос, который не является необходимым.
Ноя
2009
Еще один патч для Post Templates
Три месяца назад я писал о плагине Post Templates и его несовместимости с WordPress 2.8. С тех пор автор плагина исправил ошибки (что характерно, исправление захватило только те ошибки, что и мой патч), выпустил новую версию плагина и сменил лицензию плагина на коммерческую.
Тем не менее, последняя бесплатная версия Post Templates (на момент написания статьи — 3.4.1) содержит две ошибки, приводящие к облому вида «You do not have sufficient permissions to access this page». Ошибка проявляется при создании или редактировании шаблона страницы: на ней ссылки на Manage Templates и Create a page from this template ведут в никуда (а точнее — на страницу с ошибкой «You do not have sufficient permissions to access this page»). Далее »
Ноя
2009


Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.

