2009-12-16

XSLT - напоминалка

Пока не забыл - и потом не искал снова ответы.

Название текущего узла - name()
Например так:
<xsl:for-each select="tags">
<span id="{name()}>
<xsl:value-of select="."/>
</span>
</xsl:for-each>


Часто используемые таблицы пихаем в переменные (ускоряет работу):

<xsl:variable name="doctypes" select="/doc/types" />

А потом обращаемся по мере необходимости:
<span title="{ $doctypes/dtype[@id=current()/@dtype]/@descr }">
<xsl:apply-templates select="." mode="single"/>
<b><xsl:value-of select="@dtype"/></b>
</span>


Даже ещё лучше - есть же key() - во как:
<xsl:key name="dtypes" match="/doc/types" use="@id" />
<span title="{ key('dtypes',@dtype)/@descr }">
<xsl:apply-templates select="." mode="single"/>
<b><xsl:value-of select="@dtype"/></b>
</span>


Кстати, именно так обращаемся к текущему выбранному узлу: current()/ (а не ./) при выборке из "чужой" таблицы..
Чтобы не было конструкций вида:
<xsl:variable name="id" value="@id" />
<xsl:value-of select="//help[@id=$id]" />

Хватит такого:
<xsl:value-of select="//help[@id=current()/@id]" />


И ещё. Раньше были трудности :)
value-of выбирает только текст. Чтобы выбрать все внутренности (со всеми дочерними нодами) - надо делать copy-of.

2009-12-01

Опять rtorrent

решение то было простое :)
Кривая кодировка и кракозяблы при запуске rtorrent из стартап-скрипта решаются добавлением переменной языка при запуске:

env HOME=/home/rtorrent LC_ALL=ru_RU.UTF-8 /usr/bin/screen -dmS rt /usr/bin/sudo -u rtorrent /usr/bin/rtorrent

2009-09-03

rTorrent побеждён?

Долго мучался с rtorrent.

Красивая (но несколько неудобная) вебмордочка ruTorrent (нагло взятая из uTorrent),
замучала своим 32-битным лимитом - отрицательными размерами файлов и прогнозами - и другими радостями.

Перспектива перехода на amd64 меня пока не устраивает. Хотя видимо когда-то придётся..
Но дело не в этом. Все проблемы с числами - от xmlrpc-c (libxmlrpc-c3).

Во все дистрибутивы упорно пихают клоны 1.06 (libxmlrpc-c3_1.06.21-1_i386.deb).
А поддержка 64-битных целых появилась только в 1.07.
Типы данных I8 вместо I4 - а rtorrent при сборке проверяет наличие макроса HAVE_I8 - и собирается или нет с его поддержкой.

Самостоятельно собрать эту библиотеку из их cvs не получалось. Уж и не помню почему.

Но вот тут недавно наткнулся на готовые пакеты в дебиане - и они поставились без проблем.
Были сборки для версии 1.16.07-1 (библиотека + dev).

Поставилось-обновилось всё на Ubuntu 8.04 без проблем :)
Осталось собрать apt-get -b source libtorrent rtorrent
Но не тут то было. Хоть и собирались (даже из jj 9.04) но глючили не по детски.
Штатная из 8.04 кривые названия файлов рисовала в консольном интерфейсе.
Та что из 9.04 не выходила по ctrl-q, высыпалась в segfault и имела проблемы с подключениями и анонсами с трекерами.

Те же проблемы и с deb взятыми из дебиана + ещё зависимости
от новых libc которые я удовлетворять не собирался.

Радикальное решение - сносим нафиг и пересобираем всё руками (заодно и ipv6 прикрутим).

# сносим
sudo apt-get remove rtorrent libtorrent libtorrent-dev
# получаем последнюю версию rторрента
svn co svn://rakshasa.no/libtorrent/trunk rtorrent
# собираем библиотеку
cd rtorrent/libtorrent
./autogen.sh
./configure --prefix=/usr --enable-ipv6
make
sudo make install
# собираем бинарник
cd ../rtorrent
./autogen.sh
./configure --prefix=/usr --enable-xmlrpc-c --enable-ipv6
make
sudo make install

Вот в общем то и всё.

Дальше лезем и "чистим" rtorrent-based сидбокс (bridge)
Естественно сносим libtorrent, rtorrent
Обновляем libxmlrpc-c3.
Возвращаемся в консольку yakuake где собирали rtorrent и засылаем плоды труда на сидбокс:
rsync -avze ssh /usr/lib/libtorrent* root@bridge:/usr/lib/
rsync -avze ssh /usr/bin/rtorrent root@bridge:/usr/bin/


Запускаем rtorrent на сидбоксе.
Радуемся отданным десяткам гигабайт видимых через веб.
Радуемся русским именам в консольном интерфейсе.
Радуемся работающим трекерам и ctrl-q.
Думаем как теперь проверить работоспособность ipv6 :)
И как теперь дыры искать..

PS:

Проблема ctrl-q оказывается давно описана.
Надо перед всплытием screen -r дать команду stty stop undef
Тогда всё работает. А трекеры вроде нормально живут..

PPS:

Для 10.04 всё те же проблемы с rtorrent и xmlrpc-c..

2009-09-02

ipv6 туннели

Настроил - потом забыл как. Пол часа на ветер вспоминая.
Для того и нужны блоги - чтобы таких ошибок не повторять.

Итак. Как пробить ipv6 туннель на свои компы.
Имеем - две убунты 8.04, разделённые ipv4 сеткой провайдера. Напрямую пингуются.
И есть openvpn туннель между ними. Чтобы не нервировать провайдера :)
Вот через openvpn будем пробрасывать ipv6.
Прямую поддержку openvpn вроде пока не даёт - но это пока не сильно напрягает.

Небольшой рисунок что есть:
NET -- mine -- zyxel == [CTC] == dlink -- bridge
-- ethernet 100/MB
== adsl ~1/MB
[CTC] - интернет провайдер
mine <-> bridge соединены openvpn туннелем.


Хотим чтобы NET была представлена в "глобальной" ipv6 сети - но через bridge.

роутер zyxel - adsl модем.
внутренний адрес 192.168.19.1 - отправляет всё на main.
внешний адрес динамический A.B.0.0/17 + dyndns

сервер mine - интернет сервер локалки предприятия.
eth0 ipv4=192.168.16.16 - смотрит в локалку
eth1 ipv4=192.168.19.2 - внешняя сетка - подключена к модему
tun0 ipv4=10.8.0.1 - openvpn сервер.

хост-роутер bridge.
eth0 ipv4=192.168.1.33 - смотрит в домашнюю сетку
tun0 ipv4=10.8.0.6 - openvpn туннуль на main

роутер dlink - adsl модем+роутер.
внутренний адрес 192.168.1.1 - отправляет всё на bridge
внешний адрес динамический A.B.0.0/17 - привязан через dyndns

Не забываем на всех задействованных серверах поднимать модуль:
modprobe ipv6

Поднимаем туннель в ipv6 на bridge.
Начальная часть сделана по аналогии с этим примером.

Регистрируемся на freenet6.net - ставим пакет
apt-get install tspc
Редактируем /etc/tsp/tspc.conf
Вводим пароль и адрес из письма при регистрации
Сервер "из письма" не заработал - потому сразу выбираем сервер amsterdam.
userid=XXX
passwd=YYY
server=amsterdam.freenet6.net
# нужна подсеть - раскомментируем строки:
host_type=router
if_prefix=eth0
prefixlen=64

Остальное оставляем без изменений.

/etc/init.d/tspc stop
/etc/init.d/tspc start

Заметил, что restart в tspc сделан криво и не всегда срабатывает.

Проверяем наличие строчки:
inet6 addr: 2001:X:Y:Z::1/64 Диапазон:Общий
ifconfig eth0 | grep ipv6
Значит всё здорово. Если не здорово - смотрим логи tspc, tcpdump.
Запоминаем адрес подсетки что нам дали. 2001:X:Y:Z - будут браться отсюда.
Это наша внешняя подсетка. Может быть на всю жизнь :)

Опыт показывает что tspc достаточно не надёжный туннель. Из-за того что adsl соединение рвётся -
туннель обрывается и не восстанавливается. Что крайне плохо. Для экспериментов сойдёт. Но..
Вариант - регистрируемся на Hurricane Electric
Желательно наличие статического белого ipv4 адреса - но редко меняющийся динамический белый
сойдёт. Можно сделать 4 туннеля в одном аккаунте - даже /48 :)
После того как туннель выделили - можно получить команды для запуска туннеля - прямо на сайте.

Итак. bridge у нас теперь находится в ipv6 сети и даже может роутить /64 подсетку.

Проверяем:
ping6 -n ipv6.google.com
Внешние ipv6 хосты видим - и они нас видят. Пляшем дикие танцы :)

Поднимаем туннель в локалку на mine:
ip tunnel add sit1 ttl 4 mode sit remote 10.8.0.1 local 10.8.0.6
Не забываем запустить интерфейс туннеля:
ifconfig sit1 up
или:
ip link set dev sit1 up
Добавляем роутинг:
ip -6 route add 2001:X:Y:Z::/64 dev sit1

tspc автоматически разрешает форвардинг ipv6 - для других способов не забываем его разрешить:
sysctl net.ipv6.conf.all.forwarding=1
(и добавляем строчку в /etc/sysctl.conf)

С bridge закончили.
Переходим к mine.

Добавляем придуманный статический ipv6 адрес:
ifconfig eth0 add 2001:X:Y:Z:1::16
или:
ip -6 addr add 2001:X:Y:Z:1::16 dev eth0

Так. Теперь поднимаем туннель на bridge:
ip tunnel add sit1 ttl 4 mode sit remote 10.8.0.6 local 10.8.0.1
ifconfig sit1 up
ip -6 route add ::/0 dev sit1
sysctl net.ipv6.conf.all.forwarding=1


Проверяем:
ping6 -c4 2001:X:Y:Z::1
ping6 -c4 -n ipv6.google.com


Поднимаем интерфейс на какой-то другой машине сети:
ifconfig eth0 add 2001:X:Y:Z:1::22/80
ip -6 route add default via 2001:X:Y:Z:1::16
ping6 -n ipv6.google.com

Проверяем с bridge:
ping6 -n 2001:X:Y:Z:1::16
ping6 -n 2001:X:Y:Z:1::22

Можно проверить из какого-нибудь бесплатного ipv6 сетевого сервиса доступность своих хостов :)

Осталось настроить DHCPv6 - мы же не хотим терять контроль над сетью -
и значит самоуправства ipv6 мы не позволим? Но и вручную хосты настраивать это уже фанатизм.
Настроить rDNS - в tspc не понятно как, а Hurricane Electric даёт возможность это сделать.
Настроить DNS - ну это уже проще при наличии DHCPv6.
Ну и новые настройки iptables6

У нас есть ipv6-готовая сетка. Осталось дождаться когда провайдер сподобится раздавать ipv6 адреса. 2-3 года осталось ждать - все там будем. Но тестировать и жить можно уже сейчас :)

Чтобы не забыть - сразу добавим настройки в /etc/network/interface
(старые настройки для ipv4 не трогаем - ipv6 им не мешают)

auto eth0
# ipv4 настройки локального адреса:
iface eth0 inet static
address 192.168.16.16
netmask 255.255.255.0
network 192.168.16.0
broadcast 192.168.16.255

iface eth0 inet6 static
pre-up modprobe ipv6
address 2001:X:Y:Z:1::16
netmask 80
gateway 2001:X:Y:Z::1

# "Внешний" интерфейс до модема:
auto eth1
iface eth1 inet static
address 192.168.19.2
netmask 255.255.255.0
network 192.168.19.0
broadcast 192.168.19.255
gateway 192.168.19.1

Осталось придумать как туннели сюда вписать..

2009-09-01

X.org + ViewSonic va902 = 800x600

Сегодня у коллеги слетели настройки монитора.
Ещё вчера всё было замечательно, а сегодня с утра низкое разрешение 800х600 вместо 1280х1024 и хоть убейся - графические настройки не позволяют выбрать больше.

Влез в /var/log/X.org.log
Увидел строчки:

(II) NV(0): Not using default mode "1024x768" (hsync out of range)
Это есть как то странно.

В настройках /etc/X11/xorg.conf всё просто:

Section "Monitor"
Identifier "VA902"
Option "DPMS"
EndSection

Чешем репу и делаем по-старинке: Убираеем DPMS.
Гуглим строчку: ViewSonic VA902 HorizSync VertRefresh
Находим - и пишем как в гугле:

Section "Monitor"
VendorName "ViewSonic"
Identifier "VA902"
HorizSync 30.0 - 82.0
VertRefresh 50.0 - 85.0
DisplaySize 360 290
# Option "DPMS"
EndSection

В общем то и всё. Ctrl-Alt-BackSpace
Получаем 1280х1024.

Удивляемся чудесам и пока работаем.

2009-08-07

Отсоединение программ от консоли

Ответ на форуме http://forum.ixbt.com/topic.cgi?id=76:8745 не приняли :)
Что-ж. Ответ, правда, чуток запаздал - но может кому поможет..

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

Для этих целей есть утилитка screen.
Запускаем rtorrent в фоне:
screen -dmS rTorrent rtorrent

затем когда нужно подклфючиться "к экрану" программы делаем:
screen -r rTorrent
Хотим отключиться - Ctrl+a (ctrl+d)
После отключения можно смело закрывать сессию putty :)
screen -ls
смотрим какие сессии есть.
если сессия только одна - можно открыть её и без имени.
screen -r

И так любое консольное приложение..
Что-то подобное было и для X-приложений.

2009-07-07

Квотирование пробела и запятой в make

Нашёл решение "неудобной" задачи.

Не очень красивое - но работает. Лучше чем вот так напрягать sed через шелл:
var2=`echo $(var) | sed s/\ /,/g`

Нужно в Makefile заменить в переменной все пробелы запятыми. Если бы меняли все двоеточия на точки с запятой - проблем никаких:
$(subst :,;,$(var))

А нужная нам конструкция явно не работает:
$(subst ,,,$(var))

Решение - сделать переменные содержащие пробел и запятую. Более того - переменные можно сделать с "говорящими" именами: $(,) и $( ). На самом деле можно их использовать как "$ " и "$," - без кавычек :) Вот "код":

, := ,
space :=
space +=
$(space) :=
$(space) +=

После него работает, например, такой вызов:
$(subst $ ,$(,),$(var))

акм и все-все-все

Никто может и не заметил, но в К+ с какого-то времени появилась замечательная опция: /makeqr
Что крайне удобно для автоматической онлайн-регистрации.

Клоны АКМ работают "по-старинке" - то есть ищут окошки, нажимают кнопки, копируют и вставляют текст..

А процедура "онлайн-регистрации" куда проще..

0. Сносите регистрацию и историю пополнений. По желанию.
del DISTR\BIS\*.BIS
1. Формируете файлы SEND\*.QR:
cons.exe /makeqr
2. Отправляете файлы на сервер регистрации.
3. Получаете архив с файлами ответов (*.AR).
4. Распаковываете его в папку RECEIVE
5. Запускаете cons.exe /REG
"Все базы зарегистрированы"

Причём если запросы не поменялись (например всего лишь были приняты обновления на другой машине - и базы перенесены оттуда, или была переустановленна система
== если те же din и тот же BIOS), то и ответы будет идентичными :)

То есть ответы на регистрацию могут использоваться неоднократно. Надо только сохранить архив с ответами и выполнять пункты 4 и 5 :)

Например в скрипте, автоматически рассылающем через rsync обновлённые базы..

Если ваш комплект содержит DIN от разных ИЦ - кроме cons.qr появляются индивидуальные файлы запросов. Лучше всего их собрать в один файл - если номер ИЦ вас не беспокоит. Да и всем так удобнее и проще..

Для работы "в автоматическом режиме" есть пара скриптиков для такой "активности".

1. Active Perl (клиентская часть: создаёт QR, собирает в один файл, отправляет на сервер, принимает архив, распаковывает, запускает регистрацию..)
Может быть эту часть проще переписать на .net - чтобы уйти от зависимости перла.. Хотя опять же - проще использовать Gen чтобы формировать ответы на месте. Но тогда уже есть АКМС - переписанный на Цэ Gen.. Только его исходников особо не видно.. Но можно использовать бинарник..
Вариантов много, благодаря автору Gen открывшего источник получения магических чисел :)

2. perl+CGI+Gen.html (серверная часть: принимает запросы от клиентов, ищет в них запросы консультанта, запускает javascript-функцию из "Генератора циферок", собирает ответы в zip файл и посылает клиенту).. Для работы нужен javascript Gen.html (который может быть без особого труда найден на просторах рунета) :)

Без Gen'а, имхо, всё выглядит вполне "лицензионно чистым" и ничьих прав в принципе даже и не нарушает - нет программ "нарушающих работу баз данных".. Останется проблема легализации нахождения у вас К+..

Ngnix как почтовый прокси сервер

Возникла задачка - закинуть почту из старого корпоративного сервера в гугль аппс..
Сборщик POP3 у гугля естественно есть. Провайдер даёт pop3 доступ.
Казалось бы всё просто. Ан-нет!

Провайдер (ЦентрТелеком) не пускает к себе на POP3 из внешних сетей.
То есть порт то открыт - но всегда auth failed.

Сначала решение "в лоб". Попытаться открыть ssh туннель.
Но пол-часика помучившись - так и не удалось.
Руки кривые и что-то не так делал :)

Второе решение - разобраться таки с nginx.
Ну чего там - "прокси сервер" :)
Но вот где адрес сервера к которому подключаться надо - в конфигах
"прокси" подозрительно не находилось. Всё указывало на необходимость
использовать какой-то http_auth.
Опять же - для этого нужен внешний скрипт, а скрипты к ngnix'у прикручивать..
Безопасно пока не научился :)

Однако можно заставить самого nginx отвечать на свои же запросы :)

1. Ставим:
sudo apt-get install nginx
sudo apt-get build-dep nginx

2. Скачиваем nginx с родного сайта.
И распаковываем. unp nginx*
Тот, что идёт в комплекте с убунтой во-первый старый, (даже из самой свежей репки не говоря о харди что у меня стоит). Во вторых собран без поддержки mail proxy.

Можно, конечно, сделать apt-get source nginx
Добавить в файле debian/rules опцию --with-mail
и сделать apt-get source -b nginx
Но это слишком просто :)

3. В папке создаём файлик config-run
./configure --conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--http-log-path=/var/log/nginx/access.log \
--http-client-body-temp-path=/var/lib/nginx/body \
--http-proxy-temp-path=/var/lib/nginx/proxy \
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
--with-mail

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

4. Собираем:
. config-run
make

5. Копируем на будущий прокси обновлённый бинарник.
scp objs/nginx root@myproxy:/usr/sbin/

6. Правим конфиг /etc/nginx/nginx.conf
user www-data;
worker_processes 1;

events {worker_connections 10;}

http {server {
listen 8080;
location /auth { # mailcheck
add_header Auth-Status OK;
add_header Auth-Server 212.26.224.70;# pop3.ryazan.ru;
add_header Auth-Port 110;
return 204;
}
}}

mail {
auth_http localhost:8080/auth;
server {
listen 110;
protocol pop3;
proxy on;
}
}


7. Запускаем и проверяем.

Что ещё можно. Можно проверять доступ - запрос на /auth содержит поле Client-IP.
Можно сделать "настоящий" скрипт. Или использовать возможности rewrite самого nginx..
Например для перенаправления на разные pop сервера для разных IP - или например для разных логинов..

2009-06-25

JSON и BENCODE

Старенькие скрипты конверсии торрентов в json лежат без дела :)

Ища "нормальный" редактор торрентов и "нормальную" библиотеку на дотнете чтобы работать с торрентами (нормальных прог bencode так и не встретил), вспомнил про json. Оказывается есть куча редакторов (даже на javascript) для json. И естественно библиотек.

Остаётся "адаптировать" библиотеки и скрипты на обработку torrent-ов :
А базовые типы данных те же: целое, строка, массив и словарь (или хеш - по пёрловскому :))

Вот только перл не различал целый тип и строку (приходилось регекспом проверять а не число ли эта строка :)) javascript различает..

2009-06-23

Ну вот, блин.

Решили что я спамер :) Нефиг хвалебные оды петь провайдеру :)
А что делать если после тарифов mh встретил такое чудо - и на порядок дешевле..

Ладно. Надеюсь меня поймут :)

Изучаю принципы работы с фрилансом. В качестве работодателя. Как-то несерьёзно получается. Чувствую себя эксплуататором. Даже рассмотрение моей проблемы на самом деле достаточно времязатратное мероприятие.. И всем заинтересовавшимся заплатить не смогу :)

Борюсь со стойким желанием платить по 20 долларов за консультации :)

2009-05-18

FastVPS - это здорово! Как и Visa.

Реально классный провайдер FastVPS :)

Всё реально очень быстро и недорого.
Даже пугает дешевизна vps - менее 150 рублей (2,90 евро) в месяц..
Возможно пригодятся безлимитные тарифы для скачкивания с rapidshare (собственно нашёл через сайт скрипта rapidget.pro) :)

Крайне приятные расценки для регистрации имён (в зоне .ru по 150 рэ регистрация и продление - надо всего лишь сделать тикет с запросом "спеццен" - через несколько секунд уже ответили и всё включили).

Респект и уважуха, долгих и счастливых лет провайдеру. Поддержка и сервис на высоте.
Будем надеяться что качество услуг не ухудшится :)

Помогли в поддержке и сделать оплату "нестандартным" способом. Будем надеяться что и стандартные методы оплаты тоже будут работать - и станут наконец мне удобны (yandex.деньи или кредитка - не люблю webmoney).

Кстати, насчёт кредиток. Visa - это здорово. В местном филиале банка финсервис оформили (и выдали!) за 15 минут. Банкоматов немного - (естественно хотелось бы больше) - но вполне функциональны. Можно взять и положить деньги. + интернет банкинг - без 50 рублей в месяц (без услуги СМС банка) не очень удобный - но вполне юзабельный. Можно смотреть выписки по счёту и по операциям с картой, оплатить без комиссии сотовый телефон не выходя из дома (что резко понизило нужность яндекса с его комиссией на занесение денег на счёт).
К тому же единственная карточка которая мне попадалась нормально проходящая для оплаты через интернет. Trust, сбербанк, втб24 - ни одну из этих не мог активировать на paypal и уж тем более где-то расплатиться. К тому же надо ждать оформления по несколько недель. А тут на месте при мне оформили.

Ну и естественно это полноценная виза (не электрон) - и естественно принимается везде где принимается виза. Повторюсь - полная бесплатность оформления. Ах, да - и ещё 7% годовых на денежные средства на счёте (в течение года после оформления) с ежемесячной капитализацией.
Реально круто. Только простота оплаты через интернет реально стремает от держания на карте более или менее приличных денег :)

Хотя вот. Ноу-хау родилось. Надо оформить ещё одну карточку visa :) При этом в интернете светить пустую - при необходимости оплаты закидывать туда деньги - чтобы всё время там было около 0 остатки. Через интернет банк со счёта на счёт можно легко перекинуть когда надо оплатить..
Засветку карты в супермаркете, конечно, не исключить - но хоть через интернет не поимеют :)

BIND vs DJBDNS

Let the holy war begin.

Задолбался кривизной BIND9 - после двухмесячника DDoS на dns-amplification - когда мой "кеширующий сервер" нехорошие личности использовали для заваливания чужих сетей (стоивших мне примерно 50 рублей трафика в день) - даже после "исправления" - путём разнесения views в конфигах bind..

Решение всего было ещё в 2003 году. Пока петух не клюнет.. Слезаю одним словом с bind - всё на djbdns :) tinydns, axfrdns, dnscache. Вполне всё красиво.

На vps - tinydns + axfrdns (только axfr для secondary bind). Был бы ещё серверок для моего secondary - было бы вообще без tcp. И не нужно было бы волноваться против единственной пока обнаруженной дырки в djbdns :)

В домашнем интранете - tinydns + dnscache. Очень-очень хочется сюда добавить какой-нибудь tiny-dhcpd - ибо как становится ясно - продукты isc нафиг не сдалсь. Шибко сложный демон для шибко простой задачи. Опять же - стандартные средства ddns неюзабельны из-за тупизны разработчиков.

Ну и немножко qmail везде :) Никакого x64 потому "дырок" нигде не предвидится :)

2009-05-15

МРТ Сканер

Подсел на сериал House M.D. - все праздники смотрел. Дошёл до пятого сезона.
Мысли закрадываются подозрительные. Относительно их МРТ сканеров.

Нет, МРТ сканер это, конечно, штука хорошая. Но вот система американского здравоохранения далеко не так идеальна.. Что в принципе видно и в сериале.

Как радиста сильно беспокоит вопрос функционала этой убогой но крайне дорого железки как МРТ сканера.

Самый первый и примитивный вопрос. Почему нельзя на входе в помещение сканера поставить портальный детектор металла. Или хотя бы поставить бабульку с портативным детектором. Потратить 200 долларов которые бы экономили кучу бабла больнице и снижали простои оборудования на ремонте. И спасли бы ещё много жизней :) Нет, они сначала запихают туда пациента проглотившего ключик и забывшего это - а потом 1-3 тесла сканера покажут наличие железа - разворотив всё пузо пациенту и сопроводив всё это красивой вспышкой взорвавшегося сканера..
Хотя наверно просто китайские детекторы металла не прошли сертификацию на медицинское оборудование в америке? Как же - вредные магнитные поля во много-много микротеслов такого детектора - ещё чего доброго рак вызовут. И кто допустил такое оборудование к пациентам получит многомиллионные иски от пострадавших..

Второй. Неужели пластиковый столик этого сканера действительно стоит более миллиона долларов??
Ну да, там ещё могли поломаться шаговые двигатели - а они должны были быть экранированы от мощного магнитного поля..
Да - и ещё скрытая реклама производителей этих сканеров. Сканер постоянно меняется в разных сериях/сезонах. Были кадрики кажется с логотипом джонсон и джонсон. Причём показывали в ракурсе, чтобы этот логотип торчал в кадре как можно дольше. Такого ракурса - ни прежде ни после не видел. Но обвязка вокруг портала сканера всегда разная.. Треугольнички - лампочки..

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

Можно ведь даже использовать этот ядерный резонанс по его прямому назначению.

Сколько нам показывали таких детекторов - в голливудских демонстраторах американской научной мощи - навороченные портативные лаборатории во всё ещё пока непроходимых джунглях амазонки.. Там где засовывают пробирку с исследуемым веществом в девайс - а он рисует красивый спектр на экране ноутбука. Причём тут же рядышком рисуется формула и даже моделька атома исследуемого вещества.
Всего лишь ямр анализатор. По наличию пичков на определённой частоте получаются расстояния между атомами кажется водорода. Несложная обработка позволяет эти расстояния увязать в одну молекулу. Причём сомневаюсь, что те мелкие пички на экране что видят герои эпосов и которые приводят их в дикий восторг - с плясками и воплями - на самом деле столь важны в построении окончательной модели атома.. Даже сомневаюсь, что этот метод сработает на смешанных образцах. Но я не физик - и может быть там что-то действительно что-то можно различать..

Но если так - то мрт сканер можно использовать для поиска токсинов в определённых частях тела..
В том же мозгу - без горячо нелюбимой биопсии. Хотя вряд ли это сработает на смесях что есть в теле человека - и тем более на сложных молекулах типа белков..
Также интересно, можно ли было провести ямр анализ ядовитых фосфатов что они искали in vivo в серии про отравление пестицидами в штанах.. Химика и физика ядерщика явно не хватает в команде Хауса..

Ну и последнее. Опять же про МРТ сканер. В той же вики написано, что с его помощью несложно различать движущуюся кровь - для получения картинки например сосудов головного мозга.
Почему эту несложную задачу сканеры из сериала не решают - и врачам приходится делать
достаточно опасную рентгеновскую компьютерную томограмму да ещё и с помощью рентгеноконтрастных веществ?? Нагружая почки, тормоша пациентов и облучая их и персонал рентгеновской установкой.
Думаете те синенькие накладочки что напяливают на себя врачи сильно защищают их от излучения?
Опять же - скорость движения крови в сосудах меряют с помощью допотопной доплеровской ультразвуковой установки.. ужос.

Хочу быть производителем мрт сканеров :)

2009-04-20

Деньги делают деньги или Free Software

К вопросу о бесплатности. со времён 2007 года много воды утекло: BZR диплом как никак получил.

Free Software!

Затраты системы linux vs windows серьёзно перераспределены. Если windows требует от фирмы
содержание системного администратора(-ов) (желательно лицензированного и с регулярным обучением), затраты на сопровождение лицензий и собственно самой оплаты лицензий, то в линуксе всё немного проще и сложнее одновременно.
И специалисты могут быть дороже, и пользователи не избалованы "бесплатными наркотиками" windows в школах и дома. И "бесплатная" система может потребовать оутсурсинга сторонних организаций для доработки напильником под конкретные нужды. К сожалению рынок таких услуг в России не особо развит - все подсели на "пилюли" к ворованному софту - и не видят теперь ему альтернативы.
Платя microsoft tax и другие "взносы" в американскую экономику..
Бесплатный сыр в мышеловке которая уже почти захлопнулась. Но сыр то пока на радость мышам всё никак не кончается. И невдомёк мышам - что ловцы так и будут наживку подкидывать, чтобы сохранять контроль над мышеловкой. Печально. Надеюсь, в моей стране смогут это понять.

Предварительная версия multiseat

(Так и некогда было поправить - публикую в неотредактированном виде - давно писалось (осень 2007), может кому пригодится).

Введение

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

Рано или поздно надоедает этот разношёрстный парк из пары десятков штук различного рода целеронов, 1-4 пней, древних атлонов, постепенно покупавшихся от случая случая и по мере появления денег/надобности или сгорания предыдущих. В основном бегающих на 95, 98 и последующих операционках - из-за того что другого вроде как никто использовать не умел да и не было особой надобности.

Ворд-Эксель-Косынка - пределы мечтаний большинства офисных работников.

Серьёзного железа на офисную работу брать не хотелось, жалобы появлялись в основном на нехватку памяти (32-64 метра - в лучшем случае до 128-256 - сейчас несколько маловато). Зоопарк же работал на памяти начиная от симов заканчивая простыми димами (причём в большинстве случаев двусторонними) - расширение памяти уже во многих случаях становилось невозможным.

Возможно кому-то это знакомо.. Денег на апгрейд железа а уж тем более на покупку лицензионной ОС и MS Офиса явно в ближайшем будущем не планируется - а использование пираток, благодаря стараниям наших доблестных правоохроанителей на благо Америки постепенно становится всё более и более стрёмным..

Идея поставить всем линукса и успокоиться тоже несколько не удалась.

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

Как хобби - может и интересно. Как работа..
А нравилась меня идея настройки мультитерминала.


Мультисит

Уже и не помню когда идею multiseat/multiterminal нашёл :)
Один компьютер-несколько рабочих мест.
Современные компьютеры в офисном применении кушают очень мало..
Процессора и памяти уже много.. Почему бы не поделиться??

Для админа - песня. Одна машина - один винчестер - одна операционка. Два рабочих места. В два раза меньше возможных проблем с железом и настройками.
В два раза меньше потребление электроэнергии как говорят в странах африки :)
Или даже не два места. А три, четыре.. Девять :)
Возвращаемся к мэйнфреймам только по цене обычных компьютеров. Но о цене позже.

Есть наработки multiseat или мультитерминалов в Windows. Не особо стабильные патчи и надстройки над стандартными remote terminal serivces Windows XP. Астер, BeTwin например. Из недавних проект http://www.wmprogram.ru/. Довольно интересно. Довольно недорого (но денег стоят). Но на практике. Потаённый камушек прячется в лицензиях. Нет, в принципе то ваша система будет считать себя лицензионной (если купить коробку или ОЕМ). Всякие там GenuineAdvantage прокатят. Однако в случаях спора с правообладателем (придут ребята на службе микрософта и 1С) - мультисит будет вне закона. Хотя прецедентов насколько я пока знаю не было - по причине малой распространённости мультиситов - но когда придут ребятки - будет сложно объяснить что вы не верблюд. Особенно им являясь на деле.

Чтобы этого избежать - Вам потребуется по одной лицензии (КОРОБКЕ) на каждого пользователя. Если это windows XP Prof (никакой не ОЕМ) - это ~300$ на нос. Это не смотря на то, что написано на сайте астера. Это было сказано на форумах поддержки microsoft.

А держать нескольких пользователей на Home.. Ах, да - и ешё никакой Висты.
И если офис у вас не опен - то опять же на каждого по коробке ещё и офиса.
Да и стабильность.. Мягко говоря немного ниже самой операционки.

Также стоит уточнить, что Астер использует защиту Starforce pro (да ещё и с активацией через интернет). Чего лично я очень не люблю. И платить за ЭТО чудо не намерен.

А вот проблем с линуксом вроде лицензий я не вижу. И с настройкой как оказалось тоже не настолько всё сложно. Хотя и не на столько и просто, что кликнул пару раз мышкой - получил мультисит. По крайней мере пока - или только для меня :)

Так что Линукс - только Линукс. (Или кому что ближе/проще юзеров обучить).

Железо

Вариантов много.

Двухголовая видеокарта - это два монитора. Возможно два рабочих места.
Интегрированное видео = ещё один монитор (только не на интеловских чипсетах).
Две двухголовых видеокарты (SLI мамка) + интегрированное видео - 5 рабочих мест.

Или 3 рабочих места (два с одним монитором - и одно с двумя мониторами).

В свободной продаже есть на 3 и даже на 4 разъёма PCI-Express 16х (достаточно недорогие). Хоть там и не по 16 линий PCI-e однако 4-8 за глаза хватит на 2d графику - и даже немного на 3d останется :)

В принципе есть и 1х видеокарты (что было бы очень уж здорово) - и есть даже многоголовые - но вот цена таких поделок - зашкаливает за 100$ на устаревших чипах (тот же Matrox G550 - 250$). Ибо - пока не ширпотреб.

Двухголовость в линуксе заставить работать - не столь уж простая задача.. Однако разрешимая. Ибо используют. Хоть и с проприетарными драйверами. Что не совсем здорово с точки зрения опенсурса - однако проблем тут с лицензионностью нет :) И опять же - пусть за это совесть мучает производителей железок а не законных приобретателей..

Вот AMD пошла на встречу линуксоидам всех стран - открыла хоть частично лишь СПЕЦИФИКАЦИИ на своё новое железо - и появились дрова xorg-radeonhd. Пока ещё сыроватые - им месяц от роду пока на момент написание сего опуса - но прогресс то виден :) За что ей респект. И пожелание не разоряться как можно дольше..

Хотя, к сожалению, пока все мои предложения будут относиться к её несравнимому по масштабам конкуренту.. Ибо для AMD я материнок более чем с 2 PCI-E 16х не встречал..
Итак. Посчитаем что-нибудь реальное на осень 2007 года.

Берём материнку с 4 разъёмами PCI-Express 16х P5W64-WS (~250$) - втыкаем туда современное недорогое двухголовое видео Radeon HD2400Pro ~50$ х4.

nVidia что-то не проявляет особого интереса к linux - или мне только так кажется? Хотя 7900 только сегодня поднял без особых проблем - порадовался красивостям compiz..

Взять core2duo минимум 150$ (E4500 BOX) + 2х1G памяти 60$ + винчестер 50$ + корпус/бп - ещё 60$.
Итого 8 рабочих мест ~800$.. Получается по 100$ на одно рабочее место.

Не считая мониторов, usb-хабов, usb-переходников на ps/2 клавиатуры/мыши или usb-клавиатур/мышей. Слава usb - что этого hid теперь можно наподключать к каждому компу хоть сотнями штук.

Современное железо. Хорошие цены. Однако страшновато за стабильность такой системы. То что оно потянет 8 пользователей - даже не вопрос.

Возможно это дело недалёкого будущего - такое чудо железячное собрать :)
Кстати - неспроста там 8-канальный аудио :)

Интересно, в линуксе удастся это аудио раскидать по пользователям - чтобы были у всех свои колонки? Но это потом. Наверняка можно :)

А пока экспериментируем с более дешёвыми железками.
Наткнулся я в прайсах как-то на материнки со впаянным процессором.

Цены у них мягко говоря весьма низкие. Вот производитель у них был очень подозрительный. Да и процессор VIA C3 - всего 800-1000 МГц. Мало того что этот C3 по моему опыту не отличался высокими скоростными показателями.. Да ещё частоты.. А уж производитель всё окончательно портил. Цена в 60$ хоть и привлекательна.. Вплоть до того что наш региональный дилер московской фирмы в итоге отказался их везти - из-за проблем с гарантией которые он наверняка на это железо ждал. И DDR2 тогда стоило заоблочно.

И тут появилось очередное чудо: Intel D201GLY. 3 года гарантии. Производитель просто идеальный - не откажешь :) Первые три пробных карточки и вуаля..

Процессор лишь 1.3 ГГц - но этого вполне хватает для офиса если не жать видео :)
PS: И не смотреть HD..

Что потребовало покупки:
*** INTEL D201GLY (~70$ - Celeron 215 onboard)
*** DDR2 PC-5300 512 Mb (~13$)
*** БП ATX (20+4) (~25$)

Мощности 230 Вт хватит - важно наличие дополнительного 4-х пинного разъёма питания процессора. В принципе там лишь 12 вольт и земля.. Можно наверно использовать и старый ATX - изуродовав один из разъёмов питания винчестеров?
PS: Есть такие китайские переходники molex. Реальное потребление материнки + винчестера ~40 Вт.
Измерялось собственноручно.

Памяти 512 ибо пользователей будет 2.
Да и современные дистрибутивы требуют уже по 256 минимум. Не будем мелочиться.

Можно и расщедриться на 1G - ибо дырка там под DDR2 одна - и расширить потом придётся лишь заменой. По моему опыту пока 512 более чем достаточно.
Для убунты и опенофиса :)

Что остаётся для рабочих мест?

Оборудование оставшееся от старых машин:
*** ps/2 клавиатура х2
*** usb mouse х2
*** DSUB монитор х2
*** IDE HDD > 3 Gb
*** PCI VGA (самое сложное ибо древнее)
*** Корпус ATX (mini, micro?)

Клавиатуры ps2 пока дешевле USB аналогов - да и usb портов у нас маловато.
Вторая клава замечательно влезает в мышиный разъём материнки.

В качестве vga карты использовалась древняя
Matrox Millenium - наследие апгрейдов.

Проблем с ней особо нет - только вот 4 Mb на большие разрешения уже не хватает. 800х600х24. Может и можно найти что-нибудь по-лучше?
Можно ещё использовать Trident 3D. Cyrrix тоже..
Благо железа много остаётся.. Старое железо линукс любит :)
Минус - то что единственный слот PCI займёт эта видеокарта.

Винчестер - остатки апгрейдов.. Лучше конечно новый - но зачем если есть останки апгрейдов. Старые винчестеры только медленные - и очень шумные. Но многие из них пережили многих своих детей - и переживут ещё многих внуков :) Рано или поздно и они откажут. Но у нас же будут типовые настройки. И бекапы на серверах пользовательских каталогов. Восстановление - дело нескольких минут..

Корпус можно использовать почти любой - габариты материнки 17х17 см - устанавливается без проблем в ATX корпуса. Желательно наличие внешних usb разъёмов (или переходника за 1$) - ибо те что на задней части материнки будут заняты мышками. Можно купить за 30-50$ новый корпус с бп на борту.

А старые куда??? Помойка очень страшное слово - а утилизировать бу железо у нас не умеют :)

Итого с такой материнкой (и небогатым но довольно быстрым для нашего офиса железом) ~55$ на одно место.. Это с учётом использования старых комплектующих.

Если покупать корпус, БП, винт - обойдётся всё это в те же 100$ на место..

Установка операционки

Ставить будем Ubuntu. В последнее время что-то я к ней питаю тёплые чувства :)
Федора здорово - но как то.. Сервера у меня на ней.. пока.. На старых ноутах она.. Ладно.

Ubuntu 7.10 Gutsy Gibbon.

Поставить можно по сети, с LiveCD, и кучей других способов. Как это делать - вам решать. Я её ставил - из давно настроенного pexeboot в федоре. Всего то надо настроенный DHCP и tftp службы.
Как из настраивать - тонны статей. Любое упоминание о netboot тут же требует от автора детального описания настроек и скаченных пакетов для tftp и т.д.

У меня всё настроено. Осталось включить в биосе материнки загрузку по сети (благо встроенные в мамки сетевушки уже умеют грузиться по сети - с проектом rom-o-matic сколько не пытался не смог подружить свои сетевушки). Ну и скачать пару файликов.

Что я делал:
*** загрузил minicd образ
*** вытащил оттуда файлы linux и initrd.gz в папку tftp/ubuntu
*** прописал в свой конфиг в загрузчике по умолчанию (pxelinux.cfg/default) строчки из конфига isolinux.cfg:


LABEL ubuntu
kernel ubuntu/linux
append vga=normal initrd=ubuntu/initrd.gz --


Можно записать скаченный minicd образ на CD (что в общем то и планировалось при его создании) - и пользоваться им для установки. Я не особо надеялся на успешность загрузки по сети и решил подстраховаться - чтобы не качать образы netboot два раза - но обошлось. По сети куда быстрее и надёжнее.

Перед установкой системы на D201GLY - собираем "компьютер".

PS: Всё сказанное ниже требует от вас квалификации профессионального сборщика компьютеров. Или электромонтажника :) Ладно. Если вы ещё не втыкали ни одной платы в свой или чужой компьютер, не знаете как это выжечь мамку одним пальцем или одним винтиком под платой - позовите кого нибудь, кто это уже делал :)

А именно (опционально) устанавливаем в корпус, устанавливем планку памяти, подключаем через шлейф винчестер (и, если требуется для загрузки, CDROM).

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

Для ATX корпуса ещё пару-тройку разъёмов по схемке приложеной нам Intel в комплекте :) В общем то сборка окончена.

Включаем - наслаждаемся начавшейся загрузкой. Следуем инструкциям.

Язык русский, клавиатура us - потом будем настраивать.

В качестве репозитория - локальный сервер с apt-proxy (apt-cacher или что-то в этом роде). Можно просто грамотный кеширующий прокси сервер с большим доступным местом в кеше. Если трафик совсем халявный - можно ставить всё вживую из интернета. Потребуется скачать где-то 600 метров.. С прокси-сервером только один раз.

Мною были поставлены флажки на установку "ubuntu-desktop" и "openssh server".

В моём случае ~15 минут на сети 100 Мбит со всеми репозиториями в apt-cache (при второй установке)..

Решение проблемы с sis видеодрайвером.

Не могло быть всё настолько просто на таком железе :) Вот и первый подводный камушек.

Драйвер sis идущий в поставке festy/gutsy некорректно работает с интегрированным видео SiS 662 (Mirage1) вызывая артефакты на экране в виде дрожащих вертикальных полос. Как корабль назовёте - так миражи и получите :)

На некоторых разрешениях это явление считается менее заметным. Но для повседневной работы это не годится.

Возможные решения - использовать драйвер vesa вместо sis подправив его ручками в файле /etc/X11/xorg.conf. Однако появляются проблемы с выбором кадровой развёртки (максимум 60 Гц) актуальной на CRT мониторах. Для LCD это простейшее решение. Я даже не заметил в начале тут подвоха - пока не поставил CRT..

Найденное решение - использовать другой драйвер sis - выложенный на форуме ubuntuforums.org.

Кстати - запомните ссылку http://ubuntuforums.org/ если вы собираетесь пользоваться ubuntu :) Там есть все вопросы которые вы встретите - и почти на все из них уже есть ответы..

Вот готовый файл драйвера для i386 gutsy (286 кБ).

Надо его распаковать и поместить поверх того что есть:
/usr/lib/xorg/modules/drivers/sis_drv.so

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

Перезапускаем из консоли gdm:
sudo /etc/init.d/gdm restart
Все разрешения - и все развёртки доступны нам без артефактов.


Настраиваем Multiseat.

Использовались данные из:
http://gentoo-wiki.com/HOWTO_Multiseat_X

В биосе материнки следует поставить опцию "использовать встроенное видео" иначе при флажке "авто" - встроенная видеокарта исчезает с pci шины при установленной PCI VGA. Это не баг - это фича. Чтобы интегрировання видюха память не ела.

Выключаем компьютер. Желательно отключить и блок питания от сети.
Тепрь самое время установить всё в корпус - если не сделали этого раньше :)

Втыкаем вторую мышку во второй usb порт.
Втыкаем вторую клавиатуру в мышиный порт материнки.
Втыкаем PCI видеокатру с вторым монитором.

Загружаемся. По идее всё должно и так работать. Кроме нового монитора. Две мышки - две клавы. Все управляют одним экраном.
Идём в текстовую консоль. Щёлкнул-сделал способа я пока не нашёл :)

lspci
Ищем PCI карту. У меня она оказалась 00:01.05. А у вас?

less /proc/bus/input/devices
Ищем наши мышки и клавиатуры.
Правим файлы: (предваряя команду gksudo gedit или sudo nano или sudo mcedit - что вам удобнее)

/etc/X11/xorg.conf - полная версия по ссылке:


### General Sections ###

Section "DRI"
Mode 0666
EndSection

Section "ServerFlags"
Option "DefaultServerLayout" "alltogether"
Option "AllowMouseOpenFail" "true"
# Option "DontVTSwitch" "true"
EndSection

Section "ServerLayout"
Identifier "alltogether"

Screen 0 "Screen0" 0 0
Screen 1 "Screen1" RightOf "Screen0"

InputDevice "Mouse0" "CorePointer"
InputDevice "Mouse1" "SendCoreEvents"

InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Keyboard1" "SendCoreEvents"

EndSection


Section "Module"
Load "dbe"
Load "freetype"
Load "extmod"
Load "fbdevhw"
EndSection


File: /etc/X11/gdm/custom.conf

### Server settings ###
[servers]
0=Standard0
1=Standard1
...

### per seat - these sections will need to be created ###
[server-Standard0]
name=Standard server
command=/usr/X11R6/bin/X -novtswitch -sharevts -isolateDevice PCI:x:y:z -layout seat0
flexible=false
[server-Standard1]
name=Standard server
command=/usr/X11R6/bin/X -novtswitch -sharevts -isolateDevice PCI:x:y:z -layout seat1
flexible=false
...

2009-01-20

Торрент-извраты

Интересный способ восстановления копирования файла сегодня опробовал :)
То есть не то важно, как это восстановление осуществить, ибо это встроенная возможность торрентов, а важно как закачку эксплориера "кошерно" прервать.

Итак ситуация. С сидбокса начали копировать через самбу файл. Получатель - Windows XP.
Файл большой (5 гиг) и качаться он должен был долго. Копировать начали простым explorier (то есть скопировать-вставить). А понадобилось это ещё закачать на другую машину.
А канал от сидбокса забит под завязку. Если нажать "Отмена" заботливый эксплориер убьёт файл.
Значит надо убить эксплориер первым! Запускаем taskmanager - находим наш процесс explorier.exe и жмём закрыть. В процессах естественно, чтобы не успел ничего сделать. Подтверждаем убиение, и теперь можно снова перезапустить.

А недокаченный файл остался. Теперь надо получить magnet линк (например через аську), и начать закачку в правильную папку уже через utorrent.. Да, на быстрых линках надо количество слотов на отдачу увеличить - 16 штук должно хватить - а то при 4 слотах только 1 мегабит в каждую сторону выходило..