Marek Osvald 2011

Podobné dokumenty
Ruby on Rails. Bc. Tomáš Juřík Bc. Bára Huňková

KAPITOLA 3. Architektura aplikací na frameworku Rails. V této kapitole: modely, pohledy, řadiče.

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

IB111 Programování a algoritmizace. Programovací jazyky

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz

Databázové a informační systémy

Efektivní vývoj webových aplikací v Ruby On Rails. Karel Minařík

Architektura softwarových systémů

KIV/PIA 2013 Jan Tichava

Komponentově orientované webové frameworky. Jiří Stránský twitter.com/jistr

InterSystems Caché Post-Relational Database

Ruby on Rails. VŠE, Jiří Hradil

Nové jazykové brány do Caché. Daniel Kutáč

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

Úvod do Groovy pro Java experty

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Skriptovací jazyky. Obsah

Hiearchical MVC (Model-view-controller) vs. PAC (Presentation-abstraction-control)

IS pro podporu BOZP na FIT ČVUT

Čipové karty Lekařská informatika

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu

Verzování a publikace dat na webu za pomoci PostgreSQL

Jaký programovací jazyk učit jako první a jak ho učit?

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

SQL a XML jako alternativa ke klasickým unixovým nástrojům

2012 ET NETERA a.s. Wicket přehled technologie Martin Strejc

Model-View-Controller architektura PHP frameworks

Použití databází na Webu

MBI - technologická realizace modelu

Snadný vývoj webových aplikací s Nette. Lukáš Jelínek

KIV/PIA Semestrální práce

Stručný úvod pro programátory. Michal Kuchta

Databázové systémy, MS Access. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1130_Databázové systémy, MS Access_PWP

Postup. Úvodem. Hlavní myšlenka frameworku. application. system. assets. uploads

JAVA. Další jazyky kompilovatelné do Java byte-code

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Individuální projekt z předmětu webových stránek Anketa Jan Livora

C2184 Úvod do programování v Pythonu podzim Mgr. Stanislav Geidl Národní centrum pro výzkum biomolekul Masarykova univerzita.

LINQ. (Language integrated query) Prezentace na 3IT353. Zpracovali: Martin Latiak, Michal Pěnka, Petr Spurný

INFORMAČNÍ SYSTÉMY NA WEBU

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:

programátor vs. vývojář

Ukládání a vyhledávání XML dat

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

4. lekce Přístup k databázi z vyššího programovacího jazyka

Programovací jazyky Přehled a vývoj

Novinky ve Visual Studio Tomáš Kroupa

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

Tvorba informačních systémů

Tvorba informačních systémů

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

1. Struktura stránky, zásady při psaní kódu, MVC pattern. Web pro kodéry (Petr Kosnar, ČVUT, FJFI, KFE, PINF 2008)

Implementace internetového informačního systému v Ruby on Rails

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25

Instalace. Produkt je odzkoušen pro MS SQL server 2008 a Windows XP a Windows 7. Pro jiné verze SQL server a Windows nebyl testován.

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

Ruby on Rails: zapomeňte na Javu

1 Webový server, instalace PHP a MySQL 13

Natural Language Toolkit

Databáze EMS podacích lístků

Databázové systémy Cvičení 5.2

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

Sledování výkonu aplikací?

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

Matematika v programovacích

Softwarové komponenty a Internet

Webové programování a Open Source. Open-source. Liberix o.p.s

11. Přehled prog. jazyků

Rezervační systém Tvorba WWW stránek

SQL injection princip a ochrana

Funkcionální programování

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

Databázové aplikace pro internetové prostředí PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku

Databáze II. 1. přednáška. Helena Palovská

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Analýza a Návrh. Analýza

Tvorba informačních systémů

Počítačová Podpora Studia. Přednáška 5 Úvod do html a některých souvisejících IT. Web jako platforma pro vývoj aplikací.

Ruby a webové aplikace 19.1 CGI programování v Ruby

EMBARCADERO DATASNAP. OBSAH Úvod... 2 DataSnap a DBExpress... 2 Serverová část... 2 VCL Klient... 6 Nasazení... 7

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Sem vložte zadání Vaší práce.

D R U P A L V O J T Ě C H K U S W O J T H A

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Seznámení s prostředím dot.net Framework

Stěhování aplikací. Michal Tomek, Sales Manager

1. Webový server, instalace PHP a MySQL 13

Obsah. Začínáme programovat v Ruby on Rails 9. Úvod Vítejte v Ruby 15. O autorovi 9 Poděkování 9

Počítačová Podpora Studia. Přednáška 4. Nástroje pro vědecko-technické výpočty a zpracování dat. (v rámci PPS) PPS 2014

SenseLab. z / from CeMaS. Otevřené sledování senzorů, ovládání zařízení, nahrávání a přehrávání ve Vaší laboratoři

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Úvod. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík,2016

Transkript:

Marek Osvald 2011 http://fi.muni.cz/~xosvald/pv219/rails.pdf

1994-5, Rasmus Lerdorf momentálně ve verzi 5.3.5, chystá se verze 6 není nikde kompletně definován pouze jediný interpret, napsán v C (pod Windows navíc pouze 32bitový)

Based on my limited experience [...] all the PHP code I ve seen in that experience has been messy, unmaintainable crap. Spaghetti SQL wrapped in spaghetti PHP wrapped in spaghetti HTML, replicated in slightly-varying form in dozens of places. Tim Bray (Google)

Hlavní argumenty proti PHP podivné licence (různě licencované moduly) cílená pomalost (Zend Accelerator) 3 zcela nekompatibilní verze (4.3, 4.4, 5.0) špatná podpora znakových sad špatná rekurze nekonzistentní pojmenování funkcí (spojené oddělené camelcase, 2 to) pořadí argumentů návratové hodnoty (string)"false" == (int)0 true neobjektové frameworky (CakePHP, Symphony,...)

1995, まつもとゆきひろ (Yukihiro Matsumoto) momentálně ve verzi 1.9.2., chystá se verze 2.0 vlastnosti VHLL - Very High-Level Language skriptovací objektově orientovaný dynamicky typovaný (duck typing) reflektivní automatická správa paměti (garbage collector)

NON-DUCK TYPING (JAVA) public class Duck implements Bird { void walk() { } void quack() { } } public void foo(duck duck) { duck.walk(); duck.quack(); } DUCK TYPING (RUBY) class Duck < Bird def walk end end def quack end def foo(duck) duck.walk() duck.quack() end

oficiální interpret (MRI) napsán v C existují i jiné YARV C (pro verzi 2.0) JRuby Java Rubinius C++ IronRuby C#/.NET MacRuby Objective-C HotRuby - JavaScript

vychází z Perlu a Pythonu v určitých ohledech se podobá Smalltalku a dalším jazykům přebírá i některé prvky funkcionálního paradigmatu plně objektově orientovaný 3.times() do puts( Hooray!\n ) end balíčkovací nástroj RubyGems (správa knihovních balíků) www.ruby-lang.org

2004, David Heinemeier Hansson momentálně ve verzi 3.0.4 framework pro webové aplikace napsaný v Ruby skládá se z několika základních knihoven (ActiveRecord, ActionPack, ActiveSupport, ActionMailer,...)

vlastnosti modulární návrh (i základní knihovny lze z frameworku vynechat) MVC architektura nezávislost na konkrétní DB (drivery) migrace (verzování DB) automatické routování (i bez mod_rewrite) navrženo pro agilní metodiky, obzvláště TDD (Test Driven Development) úzká integrace s verzovacím nástrojem Git

<html>... <?php $connection = mysql_connect($server, $login, $pass); mysql_select_db($database); $result = mysql_fetch_array( SELECT * FROM users WHERE id=$id ); mysql_close($connection);?> <body> <ul class= user > <li><?php echo $result[0].name?></li> <li><?php echo $result[0].email?></li> </ul> </body> </html>

MVC Model datová logika (připojení k DB, SQL, validace dat,...) View prezentační logika (kde v HTML se mají získaná data vypsat) Controller aplikační logika (co se má načíst z DB, ověření uživatele ze session,...)

mapování adresy na příslušný controller a akci http://mujserver.cz/user.php?=1 http://mujserver.cz/user/1 root :to => users#index match /profile/:id :to => users#show

class User < ActiveRecord::Base end User.all() # SELECT * FROM users User.find(1) # SELECT * FROM users WHERE id=1 User.find_by_name( Jan Novak ) # SELECT * FROM users WHERE name= Jan Novak User.count() # SELECT count(*) FROM users AS count

class User < ActiveRecord::Base belongs_to :user_group has_many :projects end validate :name, :presence => true :uniqueness => true :length => 5..50 pepa = User.find_by_name( Josef Novák ) pepovy_projekty = pepa.projects() pepova_skupina = pepa.user_group()

class UsersController < ApplicationController end def index #users/index.html.erb @users = User.all() end def show #users/show.html.erb @user = User.find(params[:id]) end def destroy @user = User.find(params[:id]) @user.destroy() flash[:notice] = Uzivatel uspesne smazan redirect_to index end

<html>... <body> <ul class= user > <li><%= @user.name() %></li> <li><%= @user.email() %></li> </ul> </body> </html>

hierarchické skládání layoutů aplikace /app/views/layouts/application.html.erb controlleru /app/views/layouts/users.html.erb stránky /app/views/users/index.html.erb

3 implicitní prostředí development znovunačítání veškerého kódu (pomalé, ale dobrá reakce na změny) test rozšíření debugovacích informací production pro ostrý provoz, zrychlené další uživatelsky definovaná prostření

skvělý ladící nástroj načte celé vaše prostředí z Rails do řádkového interpretu Ruby velice rychle umožní odhalit problém na aplikační nebo vrstvě

základní testovací jednotka Test::Unit (poslední dobou se od ní spíše ustupuje) Rspec require user describe User end it shouldn t allow a user without name to be saved" do user = User.new(:name => nil, :email => jan@novak.cz ) user.save.should be_false end

Hal Furton: Ruby kompendium znalostí pro začátečníky i profesionály (The Ruby Way 2nd Edition) Zoner Press/Addison Wesley

Steven Holzner: Začínáme programovat v Ruby on Rails (Beginning Ruby on Rails) Computer Press/Wrox

Ruby http://www.ruby-lang.org http://www.tryruby.org http://www.root.cz/knihy/ruby-tutorial/ http://rubybrain.com Rails http://api.rubyonrails.org http://www.railstutorial.org http://railsforzombies.org/ http://www.railsapi.com