miércoles, 30 de junio de 2010

Facturación Electrónica en México Parte II

Ha inicios del año empecé a recibir en mi correo y en el blog muchos comentarios acerca de sus dudas sobre lo concerniente a la creación de los famosos CFD (Comprobante Fiscal Digital) que se pondrán en marcha apartir del 2011 de manera obligatoria (algunos casos), por esta razón me he decidido ha retormar el proyecto y con una gran noticia la nueva API que se esta realizando esta muy completa, dicha API contará con no solo el nodo principal Comprobante, sino que además ya se han incluido los nodos complementarios, Detallista, Donatarias, Divisas, ECC, ECB, Terceros... con la finalidad de poder brindar una API completa para su uso de manera más eficiente.

Llevó trabajando en esta API aproximadamente una semana y hoy me da gustó compartir con ustedes la noticia de que el código para lograr el sello digital ya esta listo, y ustedes se preguntarán, ¿Acaso no es una parte sencilla teniendo las herramientas adecuadas?, es verdad; pero también es verdad que muchos de nosotros hemos sufrido a la hora de intentar leer el archivo de clave privada que nos dan junto con nuestro certificado, dicho archivo en un post anterior comentaba que podría leerse si esta se pasaba a PEM ó cada vez que se leyera el archivo generar una rutina por medio de OpenSSL para poder cargarlo en memoria mientras es utilizado. Pues hoy me complace comentarles que ya no es necesario tener instalado OpenSSL o pasar el archivo a formato PEM para su lectura, hoy se ha generado el código necesario para poder hacerlo directamente desde nuestra aplicación, lo unico que se necesitará para poder ejecutar este código es por supuesto contar con el API y el proveedor BouncyCastle, cave mencionar que esta primera etapa el API estará disponible solo en Java por tiempo y trabajo no podré tenerla lista en C#, esperando que en lo más breve se unan más parsonas para participar en este proyecto que beneficiara a más de un desarrollador.

Por el momento me retiró no sin antes comentarles que aquellos interesados en obtener la líbrería para hacer sus pruebas envien un correo ha rene.trejo@gmail.com, el día lunes estaremos liberando esta primera versión.

lunes, 20 de abril de 2009

Super Happy Dev House #6

El día sábado fue el Super Happy Dev House #6 y en lo personal fue una experiencia muy grata. Por lo cual a continuación les platico un poco de lo que sucedió.

Para empezar les cuento que me perdí aproximadamente 40 minutos antes de llegar pero aunque fue un poco tarde llegué y de ahí hasta el final. El día inicio como cualquiera, preparando la laptop para iniciar con el desarrollo que traía en mente que en esta ocasión era liberar un código para la generación de Comprobantes Fiscales Digitales (CFD) legislación México así que inicie con la preparación de un repositorio de código y que mejor que hacerlo sino con el uso de Google Code por lo cual acá les dejo la liga para todos los curiosos http://code.google.com/p/cx-faktura está es la primera versión durante la semana estaré trabajando en ponerla apunto pues aun existen algunos detalles como lo es la documentación y complementos para la estructura del comprobante. Por otro lado me dio mucho gusto ver que al finalizar la reunión hubo muchas voces que se encontraban interesadas en el proyecto en lo personal eso me dejo satisfecho espero que estas voces puedan interesarse aun más en él y participen aportando ideas para hacer crecer este primer motor de creación de comprobantes fiscales digitales (CFD). Por otro lado conocí a Vladimir Gómez una persona muy interesada en llevar al siguiente nivel este proyecto y después de platicar un rato empezaron a surgir las ideas de cómo hacer crecer este proyecto y esperamos en la semana reunirnos para aterrizar todas la ideas y de alguna manera iniciar con el desarrollo de un producto basado en la generación de Comprobantes Fiscales Digitales, también gracias a Rafael Santos por la ayuda para hacer crecer el proyecto pero en fin ya no los aburro más y continuo con los pormenores de este día.

Otro proyecto del cual se platico fue por parte de José Salomón que nos platico de popcorn-méxico un servicio el cual a través de una petición nos devuelva la ubicación y cartelera del cine más cercano a nuestra posición en ese momento, un proyecto muy interesante y sus alcances son demasiados esperamos el próximo SHDH para ver un producto final.

Otra de las cosas que estuvieron en onda fue una breve charla de Cesar Salazar sobre las redes sociales y CRM, al final de todo fue un día con muchas sorpresas así como llegada de algunos chicos de Querétaro en fin un día excelente aunque debo confesar que mi baja productividad se fue debido a que me la pase de charla en charla con los asistentes que eso hizo que el día fuera aun más atractivo.

Bueno si algo me falto espero que para el próximo SHDV tomar una mejor nota y porque no un video para que se haga más explicito este tipo de post y como siempre nos vemos en el próximo SHDV.


Nota: Por falta de tiempo y trabajo ya no pude complementar el post espero que lo hayan disfrutado.

jueves, 4 de diciembre de 2008

Ubuntu 8.04 LTS con VirtualBox 1.5

Hace unos días estuve trantando de instalar virtualbox en mi ubuntu, antes de iniciar comentó que la versión de ubuntu que tengo es 8.04 LTS Desktop.

Iniciamos...

Paso 1. Clic sobre Sistema >> Administración >> Gestor de Paquetes Synaptic.

Paso 2. Instalar el paquete de virtualbox-ose

Paso 3. Abrir el programa que se instala directamente en Aplicaciones >> Herramientas de Sistema >> Virtualbox


Paso 4. Cree mi primera máquina virtual y cual es mi sorpresa cuando intentó instalar el SO no funciona y me marca el siguiente error:


"El archivo vboxdrv no se encuentra montado en su sistema"

Entonces iniciaron mis problemas:

Primer Problema: Como montar el archivo vboxdrv, pues sencillo googleando un poko me encontre con que muchas personas explicaban el proceso de instalación y asi que lo hice desde cero...

Paso 1. Clic sobre Sistema >> Administración >> Gestor de Paquetes Synaptic.

Paso 2. Instalar el paquete de virtualbox-ose

Paso 3. Instalar el modulo correspondiente al kernel que tenemos en nuestro sistema para mi equipo el modulo que tuve que instalar fue el siguiente virtualbox-ose modules for linux-image-2.6.24-16-generic. Todo esto sobre el gestor de paquetes Synaptic.

Nota muy importante: En un principio tuve un problema pues habia descargado la ultima actualziación de kernel, el cual era el 2.6.24-22 y ó sorpresa el modulo no estaba soportado para virtualbox, y tuve que desinstalar dicha actualización quedandome solo con la versión 2.6.24-16 y todo perfecto. Un amigo me comenta que tiene el kernel 2.6.24-21 y le funciona a la perfección.

Paso 4. Dirigirnos a Sistema >> Administración >> Usuario y Grupos

Paso 5. Desbloquear la ventana y presionar el botón de Gestionar Grupos.

Paso 6. Buscar en la lista el siguiente grupo vboxusers tan pronto este localizado lo presionamos y accedemos a sus propiedades para incluir como miembro del grupo a nuestro usuario.

Paso 7. Verificamos si el modulo vboxdrv ha sido montado:

$modprobe vboxdrv
$cd /dev/ El modulo se debe de encontrar alojado en esta carpeta.


Paso 8.
Abrir el programa que se instala directamente en Aplicaciones >> Herramientas de Sistema >> Virtualbox

Ahora si a crear nuestra máquina virtual e instalar nuestro SO a virtualizar.

Tip's Finales: Virtualbox emula una tarjeta grafica muy simple y generica, igual lo hace con el audio y por ultimo la tarjeta de red tambien da problemas en un inicio, para resolver este problema debemos instalar los "Guest Additions", este apartado lo encontramos en nuestra ventana que emula nuestra máquina virtual en el menu seleccionamos Dispositivos y nos vamos al submenú de "instalar Guest Additions".

Para poder instalar los Guest Additions debemos tener habilita la unidad de CD-Rom.

Como recomendación no intentes instalar una máquina vitual pretendiendo jugar Assassind´s Creed porque no sera lo que esperas.

Bueno espero que este mini tutor además de los muchos que hay web le sirva a alguien, y creanme que si esa persona tiene instalada la actualización de kernel 2.6-24-22 querra saber porque sigue sin poder ejecutar virtualbox.


jueves, 20 de noviembre de 2008

Genéricos o Tipos Genéricos en Java


Hace un rato que no escribía en mi blog pero esta vez me dije a mismo. Mi mismo llegó el momento de escribir de nuevo y decidí hacerlo acerca de un tema que igual y es algo viejo pero que nunca está de más de saberlo ó al menos tener el conocimiento de que existe y cuál es la razón de sea tan limitado al menos hasta este punto del JDK 1.6 de java.


Iniciamos.

Los puntos que serán tratados en este apartado corresponden a las siguientes interrogativas:

1.- ¿Qué son los Genéricos o tipo Genérico en el lenguaje Java?
2.- ¿Cuáles son las ventajas de programar con tipo Genéricos?
3.- ¿Cuáles son las desventajas que presenta este tipo de programación?


Antes de dar respuesta a las interrogantes veamos un poco de historia.
Los tipos genéricos han sido utilizados desde hace muchos años por los lenguajes de programación, acá algunos ejemplos.


Las famosas plantillas C++.
Tipo Genéricos en ADA.
Polimorfismo paramétrico en ML y Haskell.
Actualmente los tipo genéricos ya son incluidos desde el JDK 1.5 en Java y también en el lenguaje de programación C#.


A pesar de esto en sus inicios hubo una fuerte crítica al lenguaje Java desde sus primeras versiones por no incluir soporte para los tipos genéricos y eso se debe a que por falta de tiempo y a la complejidad e inmadurez de la propuesta realizada por Gosling & Joy, la inclusión de genéricos no fue aceptada.


En la actualidad y después de varias votaciones fue aceptada la propuesta a incluir soporte para los tipos genéricos en la especificación de lenguaje Java que como ya lo he mencionado antes el soporte está incluido desde la versión del JDK 1.5.


1 ¿Qué son los Genéricos o tipo Genérico en el lenguaje Java?

Cuando escribimos una clase se debe conocer el tipo de dato con el que se desea interactuar, sin embargo esto no siempre es conocido por ello para poder trabajar con la clase se debería poder definir dentro de ella un tipo de parámetro que asumiría el tipo de datos con el cual se desea trabajar, a esto último es lo que llamaríamos Tipo Genérico o Tipo Parame trizado.

Para la especificación JSR 14 la definición de un tipo genérico ya implementada sería la siguiente:

“Hago un pequeño paréntesis pues el comentario anterior me recuerda a mi profesor de Filosofía que siempre decía cuando le pido la definición de algo denme la definición, no me digan o traten de darme un ejemplo.”


C<T1, T2, T3…>

Donde:
C: clase o la interfaz genérica.
T1, T2 …Tn: lista de parámetros que deben coincidir con la lista de parámetro declarados en la clase genérica a la hora de su implementación.

Los tipos primitivo no pueden ser parámetros de una clase genérica:

C<int>, C<char>, C<boolean> Error básico no permitido

Una clase o interfaz genérica define todo un conjunto de tipos para cada posible implementación de tipos en la lista de parámetros. Todo este conjunto de tipos comparten la misma clase o interfaz en tiempo de ejecución:

MiClase<T1, T2>{}

MiClase<Boolean, Boolean> x = new MiClase<Boolean, Boolean>();

MiClase<String, Integer> y = new MiClase<String, Integer>();

Los tipos genéricos se distingue por ser aquellos que se encuentran incluidos dentro de los caracteres <>.

La implementación de los tipos genéricos no solo se queda en la declaración de una clase de tipo genérica sino también se pueden incluir métodos de tipo genérico.

MiClase<T> {
void add(T tipo, Boolean){
…..
}
}


Para concluir este apartado veamos por ultimo los tipos crudos: los tipos crudos son un mecanismo que permite el uso de tipo genérico borrando sus parámetros para el uso de código antiguo, voy señalar que este tipo de programación no es muy recomendado.

MiClase x = new Miclase<>();

2 ¿Cuáles son las ventajas de programar con tipo Genéricos?

Comprobación estricta de tipos manteniendo la misma flexibilidad que el enlazado dinámico. Permite comprobar el tipo de parámetro que se desea implementar el cual es comprobado en tiempo de compilación y así reduce el tiempo en detectar errores.
No es necesaria la comprobación de tipos en tiempo de ejecución con lo cual reduce el uso de casting en el código.
Hacer que el código sea menos ambiguo y fácil de mantener.

3.- ¿Cuáles son las desventajas que presenta este tipo de programación?

La restricción más grande y evidente es que para que el código anterior funcionase igual que con genéricos como sin ellos se hace uso de los llamados tipos crudos que provocan a su vez que la máquina virtual no le interese obtener información extra sobre el tipo de objeto que desea obtener y esto da como resultado que la llamada al método getClass() de tipo genérico no arroje información sobre el objeto contenido lo cual provoca dificultades a la hora de querer interactuar con el API de reflection, sin embargo esto da como resultado que el código anterior sea compatible sin ninguna modificación.


Para concluir el post solo me gustaría agregar que el uso de genericos no solo se puede utilizar con listas o colecciones de datos, también se pueden lograr implementaciones como un control genérico para realizar altas, bajas y cambios en un sistema.

A manera de un pequeño ejemplo explicare lo antes mencionado.

Imaginemos que deseamos realizar altas, bajas y cambios de Usuarios, Clientes, Personas, Productos.

1. Para este caso podrias generar una clase genérica que llamremos Control, la cual se encargará de realizar las altas, bajas y cambios en la información de los objetos antes descritos.

public class Control<T>{}

2. Dentro de esta clase colocamos los siguientes metodos.

public void add(T tipoGenerico){}

public void update(T tipoGenerico){}

public void remove(T tipoGenerico){}

3. Finalmente una manera de poder utilizar la clase seria de la siguiente manera:

Control<Persona> ctrlPersona = new Control<Persona>();
Control<Usuario> ctrlUsuario = new Control<Usuario>();

ctrlPersona.add(new Persona());
ctrlUsuario.add(new Usuario());

De esta manera nos podemos dar cuenta el alcance que se puede tener haciendo uso de genericos en nuestras aplicaciones.

Por mi parte es todo espero que este pequeño post haya sido interasante para todos.

lunes, 1 de septiembre de 2008

No todo en México es inseguridad.

Hace algun tiempo que escribí mi último post y la verdad no había encontrado un tema de gran interés sobre el cual escribir hasta este pasado fin de semana que todo se ha juntado y empezaré con el tema que esta en boca de todos que fue la "Mega marcha en contra de la inseguridad", fue increible la convocataria que tuvo esta marcha; pero como no iba a tener tanta respuesta si los medios de comunicación se unieron para ser una sola voz al invitarnos a dicha marcha, más alla de fines politicos y de interés propio me dio mucho gusto ver a nuestro país unido por algo, aunque lo que más se lamenta son todas aquellas personas que aun en estos tiempo dificiles que pasa nuestro país lo unico que desean es dividirlo y generar controversía donde no la hay. En fin esta marcha espero que no se quede solo en encender veladoras y que todos aquellos que fueron indiferentes a ella no sufran lo que muchos ya han pasado, que es la inseguridad pues su gran escusa es no soy rico, eso solo le sucede a los ricos, este país ya no se distinguí si eres o no de una clase alta la inseguridad esta a la orden del día, bueno aca les dejo una buena pregunta para reflexionar ¿Que es peor la ignorancia o la inseguridad?, espero que no respondan !Ni lo sé, ni me importa¡.


Cambiando un poco la línea de sucesos interesantes en esta semana me he encontrado con la satisfacción de ver crecer a CXREX cada día, su diseño ha cambiado, el grupo de seguidores ha crecido y ahí es donde me doy cuenta que en nuestro país hay personas a las cuales le gusta trabajar. Aprovechando todo esto me da gusta saber que el Web Service que proveé servicios de CXREX esta activo de nuevo con lo cual la aplicación de Applet CXREX esta de nuevo activa, por cierto el diseño del blog de CXREX también cambio chequenlo aca CXREX-BLOG, pero no todo quedá ahí pues siguiendo con la busqueda de gadget que faciliten nuestra comunicación esta uno nuevo que es de interés el cual lleva por nombre TwiteaMe. Si eres amante de twitter y si ahora quieres enviar tus actividades a cada hora a tu twitter sin necesidad de una PC para hacerlo te recomiendo que visites TwiteaMe pues ahora desde tu celular podrás hacer el envio de update a tu twitter, y espero que esta dos ideas pronto nos sorprendan con un crecimiento más amplio de antemano una Felicitación a sus creadores y que todo siga de viento en popa.







Bueno con esta públicación de la semana me despido no sin antes volverlo a recorrar vamos a unirnos por un México mejor y apoyar a los desarrollos hechos en México pues aca también hay capacidad.

sábado, 8 de marzo de 2008

Queer as Folk It's raining men

Hace algunas semanas empece a ver una serie que para mi gusto es una serie muy divertida y que aborda temas sobre la sexualidad varonil pero dejando de lado eso es una serie muy recomendable recordando verla sin morbo.

Por cierto en uno de sus capitulos me encontre una canción muy pegajosa que hace algunos años una ex-spice realizó un cover la canción se llama it's raining men dejenme decirles que que dentro de uno de los capitulos de la serie hay una escena muy divertida relacionada con esta canción y aca les dejo el video (voy a salir esta tarde a ver que es lo que llueve, jijiji).



Pero bueno si tienes problemas con sopportar la canción y el video y a ti te gustan más las niñas aca te dejo este video creeme a la canción ni atención le vas a poner.



Hasta la proxima.

jueves, 28 de febrero de 2008

I


Desencadenando una serie de eventos inusuales en la perspectiva de la creación misma nos encontramos en un viaje astral del cual el regreso es incierto; pero quien tiene la razón cuando el camino ya se ha comenzado a recorre, un camino sin sentido y sin más nada que dolor quien será capaz de sobrevivir a tan penosa desdicha.
Todos, todos somos animales esperando encontrar el alimento que nos haga saborear la dicha del dolor y el placer de la misma manera que la muerte merodea nuestro alrededor diciendo que aun no es tiempo de visitar el lugar del sueño eterno, entonces vuelvo a preguntar quien será capaz de dar la respuesta correcta a tan grande incógnita y todos sabemos cual es la pregunta que durante años nos ha atormentado y no hemos dado crédito a las respuestas planteadas solo somos capaces de reducir todo en un evento sin explicación alguna.
Debemos bailar en la cadera de este mundo decadente que día a día nos ofrece los pecados de la carne y del sabor más allá de los sueños infinitos en los cuales la genialidad se pierde y en su regazo nos devuelve la infelicidad de los pobres de almas que nunca lograron reunir el número adecuado para la salvación de su propio ser.
En esta ocasión deben estar seguros que las palabras correctas se encuentran en el silencio de los fallecidos en nombre de la reforma espiritual que alberga sus más recónditos secretos en el alma del mismo ser que a su vez devora sin saciar su hambre a los hombres que viven en el fracaso de la eterna luz de las estrellas que nunca le dan respuesta a sus plegarias. Plegarias que a su vez se fundamentan en la felicidad, el honor, la compasión y entonces preguntó de nuevo que nos queda al final para ser diferentes a los animales.
Somos el peor animal que ha poblado estas tierras desoladas de caricias en fuego ardiendo por miles de años que al no saber como apagarlo nos devora en nuestro propio ser, pues entonces preguntó de nuevo que haces para cambiar esto, ya sabrán algunos la respuesta. Si, tienen razón no es tan fácil hacerlo. Hacer que este planeta sea capaz de sobrevivir a nuestra avaricia creada por el poder que no deja de lado los problemas de nuestro propio ser.
Esperen hay una solución que con el tiempo vendrá a nosotros, tenemos que estar preparados para lo que en esta líneas les voy a decir…
Lo ven esa es la pregunta y la respuesta a la vez, estén satisfechos ahora ya son libres de ser animales ya no serán acusados ni maltratados por los profetas que anuncian a sus falsos dioses y que alrededor de sus altares forma una barrera de mentiras. Esta vez somos libres el mundo lo debe de saber.
Hoy iniciamos una nueva ruta al punto cúspide de nuestra evolución como un animal el cual encontró la cura a todo su mal.
Esperen ansiosos por un final más allá de toda concepción progenitora es por eso que hemos regresado con una segunda oportunidad para cambiar.

miércoles, 20 de febrero de 2008

Preguntale a Rulo, ¿Después de comer donde se almacena la caca?

Pues bien esta es la primera gran pregunta para nuestro buen amigo Rulo, y dice así:

La pregunta la envia el buen Mr. X y nos dice ¿Donde se acumula la caca en nuestro cuerpo?, yo mejor lo diria ¿A donde va la caca en mi cuerpecito?.

La respuesta a tan grande incógnita me hace recordar ese buen programa de t.v. "Misterios Misteriosos", pero regresando con el tema que hoy nos preocupa a donde va toda esa bola de mierda, cagada, caca, pupú, popó, número dos o sica) o (en un sentido más técnico o clínico) materia fecal o excremento o deposiciones. La vdd no tengo ni la menor idea que es lo que sucede cuando después de comer nuestro deliciosos alimentos en unas 2 horas estamos sentados en el trono viendo a nuestros alimentos convertidos en CACA.

Pero como el buen Rulo debe dar una respuesta convincente a todos sus lectores tuve que ver las 3 temporadas de Dr. House y pude comprobar que la CACA no tiene ninguna relación con el Lupus, repito la CACA no es Lupus, después de aclarar eso continuó y ahora les comentó que tuve que terminar los dos juegos de Trauma Center Segunda Opinión para Wii y finalmente descubrí el receptáculo de la CACA, no lo podía creer cuando hice tan grande descubrimiento y ahora daré la respuesta.

La Caca se encuentra en...

...zzzz
...zzzz
...zzzz

Hey aun no terminamos...

Ha!, Si como les decia la Caca se encuentra en "Sigmoidio" o como yo lo llame el Cagadero (Relación con el Flatulenciador).




Y con todo esto resulta que la caca esta compuesta por celulosa y nuestro organizmo no es capaz de digerirla, también contiene alimentos no digeridos y los pigmentos biliares.

Por cierto cuando hay CACA en el Sigmoidio estimula la abertura del esfinter anal interno, esto produce ganas de hacer caca y el esfinter anal externo lo podemos controlar para ir al baño.

Así que a cagar se ha dicho, cagar sin mesura, vamos que ya me estoy cagando, nu puedo soportarlo, ya me cagué.

Bueno hasta la proxima pregunta para Rulo, me despido no sin antes decirles que mientras redactaba esta respuesta me estaba Cagando y no era de risa.

viernes, 8 de febrero de 2008

Final Fantasy Crisis Core

Bueno esta vez dejo este video que me ha gustado demasiado, y la vdd ya espero con ansia la llegada de este nuevo Final Fantasy para la PSP, por los videos que he visto y lo que se dice tras su estreno en Japon el juego sera muy bueno, bien sin mas palabras les dejo este video

I'm fukin' Matt Damon

La verdad el video me parecio muy bueno y divertido, disfrutenlo....
La introduccion dura unos segundos...

viernes, 25 de enero de 2008

Curiosidades Tecnologicas

Pues bien estos ultimos días estuve trabajando un poko en cuestión de codificación y este viernes me tome un tiempo para leer sobre lo que sucede en el mundo de la tecnología y me he encontrado con algunas curiosidades tecnologicas que enseguida les comento.

Primero pasaremos por una pantalla tactil con un protector de cristal, cuando leí el post me dije que onda con esto de una pantalla tactil con un protector de cristal como puede ser o para que la han de utilizar. Resulta que en Bruselas existe un establecimieto en el cual las personas que pasan por el pueden interactuar desde el exterior con una pantalla tactil que se encuentra detras de un cristal protector, me dije eso es una broma; pero aca esta el video.



Pero en fin esta en pruebas aun y se trata de una pantalla que simula ser tactil desde el exterior, por cierto el proyecto va encaminado a ser un vendedor las 24 horas, que bien no!!! Ahora imaginen esa tecnologia en el despachador de Frituras o en un Mac. Suena interesante.

La segunda curiosidad tecnologica esta compuesta por el Wiimote y la mesa Surface.
En esta ocación se muestra la mesa SurFace manejada a distancia con el Wiimote, no escribo más, mejor les dejo el video para que lo vean con sus propios ojos.



La tercera curiosidad le pertenece a Sony y se trata de la incorporación de Skype a su consola portatil, aunque se ha retrasado la salida por que Skype aun no certifica los auriculares especiales para la consola y poder realizar llamadas desde nuestra PSP pero en fin solo les dejo esta foto y esperamos pronto tener esta aplicación en nuestra PSP.



Bueno estas son algunas de las curiosidades, espero la proxima semana traer más de estas curiosidades.

miércoles, 23 de enero de 2008

Envio de SMS en tu Blog o Web, Gracias CxRex

Dando seguimiento a mi ultimo post en el cual hablaba sobre el servicio web liberado por CxRex para envio de mensajes SMS me di a la tarea de realizar una pequeña aplicación que puedes cargar en tu blog o en tu web para realizar el envio de mensajes, esta es la primera versión de la aplicación es por ello que es muy sencilla; pero espero que a medida que la gente de CxRex libere más servicios la aplicación vaya creciendo un poko más, no se preocupen, en tamaño no!!!

Como ya lo he mencionado esta es una versión piloto y espero que sea de mucha utilidad para quien la integre en su blog o web.

Por otro lado espero en unos días poder incorporar un control capaz de personalizar la apariencia de la aplicación para que no tengan problemas de correspondencia con letra, color, tamaño... respecto a su blog o web.

Sin más rollo aca les dejo el código que deberán colocar en su blog o web para poder cargar la Aplicación.

<div>
<
APPLET archive='http://reth.trejo.googlepages.com/CxRexTest.jar'
code
='cxrextest.AppletCxRex.class' height='255' width='350'>
</
APPLET>
</
div>

Antes de que se me olvide mencionarlo en la parte superior de mi blog
se encuentra la Aplicación de la que tanto he estado hablando.

Nota(s) a tomar en cuenta.

Java Virtual Machine requerida descargar aquí.

1.- La aplicación fue desarrollada en el lenguaje Java
por lo cual si no pueden visualizarla en su explorador
deberan instalar el siguiente Plug-In Java versión 1.5 el
cual pueden descargar aquí.

2.- La Aplicación lleva consigo un certificado de prueba
el cual debes aceptar para poder visualizarla.
(Restricciones internas del Applet para consumir el servicio Web)

3.- Debes permitir que tu explorador descargue
el contenido de la Aplicación para visualizarla sin problemas
(Esto se presenta en Internet Explorer).

Espero que no tengan problemas al seguir estos pasos y
si tiene cualquier duda o comentario acerca de la aplicación
con gusto lo responderé.

Sitios relacionados.

CXREX
CXSMS
CX-ROM



martes, 15 de enero de 2008

Web Service CXRex, aplicación Java

Hola a todos, ya hace algun tiempo que escribi mi ultimo post y había dejado en el olvido mi blog, pero esta vez regreso de nuevo y con una noticia que me sorprendio pues un grupo de amigos que desde hace algun tiempo mantienen un sitio de envio ilimitados de mensajes y lo mejor de manera gratuita, el pasado fin de semana liberaron un web service basado en su API de envio de mensajes SMS, que bien no???, pues como les decia soy un desarrollador java y hace unos minutos realice mi primera prueba exitosa de envio de SMS y aca les dejo el codigo.

Primero que nada generamos la referencia al web service.
Nota: para el desarrollo de la aplicación utilizo el entorno de desarrollo Netbeans 5.1, jdk 1.6.

url ws: http://www.cxrex.com/service/CXRexService.asmx

Si el web service se cargo sin problema alguno, nos dirigimos a nuestra clase principal e importamos las siguientes clases y libreria.

import cx.web.service.*;

import java.util.Iterator;

import java.util.List;

En nuestra área principal de trabajo y como inicio de código cargamos la lista de provedores.

// Acceso a los proveedores de servicio

// Movistar

// Iusacell

// Unefon

// Nextel

CXRexService servicio_cxrex = new CXRexService();

ArrayOfCXServiceProviderInfo contenedor_proveedor_servicio = servicio_cxrex.getCXRexServiceSoap().getListServiceProvider();

List lista_proveedor_servicio = contenedor_proveedor_servicio.getCXServiceProviderInfo();

Iterator iterador_lista_proveedor_servicio = lista_proveedor_servicio.iterator();


while(iterador_lista_proveedor_servicio.hasNext()){

CXServiceProviderInfo proveedor_servicio = (CXServiceProviderInfo) iterador_lista_proveedor_servicio.next();

System.out.print(proveedor_servicio.getName() + "\n");

}


Como podran darse cuenta el código es muy sencillo e intuitivo.

Lo úniko que tenemos que hacer es iniciar el servicio (CXRexService), cargar a un objeto de tipo lista que va a contener los proveedores de servicio (List).

Paso seguido y final es prepara el contedor del mensaje y generar el envío del mismo.

// Preparando el envio de mensajes
CXMessage mensaje = new CXMessage();
mensaje.setReceptor("123456789");
mensaje.setMessage("xxxxxxxxxx");

// Generamos el envio del mensaje
CXMessageState estado_mensaje = servicio_cxrex.getCXRexServiceSoap().sendMessage(mensaje, (CXServiceProviderInfo)lista_proveedor_servicio.get(1));

// Se imprime el resultado de exito o fracaso a la hora de enviar el mensaje
System.out.println(estado_mensaje.value());

Como podemos observar se genera un nueva instancia de la Clase que va a contener las caracteristicas del envio de nuestro mensaje y apartir de ella cargar el rpoveedor seleccionado de la lista de proveedores y cargar el mensaje para poder generar el envío SMS y finalmente esperar la respuesta.

Si la respuesta obtenida es: SendOk el mensaje ha sido enviado con exito.

Para mayor información y otro ejemplos del uso del Web Service CXRex visitar:

cx-rom
cx-rom web pages

blog cxrex


Para el envío de mensaje gratis e ilimitados visitar: cxrex

martes, 18 de diciembre de 2007

Daft Punk Hader, better, faster, stronger

Estas semanas he estado escuchando demasiado a daft punk y también disfrute de su ultima peli que se llama Electroma.
Pero el punto aca es compartir este video con ustedes, tal vez algunos ya los vieron y si no lo han visto disfrutenlo esta muy bueno y más aun si eres fan de dat punk te encantara y te hara reir un rato.

viernes, 14 de diciembre de 2007

Regalos para navidad

Hace unos días visitando el blog de un amigo me encuentro con un muy buen regalo de navidad y mejor aun si nos late la onda retro, este regalo se conoce como el iCassete.

Pero bueno creanme que hay más chuchulucos para esta navidad y acontinuación vamos a revisar el osito usb.


Para continuar con esta lista de estupendos regalos y si somos de aquellos que nos gusta comer mientras trabajamos aca tenemos la sushi usb.

Continuando con lo retro aca Pokia presenta su fon retro para todos aquellos que nos da miedo realizar llamadas por celular.

Bien llegando a la parte para todos los que carecemos de dinero les presentó el nuevo iNo.

Pues bien seguimos con los regalos, ahora presentamos PaperPalm.
No emite radiaciones nocivas.
No necesita manual de instrucciones.
No se estropea si cae al suelo.
Se puede duplicar la capacidad de memoria
(escribiendo al dorso de las páginas).
Y escribir en color, cambiando de lápiz.

Llegando a la onda futurista y si en esta epoca deseamos mejorar nuestro hogar les presentó la nueva aventura de la manzanita el nuevo i mejorado iToilet.

Para finalizar la lista de regalos, nuevamente la manzanita se hace presente ahora presentando su nuevo pc que ademas de toda la funcionalidad de un pc normal este pc nos permitira servirnos el jugo con todos los beneficios de un procesador dual core a 3.5 ghz, 5 g en ram y demas funcionalidad, cabe mencionar que el liquido puede ser configurado en sus diferentes sabores uva, naranja, toronja... y si te descargas su plugin podras tener la bebida más sabrosa, una rica y deliciosa cerveza. compralo ya que se acaban.


Esta fue la lista de regalos novedosos para esta navidad.

Elastico

domingo, 9 de diciembre de 2007

miércoles, 28 de noviembre de 2007

Ejempo de Criptografía simétrica en Java

La criptografía simétrica es un metodo de criptografía que utiliza una misma clave para cifrar y descrifar un mensaje. Las dos partes encargadas de comunicarse deben de ponerse de acuerdo en la clave a utilizar para el envio de mensajes.


Un buen metodo de cifrado simétrico será aquel en el cual toda la seguridad se encuentre en la clave, así que no importa si el atacante sabe cual es el algoritmo de encriptación; pues de nada le sirve si no tiene la clave.


Este es un ejemplo muy sencillo de cifrado simétrico.


Platarforma Java JDK 1.6


Lo primero que se debe hacer es generar la clave que se utilizara tanto para encriptar y descriptar el mensaje, esta clave es generada bajo el Algoritmo DES.


KeyGenerator keyGen = KeyGenerator.getInstance("DES");
keyGen.init(56);
SecretKey secretKey = keyGen.generateKey();



El codigo anterior al colocarlo en nuestro programa se refiere a que dicha clave se va a generar cada vez que se encripte o desencripte un mensaje, otra manera de generar la clave y mantenerla activa esto guardando la clave en un archivo y solo llamandola al momento de utilizar.



Como ya tenemos la llave el paso seguido es encriptar el mensaje

Algoritmo DES
Modo : ECB (Electronic Code Book)
Relleno : PKCS5Padding



Cipher cifrador= Cipher.getInstance("DES/ECB/PKCS5Padding");



Iniciamos el objeto cifrador en modo Encriptación



cifrador.init(Cipher.ENCRYPT_MODE, clave);



Ahora vamos a introducir el texto a cifrar



String mensaje = "Este el texto que se va a cifrar";


Finalmente colocamos la ultima parte del codigo que son los metodos encargados de cifrar el mensaje y obtener el resultado en una cadena de byte[].


byte[] mensajeCifrado = cifrador.doFinal(mensaje.getBytes(), 0, mensaje.getBytes().lenght);



El mensaje cifrado se encuntra dentro de la variable mensajeCifrado, el cual no esta en un formato listo para impresión por lo cual solo si el usuario lo requiere este mensaje se puede codificar en base64 para mostralo en un formato más amigable.



byte[] mensajeCifradoBase64 = Base64.encode(mensajeCifrado);

Más información
Ejemplo

miércoles, 21 de noviembre de 2007

Facturación Electrónica

Hace unas semanas me puse a investigar sobre la Facturación Electrónica, la cual en nuestro país México tiene algunos años que se inicio este proceso de Facturación y todo lo referente a ella se podrá encontrar aquí. Pero en esta ocación no voy hablar mucho acerca del proceso y como hay que seguirlo desde el inicio, no, esta ocación solo hablaremos de como realizar un buen sellado de nuestra cadadena original. Para más información visitar esta dirección.

Bueno iniciamos, una de las maneras de poder llevar acabo la firma de la cadena original es utilizando las herramientas proporcionadas por OpenSSL, aunque tiene sus problemitas pero en fin acontinuación resumó los pasos que se tienen que llaver acabo para ejecutar la firma de la cadena original.

1.- Obtener la cadena original, en este caso utilizaremos la cadena original utilizada en un ejemplo propuesto por el SAT.

Cadena Original:

||A|1|2005-09-02T16:30:00|1|ISP900909Q88|Industrias del Sur Poniente, S.A. de C.V.|Alvaro Obregón|37|3|Col. Roma Norte|México|Cuauhtémoc|Distrito Federal|México|06700|Pino Suarez|23|Centro|Monterrey|Monterrey|Nuevo Léon|México|95460|CAUR390312S87|Rosa María Calderón Uriegas|Topochico|52|Jardines del Valle|Monterrey|Monterrey|Nuevo León|México|95465|10|Caja|Vasos decorados|20|200|1|pieza|Charola metálica|150|150|IVA|52.5||


2.- Digestión de la cadena original en formato MD5.

Cabe mencionar que la cadena original se debe encontrar codificado en UTF-8 de lo contrario jamas obtendremos el valor esperado, el cual es:

8aa2b617944427353697e694a2e35a07

3.- Sellar (Firmar) la digestión de la cadena original.

4.- El valor obtenido codificarlo a Base64.

Estos son los pasos para poder obtener la Firma de los datos que se plasmaran en la Factura Electrónica para su validez.

Investigando me encontre con paginas donde te decian como utilizar el sw openssl para firmar tu cadena original y aparecia lo siguiente:

Digestión de la cadena original:

windows

OpenSSL> dgst -md5 cadena.txt

linux

$>openssl dgst -md5 cadena.txt

Este proceso es correcto solo si el archivo de texto se encuentra codificado en UTF-8, lo cual debemos revisar ya que al guardar un archivo de texto la codificación default que toma el archivo es ANSI.

Nota: Dentro del archivo cadena.txt debemos colocar la cadena original de ejemplo en una sola línea de texto.

Obtenida la digestión y verificando que el resultado es:

8aa2b617944427353697e694a2e35a07

procedemos a colocar este resultado en un archivo de texto.

El siguiente paso es firmar la digestión de la cadena original y en un solo paso codificarla en base64 con salida a un archivo en la ruta especificada.

windows

OpenSSL>dgst -sign AAA01010AAA.pem digestioncadena.txt | enc -base64 -A > sello.txt

linux

$>openssl dgst -sign AAA010101AAA.pem digestioncadena.txt | openssl enc -base64 -A > sello.txt

Pues bien así obtenemos nuestra firma de la cadena original.

Nota: En algunos lugares encontraras las siguientes líneas
OpenSSL>dgst -md5 -sign AAA01010AAA.pem cadenaoriginal.txt | enc -base64 -A > sello.txt

No pueder realizar el paso de digestión y selledo de la cadena original en una solo línea por lo cual esta línea solo nos dice que se ocupara el metodo hash de encriptación MD5 para Sellar la cadena original utilizando la Clave privada AAA010101AAA.pem. Entonces sella la cadena original y no la digestión de la cadena original como se pensaria.

Debemos revisar bien todos estos pasos antes de realizar la firma de la cadena original.

Para finalizar el certificado y la clave privada utilizado para este ejemplo lo encuentran en la siguiente ruta Certificado y Key

Tanto la clave como el certificado se encuentran en formato DER y openssl lo utiliza en formato PEM, la conversión de la clave privada es la siguiente:

windows:

OpenSSL>pkcs8 -inform DER -in AAA010101AAA.key -out AAA010101AAA.pem

linux:

$>openssl pkcs8 -inform DER -in AAA010101AAA.key -out AAA010101AAA.pem

Listo tenemos nuestro clave privada en formato PEM.

Windows no cuenta con una intalación de OpenSSL predeterminada por lo cual les dejo este enlace para su descarga.

Si alguien quiere realizar este proceso sin utilizar el sw OpenSSL les recomiendo que visiten. BouncyCastle ahi encontraran una libreria muy completa para manipulación de certificados, digestión y sellado de información y manipulación de claves, se encuentra en versión tanto para Java como C#.

sábado, 3 de noviembre de 2007

Xantolo, y sigue la fiesta

Pues bien hace unas horas llegue a mi casa y me encuentro muy feliz de haber vivido una muy grata fiesta de Xantolo con mi familia y toda la gente que estuvo a mi alrededor, el olor de los tameles y el mole aun lo tengo tanto en la nariz como en mi estomago se encuentran los sabores que prove.

Y solo me resta agaradecer a todas las personas que participaron en esta una tradición de la huasteca y muy en especial a las personas que nos visitaron, que espero hayan disfrutado de esta fiesta y que como siempre esta es su casa y espero que nos visiten de nuevo.

Gracias y los esperamos de nuevo en la huasteca hidalguense con mucho orgulllo desde el corazon de las huastecas Huejutla de Reyes Hidalgo México.

martes, 30 de octubre de 2007