There is a false equivalence asserted about
REST and SOAP that yields more heat than light when they are
compared. They are not the same thing. They are not intended
to do the same thing even though you can solve many
architectural problems with either approach.
The confusion largely stems from the mistaken idea that REST
“is about invoking Web services through URLs”. That has
about as much truth to it as the idea that “agile methodologies
are about avoiding documentation.” Without a deeper
understanding of the larger goals of an approach, it is easy to
lose the intent of the practices.
REST is best used to manage systems by decoupling the
information that is produced and consumed from the
technologies that do so. We can achieve the architectural
properties of:
• Performance
• Scalability
• Generality
• Simplicity
• Modifiability
• Extensibility
This is not to say SOAP-based systems cannot be built
demonstrating some of these properties. SOAP is best
leveraged when the lifecycle of a request cannot be
maintained in the scope of a single transaction because of
technological, organizational or procedural complications.
Mis experiencias como desarrollador, herramientas, etc... un poco de todo pero nada en particular
25 agosto 2011
SOAP vs REST
Actualizo después de mucho tiempo con un recorte que me llamó la atención. Es de DZone Refcards:
01 diciembre 2010
Sonido en la Dell Studio 14"
Bueno, demás está decir que no estoy muy feliz con mi nueva notebook, ya que no se por qué le sacaron las luces indicadoras (acceso al disco, caps lock activado, num lock activado, wifi activado, etc). No hay forma de saber si algo está on u off salvo que el sistema te provea algo de información...
Por otro lado, todavía Ubuntu no me activa el sonido... por más que actualizo siempre que se actualiza el kernel tengo que volver a instalar el sonido y por otro lado, en general si uso el firefox se me bloquea el sonido para otras aplicaciones...
En fin, cansado de ejecutar siempre los mismos comandos, creé un script que lo comparto con todos. Es necesario correrlo como superusuario, por lo cual les pido que le den una revisada antes de ejecutarlo. A mi por lo menos me funciona (nota: descarga las librerías en /usr/src/alsa).
Por otro lado, todavía Ubuntu no me activa el sonido... por más que actualizo siempre que se actualiza el kernel tengo que volver a instalar el sonido y por otro lado, en general si uso el firefox se me bloquea el sonido para otras aplicaciones...
En fin, cansado de ejecutar siempre los mismos comandos, creé un script que lo comparto con todos. Es necesario correrlo como superusuario, por lo cual les pido que le den una revisada antes de ejecutarlo. A mi por lo menos me funciona (nota: descarga las librerías en /usr/src/alsa).
#!/bin/sh
/etc/init.d/alsa-utils stop
apt-get -y install build-essential ncurses-dev gettext xmlto libasound2-dev linux-headers-`uname -r` libncursesw5-dev
rm -rf ~/.pulse*
if [ -d /usr/src/alsa/alsa-driver-1.0.23 ]; then
echo "No es necesario bajar los archivos";
else
echo "Descargando archivos";
cd /tmp
wget ftp://ftp.alsa-project.org/pub/driver/alsa-driver-1.0.23.tar.bz2
wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.23.tar.bz2
wget ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.23.tar.bz2
rm -rf /usr/src/alsa
mkdir -p /usr/src/alsa
cd /usr/src/alsa
cp /tmp/alsa* .
tar xjf alsa-driver*
tar xjf alsa-lib*
tar xjf alsa-utils*
fi
cd /usr/src/alsa
cd alsa-driver*
./configure
make
make install
cd ../alsa-lib*
./configure
make
make install
cd ../alsa-utils*
./configure
make
make install
27 junio 2010
Dell Studio 14" + Ubuntu 10.04
Recibí hace poco mi nueva Dell Studio 14". Como pc está impecable. Un detalle que no me gustó es que se sacaron los indicadores luminosos para la tecla mayúsculas, la de actividad de disco y la de wifi (si está activado o no). Después muy linda maquinita.
Una de las primeras cosas que hice es reconfigurar las particiones para instalar Ubuntu, lo cual no fue muy dificil, pero por problemas de compatibilidad con la placa de red Broadcom Corporation NetLink BCM57780 Gigabit Ethernet PCIe, me quedé sin Internet en la notebook. Solucionarlo no fue del todo fácil, aunque en escencia lo que debía hacer era instalar el b43-fwcutter. El problema es que al no tener internet (tampoco por cable de red), debía instalarlo del CD de instalación, pero para instalarse, el b43-fwcutter debe bajar unos archivos de internet... Así que la solución fue bajar esos archivos en otra pc con internet, copiarlos en un pendrive y luego instalar b43-fwcutter.
En si fue fácil resolverlo, lo que no fue fácil fue dar con la solución, que finalmente la encontré en https://help.ubuntu.com/community/WifiDocs/Driver/bcm43xx#b43%20-%20No%20Internet%20access
Una vez resuelto esto, me puse a configurar las cuentas de mail y chat tratando de probar el gwibber, pero tuve problemas al agregar mi cuenta de facebook. Una vez que autorizaba a Facebook a ser accedido por Gwibber, no encontraba la forma de agregar la cuenta. Al final tuve que reiniciar la pc por una actualización de seguridad y cuando volví a intentar de agregar mi cuenta de Facebook, apareció esta vez un botón Add que me permitió culminar el proceso.
Por último, los botones a la izquierda no me gustaron, creo que es algo de interfaz de usuario que ya está grabado en todos nosotros y me encontré varias veces yendo a buscar los botones a la derecha... Como el theme nuevo me gustó mucho, lo único que deseaba era mover los botones, y aquí encontré la solución: http://www.howtogeek.com/howto/13535/move-window-buttons-back-to-the-right-in-ubuntu-10.04/
Otra cosa que me falló fue el sonido. Aparentemente también tuve que instalar drivers propietarios. Para esto ejecuté los siguientes comandos:
Ahora si, a disfrutar de la nueva pc!
Una de las primeras cosas que hice es reconfigurar las particiones para instalar Ubuntu, lo cual no fue muy dificil, pero por problemas de compatibilidad con la placa de red Broadcom Corporation NetLink BCM57780 Gigabit Ethernet PCIe, me quedé sin Internet en la notebook. Solucionarlo no fue del todo fácil, aunque en escencia lo que debía hacer era instalar el b43-fwcutter. El problema es que al no tener internet (tampoco por cable de red), debía instalarlo del CD de instalación, pero para instalarse, el b43-fwcutter debe bajar unos archivos de internet... Así que la solución fue bajar esos archivos en otra pc con internet, copiarlos en un pendrive y luego instalar b43-fwcutter.
En si fue fácil resolverlo, lo que no fue fácil fue dar con la solución, que finalmente la encontré en https://help.ubuntu.com/community/WifiDocs/Driver/bcm43xx#b43%20-%20No%20Internet%20access
Una vez resuelto esto, me puse a configurar las cuentas de mail y chat tratando de probar el gwibber, pero tuve problemas al agregar mi cuenta de facebook. Una vez que autorizaba a Facebook a ser accedido por Gwibber, no encontraba la forma de agregar la cuenta. Al final tuve que reiniciar la pc por una actualización de seguridad y cuando volví a intentar de agregar mi cuenta de Facebook, apareció esta vez un botón Add que me permitió culminar el proceso.
Por último, los botones a la izquierda no me gustaron, creo que es algo de interfaz de usuario que ya está grabado en todos nosotros y me encontré varias veces yendo a buscar los botones a la derecha... Como el theme nuevo me gustó mucho, lo único que deseaba era mover los botones, y aquí encontré la solución: http://www.howtogeek.com/howto/13535/move-window-buttons-back-to-the-right-in-ubuntu-10.04/
Otra cosa que me falló fue el sonido. Aparentemente también tuve que instalar drivers propietarios. Para esto ejecuté los siguientes comandos:
sudo add-apt-repository ppa:ubuntu-audio-dev/ppa sudo apt-get update sudo apt-get install linux-alsa-driver-modules-$(uname -r)
Ahora si, a disfrutar de la nueva pc!
12 marzo 2010
Java + Scala
Creo que una de las ventajas de Scala es la facilidad de mezclar código Scala con código Java, haciendo mucho más fácil el desarrollo.
Para empezar, hay que instalar Scala:
Luego hay que instalar el plugin de Eclipse (o tu ide preferida). El update site es:
Si estamos trabajando con un proyecto Java, le hacemos click derecho sobre el proyecto y vamos a la opción
Ahora podemos crear una clase Scala (o un objeto que viene a ser un Singleton) y referenciarlo desde nuestras clases Java. El único problema que vi es que desde la clase java, si referencio a un método de Scala, me aparece un error de compilación, pero creo que esto se debe al orden de compilación. Primero se compila el código Java y luego el Scala (es como el huevo y la gallina, uno de los dos tiene que ir primero).
Desde Scala invocando código Java no tengo ese problema. Igualmente si ejecuto, andan ambas invocaciones, hacia un lado y hacia el otro.

El eclipse que usé es el eclipse-SDK-3.5 para linux
Para empezar, hay que instalar Scala:
sudo aptitude install scala
Luego hay que instalar el plugin de Eclipse (o tu ide preferida). El update site es:
http://www.scala-lang.org/scala-eclipse-plugin
Si estamos trabajando con un proyecto Java, le hacemos click derecho sobre el proyecto y vamos a la opción
Scala -> Add Scala Nature
Ahora podemos crear una clase Scala (o un objeto que viene a ser un Singleton) y referenciarlo desde nuestras clases Java. El único problema que vi es que desde la clase java, si referencio a un método de Scala, me aparece un error de compilación, pero creo que esto se debe al orden de compilación. Primero se compila el código Java y luego el Scala (es como el huevo y la gallina, uno de los dos tiene que ir primero).
Desde Scala invocando código Java no tengo ese problema. Igualmente si ejecuto, andan ambas invocaciones, hacia un lado y hacia el otro.

El eclipse que usé es el eclipse-SDK-3.5 para linux
23 noviembre 2009
Grails and Vaadin
Vaadin es un exelente framework para hacer aplicaciones web, a mi particularmente me gustó porque tiene una forma de programar muy similar a Swing. Me encontré con algunos inconvenientes para dejarlo funcionando, así que aquí voy a documentar un poco mi experiencia:
Después de pelearme un poco para integrar grails con vaadin, decidí empezar por un ejemplo simple con Vaadin: http://vaadin.com/tutorial
Aquí empezaron los problemas, pero también pude encontrar las soluciones. En primer lugar, en el ejemplo (http://dev.vaadin.com/svn/incubator/SimpleAddressBook) se ve que en el web.xml el servlet-mapping define la url como /* y esto es muy importante para que funcione la aplicación. Yo traté de cambiarlo por /HelloWorld y no funcionaba... Pero encontré la solución (si bien todavía no se el porqué real).
El url pattern debe terminar con /*, es decir, para lo que quería hacer debería quedar como /HelloWorld/* y además hay que agregar un mapping al mismo servlet que mapee /VAADIN/*. Dicho esto, la parte del web.xml que define los servlets mappings quedaría:
Ahora si, de vuelta a grails... creé una aplicación:
grails create-app test
Luego para poder editar el web.xml (que por defecto no aparece en la aplicación):
grails install-templates
Luego edité el web.xml como en el ejemplo.
Agregué el jar de vaadin a la carpeta lib
Agregué el código de mi aplicación vaadin en src/java
Todo parecía que iba a marchar bien, pero luego de ejecutar grails run-app y al acceder a la aplicación de ejemplo, ocurría un error al tratar de cargar la clase que yo había agregado al src/java. Sin entender por qué, compilé mi aplicación en un jar y lo agregué en la carpeta lib... Y ahora si estaba funcionando!
Luego hice lo siguiente: borré el jar que había creado y generé el war de la aplicación con grails war y esta vez si me compiló la clase que había agregado y pude deployar el war en un tomcat 6 y vi funcionando la aplicación.
Otra opción que encontré que funciona es ejecutar grails run-war en vez de grails run-app. Esto también compila la carpeta src y anda.
En resumidas cuentas, parece que al ejecutar run-app no se compilan los fuentes que están en src/java. Todavía no pude encontrar una explicación o motivo... seguramente alguna configuración que no modifiqué...
Todavía queda pendiente ver como acceder los scaffolding de grails desde vaadin y obtener en poco tiempo una aplicación con una linda interfaz y generada rápidamente con grails
Después de pelearme un poco para integrar grails con vaadin, decidí empezar por un ejemplo simple con Vaadin: http://vaadin.com/tutorial
Aquí empezaron los problemas, pero también pude encontrar las soluciones. En primer lugar, en el ejemplo (http://dev.vaadin.com/svn/incubator/SimpleAddressBook) se ve que en el web.xml el servlet-mapping define la url como /* y esto es muy importante para que funcione la aplicación. Yo traté de cambiarlo por /HelloWorld y no funcionaba... Pero encontré la solución (si bien todavía no se el porqué real).
El url pattern debe terminar con /*, es decir, para lo que quería hacer debería quedar como /HelloWorld/* y además hay que agregar un mapping al mismo servlet que mapee /VAADIN/*. Dicho esto, la parte del web.xml que define los servlets mappings quedaría:
<servlet-mapping> <servlet-name>HelloWorld</servlet-name> <url-pattern>/HelloWorld/*</url-pattern> </servlet-mapping> <!-- this is needed to work with vaadin --> <servlet-mapping> <servlet-name>HelloWorld</servlet-name> <url-pattern>/VAADIN/*</url-pattern> </servlet-mapping>
Ahora si, de vuelta a grails... creé una aplicación:
grails create-app test
Luego para poder editar el web.xml (que por defecto no aparece en la aplicación):
grails install-templates
Luego edité el web.xml como en el ejemplo.
Agregué el jar de vaadin a la carpeta lib
Agregué el código de mi aplicación vaadin en src/java
Todo parecía que iba a marchar bien, pero luego de ejecutar grails run-app y al acceder a la aplicación de ejemplo, ocurría un error al tratar de cargar la clase que yo había agregado al src/java. Sin entender por qué, compilé mi aplicación en un jar y lo agregué en la carpeta lib... Y ahora si estaba funcionando!
Luego hice lo siguiente: borré el jar que había creado y generé el war de la aplicación con grails war y esta vez si me compiló la clase que había agregado y pude deployar el war en un tomcat 6 y vi funcionando la aplicación.
Otra opción que encontré que funciona es ejecutar grails run-war en vez de grails run-app. Esto también compila la carpeta src y anda.
En resumidas cuentas, parece que al ejecutar run-app no se compilan los fuentes que están en src/java. Todavía no pude encontrar una explicación o motivo... seguramente alguna configuración que no modifiqué...
Todavía queda pendiente ver como acceder los scaffolding de grails desde vaadin y obtener en poco tiempo una aplicación con una linda interfaz y generada rápidamente con grails
02 septiembre 2009
Gestión de tareas o incidentes con trac y eclipse
Algo que no me gusta de usar trac, bugzilla, mantis u otro sistema de gestión de incidentes es que todos tienen interfaz web, y eso implica loguearse, navegar hasta un incidente y recién entonces editarlo. Muchas veces encontrar el incidente implica realizar muchas veces este proceso. Por estos motivos en general siempre veo que los incidentes terminan siendo monitoreados por los Project Leaders o alguna otra persona que termina invirtiendo su tiempo en averiguar el estado de las tareas e irlo actualizando. Es así que seguí buscando hasta dar con una combinación que me gustó: Mylyn + Trac.
Hace tiempo había escuchado de Mylyn para eclipse, pero nunca había podido probarlo ni tampoco había encontrado mucha documentación. Ahora conseguí hacerlo funcionar con el Trac. Es un proceso muy sencillo y hace que uno se sienta a gusto con su uso.
Lo primero es tener instalado el eclipse (yo tengo la versión 3.4 del eclipse classic) y un trac (http://trac.edgewall.org). Los pasos para instalar el plugin de eclipse son:
Ahora sólo falta un paso más, que es definir una Query para obtener las tareas. Ahí pueden definir con qué criterios obtener las tareas (por defecto no van a ver ninguna). Se pueden definir tantos queries como sean necesarios. Y eso es todo. Ahora si pueden gestionar sus tareas de trac desde eclipse. Y realmente ahorra mucho tiempo.
Quizás después explique un poco mi experiencia usando la herramienta, pero por ahora sólo publico la guía del usuario que está fácil de seguir y con imágenes: http://wiki.eclipse.org/index.php/Mylyn/User_Guide
Hace tiempo había escuchado de Mylyn para eclipse, pero nunca había podido probarlo ni tampoco había encontrado mucha documentación. Ahora conseguí hacerlo funcionar con el Trac. Es un proceso muy sencillo y hace que uno se sienta a gusto con su uso.
Lo primero es tener instalado el eclipse (yo tengo la versión 3.4 del eclipse classic) y un trac (http://trac.edgewall.org). Los pasos para instalar el plugin de eclipse son:
- Ir a actualizaciones (help -> software updates...)
- Ir a Available software
- Add site
- Agregar: http://download.eclipse.org/tools/mylyn/update/e3.4 y http://download.eclipse.org/tools/mylyn/update/extras (verificar que lo agregue a la lista de Available software, si no, es posible que haya que marcarlo en Manage sites)
- Buscar y marcar Mylyn connector: Trac
- Install
- Si no tenían instalado Mylyn, les va a instalar también las dependencias
- window -> show view -> other...
- Tasks -> task list
Ahora sólo falta un paso más, que es definir una Query para obtener las tareas. Ahí pueden definir con qué criterios obtener las tareas (por defecto no van a ver ninguna). Se pueden definir tantos queries como sean necesarios. Y eso es todo. Ahora si pueden gestionar sus tareas de trac desde eclipse. Y realmente ahorra mucho tiempo.
Quizás después explique un poco mi experiencia usando la herramienta, pero por ahora sólo publico la guía del usuario que está fácil de seguir y con imágenes: http://wiki.eclipse.org/index.php/Mylyn/User_Guide
09 diciembre 2008
Dual screen
Bueno, algo que pensé que era dificil lo tengo funcionando, el comando que me funcionó fue este:
Por suerte cada comando aticonfig genera un backup, así que se puede probar sin riesgo.
Otro detalle más: La resolución me quedó igual en ambos monitores (1280x800), así que tuve que cambiar el de más resolución a mano desde el menú de sistema de Ubuntu
Una página que me sirvió de envión: http://www.xaprb.com/blog/2007/08/10/how-to-set-up-dual-monitors-in-ubuntu-on-dell-inspiron-1501
Y algunos comentarios en: http://www.ubuntu1501.com/2008/03/ubuntu-hardy-heron-804.html
sudo aticonfig --initial=dual-head --screen-layout=right --resolution=0,1680x1050 --mode2=1280x800 -vProbé otras cosas y después tuve que retocar el archivo /etc/X11/xorg.conf a mano porque hubo algunas cosas que no las podía cambiar una vez configuradas (mal, por error mío) con el aticonfig.
Por suerte cada comando aticonfig genera un backup, así que se puede probar sin riesgo.
Otro detalle más: La resolución me quedó igual en ambos monitores (1280x800), así que tuve que cambiar el de más resolución a mano desde el menú de sistema de Ubuntu
Una página que me sirvió de envión: http://www.xaprb.com/blog/2007/08/10/how-to-set-up-dual-monitors-in-ubuntu-on-dell-inspiron-1501
Y algunos comentarios en: http://www.ubuntu1501.com/2008/03/ubuntu-hardy-heron-804.html
Suscribirse a:
Entradas (Atom)