Dec 16, 2011

Carnival LiveCam y los mockups

Como ya lo anuncié en ZonaQt y la Qt Derveloper Network, estoy trabajando en Carnival LiveCam, mi nuevo proyecto.
Ahora me gustaría contarles un poco el detrás de escena de Carnival LiveCam, en este caso todo lo relacionado a cuestiones de diseño, interfaz, estética, ergonomía, y funcionalidad.
Yo normalmente a medida que se me ocurren nuevas ideas para implementar, dependiendo de que tan compleja sea la idea, suelo realizar sketches muy simples que suelo diseñar y rediseñar cada vez para luego llevar eso a código, las herramientas que suelo usar para realizar esos sketches son simplemente una tableta gráfica de las más económicas y un simple programa de dibujo, la mayor parte del diseño surgió de esta combinación tan sencilla.
Este post no va a ser practico, sino mas bien netamente teórico, para que puedan apreciar un poco las ideas y los patrones de diseño que suelo utilizar mas comúnmente en mis programas mas complejos.

Oct 12, 2011

[Tip] Gradientes en cualquier dirección con QML


Para todos aquellos que estén desarrollando programas en QML habrán notado que si aplicamos un gradiente a un rectangulo, este gradiente solo es posible aplicarlo de forma vertical, tal que así:


Pero, ¿Que pasaría si quisiéramos aplicar un gradiente en cualquier angulo posible?, por ejemplo aplicar gradientes en un angulo de 30°.
Pues eso es lo que vamos a ver hoy.

Sep 30, 2011

Configurando Yapan en Archlinux


Actualizar el sistema es una de las tareas que hace casi a diario cualquier usuario normal de Arch, o al menos en mí caso, el problema es que es una tarea repetitiva y molesta tener que escribir yaourt -Syu --aur --noconfirm luego escribir contraseña, y ya estoy un poco cansado de eso, así que opte por utilizar un sistema un poco más Point&Click, algo con lo que no tenga que escribir comandos ni contraseñas ni nada.
Por ello, hurgando en la wiki de Arch me encuentro con los Notificadores de actualizaciones, uno en concreto que me llamó la atención fue Yapan, el cual es prácticamente el único notificador para Arch escrito en Qt, y uno que es super fan de KDE + Qt no me pude resistir ;)
Así que vamos a ver como poner a punto este magnífico notificador.

Aug 28, 2011

Webcamoid, Muestra y toma fotos con tu webcam (Mini Proyecto)


Después de leer una entrada en Blue Leaf Linux sobre como crear plasmoides, me animé a crear mi propio plasmoide.
Quería crear un plasmoide simple que permita mostrar la webcam y tomar fotos, y por supuesto que permita utilizar cualquiera de las webcams conectadas a la computadora, así que apenas un día me tomo readaptar el ejemplo de la webcam en Python, y voilá, los amantes de KDE ya tenemos un nuevo plasmoide ;)

Jul 16, 2011

FFmpeg + QtMultimedia + Pipes

Resulta que una semana mas o menos después de realizar el tutorial Grabando Audio desde el micrófono con FFmpeg + QtMultimedia, tocaron actualizaciones en ArchLinux, y entre una de esas actualizaciones se encontraba FFmpeg, y como era de esperarse, la API de FFmpeg no es en lo absoluto estable, siempre está en constante cambio, y con cada nueva versión de FFmpeg siempre hay que hacer nuevas correcciones a nuestro programa si usamos su API, lo que se vuelve un dolor de cabeza terrible mantener un programa basado en su API.
Esto yo ya lo sabía de antemano, pues he investigado mucho este tema, incluso en la misma web de FFmpeg recomiendan que se incluya el código fuente del snapshot que se basará el programa para funcionar, esto es para evitar justamente estos problemas. Y yo por cabeza-dura pasé por alto ésta advertencia :(
Pero justamente por ser tan cabeza-dura, y porque realmente lo necesito para un programa que estoy desarrollando ;) , fue que logre encontrar una muy buena alternativa a este problema, y lo comparto con ustedes :)

Jul 15, 2011

Introducción Practica a Qt en Python

Para todos los interesados en aprender a programar en Qt usando el lenguaje Python, he preparado un pequeño tutorial introductorio práctico acerca de este tema.

Jun 17, 2011

Grabando Audio desde el microfono con FFmpeg + QtMultimedia


En este nuevo tutorial vamos a ver una de las cartas más difíciles de encontrar en Internet, vamos a mostrar como combinar FFmpeg, el framework de transcoding más avanzado del mundo, con Qt, el framework de interfaces gráficas mas avanzado del mundo, con el fin de grabar audio del micrófono a cualquier formato de archivo multimedia, en este caso usaremos el formato Ogg, el cual es un formato contenedor multimedia (audio, video y subtitulos), de uso e implementación libre, libre de regalías, y libre de DRM.
Y antes de empezar haremos una pequeña introducción al sonido digital.

Jun 14, 2011

Desactualizando al kenel 2.6.37 en ArchLinux

A estas alturas seguramente más de uno estará enterado del tremendo consumo de batería que supone haberse actualizado al kernel 2.6.38 y superiores, y por el cual muchos usuarios de equipos portátiles nos hemos visto afectados, por suerte para los Archeros hay solución.

May 10, 2011

Graficando funciones mediante serie de potencias en PyQt



Este es un pequeño ejemplo de como crear un graficador de funciones mediante series de potencias usando PyQt, el usuario ingresa los puntos por los que debe pasar la función y el programa construye una función polinómica que pasa por dichos puntos y luego la traza, muestra su formula, y a su vez permite calcular diferentes valores dentro del intervalo de los puntos ingresados. Elementos más destacables de este ejemplo:
  • Se muestra un pequeño ejemplo de como resolver un sistema de ecuaciones lineales con N incógnitas (N puntos) usando numpy.
  • Interfaz completamente diseñada en QtDesigner y se muestra como cargar la interfaz y asociarla a una clase de Python y conectar automáticamente todas sus señales y slots.
  • Se muestra como obtener datos de una QTableWidget.
  • Se muestra como agregar gráficos simples usando QGraphicsScene y QGraphicsView.

Apr 29, 2011

Clonando particiones con PerfectClone

Ir a la pagina del proyecto (SourceForge.net)

Este es un mini proyecto de fin de semana que tenia hace un tiempo.
Es un pequeño script en Bash con interfaz ncurses para clonar y restaurar particiones desde un LiveCD/USB (de GNU/Linux o BSD por ejemplo).
Quería hacer algo muy simple, al estilo del Norton Ghost.
Algunas de sus características más importantes son:
  • Es Software Libre (GPLv3).
  • Completamente escrito en Bash (A más personas les resultará fácil modificarlo y adaptarlo).
  • Muy fácil de usar, intuitiva y amigable gracias al uso de dialog.
  • Muy bajo consumo de recursos.
  • No requiere que el servidor gráfico esté activo (Corre completamente desde terminal).

Apr 13, 2011

Qt + OpenSceneGraph + OffScreen Rendering


Hoy vamos a ver como integrar OpenSceneGraph (a partir de ahora, OSG) con nuestra aplicación en Qt, pero no vamos a renderizar los frames directamente en pantalla, sino que utilizaremos una técnica llamada OffScreen Rendering. Esto es, renderizar la imagen directamente en un buffer o textura y luego transferir esta imagen resultante a otro lugar o mostrarla en pantalla.

Jan 20, 2011

Macbar en QML y Python


Aquí traigo un sencillo ejemplo de como hacer la dock de Mac OS X en QML y PyQt.
Si quieren editar visualmente el archivo QML pueden descargar QtCreator 2.1.0 RC. El programa es un buen ejemplo de como enviar señales desde QML hasta nuestro código en Python, y como modificar los elementos en QML desde Python, además de como crear un bonito efecto animado :)
Aclaro que no pretendo crear algo demasiado complejo, sino mostrarles a ustedes como realizar esas técnicas básicas, ustedes pueden luego aplicar estos conocimientos a algo mucho mas complejo.

Jan 18, 2011

Escribiendo en Japones en ArchLinux y KDE

En este tutorial vamos a ver como habilitar la escritura en japones en Archlinux, tanto en aplicaciones Qt como GTK.
Aclaro antes que nada que este tutorial es pura y exclusivamente para KDE, ya que aplicaremos algunas optimizaciones especiales para una mejor integración con el escritorio, como diálogos de configuración en Qt y un plasmoide que nos indica el sistema de escritura que estamos utilizando.
No me pregunten como sería para otros entornos porque no tengo NPI :/