19 августа 2015

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

Бывают ситуации, когда требуется запуск сервиса с задержкой. Например, какая-нибудь сетевая служба запускается, а ng-интерфейса еще не нет. Такую задачу можно решить с помощью rc.d скриптов.

Создаете в /etc/rc.d скрипт
# touch /etc/rc.d/program_name
Открываете для редактирования
# vi  /etc/rc.d/program_name
Пишете минимальный набор функций. Для выполнения задержки перед запуском используем функцию start_precmd . Замените в скрипте program_name на ваш исполняемый файл.
   
#!/bin/sh
# REQUIRE: NETWORKING SERVERS
. /etc/rc.subr

name="
program_name"
rcvar=
program_name_enable
command="/usr/local/sbin/
program_name"
start_precmd="${name}_prestart"

load_rc_config $name
: ${
program_name_enable="NO"}

name_prestart()
{
        echo "Waiting 60 sec."
        sleep 60
}

run_rc_command "$1"
Служба будет запускаться, останавливаться и перезапускаться, как обычно, по start, stop, restart.
# service program_name start
Что бы сервис стартовал автоматически в /etc/rc.conf пишем program_name_enable="YES" и не забудьте назначить исполняемый биты.
# chmod +x /etc/rc.d/program_name

09 июля 2015

Коробочка с сердцем

Если вам понадобилась подарочная коробка, то не спешите бежать в магазин и тратить N-ую сумму денег! Возьмите лучше красивую оберточную бумагу и сделайте ее сами. К тому же и размер будет специально под ваш подарок, а еще дешевле и красивее! 

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


Что бы сделать свою коробочку вам потребуется около получаса времени. Посмотрите и повторите мою видео-инструкцию, все достаточно просто.


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

Кстати, коробка может быть произвольного размера и прямоугольной формы. В таком случае найдите наибольшую размерность вашего подарка. Пусть это будет его длинна l. Тогда для наглядности представим, что подарок расположен на листе бумаги следующим образом.
где c - диагональ листа, a и b - его стороны и они равны, лист должен быть квадратным!  

Тогда формула для диагонали листа будет

c=2l+4d,

где d - высота подарка.

А отсюда по "теореме пифагора" найдем сторону листа

Это значит, если вам надо квадратную коробку с гранью 10 см, то лист бумаги должен быть 42.5 см.

В качестве примера изготовим прямоугольную коробку для колоды карт: длинна 9.5 см, ширина 7 см, высота 2 см. Следовательно сторона листа  должна быть 19.1 см.
   
Теперь отрезаем квадратный лист бумаги с вычисленной стороной и изготавливаем две одинаковые заготовки, дно и крышку по этой видео инструкции. Я в качестве примера использую обычную белую бумагу, но вы возьмите красивую оберточную!

 
Дарите красиво!

07 июля 2015

Не пингуется шлюз

Хочу поделиться опытом, возможно кому то поможет сэкономить время!
Ситуация такая: сеть есть, но интернет не работает. Первое, что проверил, это шлюз! По странным обстоятельствам, он перестал пинговаться. На пинг отвечает:  "host is down" или просто висит. Казалось бы все очевидно, выключен шлюз, но провайдер говорит, что у них все работает. И не поспоришь ведь, лампочки на сетевой мигают, действительно все якобы работает.

Начал разбираться. Вставляю в сетевую кабель от локалки, сеть есть- значит дело не в сетевой!
Вставил провод провайдера в ноутбук - интернет есть! Действительно значит у них все работает.

Поставил обратно провод провайдера в свою сетевую, не работает. Что же могло случиться? Зашел в состояние подключения, смотрю, пакеты уходят и не приходят! 
Воткнул провод обратно в ноут, смотрю, а скорость, то всего 10 Мбит/c. 


Тут стало все ясно. Выставил вручную на своей сетевой скорость на 10 Мбит/c и тоже все заработало.

Это делается так.  Открываете Центр управления сетями и общим доступом через панель управления. Справа изменение параметров адаптера. Выбираете нужный адаптер. Правый клик, затем Свойства. Там на вкладке Сеть будет кнопка Настроить. Нажимаете ее попадаете в свойства адаптера. Переходите на вкладку Дополнительно.  Там в списке находите параметр Скорость и режим дуплекса. Меняете с Автосогласования на нужное значение.


Вывод из сей истории таков. Оказалось у провайдера "сгорел" порт на коммутаторе и заместо 100 Мбит/c стал работать только на 10 МБит/c, хотя они сказали, что стоит auto. А моя сетевая почему то не могла выполнить правильное автосогласование. Вот и не доходили пакеты. На ноуте же сетевая с этой задачей справилась отлично! 

Кстати, что бы на freebsd принудительно установить на интерфейсе скорость 10 Мбит/с полный дуплекс, нужно выполнить команду:
# ifconfig re0 media 10baseT/UTP mediaopt full-duplex

30 апреля 2015

Как изменить пути всех песен в iTunes

Если вам понадобилось перенести песни в другое место, а iTunes стал ругаться "Не удается работать с песней, так как не найден исходный файл. Найти его?"


Решить проблему можно несколькими способами.
Конечно можно вручную искать каждую песню. Но если их много?
Можно удалить эти песни из медиатеки, а затем добавить из нового места. Но в этом случае потеряется информация о включении в плейлист, рейтинге, комментарии и другая статистика!

Правильнее будет поступить следующим образом.
Как известно, медиатека хранится в файле iTunes Library.itl, расположенном по следующему пути "/Пользователи/имя_пользователя/Музыка/iTunes/iTunes Library.itl". Но напрямую редактировать его нельзя, он записан в закрытом формате.

Там есть еще один файл iTunes Music Library.xml, только от его редактирования толку немного. Он служит для быстрого доступа к содержимому медиатеки такими программами, как iPhoto и iMovie и др. И при последующем запуске он перезаписыватся!

Поэтому сначала нужно сделать экспорт медиатеки. 


Меню Файл>Медиатека>Экспортировать Медиатеку. Выберите файл, куда хотите ее сохранить. Он сохранится в формате XML. 

Если строки с меню у вас нет, то надо ее включить "Показать строку меню".
Тем временем, закройте iTunes и удалите или на всякий случай переместите файлы медиатеки в надежное место. Главное, что бы в папке "/Пользователи/имя_пользователя/Музыка/iTunes/"  не было файлов iTunes Music Library.xml и iTunes Library.itl.

Затем открываете экспортированный файл медиатеки обычным Блокнотом. Находите секцию <key>Location</key>. Там указан путь к песне.


И через функцию замены (Меню Правка>Заменить...) разом меняете все старые пути ВСЕХ песен на новые.

Например, файл лежал
file://localhost/с:/Music/lionel_richie_-_how_long_(zaycev.net).mp3
а вы его перенесли 
file://localhost/d:/New_puth/Music/lionel_richie_-_how_long_(zaycev.net).mp3

Поэтому меняем все "с:/Music" на "d:/New_puth/Music" и нажимаем Заменить все.

После замены сохраните файл Ctrl+S и можете закрыть Блокнот. Запустите iTunes и выберите Файл>Медиатека>Импортировать плейлист. Ждете некоторое время, пока идет процесс импорта (зависит от количества песен).

В итоге получаете вашу медиатеку с измененными путями файлов и со всеми рейтингами, плейлистами и т.д.

Хорошего дня и хорошей музыки!

02 апреля 2015

Mediatomb - DLNA-сервер

Все таки транскодирование - это вещь! Экономит кучу времени и нервов! Вы просто перестаете думать о том, в каком формате у вас фильм и точно знаете, что он запустится на вашем любимом телевизоре! Поэтому сегодня мы настроим dlna-сервер Mediatomb на FreeBSD для вашего медиа-архива. Статья больше для себя, что бы не забыть.

Официальный сайт проекта - http://mediatomb.cc. Так же там есть русскоязычный форум. Поэтому если появятся вопросы, здесь их помогут быстро решить.
 
Ставим из портов
# cd /usr/ports/net/mediatomb
# make install clean
Прописываем автозапуск, добавляем в /etc/rc.conf
mediatomb_enable="YES"
mediatomb_flags="-i 192.168.25.1"
Настраиваем, редактируем конфигурационный файл
/usr/local/etc/mediatomb/config.xml
Полную справку по всем опциям настройки можно посмотреть тут.

1) Меняем порт для веб-интерфеса (по умолчанию 49152), в секции <server>
 <port>49153</port>
2) Включаем доступ к web-интерфесу по логин/паролю.
<ui enabled="yes" show-tooltips="yes">
     <accounts enabled="yes" session-timeout="30">
        <account user="user_name" password="password"/>
     </accounts>
</ui>
3) Меняем название медиасервера
<name>Name_Server</name>

4) Написано, что это нужно включить для PlayStation 3, но без этого у меня не заработала перемотка на телевизоре LG.
<protocolInfo extend="yes">
5) Поддержка русских названий, при условии, что у вас локаль UTF-8 (как это сделать здесь)
<import hidden-files="no"> 
   <filesystem-charset>UTF-8</filesystem-charset> 
   <metadata-charset>UTF-8</metadata-charset>
   <playlist-charset>UTF-8</playlist-charset>
... 
</import>
6) Добавляем недостающие форматы
<extension-mimetype ignore-unknown="yes">
  <map from="mkv" to="video/x-msvideo"/>
  <map from="mka" to="audio/x-msaudio"/>
  <map from="mp3" to="audio/mpeg"/> 
  <map from="ts" to="video/mpeg"/> 
  <map from="mp4" to="video/mpeg"/> 
  <map from="jpg" to="image/jpeg"/> 
  <map from="jpeg" to="image/jpeg"/>
  <map from="avi" to="video/divx"/>
7) Включаем транскодирование
<transcoding enabled="yes">
8) Показ кадра из фильма
<extended-runtime-options> 
  <ffmpegthumbnailer enabled="yes"> 
    <thumbnail-size>128</thumbnail-size> 
    <seek-percentage>5</seek-percentage> 
    <filmstrip-overlay>yes</filmstrip-overlay> 
    <workaround-bugs>no</workaround-bugs>
    <image-quality>10</image-quality> 
  </ffmpegthumbnailer> 
</extended-runtime-options>


Запускаем
# service mediatomb start
Теперь можно перейти по адресу http://192.168.25.1:49153, ввести имя, пароль и приступить к наполнению медиатеки.


Здесь переходите на вкладку Filesystem, выбираете нужную папку, добавляете  ее с автосканированием. И отмечаете параметры, сканировать по времени, рекурсивно и жмете кнопку Set. 

 

Открываете в телевизоре SmartShare или AllShare и проверяйте - работает! Все легко и просто!

P.S.
Что бы отключить папку PC-directory в секции  <server> добавляете опцию
<pc-directory upnp-hide="yes"/>

 

06 марта 2015

Раздача IPTV через DLNA

Cмотреть IPTV на телевизоре можно и без специальной приставки или виджета SmartTV, а через обычный роутер. Достаточно, что бы ваш телевизор поддерживал протокол DLNA.

Поможет нам в этом легковесный медиа-сервер xupnpd, который умеет транслировать потоковое видео в локальную сеть. Его можно поставить на большое количество роутеров, но мы будем ставить на сервер с FreeBSD.
Из основных особенностей стоит отметить.
  1. Имеет встроенный мультикаст-прокси, таким образом клиенты, которые не поддерживают мультикастовые рассылки будут получать IPTV трафик через HTTP.
  2. В качестве источника видео может выступать http-ресурс. 
  3. Возможность предоставлять доступ к локальным видео-файлам.
  4. Расширение функциональности путем написания скриптов на языке Lua. 
  5. Не умеет транскодировать!
  6. Поддерживает M3U плейлисты. 
  7. Web-интерфейс для управления.
К сожалению в портах его пока нет, поэтому ставить будем из исходников. 
Получаем их по svn
# svn co http://tsdemuxer.googlecode.com/svn/trunk/xupnpd 
# cd xupnpd/src/ 
Хочу обратить внимание, что в Freebsd 10 gcc уже не используется по умолчанию.  Поэтому нужно открыть Makefile и вручную в секции x86_bsd заменить gcc на clang
x86_bsd:
 make -C $(LUA) CC=clang a
 clang -O2 -c -o md5.o md5c.c
 clang $(CFLAGS) -DINET -DWITH_LIBUUID -o xupnpd $(SRC)  md5.o -llua -lm
 strip xupnpd
Можно начинать сборку
# gmake x86_bsd
После компиляции и линковки вы получите исполняемый файл xupnpd.

Перед запуском открываете файл настроек xupnpd.lua и правите интерфейс, на котором будет раздача.
cfg.ssdp_interface='vr0'
И интерфейс через который будете получать мультикаст трафик.
cfg.mcast_interface='eth1'
Можно запускать
# ./xupnpd
Заходите браузером на адрес вашего интерфейса, например 192.168.25.1:4044 и увидите такую web-морду.

Здесь вы можете загрузить M3U плейлист с каналами от вашего провайдера.

Что бы расшарить видеофайлы, нужно в конфиге xupnpd.lua добавить нужную папку
playlist= {
  { '/share', 'Share Directory' }
}
Для запуска в режиме демона
cfg.daemon=true
Приятного просмотра!

18 февраля 2015

Чем открыть файл *.h264

Если у вас возникли трудности, вы не знаете, как открыть и воспроизвести видео файлы в формате *.h264, то данная статья специально для вас.
 
Как правило, в таком формате сохраняют видео многие видеорегистраторы и DVR. Это не что иное, как видео сжатое кодеком h.264 в сыром, бинарном виде, т.е. без контейнера.  Поэтому видеоплееры не знают какой демультиплексор использовать и не могут декодировать видео. 

Все, что нужно сделать, это положить такое видео в контейнер, например, в MKV, MP4, или OGM. Для работы с mp4 используют утилиту командной строки MP4Box отдельно или в связке с графическим интерфейсом My MP4Box GUI.

Мы будем использовать контейнер MKV и утилиту MKVmerge GUI из пакета MKVToolnix. Взять можно на официальной странице в разделе Windows.

Запускаете программу mkvtoolnix-gui.exe, добавляете файл *.h264 и нажимаете кнопку "Выполнить слияние".


На выходе получаете файл mkv, который открывается в любом плеере.

Единственное, что нужно добавлять по одному видеофайлу, а иначе на выходе он их объединит в один!

Если хотите разом обработать несколько файлов, то сначала добавьте первый,  затем кликните на нем правой клавишей мыши и выберите "прикрепить файлы". Они прикрепятся следующим образом, как на изображении ниже.


Теперь перейдите на вкладку  "Вывод" и выберите в пункте режим разбиения "После этого времени", а ниже поставьте длительность в секундах. В примере выходной файл разобьется на файлы по 8,33 мин.


Или же можно научить плеер открывать файлы *.h264 без лишних манипуляций. Для этого нужно вручную задать, какой модуль демультиплексора использовать.

На примере плеера VLC. Открываете настройки.
Ставите "Показывать все настройки", заходите в раздел Демультиплексоры и выбираете "Демультиплексор H264". Нажимаем Сохранить.


Теперь сырое видео из файлов *.h264 будет воспроизводиться прямо в плеере! После просмотра не забудьте вернуть назад автоматический выбор демультиплексора.