@ agnasg

Qt: no, eso tampoco funciona

31-07-2014 4:39 AM

Una lista de acciones dentro del ambiente de Qt que deberían funcionar pero que no funcionan. Estén documentadas o no:

  • Clean no necesariamente Limpia. Si usted agrega un nuevo archivo (externo al proyecto) a un proyecto que ya ha sido creado se genera el error: QtCreator: Target debug/…obj does’nt exist La solución parece ser limpiar el directorio debug o release, o simplemente eliminar los makefile que estén ahi. También funciona agregar a mano el nuevo archivo en el makefile. Clean no funciona para esto (ya ha sido reportado o discutido por diversas razones). En la pestaña de Projects  se pueden customizar los pasos en Clean Steps, que es lo mismo que automatizar los pasos descritos arriba. Pero hay que saber cuáles son esos pasos, es decir, borrar el directorio debug o borrar los makefile, pero como el Clean es ejecutado a través de un jom -f Makefile o nmake -f Makefile, ni idea lo que puede suceder si desde un makefile ordenamos borrar el mismo makefile, al menos no parece elegante. E igualmente no es como elegante editar esos makefile. Al menos hay que cambiar 3-4 targets por cada nuevo archivos agregado, errores pueden suceder, resultados no esperados y demás tragedias. Solución definitiva, borrar los makefiles respectivos y hacer Build de nuevo
  • Cambiar el tamaño de un botón (QPushButton): QPushButton#applyButton::indicator{width:150px;} No, eso tampoco funciona. google reporta varias sugerencias  en especial el manual , pero por ninguna parte se menciona applyButton->setMaximumWidth(80); que resulta ser la forma de hacerlo sin tener que entender cómo funciona setSizePolicy
  • Qt::AlignRight no funciona para alinear widgets a la izquierda. Hay que crear un QHBoxLayout y agregar addStretch(1) y los demás widgets.
  • QtCreator Designer no es la mejor forma para Crear aplicaciones en qt. Es fácil de usar y te permite crear bonitas aplicaciones, pero eventualmente lo tienes que desechar porque es incómodo para hacer el tipo de cosas que un desarrollador maduro tiene que hacer. Ya de por si todo el mecanismo de SLOTs es innecesariamente complicado, por lo que ningún programador serio que se precie de serlo dejará en mano de una aplicación su manejo. Queremos tener el control. De eso se trata. Si buscas en google las preguntas y respuestas alrededor de QtCreator Designer tienen que ver con programadores novatos que todavía creen que Designer es la forma de hacer ui, es decir la idea detrás de qt, que es crear ui. QtCreator es una forma conveniente de tener el proceso de build integrado dado que qt requiere un preprocesamiento especial, ejecutado por el comando moc. Pero en realidad se puede hacer con un compilador y un makefile bien construido. Qtcreator facilita todo esto. Y el gui de Qtcreator es mucho mejor de lo que parece al principio.
  • Yo hice un monumental esfuerzo para crear una aplicación independiente del Gui, utilizando namespaces, templates, classes, etc, todo un esfuerzo perdido porque tratar de migrar a qt tu elegante y generalizada aplicación es una tarea casi imposible. Qt tiene un exceso de personalidad, es el muchacho que se sienta atrás en el salom y sabotea la clase, te baja los pantalones y se mofa de ti. Qt es intratable y pendenciero y hay que someterse a sus dictámenes y maneras. Al final, luego de un mes de trabajo decidí botar a la basura mi aplicación y escribirla de nuevo. Así es Qt, es que es diferente solo en una nueva forma que surgió por generación espontánea.

Desarrollo en Qt

24-07-2014 5:47 PM

Es difícil saber cuándo vamos a adquirir velocidad de crucero desarrollando en Qt. Usualmente por mi experiencia de 3 décadas desarrollando sistemas con múltiples lenguajes, plataformas, API’s, etc., luego de una semana ya puedo comenzar a dar estimados. Con Qt todos los días son como entrar por primera vez a un dungeon de Cataclismo (una expasión de Wow) : nunca se sabe qué va a pasar. Ir a google a preguntar es una experiencia tan frustrante como buscar ayuda sobre pentaho. Creo que esta advertencia en Stackoverflow lo resume todo:

Thank you for your interest in this question. Because it has attracted low-quality answers, posting an answer now requires 10 reputation on this site.

Esta pregunta ha atraido respuestas de baja calidad. En realidad rara vez se consiguen respuestas de calidad aceptable. Siempre es algo así como “a mi me ha funcionado de esa manera, cómo y por qué no tengo idea”. La pregunta en cuestión es por qué o cuándo usar QMainWindow, o QDialog o QWidget. Las respuestas son similares a las explicaciones en el Manual del Recientemente Fallecido (Handbook for the Recently Deceased) no tienen sentido, o son explicaciones que se contradicen intrínsecamente de una forma externa manteniendo el aspecto circunscrito a la periferia interna.

Si esto estuviera solamente en el ámbito de Stackoverflow o algunos foros especializados como www.qtcentre.org donde todos los que no saben se deleitan en su ignorancia no sería tan grave, pero es que lo mismo sucede en developer.nokia.com y qt-project.org/forums. Por ejemplo, vemos en el tutorial de stylesheet que para agregar un estilo a un componente es algo así como esto:

qApp->setStyleSheet(“QGroupBox { margin-top:20px; } “);

 

A mi me llamó la atención inmediatamente porque eso no es una expresión válida CSS. Los selectores comienzan con “.” o con “#”. Pues si hacemos lo que aparece en la mencionada página, la aplicación falla, el menú desaparece, se abre un agujero negro, se genera una fuga en el espacio tiempo. No sé si por intuición o porque lo había visto en alguna parte (creo que está en uno de los ejemplos en la distribución de qt) le agregué el “.” antes del selector. Todo comenzó a funcionar . Quedó así:

qApp->setStyleSheet(“.QGroupBox { margin-top:20px; } “);

Ese “punto” es muy importante.

Prepárese para dejar un rastro de notas, bookmarks, source code inservible y noches y días llenos de frustración. Por ejemplo, mi carpeta de bookmarks quedó así:

bookmarks-qt
¿Algunas palabras finales?. Pues al final, al final, final, todo funciona:

Al final, sin explicación alguna, las cosas comienzan a funcionar. Cómo y por qué, es algo desconocido. Pero ese desenlace esperanzador me mantiene motivado a seguir adelante.

Eso: enlaces de game programming

20-07-2014 2:33 PM

Enlaces

Qt deployment

16-07-2014 4:39 PM

Tal como se lee en artículos como este, el deployment de una aplicación Qt en Windows es un verdadero dolor en el trasero (por decirlo con algo de elegancia). Por qué hacer de algo simple algo tan complicado escapa de mi comprensión. El punto es que es así.

Ahora bien, si seguimos este tutorial, no debemos tener problemas. Por que al menos en el caso cuando tratamos de crear una aplicación QT usando QtCreator, y seleccionando Qt Widgets Application el ejecutable se puede distribuir a otros equipos sin Qt instalado. Lo he probado con Windows XP, Windows 7 y Windows Vista. Claro, en la carpeta deben estar los siguientes dlls:

Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll
platforms
qwindows.dll

Lo que hace que la aplicación no funcione cuando la ejecutamos en los equipos es cuando es generada usando Qt Quick Application o Qt Console Application. También si incluímos Qml, se generan errores. Lamentablemente el error no aparece por ninguna parte, simplemente una pantalla en blanco, o windows dice que la aplicación abortó.  Hay que revisar los procesos que se están ejecutando porque en estos casos la aplicación se queda en el background y eso puede generar nuevos y adicionales problemas.

 

¿quién tiene un blog?

02-07-2014 5:53 AM

Estuve la semana pasada en este congreso sobre tecnologías web, redes sociales y otros tópicos, y uno de los expositores preguntó quién tiene un blog. Me acordé de mi blog… pena me debería dar.

Enlaces y comentarios diversos

  • No puedo estar más de acuerdo con esto, pero quizás por diferentes razones. Blizzard ha ido agregando profundidad al sistema de crafting, a las mascotas, al pvp. Antes de las modificaciones yo le dedicaba un considerable tiempo a ellas. Ahora no. Notable el caso de las mascotas. Yo podía pasar horas tratando de conseguir una mascota, ahora que las mascotas tienen una funcionalidad adicional, ya no me interesan. Quizás el pvp no me llama la atención realmente. NOTA: esta mascota, el Disgusting Oozeling (wowhead, tiene 470 comentarios!) tiene tiene una posibilidad de 1.5% en una bolsa que tiene a su vez una posibilidad de 1.0%, lo que significa que hay que matar a 1000 oozes para conseguirla. Yo maté al menos 1500. Sin éxito. No lo he vuelto a intentar desde Cata. En los comentarios de wowhead se habla de 5000 kills.
  • Newegg.com está aceptando Bitcoins, tal como fue reportado en todas partes en forma inmediata (1, 2).
  • Críticas a Second Life. Es interesante cómo llegué aquí. Llegó a mis manos este documento sobre Prompter, un lenguaje que permite programar con mucha facilidad juegos de ficción interactiva sobre la plataforma Versu. Recomiendo esta lectura de Graham Nelson, un genio de la fi. Sobre Versu se han publicado verdaderas joyas de la ficción interactiva, incluyendo el reciente Blood & Laurels, de Emily Short (no lo he jugado todavía). Recordé que Versu fue noticia a principios de año, porque la compañía que lo desarrolló lo abandonó. La compañía se llama Linden Lab. Esta es la compañía detrás de Second Life. Yo estuve jugando SL hace 4 ó 5 años, hasta que lo abandoné pues no le vi el sentido. Evidentemente hay gente que si le ve sentido porque pagan $500-$1000 por una isla en el juego. Raro.
  • Este raycaster escrito en 128 bytes de assembler causó mucho revuelo hace poco (youtube). Este artículo analiza las técnicas utilizadas para ahorrar espacio.

Actualización de sistema 2014

21-06-2014 6:08 AM

Luego de varios meses de planificación, selección y espera finalmente ensamblé mi nuevo equipo. Sin embargo,  de nada sirvió la minuciosa planificación pues me encontré con tantos problemas que parece que estuve improvisando todo este tiempo.

  • Windows 7 32 vs. 64bits. Yo quería quedarme con 32bits para evitar problemas de versiones al distribuir y probar aplicaciones. Pero al mismo tiempo quiero tener un equipo con al menos 8GB. Bueno, tal como dice aqui, W7 32 bits soporta máximo 4GB (y el sistema reporta como usable 3.464mb. Así que no hay nada que pensar ni discutir, tengo que usar Windows 7 64 bits. La experiencia hasta ahorano ha sido tan mala, todo parece funcionar sin problemas.
  • Otra razón para quedarme en 32 bits es las versiones. El mundo de windows es caótico, desordenado, casi sin sentido. Nada tiene una explicación lógica. De hecho, ya se me olvidó qué era lo que iba a decir cuando comencé. El punto es que yo uso VIM (trabajo con “vi” desde los años 80s). En windows 32 bit, al hacer right click sobre un archivo aparece un hermoso “Editar con VIM”. Bueno eso no funciona en windows 64 bits. Esta es una de las muchas páginas que visité tratando de resolver el problema. (Hay que seguir el procedimiento y luego bajar 200 comentarios hasta abajo y leer que hay que hacer una corrección, la cual hace funcionar finalmente el procedimiento:

@=”\”C:\\Program Files (x86)\\Vim\\vim72\\gvim.exe\” \”%1\””

  • El problema de los problemas es que los problemas nunca están solos. Nunca tenemos un solo problema, siempre tenemos “varios” problemas. Yo tenía una copia de Windows 7 desde hacía meses (planificación, planificación), pero el sistema no cargaba. Generaba el error 0×80070017: no se encuentran los archivos o están corruptos. Esto puede ser cualquier cosa, el disco, el DVD, la unidad de DVD. Mi primer acercamiento al problema fue probar con otra unidad de DVD: Pero resultó que la unidad vieja estaba fallando (y hasta el sol de hoy, tuve que desecharla).  Después de varias pruebas de la unidad nueva, del disco, formato, y reformateo (Windows se encarga de formatear y generar las particiones si encuentra el disco sin particiones, así que esta es la forma correcta de proceder) bien, al final descubrí que era la media, el DVD. Así que decidí usar el camino complicado. Compré en mercadolibre una nueva copia con su licencia original, pero no quería esperar a que llegara. Así que bajé el .iso, (están aqui, es legal hacerlo). Y preparé un USB pendrive para bootear e instalar desde ahí. Para esto utilicé una herramienta llamada  Windows 7 USB/DVD Download tool, tal como se explica aquí. Esto se puede hacer a mano, pero no se debe tratar de usar otras herramientas como UNetbootin, no va a funcionar. La herramienta Windows 7 USB/DVD Download tool por más sospechosa que parezca en realidad funciona muy bien y hace el trabajo fácilmente.Nota: el error al momento de instalar también puede ser este: Error at “Expanding Files”: Windows cannot install required files. Por todas partes en internet se dice que esto puede ser un error con la memoria, cuando por ejemplo tienes 2 DIMMs, se puede generar este error. La solución en estos casos es extraer uno de los DIMMs. Así que en mi lista de sospechosos también estaba la memoria, pero la descarté rápidamente porque al bootear con el DVD puedes entrar a la consola de comandos y ejecutar la herramienta de diagnóstico de memoria o seguir este o algún otro procedimiento para verificar que está buena (o descubrir que está mala)

Conclusión

Como todo, Windows 7 tiene sus cosas buenas y cosas malas. Tiene el peor sistema de menus imaginable, y la barra donde aparece la dirección o path de la carpeta actual en el explorador es igual de horrible de manejar, pero puedo seguir viviendo con estas tonterías. Tiene cosas muy simpáticas como la actualización en tiempo real del contenido de otras ventanas cuando pasas el mouse sobre ellas en la barra de tareas (espero no tener que explicar qué es esto), puedes anclar los programas en la barra de tareas, la bandeja de aplicaciones, la que indica los procesos que se están ejecutando tiene también un mejor diseño. Así que yo le daría unas 4,5 estrellas.

¿Qué es esto?

07-05-2014 9:31 AM

Esto es un blog. Es un invento que surgió en la alborada de internet, 15-20 años atrás. Es como un diario, y mi visión sobre él es más o menos similar a la de Tobold.  Los blogs están pasando de moda, y los que tratan sobre juegos, quizás hasta más rápido que otros. Yo solía escribir todas las semanas, ahora apenas un par de veces al mes.  Pero sigue siendo como  un diario donde escribo mis pensamientos sobre cualquier cosa que estoy haciendo en el momento. Y así va a seguir mientras siga haciendo cosas. Yo escribo un diario personal desde que tenía 15 años, casi 40 años después sigo escribiendo en él. A veces transcribo aquí algunos párrafos que me parecen relevantes, no estoy seguro por qué. En fin, resulta una experiencia como cualquier otra, a veces tiene sentido, otras veces su significado permanece oculto. El ser humano es en sí una entidad complicada, porque, como llegamos a entender en algún momento de nuestra vida adulta, todo sigue igual dentro de un cambio permanente. Hay quienes no pueden entenderlo, y hay quienes escriben un diario personal donde describen el camino que han recorrido para lograr ese entendimiento. Este fin de semana pasado estuve todos los días con mi nieto de 10 meses, quien, con una sonrisa, y a veces con una carcajada, se ríe de mis esfuerzos por explicarle las cosas. Lo contemplo intrigado, pensando si él, a su vez, escribirá alguna vez sobre su abuelo. En fin, la vida se reduce a aceptar que no hay nada más inmutable que el cambio. Tan simple como es.

2048

06-05-2014 10:05 AM

Las experiencias del programador de 2048  (un juego de tiles con una adictiva dinámica a veces difícil de deducir) sobre cómo fue su experiencia al ver que su juego alcanzó la cifra de 23 millones de jugadores, y su dilema en si sacar provecho económico o no dado que es un juego basado en ideas y software desarrollado por otros. Interesante lectura.

Algunos enlaces en cualquier orden

24-04-2014 10:51 AM

Enlaces

Y todo lo demás son banalidades…

11-04-2014 8:30 AM

Con mucha sorpresa leo en mi diario personal lo siguiente:

(1513)

… Un dia agitado. Pero bien, lleno de ánimo, agradecido porque ahora, reflexionando sobre el tema de los muchachos que se hacen millonarios vendiendo juegos en el Apple store (me refiero a este artículo en newyorker.com), llego a la conclusión que no hay nada como mi humilde vida y que alguna belleza hay en ser un simple programador sin ningún rebullicio que soportar. Nadie sabe que existo, y hasta en eso hay algo extraordinario.

(1514)


A veces me sorprendo de lo hermosa y maravillosa que es la vida… no tengo ojos ni comprensión para asimilar su belleza…

Me refiero a esta noticia en el Newyorker. Claro, eso lo escribí el 4 de abril, el día en que mi vida se llenó de alegría hace 27 años con el nacimiento de mi hija. Pero, cómo asocio dos hechos tan dispares entre sí, es algo que ni una convención de psicólogos podrían explicar.  Muy en mis adentros, en las profundidades instintivas de mi especie, basta con traer vida a este planeta para que la alegría y la belleza renazcan, toda de una vez. Y todo lo demás son banalidades, y todo lo demás no tiene ninguna importancia. ¿Qué se puede comparar al amor maternal? ¿A la sonrisa de un hijo?