Сам админю voip в операторе связи. У меня таких случаев десятки, максимум который известен мне это 400 тысяч рублей. Подломили астериск одного из операторов в Питере. Это настолько простые вещи, что каждый думает уж я то точно не попадусь. Взлом IP АТС это бизнес. В Пакистане, например, провайдеры не брезгуют таким образом оптимизировать расходы. Стандартный шаблон взлома: админ настраивает астериск, у него не работает, он открывает все что можно, соединение поднимается, звонки пошли, радость победы, идем отмечать.
Для urxvt да. Вот настройки.
В .Xresources добавить строку URxvt.backgroundPixmap: /home/user/urxvt_bgs.png;+0+0:tile
После выполнить команду xrdb -merge .Xresources
Сам файл www.habrastorage.com/?v=urxvtbgs.png он должен быть подогнан по высоте под шрифт.
Цветовая схема, которую я использую, называется solarised
Интересуют отказоустойчивые кластера на астериске, альтернативы астериску, другие проекты с открытым кодом: freeswitch, yate, kamailio. Обзоры различных SOHO IP АТС с астериском внутри, ну и конечно же различные success story в сфере VOIP. Мониторинг качества голоса. Борьба с фродом особенно всевозможные способы обнаружения взлома IP АТС по аномальной активности.
Какой для йоты профит поддерживать QoS для голосового трафика voip операторов (скайпа и прочих)? Возможно они собираются продвигать свои услуги по передачи голоса.
Про low-level python можете еще что-нибудь для расширения кругозора порекомендовать читать? Кроме docs.python.org, там конечно все есть, но это справочник и надо знать, что ищешь.
Уберите WaitExten(7), если клиент затупил, то надо его сразу на секретаря переводить. Не будет он семь секунд в тишине сидеть, трубочку повесит и все. Еще у вас в факсах не хватает обработки ошибок во время приема.
Кстати, вместо: exten => s,1,Answer()
exten => s,2,Background(/home/ulaw/IVR-zapis)
exten => s,3,WaitExten(7)
Сейчас пишут: exten => s,1,Answer()
exten => s,n,Background(/home/ulaw/IVR-zapis)
exten => s,n,WaitExten(7)
Астериск сам умеет рассчитывать приорететы по положению команд в файле.
Подчеркивание в начале — это признак шаблона (pattern). Например XXX — это три икса для астериска, а _XXX — три любые цифры. Когда пользователь нажимает на клавишу, во время команды Background, астериск ищет в текущем контесте, совпадающий номер и переходит на него, если под набранную комбинацию попадает более одного шаблона, то астериск ждет донабора еще одной цифры. Этот таймаут регулируется функцией TIMEOUT(digit)
nose как-то бегло освещен. Тем, кто не сталкивался, nose автоматически собирает тесты из файлов начинающихся на test_, он достаточно умен чтобы заглянуть в папочку tests, если такая присутствует, может показать покрытие кода тестами (модуль coverage). Имеет удобный режим, когда запускаются только не прошедшие в прошлый прогон тесты.
В .Xresources добавить строку
URxvt.backgroundPixmap: /home/user/urxvt_bgs.png;+0+0:tileПосле выполнить команду
xrdb -merge .XresourcesСам файл www.habrastorage.com/?v=urxvtbgs.png он должен быть подогнан по высоте под шрифт.
Цветовая схема, которую я использую, называется solarised
int main[] = {1, 2, 3};>>> dict(a=1, b=2, c=3)
{'a': 1, 'c': 3, 'b': 2}
Из питона3 (что-то портировано и на 2.7)
словарь из пар
>>> list(enumerate('abc'))
[(0, 'a'), (1, 'b'), (2, 'c')]
>>> dict(list(enumerate('abc')))
{0: 'a', 1: 'b', 2: 'c'}
Метод format у строк
>>> "Вес {weight} кг, цена {price} руб".format(weight=1, price=2)'Вес 1 кг, цена 2 руб'
Разделение списков в функциональном стиле.
>>> head, *tail = list(range(5))
>>> head
0
>>> tail
[1, 2, 3, 4]
Вы видимо имеете ввиде vars(object)?
Кстати, вместо:
exten => s,1,Answer()exten => s,2,Background(/home/ulaw/IVR-zapis)
exten => s,3,WaitExten(7)
Сейчас пишут:
exten => s,1,Answer()exten => s,n,Background(/home/ulaw/IVR-zapis)
exten => s,n,WaitExten(7)
Астериск сам умеет рассчитывать приорететы по положению команд в файле.