Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - alvk4r

#1
No sabia bien en donde colocar el post, asi que lo dejo acá.
He tenido experiencia con algoritmos de IA, Clustering y machine learning en general y hace tiempo le he estado dando vueltas al asunto de analizar secuencias de números para tratar de predecir secuencias válidas.
Ejemplo:
Tengo un juego de seriales válidos:
2121 2442 3234
5432 3432 6423
....

Con algún algoritmo de inferencia de asociaciones, regresión o reconocimiento de patrones:
¿Pudiera ser posible deducir los seriales válidos de la secuencia y/o determinar que asociaciones existen entre los valores que la componen?
Si alguien tiene experiencia práctica en algo así y quisiera compartirla aquí estaría muy agradecido.
#2
Scripting / Re: Tk en Python usando OOP
12 Noviembre 2008, 14:30 PM
Aunque ya nos hemos despegado de la linea... pues.. un foro suele ser asi...
En cuanto a CRM (Customers Relationship Management) no aplica en el mismo contexto que BPM... y esto si no es tan opcional como la OOP...

Y agregar otra cosita.. he tenido que levantar proyectos en UML usando BOUML y Argos... y es un verdadero dolor de cabeza, dado el nivel de detalles que debes dar en el grafico para generar un codigo decente que como quiera debes modificar posteriormente...

Usar POO o no.. o programar a niveles m'as altos y por tanto mas abstractos es algo que cada cual debe reservar a su elecci'on segun el negocio de la aplicacion.. asi como usar o no IDE...

Tambien aclaro que en mi trabajo subsisten dinosaurios parte de los cuales pensamos extinguir con el proyecto que llevo, que utilizan un entorno Novell y por tanto PC con DOS, tambien 98 y ME...

Y en cuanto a preferencias... pues de acuerdo... cada cual escoja la que mejor convenga... y para refrescar pondre algun que otro ejemplo en estos dias...

Ahh , por cierto... si 4HH es cubano, podria llegarse a la XIII Feria Internacional de Informatica en febrero del 2009 al simposio de Tecnicas de Programacion... no obstante si no puede... ya ^TIFA^ lo conoce... ando buscando gente para trabajar en el proyecto que presento alli... es un algoritmo para un motor de indexado y b'usqueda y etiquetado de documentos que desarroll'e... faltan anadir algunos metodos conformados de forma teorica, asi como la interfaz grafica.. los metodos de preprocesamiento de datos, clustering y etiquetado ya estan hechos...

Por cierto... me gusta que ilustren con ejemplos (para 4hhh...)... si buscaste impactar, pues nada mijo que conozco gente que pueden dar una disertacion increible de tecnicas de programacion y tecnicismo... y jamas han logrado crear una aplicacion que funcione...

Y tio si ya que te gusta tanto competir... escojamos un problema X, traigamos aca una aplicacion... y que los demas foristas decidan cual es la nejor...
Cualquier lenguaje.. cualquier tecnica de programacion... cualkquier plataforma... yo presentare, la mia, tu la tuya, ^TIFA^ y alguien mas que le interese hacer la suya estan invitados... todo el que participe solucionara el mismo problema... midamos las diferentes soluciones al mismo problema X en cuanto a:
- Lo Optimo del codigo.
- Portabilidad
- Requerimiento de procesamiento
- Interfaz (no tiene porque ser grafica, sino intuitiva y "amigable")
- Funcionalidad y que aporte la solucion buscada...

Convenido? dime que te parece...

^TIFA^... inclusive puedes usar tu amado Ruby o Perl....
#3
Scripting / Re: Tk en Python usando OOP
10 Noviembre 2008, 22:52 PM
Completamente de acuerdo... Bravo ^TIFA^. Añadir que los paradigmas y filosofias son solo eso, paradigmas y filosofias... nada mas... mencionaste UML, sin embargo yo en mi trabajo debo desarrollar aplicaciones BPM que conllevan manejo masivo de datos, y aunque pudiera hacerlo con UML (me refiero al modelado de datos), me es mas ventajosos emplear ORM... Por cierto... que UML no es un lenguaje en si, ni una filosofia o ingeniería de desarrollo.. solo es un estándar que permite representar graficamente, entre otras cosas, clases y objetos... se aviene de lo mejor para modelar soluciones POO. Y en cuanto a otros tipos de ingeniería, no has hecho sino referencia a modelos utilizados ampliamente en temas de ingeniería de software (y actualmente es este mi fuerte por su vinculacion al Business Process Management), asi que no juzqgues así no mas.

Por ultimo recomiendo a los que usen Python experimentar con el Boa Constructor... para mi el mejor IDE hasta ahora...

^TIFA^ me hablaste del Ruby, siempre he querido experimentar con el, pero me falta tiempo... Si pudieras hacerte un tiempito... en python implementar GTK es mas simple... ya me tengo que ir... pronto te dejo un ejemplo... ;)
#4
Scripting / Re: Tk en Python usando OOP
6 Noviembre 2008, 19:14 PM
Si utilizas algun IDE este crea e implementa las clases de forma automatica... y aunque no utilices una estructura de clases en tu aplicacion, en u nfinal esas funciones son metodos de clase...
Claro me diras que C no usa clases... no es C++ blah, blah,blah...
Y aunque se aleja del tema del Post, no he visto widgets utilizando ansi C o C en su forma pura...

Si tienes algun ejemplo mandamelo... pues me gusta conocer temas nuevos...
#5
Scripting / Re: Tk en Python usando OOP
6 Noviembre 2008, 14:27 PM
Cita de: ^TiFa^ en  4 Noviembre 2008, 13:48 PM
Depende el lenguaje en el cual trabajamos y la libreria de widgets que le implementamos.   :-*

Es logico que estoy hablando de Python y Tk.

Aunque no soy partidario de usar OOP para todo, en muchos casos este modelo complica la solucion a un problema, y Python es flexible en cuanto a la decision de utilizar o no dicho modelo...
No conozco otra forma de implementar widgets, ni utilizando otra biblioteca de graficos ni ningun otro lenguaje... La forma en que estan programadas las bibliotecas de widgets te obliga a utilizar OOP (Me refiero solamente a lenguages imperativos, no funcionales ni logicos).
Aunque utilizes funciones para crear programas, cuando declares:
Código (python) [Seleccionar]
\
...
milabel = Label(miFrame, text = "Mi ETIQUETA")
...


Estas creando un objeto Label que hereda la clase Label().
Por ello es bueno organizar tu propio codigo en clases y demas...

Si utilizaras wxWidgets, QT o cualquier otra biblioteca gráfica, con C++, por ejemplo sucede lo mismo...
Si utilizaras la biblioteca Swing de Java, con Java o Jython... pues igual... te ves obligado  a trabajar con OOP.

Igual esta es mi opinion, si tienes algun ejemplo que mostrarme, relacionado a lo que dices, te lo agradeceria... Favor circunscribete al tema de Python... aunque utilices cualquier otra biblioteca grafica...
#6
Scripting / Re: Tk en Python usando OOP
4 Noviembre 2008, 13:44 PM
Al moderador si puede hacerme el favor de mover el tema a donde corresponde, no me di cuenta de en que sección estaba.
#7
Scripting / Tk en Python usando OOP
3 Noviembre 2008, 16:43 PM
Bueno que hace tiempo no posteo nada... realmente he estado bastante liado con el trabajo... Interesante este curso, lastima que no siga... No obstante aportare mi granito..

Las interfaces graficas, por un problema de reusabilidad, organizacion y otras razones deben programarse utilizando un modelo orientado a objetos.

Nota sobre los Frames: Los frames son widgets que pueden contener otros widgets como botones, etiquetas, etc. Permiten agrupar controles.

Código (python) [Seleccionar]

from Tkinter import *
class Application(Frame):
  """ GUI application which counts button clicks. """
  def __init__(self, master):
    """ Inicializa el Frame. """
    Frame.__init__(self, master)
    self.grid()
    self.bttn_clicks = 0    # the number of button clicks
    self.create_widgets()
 
  def create_widgets(self):
    """ Crea widgets. """
    self.lbl = Label(self, text="Total Clicks: 0")
    self.lbl.grid()
   
    self.bttn = Button(self, text="ClickMe", command=self.update_count)
    self.bttn.grid()
 
  def update_count(self):
    """ Increase click count and display new total. """
    self.bttn_clicks += 1
    self.lbl["text"] = "Total Clicks: "+ str(self.bttn_clicks)
   
root = Tk()
root.title("Click Counter")
root.geometry("200x50")

app = Application(root)

root.mainloop()


En este ejemplo se muestra como manejar Frames de forma independiente. En vez de heredar la clase Frame heredamos Tk.
Código (python) [Seleccionar]

from Tkinter import *

class FrameMan(Tk):
  """ Gestion de Frames. """
  def __init__(self):
    """ Initialize the frame. """
    Tk.__init__(self)
    self.grid()
   
    self.title("Simple Calculator.")
    self.resizable(width = 0, height = 0)
    self.geometry("200x75")
   
    self.result = 0
    self.createWidgets()
   
  def createWidgets(self):
    """ Creamos el Frame y demas controles hijos. """
    self.myFrame1 = Frame(self)
    self.myFrame2 = Frame(self)
    self.myFrame1.grid(row = 0, column = 0)
    self.myFrame2.grid(row = 0, column = 1)
   
    self.Label1 = Label(self.myFrame1, text = "Este es el Frame 1")
    self.Label2 = Label(self.myFrame2, text = "Este es el Frame 2")
    self.Label1.grid()
    self.Label2.grid()
   
    self.Button1 = Button(self, text = "Dest 1", command = self.destF1)
    self.Button2 = Button(self, text = "Dest 2", command = self.destF2)
    self.Button1.grid(row = 1, column = 0)
    self.Button2.grid(row = 1, column = 1)
   
  def runApp(self):
    """ Ejecutamos la aplicacion. """
    self.mainloop()

  def destF1(self):
    self.myFrame1.destroy()
 
  def destF2(self):
    self.myFrame2.destroy()
   
root = FrameMan().runApp()


Por ultimo dos variantes de un mismo programa. Es una calculadora simple donde escogemos la operacion a realizar. Buen ejemplo, puesto que muestra el uso de diferentes controles, asi como el uso del layout manager grid().

Variante 1:

Código (python) [Seleccionar]

from Tkinter import *

def showWindows():
  root = Tk()
  root.title("Simple Calculator.")
  root.resizable(width = 0, height = 0)
  root.geometry("370x75")
  Application(root)
  root.mainloop()

class Application(Frame):
  """ Calculadora simple usando Tkinter. """
  def __init__(self, master):
    """ Initialize the frame. """
    Frame.__init__(self, master)
    self.grid()
    self.result = 0
    self.create_widgets()
 
  def create_widgets(self):
    """ Creamos controles hijos. """
    self.numb1 = Entry(self)
    self.numb1.grid(row = 0, column = 0, columnspan = 2, sticky = E)
    self.numb1.insert(0, "0")
   
    self.lblop = Label(self, text="?")
    self.lblop.grid(row = 0, column = 1, sticky = E)
   
    self.numb2 = Entry(self, text = "0")
    self.numb2.grid(row = 0, column = 2, columnspan=2, sticky = E)
    self.numb2.insert(0, "0")
   
    self.lblEqual = Label(self, text = "=")
    self.lblEqual.grid(row = 0, column = 5, sticky = E)
   
    self.lblResult = Label(self, text = "Result")
    self.lblResult.grid(row = 0, column = 6, sticky = E)
   
    self.opr = StringVar()
    self.opr.set = "?"
   
    self.optSum = Radiobutton(self,
                              text = "+",
                              variable = self.opr,
                              value = "+",
                              command = self.upd_opr
                              ).grid(row = 1, column = 0, sticky = W)
                             
    self.optRest = Radiobutton(self,
                              text = "-",
                              variable = self.opr,
                              value = "-",
                              command = self.upd_opr
                              ).grid(row = 2, column = 0, sticky = W)
   
    self.optMult = Radiobutton(self,
                              text = "*",
                              variable = self.opr,
                              value = "*",
                              command = self.upd_opr
                              ).grid(row = 1, column = 1, sticky = W)
   
    self.optDiv = Radiobutton(self,
                              text = "/",
                              variable = self.opr,
                              value = "/",
                              command = self.upd_opr
                              ).grid(row = 2, column = 1, sticky = W)
   
    self.btnCalc = Button(self, text = "Calcular", command = self.calc)
    self.btnCalc.grid(row = 1, column = 2, rowspan = 2, sticky = E)
 
  def upd_opr(self):
    self.lblop["text"] = self.opr.get()
   
  def calc(self):
    """ Realizamos el calculo escogido. """
    if self.opr.get() == "+":
      self.result = float(self.numb1.get()) + float(self.numb2.get())
      self.lblResult["text"] = self.result
    elif self.opr.get() == "-":
      self.result = float(self.numb1.get()) - float(self.numb2.get())
      self.lblResult["text"] = self.result
    elif self.opr.get() == "*":
      self.result = float(self.numb1.get()) * float(self.numb2.get())
      self.lblResult["text"] = self.result
    elif self.opr.get() == "/":
      self.result = float(self.numb1.get()) / float(self.numb2.get())
      self.lblResult["text"] = self.result

showWindows()


Variante 2:

Código (python) [Seleccionar]

from Tkinter import *

class SimpleCalc(Tk):
  """ Calculadora simple usando Tkinter. """
  def __init__(self):
    """ Initialize the frame. """
    Tk.__init__(self)
    self.grid()
   
    self.title("Simple Calculator.")
    self.resizable(width = 0, height = 0)
    self.geometry("370x75")
   
    self.result = 0
    self.createWidgets()
 
  def createWidgets(self):
    """ Creamos el Frame y demas controles hijos. """
    self.myFrame = Frame(self)
    self.myFrame.grid()
   
    self.numb1 = Entry(self.myFrame)
    self.numb1.grid(row = 0, column = 0, columnspan = 2, sticky = E)
    self.numb1.insert(0, "0")
   
    self.lblop = Label(self.myFrame, text="?")
    self.lblop.grid(row = 0, column = 1, sticky = E)
   
    self.numb2 = Entry(self.myFrame, text = "0")
    self.numb2.grid(row = 0, column = 2, columnspan=2, sticky = E)
    self.numb2.insert(0, "0")
   
    self.lblEqual = Label(self.myFrame, text = "=")
    self.lblEqual.grid(row = 0, column = 5, sticky = E)
   
    self.lblResult = Label(self.myFrame, text = "Result")
    self.lblResult.grid(row = 0, column = 6, sticky = E)
   
    self.opr = StringVar()
    self.opr.set = "?"
   
    self.optSum = Radiobutton(self.myFrame,
                              text = "+",
                              variable = self.opr,
                              value = "+",
                              command = self.updOpr
                              ).grid(row = 1, column = 0, sticky = W)
                             
    self.optRest = Radiobutton(self.myFrame,
                              text = "-",
                              variable = self.opr,
                              value = "-",
                              command = self.updOpr
                              ).grid(row = 2, column = 0, sticky = W)
   
    self.optMult = Radiobutton(self.myFrame,
                              text = "*",
                              variable = self.opr,
                              value = "*",
                              command = self.updOpr
                              ).grid(row = 1, column = 1, sticky = W)
   
    self.optDiv = Radiobutton(self.myFrame,
                              text = "/",
                              variable = self.opr,
                              value = "/",
                              command = self.updOpr
                              ).grid(row = 2, column = 1, sticky = W)
   
    self.btnCalc = Button(self.myFrame, text = "Calcular", command = self.calcRes)
    self.btnCalc.grid(row = 1, column = 2, rowspan = 2, sticky = E)
   
    self.btnSal = Button(self.myFrame, text = "Salir", command = self.quitApp)
    self.btnSal.grid(row = 1, column = 3, rowspan = 2, sticky = E)
 
  def updOpr(self):
    self.lblop["text"] = self.opr.get()
   
  def runApp(self):
    """ Ejecutamos la aplicacion. """
    self.mainloop()
   
  def quitApp(self):
    """ Funcion que llama al evento destroy() del objeto Tk. """
    self.quit()
   
  def calcRes(self):
    """ Realizamos el tipo de calculo escogido. """
    if self.opr.get() == "+":
      self.result = float(self.numb1.get()) + float(self.numb2.get())
      self.lblResult["text"] = self.result
    elif self.opr.get() == "-":
      self.result = float(self.numb1.get()) - float(self.numb2.get())
      self.lblResult["text"] = self.result
    elif self.opr.get() == "*":
      self.result = float(self.numb1.get()) * float(self.numb2.get())
      self.lblResult["text"] = self.result
    elif self.opr.get() == "/":
      self.result = float(self.numb1.get()) / float(self.numb2.get())
      self.lblResult["text"] = self.result
    else:
      tkMessageBox.showerror(title="Error!!!", message="Escoja un operador.").show()
     
#Corremos la aplicacion
root = SimpleCalc().runApp()


El metodo OOP o POO, como prefieran es harto flexible, y aunque en algunos casos complica la solucion a un problema, cuando se trata de interfaces graficas y eventos se hace conveniente su uso.
Para dudas respecto al codigo, busquen la(s) palabra(s) clave de la sección de codigo que despierte dudas en la ayuda de Python.
#8
Java / Re: Java: JDBC acceso a base de datos
20 Septiembre 2007, 22:48 PM
Mira en http://foro.elhacker.net/index.php/topic,181259.0.html
No obstante, ese tut es para MySQL... si quieres mas ayuda para uusar JDBC con SQL, te recomiendo los libros:

JDBC Metadata, MySQL, and Oracle Recipes: A Problem-Solution Approach (Expert's Voice in Java)

JDBC Recipes: A Problem-Solution Approach

Puedes descargarlos gratis desde http://pdfchm.com.

Entra a ese sitio y en la barra de buscar pon JDBC RECIPES
#9
Java / Exelente tutorial de JDBC-MySQL
20 Septiembre 2007, 22:42 PM
Uno de los mejores tutos que he visto del tema... muy simple pero con lo necesario para obtener los fundamentos de como trabajr con el API JDBC para MySQL
http://www.mysql-hispano.org/page.php?id=24&pag=1
#10
Vaya.. se me quedaba otra herramienta... un firewall, no se si es una interfaz para IP-Tables,, o un firewall en si... es el Firestarter... Sin importar lo que sea es muy bueno, sobre todo para usuarios que no les gusta o no saben crear sus ficheros de scripts para IPTABLES... Su forma de funcionar me recuerda el Zone-Alarm en sus versiones mas antiguas, pero es muy eficaz...
Para instalarlo
Código (bash) [Seleccionar]

~# apt-get install firestarter