- Добавить deb-src из sid в /etc/apt/sources.list, aptitude update
- apt-get build-dep libavformat-dev
- apt-get install doxygen
- apt-get source -b libavformat-dev
- dpkg -i libavutil49, libavutil49-dev
- dpkg -i libavcodec52, libavcodec52-dev
- dpkg -i libavformat52, libavformat-dev
- dpkg -i libswscale0, libswscale-dev
- apt-get build-dep zoneminder
- apt-get source -b zoneminder
- dpkg -i libavdevice52, libavfilter0, libpostproc51, ffmpeg
- aptitude install apache2 libapache2-mod-php5 php5 php5-mysql mysql-server libmime-perl libmime-lite-perl libarchive-zip-perl libdevice-serialport-perl
- dpkg -i zoneminder
- ln -s /etc/zm/apache.conf /etc/apache2/conf.d/zoneminder.conf
- в файл /etc/sysctl.conf добавить строки
kernel.shmall = 134217728
kernel.shmmax = 134217728 - reboot
понедельник, 10 августа 2009 г.
Установка zoneminder из Debian/sid в Debian/lenny
четверг, 9 июля 2009 г.
Битовые индексы соединения Oracle DB (bitmap join indexes, BJI)
(http://www.interface.ru/fset.asp?Url=/oracle/or9inewvozmojnosti.htm)
Невозможно оставить без внимания ещё одно оригинальное новшество – битовые индексы соединения (bitmap join indexes, BJI). Это обычные битовые индексы, но построенные по столбцам, которых в индексируемой таблице нет. Например, в таблице продаж (назовем её по традиции Sales) есть код региона продажи, но нет его названия. Название есть в справочнике регионов (Regions). В то же время запрос, выбирающий все продажи по региону с заданным названием, довольно типичен. При его выполнении каждый раз требуется соединение (join) таблиц Sales и Regions. Рассмотрим пример.
Создадим таблицы:
create table Regions ( region_id number primary key, -- первичный ключ обязателен для создания BJI region_name varchar2(200) ); create table Sales ( id number primary key, region_id number, -- опустим ограничения внешнего ключа product_id number, amount number, sal_date date );
Выполним запрос:
Select sum(amount)
from sales, regions
where
regions.region_id = sales.region_id
and regions.region_name = 'Центр'
Рассмотрим план выполнения этого запроса (это не единственно возможный, но вполне вероятный план). В плане, естественно, присутствует просмотр обеих таблиц и операция их соединения:
SELECT STATEMENT Optimizer=ALL_ROWS
SORT (AGGREGATE)
NESTED LOOPS
TABLE ACCESS (FULL) OF 'SALES'
TABLE ACCESS (BY INDEX ROWID) OF 'REGIONS'
INDEX (UNIQUE SCAN) OF 'REGIONS_PK' (UNIQUE)
Если же это соединение выполнить один раз при построении индекса, и в индексе хранить указатели на строки таблицы Sales вместе с соответствующими названиями регионов из таблицы Regions, то для выполнения вышеописанного запроса таблица Regions вообще не понадобится, и можно избежать очень дорогостоящей операции соединения.
Создадим индекс:
create bitmap index Sales_reg_bji on Sales(regions.region_name) from Sales, Regions where sales.region_id=regions.region_id
Чтобы побудить оптимизатор использовать этот индекс, применим подсказку (hint). В реальности, если таблицы будут достаточно большими, подсказки скорее всего не понадобятся, т.к. стоимость выполнения этого запроса с использованием индекса будет существенно меньше, чем без него:
select /*+ index(sales sales_reg_bji) */
sum(amount) from sales, regions
where
regions.region_id = sales.region_id
and regions.region_name = 'Центр'
Рассмотрим план выполнения и убедимся, что просмотр таблицы Regions и операция соединения исчезли:
SELECT STATEMENT Optimizer=ALL_ROWS
SORT (AGGREGATE)
TABLE ACCESS (BY INDEX ROWID) OF 'SALES'
BITMAP CONVERSION (TO ROWIDS)
BITMAP INDEX (SINGLE VALUE) OF 'SALES_REG_BJI'
Средства обеспечения масштабируемости приложений технологию разработки напрямую не затрагивают, но позволяют обойтись без модификации приложения при увеличении объёма данных или количества пользователей.
Каркасные планы выполнения и их применение в практике
на тестовом сервере:
SQL> connect system as sysdba
SQL> @e:\oracle\ora92\rdbms\admin\dbmsol.sql
SQL> grant create any outline to LOGIN;
SQL> grant execute on dbms_outln to LOGIN;
SQL> grant execute on dbms_outln_edit to LOGIN;
SQL> ALTER SYSTEM SET CREATE_STORED_OUTLINES = TRUE;
далее параллельно запускаем проблеммное приложение, заставляем его делать проблеммные запросы
после этого:
SQL> ALTER SYSTEM SET CREATE_STORED_OUTLINES = FALSE
проконтроллировать полученные каркасные планы и хинты можно так:
select * from user_outlines;
select * from user_outline_hints;
название конкретно нужного плана можно посмотреть по user_outlines.sql_text
далее необходимо править хинты у полученных каркасных планов:
подготовка:
SQL> connect LOGIN
SQL> execute dbms_outln_edit.create_edit_tables;
копирование в приватный каркасный план (править можно только его):
SQL> create private outline priv_outln1 from SYS_OUTLINE_081007125758140;
SQL> column hint# format 999999
SQL> column hint_text format a28
SQL> column user_table_name format a16
SQL> set pages 1000
SQL> select hint#, hint_text, user_table_name from ol$hints where ol_name = 'PRIV_OUTLN1';
HINT# HINT_TEXT USER_TABLE_NAME
------- ---------------------------- ----------------
1 NOREWRITE
2 RULE
3 NOREWRITE
4 NO_EXPAND
5 USE_NL(LR)
6 USE_NL(CT)
7 USE_NL(LZ)
8 USE_NL(CN
9 ORDERED
10 NO_FACT(LR)
11 NO_FACT(CT)
12 NO_FACT(LZ)
13 NO_FACT(CN
14 NO_FACT(CX)
15 AND_EQUAL(CX M2_CTSXR_LTTLZ_FRGN M2_CTSRX_LTTPN_FRGN)
16 INDEX(CN M2_CITNM_PK)
17 INDEX(LZ M2_LTZON_PK)
18 INDEX(CT M2_CTS_PK)
19 INDEX(LR M2_LTMTSRG_PK)
SQL> update ol$hints set hint_text='USE_HASH(LR)' where hint# = 5;
SQL> update ol$hints set hint_text='USE_HASH(CT)' where hint# = 6;
SQL> update ol$hints set hint_text='USE_HASH(LZ)' where hint# = 7;
SQL> update ol$hints set hint_text='USE_HASH(CN)' where hint# = 8;
SQL> select hint#, hint_text, user_table_name from ol$hints where ol_name = 'PRIV_OUTLN1';
HINT# HINT_TEXT USER_TABLE_NAME
------- ---------------------------- ----------------
1 NOREWRITE
2 RULE
3 NOREWRITE
4 NO_EXPAND
5 USE_HASH(LR)
6 USE_HASH(CT)
7 USE_HASH(LZ)
8 USE_HASH(CN)
9 ORDERED
10 NO_FACT(LR)
11 NO_FACT(CT)
12 NO_FACT(LZ)
13 NO_FACT(CN)
14 NO_FACT(CX)
15 AND_EQUAL(CX M2_CTSXR_LTTLZ_FRGN M2_CTSRX_LTTPN_FRGN)
16 INDEX(CN M2_CITNM_PK)
17 INDEX(LZ M2_LTZON_PK)
18 INDEX(CT M2_CTS_PK)
19 INDEX(LR M2_LTMTSRG_PK)
SQL> commit;
SQL> execute dbms_outln_edit.refresh_private_outline('PRIV_OUTLN1');
копируем приватный обратно в общий:
SQL> create or replace outline SYS_OUTLINE_081007125758140 from private priv_outln1;
переименовываем и перекидываем в другую группу (для переноса на ПРОД):
SQL> alter outline SYS_OUTLINE_081007125758140 rename to taraandr001;
SQL> alter outline taraandr001 change category to TARAANDR;
и очистим дефолтную группу, дабы не мешалось:
SQL> exec outln_pkg.drop_by_cat('DEFAULT');
проконтроллируем, что остались только нужные:
select * from user_outlines;
далее переносим с ТЕСТа:
exp system/ file=myoutln.dmp tables=(outln.ol$,outln.ol$hints,outln.ol$nodes) statistics=none
на ПРОД:
imp system/ file=myoutln.dmp full=y ignore=y
и далее на ПРОДе включаем использование:
SQL> alter system set use_stored_outlines = TARAANDR;
используются до следующего рестарта базы.
для постояшного включения при перезагрузке (используется категория DEFAULT):
create or replace trigger enable_outlines_trig
after startup on database
begin
execute immediate('alter system set use_stored_outlines=true');
end;
67536.1 Stored Outline Quick Reference
144194.1 Editing Stored Outlines in Oracle9i - an example
728647.1 How to Transfer Stored Outlines from One Database to Another (9i and above)
560331.1 How to Enable USE_STORED_OUTLINES Permanently
дополнительно:
132547.1 Using Stored Outlines
SQL> connect system as sysdba
SQL> @e:\oracle\ora92\rdbms\admin\dbmsol.sql
SQL> grant create any outline to LOGIN;
SQL> grant execute on dbms_outln to LOGIN;
SQL> grant execute on dbms_outln_edit to LOGIN;
SQL> ALTER SYSTEM SET CREATE_STORED_OUTLINES = TRUE;
далее параллельно запускаем проблеммное приложение, заставляем его делать проблеммные запросы
после этого:
SQL> ALTER SYSTEM SET CREATE_STORED_OUTLINES = FALSE
проконтроллировать полученные каркасные планы и хинты можно так:
select * from user_outlines;
select * from user_outline_hints;
название конкретно нужного плана можно посмотреть по user_outlines.sql_text
далее необходимо править хинты у полученных каркасных планов:
подготовка:
SQL> connect LOGIN
SQL> execute dbms_outln_edit.create_edit_tables;
копирование в приватный каркасный план (править можно только его):
SQL> create private outline priv_outln1 from SYS_OUTLINE_081007125758140;
SQL> column hint# format 999999
SQL> column hint_text format a28
SQL> column user_table_name format a16
SQL> set pages 1000
SQL> select hint#, hint_text, user_table_name from ol$hints where ol_name = 'PRIV_OUTLN1';
HINT# HINT_TEXT USER_TABLE_NAME
------- ---------------------------- ----------------
1 NOREWRITE
2 RULE
3 NOREWRITE
4 NO_EXPAND
5 USE_NL(LR)
6 USE_NL(CT)
7 USE_NL(LZ)
8 USE_NL(CN
9 ORDERED
10 NO_FACT(LR)
11 NO_FACT(CT)
12 NO_FACT(LZ)
13 NO_FACT(CN
14 NO_FACT(CX)
15 AND_EQUAL(CX M2_CTSXR_LTTLZ_FRGN M2_CTSRX_LTTPN_FRGN)
16 INDEX(CN M2_CITNM_PK)
17 INDEX(LZ M2_LTZON_PK)
18 INDEX(CT M2_CTS_PK)
19 INDEX(LR M2_LTMTSRG_PK)
SQL> update ol$hints set hint_text='USE_HASH(LR)' where hint# = 5;
SQL> update ol$hints set hint_text='USE_HASH(CT)' where hint# = 6;
SQL> update ol$hints set hint_text='USE_HASH(LZ)' where hint# = 7;
SQL> update ol$hints set hint_text='USE_HASH(CN)' where hint# = 8;
SQL> select hint#, hint_text, user_table_name from ol$hints where ol_name = 'PRIV_OUTLN1';
HINT# HINT_TEXT USER_TABLE_NAME
------- ---------------------------- ----------------
1 NOREWRITE
2 RULE
3 NOREWRITE
4 NO_EXPAND
5 USE_HASH(LR)
6 USE_HASH(CT)
7 USE_HASH(LZ)
8 USE_HASH(CN)
9 ORDERED
10 NO_FACT(LR)
11 NO_FACT(CT)
12 NO_FACT(LZ)
13 NO_FACT(CN)
14 NO_FACT(CX)
15 AND_EQUAL(CX M2_CTSXR_LTTLZ_FRGN M2_CTSRX_LTTPN_FRGN)
16 INDEX(CN M2_CITNM_PK)
17 INDEX(LZ M2_LTZON_PK)
18 INDEX(CT M2_CTS_PK)
19 INDEX(LR M2_LTMTSRG_PK)
SQL> commit;
SQL> execute dbms_outln_edit.refresh_private_outline('PRIV_OUTLN1');
копируем приватный обратно в общий:
SQL> create or replace outline SYS_OUTLINE_081007125758140 from private priv_outln1;
переименовываем и перекидываем в другую группу (для переноса на ПРОД):
SQL> alter outline SYS_OUTLINE_081007125758140 rename to taraandr001;
SQL> alter outline taraandr001 change category to TARAANDR;
и очистим дефолтную группу, дабы не мешалось:
SQL> exec outln_pkg.drop_by_cat('DEFAULT');
проконтроллируем, что остались только нужные:
select * from user_outlines;
далее переносим с ТЕСТа:
exp system/
на ПРОД:
imp system/
и далее на ПРОДе включаем использование:
SQL> alter system set use_stored_outlines = TARAANDR;
используются до следующего рестарта базы.
для постояшного включения при перезагрузке (используется категория DEFAULT):
create or replace trigger enable_outlines_trig
after startup on database
begin
execute immediate('alter system set use_stored_outlines=true');
end;
67536.1 Stored Outline Quick Reference
144194.1 Editing Stored Outlines in Oracle9i - an example
728647.1 How to Transfer Stored Outlines from One Database to Another (9i and above)
560331.1 How to Enable USE_STORED_OUTLINES Permanently
дополнительно:
132547.1 Using Stored Outlines
вторник, 7 июля 2009 г.
Загрузка JAVA приложений в Samsung SGH-E380
Из http://www.mobileforex.ru/help/installhelp/Samsung.php:
ЗАМЕЧАНИЕ!!! Если на какомто этапе телефон ушёл на перезагрузку, то вытаскиваем из него USB шнурок и повторяем с шага 2 всё сначала... Обязательно повторять все операции (вплоть до ввода кодов!!!).
SoftickPPP: http://www.softick.com/ppp/
Java Uploader: http://depositfiles.com/files/9lyxvqek0
Загрузка JAVA-приложений в Samsung через USB кабель для большинства телефонов
Загрузка Java- В телефоне отключаем прокси сервер для приложений. Applications -> Java World -> Settings -> Proxy "Disabled". ВАЖНО! Нужно в настройках ява приложений указать APN - usb, user -1 , password - 1. Без этого не пойдет загрузка.
- Качаем прогу Softick PPP.
- Присоединяем USB к телефону. (заранее ставим весь софт с диска от телефона. Нужен драйвер модема настроенный на USB порт).
- Запускаем установленную прогу Softick PPP. На все сообщения об ошибке что не найден файл USBPORT.dll жмём "отмена" (он нам не нужен и искать его нет смысла, он нужен для PDA).
- В трее появиться иконка от SoftickPPP. Выбираем в её меню пункт Settings->Bluetooth/Serial. Ставим галочку на компорте \Device\ss_mdm0. Жмём "ОК".
- Правой кнопкой на SoftickPPP жмем Активировать PPP.
- Запускаем прогу Java Uploader, суём туда необходимый файл
- Набираем системный код: #*536963#. Жмём С.
- Набираем системный код: #*5737425#. Вибираем в меню PPP пункт USB.
- Набираем системный код: #*5737425#. Вибираем второй пункт меню Последовательное соединение.
- Если всё ок то первая из списка игра в проге Java Uploader будет загружена в телефон.
- Ждём........
- Если надо закачивать дальше, то снова #*5737425# и второй пункт меню последовательное соединение выбираем.
- В конце набираем системный код: #*536961#. Чтоб всё встало наместо.
ЗАМЕЧАНИЕ!!! Если на какомто этапе телефон ушёл на перезагрузку, то вытаскиваем из него USB шнурок и повторяем с шага 2 всё сначала... Обязательно повторять все операции (вплоть до ввода кодов!!!).
SoftickPPP: http://www.softick.com/ppp/
Java Uploader: http://depositfiles.com/files/9lyxvqek0
воскресенье, 31 мая 2009 г.
HP Smart Array Commands
Утилита конфигурирования: hpacucli
- узнать серийник:
ctrl all show - установить target для работы с контроллером:
set target controller serialnumber=P9227AE9STQ0FX - посмотреть общий статус контроллера:
show status - посмотреть статусы по логическим дискам:
show config - подсветить диск (включить синюю лампочку):
pd 1E:1:20 modify led=
1E:1:20 - расположение диска, можно посмотреть через ilo
четверг, 23 апреля 2009 г.
Создание и расширение программного raid5 и xfs
Создадим "диски"
amadis:~# dd if=/dev/zero of=img3 bs=1M count=100
amadis:~# dd if=/dev/zero of=img4 bs=1M count=100
amadis:~# dd if=/dev/zero of=img5 bs=1M count=100
amadis:~# losetup /dev/loop3 img3
amadis:~# losetup /dev/loop4 img4
amadis:~# losetup /dev/loop5 img5
amadis:~# mdadm --create /dev/md3 --level=5 -n 2 /dev/loop3 /dev/loop4
mdadm: array /dev/md3 started.
amadis:~# cat /proc/mdstat
md3 : active (auto-read-only) raid5 loop4[2](S) loop3[0]
102336 blocks level 5, 64k chunk, algorithm 2 [2/1] [U_]
amadis:~# mkfs.xfs /dev/md3
amadis:~# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md3 : active raid5 loop4[1] loop3[0]
102336 blocks level 5, 64k chunk, algorithm 2 [2/2] [UU]
Добавим третий диск в массив
amadis:~# mdadm /dev/md3 -a /dev/loop5
mdadm: added /dev/loop5
amadis:~# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md3 : active raid5 loop5[2](S) loop4[1] loop3[0]
102336 blocks level 5, 64k chunk, algorithm 2 [2/2] [UU]
amadis:~# mdadm --grow /dev/md3 -n 3
mdadm: Need to backup 128K of critical section..
mdadm: ... critical section passed.
Примечание: расширение raid6 работает только на ядре 2.6.21 и выше
amadis:~# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md3 : active raid5 loop5[2] loop4[1] loop3[0]
204672 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
amadis:~# mount /dev/md3 /mnt/
amadis:~# mount
/dev/md3 on /mnt type xfs (rw)
amadis:~# df -h
/dev/md3 95M 4,3M 90M 5% /mnt
Расширим ФС
amadis:~# xfs_growfs /dev/md3
data blocks changed from 25536 to 51168
amadis:~# df -h
/dev/md3 195M 4,5M 190M 3% /mnt
И добавим 4й диск на ходу
amadis:~# dd if=/dev/zero of=img6 bs=1M count=100
amadis:~# losetup -a
/dev/loop3: [0901]:16171160 (img3)
/dev/loop4: [0901]:16171161 (img4)
/dev/loop5: [0901]:16171162 (img5)
amadis:~# losetup /dev/loop6 img6
amadis:~# mdadm /dev/md3 -a /dev/loop6
mdadm: added /dev/loop6
amadis:~# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md3 : active raid5 loop6[3](S) loop5[2] loop4[1] loop3[0]
204672 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
amadis:~# mdadm --grow /dev/md3 -n 4
mdadm: Need to backup 384K of critical section..
mdadm: ... critical section passed.
amadis:~# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md3 : active raid5 loop6[3] loop5[2] loop4[1] loop3[0]
307008 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
amadis:~# df -h
/dev/md3 195M 4,5M 190M 3% /mnt
amadis:~# xfs_growfs /dev/md3
data blocks changed from 51168 to 76752
amadis:~# df -h
/dev/md3 295M 4,6M 290M 2% /mnt
amadis:~# dd if=/dev/zero of=img3 bs=1M count=100
amadis:~# dd if=/dev/zero of=img4 bs=1M count=100
amadis:~# dd if=/dev/zero of=img5 bs=1M count=100
amadis:~# losetup /dev/loop3 img3
amadis:~# losetup /dev/loop4 img4
amadis:~# losetup /dev/loop5 img5
amadis:~# mdadm --create /dev/md3 --level=5 -n 2 /dev/loop3 /dev/loop4
mdadm: array /dev/md3 started.
amadis:~# cat /proc/mdstat
md3 : active (auto-read-only) raid5 loop4[2](S) loop3[0]
102336 blocks level 5, 64k chunk, algorithm 2 [2/1] [U_]
amadis:~# mkfs.xfs /dev/md3
amadis:~# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md3 : active raid5 loop4[1] loop3[0]
102336 blocks level 5, 64k chunk, algorithm 2 [2/2] [UU]
Добавим третий диск в массив
amadis:~# mdadm /dev/md3 -a /dev/loop5
mdadm: added /dev/loop5
amadis:~# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md3 : active raid5 loop5[2](S) loop4[1] loop3[0]
102336 blocks level 5, 64k chunk, algorithm 2 [2/2] [UU]
amadis:~# mdadm --grow /dev/md3 -n 3
mdadm: Need to backup 128K of critical section..
mdadm: ... critical section passed.
Примечание: расширение raid6 работает только на ядре 2.6.21 и выше
amadis:~# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md3 : active raid5 loop5[2] loop4[1] loop3[0]
204672 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
amadis:~# mount /dev/md3 /mnt/
amadis:~# mount
/dev/md3 on /mnt type xfs (rw)
amadis:~# df -h
/dev/md3 95M 4,3M 90M 5% /mnt
Расширим ФС
amadis:~# xfs_growfs /dev/md3
data blocks changed from 25536 to 51168
amadis:~# df -h
/dev/md3 195M 4,5M 190M 3% /mnt
И добавим 4й диск на ходу
amadis:~# dd if=/dev/zero of=img6 bs=1M count=100
amadis:~# losetup -a
/dev/loop3: [0901]:16171160 (img3)
/dev/loop4: [0901]:16171161 (img4)
/dev/loop5: [0901]:16171162 (img5)
amadis:~# losetup /dev/loop6 img6
amadis:~# mdadm /dev/md3 -a /dev/loop6
mdadm: added /dev/loop6
amadis:~# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md3 : active raid5 loop6[3](S) loop5[2] loop4[1] loop3[0]
204672 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
amadis:~# mdadm --grow /dev/md3 -n 4
mdadm: Need to backup 384K of critical section..
mdadm: ... critical section passed.
amadis:~# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md3 : active raid5 loop6[3] loop5[2] loop4[1] loop3[0]
307008 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
amadis:~# df -h
/dev/md3 195M 4,5M 190M 3% /mnt
amadis:~# xfs_growfs /dev/md3
data blocks changed from 51168 to 76752
amadis:~# df -h
/dev/md3 295M 4,6M 290M 2% /mnt
суббота, 18 апреля 2009 г.
Подписаться на:
Комментарии (Atom)
Ярлыки
- 11g (3)
- 9i (3)
- аксон (1)
- институт химии (3)
- интересно (2)
- медицина (1)
- радар детектор (1)
- радардетектор (1)
- api (1)
- auth (1)
- bash (1)
- bind (1)
- bios (1)
- dba (5)
- debian (10)
- development (1)
- dns (1)
- email (2)
- etch (1)
- exim (1)
- extend (1)
- facebook (1)
- ftp (1)
- g1000 (1)
- harddisk (2)
- hardware (1)
- hp (1)
- hp-ux (2)
- iscsi (1)
- iscsitarget (1)
- kpartx (1)
- lenny (3)
- linux (12)
- listener (1)
- lvm (1)
- mail (5)
- msi (1)
- mssql (1)
- named (1)
- ntlm (1)
- online (1)
- oracle (9)
- partprobe (1)
- pi (1)
- pipe (1)
- postfix (2)
- proftpd (1)
- proxy (1)
- python (1)
- python3 (1)
- raid (3)
- raspberry pi (1)
- raspbian (1)
- rss (1)
- san (1)
- screen (1)
- sendmail (2)
- sho me (1)
- shome (1)
- sid (1)
- smart host (1)
- smartarray (1)
- smarthost (1)
- smtp (1)
- squid (1)
- ssh (3)
- su (1)
- sudo (1)
- svn (1)
- sysadmin (5)
- u100 (1)
- unix (3)
- utl_mail (1)
- utl_smtp (1)
- virtualbox (3)
- virtualization (3)
- vmware (2)
- web (1)
- wiki (1)
- zabbix (1)
- zoneminder (1)
Архив блога
- января 2026 (1)
- ноября 2020 (1)
- апреля 2018 (1)
- апреля 2017 (1)
- августа 2016 (1)
- апреля 2016 (1)
- февраля 2015 (1)
- ноября 2014 (1)
- сентября 2014 (1)
- мая 2014 (1)
- марта 2014 (2)
- февраля 2014 (1)
- января 2014 (1)
- ноября 2013 (1)
- июля 2013 (1)
- июня 2013 (1)
- мая 2013 (3)
- апреля 2013 (3)
- марта 2013 (2)
- февраля 2013 (1)
- января 2013 (1)
- октября 2012 (2)
- мая 2012 (1)
- марта 2012 (1)
- июня 2010 (1)
- мая 2010 (1)
- декабря 2009 (1)
- августа 2009 (1)
- июля 2009 (3)
- мая 2009 (1)
- апреля 2009 (3)
- марта 2009 (1)
- февраля 2009 (2)
- июня 2008 (1)
- мая 2008 (1)
- ноября 2007 (2)
- августа 2007 (2)
- июля 2007 (4)