Рубрика «Lua» - 8

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

Но что делать тем, кто не хочет мириться с таким состоянием, и хочет одно кольцо один интерфейс, чтобы править всеми? Конечно же, написать его самим!

Система управления умным домом на коленке: Tarantool - 1

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

Что такое Tarantool? Это связка «сервер приложений — база данных». Можно использовать её как базу данных с хранимыми процедурами, а можно как сервер приложений со встроенной базой данных. Вся внутренняя логика, будь она пользовательской или в виде хранимых процедур, пишется на Lua. Благодаря использованию LuaJIT, а не обычного интерпретатора, в скорости она не сильно уступает нативному коду.

Еще один важный фактор — Tarantool это noSQL база данных. Это означает, что вместо традиционных запросов вроде «SELECT… WHERE» вы управляете данными напрямую: пишете процедуру, которая переберет все данные (или их часть) и выдаст вам их. В версии 2.x поддержку SQL-запросов добавили, но панацеей они не являются — для высокой производительности часто важно понимать, как именно исполняется тот или иной запрос, а не отдавать это на откуп разработчикам.

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

Поехали!
Читать полностью »

Релиз XMPP (Jabber) сервера Prosody 0.11.0

Представлен первый релиз 0.11-ой стабильной ветки XMPP сервера Prosody с исправлениями более чем 2000 ошибок.

Основные изменения

Наиболее значительные улучшения коснулись модулей MUC и pubsub.

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

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

Читать полностью »

Helm без хайпа. Трезвый взгляд

Helm — это менеджер пакетов для Kubernetes.

На первый взгляд, неплохо. Этот инструмент значительно упрощает процесс релиза, но порой может и хлопот доставить, ничего не попишешь!
image

Читать полностью »

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

Встраиваемые языки: почему Lua? - 1
Читать полностью »

DNS over TLS — Шифруем наши DNS запросы с помощью Stunnel и Lua - 1
источник изображения

После новости о том что "Google Public DNS тихо включили поддержку DNS over TLS" я решил попробовать его. У меня уже есть Stunnel который создаст шифрованный TCP туннель до гугла. Но программы обычно общаются с DNS по UDP протоколу. Поэтому нам нужен прокси который будет пересылать UDP пакеты в TCP поток и обратно. Мы напишем его на Lua.

Вся разница между TCP и UDP DNS пакетами:

4.2.2. TCP usage
Messages sent over TCP connections use server port 53 (decimal). The message is prefixed with a two byte length field which gives the message length, excluding the two byte length field. This length field allows the low-level processing to assemble a complete message before beginning to parse it.

RFC1035: DOMAIN NAMES — IMPLEMENTATION AND SPECIFICATION

То есть делаем туда:

  1. берём пакет из UDP
  2. добавляем к нему в начале пару байт в которых указан размер этого пакета
  3. отправляем в TCP канал

И в обратную сторону:

  1. читаем из TCP пару байт тем самым получаем размер пакета
  2. читаем пакет из TCP
  3. отправляем его получателю по UDP

Читать полностью »

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

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

В статье показывается, как создать механизм, позволяющий писать катсцены следующего вида:

local function cutscene(player, npc)
  player:goTo(npc)
  if player:hasCompleted(quest) then
    npc:say("You did it!")
    delay(0.5)
    npc:say("Thank you")
  else
    npc:say("Please help me")
  end
end

Вступление

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

Имплементация катсцен и последовательностей действий в играх - 1

1. Открывается дверь
2. Персонаж заходит в дом
3. Дверь закрывается
4. Экран плавно темнеет
5. Меняется уровень
6. Экран плавно светлеет
7. Персонаж заходит в кафе

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

Читать полностью »

Генерация трафика в юзерспейсе - 1

Генерация трафика посредством MoonGen + DPDK + Lua в представлении художника

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

В данном материале мы раскроем некоторые методы генерации трафика, используемые в Qrator Labs.

ПРЕДУПРЕЖДЕНИЕ
Мы настойчиво рекомендуем читателю не пытаться использовать упомянутые инструменты для атак на объекты реальной инфраструктуры. Организация DoS-атак преследуется по закону и может вести к суровому наказанию. Qrator Labs проводит все тесты в изолированном лабораторном окружении.
Читать полностью »

Самое популярное назначение IoT устройств это сбор телеметрии. На сегодняшний день цены на облачные IoT сервисы снизились настолько, что позволить себе их использовать может и обычный рядовой пользователь. Сегодня расскажем о том, как отправить данные в облако с платы NodeMCU используя язык Lua.

Прыжок в облако. Строим бюджетное решение для интернета вещей на NodeMCU + Azure IoT Hub - 1Читать полностью »

Для тех кто не в курсе: LAppS — Lua Application Server, это почти как nginx или apache, но только для WebSocket протокола, вместо HTTP.

HTTP в нём поддерживается только на уровне Upgrade запроса.

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

Самое главное, LAppS по производительности WebSocket стека, превзошёл библиотеку uWebSockets, которая позиционируется как самая быстрая WebSocket имплементация.

Заинтересованных прошу под кат.

Читать полностью »

Привет, геймдевы и не только!

Это наш первый пост на Хабре и сразу с приглашением. Завтра, 24 августа вместе с Lua in Moscow организуем митап для разработчиков игр на Lua с использованием движка Corona.
Митап о написании приложений на Lua с помощью движка Corona - 1
Мы хотим сделать этот митап полезным, поэтому перехваливать движок не планируем, даже наоборот. В программе три доклада от экспертов отрасли, основанные на личном опыте разработки, факапах и боли. В перерывах между выступлениями, конечно, будет пицца, кофе и нетворкинг. Если у вас накопились вопросы, советы и просто нет планов на вечер пятницы, заглядывайте.

Программа и спикеры – ниже.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js