Pull to refresh
21
0
Антонинко Сергей @lyxsus

User

Send message

Реализация отправки sms-уведомлений

Reading time3 min
Views16K
В виду достаточно большого парка серверов/свитчей/модемов и иного активного оборудования в конторе, была установленная система мониторинга zabbix и успешно использовалась продолжительное время. Zabbix имеет замечательную возможность отправки уведомлений о возникших проблемах.
Для этого был написан скрипт отправки sms сообщений через шлюз email-to-sms оператора связи, ограничение по количеству смс с одного адреса в сутки было обойдено путем ротации исходящих адресов, работало более или мение сносно, но в последнее время смс сообщения через данный шлюз начали доходить с задержкой порядка 10-15 минут, что уже не очень нравилось.
Итак, было решено организовать отправку уведомлений через собственный GSM-терминал, порывшись в прайсах поставщиков и не обнаружив там подходящих по цене и характеристикам GSM модемов весьма огорчился.
И тут вспомнилось что дома валяется старый Siemens CX65 да еще и data-кабель к нему, после подключения телефона и курения доков по отправке sms сообщений пришел к не очень радостному выводу, оказывается siemens не поддерживает отправку sms в текстовом режиме, команда AT+CMGF=1 возвращает error.
Отправка сообщений в данных аппаратах возможна только в режиме PDU, ради спортивного интереса и для размятия мозгов было решено реализовать эту систему, был написан скрипт для перекодировки в PDU формат сообщений и отправки через телефон.
Читать дальше →

Атака на беспроводные сети. Чуть меньше теории и чуть больше практики

Reading time6 min
Views315K
image
В общих чертах теорию и процесс атаки хорошо описал юзер n3m0 в своих статьях «Атаки на беспроводные сети», поэтому я не буду заострять внимание на многих теоретических моментах.
Я же хочу описать самые простейшие способы обхода защиты, но более подробно.
Читать дальше →

Старые друзья шиворот-навыворот, или как светодиод может быть фотодатчиком

Reading time2 min
Views27K
Действительно, на основе любого светодиода можно соорудить весьма недурственный датчик освещенности вроде того, который меряет освещенность на улице, чтобы автоматически включать лампу возле подъезда вечером.
Пост можно было озаглавить «удивительное рядом» — несмотря на то, что при внимательном рассмотрении принцип действия становится понятен довольно быстро, о подобном применении светодиодов знает, наверное, не каждый.
Читать дальше →

Трюки со специализацией шаблонов C++

Reading time4 min
Views110K
imageСпециализация шаблонов является одной из «сложных» фичей языка с++ и использутся в основном при создании библиотек. К сожалению, некоторые особенности специализации шаблонов не очень хорошо раскрыты в популярных книгах по этому языку. Более того, даже 53 страницы официального ISO стандарта языка, посвященные шаблонам, описывают интересные детали сумбурно, оставляя многое на «догадайтесь сами — это же очевидно». Под катом я постарался ясно изложить базовые принципы специализации шаблонов и показать как эти принципы можно использовать в построении магических заклинаний.

Ознакомиться с заклинаниями

Заметаем следы

Reading time1 min
Views23K
Помните я про kill -9 $$ рассказывал?

Так вот, немного повторюсь: kill -9 $$ — «выход» из консоли без сохранения истории.
Как это работает: $$ — идентификатор текущего процесса консоли; kill -9 думаю объяснять не надо? Ну на всякий случай: kill -9 убивает указанный процесс (дочерние процессы также убьются, сами).

Но перед тем как бесследно исчезать из консоли не мешало бы всё таки подчистить файл ~/.bash_history, и самый интересный файл: /var/log/lastlog, именно в нём записан последний IP с которого логинились. Файл этот не обычный plain text, поэтому править его надо осторожно. Открываем и везде меняем свой IP.
В общем то его можно совсем удалить, тогда при логине в консоль вообще не будет строчки с last login, у меня на Debian, например, он сам не создается.

Таким образом, зная пароль, можно практически незаметно попасть в систему и так же незаметно оттуда исчезнуть.

Для операций с файлом lastlog нужны права root.

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

Расширение функциональности готовых программ

Reading time11 min
Views43K
В мире ПО существует огромное количество программ, забытых своими разработчиками. Хорошо, когда уже есть хорошая альтернатива. А если ее нет? В программе может катастрофически не хватать каких-то мелочей, некоторые досадные ошибки могут годами доставлять массу неудобств пользователям, а на новых версиях ОС программа и вовсе может отказаться работать. Далеко не всегда имеются исходные коды, чтобы привести программу в порядок. Если программа простая — не составит труда за короткий срок создать альтернативу. Но если программа большая и сложная, что же делать в таком случае? Не всегда рационально тратить время и деньги на разработку полного аналога, ведь расширить в разумных рамках функциональность и исправить большинство ошибок можно уже в готовом исполняемом файле.
В этой статье будут продемонстрированы методики модификации исполняемых файлов на примере расширения функциональности легендарной игры Age of Empires II (стратегия реального времени).
Читать дальше →

DNS Amplification (DNS усиление)

Reading time6 min
Views94K
Не так давно столкнулся с проблемой (и ее решением) учитывая актуальность этой темы в последнее время, а также то, сколько людей сейчас страдают от этой беды, решил объединить информацию в одну статью. Может быть кому-то еще она будет полезной.
image

Начало



Пару недель назад я заметил странную активность, направленную на мой DNS-сервер. Сразу скажу, что использую шлюз на Linux, соответственно там установлен DNS-сервер bind. Активность заключалась в том, что на порт 53 (DNS) моего сервера сыпалось по несколько UDP пакетов в секунду с различных IP-адресов:

10:41:42.163334 IP 89.149.221.182.52264 > MY_IP.53: 22912+ NS?. (17)
10:41:42.163807 IP MY_IP.53 > 89.149.221.182.52264: 22912 Refused- 0/0/0 (17)
Читать дальше →

Классы типов, монады

Reading time15 min
Views14K
Темой сегодняшней статьи будут классы типов, некоторые стандартные из них, синтаксический сахар с их использованием и класс монад.
Классы привносят динамический полиморфизм, как и интерфейсы в традиционных императивных языках, а также могут быть использованы как замены отсутствующей в Хаскеле перегрузки функций.
Я расскажу, как определить класс типов, его экземпляры (instance) и как это всё устроено внутри.

Предыдущие статьи:
Типы данных, паттернг матчинг и функции
Основы
Читать дальше →

Monadic Parser Combinator в Nemerle

Reading time7 min
Views2.3K
Недавно обнаружил замечательную статью Monadic Parser Combinator про создание парсеров. Основная идея заключена в том, что бы описать парсер как объект первого класса, что бы можно было произвести декомпозицию исходной задачи и представить искомый парсер в виде синтеза более простых парсеров. Что бы облегчить комбинацию парсеров используется подход replace error with list of success. В языке haskell очень удобно работать с созданием парсеров, так как эта задача естественно ложится на концепцию монад, к сожалению в nemerle монады не поддерживаются, но все же язык достаточно мощный, что бы справиться с данной задачей.

Сломать мозг с помощью ФП

Для тех, кто печатает быстрее, чем думает

Reading time1 min
Views708
Максим Азаров, менеджер продуктов Google Россия

Мы часто видим, что люди вводят запросы на Google с ошибками. Например, запрос «Москва» из-за случайно пропущенной буквы превращается в «Моква». Как Google может исправить ошибку? Причем имея в виду то, что иногда это бывают просто необычные или абсолютно правильные написания редкого слова. Ведь, например, действительно существует населенный пункт под названием Моква!

Мы рады объявить, что запущены улучшения в поиске Google для тех случаев, когда в запрос закрадывается ошибка. Эта функция будет полезна, если буква в запросе была пропущена, перепутана с соседней на клавиатуре или просто часть запроса была набрана в английской раскладке. Теперь Google не просто выдаст подсказку с исправленным запросом, но и проактивно замешает в поисковую выдачу секцию с результатами для исправленного запроса.



Наши эксперименты показывают, что такой подход быстрее приводит пользователей к нужному им результату. В то же время на Google по-прежнему показываются результаты по исходному запросу, что позволяет учитывать ситуации, когда коррекция запроса была нежелательна.

Мы также запустили улучшения подсказок "Возможно, вы имели в виду:" для русского языка. Улучшена релевантность выдаваемых подсказок, лучше разделяются слитно написанные слова. Например, теперь на запрос "примержаргонизм у солженицина" будет предлагаться подсказка с исправленным и раздельным написанием: «пример жаргонизм у солженицына».

Наблюдаем за пользователем

Reading time1 min
Views1.2K
image Сервис userfly даёт возможность визуально посмотреть, что и как делал пользователь на вашей странице.
Пока все это в разработке и видимо еще много чего нужно сделать, но основу уже можно попробывать

После регистрации userfly генерирует небольшой Яваскрипт, который нужно вставить в header страниц. После этого все передвижения пользователей будут записыватся, а вы вскоре сможете посмотреть, как небольшой видеоролик, что-же делают посетители на вашей странице, что ищут, какие функции используют чаще и т.д.
Читать дальше →

Сервис автоматической расстановки мягких переносов

Reading time1 min
Views5.9K
Мало кто знает, что в HTML есть специальный символ для «мягкого» переноса — ­. Работает он так: если попадает на конец строки — появляется символ переноса, если не попадает — ничего не отображается. Очень удобно, но, к сожалению, вручную вставлять в текст такие символы — занимает слишком много времени. Сегодня обнаружил интересный сервис для автоматической расстановки.

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

Быстрый полнотекстовый поиск в Rails приложениях

Reading time3 min
Views6.1K
Рано или поздно перед каждым сайтом (будь то социальная сеть, форум, блог или еще какое-то хранилище информации) возникает проблема поиска. Каждый разработчик решает эту проблему по-своему: одни пишут свои решения, другие используют готовые встраиваемые поисковики, третьи используют внешние решения, например сервисы от Google.

В этой статье мне хотелось бы рассказать о таком средстве поиска, как Ferret, и о том, как просто использовать данное решение в своем Rails-приложении.

и что же такое ferret?

Верстка скругленных границ и острых углов

Reading time4 min
Views21K
Сложность элементов интерфейса увеличивается с каждым новым макетом, что доставляет немало хлопот верстальщикам. Развивающиеся технологии позволяют создавать в WEBе сложные приложения (Google не даст мне соврать), поэтому дизайнеры себя не сдерживают и рисуют всё более навороченные вещи. Как правило, это приводит к большому количеству графики на страницах.

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

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

Манипуляции с аудио, как с MIDI

Reading time2 min
Views6.7K
На Хабре проскакивали упоминания про новые интересные возможности обработки фото или видео, но тоже самое происходит и в аудио-среде. Не заметили, что наши «звезды» в последние годы стали лучше попадать в ноты? :)

Суть технологии: даже многоголосое аудио уже можно редактировать как MIDI — изменять высоту, длительность, время начала, громкость. Смотрите видео.



В чем прелесть и как этим воспользоваться?

Как делать качественные печатные платы в домашних условиях.

Reading time2 min
Views397K
Любой электронный девайс требует соединения воедино кучи деталей. Конечно, можно спаять девайс на монтажной плате, но при этом велик риск наделать кучу ошибок, да и сам девайс будет выглядеть весьма стремно. Торчащие во все стороны провода оценят только любители трешдизайна. Поэтому, будем делать печатную плату!

А чтобы тебе было проще, я сделал видео урок на тему изготовления печатных плат методом Лазерного Утюга ака ЛУТ.

Полный цикл, от подготовки платы с куска текстолита, до сверления и лужения.
Читать дальше →

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity