Aplicacoes para celular com Ruby

3,566 views
3,418 views

Published on

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

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,566
On SlideShare
0
From Embeds
0
Number of Embeds
423
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • Apresentar-se
  • Rhogenapp clientesMate clientesCd clientesRhogenmodel cliente nomeShift + command + +
  • 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 />

    ×