Iniciando Poryecto (EspolQuiz) en Ruby con RoR (Ruby on Rails)

Para iniciar nuestro proyecto en Ruby con RoR (Ruby on Rails), primero
necesitamos instalar todo lo necesario como el lenguaje Ruby, RoR y un IDE comono para nuestras necesidades, en este caso (RubyMine de JetBrains).

Para instalar correctamente esta herramienta, usamos el RailInstaller de la pagina web oficial (http://railsinstaller.org/en), depende el sistema operativo que utilices puedes descargar un ruby installer que te ayudara a instalar lo siguiente:

  • Ruby 2.2.4
  • Rails 4.2
  • Bundler
  • Git
  • Sqlite
  • TinyTDS
  • SQL Server Support
  • DevKit

O puedes instalar rails manualmente desde la consola con la gema rails
    > gem install rails

La instalacion de RailInstaller seguira con un RailInstaller Manager, donde aceptamos el acuerdo de licencia.

instalando

instalacion conf

Donde se instalara en tu computadora el paquete de Rails antes mencionado, puedes verificar que dispones de las versiones correctas desde consola con los comando

> ruby -v
> rails -v

Donde obtendremos los siguientes resultados, las versiones del lenguaje y del RoR
prueba

IDE RubyMine de JetBrains
Con licencia de estudiante
Disponible en: https://www.jetbrains.com/ruby/download/#section=windows-version

RubyMine

Iniciando con las pruebas iniciales

Creamos nuestro primer proyecto de prueba, usando el comando
  > rails new nombrePoryecto

Este comando creara todas las carpetas necesarias para nuestro proyecto.

RubyMine

Una vez creado, podemos iniciar el servidor con de rail con el comando
> rails server

Aparece un error

Error 1

Al parecer no se encuentra las  gem Uglifier. para solucionarlo instalamos esta gema manualmente con el comando
> gem install uglifier -v ‘2.5.3’

Una vez solucionado el error, corremos nuestro servidor y revisamos la pagina local 127.0.0.1:3000 el mensaje de Ruby on Rails

mensaje

 

 

 

Avance 3: Mejorando Los reportes HTML con listas dinamicas

En el avance anterior solo avanzamos al crear reportes sencillos html, sin ningun contenido.

En este avance llenaremos nuestros reportes con listas de tamano variable (mas especifico, arrayList de Java) para lo cual partiremos del avance anterior.

Crearemos el reporte para las peliculas Top por categoria, sean estas 5, 4, 3, 2, 1 estrellas. empezamos en el Objeto reportes e implementamos la funcion

public void reporteTopN(ArrayList<Estrellas> listaDeEstrellas, ArrayList<Pelicula> pelicula, int nEstr){

Una funcion publica que me llena una lista con las 10 mejores peliculas de su categoria, recibe como parametros una lista de peliculas con sus estrellas, el ArrayList de peliculas que se requiere llenar y la categoria tomado como un numero del 1-5

En el codigo pordemos ver lo siguiente:

  • Se usa el PrinterWriter para escribir en el archivo en lenguaje HTML
  • El nombre, el titulo y el primer enunciado son dinamicos respecto a lo que pide el usaurio, ejemplo si se pide el reporte de los TOP5 el archivo se llamara Reporte – Peliculas Top 5.html
  • Se usa un for para recorre la lista e imprimirla en una tabla HTML
  • se utiliza un iterador para a partir de los indices encontrarse los titulos

Codigo

scanner

codigo de reporte

Para la realizacion des este codigo fue necesaria la investigacion de tablas en HTML, lo cual se obtuvo en http://www.w3schools.com/

Ejercicio: Uso de Pilas (Stacks)

Para este proyecto tuvimos que investigar hacerca de la clase Scanner

La clase Scanner está disponible a partir de Java 5 y facilita la lectura de datos en los programas Java

Se utiliza de la siguiente manera

int n;


System.out.print("Introduzca un número entero: ");

n = sc.nextInt();

donde int n; declaramos una variable previa donde se guardara loq ue se ingrese por teclado

en
System.out.print("Introduzca un número entero: ");
presentamos un String por pantalla que indica lo que tiene que ingresar
n = sc.nextInt();
pide por teclado (en este caso un numero entero) y lo obtiene solo al escribirlo y dar enter

Asi lo vemos en la consola de Java

scanner


Utilizamos pilas en este programa para cambiar una expresion Infix a Postfix

Lo hacemos obteniendo un string, el cual es separado en caracteres, y se revisan, agregando al string de postFix directamente, pero cuando se topa con un simbolo o corchete lo agrega a una pila con el metodo push(), en caso que se encuentr el corchete cerrar o el simbolo de mayo prioridad se concatenan al string de PostFix

scanner

Avance 2: Generando Reportes Básicos en HTML

En este avance, luego de armar la GUI, probaremos generar reportes basicos de HTML, veremos la estructura basica de HTML y como generarla desde Java

Primero necesitaremos un Event > ActionPerformed en el boton de Generar Reporte, generaremos un reporte diferente, depende de la seccion del menu principal de RadioButtons, para ello usaremos una estructura IF y el metodo .isSelected()

isSelected

Ahora, buscaremos crearemos un método para escribir en un archivo de Texto, con extension .html

Se llamara generarReporte(String reporte, String titulo, LinkedList<T> lista)

Este recibira como parametros de entrada en nombre del reporte con la extension («Reporte de listas.html»)

Tambien recibira el titulo para la creacion de la pagina,

Tambien la lista que queremos presentar

Por ahora presentaremos una presentacion basica

Usamos la misma logica que guardar en un archivo (para mas informacion para entender este codigo visita mi otra entrada sobre conjuntos y archivos)

generarReporte

Al presionar el programa se generara una pag web local

contenidoPagWeb

 

 

Avance 1: Armando la GUI

La GUI (graphic user interface) es una de las ventajas de java, permitiendo usar Java Swing o Java Fx (En este proyecto se usara Java Swing) que actúa de interfaz de usuario, utilizando un conjunto de imágenes y objetos gráficos para representar la información y acciones disponibles en la interfaz.

Primero creamos una JFrame nueva (con el click izquierdo > New)

Jframe

 

Nos aparecera el JFrame, junto con la paleta de componentes que podemos usar, asi como sus propiedades

window

Con ayuda del Mouse, podemos dibujar de la manera que queremos que se cea nuestro formulario

formulario

Lo proximo, necesitamos renombrar las variables de cada componente para que se facilite el manejo del codio

Lo recomendable es usar las primeras letras del componente, y las siguiente lo que se trata

Ej BtnBuscar    (Donde Btn refiere al boton, y Buscar a la accion del boton)

Change variable name

Ahora que tenemos el formulario, programemos los JRadioButtons del menu principal, para habilitar o desabilitar las opciones segun su uso

Para ello haremos uso de el metodo Enabled el cual retorna un entero, y bloquea o libera componentes

primero damos click izquierdo > Events > Action > ActionPerformed

Lo que generara el codigo para un metodo que recibe como parametro de entrada un evento de la interfaz tipo java.awt.event.ActionEvent

setEnabled

 

 

 

 

 

De esta manera solo mantenemos activos los elementos que requerimos

ventanabloqueada

Ejercicio: Listas enlazadas

Para este ejercicio vamos a utilizar las listas enlazadas en formas de conjuntos, calular su union, interseccion y resta; tambien manejaremos archivos para cargar y guardar listas en archivos.

Para el proyecto vamos a crear las siguientes clases:

  • Programa.java
  • Conjunto.java
  • Coordenada.java

CLASES


 

Coordenada.java

Coordenada. java es una clase que representa un TDA el cual usamos para llenar las listas y representar los conjuntos. En este caso, son conjuntos de coordenadas.

En esta clase sobrescribimos los métodos equals(); y toString(); para adecuarlos a coordenadas. Cuenta con dos constructores, uno con parametros vacios que nos ubica una coordenada en Guayaquil y otra con parámetros para colocar el punto de la coordenada.

Conjunto.java

En la clase conjunto se manejan las operaciones de unión, intersección y resta de conjuntos.

Método union();

Este método recibe 2 listas y devuelve la unión de esas listas en forma de otra lista

Primero agrega todos los elementos de las dos listas en una gran lista, y luego con un Iterador pasamos a quitar los repetidos usando la funcion .contains() de las listas enlazadas.
union()

 Metodo Interseccion();

Este método recibe 2 listas y devuelve lainterseccion de esas listas en forma de otra lista

En la interseccion iteramos la primera lista, y preguntamos si los elementos tambien los contiene la lista dos, guardando en una tercera lista la interseccion.

interseccion()

Metodo Resta();

Este método recibe 2 listas y devuelve la resta de esas listas en forma de otra lista

Para la resta iteramos el primer conjunto, y vamos preguntando si estos se encuentran en el segundo conjunto, si no se encuentran estos son agregados a la lista de la resta.

resta()

Programa.java

En el programa carga las listas de coordenadas y aplica las operaciones de conjunto para imprimir por pantalla los resultados

Tambien los guarda en un nuevo archivo.

Metodo GuardarArchivo();

El metodo guardarArchivo, tiene como parametro las listas a guardar y el nombre del archivo a guardar (si este no existe lo crea, y si existe lo sobrescribe).

Con PrinterWriter nos permite escribir en el archivo y guardamos directamente las listas, ya que tienen el toString() ya establecido

guardarArchivo()