
Когда много лет руководишь командами, легко забыть, каково это - просто сесть и закодить что-то самому.
Эта статья о том, как я сделал фэнтези-консоль под DOS, и снова влюбился в программирование.
Скриптовый язык программирования
Когда много лет руководишь командами, легко забыть, каково это - просто сесть и закодить что-то самому.
Эта статья о том, как я сделал фэнтези-консоль под DOS, и снова влюбился в программирование.
LuaJIT является одной из наиболее производительных реализаций динамического языка программирования. В этой статье мы рассмотрим, благодаря каким механизмам и подходам достигается такой результат. Эта статья не дает всех ответов, но задает необходимую базу и направления для самостоятельного изучения темы.
Меня зовут Максим Кокряшкин, я занимаюсь разработкой языковых рантаймов в Tarantool. Это решение класса middleware, разрабатываемое VK Tech, сочетающее в себе базу данных in-memory и application-сервер. Как раз таки наш application-сервер, который позволяет писать логику и хранимые процедуры, работает на LuaJIT
Сегодня у меня в работе самый популярный продукт линейки часов Xiaomi - Mi Band 9.
В данных моделях есть специальный режим мониторинга температуры, который, в случае перегрева выключает часы, сегодня мы посмотрим как это работает и я покажу как изменить поведение системы даже не меняя прошивку, создадим циферблат для управления функционалом на языке LUA
Однажды на собеседовании меня попросили привести примеры написанного мной кода: один — которым я наиболее горжусь, и другой — который я считаю наиболее неудачным. Недолго думая, я осознал, что на оба вопроса у меня готов ответ, и это один и тот же фрагмент кода. Горжусь я им потому, что, пожалуй, из всей моей практики именно этот код оказался наиболее весом, а стыжусь из-за него, так как, по мнению большинства из его читателей, этот код начался с костыля, который затем стали развивать:
В статье расскажу про задачу и её решение, связанную с организацией лимитов для выполнения различных операций и http запросов. Изначально задача звучала как создание распределенного решения, библиотека или микросервис на основе хранилища в redis, который бы мог обеспечить достаточный уровень отказоустойчивости и наблюдаемости. Функциональные и не функциональные требования были обычными для подобной задачи и казалось, что можно обойтись стандартным готовым решением, но не тут то было.
Потоки2 — это просто состояния сохранения3 эмулятора4, связанные с условием, при котором продолжается их выполнение.
На связи разработчики продукта Аврора Центр компании Открытая мобильная платформа. Сегодня мы расскажем как реализовать сервис self-hosted карт в закрытом контуре.
Наша компания активно развивается и добавляет новый функционал в продукт по удалённому управлению устройствами — Аврора Центр (UEM-решение, которое позволяет управлять устройствами и жизненным циклом приложений на ОС Аврора, Android и Linux). Так по запросам заказчиков было решено добавить отображение геопозиции мобильного устройства на карте территории России. И вот перед нами встаёт задача по работе с картами в АЦ.
Привет, Хабр! Мое имя Александр Коваль, я разработчик IoT-сервисов в МТС Web Services. Сейчас ScyllaDB поддерживает ограниченное количество функций, в том числе агрегационных. В стандартном наборе: min, max, count, avg. Но ее функциональность расширяется двумя типами пользовательских функций: скалярными (scalar functions) и агрегационными (aggregate functions). Первые работают со значениями одной строки, а вторые — нескольких. Реализовать такие функции можно на Lua или Rust.
В процессе работы с агрегационными функциями можно столкнуться с тем, что ScyllaDB и Java-драйвер по-разному обрабатывают пустые значения. В этом посте я расскажу, как это можно решить относительно просто и без сложных дополнительных телодвижений. Для примера возьму код на Lua и покажу, как он реализуется в виде функции ScyllaDB.
Дисклеймер: этот материал написан на основе личного опыта — все решения получены методом проб и ошибок. Конструктивные предложения и советы по их улучшению приветствуется. Код с примерами и ссылки на ресурсы можно найти у меня в репозитории GitHub.
Lua — это лёгкий, быстрый и гибкий скриптовый язык, который появился в 1993 году. Он написан на C и чаще всего используется не как самостоятельный язык, а как встраиваемый инструмент для других приложений.
Если вы играли в World of Warcraft и устанавливали аддоны, вы уже сталкивались с Lua. Redis исполняет Lua-скрипты внутри себя. Lua используется в Nginx через модуль ngx_http_lua_module, который позволяет писать обработчики HTTP-запросов. В NeoVim плагины тоже можно писать на Lua. Короче говоря — язык не из популярных топов, но крайне полезен и встраиваем во многие инфраструктурные решения.
Я опишу главные особенности языка и приведу небольшой пример использования из Go.
Всем привет, меня зовут Алексей Ляховский, я на протяжение последних 10 лет занимаюсь изучением, разработкой и развитием экосистемы часов Xiaomi для глобального сообщества.
Я разобрал формат циферблатов Xiaomi последних поколений, сделал распаковщик циферблатов, и компилятор их для оригинального старого редактора циферблатов Xiaomi, сделал мод MiFitness, где активные пользователи сообщества создают и публикуют кастом циферблаты для часов, собрал из китайского IDE отдельный автономный эмулятор часов, для проверки циферблатов и приложений, модифицирую и дорабатываю оригинальные прошивки часов, а так же создаю приложения для данных моделей на JerryScript и LUA, о чем мы познакомимся подробнее чуть позже на примере данной игры.
Привет, Хабр!
Сегодня рассмотрим, как использовать Lua в Nginx: динамическую маршрутизацию, балансировку трафика, подмену заголовков и трансформацию тела запроса в реальном времени. OpenResty и lua-nginx-module позволяют перенести часть логики на уровень веб-сервера, сокращая задержки и повышая гибкость.
Недавно у меня возникла необходимость непременно вырезать фрагмент из видео без перекодирования, и, разочаровавшись в очередной раз в LosslessCut, я отправился искать альтернативы.
На Reddit-е я наткнулся на пост, где утверждалось, что для этого можно использовать скрипт mpv-cut, который работает без внешнего графического интерфейса и дополнительных программ.
При ближайшем рассмотрении mpv-cut оказался скриптом на lua, который позволял вырезать кусок из видео прямо в процессе просмотра в плеере mpv. Я как-то не предполагал, что mpv-плеер при всей своей минималистичности поддерживает скрипты, которые позволяют расширять его функциональность. И решил это дело тщательно разъяснить.
Привет, меня зовут Дима, у меня есть совсем немного опыта разработки на Go, JavaScript и TypeScript, весь этот опыт был получен в очень маленьких личных проектах, однако у меня есть опыт разработки скриптов для GTA San Andreas и я решил попробовать написать свои пародии на популярные игры Dota 2 и Plants Vs Zombies в качестве мода для GTA:SA на языке Lua. Для разработки я использовал MoonLoader API и mimgui ("порт" Dear ImGui на Lua).
Одна из моих целей на 2025 год — создание завершённой игры. Завершённой, то есть её можно будет купить в Steam или App Store за $2,99 или около того. Я уже делал маленькие игры, но завершение и выпуск игры, вероятно, будет самым крупным моим проектом (если не считать блога).
В зимние каникулы я какое-то время писал прототипы игр на LÖVE — фреймворке для создания 2D-игр на Lua. Таким образом я хотел изучить инструменты разработки игр, подходящие к моему набору навыков, и определить свои сильные стороны, чтобы в 2025 году распоряжаться временем эффективно.
До работы над этими прототипами я написал примерно двести строк кода на Lua, но у меня не возникло никаких проблем в освоении нужного мне синтаксиса.
Оказалось, что API LÖVE простой и мощный. Одно из преимуществ использования фреймворка вместо игрового движка в том, что я могу показать вам полный пример всего в десяти строках кода (в отличие от игрового движка, где пришлось бы определять объекты сцены, прикреплять скрипты и так далее).
Мы идём от общего к частному. Задаём системе вопросы на самом общем уровне и постепенно углубляемся в детализацию. Если на какой-то вопрос мы не смогли ответить, значит, скорее всего, мы пропустили какой-то более общий вопрос, от которого зависит рассматривая ступень детализации, в этом случае не стесняемся вернуться на один или несколько уровней абстракции назад.
Недавно, скучая после безумно скучного учебного дня и бездумно листая главную страницу моего любимого видеохостинга в поисках чего-нибудь интересного, мне попалось одно любопытное видео, сподвигшее к созданию невероятного.
Как можно видеть с самого видео, человек, нажимая на кнопку в Майнкрафте, включает у себя лампу в реальной жизни. Круто! Но как это работает?
Roblox и Roblox Studio – примечательная связка: благодаря данным средам и инструментам, доступным в них, даже младшие школьники могут научиться создавать первые простые игры и модели, а также писать код на языке Lua. Можно начать на курсах или отдать предпочтение бесплатным занятиям по видеоурокам: выбор за ребенком и его родителями. А мы хотим предложить импровизированный курс из 30 видеоуроков.
Мы в Pixel используем Roblox и Roblox Studio для обучения детей кодингу на языке «Луа», моделированию и созданию игр. Такой подход оправдан: условная вселенная Роблокса разработана в первую очередь для детей и подростков, увлекающихся геймингом и информационными технологиями.
Предлагаем рассмотреть импровизированный курс, состоящий из обучающих видеоуроков. Они посвящены Роблоксу и предназначены для детей 8–9 лет и старше. Но начнем с теории и опишем обозначенные инструменты: это поможет разобраться в основах, если нет их понимания.
Как создать геймпасс в Роблокс Студио? Предлагаем пошаговую инструкцию со скриншотами: она поможет разобраться. Предстоит выполнить несколько несложных действий: они приведут к результату в виде готового gamepass. Урок предназначен для детей и подростков.
Мы используем инструменты Roblox и Roblox Studio для обучения детей моделированию и программированию. Это онлайн-платформа для создания игр и игровой движок, предназначенные специально для детей и подростков. Но данные среды используются даже взрослыми: аудитория разработчиков и игроков по возрастной характеристике разнообразна, а по количеству превышает десятки млн человек (данные об активности в среднесуточном выражении).
Сегодня хотим предложить читателям бесплатный урок создания геймпасс в Роблоксе. Данный термин обозначает условный игровой пропуск, который можно будет продавать за робаксы (внутренняя валюта) и использовать для доступа к запретным картам, зонам, предметам и не только.
Наши преподаватели сделали простую и подробную инструкцию с описанием основных шагов и скриншотами: разобраться сможет даже новичок. В конце прикрепили обучающий видеоролик: он пригодится, если разобраться в текстовом руководстве не получится.
В Roblox Studio дети могут создавать 3D-игры различных жанров. Один из самых популярных режимов — хорроры: комнаты испытаний, страшные лабиринты, тауэры, ловушки и другие ужастики. В этой инструкции мы хотим рассказать, как создать карту с опасным лифтом.
Данная игра представляет собой набор страшных уровней, между которыми игрок перемещается на лифте. Пользователю на нашей карте предстоит собирать предметы, которые будут добавлять ему очки счета, и ключи, которые будут открывать лифт на новые локации. Давайте научимся делать лифт и необходимые для игры предметы.