The::Beastieux

Sangre de Bestia + Corazón de Pingüino | Un blog acerca de Linux, *BSD, Open Source, Software Libre, Programación …

Archivos en la Categoría: Desarrollo

Tutorial de Creación de Plugins para Pidgin en Linux


Como sabrán, quienes siguen a menudo mi blog, hace unos meses creé un plugin para Pidgin – MorseCodeTalk, ahora quiero compartirles un pequeño tutorial para poder crear vuestras propias extensiones.

1- Creamos un Directorio de Trabajo:

# mkdir ~/development

2- Descargar las fuentes de Pidgin y moverlo al directorio creado:
En mi caso he descargado la versión 2.7.9.
http://www.pidgin.im/download/source/
3- Descomprimir las fuentes:

# tar -jxvf pidgin-2.7.9.tar.bz2

4- Configurar las fuentes:

# cd pidgin-2.7.9
# ./configure

4.1- Errores:
Si hay errores de dependencias, instala los plugins que falta:

Ejem: aptitude install intltool

4.2- Opciones:
– Usa –disable-vv si no necesitarás alguna funcionalidad.

Ejem: ./configure --disable-vv --disable-idn --disable-nm --prefix=/opt/pidgin

– prefix es para que se instale en /opt/pidgin

4.3- Advertencia:
Si ya tenías instalado pidgin anteriormente, te saldrá una advertencia, pero no te preocupes, podrás iniciar la nueva versión de Pidgin por consola.

Warning: You have an old copy of Pidgin at /usr/bin/pidgin.

5- Compilar las fuentes:

# make

Esto podría demorar un poco.

6- Crear el Plugin:
Para empezar crear el plugin deberemos dirigirnos al directorio siguiente:

$ cd libpurple/plugins/

Crearemos un plugin de ejemplo llamado holamundo que sólo nos mostrará una ventana de diálogo al activarlo, para ello debemos crear un fichero de acuerdo al lenguaje de programación que usaremos y el editor que prefieran, yo alterno entre gedit(editor gráfico) y nano(editor desde consola).

Pidgin ofrece API’s para crear extensiones en diferentes lenguajes, como C, Perl, Tcl, d-bus, para este ejemplo usaré el lenguaje de entre ellos que más conozco, que es C (no C++).

6.1- Crear el Código del Plugin:

$ nano holamundo.c
#define PURPLE_PLUGINS
#include 
#include "notify.h"
#include "plugin.h"
#include "version.h"

static gboolean
plugin_load(PurplePlugin *plugin) {
    purple_notify_message(plugin, PURPLE_NOTIFY_MSG_INFO, "Hola Mundo!",
                        "Este es mi primer Plugin para Pidgin", NULL, NULL, NULL);

    return TRUE;
}

static PurplePluginInfo info = {
    PURPLE_PLUGIN_MAGIC,
    PURPLE_MAJOR_VERSION,
    PURPLE_MINOR_VERSION,
    PURPLE_PLUGIN_STANDARD,
    NULL,
    0,
    NULL,
    PURPLE_PRIORITY_DEFAULT,

    "core-holamundo",
    "Hola Mundo",
    "1.0",

    "Plugin Hola Mundo",
    "Plugin Hola Mundo",
    "Beastieux Zeroo ",
    "https://saforas.wordpress.com",

    plugin_load,
    NULL,
    NULL,

    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL
};

static void
init_plugin(PurplePlugin *plugin)
{
}

PURPLE_INIT_PLUGIN(holamundo, init_plugin, info)

La siguiente parte del código nos permite dotar de información suficiente para el plugin, acontinuación describo cada uno de los parámetros:

static PurplePluginInfo info = {
    PURPLE_PLUGIN_MAGIC,    /* Este deberá ser siempre
                               PURPLE_PLUGIN_MAGIC.*/

    PURPLE_MAJOR_VERSION,   /* Este parámetro ayuda a determinar
			       la versión de Pidgin en el que es
			       compilado, del mismo modo permitirá
			       usar el plugin sólo en la versión
			       donde fue compilada */

    PURPLE_MINOR_VERSION,   /* Versión a partir del cual
			       podrá funcionar el Pidgin */

    PURPLE_PLUGIN_STANDARD, /* PurplePluginType: Hay 4 diferentes valores
			       el primero es PURPLE_PLUGIN_UNKNOWN;
                               no debería ser usado, PURPLE_PLUGIN_STANDARD;
			       este es el valor más usado.
			       PURPLE_PLUGIN_LOADER; usamos este cuando
			       queremos cargar plugins no nativos
			       por ejemplo los hechos en Perl o Tcl,
			       por último PURPLE_PLUGIN_PROTOCOL;
			       si tu plugin permitirá conectar
 			       con otras redes.*/

    NULL,		       /* Si estás escribiendo un Core Plugin
			       debería ser NULL, Si estás escribiendo un
			       Pidgin Plugin debes usar PIDGIN_PLUGIN_TYPE.
			       Si estás escribiendo un Finch Plugin
                               debería usar FINCH_PLUGIN_TYPE.*/

    0,			       /* Este parámetro es para determinar los flags.
			       como el disponible para poner a invisible
                               (PURPLE_PLUGIN_FLAG_INVISIBLE).
			       Con ello haremos que el plugin no aparezca
			       en la lista de plugins. */

    NULL,		       /* Este es un GList de dependencias de plugins.*/

    PURPLE_PRIORITY_DEFAULT,   /* Determina la prioridad que libpurple dará
			          a tu plugin. Existen 3 posibilidades,
			          PURPLE_PRIORITY_DEFAULT,
			          PURPLE_PRIORITY_HIGHEST,
			          PURPLE_PRIORITY_LOWEST. */

    "core-holamundo",	        /* Es el ID de tu plugin.*/

    "Hola Mundo",		/* Es el Nombre de tu plugin.*/

    "1.1",			/* Es la Versión de tu plugin.*/

    "Resúmen Hola Mundo",	/* Es el Resúmen de tu plugin.*/

    "Descripción Hola Mundo",	/* Es la descripción de tu plugin.*/

    "Tu Nombre ",	/* Datos del desarrollador del Plugin. */

    "http://...",	/* La Web del Plugin, de donde pueden
				   descargarlo, reportar bugs, etc.*/

    plugin_load,	/* La función que se carga cuando
			   se inicia el plugin.
			   Debería ser de tipo gboolean*/

    NULL,		/* Es llamado cuando libpurple
			   se descarga, también
			   deberá ser de tipo gboolean.*/

    NULL,		/* Es llamado cuando libpurple
			   se destruye, también
			   deberá ser de tipo gboolean.*/

    NULL,		/* Deberá apuntar a un PidginPluginUiInfo.*/

    NULL,		/* Determina si es un PurplePluginLoaderInfo
			   o PurplePluginProtocolInfo*/

    NULL,		/* Puntero que apunta a una estructura
			   PurplePluginUiInfo.
			   Puedes encontrar un ejemplo de ese
			   tipo de código en:
			   libpurple/plugins/pluginpref_example.c */

    NULL,		/* Es una función puntero donde se definen
			   acciones. Debe ser de tipo GList
			   *function_name(PurplePlugin
			   *plugin, gpointer context)*/

    NULL,		/* Es un puntero reservado para el futuro,
			   lo setearemos a NULL
			   porque no lo necesitamos.*/

    NULL,       	/* Es un puntero reservado para el futuro,
			   lo setearemos a NULL
			   porque no lo necesitamos.*/

    NULL,		/* Es un puntero reservado para el futuro,
			   lo setearemos a NULL
			   porque no lo necesitamos.*/

    NULL		/* Es un puntero reservado para el futuro,
			   lo setearemos a NULL
			   porque no lo necesitamos.*/
};

6.2- Compilar el fichero holamundo.c:

$ make holamundo.so

6.3- Copiar el plugin creado en el directorio de pidgin:

$ cp holamundo.so ~/.purple/plugins/

6.4- Ejecutar Pidgin y probar el plugin:

$ /opt/pidgin/bin/pidgin

Para crear un plugin con interfaces más elaboradas podemos usar las librerías GTK, y para la interacción con pidgin usamos las librerías libpurple; una buena combinación de C/GTK/Libpurple, y de los conocimientos necesarios del la estructura funcional de pidgin nos permitirán realizar los complementos que queramos, pueden buscar toda la información necesaria en la wiki de desarrolladores de pidgin. Una recomendación de mi parte es que revisen los códigos fuente de los plugins existentes en Pidgin Plugins, y tomarlos como referencia para construir los suyos, es lo que hice antes de empezar a crear mis propios complementes . Ahora, si quieren hacer la versión para windows, generar el dll tiene un proceso algo mas tedioso, se necesitará la ayuda de cygwin en windows y descargar e instalar todos los paquetes del cual pidgin depende para poder compilar las fuentes.

Componentes adicionales para Java


Jarvana es un proyecto que centraliza mediante búsquedas cientos de proyectos y clases de java desde el repositorio central de Maven. Para hablar de Maven haría falta otro post, asi que esto queda pendiente, sin embargo; es una utilidad sumamente importante al desarrollar proyectos más estructurados. No hace perder mucho tiempo por su capacidad de búsqueda, hay gran cantidad de proyectos que puedes encontrar e  incluirlos en tu propio proyecto, existe documentación y más.

 

Aquí, algunas cosas interesantes que se puede encontrar, por ejemplo se sabe que las librerías awt o swing de java no contienen componentes adicionales que podamos necesitar, como: un CheckListBox, Calendarios, etc; es posible que tu mismo tengas que crearlos o si no tienes el tiempo que se necesita para ello, puedes buscar componentes re-utilizables. Ya tienes la solución, solo utiliza el buscador de Jarvana.

JasperReports – Herramienta Open Source para elaboración de Reportes en NetBeans


Hoy quiero mencionarles a JasperForge, un proyecto Open Source que va de la mano  con JasperSoft,  el lado comercial del mismo, toda una suite de recursos requeridos en el proceso de presentación de información extraída de  una fuente de datos cualquiera. JasperReports es una de las herramientas mas populares para la emisión de reportes que tiene integración con Java, también podemos mencionar a iReport como diseñador de reportes,  JasperServer como un servidor de reportes via Web, JasperAnalysis que presenta conectividad con bases de datos OLAP, o mucho mejor JasperETL exclusivamente para Business Intelligence,  que interviene en la presentación de datos desde el procesos de ETL con el que se consolida la información de los Datamarts, Datawarehouse, o inclusive de Minería de datos.

Reportes Open Source

Si eres programador en Java seguro que lo conoces, y si estás iniciándote, lo tienes a la mano. xD.  Actualmente lo estoy usando en un proyecto que desarrollo y va genial.

Ahora, ¿Cómo integrarlo en nuestra IDE de Desarrollo?, yo solo lo he integrado en NetBeans, que es el IDE en el que yo suelo trabajar a menudo, los pasos para integrarlo son relativamente sencillos como :

1) Descargar el Plugin para NetBeans 3.x (Aquí)

2) Desde NetBeans ir a:

Tool -> Plugings -> Downloaded -> Add Plugins -> (Seleccionar los archivos con extensión .nbm)

3) Instalarlos: En mi caso los archivos *.nbm que he obtenido al descomprimir el archivo descargado anteriormente fueron:

iReport-3.7.6.nbm

jasperreports-components-plugin-3.7.6.nbm

jasperreports-extensions-plugin-3.7.6.nbm

jasperserver-plugin-3.7.6.nbm

Ahora ya está todo en su sitio, si deseas trabajar con el reporteador en modo diseño bastará con agregar un Emply Report al proyecto desde el menú File -> New File

PEAR – PHP Extension and Aplication Repository


PEAR ( PHP Extension and Aplication Repository)  es un framework de componentes reusables PHP. abarcan código que va desde la autenticación de usuarios hasta los servicios web, pasando por el manejo de ventanas, encriptación de datos, generación de planillas de cálculo, gestión de imágenes, sistemas de archivos, manejo de fechas, matemáticas simples y complejas, funciones financieras, XML, internacionalización, bases de datos, etc.; lo cual hace que PHP sea una opción a tener en cuenta.

pear

Sin duda estos componentes nos ahorran mucho tiempo de programación y rompernos las cabezas, gracias a la reutilizando código escrito previamente por otras personas.

Ver: PEAR-PHP

Ahorrar más, Ganar más y Cobrar menos al cliente


Trabajando, estudiando y escribiendo de ‘mes’ en cuando :)……

Este cuadro lo hicimos para tener una propuesta alternativa  al  desarrollo con .NET.

Los precios fueron cotizados por un amigo ya hace algún tiempo, y creo que faltan algunas especificaciones en cuanto a la norvatividad de las licencias, pero solo es para dar una idea.

desarrollo software bajo net

Para desarrollar un proyecto optamos por el paquete 2 , solo que .NET Framework era parte de los requerimientos del docente de la facultad, creo que pronto estará portado totalmente para funcionar con mono.

Instalación y Configuración de PHP en PC-BSD 7


El siguiente paso, luego de la instalación de apache, será instalar y configurar php.

Basado en normas de FreeBSD

 

1) Procedemos a instalar php desde los ports:

#cd /usr/ports/lang/php5/ && make install clean

#cd /usr/ports/lang/php5-extensions/ && make install clean

2) Una vez terminada la instalación, verificamos que ‘index.php’ esté incluido en el DirectoryIndex de httpd.conf, si no está lo agregamos:

#edit /usr/local/etc/apache22/httpd.conf

DirectoryIndex index.php index.html index.htm

3) Ahora estableceremos el vínculo entre apache y php, para ello agregar al final de httpd.conf (ya lo tienen abierto) las siguientes lineas:

ScriptAlias /php-cgi “/usr/local/bin/php-cgi”
AddHandler php-handler .php
Action php-handler /php-cgi
<Location “/php-cgi”>
Options None
Order allow,deny
Allow from all
</Location>
*Salimos de edit:
Control + c
command: exit
4) Probamos si todo está OK, para ello crear un fichero index.php
#cd /usr/local/www/apache22/data/
#mkdir indextest && cd indextest
#edit index.php
<?php
echo “Hola Mundo”;
?> 

Control + c
command:exit

5) Ingresar en un el navegador web: http://localhost/indextest/
Si nos muestra solo Hola Mundo, significa que todo marcha bien.
*Si por alguna razón apache está deshabilitado y por lo tant no hay acceso al http://localhost/, iniciar apache con:
#apachectl start
.
Ir a: Montar un Servidor Web en PC-BSD 7

Programación visual con Gambas


Entorno de programación visual en Linux.

El manual de Gambas está editado bajo licencia Creative Commons de uso no comercial y ha sido realizado por Daniel Campos, uno de los más activos desarrolladores de componentes para Gambas, y por José Luis Redrejo, creador de gnu/LinEx.

Descargar:

Fuente: leprosys

Instalación de Try Ruby


Ruby es un lenguaje de programación que tiene como atributos principales la simplitud y elegancia.  Su creador combinó algunos lenguajes de programación como: Perl, Smalltalk, Eiffel, Ada, y Lisp, para posteriormente dar vida a ruby.

Para los tios que quieren empezar a involucrarse en la programación con ruby, les presento a  tryruby , el lugar apropiado si quieren probar algunas de su sintaxis, algo así como “pruébame y si te gusta me llevas”… estoy seguro que les gustará.

También pueden instalarlo en su debian o derivados con:

# sudo aptitude install ruby irb rdoc

Aprender a programar en C con: c-jump


Este juego ayuda a desarrollar la comprensión completa de un programa de ordenador, formado por las sentencias lógicas de un lenguaje de programación. Además, elimina la intimidación de muchos a la inclusión con la programación.

Es un buen método para agilizar la mente de vez en cuando… :) quienes ya lo han jugado, podrian dejar sus puntos de vista…

más es: c-jump

Como Programar con C / C++


WEBeando por IVLabs me topé con una valiosa obra, el cual enseña los principios de la programación estructurada en C haciendo uso de los parámetros de la Ingeniería de Software. También contiene valiosos consejos para hacer una buena práctica del lenguaje de programación, variada documentación y completa explicación. Además una colección de ejercicios de C++ junto a una fundamentación de las bibliotecas de C.

1. Conceptos de computación.
2. Introducción a la programación en C.
3. Desarrollo de programas estructurados.
4. Control del programa.
5. Funciones.
6. Arreglos.
7. Punteros.
8. Caracteres y cadenas.
9. Entrada/ salida con formato.
10. Estructuras, uniones, manipulaciones de bits y enumeraciones.
11. Procesamiento de archivos.
12. Estructuras de datos.
13. El preprocesador.
14. Temas avanzados.
15. C++ como un “mejor C”.
16. Clases y abstracción de datos.
17. Clases: parte II.
18. Homonimia de operadores.
19. Herencia.
20. Funciones virtuales y polimorfismo.
21. Entrada/salida de flujo C++.

Descargar:

http://rapidshare.com/files/100486491/Como.Programa.en.C.C.Plus.Plus.-.Deitel.Ed.PRENTICE.HALL.rar

Eclipse – IDE de Desarrollo Multilenguaje


“Un IDE para todo y para nada en particular”

Una potente IDE sobre el que se pueden montar herramientas de desarrollo para cualquier lenguaje de programación, mediante la implementación de los plugins necesarios.

Una de las Características más importantes es que permite integrar diversos lenguajes sobre un mismo IDE. Se puede implementar con herramientas que sean indispensables para algún tipo de aplicación en particular como: herramientas UML, editores visuales de interfaces, ayuda en línea para librerías, etc.

http://www.eclipse.org/

Descargalo:

Eclipse Classic 3.3.2 – Windows (141 MB)

Eclipse Linux tar.gz (79 MB)

Eclipse PC-BSD pbi (166 MB)

Genera interfaces GTK con Glade


Glade es un creador de interfaces gráficas que usa GTK+ y GNOME. Guarda los proyectos en XML y puede generar código C para este meta-formato. Adicionalmente. el meta-formato puede ser convertido a otros lenguajes gracias a módulos. Por ejemplo glade– puede generar código C++.

Indispensable para desarrolladores de aplicaciones GTK….

Instalacion de NetBeans en Slackware


Ya tenia instalado el netbeans en debian, open solaris y pc-bsd, ahora encontre una guia sencilla para la instalacion sobre slackware.

desde circolinux.blogspot.com

Te voy a explicar cómo instalar NetBeans en Slackware. ¿ No sabés lo que es NetBeans ?, se trata de un IDE. Así que si no lo conocés, mirálo.

La instalación es simple, pero en Slackware hay que dar un paso más y es instalar el Java SDK, que creo que Slackware no lo instala por defecto, y solo te instala jre ( de ahí la confusión que me generó a mi y a otra gente según ví ).

Necesitás el Java SDK, además de JRE. Entrá acá y bajate la versión más nueva que es Java SDK 6 update 3, que es la primera.

Lo bajás y lo instalás – si querés en tu usuario – o bien globalmente :

$ chmod +x jdk-6u3-linux-i586.bin
$ ./jdk-6u3-linux-i586.bin

Si lo querés globalmente, copialo a /usr/lib o donde tengas ganas.

Luego bajás netbeans de acá. Y la instalación es similar :

$ chmod +x netbeans-5_5_1-linux.bin
$ ./netbeans-5_5_1-linux.bin

Ahora tenés que pasearte por algunas preguntas, y le das para adelante hasta que llegués a la parte que te pide Java SDK, ahí elegís el directorio en donde lo instalaste. Si lo instalás como root lo va a encontrar solo si está en algun path que el sistema maneje.

Luego elegís donde instalarlo y le das para adelante a todas las preguntas y lo tenés instalado. La instalación ocupa unos 200 y pico Mb.

Disfrutá de NetBeans!


REAL Studio, convierte tus proyectos vbasic para linux


Creo que ya se donde irán a parar todos aquellos programillas que he escrito en basic desde tiempos del colegio hasta comienzos de la universidad, se que fue una pérdida de tiempo haber programado en basic, pero fueron épocas cruciales donde uno no decide lo que quiere o no…, de todas forma, si todavia te exigen ese tipo de cosas tienes una buena alternativa, REALbasic, un proyecto sobre linux, que es capaz de convertir casi todos los programas que creaste en basic para que corran trankilamente sobre linux, por lo tanto creo que todos esas cosas que hisiste en guindos lo puedes convertir para linux, por lo menos le darás un buen destino a las cosas que te hicieron perder algo de tiempo…

 

REALbasic es un ambiente de desarrollo de aplicación rápida que capacita los desarrolladores a crear software nativa de alta calidad para Windows, Mac y Linux.

REALbasic incluye:

  • un ambiente integrado diseñado para productividad de desarrolladores
  • un lenguaje moderno de programación orientado a objetos
  • un armazón para objetos de plataforma múltiple
  • un compilador múltiple que produce ejecutables nativos

REALbasic se usa para crear todos tipos de aplicaciones, incluyendo clientes de base de datos, software comercial, soluciones de encargo para comercios, productos educativos y más. De hecho, REALbasic mismo está escrito en REALbasic.

REAL Software envía actualizaciones a REALbasic cada 90 días. Ninguna otra compañía de herramientas de software actualiza a este rítmo.

Cada nueva licencia de REALbasic license incluye todas las actualizaciones para seis meses. Cuando su plan de actualizaciones de REALbasic termina, puede o comprar un plan de renovación de un año o continuar a usar cualquier lanzamiento que se envió durante su plan de actualizaciones.

Más en: http://www.realbasic.com/products/realbasic/index.php

Para descargarlo: http://www.realbasic.com/download/

Escribir en C++ con Kdevelop en PC-BSD


Este es un ejemplo de otra de las muchas funcionalidades que nos brinda Kdevelop, escribir códigos en C++, seguramente alguna vez haz escrito en un editor sencillo como gedit, kedit, etc, Kdevelop fusiona todas esas particularidades para hacer sencillo el manejo y escritura y reconocimiento de los codigos muy bien estructurados, puedes usar el terminal desde la parte inferior para lanzar las ordenes al complilador, para este ejemplo he usado g++, que trae incluido PC-BSD, bueno, también puedes optar por gcc, muy semejante al g++ por la descendencia que mantienen.

1 inico

codigo_abajo

codigo_arriba

4 libreria

5 g++

6 dar permisos

7. ejec

8 fin

A %d blogueros les gusta esto: