admin

Січ 212012
 

Собираем библиотеки и сам IPFW:

cd /usr/src/lib/libalias
make -DIPFW2 && make install
cd /usr/src/sbin/ipfw
make -DIPFW2 && make install 
Пересобираем ядро с "options IPFW2" и опциями по вкусу:
options         IPFIREWALL              #firewall
options         IPFIREWALL_VERBOSE      #enable logging to syslogd(8)
options         IPFIREWALL_FORWARD      #enable transparent proxy support
options         IPFIREWALL_VERBOSE_LIMIT=100    #limit verbosity
options         IPFIREWALL_DEFAULT_TO_ACCEPT    #allow everything by default
options         DUMMYNET
options         IPFW2
Выполняем команду для перезапуска сервера 'shutdown -r now'
Січ 152012
 

PHP округление числа

В данной статье будет описано как в PHP округляются числа. В данном случае понадобятся три функции: round – функция округляет до ближайшего целого числа, ceil – функция округляет до ближайшего целого и floor -округляет в меньшую торону.
Рассмотрим по-порядку:

round()

Синтаксис:

float round ( float value [, int precision] )

Первый параметр дробное число. Второй параметр необязательный. В нём указывается точность округления.

Примеры использования и результаты выполнения:

echo round(3.7);     // 4
echo round(3.1);     // 3
echo round(4.5);     // 5
echo round(7.4999);  // 7
echo round(1.46,1);  // 1.5
echo round(1.7384,3);// 1.738
echo round(4939,-1); // 4940
echo round(3.5,1);   // 3.5
echo round(1244,-2); // 1200

Округление числа до сотых:

echo round(2.467,2); // 2.47

Округление числа до целого:

echo round(3.825); // 4

ceil() – округление в большую сторону

Синтаксис:

float ceil ( float value )

Один параметр, которому передаётся дробь. На выходе целое число, округлённое

в большую сторону.

Примеры использования и результаты выполнения:

echo ceil(3.7);  // 4
echo ceil(3.001);// 4
echo ceil(4.5);  // 5
echo ceil(8.0);  // 8

floor() – округление в меньшую сторону

Синтаксис:

float floor(float value)

Имеет один параметр для передачи дроби. Выходит целое число, округлённое

в меньшую сторону, либо попросту остается целое число.

Примеры использования и результаты выполнения:

echo floor(3.99); // 3
echo floor(3.023);// 3
echo floor(4.4);  // 4
echo floor(9.0);  // 9
Січ 142012
 

Восстановление отозванного сертификата openvpn

OpenSSL хранит статус каждого сертификата в ${CATOP}/index.txt, для OpenVPN это easy-rsa/keys/index.txt. На основе этого файла генерируется CRL (certificate revocation list).

Так выгялядят рабочий и отозванный сертификаты:
V       201120070444Z           22      unknown /C=RU/ST=Ru/L=Belgorod/O=FIT/CN=goodboy/emailAddress=admin@fabit.ru
R       201217190136Z   110830061053Z   23      unknown /C=RU/ST=Ru/L=Belgorod/O=FIT/CN=hmmboy/emailAddress=admin@fabit.ru
Для восстановления отозванного сертификата нужно отредактировать это файл. Заменить в строке соответствующей отозванному сетификату R на V и удалить третий столбец (это дата отзыва). Колонки разеделены табуляций, если нарушить это разделение, то можно похерить CA. Поэтому никаких пробелов и MS Word’ов.
После сохранения изменений нужно перегенерировать CRL. Возможно есть более гуманные способы, но приведенный ниже занял меньше всего времени по его поиску и возможности повторого использования. Скрипт revoke-full перегененрирует CRL, скопируем его в crl-regen и закомментируем строки ответственные за отзыв сертификата.
#!/bin/bash
CRL="crl.pem"
RT="revoke-test.pem"

#if [ $# -ne 1 ]; then
#    echo "usage: revoke-full <cert-name-base>";
#    exit 1
#fi

if [ "$KEY_DIR" ]; then
    cd "$KEY_DIR"
    rm -f "$RT" 

    # set defaults
    export KEY_CN=""
    export KEY_OU=""
    export KEY_NAME=""

#    # revoke key and generate a new CRL
#    $OPENSSL ca -revoke "$1.crt" -config "$KEY_CONFIG" 

    # generate a new CRL -- try to be compatible with
    # intermediate PKIs
    $OPENSSL ca -gencrl -out "$CRL" -config "$KEY_CONFIG"
    if [ -e export-ca.crt ]; then
        cat export-ca.crt "$CRL" >"$RT"
    else
        cat ca.crt "$CRL" >"$RT"
    fi

#    # verify the revocation
#    $OPENSSL verify -CAfile "$RT" -crl_check "$1.crt"
else
    echo 'Please source the vars script first (i.e. "source ./vars")'
    echo 'Make sure you have edited it to reflect your configuration.'
fi
Далее через скрипт list-crl можно поглядеть на отсутствие сертификата в списке отозванных. Так же помним о необходимости установить переменные среды через vars.
Січ 102012
 

Индикатор [ALARM] (ТРЕВОГА) мигает оранжевым цветом

При возникновении ошибки принтера индикатор [ALARM] (ТРЕВОГА) мигает оранжевым цветом так, как показано ниже. Число миганий индикатора указывает на тип ошибки. Подсчитайте, сколько раз мигнул индикатор, и исправьте соответствующую ошибку.

 
Причина Действие
Мигает два раза. В принтере закончилась бумага. / Бумага не подается. Повторно загрузите бумагу в устройство автоподачи и нажмите кнопку[RESUME/CANCEL] (ВОЗОБНОВИТЬ/ОТМЕНА).
Мигает три раза. Застревание бумаги. Возможно, в принтере застряла бумага. Удалите застрявшую бумагу, правильно загрузите бумагу в принтер и нажмите кнопку[RESUME/CANCEL] (ВОЗОБНОВИТЬ/ОТМЕНА).
Мигает четыре раза. Чернила закончились. Чернила закончились.Замените этот картридж и закройте крышку.

Если печать не закончена и вы хотите ее продолжить, нажмите и не отпускайте не менее 5 секунд клавишу [RESUME] (ВОЗОБНОВИТЬ), оставив установленным этот картридж. После этого печать может продолжаться при закончившихся чернилах.

Функция определения оставшегося запаса чернил будет отключена.

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

Мигает пять раз. Не удается определить картридж FINE (FINE Cartridge). Возможны следующие причины.Возможно, картридж FINE (FINE Cartridge) неправильно установлен.

Возможно, картридж FINE (FINE Cartridge) несовместим с данным принтером.

Установите подходящий картридж FINE (FINE Cartridge). Если линии печатаются со смещением или присутствуют другие недостатки печати, выполните выравнивание печатающих головок.

Мигает семь раз. Картридж FINE (FINE Cartridge) установлен в неправильное гнездо. Проверьте, что картридж FINE (FINE Cartridges) установлен на соответствующее место.
Мигает восемь раз. Контейнер для отработанных чернил почти полон. Принтер имеет встроенный контейнер для чернил, использованных, например, во время очистки печатающей головки.Восемь миганий свидетельствуют о том, что этот контейнер почти заполнен.

Нажмите кнопку [RESUME/CANCEL] (ВОЗОБНОВИТЬ/ОТМЕНА), чтобы сбросить ошибку и продолжить печать.

Обратитесь в центр технического обслуживания Canon до того, как контейнер для отработанных чернил полностью заполнится (одну из деталей принтера потребуется заменить).

Важно

Компания Canon рекомендует обращаться в центр технического обслуживания сразу после возникновения этой ошибки. После окончательного заполнения контейнера для отработанных чернил печать станет невозможной до тех пор, пока контейнер не будет заменен.

Мигает четырнадцать раз. Не удается распознать картридж FINE (FINE Cartridge). Возможно, картридж FINE (FINE Cartridge) несовместим с данным принтером.Установите подходящий картридж FINE (FINE Cartridge). Если линии печатаются со смещением или присутствуют другие недостатки печати, выполните выравнивание печатающих головок.
Мигает пятнадцать раз. Не удается распознать картридж FINE (FINE Cartridge). Возможны следующие причины.Возможно, картридж FINE (FINE Cartridge) неправильно установлен.

Возможно, картридж FINE (FINE Cartridge) несовместим с данным принтером.

Установите подходящий картридж FINE (FINE Cartridge). Если линии печатаются со смещением или присутствуют другие недостатки печати, произведите выравнивание печатающих головок.

Мигает шестнадцать раз. Невозможно определить уровень чернил. Возможно, чернила закончились.Функция определения оставшегося запаса чернил будет отключена, поскольку не удается правильно определить запас чернил.

Чтобы продолжить печать без этой функции, нажмите и не отпускайте не менее 5 секунд клавишу [RESUME] (ВОЗОБНОВИТЬ).

Для достижения оптимального качества компания Canon рекомендует использовать новые оригинальные картриджи Canon.

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

 

 Индикаторы [POWER] (ПИТАНИЕ) и [ALARM] (ТРЕВОГА) мигают зеленым и оранжевым цветом поочередно

Индикаторы [POWER] (ПИТАНИЕ) и [ALARM] (ТРЕВОГА) мигают поочередно, как показано на рисунке ниже.

Отсоедините кабель принтера от принтера, а затем выключите питание принтера и отсоедините его от сети электропитания. Через некоторое время снова подсоедините принтер к сети питания и включите его.

Если неполадка не устранена, обратитесь в сервисный центр Canon.

Гру 292011
 

Учимся использовать screen

 

Вы залогинились на ваш удаленный сервер через ssh, радостно стучите по клавиатуре, делая свои какие-то админские дела и опа! Символы перестали печатться и вывалилось то самое сообщение, которое, порой, вызывает непреодолимое желание разбить клавиатуру. Connection closed. Знакомая ситуация? Да-да, ваша сессия только что аварийно оборвалась и все придется делать заново… Этого можно избежать, если использовать screen. Он не только позволит сохранить вашу сессию в целости и сохранности, но еще и позволит держать открытыми несколько сессий в одном окошке терминала

Что такое screen?
Сначала посмотрим man-страницу: “Screen – это полноэкранный оконный менеджер, который позволяет разделить физический терминал между несколькими независимыми процессами (обычно интерактивными облочками)”.
У screen есть несколько отличительных особенностей, которые могут сильно помочь при выполнении задач на удаленных серверах через ssh. Я расскажу о трех, самых часто используемых мной фичах: многооконность, логирование и сессии. За более подробными деталями придется обратиться к man-странице.

Установка screen
Скорее всего, screen уже есть в вашей системе. Проверить это можно командой

$ which screen

Если which не дал результатов, то установите screen при помощи пакетного менеджера вашей системы. На моих серверах, в основном, CentOS и Debian, поэтому я ставлю screen так:

# yum install screen (для CentOS)
# apt-get install screen (для Debian)

Попадается и FreeBSD, в этом случае я использую порты:

# cd /usr/ports/sysutils/screen
make install clean

Использование screen
Screen запускается из командной строки также, как и любое приложение 🙂

$ screen

Вы можете получить сообщение о том, что screen запущен, а можете и не получить… Зависит от вашей системы. Если вы не получили сообщения, то вы можете подумать, что ничего не произошло. Однако это не так. Вы уже внутри терминала, запущенного в screen. Это нормальный полнофункциональный шелл, за исключением нескольких специальных команд. Screen использует клавиатурную комбинацию Ctrl+A для подачи команд терминалам внутри себя. Попробуйте нажать Ctrl+A, а затем ?
Вы увидите примерно следующее:

Screen key bindings, page 1 of 2.

Command key: ^A Literal ^A: a

break ^B b lockscreen ^X x reset Z
clear C log H screen ^C c
colon : login L select ” ‘
copy ^[ [ meta a silence _
detach ^D d monitor M split S
digraph ^V next ^@ ^N sp n suspend ^Z z
displays * number N time ^T t
fit F only Q title A
flow ^F f other ^A vbell ^G
focus ^I pow_break B version v
help ? pow_detach D width W
history { } prev ^P p ^? windows ^W w
info i readbuf < wrap ^R r
kill K redisplay ^L l writebuf >
lastmsg ^M m remove X xoff ^S s
license , removebuf = xon ^Q q
[Press Space for next page; Return to end.]

Screen воспринимает командные клавиатурные комбинации после нажатия Ctrl+A. Вы можете изменить это поведение при помощи конфиг-файла $HOME/.screenrc

Многооконность
Screen, как и большинство оконных менеджеров, поддерживает работу с несколькими окнами. Это очень удобно для выполнения параллельных задач без открытия новых ssh-сессий. Например, у меня постоянно открыто четыре или пять сессий с несколькими задачами в каждой. Раньше мне бы пришлось открыть порядка 15 терминалов, логинов, сессий.. Утомительно, не так ли? Эти неудобства полностью решает screen. Теперь я вполне могу обойтись одним терминалом.

Новое окно открывается комбинацией клавиш “Ctrl+a c”. После нажатия вы увидите новый терминал с вашим приглашением в том же окне. При этом предыдущие окна также продолжают работать. Давайте попробуем: запустите screen и в нем top

Mem: 506028K av, 500596K used, 5432K free,
0K shrd, 11752K buff
Swap: 1020116K av, 53320K used, 966796K free
393660K cached

PID USER PRI NI SIZE RSS SHARE STAT %CPU %ME
6538 root 25 0 1892 1892 596 R 49.1 0.3
6614 root 16 0 1544 1544 668 S 28.3 0.3
7198 admin 15 0 1108 1104 828 R 5.6 0.2

Теперь откройте новое окно, нажав “Ctrl+a c”

[boombick@server ] $

Вернитесь обратно, нажав Ctrl+a n

Mem: 506028K av, 500588K used, 5440K free,
0K shrd, 11960K buff
Swap: 1020116K av, 53320K used, 966796K free
392220K cached

PID USER PRI NI SIZE RSS SHARE STAT %CPU %ME
6538 root 25 0 1892 1892 596 R 48.3 0.3
6614 root 15 0 1544 1544 668 S 30.7 0.3

top остался в прежнем состоянии. Вы можете создать несколько окон и переключаться между ними используя Ctrl+a n для переключения на следующеее окно и Ctrl+a p для переключения на предыдущее. При этом каждый запущенный процесс останется в рабочем состоянии.

Отключаемся от screen
Есть два способа отключиться от screen: первый – это просто разлогиниться. Вы можете использовать клавиатурную комбинацию Ctrl+a K или просто набрать exit. Этот способ “убьет” текущее окно, если у вас их несколько или совсем остановит screen.
Второй способ заключается в отсоединении. Этот способ оставляет текущий процесс запущенным и просто отключает вас от терминала. Например, если вы через ssh-сессию запускаете какой-то очень длительный процесс, не требующий вашего внимания, то вы можете просто отключиться от screen при помощи Ctrl+a d. Это вернет вас обратно в исходную оболочку. Все процессы, запучшенные в screen, при этом остаются работающими и вы можете подключиться к ним позже.

Подключение к сессии
Вы компилируете большую программу на удаленном сервере, используя screen. И конечно же, по законам Мэрфи, соединение обрывается по независящим от вас причинам. Не стоит впадать в панику, screen все сохранил 🙂 Просто соединитесь с сервером еще раз и посмотрите запущеные под screen процессы при помощи

[root@server root]# screen -ls
There are screens on:
31619.ttyp2.server (Detached)
4731.ttyp2.server (Detached)
2 Sockets in /tmp/screens/S-root.

В этом примере запущено две screen-сессии. Для подключения к нужной из них используйте команду

[root@server root]#screen -r 31619.ttyp2.server

Просто используйте screen с флагом r и именем сессии для повторного подключения. Это очень удобно. Можно, например, запустить какой-то длительный процесс на работе и, вернувшись домой, продолжить контроль за его выполнением.

Логирование
Мне кажется очень важным порой сохранять полный лог своих действий. К счастью, screen легко с этим справляется. Просто активируйте логирование нажатием Ctrl+a H. Screen будет продолжать логирование на протяжении всего процесса работы. Бывает очень полезно вернуться назад и посмотреть порядок необходимых действий.

И еще немного…
Screen может вести мониторинг активности окна. Если вы качаете что-то большое, компилируете программу или просто выполняете длительный процесс, вы можете долгое время наблюдать пустой терминал без признаков активности. А процесс, тем временем, продолжает выполняться. Или, наоборот, смотреть на поток отладочной информации, ожидая окончания процесса. Для начала слежения перейдите в терминал, который вы хотите наблюдать и нажмите Ctrl+a M для слежения за активностью (сработает при появлении новой информации) или Ctrl+a _ для слежения за бездействием (сработает при прекращении поступления информации в терминал). Затем вы можете спокойно переключиться в другое окно или создать новое. При наступлении события, screen предупредит вас об этом сообщением с номером окна в заголовке терминала. Для быстрого переключения в это окно используйте Ctrl+a ” (это символ кавычки). Вы увидите список всех активных окон на данный момент. Для перехода в нужное можно использовать стрелки или просто набрать номер нужного окна. Для прекращения наблюдения перейдите в нужное окно и отмените мониторинг той же командой. Например, для прекращения наблюдения за активностью нажмите Ctrl+a M

 

Информация взята http://boombick.org/blog/posts/22