SlideShare une entreprise Scribd logo
1  sur  43
Télécharger pour lire hors ligne
Ruby + Lua
Talk by Demian Kostelny
Demian Kostelny
Fullstack PHP Developer
3 года в веб-разработке
Автор книги “PHP Junior Kit” 📖
Основатель бренда Funky
(@funky.brand)
@funknoid
@KostDemian
Что такое вообще
Lua?
● Машинное обучение LuaJIT
● Написание веб-сервер
● Можно использовать для сервера
к Arduino или Rassberry Pi.
● Написание игр и модов к играм.
● Написание веб-приложений с
помощью фреймворков.
Синтаксис похож на
Ruby
function fact (n)
if n == 0 then
return 1
else
return n * face(n - 1)
end
end
print(“Enter a number:” )
a = io.read(“*number”)
print(fact(a))
А давайте
Фреймворки для Lua
LuaRocks - свой пакетный
менеджер для Lua
Lapis
local lapis = require “lapis”
local app = lapis.Application()
app:match(“/”, function(self)
return “Hello world!”
end)
return app
Lua для построения шаблонов
Ruby + Lua
Окей, и как
мы это
сделаем?
А вообщем мы это сделаем с использование
библиотек которые создают виртуальную
машину для Lua в Ruby приложении.
Конекторы для Ruby:
glejeune/ruby-lua
Подключаем наш гем
Создаем класс для
использования Lua
Так можно запустить свой
Lua код через Ruby
Или вот к примеру запуск
какой то своей функции
написанной на Lua
require “language/lua”
lua = Language::Lua.new()
lua.eval(“script.lua”)
out = lua.my_lua_function(...)
print out;
rufus-lua
Ещё пример:
require “rufus-lua”
s = Rufus::Lua:: State.new
s.eval(“rubies = {}” )
s.function ‘add’ do |x, y|
x + y
end
s.eval(“rubies.add(1, 2)”)
# => 3.0
s.close
Выполняем Lua функции в нашей
виртуальной машине созданной с
помощью Ruby
А смысл?
● Обход интерпретатора Ruby
● Использование фич Lua
● Написание приложений на Lua после
чего их запуск через Ruby
● Обращение к Lua программам с
помощью Ruby
И многое другое...
МЫ СОЗДАЛИ MINECRAFT ДЛЯ ТОГО
ЧТОБЫ ТЫ МОГ ПРОГРАММИРОВАТЬ В
MINECRAFT ПОКА ТЫ ИГРАЕШЬ
MINECRAFT
Управление реальными вещами из
виртуальной машини Lua
https://habr.com/ru/post/271527/
Вывод
Вопросы?
Конец
@funknoid
@KostDemian

Contenu connexe

Plus de Ruby Meditation

Plus de Ruby Meditation (20)

Use cases for Serverless Technologies - Ruslan Tolstov (RUS) | Ruby Meditatio...
Use cases for Serverless Technologies - Ruslan Tolstov (RUS) | Ruby Meditatio...Use cases for Serverless Technologies - Ruslan Tolstov (RUS) | Ruby Meditatio...
Use cases for Serverless Technologies - Ruslan Tolstov (RUS) | Ruby Meditatio...
 
The Trailblazer Ride from the If Jungle into a Civilised Railway Station - Or...
The Trailblazer Ride from the If Jungle into a Civilised Railway Station - Or...The Trailblazer Ride from the If Jungle into a Civilised Railway Station - Or...
The Trailblazer Ride from the If Jungle into a Civilised Railway Station - Or...
 
What/How to do with GraphQL? - Valentyn Ostakh (ENG) | Ruby Meditation 27
What/How to do with GraphQL? - Valentyn Ostakh (ENG) | Ruby Meditation 27What/How to do with GraphQL? - Valentyn Ostakh (ENG) | Ruby Meditation 27
What/How to do with GraphQL? - Valentyn Ostakh (ENG) | Ruby Meditation 27
 
New features in Rails 6 - Nihad Abbasov (RUS) | Ruby Meditation 26
New features in Rails 6 -  Nihad Abbasov (RUS) | Ruby Meditation 26New features in Rails 6 -  Nihad Abbasov (RUS) | Ruby Meditation 26
New features in Rails 6 - Nihad Abbasov (RUS) | Ruby Meditation 26
 
Security Scanning Overview - Tetiana Chupryna (RUS) | Ruby Meditation 26
Security Scanning Overview - Tetiana Chupryna (RUS) | Ruby Meditation 26Security Scanning Overview - Tetiana Chupryna (RUS) | Ruby Meditation 26
Security Scanning Overview - Tetiana Chupryna (RUS) | Ruby Meditation 26
 
Teach your application eloquence. Logs, metrics, traces - Dmytro Shapovalov (...
Teach your application eloquence. Logs, metrics, traces - Dmytro Shapovalov (...Teach your application eloquence. Logs, metrics, traces - Dmytro Shapovalov (...
Teach your application eloquence. Logs, metrics, traces - Dmytro Shapovalov (...
 
Best practices. Exploring - Ike Kurghinyan (RUS) | Ruby Meditation 26
Best practices. Exploring - Ike Kurghinyan (RUS) | Ruby Meditation 26Best practices. Exploring - Ike Kurghinyan (RUS) | Ruby Meditation 26
Best practices. Exploring - Ike Kurghinyan (RUS) | Ruby Meditation 26
 
Road to A/B testing - Alexey Vasiliev (ENG) | Ruby Meditation 25
Road to A/B testing - Alexey Vasiliev (ENG) | Ruby Meditation 25Road to A/B testing - Alexey Vasiliev (ENG) | Ruby Meditation 25
Road to A/B testing - Alexey Vasiliev (ENG) | Ruby Meditation 25
 
Concurrency in production. Real life example - Dmytro Herasymuk | Ruby Medita...
Concurrency in production. Real life example - Dmytro Herasymuk | Ruby Medita...Concurrency in production. Real life example - Dmytro Herasymuk | Ruby Medita...
Concurrency in production. Real life example - Dmytro Herasymuk | Ruby Medita...
 
Data encryption for Ruby web applications - Dmytro Shapovalov (RUS) | Ruby Me...
Data encryption for Ruby web applications - Dmytro Shapovalov (RUS) | Ruby Me...Data encryption for Ruby web applications - Dmytro Shapovalov (RUS) | Ruby Me...
Data encryption for Ruby web applications - Dmytro Shapovalov (RUS) | Ruby Me...
 
Rails App performance at the limit - Bogdan Gusiev
Rails App performance at the limit - Bogdan GusievRails App performance at the limit - Bogdan Gusiev
Rails App performance at the limit - Bogdan Gusiev
 
GDPR. Next Y2K in 2018? - Anton Tkachov | Ruby Meditation #23
GDPR. Next Y2K in 2018? - Anton Tkachov | Ruby Meditation #23GDPR. Next Y2K in 2018? - Anton Tkachov | Ruby Meditation #23
GDPR. Next Y2K in 2018? - Anton Tkachov | Ruby Meditation #23
 
Postgres vs Elasticsearch while enriching data - Vlad Somov | Ruby Meditaiton...
Postgres vs Elasticsearch while enriching data - Vlad Somov | Ruby Meditaiton...Postgres vs Elasticsearch while enriching data - Vlad Somov | Ruby Meditaiton...
Postgres vs Elasticsearch while enriching data - Vlad Somov | Ruby Meditaiton...
 
Database Sharding in Rails Applications – Vitalik Danchenko | Ruby Meditatio...
 Database Sharding in Rails Applications – Vitalik Danchenko | Ruby Meditatio... Database Sharding in Rails Applications – Vitalik Danchenko | Ruby Meditatio...
Database Sharding in Rails Applications – Vitalik Danchenko | Ruby Meditatio...
 
Building MVP from business owner’s perspective – Piotr Latoszek | Ruby Medita...
Building MVP from business owner’s perspective – Piotr Latoszek | Ruby Medita...Building MVP from business owner’s perspective – Piotr Latoszek | Ruby Medita...
Building MVP from business owner’s perspective – Piotr Latoszek | Ruby Medita...
 
Growing Rails Apps - Dmitry Zhlobo | Ruby Meditation #23
Growing Rails Apps - Dmitry Zhlobo | Ruby Meditation #23Growing Rails Apps - Dmitry Zhlobo | Ruby Meditation #23
Growing Rails Apps - Dmitry Zhlobo | Ruby Meditation #23
 
Residence permit EU - Gennadii Miroshnychenko
Residence permit EU - Gennadii MiroshnychenkoResidence permit EU - Gennadii Miroshnychenko
Residence permit EU - Gennadii Miroshnychenko
 
Practical SOLID with Rails - Andrii Savchenko
Practical SOLID with Rails - Andrii SavchenkoPractical SOLID with Rails - Andrii Savchenko
Practical SOLID with Rails - Andrii Savchenko
 
Open education - Artem Suchov
Open education - Artem SuchovOpen education - Artem Suchov
Open education - Artem Suchov
 
Inside Out Ruby: Using MRI as a C library - Artur Pyrogovskyi
Inside Out Ruby: Using MRI as a C library - Artur PyrogovskyiInside Out Ruby: Using MRI as a C library - Artur Pyrogovskyi
Inside Out Ruby: Using MRI as a C library - Artur Pyrogovskyi
 

Ruby + Lua - Demian Kostelny | Ruby Meditation 28