суббота, 10 сентября 2011 г.

Создать animated gif под linux

Попробовал два способа:

1. Короткий.

mplayer video.avi -ss hh:mm:ss.lll -endpos hh:mm:ss.lll -vf scale=160:120 -vo gif89a:fps=3:output=out.gif -nosound

(качество получилось так себе.)

2. Длинный.

выбираем нужный кусок и просматриваем его:
mplayer -ao null -loop 0 -ss 0:11:22 -endpos 5 file.avi
(можно было указывать -endpos не в секундах, а тоже в виде hh:mm:ss)

преобразуем понравившийся кусок в кучку джипегов
mplayer input.avi -ss hh:mm:ss.lll -endpos 5 -vo jpeg:outdir=dirname:quality=80

конвертим джпипеги в гифы
for f in /workdir/*.jpg
do
g="${f%.*}.gif"
convert $f $g
done

собираем анимированный gif:
gifsicle --loopcount=0 --delay 8 --colors 256 -O2 -i --resize 480x_ *.gif > ani.gif

среда, 24 августа 2011 г.

Фильтры в Packetyzer-е

В хелпе написано: ip.addr == xxx.xxx.xxx.xxx
Фигушки. Канает: host xxx.xxx.xxx.xxx

Поставить значение MTU

Windows:
По умолчанию в локалке используется MTU=1500.
Если нужно изменить, следует в разделе
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<AdapterID>
создать параметр MTU типа REG_DWORD нужным значением (говорят, от 68 до 1500)

Linux:
ifconfig eth0 mtu 1412
в /etc/network/interfaces прописать где-то mtu 1400

Excel 2007 - добавление своей кнопки на ленту

Задача оказалась довольно простой. Раньше, в 2003, чтобы добавить кнопку на тулбар, приходилось обрабатывать событие Open рабочей книги. В 2007 делается по-другому.

1. В самой книге открываем редактор VBA, в котором пишем нужную подпрограммку с обязательным параметром:
Sub МояПодпрограмма(control As IRibbonControl)
MsgBox "Кнопку нажали"
End Sub

2. Книгу сохраняем в файл, например, myFile.xlsm. У этого файла меняем расширение на zip и распаковываем его в отдельную папку.

3. В этой папке (можно и не в корне) создаем файл с именем, например, customUI.xml в кодировке utf-8 примерно такого вида:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
<tabs>
<tab id="CustomTab" label="Моя закладка">
<group id="SampleGroup" label="Моя группа кнопок">
<button id="Button" label="Выполнить мою программу" imageMso="HappyFace" size="large" onAction="МояПодпрограмма" />
</group >
</tab>
</tabs>
</ribbon>
</customUI>


4. В папке _rels есть файл .rels (тоже имеет структуру xml), в котором надо прописать следующую строку:
<Relationship Id="какой-нибудь ID" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="местонахождение customUI.xml из п.3" />

5. Весь этот зоопарк запаковываем обратно в файл myFile.xlsm.

суббота, 30 июля 2011 г.

Видеозвонки в pidgin

Ну-у, вот тут полезный мануал:
http://michael.stapelberg.de/Artikel/video_chat_with_pidgin

Вкратце:

тестируем, что камера работает:
mplayer -v tv:// -tv device=/dev/video0:driver=v4l2

устанавливаем gstreamer-tools, тестируем
gst-launch v4l2src ! xvimagesink

В pidgin в меню "Средства" → "Модули" находим "голосовые/видеонастройки" и настраиваем модуль так:
Аудио → Ввод → PulseAudio → Webcam C270 Analog Mono
Видео → Вывод → Plugin → X Window System (XV) → Intel Textured Video
Видео → Ввод → Plugin → Video4Linux2 → UVC Camera

Перезапускаем pidgin. После этого в окне чата с собеседником в пункте меню "Беседа" появляется пункт "Медиа", а там подпункты "видеозвонок" и т.п.

На ubuntu всё нормально (кажется, на ком бы проверить? 8-)), а вот как будет на slackware?

Правда, есть инструкция по прививке дебиановского пакета на другие сборки ^_^:

1. http://packages.debian.org
2. в поле «слово для поиска» вписываете «pidgin»
3. в списке «дистрибутив» выбираете нужный (например, «стабильный»)
4. отмечаете галочкой «искать только точные совпадения»
5. нажимаете «искать»
6. щёлкаете по найденной ссылке
7. в блоке справа находите надпись «исходный код pidgin»
8. щёлкаете по ссылке pidgin_<версия>.orig.tar.bz2 и получаете исходный код pidgin нужной версии (ровно то же самое можно получить и с сайта разработчиков и из репозитории вашего дистрибутива)
9. щёлкаете по ссылке pidgin_<версия>.debian.tar.gz и получаете патч для этой версии исходников
10. ...
11. profit

Надо будет попробовать...

среда, 27 июля 2011 г.

python: Переименовать файлы *.fb2

Возникла задача: переименовать файлы *.fb2 в формат "<Автор> <Название>.FB2"

Так как *.fb2 - это на самом деле xml, то решение простое:
1. Получить список файлов в каталоге
2. Загрузить в парсер каждый файл
3. Найти там имя автора и название книги
4. Переименовать файл

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os

import xml.dom.minidom
from xml.dom.minidom import Node

path = os.path.expanduser(u"~/Загрузки/fb2/")

dirList = (file for file in os.listdir(path) if os.path.isfile(os.path.join(path, file)) and file.endswith("fb2"))

for fname in dirList:

    print fname

    doc = xml.dom.minidom.parse(path + fname)

    last_name = ""
    book_title = ""

    for title_node in doc.getElementsByTagName("title-info"):

        for author_node in title_node.getElementsByTagName("author"):
            for node2 in author_node.getElementsByTagName("last-name"):
                for node3 in node2.childNodes:
                    if node3.nodeType == Node.TEXT_NODE:
                        last_name = node3.data

        for book_node in title_node.getElementsByTagName("book-title"):
            for node2 in book_node.childNodes:
                if node2.nodeType == Node.TEXT_NODE:
                    book_title = node2.data

    if last_name != "" and book_title != "":
        new_fname = u'%s %s.fb2' % (last_name, book_title)
        os.rename(path + fname, path + new_fname)
        print "%s = %s" % (fname, new_fname)

пятница, 8 июля 2011 г.

Настройка принтера под Slackware

Ссылка 1 - debian, но тоже хорошо
Ссылка 2
HP Linux imaging and printing

вкратце как расшарить принтер:

1. заводим юзера smbprint с правами на запись в папку /home/smbprint

2. в /etc/samba/smb.conf пишем:
[global]
printcap name = cups
printing = cups
security = share
[printers]
browseable = yes
printable = yes
public = yes
create mode = 0700
guest only = yes
use client driver = yes
guest account = smbprint
path = /home/smbprint

3. в /etc/cups/mime.convs раскомментируем строчку:
application/octet-stream application/vnd.cups-raw 0 -

4. в /etc/cups/mime.types раскомментируем строчку:
application/octet-stream

5. в /etc/cups/cupsd.conf пишем:
<Location /printers>
AuthType None
Order Deny,Allow
Deny From None
Allow From All
</Location>

6. перезапускаем службы:
/etc/rc.d/rc.samba restart
/etc/rc.d/rc.cups restart

UPD 2012-11-07:
А вот с принтером Xerox Phaser 3130 получилась небольшая проблема. Вроде бы с generic драйвером он работает, однако с завидной периодичностью начинает печатать мусор (кракозябры, псевдографику). Попробовал установить splix-2.0.0, может, поможет.

Спликс этот тоже не без проблем, кстати, собрался. Во-первых, собирать пришлось командой make DISABLE_JBIG=1, и, во-вторых, поправить файл /src/ppdfile.cpp в соответствии с http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=565097