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

viernes, 22 de mayo de 2009

Manual de XHTML + CSS

Googleando me encontré con un buen manual de XHTML + CSS de Belén Albeza y me gusta mucho la forma como explica el tema. Voy a estar citando varias partes de la obra en el blog, las cuales me han parecido interesantes...

El manual completo lo pueden bajar de aquí...

Parte de la Introducción del Manual

¿Qué es el XHTML?


XHTML significa eXtensible HyperText Markup Language y
es la versión modernizada del tradicional HTML4 . Si ya conoces
HTML, al final del manual hay un apéndice para que sea más fácil
la migración a XHTML.


XHTML es un lenguaje semántico, lo que quiere decir que no
definimos el aspecto de las cosas, sino lo que significan. Por ejemplo,
si tenemos el título de nuestra página, en lugar de decir “Lo quiero
grande en letras rojas”, le indicamos al navegador que “Este es el
título principal de la página. Haz algo para que destaque”. Y ese
“algo” lo dejamos a decisión del navegador.


Obviamente, podemos controlar el aspecto que tienen nuestras páginas, pero eso es tarea de las hojas de estilo CSS, no del
XHTML.


¿Y eso de CSS?


CSS son las siglas de Cascading Style Sheets y son un regalo
del cielo. Si el documento XHTML está bien estructurado, podemos
cambiar totalmente su apariencia sin tocar una sola línea de código
en el archivo .html. Esto nos permite separar el contenido del
aspecto, y es de gran importancia.

jueves, 21 de mayo de 2009

Cambiar el menú de inicio de KDE 4 al estilo clásico (KDE 3.x)

Para cambiar la forma en que se muestra por defecto el Menú de Inicio en KDE 4.x y colocarlo como en las versiones anteriores de KDE, se debe hacer click con el botón derecho del ratón sobre el icono K y seleccionar “Cambiar al estilo clásico de menús”

lunes, 18 de mayo de 2009

Webcam MSI StarCam 370i en Ubuntu 9.04

Para mi grata sorpresa al instalar desde cero, Ubuntu 9.04 en mi Acer Aspire One y conectar mi WebCam USB MSI StarCam 370i me doy cuenta que al fin funcionaba! Desde que soy usuario de Linux y poseo esta magnifica webcam, tenía que recurrir a Windows XP para hacerla funcionar, pero eso ya quedo atrás.

También poseo una computadora de Escritorio con Ubuntu Jaunty 9.04, sin embargo cuando conecte la webcam, no puedo hacerla funcionar, lo cual me pareció extraño. Recordé que en anteriores oportunidades había tratado de compilar el driver para esta webcam sin obtener resultados, por lo que pensé que producto de esas instalaciones había quedado alguna configuración residente ya que en esta PC la instalación de Ubuntu había sido mediante actualización desde versiones anteriores.

Procedí a editar el archivo /etc/modprobe.d/blacklist.conf y en efecto al final del archivo estaban 3 líneas que bloqueaban la carga de los módulos:

blacklist sn9c102
blacklist gspca_main
blacklist gspca_sonixj
Procedí a eliminarlas, guarde y cerré el archivo y al reiniciar la computadora, ya la webcam funcionaba.



cat /etc/issue.net
Ubuntu 9.04
lsusb
Bus 003 Device 003: ID 0c45:60c0 Microdia PC Camera with Mic (SN9C105)
dmesg


[ 3568.932113] usb 3-1: new full speed USB device using ohci_hcd and address 3
[ 3569.137194] usb 3-1: configuration #1 chosen from 1 choice
[ 3569.141310] usb 3-1: SN9C105 PC Camera Controller detected (vid:pid 0x0C45:0x60C0)
[ 3569.272071] usb 3-1: MT9V111 image sensor detected
[ 3569.857062] usb 3-1: Initialization succeeded
[ 3569.857177] usb 3-1: V4L2 device registered as /dev/video0
[ 3569.857181] usb 3-1: Optional device control through 'sysfs' interface disabled
[ 3569.857453] gspca: probing 0c45:60c0


Nota: La webcam la conecte desde que inicie la maquina.

lunes, 11 de mayo de 2009

Montar una Carpeta remota de Windows usando Samba

Para montar una carpeta usando Samba, ejecutamos desde la consola:

mount -t smbfs -o username=usuario,group=dominio //servidor/carpeta /media/APPL/

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...