Глупый пингвин робко прячет, умный - смело достает...
Изображение пользователя alexander ufimtsev.

Есть совет? Добавьте его сюда!

Tags:

Долго ковырялся с компом и что-то настраивал? Не смог наскоком найти ответ на вопрос в Гугле? Тогда добавь сюда свой совет, мы будем рады его опубликовать! Неважно, если это "рецепт по боданию" с каким-то из вариантов Linux, Unix или другого СПО проекта. Опубликуем, поможем улучшить и сохранить сию крупицу знания!

Жмите сюда, чтобы ДОБАВИТЬ СОВЕТ

Регистрация на сайте необязательна, но чтобы не возиться с captcha, рекомендуем все-таки зарегистрироваться. По любым вопросам обращайтесь в наш форум или стучитесь в обратную связь.

Благодарим за визит и отклики!

конвертирование видео для просмотра на мобильных устройствах

Tags: •  •  •  •  •  • 

Пока еду на работу смотрю видео на телефоне. А чтобы упростить задачу конвертирования нормального видео в формат который без проблем показывается на мобильном устройстве использую следующий простенький скриптег.

#!/bin/bash

in=$1
out=${in%.*}.m.avi
echo $in "==>" $out
info=$(mplayer -identify $in -ao null -vo null -frames 0)
width=$(echo $info | sed -n "s/.*ID_VIDEO_WIDTH=\([0-9]*\).*/\1/p")
height=$(echo $info | sed -n "s/.*ID_VIDEO_HEIGHT=\([0-9]*\).*/\1/p")
aspect=$(echo "scale=4 ; $width / $height" | bc)
echo "width="$width ", height="$height ", aspect="$aspect
nwidth=320
nheight=$(echo "$nwidth / $aspect / 2 * 2" | bc )
echo "nwidth="$nwidth ", nheight="$nheight

ffmpeg -y -i $in -vcodec libxvid -s ${nwidth}x${nheight} -r 25 \
    -acodec libmp3lame -ac 2 -ar 44100 \
    -threads 3 -bf 2 -umv  -4mv -me full -g 250 $out

Я обозвал этот скрипт avi4mobile.sh и вызываю следующим образом

$ avi4mobile.sh video.avi

при этом создается файл video.m.avi (m - в смысле мобильный)
при конвертировании сохраняется отношение ширина/высота.

Линки в тему на сайте:

  1. Как работать с видео в формате .3gp в Linux
  2. Как проигрывать .3gp файлы?

Интересный мозаичный WM

Tags: •  •  •  • 

Наткнулся на интересный мозаичный оконный менеджер - Awesome
http://awesome.naquadah.org/
ИМХО: На первых парах особенно понравилось, что он вполне юзабелен "по-дефолту" и имеет вполне удобные (ИМХО!) распальцовки: http://awesome.naquadah.org/wiki/index.php/Command_Reference_2_0
На данный момент, версия 2.3-rc1 есть в бэкпортах Debian Etch

dotfiles

Tags: •  •  •  • 

Как известно, во многих случаях, лучший учебник по программированию - это исходник.
Такое же утверждение справедливо и для файлов конфигруации разных *nix-программ (.files = dotfiles)
Вот нашёл ресурсы, где можно позаимствовать для исследования чужие конфиги, или выложить свои:
http://www.dotfiles.com/
http://dotfiles.org/

Изображение пользователя ramok.

Сканирование и послеобработка изображений из командной строки

Tags: •  •  •  •  •  •  • 

Возникла необходимость отсканировать пару страничек с паспорта и отослать по почте. Задача решилась таким вот способом.

# настраиваем сканер 
$ sudo apt-get install sane libsane
$ rehash
$ sudo sane-find-scanner -q
found USB scanner (vendor=0x04a9 [Canon], product=0x220e [CanoScan], chip=LM9832/3) at libusb:004:004
$ sudo scanimage -L
device `plustek:libusb:004:004' is a Canon CanoScan N1240U/LiDE30 flatbed scanner

# сканируем две странички паспорта в out1.pnm и out2.pnm
$ sudo xscanimage

# конвертим .pnm в .jpg
$ convert out1.pnm ukr-pass-1.jpg
$ convert out2.pnm ukr-pass-2.jpg

# проверяем что получилось
$ feh ukr-pass*.jpg

# поворачиваем на 180 градусов если надо. (повернуть фотографии можно и прямо в feh)
$ convert -rotate 180 ukr-pass-2.jpg  ukr-pass-2.jpg

# сливаем два изображения в одно
$ montage -adjoin -geometry 1024x768 ukr-pass-1.jpg ukr-pass-2.jpg ukr-pass.jpg 

# почистим за собой
$ rm out1.pnm out2.pnm ukr-pass-1.jpg ukr-pass-2.jpg

# отошлем сканы
$ mutt -a ukr-pass.jpg

Как разрезать видео на фрагменты нужного размера

Tags: •  •  •  •  • 

Имеем: Большой видео-файл
Требуется: Разделить его на несколько маленьких, каждый из которых будет полноценным видео-файлом.
Зачем: Например, что бы записать по частям на вышедшие из моды CD-R балванки или слить большой файл частями на rapidshare или в другое место, где имеется ограничение на размер расшариваемых файлов.

Допустим, собираемся поделить файл 300.avi на два файла на границе 10MB.

1. Время и номер фрейма для точки, в которой будем резать, определить можно вот так:

% mencoder -ovc copy -oac copy -endpos 10mb -o /dev/null 300.avi
...

Video stream: 1880.602 kbit/s  (235075 B/s)  size: 8678976 bytes  36.920 secs  923 frames

2. Теперь имеем всю необходимую информацию, и воспользовавшись вот этим советом, создаем два файла:
первый:

% mencoder 300.avi -endpos 36.920 -o 300_PART1.avi -oac copy -ovc lavc -lavcopts vcodec=mpeg4

второй:
% mencoder 300.avi -ss 36.920 -o 300_PART2.avi -oac copy -ovc lavc -lavcopts vcodec=mpeg4

Готово!

P.S. не сильно разбираюсь в различных видео-форматах и кодеках. Возможно, что не с любым файлом данный пример получится.

Изображение пользователя ramok.

На каком разделе находится файл иди директория?

Tags: • 

Из-за символических ссылок на файлы и директории, а так из-за возможности монтировать директории несколько раз (mount --bind), а так же подмонтированные сетевые разделы, не всегда разберешься на каком разделе находится директория или файл. Но за вас это может сделать команда df. За одно просвятит сколько места осталось на этом разделе Ж:-)

Из примера выясняется что директория mp3 является ссылкой на директорию mapocho/mp3/ramok/, которая в свою очередь подмонтирован сетевой раздел из машины mapochco.

$ ls -ld ~/mp3
lrwxrwxrwx 1 komar komar 17 Окт  5  2005 /home/ramok/mp3 -> mapocho/mp3/ramok/
$ df -h ~/mp3
Файловая система      Разм  Исп  Дост  Исп% смонтирована на
mapocho:/usr/local/dump
                      275G  261G  245M 100% /home/ramok/mapocho

Изображение пользователя ramok.

Вставка текста из клипбоарда в терминале без мышки

Tags: •  •  •  • 

С недавних пор активно использую shift-ins для вставки текста из системного клипбоарда. Раньше пользовался только вставкой средней клавишей мышки.
Работает как минимум в xterm, rxvt и urxvt.

Изображение пользователя ramok.

Приспосабливаем vim к программированию на кросс-компиляторах

Tags: •  •  • 

Первое чего не хватает в vim при работе с кросс-компиляторами - это то что vim не правильно прыгает на подключаемые файлы в #include<..> по клавишам gf, ctrl-w f. А так же не ищет объявление переменных и функций в подключаемых файлах по [d, [D и не прыгает на объявления по [ ctrl-d, ctrl-w d. И не ищет вхождения в подключаемых файлах по [I, [ ctrl-i.

vim-у можно указать где искать подключамые файлы в переменной :set path. Например для кросс компилятора AVR можно указать

:set path=.,/usr/avr/include,,

Так же некоторые кросс компиляторы имеют свою man программу. Например avr кросс-компилятор в Debian имеет avr-man. Что бы работала клавиша вызова man из vim по клавише K можно указать нужную man программу

:set keywordprg=avr-man

Все это можно добавить или в ~/.vimrc или воспользоваться локальным .vimrc в корне проекта.

Изображение пользователя ramok.

Скрипт перевода русских слов набраных в английской расскладке

Tags: • 

Многие печатают смотря на клавиатуру и поэтому не сразу замечают что печатают по русски не переключив раскладку. Или у меня когда сижу на с плохим интернетом, то при печати в аське которая на сервере прежде чем видишь что печатаешь, проходит секунд 10 и успеваешь пару предложений набрать Ж:-)

Простенький скрипт перевода русских слов набранных в английской раскладке. Построчно переводит стандартный ввод и выводит результат на стандартный вывод. Можно как параметр скрипта указывать имя файла (мне ни разу не понадобилось правда Ж:-).

Учтите что сам скрипт сохранён в KOI8-R кодировке, а после чего iconv -f koi8-r переводит вывод в вашу текущую локаль (у меня например ru_RU.UTF-8).
Что бы не мучатся с перекодировкой можно просто скачать (не забываем переименовать и дать права на исполнение Ж:-).

#!/bin/sh
# for translation wrong typed text like: hfvjr -> рамок

cat $* |
    tr "qwertyuiop[]nm,./QWERTYUIOP{}ASDFGHJKL:\"ZXCVBNM<>?" \
       "йцукенгшщзхъфывапролджэячсмитьбю/ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ?" |
        iconv -f koi8-r

Пример использования:

$ 2cyr
ye xnj e dfc nfv dc. yjxm uekzkb&
ну что у вас там всю ночь гуляли&
^D
$

Способы объединения pdf-файлов

Tags: •  •  • 

Иногда необходимо объединить некоторое количество PDF файлов в один. Это могут быть и главы книги и какие-либо иные, связанные по смыслу или содержимому файлы, которые вам понадобилось представить в виде одного. Приведем несколько способов, позволяющих сделать это.

1. Использование GhostScript напрямую. Ghostscript - пакет, позволяющий вам просматривать или печатать PostScript и PDF файлы, а также конвертировать их в другие форматы. Данный пакет достаточно часто используется, но вместе с тем, немногие пользуются его возможностями для объединения файлов PDF.

$ gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=single.pdf part1.pdf part2.pdf

  1. gs -- собственно вызов Ghostscript
  2. -dBATCH -- завершить работу Ghostscript после завершения объединения
  3. -dNOPAUSE -- производить операции без запросов пользователю
  4. -q -- не выводить сообщений (тихий режим)
  5. -sDEVICE=pdfwrite -- использовать встроенную утилиту для работы с PDF файлами
  6. -sOutputFile=single.pdf -- имя результирующего файла

Если вам часто приходится производить операцию объединения, то можно добавить в настройки вашей оболочки следующую строку, убыстряющую вызов:
$ alias pdflink='gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=./result.pdf'

Аналогично gs работает и с PS файлами.

2. joinPDF - консольная утилита для объединения, написанная на Java и требующая JRE для своей работы. Использование достаточно тривиальное:

$ joinpdf result.pdf part1.pdf part2.pdf

3. Способ для пользователей KDE: kprinter, служащий GUI для работы с Ghostscript. Нужно выбрать вывод в файл соответствующего типа (PDF,PS) и добавить объединяемые части в порядке их следования в результирующем файле.

Изображение пользователя ramok.

Введение в vimperator

Tags: •  • 

Здесь перечислены команды плагина vimperator, превращающий интерфейс firefox в некоторое подобие vim, которые лично я использую наиболее часто. Но рекомендую прочесть :help там еще много чего интересного, до чего я еще не дорос Ж:-) Например возможность писать макросы с помощью q и :map, полностью безмышковая навигация (например кликаю по линкам, копирую их буфер, выделяю текст я мышкой).

  1. o - открыть запрос на ввод урла для открытия в текущем окне. Аналог :open.
  2. O - Аналог :open <текущий-урл>.
Изображение пользователя ramok.

Как вырезать фрагмент видео в командной строке

Tags: •  •  •  • 

Вырезает из файла PinguinMST1.avi фрагмент видео начиная с 3-й минуты 54 секунд по 6-ю 11 секунды.
Результатом будет файл pinguin.avi закодированный видеокодеком mpeg4.

$ mencoder PinguinMST1.avi -ss 3:54 -endpos 6:11 -o pinguin.avi -oac copy -ovc lavc -lavcopts vcodec=mpeg4

Хронометраж можно узнать просмотрев видео в mplayer включив отсчет времени клавишей o.

Изображение пользователя ramok.

phpinfo() из командной строки

Tags: •  • 

Я сталкиваюсь с php только как админ (ну или подправить пару строчек в чужом скрипте) и часто надо возникает необходимость проверять настройки php на сервере. Для этого я создавал файлик с таким содержимым:

<?php
    phpinfo();
?>

называл его как то info.php, забрасывал в корневой каталог какого нибуть сайта на сервере и открывал в броузере.
Это был самый очевидный путь, и он меня вполне устраивал Ж:-)

Но недавно мне подсказали более простой путь узнать эту информацию прямо в командной строке:

$ php -i

Ввод символов с акцентами в Линукс (compose)

Взято тут
В Linux (точнее в X Window System) есть потрясающее средство для ввода символов отсутствующих в установленной раскладке клавиатуры. Это средство называется клавиша Compose. С помощью неё можно вводить практически все варианты символов с акцентами, а также разные специальные символы.

Чтобы включить compose необходимо отредактировать /etc/X11/xorg.conf секцию InputDevice строку XkbOptions:

Section "InputDevice"
Identifier "Generic Keyboard"
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "us,ru"
Option "XkbOptions" "grp:alt_shift_toggle,grp_led:scroll,compose:ralt" 
EndSection

После этого, стало возможным набирать много интересных символов, нажимая вначале клавишу Compose, а потом набирая ту или короткую иную последовательность. Например,

Compose + O + C даёт © (символ авторского права),
Compose + O + R даёт ®,
Compose + = + e даёт € (знак евро),
Copmose + = + y даёт ¥ (знак йены),
Compose + - + - + - даёт — (тире, знак препинания),
Compose + - + - + . даёт – (короткое тире, разделитель диапазонов и фамилий)
Compose + < + < даёт « (левую кавычку-ёлочку),
Compose + > + > даёт » (правую кавычку-ёлочку),
Compose + " + , даёт „ (левую кавычку-лапку),
Compose + " + < даёт “ (правую кавычку-лапку),
Compose + пробел + пробел даёт неразрывный пробел.

Изображение пользователя alexu.

Как удалить файлы из Subversion (SVN) репозитория

Tags: •  •  •  • 

Файлы из SVN репозитория нельзя удалить подобно файлам из CVS. Для удаления могут быть разные причины, включая случайный commit или разделение одного репозитория на несколько. На будущее разработчики запланировали опцию 'obfuscate', но в настоящее время единственным способом является следующий:

svnadmin dump /путь/к/репозиторию > myrepo.dump
cat myrepo.dump | svndumpfilter exclude /путь/к/ненужным/файлам/репозитория >myrepo.clean
mv /путь/к/репозиторию /путь/к/репозиторию.bkp
svnadmin create --fs-type fsfs /путь/к/репозиторию
svnadmin load myrepo.clean

Пояснения к коду ниже:

Изображение пользователя ramok.

Нумерация терминалов в screen с 1 а не с 0

Tags: • 

Добавьте в ~/.screenrc строчку:

screen 1

И после запуска screen, первый открытый терминал будет имет номер 1 (а не 0, что многих раздражает).

Изображение пользователя ak47punk.

Автодополнение для sudo

Все мы знаем, что sudo >> su =) Но в работе с sudo есть один серьёзный минус: нет автодополнения. Как оказалось, проблема решается крайне просто: пишем в ~/.bashrc:

complete -cf sudo
Естественно, работает для любого другого буквосочетания.

Качать с Youtube.com в командной строке

Случайно встретил и мне понравилось.
Приблуда называется (g)vdown.
Берем тутисходники (по-крайней мере, для Слаки она не собрана).

# cd /usr/src
# wget http://vdown.googlecode.com/files/gvdown-0.6.5.tar.gz
# tar xvf gvdown-0.6.5.tar.gz
# cp gvdown-0.6.5/nonsrc/setup.sh gvdown-0.6.5/
# cd gvdown-0.6.5/
# ./setup.sh

Должно появиться такое сообщение:

Installation was successful, if no errors were shown.
You can now start vdown with 'vdown URL1 URL2' and so on, you can start gvdown with Applications->Internet->GVDOWN or 'gvdown'.

Для работы gvdown необходим PyGTKv2. Я поставил PyGTK 2.11.0

Работать с ней можно и в консоли, например:

# cd /home/user/video
# vdown http://youtube.com/watch?v=SDbkubSYvUQ

В итоге скачивается .flv-шка

зайти в screen на удалённой системе

Tags: •  •  •  •  • 

Требуется: Приатачиться к screen, запущенному на удалённой системе с минимальным количеством телодвижений.

Решение:
Не обязательно, но все таки:
1. делаем беспарольную аутентификацию как рассказно здесь
затем
2.

$ ssh -t login@host 'source .bashrc; screen -x'

Готово!

3. И на последок, что бы все вышеперечисленное таки совершалось с наименьшим количеством телодвижений, создаем скрипт:

$ cat >remotescreen
!#/bin/sh 
ssh -t login@host 'source .bashrc; screen -x'

$chmod 755 remotescreen

3.a ... или делаем алиас в любимом .*shrc
[code]