Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Aplicacoes para celular com Ruby

4,184 views

Published on

Apresentação no Ruby e Rails no mundo Real 2010

Published in: Technology
  • Be the first to comment

Aplicacoes para celular com Ruby

  1. 1. Aplicações para celular com Ruby e Rhomobile<br />marcelo@mindaslab.com<br />
  2. 2. http://www.nytimes.com/2010/05/27/technology/27apple.html?src=me&ref=homepage<br />
  3. 3.
  4. 4. Família Rhomobile<br />http://rhomobile.com/<br />
  5. 5. Plataformas suportadas<br />
  6. 6. http://arstechnica.com/gadgets/news/2010/05/mobile-market-up-smartphones-up-iphone-and-android-way-up-1.ars<br />
  7. 7. http://arstechnica.com/apple/news/2010/03/iphone-os-still-dominates-mobile-web-android-on-the-way-up.ars<br />
  8. 8. Rhodes<br />Possibilita a criação de uma aplicação para celular usando a linguagem Ruby e uma estrutura semelhante ao Rails.<br />Permite que a mesma aplicação seja executada em plataforma Symbian, Windows Mobile, Android, iPhone e BlackBerry.<br />Possibilita o uso de HTML, CSS e JavaScript para criação de interfaces poderosas.<br />
  9. 9. Rhodes<br />Possui uma extensa API que dá suporte aos principais recursos dos smartphones atuais, como GPS, agenda de contatos, acelerômetro, biblioteca de mídias e câmera.<br />É software livre e open source, e segue a licença MIT. Possui uma versão comercial para empresas que desejem manter seu código fonte fechado.<br />
  10. 10. Principais vantagens<br />Writeonce, runeverywhere (de verdade).<br />Produtividade (Ruby é mais produtivo do que C, C++ e Java).<br />Abstração do hardware (não é necessário preocupar-se com particularidades de cada celular, basta usar a API do Rhodes).<br />
  11. 11. Aplicação Ruby 1.9<br />Bibliotecas Rhodes<br />Interpretador Ruby + Browser client<br />Compilador XRuby<br />Arquitetura Rhodes<br />
  12. 12. Xruby<br />Arquivos .rb<br />Arquivos .class<br />http://code.google.com/p/xruby/<br />
  13. 13. Browser nativo<br />Os browsers nativos das plataformas possuem diferenças sutis entre si, de forma que uma aplicação para iPhone funciona praticamente da mesma maneira no Android e no Symbian. <br />O BlackBerry porém possui um browser totalmente diferente, e para trabalhar com ele é recomendável ler o guia:<br />http://docs.blackberry.com/en/developers/deliverables/1143/browser_devguide.pdf<br />
  14. 14. RhoSync<br />Servidor que possibilita a sincronização de um aplicativo Rhodes e um aplicativo servidor.<br />Possibilita integração da aplicação Rhodes com aplicativos como o SAP e o Siebel, e bases de dados diversas como Oracle e MySQL.<br />http://rhomobile.com/products/rhosync/<br />
  15. 15. Arquitetura Rhodes e RhoSync<br />
  16. 16.
  17. 17. RhoHub<br />
  18. 18. RhoHub<br />
  19. 19. RhoHub – CRUD básico<br />
  20. 20. Instalando o Rhodes<br />$ sudogeminstallrhodes<br />$ rhodes-setup<br />
  21. 21. Criando uma aplicação Rhodes<br />$ rhogenappstoremanager http://localhost:3000/apps/store/sources<br />URL para <br />RhoSync<br />
  22. 22. Criando models<br />$ cdstoremanager<br />$ rhogen model product brand,name,price,quantity,sku<br />Generatingwithmodelgenerator: <br /> [ADDED] app/Product/config.rb<br /> [ADDED] app/Product/index.erb<br /> [ADDED] app/Product/edit.erb<br /> [ADDED] app/Product/new.erb<br /> [ADDED] app/Product/show.erb<br /> [ADDED] app/Product/product_controller.rb<br />Pastas diferentes <br />do Rails<br />
  23. 23. Estrutura de pastas<br />
  24. 24. Subset doRuby<br />O interpretador Ruby do Rhodes é um subset do Ruby 1.9, ou seja, alguns recursos não são suportados.<br />Metaprogramação e recursos como eval() não são suportados.<br />Baixar código para execução “onthefly” também não é possível.<br />
  25. 25. Subset do Ruby<br />BasicObject, Object, Module, Class, Integer, Float, Numeric, Bignum, Rational, Complex, Math, String, StringScanner, StringIO, Array, Hash, Struct, Regexp, RegexpError, MatchData, Data, NilClass, TrueClass, FalseClass, Comparable, Enumerable, Enumerator, Converter, Marshal, IO, Dir, Time, Date, Signal, Mutex, Thread, ThreadGroup, Process, Fiber, FiberError, Method, UnboundMethod, Binding, RubyVM, GC, Exception, SystemExit, fatal, SignalException, Interrupt, StandardError, TypeError, ArgumentError, IndexError, KeyError, RangeError, ScriptError, SyntaxError, LoadError, NotImplementedError, NameError, NoMethodError, RuntimeError, SecurityError, NoMemoryError, EncodingError, CompatibilityError, SystemCallError, Errno, ZeroDivisionError, FloatDomainError, IOError, EOFError, ThreadError<br />http://wiki.rhomobile.com//index.php?title=Rhodes<br />
  26. 26. Rhomobile e AppStore<br />As regras para desenvolvimento de aplicações para iPhone não proibem o uso de linguagens interpretadas.<br />Não é possível, porém, utilizar o interpretador Ruby do iPhone para executar código Ruby que venha de outros lugares que não a AppStore. <br />
  27. 27. Banco de dados e Rhom<br />É um mini “objectmapper” disponível no Rhodes.<br />Pode trabalhar integrado ao RhoSync ou independente, como um banco de dados local.<br />
  28. 28. Criação de um model<br />
  29. 29. Coluna “object”<br />Chave<br />Primária<br />
  30. 30. Facilidades do Rhom<br />
  31. 31. Splash Screen<br /><ul><li>Útil para iniciar o sistema.
  32. 32. Deve chamar-se loading.html ou loading.png e estar em <application-root>/app/loading.html
  33. 33. No caso de uma figura pode ser centralizada (center, vcenter, hcenter) ou redimensionada (zoom, vzoom, hzoom).
  34. 34. É exibida por n segundos, definido por delay.</li></li></ul><li>Splash Screen<br />
  35. 35. Páginas para tratamento de erros<br />É possível definir duas páginas para exibir caso ocorram erros: appE400.erb e appE500.erb<br />A 400 é exibida caso ocorra uma exceção Rho::RecordNotFound.<br />A 500 em todos os outros casos. <br />
  36. 36. Arquivos específicos por plataforma<br />É possível definir um layout para cada plataforma na mesma aplicação.<br />default.css<br />index.erb<br />default.android.css<br />index.android.erb<br />
  37. 37. Menu nativo<br />
  38. 38. Menu específico por Controller<br />
  39. 39. Items reservados<br />
  40. 40. Toolbar<br />
  41. 41. TabBar<br />
  42. 42. Classe System<br />
  43. 43. Uso de recursos do celular<br />O Rhodes possui uma API unificada para acesso aos principais recursos dos celulares, como câmera, sons e GPS.<br />Essa API possibilita que o acesso ao hardware seja feito da mesma forma para qualquer dispositivo desde que o mesmo esteja presente.<br />
  44. 44. Recursos, versões e sistemas<br />
  45. 45. GPS<br />
  46. 46. GPS<br />Para realizar o acompanhamento da posição através do GPS o Rhodes usa AJAX.<br />O BlackBerry não suporta AJAX.<br />
  47. 47. Agenda de contatos<br />
  48. 48. Camera<br />
  49. 49. Ringtones<br />
  50. 50. Alertas<br />
  51. 51. Sistema de arquivos<br />
  52. 52. Localization<br />
  53. 53. RhoSync<br />
  54. 54. Mspec - Testes<br />$ rhogenspec<br />Generatingwithspecgenerator: <br /> [ADDED] app/SpecRunner<br /> [ADDED] app/mspec<br /> [ADDED] app/spec<br /> [ADDED] app/fileutils.rb<br /> [ADDED] app/mspec.rb<br /> [ADDED] app/spec_runner.rb<br />
  55. 55. Licença do Rhodes<br />Livre para aplicativos OpenSource.<br />$ 1.000,00 para aplicações comerciais, sem royalts ou outros valores.<br />
  56. 56. Dúvidas<br />
  57. 57. Obrigado.<br />marcelo@mindaslab.com<br />

×