Hex-editor
По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
@media screen and (max-width: 736px){
.video-container {
position: relative;
padding-bottom: 56.25%;
padding-top: 30px;
height: 0;
overflow: hidden;
}
.video-container iframe {
position: absolute;
top:0;
left: 0;
width: 100%;
height: 100%;
}}
Как думаешь, какой язык программирования сейчас самый популярный? Если погуглить, то окажется, что это Python.
А почему так, мы сейчас расскажем и покажем.
Начнем с произношения - как его называть? Питон? Писон? Пистон? Можно и так, но правильно будет Пайтон, потому что его создатель Гвидо Ван Россум, назвал его в честь популярной комедийной группы Монти Пайтон, а точнее их шоу “Летающий цирк Монти Пайтона”, так что чешуйчатые тут не причем.
Почему мы слышим про Python из каждого утюга? В чем секрет его популярности? Дело в том, что он используется не только разработчиками, а еще очень популярен среди математиков, аналитиков, ученых, сетевых инженеров, сисадминов, хакеров и даже бухгалтеров. Для программиста, такое большое сообщество — это гигантский плюс - не знаешь, как решить задачу? Спроси или найди готовое решение на Stack Overflow, там это уже проходили и обсудили.
Популярность Python также объясняет его простота освоения. Даже если ты очень далек от айти, а при виде кода у тебя потеют ладошки, то чилл - изучение пайтона не составит для тебя большой сложности - он имеет простую структуру и синтаксис. А все благодаря его философии, которая заложена в основу языка:
Красивое лучше, чем уродливое.
Явное лучше, чем неявное.
Простое лучше, чем сложное.
Сложное лучше, чем запутанное
Порог вхождения в Python низкий, потому что это очень дружелюбный для новичков язык программирования
Пайтон применяют для самых разных задач: анализ данных и их визуализация, искусственный интеллект, машинное обучение, автоматизация процессов, да что угодно!
Теперь чутка техники: Python это высокоуровневый интерпретируемый язык программирования общего назначения. Не пугайся, все просто. Смотри:
Высокоуровневый означает, что тебе не нужно в деталях знать, как работает компьютер. Это как со смартфоном - тебе не нужно понимать как работает транзистор и что такое “лавинный пробой”, чтобы послушать на нем треки. Ну и по сравнению с другими языками, работа с памятью происходит автоматически, нам не нужно предварительно выделять ее и освобождать - спасибо встроенному “сборщику мусора”
Интерпретируемый - когда ты допишешь на Python свой первый скайнет, его будет нужно преобразовать в машинный язык, который сможет понять компьютер. Да - да, компьютер сам по себе твою писанину не поймет. Именно для этого используется интерпретатор Python, который при выполнении программы превращает написанный тобой код построчно, по одной за раз, в машинный код. А компилируемые языки, такие как Java, используют компилятор, который компилирует весь исходный код целиком перед выполнением твоей программы.
Общего назначения означает, что использовать Python можно в различных областях, ну как мы уже и говорили: веб, десктоп и мобильные приложения, тестирование, работа с данными, работа с большими данными (big data), искусственный интеллект и машинное обучение, автоматизация и даже игры на нем писать можно!
Так это вроде у всех есть, нет? Неа, например есть целевые языки, такие как SQL, который можно использовать только для запроса данных из реляционных баз данных.
Пайтон является объектно-ориентированным языком (ООП) программирования. Если кратко, то ООП - это когда вся программа рассматривается как набор взаимодействующих друг с другом объектов, где каждый объект имеет свои свойства и поведение.
А если ты уже прогаешь на другом языке, то смотри, что в пайтоне особенно круто: он строго типизированный - это означает, что значения переменных не будут неожиданно изменяться
Но при этом динамически типизированный, следовательно нам не нужно указывать тип переменной каждый раз.
А еще: забудь про точки с запятой! Вместо этого тут используются отступы, чтобы определить блоки кода. И да, фигурные скобки в этом случае, как видишь, тоже не нужны.
Также стоит заметить то что пайтон это кроссплатформенный язык программирования, что значит что мы можем писать и запускать свой код на Windows, Linux, MacOS и прочих!
Ну и не в последнюю очередь благодаря своей популярности, Python имеет огромную экосистему библиотек, фреймворков и инструментов которые упростят работу и расширят ваши возможности при написании кода.
Для примера можно назвать популярные Tensorflow и PyTorch для машинного обучения, Django и Flask для веб приложений, Pandas для дата сайенса, Selenium для тестирования и NumPy для сложных вычислений. А для установки всех этих дополнительных крутых штук используется специальный менеджер пакетов, котороый называетися pip.
Кстати, у нас есть курс по Python с нуля! Пройди бесплатный вводный урок, в котором ты напишешь свою первую программу, да еще и с графическим интерфейсом, после чего сможешь ее показывать всем вокруг и говорить “знаете, я и сам в каком-то роде тоже пайтон разработчик”
Одной из основных составляющих IP – PBX на базе Asterisk являются SIP – транки в сторону провайдера и оконечные телефонные аппараты, или как их принято называть «пиры» (peers). Сегодня мы расскажем о способе автоматизации мониторинга состояния транков и пиров, с отправлением на почту системного администратора.
Мониторинг пиров
Итак, начнем с мониторинга состояния пиров. Для этого мы напишем небольшой bash – скрипт. Предположим, что у нас есть 3 площадки, А, B и C. АТС Asterisk находится на площадке A. Предварительно, перед началом работы, создадим 2 файлы: первый – для логов нашего скрипта, а второй, будет служебным, и будет использоваться только в рамках исполнения скрипта. Внутри каждого скрипта, мы будем писать комментарии к каждой из его строк.
Скачать скрипт мониторинга пиров вы можете по ссылке ниже:
Скачать скрипт мониторинга пиров
[root@asteriskpbx]# touch /home/admin/log_mail.txt
[root@asteriskpbx]# touch /home/admin/message.txt
Далее, создаем переменные для нашего скрипта:
#!/bin/sh
LOGSIZE=`ls -l /home/admin/log_mail.txt | awk '{ print $5 }'` //проверяем размер файла с логами
problempeers=`/usr/sbin/asterisk -rx 'sip show peers' | grep UNKNOWN` //выводим командой 'sip show peers' через консоль Asterisk, и затем, с помощью команды grep UNKNOWN фильтруем пиры, чтобы отобразить только те, состояние которых является UNKNOWN
GWB=`ping -c4 11.22.33.44 | grep 'received' | awk -F',' '{ print $2}' | awk '{ print $1}'` //по протоколу ICMP, пингуем IP – адрес шлюза на удаленной площадке четырьмя пакетами. Если все ОК, и шлюз доступен, до значение переменной будет равно 4. В противном случае, оно будет равно 0.
GWC=`ping -c4 44.33.22.11 | grep 'received' | awk -F',' '{ print $2}' | awk '{ print $1}'` //аналогичным образом пингуем шлюз на площадке C
ResultB="" //служебная переменная
ResultC="" //служебная переменная
FILENAME=/home/admin/message.txt //записываем в переменную путь к лог- файлам
LOGFILE=/home/admin/log_mail.txt
DATE="`date +%d.%m.%Y" "%H:%M:%S`" //выводим текущую дату и время в формате дд.мм.гггг чч:мм:сс
echo "$problempeers" > /home/admin/message.txt //записываем содержимое переменной problempeers в служебный файл. В этой переменной содержится результат вывода команды по статусу пиров.
FILESIZE=$(stat -c%s "$FILENAME") //проверяем размер служебного файла message.txt. Если в нем есть какая-либо информация, значит есть проблемы с пирами (имеются в статусе UNKNOWN), если он пустой, то все ОК.
На этом этапе, мы сформировали все необходимые переменные и у нас имеются все необходимые для формирования письма (если надо) на email системному администратору. Перейдем к исполнительной части скрипта:
if [ $GWB -eq 0 ]; then //если число ответов шлюза на площадке B на пинг равно 0, то запускаем процесс формирования письма
ResultB ="на площадке B НЕ ДОСТУПЕН!" //формируем часть текста. Мы ее включим в заголовок письма
else
ResultB ="" //если все таки шлюз ответил на пинг, то оставляем переменную пустой
fi
if [ $GWС -eq 0 ]; then //если число ответов шлюза на площадке С на пинг равно 0, то запускаем процесс формирования письма
ResultС="на площадке С НЕ ДОСТУПЕН!" //по аналогии. Указываем в заголовок, что роутер C недоступен
else
ResultС ="" //если все ОК, то оставляем переменную пустой
fi
if [ $FILESIZE -ne 1 ]; then //если наш служебный файл message.txt не пустой, то проверяем следующее условие
if [ $GWB -eq 0 ] || [ $GWC -eq 0 ]; then //если хотябы один из роутеров недоступен по пинг, то переходим к следующему пункту скрипта
echo "$problempeers"| mailx -s "Проблемы с SIP пирами | Роутер $ResultB $ResultC!" -r "info@merionet.ru" youremail@some.ru </home/admin/message.txt && //отправляем на почту письмо, где указываем, что у нас есть проблемы с пирами, и, если какой-то из роутеров не доступен, указываем это. В теле письма мы отправляем вывод недоступных пиров.
echo "FAIL :: $DATE :: Some problems with phones" >> "$LOGFILE" //параллельно с отправкой письма, записываем в лог файл запись, что у нас есть проблемы с пирами (в вывод так же можно добавить с какими именно)
else
echo "$problempeers"| mailx -s "Проблемы с SIP пирами | Роутеры ДОСТУПНЫ!" -r "info@merionet.ru" youremail@some.ru < /home/admin/message.txt && //если оба наших роутера доступны, то мы просто формируем письмо, в котором указываем перечень недоступных пиров.
echo "FAIL :: $DATE :: Some problems with phones" >> "$LOGFILE" //аналогично вносим запись в лог – файл.
fi
else
echo "OK :: $DATE :: all phones are OK" >> "$LOGFILE" //если служебный файл пустой, то мы вносим запись в лог – файл что все хорошо и проверка успешно прошла.
fi
if [ $LOGSIZE -ge 150000 ]; then //елси размер нашего лог – файла больше или равен 150 КБ, то мы очищаем этого (можете подкрутить эту величину, как вам угодно.)
cat /dev/null > /home/admin/log_mail.txt
fi
cat /dev/null > /home/admin/message.txt //на выходе чисти служебный файл message.txt, для последующего использования
Теперь давайте проверим, что приходит нам на почту в случае, если несколько пиров стали недоступны, но все роутеры доступны:
Мониторинг транков
Отлично, перейдем к формированию скрипта по мониторингу транков. Здесь все несколько проще, и мы просто будем сравнивать общее количество транков, и количество зарегистрированных транков:
Скачать сам скрипт можете ниже:
Скачать скрипт мониторинга транков
#!/bin/bash
ALLTRUNKSMINIMUM="`/usr/sbin/asterisk -rx "sip show registry"`" //выводим регистрации по протоколу SIP
ALLTRUNKS=`echo "$ALLTRUNKSMINIMUM" |grep "SIP registrations" |awk '{print $1}'` //численное обозначение всех имеющихся транков
REGTRUNKS=`/usr/sbin/asterisk -rx "sip show registry" |grep Registered |wc -l` //численное обозначение всех зарегистрированных транков
DATE="`date +%d.%m.%Y" "%H:%M:%S`" //формируем текущую дату, для логов
LOGFILE=/home/admin/log_mail.txt //для лог – файла, указываем тот же файл, что и для скрипта по мониторингу пиров
if [ "$REGTRUNKS" -lt "$ALLTRUNKS" ]; then //если число зарегистрированных транков меньше чем число всех транков
sleep 5 //ждем 5 секунд
echo `/usr/sbin/asterisk -rx "sip reload"` \ перезагружаем модуль SIP, в целях перерегистрации. Эта команда автоматически перерегистрирует транк на оборудовании провайдера, после чего, он, зачастую, начинает работать.
sleep 5 //ждем еще 5 секунд
VAR=`/usr/sbin/asterisk -rx "sip show registry"` //после перезагрузки SIP модуля, снова смотрим SIP –регистрации. Если данная команда не дала своих результатов, то в переменной VAR будет записаны не работающие транки. Если она помогла, то на email админу придет рабочий вывод всех зарегистрированных транков. Это весьма удобно.
echo "$VAR"| mailx -s "Мониторинг транков" -r "info@merionet.ru" youremail@some.ru // отправляем письмо на почту системного администратора, с выводом SIP регистраций после перезагрузки модуля
else
echo "OK :: $DATE :: all trunks are OK" >> "$LOGFILE" //если число зарегистрированных транков, равно общему числу, то записываем в лога файл соответствующую запись.
fi
Теперь, когда мы автоматизировали процессы мониторинга состояния на Asterisk, сделаем выполнение этих скриптов регулярным. Сохраним наши скрипты в формате .sh, можно сделать это, например, в Notepad ++. Сделаем выполнение мониторинг транков раз в 2 минуты, а выполнение мониторинга пиров раз в 10 минут. Перед загрузкой скриптов на сервер, дадим им необходимые права и, что очень важно, преобразуем скрипт в Linux формат:
[root@asteriskpbx]# dos2unix peer.sh //преобразуем скрипт для мониторинга пиров
[root@asteriskpbx]# dos2unix trunk.sh //преобразуем скрипт для мониторинга транков
[root@asteriskpbx]# chmod 777 peer.sh //дадим необходимые права обоим скриптам
[root@asteriskpbx]# chmod 777 trunk.sh
[root@asteriskpbx]# crontab -e
В открывшемся cron, задаем задачи для выполнения наших скриптов:
*/10 * * * * /bin/bash /home/peer.sh >/dev/null //исполнять файл раз в 10 минут
*/2 * * * * /bin/bash /home/trunk.sh >/dev/null //исполнять файл раз в 2 минуты
Вот и все. Теперь мы имеет достаточно простой, но порой очень нужный и эффективный мониторинг состояния транков и пиров на нашем Asterisk
Машинное обучение (Machine Learning, ML) стало одним из самых перспективных направлений последних лет. Компании активно используют его для автоматизации, повышения эффективности и улучшения продуктов. Особую роль здесь играют ML-инженеры — специалисты, которые создают и внедряют модели машинного обучения. Но кто же такой ML-инженер, какие требования существуют к этой профессии и как им стать? Поговорим в статье.
Кто такой ML-инженер
ML-инженер (Machine Learning Engineer) — это специалист, который занимается разработкой, обучением и внедрением моделей машинного обучения в рабочие процессы компании. В задачи ML-инженера входит работа с большими массивами данных, проектирование алгоритмов, создание и оптимизация моделей, их тестирование, а также адаптация для реальных приложений.
ML-инженеры тесно взаимодействуют с дата-саентистами, инженерами по данным и разработчиками. Если дата-саентисты сосредоточены на исследовании данных и построении гипотез, то ML-инженеры отвечают за перевод моделей в стабильные и масштабируемые системы, которые работают в реальных условиях.
Где можно встретить машинное обучение
Распознавание изображений и видео. С помощью ML можно распознавать объекты, лица или детали на изображениях и в видеозаписях. Это системы распознавания лиц в телефоне, камеры видеонаблюдения или алгоритмы, которые помогают соцсетям классифицировать изображения.
Рекомендательные системы. ML широко применяется в интернет-магазинах и стриминговых сервисах, чтобы проанализировать предпочтения пользователей и предложить персонализированные рекомендации. Это увеличивает продажи и улучшает пользовательский опыт. Алгоритмы рекомендаций в Яндекс.Музыке предлагают пользователям новые треки на основе их предпочтений.
Обработка естественного языка (NLP). Машинное обучение используют для анализа и генерации текста. Например, в чат-ботах, переводчиках (например, Google Translate), голосовых помощниках (Алиса, Siri, Alexa) и в автоматическом анализе отзывов или документов.
Диагностика и прогнозирование в медицине. Машинное обучение помогает врачам диагностировать заболевания на основе анализа медицинских изображений (например, рентгеновских снимков), генетических данных и историй болезней. Также алгоритмы помогают прогнозировать развитие болезни и оценивать риски для пациента.
Автопилот в автомобиле. Алгоритмы анализируют данные с сенсоров и камер автомобиля, чтобы распознавать дорожные объекты (машины, пешеходы, знаки) и принимать решения о движении.
Финансовый анализ и борьба с мошенничеством. В банковской сфере и страховании ML помогает выявлять мошеннические транзакции и подозрительные активности. Также используя ML, можно проанализировать кредитоспособность клиентов.
Персонализированное обучение. Образовательная платформа Coursera с помощью ML создает адаптивные учебные планы. Они подстраиваются под уровень знаний и темп студента. Это делает обучение более эффективным и индивидуализированным.
Умные устройства и дома используют машинное обучение для оптимизации энергопотребления, управления системами на основе предпочтений и поведения пользователя.
Обязанности ML-инженера
ML-инженеры работают в тесной связке с другими специалистами, например, с аналитиками данных и разработчиками. Они должны понимать бизнес-задачи, чтобы предлагать наиболее эффективные решения. Основные обязанности включают:
Проектирование и создание моделей машинного обучения на основе потребностей бизнеса и имеющихся данных. Это включает выбор подходящей архитектуры и алгоритмов.
Обучение моделей и их оптимизация. Инженеры настраивают параметры моделей, чтобы добиться максимальной точности.
Внедрение и мониторинг моделей в реальных условиях, обеспечение их стабильной работы.
Работа с данными: сбор, предобработка и использование их в моделях машинного обучения.
Навыки и знания, необходимые для ML-инженера
Если вы хотите стать ML-инженером, придется освоить ряд технических и математических навыков.
Технические навыки
Программирование. ML-инженеры владеют Python, R, Java или C++. Python является основным языком для работы с машинным обучением, потому что у него огромное количество библиотек и фреймворков.
Библиотеки и фреймворки. Специалисты должны хорошо знать TensorFlow, PyTorch, Scikit-learn, Keras. Эти фреймворки позволяют быстро создавать и обучать модели.
Работа с данными. Для подготовки данных необходимо знание SQL, а также библиотек для работы с массивами данных, например, Pandas, NumPy. Кроме того, для эффективного решения задач требуется понимание алгоритмов и структур данных.
Математика и статистика
Линейная алгебра и теория вероятностей. Эти математические разделы являются основой для многих алгоритмов машинного обучения.
Статистический анализ. Важно понимать методы обработки данных и оценивания статистической значимости.
Машинное обучение
Методы и алгоритмы: регрессия, классификация, кластеризация и нейронные сети.
Глубокое обучение (или Deep Learning, DL) применяется в сложных проектах, таких как распознавание изображений и естественная обработка языка.
Облачные технологии и DevOps
Контейнеризация и оркестрация. Инструменты Docker и Kubernetes позволяет эффективно разворачивать модели.
Облачные платформы. AWS, Google Cloud и Azure — инструменты для обучения моделей и управления инфраструктурой.
Гибкие навыки
Коммуникация. ML-инженеру придется взаимодействовать с другими специалистами, включая бизнес-аналитиков и разработчиков.
Критическое мышление. Умение анализировать результаты моделей и корректировать решения.
Работа в команде. Поскольку ML-инженеры часто работают в кросс-функциональных командах, ему необходимы навыки сотрудничества.
Английский язык. Если вы хотите работать в международной команде, уровень английского языка должен быть не ниже, чем Intermediate, а лучше – Upper Intermediate. Для российского рынка это необязательно, но почти всегда выделяется как дополнительный плюс.
Сколько зарабатывает ML-инженер
Зарплата ML-инженера зависит от уровня опыта, страны и сферы деятельности компании. Мы заглянули на HeadHunter: по запросу «Машинное обучение» на сентябрь 2024 года можно найти 20+ тысяч вакансий.
Источник:
hh.ru
В среднем заработная плата распределяется следующим образом:
Junior ML-инженер. Начинающие специалисты могут зарабатывать от 80 000 до 120 000 рублей в месяц.
Middle ML-инженер. Специалисты со средним уровнем опыта могут рассчитывать на зарплату в диапазоне от 150 000 до 250 000 рублей в месяц.
Senior ML-инженер. Опытные инженеры получают от 330 тысяч рублей и выше, особенно если они работают в крупных ИТ-компаниях.
Кратко
ML-инженеры — востребованные специалисты на рынке труда, а с развитием искусственного интеллекта их роль только возрастает. Чтобы стать таким специалистом, вам надо обладать глубокими знаниями в программировании, математике, машинном обучении и статистике. Средняя зарплата ML-инженера составляет около 150 000 — 300 000 рублей в месяц в зависимости от опыта и компании.