martes, 27 de octubre de 2009

Ejemplo de Conexión de C/C++ con PostgreSQL


#include <stdio.h>
#include <libpq-fe.h>

int main()
{
PGconn *conn;
PGresult *res;
int i,j;

conn = PQsetdbLogin("ip","5432",NULL,NULL,"database","user","password");

if (PQstatus(conn) != CONNECTION_BAD)
{
res = PQexec(conn, "select * from tabla");

if (res != NULL && PGRES_TUPLES_OK == PQresultStatus(res))
{
for (i = PQntuples(res)-1; i >= 0; i--)
{
for (j = PQnfields(res)-1; j >= 0; j--)
printf("%s\t",PQgetvalue(res,i,j));
printf("\n"));
}
PQclear(res);
}
}

PQfinish(conn);
return 0;
}


Y para compilar:

gcc db.c -o db -lpq -I/usr/include/postgresql/


Debemos tener instalado el paquete libpq-dev

sábado, 17 de octubre de 2009

Reiniciar la consola (Caracteres extraños)


A veces luego de ejecutar determinados comandos en una consola, esta pareciera que se dañara y lo que generalmente hacemos es cerrarla y abrir una nueva, sin embargo basta con teclear reset y listo, la consola vuelve a la normalidad.

martes, 11 de agosto de 2009

Teclado en Español/Latinoamericano en GDM

Si necesitamos cambiar la distribución del teclado de GDM, debemos editar el archivo /etc/X11/xorg.conf y agregar lo siguiente:

Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "es"
EndSection


y por último reiniciamos el entorno gráfico:

Ctrl+Alt+Backspace
o
/etc/init.d/gdm restart

Nota: Si queremos el teclado en Latinoamericano colocamos los siguiente:

Option "XkbLayout" "latam"

viernes, 19 de junio de 2009

Traps con Nagios - Icinga

Instalar el agente Net-SNMP en el Servidor.

Como usuario root


apt-get install snmpd
ó
yum install snmpd


Editar /etc/snmp/snmptrapd.conf

doNotLogTraps yes
traphandle default /usr/local/nagios/libexec/traps.sh


Iniciar el demonio receptor de traps

snmptrapd


Como usuario nagios

Editar /usr/local/nagios/libexec/traps.sh

#!/bin/sh
read host
read ip
vars=

while read oid val
do
oid=$(echo $oid | cut -d ':' -f 3)
if [ "$vars" = "" ]
then
vars="$oid = $val"
else
vars="$vars, $oid = $val"
fi
done

ip=$(echo $ip | cut -f 2 -d ' ' | cut -f 1 -d ':' | cut -f 1 -d ']' | cut -f 2 -d '[')
/usr/bin/printf "[%lu] PROCESS_SERVICE_CHECK_RESULT;$ip;TRAP;1;WARNING ($vars)\n" `date +%s` > /usr/local/nagios/var/rw/nagios.cmd


Otorgar privilegios de ejecución
chmod a+x traps.sh

Editar /usr/local/nagios/libexec/traps_ok.sh

#!/bin/bash
echo "Se han limpiados los traps. ("`date`")"
exit 0


Otorgar privilegios de ejecución
chmod a+x traps_ok.sh

Crear el comando en command.cfg

define command{
command_name traps_ok
command_line $USER1$/traps_ok.sh
}


Definir un Servicio llamado TRAP, de forma pasivo

define host{
use Host-Servidores
host_name PruebaTrap
address xxx.xxx.xxx.xxx
notes Servidor de Prueba
}

define service{
use Service-Servidores
service_description TRAP
host_name PruebaTrap
check_command traps_ok
notes Servicio de Trap
is_volatile 1
active_checks_enabled 0
passive_checks_enabled 1
}


Notas:

Se asume que la instalación de Nagios se realizo desde las fuentes en la carpeta /usr/local/nagios/

Se puede mejorar la forma como se muestran los trap utilizando snmtt .

Para limpiar la alarma de los trap se debe seleccionar la opción “Re-schedule the next check of this service” y marcar el check “Force Check” y presionar la opción “Commit”.

Para Icinga cambiar las rutas de nagios por icinga.

martes, 9 de junio de 2009

Trabajando con GDChart

En estos días estaba tratando de crear unas gráficas provenientes de un archivo .csv para obtener los datos y a la final crear un archivo .png.

Existe una excelente herramienta para php que realiza maravillosas gráficas: pChart, sin embargo necesitaba una solución para trabajar con C/C++ y para ello estoy utilizando GDChart, la cual es una librería que nos permite realizar gráficas sencillas.

A continuación un ejemplo de como realizar una gráfica sencilla con lenguaje C/C++ en debian/ubuntu.

apt-get install libgdchart-gd2-xpm-dev libgdchart-gd2-xpm


Crear un archivo ejemplo.c


#include <stdio.h>
#include <gdc.h>
#include <gdchart.h>
#include <gdcpie.h>

main()
{
float a[3][10] = {{10,12,50,30,10,78,12,50,30,10},{12,50,30,10,78,12,50,30,10,45},{50,30,10,78,12,50,30,10,45,6}};

char *t[10] = { "1", "", "", "", "", "", "","","","F"};
unsigned long sc[2] = { 0xFF8080, 0x8080FF };

GDC_BGColor = 0xFFFFFFL; /* backgound color (white) */
GDC_LineColor = 0x000000L; /* line color (black) */
GDC_SetColor = &(sc[0]); /* assign set colors */

GDC_image_type = GDC_PNG;
/* ----- call the lib ----- */
GDC_out_graph( 800, 220, /* short width, height */
stdout, /* FILE* open FILE pointer */
GDC_LINE, /* GDC_CHART_T chart type */
10, /* int number of points per data set */
t, /* char*[] array of X labels */
3, /* int number of data sets */
(float*)a, NULL ); /* float[] data set 1 */

return 0;
}

Luego compilar y aqui viene la parte importante:

gcc ejemplo.c -o ejemplo -lgdc -D HAVE_LIBFREETYPE

Por ultimo ejecutar el archivo y colocarlo en un archivo .png

./ejemplo > salida.png



Esta librería la pienso utilizar momentáneamente, pero trataré de portar pChart a C++.

Nota, estoy trabajando ahora en la parte para leer el archivo csv...

domingo, 31 de mayo de 2009

LibrosWeb.es


Excelente sitio con libros gratuitos sobre HTML, CSS, JavaScript, AJAX y otras tecnologías web

http://www.librosweb.es/

Ahora a buscar tiempo para poder leer y más adelante aplicar todo esto....

Los que yo descargue:

Introducción a AJAX

Introducción a XHTML
Introducción a CSS
Introducción a Javascript
CSS Avanzado

sábado, 23 de mayo de 2009

Compilar warzone2100 2.3.9 en Ubuntu 16.04 para equipos que no soportan OpenGL >= 2.0

Instalar Paquetes apt-get install build-essential automake flex bison libpopt-dev libpng12-dev libsdl1.2-dev libopenal-dev  libphysfs-dev li...