RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
В последнее время у меня накопилось множество мелкий наработок. В основном это скрипты и фильтры для WordPress. Какую-нибудь хитрую bash-команду я также отношу к наработкам.
Для написания полноценного поста одной такой наработки недостаточно. В то же время хранить их в текстовых файлах неудобно. Попробуй отыщи тот самый скриптик, который писался пол года назад и хранится то ли дома, то ли на работе, то ли вообще на флешке или GMail. Потому я решил собирать свои мелкие наработки в этом блоге, чтобы всегда точно знать, где их можно найти. Начнем?
1. Замедляем поисковых роботов
Как я писал в одной из своих предыдущих заметок, поисковые роботы Рамблера могут создать большую нагрузку на ваши сайты. В своих блогах на WordPress я решаю эту проблему с помощью следующего кода:
Откуда и сколько резать можно выяснить с помощью mplayer или вашего любимой программы для проигрывания mp3.
3. Элементарный пример использования awk
Мне не часто приходится использовать эту утилиту, но иногда она бывает очень полезна. Чтобы сэкономить себе немного времени в следующий раз, когда она мне понадобится, я решил выложить простейший пример ее использования:
cat file.txt | awk 'BEGIN{FS="\t"}{print $1}'
Если file.txt содержит строки с некоторыми данными, разделенными знаками табуляции, данный пример выведет первый столбец данных.
Update: Как совершенно верно отписал в комментах СетевойГибитобой, команда cut справится не хуже:
Захватывать можно не весь экран, а только его часть. Размер захватываемой области задаются с помощью ключа -s, а координаты левого верхнего угла можно задать ключом -i
-i :0,0+100,50
В приведенном примере 100 – это смещение по X, 50 – по Y. К видео потом можно прикрепить комментарии или музыку (см примеры с ffmpeg в пункте 2).
Чтобы снимать скринкасты с помощью ffmpeg, необходимо убедится, что программа была собрана с опцией VHOOK. Порт находится в /usr/ports/multimedia/ffmpeg – переходим и говорим «make config».
Также скринкасты можно снимать с помощью recordmydesktop (/usr/ports/multimedia/recordmydesktop/):
$ recordmydesktop --help
Usage:
recordmydesktop [OPTIONS]^filename
General Options:
-h or --help Print this help and exit.
--version Print program version and exit.
--print-config Print info about options selected during compilation and exit.
Image Options:
--windowid id_of_window id of window to be recorded.
--display DISPLAY Display to connect to.
-x X Offset in x direction.
-y Y Offset in y direction.
--width N Width of recorded window.
--height N Height of recorded window.
--dummy-cursor color Color of the dummy cursor [black|white]
--no-cursor Disable drawing of the cursor.
--no-shared Disable usage of MIT-shared memory extension(Not Recommended!).
--full-shots Take full screenshot at every frame(Not recomended!).
--quick-subsampling Do subsampling of the chroma planes by discarding,not averaging.
--fps N(number>0.0) A positive number denoting desired framerate.
Sound Options:
--channels N A positive number denoting desired sound channels in recording.
--freq N A positive number denoting desired sound frequency.
--buffer-size N A positive number denoting the desired sound buffer size (in frames,when using ALSA or OSS)
--ring-buffer-size N A float number denoting the desired ring buffer size (in seconds,when using JACK only).
Предварительно следует убедиться, что mencoder был собран с опцией THEORA.
Да, кстати, для снятия скриншотов я пользуюсь scrot – /usr/ports/graphics/scrot.
5. Постинг в ЖЖ на Perl
Есть замечательный модуль для Perl под названием Net::LiveJournal. В портах его нет, но можно поставить с помощью cpan. Как несложно догадаться, предназначен он для работы с ЖЖ.
#!/usr/bin/perl
use strict;
use Net::LiveJournal;
# ..........
my $lj = Net::LiveJournal->new(
user => $ljuser,
password => $ljpass);
my $entry = Net::LiveJournal::Entry->new(
subject => $title,
body => $data);
$lj->post($entry) or die $lj->errstr;
См также мои посты о создании ботов на Perl для WordPress и Twitter.
6. Памятка по .htaccess
Если посты с вашего блога коммуниздит какой-то говносайт, можно ограничить доступ к блогу по IP, маске сети или UserAgent:
SetEnvIfNoCase User-Agent "^SimplePie" ddos
Order Allow,Deny
Allow from all
Deny from env=ddos # баним по UserAgent
Deny from 192.168.0.1 # баним по IP
Deny from 192.168.0. # баним всю сеть 192.168.0/24
Доступ к некоторым разделам сайта (админкам, веб-шеллам и тд) желательно закрывать с помощью пароля:
AuthUserFile /full/path/to/.htpasswd
AuthType Basic
AuthName "Password Required"
Require valid-user
Для генерации файла .htpasswd используется одноименная утилита:
htpasswd -c .htpasswd newuserПеренаправление с www.site.ru на site.ru:
Тут, правда, есть одна проблема – как потом нарезать mp3 файл на треки? В портах я нашел утилиту mp3split (/usr/ports/audio/mp3splt). Она нарезает файл на треки, находя паузы между песнями в исходном файле. К сожалению, в случае с моей любимой радиостанцией такой прием не срабатывает – переход между треками очень плавный, без пауз. Способа автоматизировать процесс мне пока неизвестно, так что делать все приходится руками (см пункт 2).
Кстати, для прослушивания интернет-радио я использую утилиту mpg123. Вот список неплохих радиостанций:
http://radio.bigbeats.ru:9054/
http://www.dnbradio.com/hi.m3u
http://www.bassdrive.com/v2/streams/BassDrive.pls
http://station20.ru:8000/station-128.m3u
http://radio3.promodeejay.net:8000/300kmh-192
http://16bit.fm:9500/listen.pls
А вот кусок моего .bashrc для быстрого включения музыки:
alias eradio="mpg123 -@ `head -n 1 ~/txt/e-radio.txt`"
Разумеется, всю музыку я покупаю только в магазинах на CD, ниоткуда не скачиваю и никаких радиостанций не граблю. Надеюсь, вы поняли что данный пункт – просто шутка. Ха-ха.
8. Генерируем надписи в ascii art
В портах есть интересная утилита – figlet (/usr/ports/misc/figlet). С ее помощью можно генерировать надписи в ascii art:
Полный список поддерживаемых «шрифтов» можно получить, выполнив команду
ls /usr/local/share/figlet
Ну и раз речь зашла об ascii art, грех будет не упомянуть про программу cowsay (/usr/ports/games/cowsay/). Пример ее работы:
$ cowsay -f dragon Subscribe to my RSS feed\!
___________________________
< Subscribe to my RSS feed! >
---------------------------
\ / \ //\
\ |\___/| / \// \\
/0 0 \__ / // | \ \
/ / \/_/ // | \ \
@_^_@'/ \/_ // | \ \
//_^_/ \/_ // | \ \
( //) | \/// | \ \
( / /) _|_ / ) // | \ _\
( // /) '/,_ _ _/ ( ; -. | _ _\.-~ .-~~~^-.
(( / / )) ,-{ _ `-.|.-~-. .~ `.
(( // / )) '/\ / ~-. _ .-~ .-~^-. \
(( /// )) `. { } / \ \
(( / )) .----~-.\ \-' .~ \ `. \^-.
///.----..> \ _ -~ `. ^-` ^-_
///-._ _ _ _ _ _ _}^ - - - - ~ ~-- ,.-~
/.-~
9. Создаем свой словарь для Firefox/Thunderbird/SeaMonkey
По просьбам читателей блога, я отыскал на диске памятку по созданию собственного словаря для программ от Mozilla. Привожу ее как есть – думаю, вы разберетесь:
Открываем в браузере URL file:///, находим полученный .xpi плагин и устанавливаем.
Полученный плагин можно также использовать в ThunderBird и SeaMonkey.
Я смутно припоминаю, что там был еще какой-то нюанс с повторяющимися строками. Например, если файлы .aff или .dic начинаются с одинаковых строк, значит после их конкатенации «заголовок» должен быть только один.
10. Заключение
Думаю, для первого выпуска достаточно. Ну как вам мои заметки? Я лично доволен – навел наконец порядок в каталоге ~/txt/. Если пост вам понравился, подпишитесь на RSS, чтобы не пропустить новые записки программиста