Imaginemos un mundo libre

La paz interior comienza en el momento en el que decides no permitir, que ninguna persona o evento, tome el control de tus emociones.

Archive for January 2010

QGraphicsView

with one comment

Una introducción a QGraphicsView, ampliamente usado en aplicaciones Qt.

QGraphicsView es el framework dentro de Qt que permite la creación e interacción de elementos gráficos 2D y que usa el método de programación modelo/vista.

De manera simple, varias vistas pueden observar una misma escena y una escena puede contener elementos (items) de diferentes formas geométricas.

El framework está compuesto de 3 elementos:

QGraphicsScene (La Escena):

        Representa una escena con items. Es la clase que se encarga de almacenar los widgets, así como manejar propagar eventos a cada item.

Además esta clase se encarga de manejar los estados de un item. Un objeto QGraphicsScene es muy flexible como para incluir cualquier número de objetos QGraphicsItem.

QGraphicsView (La Vista):

        La clase que se encarga de proporcionar los widgets que visualizan el contenido de una escena.

La vista recibe eventos de entrada del teclado/mouse, y los traslada a la escena.

QGraphicsItem (El Item):

        Representa un grupo de items. Es una clase para el manejo de items gráficos en la escena y proporciona varios items estándar para formas típicas como rectángulos, elipses y textos. También soporta eventos del mouse como mover, soltar, presionar, doble click, sobre y eventos del teclado.

QGraphicsItem, además soporta dos características importantes en elementos gráficos: Drag and Drop (Soltar y arrastrar) y collision detection.

Cada objeto QGraphicsItem en la escena soporta rotación, zooming, traslado y el poder cortarlo.

Hagamos un ejemplo sencillo de como crear un escena, un item y como visualizarlos:


// Incluimos las clases de la escena, vista y el tipo de item
#include <QtGui/QApplication>
#include <QGraphicsRectItem>
#include <QGraphicsScene>
#include <QGraphicsView>

int main( int argc, char **argv )
{
   QApplication app(argc, argv);

   // Iniciamos la escena y definimos su tamaño
   QGraphicsScene scene;
   scene.setSceneRect(-100, -100, 200, 200);
   // Color y estilo
   scene.setForegroundBrush(QBrush(Qt::lightGray, Qt::CrossPattern));

   // Creamos y agregamos nuestro item (rectángulo) a la escena
   QGraphicsRectItem *item = new QGraphicsRectItem( 0, &scene );
   // izquierda, arriba, ancho y alto
   item->setRect(-60, -30, 140, 60);
   // Línea: Ancho y estilo
   item->setPen(QPen(Qt::blue,4,Qt::SolidLine));
   // Relleno: Color y estilo.
   item->setBrush(QBrush(Qt::green,Qt::SolidPattern));

   // Creamos una vista para visualizar la escena
   QGraphicsView view( &scene );
   view.setRenderHints( QPainter::Antialiasing );
   view.show();

   return app.exec();
}

Y el resultado:

QGraphicsRectItem

Gracias por tu visita al blog.  Puedes seguirme en Twitter haciendo click en el siguiente enlace:

Advertisements

Written by Ronny Yabar

January 12, 2010 at 10:34 am

Posted in Qt

Tagged with , ,

Como ser desarrollador de KDE

with 3 comments

Bueno ya que hace poco empecé a involucrarme en el desarrollo de KDE y ya me está yendo bien, quisiera compartir con los programadores latinos, gente de Perú e interesados en general, cómo es el proceso para convertirse en desarrollador de KDE.

Es importante aclarar que estoy en camino de ser desarrollador de KDE, simplemente deseo trasmitir mi experiencia y lo aprendido hasta el momento. Cualquier mejora o aporte a esta guía es bienvenido.

Hay distintos caminos para llegar a este objetivo, y es más, hay gente que ha escrito al respecto como:

The Road to KDE Devland (6 series)
The Road to KDE and Qt Development

y de la web oficial:

Becoming a KDE Developer

Hay muchas cosas en común en esos caminos y básicamente la idea es la misma.

He tratado de ser lo más breve posible y decidido escribir mi pequeña guía “Como ser desarrollador de KDE” en español, pues se que, como yo alguna vez, hay muchos hispano hablantes que desean contribuir a KDE y no tienen alguna idea de cómo empezar. Espero profundizar y continuar esta guía más adelante.

Ojo, hay muchas maneras de contribuir a kDE como arte, documentación, traducción, promoción, reportando fallos, etc. Ahora me voy a enfocar sólo en el desarrollo, ahí vamos:


Cómo ser desarrollador de KDE

Contribuir con el desarrollo de KDE, es uno de los aportes principales a la comunidad y al proyecto. Es una experiencia enriquecedora que te va a permitir compartir, extender tus conocimientos y aprender a trabajar en equipo.

Si eres un estudiante o profesional de la computación, te gusta la programación y el desarrollo de software, deseas participar en proyectos reales y pertenecer a una comunidad internacional de desarrolladores y gente creativa, si es así, entonces estás en el sitio correcto.

Para ser un desarrollador de KDE necesitas aprender lo siguiente:

Está demás decir que debes de tener un nivel aceptable de Inglés, pues la comunicación se realiza en este idioma.

C++

C++ es un potente lenguaje de programación orientado a objetos, diseñado para muchos propósitos, muy usado en la computación gráfica y desarrollo de juegos.

KDE está mayormente escrito en C++. Entonces si no sabes C++, tienes que aprenderlo. Hay muchos libros y excelentes recursos en internet sobre C++. Un gran libro es “Pensando en C++” de Bruce Eckel que también está disponible como libre descarga en castellano. Es imprescindible que aprendas todos los fundamentos de C++ antes que empieces con KDE.

Qt

Para ser un desarrollador de KDE, debes aprender Qt. Qt es una biblioteca multiplataforma escrita en C++ para desarrollar aplicaciones gráficas y también para desarrollar programas sin interfaz gráfica como herramientas de consola y servidores.

Si no estás familiarizado con Qt, puedes ver la documentación oficial de Qt y desarrollar los tutoriales incluidos ahí.

Si prefieres aprender Qt mediante la lectura de un libro tradicional, mira la página de libros acerca de Qt. Algo importantísimo es que aprendas el concepto y la aplicación de Signals and Slots, es fundamental en todas las aplicaciones construidas con Qt.. Básicamente, es un mecanismo de comunicación entre objetos.

KDE

Un punto de partida para empezar a desarrollar en KDE son los tutoriales del sitio oficial. Lo primero que debes revisar es la sección Introducción a la programación en KDE4.. Empiezas con un Hola Mundo, luego a crear ventanas, después añadir acciones, barras, menús y así vas desarrollando paso a paso.

También encontrarás información útil sobre el desarrollo de KDE en la sección de Preguntas Frecuentes.

Otro recurso valioso para desarrollar es la API (Interfaz de programación de aplicaciones) de KDE. Allí encontrarás excelente documentación de clases, métodos y funciones de las librerías y aplicaciones de KDE.

Después que tengas una base de conocimientos en C++, QT y KDE, entonces ya puedes empezar a desarrollar para KDE, pero antes necesitas aprender lo siguiente:

Una vez que hayas compilado la última versión en desarrollo, configurado tu ambiente de desarrollo y realizado tus primeros tutoriales de programación en KDE, quiere decir que ya estás preparado para dar los primeros pasos.

Tienes que tener paciencia, automotivarte y sentir pasión por lo que haces. La comunidad KDE es sensacional y el software que produce es de alta calidad. No todo cae de la noche a la mañana, entonces con trabajo constante, poco a poco verás los frutos de tu esfuerzo.

Bueno, entonces llegó la hora que empieces a escribir código para algún proyecto dentro de KDE. Claro que puedes desarrollar tu propia aplicación, pero se recomienda que antes intentes involucrarte con uno ya existente para que entiendas mejor como funcionan las cosas internamente, aprendas del código de otros, veas como es la organización y el trabajo en equipo.

Puedes ver todo el código de KDE directamente desde el navegador en WebSVN para que explores las aplicaciones y/o librerías que forman parte de KDE.

Puedes descargarte el código de una aplicación/librería con el usuario anónimo de subversion. Obviamente haz tenido que instalar antes subversion. Por ejemplo, con el siguiente comando me descargo kdelibs, que son las librerías básicas de KDE.

svn co svn://anonsvn.kde.org/home/kde/trunk/KDE/kdelibs

Una breve explicación de los directorios y subdirectorios principales:

Branches: Es donde están las distintas versiones de KDE, incluyendo lo que será la próxima revisión de la versión actual de KDE.

Trunk: Es donde se lleva a cabo el desarrollo de la rama principal de KDE, es decir, lo que será la próxima versión de KDE.

-KDE
——kdelibs: Librerías críticas de KDE.
——kdebase: Dividido en 3 partes.
———apps: Aplicaciones que forman parte de la distribución principal de KDE como Dolphin, Kate, Konqueror.
———runtime: Cosas necesarias para todas las aplicaciones KDE en tiempo de ejecución y una dependencia requerida.
———workspace: Cosas específicas de KDE, como Plasma o el gestor de ventanas.

——kdeartwork: Trabajo artístico, diseño gráfico, íconos, sonidos, temas, fondos de pantalla.
——kdeedu: Aplicaciones educativas.
——kdegames: Juegos.
——kdegraphics: Aplicaciones gráficas.
——kdemultimedia: Reproductores de audio y video.
——kdepim: Aplicaciones de manejo de información personal.
——kdepimlibs: Librerías usadas por las aplicaciones kdepim
——kdeplasma-addons: Aplicaciones, tecnologías de Plasma como applets, dataengines, runners.
——kdeutils: Utilitarios para KDE.
——kdewebdev: Aplicaciones para desarrollo web.

-extragear: Aplicaciones que usan las librerías y estásn relacionadas con KDE, pero no forman parte de la distribución principal de KDE.

-koffice: Suite Ofimática de KDE. Tienen sus propias fechas de liberaciones.

-playground: Aplicaciones en estado alpha. Pueden compilar, pero carecen de estabilidad, robustez, internacionalización, usabilidad, arte, en fin, no están maduras para el usuario final.

-kdereview: Cuando una aplicación de playground alcanza cierta madurez y estabilidad, se mueve a kdereview para darle los toques finales y sea revisada profundamente por los desarrolladores para que alcanze un nivel óptimo. Después de kdereview pasan a formar parte de la rama principal de KDE.

-kdesupport: Librerías/software necesario para compilar KDE.

-l10n-kde4: Archivos de traducción de KDE a muchos idiomas.

-www: Aquí se encuentran los archivos, imágenes que pertenecen a las páginas web de KDE.

Elige una aplicación de tu agrado que te gustaría hacerle algún cambio, agregarle una nueva funcionalidad.

Normalmente los desarrolladores dentro del directorio de su proyecto tienen un archivo llamado TODO, donde está la lista de tareas por hacer, un README con la descripción de la aplicación y un archivo HACKING que explica los lineamientos para desarrollar en ese proyecto.

Aparte de agregar una característica a una aplicación, también puedes corregir un fallo. Los fallos se reportan en el Sistema de búsqueda de fallos de KDE, llamado bugs.kde.org.

Desde bugs.kde.org puedes filtrar los fallos existentes en la aplicación que escogiste y ver cuales aún no están resueltos. Escoge uno y trata de resolverlo.

Otra opción para empezar con el desarrollo en KDE, es realizar algún Junior Job, (Tarea o trabajo pequeño). Los Juniors Job son trabajos muy sencillos que necesitan realizarse en las aplicaciones. Normalmente los desarrolladores suben Juniors Jobs a bugs.kde.org para obtener nuevas contribuciones e involucrar a la gente recién iniciada en el desarrollo de KDE. Puedes ver la lista de Junios Jobs aquí.

Sea que haz corregido un fallo, haz agregado una nueva característica, funcionalidad o haz hecho un Junior Job, debes de enviarles tus cambios al desarrollador(es). O mejor dicho, tienes que enviar tus parches.

Un parche consta de cambios que se aplican a un programa, para corregir errores, agregarle funcionalidad, actualizarlo, etc.

La mayoría de proyectos en KDE usan un sistema web llamado Review Board que permite manejar los parches de manera mucho más eficiente. Te registras y envias tu(s) parche(s) a la aplicación que escogiste.

En caso, la aplicación que estás modificando no use Review Board, tienes que enviar tus parches por email al desarrollador o a la lista de correo del proyecto. Debes de enviar tus archivos en un formato que el desarrollador vea los cambios que haz realizado de manera rápida. Para ello existen dos comandos Unix/Linux que te van a ser muy útiles: diff y patch.

Un ejemplo sencillo, imagina que tienes 2 archivos (original.cpp y nuevo.cpp), deseas ver la diferencia entre ambos y generar otro archivo. El comando sería:

diff -u original.cpp nuevo.cpp > miparche.patch

Enviándole el archivo miparche.patch al desarrollador le haces la vida más facil porque puede ver y aplicar tus cambios rápidamente. No importa el tamaño de tu parche, así solucione algo pequeño, pero útil será bienvenido, de lo contrario será rechazado por diversas razones. Entre ellas que quizá no sigues los estándares del código de la aplicación, no resuelves el problema o te faltan pequeños detalles que corregir. Si hay algún problema con tu parche, el desarrollador te lo hará saber y te dirá que le falta para que sea aplicable.

No tengas miedo, los desarrolladores de KDE, son seres humanos y muy buenas personas que muestran mucho respeto por el trabajo de otros y están dispuestos a ayudarte a resolver problemas o guiarte con la solución.

Pero, sea cual sea la respuesta del desarrollador, igualmente muestra respeto y sigue investigando cómo puedes mejorar.
Hay maneras y maneras de decir las cosas. Por eso, es importantísimo que sigas el Código de Conducta de la comunidad KDE.

Bien ya enviaste tus cambios, fueron aceptados, ya te sientes parte de la comunidad y crees que haz cambiado el mundo.

Ahora tienes que solicitar una cuenta subversion en KDE (KDE SVN account). Subversion es el sistema de control de versiones con el cúal trabaja actualmente KDE, posteriormente se cambiará a Git.

Cualquiera que ya haya hecho algún trabajo en KDE puede aplicar a una cuenta svn. Con una cuenta svn podrás aplicar los cambios tú mismo al proyecto, en vez de estar enviando parches y quitarle tiempo a los desarrolladores.

Lee esta guía de como solicitar una cuenta svn. Si tu solicitud fue aceptada, entonces lo siguientes es leer Los primeros pasos con tu cuenta KDE svn.

Una vez que tengas tu cuenta svn y haz leído lo primero que debes de hacer con ella, bien ya puedes trabajar directamente en el proyecto con subversion.

Para descargarte el código de un proyecto y tener una copia local del mismo (checkout), ssh es lo más óptimo:

svn co svn+ssh://tuusuario@svn.kde.org/home/kde/ruta/a/la/aplicacion

En mi caso cuando descargué el juego que empecé a modificar:

svn co svn+ssh://ronnyy@svn.kde.org/home/kde/trunk/playground/games/pege/

Ahora, ingresa al directorio del proyecto que te bajaste:
cd proyecto_kde

Para ver el estado del proyecto, los archivos que han sido agregados, modificados, eliminados:

svn status

Realiza tus cambios y haz tu primer commit:

svn ci -m “My new feature / Fixed bug description.”

Para ver todos los cambios que hiciste dentro de un directorio y generar un archivo .diff

svn diff –diff-cmd diff -x -uw > ~/patch.diff

Para estar al día y actualizado con los últimos cambios que se hicieron al código.

svn up

Son algunos comandos básicos de subversion, puedes encontrar muchos tutoriales y how-tos en la web donde encontrarás mucha más información.

Finalmente, si haces commits a menudo, participas activamente y das un aporte significativo a algún proyecto, la comunidad te tratará como un desarrollador de KDE, si eso pasa, ya podrás llamarte desarrollador de KDE.

Como ves, ser desarrollador de KDE es un proceso que toma su tiempo. Seguramente en el camino encontrarás obstáculos y te estancarás en alguna parte, pero depende de ti poder superar esas barreras.

Contribuir a KDE te va a dar un prestigio y elevar tu karma en la comunidad Open Source/Software Libre. A la larga, todo esto te dará muchos beneficios sociales, técnicos y probablemente puede cambiar tu vida.

Diviértete, comunica, comparte, aprende, enseña y todo se hará más fácil.

Sitio principal para desarrolladores de KDE
http://techbase.kde.org/Development_(es)

Lista de correo
Si estás interesado en el desarrollo de KDE, estás creando tu propia aplicación y quieres hablar con alguien que hace o está interesado en el desarrollo de KDE en general.

Visita: https://mail.kde.org/mailman/listinfo/kde-devel y subscríbete a la lista.

Canal IRC
#kde-devel en irc.freenode.net

Otros lenguajes de programación

Si te gustaría desarrollar para KDE en otros lenguajes de programación, también tienes otras alternativas.

KDE Y Qt disponen de una serie de bindings y tecnologías para diversos lenguajes de programación, entre los principales tenemos a Python, Ruby y Javascript:

Python

Ruby

Javascript

Written by Ronny Yabar

January 12, 2010 at 10:34 am

Posted in KDE, Open Source

KDE se cambia a Git

leave a comment »

Como muchos otros proyectos Open Source, (Kernel Linux, Perl, Ruby on Rails, Wine, X.org, Android, VLC, FreeBSD, OpenSuse…) KDE ha iniciado el cambio de sistema de control de versiones de Subversion a Git.

En subversion, que es un sistema centralizado, todos los desarrolladores de determinado proyecto deben de conectarse a un servidor central y los cambios que se realizan afectan a todos. Otro de las desventajas de un sistema centralizado es que muchos contribuyentes o personas que desean contribuir tienen muchas limitaciones de escritura debido a las políticas de acceso. Pero claro Subversion se ajusta a algunos tipos de proyectos y también tiene sus ventajas.

Por el contrario, Git es un sistema de control de versiones distribuido, es decir, que no depende de un repositorio central. Git permite administrar varios tipos de proyectos, especialmente de gran envergadura, de manera rápida y eficiente.

Una de las ventajas de Git, es que abre las puertas a más contribuyentes. Tú puedes tener tu propia rama dentro del proyecto, experimentar, realizar cambios sin afectar a los demás y cuando pienses que tu código es estable y funcional puedes fusionar tus cambios con otra rama.

Git tiene otras características cool, entre ellas, que puedes realizar ciertas cosas estando desconectado de la red.

Probablemente este va a ser un cambio impactante en la comunidad, debido al tamaño de KDE y el número de aplicaciones/desarrolladores/contribuyentes. Pero ya existen proyectos de KDE que han migrado exitósamente a Git como Amarok, Phonon, Konversation y Gluon.

Todo el código de las librerías y aplicaciones de KDE, van a ser movidos a Gitorious, excepto los archivos de traducción y documentación.

Gitorious es un servicio para alojar proyectos Open Source, donde también está alejado Qt y existe una buena relación/comunicación con desarrolladores de Qt en Nokia.

Aaron Seigo, KDE Hacker, explica , más a fondo, en su blog los motivos del cambio.

Si tienes conocimientos en git, esta una gran oportunidad para contribuir a KDE y unirte al KDE Git Team. Entra al canal #kde-git en Freenode.

¿Cómo aprender Git?
Hay mucha información, tutoriales y libros en la web. Yo te recomiendo Git Magic de Ben Lynn empleado de Google.

Gracias a esta guía, tengo una base en Git. Está todo muy bien explicado con palabras sencillas, directo al grano y con todo lo que necesias para empezar a usar Git.

Git en la web de KDE

http://techbase.kde.org/Projects/MovetoGit

http://techbase.kde.org/Development/Tutorials/Git

Written by Ronny Yabar

January 12, 2010 at 10:32 am

Posted in KDE

KDE Latinoamérica

leave a comment »

No tuve mucho tiempo de postear estas últimas semanas, pero más vale tarde que nunca.

El día 10 de noviembre de 2009 tuve la suerte de asistir a la reunión de comunidades de KDE en latinoamérica, canal #kde-cl en freenode, gracias a la invitación de Christian González de la comunidad KDE Chile. Christian ha escrito una carta dirigida a todas las comunidades de KDE en Lationamérica y España donde resume los puntos tratados en la reunión.

Transcribo la carta para que más personas puedan unirse a esta iniciativa:


Carta abierta a las comunidades de KDE de Latinoamérica y España

El día martes 10 de noviembre de 2009 se efectuó la segunda reunión por IRC [1] de la recientemente formada comunidad KDE Chile, en la cual participaron representantes de varias comunidades latinoamericanas. En dicha reunión se planteó la posibilidad de aunar esfuerzos en pos de construir una comunidad KDE Latinoamérica-España, potenciando así la difusión y el apoyo al proyecto KDE en nuestros países y evitando la duplicación de esfuerzos.

Después de una larga discusión, los representantes de las distintas comunidades establecieron los siguientes acuerdos:

  1. Cada comunidad individual seguirá teniendo plena autonomía para trabajar en sus proyectos locales, así como para administrar sus propios portales web. Se propone tener una plantilla genérica que pueda ser usada por las comunidades que así lo deseen.
  2. Se solicitará la creación de un subforo en idioma español dentro del foro oficial de KDE (disponible en http://forum.kde.org), en el cual puedan participar todos los miembros de las distintas comunidades respondiendo consultas técnicas de los usuarios de habla hispana. Se evaluará la posibilidad de tener una sección por cada país para temas como organización, política interna, actividades locales, etc.
  3. Se apoyarán los esfuerzos de documentación de KDE (especialmente las traducciones) en los wikis oficiales del proyecto: http://techbase.kde.org (para desarrolladores) y http://userbase.kde.org (para usuarios).
  4. Se creará un “Planeta KDE en español” que agrupe los blogs personales de los miembros de las distintas comunidades.
  5. Se decidió crear el canal IRC #kde-latam en el servidor Freenode (irc.freenode.org:6667) como un lugar de coordinación transversal para las distintas comunidades.
  6. Para lograr estos objetivos, se ha establecido contacto con Helio Chissini de Castro, contacto oficial de KDE para Latinoamérica. Estamos bastante confiados en que su intermediación será de mucho provecho para lograr los objetivos antes mencionados.

    Por todo lo anterior, queremos extender esta invitación a todas las comunidades de KDE en España y Latinoamérica. Si están interesados en participar de esta iniciativa, por favor publiquen esta carta en los medios de comunicación de su comunidad (portal web, lista de correo, etc.) y envíen un aviso a la lista de correos de KDE Chile (http://www.kde.cl/group), o comuníquense a través del canal IRC #kde-latam.

    Esperamos que más comunidades puedan unirse y podamos difundir y apoyar al proyecto KDE en nuestros países.


    Desde Perú, nos unimos a esta iniciativa de agrupar a las todas las comunidades de KDE en Lationamérica y España.

    Se ha creado hace poco la lista oficial kde-latam, así que se invita a usuarios y desarrolladores de KDE para que participen.

Written by Ronny Yabar

January 12, 2010 at 10:31 am

Posted in KDE