A Django site.
Octubre 31, 2011
» Debate sobre Voto Electrónico en Santa Fe

El próximo miércoles (2 de noviembre) en el auditorio de la UTN, Facultad Regional Santa Fe, se va a llevar a cabo un debate sobre Tecnologías para la Participación Ciudadana y Voto Electrónico. No se lo pierdan! Requiere inscripción.

Noviembre 14, 2009
» Algunas fotos del 34° acto de colación de grado

Anoche fue el 34° acto de colación de grado en la UTN FRSF. Luego fue la fiesta anual de la facultad, a la que nos quedamos con varios comapañeros.

100_5363_s

Pronto más fotos :)

update: un par de fotos de las tomadas por Flor Citta.

SANY1452

Pablito, Luis y Gonzalo

Florcitta y Meli

Florcitta y Meli

Mariano

Mariano

Octubre 18, 2009
» Cuadro de Honor

El Jueves viajamos con Ceci a Rosario para participar del evento Cuadro de Honor organizado por la revista PuntBiz, la fundación del Banco Municipal de Rosario y la consultora Sesa Select. Desde hace 4 años organizan una jornada con los mejores promedios de las universidades de la provincia. Eramos muchos chicos, uno 150 jóvenes profesionales de las más diversas carreras.

El agasajo se llevó a cabo en el Salón Auditorio de la Bolsa de Comercio de Rosario, hablaron varias personas a las que me gustó escuchar (Gabriel González, director periodístico de PuntoBiz, la Prof. Ana Navarro de Gimbatti y Alejandro Ferrazzuolo, gerente de Select Executives) y terminó con la entrega de diplomas.

juanjoyceci

Un detalle en la misma revista.

En la página de la vice ministra Alicia Ciciliani hay varias fotos del evento y asomamos entre la multitud :)

update: otra foto linda de ese día.

3rafila-s

Julio 2, 2009
» Gané una de las becas del Programa Bicentenario de Investigación y Posgrado de la UTN!

Hace casi dos meses empecé a reunir toda la información necesaria para presentarme al programa de Bicentenario de Investigación y Posgrado de la UTN. En realidad es un programa nacional, pero cada universidad lo implementaba con autonomía. La UTN daba 20 plazas en todo el país.
De las bases:

La Universidad Tecnológica Nacional, a través de la Secretaría de Ciencia y Tecnología y la Subsecretaría de Posgrado del Rectorado, convoca a jóvenes graduados con interés en desarrollar actividades de investigación y cursar estudios de posgrado en áreas tecnológicas prioritarias (Ver Punto 13 Áreas Temáticas de la Convocatoria) a postularse para becas con el fin de realizar carreras de maestría en la Universidad Tecnológica Nacional u otras universidades del país.

Hoy recibí este mail (cito parte):

Estimado Juan José

Nos dirigirnos a usted a efectos de comunicarle que por Res. del Rector – Ad Referendum del Consejo Superior Nº 1067/09, se aprobó el orden de mérito para la adjudicación de las becas del Programa Bicentenario de Investigación y Posgrado.

En tal sentido nos es grato informarle que usted figura en la 7º posición del orden de mérito por lo que se le ha otorgado la beca solicitada.

Oportunamente, y a través de correo postal, se le informará fehacientemente sobre el particular.

Estoy contento!

Junio 7, 2009
» Día del Ingeniero

Ayer se celebró en Argentina el día del Ingeniero, coincidente con la fecha en que egresó el primer ingeniero de una universidad nacional.

El Colegio de Ingenieros Especialistas celebró el día con un evento realizando en la sede de la Universidad Católica de Santa Fe. El acto tuvo un popurrí interesante; primero hablaron las autoridades y presentaron la segunda edición del libro Medioambiente y normas Ambientales, de los ingenieros María Belén Hammerly y Jorge Hammerly (padre e hija) con prólogo del ingeniero Carlos Mayol. Luego, el ingeniero Marcos Sales (eminencia a todo lo que es ingeniería de voladuras y otras áreas realacionadas y autor de dos libros de estudio) recibió un premdio a su trayectoria.

El acto tuvo un corte para escuchar cantar al coro de la universidad (quienes están preparando un espectáculo sobre la naturaleza y el canto coral, por lo que presentaron un repertorio muy entretenido que incluía temas como La Puerca y Contrapunto Bestialle alla Mente).

Finalmente, y casi cerrando el acto se entregaron diplomas de honor a los egresados con los mejores promedios de las carreras de Ingeniería de la ciudad (Felicitaciones Ceci!).

Maxi Boscovich del LUGLi también recibió un premio. Esta es la foto con todos los homenajeados:

Luego del acto, hubo un ágape o lunch muy lindo que duró hasta las 4 de la tarde.

Enero 12, 2009
» Por qué nos gusta Python

El siguiente texto era parte del informe del proyecto final de carrera de Juan José Conti y Cecilia Lorena Puccinelli, titulado Desarrollo Ágil de un Sistema de Gestión de Negocios Inmobiliarios con Software Libre. Finalmente no fue incluido en la versión definitiva del mismo por lo que lo rescatamos en este blog.

Python

Python es un lenguaje de programación de propósito general de alto nivel. Su filosofía de diseño hace énfasis en lograr productividad para los programadores y legibilidad del código.

Fue creado en el año 1990 por Guido Van Rossum y desde entonces ha sido desarrollado como un proyecto del Software Libre por desarrolladores alrededor del mundo.

A menudo es comparado con lenguajes como C, Java, Perl y Lisp, pero tiene muchas características distintivas que marcan su identidad propia:

Intérprete interactivo

Python viene acompañado de un intérprete interactivo o read-eval-print-loop que permite agilizar el desarrollo de programas ya que se pueden probar ideas y rápidamete ver como resultan sin necesidad de escribir un programa entero en el cual envolverla. Otros lenguajes como Smalltalk, Haskell o Scheme también tienen esta herramienta.

El siguiente es un ejemplo sencillo de uso del intérprete interactivo, los comandos ingresados por el usuario están precedidos por >>>:

>>> 1 + 2
3
>>> "hola"
'hola'
>>> nombre = "fabio"
>>> "hola " + nombre
'hola fabio'

Tipos de datos poderosos

Python incluye de forma nativa tipos de datos poderosos muy útiles a la hora de programar. Las listas y tuplas son secuencias de objetos:

lista = [1,2,3, “cuatro”, Cliente()]
tupla = ('u', 1, 3)

Ambos tipos de datos pueden almacenar cualquier tipo de objetos en orden. La principal diferencia entre estos dos tipos de datos es que las listas pueden cambiar en forma dinámica su tamaño mientras que las tuplas son de tamaño fijo (se dice que es un objeto inmutable, como los números o cadenas de texto).

Los diccionarios son una estructura de datos sin orden que permite almacenar valores asociados a una clave para luego poder recuperarlos a partir de esta. Solo objetos inmutables pueden ser clave de un diccionario.

dicc = {'a': 1, 'b': 10}
dicc['a'] obtiene el objeto 1
dicc[3] = ‘tres’ agrega al diccionario el objeto ‘tres’ asociado a la clave 3 .

Espacios en blanco con significado

En Python los bloques se delimitan mediante el uso de indentación en lugar de utilizar llaves:

if carteles == 0:
    print “No hay carteles disponibles.”
else:
    print “Hay %d carteles disponibles.” % carteles

Esto tiene como objetivo forzar una correcta indentación que redunde en una mayor legibilidad del código escrito.

i = 20
while i > 0:
    print i
    i -= 1

Tipado de pato

El nombre tipado de pato surge de la idea: “si un objeto camina como pato y come como pato, entonces debe ser un pato”.

Las restricciones de tipo no son checkeadas en tiempo de compilación, sino que las operaciones sobre los objetos siempre se intentan llevar a cabo y fallan en tiempo de ejecución si el objeto no puede responder al mensaje que se le envió.

Supongamos que definimos la función saludar como sigue:

def saludar(o):
    print “hola %s“ % o.nombre

A esta función no lo interesa el tipo del objeto o, recibido como parámetro, lo único que le importa es que tenga el atributo nombre.

Así, si la variable m referencia un objeto de la clase Mujer y la variable h referencia un objeto de la clase Hombre y ambas clases tienen un atributo llamado nombre, entonces las siguientes llamadas se ejecutarán sin problemas:

saludar(m)
saludar(h)

Si la variable ‘a’ referencia a un objeto de la clase Anonimo y ésta no tiene un atributo llamado nombre, la llamada a:

saludar(a) lanzará una excepción.

Librería estándar amplia

Python viene con las baerías incluidas!

Python viene con las baerías incluidas!

Al igual que Java, Python cuenta con una amplia librería estándar que acompaña al lenguaje. Ésta incluye módulos para manejar expresiones regulares, crear interfaces gráficas, conectarse a bases de datos entre muchos otros.

Ésta es una de sus mayores ventajas y a esto se debe la popular expresión “Python viene con las baterías incluidas”.

Librerías externas

Además de los muchos componentes incluidos en la librería estándar de Python, hemos utilizando algunas librerías externas:

  • PIL: librería para manejo de imágenes.
  • Pysicopg: conector para el motor de bases de datos PostgreSQL.
  • ReportLab: librería para generar documentos PDF.
  • BeautifulSoap: librería para procesar documentos HTML. Su uso es descrito en la sección 1.1.37.
  • Pynum2word: módulo que convierte números en palabras.

Diciembre 24, 2008
» Ingeniería y cumple 24

El viernes pasado defendimos con Cecilia nuestro Proyecto Final de Carrera: Desarrollo ágil de un sistema de gestión de negocios inmobiliarios con Software Libre. La exposición se desarrolló en uno de los laboratorios del Departamento de Sistemas ante un jurado de tres profesores designados por la Universidad, familiares, amigos y curiosos. Obtuvimos como nota un 10 y nos recibimos de ingenieros. El resto, es fotografía.

Unos instantes antes de la presentación. Estamos bastante nerviosos, pero por suerte cuando empezamos a hablar nos relajamos y todos nos dijeron que salió muy bien.

Unos instantes antes de la presentación. Estamos bastante nerviosos, pero por suerte cuando empezamos a hablar nos relajamos y todos nos dijeron que salió muy bien.

A la salida ya estaba más relajado... pero transpirado! En esta foto con mi abuela Nieve

A la salida ya estaba más relajado... pero transpirado! En esta foto con mi abuela Nieve

A la salida, como es tradición, me esperaban mis amigos con huevos, harina y otras cosas. Obviamente, antes pasé por el baño a cambiarme :)

A la salida, como es tradición, me esperaban mis amigos con huevos, harina y otras cosas. Obviamente, antes pasé por el baño a cambiarme :)

Susana, Juanjo, Raúl, Mary y Nieve.

Susana, Juanjo, Raúl, Mary y Nieve.

Cele, Flor, Barby, Seba, Ale K., César, Luis, Mariano, Juanjo, Bruno, Nico, Gonza, Pablito, Joel, Ale G. (f), Ale G. (m), Ema y Meli.

Cele, Flor, Barby, Seba, Ale K., César, Luis, Mariano, Juanjo, Bruno, Nico, Gonza, Pablito, Joel, Ale G. (f), Ale G. (m), Ema y Meli.

Después de la facultad nos fuimos al salón que habíamos alquilado para festejar junto con unas 70 personas. DJ incluido!

Bailando en la fiesta.

Bailando en la fiesta.

Festejando mi cumple n° 24.

Festejando mi cumple n° 24.

Con Ceci y Joel.

Con Ceci y Joel.

Diciembre 18, 2008
» Casi ingenieros

Noviembre 22, 2008
» 33° colación y fiesta de fin de año en la facultad

Anoche tuvo lugar en el gimnasio de la Factultad Regional Santa Fe, Universidad Tecnológica Nacional la 33° colación de grado y la cena anual de fin de año. A continuación fotos.

Llegamos temprano por que Cecilia tenía que estar un rato antes ya que fue escolta de la bandera Argentina en el acto. En la entrada nos encontramos Lau, Bruno, César y yo, así que cuando la gente fue llegando nos instalamos en la tribuna del estadio.

Nuestros tres amigos egresados fueron Mariano, Gonza y Nico.

Hubo entrega de distintos premios a la trayectoria y y diplomas para los egresados de las distintas carreras que se estudian en nuestra facultad. También se entregaron diplomas a licenciados, magistesrs y especialistas que concluían distintos estudios de post grado, también en nuestra casa de estudios.

Para finalizar el acto, el decano de la facultad dio un discurso muy interesante en el que hizo mucho incapié en la carrera Ingeniería en Sistemas de Información y su sector productivo en general, resaltando el esfuerzo que se hace para tener laboratorios actualizados y poder poner a disposición de la sociedad y la industria a los profesionales que demanda.

El resto de la noche tuvo lugar la cena de fin e año.

Octubre 6, 2008
» Así se fue la 3er Jornada de Python en Santa Fe


Como desde hace 3 años se viene organizando la Jornada de Python e Santa Fe con el objetivo de promocionar este maravillo lenguaje en esta localidad y sus alrededores. Por suerte fue todo un éxito y salió muy bien, estoy muy contento con el resultado.

Esta vez participé como organizador ayudando a los chicos con más experiencia en la organización de este evento intentando colaborar en lo que podía y tirando algunas ideas locas.

La jornada se realizó el pasado Sábado 4 de Octubre con una totalidad de 9 horas de duración en la Universidad Tecnológica Nacional Facultad Regional Santa Fe con una muy buena cantidad de asistentes, en dónde el auditorio estaba casi casi lleno.

Un par de semanas atrás de realizarse la jornada ofrecí mi casa como hosting para los asistentes por la lista de PyAr para los que quieran venir a Santa Fe desde afuera. Como siempre, esto es algo que me gusta hacer, ya que cuando voy a otras ciudades en mi prefencia particular prefiero que me alojen a que me paguen/pagar un hotel, me gusta estar cerca de la comunidad y compartir buenos momentos a que embolarme en un hotel, pero esto va en cada uno.

Tuve la suerte de poder alojar a varios: Karucha (Héctor Sanchez), facundobatista (Facundo Batista) :P , nubis (Cristian Bruno) y leorockway (Leonardo De Luca) . Nos organizamos como pudimos y creo que todos quedaron cómodos, yo me ofrecí a dormir en una bolsa de dormir porque la cantidad de camas/colchones/sillón eran justo cuatro. Espero que ellos se hallan sentido cómodo en la estadía.

El Viernes por la tarde el primero en llegar fue Leo con quién fuimos a recorrer el centro de Santa Fe y a pasear un rato. Luego vino Karucha y charlamos un rato largo hasta que llegaron Facundo y Nubis, quienes fueron diréctamente a lo de Nicolás César para juntarnos a comer una pizzeada y charlar.

Durante la noche, Nico hizo un monólogo sobre su trabajo y la charla que iba a dar al día siguiente sobre BeautifulSoup y el Gran DT. Un cago de la risa, no paraba de reirme y me hacía recordar varias cosas del mío.

Al día siguiente fuimos lo más temprano que pudimos a las jornadas para registrarnos y preparar todo porque Facundo tenía la primer charla, y yo tenía que colaborar con la organización, que ya me estaba haciendo el chanta llegando tarde y sin haber ido el día anterior a acomodar todo :)

Luego de llegar, lo primero que hice fue ponerme a doblar mini-tutoriales de Python para que la gente se lleve uno cuando se registre. Por cierto, estaban buenísimos. Después de esto estuve viendo la charla de Facundo Batista y controlando que todo salga bien, manteniéndome cerca por si necesitaba algo, por suerte salió todo bien.

Luego me ocupé del quincho de la facultad que habíamos pedido para almorzar ahí. Fui en busca de las llaves, ordené las sillas y demás. Luego me fui a la registración para estar ahí ayudando en lo que surja y charlando con mucha gente. Pegamos algunos afiches de Santa Fe Libre para ver si la gente se va sumando al proyecto y algunas cositas más.

Antes de ir para el quincho a comer, ví la charla de Nicolás César sobre BeautifulSoup, esta estuvo muy buena, sobre todo muy graciosa ya que a esta librería ya la conocía bastante: no encontré nada nuevo en la charla pero me hizo recordar algunas cosas y reirme mucho. Enseguida después de esta nos fuimos a comer al quincho de arriba con todos los disertantes y algunos amigos de los mismos. Comimos pizzas, empanadas y sandwichitos muy ricos… Por suerte alcanzó justo justo!

Por la tarde, al empezar la primer charla de Daniel Moissete nos enteramos que no había cable para el proyector D’Oh, asique salimos corriendo para todos lados buscando ese maldito cable. Por suerte lo encontramos, aunque no bastante rápido, y Daniel perdió unos cuantos minutos de proyección para su charla.

Ví un poquito de la charla de cocos2d también, ya que andaba a las vueltas por ahí, pero ví parte del final y como siempre que veo un poquito de eso me vuela el bocho y me dan ganas de hacer cosas con esa librería. Es genial!

Otra de las charlas que quería ver era la de Nubis, Hacking Django y la verdad que me gustó mucho, aunque se halla quedado corto con el tiempo, estuvo muy buena. Me abrió bastante la cabeza de las cosas que se pueden hacer con la web y con Django, dos terrenos en los cuales no soy muy fuerte. Esta charla tuvo un toque de color… Una pregunta de Gastón Ramos en el medio de la charla haciendo una comparación con Ruby On Rails, Nubis reconoce la voz de él y le contesta sutilmente: “Acá no hablamos de Ruby“. Me hizo reir bastante, porque fue muy cortante y muy graciosa la forma en que se lo dijo :)

Al cierre de la Jornada estaban las Lighting Talks, una charlas relámpagos de 5 minutos cada una, en la cual cada uno cuenta algo de lo que pueda en este tiempo, intentado hablar lo más rápido que pueda. Estuvieron muy buenas, hubo charlas muy variadas en contenido y algunas no tenían nada que ver con Python, eso estuvo bueno también. Una de las que más me gustó fue la de John Lenton que mostró unas fotos y hablaba sobre el trabajo con el software libre. También estuvo la de Leito Monk, quién tuvo tan buena suerte de que le salte el fsck al momento de bootear la máquina que fue muy gracioso.

Al finalizar las jornadas volvimos cada uno para su correspondiente casa, nos bañamos, hablamos un rato y salimos para Plataforma, el bar de la terminal, a comer y tomar mucha cerveza: a cumplir con el objetivo encubierto de la Jornada de Python. Acá hablé mucho con Pedro, Guille, Nubis y una chica que no recuerdo el nombre… Bah, creo que nunca lo supe. Después de comer mucho y entender poco, con Nubis, Karucha, Leo y Facundo nos fuimos a tomar unas cervezas más a “La S boulevard” en dónde nos engañó el Reggae de la puerta para encontrarnos con Cumbia en el boliche.

Cerca de las 3 am Facundo y Karucha se vuelven para descanzar ya que al otro día Facu tenía que manejar para volverse a Buenos Aires. Nosotros seguimos viaje con los chicos y dimos un par de vueltas más, para volver totalmente liquidado, de mi parte, cerca de las 6 de la mañana.

El domingo a las 12 nos encontrábamos en lo de “Chiquito”, un tenedor libre de pescado ubicado al final de la costanera. Una exquisitez realmente. Comí como un sapo. Para cerrar la tarde nos fuimos a tomar un helado a una heladería de la zona y finalmente organizamos todo como para levantar campamento y que cada uno se vuelva a su respectivo lugar de origen.

Como Leo se quedaba un día más, nosotros volvimos a casa y luego nos fuimos a dar un par de vueltas por el centro y comer algo en “La City” por la noche.

Hoy Lunes, me fui a trabajar totalmente liquidado de un fin de semana agitado intentando hacer todo lo más rápido posible en el trabajo porque había quedado con Leo que me pasaba a buscar para ir a almorzar por la peatonal o ver qué hacíamos al menos. A las 12 en punto me mandó un mensaje, cerré todo y salí. Fuimos nuevamente a “La City” y comimos un lomo completo expectacular, con huevos fritos y papas fritas… Casi exploto!

Caminamos la vuelta hasta mi casa con la panza llena e hicimos fiaca un rato, después hablamos sobre VoIP y probamos distintos programas, entre ellos mumble el cual recomiendo para hacer conferencias de más de dos personas. A eso de las 17 hs lo acompañé a Leo a la terminal para que pegue la vuelta hacia Buenos Aires…

Así se terminó la 3er Jornada de Python en Santa Fe. Gracias a todos por venir y por la buena onda que tuvieron los disertantes, asistentes y en especial a la gente que vino a casa.

Junio 5, 2008
» Me privan los datos


Es lamentable. Hoy después de hablar lo que publiqué en el post anterior con la profesora, un amigo le preguntó que forma tenía de exportar la base de datos para poder trabajar en su casa (estamos haciendo 2 guías de 20 ejercicios cada una de sentencias SQL). Antes me había preguntado a mí y no tenía ni idea ya que estaban usando Oracle.

A: Le preguntaba si no hay una forma de exportar la base de datos o algo para poder llevármela a mi casa y poder trabajar ahí.

P: No porque el profesor no la puso disponible a la base de datos.

A: Ah, ¿No está disponible?, yo le decía porque no llegamos a hacer todos los ejercicios.

P: Mmm… No, la única opción que tienen es venir a trabajar acá al laboratorio

También está en OGG, y es patético. Asique bueno, mi amigo se puso a hacer SELECT * FROM tabla; de las 8 tablas que había y copiaba eso a un “.txt” para que yo me lleve a mi casa y luego haga un script que levante eso y lo vuelque en una base de datos.

Recién lo termino, aunque no está muy bien hecho, ya que algunos atributos estaban separados por 2 espacios y otros por N, quedó más o menos… A veces tuve que agregarle campos vacíos (le puse ** para identificar cuales eran).

Igualmente, no entiendo muy bien todavía, y no tengo ganas de ponerme a ver cómo son tampoco, son las claves foráneas y las claves primarias. Aunque tengo el diagrama, este se entiende bastante poco.

… dentro de poco no voy a poder compartir con nadie lo que aprendo en la facultad, espero realmente que esto cambie …

» Una “discusión” sobre un parcial


Primero como para ponernos en órbita, explico de qué se trata esto. Ayer (Martes) rendí el primer y único parcial de Gestión de datos. No pude estudiar mucho por algunas cuestiones personales en cuanto a discrepancia con los docentes de la materia y no tenía mucho ánimo. Por suerte algo de SQL sabía porque lo había estudiado por mi cuenta en otra oportunidad.

Luego de salir del parcial, me fui contento a mi casa porque me había ido, a mi modo de ver las cosas: bastante bien. Como siempre, esto no quiere decir que apruebe ni nada por el estilo, y mucho menos si considero la bronca que me tienen los docentes por hacer preguntas en clases.

Dejando de lado todo esto, hoy tuve clase de práctica y un amigo me preguntó algo sobre un ejercicio que me hizo poner en duda. Aproveché y le pregunté a la profesora sobre esto. Escribo abajo el diálogo completo (transcripción que realicé desde un OGG).

Pero antes, explico más o menos como era el enunciado del problema. Había un diagrama entidad-relación el cuál nosotros teníamos que pasar a tablas SQL pero sin escribir las sentencias CREATE TABLE y demás. Sino que con algunos dibujos y explicando cuales eran claves primarias y foráneas estaba bien. El diagrama era como este (lo único que le falta son algunos atributos a foto que no recuerdo, pero es para mostrar la idea):

El enunciado decía más o menos así: “Un usuario puede tener 0 o n fotos y una foto puede tener como máximo un dueño. Además un usuario puede tener n cuentas de email. NOTA: cant_fotos es un atributo calculable.”

Yo hice tres tablas, una para Usuario, otra para Foto y otra Usuario_Email en la que indicaba el email y el usuario, de modo que pueda tener muchos emails un mismo usuario. En ningún lado puse cant_fotos ya que en el enunciado decía que era un atributo calculable. Aunque antes de leerlo igualmente pensaba que no debería estar ya que sale con un SELECT COUNT. Asique no lo puse en ningún lado. Ahora viene lo que hablamos con la profesora hoy. El primero que hablar (”A”) es un amigo, y luego paso a ser yo (”M”). “P” es la profesora:

A: En la que teníamos que armar las tablas: a mí me quedaron tres, Usuario, Correo y Foto. Además había un atributo que era calculable.

P: Si, eso es porque estaba en el modelo.

A: Claro, yo no lo puse en ninguna tabla.

P: No, pero eso tiene que estar en la tabla Usuario.

A: ¿Tiene que estar?

P: Si obvio.

A: Pero si se puede calcular.

P: El contenido después lo verán, se supone que si lo estás haciendo en la vida real el contenido lo calcularás por código o lo que sea. ¿Pero dónde lo vas a almacenar? Tenés que tener creado el campo dentro de la tabla.

M: Pero eso se calcula desde la tabla de fotos. Hacés un SELECT COUNT de la tabla de fotos y sabés cuantas fotos tiene ese usuario. No es necesario guardarlo.

P: Bueno, está bien. Lo óptimo sería no guardarlo, sino que ir calculando e ir mostrándolo. Sino que así como estaba en el modelo se necesitaba tener ese atributo en la tabla.

M: ¿Porqué? No entiendo…

P: Y porque es un atributo de Usuario. Después el contenido lo vas calculando y, osea, lo que se entiende es que si está en el modelo es porque se necesita tenerlo almacenado en algún lado, entonces lo almacenás como un atributo en la tabla de Usuario. Igual, si no lo pusieron se les bajará unos puntitos nada más. Osea, sólo por no haber puesto el atributo N-Fotos no van a salir mal.

M: No, está bien, no es la cuestión salir bien o salir mal. El tema es que no entiendo porqué está mal no ponerlo, a eso me refiero. Si justamente el enunciado decía “el atributo es calculable”

P: Si, en realidad en el enunciado estaba como una aclaración para que no pregunten “¿Qué es ese atributo que esta con líneas puntadas?” Puede ser que eso los confundió digamos y que pensaban que había que hacer algo o no almacenarlos.

M: Es que está almacenado, porque si vos sabés cuantas fotos hay en la base de datos, ese
atributo ya lo tenés. A eso es lo que voy yo.

P: Sí, pero cuando vos hacés el cálculo lo obtenés.

M: Claro, de hecho si lo guardás puede quedar inconsistente la base de datos porque te quedan 5 fotos y tiene 10.

P: Está bien, y es así como vos me decís. De hecho puede ser que no esté el atributo en
la vida real y no lo tengas que guardar, pero en este caso del modelo sí porque aparecía. Si
no fuese necesario diréctamente no aparece en el modelo y por código lo obtenés. Y listo.

M: Bueno, entonces que sea calculable y que no sea calculable es indistinto.

P: Si, en este caso es lo mismo.

M: No puede ser.

P: ¿Cómo que no? Cuando nosotros hicimos la guía había cosas que te pedía la guia y que en modelo no se reflejaban. Bueno en este caso es al revés, si estaba en el modelo era porque después al transformarlo lo ponías como un atributo en tu tabla. Igualmente todo es discutible, cuando después vos empieces a trabajar podés ir a preguntarle al usuario que te está mandando hacer el trabajo si lo va a querer tener almacenado o no. Y le vas a decir que no hace falta porque lo vas a poder calcular y lo podés hacer por código, etc etc… Y seguramente no lo vas a tener. En este caso del modelo si.

… me imagino preguntándole al cliente: “Señor, ¿Quiere que guarde el atributo X o lo calculamos al momento de mostrarlo? ¿Usted que opina?”…

Mayo 28, 2007

Leonardo Andrés Gallego
hombrepac
Leonardo Andrés Gallego trata sobre »
» Sudoku… o como dirían allá por el este: “数独”

Bueno, estos japoneses se las traen…

Los tipos son rebuscados como ellos solos, laburan que da calambre y tienen algunos conceptos de honor, responsabilidad y demás que no le vendrían mal al mundo occidental imitar un poquito. Sin embargooooooooo… como con todo, llegamos un poquiiiiito tarde, y resulta que lo que les imitamos, es un jueguito que inventaron hace no-se-cuantos-miles-de-años… bue, no se si miles, pero unos cuantos seguro!

Este dichoso jueguito se llama Sudoku, obviamente la implementación actual es una variante de alguna especie de lo que en sus orígenes deberían jugar los Samurais… o no? Bueno, la Wikipedia no dice nada al respecto, así que puedo asumir lo que quiera, y asumo que los Samurai jugaban Sudoku… hasta que se demuestre lo contrario.

La cosa es que este jueguito (Sudoku) funciona de la siguiente manera:

Tenemos una grilla de 9×9, divida en regiones de 3×3, con algunos números en posiciones ya asignadas (como pueden ver a la derecha), la gracia del juego, es rellenar este tablerito con números, estos números tienen que ser entre 1 y 9 cada uno, y tienen que cumplir ciertas condiciones:

1) No pueden haber dos números iguales en una fila
2) No pueden haber dos números iguales en una columna
3) No pueden haber dos números iguales en una región

Esto quiere decir que las 9 regiones formadas por bloques de 3×3, deben contener los números del 1 al 9 en cada una de ellas cumpliendo las reglas de arriba. Hasta ahí, es bastante simple, no? 1, 2, 3 por acá… 2,3,5 por allá… bueno, no! No es así.

El tema se complica cuando no se puede resolver con simplemente descartar números de la fila, columna y región, ya que no siempre disponemos de la cantidad de números necesarios ya asignados para poder eliminar todas las opciones salvo una. Osea, nos pueden quedar 2 (o más) posibles números en un casillero… o más. Eso es un problema… obviamente, hay formas de evitarlo, pero yo no me voy a meter en intentar explicarlas, ya que todavía estoy tratando de entenderlas!!! Por que?

Por que resulta que el maldito TP (trabajo practico!) es un sistema para resolver Sudokus!! Si!!! un programa que nos permite (1) crear un Sudoku, (2) jugar el Sudoku creado (con corrección automática ;) y (3) resolver automáticamente el Sudoku.

El programa esta finalmente terminado! Vamos a ver si en los próximos días creo una pagina “proyectos” o algo así y lo meto ahí con el código fuente (una vez q lo limpie, ya q tiene muchos comentarios y huevadas).