martes, 28 de diciembre de 2010

Reflexiones y cambios en mi vida

Con la llegada del fin de año he hecho las típicas reflexiones transcendentales llegando a unas conclusiones sobre lo que debo cambiar en mi vida.
Lo primero de todo es que, finalmente, creo que Linux no va a terminar de despegar nunca. Es una pena pero mi empecinamiento en usarlo como Sistema Operativo de todos los cacharros de mi casa no me lleva a ningún sitio.
Últimamente estoy un poco harto de dedicarle tiempo a Acid Rain. Me he dado cuenta de que no disfruto cuando lo programo, creo que ya no me gusta programar o tal vez lo que no me gusta es todo lo que rodea a programar con QT.
Por otro lado, me cuesta reconocer un punto de vista en el que he estado equivocado siempre: los derechos de autor son inalienables y no deberíamos ir descargando por ahí alegremente torrents de ningún tipo. Somos delincuentes; el emule y bitTorrent son armas del diablo. Deberían bloquear todas las comunicaciones P2P pues siempre son indicativas de un delito.
Como consecuencia de los primeros párrafos, voy a instalar Windows 7 en todos mis ordenadores, previo pago de las pertinentes licencias, claro, y a tirar a la basura mi Nokia N97 para comprarme un terminal con Windows Phone.

Voy a dedicar ese tiempo libre en el que me gusta programar al desarrollo de plugins de Internet Explorer en lenguaje .Net, que es una tecnología que te cagas de una gran empresa: Microsoft, para la que espero trabajar algún día y así poder conocer, con un poco de suerte, a Steve Ballmer o al mismísimo Gates, mis dos grandes ídolos en el ámbito de mi mundo profesional.

Además voy a recopilar todos los Cds y DVDs en los que tengo música y películas grabadas, menos mal que en el fondo no son muchos, y acudiré con ellos a la humilde central de la SGAE para que me hagan un desglose de lo que les tengo que pagar. Estoy preparando un artículo que publicaré en mi blog próximamente, el cual es una disculpa pública al rey del pollo frito y a tan emblemática institución defensora de los derechos de autor. Sabed que espero que se crujan en los tribunales a todos esos desalmados que hacen obras teatrales benéficas sin rendirles cuentas, así como a ese infame ayuntamiento, cuyo nombre no quiero recordar, de unos pocos habitantes que debe más de 3000 € por representaciones musicales. No me importa que sea más de su presupuesto anual: a la cárcel su alcalde y que conviertan esa población en una gran pira para ejemplificar con el castigo.

Esto es más personal, hace meses que no me siento atraído por ninguna mujer, simplemente no me fijo en ellas aunque espero que se me pase. De todos modos, creo que los fines de semana me voy a prohibir programar, pasaré noches de marcha en el Venial y dejaré el ciclismo de montaña para apuntarme a algún gimansio. Peregrinaré todos los años al menos una vez al barrio de Chueca en Madrid.

Alonso es un moñas y el Valencia CF un equipo de gallinas con sangre de horchata. Lewis Hamilton es lo mejor que le ha pasado a la Fórmula 1 en los últimos años y ardo en deseos de que mi nuevo equipo, el Real Madrid, monte una escudería con Lewis como piloto número 1 de unos bellos bólidos blancos. Reconocedlo Cristiano es un crack y Mourinho una gran persona.

En fin, espero que como mucho no os hayáis creído más allá del segundo párrafo. ¡Feliz día de los inocentes!

jueves, 16 de diciembre de 2010

Despidiéndome de Kfilebox

Hola a todos mis escasos lectores :p  La semana pasada no conté gran cosa sobre mis andanzas porque simplemente no hubo mucho que contar, no avancé nada con Acid Rain. ¡Ah! Sí, publiqué la primera versión de las distribución Linux que creo que sólo se ha bajado un pavo con el mismo nombre y apellidos que yo.

Por contra, como resulta que lo prometido es deuda, estuve dedicando un poco de tiempo de mis vacaciones de la semana pasada a cumplir con mi promesa preparando una ultima versión de Kfilebox.
No es gran cosa, unos cuantos iconos nuevos con la posibilidad de poder elegir los que prefieras, vamos un "copy - paste" de la misma característica que ya existía en Acid Rain.

viernes, 10 de diciembre de 2010

Tierra roja

Hoy, dos años después, he vuelto a llenarme del rojo barro de La Calderona. Ha sido un día de perros, la humedad de la niebla me empapaba poco a poco y se hacia más densa conforme ascendía hasta el punto de  que, a unos cuatro km de la cima de Rebalsadores, empezaron a caer gotas de agua del centro exacto de la visera de mi casco, mientras, por las mangas de mi chaqueta se deslizaba el agua hacia mis guantes convirtiéndolos en esponjas. El ambiente parecía el propio de la lluvia pero no caía nada.

Todo daba igual. No había nadie a la vista, sólo yo en medio de una pista de tierra rojiza por caminos que no recordaba siguiendo mi GPS. Niebla, niebla y cada vez más niebla. Nunca me había resultado tan inútil cargar con una cámara de fotos,no habría ocasión para utilizarla.

jueves, 2 de diciembre de 2010

Quemando CDs

Pues sí, como resulta que me he centrado un poco más en avanzar la distribución Linux resulta que de vez en cuando me toca quemar algún CD. Hago todas las pruebas que puedo con máquinas virtuales pero, cuando la cosa llega a un punto que me gusta, resulta que lo quemo para pasarlo a un viejo PC que uso como servidor de pruebas de Acid Rain Server.

Y eso me lleva a la razón de maldecir a la SGAE porque, aunque no estoy pirateando música ni nada por el estilo, resulta que en el ámbito legal de los derechos de autor (léase autor musical) todos somos culpables aunque demostremos lo contrario. No importa que grabe una distribución Linux, tengo que pagar el canon en cada prueba que hago. Para mitigar esto un poco compré CDs regrabables, con el triste resultado de que, a partir de la segunda utilización, el lector de mi servidor no los reconoce. No me ha quedado más remedio que volver a los tradicionales CDs por más que se me revuelvan las tripas. 

jueves, 25 de noviembre de 2010

Despacito y buena letra

Pese a que mi cabeza está prácticamente colapsada por el hecho de poder presenciar mañana a Front 242 en Spook Factory, intentaré concentrarme y contar como ha ido la semana respecto a la lluvia ácida.
El tema logístico que comentaba hace siete días que me había fastidiado la semana proviene de un hecho que ya imaginaba y que confirmé poco antes de escribir el post: las organizaciones que están proporcionando hosting Mercurial en la actualidad se dedican a albergar proyectos de código fuente y no están interesadas en los usuarios domésticos que almacenarían otros tipos de archivos.

Para el que no esté muy puesto, el almacenamiento de código fuente consistente en guardar ficheros de texto mientras que el segundo grupo de usuarios que comento almacenarían documentos de oficina, fotos y cualquier otro tipo de binarios. Esto supone un gran problema ya que conlleva una mayor cantidad de datos y además el mantenimiento del histórico de las versiones de archivos binarios no es óptimo.

Bueno pues todo esto que acabo de explicar se lo comenté por email a uno de esos sitios de hosting. Les preguntaba que les parecería contar con este tipo de usuarios y los problemas que yo veía. Al día siguiente me contestaron muy amablemente diciéndome que ellos se dedicaban a albergar código fuente, que el otro tema no era su negocio y me desearon suerte con el proyecto.

Reconozco que esa noticia, aunque esperada, me produjo un cierto bajón así que me tomé unos días de descanso aprovechando mi visita a unos amigos en Poblete. Vaya tela, menudo frío que hacía por allí, al menos mi Ford Fiesta aguantó los casi 700 km de ida y vuelta, porque yo no lo tenía muy claro. 

En fin, después de volver a Valencia y comprobar que existen temperaturas mayores a 10º C, la conclusión fue la de tomarse las cosas con tranquilidad y cambiar la estrategia. El cliente ya hace más o menos lo que debía hacer en su primera versión así que ahora tocará centrarse en lo que antes era secundario: la distribución Linux. El objetivo pasa a ser que la gente lo use de forma individual en un sólo PC o montándose un cacharro para sincronizarse sus ordenadores. Nada impedirá que la gente se abra cuentas en tal sitio de hosting o tal otro pero eso no será lo recomendado.
Recapitulando:
  • Sigo teniendo pendiente el wizzard de configuración.
  • Tampoco me he puesto con la traducción al español.
  • Me queda revisar algún error conocido en la aplicación.
  • Estoy intentando que la distribución Linux tenga configurado de salida un servidor web con SSL
Así que la idea de poder liberar algo antes de que se acabe el mes se tambalea bastante.


Por último os dejo un vídeo del invento en acción que hice este fin de semana, aunque no es nada nuevo:

martes, 16 de noviembre de 2010

De cal y de arena

"Guru meditation" era un mensaje de error que salía en los Commodore Amiga muy similar a la pantalla azul de la muerte en Windows, vamos que si te salía la habías cagado y no podías hacer nada. Pese a la frustración que producía hoy en día se puede encontrar de vez en cuando en los mensajes de error de un servidor web o alguna aplicación creada por algún antiguo "amiguero" nostalgico. Umm... esto me recuerda (y me estoy partiendo) mis andanzas con los servicios de atención al cliente de los proveedores de internet cuando surgieron las tarifas planas a mitades de los 90 y yo me conectaba con mi Amiga A1200, pero es otra historia... El  caso es que para no deteriorar mi nivel de frikismo he caído en la trampa de hacer un pequeño tributo a esa vieja máquina. Pero vamos por partes:

A principios de esta semana todo parecía positivo, en parte porque había dejado temporalmente de lado el problema de informar sobre la transferencia de archivos, así que pude centrarme en la gestión de conflictos. En estos momentos Acid Rain ya detecta problemas y conflictos y al hacerlo abre un formulario para dar al usuario la posibilidad de elegir como gestionarlo. De momento es bastante básico pero funciona.

En realidad la mejor noticia que puedo dar hoy es que ya estoy usando Acid Rain de forma personal para sincronizar los archivos de mis ordenadores. Hasta ahora no lo había hecho porque no me fiaba de mi propio invento. En otras palabras, he cogido los archivos que tengo guardados en ese servicio cuyo nombre no me dejan usar y los he pasado ya a Acid Rain. También hay unos cuantos iconos adornando el menú del programa.

 Y en cuanto a las malas, en fin, hoy se ha producido una aunque realmente la esperaba. No quiero contar mucho de momento, no tiene nada que ver con el programa en si, digamos que es logística. En fin, se hará lo que se pueda al respecto también.
Con todo esto lo próximo es acabar el wizzard de la primera configuración, reparar bugs, traducir al español y empaquetar la primera versión. La idea es distribuirla solo a un par de cientos de usuarios para que hagan beta testing, pero aún tengo que pensar como limitar esta distribución. Mientras, se me tendrá que ocurrir como solucionar el problema de las narices.
Ah! y no quiero acaba sin dar las gracias a los pocos que lo estáis probando

jueves, 11 de noviembre de 2010

Un mojón en la bandeja de sistema

Hoy para variar sigo contando y aburriendo con mis batallitas binarias respecto a Acid Rain.
Estoy enzarzado con unos cuantos problemas sin poder centrarme en la parte con la que me quería estar pegando a estas alturas. Empezaré con uno que más o menos está ya resuelto:

Enmarronado con el icono mojón
Resulta que uno de los iconos que aparecía cuando el programa esta pausado se asemejaba bastante a un excremento. El primero en advertírmelo fue Álvaro  pero, como tiene la extraña habilidad de parecer una persona seria cuando se está quedando contigo, admito que no le hice caso. Al día siguiente Jesús me dijo más o menos lo mismo, bueno creo que la comparación fue con una deposición de Arale.


De acuerdo lo reconozco, lo que pasaba es que yo no lo veía así porque sé que es naranja, pero la mezcla con el gris y la reducción del tamaño hace que realmente parezca un mojón. No es que me sienta mal, el Sr. Mojón siempre fue uno de mis personajes preferidos de South Park, pero de alguna manera he llenado de mierda las bandejas de sistema de unos cuantos amigos.

Notificar al usuario que mercurial sigue transfiriendo
Iconos a aparte, mis verdaderos quebraderos de cabeza andan por otro lado, el de conseguir notificar de algún modo la actividad de descarga o subida al usuario. El problema viene dado porque no encuentro la manera de "preguntarle" a mercurial cuanta transferencia ha hecho.  Me explico, el programilla (me refiero ahora a Acid Rain) va bastante bien pero cuando añades un archivo grande a tu directorio de documentos y la nube cambia a la que tiene la lluvia azul (que indica que se está produciendo una subida o bajada) esa es la ultima noticia que recibes de que algo está pasando hasta que termine el proceso (la ejecución de la transferencia que hace mercurial). Pondré un ejemplo real:
Copié archivos por un tamaño aproximado de un giga a la carpeta de documentos, con lo que empezaron a subirse al servicio de hosting con el que estoy probando. Mi proveedor de internet tiene una limitación de ancho de banda de subida de unos 50 KB/sec, con lo que... tachan, tachan, el tiempo de la operación sería de unas 6 horas. 6 horas con un icono naranja y azul en las que sólo puedes hacer un acto de fe.
Las cosas que se me han ocurrido para solucionarlo no están funcionando y me parece un defecto bastante grande desde el punto de vista de la usabilidad.
Unas pocas buenas noticias por favor
Por lo anterior estoy un poco pesimista así que vamos con las buenas noticias:
  • Hay unos cuantos iconos nuevos que representan más estados y además el icono mojón ha desaparecido.
  • También hay un segundo conjunto de iconos en blanco y negro. No son una maravilla pero encajarán mejor en Windows 7 y KDE 4.5. La selección del juego de iconos se puede hacer desde la ventana de configuración.
  • Se han solucionado unos cuantos bugs y el modo de trabajo con repositorio remoto va funcionando mejor.
  • Ya lo había probado en Windows y en una OpenSuse (Linux con entorno KDE) pero esta semana también he podido probarlo en Ubuntu con éxito (Linux con entorno Gnome)
  •  Y sobre todo la mejor noticia: ¡funciona en Mac! ¡Gracias Jesús!

Acid Rain en un Mac
Acid Rain en Ubuntu




viernes, 5 de noviembre de 2010

Se acercan días de lluvia

Sigo trabajando en mi proyecto personal todo lo que puedo y ha llegado el momento de contar un poco más, de hecho hoy voy a contar bastante.
El nombre de la aplicación es Acid Rain y su ambicioso objetivo es el de ser una alternativa de software libre a servicios como SpiderOak, Dropbox, Ubuntu One y ownCloud. Por su naturaleza libre se asemeja más a esta última que sin embargo es la menos desarrollada.
Básicamente Acid Rain es una aplicación que permite sincronizar archivos entre distintos ordenadores y mantener un histórico de los cambios efectuados en ellos. Para conseguir esto, usa Mercurial como tecnología para mantener las versiones de los archivos. La elección de Mercurial como alma del invento hace que sea posible usar la aplicación, bien independientemente en un solo ordenador para mantener un histórico de las diferentes versiones de los documentos o bien con un servidor externo para sincronizar tus archivos en diferentes PCs. Por otro lado, gracias al uso del framework QT, Acid Rain estará disponible al menos para Windows y Linux. Probablemente, si no surgen muchos problemas, también para Mac en cuanto mi buen amigo Jesús pueda echarme un cable.
En caso de usarla para sincroniar archivos entre múltiples PCs, es posible usar teóricamente cualquier servicio de hosting Mercurial (yo ya he probado varios con éxito).
Pero la cosa no se queda sólo ahí. Al poco de comenzar a idear el proyecto me vino a la mente la posibilidad de usar Suse Studio para crear una distribución Linux que permitiera montar nuestro propio servidor. El nombre de la distro es Acid Rain Server y actualmente ya permite sincronizar archivos en varios ordenadores a través de una red local e incluso de Internet. Para ello sólo hace falta instalar el S.O. en un viejo PC e indicar al resto de ordenadores que usen Acid Rain cual es su dirección en las opciones de configuración (ver imagen) Eso sí, en su primera versión no establece ningún tipo de seguridad en la cuenta y cualquiera que conociera la dirección de la máquina podria acceder a los archivos y subir otros nuevos.


La principal ventaja frente a los otros servicios similares es la libertad que ofrece al usuario a la hora de establecer dónde residen sus archivos:
  • Tu decides cómo usarlo, bien en un solo ordenador, como control de versiones de tus archivos o en conjunto con un servidor propio o de un tercero (hosting Mercurial) para sincronizar distintos ordenadores.
  • En caso de usar una cuenta Mercurial de una empresa, tu decides que proveedor de espacio remoto quieres utilizar.
  • Si montas tu propio servidor, tu decides si el acceso a el es a través de tu red local o accesible a través de Internet
En los próximos días voy a enviar la primera version a unos cuantos conocidos para que la prueben y me comenten que les parece. Todavía está muiy verde pero tiene bastante estabilidad para ser usada en modo local para mantener versiones de nuestros documentos y poder recuperar las anteriores, vamos, que esta primera entrega está casi especialmente dedicada a Ximo y su innata habilidad para hacer desaparecer un documento Word juesto antes de enviarlo por mail. Además habrá que probar que tal compila en Mac, así que Jesús ya sabes: pronto recibirás el fuente ;)
Como veis es bastante ambicioso pero parece que va funcionando aunque aún voy de cabeza con ciertos aspectos. Dependiendo de cómo vayan las pruebas seguiré montando versiones "privadas" hasta que la cosa esté lo suficientemente madura para hacerla pública, cosa que me gustaría que ocurriese antes de que acabe el mes. En fin no os aburro más de momento.

jueves, 28 de octubre de 2010

Jugando con Sweet Home 3d. Probablamente mi post más friki.

Llevaba tiempo pensando en pintar la habitación que uso como despacho en mi casa pero no acababa de decidirme por ningún color. Finalmente me vino a la cabeza combinar naranja y gris pero la mezcla me parecía algo arriesgada. Se me ocurrió entonces hacerme una "preview" de cómo quedaría usando algún software que fuese fácil y por supuesto libre.

Así llegue hasta Sweet Home 3d, el cual reúne dos características que me interesan bastante como norma general: la primera como ya he dicho es que es libre y la segunda es que es multiplataforma  (puede ejecutarse en Windows, Linux, Mac... )

Dicho y hecho, todo muy fácil: creas las paredes, les das color, metes los muebles de entre los que vienen con el programa y mientras lo haces vas viendo como va quedando todo renderizado en 3d (en baja calidad, sin luces ni sobras). De igual forma que que cambias el color de las paredes puedes hacer un cambio de textura o color en el mobiliario o incluso en el suelo.

Cuando todo el trabajo está hecho podemos ir al menú 3D y elegir la opción sacar foto, en la que pondremos la calidad al máximo para obtener el mayor realismo posible. La imagen resultante será más o menos realista en función del tiempo que le hayáis dedicado antes a la búsqueda de texturas, etc. en mi caso no mucho pero lo suficiente para ver el efecto y decidirme a hacerlo realidad. Juzgad vosotros mismos el resultado y el parecido y si no ya sabéis: para gustos colores :p

 Nota: en el momento de escribir esto la página principal a la que apunta el link de arriba no funciona, pero podéis descargarlo en Sourceforge.
 

miércoles, 20 de octubre de 2010

Dando pistas

Bueno, a petición de Osus que dice que estoy muy callado últimamente voy a dar un par de pistas de por dónde ando en mis aventuras Open Source.
Resulta que llevo aproximadamente un mes trabajando  en la idea y el prototipo más o menos funciona. Las complicaciones vienen más bien de que la cosa se ha vuelto un poco más ambiciosa que en el punto de partida así que necesito más tiempo para llegar a la publicación de la versión inicial. Además esto también ha vuelto más compleja la preparación de la página web del proyecto ya que debe llevar más información.

En todo caso ahí van las pistas:
  • El dominio ya está comprado y estoy montando la web.
  • Lo anterior significa que ya tengo un  nombre que me gusta y un logotipo bastante simple pero que refleja lo que quiero.
  • El proyecto es similar al anterior en cuanto a funcionalidad.
  • No sólo implica programación también habrá una... ummm esto que siga siendo sorpresa.
  • Si alguien se empeña podrá llegar fácilmente hasta la página del proyecto y de ahí saltar a la web que estoy montando, pero no voy a explicar cómo.
Aún me queda bastante trabajo pero espero poder publicar algo a mediados o finales del mes de Noviembre así que sólo puedo decir que sigo preparando la lluvia.

martes, 28 de septiembre de 2010

Ciao Discordia


No me esperaba que nos dejases hoy. No sé, ayer cuando te vi pensé que te pondrías bien, incluso me dijeron esta mañana que estabas un poco mejor.

Pero mi móvil sonó esta tarde. Me dijeron en el hospital veterinario que sólo llamaban cuando las cosas empeoraban y resulta que lo hicieron a media tarde para decirme lo peor que me podían decir: te marchaste. Has luchado dos semanas contra tu hígado y al final no has  podido más

Ya me dirás que hago ahora con el pesado de tu hermano, lleva unos días muy empalagoso y extrañado de no verte por casa, vamos, que ahora no me lo voy a quitar de encima. Ya no tiene con quién jugar y dormir.Justo ahora no me está dejando teclear estas lineas en paz...

Ciao Discordia, fuiste una gata solitaria en un principio pero poco a poco confiaste en los humanos que te rodeaban hasta volverte cariñosa y sociable. Légolas y yo te echaremos de menos.

jueves, 16 de septiembre de 2010

Y además un lío de verdad

Hace unos cuantos meses contaba como me había metido en el lío de desarrollar una aplicación Open Source y parece que ahora toca narrar el final de este primer capitulo.

Todo marchaba bien con Kdropbox Kfilebox: las nuevas versiones me iban saliendo sin mucho esfuerzo y no me aburría de trabajar en ello, además aprendía cosas nuevas y repasaba otras. Para colmo, poco a poco las descargas subían y recibía bastantes comentarios de los usuarios. Sin saber ni cómo, conseguía sacar tiempo para programar, mantener la web, los sitios en Sourceforge y KDEApps y además me las ingeniaba para no dejar a ningún usuario sin respuesta a sus comentarios.

A finales de Agosto la cosa se estaba complicando, me encontraba con la incómoda situación de no saber muy bien por donde tirar. Intentaba averiguar más cosas del funcionamiento del demonio de Dropbox (la aplicación oficial para entendernos) para incorporar las mismas características a la versión libre del cliente para KDE. Buscaba en el wiki y el foro de Dropbox, miraba código de algunos plugins de otros desarrolladores Open Source e incluso, meses antes,   llegué a preguntar en dicho foro a la propia compañía sobre cómo podía desarrollar tal o cual cosa. La respuesta no fue de ayuda.
Poco a poco me di cuenta de que no llegaría mucho más lejos así que comenzaba a pensar en funcionalidades al margen de lo ofrecido por el cliente original, hay que tener en cuenta que la idea inicial era imitar esa aplicación tal cual era pero en una aplicación integrada en KDE. Como no encontraba ninguna idea, lo que barajaba era incorporar una arquitectura de plugins para que otros desarrolladores pudieran incorporar nuevas funciones y que estas se mostrasen en el menú de la aplicación.
Y en esas cavilaciones estaba cuando el 26 de Agosto recibí un mail de un responsable de marketing de Dropbox pidiéndome dos cosas: que dejará de usar kdropbox como nombre y que tampoco incluyese su logotipo. Era un mail frío, o al menos así me dejó. Bueno, evidentemente en lo del logo siempre he dicho que tenían toda la razón, lo del nombre ya me parece discutible.  De hecho ahora pienso que hay muchas cosas cuestionables, incluso en cuanto al uso del logo pero me las voy a reservar.
Después de esto decidí no entrar en polémicas y finalizar el desarrollo de la aplicación no sin antes publicar una última versión con un nuevo nombre, logotipo e iconos. Mientras tanto y por otro lado, hubo un poco de polémica [2] en sus propios foros al respecto de todo esto y solo diré dos cosas sobre lo que allí se  ha escrito:
  1. Como ellos dicen, debe quedar claro que en ningún momento se me envió un requerimiento legal ni nada parecido.
  2. No me he sentido ayudado por esa compañía en ningún momento.
En los próximos días tengo pensado publicar la primera y última versión de Kfilebox. Después de eso sólo haré un poco de mantenimiento en caso de que algún usuario informe de algún error y como mucho incluiría nuevos archivos de idioma.
En todo caso la experiencia me ha gustado, sobre todo por el apoyo de la comunidad de usuarios a los que tengo que agradecer que me hayan dado ánimos estos últimos días y sugerido ideas durante toda la vida del proyecto, algunos incluso se hicieron eco de la existencia del programa en sus blogs. Por supuesto no me olvido de aquellos que han traducido y aún hoy traducen la aplicación, a todos ellos muchas gracias.
Es por esto que en lo que pienso ahora es en comenzar otro proyecto Open Source del cual ya estoy haciendo alguna prueba a modo de prototipo rápido. En caso de que los resultados de las pruebas me parezcan adecuados volveré a las andadas y si no encontraré otra idea. Seguro estoy de que encontrare otro lío en el que meterme.

domingo, 8 de agosto de 2010

Jugando con DBus

Cuando los usuarios tienen la razón
Hace unos días recibí un mail de un usuario de Kdropbox diciendo que el comportamiento de la aplicación al hacer clic sobre el icono de la bandeja de sistema no era el habitual en KDE. Según me contaba al hacer clic se abría la ventana por tanto al volver a hacerlo debería cerrarse.
 Es curioso pero tantos años usando este escritorio y no me había fijado. Lo comprobé y es cierto que no todos los programas lo cumplen, pero aquellos que se distribuyen con KDE sí.  Kdropbox abría (y la versión estable la abre aún en el momento de escribir esto) una ventana de un navegador de archivos (dolphin o konqueror) cada vez que se hacía clic en el icono, por lo que era una buena manera de lanzar rápidamente 377 navegadores de archivos, dependiendo de la velocidad de nuestra mano :D
En todo caso terminaba siendo una cuestión de usabilidad y el usuario tenía razón así que había que cambiarlo. Sin embargo había un problema bastante importante en todo esto: hacer un control de ese tipo en una ventana propia de la aplicación hubiera sido relativamente sencillo, pero ¿que pasa si lo que hemos lanzado es un proceso independiente? Bueno, una solución podría ser la primera que se me ocurrió: lanzar el proceso, guardarme el pid y matarlo con el segundo clic. Error, Dolphin no se lanza como instancia nueva si ya está corriendo, o sea que si ya hay una ventana de Dolphin abierta cuando hacemos clic en el icono no tendremos un pid independiente y lo que es peor, matar ese proceso terminaría con todas las ventanas del gestor de archivos que tuviera abiertas el usuario.
DBus y qdbusviewer
 La solución para estos casos es hacer uso de DBus que es el estándar de Linux para la comunicación entre  aplicaciones. Si no tenemos experiencia previa lo mejor es trastear un poco con qdbusviewer el cual nos permitira escudriñar por todas las aplicaciones que utilizan este protocolo e incluso, llamar a sus métodos.
 Por ejemplo podemos abrir una ventana nueva de Dolphin indicando la URL que queremos mostrar.La condición previa necesaria es que Dolphin esté en ejecución ya que de otro modo no aparecerá en el listado de servicios de qdbusviewer (panel izquierdo)
 En cuanto le demos a OK en la ventana en la que se solicitan los parámetros veremos que en el panel inferior se muestra la respuesta al método o los posibles errores que ocurran.
Escribiendo el código para hacer llamadas
Pero ¿cómo hacemos esto desde nuestra aplicación? Hay bastantes ejemplos en la web para contestar a esta pregunta, un ejemplo rápido usando QT para el caso anterior sería este... bueno, no tan rápido. Un poquito de teoría antes.
Siempre necesitaremos saber lo siguiente:
  1. El nombre del servicio con el que el proceso se identifica en DBus, en la práctica se asemeja a una URL
  2. La ruta hasta el objeto al que queremos llamar
  3. El interfaz declarado por la aplicación para el método que buscamos
  4. El método al que queremos llamar y sus parámetros
Salta a la vista que todo esto lo obtenemos fácilmente con qdbusviewer. En nuestro caso:
  1. Nombre del servicio: org.kde.dolphin
  2. Ruta: /MainApplication
  3. Interfaz: org.kde.dolphin.Aplication
  4. Método: openWindow
Teniendo todo lo necesario QT lo pone muy fácil gracias a la clase QDBusInterface. Sólo tenemos que incluir las clases que necesitamos y unas cuantas líneas de código para hacer la llamada.

En este ejemplo se necesitan las siguientes clases relativas a DBus:

#include <qdbusinterface>
#include <qdbusreply>

El código necesario para abrir nuestra ventana de Dolphin es el siguiente, teniendo en cuenta que path debería contener alguna ruta válida:
QDBusInterface remoteApp("org.kde.dolphin","/MainApplication","org.kde.dolphin.Application",QDBusConnection::sessionBus());
if (remoteApp.isValid()){
QDBusReply<int> reply =remoteApp.call("openWindow",path);
int winid=(reply.value());
}
Hemos intentando la conexión con la aplicación en la ruta e interfaz deseado, después hemos comprobado que realmente hemos contactado con ella y así hemos podido llamar al método openWindow con la tura deseada. Por último nos hemos guardado la respuesta que nos devuelve el método que no es otra cosa que el identificador de la nueva ventana.

Un último ejemplo, vamos a ver como cerrar esa misma ventana ya que la forma de proceder varía ligeramente. Para entender esto hay que observar como se transforma el árbol de Dolphin en DBus, en la siguiente captura se pude ver como ha aparecido un nuevo nodo identificando la nueva ventana, de forma que si el identificador que nos ha devuelto el método anterior es el 3 tendremos la ruta
/dolphin/MainWindow3

Esto es importante a la hora de cerrar la ventana ya que es la ruta que utilizaremos:
QDBusInterface remoteApp("org.kde.dolphin","/dolphin/MainWindow"+QString::number(getWindowId()), "org.kde.dolphin.MainWindow", QDBusConnection::sessionBus());
if (remoteApp.connection().isConnected())
    QDBusReply<int> reply =remoteApp.call("quit");
 Hemos concatenado la cadena /dolphin/MainWindow  con el identificador de la ventana que nos habíamos guarda. En este caso el método no tiene parámetros y no devuelve tampoco ningún valor.
 Esto no ha sido nada
Esto solo han sido un par de ejemplos básicos, como se puede suponer cada aplicación será un mundo y habrá que investigar un poco los métodos que contiene para ver lo que podemos hacer con ella. Por supuesto que no todas las aplicaciones están preparadas para ser utilizadas mediante DBus. En fin, todo esto no es más que la punta del iceberg ya que por ejemplo se pueden usar señales y slots entre aplicaciones distintas de forma muy parecida a como lo hace QT. En mi caso no me ha hecho falta de momento nada más que esto pero al que le interese le vale la pena profundizar más.

lunes, 19 de julio de 2010

Creando binarios para linux con Open Suse Build Service

Hay que reconocerlo: crear archivos ditribuibles para Linux es un auténtico infierno.  Además, como no, seremos víctimas de una nueva lucha de estándares rpm vs deb. Esto hace que sea bastante tentador distribuir simplemente el código fuente y desear suerte a los usuarios con la compilación, aunque de esta manera no llegaremos a los menos aventajados. También es cierto que distribuyendo el fuente no tardarán en aparecer voluntarios que crearán paquetes para determinadas distribuciones pero de esa manera perderemos el control de nuestro software. De modo  que, si queremos enfrentarnos a este problema, parece que sólo hay unas pocas soluciones: o bien encontrar un software que nos cree un instalable independiente de la distribución o tratar de llegar a la máxima cantidad de usuarios creando rpms y debs para las mayores distribuciones. Este artículo se centrará en el segundo enfoque. Open Suse Build Service (OBS) es, como su nombre indica, un servicio de construcción de paquetes binarios para las mayores distribuciones de Linux, incluyendo Ubuntu, Open Suse, Fedora, CentOs, Mandriva y alguna que otra más. Además de la creación de paquetes, pone a nuestra disposición los correspondientes repositorios de descarga para que puedan ser distribuidos a todo el mundo bien directamente, enlazando desde nuestra propia web si disponemos de ella, desde sitios capaces de integrar el servicio como kde-apps.org o desde el propio lugar habilitado por Open Suse para ello.
En este artículo trataré de describir mi experiencia para generar los binarios de un proyecto propio pero será difícil que no se me escape algún detalle así que, en todo caso, recomiendo que se de un vistazo a proyectos existentes en OBS para tener una referencia de la estructura de los archivos y a las configuraciones que se pueden encontrar en los .spec y .dsc necesarios para la construcción.
Como resumen antes de comenzar, sólo me queda decir que aunque su manejo no es todo lo sencillo que desearíamos, en cuanto se tiene un poco de práctica, obtenemos la ventaja de producir archivos instalables para la gran mayoría de distribuciones tanto en arquitectura 32 como 64 bits, algo que de otro modo no podríamos conseguir por nosotros mismos.

En qué consiste

Básicamente lo que se pone a nuestra disposición es una máquina virtual que se crea en el momento en base a nuestras necesidades. Dicho de otro modo, obtenemos un entorno de compilación y paquetización generado dinámicamente según los paquetes que habremos indicado previamente en los ficheros de descripción (uno para .deb y otro para .rpm)
Cada vez que modifiquemos alguno de los archivos de nuestro proyecto el servicio realiza una petición de construcción por el cual se crea de cero la máquina y, posteriormente a la instalación de todos los paquetes, se compila nuestro proyecto y se crea el binario. Como es natural este proceso no es especialmente rápido y más teniendo en cuenta que compartimos el servicio con otros usuarios pero con suerte, si no hay mucha cola, en poco más de unos 5 minutos podemos tener el resultado de todo el proceso.

Preparando el proyecto

Después de  crear nuestra cuenta llegará el momento de crear nuestro primer proyecto. Una de las cosas que hay que considerar es comprobar que no existe el mismo proyecto en la cuenta de otro usuario, si por ejemplo se está recompilando un fuente que no es nuestro porque lo queremos para nuestra distribución preferida.
En todo caso tendremos un proyecto creado por defecto, pero llevará el nombre de nuestro usuario, así que es recomendable crear uno nuevo.



Una vez creado el proyecto podremos asignarle paquetes y a estos a su vez podremos añadirles archivos. De una forma más práctica:
  1. Nuestro proyecto puede ser el nombre de nuestro programa
  2. Asignaremos las distribuciones (repositorios) para los que queremos paquetizar
  3. Podemos crear un paquete para cada versión
  4. A cada versión (paquete) le añadiremos todos los archivos descriptivos y de código fuente para que se creen sus binarios.
Iremos viendo a continuación como cumplir con los pasos que continúan a la creación del proyecto, pero antes de eso, como adelanto, en la imagen siguiente se puede ver la página inicial de un proyecto ya maduro




Creando los repositorios

El objetivo final de todo esto debería ser tener varios repositorios de paquetes para distribuir a nuestros usuarios. El concepto de repositorio estará ligado siempre a una distribución por lo que si elegimos distribuir para OpenSuse y Ubuntu, contaremos con dos repositorios.



En todo caso estará en nuestras manos que esta distribución de los binarios construidos sea libre o no. ¿Y por que no debería serlo? Para mí la respuesta es fácil, en mi cuenta nadie puede acceder a ellos ya que de momento OBS no registra estadísticas de descargas y ese es un dato que interesa controlar ya que mide el grado de aceptación que tiene nuestro trabajo. Una posible solución es descargarse los binarios (nuestro usuario siempre tendrá permiso por ser el creador) y subirlos a SourceForge dónde sí podremos controlar el número de descargas.
Al margen de cómo lo planteemos, la publicación es bastante flexible y podremos elegir que archivos son públicos o no por distribución y arquitectura. Esto lo veremos más adelante cuando se explique todo lo relativo a paquetes.

Creando paquetes en nuestro proyecto


Como se ha dicho con anterioridad podremos asimilar el concepto de paquetes a una versión de nuestro software. Además las tareas de construcción se lanzan contra los paquetes, dicho de otro modo, las maquinas virtuales creadas por OBS se ejecutan con la información de los archivos que habremos subido para un determinado paquete. Es por ello que todo lo que hemos visto con anterioridad sobre los permisos de construcción y publicación se hace para un determinado paquete.

Administración de los paquetes del proyecto

La creación de un nuevo paquete es muy simple, sólo se nos pide un nombre y una descripción que podemos dejar en blanco.




Una vez creado, de nuevo contaremos con una pantalla de resumen general desde la que tendremos a nuestro alcance las diversas opciones existentes para el paquete seleccionado. Es muy similar a la del proyecto pero tiene la opción files para añadir los archivos y aquí la opción repositories sirve para controlar la construcción y publicación para distintas distros y arquitecturas, mientras que en la opción del proyecto sirve para añadir o quitar distribuciones.




 Los archivos

A nuestro paquete subiremos archivos para que OBS construya los binarios pero antes de nada debemos saber que cada vez que subamos un archivo a un determinado paquete, se disparará un petición de construcción para los sistemas/arquitecturas permitidos.
Veremos por ahora de forma muy superficial los archivos que necesitaremos para la versión 0.0.1 de una aplicación llamada app de la que queremos .deb para Ubuntu y rpms para diversas distribuciones basadas en este otro sistema:
Para construir los rpms:
  • app.spec Es el descriptor del paquete que vamos a construir
  • app-0.0.1.tar.gz El código fuente a compilar para obtener el rpm
Para los debs:
  •  app_0.0.1-1.dsc Archivo de descripción
  • app_0.0.1-1.tar.gz Fuentes a compilar


Podremos editar los archivos de descripción desde la misma web pero veremos más adelante todo esto de forma más detallada cuando hablemos de cada uno de los casos de construcción en profundidad.

Controlando la construcción y distribución

Como se dijo antes, desde esta opción controlaremos todo lo relativo a la construcción y publicación de los repositorios que hemos elegido para nuestro proyecto. En la imagen que se puede ver abajo tenemos prohibida la publicación del repositorio para todas las distros y arquitecturas. Sólo nosotros, como creadores del paquete tendremos acceso a la descarga de los archivos generados.


 
También tendremos un modo similar de seleccionar para que distros y arquitecturas se debe lanzar la construcción. Por ejemplo si estamos peleándonos con la construcción de .deb para Ubuntu podemos tener paradas todas las construcciones basadas en rpm. De este modo no consumiremos recursos del servicio y no entorpeceremos a otros usuarios.




Conclusiones

Hemos visto como crear nuestro proyecto y la información básica para empezar a obtener archivos. Realmente con esto y observando en OBS algunos de los proyectos existentes, los más impacientes podrán empezar a trabajar ya. En todo caso, próximamente podréis encontrar por aquí los casos de construcción de .deb y .rpm con algunos problemas comunes y la forma a enfrentarse a ellos,

Moviendo el blog

¡Hola! Simplemente deciros que el blog está ahora en http://www.deuteros.es

La nueva web está todavía en construcción, tengo que cambiar la imagen de cabecera, enlaces y estructura en general, etc. Pero como no se cuando tendré tiempo para todo eso y ya he añadido un artículo nuevo ¿que mejor momento para contarlo?

Gracias a todos mis escasos lectores por haberme seguido en blogger, espero veros pronto por el nuevo sitio.

¡Saludos!

miércoles, 12 de mayo de 2010

Kdropbox: el nuevo "lío" en el que me he metido

En menuda me he metido esta vez... Desde hace un par de meses dedico parte de mi tiempo libre a programar Kdropbox que no es más que un cliente del servicio Dropbox para KDE. ¿Y por qué esta frikada? Bueno pues por unas cuantas razones: por supuesto soy usuario de dropbox, fanático de Linux y partidario de KDE, siempre me ha divertido programar en QT, tenía la espinita de contribuir al mundillo del Open Source y otras razones que no voy a contar.



En fin ahora puedo decir que hacer una aplicación y distribuirla como código abierto es extremadamente gratificante. La gente ha pedido características nuevas, ha contribuido con traducciones y las descargas acumuladas son más que aceptables teniendo en cuenta lo reducido del público al que va dirigido. Además me he desoxidado con el C++, me he obligado a aprender un poquito sobre cómo empaquetar para linux (.rpm y .deb), a repasar make y autoconf...

Sin embargo creo que lo mejor es aprender a cómo manejarse con una comunidad de usuarios, respondiéndoles de forma rápida e intentando ser positivo hasta con los más críticos (los menos)

En resumen, me he metido en un lío del que voy a tardar algún tiempo en salir pero he de reconocer que me lo estoy pasando bomba.

jueves, 28 de enero de 2010

Montando una placa Zotac ION ITX-D-E en una caja Foxconn RS233

La semana pasada contaba que me había hecho un autoregalo en forma de modesto equipo informático y había prometido aburrir al personal con el montaje, pues bien lo prometido es deuda. Aquí tenéis los detalles...

La caja


Se trata de una caja Foxconn RS232 cuyo formato es mini-ITC. No es de las más pequeñas dentro de esta familia pero esto nos permitirá montar discos de 3.5, lectores de DVD de tamaño normal y además cuenta con una bahía externa de 3.5, donde montar por ejemplo un lector multitarjeta.

La caja incluye una fuente de 150w, el cableado necesario para el frontal y los soportes para montarla en vertical

A favor:
  • Permite montar dispositivos de 3,5 y lectores de tamaño normal
  • Relación calidad precio
En contra
  • Sí quieres un tamaño muy reducido esta no es tu caja



La placa madre

Qué puedo decir de esta placa más que lo tiene todo: múltiples salidas de vídeo, infinidad de puertos usb, audio 5.1, ethernet y wifi y procesador Intel Atom 330. Sólo requiere que se le añada RAM, un disco duro y la correspondiente caja.

Hay que comentar que la conectividad wifi se proporciona mediante una tarjeta PCI que ya viene incrustada ocupando el único de estos puertos existente, así que conviene pensarse antes de adquirirla si se va a hacer uso de la conexión inalámbrica o no.

A favor
  • Tiene todo lo necesario y en formato mini-ITX
En contra
  • Sólo tiene un puerto PCIe y está ocupado por una tarjeta wifi así que no hay opciones de expansión.



El lector de tarjetas y bluetooth

En realidad sólo buscaba un lector de tarjetas de memoria pero sin querer di con uno que además era bluetooth ¿que más se puede pedir por menos de 10€?



A favor
  • Incluye bluetooth
  • Precio
En contra
  • ¿Nada?

Montándolo todo


Antes de continuar tengo que decir, y muchos podrían dar fe de ello, que si un torpe como yo ha podido montar el equipo cualquiera puede hacerlo. ¡Comencemos!

Este es el aspecto de la caja después de quitar la tapa superior. Para dejarla así sólo hay que aflojar un único tornillo.



El siguiente paso será quitar el frontal, que no está atornillado si no que va a presión y asegurado por unas pestañas y a continuación desmontar la parte superior del armazón metálico. Para esto tendremos que acceder a dos tornillos visibles tras quitar el frontal.

Una vez nos quedamos sin obstáculos podemos montar en el chasis la placa y el disco duro:





En el panel superior que hemos desmontado de la caja atornillamos el lector de tarjetas y, si la tuviéramos, la unidad óptica.



Volvemos a colocar el panel superior y tras esto ya podremos poner el frontal y la tapa superior. Por cierto, ya que nos dan unas cuantas no está de más sujetar los cables con alguna brida.



El resultado final

Pues eso es todo, montarlo no es nada del otro mundo incluso para los más novatos. El equipo va bastante bien, arranca en unos 30 segs una OpenSuse 11.2 y todo se mueve con fluidez. Eso sí, hay que ser consciente de las limitaciones y no exigirle un gran rendimiento de proceso o con gráficos 3D.

miércoles, 20 de enero de 2010

Deseando suerte al Open-PC

En el post anterior comentaba la dificultad de encontrar a la venta un PC sobremesa con Linux instalado. No me vale cualquier cosa, hay cientos de tiendas instalando distribuciones en ordenadores ensamblados en ellas. Me refiero a algo con garantías, con todo el hardware testeado y si no es mucho pedir con un teléfono al que llamar.

Pues bien, hace poco me he encontrado con el proyecto Open-PC que además de todo lo de arriba resulta que ha elegido OpenSuse como base del sistema operativo. Por cierto que el aspecto es muy parecido a mi nueva adquisición, aunque el hardware que indican es inferior al de la placa Zotac.



La fecha de salida es finales de febrero y el precio anunciado es de 359€, lo que incluye una donación de 10€ al proyecto KDE y soporte de usuario. Por lo demás no me queda muy claro si es sólo la CPU pero si es así me temo que este precio se queda un pelín alto.

En todo caso, espero que prosperen, verlo en tiendas o centros comerciales y sobre todo que tengan un gran número de ventas y que diseñen nuevos modelos.

Página oficial de Open-PC

martes, 19 de enero de 2010

Mi autoregalo de este año: Zotac Ion D-E con Atom 330 más caja Foxconn RS233

Desde hace unos cuantos meses han prosperado una serie de placas basadas en procesadores Atom con todo lo necesario para un usuario no muy exigente. Las encontramos en formato Mini-ITX y pese a su escaso tamaño cuentan con múltiples salidas de vídeo y audio, infinidad de ranuras usb, gráfica integrada con capacidad de decodificación de vídeo de alta definición e incluso wifi.

Aparte de todas estas características hay que añadirle unos precios más que atractivos y la posibilidad de elegir, por ejemplo, una caja de pequeño tamaño para tener un equipo de salón.

En mi caso, tras pasar las Navidades era el momento de hacerme mi autoregalo. Entre las diversas opciones de caprichos que concederme, el prioritario parecía ser el de dar relevo a mi viejo sobremesa, claro que cuando llego a casa no suelo hacer gran cosa con el así que no tenía mucho sentido cambiarlo por una supermáquina.

En principio buscaba un equipo completo con Linux instalado pero sigue siendo bastante difícil encontrar algo así. Dell no parece vender en España los modelos que tiene en otros países con Ubuntu. Los escasos modelos de los que encontraba referencia eran poco más que componentes ensamblados por alguna tienda a los que se le instalaba alguna distribución. Finalmente, tras no tener muy claro si alguien vendía el Zotac Mag Ion con Linux la única opción razonable parecía Shuttle.


Los Shuttle vienen con OpenSuse, mi favorita, lo cual era un punto a favor. El problema es que a esas alturas ya había visto muchas placas Mini-ITX atractivas y había caído en la cuenta de que el Nettop de Zotac llevaba una placa bastante interesante.

Así pues, tras trastear un poco más por la red, sobre todo en la web de Zotac, hacer números y comparar prestaciones, la elección mas aconsejable era la placa Zotac IONITX-D-E ION mini-ITX Atom N330 WiFi. Tenía todo lo necesario, sólo había que acompañarla de RAM, disco duro y una caja.

Elegir la caja fue lo más complicado pues no sabía cuál sería finalmente el destino del cacharro. Todavía hoy no lo sé, así que me decanté por una de las más grandes de entre las de formato Mini-ITX. Se trata de la caja Foxconn RS233 y su tamaño se debe a que permite un disco duro de 3.5, un lector de 5 y 1/4 (formato normal, no slim) y además cuenta con una bahía externa también de 3.5 la cual me resultó muy interesante para incorporar un lector de tarjetas. Para colmo, el lector de tarjetas resultó ser bluetooth así que me quedó algo bastante apañado.

La configuración completa es esta:

Kingston ValueRAM 2GB DDR2 800 PC2-6400 36.93€
Seagate Barracuda 7200.12 500GB SATA2 MAESTRO 39.53€
Zotac IONITX-D-E ION mini-ITX Atom N330 WiFi 112.55€
Foxconn RS-233 Mini ITX 150W 36.89€
CoolBox CR-500 Lector Tarjetas + Bluetooth 3.5" Negro 8.75€


Todo esto me salió por 282 € en PCComponentes incluyendo gastos de transporte pero tened en cuenta que no hay un lector de DVD en la lista :p

Por último decir que el sistema operativo instalado es una OpenSuse 11.2 64 bit y que tras unas cuantas horas de uso el rendimiento para un usuario doméstico es más que aceptable, en otras palabras, el conjunto funciona muy bien y con muy poco nivel de ruido.

En otro post contaré como fue el montaje, así me obligo a escribir un poco que tengo el blog abandonado.