Обновить
19

Lua *

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

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

АСУТП на молочном заводе и я: 2004 — настоящее время

Уровень сложностиСложный
Время на прочтение16 мин
Охват и читатели9K

АСУТП — основа современной промышленной автоматизации и инфраструктуры
управления. SCADA-система (Supervisory Control and Data Acquisition) является
частью, которая обеспечивает интерфейс между операторами и оборудованием, а
также сбор и анализ данных в реальном времени. Обычно это программный пакет,
предназначенный для обеспечения работы системы и/или разработки таких систем, —
сухое определение, которое заставляет вспоминать предмет ТАУ (теория
автоматического управления) и ПИД-регулятор. Ничего интересного — одни формулы.
Такие мысли мне тоже приходили в голову в момент распределения после завершения
учебы в университете. Так получилось, что на последнем курсе устроился работать
в классическую IT-контору, но не остался там надолго и пошёл пробовать себя на
молочный завод — в тогда ещё молодой отдел АСУТП. Что из этого вышло, далее попытаюсь
рассказать в этой статье.

Читать далее

Новости

Книга: «Roblox: играй, программируй и создавай свои миры. 3-е изд.»

Время на прочтение2 мин
Охват и читатели5.5K

Привет, Хаброжители! Что такое Roblox? Это красочная компьютерная платформа для создания и публикации своих игр. Мир Roblox изо дня в день становится все популярней, и ты можешь стать его частью! Если ты мечтаешь стать геймдизайнером и создать свою игру, но не знаешь, с чего начать, эта книга поможет тебе!

Читать далее

Магия понедельников в формате однобитной графики

Время на прочтение7 мин
Охват и читатели6.2K

Примерно 4 года назад, листая ролики ретроблогеров, я наткнулся на видео Коли Губанова, известного в этой тусовке как Pixel_Devil. В этом ролике он показывал небольшую оранжевую коробочку с монохромным дисплеем без подсветки (привет, Game Boy DMG-01!) и — что самое необычное — ручкой-крутилкой на боковой стороне.

Как вы уже поняли, это была карманная консолька Playdate. Естественно, после этого мне захотелось немедленно пощупать ее вживую. Но первые партии (всего несколько тысяч штук) раскупали по предзаказу в США, и я решил подождать, отложив приобретение до лучших времен.

Дальше расскажу, почему теперь понедельники — мой любимый (ну почти!) день недели, как Playdate из экзотической игрушки превратилась для меня в источник вдохновения и поделюсь своим опытом кодинга под этот весьма необычный гаджет.

Читать далее

Forza Tarantool: разработка на C для встроенного сервера приложений

Время на прочтение17 мин
Охват и читатели6.7K

Tarantool – это in-memory СУБД с открытым исходным кодом, разрабатываемая VK Tech. Существует два способа разработки приложений для Tarantool. Как и к большинству СУБД, к Tarantool можно подключаться из внешнего приложения по TCP/IP. С этой целью для многих популярных языков программирования (включая Go, Python, C#, С++, Java и др.) разработаны соответствующие коннекторы. Это – первый способ.

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

Если мы ведем разработку для встроенного сервера приложений Tarantool, то выбор языков программирования более ограничен. Основным языком программирования, в этом случае, является Lua. Также, часть логики может быть реализована на C/C++. Но набор доступных языков расширяется. Например, с некоторого времени, поддерживается Rust. Помимо этого, Tarantool может выполнять Wasm-приложения. Скоро код библиотеки для разработки на Wasm будет открыт.

Tarantool – высокопроизводительная СУБД, часто используемая для построения highload-систем. Какой из вариантов разработки позволяет достичь максимального быстродействия (которое в таких системах будет не лишним)? В настоящей статье я хотел бы рассмотреть возможные способы вызова C-кода из Lua/LuaJIT/Tarantool (в режиме сервера приложений) и то, как это может ускорить и без того быструю СУБД.

Читать далее

Заметки на полях: Изолируем Lua окружение в C++ приложении. Часть 3/3

Уровень сложностиСредний
Время на прочтение24 мин
Охват и читатели7.6K

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

В этой части разберём как из кубиков с буквами 'О', 'П', 'Ж' и 'А' while true do end

...составить слово "СЧАСТЬЕ".

Laurent Voice – система звукового оповещения событий для многофункциональных сетевых контроллеров Laurent

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

Laurent Voice Box - сетевой контроллер для управления и мониторинга с музыкально-речевым озвучиванием событий.

Читать далее

Заметки на полях: Изолируем Lua окружение в C++ приложении. Часть 2/3

Уровень сложностиСредний
Время на прочтение19 мин
Охват и читатели5.7K

В прошлый раз мы остановились на том, что в творческом порыве на всём скаку отсекли целый пласт потенциальных возможностей нашкодить при помощи функций стандартных библиотек Lua — доступ к файловой системе и функциям ОС, системным командам и переменным окружения, возможность подгрузки сторонних Lua-модулей и C-библиотек на стороне скриптов и чего только ещё не. Напрочь отсекли.

Настолько напрочь, что существенно осложнив жизнь пытливым умам юных любителей экспериментов, мы сами себе связали руки. Скрипты теперь можно вызывать только со стороны C++, а значит, о гибкости и модульности скриптовой части проекта можно было бы смело забыть.

... но можно ослабить удавку.

Книга в Markdown: Автоматическая сборка статического сайта mdBook и файла DOCX с оформлением по ГОСТ

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели9.1K

Markdown — популярный и удобный язык разметки, но это также и очень ограниченный формат. Поэтому задача написания в Markdown сложной технической документации по ГОСТ, научной статьи с автоматической настройкой оформления для заданного издательства или хорошо оформленного онлайн-учебника может показаться неосуществимой. В этой статье рассмотрим способ работы над научно-техническими статьями и книгами в формате Markdown на основе подхода Docs as Code с учётом строгих ограничений на оформление, используемый Петром Советовым и мной при подготовке учебных материалов в РТУ МИРЭА.

Способ заключается в применении утилиты pandoc для построения дерева абстрактного синтаксиса (AST) Markdown-документа с последующим переписыванием AST набором фильтров на Lua и трансляцией AST в форматы docx и pdf, соответствующие ГОСТ, а также в диалект markdown, совместимый с mdBook, для генерации онлайн-учебника.

Онлайн-версии книг, написанных с использованием описанного подхода, и репозитории с исходным кодом книг опубликованы на GitHub и GitHub Pages: книга по конфигурационному управлению, книга по разработке кроссплатформенных программмных систем.

Читать далее

Заметки на полях: Изолируем Lua окружение в C++ приложении. Часть 1/3

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели7.6K

Скриптовые языки уже давно и прочно заняли свою нишу в игрострое — они существенно упрощают описание игровой логики, уровней, ресурсов, диалогов, квестов, UI и чего только не. Что позволяет отдать эти задачи целиком и полностью в творческие руки гейм-/левел-/прочих-дизайнеров и других членов команды, которым не нужно обладать знаниями в том же C++. Разделение ответственности, ускорение разработки, облегчение моддинга, возможность по завершению разработки самого движка, вышвырнуть программистов на мороз и стричь купоны на бесконечных дополнениях — в общем, одни только плюсы. Да?

Да.

А ещё дыры в безопасности и ...

... уйма путей уронить стабильность.

Микрофичи, которые хотелось бы шире распространить в языках программирования

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели13K

Большая часть работы по теории языков программирования и проектированию языков программирования касается аспектов (1) и (2), так как именно они наиболее важны, но лично я глубоко увлекаюсь фичами типа (3). Поскольку эти фичи такие мелкие, именно они наиболее активно перетекают из языка в язык, ведь добавить их можно совсем «малой кровью». Сам я много времени провёл за изучением нишевых малопонятных языков, и за этим встречал множество крутых фич из третьей категории — таких, с которыми вы, возможно, никогда не сталкивались. Расскажу о некоторых из них!

Читать далее

Кастомизация Angie (njs, Lua, Perl)

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели6.8K

Север Angie вобрал в себя всю функциональность, которая десятилетиями формировалась в Nginx. Кроме того, разработчики за несколько лет добавили еще несколько модулей и расширили возможности существующих. Тем не менее, при реализации сложных задач может потребоваться индивидуальное решение, нестандартное поведение сервера и кастомизированная конфигурация. В таких задачах полезно использовать модули для расширения функциональности сервера на базе различных языков программирования: доступны njs, Lua и Perl.

Читать далее

Создаём замыкания С из замыканий Lua

Время на прочтение12 мин
Охват и читатели15K

Когда я взялся полноценно портировать API Windows с C на Lua, одна из самых интересных и занимательных задач заключалась в том, как делать обратные вызовы к коду C из функций Lua. Без них значительная часть API — например, WNDPROC – осталась бы бесполезной.

Читать далее

USB Power Box – устройство управления 4-канальным модулем реле с помощью USB GPIO Extender из Роутер ОС Микротик

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

USB Power Box для Микротик - USB-управляемый роутером блок реле в корпусе:

• два управляемых выхода питания

• управление из Микротик Router OS

• независимость от "переполюсовки" фазы и нуля

• пока ручная сборка!

Читать далее

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

Как мы хакатон в 30ке провели и зачем я форкнул интерпретатор Lua

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

18го ноября, в ГФМЛ №30 на дне наук, я, Саша, CGSG, при поддержки Yandex Cloud провели игровой хакатон для школьников!

Задачей ребят было за 2 часа написать бота для змейки на Lua. Они писали и отправляли стратегии, а в фоне постоянно шли матчи, в которых их стратегии и принимали участие.

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

Читать далее

«Русскоязычных пособий по Lua катастрофически не хватает. Мы решаем эту проблему». Читаем главу о введении в стек

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

Мы в МойОфис любим Lua. И сами активно его используем: в наших редакторах с помощью Lua работают макросы и надстройки. И помогаем разработчикам лучше узнать этот язык — при нашей поддержке вышли уже два издания классного учебника по Lua от Роберту Иерузалимски (кстати, сам автор считает, что этот язык в части задач даже более хорош, чем Си!)

А летом 2025 года мы выпустили целый трёхтомник по Lua. Первый том — новое издание книги Роберту. Второй и третий — вышедшие впервые учебники от Дмитрия Шульгина, старшего тренера по продуктам Учебного центра МойОфис.

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

Читать далее

Напердолил целую игру

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели38K

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

Старый добрый монохромный экран, тетрис, мультиплеер и редактор карт для каждого. С другой стороны — всё на канвасе, с вручную отрисованными пикселями, без всяких ассетов и движков. Python на бэке, PostgreSQL для карт и Redis для игровых комнат. Обо всём этом — в статье.

Читать далее

3 кусочка «сахара» к синтаксису языка Lua

Время на прочтение10 мин
Охват и читатели10K

Lua — симпатичный и хороший язык — умещает богатый функционал в очень маленькой реализации (интерпретатор и библиотека — это всего один исполнимый файл на 300кб) — и притом изначально ориентирован на «человечный» синтаксис. Хотя он не в топе популярности, но за простоту встраивания (помимо человечности и функциональности) он используется в ряде популярных проектов — от Roblox до Tarantool, например.

Однако есть мелочи которые несколько снижают радость от его использования. Когда я встроил его у себя на сайте для того чтобы сделать несколько «игровых» задач на программирование, пользователи высказывали неодобрение из‑за непривычного оператора неравенства, отсутствия комбинированных операторов присваивания и пр.

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

Читать далее

Игры для обучения программированию и разработки собственных модификаций

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

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

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

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

Рассмотреть я предлагаю вопрос с двух сторон:
В первой части поговорим об играх которые подойдут для обучения программированию и вводу в ИТ сферу за счет своей сюжетной линии/процесса прохождения игры.

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

Читать далее

Небольшое ретро-программинг приключение, или как я снова полюбил кодить

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

Когда много лет руководишь командами, легко забыть, каково это — просто сесть и закодить что‑то самому.

Эта статья о том, как я сделал фэнтези‑консоль под DOS, и снова влюбился в программирование.

Читать далее

LuaJIT: что делает его таким производительным и почему вам стоит его попробовать

Время на прочтение9 мин
Охват и читатели15K

LuaJIT является одной из наиболее производительных реализаций динамического языка программирования. В этой статье мы рассмотрим, благодаря каким механизмам и подходам достигается такой результат. Эта статья не дает всех ответов, но задает необходимую базу и направления для самостоятельного изучения темы.

Меня зовут Максим Кокряшкин, я занимаюсь разработкой языковых рантаймов в Tarantool. Это решение класса middleware, разрабатываемое VK Tech, сочетающее в себе базу данных in-memory и application-сервер. Как раз таки наш application-сервер, который позволяет писать логику и хранимые процедуры, работает на LuaJIT

Читать далее
1
23 ...