пятница, 22 мая 2009 г.

Закрытие

Всем привет. В связи с тем что мне катастрофически не хватает времени, я прекращаю вести этот блог. Все свои заметки я отныне буду вести только для себя. Могу ответить на любые вопросы в джаббер за умеренную плату яндекс денег, если не хотите платить можете обращаться в наш клуб. club.shelek.com.

Всем удачи!

пятница, 13 февраля 2009 г.

CPAN Mirror (мини зеркало perl базы)

Описание официальной документации:
CPAN::Mini provides a simple mechanism to build and update a minimal mirror of the CPAN on your local disk. It contains only those files needed to install the newest version of every distribution.

Для создания минимального зеркала CPAN, на потребуется установить perl пакет CPAN::Mini.

perl -MCPAN -e "install CPAN::Mini"

далее нужно запустить создание локального зеркала:

sudo minicpan -l /home/mczim/CPAN_Mirror/ -r http://cpan.pair.com/pub/CPAN/

-l это директория назначения
-r это адрес откуда тянуть модули perl

После того как команда закончит свою работу, у вас в директории локального зеркала должен быть примерно вот такой объем данных:

du -sh CPAN_Mirror/
983M CPAN_Mirror/


Теперь можно настроить Web сервер, для того что бы клиенты могли устанавливать с вашего локального зеркала необходимые пакеты. Для этого нужно установить Web сервер Apache.

sudo aptitude install apache

по умолчанию директории отображаемые этим Web сервером находятся в /var/www/, для того что бы наше зеркало было видно снаружи, достаточно просто сделать символическую ссылку в эту директорию.

ln -s /home/mczim/CPAN_Mirror/ /var/www/CPAN_Mirror/

Теперь можно настроить клиента, для этого выполним в командной строке следующее:

#perl -MCPAN -e shell

cpan[1]>o conf urllist push http://адрес вашего сервера/CPAN_Mirror/
cpan[2]>o conf commit
cpan[3]>quit


Все, теперь можно попробовать установить пакет:

perl -MCPAN -e "install TemplateM"

должно работать!

воскресенье, 25 января 2009 г.

Объявление.

Дорогие товарищи, в связи с финансовым кризисом :) объявляю о том что я готов оказывать помощь в настройках серверов, программировании всякого разного и т.д. около компьютерного за деньги. Поэтому не стесняйтесь обращайтесь, как говорится чем смогу тем помогу, В СВОБОДНОЕ ОТ ОСНОВНОЙ РАБОТЫ ВРЕМЯ. Вот мое РЕЗЮМЕ для ознакомления.

Сортировка mp3 по жанрам

Довелось мне тут писть небольшую програмку на perl. Нужно было просканировать кучу подкаталогов вияснить для каждого альбома к какому он относится жанру и переместить в директорию с названием этого жанра. Логика очень проста, рекурсивно проходим все директории, в каждой заглядываем в файл, если в нем есть названием жанра, то перемещаем весь альбом с сохранением названия, если в альбоме ни в одном файле жанра не найдено, то перемещаем в директорию остальные. Т.е. например есть директория/источник/Алиса(альбом такой то), то будет перемещен весь альбом в /директорию/назначения/рок/Алиса(альбом такой то), а если в этом альбоме не окажется инфомации о жанре, то будеть перемещено в /директорию/назначения/Other/Алиса(альбом такой то).

З.Ы.: логику работы заказал заказчик.
З.З.Ы.: прога работет только с тегами первой версии.

Собственно вот код:

#!/usr/bin/perl -w

#***********************************
#Author: Filatov Maxim aka McZim
#Date: 01.2009
#Encoding: ru_RU.UTF-8
#Description:
#
#Search and sort mp3 files by genre
#***********************************

use MP3::Tag;
use File::Path;

$in_dir = $ARGV[0];
$out_dir = $ARGV[1];
mkdir("$out_dir/Other");
search($in_dir);

sub search
{
my $dir = shift;
opendir(DIR,"$dir");
my @files = readdir(DIR);
closedir(DIR);

foreach (@files)
{
if($_ ne '.' && $_ ne '..')
{
my $filename="$dir/$_";

if(-d $filename)
{
search("$filename");
}

if(-f $filename)
{
$mp3 = MP3::Tag->new("$dir/$_");
$mp3->get_tags();

$position = rindex($dir, "/") + 1;
$dir_name = substr($dir, $position);

if (exists $mp3->{ID3v1})
{
$tag = $mp3->{ID3v1}->genre;

if($tag ne '')
{
$mk = "$out_dir/$tag/$dir_name";
mkpath($mk);
chdir $dir;
`mv -f *.mp3 $mk`;
}
}
else
{
print("I'm find file: $_\n");
print("he does not containt tag v1. Ignoring...\n");
print("\n");

mkpath("$out_dir/Other/$dir_name");
`mv -f $dir/$_ $out_dir/Other/$dir_name`;

next;
}
$mp3->close();
}
}
}
}

print("\n");

понедельник, 10 ноября 2008 г.

Raw to Jpeg

Понадобилось мне тут сконвертировать кучу raw файлов в jpeg. Сама по себе задача бредовая так как в raw снимают именно для того что бы после более качественно обработать фотографию. Но тем не менее :) Фотоаппарат Canon 400D конвертация из raw в jpeg, баланс белого берем с камеры.

#sudo aptitude install dcraw libjpeg-progs

#touch rtj.pl
#chmod 755 rtj.pl
#vim rtj.pl

#!/usr/bin/perl

$cur_dir = $ARGV[0];
mkdir("$cur_dir/raw");
print("working");

search($ARGV[0]);

print("OK!\n");

sub search
{
my $dir=shift;
my(@files);
chdir("$dir");
opendir(DIR,".");
@files=readdir(DIR);

foreach (@files)
{
unless ($_ eq '..' || $_ eq '.')
{
if (-d "$dir$_")
{
search("$dir$_/");
chdir("..");
}
else
{
`dcraw -w -c $dir$_ | cjpeg > $dir$_.jpeg`;
`mv $dir$_ $cur_dir/raw/`;

print(".");
}
}
}
}


#./rtj.pl /путь/к/файлам.

Скрипт рекурсивно проходит по всем директориям начиная от родительской указанной как параметр для скрипта, перемещает raw файлы в директорию raw созданную в родительской, конвертированные файлы оставляет там где были "сырые" файлы.

З.Ы.: скрипт не проверяет файлы являются ли raw или нет, "хавает" все подряд, т.е. что бы не было казусов, натравляйте только на ту директорию где только raw файлы. Или доработайте кому как удобно.

вторник, 2 сентября 2008 г.

Настройка отказоустойчивости дисковой полки IBM QLOGIC DS4200 и Linux RHEL AS 4.

Итак, нам необходимо настроить Linux сервер RHEL AS 4 Update 6 (64bit) базы данных, и подключенную к нему дисковую полку IBM QLOGIC DS4200 по оптическому кабелю (FibreChannel).

Я не буду вдаваться в подробности конфигурирования RAID массива на полке. Для того что бы конфигурировать RAID нужно воспользоваться инструментом Storage Manager который есть на диске в комплекте с дисковой полкой. Storage Manager работает под ОС Windows.

После конфигурирования RAID, диски в массиве менять местами нельзя, так как по ВСЕМ!!! дискам "размазывается" ОС самой дисковой полки. При конфигурировании RAID на этой полке мне не понравилось то, что нет возможности настроить полку через BIOS, так как у меня нет ОС Windows, и пришлось искать ноутбук с установленной ОС Windows....................

продолжение в: клубе программистов

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

Ubuntu and Toshiba A300

Всем привет. На днях приобрел себе laptop Toshiba A300-14S. На вид очень гламурный :) весь такой блестящий :) В общем суть в том что в этой модели компания Toshiba заменила привычный контроллер Ethernet Realtek, на Marvel. Все бы ничего, но драйвера с офф сайта не подошли, т.е. они как очень странно пытаются инсталироваться, что в итоге у них не получается. Не очень долго по курсировав в интернете, натыкаюсь на то что это не проблема Ubuntu, а проблема ядра Linux. Еще немного почитав нашел, в БАГ-Трекере ядра, небольшой диалог из двух сообщений. Один из собеседников говорил о том что с толкнулся такой не приятной вещью как не рабочим Ethernet контроллером из "каробки", т.е. после инсталяции Linux сеть не заработала и сказал что можно поправить это исправив исходники ядра. На что второй собеседник ответил, да мы знаем это, но ничего не можем сделать так как производитель чипов нам пока что ничего не прислал, всмысле спецификацию, но надеемся что в версии 2.6.26 исправим. Ну а мне теперь чего? Поехали ремонтировать, и так после инсталяции видим вот такую картину:

#lspci
...
Ethernet controller: Marvell Technology Group Ltd. Unknown device 4355 (rev 12)
...

без лишних слов скажу сразу что нужно сделать. Идем в /sources-linux/driver/net открываем на редактиирование файл sky2.c, в нем находим вот такую структуру:

static const struct pci_device_id sky2_id_table[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, 0x9000) }, /* SK-9Sxx */
{ PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, 0x9E00) }, /* SK-9Exx */
{ PCI_DEVICE(PCI_VENDOR_ID_DLINK, 0x4b00) }, /* DGE-560T */
{ PCI_DEVICE(PCI_VENDOR_ID_DLINK, 0x4001) }, /* DGE-550SX */
{ PCI_DEVICE(PCI_VENDOR_ID_DLINK, 0x4B02) }, /* DGE-560SX */
{ PCI_DEVICE(PCI_VENDOR_ID_DLINK, 0x4B03) }, /* DGE-550T */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4340) }, /* 88E8021 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4341) }, /* 88E8022 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4342) }, /* 88E8061 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4343) }, /* 88E8062 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4344) }, /* 88E8021 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4345) }, /* 88E8022 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4346) }, /* 88E8061 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4347) }, /* 88E8062 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4350) }, /* 88E8035 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4351) }, /* 88E8036 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4352) }, /* 88E8038 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4353) }, /* 88E8039 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4354) }, /* 88E8040 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4355) },
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4356) }, /* 88EC033 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4357) }, /* 88E8042 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x435A) }, /* 88E8048 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4360) }, /* 88E8052 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4361) }, /* 88E8050 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4362) }, /* 88E8053 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4363) }, /* 88E8055 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4364) }, /* 88E8056 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4365) }, /* 88E8070 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4366) }, /* 88EC036 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4367) }, /* 88EC032 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4368) }, /* 88EC034 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4369) }, /* 88EC042 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x436A) }, /* 88E8058 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x436B) }, /* 88E8071 */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x436C) }, /* 88E8072 */
{ 0 }
};

видим что, среди перечисленных устройств нашего нет, тогда просто вписываем его (выделенно), собираем из этих исходников новое ядро, перезагружаемся с новым я дром и все, сеть работает :)

среда, 9 июля 2008 г.

Вытянуть звук из видео

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

1. Запускаем приложение и нажимаем открыть















2. Выбираем нужный файл















3. Если файл загрузился удачно, нажимаем кнопку сохранить















4. Вводим имя файла с расширением например mp3















5. Получаем сообщение о успешном сохранении файла















6. Видим сохраненный нами файл в указанном месте, в нашем случае на рабочем столе файл test.mp3

четверг, 3 июля 2008 г.

Pidgin + ICQ

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

http://rapidshare.com/files/126379805/liboscar.so.0.0.0.html

копируем ее в:

/usr/lib/purple-2

и перезапускаем клиента!

понедельник, 9 июня 2008 г.

10 лучших перлов Линуса Торвальдса:

1. "Программное обеспечение - это как секс, лучше когда оно бесплатное".
2. "Microsoft - это не зло, просто они делают дрянные операционные системы".
3. "Моё имя - Линус, и я ваш Бог".
4. "Как видите, чтобы написать такую ОС как Linux вам не только надо быть хорошим программистом, вам ещё придётся быть подлой тварью".
5. "Философия Linux состоит в том, чтобы "смеяться в лицо опасности". Ой. Ошибся. "Сделай сам". Да, так оно и есть".
6. "Кто-то сказал мне, что жирный пингвин не может по-настоящему быть воплощением изящества Linux, что служит для меня доказательством, что этот человек никогда не видел рассерженного пингвина, атакующего вас на скорости свыше 100 миль в час".
7. "Интеллект - это способность избежать выполнения работы, но, тем не менее, сделать так, чтобы она была выполнена".
8. "Когда вы говорите: "Я написал программу, которая уронила Windows", люди просто в недоумении смотрят на вас и говорят: "А у меня такие программы были в комплекте с Windows ... бесплатно".
9. "Я не сомневаюсь, что виртуализация полезна в некоторых областях. В чём я достаточно сильно сомневаюсь, это в том, что она когда-то будет иметь то влияние, о котором говорят люди её продвигающие."
10. "Сейчас, большей части из вас возможно будет совершенно скучно в этот рождественский день, но я готов вам предоставить нечто, что для вас будет великолепным развлечением: протестируйте ядро 2.6.15-rc7. Все магазины закрыты, и нет ничего более приятного, что можно было бы сделать в перерывах между поеданием пищи."