Документация по ОС FreeBSD Четверг, 06.02.2025, 19:54
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Мои статьи [0]
Установка и настройка [281]
X Window [25]
Man pages [30]
Ports & Packages [26]
cvs [18]
Multimedia [20]
Нововсти в мире Unix [0]
RFC [4]
RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Безопасность [52]
Работа с железом [58]
Книги по FreeBSD [17]
Сеть [505]
Программирование [40]
FireWall [58]
Темы экзамена BSDA [14]
Официальные темы экзамена BSDA, включая подробноые описания и советы по обучению.

Главная » Статьи » Установка и настройка

Мини заметки – выпуск 1 [2010]
В последнее время у меня накопилось множество мелкий наработок. В основном это скрипты и фильтры для WordPress. Какую-нибудь хитрую bash-команду я также отношу к наработкам. 
Для написания полноценного поста одной такой наработки недостаточно. В то же время хранить их в текстовых файлах неудобно. Попробуй отыщи тот самый скриптик, который писался пол года назад и хранится то ли дома, то ли на работе, то ли вообще на флешке или GMail. Потому я решил собирать свои мелкие наработки в этом блоге, чтобы всегда точно знать, где их можно найти. Начнем?

1. Замедляем поисковых роботов
Как я писал в одной из своих предыдущих заметок, поисковые роботы Рамблера могут создать большую нагрузку на ваши сайты. В своих блогах на WordPress я решаю эту проблему с помощью следующего кода:

add_action("wp_head", "anti_rambler");

function anti_rambler() {
  if(strpos($_SERVER["USER_AGENT"], "StackRambler"))
    sleep(10);
}

Просто добавляем его в файл functions.php вашей темы и все!

2. Качаем видео с YouTube и вырезаем из него музыку
Существует замечательная утилита для скачивания видео с YouTube. Во FreeBSD ее можно установить из портов:

portmaster -dw /usr/ports/distfiles/youtube_dl

Пользоваться ею очень просто:

youtube-dl 'http://www.youtube.com/watch?v=rvYZRskNV3w' -o 1.flv
mplayer 1.flv

Теперь, допустим, мы хотим сохранить звук из скаченного файла в mp3. Сначала смотрим информацию о файле:

ffmpeg -i 1.flv
Input #0, flv, from '1.flv':
  Metadata:
    duration        : 134
    starttime       : 0
    totalduration   : 134
    width           : 480
    height          : 360
    videodatarate   : 555
    audiodatarate   : 58
    totaldatarate   : 619
    framerate       : 25
    bytelength      : 10397942
    canseekontime   : true
    sourcedata      : B4A7D6C43HH1284026309763246
    purl            : 
    pmsg            : 
  Duration: 00:02:13.84, start: 0.000000, bitrate: 627 kb/s
    Stream #0.0: Video: h264, yuv420p, 480x360 [PAR 1:1 DAR 4:3], 568 kb/s, 25 tbr, 1k tbn, 50 tbc
    Stream #0.1: Audio: aac, 44100 Hz, stereo, s16, 59 kb/s
At least one output file must be specified

Если звук хранился в mp3, его можно просто сохранить в отдельном файле:

ffmpeg -i 1.flv -acodec copy 1.mp3

Однако в нашем случае использовался кодек aac, потому звук придется перекодировать:

ffmpeg -i 1.flv -acodec libmp3lame -ab 131072 sparta-techno-remix.mp3

Обратите внимание, что битрейт задается не в Кбит/сек, а в бит/сек.

Видео можно перекодировать в .avi:

ffmpeg -i 1.flv -acodec copy -vcodec mpeg4 1.avi

И напоследок – мой любимый прием с ffmpeg. Делаем звонок на мобильный из mp3:

ffmpeg -ss 00:00:35.10 -t 30 -i Morcheeba-Otherwise.mp3 -acodec copy call.mp3

Откуда и сколько резать можно выяснить с помощью mplayer или вашего любимой программы для проигрывания mp3.

3. Элементарный пример использования awk
Мне не часто приходится использовать эту утилиту, но иногда она бывает очень полезна. Чтобы сэкономить себе немного времени в следующий раз, когда она мне понадобится, я решил выложить простейший пример ее использования:

cat file.txt | awk 'BEGIN{FS="\t"}{print $1}'

Если file.txt содержит строки с некоторыми данными, разделенными знаками табуляции, данный пример выведет первый столбец данных.

Update: Как совершенно верно отписал в комментах СетевойГибитобой, команда cut справится не хуже:

cut -d : -f 1,7 /etc/passwd # вывести логин:шелл4. 

Снимаем скринкаст во FreeBSD
С помощью ffmpeg можно захватывать видео с экрана:

ffmpeg -f x11grab -s 1280x1024 -r 30 -b 1500k -i :0.0 nodump/out.mpg

Захватывать можно не весь экран, а только его часть. Размер захватываемой области задаются с помощью ключа -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).
  --device SOUND_DEVICE   Sound device(default /dev/dsp).
  --use-jack port1 port2... portn Record audio from the specified
          list of space-separated jack ports.
  --no-sound      Do not record sound.

Encoding Options
  --on-the-fly-encoding Encode the audio-video data, while recording.
  --v_quality n   A number from 0 to 63 for desired encoded video quality(default 63).
  --v_bitrate n   A number from 45000 to 2000000 for desired encoded video bitrate(default 45000).
  --s_quality n   Desired audio quality(-1 to 10).

Misc Options:
  --rescue path_to_data Encode data from a previous, crashed, session.
  --no-wm-check   Do not try to detect the window manager(and set options according to it)
  --pause-shortcut MOD+KEY  Shortcut that will be used for (un)pausing(default Control+Mod1+p).
  --stop-shortcut MOD+KEY Shortcut that will be used to stop the recording (default Control+Mod1+s).
  --compress-cache  Image data are cached with light compression.
  --workdir DIR   Location where a temporary directory will be created to hold project files(default $HOME).
  --delay n[H|h|M|m]  Number of secs(default),minutes or hours before capture starts(number can be float)
  --overwrite   If there is already a file with the same name, delete it
        (default is to add a number postfix to the new one).
  -o filename   Name of recorded video(default out.ogv).

  If no other options are specified, filename can be given without the -o switch.

Утилита может писать видео только в формате .ogv. Перекодировать его можно с помощью того же ffmpeg или mencoder:

mencoder out.ogv -ovc xvid -oac mp3lame -xvidencopts pass=1 -o out.avi

Предварительно следует убедиться, что 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:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]
RewriteRule (.*)$ http://site.ru/$1 [R=301,L]
</IfModule>Перенаправление с «/index.php» на «/»:

RewriteCond %{THE_REQUEST} ^.*/index\.php
RewriteRule ^(.*)index\.php$ http://site.ru/$1 [R=301,L]

7. Крадем музыку с интернет-радио
Часто по радио можно услышать редкие треки, которые не найти в сети. Сохранить весь эфир радиостанции под UNIX можно с помощью простого wget:

wget http://radio.bigbeats.ru:9054/ -O bigbeats-2010-XX-XX.mp3

Тут, правда, есть одна проблема – как потом нарезать 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:

$ figlet -f small EAX.ME
 ___    _    __  __   __  __ ___
| __ /_\   \  \ /   |  \/  | __|
| _|   _ \   >   < _| |\/| | _|
|___/_/ \_\/_/\_(_)_|  |_|___|


Полный список поддерживаемых «шрифтов» можно получить, выполнив команду

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. Привожу ее как есть – думаю, вы разберетесь:

Страница со словарями:
https://addons.mozilla.org/ru/firefox/browse/type:3

Ссылка на кнопке "Добавить в Firefox":
https://addons.mozilla.org/ru/firefox/downloads/latest/3497/addon-3497-latest.xpi?src=addondetail
Если убрать ?src=..., в диалоге добавления плагина firefox покажет нам, откуда лить плагин:
http://releases.mozilla.org/pub/mozilla.org/addons/3497/united_states_english_dictionary-4.0.0-fx+tb+sm.xpi

тянем wget'ом, аналогично льем русский словарь. Файлы .xpi являются обычными .zip архивами, так что распаковываем их утилитой unzip, затем

$ mkdir en-ru
$ mv en/install.rdf en-ru
$ mv en/install.js en-ru
$ cat en/dictionaries/en-US.dic ru/dictionaries/ru.dic > en-ru/dictionaries/en-ru.dic
$ cat en/dictionaries/en-US.aff ru/dictionaries/ru.aff > en-ru/dictionaries/en-ru.aff
$ cd en-ru
$ zip -r en-ru.xpi ./

Открываем в браузере URL file:///, находим полученный .xpi плагин и устанавливаем.

Полученный плагин можно также использовать в ThunderBird и SeaMonkey.

Я смутно припоминаю, что там был еще какой-то нюанс с повторяющимися строками. Например, если файлы .aff или .dic начинаются с одинаковых строк, значит после их конкатенации «заголовок» должен быть только один.

10. Заключение
Думаю, для первого выпуска достаточно. Ну как вам мои заметки? Я лично доволен – навел наконец порядок в каталоге ~/txt/. Если пост вам понравился, подпишитесь на RSS, чтобы не пропустить новые записки программиста



Источник: http://eax.me/mini-notes-issue-1/
Категория: Установка и настройка | Добавил: oleg (09.10.2010) | Автор: Александр
Просмотров: 872 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2025