sábado, 24 de enero de 2015

Groovy en ejemplos ... no. 5

"No importa cuan perfecto creas sea tu código siempre habrá alguien que le hallé un error"


En esta ocasión seguimos con la serie de ejercicios usando el lenguaje de programación Groovy.  Usaremos la librería javax.swing para crear aplicaciones gráficas.


1.  Generar un número aleatorio. Esta aplicación tendrá:
  1.  Dos botones JButton (Generar no. aleatorio y Salir)
  2.  Un JLabel que nos servirá de separador
Para generar el número aleatorio usaremos la clase Random.

Random rand=new Random()
aleatorio=(int)rand.nextInt(100)


/*aleatorio.groovy */

import java.awt.event.*
import java.awt.*

import javax.swing.JLabel
import javax.swing.JButton
import javax.swing.JFrame

import javax.swing.JOptionPane
import javax.swing.*



frame=new JFrame("Groovy en ejemplos ... no.5\n::codemonkeyjunior 2015::")
caja=Box.createVerticalBox()

btnCalcular=new JButton("<html><font color='red'>Generar</font> <font color='blue'>no. aleatorio</font></html>")
btnCalcular.addActionListener({
     Random rand=new Random()

     try {
         aleatorio=(int)rand.nextInt(100)
     }
     catch(Exception e) {
         JOptionPane.showMessageDialog(panel, "No se pudo generar el numero", "Error", JOptionPane.ERROR_MESSAGE);
     }finally{
         JOptionPane.showMessageDialog(null,"Numero aleatorio: "+String.valueOf(aleatorio))
     }

    } as ActionListener)

btnSalida=new JButton("<html>Desea <font color='red'> salir</font>?</html>")
btnSalida.addActionListener({

int seleccion = JOptionPane.showConfirmDialog(null,
                                  "Deseas cerrar la ventana?",
                                  "Seleccion",
                                  JOptionPane.YES_NO_OPTION);

if(seleccion==0){
    System.exit(0)
}



    }as ActionListener)

caja.add(btnCalcular)
caja.add(new JLabel("<html><br/><br/></html>"))
caja.add(btnSalida)
frame.contentPane.add(caja)
frame.setSize(450,150)
frame.visible=true
frame.defaultCloseOperation=JFrame.EXIT_ON_CLOSE


Ejecutamos:
Al dar clic sobre el botón "Generar no. aleatorio" saldrá este mensaje:


Al Dar clic sobre el botón "Desea salir?" saldrá:


2.En este ejemplo usaremos:
  •  Un JCheckBox
  •  Un JButton
El usuario elegirá entre tres opciones (Java, Python,y Groovy) y comprobará el resultado al dar clic al botón.

/*elegir.groovy*/

import javax.swing.*
import java.awt.event.*
import java.awt.*


def ventana(){
  frame=new JFrame(title: '::JCheckButton en Groovy::', size: [320,200], layout: new FlowLayout(), defaultCloseOperation: javax.swing.WindowConstants.EXIT_ON_CLOSE)

//podemos aplicarles estilo a los botones
  btnEjecutar=new JButton("<html><font color='blue'>Ejecutar</font></html>")
  btnEjecutar.setBackground(Color.white)
  btnEjecutar.setToolTipText("inicio...")
  btnEjecutar.addActionListener({
      miCheck1=new JCheckBox("<html><h2><font color='red'>Java</font></h2></html>")
      miCheck2=new JCheckBox("<html><h2><font color='green'>Python</font></h2></html>")
      miCheck3=new JCheckBox("<html><h2><font color='blue'>Groovy</font></h2></html>")

    


      panel=new JFrame(title: '::JCheckButton en Groovy::', size: [320,200], layout: new FlowLayout())
      miLabel=new JLabel("<html></html>")

      botonMostrar=new JButton("<html>Comprobar</html>")

      botonMostrar.addActionListener({
         if(miCheck1.isSelected() && miCheck3.isSelected() && miCheck2.isSelected()){
             miLabel.setText("elegiste los tres lenguajes")
         }else if(miCheck1.isSelected() && miCheck3.isSelected()){
             miLabel.setText("elegiste: Java y Groovy")
         }else if(miCheck1.isSelected() && miCheck2.isSelected()){
             miLabel.setText("elegiste: Java y Python")
         }
         else if(miCheck2.isSelected() && miCheck3.isSelected()){
             miLabel.setText("elegiste: Python y Groovy")
         }
         else if(miCheck2.isSelected()){
             miLabel.setText("elegiste: Python")
         }
         else if(miCheck3.isSelected()){
             miLabel.setText("elegiste: Groovy")
         }
         else if(miCheck1.isSelected()){
             miLabel.setText("elegiste: Java")
         }

         else{
             miLabel.setText("")
          }
      } as ActionListener)
    panel.add miCheck1
    panel.add miCheck2
    panel.add miCheck3
    panel.add miLabel
    panel.add botonMostrar

  

      try{
          panel.show()
      }
      catch(Exception ex){
          println "error en: "+ex.toString()
      }

      }as ActionListener)


  frame.add btnEjecutar
  frame.show()
}

ventana()
  //invocamos el método

Ejecutamos:
Al dar clic saldrán las opciones:

Y comprobamos:








martes, 6 de enero de 2015

Python: jugando con PyZenity (2da parte)


Seguimos con los ejemplos de componentes PyZenity.


7. Uso de un componente tipo List. Nos puede servir para crear una lista de artículos, en este ejemplo usamos un tipo "radiolist".
from PyZenity import *

def preguntar():
    if Question('Deseas continuar?'):
        main()
    else:
        exit()


def main():
    lista=List(["Selecciona","Heroe","Nombre"], title="Elige tu heroe", boolstyle="radiolist", editable=False, select_col="ALL", sep='|', data=[["","Batman","Bruce Wayne"],["","Spiderman","Peter Parker"]])
    print "longitud:",len(lista)

    if len(lista)==2:
        InfoMessage('Elegiste:'+str(lista[1]))
        preguntar()


if __name__ == '__main__':
    main()


Los encabezados: Selecciona, Heroe, y Nombre.
Los valores: radiolist, nombre del héroe, nombre de pila

Ejecutando:

Nos mostrará un mensaje tipo "alert" con la opción seleccionada.




8. También podemos crear una lista con tipo "checklist".
from PyZenity import *

def preguntar():
    if Question('Deseas continuar?'):
        main()
    else:
        exit()


def main():
    lista=List(["Selecciona","Heroe","Nombre"], title="Elige tu heroe", boolstyle="checklist", editable=False, select_col="ALL", sep='|', data=[["","Batman","Bruce Wayne"],["","Spiderman","Peter Parker"]])
    print "longitud:",len(lista)

    if len(lista)==2:
        InfoMessage('Elegiste:'+str(lista[1]))
        preguntar()

    if len(lista)==4:
        InfoMessage('Elegiste:'+str(lista[1])+" - "+str(lista[3]))
        preguntar()


if __name__ == '__main__':
    main()






Nos mostrará la siguiente ventanita:





9. Ahora un ejemplo con Progress.
from PyZenity import *

def main():
    progreso=Progress(text='Cargando información ...',percentage=0,auto_close=False,pulsate=False)
    progreso(10)
    progreso(20)
    progreso(30)
    progreso(40)


if __name__ == '__main__':
    main()


Para el próximo post crearemos una aplicación más usando esta librería.

viernes, 2 de enero de 2015

Python: juego del disparejo

Nuevamente vamos a emplear la librería PyZenity. En este ejemplo crearemos el juego del disparejo.

Definición: Tres personas lanzan (cada uno) una moneda, si caen las tres monedas en ÁGUILA O SOL nadie gana. Gana quien tenga la moneda diferente de las otras dos.

Ejemplo.

Hugo | Paco | Luis    | Ganador
SOL        SOL  ÁGUILA    El ganador es Luis


Hugo | Paco    | Luis   | Ganador
ÁGUIL ÁGUILA ÁGUILA  No hay ganador, las monedas son iguales






from PyZenity import InfoMessage
import random


def main():
    ganador=""
    result="JUEGO DEL DISPAREJO\n\n*******************"
    moneda=["SOL","AGUILA"]#simulamos una moneda con dos caras: AGUILA y SOL
    hugo,paco,luis="","",""#definimos tres jugadores

    #obtenemos valores aleatorios
    hugo=moneda[int(random.randrange(0,2))]
    paco=moneda[int(random.randrange(0,2))]
    luis=moneda[int(random.randrange(0,2))]

    result+='\nTurno de Hugo:'+str(hugo)
    result+='\nTurno de Paco:'+str(paco)
    result+='\nTurno de Luis:'+str(luis)

#las condiciones del programa
    if hugo==luis and hugo==paco:
        ganador="Las tres monedas son iguales, No hay ganador"
    elif hugo!=luis and hugo!=paco:
        ganador="El ganador es Hugo"
    elif paco!=luis and paco!=hugo:
        ganador="El ganador es Paco"
    else:
        ganador="El ganador es Luis"

    result+='\n*******************\n'+str(ganador)
    InfoMessage(result)


if __name__ == '__main__':
    main()




Resultado:

Links
http://www.solveet.com/exercises/Juego-del-disparejo/306

miércoles, 31 de diciembre de 2014

Python: jugando con PyZenity


A continuación una serie de ejemplos muy básicos usando la librería PyZenity, ya antes había escrito algo sobre esta.  La documentación se encuentra en: http://brianramos.com/software/PyZenity/docs/

nota: Para realizar estos ejemplo se uso  Sublime Text y la terminal de comandos de Linux.

1. Un ejemplo sencillo para obtener la fecha del sistema:
try:
    import PyZenity
    fecha=PyZenity.GetDate('Por favor selecciona una fecha',selected=False)
    PyZenity.InfoMessage('Fecha seleccionada '+str(fecha))
except ImportError:
    print "necesitas instalar la librería PyZenity"




2. Supongamos quiero mostrar un mensaje de error del tipo 'alert' entonces escribiría algo así:

from PyZenity import ErrorMessage
try:
    import imaginario #no existe esta librería, provocará un error
except ImportError:
    ErrorMessage('No existe la librería: imaginario')




3. Si queremos seleccionar una carpeta de nuestro sistema ocuparemos GetDirectory:

from PyZenity import GetDirectory
from PyZenity import InfoMessage

dir=GetDirectory(multiple=False,selected=None,sep=None)
InfoMessage("seleccion: "+str(dir))




4. Ahora usamos GetFilename para obtener el nombre de un archivo:

from PyZenity import GetFilename
from PyZenity import InfoMessage

arch=GetFilename(multiple=True,sep='|')
InfoMessage("seleccion: "+str(arch))





5. Uso de Question e InfoMessage:
from PyZenity import Question
from PyZenity import InfoMessage

if Question('Tienes instalado Linux?'): #nos devolverá un booleano
    InfoMessage('Bienvenido')
else:
    InfoMessage('Deberias instalar Linux')



6. Uso de Notification, puede servirnos para crear mensajes de notificación.

from PyZenity import Notification

try:
    import imaginario
except ImportError:
    Notification(text='Ha ocurrido un error')



Son solo algunas cosas que se pueden hacer con PyZenity.

domingo, 14 de diciembre de 2014

¿Por qué programamos?

Es una pregunta que deberíamos hacernos antes de empezar a estudiar y/o aprender programación. La pregunta parece tan sencilla y compleja a la vez.

¿Por qué programamos? Algunos dirán que programamos porque nos pagan, otros porque les parece muy divertido y otros más divagarán en sus respuestas.

Tal vez la respuesta más lógica (y adecuada) es porque necesitamos resolver problemas. Es obvio que estos problemas tienen que ver con las empresas o centros de trabajo donde estamos. Donde se nos paga por crear programas o depurar proyectos existentes.


También existen personas que programan porque les motiva a crear cosas y no necesariamente estudiaron computación (o algo relacionado con las computadoras).  Así como hay gente que programa aunque no les guste (sic). 

Con el tiempo "el gusto de programar" puede terminar; gente que es muy buena programando y resolviendo problemas relativos a la programación, pero que termina odiando su trabajo.

Los que nos dedicamos a la programación debemos entender que no todos sabemos de todo, algunas cosas nos parecerán muy sencillas y otras nos provocaran mucha frustración al no poder resolverlas lo más rápido posible.

También la frustración de usar un lenguaje o herramienta que no nos guste, por ejemplo, usar Visual Studio (con C#) en lugar de Java o Python con Eclipse o cualquier otro IDE; las fechas de entrega de proyectos, las desveladas, no tener vida social, soportar personas que no nos agradan, etc..

A veces tienes que trabajar con gente que no tiene idea de lo que es la programación e ignora cual es tu trabajo, o peor  que ni el mismo tiene idea de lo que él hace ahí.  Su jefe inmediato le pide que ponga a trabajar a los de sistemas. ¿En qué? Ni él mismo lo sabe, solo hace lo que le pidieron.

En los comics de Dilbert se puede ver cada situación que viven los programadores, lo manejan de una manera muy sarcástica, pero aunque parezca exagerado no dista mucho de la realidad.

Para concluir, programamos porque necesitamos resolver problemas de la gente, por ejemplo, diseñar un programa para los cajeros automáticos, hacer que la interfaz sea lo más sencilla para el usuario final (aunque esta comprobado que eso no ayuda mucho, ya que la gente muchas veces no sabe usarlos aunque solo consista en apretar unos cuantos botones).

domingo, 23 de noviembre de 2014

Programando en Java ... no. 9

Acaba de salir la nueva versión de la librería NiconNotify OSD , la cual provee clases para crear mensajes tipo "alert" de Java Swing.

Un ejemplo.

import javax.swing.UIManager;
import javax.swing.plaf.nimbus.NimbusLookAndFeel;

import nicon.notify.core.Notification;

public class TestNiconNotify {

    public static void main(String[] args) {
        try{
            UIManager.setLookAndFeel(new NimbusLookAndFeel());
            int respuesta=Notification.windowConfirmMessage(null, "Confirmacion", "Desea borrar Windows de sus sistema?");
            if(respuesta==1){
                Notification.windowMessage(null, "Respuesta", "Claro, quiero eliminar Windows de mi sistema");
            }else{
                Notification.windowMessage(null, "Respuesta", "No, todavia no.");
            }
           
        }catch(Exception ex){
            System.err.println("error: "+ex.getCause());
        }

    }

}

Ejecutando programa:





Programando en Java ... no. 8

Este ejercicio es muy sencillo, no es nada del otro mundo, crearemos una conexión a una base de datos MySQL, un método para insertar, actualizar, borrar y mostrar todos los datos de una tabla.

Herramientas:
  • Eclipse Luna
  • Librería  mysql-connector-java-5.1.34-bin.jar

Creamos la base de datos
create database test;

Creamos la tabla persona
create table persona(id int auto_increment primary key, nombre varchar(55),apellidoP varchar(55),apellidoM varchar(55),edad int, peso float,talla float);

Insertar valores a la tabla
insert into persona (nombre,apellidoP,apellidoM,edad,peso,talla) values ("Ernesto","Huerta","Flores",44,78.2,1.70), ("Mariana","Garcia",Torres",23,56.0,1.67);

Código de la conexión a la base de datos (Conexion.java)

La clase Persona.java tendrá las mismas propiedades de la tabla persona

public class Persona {
    private Integer id;
    private String nombre;
    private String apellidoP;
    private String apellidoM;
    private int edad;
    private Float peso;
    private Float talla;
   
    public Persona(){}

    //...demás métodos
}


Método para consultar los datos de la tabla



Método para crear persona

;


Método para actualizar persona
Método para eliminar persona

Entendiendo el flujo MuleSoft

En la anterior entrega dijimos que MuleSoft es una plataforma de integración que te permite conectar aplicaciones, datos y APIs de mane...

Etiquetas

Archivo del blog