02-nov-2008

DWR - Direct Web Remoting



Que es DWR esto mas que nada es para desarrolladores java:
"DWR allows Javascript in a browser to interact with Java on a server and helps you manipulate web pages with the results"

So WTH is this??
DWR es un conjunto de librerias opensource el cual te permite acceder mediante ajax a clases java, para que se entienda mejor, se los explicare de la siguiente manera, si ustedes tienen su jsp (por decir un clasico ejemplo), tiene sus componentes html, tags lo que sea, quierer traerse una información de algún lado pero quieren seguir trabajando con el mismo jsp sin tener que cambiar de pagina o recargarla, asi que al utilizar DWR, tu le indicas que accion realizar cuando se presione por ejemplo un botón o x´s cosa, como es posible esto, esto esta comunicado o mas bien es manejado por javascript, puedes ponerle en el evento onClick de un boton, o en un onChange, mandas llamar a una funcion de javascript y en la funcion poner lo que tu quieras. Te manda un callback(valor de retorno) si es que tiene, con esos valores haces lo que quieras.

Que se tiene que hacer para que esto funcione, primero que nada ser un proyecto java en ambiente web, segundo descargarte la libreria DWR, un .jar, lo agregas al path de tu aplicación, tercero tienes que configurar el web.xml, y crear un dwr.xml, el archivo web.xml siempre se agrega lo mismo:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<display-name>DWR Servlet</display-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
</web-app>

Para el archivo dwr.xml, aqui es donde se tiene que poner las clases java que quieras acceder desde tu jsp o lo que sea, un clasico ejemplo es le siguiente:
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="new" javascript="nombreDeMiClaseParaMiJsp">
<param name="class" value="mx.com.rageco.actions.nombreDeMiClase">
</create>
</allow>
</dwr>

Que es lo que ponemos aqui?, primero la directiva clasica, despues el dentro de este va a ir la clase que queramos acceder, por cada clase que queramos acceder se pone un , digamos que se puede poner un clase java o un bean (este ultimo si queremos acceder desde javascript a el, o mandarlo como parametro), el el cual es para crear el tipo, en este caso las propiedades son "creator" sera un "new", despues esto que es importante si lo vas a manejar mediante javascript en la propiedad "javascript" va a ser el nombre con que se va apoder referenciar a esa clase, si tu le pones como en el ejemplo "nombreDeMiClaseParaMiJsp", entonces desde tu metodo javascript serial algo asi:

function onClickbotonXY(){
nombreDeMiClaseParaMiJsp.miMetodoDeMiClase(parametro1,parametro2,..,parametroN,callback);
}

Con esto tienes acceso directo a los metdos asi que de preferencia siempre se pone el nombre de la case para evitar errores, aqui se puso asi solo para mostrarte.
Ahora despues es <param name="class" value="mx.com.rageco.actions.nombreDeMiClase">

Lo cual es el parametro que va a referenciar ese objeto javascript que declaramos antes, aqui lo unico usual que se cambia es el "value" que es la ruta de tu clase, con todo el paquete como se ve.

Esto es la parte del dwr.xml debe de estar junto con el web.xml en WEB-INF ahi juntos.
Ahora que fregados hacemos?. Bueno ahora tienes que correr tu aplicación como es web corremos el tomcat, ingresamos a la url de tu contexto (el. mi proyecto se llama Estudiantes, seria http://localhost:8080/Estudiantes/index.jsp, por ejemplo) , bien ahora no le des enter porque iras aparar a ningun lado si no tienes configurado bien tu web.xml, despues agregamos a la url el "dwr/" quedaria asi: http://localhost:8080/Estudiantes/dwr/, que significa eso?, mediante esa url podras ver si tu archivo dwr.xml esta bine configurado porque?, si tu accedes a esa url, te mostrara todas las clases, beans, etc que tengas mapeadas o que tengas persmitidad que se comuniquen con tus jsp mediante ajax, y ahora que hago con eso? sencillo abres el que sea y te mostrara todos los metodos que tienes en cada clase, para que estan ahi, es como una especie de "prueba clases antes de usarlas", esto es muy util cuando no sabes si tu javascript es el que no funciona o las clases java, con eso las pruebas, si regresan algo, ya sea un valor o un objeto te lo mostrara para que lo examines.

Ahora aqui lo importante es que como haces referencia de tu jsp a esa clase, no nadamas importando al contexto el dwr.jar funciona, asi que lo que tienes que hacer es dentro de ese "prueba clases antes de usarlas" en la parte de arriba te dice muy claramente, importa este archivo en tu jsp para que funcione, seria algo asi:
<script type="'text/javascript'" src="%27/Estudiantes/dwr/interface/nombreDeMiClaseParaMiJsp.js"></script>
Si pones atención a esto utiliza tu clase java como si fuera una libreria, pero lo que hace es que dentro de esa libreria esta el mecanismo del DWR para acceder a la clase java, asi que te lo hace transparente a ti. Ahora tambien te pide que importes otro archivo .js es el "util.js", son simplemente libreris para que funcione bien todo este royo.

Bien ahora les dare le resumen todos junto para que lo vean mas abstractamente:

-Primero configuran el archivo web.xml una sola ves, el contenido simpre es el mismo, por default si quieres mas opciones checar en la pagina de DWR.
- Despues, despues de que ya tengs tus clases java, hacer el archivo dwr.xml y permitirle a las clases acceder a la interface grafica por asi decirlo.
- Ahorahacemos nuestros jsp, y vamos la direción del $(contextodeMiProyecto)/dwr/, y de ahi tomamos los archivos ".js" que para cada clase que vayamos autilizar en cada jsp. si utilizamos una clase lo importamos en la cabecera si utilizamos dos, importamos dos, es medio logico eso, mas los archivos util.js de dwr.
-En tu jsp, agregas acciones a los botones o lo que sea, acciojnes javascript, cuando se ejecute cierto metodo dento del mismo tendrs que poner: "nombreDeMiClaseParaMiJsp.nombreDeMiMetodo(param...);"
Asi accederas al metodo, este metodo es javascript si que lo puedes usar plenamente asi como tal, anidar una funcion en el callback, etc.

Ahora lo que muchos se han de estar preguntando es: ¿Se puede mandar llamar desde una clase java al html? la respuesta es si se le llama Reverse Ajax, pero eso ustedes investigenlo jeje es mas complicadillo.

Pues bueno esto es un pequeño howto de DWR, espero ser claro en lo que trate de explicar sino pues para eos estan los comentarios.

Script.aculo.us



Que onda ya tenia mucho sin escribir nada pero he estado ocupado y un poco sin ganas de escribir nada.
En este ratito de inspiración les voy a platicar de scriptaculous unas librerias javascript opensource especialmente diseñadas para tener efectos visuales. Diran efectos visuales para que los quiero?, bueno si ustedes tienen una sitio web y quieren que sea mas dinamico, pueden incluir estas librerias y utilizarlas en la capa del usuario osea la interfaz grafica, pero he aqui el problema, al ejecutarse en el navegador de cada cliente pues se tiene que cargar tambien el archivo, pesa alrededor de uno 30kb no recuerdo bien pero dira es casi nada, si pero multipliquen eso diariamente en un sitio muy concurrido mas las demas cargas de ñla pagina como imagenes, banners etc. consumiran mucho ancho de banda.

Ahora si que es esto es una libreria de efectos visuales, que utiliza protoype otra libreria opensource para manejar componentes javascript de una manera rapida y facil, scriptaculous utiliza como si nombre lo indica su libreria (scriptaculous.js), pero al mismo tiempo usa de dependiencias, librerias extras que son de la misma cosa pero que por usabilidad las separan en librerias externas que en conjunto son scriptaculous. Tales como: builder, controls, dragdrop, effects, slider, sounds y unittest. Cada una como su nombre lo describe son librerias en conjunto para hacer fectos muy vistosos

En fin fue mucho hablar de eso, miremos este ejemplo.

Es algo simple que se puede hacer, est ejemplo es tomado de la pagina de scriptaculous, asi como algunos demos extras para que observen el potencial.

10-ago-2008

NIN y otras cosas

Que onda, un buen tiempo sin poner nada , pero pues uno llega cansado y pues da flojera poner cosas, pero de eso no se trata el tema de hoy, de hecho no hay tema simplemente que no hay nada mejor que hacer jaja.
EL 21 de octubre se presentaran en la arena monterrey uno de los mejores grupos de el industrial por asi decirlo, NIN (nine inch nails), un amigo estubo chingue y chingue con eso y por fin se le cumplio al guey, y pues a guevo como buen mexicano pues yo tambien quiero ir, no hay mucha lana para ir pero, asi que tendre que fregarme la lana que me queda.
Ese dia es martes, creo, lo malo es que tengo clases... salgo como a las 8.30, pero no hay bronca ay estare eso espero...
En estos momentos estoy instalando el Debian Lenny, me baje una imagen de el primer cd por torrent alrededor de unas 2 horas o 3 se tardo, mas que nada para probar por mientras, tengo la version dvd del etch, que pues cuando compre mi maquina nueva(computadora) lo instalo, por mientras ese para ver que tal en la virtual.

Lo se lo se que marica me veo instalandolo en modo grafico, pero queria ver que tan "sencillo era", que la verdad es lo mismo, que en linea de texto, aclaro linea de texto no linea de comando.

Como decia tengo pensado comprar una Motherboard DFI Lanparty vi una muy buena en Tom´s Hardware, procesador un Intel E2160 tranquilo, unas memorias corsair de unos 2gb, un disipador CoolerMaster, y pues una tarjeta de video pero eso hando viendo, si una ATI o una nvidia, y pues tambien el monetario de en cuanto sale todo, por lo pronto todo ese royo sin la Tarjeta de video sale en uno 280 dolares, mas la tarjeta de video ay le pones mas $$, pero eso lo vere despues, porque mi computadora actual, es toda una marica a lo largo de la palabra, ya hasta con el messenger se frezeaa XD.

O igual le meto el Debian de x64, para amasisar la maquina, o mas bien para meterle mas ram jeje, pero por mientras primero lo primero comprar las partes.
nos vemos jeje

25-jul-2008

Western Spaghetti by PES

Uno de los mejores Stop-Motion que he visto

14-jul-2008

Calidad: PSP

07-jul-2008

RSA proximamente muerto?

RSA

Hace algun rato (la verdad fueron como dos horas), estube leyendo un noticia interesante, sobre un cuate de argentina, maestro, doctor en matematicas: Hugo Scolnik, este señor de 67 años, esta logrando lo imposible..

Romper lo que parece ser hasta hoy la base de la seguridad informatica mundial, exagero un poco pero si es muy importante, por ejemplo en donde se usa la clave public RSA?, pasar informacion bancaria ya sea datos , contraseñas, numeros tarjeta, en fin, en las conecciones de internet, los ssh , vpn, que estaria comprometidas si este señor pude romper este algoritmo creado por 3 ñores sin nada que hacer en los años 70´s mas o menos.

Y la clave RSA que es, a grande grandes rasgos su resumen es un metodo en el cual se tiene numero gigante de 200 a 100 digitos de longitud, despues se multiplica por otro de igual longitud,menor o mayor, y te da un digito de alrededor de 300 numeros, sencillo no?, claro que trata de factorizar ese numero(sacarle factores ej. 4, en actores 2×2 ,1×4, 4×1 etc etc), el problema aqui es que para factorizar un numero de esas dimensiones esta muy muy cabron, aunque sea con servidores poderosos tardaria miles de años de calculos.

Asi que si este señor logra desarrollar ese algoritmo para tronar practicamente el cifrado RSA, se veran en serios problemas si no sacan otro metodo rapido, creo que estan avanando en la criptografia de curva eliptica, pero aun no madura lo suficiente.

Esperemos que este señor tarde un rato en sacar eso sino , nos veriamos en aprietos .

Fuentes, Fuentes 2

28-jun-2008

FTP - Apps

Bueno ya que andamos en esto de los servidores mediante FTP, pues les dejo otros que encontre, que tiene grancantidad de cosas, la mayoria programas para windows, MAC o linux, para que no haya diferencia ni escusas, jeje.

Aclaro no son mios, ni los consegui ilegalmente ni nada, solo copio y pego links, tiene ya algun tiempo, de todos modos aun funcionan, no se que ancho de banda tengan pero denles una mirada haber que les sirve.
Saludos

ftp://ftp.relline.ru/pub/

ftp://139.229.11.18/pub/dwalker/

ftp://195.146.65.20/pub/win/

Discografica Metallica - FTP

Vagando por ahi me encontre una direccion FTP para descargar la discografia de Metallica , si bien no esta completa si tienen algunos discos y singles buenos.

Les dejo el link para que lo disfruten jeje

ftp://64.82.19.65/Discografia_Completa_Metallica_13Albums_192kbps_By_Jiump/