Your SlideShare is downloading. ×
0
Představení Ruby on Rails <ul><li>Přednášející ze společnosti IglooNET, s.r.o. </li><ul><li>Martin Pešout
Marek Hulán </li></ul><li>Více info na  http://blog.igloonet.cz/
Téma přednášky </li><ul><li>Představení Ruby on Rails – výhody a nevýhody
Ukázka vývoje </li></ul><li>Komu je přednáška určena? </li></ul>
Základní informace <ul><li>Současné programovací jazyky, které se využívají ve vývoji webů a webových aplikací </li><ul><l...
Ruby
Python
Perl
Java
a další … </li></ul></ul>
Základní informace <ul><li>Využívání frameworků
Co je to framework? </li><ul><li>Cílem frameworku je převzetí typických problémů dané oblasti, čímž se usnadní vývoj tak, ...
Základní informace <ul><li>Proč jsem se rozhodl odejít od PHP?
Proč jsem raději nezvolil nějaký PHP framework?
A proč jsem si zrovna vybral jako alternativu Ruby on Rails? </li></ul>
Představení jazyka Ruby <ul><li>Programovací jazyk Ruby </li><ul><li>Je na něm postaven webový framework Ruby on Rails
Záměrem bylo spojit prvky z programovacích jazyku (Perl, Smalltalk, Eiffel, Ada a Lisp)
Poměrně starý jazyk – již od roku 1995
Větší pozornosti se mu dostalo až nově ve spojení s frameworkem Ruby on Rails </li></ul></ul>
Představení jazyka Ruby <ul><li>Ruby je k dispozici zcela zdarma. Volně ho lze užívat, kopírovat, upravovat a distribuovat.
Index TIOBE1, který měří nárůst programovacích jazyků, uvádí Ruby na 10 místě (viz. další slide) </li></ul>
Představení jazyka Ruby
Představení jazyka Ruby
Představení jazyka Ruby <ul><li>Ruby je plně objektový programovací jazyk </li><ul><li>Vše, co vývojář v kódu použije, je ...
(Ukázka viz dále) </li></ul></ul>
Představení jazyka Ruby <ul><li>5.times { print &quot;ahoj!n&quot; }  # Ruby kód
number = Math.abs(-5)  // Java kód
number = -5.abs  # Ruby kód
1 + ”. misto”  # chybný Ruby kód
1.to_s + ”. misto”  # Ruby kód </li></ul>
Představení jazyka Ruby <ul><li>variable ||= 1  # Ruby kód
$split = implode (&quot;&quot;, $array);  # PHP kód
[ &quot;a&quot;, &quot;b&quot;, &quot;c&quot; ].join  # Ruby kód
Mapování: </li><ul><li>['brno', 'praha'].map(&:capitalize) </li></ul></ul>
Představení jazyka Ruby <ul><li>Ruby přichází s větší flexibilitou </li><ul><li>Vývojáří mohou měnit volně části jazyka – ...
Způsob psaní kódu - syntaxe pak ve výsledku připomíná spíše psanou větu než kód programovacího jazyka
Nutné si zvyknout, ale docílí se tím ve výsledku úspora syntaxe </li></ul><li>Příklad: </li><ul><li>body += additional_tex...
Představení jazyka Ruby <ul><li>Ruby rozumí spoustě konstrukcí </li><ul><li>Závorky ke zpestření kódu, ale můžeme i bez nich
Se středníkem i bez něho </li></ul><li>Příklad: </li><ul><li>number = (2 + 1);
Upcoming SlideShare
Loading in...5
×

Představení Ruby on Rails

1,185

Published on

Přednáška z 2.6.2011 z akce Internet Session Brno. Martin Pešout a Marek Hulán představili výhody vývoje webových aplikací ve frameworku Ruby on Rails.

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

  • Be the first to like this

No Downloads
Views
Total Views
1,185
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Představení Ruby on Rails"

  1. 1. Představení Ruby on Rails <ul><li>Přednášející ze společnosti IglooNET, s.r.o. </li><ul><li>Martin Pešout
  2. 2. Marek Hulán </li></ul><li>Více info na http://blog.igloonet.cz/
  3. 3. Téma přednášky </li><ul><li>Představení Ruby on Rails – výhody a nevýhody
  4. 4. Ukázka vývoje </li></ul><li>Komu je přednáška určena? </li></ul>
  5. 5. Základní informace <ul><li>Současné programovací jazyky, které se využívají ve vývoji webů a webových aplikací </li><ul><li>PHP
  6. 6. Ruby
  7. 7. Python
  8. 8. Perl
  9. 9. Java
  10. 10. a další … </li></ul></ul>
  11. 11. Základní informace <ul><li>Využívání frameworků
  12. 12. Co je to framework? </li><ul><li>Cílem frameworku je převzetí typických problémů dané oblasti, čímž se usnadní vývoj tak, aby se návrháři a vývojáři mohli soustředit pouze na zadání své práce. </li></ul><li>Pro PHP </li><ul><li>Nette, Zend </li></ul><li>Pro jazyk Ruby </li><ul><li>Ruby on Rails </li></ul></ul>
  13. 13. Základní informace <ul><li>Proč jsem se rozhodl odejít od PHP?
  14. 14. Proč jsem raději nezvolil nějaký PHP framework?
  15. 15. A proč jsem si zrovna vybral jako alternativu Ruby on Rails? </li></ul>
  16. 16. Představení jazyka Ruby <ul><li>Programovací jazyk Ruby </li><ul><li>Je na něm postaven webový framework Ruby on Rails
  17. 17. Záměrem bylo spojit prvky z programovacích jazyku (Perl, Smalltalk, Eiffel, Ada a Lisp)
  18. 18. Poměrně starý jazyk – již od roku 1995
  19. 19. Větší pozornosti se mu dostalo až nově ve spojení s frameworkem Ruby on Rails </li></ul></ul>
  20. 20. Představení jazyka Ruby <ul><li>Ruby je k dispozici zcela zdarma. Volně ho lze užívat, kopírovat, upravovat a distribuovat.
  21. 21. Index TIOBE1, který měří nárůst programovacích jazyků, uvádí Ruby na 10 místě (viz. další slide) </li></ul>
  22. 22. Představení jazyka Ruby
  23. 23. Představení jazyka Ruby
  24. 24. Představení jazyka Ruby <ul><li>Ruby je plně objektový programovací jazyk </li><ul><li>Vše, co vývojář v kódu použije, je objektem. </li></ul><li>Mnoho programovacích jazyku nemá čísla a další primitivní typy implementovány jako objekty </li><ul><li>Naopak v Ruby má každý typ svoje instanční proměnné a svoje akce
  25. 25. (Ukázka viz dále) </li></ul></ul>
  26. 26. Představení jazyka Ruby <ul><li>5.times { print &quot;ahoj!n&quot; } # Ruby kód
  27. 27. number = Math.abs(-5) // Java kód
  28. 28. number = -5.abs # Ruby kód
  29. 29. 1 + ”. misto” # chybný Ruby kód
  30. 30. 1.to_s + ”. misto” # Ruby kód </li></ul>
  31. 31. Představení jazyka Ruby <ul><li>variable ||= 1 # Ruby kód
  32. 32. $split = implode (&quot;&quot;, $array); # PHP kód
  33. 33. [ &quot;a&quot;, &quot;b&quot;, &quot;c&quot; ].join # Ruby kód
  34. 34. Mapování: </li><ul><li>['brno', 'praha'].map(&:capitalize) </li></ul></ul>
  35. 35. Představení jazyka Ruby <ul><li>Ruby přichází s větší flexibilitou </li><ul><li>Vývojáří mohou měnit volně části jazyka – odebrání, přidání metod (i těch základních)
  36. 36. Způsob psaní kódu - syntaxe pak ve výsledku připomíná spíše psanou větu než kód programovacího jazyka
  37. 37. Nutné si zvyknout, ale docílí se tím ve výsledku úspora syntaxe </li></ul><li>Příklad: </li><ul><li>body += additional_text unless additional_text.nil? </li></ul></ul>
  38. 38. Představení jazyka Ruby <ul><li>Ruby rozumí spoustě konstrukcí </li><ul><li>Závorky ke zpestření kódu, ale můžeme i bez nich
  39. 39. Se středníkem i bez něho </li></ul><li>Příklad: </li><ul><li>number = (2 + 1);
  40. 40. Number = 2 + 1 </li></ul></ul>
  41. 41. Představení jazyka Ruby <ul><li>Rozmezí: </li><ul><li>1..10
  42. 42. 'a'..'z </li></ul><li>Příklady: </li><ul><li>(1..10).to_a => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  43. 43. ('cab'..'caf').to_a => [&quot;cab&quot;, &quot;cac&quot;, &quot;cad&quot;, &quot;cae&quot;, &quot;caf&quot;]
  44. 44. ('cab'..'caf').include?('cae') => true </li></ul></ul>
  45. 45. Představení jazyka Ruby <ul>score = 70 result = case score when 0..40: &quot;Fail&quot; when 41..60: &quot;Pass&quot; when 61..70: &quot;Pass with Merit&quot; when 71..100: &quot;Pass with Distinction&quot; else &quot;Invalid Score&quot; end puts result </ul>
  46. 46. Model View Controller <ul><li>Architektura MVC </li><ul><li>Rozdělení systému do 3 logických celků – Model, View, Controller </li></ul><li>Model </li><ul><li>Zpracování dat
  47. 47. Rozhraní mezi databází a Controllerem </li></ul><li>View </li><ul><li>Zobrazení dat předaných modelem
  48. 48. Grafické rozhraní neobsahuje vlastní data (to zastává modelu), ani logiku práce s nimi (o to se stará controller). </li></ul></ul>
  49. 49. Model View Controller <ul><li>Controller </li><ul><li>Přebírá vstupy od uživatele
  50. 50. Zpracuje je podle potřeby a pak řídí celé zobrazení dat na výstup.
  51. 51. Zajišťuje tak logiku chování celého systému.
  52. 52. Přitom samozřejmě podle potřeby spolupracuje s modelem. Předává mu požadavky na změny, a kdykoli je to zapotřebí, vyžádá si od něj údaje pro zobrazení. </li></ul></ul>
  53. 53. Model View Controller
  54. 54. Framework Ruby on Rails <ul><li>Ruby on Rails je webový framework
  55. 55. Oficiálně vydáno 2004
  56. 56. Při jeho vývoji byl použit nástroj projektového řízení Basecamp
  57. 57. Mezi základní princip patří: „Konvence má přednost před konfigurací“ </li><ul><li>programátor konfiguruje pouze ty části aplikace, které se liší od běžného nastavení.
  58. 58. Model Person defaultně hledá v DB tabulce people </li></ul></ul>
  59. 59. Základní vlastnosti Ruby on Rails <ul><li>Ulehčení běžných úkonů programátora </li><ul><li>Rozšíření jazyka Ruby
  60. 60. Pomocné metody – helper – dostupné v pohledech </li></ul><li>Rozšíření jazyka Ruby doplňují základní třídy Array, Date, Hash, Numeric a String o pohodlné metody, které zjednodušují často se opakující operace.
  61. 61. Všechna tato rozšíření velice posilují vyjadřovací schopnost jazyka Ruby. </li></ul>
  62. 62. Rozšíření jazyka Ruby <ul><li>Čísla </li><ul><li>7.even? # Zjištění zda je číslo sudé nebo liché? </li></ul><li>Datum </li><ul><li>Date.today – 2.days
  63. 63. 1.day.ago
  64. 64. 2.weeks.ago
  65. 65. 5.minutes.ago </li></ul></ul>
  66. 66. Pomocné metody <ul><li>Dostupné v pohledech
  67. 67. Zjednodušení generování HTML kódu a formátování výstupu
  68. 68. Odkazy: </li><ul><li>link_to 'Odstranit záznam', {:controller => 'groups', :action => 'delete', :id => group}, :confirm => 'Jste si jistý?' </li></ul></ul>
  69. 69. Pomocné metody <ul><li>Máme rádi uživatelsky přívětivé aplikace </li><ul><li>Polidštění výpisů dat </li></ul><li>Příklady </li><ul><li>time_ago_in_words(5.minute.ago) => &quot;5 minutami&quot;
  70. 70. number_to_currency(999) => &quot;999,00 Kč&quot; </li></ul><li>Máme možnost definovat vlastní metody </li></ul>
  71. 71. Generátory <ul><li>Genrátory kódu </li><ul><li>Určeny pro začátečníky
  72. 72. Snadné vytváření modelů, pohledů a ostatních součástí aplikace
  73. 73. Automatické vytvoření základů aplikace </li></ul><li>Příkladem můžou byt tzv. Scaffold generátory </li><ul><li>K databázové tabulce vytvoření formulářů </li><ul><li>VARCHAR v databázi => textové pole
  74. 74. BOOLEAN v databázi => checkbox </li></ul><li>Vytvoření tabulky pro výpis dat </li></ul></ul>
  75. 75. Databáze v Ruby on Rails <ul><li>Použití principu ORM (Object-relational mapping) </li><ul><li>Všechny záznamy z relační databáze vystupují jako objekty
  76. 76. Jednotlivé sloupce jsou vystupují jako atributy objektu
  77. 77. Není nutné psát SQL příkazy
  78. 78. Programátor není omezen zvolenou databází </li><ul><li>Snadná změna bez nutnosti přepisovat SQL dotazy </li></ul></ul></ul>
  79. 79. Databáze v Ruby on Rails <ul><li>Vytvoření nového záznamu v DB: </li><ul><li>p = Person.new :first_name => 'Martin', :sure_name => 'Pešout'
  80. 80. p.comment = 'autor odborného článku'
  81. 81. p.save </li></ul></ul>
  82. 82. Databáze v Ruby on Rails <ul><li>Snadná změna adaptéru DB
  83. 83. Podporované: </li><ul><li>MySQ, PostgreSQL, SQLite, SQL Server, IBM DB2, Informix, Oracle, Firebird/Interbase, LDAP, SybaseASA (Sybase Adaptive Server Anywhere aka SQL Anywhere Studio), MonetDB, a další... </li></ul></ul>
  84. 84. Databáze v Ruby on Rails <ul><li>Častým problém: jak udržet přehled ve změnách v databázovém schématu především při práci v týmu
  85. 85. Řešením jsou migrace </li><ul><li>Textové soubory
  86. 86. Snadné verzování (Subversion, GIT, ...)
  87. 87. Snadné vracení se zpět – dvě metody ”up” a ”down” </li></ul></ul>
  88. 88. Databáze v Ruby on Rails <ul><li>Konvence v návrhu databázového schématu </li><ul><li>Anglické názvy objektů vs. názvy tabulek (viz. ukázka)
  89. 89. Názvy primárních klíčů ”id”
  90. 90. Názvy cizích klíčů podle konvencí (viz. Ukázka) </li></ul><li>Speciální sloupce </li><ul><li>created_on
  91. 91. updated_on </li></ul></ul>
  92. 92. Databáze v Ruby on Rails <ul>class CreateItems < ActiveRecord::Migration def self.up create_table :items do |t| end end def self.down drop_table :items end end </ul>
  93. 93. Databáze v Ruby on Rails
  94. 94. Databáze v Ruby on Rails
  95. 95. Vývojové prostředí <ul><li>Možnost spustit aplikaci v jednom ze tří připravených prostředí: </li><ul><li>Vývojové
  96. 96. Produkční
  97. 97. Testovací </li></ul><li>Možnost oddělené databáze
  98. 98. Možnost oddělení pluginu </li></ul>
  99. 99. Tvorba interaktivních aplikací <ul><li>Využití JavaScriptu, podpora jQuery, Prototype
  100. 100. Využítí AJAXu
  101. 101. Jak vytvořit běžný odkaz? </li><ul><li>link_to('Odstranit záznam', :url => {:controller => 'groups', :action => 'delete', :id => group}, :confirm => 'Jste si jistý?') </li></ul><li>Jak vytvořit AJAXový odkaz? </li><ul><li>link_to('Odstranit záznam', :url => {:controller => 'groups', :action => 'delete', :id => group}, :remote => true, :confirm => 'Jste si jistý?') </li></ul></ul>
  102. 102. Podpora více jazyků <ul><li>Problém větších projektů
  103. 103. Oddělujeme všechny překládané textové řetězce
  104. 104. Oddělené překlady jsou umístěny ve speciálních textových souborech
  105. 105. Snadné přepínání jazyků </li></ul>
  106. 106. Podpora více jazyků <ul><li>Soubor s EN překlady: </li><ul><li>en:
  107. 107. hello: &quot;Hello world&quot; </li></ul><li>Soubor v CZ překlady </li><ul><li>cs:
  108. 108. hello: &quot;Ahoj světe&quot; </li></ul><li>V pohledech v aplikaci </li><ul><li>t :hello </li></ul></ul>
  109. 109. Rozšíření pomocí pluginů <ul><li>Veliké množství pluginů </li><ul><li>Proč používat vytvořené rozšíření? </li><ul><li>Odladěné problémy
  110. 110. Rychlé změny
  111. 111. Časté nové funkce </li></ul></ul></ul>
  112. 112. Testování aplikace <ul><li>Problém u rozrůstajících se aplikací </li><ul><li>Nemůžeme kontrolovat neustále vše
  113. 113. Snadnost zanesení nových chyb </li></ul><li>Vždy ale vše záleží na tom, s jakou důsledností se testy píší </li></ul>
  114. 114. Závěrem <ul><li>Nevýhody oproti ostatním frameworkům?
  115. 115. Děkuji za pozornost
  116. 116. Prostor pro dotazy
  117. 117. Vše naleznete na našem blogu http://blog.igloonet.cz/ </li></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×