SlideShare uma empresa Scribd logo
1 de 25
Не только 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)
После установки
появляется новый пункт меню
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
Спасибо за внимание!


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

Mais conteúdo relacionado

Mais procurados

JavaScript. Асинхронное программирование. Promise & Deferred
JavaScript. Асинхронное программирование. Promise & DeferredJavaScript. Асинхронное программирование. Promise & Deferred
JavaScript. Асинхронное программирование. Promise & Deferreddokhrimenko
 
Фронтенд разработка без боли
Фронтенд разработка без болиФронтенд разработка без боли
Фронтенд разработка без болиAnton Piskunov
 
SubmitJS: Vue.js - make frontend developement great again. Andrii Grachov
SubmitJS: Vue.js - make frontend developement great again. Andrii GrachovSubmitJS: Vue.js - make frontend developement great again. Andrii Grachov
SubmitJS: Vue.js - make frontend developement great again. Andrii GrachovBinary Studio
 
"Vue.js или как наконец отказаться от React"
"Vue.js или как наконец отказаться от React""Vue.js или как наконец отказаться от React"
"Vue.js или как наконец отказаться от React"Fwdays
 
Async Javascript
Async JavascriptAsync Javascript
Async JavascriptGetDev.NET
 
Проблемы при работе с разными версиями Ruby и разными gem
Проблемы при работе с разными версиями Ruby и разными gemПроблемы при работе с разными версиями Ruby и разными gem
Проблемы при работе с разными версиями Ruby и разными gemАлександр Ежов
 
WebGL - создание 3D графики в браузере
WebGL - создание 3D графики в браузереWebGL - создание 3D графики в браузере
WebGL - создание 3D графики в браузереСтудия Атвинта
 
Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Vladimir Malyk
 
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов2ГИС Технологии
 
Serge P Nekoval Grails
Serge P  Nekoval  GrailsSerge P  Nekoval  Grails
Serge P Nekoval Grailsguest092df8
 
Web app syncronizations, Sockets, tricks and hacks
Web app syncronizations, Sockets, tricks and hacks Web app syncronizations, Sockets, tricks and hacks
Web app syncronizations, Sockets, tricks and hacks Egor Malkevich
 
Ivan Shirokov
Ivan ShirokovIvan Shirokov
Ivan Shirokovyaevents
 
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...Ontico
 
Инновации и JavaScript
Инновации и JavaScriptИнновации и JavaScript
Инновации и JavaScriptMax Klymyshyn
 
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)Ontico
 
Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»
Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»
Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»Yandex
 
Павел Юрийчук - Разработка приложений под мобильные браузеры
Павел Юрийчук - Разработка приложений под мобильные браузерыПавел Юрийчук - Разработка приложений под мобильные браузеры
Павел Юрийчук - Разработка приложений под мобильные браузерыUA Mobile
 
The art of Node.js or how to do something cool using public data by Ilya Zapr...
The art of Node.js or how to do something cool using public data by Ilya Zapr...The art of Node.js or how to do something cool using public data by Ilya Zapr...
The art of Node.js or how to do something cool using public data by Ilya Zapr...OdessaJS Conf
 
Optimizaciya vremeni zagruzki_azat_razetdinov
Optimizaciya vremeni zagruzki_azat_razetdinovOptimizaciya vremeni zagruzki_azat_razetdinov
Optimizaciya vremeni zagruzki_azat_razetdinovyaevents
 

Mais procurados (20)

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

Semelhante a Ruby gui

Изоморфные react-приложения
Изоморфные react-приложенияИзоморфные react-приложения
Изоморфные react-приложенияDenis Izmaylov
 
Расширь границы возможного вместе с Gradle
Расширь границы возможного вместе с GradleРасширь границы возможного вместе с Gradle
Расширь границы возможного вместе с GradleAleksandr Tarasov
 
2014 Jeeconf - Geb Spock
2014 Jeeconf - Geb Spock2014 Jeeconf - Geb Spock
2014 Jeeconf - Geb SpockBohdan Danyliuk
 
Тестирование серверной конфигурации
Тестирование серверной конфигурацииТестирование серверной конфигурации
Тестирование серверной конфигурацииTimur Batyrshin
 
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"Provectus
 
The Great Migration by Baruch Sadogursky
The Great Migration by Baruch SadogurskyThe Great Migration by Baruch Sadogursky
The Great Migration by Baruch SadogurskyJavaDayUA
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годAnton Turetsky
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годBadoo Development
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Ontico
 
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...Ontico
 
GitLab, Prometheus и Grafana с Kubernetes
GitLab, Prometheus и Grafana с KubernetesGitLab, Prometheus и Grafana с Kubernetes
GitLab, Prometheus и Grafana с KubernetesVictor Login
 
Docker в Badoo: ПМЖ или временная регистрация
Docker в Badoo: ПМЖ или временная регистрацияDocker в Badoo: ПМЖ или временная регистрация
Docker в Badoo: ПМЖ или временная регистрацияBadoo Development
 
Docker integration into Badoo
Docker integration into BadooDocker integration into Badoo
Docker integration into BadooAnton Turetsky
 
Изоморфные React-приложения производительность и масштабирование / Денис Изма...
Изоморфные React-приложения производительность и масштабирование / Денис Изма...Изоморфные React-приложения производительность и масштабирование / Денис Изма...
Изоморфные React-приложения производительность и масштабирование / Денис Изма...Ontico
 
Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)
Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)
Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)Ontico
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruYandex
 
Изоморфные React-приложения: производительность и масштабирование
Изоморфные React-приложения: производительность и масштабированиеИзоморфные React-приложения: производительность и масштабирование
Изоморфные React-приложения: производительность и масштабированиеDenis Izmaylov
 
State of the Standardized Web
State of the Standardized WebState of the Standardized Web
State of the Standardized WebYandex
 
Баба Яга против!
Баба Яга против!Баба Яга против!
Баба Яга против!Roman Dvornov
 
Эволюционный дизайн. Joker Students Day 2016
Эволюционный дизайн. Joker Students Day 2016Эволюционный дизайн. Joker Students Day 2016
Эволюционный дизайн. Joker Students Day 2016Кирилл Толкачёв
 

Semelhante a Ruby gui (20)

Изоморфные react-приложения
Изоморфные react-приложенияИзоморфные react-приложения
Изоморфные react-приложения
 
Расширь границы возможного вместе с Gradle
Расширь границы возможного вместе с GradleРасширь границы возможного вместе с Gradle
Расширь границы возможного вместе с Gradle
 
2014 Jeeconf - Geb Spock
2014 Jeeconf - Geb Spock2014 Jeeconf - Geb Spock
2014 Jeeconf - Geb Spock
 
Тестирование серверной конфигурации
Тестирование серверной конфигурацииТестирование серверной конфигурации
Тестирование серверной конфигурации
 
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
 
The Great Migration by Baruch Sadogursky
The Great Migration by Baruch SadogurskyThe Great Migration by Baruch Sadogursky
The Great Migration by Baruch Sadogursky
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через год
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через год
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
 
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...
 
GitLab, Prometheus и Grafana с Kubernetes
GitLab, Prometheus и Grafana с KubernetesGitLab, Prometheus и Grafana с Kubernetes
GitLab, Prometheus и Grafana с Kubernetes
 
Docker в Badoo: ПМЖ или временная регистрация
Docker в Badoo: ПМЖ или временная регистрацияDocker в Badoo: ПМЖ или временная регистрация
Docker в Badoo: ПМЖ или временная регистрация
 
Docker integration into Badoo
Docker integration into BadooDocker integration into Badoo
Docker integration into Badoo
 
Изоморфные React-приложения производительность и масштабирование / Денис Изма...
Изоморфные React-приложения производительность и масштабирование / Денис Изма...Изоморфные React-приложения производительность и масштабирование / Денис Изма...
Изоморфные React-приложения производительность и масштабирование / Денис Изма...
 
Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)
Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)
Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
 
Изоморфные React-приложения: производительность и масштабирование
Изоморфные React-приложения: производительность и масштабированиеИзоморфные React-приложения: производительность и масштабирование
Изоморфные React-приложения: производительность и масштабирование
 
State of the Standardized Web
State of the Standardized WebState of the Standardized Web
State of the Standardized Web
 
Баба Яга против!
Баба Яга против!Баба Яга против!
Баба Яга против!
 
Эволюционный дизайн. Joker Students Day 2016
Эволюционный дизайн. Joker Students Day 2016Эволюционный дизайн. Joker Students Day 2016
Эволюционный дизайн. Joker Students Day 2016
 

Mais de Alexander Kirillov

Окружение разработчика - от виртуализации к контейнеризации
Окружение разработчика - от виртуализации к контейнеризацииОкружение разработчика - от виртуализации к контейнеризации
Окружение разработчика - от виртуализации к контейнеризацииAlexander Kirillov
 
Polymer - New Era of Web Development
Polymer - New Era of Web DevelopmentPolymer - New Era of Web Development
Polymer - New Era of Web DevelopmentAlexander Kirillov
 
Виртуализация как инструмент разработчика
Виртуализация как инструмент разработчикаВиртуализация как инструмент разработчика
Виртуализация как инструмент разработчикаAlexander Kirillov
 
Application deployment & configuration management
Application deployment & configuration managementApplication deployment & configuration management
Application deployment & configuration managementAlexander Kirillov
 
Предметно-ориентированные языки программирования (DSL)
Предметно-ориентированные языки программирования (DSL)Предметно-ориентированные языки программирования (DSL)
Предметно-ориентированные языки программирования (DSL)Alexander Kirillov
 

Mais de Alexander Kirillov (9)

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

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)
  • 21.
  • 22.
  • 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. Спасибо за внимание! Презентацию подготовил Кириллов Александр

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n