Архив за Февраль 2008

INSERT OR IGNORE

Положим, что в таблице используется первичный ключ, чтобы избежать дублирования данных. Некоторые БД (например, SQLite) при внесении данных допускаю конструкцию вида
INSERT OR IGNORE INTO tablename ...
и тогда попытки внести данные, нарушающие уникальность первичного ключа, молча игнорируются.

В PostgreSQL, к сожалению такой синтаксис не работает, но добиться требуемого функционала можно с помощью создания специального правила, обрабатывающего операции добавления в таблицу tablename с первичным ключом userkey:

CREATE OR REPLACE RULE "insert_test" AS
  ON INSERT TO "tablename"
  WHERE
    EXISTS(SELECT 1 FROM tablename WHERE userkey=NEW.userkey)
  DO INSTEAD NOTHING

синхронизация и отмеченные сообщения в mutt

После многолетнего использования почтового клиента pine, при переходе на mutt хотелось бы сохранить привычные клавиатурные комбинации. Для этого пригодятся следующие сточки в файле ~/.muttrc

Синхронизации mailbox-а клавишей “x”
# sync mailboxes with "x"
bind index x sync-mailbox

Показ только отмеченных сообщений при нажатии клавиши “z”
# pine zoom with "z"
macro index z l~T\r

Повторное нажатие клавиши “z” в pine возвращает к полному списку сообщений, в mutt приходиться использовать отдельное сочетание клавиш, возьмём “ESC-z”
# not possible to simulate zoom-out, using "ESC-z"
macro index \ez lall\r

оптимизация ext2/ext3 c большим числом файлов в директориях

[источник]

В пакете e2fsprogs начиная с версии 1.39 появилась возможность использования технологии “directory indexing”, или “HTree”.

Чтобы включить dir_index, для отмонтированного раздела нужно выполнить команду:

tune2fs -O +dir_index /dev/hdb1

Далее нужно перестроить индекс директорий:

e2fsck -Df /dev/hdb1

запись картинки с монитора

[источник]

смотрим есть ли в ffmpeg поддержка x11grab и кодека qtrle

#ffmpeg -formats 2> /dev/null | egrep '(x11grab|qtrle)'
D x11grab X11grab
DEV D qtrle

“DEV” значит есть поддержка декодирования и кодирования, если у вас только “D V”, то нужно обновить ffmpeg.

Cнимаем картинку с параметрами: 60 кадров в секунду, ключевой кадр каждые 600 кадров(10 с.) и
разрешение 1280×1024 в файл screencast.mov

#ffmpeg -r 60 -g 600 -s 1280x1024 -f x11grab -i :0.0 -vcodec qtrle screencast.mov

timidity

timidity — программный синтезатор midi, для работы ему нужен банк звуков, а в поставке debian идет, к сожалению, далеко не полный набор freepats.
Что делать?
Прежде всего нам нужен конфигурационный файл, поэтому копируем системный себе в домашнюю директорию
cp /etc/timidity/timidity.cfg ~/.timidity.cfg
Скачиваем более полный банк, например eawpats и распаковываем в ~/eawpats
Далее правим наш файл конфигурации: закрываем комментарием freepats и добавляем следующие строки
#source /etc/timidity/freepats.cfg
dir /home/USER/eawpats/
source gravis.cfg
source gsdrums.cfg
source gssfx.cfg
source xgmap2.cfg

…готово

Другая возможность — использовать файлы soundfont (например PC51f.sf2 или Unison.sf2) которые подключаются так
#source /etc/timidity/freepats.cfg
soundfont /home/USER/Unison.sf2 order=0