Простенький пример использования Moo

Неожиданно выяснил, что документации по модулю Moo, делающему возможным «ООП с человеческим лицом» в Perl практически нет, а та, что есть — вообще почему-то платная (?! я сам был удивлён весьма).

Для того, чтобы хоть немного ликвидировать столь странный «пробел» я написал по итогам нескольких часов «изучения» Moo маленький пример, которым и хочу с вами, мои дорогие читатели, поделиться:

Читать дальше →

Elastix съедает всю память

Есть у Elastix особенность, периодически память заканчивается и asterisk начинает тормозить. Для очистки памяти добавьте в cron задание:
echo 3 > /proc/sys/vm/drop_caches

Периодичность в зависимости от скорости заполнения памяти

Уведомления о пропущенных вызовах в Asterisk (Elastix 2.4)

  • Asterisk
Озадачился простейшей вроде задачей, уведомлением о пропущенных звонках. Как оказалось «из коробки» в Elastix не выберешь даже просто пропущенные вызовы. Все потому, что все вызовы попадают в очередь, где сразу помечаются как отвеченные. Так, что если вам нужно выбрать пропущенные вызовы, можете переделать какой-то из отчетов добавив туда фильтрацию такого вида:
dcontext =  'ext-queues' and dstchannel = ''

Если вам нужно уведомление о пропущенных вызовах в электронной почте в реальном режиме времени, то добавим поиск параметра dstchannel = '' при отбое звонка. Для этого добавим в начало файла /etc/asterisk/extensions_override_elastix.conf пару строк:
Читать дальше →

Ubuntu 14.04 LTS, старые компьютеры и старые видеокарты

… Скорей всего неофитам этого не понять. Но были времена, когда я мечтал о Hyperthreading P4 3GHz c видеокартой Ati radeon 9800 (что характерно с необходимостью доп. питания). И вот пару дней назад мы с мужиками вернулись с холодного склада, откуда вилами выкидывали старое барахло. И вот она у меня на столе. Когда то супер компьютер, сейчас — не сказать что бы очень.
Ну чтож, посмотрим, можно ли это куда-нибудь применить…

Читать дальше →

Генерация случайного числа в диапазоне от min до max

  • BASH

min=121
max=257
v=$(( min + ($RANDOM*(max-min))>>15 ))


Работает по принципу:

v=min+rnd/32768*(max-min)

Но вместо деления используются побитовые сдвиги.
Недостаток неочевиден, но он есть: v никогда не сможет быть равным max, поскольку в действительности $RANDOM принимает значения от 0 до 32767, а v=max только если бы $RANDOM=32768. Причём если зазор между max и min значительный, то кроме самого max не смогут быть «достигнуты» и зачения меньше max в ближайшей окрестности.
Тем не менее, это самый простой и самый эффективный генератор случайных чисел в заданном диапазоне, недостатки которого, как водится, напрямую вытекают из его достоинств, а уж вам выбирать, что важнее. Для диапазонов, по размаху значительно меньше 32768, погрешность не должна быть критична.

Как переименовать сертификат в Mikrotik.

Столкнулся с «особенностью» свежих релизов RouterOS, через веб-интерфейс и winbox нельзя переименовывать импортированные сертификаты. На форуме техподдержки написали про такой костыль:

1. Открываем CLI
/certificate print

2.
/certificate edit N

3. Далее нужно написать «name», именно так, а не новое имя сертификата.
value-name: name

4. Откроется редактор, в нем исправляем имя и жмем CRTL-O для сохранения.

UPD
В версии 6.17 этого бага уже нет.

Скажи мне "да" или "нет" и дай мне свой ответ! :)

  • BASH
Поскольку люди, которые на BASH'е пишут многословно и ужасно, уже откровенно (достали), предлагаю свой вариант элементарной функции чтения односложного ответа пользователя.

read_yn () {
 local yn dflt='Y'  
 if [[ ${#1} == 1 && ${1^} =~ ^[YN]$ ]]; then   
  shift           
  dflt=${1^}
 fi
 while :; do
  echo -en "$@"
  read yn; yn=${yn:0:1}; yn=${yn^}
  if [[ $yn =~ ^[NY]$ || ! $yn ]]; then
   yn=${yn:-$dflt}
   break
  fi
 done
 echo -n $yn
 [[ $yn == 'Y' ]]
 return $?
}


Большинство людей почему-то думают, что BASH-это какой-то примитивный язык, из которого можно только «командочки запускать», нечто вроде продвинутого языка командных сценариев DOS. Безусловно, право каждого думать как ему угодно и каждый сам себе злой Буратино, поскольку как правило хреново написанный код на BASH не переживает просмотра первым же вменяемым Perl-программистом, поскольку у того просто ломается мозг и он всё переписывает по-своему. Но хотя бы ради мира на Земле — не ленитесь, читайте man bash перед сном и во время ритуальной чистки зубов. Это очень помогает не писать какую-то «ребячливую» чушь вместо кода на добротном, пусть и специализированном, языке программирования.

Конфиг SQUID для корпоративной сети

Как это часто бывает в крупных организациях, у нас тоже зарплату получают странные люди, которые следят за тем, кто на какие сайты ходитЬ. Конкретно в нашей организации обойти этих людей довольно просто, используя pptp-туннель. Но туннель, как водится, хилый и безжизненный, а корпоративная сетка… в общем тоже хилая в расчёте на одного сотрудника, но всё же пожирнее. И выход валидный из неё — только через прокси, считающий и протоколирующий все ваши заходы во вконтакт к Дурову в гости.
Как-то сама собой приходит в голову задача: настроить SQUID так, чтобы все сайты, кроме потенциально «подозрительных» с точки зрения наших безопасников проксировались выше на корпоративную «считалку», а все сайты, которые не хотелось бы светить в чужой статистике — роутились напрямую через PPTP-туннель.
Собственно, here is my config. Это явно не плод мощного умственного труда и в общем хотелось бы в нём видеть некие фичи наподобие переключения режимов «туннель доступен/туннель упал», но в общем это уже первая итерация, от которой можно отталкиваться в процессе эволюции:

http_access allow all
http_port 3128

coredump_dir /var/spool/squid3
refresh_pattern ^ftp:       1440    20% 10080
refresh_pattern ^gopher:    1440    0%  1440
refresh_pattern -i (/cgi-bin/|\?) 0 0%  0
refresh_pattern (Release|Packages(.gz)*)$      0       20%     2880
refresh_pattern .       0   20% 4320

cache_peer proxy.corp.ru parent 8080 0 no-query default login=MY_CORP_LOGIN:MY_CORP_PASS
acl lan_dest dst 127.0.0.0/8 172.0.0.0/8 10.0.0.0/8 192.168.0.0/16
acl corp_doms dstdom_regex ^(.+\.)?corp.ru$ ^(.+\.)?my.local.dom$
acl my_sites dstdomain "/etc/squid3/my_sites.acl"

never_direct deny lan_dest
never_direct deny corp_doms
never_direct deny my_sites

never_direct allow all


Соответственно, в /etc/squid3/my_sites.acl что-то вроде:

.velomania.ru
.kino35mm.ru
.hh.ru

Схема для связи объектов в каталоге

  • LDAP
Предлагаю вашему вниманию валидную схему для указания ссылок из объекта на другие объекты (просьба не путать с labeledURI и seeAlso :)).
Соответствующее пространство OID'ов зарегистрировано на моё имя, так что пользуйтесь на здоровье.

dn: cn=link,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: link
olcAttributeTypes: ( 1.3.6.1.4.1.37344.125.11 NAME 'linkedTo' DESC 'DN of another object in catalog which is linked to this entry' SUP distinguishedName )
olcObjectClasses: ( 1.3.6.1.4.1.37344.125.1 NAME 'link' SUP top AUXILIARY MUST ( linkedTo ) )


Читать дальше →

Компиляция OpenLDAP: хватит спотыкаться!

  • LDAP
После того, как я уже в 10-й раз споткнулся об одну и ту же дурацкую проблему, решил наконец записать себе на память и другим на заметку:
При компиляции OpenLDAP с оверлеями и бэкендами в виде модулей недостаточно просто сказать --enable-smth=mod, нужно до этого обязательно упомянуть --enable-modules=yes. Иначе вы просто замучаетесь искать свои модули в логе установки (то есть в сохранённом выводе make install): их там не будет.
Я не знаю, зачем разработчики подложили простым пользователям такую жирную свинью, но забывать о том, что сие животное в самый неподходящий момент может броситься к вам под колёса — совершенно не стоит.

Архивация ВМ в HYPER-V на MS Windows 2012R2

Как ни хороша виртуалка, а делать бэкапы надо. Могут люди накосячить, может железо подохнуть, может вообще случиться все что угодно. А за потерянные данные голову начальство будет снимать с админа. Потому развернув HYPER-V на новой точилке, озадачился
Читать дальше →

Минидистрибутив Centos, мониторим Kodeks-WEB через Monitd

  • Linux
Нравиться мне Ubuntu, но захотелось большего. Шучу.
В общем дело было так: навернул на Hyper-V 2012 линуксовый сервак на CentOS 6.4, исходником для установки был образ CentOS-6.4-x86_64-minimal.iso Накатил на это дело Kodeks-WEB, настроил обновления и прочие рюшечки, сервак в общем готов к бою,
Читать дальше →

Велосипед своими руками или боремся с зависающими точками AP

Столкнулся замечательными Wi-fi точками от Ubiquiti. Все хорошо, но иногда они почему-то подвисают и перестают принимать wi-fi клиентов. При этом ethernet продолжает работать, а в dmesg выдается сообщение «wifi0: transmit timed out». Лечится только перезагрузкой точки. Проблема известная, разработчики не теряют надежды ее победить, но пока вот так…
Читать дальше →

Новые ноутбуки Asus

Вчера настраивал клиенту новые ноутбуки Asus, только из магазина. У всех 7 штук были дефекты сборки, в основном где-то не защелкнутые клипсы, но на одном было вот так:

Новые ноутбуки Asus

На других клавиатура при нажатии продавливается или просто выгнута вверх. Это очень печально, раньше считал продукцию Asus качественной.

Настройка EIGRP на Cisco часть 8 [подготовка к CCNP]

  • Cisco

Настройка EIGRP на Cisco часть 7 [подготовка к CCNP]

  • Cisco

7. Фильтрация и суммирование в eigrp


Это седьмая часть моей статьи по настройке EIGRP в рамках экзамена CCNP
Перейти к первой части
Перейти ко второй части
Перейти к третьей части
Перейти к четвертой части
Перейти к пятой части
Перейти к шестой части


Читать дальше →

Настройка EIGRP на Cisco часть 6 [подготовка к CCNP]

  • Cisco

6. Дополнительные настройки eigrp


Это шестая часть моей статьи по настройке EIGRP в рамках экзамена CCNP
Перейти к первой части
Перейти ко второй части
Перейти к третьей части
Перейти к четвертой части
Перейти к пятой части


Читать дальше →

Настройка EIGRP на Cisco часть 5 [подготовка к CCNP]

  • Cisco

5. Перераспределение маршрутов и анонсирование маршрута по умолчанию


Это пятая часть моей статьи по настройке EIGRP в рамках экзамена CCNP Route.
Перейти к первой части
Перейти ко второй части
Перейти к третьей части
Перейти к четвертой части


Читать дальше →

Настройка EIGRP на Cisco часть 4 [подготовка к CCNP]

  • Cisco

4. Настройка среды Frame Relay и маршрутизации в зоне 200


Это четвертая часть моей статьи по настройке EIGRP в рамках экзамена CCNP Route.

Перейти к первой части
Перейти ко второй части
Перейти к третьей части


Читать дальше →