Articulos enviados en Marzo

Las semanas que pasaron nuestro servidor ha estado muy inestable, perdimos 2 meses de activad y muchos archivos, pero finalmente nos recuperamos del desastre y seguimos adelante con Latindevelopers.com

Teníamos pendientes 4 articulos por publicar:

Shell para Simulación

LaPetite – La Aplicación M.F.C. mas Pequeña

ImageCtrl

CARGAR JPG, GIF, BMP todo en uno

Espero que no vuelva a suceder el mismo desastre o que no afecte tanto a la comunidad.

Las proximas semanas vamos a terminar de implementar algunas secciones del site.

Problema solucionado ODBC Connector

MySQL Generalmente me conecto a MySQL con ayuda del controlador ODBC que provee el mismo MySQL. Como sabemos todo MySQL esta en pledo desarrollo, ocurre que se presentan situaciones que no fueron contempladas, por consiguiente hay errores que perjudican el desarrollo haciendo que uno tome precausiones antes de utilizar un codigo especifico. Muchos hemos crecido con MySQL y creo que si no hubiera sido asi lo hubieramos desechado por detalles como este que les voy a mostrar a continuacion.

Para no darle mas vueltas al asunto concretamente el problema es como sigue:

Cuando se intentaba leer un campo varchar (o relacionado) que este vacio o NULL, el controlador ODBC lo reconocía como UNKNOWN, evidentemente no podía realizarse el paso de valores al tipo CString o char* del Visual C++.

Para evitar ese problema se tenía que averiguar la longitud del campo que se va a leer, algo asi como esto:

ULONG len = 0;
rs.GetAccessor()->GetLength(2,&len); // segundo campo
if(len > 0)
{
	rs.GetFieldValue(2,sValue);
	//...
}

Esto sucedia con las versiones del ODBC Connetor inferiores a la 3.51.12. Ahora el codigo anterior se reduce a la linea que lee el campo y hace el paso del valor a la variable.

CString Trim

Quienes programamos en MFC Visual C++ algunas veces hemos tenido que eliminar los espacios en blanco de una cadena y sucede que la clase CString no tenia una sola funcion trim, sino las funciones TrimLeft y TrimRight.

Nose por que diablos demoraron tanto (o no se dieron cuenta) en agregar esa funcioncita.

Lo que se hacia normalmente es:

m_sCadena.TrimLeft();

m_sCadena.TrimRight();

Esto ahora ha causado un problema de compatibilidad con las versiones anteriores y no creo que sea la unica.

Leer datos MySQL desde C++ sobre Linux

Resulta que algunas veces es necesario acceder desde C/C++ a MySQL, razones hay muchas…. el asunto es como hacerlo.

Antes de hacer cualquier cosa debemos instalar las librerías de desarrollo de MySQL:

sudo apt-get install libmysqlclient-dev

Todos los archivos que necesitaremos van a estar ubicados en /usr/include/mysql y /usr/lib/mysql , los parámetros para compilar un archivo simple es como sigue:

gcc archivo.cpp \
           -o archivo \
           -I/usr/include/mysql -L/usr/lib/mysql \
           -lmysqlclient -lstdc++ -lz

Una breve descripción de los parámetros:

  • -o (output) indica el nombre que va a tener el archivo de resultado
  • -I le dice al compilador que incluya una ruta adicional para los archivos de inclusión
  • -L le dice al enlazador que incluya una ruta adicional para los archivos de librería dependientes
  • -l (ele minuscula) le dice al enlazador que incluya la librería especificada
  • \ es el caracter que usamos en la linea de comando para ejecutar varias lineas como una sola expresión.

Escribí para ustedes un código de ejemplo, no es gran cosa pero les va a dar luces para sus proyectos:

//conexion.cpp
#include 
#include 
#include 
 
using namespace std;
 
int main(int argc, char *argv[])
{
    MYSQL mysql;
 
    mysql_init(&mysql);
    if (!mysql_real_connect(&mysql
		,"localhost"
		,"root"
		,""
		,"ciudades",0,NULL,0))
    {
        cerr<<"Horror ! : "
	    <

El resultado de la ejecución es:

ivancp@ubuntu$ ./conexion
01 AMAZONAS
02 ANCASH
03 APURIMAC
04 AREQUIPA
05 AYACUCHO
06 CAJAMARCA
07 CALLAO
08 CUSCO
09 HUANCAVELICA
10 HUANUCO
11 ICA
12 JUNIN
13 LA LIBERTAD
14 LAMBAYEQUE
15 LIMA
16 LORETO
17 MADRE DE DIOS
18 MOQUEGUA
19 PASCO
20 PIURA
21 PUNO
22 SAN MARTIN
23 TACNA
24 TUMBES
25 UCAYALI

Espero les sirva mucho!

MySQL Backups con crond

Muchos prefieren hacer backups de su valiosa data en formatos predefinidos por el gestor (.backup, .dbf, etc…) por mi parte prefiero el formato SQL guardado en un archivo de texto.

MySQL no tiene un formato SQL tan migrable que digamos (eso se puede arreglar), pero es muy util hacer mysqldump de vez en cuando.

Si lo que uno quieres es liberarse de la tarea de estar haciendo backups diarios o semanales (segun la paranoya de cada uno) puede utilizar anacron.

El comando para sacar una copia de la base de datos:

mysqldump -u backup munipuno > /... /munipunobackup.sql

Para que el comando de copia de seguridad se ejecute cada dia a eso de las 11.pm agregamos esta linea a la configuracion de nuestro anacron

0 23 * * * mysqldump -u backup munipuno > /var/log/backups/munipunobackup.sql

Para sacar una copia de toda la base de datos

mysqldump -u backup --all-databases > /var/log/backups/mysqlbackup.sql

Le pueden agregar el parametro –password=»clave» al comando por si se necesita. Lo unico malo es que no tendremos copias historias, solo un archivo: munipunobackup.sql Eso se puede arreglar con SH, pero luego.

SIAF GL sobre Linux

Es conocido por todos los que alguna vez pasaron por el sector publico que el Sistema Integrado de Administración Financiera (SIAF) es un software al que no podemos pasar por alto, a pesar de que esta hecho en Visual Fox y se presentan errores en el funcionamiento periódicamente. Pero nos guste o no tenemos que utilizarlo, de todas maneras el SIAF es la norma hecha Software.

Desde hace algunos meses vengo trabajando en la Oficina de Informática de la Municipalidad Provincial de Puno, y definitivamente tener funcionando el SIAF sobre un Servidor de Archivos Windows es vivir en zozobra.

Los virus, colgadas inesperadas, y innumerables pantallas azules indicando Error numero 0xADFD21244 y mas bla bla bla; me hicieron desechar el sistema operativo Windows del servidor y pasarme a Linux Fedora Core 3 con Samba para que los usuarios del SIAF no se den cuenta del cambio.

Cuando los residentes del SIAF o los del staff de soporte técnico venían a actualizarlo no sabían que hacer con el servidor, incluso preguntaban “¿Que Windows es éste?”

Desde aquel historico día, los problemas solo fueron del mismo SIAF ya no del sistema operativo. Aunque no esta muy difundido esto del Linux en las Instituciones Publicas del Perú, deberían tomarlo en cuenta, por que además de que ademas de ahorrar miles de dólares en licencias también se ahorran las molestias que causa Windows frecuentemente.

A todo esto, en las instituciones publicas es muy difícil implantar el software libre en los equipos usuario, por que ya están mentalizados en utilizar Word para sus documentos, Excel para sus hojas de calculo, por solo citar dos ejemplos. El software libre vive normalmente en el entorno académico, depende de nosotros que esto cambie.

Si desean asistencia en la instalacion de SIAF sobre Linux pueden escribir a ivancp [AT] latindevelopers.com

La Navidad y el Año nuevo

En estos meses es cuando mas me ausento de la red por que tengo muchas cosas que terminar, y a veces el tiempo se hace muy corto y uno no se da cuenta que el año ya se fue. No adorné ni publique los nuevos articulos en Latindevelopers.com y deje de frecuentar el foro de Latindevelopers y las visitan cayeron a la mitad, posiblemente sea también a causa de estas fiestas. Un comentario al respecto de las fiestas:

Creo que La Navidad y el Año Nuevo para cuando uno es niño, adolescente, incluso universitario puede llegar a ser muy feliz, mejor aun si uno no llega a ver la pobreza del rededor. Pero cuando uno ya tiene cierta edad y algunas responsabilidades encima; tiene que hacer que quienes están todavía en ese transe de juventud se sientan lo mejor posible, y obviamente eso implica muchos gastos y demás cosas materiales.

Ahí es cuando la realidad, que no la tomábamos importancia hasta esos momentos, se hace cruda y hacen despertar sentimientos que sacuden lo mas profundo de nuestra conciencia. Y uno se pregunta en esos momentos: ¿Cómo hicieron nuestros padres para mantenernos felices?

Estas fiestas no son para mi motivo de felicidad por que mi corazón no resiste después de ver tanta pobreza, no solo aquí sino en todas partes. Aun así espero que la hayan pasado bien chévere y que todos tengamos prosperidad mas adelante.

Lo único que puedo decir de mi parte es que tengo muchas ganas de seguir sobreviviendo en este mi País tan lastimado, y que las constantes decepciones no me obliguen a huir él.

Evangelios polémicos

Texto en Copto Hace mucho tiempo leí acerca de los Evangelios Apocrifos. Desde su descubrimiento, en 1945, muchos han escrito acerca de ellos, yo no lo haré por que no tengo los conocimientos suficientes para opinar al respecto.

Personalmente a mi me impresionaron algunos de los «dichos» del evangelio de Tomas, mas me impresionó cuando Discovery Channel Confirmó que existía otro evangelio que es de Maria Magdalena.

Pues bien, ahora le están tomando especial interés a los escritos que no están considerados en la Biblia y la Iglesia Católica los considera Apócrifos. La BBC publicó un artículo al respecto que resume lo que significan estos evangelios hoy en dia, y también incluye comentarios de personajes importantes relacionados con el tema:

BBC – Evangelios Polémicos

EVANGELIO SEGÚN TOMÁS

El Codigo Da Vinci según Discovery

Discovery Channel El dia domingo 12-Dic Discovery Channel ha emitido un reportaje sobre El Libro de Dan Brown : «El Codigo Da Vinci», El reportaje se titula «Da Vinci Decodificado».

El Libro “El Codigo Da Vinci”, para muchos de nosotros fué un gran libro y muchos de nosotros caímos en esa historia de ficción y peor aun consideramos ciertas algunas de sus afirmaciones.

Éste libro fue desmentido en ese reportaje, fue realmente una decepción para mi. No lo podía creer, incluso se esta haciendo una película sobre el libro. Ése libro será una especie de Harry Potter, alucinante pero solo ficción.

Pero eso no cambia mi opinión respecto a la Religión en general pero especialmente la católica.

InnoBase y Oracle

Hoy me llevé una tremenda sorpresa al ver el logo de Oracle
en la pagina de InnoBase Oy:

InnoBase

Averiguando por la red me enteré que Oracle, una de las empresas de produccción de software de base de datos mas grande de la tierra, se habia comprado la compañía que produce el motor de almacenamiento InnoDB que hoy en dia es una parte fundamental de MySQL.

Esto hace pensar que Oracle esta viendo a MySQL como un serio competidor, pero por otro lado Oracle apoya el desarrollo de software libre, eso es evidente por que se instala con Apache y tambien hay versiones para Linux.

Entontre un comentario en MySQL-Hispano.com con casi las mismas preguntas que se me vino a la mente cuando me enteré de esto. http://www.mysql-hispano.org/index.php?m=read&id=397

En la pagina de Oracle anuncia la bienvenida de Innobase, indicando que seguirá apoyando el software libre, tambien indica que se espera renovar los vinculos con MySQL el proximo año.

http://www.oracle.com/innodb/index.html

Finalmente, esperemos que MySQL no deje de crecer y que Oracle no se lo «trague».