¿qué es esto de los servlets?

enero 12, 2012

Mi inmersión al mundo java web ocurrió hace unos años ya, pero recuerdo que yo andaba medio perdido con muchos nombres nuevos y con poca idea de cómo se hacían las cosas por ese alocado lugar.

Hoy un poco más cascado puedo ordenar algunas ideas y contar un poco lo que aprendí.

Antes que nada responden a una especificación como casi todo en java.

Un servlet es un componente java que permite generar contenido dinámico y que corre en el contexto de contenedor de servlets. Los servlets que usamos para programar web son los HTTP Servlets. Estos corren en un contenedor -que es parte de un servidor web o de un servidor de aplicaciones y que se encarga de manejar la comunicación con el cliente usando el modelo de Petición / Respuesta. Un ejemplo de contenedor de servlets es apache tomcat.

El contenedor suele tener un archivo descriptor de despliegue: el archivo WEB-INF/web.xml.

En este archivo mapeamos las URL con los servlets que vamos creando, configuración de la sesión y otras cosas como definición de filtros y etc.

A diferencia de otras tecnologías, donde se crea todo un proceso por cada solicitud del cliente, un servlet corre en un hilo. Esto genera menos carga para el servidor, por lo que se supondría que es más rápido.

El contendor maneja su ciclo de vida, que empieza llamando al método init(ServletConfig) e inicializa nuestro servlet. Por cada petición que recibe, invoca al método service(ServletRequest, ServletResponse). Finalmente destroy() es invocado cuando el contenedor decide descargarlo y es el momento para liberar recursos.

Los HttpServlet en particular nos abstraen de manejar qué mensaje HTTP implementando el método service y dejándonos a nosotros implementar los distintos mensajes como GET, POST, DELETE y PUT mediante doGet, doPost, doDelete y doPut. Estos a su vez reciben como parámetro los objetos de clase HttpServletRequest y HttpServletResponse. El servlet trabajará con el contexto provisto por el Request y escribirá en el Response los resultados de su ejecución.

En el próximo capítulo vamos a implementar un servlet muy sencillo que recibe una frase y cuenta la cantidad de palabras. Este implementa dos mensajes, un GET que explica el uso y provee un form y un mensaje POST que muestra el resultado.

¡Hasta la próxima!

Peter Capusotto y sus videos, ahora en el cine en 3D!

enero 6, 2012

Gente, el 26/01 del corriente se estrena en el cine Peter Capusotto y sus videos en 3D. Casi un regalo de cumpleaños para quien suscribe.

¡Feliz día de reyes magos!

agotando las últimas horas de 2011

diciembre 30, 2011

Qué calor que hace! Al fin parece diciembre.

Bueno, lector que pasás por acá, este es un post de cierre de año. Año curioso. En la facu me cambiaron de plan, lo que significó cursar física 2, cosa que por suerte ya pasó y ya quedó afirmada la aprobación en un acta de la facu. Remando y con un par de golpes conseguí el 13/12/11 el título intermedio de Analista Universitario de Sistemas, título que me viene bien laboralmente, aunque no estaba en mis planes originales al ingresar a la facu.

Aprendí algo de computación gráfica y de administración de recursos humanos. Me tengo que poner pillo con la investigación operativa de acá a los primeros días de febrero para recuperarla, que me quedo colgando.

Hice un curso de metodologías de desarrollo seguro, dictado por Cristian Borghello. Es curioso, pero cada vez más veo la necesidad de aplicar metodologías a esto de programar, pero por otro lado las urgencias o tal vez la falta de disciplina de uno, hacen que uno termine a mitad de camino. Es algo que le pasa mucho a quién escribe, sabe que es lo correcto, pero por alguna razón no llega a ponerlo en marcha.

¡Scala es un bodrio! Java 7 llegó tarde y con pocas cosas divertidas. Al parece Java 8 la va a romper. A quien ande en esta no tan noble profesión del desarrollo web en java le recomiendo Como funciona tomcat. El libro explica como funcionan las versiones 4 y 5 del servidor planteando el diseño como si lo quisieramos programar de nuevo.

Recomiendo encaresidamente el libro Kryptonita de Leonardo Oyola. La cosa es más o menos así, el nafta super no es como nosotros. Evidentemente vino de otro lado, pero por razón terminó viviendo entre nosotros. Hay quien dice que si hubiera terminado en otros lados, como en una granja en arkansas, hoy sería el super hombre -no, el de nietzche y sus seguidores folkloristas alemanes, no!-, ese que se para por sobre todos y lucha por la justicia y los mercados. Como sea nuestro nafta súper tuvo un percance, y cayó en la guardia del Paroissien. Un nochero (doctor que cubre guardias por otro a un costo humano muy elevado) tendrá que mantenerlo con vida, mientras sus super amigos lo cuidan del horror… el horror…

Como sea el libro del párrafo anterior es el libro del año.

Con esto de la investigación operativa me dio curiosidad la película esa de la mente brillante, acerca del matemático Nash. creo que también podría haberse llamado “una película intrascendente”. Más allá del drama personal del compañero Nash, el personaje de russel crowe no pasa el test de turing.

Ciudadano Kane la rompe. Matt Groenning le debe mucho.

Creo que el blog del año es (aunque no de este para el autor, pero sí para mí que llegué tarde, pa’variar) es realismo socialista del dibujante Galliano. En el blog, el dibujante publica sus obras (no, no faltó una s) y se ve que el pibe tiene oficio. Yo creo que dejaría a Nik en la lona si a la nación se copase con el cinismo de izquirdas. Pero la nación es una mierda y nik seguirá en la delincuencia de cuello blanco. Soberbia la serie Lenin y vos!

Bueno, yo estoy contento. Muy vago con esto del blog. Pero como todos los años me propongo darle un poco de vida.

Aflojen con la quiniela! Los números también pueden ser el más grande ejercicio para la cabeza.

Ahora me voy a ver a Almafuerte.

Feliz año, lector!

eScalando

mayo 20, 2011

Hace un tiempo ya que estoy trabajando con java. También me tocó pasarlo con alguna materia de la facu.

Java está bien, pero lo pone a uno poco más charlatán de lo que debería. Y no lo digo por los debates acerca si sigue sirviendo o no, si tipado o no, si interpretado o …

Hay muchas cosas que se vuelven repetitivas. Si uno quiere evitar código redundante, tiene que empezar a fabricar clases para cubrir estos baches. Esas clases hacen más ruido del que deberían hacer (eso que la literatura anglo parlante llama boiler plate code).

Hay por ahí un lenguaje que se llama Scala, que ya tiene sus años y que estoy usándolo para probar. Los vendedores de elixhir sostienen que es la felicidad en tu java virtual machine. Scala es la contracción de SCAlable LAnguage.

Del nombre surgen dos interpretaciones, una por el rendimiento del equipo y la paralelización del código al favorecer estructuras inmutables, y la otra interpretación es por el rendimiento del lenguaje según el programador. En scala podés programar objetos y funcional, o muy para un lado o muy para el otro, todo depende del palo del que vengás. Ahora a medida que vas aprendiendo, vas aplicando mejor el paradigma que te conviene y tu código es más claro. También promete facilidad para generar tus lenguajes de dominio específico, que es casualmente una curiosidad que me pica desde que me enteré que existía LISP y todo eso de extender el lenguaje.

Me parece interesante eso de que el lenguaje “te deje” entrar con tu estilo y que vayás aprendiendo, manteniendo tu JVM abajo. Creo que eso tiene gancho para el ambiente profesional y académico.

Así que para ahí voy.

Como ya tengo algo de programación funcional (haskell mediante) encima, no me parece tan raro.

Como regalo al peregrino le dejo una función escrita en scala y un par de líneas para probarla:

def funcionUltraConocida(n: Int) = (2 to n).foldLeft (1) (_ * _)
def esLaRespuesta = 42.equals(_)
esLaRespuesta (funcionUltraConocida(7) / funcionUltraConocida(5))

¡Suerte! Hoy tengo parcial de física 2 y está bastante complicado.

la ciencia es la física, lo demás es coleccionismo de estampillas

enero 10, 2011

La frase “haciendo amigos 2011″ se la sacamos a Ernest Rutherford, físico y químico neozelandés del siglo XX.
Aclaro que  consideramos esta definición de ciencia parcialísima e incompleta y pensamos más en la ciencia como una actividad colectiva que busca generar saber acerca de cosas de la realidad para felicidad del pueblo y grandeza de la nación.
Pero ante todo simpatizamos con la honestidad brutal y creemos que no anda tan lejos del buen camino.
¡Buen año!

Cayó Sistemas de Representación

noviembre 22, 2010

Bueno, el que lea esto por ahí mucho no le importe, pero esta semana, luego de 4 años en la UTN, cayó sistemas de representació (AKA dibujo técnico)

También se firmó ténicas avanzadas de programación (tadp.wikidot.com) y se promocionó Legislación.

Estoy notas de Redes y de Diseño de sistemas, la material troncal de tercero.

Ahora sí, de a 4 o 6 materias por cuatrimestre (este fueron 5), pero rumbo al título.

que diferencia hay entre write, fwrite y send

marzo 31, 2009

joven argentino que cursas en la utn sistemas operativos o muchacho global que andas queriendo aprender a programar entrada salida y sockets en C, espero que esto te oriente.

write es la llamada del sistema operativo a un descriptor. El descriptor es una abstracción que usan los sistemas operativos tipo POSIX para representar un dispositivo al que se le pueden escribir o se pueden leerle datos. La función está declarada en el archivo header unistd.h.

fwrite es una función de la biblioteca estándar de C y se utiliza para escribir registros, indicando cuántos, a un flujo binario. Un flujo es una abstracción que usan muchos lenguajes de programación y que consiste en una secuencia de caracteres (fwrite permite tratarlo de a bytes o bloques) que vienen de un lugar y van a hacia otro. Los flujos más conocidos son los estándar de la consola: teclado entrada y pantalla salida. Para usarla hay que hacer include de stdio.h

send es una función de los sockets. Para utilizarla es necesario incluir las cabeceras sys/types.h y sys/socket.h. Los sockets son otro tipo de abstracción que se utilizan para comunicación entre procesos. Estos procesos pueden estar en un mismo sistema o en distintos. Se le pasa un socket que es también un descriptor pero este se obtiene con las funciones de sockets.

write es de más bajo nivel, es una llamada al sistema operativo. fwrite es propia del concepto de flujo de la biblioteca estándar de C. send permite.

Las 3 reciben un puntero a void, que es la manera en C de referenciar a una posición de datos sin importarnos el tipo de dato. También reciben un size_t que es el tamaño del bloque de datos que vamos a envíar.

Si bien se puede obtener el descriptor de un flujo a traves de una función de biblioteca no se puede hacer el camino inverso ya que el flujo usa un descriptor y no al revés.

send ofrece más control en lo referente a sockets. Se puede indicar que el envío sea bloqueante (el programa se queda bloqueado hasta que pueda envíar los datos) o no bloquentes.

más adelante vamos a hablar de read, fread y recv.

Ah! Revisar la guía beej que es un buen tutorial para iniciarse con sockets.

¡Mucha suerte!

Red Gnutella completa y aprobada

diciembre 25, 2008

Finalmente con ayuda del glorioso Drinktin completamos la red gnutella que nos pedían. El código es ANSI C y lo pude compilar en FreeBSD.

La cosa es más o menos así, uno tiene una red de servidores gnutella funcionando en linux que intercambian queries y queries hits, a partir de un query generado en un servidor que se encarga de recibir pedidos de búsquedas. Este servidor a su vez dispone de un servidor de cache que permite ahorrarse el proceso de búsqueda en la red gnutella, pasándole al cliente -una aplicación de consola en win32- la lista de archivos encontrada en la red gnutella que cumplan, con la dirección adecuada para realizar la descarga mediante HTTP.

En el desarrollo de este proyecto aprendí sockets, algo de ipc sobre unix, threads en win32 y, tal vez lo más valioso, lo importante de tener un equipo aceitado de trabajo donde todos tiremos para el mismo lado. Desde quienes analizan y diseñan, hasta quienes testean, redactan y transcriben todos empujamos para un mismo lado y la cosa fue saliendo.

Y obvio también quienes nos aguantaron en nuestras casas, nuestr@s amig@s que nos escucharon y también aguantaron.

Fue un laburo de aquellos, pero bueno, salió. Gracias a todos, aunque no lean este humilde espacio.

Y si hay consultas de sockets, ipc, threads y procesos distribuidos. Ya pueden consultar.

Felicidades y terminen bien el año, muchach@s.

Programando sobre Linux con C

septiembre 13, 2008

Sigo con esto de programar en ANSI C con GNU/Linux y POSIX.

Encontré un blog muy interesante de un Pablo Garaizar Sagarminaga. El amigo es de españa y se mandó un interesante curso de programación en C para GNU Linux.

Muy recomendable para acompañar la cursada de Sistemas Operativos de FBRA/UTN.

Peter Capusoto vuelve el 22 de Septiembre (2008 reprise)

septiembre 9, 2008

Damas y caballeros, que anduvieron viniendo mientras buscaban info de Peter Capusotto y sus videos.

Según lo que se puede ver en canal 7 y lo que confirmamos con un cumpa de la facu. El programa de rock de la televisión pública vuelve el 22 de Septiembre a las 23 horas.

Vaya otra temporada, y otro septiembre con Peter Capustto y sus vídeos.

Buenas Noches.


Seguir

Get every new post delivered to your Inbox.