Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как правильно конвертировть картинку в Base64 для последующего вывода в браузере?

Лучший ответ:
вот мой код:Bitmap printscreen = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);

            Graphics graphics = Graphics.FromImage(printscreen as Image);

            graphics.CopyFromScreen(0, 0, 0, 0, printscreen.Size);

            var ms = new MemoryStream();

            printscreen.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); 

            string convertedImg = Convert.ToBase64String(ms.ToArray(), Base64FormattingOptions.None);
получаю на выходе:/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAMABVYDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRV... и т.д.
вставляю в ручную в браузер (п.с. без пробелов, как у вас <img alt="" src="data:image/png;base64,ТУТ_ПРОБЕЛА_У_ВАС CONVERTED_BASE64"/> между base64, и CONVERTED_BASE64)
получаю:
а получаю скриншот из Visual Studio

Худший ответ:
Боже, что так сложно то. Просто используй FileReader.readAsDataURL()
Вопрос: Что не так с запросом MYSQL?

Лучший ответ:
Посчитайте кол-во полей и сравните с кол-вом значений =)

Худший ответ:

Подозреваю, что какое то название зарезервировано sql..правильно подозреваете
Вопрос: Пропадает доступ к сайтам после проброса порта 443 на Микротик, что делать?

Лучший ответ:
ну как бы логично. все https используют TCP порт 443. куда ты его пробрасываешь то?

Худший ответ:
на внутренний  IP сервера 192.168.1.37
Вопрос: Стоит ли браться за сложные задачи?

Лучший ответ:
"К черту всё! Берись и делай!" :)
Вы описали несложную задачу (не писал ботов для VK, вот для Телеграмма это делается на раз-два, а уж с XML в java что только не делали + Spring'овое семейство фреймворков, которые покрывают дофига всего), но для ваших знаний будет самое оно для изучения. Это же реальный проект, которым Вы будете пользоваться. А не синтетический пример из книжки.
Срочно начинайте делать без сомнений. Так ведь и просходит самое продуктивное изучение - есть проблема, не знаете как делать, узнаете и делаете. Главное ешьте слона по частям, декомпозируйте задачу на подзадачи по максимому и потихоньку пилите их по одной.

Худший ответ:
Здравствуйте
Однозначно стоит. Вы никогда не будете совершенствовать свои знания, если не будете с каждым разом брать задачи сложнее. 
Из личного примера.
Я после прочтения Шилдта (Руководство для начинающих) сразу поставил себе задачу сложнее - написать веб-сервис и клиент к нему (на JavaFX), и в процессе написания сервиса знакомился с новыми технологиями. Ставил проект на паузу, пока осваивал новый фреймворк, несколько раз переписывал. Но в итоге это дало знаний намного больше. 
И таким образом вы быстрее всему научитесь.
Вопрос: Как исправить такую ошибку в php коде?

Лучший ответ:
Вечер добрый.
У вас запрос написан в одинарных кавычках. Замените его хотя бы на$news = $mysqli -> query("SELECT id, title, description, img_url 
FROM news 
ORDER BY id DESC 
LIMIT $to, $limit");
Либо на$news = $mysqli -> query('SELECT id, title, description, img_url 
FROM news 
ORDER BY id DESC 
LIMIT '. $to. ', '. $limit);

Худший ответ:
1. Fatal error: Call to a member function fetch_assoc() on a non-object in C:\OpenServer\domains\cms\engine\classes\db.class.php on line 36
Дословно: родитель fetch_assoc ($result) - не объект
2. $result->fetch_assoc вызывается в assoc($result)
3. В данном случае параметр assoc - $news. Значит, $news - не объект (false, скорее всего)
Ошибка в запросе.
Опубликуйте сам запрос и $mysqli->errorUPD Замените одинарные кавычки на двойные. Пременные интерпретируются только в двойных.
Вопрос: Как заставить функцию возвращать абсолютный путь до файла c https а не http?

Лучший ответ:
У вас отсутсвуют параметры для https:
settings.pySECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True

Худший ответ:
Парни спасибо за помощь! Все заработало. Но пришлось поступить правильно) т.е не так как я сделал изначально. 
В общем-то все сделал Руслан.
За это ему отдельное, большое спасибо!1) Убрал поддержку qunicorn с NGINX. 2) Удалил всех демонов из логики работы.3) Установил UWSGI.4) Добавил файл:batareika.ini[uwsgi]
chdir = /root/Batareika
module = Batareika.wsgi
home = /root/Batareika/venv
master = true
processes=6
chmod-socket = 666
socket = /root/Batareika/batareika.sock5) Изменил конфиг сервераupstream batareika {
    server unix:////root/Batareika/batareika.sock;
}

server {
        listen 80;
        server_name batareika.app;
        return 301 https://$server_name$request_uri;
}

server {
        listen 443 ssl;
        server_name batareika.app;
         ssl_certificate /etc/letsencrypt/live/batareika.app/fullchain.pem;
         ssl_certificate_key /etc/letsencrypt/live/batareika.app/privkey.pem;
         include /etc/letsencrypt/options-ssl-nginx.conf;
         ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
        location = /favicon.ico { access_log off; log_not_found off; }


        location /static/ {
                root /root/Batareika;
        }

        location /media/ {
                root /root/Batareika;
        }


        location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        uwsgi_pass batareika;
        include /etc/nginx/uwsgi_params;
}
}6) Изменил settings.py добавив туда несколько настроек
lang="python"># для NGINX перенаправление траффика http-https
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True7) Сказал, что использовать непонятную функцию стримминга(def stream_mp3(request, song)) - просто какая дичь - в шаблон нужно отдавать обычную ссылку с абсолютным адресом. Соответсвенно данные вьюхи как и контроллеры к ним ведущие не нужны. Теперь я отдаю абсолютный путь. Спасибо за помощь - alternativshik'у. В общем-то он тоже от этой вьюхи недоумевал. В защиту себя скажу что использовать данную функцию меня надоумил стековерлфлоу. Спасибо ему за это) host_mp3 = 'https://batareika.app/media/charge/music/'
link = host_mp3 + song_name
# и link летит в шаблон
В общем то на этом все.
Вопрос: Мобильное приложение ios, android. Реально ли с vue?

Лучший ответ:
Делал из vue приложение на cordova. Никаких проблем не было. Легко и быстро, если нет каких-то специфичных фич, которые на телефоне работают не как в браузере.

Худший ответ:
Реально. Vue+Framework7+cordova как еще один вариант. Есть еще weex - weex-project.io
Вопрос: Один программист Full-Stack или два (Backend и Frontend)?

Лучший ответ:
Я бы брал двоих (собственно говоря мы так и делаем). Производительность будет точно выше. Но только при условии, что вы хорошо организуете взаимодействие между девелоперами. Лучше конечно, чтобы люди сидели в одном офисе.
Варианты как организовать:
1. Ставится только один тикет. Назначается на того, кто должен сделать свой кусок первым. После он передает тикет другому исполнителю. Если люди сидят в одном офисе, то могут работать над тикетом параллельно. Когда сделали - сдали в тест. 
2. Ставится одна общая задача. Под нее накидываются подзадачи. Все заводится отдельно для backend, отдельно для frontend. Все задачи закрыты - основной тикет идет в тестирование. Найденные баги опять же заносятся подзадачами. И так пока не закроется.
Лучше первый вариант - меньше дублирования информации.

Худший ответ:
Переход к двум узкоспециализированным специалистам - это очень большой шаг для такого небольшого проекта.
Вы выгадаете по квалификации. 
Сильно возрастет (теоретически) качество работ.
Но и затраты - тоже возрастут приличненько.
Вопрос: Как поступить с Trello?

Лучший ответ:
Перейдите на другой сервис, который более удобен. Трелло немного для других задач.

Худший ответ:
Каждый столбец у меня - категория (Inbox, Freelance, Hobby, Girl, Relatives, Dreams
Скорее это разные проекты, а в них уже будут категории. Но категории не обязательно должны быть списками - можно выделить их в метки
Вопрос: Как сделать анимацию по кругу в CSS?

Лучший ответ:
там же все открыто

Худший ответ:
На https://tympanus.net/codrops/ точно есть готовый скрипт этой крутилки.
А вообще, что сложного разобрать пример по консоли разработчика?
Вопрос: Падает бот из-за ошибки HTTPSConnectionPool(host='api.telegram.org', port=443): Read timed out. (read timeout=30).Как пофиксить?

Лучший ответ:
Используйте прокси

Худший ответ:
Тут два варианта , первый это из-за русского IP , второй это из-за плохого интернета (или не стабильного).
Для первого варианта надо использовать Proxy либо VPN. VPN надо настроить так чтобы весь трафик с компьютера шёл через VPN. Я пользуюсь CyberGhost . Смотри чтобы VPN был не слишком медленным , а то пользователи долго ответа ждать не любят)
Вопрос: Как вывести в терминале файлы по именам, в которых есть двузначные цифы и более?

Лучший ответ:
Если надо вывести файлы с 4-мя цифрами в середине, надо указать так
test\d{4}test.txt. Если от 2 до 4 цифр,то так 
test\d{2,4}test.txt.  Дальше по аналогии.
Или если абстрактно отвлечься.Между test  и test.txt стоят несколько символов, не важно, цифр или букв. Тогда можно так попробовать. Хоть некрасиво, но работает.
Или если надо цифры по порядку выводить, то как-то так

Худший ответ:
Добавьте плюс - ls test[1234567890]+test.txt или вообще ls test\d+test.txt
(Сам в баше не силен, но может сработать)UPD То, что я принял за регулярное выражение - bash expansion. Тут можно использовать ls | egrep '^test\d+test.txt$' или что-то подобное
Вопрос: Возможно ли с помощью ML и машинного обучения проводить распознание объектов на спутниковых снимках?

Лучший ответ:
Возможно. Вот статейки:
https://m.habrahabr.ru/company/ods/blog/325096/
https://m.habrahabr.ru/company/neurodatalab/blog/3...
https://m.habrahabr.ru/company/mailru/blog/335164/
https://m.habrahabr.ru/post/335026/
Ещё была статья от ods про распознавание транспорта на снимках в рамках конкурса от британцев, я сейчас не могу её найти.

Худший ответ:
Да, возможно. Но без чудес. Увеличить изображение в капле воды как в CSI и распознать объект не получится.
Модель конкретного самолета определить можно не всегда, это будет скорее исключением; тип ВС с высокой, но не 100% достоверностью.
Вопрос: Залил проект на digital ocean используя nginx, можно ли как созданные в локальной БД записи перекинуть на БД которая находится на хосте?

Лучший ответ:
Heroku это PaaS (Platform as a Service), за такие фичи вы и платите. А nginx это веб-сервер, он не имеет никакого отношения к базе. Потому вам придется самостоятельно делать дамп базы и переносить его на новый сервер. Можно настроить для этого Capistrano или его аналоги для автоматизации деплоя. А если число записей не велико, то прописать все необходимое в seeds.rb и накатывать их из него.

Худший ответ:
Ну если прям так хочется поставьте capistrano db =)
Вопрос: Как правильно произносить «SQL»? Где взять доказательства правильного произношения?

Лучший ответ:
Если речь о SQL (structured query lang), то правильно - ЭсКюЭл, но есть и старое название SEQEUL (structured english query lang), именно из-за него SQL традиционно называют - сикуэл.

Худший ответ:
SQL является аббревиатурой, а потому правильно произносить "Эс-Кью-Эль". В этом случае вас гарантированно поймет любой специалист в нашем рэкете.
"Сиквэл" - это профессиональный слэнг. Также как PHP - "ПэХаПэ". Русскоязычный разработчик вас поймет, а вот англоязычный крепко задумается.
Вопрос: Как использовать функцию внутри функции внутри класса?

Лучший ответ:
Стрелочные функции вроде для этого как раз, чтобы this пробрасывать.
Вот так не работает?this.player.addEventListener('ended', () => {
            this.nextSong();
            console.log('Audio file ended');
        });

Худший ответ:
А точно с self правильно пробовали?var self = this;
this.player.addEventListener('ended', function (){
            self.nextSong();
            console.log('Audio file ended');
        });
Должно работать. Но, честно говоря, так теперь мужики не пишут. Не по-ES6'овски! Надо писать так:this.player.addEventListener('ended', () => {
            this.nextSong();
            console.log('Audio file ended');
        });
Вопрос: Как рендерить разные страницы в ReactJS?

Лучший ответ:
this.state = {loadworksheep: false};
this.setState({loadWorksheep: true});
Так как правильно - w должна быть большой или маленькой? Вы бы определились.

const worksheetLoaderPage = (
    WorksheetSelector
);
WorksheetSelector ---> <WorksheetSelector />

Если есть другой способ по нажатию кнопки рендерить другую страницу, то буду крайне рад услышать.
react router

Худший ответ:
<button onClick={()=>this.loadStuff}>Начать</button>
Вопрос: Почему на западе любят поддомен www в адресе сайте, а у нас корень домена?

Лучший ответ:
Технически можно и так, и сяк. Но, как всегда, есть нюансы, на которых и сыпется большинство советчиков (в том числе в этом треде).
Если у вас только сайт на домене, максимум почта на других портах, и даже CDN не используется - можете спокойно использовать основной домен без www. Если у вас сайт многоязычный, и языки размещены на поддоменах - тогда тоже без www. Если же у вас есть и другие ресурсы в домене, например:
www.example.com - публичный сайт
developers.example.com - публичный сайт инструментов для разработчиков
api.example.com - какой-нибудь публичный АПИ
cdn.example.com - поддомен content delivery network (можно много - cdn1, cdn2  итд)
docs.example.com - публичная документация
help.example.com - публичная справка
support.example.com - публичная служба поддержки
dev.example.com - закрытая, непубличная копия сайта, стейджинг
hr.example.com - закрытая, непубличная часть, внутренние ресурсы компании для сотрудников
mail.example.com - технический субдомен для почты
webmail.example.com - веб-морда для почты (может быть как публичной, так и открытой для отдельных IP, доступ по VPN и тд)
vpn.example.com - чисто технический поддомен для проксирования трафика через VPN компании
ns1.example.com - поддомен для своего сервера имен (ns1/ns2/ns3 или primary/secondary и тд)
... и так далее. Таких поддоменов может быть очень много, и у каждого своя, совершенно изолированная кухня. Так вот, если использовать для публичного сайта домен без www,  то все его куки будут распространяться на все поддомены. А это плохо. На современном сайте этих кук штук 10 минимум, большая часть из них совершенно не нужна, или даже откровенно лишняя на всех других поддоменах. В это же время, если вы используете www и хотите поделиться куками с него с другим поддоменом - это вполне возможно сделать, осознанно.
Кроме этого - с www намного удобнее работать на уровне DNS, если это CNAME. Записи типа А лучше ставить долгий TTL, а вот CNAME может иметь короткий и его можно перебрасывать в любой момент. Пошла DDoS-атака - в считанные минуты пустили трафик через гейт сервиса защиты от DDoS или выделенный файрвол (у который другие IP-адреса). Или балансировку нагрузки делать. При этом основной домен (origin) и его IP не меняется, почта не слетает, внутренние сервисы не слетают, АПИшки не падают и тд.
Вот тут можно немного почитать про вопросы безопасности, связанные с принудительным транслированием всех кук на все поддомены.
В общем, мое мнение - если у вас свой личный сайт или маленький сайтик маленького личного бизнеса, и рост до уровня когда понадобится куча поддоменов не планируется - тогда можете смело использовать без www. Если же продукт или сервис, бизнес который может вырости в что-то относительно крупное - стартуйте с www с самого начала, потом спасибо скажете.

Худший ответ:
вебфейс главенствует и нередко является единственным интерфейсом сайта.
с технической точки зрения разницы нет в именах нет.
выделение субдоменов удобно если надо нагрузку раскидать на несколько машин.
Вопрос: Заморозили аккаунт на upwork после видео-верификации. Что делать?

Лучший ответ:
Только что прошел верификацию. На той стороне был какой-то Stefan, судя по акценту чел из Восточной Европы. Я зашел через огнелиса и видеочат не заработал. Он предложил перенести чат в скайп. Первый вопрос был:
С какой ты страны?
Потом:
С какого года работаешь на апворке? (Я не смог ответить, потому что не помню)
Сколько активных контрактов у тебя на апворке? (тоже не смог ответить, потому что давно туда не заходил)
Тогда он задал такой вопрос:
What CSS stands for? Я ответил Cascading stylesheets. 
Все, верификация пройдена. Ничего сложного, надо только знать базовый английский и воспринимать на слух речь с акцентом. У чувака был сильный акцент, примерно как у индусов.

Худший ответ:
Иди на fl.ru.
Ну, а если менее серьезно, то жди ответа от сапорта
Вопрос: Как написать функцию, которая изменяет текст во всех областях?

Лучший ответ:
Ну если у вас работает и устраивает все что вы написали, то логичным продолжением будет написать функцию, которая делает из строки "mixcase".
Она может выглядеть так например:function toMixCase(str) {
	return str
        .split('')
        .map(char => Math.random() > 0.5 ? char.toLowerCase() : char.toUpperCase())
        .join('');
}
(Лучше конечно написать свою реализацию)
Ну и останется только заиспользовать эту функцию. Это не должно составить проблем.

Худший ответ:
Только не innerText, а textContent
Вопрос: Как правильно работать с данными из файла?

Лучший ответ:
Человечество придумало классную штуку - ООП. Java, пожалуй, его квинтэссенция.public class Person {
   private String name;
   private String discip;  // или Enum
   private List<Integer> numbers;  // Или массив, если уверены в количестве чисел на 146% и целеполагание позволяет

....... getters/setters

}
Хранить и использовать, вне всяких сомнений, удобнее именно так.

Худший ответ:
Ещё добавлю, что данные лучше хранить в базе, а не в файлах.
Вопрос: Скролл по клику на кнопку не работает, как пофиксить?

Лучший ответ:
По видимому у вас якорь ведет на несуществующий id блока.

Худший ответ:
...
scrollTop: $(this).offset().top
...
Для полного понимания добавляю пример. Может кому то пригодится.
Вопрос: Где поучиться как делать вёрстку XML для Android?

Лучший ответ:
Вообще если поискать на сайтн, есть куча руководств, начать хотя бы с этого:
https://developer.android.com/guide/topics/ui/decl...
Из сторонних ресурсов, думаю будет интересно ознакомится с этим сайтом: https://android-school.ru
Или это: https://litecoding.com/2010/12/15/verstka-dlya-and...

Худший ответ:
Вот с CSS всё понятно как работать, в противном случае есть DreamViewer где можно "поиграть" и уже виден конечный результат.
Так говорите, будто в android studio нет вкладки design в xml файлах) Там как раз можно также "поиграть", перетаскивая просто разные элементы на макет, смотреть при этом в xml-код попутно. 
Так что, нечто простое можно самому накидывать очень легко, а если интересует реализация чего-то сложного, то уже гуглите конкретно эту вещь.
Вопрос: Действительно ли все так очевидно?

Лучший ответ:
Мозг как мышца, если его постоянно упражнять, он развивается. Только мышцы становятся сильнее, а мозг лучше решает задачи того типа, с которыми часто сталкивается.

Худший ответ:
6 месяцев это очень мало.
Есть исследование, что для того чтобы левелапнуться в каком-то навыке, нужно посвятить ему 10000 часов (иногда говорят «написать 10000 строк кода"). Пробуйте, работайте, изучайте новое, не опускайте руки — года через три работы по профессии будете представлять сложность задач гораздо лучше. Лишь бы мотивация была.
Вопрос: Как устранись ошибку с вложенными спецификаторами имени?

Лучший ответ:
Шаблонные типы нужно определять полностью в хэдере.

Худший ответ:
name specifier 'Vector3<V>::' for declaration does not refer into a class
Компилятор прав. У тебя нет такого типа. Есть тип Vector3, с двумя параметрами в шаблоне.
Можно написать так:template <class V, typename T>
Vector3<V> &Vector3<V, T>::operator+=(const Vector3<V> &addVector) {
    this->x += addVector.x;
    this->y += addVector.y;
    this->z += addVector.z;
    return *this;
}
Вопрос: Как обеспечить консистентность базы данных при переходе между ветками git?

Лучший ответ:
Мне кажется, проще всего вам использовать docker/vagrant/и/п, т.е. виртуальное окружение.
Вы вытягиваете ветку, стартуете под нее виртуалку, там разворачивается база, сидится, накатываются нужные миграции и вы спокойно работаете дальше. Примерно так.
Советую глянуть в это сторону.
В противном случае, вы либо будете тратить много времени на приведение БД к нужному виду, либо наплодите на dev-машине кучу баз под соответствующие ветки - что тоже так себе решение.

Худший ответ:
В Entity Framework можно управлять миграциями и как следствие - версионировать базу данных.
Правда, прикрутить её к уже готовому проекту - отдельная песня.
Вопрос: Как остановить PHP скрипт, который рассылает письма в цикле?

Лучший ответ:
Да в самом скрипте в цикле смотрите любой внешний фактор, по которому делать выход - наличие файла / записи в бд / прочего и по этому условию делайте exit / die.

Худший ответ:
можно выяснить его PID и выполнить kill -9 PID 
или killall -9 php
Вопрос: Как сделать автоматичекую отправку файла на файлообменник?

Лучший ответ:
А чем генерится файл? Добавить отправку файла туда, где происходит его генерация и все.
Зачем отправлять на файлообменник? Без прямой ссылки на ваш файл, найти его на файлообменнике будет проблематично, но куда вы отправляете ссылку?
Отправить можно командой curl
Удалить можно командой rm
Найти можно командой find
Если вы хотите, чтобы вам написали все готовое - на фриланс.

Худший ответ:
Очевидно что написать скрипт и повесить его на крон со следующей логикой:
делаем ls в директории -> если на выхлопе есть файл, то отправляем его куда-то -> если успешно то удаляем.
Или вы хотите прям код на bash?
Вопрос: Как отбиться от нежелателей, микротик?

Лучший ответ:
Как уже написали выше, правило нужно добавлять в цепочку forward, т.к. входящий трафик предназначен не самому Микротику (цепочка input), а проходит через него (цепочка forward). По этой же причине на приведенном скриншоте нулевой канутер (последние два столбца).
И как опять уже написали выше, правила в цепочках input и forward нужно строить так, чтобы вначале были разрешающие правила (разрешен удаленный доступ извне, разрешен ICMP echo request, ответы на уже установленные сессии - connection state = ESTABLISHED и RELATED, проброс портов) и последним - запретить всё.

Худший ответ:
Лучший вариант: настроить mikrotik по принципу запрещено всё что не разрешено.
Или можно:  Написать правило блокирующее при N неудачных попытках подключится
add action=drop chain=input comment="drop" dst-address-list=block
add action=drop chain=forward comment="drop" dst-address-list=block \\ Рекомендация Виктор Бельский 
add action=jump chain=input jump-target=alarm port=5060,5073 protocol=tcp
add action=add-src-to-address-list address-list-timeout=1m chain=alarm connection-state=new protocol=tcp src-address-list=block-stage-1
add action=add-src-to-address-list address-list=block-stage-2 address-list-timeout=1m chain=alarm connection-state=new protocol=tcp src-address-list=block-stage-1
add action=add-src-to-address-list address-list=block address-list-timeout=1d chain=alarm connection-state=new protocol=tcp src-address-list=block-stage-2
add action=jump chain=input jump-target=alarm port=5060,5073 protocol=udp
add action=add-src-to-address-list address-list-timeout=1m chain=alarm connection-state=new protocol=udp src-address-list=block-stage-1
add action=add-src-to-address-list address-list=block-stage-2 address-list-timeout=1m chain=alarm connection-state=new protocol=udp src-address-list=block-stage-1
add action=add-src-to-address-list address-list=block address-list-timeout=1d chain=alarm connection-state=new protocol=udp src-address-list=block-stage-2