Monday, September 24, 2007

Instalando Gnome Vala en Ubuntu

La gente de Gnome ha inciado un proyecto interesante llamado Vala en su intento de Agilizar la Velocidad de Desarrollo para las librerias GNOME sin sacrificar Memoria RAM(cosa que critican directamente de Mono y Java). "Vala" hace parsing de una sintaxis muy pero muy similar a C# pero en vez de compilar a Nativo o a IL, compila a language C(.h y .c) "Compiler for the GObject type system" y por supuesto no necesita runtime. En fin, si quieren probarlo ustedes mismos aqui estan los pasos para instalarlo en Ubuntu: 1. Descargar los fuentes de Vala: wget http://download.gnome.org/sources/vala/0.1/vala-0.1.3.tar.bz2 2. Descomprimir: tar -xvf vala-0.1.3.tar.bz2 La descompresion ha creado el directorio vala-0.1.3 cd vala-0.1.3 3. Preparamos la compilacion ./configure 4. Compilamos. make 5. Instalamos. sudo make install Listo. Ahora solo nos queda probar el compilador(valac) y para esto creamos un archivo llamado "main.valac" y colocamos el siguiente contenido: using GLib; public class Sample : Object { public Sample () { } public void run () { stdout.printf ("Hello World from http://johansoft.blogspot.com\n"); } static int main (string[] args) { var sample = new Sample (); sample.run (); return 0; } } Compilamos: valac -o main main.vala Ejecutamos: ./main Listo:) El resultado deberia ser el siguiente: Hello World from http://johansoft.blogspot.com

Friday, September 21, 2007

Solucion: ERROR: language "plpgsql" does not exist

PostgreSQL puede ser programado con muchos lenguages y el mas usado es PL/pgSQL pero no siempre se instala por defecto. Para corregir este problema en Ubuntu Linux se realizan los siguientes pasos: 1. Localizar el archivo plpgsql.so Este archivo es una libreria de funciones que ejecuta el codigo PL/pgSQL, para localizarlo hacemos lo siguiente: $sudo updatedb $locate plpgsql.so Con estas instrucciones Linux localizara el archivo y nos dara la ruta de la libreria, en mi caso para Ubuntu 7.04 y PostgreSQL 8.2 la ruta seria la siguiente: /usr/lib/postgresql/8.2/lib/plpgsql.so 2. Instalar el handler y lenguage. Una vez localizada la ruta de la libreria handler del lenguage(ver paso 1) se procede a crear el handler en PostgreSQL, para esto se necesita una conexion a PosgreSQL que puede hacerse con pgadmin3 o la utilidad de linea de comandos psql. Envie a PostgreSQL los siguientes comandos: CREATE FUNCTION plpgsql_call_handler () RETURNS OPAQUE AS '/usr/lib/postgresql/8.2/lib/plpgsql.so' LANGUAGE 'C'; CREATE LANGUAGE 'plpgsql' HANDLER plpgsql_call_handler LANCOMPILER 'PL/pgSQL'; Listo, con esto ya creo el lenguage PL/pgSQL correctamente. Intente ejecutar nuevamente el script que genero el error original. Nota: la creacion o configuracion de cada lenguage de PostgreSQL se hace por base de datos, no en el servidor o en todas las bases de datos al mismo tiempo. Si necesita crear el leguage en varias bases de datos debe ejecutar el Paso 2 en cada base de datos o ejecutar el Paso 2 en alguna de las plantillas(template0,template1,etc) y despues crear las otras bases de datos futuras basadas en esta plantilla. Consulte tambien Acerca de PL/pgSQL [Actualizacion-28/09/2007] El error tambien puede ocurrir en Windows con el instalador por defecto de PostgreSQL, el handler puede que este creado pero no el lenguage. Para solucionarlo ingrese con el usuario POSTGRES en la base de datos donde necesita el lenguage y ejecute el siguiente script: CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql' HANDLER plpgsql_call_handler VALIDATOR plpgsql_validator; Si el handler no existe se debe crear usando el procedimiento mencionado mas arriba para Linux pero aputando al archivo plpgsql.dll(que normalmente se encuentra en "C:\Archivos de programa\PostgreSQL\8.2\lib" si no se cambio la ruta de instalacion por defecto).

Tuesday, September 18, 2007

Resultados de encuesta: "Que lenguages de programacion empleas mas?"

Desde agosto coloque una encuesta en mi blog bajo el titulo "Que lenguage de programacion empleas mas?" y los resultados finales fueron los siguientes: Los ganadores: 1. PHP 2. SQL 3. Java A continuacion el Total de Votos:
SQL
155 (38%)
C#
107 (26%)
Java
149 (37%)
XML
53 (13%)
Phyton
53 (13%)
PHP
174 (43%)
Ruby on Rails
30 (7%)
Saludos y Gracias a todos los que participaron en la encuesta.

Como Obtener Informacion del CPU en Windows con .NET/C#

En Windows es bastante sencillo. ProcessorInfo[] procesadores = ProcessorInfo.GetList(); foreach(ProcessorInfo cpu in procesadores) { Console.WriteLine("CPU ID={0},DeviceId={1},Name={2},Machine={3}",cpu.Id,cpu.DeviceId,cpu.Name,cpu.SystemName); } El ejemplo anterior escribe lo siguiente en la consola: CPU ID=BFEBFBFF00000F41,DeviceId=CPU0,Name=Intel(R) Pentium(R) 4 CPU 2.66GHz,Mac hine=ACSA08 Donde ProcessorInfo es una clase que puedes descargar en la siguiente direccion: Descargar ProcessorInfo.cs

Feliz Cumpleaños Linux!

Saludos a todos los colaboradores y empresas que apoyan a Linux y el Software Libre. Feliz Cumpleaños Tux!

Monday, September 17, 2007

Configurar Conexion Remota de Usuarios en MySQL5 en Ubuntu/Debian

MySQL 5 al igual que muchas otras bases de datos no permite conexiones remotas en su instalacion por defecto y hay que realizar ciertos pasos para configurarlo: 1. Editar el archivo /etc/mysql/my.cnf: Reemplazar esto: bind-address = 127.0.0.1 Por lo siguiente: bind-address = 0.0.0.0 Luego de guardar el archivo se procede a reiniciar el servidor de bases de datos MySQL, se puede hacer con el siguiente comando: /etc/init.d/mysql-server restart Aunque con estos paso ya hemos configurado a MySQL Server para permita conexion remota los usuarios no necesariamente puedan conectarse. 2. Permitimos al usuario conexion remota: Iniciamos la utilidad "mysql" en un Terminal del servidor donde esta instalado mysql server con el siguiente comando: mysql -u root -p Colocamos nuestra contraseña de root para mysql y procedemos a configurar a los usuarios para acceso remoto: GRANT ALL PRIVILEGES ON *.* TO root@'%'; FLUSH PRIVILEGES; Con la instruccion anterior se permite al usuario "root" conexion remota desde cualquier PC y aunque esta es la solucion mas sencilla no es la mas segura. Se debe asignar conexion remota por IP o Nombre de dominio. Ejemplo, con la siguiente instruccion se le permite conexion remota al usuario root desde la PC con la direccion IP 192.168.0.5: GRANT ALL PRIVILEGES ON *.* TO root@192.168.0.5 FLUSH PRIVILEGES; Nunca olvide hacer FLUSH PRIVILEGES para que los cambios en el sistema authenticacion y autorizacion de MySQL se hagan efectivos al momento. En los ejemplos anteriores se usa *.* para indicar que el usuario tiene acceso a todas las bases de datos con todos sus objetos(tablas, vistas, funciones) pero es buena practica tambien solo dar acceso a las bases de datos especificas. Ejemplo, con la siguiente instruccion vamos a asignar acceso remoto desde la direccion IP 192.168.0.5 al usuario "root" para la base de datos "administracion" GRANT ALL PRIVILEGES ON administracion.* TO root@192.168.0.5 FLUSH PRIVILEGES; Para mas informacion consulte los siguientes temas:

Wednesday, September 12, 2007

Medir Periodos de Tiempos en C#

En .NET 2.0 y disponible tambien en Mono tenemos la clase System.Diagnostics.Stopwatch que nos permite medir con milisegundos el tiempo transcurrido en un periodo. Ejemplo: System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch(); watch.Start(); System.Threading.Thread.Sleep(100); watch.Stop(); System.Console.WriteLine("Transcurrido: {0}", watch.ElapsedMilliseconds); Realmente util no? Hace tiempo habia implementado uno para medir los tiempos de ejecucion pero este esta sencillo y practico.

Tuesday, September 11, 2007

Cambiar Contraseña de Usuario 'postgres' en Ubuntu

En un post anterior ya he comentado que el instalador de PostgreSQL para Ubuntu asigna una contraseña aleatoria al usuario 'postgres' y que esta debe ser cambiada manualmente post-instalación. Esto no es un error en el instalador, es una comportamiento de seguridad por defecto del instalador. Cambiano la contraseña Para cambiar la contraseña en una instalación por defecto o porque simplemente se olvido la contraseña y no existen mas usuarios se hace lo siguiente en una terminal: 1) Impersonar al usuario 'postgres'. $sudo su postgres 2) Ejecutar la utilidad psql $psql En este momento se esta conectando a la base de datos usando el usuario 'postgres', con este usuario puede cambiar contraseñas de muchos usuarios incluso del mismo 'postgres'. Ahora vamos a cambiar la contraseña, ejecute sobre la linea de comandos actual la siguiente secuencia donde 'passwd' es la contraseña nueva(debe utilizarse comillas simples): alter user postgres with password 'passwd'; Si el programa response con el mensaje 'ALTER ROLE' la contraseña se ha cambiado correctamente. Para salir se la utilidad escriba: \q para salir del usuario 'postgres' escriba lo siguiente: exit Listo. La contraseña se ha cambiado correctamente. Probando la conexion Para probar la conexion se puede utilizar la misma utilidad 'psql' de la siguiente forma: psql -U postgres -W Presione ENTER e introduzca la nueva contraseña(usted debio haberla cambiado en el ejemplo anterior, si no lo hizo la contraseña es 'passwd').

Instalar PostgreSQL en Ubuntu Linux

Instalacion Instalar Postgresql en Ubuntu es bastante sencillo, yo uso Ubuntu 7.04 e instalo postgresql desde los repositorios oficiales que tienen PostgreSQL 8.2. Para instalar se puede utilizar synaptic e instalando el paquete llamado 'postgresql-8.2' o usando aptitude en una terminal. Para instalar abra un terminal y ejecute el siguiente comando: $sudo aptitude install postgresql-8.2 Escriba 'Y'(si) para descargar e instalar automaticamente y cuando finalice el proceso postgresql estara correctamente instalado pero no se inicia automaticamente, debe iniciarse el servicio manualmente. Iniciando el Servicio PostgreSQL Manualmente Esta tarea puede realizarse usando la interfaz grafica o con una terminal: Iniciar usando Servicios de Ubuntu: Hacer click en el menu System->Administration->Services y marcar el servicio Database Server(postgresql-8.2) como se muestra a continuación: Con esta acción se iniciara la base de datos. Iniciar usando usando Terminal: Abra una terminal y ejecute el siguiente comando: $sudo /etc/init.d/postgresql-8.2 start Listo, ya se ha instalado e iniciadio la Base de Datos. Existe un Pequeño problema que realmente no es un problema, es una caracteristica de Seguridad del Paquete de Instalacion de Ubuntu que no revela cual es la contraseña que se le asigno al usuario 'postgres', sin embargo, he creado la siguiente guia para ayudar a solventarlo: Cambiar la contraseña del usuario 'postgres'

Tuesday, September 4, 2007

Abrir o Extraer Archivos con extension 7z

Hoy en dia hay un sin numero de formatos de compresion de archivos desconocidos para mi y uno de esos es .7z. Por defecto el descompresor para este tipo de archivos no viene instalado en Ubuntu 7.04 asi que si alguna ves intentas descomprimir o extraer un archivo con extension 7z y te aparece alguna vez te aparece la pantalla que puedes ver a su izquierda solo tienes que instalar el paquete llamado "p7zip-full" usando Synaptic o por terminal usando el siguiente comando: $sudo aptitude install p7zip-full Eso es todo, intenta nuevamente descomprimir el archivo y todo funcionara correctamente.