Новый блог

Создал себе новый блог на своём домене. Добро пожаловать на www.dimkas.me! Этот блог обновляться, думаю, больше не будет, но останется для сохранения накопленных знаний. Со временем я планирую перетащить все старые записи в новый блог.

Gadget Town

Открыл для себя новую китайскую барахолку - http://www.gadgettown.com.
Есть очень интересные штуки. Вот, например:

OTRS: Заголовок и логотип компании на странице клиента и в FAQ

Edit Config Settings in Framework -> Frontend::Customer
Параметры CustomerHeadline и CustomerLogo.
Путь к логотипу задаётся относительно <OTRS_HOME>/var/httpd/htdocs/

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

OTRS: печать заявок в PDF

Захотелось мне распечатать заявку из OTRS в виде PDF-файла. А печать-то и не работает. Поковырялся денёк и решил проблему. Описание проблемы и решения - на русскоязычном форуме OTRS.

Блоги ведут те, у кого

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

OTRS: автозакрытие заявки по-умолчанию

Продолжаю потихоньку разбираться с OTRS. Сегодняшнее улучшение - при ответе на заявку по-умолчанию устанавливается автозакрытие через неделю. Для этого нужно поменять следующие параметры:

Следующее состояние задачи по-умолчанию:
Edit Config Settings in Ticket -> Frontend::Agent::Ticket::ViewCompose
Ticket::Frontend::AgentTicketCompose###StateDefault = pending auto close+


Время ожидания автозакрытия:
Edit Config Settings in Ticket -> Frontend::Agent
Ticket::Frontend::PendingDiffTime = 604800

Debian, VirtualBox 4.0, USB

После установки VirtualBox 4.0 вылезла самая распространённая, на мой взгляд, проблема - нет доступа к USB-устройствам. Обычно она решалась добавлением себя в группу vboxusers и назначением правильных прав доступа. Но с 4-й версией всё оказалось не так просто - все мои игры с правами не дали никаких результатов. Помогла мне следующая ссылка: http://linux.derkeiler.com/Mailing-Lists/Debian/2009-04/msg02440.html

Итак, проверим всё по шагам.

1. Ваш пользователь должен быть в группе vboxusers:
$ grep vboxusers /etc/group
vboxusers:x:117:dimka

Всё верно, gid=117, запомним.

2. В /etc/fstab должна присутствовать следующая строка:
# VirtualBox USB
none /proc/bus/usb usbfs devgid=117,devmode=664 0 0

Обратите внимание на параметр devgid - он должен совпадать c gid из пункта 1.

3. В файле /etc/udev/rules.d/10-vboxdrv.rules первая строка должна выглядеть так:
KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root", GROUP="vboxusers", MODE="0664"

В моём случае группа была root, но её исправление на ход дела не повлияло, поэтому понадобился 4-й пункт.

4. В файле /etc/init.d/mountkernfs.sh находим строку вида:
domount usbfs usbdevfs /proc/bus/usb -onoexec,nosuid,nodev,devgid=117,devmode=664

и исправляем её (всё в одну строку):
domount usbfs usbdevfs /proc/bus/usb usbfs -onoexec,nosuid,nodev,devgid=117,devmode=664

т.е. добавляем usbfs перед -o.

5. На всякий случай можно переустановить драйвера vbox:
$ sudo /etc/init.d/vboxdrv setup

После этого можно запускать виртуальную машину и подключать USB-устройства.

Цифровая дистрибуция

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

Например, игра Runaway 3: Поворот судьбы на том же ozon.ru стоит 238 рублей, а боксовая версия - почти 700 р. Если же покупать игру без носителя, то обойдётся она в 174 рубля на сайтах gama-gama.ru и yuplay.ru. При этом на yuplay.ru до недавнего времени действовало спецпредложение, по которому игру можно было купить менее чем за 90 рублей! Жаль, я его упустил - Яндекс.Денег не было на тот момент.

К недостаткам скачиваемых игр/программ можно отнести обратную сторону отсутствия носителя - нет красивой коробочки с диском. Но это легко решается наличием пишущего DVD-привода и хорошим принтером. Так же нужно отметить, что не всегда отсутствие носителя гарантирует низкую цену. Я уже говорил, что купил Дилемма 2 на озоне за 148 рублей. На yuplay.ru она будет стоит уже 240 рублей. Зато на gama-gama.ru - всего 139. Так что надо внимательно изучать все предложения :) И ещё один тонкий момент - игры с gama-gama.ru после покупки требуют активации через интернет. Причём количество таких активаций ограничено.

Однако, все описаные сервисы предлагают игры для Windows, а у меня тут блог про Linux, вроде бы? Есть скачиваемые игры и для Linux. Здесь ситуация менее упорядоченная. Некоторые разработчики продают игры сами. Например, Machinarium можно купить за 20 долларов - набор из версий для Windows/Linux/Mac и саундтрека. Недёшево, но я не стал жмотится, надо поддерживать такие начинания. Несколько позже я узнал о Hubmle Bundle - целая пачка кроссплатформенных игр по открытой цене. За 10, например, долларов можно купить и Машинариум, и кучу других интересных игр. Опять же, никакого ожидания - заплатил, скачал и начал играть. Кстати, по статистике линуксоиды оказались самыми щедрыми покупателями ;)

Ozon.ru

Изредка пользуюсь магазином ozon.ru для покупки недорогих игр и книг. Вот недавно такую корзинку собрал: игры Дилемма и Дилемма 2, а так же книга "Не прислоняться" от Метроэльфа и Дивова. Игрушки средненькие, но любителям квестов, вроде меня, должны понравиться. (Да, они под Windows.) Книга... наверно на любителя, но я от неё в восторге - очень много любопытных технических подробностей из жизни загадочного метрополитена описаны простыми понятными словами. Такими же простыми словами описаны эмоции и переживания человека, ставшего частью этого большого и сложного механизма, спасающего жизнь больших городов.

Заодно решил опробовать партнёрскую программу Озона - даёшь ссылки на их товары у себя в блоге и получаешь процент с продаж. Уверен, что заработаю с этого ровно ноль, но удовлетворить любопытство - это святое :) Кстати, ничего для облегчения жизни партнёров озон не делает - ссылку копируешь из адресной строки браузера, код партнёра дописываешь руками. А ведь совсем нетрудно сделать маленькую кнопочку на странице с товаром...

То ли я вчера был слишком сонный, то ли мои пожелания сбылись, то ли надо было просто перелогиниться. Теперь в озоне есть панель партнёра, через которую можно одним щелчком мыши получить партнёрскую ссылку на страницу товара или HTML-код с описанием товара и фотографией. Удобно!

Переезд и Google

В связи с переездом на съёмную квартиру я оказался отлучённым от домашнего компьютера. Перед отъездом предусмотрительно закинул себе в почту экспорт подписок из Liferea и документ OpenOffice Calc, в котором я веду учёт финансов. Документ OpenCalc гугл предложил открыть прямо из web-почты, но почему-то не справился. Сохранённый на диск файл загрузился в GoogleDocs без проблем и все мои денежные потоки снова под контролем. Список подписок (какое словосочетание!) в формате opml GooggleReader импортировал без проблем.

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

PS: В принципе, можно было бы обойтись Dropbox'ом, который я использую для синхронизации логов разных IM клиентов между домашней и рабочей машиной, но почему-то я об этом только сейчас подумал.

Непростой Gnome

Хотел получить файл с телефона через Bluetooth. Нажимаю соответствующую кнопку в диалоге настроек Bluetooth и вижу такое сообщение:
Не удаётся открыть параметры «Общего доступа к личным файлам»
Убедитесь, что программа «Общий доступ к личным файлам» правильно установлена.


Гугл на это запрос ничего не выдал. Пробуем обходной путь:
export LANG=C
bluetooth-properties


Видим:
Cannot start "Personal File Sharing" Preferences
Please verify that the "Personal File Sharing" program is correctly installed.


Снова спрашиваем гугл и узнаём, что нам нужен пакет gnome-user-share. А почему нельзя было сразу написать об этом в сообщении об ошибке? Зачем создавать трудности по поиску нужной программы на ровном месте?

Отправил баг: https://bugzilla.gnome.org/show_bug.cgi?id=643372

PMIO-V9T-0006S

Весь день ковыряюсь с этой картой (PCI-контроллер на 6 ком-портов) на чипе MCS9865.

Драйвер нашёл, собрал - порты появились, но не работаю. Половина не открывается, вторая - открывается и молчит. В соседней машине похожая карточка на чипе MCS9845 - работает без драйверов и без проблем, только 8550.nr_uarts=8 надо в параметры ядра дописать.

Печально...

Interstate 76 на современном компьютере

Interstate '76 - хорошая игра, которую мне не довелось пройти в то время, когда компьютеры были большими и медленными. Навёрстываю упущенное. Не без трудностей.

Проблема первая - игра зависает в главном меню при попытке начать поездку (Trip).
Решение - запустить dxdiag и полностью отключить аппаратное ускорение звука.

Проблема вторая - в сцене 5 не получается перепрыгнуть через каньон.
Решение - притормозить процессор. Да, в процессе гугления нашёл упоминание о том, что производительность процессора влияет на физику игры. И даже если набрать нужную скорость перед трамплином, машина всё равно упадёт в яму. Нам поможет CPU Grabber. Ставим ползунок на 80 и жмём Старт.

Пока всё.

Настройка простого Samba-ресурса

Понадобилось мне открыть доступ к сетевому диску для Windows-клиента. С Linux всё просто - NFS настраивается быстро. А вот с самбой сложнее выходит. Опишу здесь, чтоб в следующий раз не перекапывать весь интернет.

/etc/samba/smb.conf
[global]
workgroup = HOME
netbios name = Box
server string = Box
security = share
browseable = Yes

[files]
path = /mnt
readonly = Yes
guest ok = Yes


HOME - имя рабочей группы
Box - имя сервера
files - имя ресурса
/mnt - путь к файлам

Сразу отмечу, что имя рабочей группы лучше выбрать WORKGROUP, т.к. в противном случае придётся перенастраивать имя группы на машине с Windows.

Проверить работоспособность можно командой
$ smbclient -U guest -N -L 192.168.0.1
Domain=[HOME] OS=[Unix] Server=[Samba 3.5.6]

Sharename Type Comment
--------- ---- -------
files Disk
IPC$ IPC IPC Service (Box)
Domain=[HOME] OS=[Unix] Server=[Samba 3.5.6]

Server Comment
--------- -------
BOX Box

Workgroup Master
--------- -------
HOME BOX


Можно видеть ресурс files. Подключимся к нему:
$ smbclient -U guest -N //192.168.0.1/files
Domain=[HOME] OS=[Unix] Server=[Samba 3.5.6]
Server not using user level security and no password supplied.
smb: \> dir
. D 0 Sun Feb 6 18:40:59 2011
.. D 0 Tue Feb 15 00:13:26 2011
pictures D 0 Tue Feb 23 17:18:44 2010
download D 0 Sun Feb 6 20:06:14 2011
photos D 0 Sun Apr 4 22:06:57 2010
backup D 0 Sat Jan 15 17:00:15 2011
books D 0 Tue Jan 4 13:43:57 2011

58681 blocks of size 16777216. 28444 blocks available
smb: \> quit


Можно видеть, что содержимое нам доступно.

OTRS

Недавно осознал необходимость внедрения системы техподдержки пользователей, отличной от простой переписки по e-mail. Первое, что мне попалось на глаза - Request Tracker. Поковырял его немного и понял, что ничего не понимаю. Следующим стал OTRS. С ним дело пошло лучше - интерфейс приятнее и понятнее. Хотя система существенно сложнее в настройке, чем Redmine. Потихоньку разбираюсь. Важные моменты буду отмечать здесь.

Для начала, сравнение внешнего вида:

Request Tracker


OTRS


По мне, OTRS гораздо симпатичнее.

IPSec туннель с помощью ipsec-tools

Поднимал ipsec-туннель на роутере. Всё хорошо - роутеры друг друга нашли, о канале договорились, но вот пакеты почему-то мимо туннеля в сеть уходят. Долго ковырялся, потом понял: пакеты перехватываются ядром после прохождения iptables, а значит, должны сохранять адреса отправителя и получателя неизменными до самого конца. У меня же пакеты уходили в сеть с изменённым адресом отправителя - работал маскарадинг. Добавил в iptables следующее правило:

iptables -t nat -A POSTROUTING -o ppp0 -d $NETW/$MASK -j ACCEPT


Оно должно идти перед маскарадингом. $NETW/$MASK - адрес и маска удалённой сети. Например, 192.168.2.0/255.255.255.0. Далее, для корректной работы нужно разрешить входящие соединения на UDP порт 500 и протоколы esp/ah. Например, вот так:


iptables -t filter -N ipsec
iptables -t filter -F ipsec
iptables -t filter -A ipsec -p udp --dport 500 -j ACCEPT
iptables -t filter -A ipsec -p esp -j ACCEPT
iptables -t filter -A ipsec -p ah -j ACCEPT
iptables -t filter -A INPUT -j ipsec


Теперь туннель установится и будет работать.

Скрипт для wget

Написал маленький скрипт для автоматической закачки файлов сервером. Идея проста - кидаем файл со ссылкой в определённую папку, скрипт его находит и запускает wget. Запускается скрипт из крона.


#!/bin/sh
LOG=/mnt/download/download.log
cd /mnt/download
FILES=`ls -1d ./*.download 2>/dev/null`
for f in $FILES; do
if [ ! -f "${f}.log" ]; then
MSG=`wget -b -o ${f}.log --limit-rate=100k -nd -i $f`
MARK=`date '+%F %T'`
echo "$MARK $f ($MSG)" >> $LOG
fi
done