Как стать автором
Обновить
4

Lua *

Скриптовый язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Роутер Микротик управляет радиотрансляцией и озвучивает Умный дом

Время на прочтение8 мин
Количество просмотров12K
Недавно, я случайно познакомился с программой RadioBoss компании DJSoft.Net, одной из программ автоматизации радиовещания.



Возможности программы весьма обширны, меня же больше прельстило то, что она поддерживает API управление, что позволяет удаленно полностью управлять проигрыванием музыки на компьютере с установленным RadioBoss. У меня давно была мечта иметь возможность удаленного воспроизведения медиа без подключения к рабочему столу удаленного ПК и вообще без компьютера. Пусть за меня это делает, например, … мой роутер Микротик!

Как известно, Роутер ОС Микротик имеет встроенный мощнейший скриптовый язык, позволяющий писать любые сценарии и программы по автоматизации работы роутера. Но не только роутера! Скриптовая команда /tool fetch позволяет организовать внешние GET и POST запросы на указанный URL и таким образом, обращаться к любому оборудованию или программам с открытыми API. Например, реализованы скрипты и библиотеки команд по управлению из Микротик модулями интернет реле и мониторинга среды (можно посмотреть и скачать здесь), получения сведений о погоде, оповещениях о событиях в Телеграмм и управления роутером через Телеграмм, определения времени восхода/заката солнца c организацией астрономического реле и т.д…
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии11

Umka и трактор: первый опыт практического применения нового языка

Время на прочтение4 мин
Количество просмотров8.9K

С весны нынешнего года я разрабатываю статически типизированный встраиваемый скриптовый язык Umka, о концепции которого в своё время была статья на Хабре. При этом по своей основной профессии я занимаюсь алгоритмами систем автоматического руления тракторами — о некоторых подходах к комплексированию датчиков в этих системах я тоже писал. Теперь эти два направления деятельности причудливо пересеклись.

Для исследования поведения трактора в некоторых специфических сценариях (например, на склонах при наличии бокового проскальзывания) понадобился программный симулятор трактора, который верно моделировал бы не только кинематику, но и динамику машины. При этом алгоритм контроллера руления предполагалось постоянно видоизменять и немедленно наблюдать эффект этих изменений. Для такой задачи тандем C++ и Umka выглядел вполне органичным: основной код симулятора, требующий высокого быстродействия, был реализован на C++, а логика контроллера была вынесена в скрипт на Umka.

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

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии4

Есть ли параллелизм в произвольном алгоритме и как его использовать лучшим образом

Время на прочтение15 мин
Количество просмотров6.6K

Параллелизации обработки данных в настоящее время применяется в основном для сокращения времени вычислений путем одновременной  обработки данных по частям на множестве различных вычислительных устройств с последующим объединением полученных результатов. Параллельное выполнение позволяет “обойти” сформулированный лордом Рэлеем в 1871 г. фундаментальный закон, согласно которому (в применимости к тепловыделению процессоров) мощность их тепловыделения пропорциональна четвертой степени тактовой частоты процессора (увеличение частоты вдвое повышает тепловыделение в 16 раз) и фактически заменить его линейным от числа параллельных вычислителей – при сохранении тактовой  частоты). Ничто не дается даром – задача выявления (обычно скрытого для непосвящённого наблюдателя, [1]) потенциала параллелизма в алгоритмах не является "лежащей на поверхности", а уж эффективность его (параллелизма) использования – тем более.

Далее читать
Всего голосов 14: ↑13 и ↓1+12
Комментарии38

Расчет перцентилей для мониторинга высоконагруженных систем

Время на прочтение5 мин
Количество просмотров11K


Привет, меня зовут Игорь, и я разработчик решений на Tarantool в Mail.ru Group. Я работаю над витринами маркетинга в реальном времени для Мегафона. При мониторинге часто требуется использовать перцентили. Они позволяют понять, как система работает бóльшую часть времени, в отличие от усреднения значений, которое сильно подвержено влиянию выбросов. Если 9 из 10 запросов выполняются за 1 секунду, а один за 10 секунд, то среднее будет 1,9 секунды, а 50-перцентиль — 1 секунда. Это лишь один пример того, что среднее значение не подходит для мониторинга. Возникает необходимость считать перцентили, для этого мы добавили в tarantool/metrics Summary-коллектор.

Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии9

Истории

Как я решил сделать игру, вдохновившись Heroes of Might and Magic, и потерял деньги (часть 3)

Время на прочтение8 мин
Количество просмотров21K

Данная история состоит из трёх частей, т.к. я выпустил три игры:

●     Beasts Battle

●     Necromancer Returns

●     Magicians Legacy

 

В прошлых частях я рассказал, как я пришел к разработке гексагональной пошаговой игры Beasts Battle и как не отбились мои расходы на игру Necromancer Returns.

Здесь можно почитать первую и вторую статьи. 

 

Фальстарт

В феврале 2018 года вышла игра Necromancer Returns, которая не оправдала мои ожидания по продажам, и я ушел в депрессию. Но в апреле 2018 года у меня возникла мысль сделать следующую игру на основе этого движка, только чтобы вся графика была уже нарисована в 3D и отрендерена под 2D в изометрии. Мысль была такая: “по-быстрому” придумать новый мир, нарисовать его, запихнуть новых юнитов — и готово. Я списался с художником, который подключился в конце разработки Necromancer Returns и стал для меня основным. Он полностью перерисовал весь интерфейс для мобильной версии Necromancer Returns, а потом мы обновили и версию в Steam. 

Читать далее
Всего голосов 50: ↑46 и ↓4+42
Комментарии38

Тестируем играючи: мастер-мастер репликация в Tarantool

Время на прочтение10 мин
Количество просмотров3.6K


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


Каждый игрок будет некоторым узлом, который меняет данные в игровом мире. Эти данные реплицируются между узлами. Таким образом, репликация Tarantool будет являться своего рода транспортом для игрового процесса.

Всего голосов 37: ↑36 и ↓1+35
Комментарии32

Как я решил сделать игру, вдохновившись Heroes of Might and Magic, и потерял деньги (часть 1, 2)

Время на прочтение12 мин
Количество просмотров65K
Данная история будет состоять из трёх частей, т.к. я выпустил три игры:

  • Beasts Battle
  • Necromancer Returns
  • Magicians Legacy

Часть‌ ‌1


Для тех кто предпочитает смотреть, а не читать, я подготовил видео этой статьи.


В каждом выпуске будут цифры по каждой игре, какой бюджет и доход принесли игры…

Сразу скажу, я – фанат серии Heroes of Might and Magic и King's Bounty. Играл почти во все части и аддоны, за исключением седьмой части, т.к. время идет, жизнь меняется и на игры времени не осталось.
Всего голосов 139: ↑138 и ↓1+137
Комментарии108

Мобильные танки и тесты: интервью о тестировании World of Tanks Blitz

Время на прочтение9 мин
Количество просмотров11K


У всех есть какое-то представление о франшизе World of Tanks. Но, как правило, оно «снаружи» (пользовательское) и общее. А что, если посмотреть изнутри, и рассмотреть какие-то очень конкретные вопросы? Скажем, на каком языке пишут тесты для мобильной World of Tanks Blitz, и по каким причинам выбрали его?


Студия разработки мобильных «танков» MS-1 компании Wargaming присутствовала на нашей конференции Heisenbug, и там мы позадавали такие вопросы Дмитрию Сычеву — Lead QA Automation в World of Tanks Blitz. А теперь решили для Хабра сделать и текстовую версию этого небольшого разговора.

Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии1

OBS Studio Lua Скриптинг. Часть 2

Время на прочтение13 мин
Количество просмотров6.5K

Всем привет, в этой части руководства рассмотрим: фильтры, сцены, предметы сцен, Frontend API, создание функциональных фильтров и прочее...


С первой частью можно ознакомиться по этой ссылке.


КДПВ сделана в OBS 26.0.0

Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

OBS Studio Lua Скриптинг

Время на прочтение8 мин
Количество просмотров12K

Всем привет, в этом руководстве рассмотрим создание скриптов для OBS на языке Lua.


Скриптинг в OBS доступен начиная с версии 21, на данный момент новейшая 26.0.0-rc3 версия доступна для тестирования.Обновление включает в себя виртуальную веб камеру (пока что только на Windows), улучшенный UI, возможность скриншота любого источника( КДПВ была сделана с помощью этой функции).


image

Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии11

Транслитерация русского текста для отправки сообщений в Телеграмм из Микротик РоутерОС

Время на прочтение3 мин
Количество просмотров3.7K
Недавно я написал функцию-конвертер для отправки сообщений на русском языке в Телеграмм из Микротик РоутерОС, о чём сообщил здесь.

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

Преобразование символов происходит согласно ГОСТ 7.79-2000 (система Б). Особые правила транслитерации имён не учитываются, за исключением особого преобразования окончаний «ЬЕ» траслитерируется как «IE» и «ЫЙ» как «IJ».
Читать дальше →
Всего голосов 4: ↑3 и ↓1+2
Комментарии9

Функция-конвертер для отправки сообщений на русском языке в Телеграмм из Микротик РоутерОС

Время на прочтение5 мин
Количество просмотров10K
Мессенджер Телеграмм крайне удобен для уведомления о работе IT-оборудования, чем активно пользуются СисАдмины. Популярные WhatsApp и Viber поддерживают API но в них нет встроенной технологии создания своих ботов.

РоутерОС известной компании Микротик не позволяет штатными средствами отправлять сообщения на русском языке в Телеграмм. Русские символы могут быть адекватно отображены в сообщениях, если отправлены в кодировке UTF-8. Ну что же коды известны, почему бы не написать перекодировщик?

Для упрощения задачи я не пользовался алгоритмами преобразования, а создал ключевой массив, содержащий в виде ключей сами русские символы в строковой и прописной раскладках, а в соответствующих им значениях — коды этих символов в UTF-8.

Вот этот массив данных, может и для других задач пригодится:

Ключевой массив символов русского алфавита и значений их кодов в UTF8
#  table of the codes of Russian letters UTF8
:local rsimv [:toarray {"А"="D090"; "Б"="D091"; "В"="D092"; "Г"="D093"; "Д"="D094"; "Е"="D095"; "Ж"="D096"; "З"="D097"; "И"="D098"; "Й"="D099"; "К"="D09A"; "Л"="D09B"; "М"="D09C"; "Н"="D09D"; "О"="D09E"; "П"="D09F"; "Р"="D0A0"; "С"="D0A1"; "Т"="D0A2"; "У"="D0A3"; "Ф"="D0A4"; "Х"="D0A5"; "Ц"="D0A6"; "Ч"="D0A7"; "Ш"="D0A8"; "Щ"="D0A9"; "Ъ"="D0AA"; "Ы"="D0AB"; "Ь"="D0AC"; "Э"="D0AD"; "Ю"="D0AE"; "Я"="D0AF"; "а"="D0B0"; "б"="D0B1"; "в"="D0B2"; "г"="D0B3"; "д"="D0B4"; "е"="D0B5"; "ж"="D0B6"; "з"="D0B7"; "и"="D0B8"; "й"="D0B9"; "к"="D0BA"; "л"="D0BB"; "м"="D0BC"; "н"="D0BD"; "о"="D0BE"; "п"="D0BF"; "р"="D180"; "с"="D181"; "т"="D182"; "у"="D183"; "ф"="D184"; "х"="D185"; "ц"="D186"; "ч"="D187"; "ш"="D188"; "щ"="D189"; "ъ"="D18A"; "ы"="D18B"; "ь"="D18C"; "э"="D18D"; "ю"="D18E"; "я"="D18F"; "Ё"="D001"; "ё"="D191"}]


Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии15

Распределенные блокировки с применением Redis

Время на прочтение12 мин
Количество просмотров23K
Привет, Хабр!

Сегодня мы предлагаем вашему вниманию перевод сложной статьи о реализации распределенных блокировок средствами Redis и предлагаем поговорить о перспективности Redis как темы. Анализ рассматриваемого алгоритма Redlock от Мартина Клеппмана, автора книги "Высоконагруженные приложения", приведен здесь.
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии6

Ближайшие события

Кто такая эта Ваша Pandora и при чем здесь Tarantool

Время на прочтение5 мин
Количество просмотров6.1K


Привет, меня зовут Иван, и я занимаюсь разработкой высоконагруженных решений на Tarantool. Я расскажу про то, как и почему мы выбрали Pandora для нагрузочного тестирования приложения на Tarantool, а также покажу пример, как ей воспользоваться.

Читать дальше →
Всего голосов 9: ↑6 и ↓3+3
Комментарии0

Магия 2-х строк на Lua или как донести исходные заголовки HTTP Authorization header-авторизации до web-сервиcа

Время на прочтение4 мин
Количество просмотров3K
Статья будет полезна тем:

  • кому необходимо задействовать несколько видов авторизации в одном запросе к серверу;
  • кто хочет открывать сервисы мира Kubernetes/Docker в общий интернет, не задумываясь о способах защиты конкретного сервиса;
  • думает, что всё уже кем-то сделано, и хотел бы сделать мир немного удобнее и безопаснее.

Предисловие

Сервисы, которые становятся доступны через Kubernetes, имеют богатый набор способов авторизации. Один из наиболее модных – это заголовок Authorization: Bearer — это, например: JWT-авторизация (JSON Web Token) с передачей множества ключей, а следовательно, и значений, в одном заголовке. Встречаются и Basic-авторизации, например для Registry (хранилище образов Docker). Данная авторизация не использует Cookie и автоматически добавляется браузером (кроме Safari — там есть нюансы, которые мы пока не решаем) ко всем запросам к серверу.
Читать дальше →
Всего голосов 9: ↑7 и ↓2+5
Комментарии0

HackTheBox. Прохождение Traceback. Бэкдор, LUA, SSH

Время на прочтение2 мин
Количество просмотров8.9K

Продолжаю публикацию решений, отправленных на дорешивание машин с площадки HackTheBox.

В данной статье эксплуатируем чей-то бэкдор, получаем шелл через Luvit и возимся с SSH для LPE.

Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ.

Организационная информация
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.
Читать дальше →
Всего голосов 5: ↑5 и ↓0+5
Комментарии1

Asterisk — это болид «Формулы-1», а не рейсовый автобус

Время на прочтение13 мин
Количество просмотров8.9K

Asterisk — фи, это же моветон


Здравствуйте уважаемые читатели этого замечательного ресурса. По уже сложившейся традиции — являюсь давним читателем habr'а, но только сейчас решил сделать пост. Что, собственно, побудило к написанию? Честно сказать, и сам не знаю. То ли притянутые статьи о производительности FreeSWITCH/Yate/3CX/etc в сравнении с Asterisk, то ли действительные, реальные проблемы архитектуры последнего, а, возможно, желание сделать что-нибудь уникальное.


И что удивительно, в первом случае, как правило, сравнивают мягкое и теплое, так сказать, FreeSWITCH/Yate/etc и FreePBX. Да-да, именно FreePBX. Это не опечатка. Причем интересно, что во всех сравнениях зачастую один Asterisk в дефолтной конфигурации. Ну, вы знаете, эта конфигурация — загруженные все имеющиеся модули, кривой диалплан (FreePBX как бы способствует) и куча остальной необъективщины. Что до родовых болячек Asterisk'а — да, объективно их вагон и маленькая тележка.


Что со всем этим делать? Разрушать стереотипы и исправлять родовые травмы. Этим и займемся.

Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии31

Создаём с нуля высоконагруженное приложение на Tarantool

Время на прочтение34 мин
Количество просмотров14K

image


В 2013 я пришел в Mail.ru Group, и я решал задачу, в которой мне нужна была очередь. Есть много разных инструментов для построения очередей, но я решил для начала узнать, что уже имеется в компании. Услышал, что есть такой продукт — Tarantool. Узнал, как он устроен, и мне показалось, что в него отлично может быть встроен брокер очередей.


Я пошёл к главному по Tarantool — Косте Осипову — и постарался объяснить, что я хочу получить. Предполагалось, что код очереди будет написан на C, как и остальной код Tarantool, но… На следующий день Костя дал мне скрипт на 250 строк, который реализовывал почти всё, что я хотел.


С того момента я влюбился в Tarantool. Оказалось, что можно написать совсем немного кода на очень простом скриптовом языке и получить совершенно новую для этой СУБД функциональность.


Прошло много времени, Tarantool развивался, в том числе и под влиянием наших запросов, но основные идеи и подходы сохранились. Я расскажу, как реализовать собственную очередь на современном Tarantool, например версии 2.2.

Читать дальше →
Всего голосов 49: ↑46 и ↓3+43
Комментарии8

Как мы в ZeroTech подружили Apple Safari и клиентские сертификаты с websocket-ами

Время на прочтение10 мин
Количество просмотров1.2K
Статья будет полезна тем, кто:

  • знает, что такое Client Cert, и понимает для чего ему websocket-ы на мобильном Safari;
  • хотел бы публиковать web-сервисы ограниченному кругу лиц или только себе;
  • думает, что всё уже кем-то сделано, и хотел бы сделать мир немного удобнее и безопаснее.

История веб-сокетов началась примерно 8 лет назад. Ранее использовались методы вида долгих http-запросов (на самом деле ответов): браузер пользователя отправлял запрос на сервер и ждал, пока он ему что-то ответит, после ответа подключался вновь и ждал. Но потом появились веб-сокеты.
Читать дальше →
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Эволюция real-time Web: примеры из практики (или с чем Lua справляется лучше JS)

Время на прочтение9 мин
Количество просмотров6.1K
Карантин и переход на удаленку наводят на ностальгические воспоминания о полном жизни офисе, когда вместо звонков и трансляций мы работали и собирались на хакатонах в одной комнате с коллегами. Сегодня вспомним хакатон, где мы писали веб-сервер на Lua, а заодно кратко пробежимся по истории развития real-time web. Под этим термином мы будем понимать технологии, которые позволяют делать в браузере вещи, сравнимые по UX с десктопными приложениями — когда отклик на действия или события приходит сразу. Вспомним, как это делалось раньше, как делается сейчас, сравним существующие решения и расскажем, что и как используем сами. Видео-версию оригинального доклада можно посмотреть на нашем канале.

История


iframe


Начнем с начала нулевых — многие, наверное, помнят чаты на iframe. Сейчас уже сложно назвать это real-time технологией, но тем не менее. Принцип работы — в HTML-документ с помощью тега iframe встраивается содержимое другой веб-страницы — например, блок с чатом в игре. При обновлении этой встроенной части вся остальная страница не обновляется.

Вспомнить все
Всего голосов 7: ↑6 и ↓1+5
Комментарии7