неділя, 26 квітня 2015 р.

Расшаривание каталога по сети через Samba

Наверное, все читатели этого блога знают (или хотя бы приблизительно помнят), как в винде делается доступной по сети любому пользователю любая папка. И это очень просто - ПКМ (правая кнопка мыши) по нужной папке, выбор пункта Свойства в контекстном меню, далее Доступ, выбираем Общий доступ и, возможно, некоторые дополнительные параметры. Даже гуглится это всё тоже очень просто и легко.
Для расшаривания каталогов в линуксе есть много разных способов, для доступа же к расшаренному каталогу способ фактически один - смонтировать (присоединить к файловой системе) расшаренный каталог. Монтируется всё через команду mount (постарайтесь узнать побольше информации о ней используя встроенную документацию - man mount, а не чуть что - сразу в гугл). Конечно же, не всё подходит для того, чтобы иметь возможность доступаться до папок расшаренных под Windows и наоборот - чтобы расшаренный каталог под Linux был доступен для Windows. При этом, чтобы был такой же стандартный интерфейс доступа (сетевое окружение - выбор нужной машины и нужной папки). И вот именно для такой задачи существует набор приложений Samba. Samba имеет клиент-серверную архитектуру и потому два основных приложения: samba сервер - для расшаривания, samba клиент - для доступа.
Весь нужный набор приложений для большинства задач в Ubuntu Linux устанавливается вместе с пакетом samba (всё остальное тянется по зависимостях), в Fedora Linux сервер и клиент идут отдельно. Возможно, в других дистрибутивах линукса ещё есть какие-то особенности и отличия, поэтому Вам надо будет погуглить, как установить samba на свой дистрибутив (вполне возможно, что вам надо будет лишь либо сервер, либо клиент). Тем более, что в Интернете имеется множество инструкций, а здесь Я рассматриваю лишь общие черты и подход к работе. Также существует и графическая утилита для конфигурации самба-сервера (system-config-samba), но ведь так не интересно, и поэтому всю настройку будем производить через терминал и конфигурационный файл samba.
Итак, если Вы выполнили установку, можно перейти к настройке, для этого откроем в режиме суперпользователя файл /etc/samba/smb.conf (хотя здесь отличий не встречал, всё же имеется вероятность, что в вашем дистрибутиве может быть другой путь). В конфигурационном файле имеется глобальная секция ([global]), где настраиваются общие параметры для всех расшаренных каталогов, и своя отдельная секция для каждого расшаренного каталога. Также, имеется секция для расшаривания принтера и других устройств. Опять-таки, в разных дистрибутивах (а также, в разных версиях самбы) имеются весомые различия в настройке, по крайней мере пока что. В Ubuntu Linux всё довольно просто, добавляем в конфигурационный файл например такую секцию:
[Shared_Downloads]
path = /home/sergius/Downloads
browsable =yes
writable = yes
guest ok = yes
read only = no
Все параметры имеют название, которое говорит само за себя: path - путь к расшариваемой папке; browsable - можно ли её просматривать; writable - доступна ли она для записи; guest ok - можно ли заходить не авторизированным пользователям, то есть тех, учётной записи которых нет на данном компьютере; read only - инверсия writable (оба параметра существуют возможно для того, чтобы играться с глобальной и локальной настройками, в данном случае достаточно указать один из них).
Расшаривание обычных каталогов по сути большего не требует, но здесь, как видно, расшаривается подкаталог Downloads из домашнего каталога пользователя sergius. А, как мы знаем, никакому пользователю, кроме рута, нельзя лазить по каталогах других пользователей. Поэтому, надо ещё дать права на листинг пользовательских директорий (бит прав х) и права на чтение (а также запись, если мы поставили параметр writable = yes) для всех пользователей. Команда chmod решает эти задачи:
chmod 711 /home/sergius
chmod -R 777 /home/sergius/Downloads
После всех настроек надо перезапустить демон сервера самбы и всё. На Fedora из SELinux дела обстоят куда сложнее. Тут надо и файрволл настроить, чтобы пропускал, да и политика насчёт домашних каталогов пользователей жёстче. Поэтому инструкция побольше и посложней. Самому до такого додуматься почти нереально. Итак, сначала пробуем по этой ссылке How to enable samba share Fedora 20, здесь рассказано о том, как настроить тот selinux и firewall для самбы. Конкретно же каталог расшарить можно опять-таки через конфигурационный файл:
[Downloads]
path = /home/sergius/Downloads
browseable = yes
guest ok = yes
writeable = yes
Далее так же надо дать права на домашний каталог, но... Здесь есть ещё один фокус. Ищем в файле строку security = share (в глобальной секции) и вместо неё пишем:
security = user
map to guest = Bad User
Эти две строчки означают, что любой пользователь, который не имеет учётной записи станет гостём. Ну и после всех настроек, надо перезапустить демон. Опять-таки, возможно, что в других дистрибутивах имеются свои нюансы, поэтому надо будет погуглить, если без этого у Вас что-то не работает.
Ещё хотелось бы добавить, что если хотите таки расшарить какую-то папку, видимую в Windows-домене, но при этом доступную лишь избранным, надо:

1) guest ok = no
2) добавить нужных пользователей через smbpasswd -a <user>

А если выставить имя пользователя и пароль такие же как и доменные, то на вашу шару винда должна пускать без проса пароля, а сразу, как в обычную папку.
Ну и на домашнее задание, попробуйте разобраться как подключиться к шаре через терминал с помощью smbclient и скачать какую-то папку.

середа, 18 лютого 2015 р.

Безопасность превыше всего!

Рано или поздно каждый (надеюсь, что каждый) пользователь ПК задумывается о безопасности своих данных, работоспособности ОС и компьютера в целом. И, конечно, же сразу вопрос - антивирус под линукс? По этому поводу в Сети множество холиваров с разными окончаниями. Так что же делать? Есть ли жизнь вирусы в мире никсов? Нужен ли антивирус?
Насколько мне удалось изучить данную тему, могу сказать, что вирусы есть, но их распространение крайне сомнительно. Во-первых, Windows более распространенная ОС по количеству пользователей, следовательно, выигрыш для создателей вирусов здесь будет больше (для создателей антивирусов тоже, может это одни и те же лица?). Во-вторых, через политику прав доступа к файлам в никсах, распространение вирусов почти невозможно, но вы всегда можете скачать и запустить какую-то зловредную программу, которая навредит лишь вам (если очень постараетсь, то навредит ещё кому-то). Итак, для успокоения души антивирус ставим. Для большинства пользователей вплоне подойдёт ClamAV, как поставить и настроить для своего дистрибутива ищите в Интернете, но это всё равно буквально 2-3 команды, так что сильно не перетрудитесь.

Куда более серьёзная проблема безопасности - это уязвимости в разных библиотеках, программах и т.п. Некоторые уязвимости позволяют даже выполнять удаленно команды на вашем компьютере. Если объяснить метафорически - это как потайная дверь, нужно лишь найти на что нажать, чтобы потайная дверь открылась. Единственное различие в том, что уязвимость создалась не преднамеренно, а случайно. И вот о ней не знают до тех пор, пока кто-то ней не воспользовался. При чём, в некоторых случаях пользование уязвимостью может быть незамеченным довольно долгое время. Уязвимости исправляются лишь разработчиками операционной системы (или конкретной программы), и обновлённая версия будет доступна в репозитории. Поэтому, надо почаще делать обновление своей системы и программ. Ну и, конечно, если вы неинтересны злоумышленникам, то никто и не будет пытаться пройти все ступени защиты вашего ПК.

Но самая страшная угроза для вашего ПК, обычно, сидит перед вашим монитором. Да, это вы, уважаемый пользователь. Одно неосторожное движение и всё пропало. Поэтому, надо всегда действовать с пониманием того, что вы делаете. В общем, инструкция подходит и для пользования ОС Windows:
1) устанавливать (хотя бы постарайтесь) программы лишь с официальных репозиториев или сайтов;
2) не лазать по недоверенным сайтам вообще;
3) не открывать ссылки из писем от неизвестного/недоверенного отправителя;
4) не сидеть всё время под рутом, пользоваться командой sudo и лишь для того, в чём вы уверены (к примеру, ваш "добрый" знакомый захотел подшутить и кинул вам "секретную команду", которая будто бы делает что-то полезное (например, скрывает ваш айпи), а вы с радостью эту команду выполнили и все ваши данные исчезли; вот такой хитрый набор символов "perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'", на самом деле, является командой rm -rf);
5) тщательно проверять ваши команды, которые что-либо удаляют/изменяют;
6) делайте периодически копии всех важных данных на какой-нибудь носитель, не подключённый к данному компьютеру.

Вот такая простая инструкция, но поможет вам сохранить данные и здоровье. То есть, как обычно, думайте головой, ваше счастье в ваших руках!

субота, 3 січня 2015 р.

RST-рендеринг в браузере

Вы уже прошли долгий путь, дойдя до этой публикации, потому она может быть вам тоже полезна. RST - очень хороший формат для документации, научных статей, потому как вы не задумываетесь над разметкой, а, фактически, пишете сам текст. Потом, когда надо, его можно переконвертировать в другой формат разметки текста. Очень удобен html в этом деле. Кроме того, можно сделать так, что ваш документ будет доступен из любого компьютера подсети и конвертироваться автоматически. Вот это и есть суть данной публикации.

Итак, собственно, инструкция:
1) установить python-docutils, чтобы был доступен скрипт rst2html.py, который и производит нужную нам конвертацию;
2) выяснить, где находятся конфигурационные файлы вашей версии httpd (в большинстве случаев просто httpd или apache), на моей Fedora 20 это
/etc/httpd/conf.d/*.conf
3) добавить туда свой новый конфигурационный файл (например, /etc/httpd/conf.d/docs_rst.conf) с таким содержанием:

ScriptAlias /cgi-bin/ /var/www/cgi-bin/ Action RSTHandler /cgi-bin/rst2html.sh AddHandler RSTHandler .rst


Как видно, здесь просто добавлен хендлер, который запустит скрипт rst2html.sh, если в строке запроса идёт обращение к файлу с расширением "rst".

4) Теперь надо добавить соответствующий файл rst2html.sh в папку /var/www/cgi-bin/ с таким содержанием:

#!/bin/sh
echo "Content-type: text/html"
echo ""
/usr/bin/rst2html /var/www/html/${REQUEST_URI}
exit 0

5) Теперь можно помещать ваши rst-документы под папку /var/www/html и доступаться к ним через браузер (в моем случае - localhost/docs/mydoc.rst).



Не забудьте перезапустить ваш httpd, дабы все настройки вступили в силу!

Таким же образом можно добавлять и другие обработчики для других типов файлов. Удачи!

вівторок, 25 листопада 2014 р.

Осваиваем текстовый редактор vim

В предыдущих постах часто использовался текстовый редактор, в частности, мой любимый vim. Возможно, его нет в вашем дистрибутиве “из-коробки” (vi, предшественник vim-a должен быть 100%) и вам надо его инсталлировать. Обычно, в дистрибитувах линукса есть сразу целая куча консольных текстовых редакторов и напрашивается естественный вопрос — зачем? Это всё разные инструменты с разным набором возможностей и удобств. Например, хорошо, когда гаечный ключ разводной — можно всегда подгонять под нужный размер. А если размер выходит за границы допустимого диапазона? Или если надо забить гвоздь? Хорошим разводным гаечным ключом можно и гвоздь забить, но это будет явно не эффективно. Представьте, сколько времени, усилий и нервов можно сэкономить подбирая во всём нужные инструменты и настраивая их под себя. Для кодинга, редактирования конфигурационных файлов, сравнения нескольких версий «плоских» текстовых файлов вам нужен совершенно другой текстовый редактор, нежели MS Office Word. И одним из таких мощных текстовых редакторов является vim. Вы можете улучшить свою работу над кодингом на 200%, а то и на 300%, постигнув лишь 25% всех возможностей этого прекрасного редактора (все цифры взяты с потолка, но такое соотношение эффективности имеет место быть). Вот например, возьмите свой любимый редактор и посмотрите сколько времени (с точностью до секунды) вам надо, чтобы из этого куска кода (табуляция тоже считается):

x = 1
whiLE x<=100:
print x,
y = func1(x) + func2(x) + func3(x)
print ' => %s' % y
x = x + 1
 
сделать вот этот:
 
x = 1
whiLE x<=100:
    print x,
    y = func1(x, rnd=True) + func2(x, rnd=True) + func3(x, rnd=True)
    print ' => %s' % y
    x += 1  
 
У меня же с помощью vim ушло на это 18 секунд (можете в комментариях поделиться вашими результатами). Естественно, может быть и лучший результат, но это надо тренироваться, да и когда очень спешить, можно наделать ошибок, которые исправлять потом будет дороже. Надеюсь, мне удалось показать вам важность выбора нужного инструмента. Теперь надо научится им пользоваться. Для начала настоятельно рекомендую вам пройти встроенную обучалку, которую вы можете запустить командой "vimtutor" (естественно, команду вводим без кавычек). Далее, вам нужен более-менее приличный конфигурационный файл. Вот начать можете с такого примера:
 
" # BASIC OPTIONS
set nocompatible
set number
syntax on
" - Indentation options
set expandtab
set tabstop=4
set shiftwidth=4
set autoindent
set softtabstop=0

" # ADVANCED OPTIONS
"set hidden
"set visualbell
" - Better command-line completion
set wildmenu
" - Show partial commands in the last line of the screen
set showcmd
" - Display cursor position
set ruler
" - Always display the status line, even if only one window is displayed
set laststatus=2
set mouse=a
" - bind \q for nohlsearch
:nmap \q :nohlsearch<CR>
" - Easier moving of selected code blocks
vnoremap < <gv
vnoremap > >gv

" # EXPERT OPTIONS
" - Autocommands
" Remove any trailing whitespace that is in the file
autocmd BufRead,BufWrite * if ! &bin | silent! %s/\s\+$//ge | endif
 
Как и большинство других конфигурационных файлов, этот надо сохранить в домашней папке, а имя начинается с точки - .vimrc (полный путь ~/.vimrc, где "~" подставляет домашнюю папку текущего пользователя).
Для начала, вам этого хватит с головой. Здесь, комментарии начинаются с двойной кавычки, некоторые опции тоже закомментированы, но входят в конфигурационный файл потому, что часто используемые. Если с описания не всё понятно, то вперёд в гугл. Настоящий достойный конфигурационный файл в десятки раз длинее.

Наконец, мастером этого текстового редактора вы можете легко стать, освоив книгу "Practical Vim: Edit Text at the Speed of Thought" by Drew Neil. И не ищите перевода, для мастерства вам нужен оригинал. Пора привыкнуть к тому, что английский язык всё-таки главнее (после своего родного, конечно).
Ну и, конечно же, побольше практики. И если он станет вашим единственным (или почти единственным), то навыки сами придут со временем.

понеділок, 13 жовтня 2014 р.

Конфигурационные файлы пользователя

Конфигурационные файлы пользователя - это те, которые "лежат" в домашней директории данного пользователя, и имя которых начинается с точки.
Чтобы посмотреть все свои конфигурационные файлы, можно воспользоваться такой командой (первое, что пришло в голову, может у вас получится ещё проще):

 $ ls -la ~ | rev | awk '{ print $1 }' | rev | egrep '^\.\w'

Стандартный набор файлов, который, теоретически, есть по-умолчанию (если ваша оболочка по-умолчанию - баш):

.bash_history
.bash_logout
.bash_profile
.bashrc
.profile

.bash_history - хранит историю введённых команд
.profile - сценарий, не привязан к оболочке (bash, zsh, etc.)
Остальные, в принципе, можно понять из документации к башу (man bash):

FILES
       /bin/bash
              The bash executable
       /etc/profile
              The systemwide initialization file, executed for login shells
       ~/.bash_profile
              The personal initialization file, executed for login shells
       ~/.bashrc
              The individual per-interactive-shell startup file
       ~/.bash_logout
              The individual login shell cleanup file, executed when a login shell exits
       ~/.inputrc

              Individual readline initialization file

Ещё можно собственноручно создавать другие конфигурационные файлы, например, .profile_work - для инициализации своего придуманного рабочего окружения (автоматически не выполняется, нужно выполнить команду source ~/.profile_work).
А также разные приложения имеют свои конфигурационные файлы, которые можно настраивать под себя (например, .vimrc - конфигурационый файл редактора vim).
Теперь посмотрим какие самые элементарные полезности можно засунуть в такие конфигурационные файлы.

Файл ~/.profile:

# setup user paths
export PYTHONPATH=$PYTHONPATH:/home/data/python_libs

# setup user aliases
alias wtf='uname -n'
alias ll='ls -la'
alias rm='rm -i'

# prompt colored

export PS1='\[\e[32m\]\u@\h:\w\$ \[\e[0m\]'

В первой строке расширяется питоновский путь поиска модулей.
Далее назначаем алиасы (дружественное имя какой-то команды), один из самых полезных - alias rm='rm -i', теперь всегда команда rm будет выполняться с ключом "-i", то есть спрашивать подтверждение перед удалением. Но если вы запустите команду с ключом "-f", то ключ "-i" проигнорируется.
Ну и последнее - это цветная строка приглашения к вводу.

Если вам вдруг нужно много работать удалённо (через ssh), вам жизненно необходимо иметь утилиту screen на удалённой машине. И вот пример прекрасного .screenrc (опять-таки, поместить в домашнюю директорию пользователя):

Файл ~/.screenrc:

startup_message off
vbell off
windows
# Add stuff to xterm (and cousins) title bars.  This is a moderate abuse of the
# hardstatus feature--it just puts the hardstatus stuff into an xterm title
# bar.
termcapinfo xterm*|Eterm|mlterm 'hs:ts=\E]0;:fs=\007:ds=\E]0;screen\007'
hardstatus off

defscrollback 10000
hardstatus alwayslastline
hardstatus string '%{= kW}%-Lw%{= KW}%50>%n%f* %t%{= kW}%+Lw%<'

# Bind F11 and F12 (NOT F1 and F2) to previous and next screen window
bindkey -k F1 prev

bindkey -k F2 next

В результате, вы получите отличный вид вкладок и нет раздражающего мерцания (+ ещё некоторые полезности, но лучше погуглить, чтобы до конца разобраться).
Ну и, конечно же, вам надо настроить ваш любимый консольный текстовый редактор - но эта тема очень широка, потому здесь опять придётся вам покопаться самим. Удачи!

пʼятниця, 19 вересня 2014 р.

А-а-а, всё сломалось!

Самое интересно начинается тогда, когда что-то пошло не так. Можете представить все чувства секретаря (секретутки :) ), которая умеет только документы печатать, а тут ОС не грузится или бумагу в принтер зажевало, а сдавать документы надо было вчера.
Естественно, всякого бывает, но основной источник проблем находится между монитором и спинкой стула.
С линуксами мне встречались лишь 2 основные проблемы:
1) грузится лишь консольный режим, то есть нету рабочего стола, ярлычков и всей другой атрибутики, есть лишь ваш любимый терминал во весь экран;
2) ОС не грузится вообще, даже в режиме восстановления.

1. Основная причина - сломался X-сервер (графическая оболочка, грубо говоря) после неакуратных действий пользователя (либо акуратных, но результат оказался непредсказуем). Например, вы решили поставить проприетарные драйвера на видеокарту вместо свободных, перезагрузились - и всё )
Тут хорошо иметь под рукой ещё один комп, когда можно быстро нагуглить как восстановить свободные драйвера именно на вашей системе. Если такового не имеется, вам придётся освоить консольные браузеры.
Вот так выглядит гугл в консольном браузере lynx (слабонервным и сильнонервным просьба отойти): 



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

2. Если ОС не грузится вообще - это проблема похуже, тут без ещё 1 компа не обойтись (ну или у вас ещё Винда установленная есть на том же компе, придётся грузится в неё).
Ну или у вас уже есть загрузочная флешка или диск (Live USB or LiveCD/DVD).
В данном случае, надо загрузиться в ту "живую" ОС и решить проблемы. Благо, если вы знаете, что имено вы сделали в последний раз и что надо исправить. В противном случае - возможен даже летальный исход с последующей переустановкой.
Реальный случай:
Я хотел добавить в автозагрузку старт своего веб-сервера на bottle. Для этого прописал в /etc/rc.d/rc.local строчку:

cd /home/data/work/web/budget && python budget.py

И, забыл, что процесс висит сразу же в терминале, дожидаясь пока его не прибьют. Получается, что при загрузке системы он и висит тем блокировщиком, которые не даёт загрузиться дальше, он ведь ждёт, пока его не прибьют. Я уже знал, что надо сделать и как (достаточно добавить & в конец команды и процесс уйдёт в фон). Осталось сделать загрузочную флешку.
После загрузки надо смонтировать тот раздел с правами на запись и изменить файл.
Ищем нужный раздел командой (часть вывода заменил на три точки):

$ sudo fdisk -l
...
/dev/sda        <разные параметры раздела вроде такого:>
/dev/sda1      <617693184   755113983    68710400   83  Linux>
...
/dev/mapper/fedora-root
...
/dev/mapper/fedora-home
...

Если не сразу знаете, что какой раздел монтировать, можно пробовать все поочереди. Мне нужен был "fedora-root":

$ mkdir /mnt/froot
$ sudo mount -o rw /dev/mapper/fedora-root /mnt/froot

После чего успешно редактируем наш файл (мне нравится редактор vim):

$ sudo vim /mnt/froot/etc/rc.d/rc.local

Всё, можно перезагружаться.
Что ж, удачи, постарайтесь не ломать ничего, а если и сломаете - не паникуйте. Помните, если проблема имеет решение - то волноваться незачем, а если решение не имеет - то волноваться уже бессмысленно.

вівторок, 12 серпня 2014 р.

Учимся писать полезные скрипты на bash

Сегодня учим делать полезные скрипты своими руками на одном практическом примере. Понадобилось как-то мне конвертировать пачку файлов из rst формата в docx. В браузере  на сервере rst рендерилось и отображалось как обычный html, тобишь уже такая автоматическая конвертация. Стянув пачку файлов, я получил хоть и с rst-расширением, но всё же в html коде. И это значит, надобно перевести в docx.
Итак, задача ясна, ищем решения. Немного погуглив, находим утилиту pandoc - http://johnmacfarlane.net/pandoc/demos.html
Умеет конвертировать фактически с любого языка разметки на любой другой.
Естественно, по одному файлу тыкаться как-то не хочется, разбираться может ли сам pandoc сделать групповую конвертацию - тоже влом. Решено быстро написать баш скрипт.
Для начала, надо перебрать все файлы с заданным расширением. Проверяем идею:

$ for fn in `find . -name "*.rst"`; do echo $fn; done
document1.rst
document2.rst
........
document10.rst

Часть вывода здесь опущена и вообще придумана :)
`find . -name "*.rst"` - поиск файлов по шаблону; если взять в эти кавычки, где знак "~", то подставится заместо команды вывод этой команды, то есть список всех найденых файлов. Ну и чтобы получить доступ к значению переменной, ставится знак "$".
Команда echo, грубо говоря, выводит указанное сообщение на консоль. В данном случае, выводит значение переменной fn.
Теперь, нам надо каждый найденный файл конвертировать и дать новое название. Сначала надо получить новое название. Поэтому теперь цикл будет выглядеть вот так:

for fn in `find . -name "*.rst"`
do
   new_fn=`basename $fn rst`docx
   echo $new_fn
done

Запишем этот цикл в файл, например group_converter.sh и запустим такой командой:

$ sh group_converter.sh
document1.docx
document2.docx
........
document10.docx

Отлично, теперь можно конвертировать. Изменяем файл:

for fn in `find . -name "*.rst"`
do
   new_fn=`basename $fn rst`docx
   pandoc -s -S -f html $fn -o $new_fn
done

Запускаем и видим что работает! Было бы неплохо навести красоту и возможность конвертировать с любого формата в любой. Но, здесь надо будет ключи подбирать (-s -S, для других форматов - другие ключи и т.п.), поэтому, скрипт может разрастить до таких нормальных размеров. А наша первоначальная задача выполнена. Поскольку, конвертировать группу файлов не каждый день приходится, универсализация скрипта может подождать. Последнее, что сделаем, это допишем информацию о скрипте:
#!/bin/bash
# Group markup coverter
# Usage:
#             copy this script to directory with files and run from inside

for fn in `find . -name "*.rst"`
do
   echo "Processing file: $fn"
   new_fn=`basename $fn rst`docx
   pandoc -s -S -f html $fn -o $new_fn
done
Вот такой вот скриптик делается буквально за 2 минуты, а польза огромная - за пару секунд конвертирует пачку файлов.