Author Archives: Valor - Page 2

Asterisk — укладываем фалики по полочкам.

Для тех кто использует Asterisk для построения колцентров..

Если вы ведете запись входящих звонков в очередях (asterisk: Queues), то рано или поздно встает вопрос об вменяемой организации нескольких десятков (может быть и сотен) тысяч файлов в нечто удобное для поиска и прочих манипуляций..

Я в свою очередь предлагаю хранить все файлы как дерево вида: YYYY/MM/DD/ , для сего написал небольшой скриптик на питоне..

#!/usr/bin/env python
'''
Created on 03.01.2011

@author: valor
'''

import time
import os
from shutil import move

class AstMonFLSorter:

    store_root = "/raid/monitor/"

    def __init__(self):
        pass

    def utc_get_date(self,utc):
        return time.strftime("%Y:%m:%d", time.localtime(utc))

    def main(self):
        count = 0
        for fname in os.listdir(self.store_root):
            utc = fname[:10]
            year = self.utc_get_date(float(utc))[:4]
            month = self.utc_get_date(float(utc))[5:7]
            day = self.utc_get_date(float(utc))[8:10]
            curday = self.utc_get_date(time.time())[8:10]

            if not os.path.isdir(self.store_root+year):
                print ">>> create "+year+" folder"
                os.mkdir(self.store_root+year)
            if not os.path.isdir(self.store_root+year+"/"+month):
                print ">> create "+month+" folder"
                os.mkdir(self.store_root+year+"/"+month)
            if not os.path.isdir(self.store_root+year+"/"+month+"/"+day):
                print "> create "+day+" folder"
                os.mkdir(self.store_root+year+"/"+month+"/"+day)
            else:
                if os.path.isfile(self.store_root+fname) and day != curday:
                    move(self.store_root+fname, self.store_root+year+"/"+month+"/"+day)
                    count +=1
                    print "=="+str(count)+"== moved file "+fname+" to > "+self.store_root+year+"/"+month+"/"+day


if __name__ == '__main__':
    astmon = AstMonFLSorter()
    astmon.main()

Вот как-то так.. Есть замечания или предложения, или может есть ошибки? Пишите все поправим..

Grub2 и framebuffer в Debian

Ахтунг!!! Не надо ничего менять в /boot/grub/grub.conf , это не наш метод.

Разрешение ЖК моего ноутбука 1280×800, не забываем его сменить на свое!

Для начала открываем  /etc/default/grub и ищем строку:

GRUB_GFXMODE=800x600

Правим ее немного, что бы получилось:

GRUB_GFXMODE=1280x800@32
# ниже добавляем строку
GRUB_GFXPAYLOAD=1280x800x32

Теперь лезем в /etc/grub.d/00_header ищем там строку:

if [ "x${GRUB_GFXMODE}" = "x" ] ; then GRUB_GFXMODE=800x600x32 ; fi
#меняем разрешение на свое и ниже добавляем еще одну
if [ "x${GRUB_GFXPAYLOAD}" = "x" ] ; then GRUB_GFXPAYLOAD=1280X800x32 ; fi

В самом конце файла ищем строку

set gfxmode=${GRUB_GFXMODE}

и ниже добавляем

set gfxpayload=${GRUB_GFXPAYLOAD}

Сохраняем и запускаем update-grub2.

Удачи.



Hiberante multi instance — работа с несколькими БД.

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

JBoss AS 6.0.0

HibernateUtils.java

public class HiberanteUtils {

private static final Logger _log = Logger.getLogger(HiberanteUtils.class);

private static final SessionFactory nagiosSessionFactory, asteriskSessionFactory;

static {

try{

nagiosSessionFactory = new Configuration().configure("hibernate-nagios.cfg.xml").buildSessionFactory();

asteriskSessionFactory = new Configuration().configure("hibernate-asterisk.cfg.xml").buildSessionFactory();

}catch (Throwable ex) {

_log.error("Initial SessionFactory creation failed.", ex);

throw new ExceptionInInitializerError(ex);
}
}

public static SessionFactory getNagiosSessionFactory() {
return nagiosSessionFactory;
}

public static SessionFactory getAsteriskSessionFactory() {
return asteriskSessionFactory;
}

Соответственно hibernate-nagios.cfg.xmlhibernate-asterisk.cfg.xml должны лежать в class path..

Notes@ Jetty 7-8 Eclipse WTP Adapter

Дабы не забыть в будущем оставлю линк.

Debian NumLock trouble

Угораздило меня нарваться на иксовый баг чёрт его знает какой давности.. причем баг сей не очевиден и вроде даже не совсем баг (да.. вот такой вот каламбур).. Короче, суть в том, что если нечаянно нажать Shift+NumLock , то цифровая консоль переходит в режим управления курсором, а так как при каждом нажатии клавиш 8,6,2,4 курсор сдвигается на один пиксел, заметить сей трабл не просто, по симу первая мысль приходящая в голову это БАГ..

Для поличения сей пичали нужно жмакнуть  Shift+NumLock еще раз..

ЗЫ.. Как мне подсказали интернеты.. данная «фича», есть не что иное как не плохой  способ подосрать ближнему ибо неплохо функционирует при не активных иксах (т.е. в разлогиненном состоянии).

Gnome-terminal как фон рабочего стола..

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

На просторах интернетов набрел на занятный тузлец Alltray (AllTray — Dock any program into the system tray.) , полистав man — понял, что для решения нашей задачи оно может сгодиться.

И так решение.

В качестве эмулятора терминала берем стандартный для Gnome — Gnome-terminal, дистрибутив Debian..

Для начала малость подрехтуем сам gnome-terminal:

  1. Создаем новый профиль.
  2. Отключаем отображения верхнего меню.
  3. Отключаем полосы прокрутки.
  4. Увеличиваем буфер строк (для удобства).
  5. Выкручиваем до упора прозрачность фона терминала.
  6. Подгоняем цвет консольных шрифтов под цвет фона рабочего стола.
  7. Остальное по вкусу..

Устанавливаем alltray

viktor@viktor-laptop:~$ apt-get install alltray

Ну и финальный штрих в авто-запуск (тут неважно как именно, важна суть..) добавляем следующую строку:

alltray --show --sticky --skip-taskbar --no-alltray --notray -x -g +800+0 --geometry 1024x600 gnome-terminal --window-with-profile=s

Лично я добавлял ее в Система->Параметры->Запускаемые приложения.

Да и пару слов об опциях alltray..

  • show – не сворачивать при запуске
  • sticky – отображать на всех рабочих столах
  • skip-taskbar – убрать приложение из панели задач
  • no-alltray – убрать заголовок alltray
  • notray – не показывать значёк в трее
  • x – убрать декорацию окон
  • +800+0 – позиция окна на рабочем столе (первое – горизонталь, второе – вертикаль)
  • geometry 1024×600 — разрешение рабочего стола (это если нужно растянуть терминал на весь рабочий стол, иначе просто указываем нужную геометрию окна терминал)
  • window-with-profile=s — это уже параметр gnome-terminal говорящий о том, что при запуске нужно заюзать профиль «s», который мы создали выше.

Ну вот и все.. Перезагружаем иксы и ликуем..

Все эти выше описанные манипуляции выполнялись на Asus EeePC 1005 с Debian Sqeeze и Gnome 2.28.1..

Пользователей KDE, Xfce, etc..  очень прошу оставить свои комментарии по поводу различий и нюансов в реализации данной фичи.

Скрины на память…

Терминал как фон рабочего стола

Терминал как фон рабочего стола

Xen 3.2-1 and HVM Windows config

Очередной пост для себя любимого.. Но и Вы гости дорогие жуйте если что не стесняйтесь..

Сие есть просто файл конфигурации HVM домена с Win2k3..

Пост не претендует на новизну и оригинальность.

 

kernel="hvmloader"
device_model = 'qemu-dm'
builder='hvm'
memory = 5120
name = "win2k3
vcpus= 4
pae=1
acpi= 1
apic= 1
#usb= 1 разкомментировать если нужна поддержка USB в гостевой ОС. #usbdevice= [ 'host:0529:0514' ]  DID, USB устройства которое нужно пробросить.
cpus = "
2-5"
vif=[ 'mac=00:16:3e:01:01:01,bridge=eth0,type=ioemu' ]
disk = [
'file:/C.img,hda,w',
'file:/D.img,hdb,w'
]
'file:/win2003/win2003.iso,hdc:cdrom,r',
'file:/win2003-2.iso,hdd:cdrom,r'
#]
on_poweroff = 'destroy'
on_shutdown = 'shutdown'
on_reboot   = 'restart'
on_crash    = 'restart'
boot='c'
sdl=0
vnc=1
vnclisten="
0.0.0.0"
vncconsole=0
stdvga=0
serial='pty'

Note:

Для тех кто не в курсе.. Для работы HVM домена необходима поддержка Intel®Virtualization Technology (VT) или Pacifica (AMD)  процессором (ами) сервера. Проверить можно следующими способами:

# xm info | grep caps
hw_caps                : 178bfbff:ebd3fbff:00000000:00000010:00002001:00000000:0000001f
xen_caps               : xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p

# xm dmesg | grep VMX
(XEN) VMXON is done
(XEN) VMXON is done

# xm dmesg | grep -i svm
(XEN) AMD SVM Extension is enabled for cpu 0.
(XEN) AMD SVM Extension is enabled for cpu 1.

Траблы:

  • Через опу работает AMD VT-d в силу зачаточности реализации..
  • Через туда же работает USB .
  • При установки паравиртуальных драйверов для Windows (В частности Win2k3) отваливаются CDROM`ы.. (на версии драйвера gplpv_2003x64_0.11.0.188 от 3 января  2010 г.)

Ну на этом с траблами вроде все, по крайней мере я более не обнаружил..

Кстати вопреки слухам о запущенности и унынии свободной реализации паравиртуальных драйверов для виндовсов.. Отнюдь.. Драйвера активно разрабатываются и они довольно таки стабильны. Кому надо, ссылка в конце поста.

Хозяйке на заметку:

  1. В качестве виртуального HDD для гостевой ОС предпочтительнее использовать блочное устройство, нежели файловое.  Синтаксис опции : phy:UNAME,DEV,MODE
  2. Для ОС семейства MSWindows (особенно серверных) установки паравиртуальных драйверов крайне предпочтительна, ибо в качестве профита появится многоканальный SATA контроллер, 1G сетевой адаптер и.т.д в зависимости от типа ОС (сие особенно полезно если в гостевом сервере крутится БД ).

Полезные ссылки:

Отслеживание изменений в /etc с помощью etckeeper и Git

Собственно вот.. Объяснять для чего это не буду, кому надо тот поймет.

И так ставим etckeeper из репов..

wall:~# apt-get install etckeeper

Далее все просто..

wall:~# cd /etc/
wall:/etc# etckeeper init
Initialized empty Git repository in /etc/.git/
wall:/etc#etckeeper commit 'Init Сommit'
wall:/etc# git gc
Counting objects: 1476, done.
Compressing objects: 100% (1068/1068), done.
Writing objects: 100% (1476/1476), done.
Total 1476 (delta 91), reused 0 (delta 0)

Далее нам надо сделать так чтобы файлы конфигураций вновь установленных программ автоматом попадали в репозиторий.
Для этого надо разкомментировать строку AVOID_COMMIT_BEFORE_INSTALL=1 в файле /etc/etckeeper/etckeeper.conf .

Ну и запишем изменения :

wall:/etc# git commit -a -m 'Uncomment option in etckeeper.conf'
Created commit b26ec5d: Uncomment option in etckeeper.conf
 1 files changed, 1 insertions(+), 1 deletions(-)

За дополнительной информацией по работе с Gig лезем в Man.

Все! :)

Pixel Studio Pro качественный клон PhotoShop

Не рекламы ради, а профита для .. пишу сии строки.. Наслушавшись воплей о том, что Linux и работа с графикой вещи не совместимы ввиду отсутствия вменяемых инструментов.. С одной стороны для моего недохудожества и недодизайна вполне хватает Gimp`a, с другой, наблюдая работу фотошопера начинаю понимать, что в претензиях сих смысл имеет место быть.. Пускаться в длительное словоблудие описывая все недостатки и приимущества Gimp и PhotoShop я не стану, ибо все это знают (кто не знает ССЗБ ).
Так вот перейдем сразу к делу, а именно к альтернативам. Сия альтернатива должна соответствовать некоторому количеству требований.

  1. Лёгкость — т.е. программа не должна выжирать 1Гб ОЗУ и не жрать 100% процессорного времени на примитивных операциях.
  2. Поддержка  каналов СMY, CMYK, HSB на ровне с RGB.
  3. Нативная поддержка Linux. (имеется ввиду отсутствие всяких WINE и прочей межплатформенной абстракции).

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

В общем побороздив просторы интернетов наткнулся я на один занятный проект, имя ему Pixel Studio Pro и понял это ОН(!). Да да именно ОН..

В кратце опишу это чудо враждебной техники.

  • Продукт более чем удовлетворяет нашим исходным требованиям. Он легок (примерно 35М в распакованном виде) и около 12М ОЗУ в пассивном режиме.
  • Поддерживает СMY, CMYK, HSB, HDR, CIELab ….Jpeg2000
  • Векторные слои.

Подробный фичерс лист  тут .

Скриншотики тут

На результаты работы смотрим тут

Да важно!! Продукт пропреитарный скорее всего в силу лицензионных отчислений за поддержку СMY, CMYK, HSB, HDR, CIELab.. Но цена вменяема от 33 до 80 евро..

ЗЫ. Буду рад если кто-то из настоящих спецов сделает свою экспертную оценку этой программы, именно в плане различий функционала (критичности этих различий).

Вот скриншотик сей программки на моем eeepc 1005.

111

Сборка расширейний для Iptables в Debian

Данная заметка (именно заметка !) сделана в основном для себя , дабы не забыть.  Ну и для масс, авось кому понадобится.

И так кратко (для масс!), что есть Iptables extensions, это набор патчей для Iptables существенно расширяющий его функционал. В Debian Lenny эти патчи собраны в пакете netfilter-extensions-source , подробнее о составе пакета  можно почитать здесь, там же можно найти примеры по использованию.

И так качаем и ставим пакет netfilter-extensions-source:

apt-get install netfilter-extensions-source linux-headers-`uname -r`

Внимание! Тянет много зависимостей.

Ну и собственно сборка:

m-a build netfilter-extensions
m-a update && m-a a-i netfilter-extensions

Ну вот и все :)