Feliz Día del Programador

FELIZ DÍA DEL PROGRAMADOR A TODOS!!!! =)

Bueno, este post no puede ir solo con ese título, cierto?xD

Un poco de información: desde hace unos años se celebra el 13 de setiembre como día del programador, fue impulsado por http://www.programmerday.info/, e incluso se tiene un hashtag en twitter para esto #programmerday.

Como ya muchos habrán contado los días hasta el 13 de setiembre (o no muchos), el 13 de setiembre es el día 256 del año, el cual es un número muy conocido por nosotros al tratar de elevar 2 a la 8. Al momento de conocer esto, me puse a pensar sobre este número en mi historia de programación, un claro caso es el byte, que llega a 256 - 1.

Pero vamos a algo más complejo y que apenas cuando vimos dijimos "Eso es problema por el byte!!!" (como buenos geeks XD).



Este nivel de Pacman es llamado el "split screen", lo pueden buscar en varios lados con eso. Esta fase es la número 256 de Pacman en Arcade, aquellos que hayan llegado a esa fase podrán ver este error, o si quieren llegar ahí, pueden usar el Mame para jugarlo =). Incluso, la wikipedia muestra información acerca de esta fase http://en.wikipedia.org/wiki/Pac-Man

Uds tienen algún ejemplo particular del 256? Sería chévere conocerlo al menos por este día =)!!!!!!

Y nuevamente, FELIZ DÍA DEL PROGRAMADOR a todos =). Si son Jefes de Proyecto y demás, aprovechen en saludar a sus desarrolladores =D

Nos vemos

shinjiDev

Resultados de la Conferencia de Python en Infosoft2009

Empezaré este post agradeciendo a todas las personas que asistieron a la conferencia de Python en Infosoft 2009, de paso agradecer a la gente de Infosoft que fueron muy amables conmigo y a la twittera @paolavc por haber asistido :D

La conferencia, a mi parecer, resultó mejor de lo esperado, teniendo varios asistentes, muchas preguntas al respecto de Python, comparaciones con RoR, con Java, PHP y otros lenguajes. Aparte de eso se regalaron 2 discos de Ubuntu 9.04(con sticker) y un speaker de BizTalk Server :D!!!

Me gustó muchísimo la participación del público que no se quedaron en silencio y en especial esas ganas de querer ver código Python. Con esos ánimos creo que más adelante se puede dictar algún taller en la PUCP, que en lo posible será gratuito.

Y como lo prometido es deuda, acá les entrego la presentación que se hizo en Infosoft2009

http://rapidshare.com/files/273084383/PythonInfosoft2009Last.zip

El programa con el que se hizo las diapositivas está acá:

http://rapidshare.com/files/273113373/Ovation_1.0.1472.zip

Tb publicaré algunas fotos que me tomaron en el evento, gracias a todos y no dejen de visitar el blog.

Nos vemos

ShinjiDev

Conferencia de Python en Infosoft 2009

InfoSoft
INFOSOFT es la Feria de Exposición de Proyectos de Alumnos de Ingeniería Informática producto de la organización en conjunto de la Asociación de Alumnos de Ingeniería Informática (AAII), y el Grupo de Investigación y Desarrollo de Ingeniería de Software (GIDIS).

Esta feria se da cada año en la PUCP, este año es su décima edición y nos tiene la siguiente lista de charlas que se encuentran en su sitio web: http://blog.pucp.edu.pe/infosoft

Este año me toca nuevamente ser ponente de este gran evento, donde tocaré el tema de "Python, el lenguaje de programación que debes conocer", es más que todo una charla introductoria a lo que es python y todo lo que se puede lograr con este lenguaje =).

A quienes estén interesados, la charla se dará el día viernes a las 6:30pm en el Auditorio de Ciencias e Ingeniería de la PUCP =).

Nos vemos ahí

cya :3

Shinji


P.d. La cabecera fue obtenida del blog de Infosoft =)

Python - El Inicio

Durantes este año me comenzó a agradar bastante este lenguaje cuando me dio la necesidad de aprender un nuevo lenguaje que sea multipropósito, así que debido a los buenos comentarios que recibe en varias webs, así como el hecho de que puede realizarse desarrollo web con éste, me enamoró al instante.

print "Hello, Python"

Empezemos con la pregunta clásica

¿Qué es Python?
Python es un lenguaje de programación de propósito general que muchas veces es usado para scripts, por lo cual se le llama muchas veces lenguaje de script. Es orientado a objetos, pero también permite trabajar en forma procedimental. El creador de este lenguaje es Guido van Rossum quien actualmente labora en Google, su cuenta de twitter es Gvanrossum

¿De dónde proviene el nombre Python?

El creador coloco este nombre debido a que era muy fanático de los humoristas Monty Python

¿Python es interpretado o compilado?

Python se considera un lenguaje interpretado, pero existen algunas implementaciones del lenguaje que compilan el código para volverlo más eficiente (debido a diferencias entre compilado e interpretado) como es el caso de IronPython


¿Qué implementaciones existen de Python?

Jython, CPython IronPython y PyPy. Jython es la implementación Java de Python. IronPython es la implementacion de Python para .Net (la versión 2.0.1 es la estable actualmente)

¿Qué organizaciones utilizan este lenguaje?

Las empresas que usan Python no son cualquier compañía que experimenta con lenguajes, sino que son empresas muy importantes como: Google, Intel, Cisco, HP, NASA, iRobot, BitTorrent, OLPC, entre otros. Creo que el punto es obvio, Python tiene bastante fuerza en empresas grandes, así como en pequeñas que buscan innovar.

¿Qué se puede hacer con Python?

Es una pregunta algo difícil de responder, no porque no hayan casos donde se puede usar, sino porque son demasiados:
- Sistemas Operativos
- GUIs

- Scripts de Internet

- Integración de componentes (Integración con librerías de C, componentes COM, Corba, entre otros)
- Programación con Base de Datos (Su Api permite comunicarse con cualquier BD)
- Programación científica y numérica (Con la potente librería NumPy se pueden hacer maravillas)

- Juegos

- Procesamiento de Imágenes
- Inteligencia Artificial
- Programación de Robots
- Jugar solitario (no es broma, es en serio xD)


¿Cuáles son las características principales de Python?
- Es un lenguaje orientado a objetos
- Es libre, es decir puedes usarlo libremente, modificarlo y, si se gusta, hasta venderlo junto a los productos que uno haga

- Portable, corre en casi todos los SO, en PDAs, celulares con Symbian, Ipods, entre otros - Poderoso, debido a la cantidad de librerías de terceros que ya hacen muchas cosas que uno necesita, aparte de las librerías que ya posee Python, y cabe mencionar su administración automática de memoria.
- Mixto, es decir se puede integrar de manera "fácil" con otros lenguajes de programación como C o C++ - Fácil de usar =) (Eso es lo que más me gusta)
- Legible para cualquier persona que haya desarrollado


¿Dónde puedo encontrar una guía inicial para desarrollo web con Python?

Se puede encontrar una guía muy interesante en
Python Web . Ahí podrán encontrar la lista de frameworks que llegan a recomendar para el desarrollo web.

¿Algo interesante que pueda ver que se haya hecho en Python?

-
MythPyWii
- Python + Wiimote + 15 toneladas
- Mobile Python

¿Qué libro se recomienda leer para empezar con Python?

Particularmente recomiendo Learning Python y A byte of Python.


¿Algún curso que pueda llevar para aprender Python?

Curso de Python

¿Existe en el Perú alguna comunidad dedicada a incentivar el uso de Python?

Sí, hace poco nació Python-Perú, y todos son bienvenidos a integrarse e incentivar el uso de Python


Esa es toda la información que les puedo dar por ahora, la mayor parte de la información la obtuve del libro Learning Python de O'Reilly, lo recomiendo en verdad para quien desee empezar con Python y vea que es todo un mundo este lenguaje, además que te obliga a cumplir con estándares de programación.

Proximamente lanzaré un tutorial de IronPython y espero les llegue a agradar a todos y los incentive a meterse más con este lenguaje.

Saludos a todos y espero sus comentarios al respecto.


ShinjiDev

Open Session In View - IIS7 - Spring .Net

Holas a todos

Volviendo a escribir un artículo que, a recomendación de un amigo, podría ayudar a muchos con este problema que siempre ocurre al utilizar Spring .Net + Open Session in View design pattern + IIS7.

Vamos por lo primero, el patrón Open Session in View, según Hibernate este patrón consiste en mantener la sesión de Hibernate(aunque en el caso de .Net es NHibernate) abierta hasta que se realice la renderización de la vista.

Ahora, por qué existe este patrón? La respuesta es simple, muchos que hemos usado Nhibernate podemos notar que cuando tenemos un objeto que tiene relación one-to-many (o cualquier otro tipo de relación) con otro objeto, y queremos acceder a este último al momento de estar en el code-behind, nos aparece el clásico error "LazyInitializationException".

El patrón Open Session In View, tal como se mencionó anteriormente, permite solucionar este problema al mantener la sesión abierta hasta la renderización de la vista.

Ahora, la historia, tal como mencioné en la conferencia de Spring Live Perú 2009, me encuentro en un proyecto de .Net (framework 3.5) en el cual estoy cumpliendo cierto papel de arquitecto. En este proyecto estamos utilizando Spring .Net, NHibernate y AjaxToolkit. Entonces un día nació la necesidad de usar el patrón Open Session in View, todo bien en el sitio donde desarrollábamos, pero al momento de probarlo en un IIS7 ocurría un problema muy extraño, aún seguía saliendo el error de "LazyInitializationException". Lo cual fue muy extraño, pues si estaba solucionado en nuestras laptops cuando probábamos, entonces qué razón había para que no funcione en el servidor?

Entonces, como todo problema, se intentó buscar la solución a esto pero no había mucha información del problema, hasta que pude dar con el problema en este sitio
donde nos indicaban cambiar el módulo de Open Session In View de system.web/httpModules a system.webserver/modules. Es decir, tenemos que pasar esta línea de código:

<httpModules>
<add name="OpenSessionInView" type="Spring.Data.NHibernate.Support.OpenSessionInViewModule, Spring.Data.NHibernate20"/>
</httpModules>

a la siguiente posición:

<modules>
<add name="OpenSessionInView" type="Spring.Data.NHibernate.Support.OpenSessionInViewModule, Spring.Data.NHibernate20"/>
</modules>

Pero hay que tener mucho cuidado con esto, porque el sitio menciona el mover de httpModules a modules. Pero no debemos cortar y pegarlo, porque esto ocasionaría que funcione en el servidor IIS7, pero no en nuestras máquinas de desarrollo. Por lo tanto deberían tenerlo replicado tanto en los modules como en los httpModules.

Y listo, con esto podrán usar el patrón Open Session In View para NHibernate integrado con Spring .Net, y funcionará tanto para IIS7, como para el IIS6.

Espero les pueda servir esto a muchos para solucionar problemas tan particulares que se tienen con el IIS7.

Enjoyt it

Shinji