В статье расскажу про задачу и её решение, связанную с организацией лимитов для выполнения различных операций и http запросов. Изначально задача звучала как создание распределенного решения, библиотека или микросервис на основе хранилища в redis, который бы мог обеспечить достаточный уровень отказоустойчивости и наблюдаемости. Функциональные и не функциональные требования были обычными для подобной задачи и казалось, что можно обойтись стандартным готовым решением, но не тут то было.

Lua *
Скриптовый язык программирования
Новости
ОС реального времени в эмуляторе Mario, или Как устроены потоки

В своём предыдущем посте о потоках я привёл импровизированное сравнение1:
Потоки2 — это просто состояния сохранения3 эмулятора4, связанные с условием, при котором продолжается их выполнение.
В тот момент я подумал, что это неплохая аналогия, но не мог перестать размышлять о ней. Я какое-то время крутил её в голове. Мне кажется, что у этой аналогии есть серьёзный потенциал в качестве инструмента обучения.
Поэтому я добавил многопоточность в Super Mario Bros. для NES.
Реализация self-hosted карт в закрытом контуре

На связи разработчики продукта Аврора Центр компании Открытая мобильная платформа. Сегодня мы расскажем как реализовать сервис self-hosted карт в закрытом контуре.
Наша компания активно развивается и добавляет новый функционал в продукт по удалённому управлению устройствами — Аврора Центр (UEM-решение, которое позволяет управлять устройствами и жизненным циклом приложений на ОС Аврора, Android и Linux). Так по запросам заказчиков было решено добавить отображение геопозиции мобильного устройства на карте территории России. И вот перед нами встаёт задача по работе с картами в АЦ.
Обходим подводные камни работы с UDA в коде на Lua для ScyllaDB: дружим Java-драйвер и пустые значения

Привет, Хабр! Мое имя Александр Коваль, я разработчик IoT-сервисов в МТС Web Services. Сейчас ScyllaDB поддерживает ограниченное количество функций, в том числе агрегационных. В стандартном наборе: min, max, count, avg. Но ее функциональность расширяется двумя типами пользовательских функций: скалярными (scalar functions) и агрегационными (aggregate functions). Первые работают со значениями одной строки, а вторые — нескольких. Реализовать такие функции можно на Lua или Rust.
В процессе работы с агрегационными функциями можно столкнуться с тем, что ScyllaDB и Java-драйвер по-разному обрабатывают пустые значения. В этом посте я расскажу, как это можно решить относительно просто и без сложных дополнительных телодвижений. Для примера возьму код на Lua и покажу, как он реализуется в виде функции ScyllaDB.
Дисклеймер: этот материал написан на основе личного опыта — все решения получены методом проб и ошибок. Конструктивные предложения и советы по их улучшению приветствуется. Код с примерами и ссылки на ресурсы можно найти у меня в репозитории GitHub.
Что такое Lua: почему стоит его попробовать и как встроить в программу на Go
Lua — это лёгкий, быстрый и гибкий скриптовый язык, который появился в 1993 году. Он написан на C и чаще всего используется не как самостоятельный язык, а как встраиваемый инструмент для других приложений.
Если вы играли в World of Warcraft и устанавливали аддоны, вы уже сталкивались с Lua. Redis исполняет Lua-скрипты внутри себя. Lua используется в Nginx через модуль ngx_http_lua_module, который позволяет писать обработчики HTTP-запросов. В NeoVim плагины тоже можно писать на Lua. Короче говоря — язык не из популярных топов, но крайне полезен и встраиваем во многие инфраструктурные решения.
Я опишу главные особенности языка и приведу небольшой пример использования из Go.
Пишем игру на LUA для часов Xiaomi Redmi Watch 4.Часть 1. Знакомство с экосистемой Xiaomi

Всем привет, меня зовут Алексей Ляховский, я на протяжение последних 10 лет занимаюсь изучением, разработкой и развитием экосистемы часов Xiaomi для глобального сообщества.
Я разобрал формат циферблатов Xiaomi последних поколений, сделал распаковщик циферблатов, и компилятор их для оригинального старого редактора циферблатов Xiaomi, сделал мод MiFitness, где активные пользователи сообщества создают и публикуют кастом циферблаты для часов, собрал из китайского IDE отдельный автономный эмулятор часов, для проверки циферблатов и приложений, модифицирую и дорабатываю оригинальные прошивки часов, а так же создаю приложения для данных моделей на JerryScript и LUA, о чем мы познакомимся подробнее чуть позже на примере данной игры.
Недопонятый язык Lua

Lua — один из моих любимых языков программирования. Я использовал его для создания CMS на своём старом учебном сайте, для создания крутых IoT-устройств, для разработки мини-игр и экспериментов с децентрализацией сети. Однако экспертом по этому языку я нисколько себя не считаю. Разве что просто разбирающимся в нём пользователем. Я имею в виду, что работал с ним в различных контекстах и на протяжении многих лет, но не вникал глубоко в его реализацию или экосистему.
Так что меня немного расстраивает, когда я читаю о нём статьи и посты, в которых сквозит абсолютным непониманием сути и контекста применения этого языка. Чаще всего такие статьи выглядят как набор неких требований. Из последних могу вспомнить пост на LWN, где автор жаловался на «недокомплект» Lua, и обсуждение этого поста на Hacker News, которое побудило меня написать встречную статью, чтобы ответить на некоторые прозвучавшие в нём комментарии.
Lua в Nginx: динамическая маршрутизация запросов

Привет, Хабр!
Сегодня рассмотрим, как использовать Lua в Nginx: динамическую маршрутизацию, балансировку трафика, подмену заголовков и трансформацию тела запроса в реальном времени. OpenResty и lua-nginx-module позволяют перенести часть логики на уровень веб-сервера, сокращая задержки и повышая гибкость.
Lua-скриптинг в mpv-плеере

Недавно у меня возникла необходимость непременно вырезать фрагмент из видео без перекодирования, и, разочаровавшись в очередной раз в LosslessCut, я отправился искать альтернативы.
На Reddit-е я наткнулся на пост, где утверждалось, что для этого можно использовать скрипт mpv-cut, который работает без внешнего графического интерфейса и дополнительных программ.
При ближайшем рассмотрении mpv-cut оказался скриптом на lua, который позволял вырезать кусок из видео прямо в процессе просмотра в плеере mpv. Я как-то не предполагал, что mpv-плеер при всей своей минималистичности поддерживает скрипты, которые позволяют расширять его функциональность. И решил это дело тщательно разъяснить.
Я попробовал написать Dota 2 и Plants Vs Zombies в качестве мода для GTA San Andreas на Lua и вот что из этого вышло

Привет, меня зовут Дима, у меня есть совсем немного опыта разработки на Go, JavaScript и TypeScript, весь этот опыт был получен в очень маленьких личных проектах, однако у меня есть опыт разработки скриптов для GTA San Andreas и я решил попробовать написать свои пародии на популярные игры Dota 2 и Plants Vs Zombies в качестве мода для GTA:SA на языке Lua. Для разработки я использовал MoonLoader API и mimgui ("порт" Dear ImGui на Lua).
Создание прототипов игр на LÖVE

Одна из моих целей на 2025 год — создание завершённой игры. Завершённой, то есть её можно будет купить в Steam или App Store за $2,99 или около того. Я уже делал маленькие игры, но завершение и выпуск игры, вероятно, будет самым крупным моим проектом (если не считать блога).
В зимние каникулы я какое-то время писал прототипы игр на LÖVE — фреймворке для создания 2D-игр на Lua. Таким образом я хотел изучить инструменты разработки игр, подходящие к моему набору навыков, и определить свои сильные стороны, чтобы в 2025 году распоряжаться временем эффективно.
До работы над этими прототипами я написал примерно двести строк кода на Lua, но у меня не возникло никаких проблем в освоении нужного мне синтаксиса.
Оказалось, что API LÖVE простой и мощный. Одно из преимуществ использования фреймворка вместо игрового движка в том, что я могу показать вам полный пример всего в десяти строках кода (в отличие от игрового движка, где пришлось бы определять объекты сцены, прикреплять скрипты и так далее).
Как спроектировать игровую математическую модель, забалансить её и не сдуреть. Разбор на практических кейсах

Мы идём от общего к частному. Задаём системе вопросы на самом общем уровне и постепенно углубляемся в детализацию. Если на какой-то вопрос мы не смогли ответить, значит, скорее всего, мы пропустили какой-то более общий вопрос, от которого зависит рассматривая ступень детализации, в этом случае не стесняемся вернуться на один или несколько уровней абстракции назад.
Как использовать http внутри Minecraft?

Недавно, скучая после безумно скучного учебного дня и бездумно листая главную страницу моего любимого видеохостинга в поисках чего-нибудь интересного, мне попалось одно любопытное видео, сподвигшее к созданию невероятного.
Как можно видеть с самого видео, человек, нажимая на кнопку в Майнкрафте, включает у себя лампу в реальной жизни. Круто! Но как это работает?
Ближайшие события
Курс Roblox в 8–9 лет и старше: моделирование и программирование

Roblox и Roblox Studio – примечательная связка: благодаря данным средам и инструментам, доступным в них, даже младшие школьники могут научиться создавать первые простые игры и модели, а также писать код на языке Lua. Можно начать на курсах или отдать предпочтение бесплатным занятиям по видеоурокам: выбор за ребенком и его родителями. А мы хотим предложить импровизированный курс из 30 видеоуроков.
Мы в Pixel используем Roblox и Roblox Studio для обучения детей кодингу на языке «Луа», моделированию и созданию игр. Такой подход оправдан: условная вселенная Роблокса разработана в первую очередь для детей и подростков, увлекающихся геймингом и информационными технологиями.
Предлагаем рассмотреть импровизированный курс, состоящий из обучающих видеоуроков. Они посвящены Роблоксу и предназначены для детей 8–9 лет и старше. Но начнем с теории и опишем обозначенные инструменты: это поможет разобраться в основах, если нет их понимания.
Как сделать Game Pass в Roblox Studio (геймпасс в Роблокс) – урок для детей

Как создать геймпасс в Роблокс Студио? Предлагаем пошаговую инструкцию со скриншотами: она поможет разобраться. Предстоит выполнить несколько несложных действий: они приведут к результату в виде готового gamepass. Урок предназначен для детей и подростков.
Мы используем инструменты Roblox и Roblox Studio для обучения детей моделированию и программированию. Это онлайн-платформа для создания игр и игровой движок, предназначенные специально для детей и подростков. Но данные среды используются даже взрослыми: аудитория разработчиков и игроков по возрастной характеристике разнообразна, а по количеству превышает десятки млн человек (данные об активности в среднесуточном выражении).
Сегодня хотим предложить читателям бесплатный урок создания геймпасс в Роблоксе. Данный термин обозначает условный игровой пропуск, который можно будет продавать за робаксы (внутренняя валюта) и использовать для доступа к запретным картам, зонам, предметам и не только.
Наши преподаватели сделали простую и подробную инструкцию с описанием основных шагов и скриншотами: разобраться сможет даже новичок. В конце прикрепили обучающий видеоролик: он пригодится, если разобраться в текстовом руководстве не получится.
Как создать страшный лифт в Роблокс — обучение для школьников

В Roblox Studio дети могут создавать 3D-игры различных жанров. Один из самых популярных режимов — хорроры: комнаты испытаний, страшные лабиринты, тауэры, ловушки и другие ужастики. В этой инструкции мы хотим рассказать, как создать карту с опасным лифтом.
Данная игра представляет собой набор страшных уровней, между которыми игрок перемещается на лифте. Пользователю на нашей карте предстоит собирать предметы, которые будут добавлять ему очки счета, и ключи, которые будут открывать лифт на новые локации. Давайте научимся делать лифт и необходимые для игры предметы.
Программирование для подростков: выбор направления и советы преподавателей

Подростковый возраст – идеальное время для обучения детей чему-то новому. Кодинг не стоит считать исключением. Есть несколько подходящих и относительно простых языков и вспомогательных сред: Скретч и Роблокс, Python, в том числе в связке с Minecraft, C# и JavaScript. Разбираемся, с чего стоит начать.
Мы твердо уверены в следующем: если ребенку нравится играть в компьютерные игры, в том числе онлайн, то это не повод для ограничений, а основа развития ценных навыков. Нужно подтолкнуть школьника к тому, чтобы начать программировать: достаточно показать, скажем, что тот же «Питон» может применяться для моддинга в Майнкрафте, а C# – для создания игр на кроссплатформенном движке Unity. Но это лишь примеры.
Давайте разбираться в вопросах по поводу возраста и целесообразного маршрута. Для убедительности представим мнения наших преподавателей с опытом в обучении школьников программированию, разработке игр, созданию сайтов и другим IT-направлениям.
Адаптация прошивки USB GPIO EXTENDER T под нужды Микротик
Как создать игру Tycoon (Тайкон) в Roblox – туториал для детей

Хотите создать собственный экономический симулятор в Роблоксе и написать для него код на Lua? Тогда пригодится сегодняшняя пошаговая инструкция. Предлагаем ознакомиться с ней, чтобы разобраться, как сделать игру «Тайкун» в Roblox. Урок предназначен для детей от 8-9 лет и старше.
Tycoon game, или economic simulation game (ESG) – жанр компьютерных игр, основанных на строительстве, управлении и отображении сопутствующих экономических процессов. Цель игрока в данном смысле – получение виртуальных денежных средств. Одна из смежных задач – управление условным предприятием, функционирующим в сценарии, максимально приближенным к реальности.
В этом уроке мы будем строить, писать код и делать другие увлекательные вещи. Для создания Tycoon нам потребуется использовать инструменты Roblox и Роблокс Студио, а также язык программирования «Луа» для скриптинга. Сначала предложим текстовую инструкцию с подробными пояснениями и наглядными скриншотами, чтобы разбираться было проще, а в конце приложим обучающее видео: его просмотр поможет справиться с задачей, если туториал в виде текста покажется сложным.
Как создать игру PUBG: Battlegrounds в Roblox (ПАБГ) – 12 уроков

Предлагаем разобраться, как сделать ПАБГ в Роблоксе. Это популярная игра в жанре батл рояль (battle royale), в которую любят играть современные дети и подростки. Если вы в их числе, изучите представленную бесплатную инструкцию и видео: они помогут понять, как сделать клон PUBG в Roblox.
Мы пройдем весь путь от создания ландшафта до моделирования различных объектов (ангара, вышек, домов, гаража, внутренней части самолета и т. д.) и оформления дополнительных карт. Поделимся скриптами на Lua для таблицы игроков, телепорта, прыжка с парашютом, перемещения между картами, открытия и закрытия дверей, брони и т. д.
Сразу отметим, что текстовый гайд сложно воспринимать без минимальных знаний и опыта, но переживать не стоит: в каждом разделе есть ролик с подробными пояснениями от преподавателя. Благодаря им создание Battlegrounds в Роблоксе можно заметно упростить. Также подчеркнем, что работать быстро не удастся: каждый новый шаг потребует усидчивости и вдумчивости.
А теперь предлагаем приступить к сути без лишних отступлений.