22 февр. 2012 г.

Mediawiki-1.18 Upload Error

После обновления движка локальной корпоративной wiki (до mediawiki-1.18) словил пренеприятный баг: попытка загрузить в систему файл приводила к MediaWiki internal error. Более подробная отладка ($wgShowExceptionDetails = true; в LocalSettings.php) выявила следующее:
 Warning: pg_query() [function.pg-query]: Query failed: ERROR: syntax error at or near ")" LINE 1: ...ploadStash::stashFile Delayer */ FROM "uploadstash" WHERE ) ^ in /srv/www/wiki/includes/db/DatabasePostgres.php on line 253
Warning: pg_query() [function.pg-query]: Query failed: ERROR: current transaction is aborted, commands ignored until end of transaction block in /srv/www/wiki/includes/db/DatabasePostgres.php on line 253
Original exception: exception 'DBQueryError' with message 'A database error has occurred. Did you forget to run maintenance/update.php after upgrading? See: http://www.mediawiki.org/wiki/Manual:Upgrading#Run_the_update_script
Query: DELETE FROM "uploadstash" WHERE )
Function: UploadStash::stashFile
Error: 1 ERROR: syntax error at or near ")"
LINE 1: ...ploadStash::stashFile Delayer */ FROM "uploadstash" WHERE )
^
' in /srv/www/wiki/includes/db/Database.php:860
 Поиски решения привели на багзиллу проекта с обсуждением подобной ошибки. Выяснилось, что проблема известна, подтверждена и над ее решением ведется работа. На момент написания этого поста имеется возможное решение, которое заключается в легкой правке строчки #296 файла includes/upload/UploadStash.php (относительно корневого каталога вашей mediawiki): строчку
'us_key', 
следует заменить на 
array( 'us_key' ),
В моем случае это решение сработало.

Многопальцевые щелчки в synaptics-vased тачпадах.

Если у вас есть ноут с тачпадом, поддерживающим мультитач, то достаточно удобным, на мой взгляд, дополнением к two-fingers scrolling (включать который по умолчанию умеют уже многие дистрибутивы) является возможность эмуляции правого и среднего клика. К примеру, тап двумя пальцами эмулирует нажатие правой кнопки мыши, а тап тремя пальцами - средней. Сделать это просто ибо все уже украдено до нас (с). Создаем в директории с конфигурационными файлами  X.org-а (или берем готовый, если имеется, 50-synaptics.conf) файлик следующего содержания:
Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
        Option    "HorizScrollDelta"    "0"
        Option "TapButton1" "1"
        Option "TapButton2" "2"
        Option "TapButton3" "3"
EndSection
Собственно, все. После перезапуска Х-сервера настройки должны подхватиться. Вообще, драйвер x11-input-synaptics умеет достаточно много чего, и все его возможности включаются и настраиваются подобным образом - через Option в Section "InputClass". Достаточно подробное описание доступных опций имеется, конечно же, в man synaptics.

З.Ы.: В принципе, никто не отменял возможность вышеперечисленные правки внести и прямо в xorg.conf, однако в современных дистрибутивах его зачастую днем с огнем не сыщешь - конфигурация собирается динамически с использованием конфигурационных каталогов /usr/share/X11/xorg.conf.d/ (по-поему, есть везде), /etc/X11/xorg.conf.d/ (такой есть в OpenSuSE), а может и еще где-то; для конкретного дистрибутива можно уточнить расположение этих каталогов в man xorg.conf.d .