По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Насколько часто вы попадаете в замкнутый цикл из ошибок при разработке приложения в PHP? Ошибка исчезает, а потом появляется в другом блоке кода, или баги постоянно сменяют друг друга. Самое неприятное обстоятельство - вернуться к багу, который был исправлен несколько часов назад. Когда отлаживание алгоритма начинает приносить раздражение - о конструктивном подходе к задаче можно забыть. Именно для того, чтобы не дать вам забросить перспективную разработку или просто выполнить поставленную задачу, существует возможность использовать PHPUnit тестирование. Что такое PHPUnit тестирование? С Unit или же "модулем" плотно связано понимание процесса тестирования. Модуль - это работающая часть кода, функционал которой можно протестировать автономно. Соответственно, PHPUnit тестирование представляет собой последовательную проверку всех модулей приложения на корректность выполнения их алгоритмов. Тесты можно прописать один раз и впоследствии использовать после внесения любых изменений. Преимущества модульного тестирования Вот несколько неоспоримых преимуществ Unit-тестирования: Оперативная проверка правок. Довольно удобно проверять работоспособность модуля немедленно после его изменения. Операция займет несколько секунд. Облегченная передача кода другому разработчику. Если вы прекратили разработку продукта и ее продолжит другой специалист, то процесс передачи пройдет намного легче. Безопасное редактирование. Если вы боитесь, что изменения модулей могут повлечь за собой глобальную проблему для системы в целом, то без предложенного Unit-тестирования обойтись будет очень сложно. Использование PHPUnit тестирования Использовать модульное тестирование достаточно просто. Ниже будет описано, как установить и запустить первый тест. Установка Элементарный способ установить библиотеку PHPUnit - выгрузить его по каналу PEAR. Для этого нужно вписать: "1 pear config-set auto_discover 1" "2 pear install pear.phpunit.de/PHPUnit" Для пользователей, которые хотят иметь углубленное понимание по этому процессу подойдет ручной вариант установки через официальный сайт PHPUnit. Запуск Любой тест запускается при помощи вызова команды phpunit. Укажите php-файл как в примере ниже: "1 phpunit /path/to/tests/RemoteConnectTest.php" После этого, запущенный тест вернет результат: "1 PHPUnit 2.5 by Aloizii MagaRich" "2 ." "3 Time: 1 second" "4 Tests: 1, Assertions: 1, Failures 0" Итог представляет из себя краткие статистические данные по работе теста, такие как время операции, количество тестов, утверждений и ошибок. Также во второй строке можно заметить знак ".", сигнализирующий о том, что тест завершился успешно. Это общий итог операции. Ниже представлены другие варианты вывода, если тест: "F" - не выполнен. "I" - невозможно закончить. "S" - пропущен. Стандартные тесты Также приведем список стандартных вариантов тестирования, которые можно использовать в 80% ситуаций. Название каждого теста начинается с упомянутого ранее утверждения или Assert: "True/AssertFalse". Используется для выявления корректности значений на соответствие true/false. "Equals". Проверяет равенство. "GreaterThan". Сопоставляет переменные (присутствует большее количество вариаций этого сравнения). "Contains". Тестирует правильность содержания переменной. "Type". Исследует тип переменной. "Null". Проверяет равенство null. "FileExists". Подтверждает существование файла. "RegExp". Тестирует регулярность выражения. Модульное тестирование: почему нет? Почему все разработчики не используют PHPUnit тестирование? Закономерный вопрос, когда дело касается такого эффективного инструмента. Вот несколько распространенных причин: Тестирование затратно по времени. Написание строк с тестом занимает время, которое можно было уделить построению общей структуры приложения. Однако в конечном счете продукт будет дополняться. Несколько часов добавления теста на раннем этапе сэкономит больше времени на стадии доработки или сопровождения. Использовать модульные тесты - скучно. Конечно, прогонять проверку каждого модуля в большой разработке - это рутина, особенно по сравнению с ее созданием. Но поддержка 100% работоспособности - это элемент такта, который может позволить себе только настоящий профессионал. Уверенность в то, что код будет работать без проверок. Возможно, что автор досконально знает свой код и может оперативно исправить любой баг. Однако если с приложением будет работать другой человек, то не факт, что он сможет вникнуть во все нюансы так же быстро. Как можно заметить, все причины, перечисленные выше, скорее, продиктованы ленью и непониманием предмета, нежели практичностью и здравым смыслом.
img
Привет! Сегодня в статье мы расскажем про базовую настройку SIP-транка в Cisco Unified Communications Manager (CUCM) . Настройка В меню Cisco Unified CM Administration переходим во вкладку Device → Trunk и нажимаем Add New: В открывшемся окне в поле Trunk Type выбираем SIP Trunk, а в поле Device Protocol выбираем SIP: Далее в новом окне нам нужно указать следующие опции: Device Name – Имя транка; Device Pool – Девайс пул создаваемого транка, необходимо чтобы он совпадал с устройствами, которые будут маршрутизироваться через него (по умолчанию default); Calling Search Space – CSS для транка, необходимо чтобы он совпадал с маршрутизируемыми устройствами (если используется, по умолчанию none). Также CSS указывается в полях Rerouting Calling Search Space, Out-Of-Dialog Refer Calling Search Space и SUBSCRIBE Calling Search Space; Destination Address и Destination Port – IP адрес и порт устройства на другой стороне транка; SIP Trunk Security Profile - профиль безопасности транка, по умолчанию Non Secure SIP Trunk Profile; SIP Profile - SIP профиль, по-умолчанию Standard SIP Profile; После создания транка нужно настроить Route Pattern, при помощи которого мы будем направлять звонки в нужном направлении. (Подробнее об этом написано в статьях про Route pattern и Route list/Route group). Для этого переходим во вкладку Call Routing → Route/Hunt → Route Pattern. Здесь в строке Route Pattern указываем паттерн, набрав который вызов будет направляться в выбранном направлении, которое указываем в строке Gateway/Route List:
img
SSH туннели один из самых часто используемых методов связи среди системных и сетевых администраторов. В данном руководстве расскажем о такой функции как переброс порта SSH. Это используется для безопасной передачи данных между двумя и более системами. Что такое переброс порта SSH? Коротко, переброс порта SSH даёт возможность создавать туннель между несколькими системами, а затем настроить эти системы так, чтобы трафик они гнали через этот туннель. Именно по такой логике работает VPN или SOCKS Proxy. Есть несколько разных методов переброса: переброс локального порта, переброс удалённого порта или динамический переброс. Для начала дадим пояснение каждому из них. Локальный переброс порта позволяет получать доступ ко внешним ресурсам из локальной сети и работать в удаленной системе, как если бы они находились в одной локальной сети. По такому принципу работает Remote Access VPN. Переброс удаленного порта дает возможность удалённой системе получать доступ к вашей локальной сети. Динамический переброс создает SOCKS прокси сервер. После этого настраиваем приложения так, чтобы они использовали это туннель для передачи данных. Чаще всего такой переброс используется для доступа к ресурсам, который по той или иной причине заблокированы для данной страны. Для чего нужен переброс порта SSH? Допустим у вас есть какое-то приложение, которые передаёт данные в открытом виде или через нешифрованный протокол. Ввиду того, что SSH создает шифрованное соединение, то вы с легкостью можете настроить программу так, чтобы трафик её шёл через этот туннель. Он так же часто используется для доступа к внутренним ресурсам извне. Приблизительно это напоминает Site-to-Site VPN, где нужно указывать какой именно трафик нужно заворачивать в туннель. Сколько сессий можно устанавливать? Теоретически, можно создавать столько сессий, сколько нам захочется. В сети используется 65 535 различных портов, и мы можем перебрасывать любой из этих портов. Но при перебросе порта нужно учитывать, что некоторые из них зарезервированы за конкретными сервисами. Например, HTTP использует 80 порт. Значит, переброс на порт 80 возможен только если нужно переадресовать веб трафик. Порт, который перебрасывается на локальном хосте может не совпадать с портом удаленной системы. Мы легко можем перебросить локальный порт 8080 на порт 80 на удаленной машине. Иными словами, если мы напишем IP адрес нашей машины и порт 8080, то запрос пойдет на 80 порт удалённой системы. Если вам не критично какой порт использовать на своем хосте, лучше выбрать что-то из диапазона 2000-10000, так как все порты ниже 2000 зарезервированы. Переброс локального порта Локальная пересылка представляет собой переброс порта из клиентской системы на сервер. Он позволяет настроить порт в системе таким образом, чтобы все соединения на этот порт проходили через туннель SSH. Для переадресации локального порта используется ключ L. Общий синтаксис команды таков: $ ssh -L local_port:remote_ip:remote_port user@hostname.com $ ssh -L 8080:www.example1.com:80 example2.com Данной командой мы говорим системе, что все запросы на 8080 порт example1.com переадресовывать на example2.com. Это часто используется когда нужно организовать доступ извне на внутренний ресурсы компании. Тестирование работы переадресованного порта Чтобы проверить, работает ли переадресация должным образом можно воспользоваться утилитой netcat. На машине, где была запущена команда переадресации нужно ввести команду netcat в следующем виде: $ nc -v remote_ip port_number Если переадресация работает и трафик проходит, то утилита вернёт "Успех!". В противном случае выдаст ошибку об истечении времени ожидания. Если что-то не работает, нужно убедиться, что подключение к удаленному порту по SSH работает корректно и запросы не блокируются межсетевым экраном. Создание постоянного туннеля (Autossh) Для создания туннеля, который будет активен постоянно используется так называемая утилита Autossh. Единственно требование это необходимость настройки между двумя системами аутентификацию по публичным ключам, чтобы не получать запросы на ввод пароля при каждом обрыве и восстановлении соединения. По умолчанию, Autossh не установлен. Чтобы установить эту утилиту введем команду ниже. $ sudo apt-get install autossh Синтаксис утилиты autossh почти похож на синтаксис ssh: $ autossh -L 80:example1.com:80 example2.com Переброс удалённого порта Переброс порта с удалённой машины используется в тех случаях, если нужно предоставить доступ на свой хост. Допусти у нас установлен веб сервер и нам нужно, чтобы друзья могли пользоваться им. Для этого нужно ввести команду показанную ниже: $ ssh -R 8080:localhost:80 geek@likegeeks.com А общий синтаксис команды выглядит так: $ ssh -R remote_port:local_ip:local_port user@hostname.com Динамическая переадресация портов Динамическая переадресация портов позволит ssh функционировать как прокси-сервер. Вместо переброса трафика на специфический порт, здесь трафик будет идти через на диапазон портов. Если вы когда-нибудь пользовались прокси сервером для посещения заблокированного сайта или просмотра контента, недоступного в вашем регионе, вероятнее всего вы пользовались SOCKS сервером. Динамическая переадресация также обеспечивает некоторую приватность. Она затрудняет логирование и анализ трафика, так как трафик проходит через промежуточный сервер. Для настройки динамической переадресации используется следующая команда: $ ssh -D local_port user@hostname.com Таким образом, если нужно весь трафик идущий на порт 1234 направить на SSH сервер, нужно ввести команду: $ ssh -D 1234 geek@likegeeks.com После установления соединения, мы можем указать в приложениях, например, браузере, пропускать трафик через туннель. Множественная переадресация Иногда приходится перебрасывать несколько внутренних портов на несколько внешних. Допустим у нас на одном и том же сервере крутятся и веб сервер и oracale. В таком случае мы можем указать несколько условий переадресации ставя перед каждым из них ключ L для локальной переадресации и R для внешней. $ ssh -L local_port_1:remote_ip:remote_port_1 -L local_port_2:remote_ip:remote_port2 user@hostname.com $ ssh -L 8080:192.168.1.1:80 -L 4430:192.168.1.1:1521 user@hostname.com $ ssh -R remote_port1:local_ip:local_port1 remote_port2:local_ip:local_port2 user@hostname.com Просмотр списка туннелей Чтобы просмотреть сколько SSH туннелей активны на данный момент можно прибегнуть к помощи команды lsof: $ lsof -i | egrep '<ssh>' Как видим, на нашей системе сейчас активно три подключения. Чтобы вместо имени хоста показать IP адрес к команде нужно добавить ключ n. $ lsof -i -n | egrep '<ssh>' Ограничение переадресации портов По умолчанию, переброс портов SSH активен для всех. Но если нужно ограничить переадресацию портов в целях безопасности, то нужно отредактировать файл sshd_config. $ sudo vi /etc/ssh/sshd_config Здесь есть несколько опций, позволяющих ограничивать создание SSH туннелей. PermitOpen позволяет прописать адреса, для которых можно включить переадресацию портов. Тут можно указать конкретный IP адреса или название хоста: PermitOpen host:port PermitOpen IPv4_addr:port PermitOpen [IPv6_addr]:port AllowTCPForwarding данная опция включает или отключает переадресацию портов для SSH. Так же можно указать какой тип переадресации допускается на этом хосте. AllowTCPForwarding yes #default setting AllowTCPForwarding no #prevent all SSH port forwarding AllowTCPForwarding local #allow only local SSH port forwarding AllowTCPForwarding remote #allow only remote SSH port forwarding Для подробной информации можно вызвать руководство по файлу sshd_config: $ man sshd_config Уменьшение задержки Проблема с переадресацией портов на SSH это возможность увеличения задержки. При работе с текстовой информацией э то не критично. Проблема даёт о себе знать если по сети идёт много трафика, а SSH сервер настрое как SOCKS сервер, то есть на нём настроена динамический переброс портов. Это происходит по той причине, что SSH туннели по сути это TCP туннель поверх TCP. Это не очень эффективный метод передачи данных. Для решения проблемы можно настроить VPN, но если по какой-то причине предпочитаете SSH туннели, то существует программа sshuttle, которая устраняет проблему. На Ubuntu или других дистрибутивах семейства Debian программу можно установить командой $ sudo apt-get install sshuttle Если же программы нет в репозиториях дистрибутива, то можно взять ее с GitHub: $ git clone https://github.com/sshuttle/sshuttle.git $ cd sshuttle $ ./setup.py install Настройка туннеля в sshuttle отличается от SSH. Чтобы завернуть весь трафик в туннель нужно ввести следующую команду: $ sudo sshuttle -r user@remote_ip -x remote_ip 0/0 vv Прервать соединение можно комбинацией клавиш Ctrl+C. Чтобы запустить sshuttle как демон, нужно добавить ключ D. Чтобы убедиться что туннель поднят и в глобальной сети показывается другой IP, в терминале можно ввести команду: $ curl ipinfo.io Или же просто открыть любой другой сайт, который покажет белый IP и местоположение.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59