Архив рубрики: Linux

FFMPEG и полезные команды

Сразу приступим к делу без описания тулзы)

1.1. WAV — Waveform Audio File Format

  1.1.1. wav to mp3

 

ffmpeg -i audio.wav -acodec libmp3lame audio.mp3

1.1.2. wav to ogg

 ffmpeg -i audio.wav -acodec libvorbis audio.ogg

 

           1.1.3. wav to aac

 

 ffmpeg -i audio.wav -acodec libfaac audio.aac

1.1.4. wav to ac3

ffmpeg -i audio.wav -acodec ac3 audio.mp3

       1.2. OGG — Free, open standard container

 

  1.2.1. ogg to mp3

 

ffmpeg -i audio.ogg -acodec libmp3lame audio.mp3

 

  1.2.2. ogg to wav

 

ffmpeg -i audio.ogg audio.wav

            1.2.3. ogg to aac

ffmpeg -i audio.ogg -acodec libfaac audio.aac 1.2.4. ogg to ac3

ffmpeg -i audio.ogg -acodec ac3 audio.ac3

        1.3. AC3 — Acoustic Coder 3

             1.3.1. ac3 to mp3

ffmpeg -i audio.ac3 -acodec libmp3lame audio.mp3 1.3.2. ac3 to wav

ffmpeg -i audio.ac3 audio.wav
1.3.3. ac3 to aac

ffmpeg -i audio.ac3 -acodec libfaac audio.aac
1.3.4. ac3 to ogg

ffmpeg -i audio.ac3 -acodec libvorbis audio.ogg

        1.4. AAC — Advanced Audio Coding

 

             1.4.1. aac to mp3

ffmpeg -i audio.aac -acodec libmp3lame audio.mp3
1.4.2. aac to wav

ffmpeg -i audio.aac audio.wav
1.4.3. aac to ac3

ffmpeg -i audio.aac -acodec ac3 audio.ac3
1.4.4. aac to ogg

ffmpeg -i audio.aac -libvorbis audio.ogg

Автор: r1za

Как сделать редирект черз .htaccess если браузер IE6

Иногда приходится разрабатывать проекты, работающий с ограниченным количеством браузеров, либо же без потдержки старых версий (IE6 к примеру). В таких случаях логично организовать редирект на страницу с соответствующим текстом. Сделать это можно как при помощи Javasript-а, так и на стороне PHP. Но как по мне, более элегантным решением будет редирект на стороне веб-сервера Apache, а точнее при помощи фала .htaccess. Создаем файл .htaccess в корне сайта либо же открываем существующий, и добписываем следующие директивы:


RewriteCond %{REQUEST_FILENAME} !^.png [nc]
RewriteCond %{REQUEST_FILENAME} !^.css [nc]
RewriteCond %{REQUEST_FILENAME} !^.jpg [nc]
RewriteCond %{REQUEST_FILENAME} !^.js [nc]
RewriteCond %{REQUEST_FILENAME} !^.gif [nc]
RewriteCond %{HTTP_USER_AGENT} "Firefox/2" [or]
RewriteCond %{HTTP_USER_AGENT} "Firefox/1" [or]
RewriteCond %{HTTP_USER_AGENT} "Flock/1" [or]
RewriteCond %{HTTP_USER_AGENT} "Camino/1" [or]
RewriteCond %{HTTP_USER_AGENT} "Opera/9" [or]
RewriteCond %{HTTP_USER_AGENT} "Opera/8" [or]
RewriteCond %{HTTP_USER_AGENT} "Opera/7" [or]
RewriteCond %{HTTP_USER_AGENT} "Opera/6" [or]
RewriteCond %{HTTP_USER_AGENT} "Opera/5" [or]
RewriteCond %{HTTP_USER_AGENT} "Opera/4" [or]
RewriteCond %{HTTP_USER_AGENT} "Opera/3" [or]
RewriteCond %{HTTP_USER_AGENT} "Opera/2" [or]
RewriteCond %{HTTP_USER_AGENT} "Opera/1" [or]
RewriteCond %{HTTP_USER_AGENT} "Safari/4" [or]
RewriteCond %{HTTP_USER_AGENT} "Safari/3" [or]
RewriteCond %{HTTP_USER_AGENT} "Safari/2" [or]
RewriteCond %{HTTP_USER_AGENT} "Safari/1" [or]
RewriteCond %{HTTP_USER_AGENT} "Navigator/" [or]
RewriteCond %{HTTP_USER_AGENT} "MSIE 6" [or]
RewriteCond %{HTTP_USER_AGENT} "MSIE 5" [or]
RewriteCond %{HTTP_USER_AGENT} "MSIE 4" [or]
RewriteCond %{HTTP_USER_AGENT} "MSIE 3" [or]
RewriteCond %{HTTP_USER_AGENT} "MSIE 2" [or]
RewriteCond %{HTTP_USER_AGENT} "MSIE 1"
RewriteRule . upgrade.html [L]

Конечно же работать все это будет только при условии подключеного модуля mod_rewrite.

Автор: Sergiy Kamolov
Дата публикации: 2012-10-05T14:38:00.002+03:00

Использование User Leds на BeagleBone

Вообще заметил странную вещь, пользовательские светодиоды расположенные на плате не работали в дистрибутиве от arago, хотя он позиционируется TI как самый стабильный.
И поэтому в процессе правки исходников ядра, я так же починил и светодиоды.

Ну теперь грех ими не воспользоватся, два у нас уже заняты под heartbeat и mmc0,
остальные же свободны. Читать

NAND FLASH, UBIFS и с чем это едят

UBIFS это новая файловая система для NAND и NOR носителей. 

Подробней она описана здесь.

Что бы протестировать возможности сей прекрасной ФС нужно:

 — включить поддержку оной в ядре (Device Drivers -> 
Memory Technology Device (MTD) Supportas -> Enable UBI — Unsorted block images )
( File Systems -> Miscellaneous filesystemsas -> UBIFS file system support)
 — скачать снимок mtd-utils с git (здесь) и собрать из исходников
Для компиляции mtd-utils потребуются пакеты: libacl-devel и zlib-devel, 

а так же библиотеки zlib, lzo и uuid.

Для Ubuntu: sudo apt-get install libacl1-dev zlib1g-dev liblzo2-dev uuid-dev


Но прежде чем мы сможем воспользоватся всеми преимуществами данной файловой
системы, нужно внести некоторые изменения в исходники ядра. На плате которую  я использую для экспериментов (BeagleBone Rev.A3) нет распаяной NAND flash, потому мы ее подключим. Рассказ о подключение не столь интересен, но нам нужно поправить загрузочную конфигурацию ядра, вся нужна информация расположенна в файле 
/linux-3.2.0-patched/arch/arm/mach-omap2/board-am335xevm.c:

/* Make some additions to configs */
/* Beaglebone Rev A3 and after */
static struct evm_dev_cfg beaglebone_dev_cfg[] = {
{tps65217_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{mii1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{i2c2_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{ehrpwm_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{uart1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{gpio_led_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{evm_nand_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{NULL, 0, 0},
};

Тут diff файл, а тут про подключение nand flash к beaglebone.
как видно тут в список инициализации добавлена nand(а так же UART1, ehrpwm), причем сменился ее тип.
Кстати nand flash в отличии от блочных устройств имеет софтварное разбиение на разделы и эти разделы захардкорженны
в этом же файле:

/* NAND partition information */
static struct mtd_partition am335x_nand_partitions[] = {
/* All the partition sizes are listed in terms of NAND block size */
{
.name = "SPL",
.offset = 0, /* Offset = 0x0 */
.size = SZ_128K,
},
{
.name = "SPL.backup1",
.offset = MTDPART_OFS_APPEND, /* Offset = 0x20000 */
.size = SZ_128K,
},
{
.name = "SPL.backup2",
.offset = MTDPART_OFS_APPEND, /* Offset = 0x40000 */
.size = SZ_128K,
},
{
.name = "SPL.backup3",
.offset = MTDPART_OFS_APPEND, /* Offset = 0x60000 */
.size = SZ_128K,
},
{
.name = "U-Boot",
.offset = MTDPART_OFS_APPEND, /* Offset = 0x80000 */
.size = 15 * SZ_128K,
},
{
.name = "U-Boot Env",
.offset = MTDPART_OFS_APPEND, /* Offset = 0x260000 */
.size = 1 * SZ_128K,
},
{
.name = "Kernel",
.offset = MTDPART_OFS_APPEND, /* Offset = 0x280000 */
.size = 40 * SZ_128K,
},
{
.name = "File System",
.offset = MTDPART_OFS_APPEND, /* Offset = 0x780000 */
.size = MTDPART_SIZ_FULL,
},
};
Ну и на закуску, два различных способа «залить» информацию во флеш описанны здесь.

Автор: Dmitriy Falko
Дата публикации: 2012-10-03T11:20:00.001+04:00

Установка питона и пакетов

В этой статье я попытаюсь описать процесс создания готового python окружения и работу с пакетами на пользовательском уровне. Статья расcчитана на новичков (в основном для студентов, слушающих мои курсы).

Задачи обычно возникающие при установки питона и его пакетов:

  • Выбор дистрибутив питона и его установка
  • Выбор IDE
  • Поиск и установка пакетов

Кроме этого я пробегусь по этим полезным вещам:

 

Выбор дистрибутив питона и его установка

Если вы используете linux, то лучше использовать python идущий в пакетах — как правило это немного измененный cpython. Для windows можно выбирать между стандартным питоном и дистрибутивом от Active State. Последний содержит расширенную документацию и некоторые дополнительные библиотеки. Мы не будем рассматривать PyPy/Stackless/etc — ограничимся только CPython. Дальше нужно сделать выбор между двумя ветками — 3.2/3.3 и 2.7. Пока что с 2.7 у вас будет меньше проблем, но третья версия по поддержке уже подбирается достаточно близко. x86 и amd64 версии выбираем по вкусу. Установка и под windows и совершенно стандартна и не должна вызывать проблем. В linux питон уже почти 100% установлен.

 

Выбор IDE

Динамический характер языка делает написание функциональных IDE достаточно сложным, а высокая компактность кода и pythonic подход заметно уменьшает в них необходимость. Так что не сложные проекты можно делать в продвинутых текстовых редакторах — [notepad++], sublime text (или vim/emacs). Хотя новичкам IDE будут оказывать заметную помошь встроенной подсказкой и каким ни каким статическим анализом. Из IDE я бы выделил eclipse + pydev и платные PyCharm и KomodoIDE. Также есть Python tools for VS, которые добавляет поддержку cpython и ironpython в VS2010/VS2012.

Я бы советовал выбирать между sublime text и eclipse + pydev.

 

Поиск и установка пакетов

Пакеты/модули в python это файлы с расширениями py/pyc/pyo/(pyd или so), или директории с такими файлами. Также весь пакет может быть в одном архиве (только если пакет не содержит pyd/so файлы). По умолчанию пакеты устанавливаются в системную папку — PYTHON_ROOTlibsite-packages для windows и /usr/local/lib/pythonXX/dist-packages для ubuntu (XX — версия питона, PYTHON_ROOT — корневая папка установки python, как правило С:PythonXX)

Если вы используете linux, то можно использовать пакеты из дистрибутива — в Ubuntu/Fedora есть практически все. Иначе искать пакеты в основном стоит на pypi или с помощью google. Пакеты могут быть в трех основных форматах: архив, exe/msi, egg.

Архив нужно распаковать, в корневой папке должен быть файл setup.py. Если его там нет, то можно просто скопировать содержимое архива в директорию с пакетами. Если setup.py есть, то нужно выполнить python setup.py install. При этом следует использовать тот интерпретатор питона, в который вы хотите установить пакет. Если пакет не предоставляет модулей написанных на С/С++, то установка должна пройти без особенных проблем. Иначе python будет пытаться собрать компилируемые расширения. В linux такой процесс проходит чаще всего безболезненно (максимум требуется установка пакетов с заголовочными файлами для для используемых C библиотек), а вот в windows путь компиляции может быть достаточно трудным.

При установке в windows проще использовать уже собранный exe/msi файл. Для большинства пакетов они доступны на pypi или на сайте библиотеки, также много бинарных пакетов можно найти на pythonlibs. При загрузке обратите внимание на архитектуру и версию python. Для установки такие пакеты нужно запустить. Библиотеки не содержащие компилируемого кода уставливаются без проблем на обеих системах.

egg это формат пакетов одного из пакетные менеджеров питона — setuptools. Грубо говоря это zip архив с дополнительной информацией о пакете и его зависимостях. Более новой и активно развиваемой альтернативой setuptools является pip. pip использует код setuptools(или distribute) и не поддерживает egg. Оба этих менеджера умеют находить пакеты по имени на pypi, по URL и локально. Поддерживаются разнообразные форматы архивов и автоматическая установка зависимостей. pip умеет деинсталлировать пакеты и поддерживает установку из svn/git/mercurial.

Установка pip — www.pip-installer.org/en/latest/installing.html

Установка setuptools

Оба этих менеджера предоставляют команду easy_install, pip кроме этого предоставляет команду pip.

Использование (примеры команд без их вывода):

Без подсветки синтаксиса

# pip install pylint # установим pylint
# easy_install install -U pylint # обновить пакет
# pip install --upgrade simplejson
# pip uninstall simplejson # удалить
# pip install http://my.package.repo/SomePackage-1.0.4.zip
# pip install git+https://github.com/simplejson/simplejson.git
# pip install svn+svn://svn.zope.org/repos/main/zope.interface/trunk/

 

# pip install pylint # установим pylint
# easy_install install -U pylint # обновить пакет
# pip install --upgrade simplejson
# pip uninstall simplejson # удалить
# pip install http://my.package.repo/SomePackage-1.0.4.zip
# pip install git+https://github.com/simplejson/simplejson.git
# pip install svn+svn://svn.zope.org/repos/main/zope.interface/trunk/

 

virtualenv

virtualenv позволяет делать на одной машине несколько независимых инсталляций python, каждая из которых имеет свой интерпретатор, набор настроек и библиотек. Некоторые из таких окружений могут использовать системную папку с дополнительными пакетами. Кроме этого virtualenv позволяет устанавливать питон и пакеты пользователям без прав root.

Без подсветки синтаксиса

$ sudo pip install virtualenv # или sudo apt-get install python-virtualenv
$ virtualenv --distribute ENV_NAME # или python virtualenv.py --distribute ENV_NAME

—distribute заставить virtualenv установить distribute вместо setuptools.

 

$ sudo pip install virtualenv # или sudo apt-get install python-virtualenv
$ virtualenv --distribute ENV_NAME # или python virtualenv.py --distribute ENV_NAME

—distribute заставить virtualenv установить distribute вместо setuptools.

 

Эта команда создаст папку ENV_NAME внутри которой будет интерпретатор python ENV_NAME/bin/python и каталог для пакетов ENV_NAME/lib/pythonX.X/site-packages. ENV_NAME/bin/python будет настроен на поиск пакетов в ENV_NAME/lib/pythonX.X/site-packages. Также virtualenv устанавливает в новое окружение pip. Что-бы активировать это окружений нужно исполнить скрипт activate.

Без подсветки синтаксиса

$ source ENV_NAME/bin/activate
> ENV_NAMEScriptsactivate # для windows

 

$ source ENV_NAME/bin/activate
> ENV_NAMEScriptsactivate # для windows

 

Теперь команда python будет приводить к запуску питона из ENV_NAME/bin/python, то же относится и к pip. После окончания работы нужно выполнить deactivate. virtualenv включили в стандартную библиотеку начиная с python3.3

 

lint’ы

Линтами называют средства статического анализа по имени первой такой утилиты, которая находила странно написанные участки C кода, потенциально содержащие ошибки. Из-за динамического характера python сделать для него очень хороший линт невозможно, а даже просто хороший очень сложно. Ошибки при которых С программа даже не скомпилируется могут легко загнать в угол python линты. Но тем не менее значительную часть (а у начинающих — практически все) ошибок/опечаток они найдут.

Три основных lint’а для python это pylint, pychecker и pyflakes. Из них pylint, наверное, наиболее сообразительный. Кроме этого он имеет большое количество настроек, которые позволяют изменить особенности проверок. Также pylint проверяет стиль кода, используя шаблоны из конфигурационного файла и собирает полезную статистику. Плюс большая часть IDE и даже sublime имеют интеграцию с pylint.

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

Как более легкую альтернативу можно использовать pep8, проверяющий код на соответствие основному python стандарту кодирования.

 

ipython

Чуть подробнее о установке ipython. Под linux с правами root все просто (ubuntu):

Без подсветки синтаксиса

$ sudo apt-get install ipython ipython-doc ipython-notebook ipython-qtconsole python-zmq

 

$ sudo apt-get install ipython ipython-doc ipython-notebook ipython-qtconsole python-zmq

 

или

Без подсветки синтаксиса

$ sudo apt-get install --install-suggests ipython

 

$ sudo apt-get install --install-suggests ipython

 

ipython готов к запуску —

Без подсветки синтаксиса

$ ipython qtconsole # GUI консоль
$ ipython notebook  # Web интерфейс
$ ipython # консольный интерфейс

 

$ ipython qtconsole # GUI консоль
$ ipython notebook  # Web интерфейс
$ ipython # консольный интерфейс

 

Под windows все не так просто — нужно загрузить все пакеты и зависимости вручную и установить их. pip поможет не сильно, поскольку большая часть пакетов С расширения с внешними зависимости и собирать их будет лишней сложностью. Зависимости ipython (поскольку мы не будем использовать pip то их придется выяснять и устанавливать самостоятельно) можно определить двумя способами — найти в документации по установке или пытаться запускать ipython и смотреть на ошибки импорта. Из документации находим зависимости:

  • pyqt или pyside
  • pyzmq
  • tornado
  • pygments
  • pyreadline
  • distribute или setuptools

Бинарные версии всех этих пакетов есть в pythonlibs. Загружаем и ставим в любом порядке. После чего выбираем из:

Без подсветки синтаксиса

> С:Python2.7Scriptsipython.bat qtconsole # GUI консоль
> С:Python2.7Scriptsipython.bat notebook # Web интерфейс
> С:Python2.7Scriptsipython.bat # консольный интерфейс

 

> С:Python2.7Scriptsipython.bat qtconsole # GUI консоль
> С:Python2.7Scriptsipython.bat notebook # Web интерфейс
> С:Python2.7Scriptsipython.bat # консольный интерфейс

 

pythonanywhere.com

Если поставить питон совсем никак нельзя, то можно воспользоваться web консолью на указанном сайте. После регистрации можно бесплатно запустить 2 python/ipython консоли в браузере и пробовать python без установки.

Ссылки:
pypi.python.org/pypi/virtualenv
www.python.org/download
www.activestate.com/activepython/downloads
pypi.python.org/pypi
www.lfd.uci.edu/~gohlke/pythonlibs
www.pip-installer.org/en/latest/index.html
ipython.org/ipython-doc/stable/install/install.html
pychecker.sourceforge.net
pytools.codeplex.com
launchpad.net/pyflakes
www.python.org/dev/peps/pep-0008
pypi.python.org/pypi/pylint
pypi.python.org/pypi/pep8
www.jetbrains.com/pycharm
pydev.org
pypi.python.org/pypi/setuptools
www.sublimetext.com
www.activestate.com/komodo-ide
pythonanywhere.com

Исходники этого и других постов со скриптами лежат тут — github.com/koder-ua. При использовании их, пожалуйста, ссылайтесь на koder-ua.blogspot.com.

Автор: konstantin danilov

Как правильно установить NetBeans на Ubuntu 12.04

Я конечно не претендую, что описанный ниже метод асболютно правильный, но он простой и обеспечивает мне стабильную работу приложения уже достаточно долгое время…

Если устанавливать NetBeans сразу после установки системы, а я именно так всегда и делаю, то для начала понадобится установить JDK. Я много встречал негативных комментариев и «камней» в сторону дефолтного JDK, что решил воспользоваться альтернативным, а точнее Oracle JDK.

Порядок установки Oracle JDK следующий:

1. Удаляем OpenJDK:

sudo apt-get purge openjdk*

2. Открываем терминал и запускаем следующую последовательность комманд:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer

 

3. После успешной установки проверяем версию JDK

java -version
  

Теперь идем на сайт NetBeans и качаем последнюю версию IDE:
http://netbeans.org/downloads/index.html

Находим сохраненный файл (я обычно сохраняю его на Рабочий стол), открываем свойсва файла, находим вкладку Permissions и ставим галочку в поле Allow executing file as programm. Закрываем окно, запускаем файл и устанавливаем NetBeans.

Если после первого запуска IDE вы заметили что главное меню сливается с заголовком окна, то необходимо еще выполнить следующее: ищем файлик /usr/share/themes/Ambiance/gtk-2.0/gtkrc, открываем его для редактирования от имени админа

 sudo gedit /usr/share/themes/Ambiance/gtk-2.0/gtkrc

… находим строку 338 с текстом

 style «menu» {

 и меняем ее на

 style «menu» = «dark» {

 Сохраняем и перезапускаем NetBeans (если он был запущен)…

Автор: Sergiy Kamolov
Дата публикации: 2012-08-20T13:42:00.002+03:00