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 будет воспроизводиться прямо в плеере! После просмотра не забудьте вернуть назад автоматический выбор демультиплексора.

Wi-Fi на BSD системах

Думаю у многих есть желание добавить функционал точки доступа к своему FreeBSD серверу. Очевидно, зачем покупать лишнее устройство в виде отдельно стоящего Wi-Fi-роутера, если практически тоже самое можно получить от вашего сервера с минимальными затратами.

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

Нам понадобится обычная wi-fi карта, USB или PCI [Express].

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

Для чипов разных производителей с разными интерфейсами шин существуют отдельные драйверы. Например, для Broadcom на PCI это bwi, для Atheros  на  PCI- ath, atheros на USB - uath, Ralink на USB - run, rum и т.д.

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

Проверить поддерживаемые беспроводные адаптерв можно непосредственно на сайте в разделе GetFreeBSD>Release Information> Hardware Notes> 3.5. Wireless Network Interfaces
 
Если вашего адаптера нет в числе поддерживаемого, то можно попробовать использовать windows драйвер в обертке NDIS. Но имейте в виду, что такой драйвер  не сможет работать в режиме точки доступа!

Здесь есть полный список и поддерживаемых чипов всех производителей для BSD-систем. 
Что бы узнать на каком чипе ваша карточка, достаточно открыть ее описание на сайте wikidevi.com. Обращайте внимание, что некоторые модели имеют несколько ревизий на разных чипах, поэтому внимательно сверяйте версии. Они указываются на наклейках коробки или самих устройствах.

Так же обращайте внимание, что не все драйверы поддерживают 11n режим, даже если на самом устройстве написано, что оно работает. На текущий момент его поддерживают всего три драйвера ath, iwn и mwl.

Посмотрев, что предлагается в ближайших магазинах мой выбор пал на два адаптера D-Link DWA-140 и DWA-160, оба собраны на чипах Ralink и поддерживаются драйвером run, но пока только в 11g режиме. Их основное отличие - второй может работать в двух диапазонах 2,4 и 5 ГГц. Стоимость 580 и 850 руб соответственно.
 
Будем считать, что подходящий адаптер у вас имеется. Теперь приступаем непосредственно к настройке.

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

Если это  USB устройство, то пишем
# usbconfig dump_device_desc
Находим там ваш адаптер по ключевым словам 802.11
ugen4.2: <802.11 n WLAN Ralink> at usbus4, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (450mA)

bLength = 0x0012
bDescriptorType = 0x0001
bcdUSB = 0x0200
bDeviceClass = 0x0000
bDeviceSubClass = 0x0000
bDeviceProtocol = 0x0000
bMaxPacketSize0 = 0x0040
idVendor = 0x2001
idProduct = 0x3c20
bcdDevice = 0x0101
iManufacturer = 0x0001 <Ralink>
iProduct = 0x0002 <802.11 n WLAN>
iSerialNumber = 0x0003 <1.0>
bNumConfigurations = 0x0001
Берем его idProduct и ищем в этом списке. Таким образом вы узнаете полное наименование и даже чип.

Если это PCI, то воспользуемся утилитой pciconf.
# pciconf -lv
Получите список всех PCI устройств с указанием драйвера, идентификатора производителя, наименования, класса и подкласса. Например,
rl0@pci0:0:9:0: class=0x020000 card=0x813910ec chip=0x813910ec rev=0x10 hdr=0x00
    vendor     = 'Realtek Semiconductor Co., Ltd.'
    device     = 'RTL-8139/8139C/8139C+'
    class      = network
    subclass   = ethernet
После того, как вы узнали на каком чипе ваше устройство и какой нужен драйвер. Обращаемся к справке man, там сказано, что необходимо прописать в /boot/loader.conf  для загрузки модуля драйвера. В моем случае это.
if_run_load="YES"
runfw_load="YES"
После перезагрузки у вас должно появится новое устройство.
# ifconfig
run0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 2290
        ether ac:f1:df:01:e5:64
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>
        status: running
Если нет, то дайте команду:
# ifconfig wlan0 create wlandev run0
И посмотрите создался ли у вас интерфейс wlan0.
# ifconfig wlan0
Если создался, то удалим:
# ifconfig wlan0 destroy
Дальше в /etc/rc.conf  напишем
ifconfig_wlan0="inet 192.168.0.1/24"
wlans_run0="wlan0"
create_args_wlan0="wlanmode hostap channel 7 country RU"
hostapd_enable=YES
Далее настроим WPA2 аутентификацию. 
И создадим файл
# vi /etc/hostapd.conf
С таким содержимым
interface=wlan0
hw_mode=g
ssid=Your_name
ctrl_interface=/var/run/hostapd
ctrl_interface_group=wheel
# 1 - WPA1; 2 - WPA2; 3 - WPA1+WPA2
wpa=3
wpa_passphrase=Password
# алгоритм управления
wpa_key_mgmt=WPA-PSK
# алгоритмы шифрования
wpa_pairwise=CCMP
Во избежание раскрытия пароля закрываем доступ на чтение файла всем кроме root.
# chmod 700 /etc/hostapd.conf
Вешаем dhcp на wlan0, прописываем в rc.conf
dhcpd_ifaces="wlan0"
Настраиваем фаервол. Для примера добавим в ipfw правило разрешающее все через интерфес wlan0.
add 1098 allow all from any to any via wlan0
Запускаем hostapd
# service hostapd forcestart
И вуаля, у вас появилась сеть  "Your_name".

Но если вдруг за место этого у вас появилось "panic: page fault" типа такого


не отчаивайтесь, у меня такое тоже наблюдалось на FreeBSD 10.1-RELEASE и исключительно на x86, на amd64 все четко. Мне помогло обновление мира до последней текущей версии, 10.1-STABLE #4 r278159.
 
Перед запуском Wi-Fi сети очень важно узнать какие частотные каналы еще не заняты и выбрать любой свободный. Иначе будут проблемы в работе. Например вы просто не сможете подключиться к вашей сети.

Если понадобится удалить точку доступа, то пишем
# ifconfig wlan0 destroy
Вручную создать
# ifconfig wlan0 create wlandev run0 wlanmode hostap ssid Your_name
Сканировать на доступные сети
# ifconfig wlan0 up scan
Или так
# ifconfig wlan0 list scan
Посмотреть, на каких каналах может работать ваш адаптер.
# ifconfig -v wlan0 list channel
И вручную установить нужный канал
# ifconfig wlan0 channel 13
Включить/выключить сеть.
 # ifconfig wlan0 down
 # ifconfig wlan0 up
Перезапустить wlan0 по настройкам из /etc/rc.conf
# service netif restart wlan0