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.