SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Downloaden Sie, um offline zu lesen
Ruby outside Rails 
Victor Petrenko 
Software Engineer & CTO at Songsterr.com 
vpetrenko@gmail.com
План 
• Автоматизируем свою работу (one-liners) 
• Domain Specific Languages. Зачем и как? 
• Capistrano. Деплоймент не только Ruby on Rails
southfest.ru
Задача 
2,Wonderwall,Intermediate! 
4,Tears In Heaven,Beginner! 
5,Paint It Black,Intermediate! 
8,Iron Man,Advanced! 
10,Johnny B. Goode,Intermediate! 
12,Can't Stop,Intermediate! 
14,Come As You Are,Intermediate! 
19,Enter Sandman,Intermediate
Demo
Ссылки 
• http://benoithamelin.tumblr.com/post/10945200630/ 
text-processing-1liners-ruby-vs-awk 
• http://benoithamelin.tumblr.com/ruby1line/
Domain Specific Languages 
• DSL — специализированный язык для 
определенной предметной области 
• Примеры DSL: Rake, Capistrano, Rails 
• Создание DSL: listo
listo 
• Большой проект на С++ (30+ подпроектов, 50+ 
разработчиков) 
• Единообразие настроек компилятора 
• Кросс-платформенная компиляция (Windows, 
Unix) 
• Интроспекция проекта (проверки, тесты)
Ruby outside Rails
class World
class Maker
Success Story 
• Решал задачи, прожил ~2 года 
• Тонкое управление организацией проекта 
• Генерация MS Visual Studio projects/solutions 
• Генерация qmake файлов (для сборки в unix) 
• Автоматическое включение исходников в проект
listo.success? 
• Мало фич 
• Ошибки проектирования/ 
реализации 
• Запуск на windows без 
установки (ruby <= 1.8.6) 
• Конкуренция: cmake, qmake 
• В итоге был выпилен и 
заменен на cmake 
• Сообщения об ошибках
Ошибки 
• Плохая задача для тренировки 
• Слишком гибкая семантика 
• Проектирование языка listo и интерпретатора 
одновременно
Спасибо за 
внимание! 
Вопросы? 
Виктор Петренко 
vpetrenko@gmail.com

Más contenido relacionado

Andere mochten auch

Ruby Outside Rails 2 (southfest)
Ruby Outside Rails 2 (southfest)Ruby Outside Rails 2 (southfest)
Ruby Outside Rails 2 (southfest)Victor Petrenko
 
Data analysis and interpretation(renalt)
Data analysis and interpretation(renalt)Data analysis and interpretation(renalt)
Data analysis and interpretation(renalt)Rishi Katkar
 
c++ Lecture 4
c++ Lecture 4c++ Lecture 4
c++ Lecture 4sajidpk92
 
c++ Lecture 3
c++ Lecture 3c++ Lecture 3
c++ Lecture 3sajidpk92
 
Songsterr's Architecture
Songsterr's ArchitectureSongsterr's Architecture
Songsterr's ArchitectureVictor Petrenko
 
Manfaat zat radioaktif (fisika inti)
Manfaat zat radioaktif (fisika inti)Manfaat zat radioaktif (fisika inti)
Manfaat zat radioaktif (fisika inti)dini fitriani
 
basic c++(1)
basic c++(1)basic c++(1)
basic c++(1)sajidpk92
 
Analisis vektor (FPMIPA universitas pendidikan indonesia)
Analisis vektor (FPMIPA universitas pendidikan indonesia)Analisis vektor (FPMIPA universitas pendidikan indonesia)
Analisis vektor (FPMIPA universitas pendidikan indonesia)dini fitriani
 
c++ Lecture 2
c++ Lecture 2c++ Lecture 2
c++ Lecture 2sajidpk92
 
Cauchy riemann equations
Cauchy riemann equationsCauchy riemann equations
Cauchy riemann equationssajidpk92
 

Andere mochten auch (17)

ELT Ireland Concpetion to Collaborartion
ELT Ireland  Concpetion to CollaborartionELT Ireland  Concpetion to Collaborartion
ELT Ireland Concpetion to Collaborartion
 
Ruby Outside Rails 2 (southfest)
Ruby Outside Rails 2 (southfest)Ruby Outside Rails 2 (southfest)
Ruby Outside Rails 2 (southfest)
 
The Practicalities of paperless classes
The Practicalities of paperless classesThe Practicalities of paperless classes
The Practicalities of paperless classes
 
applications of internet
applications of internetapplications of internet
applications of internet
 
Lecture 1
Lecture 1Lecture 1
Lecture 1
 
Data analysis and interpretation(renalt)
Data analysis and interpretation(renalt)Data analysis and interpretation(renalt)
Data analysis and interpretation(renalt)
 
I os ui test automation
I os ui test automationI os ui test automation
I os ui test automation
 
c++ Lecture 4
c++ Lecture 4c++ Lecture 4
c++ Lecture 4
 
Lecture 4
Lecture 4Lecture 4
Lecture 4
 
c++ Lecture 3
c++ Lecture 3c++ Lecture 3
c++ Lecture 3
 
Songsterr's Architecture
Songsterr's ArchitectureSongsterr's Architecture
Songsterr's Architecture
 
Alveolar
AlveolarAlveolar
Alveolar
 
Manfaat zat radioaktif (fisika inti)
Manfaat zat radioaktif (fisika inti)Manfaat zat radioaktif (fisika inti)
Manfaat zat radioaktif (fisika inti)
 
basic c++(1)
basic c++(1)basic c++(1)
basic c++(1)
 
Analisis vektor (FPMIPA universitas pendidikan indonesia)
Analisis vektor (FPMIPA universitas pendidikan indonesia)Analisis vektor (FPMIPA universitas pendidikan indonesia)
Analisis vektor (FPMIPA universitas pendidikan indonesia)
 
c++ Lecture 2
c++ Lecture 2c++ Lecture 2
c++ Lecture 2
 
Cauchy riemann equations
Cauchy riemann equationsCauchy riemann equations
Cauchy riemann equations
 

Ähnlich wie Ruby outside Rails

Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyAlex Chistyakov
 
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...CodeFest
 
Профессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseПрофессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseAlexander Granin
 
Rubt on Rails: 1000 запросов в секунду
Rubt on Rails: 1000 запросов в секундуRubt on Rails: 1000 запросов в секунду
Rubt on Rails: 1000 запросов в секундуАлександр Ежов
 
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...Ontico
 
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...DevGAMM Conference
 
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Антипаттерни та велосипеди в JavaScript автоматизації» ...
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Антипаттерни та велосипеди в JavaScript автоматизації» ...ОЛЕКСАНДР ХОТЕМСЬКИЙ «Антипаттерни та велосипеди в JavaScript автоматизації» ...
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Антипаттерни та велосипеди в JavaScript автоматизації» ...GoQA
 
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...Daniel Podolsky
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Fwdays
 
Current State of Server Side JavaScript
Current State of Server Side JavaScriptCurrent State of Server Side JavaScript
Current State of Server Side JavaScriptOleg Podsechin
 
My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016Alex Chistyakov
 
Alex Dmitriev презентация для рит (12 14 апреля)
Alex Dmitriev презентация для рит (12 14 апреля)Alex Dmitriev презентация для рит (12 14 апреля)
Alex Dmitriev презентация для рит (12 14 апреля)rit2010
 
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)Ontico
 
Xe4 launch мобильная разработка всеволод_леонов
Xe4 launch мобильная разработка всеволод_леоновXe4 launch мобильная разработка всеволод_леонов
Xe4 launch мобильная разработка всеволод_леоновЕкатерина Макарова
 
Юрий Буянов «Архитектура Goozy»
Юрий Буянов «Архитектура Goozy»Юрий Буянов «Архитектура Goozy»
Юрий Буянов «Архитектура Goozy»e-Legion
 
YuryByyanov (e-legion) @ CodeCamp2011
YuryByyanov (e-legion) @ CodeCamp2011YuryByyanov (e-legion) @ CodeCamp2011
YuryByyanov (e-legion) @ CodeCamp2011CodeCamp
 
Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.Andrew Mayorov
 

Ähnlich wie Ruby outside Rails (20)

Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на Ruby
 
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
 
Профессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseПрофессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом Enterprise
 
Rails for dummies
Rails for dummiesRails for dummies
Rails for dummies
 
Rubt on Rails: 1000 запросов в секунду
Rubt on Rails: 1000 запросов в секундуRubt on Rails: 1000 запросов в секунду
Rubt on Rails: 1000 запросов в секунду
 
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...
 
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...
 
Ryazan
RyazanRyazan
Ryazan
 
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Антипаттерни та велосипеди в JavaScript автоматизації» ...
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Антипаттерни та велосипеди в JavaScript автоматизації» ...ОЛЕКСАНДР ХОТЕМСЬКИЙ «Антипаттерни та велосипеди в JavaScript автоматизації» ...
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Антипаттерни та велосипеди в JavaScript автоматизації» ...
 
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
 
Current State of Server Side JavaScript
Current State of Server Side JavaScriptCurrent State of Server Side JavaScript
Current State of Server Side JavaScript
 
My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016
 
Alex Dmitriev презентация для рит (12 14 апреля)
Alex Dmitriev презентация для рит (12 14 апреля)Alex Dmitriev презентация для рит (12 14 апреля)
Alex Dmitriev презентация для рит (12 14 апреля)
 
Первые страницы на Ruby on Rails
Первые страницы на Ruby on Rails Первые страницы на Ruby on Rails
Первые страницы на Ruby on Rails
 
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
 
Xe4 launch мобильная разработка всеволод_леонов
Xe4 launch мобильная разработка всеволод_леоновXe4 launch мобильная разработка всеволод_леонов
Xe4 launch мобильная разработка всеволод_леонов
 
Юрий Буянов «Архитектура Goozy»
Юрий Буянов «Архитектура Goozy»Юрий Буянов «Архитектура Goozy»
Юрий Буянов «Архитектура Goozy»
 
YuryByyanov (e-legion) @ CodeCamp2011
YuryByyanov (e-legion) @ CodeCamp2011YuryByyanov (e-legion) @ CodeCamp2011
YuryByyanov (e-legion) @ CodeCamp2011
 
Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.
 

Ruby outside Rails

  • 1. Ruby outside Rails Victor Petrenko Software Engineer & CTO at Songsterr.com vpetrenko@gmail.com
  • 2. План • Автоматизируем свою работу (one-liners) • Domain Specific Languages. Зачем и как? • Capistrano. Деплоймент не только Ruby on Rails
  • 4. Задача 2,Wonderwall,Intermediate! 4,Tears In Heaven,Beginner! 5,Paint It Black,Intermediate! 8,Iron Man,Advanced! 10,Johnny B. Goode,Intermediate! 12,Can't Stop,Intermediate! 14,Come As You Are,Intermediate! 19,Enter Sandman,Intermediate
  • 6. Ссылки • http://benoithamelin.tumblr.com/post/10945200630/ text-processing-1liners-ruby-vs-awk • http://benoithamelin.tumblr.com/ruby1line/
  • 7. Domain Specific Languages • DSL — специализированный язык для определенной предметной области • Примеры DSL: Rake, Capistrano, Rails • Создание DSL: listo
  • 8. listo • Большой проект на С++ (30+ подпроектов, 50+ разработчиков) • Единообразие настроек компилятора • Кросс-платформенная компиляция (Windows, Unix) • Интроспекция проекта (проверки, тесты)
  • 12. Success Story • Решал задачи, прожил ~2 года • Тонкое управление организацией проекта • Генерация MS Visual Studio projects/solutions • Генерация qmake файлов (для сборки в unix) • Автоматическое включение исходников в проект
  • 13. listo.success? • Мало фич • Ошибки проектирования/ реализации • Запуск на windows без установки (ruby <= 1.8.6) • Конкуренция: cmake, qmake • В итоге был выпилен и заменен на cmake • Сообщения об ошибках
  • 14. Ошибки • Плохая задача для тренировки • Слишком гибкая семантика • Проектирование языка listo и интерпретатора одновременно
  • 15. Спасибо за внимание! Вопросы? Виктор Петренко vpetrenko@gmail.com