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

Lua *

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

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

Как мы реализовали аутентификацию трафика для MSA на базе монолита

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров481

Привет, Хабр! Меня зовут Салахутдинов Дмитрий, я принципал инженер в СберМаркете. Занимаюсь развитием Ruby-платформы и масштабированием системы через декомпозицию монолита на сервисы.

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

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

Новости

Обнаружение SSH-туннелей по размеру пакетов

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров17K

Иллюстрация из книги «Справочник киберсантехника»

Протокол SSH — очень мощный инструмент, который используется для удалённой консоли или передачи файлов (scp, sftp). Есть менее известная функция перенаправления портов. Такие SSH-туннели используются для пробития файрволов и хорошо скрываются от обнаружения стандартными средствами мониторинга типа Trisul, Zeek (ранее был известен как Bro), Suricata и Snort. Поэтому для их обнаружения в корпоративной сети используются другие методы.
Читать дальше →
Всего голосов 74: ↑70 и ↓4+66
Комментарии23

Звуковые файлы в Lua

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров1.5K

Рассказываю как просто сделать функцию для воспроизведения  звука в различных форматах в скриптах Lua.

Читать далее
Всего голосов 8: ↑4 и ↓40
Комментарии1

Про Vim — Neovim (Lua) PHP IDE

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров4.2K

По большому счету единственной незакрытой темой в рубрике "Про Vim" осталась тема об альтернативе Conqueror of Completion для Neovim в Lua исполнении. Причиной перерыва между данной и предыдущей статьей в рубрике стало отсутствие необходимости в этой самой альтернативе. Ну или вернее причина может быть и была: во-первых - что бы удовлетворить любопытство, во-вторых - CoC действительно кажется громоздким и достаточно сложным внутри. Вариант на Lua мне бы дался легче, если бы захотелось что-то в нем подшаманить. Наверное.

Читать далее
Всего голосов 8: ↑7 и ↓1+6
Комментарии2

Истории

Построение планов параллельного выполнения программ для процессоров со сверхдлинным машинным словом (проект)

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров2.2K

Процессоры архитектуры  сверхдлинного машинного слова (VLIW - Very Long Instruction Word) относятся к специфическим классам архитектур, прямо нацеленным на использование внутреннего параллелизма в алгоритмах (программах), причём параллелизм этот анализируется и планируется к рациональному использованию при вычислениях на программном уровне; собственно аппаратная часть освобождается от процедур распараллеливания  (и поэтому должна стать проще и экономичнее использующих внутреннее распараллеливание).

VLIW-подход основан на идее загрузки во входной буфер процессора одновременно набора (bundle) допускающих параллельное выполнение  машинных команд и исполнения этого ряда команд аналогично единой команде в процессорах классической архитектуры. VLIW-процессоры реализуют параллелизм уровня ILP (Instruction-Level Parallelizm, параллелизм уровня машинных инструкций) и SMP (Symmetric MultiProcessing, системы с общей памятью)   идеологему работы с оперативной памятью. Несмотря на выпуклое преимущество (программным путём дешевле реализовать сложные процедуры параллелизации), работа VLIW-процессоров сопряжена с известными проблемами. Среди них называют статичность полученных планов параллельного выполнения и проблемы с излишней неравномерностью времени доступа к оперативной памяти разных вычислительных ядер   (временна́я антиплотность кода,   следствием является резкое снижение производительности из-за неизбежности  определять время выполнения всей связки команд сверхдлинного слова по продолжительности наиболее длинной из них).

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

Программирование в Roblox для детей: как создать игру при помощи нейросети

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров2.2K

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

Читать далее
Всего голосов 7: ↑5 и ↓2+3
Комментарии3

Мойофис: автоматизация отчётности в банке

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров3.6K

Опыт разработки макросов и надстроек для Мойофис показал, что можно автоматизировать практически любой процесс, который раньше выполнялся с использованием Excel и макросов на VBA. А надстройки (о них не сегодня) вообще позволяют создавать корпоративные инструменты в связках "Python-Мойофис", "Nanocad-Мойофис" и т. п. Вот пример одной учебной задачи по автоматизации отчетности в Таблице Мойофис.

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

TLS Client Hello — перехватываем и парсим — Nginx + Lua / Go

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров3.1K

Возникла на днях достаточно интересная задачка - по образу сайта https://www.howsmyssl.com/ получить на страничке список Cipher Suites которые при TLS Handshake клиент передает в своем Client hello.

А заодно обдумать инструмент, который позволит работать с другими заголовками, в частности - Proxy-Connection

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

Искусственный интеллект GPT и скрипты Микротик

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров10K
Я не профессиональный программист и не специалист IT, но увлекался программированием с юности, когда мы писали на Бейсике и Ассемблере для первого советского персонального компьютера ПЭВМ АГАТ и даже умудрились оставить определенный след в его истории.

С того времени утекло много воды, я получил другую профессию, но увлечение своё полностью не оставил (я стал врачом и работаю по специальности с 2000 г., но оно помогает мне в работе всю жизнь). В 2013 году возникла необходимость «провести интернет» в загородный дом. Тогда то, я и познакомился впервые с роутерами Микротик. В сетевых технологиях я, на то время не знающий что такое IP-адрес (условно), возможно, не сильно продвинулся выше начального уровня (да и не было необходимости в сложных настройках Микротик), а вот программирование на скриптовом, Lua-подобном, языке Роутер ОС почему-то захватило меня целиком, даже временно в ущерб основной работе в каких-то аспектах. Конечно, до профессионального уровня я, самоучка, не дошёл, но написал за это время немало полезных и достойных по сложности скриптов для Микротик (неполный список моих работ представлен здесь).
Читать дальше →
Всего голосов 9: ↑6 и ↓3+3
Комментарии25

Продолжаем изучать аппаратные возможности расширения Микротик RBM33G

Время на прочтение17 мин
Количество просмотров6.6K
В своей предыдущей статье я рассказал о возможностях расширения «обвеса» Микротик RBM33G и некоторых особенностях этой платы, в частности интегрированном GPIO-интерфейсе. Я не остановился на достигнутом и продолжил свои опыты, чем и хочу поделиться с читателем. Модули реле через GPIO мы уже подключали к роутеру в предыдущей статье, повторяться не буду. Опишу некоторые другие плюшки.

Чтобы использовать GPIO, в предыдущей статье мы отключали его от второго (serial1) последовательного порта RBM33G. Первый (serial0) порт по умолчанию занят консолью для подключений через DB9-разъем на лицевой панели платы. Предлагаю на время вернуть настройку serial1 по умолчанию:

/system routerboard settings set gpio-function=serial1

Чтобы изменения вошли в силу, нужна перезагрузка:

/system reboot

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

Реверс мобильных приложений на cocos2dx

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров2.4K

Хочу поделиться своим опытом в реверс инженеринге приложения на lua cocos2d-x. Файлы приложения зашифрованы xxtea, а ключи шифрования находятся в .so файле внутри приложения.

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

Как я столкнулся с Tarantool-ом: разбор подводных камней на примере микросервисного pet-проекта

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров2.6K

Привет, Хабр! Меня зовут Сергей Скубач, я работаю в VK и разрабатываю облачное хранилище WorkDisk. Мы используем Tarantool в своём продукте, так как его разрабатывают и развивают наши коллеги. Я впервые столкнулся с Tarantool именно в VK, и для более глубокого понимания решил попробовать использовать его в своём pet-проекте.

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

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

Бюджетно снаряжаем Микротик RBM33G для «дальнего боя»

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров11K
Микротик OEM RouterBoard RBM33G далеко не новинка и хорошо известна среди специалистов и пользователей Микротик. Она была создана производителем для того, чтобы дать каждому возможность самому «сконструировать» свой роутер. В настоящее время эта плата вовсе не устарела, активно используется и полна интересных «сюрпризов» для тех, кто не знает всех её возможностей.

Эта небольшая по размеру, весьма производительная плата (на борту двухядерный процессор MediaTek MT7621 880Мгц с 16Мб flash-памяти и 256Мб DDR3 RAM), имеет ещё целый ряд аппаратных возможностей к расширению – два слота mini PCI-e для установки модулей модемов и/или wifi-радиокарт), слот microSD для дополнительной карты памяти (расположен на оборотной стороне платы), M.2 слот для установки SSD, что позволяет с избытком восполнить недостаток flash-памяти на самой плате.


Рис. 1 RBM33G Внешний вид платы. Вверху слева направо разъемы: 2 miniPCI-e, M.2, USB.
Читать дальше →
Всего голосов 22: ↑22 и ↓0+22
Комментарии26

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

Renga STDL: краткий обзор языка для расширения функциональности программы Renga

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров2.4K

Renga - программа для проектирования зданий, с помощью которой можно создать трёхмерную модель, включающую инженерные конструкции, коммуникации и всю информацию о них. Затем из этой модели можно получить чертежи и спецификации. Renga работает под Windows и написана на C++.

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

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

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

Новые возможности в скриптах Роутер Ос 7 Микротик

Время на прочтение10 мин
Количество просмотров12K
Появления Роутер ОС 7 давно ждали. Новая система создавалась разумеется для более производительных устройств, имеющих новые процессоры и больше оперативной памяти. Новое ядро Linux, поддержка WireGuard и ZieroTier, новые возможности маршрутизации и BGP, новый users manager, обновление MPLS, запуск приложений в контейнерах далеко не полный список новинок.

Но в этой статье мы будем обсуждать нововведения только в скриптовом языке системы вплоть до актуальной beta версии 7.12.
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии28

Lua FFI

Уровень сложностиСредний
Время на прочтение20 мин
Количество просмотров3.5K
Под катом описание довольно примитивного FFI для Lua под x64 windows, а теперь ещё и linux (и не только, SysV ABI).

Но который, тем не менее, позволяет делать:

local ffi = require ("ffi")
local msg = ffi("user32.dll", "MessageBoxA")
msg(0, "Message", "Title", 0)

или взять, например glfw3.dll, и путём

local glfw = ffi("glfw3")

сделать все экcпортируемые библиотекой glfw3.dll функции доступными для вызова из Lua.

Размер самой ffi.dll при этом получился аж 9 Кбайт, вот она целиком на картинке размером 32х96 пикселей. Можно сохранить это изображение, сконвертировать в bmp (хабр не умеет в bmp, пришлось дополнительно упаковать в png), потом руками удалить первые 54 байта заголовка (до 'MZ') и пользоваться.


Но очень осторожно, так как в результате всё-таки получилось, что в аккуратную детскую песочницу Lua залезли грязными сапогами, притащили туда всякие небезопасные штуки из С, вроде ручного управления памятью и обращения с указателями вида *(double*) (void * ptr), и вообще использование таких вещей учит всякому нехорошему.

Тут недавно выходил ряд статей про «вредные советы» в программировании «60 антипаттернов для С++ программиста». Под катом можно найти практическое воплощение большинства из них, не всех конечно, но только потому, что не все из них применимы к С, без плюсов :)
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии8

Как создать свой мод для Cyberpunk 2077? Шерстим исходники, Lua, C++ и Python

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

Недавно мой коллега @Doctor_IT попросил помочь с его проектом — VR-жилетом, который «проецирует» ощущения урона, которые получает персонаж, на тело игрока. С моей стороны — мод, который будет отправлять данные из Cyberpunk 2077 на сам жилет.

Информации по теме моддинга мало, на русском языке материалов практически нет, а существующие статьи местами устарели — пора это исправить. Если вам интересно, как разработать свой мод для Cyberpunk 2077 и собрать VR-жилет, добро пожаловать под кат.
Читать дальше →
Всего голосов 50: ↑50 и ↓0+50
Комментарии10

Расшифровка доклада: О чём я говорю, когда говорю о тестировании корректности работы компиляторов

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров1.8K

Привет, Хабр! Эта статья о том, как тестируют компиляторы. Она будет интересна разработчикам  и тестировщикам компиляторов, а также всем, кто тестирует сложные технологии. Разберём проблемы тестирования LuaJIT и подходы к решению: неструктурированный фаззинг, синтаксический, семантический, сравнительный фаззинги и тестирование оптимизаций. Статья написана на основе доклада Сергея Бронникова из Tarantool на конференции Highload.

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

Создание надстроек для отечественного офисного пакета «МойОфис». Часть 4. Разбираем структуру

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров1.4K

В заключительной части данного цикла, в котором я постарался на минимальном уровне создать более-менее удобную среду для начала (!) экспериментов по изучения возможностей перевода автоматизации работы с документами из Microsoft Office в «МойОфис».

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

Закроем тему!
Всего голосов 3: ↑3 и ↓0+3
Комментарии35

Создание сервера для онлайн ММО игр на PHP ч. 9 — Игровые серверные механики

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров5K

После успешной оптимизации клиентской части и серверной архитектуры пришла пора писать механики самой игры для взаимодействия по API — я называю их событиями (они вешаются на какой либо игровой объект на сервере, помещаются в очередь и срабатывают когда придет их время).

Суть работы взаимодействия сервера и клиентской части следующая:

Читать далее
Всего голосов 10: ↑7 и ↓3+4
Комментарии31
1
23 ...