2013-04-28

Нафаршированный ffmpeg : готовый deb-пакет и немного записи

Примерно год назад я писал о том, как установить ffmpeg со всевозможными кодеками в Ubuntu 12.04. Это работает и в 13.04, без изменений. Но, так как я люблю моих читателей, и предполагаю, что им лень собирать это самостоятельно, предлагаю скачать уже собранный под 32-битную версию Ubuntu 13.04 пакет.
Вот ссылка.

P.S. Прошу прощения, установленный пакет у меня не заработал на машине, где предварительно я не установил всю ту кучу библиотек, нужную для сборки. Так что лучше из исходников собирать.

P.S. Кстати, а вы знали, что с помощью ffmpeg можно записывать то, что слушаете, к примеру в интернете? Например, с Яндекс.Музыки. Я раньше писал о том, как это сделать, так вот что касается pavucontrol - обязательно, а вместо заморочек с audacity можно сделать так:

ffmpeg -f alsa -ac 2 -i pulse -acodec libmp3lame -aq 4 file.mp3

Это даст нам файл mp3 с переменным битрейтом 140-185 (-aq 4). О том, какие битрейты можно выставить, прочтите здесь. Самое сложное - вовремя включить и выключить запись. Я пробовал записывать подряд, и потом разбить трек на части с помощью mp3splt по секунде тишины, но 1) возникают артефакты в месте разрыва и 2) иногда в композициях бывает тишина, так надо. Вобщем, пока думаю, как бы это автоматизировать, а вы присоединяйтесь!

2013-04-02

Цветной Python: выводим в консоль красиво

Наигравшись с nodejs возвращаюсь к старому доброму python. Запишу себе на память шпаргалку о том, как сделать стандартный вывод в консоль цветным.
Используются стандартные ANSI escape code, применение выглядит так:

print '\033[36mCYANCOLOR\033[0m'
print '\033[96mINTENSIVECYANCOLOR\033[0m'

Кодов 109 штук, но применимыми выглядят только эти:


  • 0 - по умолчанию
  • 1 - усиленный (жирный или более интенсивный цвет)
  • 2 - ослабленный (нежирный или менее интенсивный цвет)
  • 4 - подчёркнутый
  • 7 - негативные цвета
  • 8 - скрытый
  • 9 - перечёркнутый
  • 30 - черный
  • 31 - красный
  • 32 - зелёный
  • 33 - желтый
  • 34 - синий
  • 35 - пурпурный
  • 36 - голубой
  • 37 - белый (светло-серый)
  • 40-47 - аналогично 30-37, но цвет применяется к фону
  • 90-97 - аналогично 30-37, но цвет более интенсивный
  • 100-107 - аналогично 40-47, но цвет более интенсивный


2013-02-28

Использование Git


Использовать систему контроля версий GIT очень просто. Для начала вот краткий инструктаж. Устанавливаем git:
sudo apt-get install git

Перемещаемся в корневой каталог проекта и инициализируем проект:
cd ~/Projects/myProjectName
git init

Для хостинга проекта я использую Bitbucket. Зарегистрируйтесь на сайте и получите
имя пользователя, допустим, это myBBname. Теперь нужно создать проект, думаю, разберётесь. Пусть он называется myProjectName. Добавим запись о нём, назовём запись REPONAME:
git remote add REPONAME https://myBBname@bitbucket.org/myBBname/myProjectName.git

Добавляем файл(ы) в репозатарий
git add *.php

Когда закончим добавлять новые/изменённые файлы/каталоги, подтверждаем и указываем комментарий:
git commit -m "Пояснение к коммиту"

Теперь можно залить изменённые данные на сервер; используем запись REPONAME, основная ветка:
git push -u REPONAME master

BitBucket запросит пароль аккаунта для myBBname. Если всё было сделано правильно, то файлы зальются на сервер, а в вашем аккаунте появится информация о пределанных операциях.

Через несколько push-ей у вас повится зуд в пальцах от того, что каждый раз нужно вводить пароль. Нужно это как-то поправить. Решение - в использовании SSH и ключей. Запустим утилиту `ssh-keygen`:
ssh-keygen

Она будет предлагать варианты действий, ключевым из которых будет имя создаваемого
файла ключа (как правило, это `~/.ssh/id_rsa.pub`) и passphrase. Придумайте что-нибудь сами.
Теперь у нас есть файл ключа, закинем его в аккаунт Bitbucket (с учетом названия вашего аккаунта): https://bitbucket.org/account/user/myBBname/ssh-keys/

Там всё просто: Add Key, даём ему понятное название, в текстовое поле вносим содержимое файла ключа, сохраняем.
Добавим новую запись о проекте, через которую будем осуществлять доступ к серверу, в варианте для SSH (назовём её SSHREPONAME):
git remote add SSHREPONAME ssh://git@bitbucket.org/myBBname/myProjectName.git

Отлично. Теперь сделаем так, чтобы наш пароль был ассоциирован с ssh-ключом. Запустим `ssh-agent` для оболочки:
ssh-agent bash
ssh-add

У нас спросят ту самую passphrase, которую мы вводили, когда генерировали файл-ключ с помощью `ssh-keygen`.
Теперь, отправляя файлы на сервер, можно использовать ssh-запись, и будет использован ключ, а не пароль.
git push -u SSHREPONAME master

В завершении скажу, что можно использовать плагин Git в Sublime Text 2,
особенно если создать проект ровно в том-же каталоге, где и создан репозитарий git. И это очень удобно.

2013-02-19

Pidgin и ошибка аутентификации

Что-то я такое сделал, что при попытке соединения Pidgin с GTalk и chat.facebook.com мой верный IM выдавал ошибку с текстом:
"Сервер не использует ни одного поддерживаемого метода аутентификации"
Перепробовав все настройки, и даже предприняв попытку собрать версию Pidgin посвежее, остановился на смене клиента. Gajim работал, но пришлось держать запущенными аж два приложения: Gajim для jabber-протокола и Pidgin для ICQ.
Сегодня натолкнулся на причину такого странного отказа довольно надёжного клиента сообщений. А именно: в ходе баловства с виртуальными поддоменами апача я правил файл /etc/hosts и сделал так, что адрес 127.0.0.1 перестал соответствовать имени компьютера, прописанному в /etc/hostname. Просто дописав в /etc/hosts 
127.0.0.1 имякомпьютера
решил проблему.

2012-11-14

mount без пароля

Задача: написать скрипт, который будет монтировать папку с удаленного win-сервера, и, после копирования файлов на локальную машину, отмонтировать её.
Казалось бы, ничего сложного, mount решает:

sudo apt-get install cifs-utils
sudo mount -t cifs //192.168.0.1/Folder /home/kawaikunee/Folder -o username=User,password=Pass,rw,file_mode=0777,dir_mode=0777
cp -a -n /home/kawaikunee/Folder/*.pdf /home/kawaikunee/Doc/PDFs/
sudo umount /home/kawaikunee/Folder

Да вот только одна проблема: скрипт должен работать автономно. И пароль sudo ему знать совсем не обязательно.

Решение: добавить пользователю, от чьего имени запускается скрипт, права на беспарольное использование sudo mount и sudo umount. Для этого внесём изменения в файл /etc/sudoers

sudo gedit /etc/sudoers

Добавим в него строчку:

kawaikunee linux = NOPASSWD: /bin/mount,/bin/umount

где первые два слова - имя пользователя и имя компьютера (они обычно представлены в приглашении терминала по умолчанию).

Задача решена. Скрипт использует sudo, но пароль у него не спрашивают.
P.S. Что-то мне подсказывает, что так можно и другие подобные задачи решить :)