вторник, 24 июня 2008 г.

Gentoo in Ubuntu или перезд из Ubuntu в Gentoo

Gentoo in Ubuntu или перезд из Ubuntu в Gentoo

Безусловно Ubuntu является замечательным дистрибутивом как по своему набору софта так и по готовности к работе и отшлифованности рабочего места.

Мне очень нравятся шрифты Ubuntu, пакетный менеджер и репозитарии. У Ubuntu замечательное сообщество и документация в интернете.

Но имеется большое "НО" - убунту по умолчанию не является скоростным дистрибутивом, видимо она собирается с учётом последних компьютеров. Например мой Celeron D с гигабайтом памяти замечательно на ней живёт, но вот Celeron 1700 с гигабайтом SDRam памяти на ней страшно тормозит, а это весьма напрягает. Имеется 3 пути решения проблемы:

  1. Обновить компьютер, выйдет не дорого и будет дешево и сердито
  2. Оптимизировать саму Ubuntu, пересобрать ядро, ключевые элементы и все необходимые программы. Пакетный менеджер такое позволяет.
  3. Перехать на более скоростной дистрибутив

Первые два варианта не интересны, иначе было бы как фильме, в начале которого вы сразу же желаете смерти главной герионе, а без неё фильма бы просто не было :)
И так, обдумав, таким тщательным образом, наше очердное жизненно важное испытание, мы решаемся перехать в GNU/Linux/Gentoo и я буду скромным наставником на этом сложном пути.
Разумеется у меня к вам имеются некоторые требования и если вы не выполнив их, то я вас проклинаю и ставлю печать вендузятнега :). Не стоит обижаться, но если вы обламываетесь уже на этой стадии, то во время перезда вы будете биться головой обо всё что попадётся, будете проклинать меня и любой Linux. Обычно такое разочарование является травмой для неокрепшего мозга. Не забывайте, что все Linux троли и хаятели имеют подобную травму головного мозга. Итак требования:

  1. У вас достаточно терпения чтобы сеть и связать себе пару носков тонкой ниткой и маленькими спицами
  2. Вы умеете пользовать интернетом и находить информацию в нём информацию
  3. Вы умеете пользоваться найденной информацией: переводить, читать и писать, если вы не сможете дочитать требования до конца то это уже не для вас
  4. Вы умеет собирать программы из исходников и вас не смущают сообщения компиляторов и инструментов сборки
  5. Вы умеет пользоваться текстовыми редакторами аля`vim,joe,mcedit
  6. Вы уже имеет представление о нужных вам программных система будто то Xorg, KDE, Gnome и др.
  7. Вы имеете представление о гибкости файловых систем и сетевых настройка os LInux
  8. У вас впереди отпуск, отгулы или каникулы.
  9. У вас в распоряжении несколько компьютеров и быстрая сеть между ними
  10. Ваше железо поддерживается, лучший способ проверить на Ubuntu

Вот в принципе и весь небольшой список требований для начинающего джедая - "джентушника".
Вот несколько ответов на вопросы которые были интересны мне:

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

Вопрос: можно ли ускорить сборку Gentoo на старых компьютера используя мощности соседних?
Ответ: Разумеется можно и имеется несколько способов и на вам предстоит выбрать свой, мне проше было расшарить на NFS корень раздела с Gentoo, смонтировать его на соседних компьютерах, там же подготовить chroot для сборки, а так же монтирование местного /tmp для ускорения операций файлового ввода вывода. Но имеется и другой более экстравагантный способ: кластеризация, вы устанавливаете специальное ПО, подготовливаете соседние компьютеры и собираете программы использую домашний сборочный кластер :) согласитесь звучит очень круто.

Вопрос: сколько времени уйдёт на сборку и настройку системы аналогичной Ubuntu?
Ответ: От нескольких суток до пары недель, это сильно зависит от ваших способностей и способностей вашей техники, ширины интернет канала, вашего терпения и сочуствия близких к вам людей.

четверг, 17 апреля 2008 г.

события при обработке cgi,*sql данных в Python

При выводе данных из *sql таблицы или cgi запроса, да хоть при обработке xml файла, можно включить систему событий для обработки отдельных полей, возможно это велосипед, но я не нашёл способа лучше.
Короче делаю так:

# добавляет XML тег защиты от XSLT процессора
def make_cdata(str):
return "защита от"+str+"xslt процессора"

# создаю кортеж со значениями имя поля - имя функции обработчика
# для поля MESSAGE применится функция
make_cdata, защищающая её от XSLT процессора
# для поля ID будет проведенно преобразование к типу int
event = {"MESSAGE":make_cdata,"ID":int}

# затем, передаю этот вектор в обработчик cgi,sql,xml, да куда угодна
if bd_sql.execute(sql)> 0 :
xml = bd_sql.get_xml(root="post",event)

# а в этом обработчике пишу код:
# тут, например, присутвует код перебора выбранных строк, скорее всего
# велосипед, и вставку в xml шаблон, но

xml_str="<%s>"%root
for i in range(0,self.__res__):
row = self.__curs__.fetchone()
rt={}
# генерация XML документа
for i in range(len(fields)):
try:
# от тут магия, если имеется поле с именем как в векторе собитий
# то к значению поля применяется заданная нами функция
rt[fields[i]]=event[fields[i]](row[i])
except:
rt[fields[i]]=row[i]
xml_str+=xml_str_tmpl%rt
return xml_str+""%root

мне понравилось такое компактное решение, особенно если представить сколько надо навелосипедить на С++
Я собираюсь такой приём можно применить для обработки входящих сообщения на наличие ключевых слов, ссылок, да мало ли чего, это просто удобно.

понедельник, 24 марта 2008 г.

Сын, первое проявление интереса

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


Пока это довольно редкое явление проявления интереса и рукоприкладства к чему либо. :)

суббота, 22 марта 2008 г.

Очередная работа жены

После бессонной ночи в битве за место под солнцем с другими фрилансерами
у неё получился такой логотип/сценка/комикс

пятница, 21 марта 2008 г.

Настройка безпарольной аутентификации с вашим ssh аккаунтом

Если у вас имеется ssh доступ к какому либо серверу и вы не в курсе про ключи, то очевидно вам приходится часто имя и пароль. Это весьма утомительно и мешает автоматизировать многие вещи, например синхронизация заметок Tomboy, налаживание работы синхронизирующего/бекапящего скрипта или запуск X приложение (об этом позже). В общем если вы устали от этой рутины то пора завести ключи :)
Вся задача разбивается на 3 части, генерация ключа, установка его на сервере и настройка рабочей среды

1. генерация ключа
bsdhost% ssh-keygen -t dsa -b 2048
Generating public/private dsa key pair.
Enter file in which to save the key (/home/ffsdmad/.ssh/id_dsa):# соглашаемся с путём по умолчанию
Enter passphrase (empty for no passphrase): # вводим секретное слово
Enter same passphrase again: # вводим секретное слово 2 раз
Your identification has been saved in .
Your public key has been saved in .pub.
The key fingerprint is:
1f:48:47:b2:d1:a1:8a:fd:b4:5f:12:46:93:0a:f4:27 ffsdmad@bsdhost
bsdhost%
теперь в папке $HOME/.ssh/ мы имеет 2 файла-ключа, секретный - id_dsa и открытый - id_dsa.pub

2. добавление ключа на сервер
необходимо добавить содержимое файла $HOME/.ssh/id_dsa.pub с локального компьютера
в файл $HOME/.ssh/authorized_keys удалённого хостинга
bsdhost% ssh ffsdmad@ffserver
scp ffsdmad@bsdhost:~/.ssh/id_dsa.pub ~/tmp.id
Password:
id_dsa.pub 100% 1117 1.1KB/s 00:00
ffserver:~>
ffserver:~> cat ~/tmp.id >> .ssh/authorized_keys
ffserver:~> rm ~/tmp.id
ffserver:~> exit
Всё, теперь сервер должен узнавать нас не только по паролю, но и ключам, проверям:
bsdhost% ssh ffserver
Enter passphrase for key '/home/ffsdmad/.ssh/id_dsa': # здесь требуется ввести ключевое слово, заданное при создании ключа
ffserver:~>

3. настройка среды для удобного использования
Мы получили безпарольную систему входа на сервер удалённого хостинга.
Но хрен редьки не слаше, ведь нам приходится вводить ключевое слово,
чтобы избежать этого необходимо проделать следующее:
а. поправить конфиг пользователя (для Ubuntu не требуется)
б. пере/залогиниться по новой (для Ubuntu не требуется)
в. добавить ключь агенту авторизации

а. добавляем в файл ~/.tcshrc следующий текст:

if ( $?SSH_AGENT_PID == 0 && $?SSH_AUTH_SOCK == 0 )then
eval `ssh-agent -c`# для tcsh -c, для bash -s
else
# тут можно прибивать агента при каждом входе пользователя в терминал
# echo "kill current ssh-agent"
# ssh-agent -k
# echo "start ssh-agent"
# eval `ssh-agent -c`
endif
этот код будет проверять запушен ли агент авторизации, если нет, то будет запускать и настраивать среду
б. exit
в. bsdhost:~> ssh-add
Enter passphrase for /home/ffsdmad/.ssh/id_dsa:
Identity added: /home/ffsdmad/.ssh/id_dsa (/home/ffsdmad/.ssh/id_dsa)
bsdhost:~>
проверяем кривость рук
bsdhost:~> ssh ffserver
Welcome to FreeBSD!
запускается ssh-agent
Agent pid 13178
ffserver:~>

Всё, мы имеем безпарольный вход на удалённый хостинг. Теперь до следующего входа в систему нет нужды вводить пароль и возможности вашего компьютера увеличились за счёт возможностей сервера, но об этом после :)

Настройка tomboy для синхронизации через webdav

Заметки Tomboy - это утилита позволяющая создавать заметки
Таких программ очень много, но мне нравится одна из фишек Tomboy - синхронизация.
Что это такое? Например, дома я договорился с партнёром о чём то, он/она мне дал/а телефон/пароль/ссылку/etc я в 2 клика добавил заметку и закрыл, когда эти данные нужны, я нашёл/открыл/воспользовался нужными данными.
Но у меня не один компьютер и не два, и мне везде нужны эти заметки, вот тут приходит на помощь синхронизация: смысл которой похож на механизм CVS, сохранить на удалённом сервере ваши заметки, или наоборот обновить. То-есть после после операции синхронизация, ваши заметки будут всегда актуальными. Там имеет несколько способов синхронизации:
  1. с локальным всё понятно!?
  2. для ssh необходимо установить модуль fuse ssh и иметь удалённый сервер с ssh доступом, чтобы не вводить постоянно пароль я рекомендую пользоваться ключами (об этом читать тут)
  3. так же возможность использования WebDav источника, это очень распространённая услуга у многих провайдеров, ведь у вас ведь есть свой хостинг? :)

в общем подключаем Webdav каталог к Tomboy Ubuntu 7.10
первым делом необходимо (собрать) установить пакет
wdfs_* .deb ( wdfs_1.4.2-1_i386.deb )
Если пакета нет, то либо качаем от сюда http://rekoweb.ru/download/wdfs_1.4.2-1_i386.deb
либо собираем сами, вот так
sudo apt-get install checkinstall libfuse-dev libneon26 libneon26-dev libglib2.0-dev

wget http://noedler.de/projekte/wdfs/wdfs-1.4.2.tar.gz
tar xzf wdfs-1.4.2.tar.gz
cd wdfs-1.4.2
./configure
sudo checkinstall
sudo dpkg -i wdfs_1.4.2-1_i386.deb

далее, активируем расширение, синхронизации через webdav, в его настройки необходимо внести
полный URL до того места где будут размещаться заметки
например у меня http://ffserver.domen/dav/notes/ffsdmad/ и логин и пароль на webdav сервере (уточните у вашего провайдера аккаунт к webdav каталогу)
сохраняем и если с сервером всё в порядке, то спокойно можно синхронизироваться

Если вы сам себе провайдер, то необходимо обеспечить создание webdav каталога
Настройка собственного webdav сервера
нужно обеспечить загрузку webdav модуля индейца:

grep dav /usr/local/etc/apache22/httpd.conf
LoadModule dav_module libexec/apache22/mod_dav.so
LoadModule dav_fs_module libexec/apache22/mod_dav_fs.so
Include etc/apache22/extra/httpd-dav.conf

grep -v "^$" /usr/local/etc/apache22/extra/httpd-dav.conf |grep -v "^#"
DavLockDB "/root/DavLock"
Alias /dav "/bacup/dav"

Dav On
Order Allow,Deny
Allow from all
AuthType Digest
AuthName DAV-upload
# You can use the htdigest program to create the password database:
# htdigest -c "/root/user.passwd" DAV-upload admin
AuthUserFile "/root/user.passwd"
# Allow universal read-access, but writes are restricted
# to the admin user.

require user admin


#BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
#BrowserMatch "MS FrontPage" redirect-carefully
#BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully
BrowserMatch "^gnome-vfs/1.0" redirect-carefully
BrowserMatch "^XML Spy" redirect-carefully
#BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully

затем обеспечить право записи пользователя apache на папку /bacup/dav
именно здесь будет хранилище
в результате /dav будет видно на любом виртуальном домене, чтобы добавить настроек можно использовать обычный .htaccess, например:
cat /bacup/dav/.htaccess
AddDefaultCharset UTF-8 # умолчальный чарсет UTF-8