Mi lista de blogs

jueves, 21 de mayo de 2015

IDSE: Error al renovar cetificado, GenKey.cab bloqueado


Nos hemos encontrado con diferentes problemas al tratar de recuperar el certificado del IMSS.


Cuando ya tenemos la liga para bajar el certificado, nos aparece el mensaje de que el Windows bloquea el componente GenKey.cab y no lo podemos desbloquear.

Una solución es guardar en una memoria USB los archivos KEY, REQ y la Carta de Aceptación y acudir a la delegación del IMSS correspondeinte, donde en 5 minutos nos hacen favor de bajar el certificado, una vez que proporcionamos la llave privada.

Después de varios intentos, logramos bajar el certificado en una máquina con las siguientes características.

La máquina tiene Windows XP, y usamos el Internet Explorer 8.

Usamos la versión de Java 7.65.

En la configuración de seguridad de Java agregamos el sitio: http://idse.imss.gob.mx, y usamos la seguridad media.

En la configuración del Internet Explorer también agregamos el sitio http://*.imss.gob.mx a la lista de sitios de confianza, hay que quitar la palomita en la opción "Requerir comprobación del servidor (https://) para todos los sitios de esta zona".

En la configuración de seguridad de la zona de internet, en la sección de Controles y complementos ActiveX, hay que seleccionar "Preguntar" en la opción "Descargar los controles ActiveX sin firmar".

En la sección de misceláneos, habilitar la opción "Incluir la ruta local cuando se carguen archivos a un servidor", y habilitar también la opción "Permitir la ejecución de scripts en el control del explorador web de Internet Explorer".

Por último hay que correr el JavaPolicy que nos proporciona el IMSS. Este programa se debe correr como administrador, y puede tardarse varios minutos.

Después de hacer todo lo anterior, observamos que al volver a cargar la página para descargar el certificado, nos aparece una ventana donde nos pregunta si queremos ejecutar el GenKey.cab dichoso, y entonces ya podemos completar la descarga.

A continuación solamente resta firmar la carta de Términos y Condiciones, y listo.

lunes, 16 de marzo de 2015

Conversión de la Contabilidad Electrónica a XML

Estamos poniendo a su disposición el programa de Conversión de Contabilidad Electrónica a XML:


Este programa permite la conversión de archivos generados por programas tradicionales de Contabilidad, por ejemplo del ContPaq, y pasarlos al formato XML que el SAT solicita.

El manual de utilización está en la siguiente liga:

Manual de Conversión de la Contabilidad Electrónica a XML

https://drive.google.com/file/d/0B5SaoG8Q5ZPYU3FoV1Zvd3g1RDA/view?usp=sharing

Para bajar el programa, usar la siguiente liga:


https://drive.google.com/file/d/0B5SaoG8Q5ZPYangzWTBkczM1TUU/view?usp=sharing

Este programa permite tomar los archivos del catálogo de cuentas y la balanza de comprobación, generados previamente en ContPaq, o en algún otro programa de Contabilidad, y convertirlos al formato que el SAT solicita.

El programa es útil para las personas que tienen actualmente una versión del ContPaq, o de otro software comercial, y no desean comprar la actualización.

El programa es de acceso libre por el momento, y se proporciona en el estado que se encuentra, bajo la responsabilidad del usuario
.
Sin embargo, de ser necesaria nuestra asesoría, nos pueden contactar para cotizar nuestros servicios.

Ing. Oscar Sergio Aguirre Urbina.
Cel: 33-3156-4157, Correo: oscar@ultrica.com.mx.

Lic. Jorge Antonio Quintana González.
Cel: 33-1005-3685, Correo:  jorge@ultrica.com.mx.

Ultrica, S.A. de C.V.
Privada Santa Lucía 994.
Los Girasoles Elite.
Zapopan, Jalisco, CP. 45138
Tel: 33-3833-6601.

viernes, 9 de enero de 2015

Error en el SUA: La función que está intentando usar está en un recurso de red que nos está disponible

Repentinamente, apareció un error en el SUA:


A pesar del error, el programa funciona hasta el momento en que se quiere obtener un reporte, y ya no es posible, ya que aparece un error de "invalid formula name".

Aparentemente el problema se presenta porque en algún momento se necesita leer el archivo de instalación MSI, que se creó durante la instalación en un directorio temporal que después se borra.

Lo primero que hice fue tratar de instalar la versión original del SUA, en este caso es la 3.3.2. El instalador seguía dando el mismo error. Luego intenté desinstalarlo con el mismo resultado.

A continuación traté de desinstalar el programa con el Revo Uninstaller, y otra vez no tuve éxito.

Luego utilicé el CCleaner, limpiando el registro y desinstalando el SUA y otra vez apareció el mismo error.

Entonces opté por entrar el registro con el REGEDIT y borrar todas las entradas donde hacía referencia al directorio de instalación del programa.



De esta manera pude volver a instalar el programa en su versión original.


Posteriormente para instalar la actualización a la versión 3.4.3 se me volvió a presentar el mismo error, para lo cual repetí la operación de borrar en el registro las entradas completas donde se hace referencia a dicha actualización.

Nota: al instalar la actualización se debe cambiar el directorio donde reside el programa, en este caso a C:\Cobranza\SUA\



martes, 12 de agosto de 2014

¿Como es que los programadores gastan tanto tiempo en codificar?

¿Como es que los programadores gastan un montón de tiempo en codificar o programar?


No se puede establecer conexión con el sitio www.google.com.mx auténtico.

Si se presenta este error, verificar la fecha y la hora de la máquina.

Encontré este texto en la red, y me pareció una opinión bastante respetable.

El texto en español traducido, y la versión original en inglés.

El Vínculo: http://www.quora.com/Computer-Programming/How-do-programmers-have-a-lot-of-time-to-spend-on-coding

¿Como es que los programadores gastan un montón de tiempo en codificar o programar?

Porque esta es la cosa mas interesante y divertida que una persona puede hacer en toda la historia de las cosas interesantes y divertidas que los humanos podemos hacer.

Muchos gastan su vida sembrando plantas y recogiendo cosechas, pero es un proceso tan lento que uno puede morirse de aburrimiento.

Otra cosa que podemos hacer sería construir cosas a partir de madera, vidrio o metales, inclusive naves espaciales. Pero esto toma largo tiempo. Es lento y finalmente limitado a la velocidad del artesano o de la cantidad de dinero que uno pueda gastar en contratarlo. Los robots podrían acelerar el proceso, pero ahora nosotros estamos hablando de programación.

Algunos prefieren la política, o los negocios, lo cual puede parecer interesante si tu  pasión está en la interacción humana.  En cualquier caso, es lento, o al menos limitado por la velocidad de las comunicaciones y del comercio. La velocidad de la comunicación es facilitada por la tecnología – de nuevo la programación.

Leer libros es divertido. Observar videos es divertido. Hacerlos es menos pasivo, y mas apasionante, pero a fin de cuentas producir estas cosas es un proceso lento y limitado justamente tal como construir puentes de madera o carros de metal.

Hacer música es otra opción de cosas divertidas e interesantes por hacer pero a fin de cuentas está limitado a la habilidad de las personas para ejecutarla físicamente. Avanzar sobre las limitaciones de las ejecuciones musicales nos regresa a la programación.

Yo diría que únicamente la codificación ofrece una posibilidad de hacer algo, y entonces hacer algo mas sobre ese algo, y entonces continuar construyendo. Quizás únicamente los codificadores entienden como las herramientas escritas pueden aplilarse en algo sorprendente y como la Ley de Moore alimenta esta posibilidad y como otras actividades humanas palidecen ante esta comparación.

Así pues: los únicos otros contendientes son la comida, el dormir, el sexo y los hijos como actividades posibles. Estos son imperativos biológicos; yo algunas veces hubiera deseado ser como el personaje Data de la serie “Star Trek: la nueva generación”.

Un verdadero codificador no encuentra el tiempo para programar. Un verdadero programador calendariza a regañadientes tiempo para todo lo demás.


Computer Programming: How do programmers have a lot of time to spend on coding?

Because it's the most fun and interesting thing for a person to do in the entire history of fun and interesting things that humans can do. 

Many have made a living by planting plants and reaping harvests but it's such a slow process that I would die of boredom.

Another thing to do would be to make stuff out of wood, glass, or metal. Spaceships even. But, it takes a long time. It's slow and is ultimately limited by the speed of a craftsman or the amount of money one can spend to hire them. Robots could speed that up but now we're talking about programming.

Some prefer politics, or business, which seems interesting if what you crave is human interaction. In any case it's slow, or at least limited by the speed of communication and commerce. The speed of communication is facilitated by technology - coding again. 

Reading books is fun. Watching video is fun. Making those is less passive, and more compelling, but in the end it's a slow, limited, process to produce those things just the same as building bridges from wood or cars out of metal.

Making music is a contender for fun and interesting things to do but in the end it's limited by a persons ability to physically perform it. Moving past the human limitations for music performance comes back to programming.

I will say that only coding offers a possibility to make something, and then to make something more out of that something, and to then continue building. Perhaps only coders understand how the tools written can pile up into something amazing and how Moore's law fuels this possibility and how every other human activity pales by comparison. 

Therefore: the only other contenders are food, sleep, sex, and children as possible activities. These are biological imperatives and I have sometimes wished I could be like Data from Star Trek TNG. 

A true coder doesn't 'find' time for programming. A real programmer reluctantly schedules time for everything else.

miércoles, 29 de mayo de 2013

IDSE El archivo no existe o se modificó la ruta


Procedimiento para arreglar el mensaje: "El archivo no existe o se modificó la ruta" al momento de cargar el certificado del IMSS.

El problema es ocasionado por el esquema de seguridad del Internet Explorer 8.

Dentro del explorador seleccionar: "Herramientas" y a continuación "Opciones de Internet". Luego seleccionar la carpeta de "Seguridad" y dar click en el ícono de "Internet", para luego dar click en "Nivel personalizado".

Dentro de la ventana: "Configuración de seguridad zona de Internet", buscar las opción que dice: "Incluir la ruta de acceso al directorio local cuando se carguen archivos a un servidor" y escoger "Habilitar".

Igualmente habilitar la opción: "Permitir la ejecución de scripts en el control del explorador web del Internet Explorer".

viernes, 8 de febrero de 2013


He tenido problemas para correr el Windows Update después de instalar el Windows XP a partir de los discos originales, particularmente con el Service Pack 2.

Aparece el código de error 0x80244019, y no hay mucha información al respecto. Después de intentar de varias maneras, encontré la solución: hay que bajar el WindowsUpdateAgent.exe; disponible en la siguiente página: http://www.ndnew.com/analisis/software/error-0x80244019/

Después de instalar este módulo, el Windows Update corre normalmente.


lunes, 8 de octubre de 2012

Uso de MySQL desde PHP, Versión 5.0 vs. 5.5


He tenido algunos problemas para utilizar MySQL desde PHP en diferentes servidores, ya que en algunos casos se sigue utilizando la versión 5.0 o 5.1 de MySQL, que no permite el manejo de la clase mysqli.

El manual de PHP nos recomienda usar la clase mysqli, pero de no ser posible, a continuación describo las cuatro diferencias que se deben considerar en una aplicación sencilla.

1.- Para abrir la base de datos:
(versión anterior)

$link=mysql_connect('localhost','usuario','password');
if (!$link) 

 die ('No se puede conectar: '.mysql_error()); 
}

$db_selected = mysql_select_db('base_datos', $link);
if (!$db_selected)
{
 die ('No se puede conectar: '.mysql_error()); 
}

(versión nueva)
@$DB = new mysqli('localhost','usuario','password','base_datos');

if (mysqli_connect_errno())
{
 echo 'No se puede conectar a la base de datos: ' . mysqli_connect_error();
}

2.- Para hacer una consulta:
(versión anterior)

 $Query = 'SELECT * FROM pedidos WHERE folio = '.$folio;
 $Resultado = mysql_query($Query);



(versión nueva)

 $Query = 'SELECT * FROM pedidos WHERE folio = '.$folio;
 $Resultado = $DB->query($Query);
 $NumResults = $Resultado->num_rows;

3.- Para barrer la tabla, estableciendo un ciclo:
(versión anterior)
 while ($Row = mysql_fetch_assoc($Resultado))


(versión nueva)

 while ($Row = $Resultado->fetch_assoc())

4.- Para cerrar la base de datos:
(versión anterior)

 mysql_free_result($Resultado);
 mysql_close($link);


(versión nueva)
 $Resultado->free();
 $DB->close();