Ruby y tecnologías Ing. Sebastian M. Priolo. Bibliografía  Documentación oficial  Guía del usuario Ruby  The Ruby Way (Hal Fulton)  Ruby Developer’s.

1 Ruby y tecnologías Ing. Sebastian M. Priolo ...
Author: María Teresa Duarte Vera
0 downloads 0 Views

1 Ruby y tecnologías Ing. Sebastian M. Priolo

2 Bibliografía  Documentación oficial  Guía del usuario Ruby  The Ruby Way (Hal Fulton)  Ruby Developer’s Guide  The little book of Ruby (HuwCollingbourne)

3 Contenido  Presentación de Ruby  Ruby y las bases de datos: KirkyBase  Ruby y los datos: YAML  Ruby y GUI: Shoes

4 Ruby  Lenguaje de scripts  Multiplataforma  Perl, Smalltalk, Eiffel, Ada y Lisp  POO  Sencillo  Flexible  Libre

5 Ruby  Scripts  Automatización SO  Aplicaciones  Web  Multiplataforma  Orientado a objetos  Lógica imperativa y funcional

6 Ruby  Modificar todo  Herencia Simple  “imitar” herencia múltiple (módulos, mixin)  No requiere declaración de tipos  Hilos propios  Recolector basura alto nivel

7 Ruby  Yukihiro Matsumoto  Perl ++  el 21/12/95 Version 0.95  el 25/12/96 Ruby 1.0 es lanzado al público  Articulo de IBM  2004 Rails fue liberado. David Heinemeier Hansson  Leng progr 2006. (TIOBE)

8 Ruby  Son innecesarias las declaraciones de variables  Las variables no tienen tipo  La sintaxis es simple y consistente  La gestión de la memoria es automática

9 Ruby  No oculta las soluciones  Cercano al dominio del problema  No mapea al diseño constantemente  Codificación mas rápida  Comprensible  Mantenible

10 Ruby  Todo es un objeto  Clases  Herencia y métodos  Métodos singleton  Mixins por módulos  Iteradores y cierres

11 Base de Datos  DBI  ODBC  Oracle  MySQL  SQL Server  SQLite  …

12 KirbyBase  http://www.netpromi.com/ http://www.netpromi.com/  SGBD  Ruby  Jamey Cribas  SQLite

13 KirbyBase  Multiplataforma  Es pequeña y no necesita demasiados recursos  Los datos se guardan en archivos planos y pueden ser modificados fácilmente.

14 KirbyBase  Permite realizar consultas, actualizaciones, borrados.  Utiliza distintos tipos de datos  Permite guardar y restablecer objetos.  Puede ser utilizada de forma remota.

15 Kirbybase  una base de datos es un directorio  cada tabla se almacena en un archivo  campo recno

16 Conectar require 'kirbybase' base = KirbyBase.new base = KirbyBase.new(:client, 'localhost', 44444)

17 Crear una tabla usuarios = base.create_table()

18 Resumen  Files.tbl require 'kirbybase' base = KirbyBase.new usuarios = base.create_table(:usuarios,:nombre, :String,:apellido,:String) clientes = base.create_table(:clientes,:codigo, :Integer,:pago,:Boolean)

19 Insertar datos usuarios.insert('Jose','Moreno') usuarios.insert(:nombre='Pablo', :apellido='Filipini')  Insertar registros desde un hash.

20 Insertar datos usuarios.insert do |r| r.nombre = 'Carlos' r.apellido = 'Juarez' end  Bloques

21 Consultar resultado = usuarios.select resultado = usuarios.select(:nombre) resultado = usuarios.select(:nombre,:apellido){ |r| r.nombre == 'Jose' }

22 Ordenar resultado = usuarios.select(:nombre)sort(:nombre) resultado = usuarios.select(:nombre)sort(-:nombre)

23 Reportes puts usuarios.select.to_report recno | nombre | apellido ------------------------- 1 | Jose | Moreno 2 | Pablo | Filipini 3 | Carlos | Juarez

24 Reportes puts usuarios.select.sort(:nombre).to_report recno | nombre | apellido ------------------------- 3 | Carlos | Juarez 1 | Jose | Moreno 2 | Pablo | Filipini

25 Actualizar usuarios.update(:nombre=>'Carlos', :apellido=>'Juarez') { |r| r.nombre == 'Alberto' } usuarios.update_all { |r| r.nombre = 'Prueba'}

26 Borrar usuarios.delete { |r| r.nombre == 'Prueba' } resultados = usuarios.pack usuarios.clear

27 GUI  El elemento visual  El elemento información  El elemento interacción

28 GUI  Navegación simple y fácil.  Posibilidad de identificar el espacio actual de trabajo.  Reducción de la carga de memoria a corto plazo.  Maximizar la cantidad de información.  Prevenir errores  Posibilidad de revertir acciones.

29 GUI  Tk  FXRuby  wxRuby (wxWindows/wxWidgets)  Ruby/Gnome2 (GTK)  Ruby/Qt  CocoaRuby  Shoes

30 Shoes  Minimalista  Pocos elementos  Multiplataforma  Simple  Clara  http://code.whytheluckystiff.net/shoes/

31 Shoes  Edit_line  Edit_box  Button  Progress  List_box

32 Ventana Shoes.app :height => 250, :width => 200 do end

33 Ventana Shoes.app :height => 250, :width => 200, :title => "Caso de Estudio 1" do end

34 Botones Shoes.app :height => 200, :width => 200 do button "Primer Boton" do end

35 Botones Shoes.app :width => 640, :height => 700, :title => "Caso de Estudio 2" do button "Primer Boton" do end button "Segundo Boton" do end button "Tercer Boton" do end

36 Botones

37 Campo de texto Shoes.app :width => 320, :height => 350 do stack :margin => 10 do para "Nombre" @nombre = edit_line end stack :margin => 10 do para "Apellido" @apellido = edit_line end

38 Campos de texto

39 Stacks y Flows  stacks son contenedores que despliegan los elementos uno debajo de otro  los flows despliegan los elementos de izquierda a derecha

40 Aplicación Shoes.app :height => 150, :width => 250 do background rgb(240, 250, 208) stack :margin => 10 do button "Mensaje" do @etiqueta.replace "Este es un mensaje" end @etiqueta = para "Presione para ver el mensaje" end

41 Aplicación

42 YAML  YAML Ain't Another Markup Language  serialización de datos  diseñado para ser legible  inteligible por los seres humanos  listas, hashes y valores simples

43 Características  Los documentos son generalmente más pequeños que en XML.  Fácil lectura y edición  Presenta buena interacción con lenguajes dinámicos.  Es altamente expresivo.  Es extensible.  Es de fácil implementación.

44 Documentos --- Documento 1 --- Documento 2 --- Documento 3 --- Documento n

45 Secuencia simple Elementos ordenados - Elemento 1 - Elemento 2 - Elemento 3

46 - - Elemento 1 - Elemento 2 - Elemento 3 - - Elemento 1 - Elemento 2 Secuencia anidada

47 1: Elemento 1 2: Elemento 2 1: Elemento 1 2: 2.1: Elemento 2.1 2.2: Elemento 2.2 2.3: Elemento 2.3 Mapeo simple y anidado

48 YAML y Ruby require 'yaml' class Mascota attr_accessor :nombre, :raza, :edad end zeus = Mascota.new zeus.nombre = "Zeus" zeus.raza = "Ovejero Aleman" zeus.edad = "3" hera = Mascota.new hera.nombre = "Hera"

49 YAML y Ruby hera.raza = "Fox Terrier" hera.edad = "4" ares = Mascota.new ares.nombre = "Ares" ares.raza = "Labrador" ares.edad = "5" test_data = [ zeus,hera,ares ] puts YAML::dump(test_data) #Con esta instrucción #hacemos el volcado a YAML

50 YAML y Ruby --- - !ruby/object:Mascota edad: "3" nombre: Zeus raza: Ovejero Aleman - !ruby/object:Mascota edad: "4" nombre: Hera raza: Fox Terrier - !ruby/object:Mascota edad: "5" nombre: Ares raza: Labrador

51 FIN