SlideShare a Scribd company logo
Не только Web
      Ruby GUI
Разработка Desktop приложений на Ruby
Типы приложений


‣ Bindings (RubyTk, RubyGTK2, QtRuby, more..)
‣ HTML(5) based (Bowline, TideSDK)
‣ Native applications (MacRuby/RubyCocoa)
Bindings


«Нет ничего хуже четкого образа нечеткой идеи»
                                      Апсель Адамс
Разнообразие
‣ RubyTk
‣ RubyGTK2
‣ RubyFox
‣ QtRuby
‣ wxRuby
‣ Ваша привязка...
Hello World


require 'Qt4'

app = Qt::Application.new(ARGV)

hello = Qt::PushButton.new('Hello World!')
hello.resize(100, 30)
hello.show()

app.exec()
Посложнее

    signals 'hit()', 'missed()', 'angleChanged(int)', 'forceChanged(int)',
      'canShoot(bool)'

    slots   'setAngle(int)', 'setForce(int)', 'shoot()', 'moveShot()',
      'newTarget()', 'setGameOver()', 'restartGame()'

    #...

    def restartGame()
      if isShooting()
        @autoShootTimer.stop()
      end
      
      @gameEnded = false

      update()
      emit canShoot( true )
    end
Bindings Выводы


‣ Активность практически на нуле.
‣ Нет каких-либо полноценных фреймворков
‣ Урезанные возможности
HTML(5)/CSS3 Based



Bowline   TideSDK
Bowline
         http://bowlineapp.com/




     Все это - HTML
Ruby + WebKit + Javascript
    и никакой магии!
Bowline
         http://bowlineapp.com/




     Все это - HTML
Ruby + WebKit + Javascript
    и никакой магии!
Bowline
                     http://bowlineapp.com/




‣ Имеет MVC архитектуру
‣ Представления написаны на HTML/Javascript
‣ Binding HTML <-> Ruby
‣ Кроссплатформенный (OSX/Linux)          (Windows... sorry...)




‣ Приложение можно упаковать (Portable)
Bowline
                       http://bowlineapp.com/

                         А где Ruby?

‣ Генерируем связь
  >> bowline-gen binder users

‣ Получится что-то вроде
  class UsersBinder < Bowline::Binders::Base
  end

‣ И в представлении с помощью JS обращаемся
  $('#users').bowlineChain('UsersBinder');
  $('#users').invoke('admins');
  $('#users div:first').invoke('instance_meth', 'arg1');
Bowline
                             http://bowlineapp.com/


‣ Проект на GitHub
  https://github.com/maccman/bowline


‣ Пример Twitter клиента
  https://github.com/maccman/bowline-twitter
TideSDK




http://www.tidesdk.org/
TideSDK

‣ Бывший Titanium Desktop
‣ Возможность включения Ruby|Python|Php скриптов
‣ Полный доступ к файловой системе
‣ Кроме AJAX есть и низкоуровневый доступ к сети
‣ API для доступа к многим функциям рабочего стола и
  окружения
TideSDK
<html>
"   <title>I love Matz</title>
"   <script>
"   "   function my_global_foo(a)
"   "   {
"   "   "   return 'you '+a;
"   "   }
"   "   var my_global_var = 'i love you';
"   </script>
<body>
"   <div id="a">A</div>
"   <script src="ruby.rb" type="text/ruby"></script>
"   <script type="text/ruby">
"   "   def inline_document
"   "   "   document.getElementById 'a'
"   "   end
"   </script>
"   <script>
"   "   window.inline_test_result = inline_document().innerHTML;
"   "   window.external_test_result = external_document().innerHTML;
"   "   window.require_file_module_result = require_file_module()
"   "   window.require_file_sub_file_module_result = require_sub_file_module()
"   "   window.test_gem_result = test_gem()
"   </script>
</body>
</html>
TideSDK
TideSDK




 http://www.wunderlist.com/
‣ Реализация Ruby 1.9.x для Mac Os X
‣ Интеграция Objective-C фреймворков и библиотек
‣ Интеграция с Xcode 4.3
‣ Just-in-time compilation (JIT, компиляция)
‣ Включение MacRuby(и гемов) в само приложение (bundle)
‣ Публикация приложений в AppStore
‣ Тестирование (MiniTest, DTrace)
После установки
появляется новый пункт меню
Ruby gui
Ruby gui
MANNING




‣ Сайт проекта
  https://github.com/MacRuby/MacRuby


‣ Много полезного...
  https://github.com/MacRuby/MacRuby/wiki     IN ACTION
‣ ... и примеров
  https://github.com/MacRuby/MacRubySamples
                                                  Brendan G. Lim
                                              WITH Jerry Cheung
                                               AND Jeremy McAnally
MANNING




‣ Сайт проекта
  https://github.com/MacRuby/MacRuby


‣ Много полезного...
  https://github.com/MacRuby/MacRuby/wiki     IN ACTION
‣ ... и примеров
  https://github.com/MacRuby/MacRubySamples
                                                  Brendan G. Lim
                                              WITH Jerry Cheung
                                               AND Jeremy McAnally
Спасибо за внимание!


                  Презентацию подготовил
                          Кириллов
                          Александр

More Related Content

PDF
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
PDF
Dump-IT Загрузка и инициализация JavaScript
PPTX
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
PDF
Tizen Mobile Application Lifecycle by Kirill Danilov
PDF
Алексей Фомкин, Практическое применение Web Workers
PPTX
Docker-контейнеризация: от local до production
PDF
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
Dump-IT Загрузка и инициализация JavaScript
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
Tizen Mobile Application Lifecycle by Kirill Danilov
Алексей Фомкин, Практическое применение Web Workers
Docker-контейнеризация: от local до production
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...

What's hot (20)

PPTX
JavaScript. Асинхронное программирование. Promise & Deferred
PDF
Фронтенд разработка без боли
PPTX
SubmitJS: Vue.js - make frontend developement great again. Andrii Grachov
PDF
"Vue.js или как наконец отказаться от React"
PPTX
Async Javascript
PDF
Проблемы при работе с разными версиями Ruby и разными gem
PPTX
WebGL - создание 3D графики в браузере
PDF
Современный фронтенд -- как не утонуть в море хайпа?
PDF
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов
PDF
обзор Vagrant и docker
PPT
Serge P Nekoval Grails
PPTX
Web app syncronizations, Sockets, tricks and hacks
PDF
Ivan Shirokov
PDF
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
PDF
Инновации и JavaScript
PDF
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
PDF
Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»
PDF
Павел Юрийчук - Разработка приложений под мобильные браузеры
PDF
The art of Node.js or how to do something cool using public data by Ilya Zapr...
PDF
Optimizaciya vremeni zagruzki_azat_razetdinov
JavaScript. Асинхронное программирование. Promise & Deferred
Фронтенд разработка без боли
SubmitJS: Vue.js - make frontend developement great again. Andrii Grachov
"Vue.js или как наконец отказаться от React"
Async Javascript
Проблемы при работе с разными версиями Ruby и разными gem
WebGL - создание 3D графики в браузере
Современный фронтенд -- как не утонуть в море хайпа?
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов
обзор Vagrant и docker
Serge P Nekoval Grails
Web app syncronizations, Sockets, tricks and hacks
Ivan Shirokov
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
Инновации и JavaScript
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»
Павел Юрийчук - Разработка приложений под мобильные браузеры
The art of Node.js or how to do something cool using public data by Ilya Zapr...
Optimizaciya vremeni zagruzki_azat_razetdinov
Ad

Similar to Ruby gui (20)

PPTX
Railsclub 2012
PDF
Презентация проекта Webobots (3 курс)
PPTX
Веб, Игры, С++ : Темная Магия / Кирилл Шабордин (Ciliz :: W4)
PDF
Sergey Khlopenov tools for_development_cross_platform_mobile_ap
KEY
KEY
PDF
Разработка мобильного и веб интерфейса для Caché
PDF
PDF
Web and mobile development for intersystems caché, Eduard Lebedyuk
PPTX
Мировые информационные ресурсы. Лекция 5
PPT
Web весна 2013 лекция 10
PDF
Юрий Василевский "Автоматизация в XCode"
PDF
Юрий Василевский «Автоматизация в XCode»
PDF
Wider than rails
PPTX
Little Service in 2h
PPTX
ITmozg, Даниил Павлючков
PPTX
Rails for dummies
PDF
Cocoa Networking
PDF
Клиент-серверные приложения на iPhone
PDF
Первое приложение для iPhone
Railsclub 2012
Презентация проекта Webobots (3 курс)
Веб, Игры, С++ : Темная Магия / Кирилл Шабордин (Ciliz :: W4)
Sergey Khlopenov tools for_development_cross_platform_mobile_ap
Разработка мобильного и веб интерфейса для Caché
Web and mobile development for intersystems caché, Eduard Lebedyuk
Мировые информационные ресурсы. Лекция 5
Web весна 2013 лекция 10
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский «Автоматизация в XCode»
Wider than rails
Little Service in 2h
ITmozg, Даниил Павлючков
Rails for dummies
Cocoa Networking
Клиент-серверные приложения на iPhone
Первое приложение для iPhone
Ad

More from Alexander Kirillov (9)

PDF
Rom - Ruby Object Mapper
PDF
Окружение разработчика - от виртуализации к контейнеризации
PDF
Polymer - New Era of Web Development
PDF
Виртуализация как инструмент разработчика
PDF
Application deployment & configuration management
PDF
XSLT. Basic.
PDF
Предметно-ориентированные языки программирования (DSL)
KEY
Securing Rails Applications
Rom - Ruby Object Mapper
Окружение разработчика - от виртуализации к контейнеризации
Polymer - New Era of Web Development
Виртуализация как инструмент разработчика
Application deployment & configuration management
XSLT. Basic.
Предметно-ориентированные языки программирования (DSL)
Securing Rails Applications

Ruby gui

  • 1. Не только Web Ruby GUI Разработка Desktop приложений на Ruby
  • 2. Типы приложений ‣ Bindings (RubyTk, RubyGTK2, QtRuby, more..) ‣ HTML(5) based (Bowline, TideSDK) ‣ Native applications (MacRuby/RubyCocoa)
  • 3. Bindings «Нет ничего хуже четкого образа нечеткой идеи» Апсель Адамс
  • 4. Разнообразие ‣ RubyTk ‣ RubyGTK2 ‣ RubyFox ‣ QtRuby ‣ wxRuby ‣ Ваша привязка...
  • 5. Hello World require 'Qt4' app = Qt::Application.new(ARGV) hello = Qt::PushButton.new('Hello World!') hello.resize(100, 30) hello.show() app.exec()
  • 6. Посложнее signals 'hit()', 'missed()', 'angleChanged(int)', 'forceChanged(int)',   'canShoot(bool)' slots 'setAngle(int)', 'setForce(int)', 'shoot()', 'moveShot()',   'newTarget()', 'setGameOver()', 'restartGame()' #... def restartGame()   if isShooting()     @autoShootTimer.stop()   end      @gameEnded = false   update()   emit canShoot( true ) end
  • 7. Bindings Выводы ‣ Активность практически на нуле. ‣ Нет каких-либо полноценных фреймворков ‣ Урезанные возможности
  • 9. Bowline http://bowlineapp.com/ Все это - HTML Ruby + WebKit + Javascript и никакой магии!
  • 10. Bowline http://bowlineapp.com/ Все это - HTML Ruby + WebKit + Javascript и никакой магии!
  • 11. Bowline http://bowlineapp.com/ ‣ Имеет MVC архитектуру ‣ Представления написаны на HTML/Javascript ‣ Binding HTML <-> Ruby ‣ Кроссплатформенный (OSX/Linux) (Windows... sorry...) ‣ Приложение можно упаковать (Portable)
  • 12. Bowline http://bowlineapp.com/ А где Ruby? ‣ Генерируем связь >> bowline-gen binder users ‣ Получится что-то вроде class UsersBinder < Bowline::Binders::Base end ‣ И в представлении с помощью JS обращаемся $('#users').bowlineChain('UsersBinder'); $('#users').invoke('admins'); $('#users div:first').invoke('instance_meth', 'arg1');
  • 13. Bowline http://bowlineapp.com/ ‣ Проект на GitHub https://github.com/maccman/bowline ‣ Пример Twitter клиента https://github.com/maccman/bowline-twitter
  • 15. TideSDK ‣ Бывший Titanium Desktop ‣ Возможность включения Ruby|Python|Php скриптов ‣ Полный доступ к файловой системе ‣ Кроме AJAX есть и низкоуровневый доступ к сети ‣ API для доступа к многим функциям рабочего стола и окружения
  • 16. TideSDK <html> " <title>I love Matz</title> " <script> " " function my_global_foo(a) " " { " " " return 'you '+a; " " } " " var my_global_var = 'i love you'; " </script> <body> " <div id="a">A</div> " <script src="ruby.rb" type="text/ruby"></script> " <script type="text/ruby"> " " def inline_document " " " document.getElementById 'a' " " end " </script> " <script> " " window.inline_test_result = inline_document().innerHTML; " " window.external_test_result = external_document().innerHTML; " " window.require_file_module_result = require_file_module() " " window.require_file_sub_file_module_result = require_sub_file_module() " " window.test_gem_result = test_gem() " </script> </body> </html>
  • 19. ‣ Реализация Ruby 1.9.x для Mac Os X ‣ Интеграция Objective-C фреймворков и библиотек ‣ Интеграция с Xcode 4.3 ‣ Just-in-time compilation (JIT, компиляция) ‣ Включение MacRuby(и гемов) в само приложение (bundle) ‣ Публикация приложений в AppStore ‣ Тестирование (MiniTest, DTrace)
  • 23. MANNING ‣ Сайт проекта https://github.com/MacRuby/MacRuby ‣ Много полезного... https://github.com/MacRuby/MacRuby/wiki IN ACTION ‣ ... и примеров https://github.com/MacRuby/MacRubySamples Brendan G. Lim WITH Jerry Cheung AND Jeremy McAnally
  • 24. MANNING ‣ Сайт проекта https://github.com/MacRuby/MacRuby ‣ Много полезного... https://github.com/MacRuby/MacRuby/wiki IN ACTION ‣ ... и примеров https://github.com/MacRuby/MacRubySamples Brendan G. Lim WITH Jerry Cheung AND Jeremy McAnally
  • 25. Спасибо за внимание! Презентацию подготовил Кириллов Александр

Editor's Notes