Burdjia

Categoría Programación, 22 entrada(s)

Feed Rss, Atom

Tener las herramientas adecuadas

Es algo que ya he mencionado anteriormente, aunque ahora no son las mismas circunstancias.

Ayer mismo terminé un ciclo en el proyecto Allegro.pas (¡por fin!).  En este último empujón me ha dado por pensar en lo importante que es tener herramientas adecuadas, y me he dado cuenta de cómo he perdido el tiempo debido a algunas carencias.

Por ejemplo, para solucionar la compatibilidad con Delphi en varias ocasiones he tenido que hacer un mismo cambio (o conjunto de cambios) en muchos archivos, como cambiar una variable de configuración de todos los archivos de proyecto o cambiar un tipo de dato en los ejemplos.  En el peor caso el proceso sería:

  1. Cargar archivo.
  2. Buscar el punto en el que hacer el cambio.
  3. Hacer el cambio.
  4. Guardar archivo.
  5. Repetir desde 1. hasta que todos los cambios estén hechos.

Sí, los editores de código e IDEs incluyen opciones de "Buscar y reemplazar" que pueden ayudar, incluso a través de varios archivos, pero en ocasiones no es tan simple como buscar y reemplazar:  a veces no son exactamente el mismo en todos los archivos sino que depende de ciertas condiciones.

Afortunadamente me di cuenta enseguida del problema, y vi que era una ocasión de poner a prueba BAScript.  Y dio el tipo, ¡vaya si lo dio!

Creé un programa que permitía ejecutar un guion a un grupo de archivos, y añadí multitud de funciones de búsqueda y manipulación de textos.  Empecé con guiones como el siguiente, que se asegura de que, en un archivo de proyecto, el nombre del proyecto y el del archivo principal coinciden, lo que me permitía copiar el archivo de proyecto sin tener que abrir Lazarus ni Delphi para crear y configurar uno nuevo casi exactamente igual a los anteriores:

; Actualiza el nombre del proyecto.

; Obtiene el nombre del archivo.
FileName			; Nombre con extensión.
Filename CALL:StrLen 5 -	; Posición del punto.
6				; Longitud extensión + punto
CALL:RemoveStr $FileName	; Elimina extensión.

'ex_audio_simple' FileName CALL:StrPos 0 > IF GOTO:end FI

:loop
'ex_audio_simple' 0 CALL:FindTextLine
DUP IF
; Se encontró.
  #Linea
  Linea CALL:GetTextLine
  'ex_audio_simple' FileName CALL:ReplaceStr
  Linea CALL:SetTextLine
  GOTO:loop
FI
DROP

:end

Este es de los guiones más simples que utilicé.  El más largo es otro que se asegura de que diversas variables de configuración de los proyectos tienen los valores adecuados, además de añadir algunas unidades a los mismos en caso de ser necesario.  No un simple "Buscar y reemplazar" como el que veis, sino otro que comprueba condiciones previas y toma decisiones de si hacerlo o no hacerlo. 80 líneas, más o menos.

Este programa me ha resultado tan útil que seguramente lo añada como ejemplo en la próxima versión de BAScript, que la habrá.

Pero antes, también me ha salvado un poco otro de mis proyectos:  mlsde, ahora mismo sólo una prueba de concepto que hice hace algunos años para probar algunas ideas para un IDE tras descubrir la existencia de Sublime Text con idea de añadir guiones (scripts) al estilo de los viejos Turbo de Borland.

Normalmente trabajo con Vim y me funciona bastante bien, pero escribiendo el tutorial de la web eché en falta una forma más simple de moverme entre diferentes archivos, aparte de que los scripts al estilo Turbo me hubieran venido de perlas también.  Decidí usar mlsde a ver qué tal, y aunque me hizo la navegación entre archivos más fácil, lamenté no tener terminado el motor de guiones.

En conclusión, tengo que hacerme con mejores herramientas de trabajo para ser más productivo.  Evidentemente hablo de mejorar mlsde, ¿o qué os creíais? :)

Etiquetas: Ingeniería software

Categorías: Herramientas, Opinión, Programación

Versión 5.2.β.0 de Allegro.pas publicada

Desde hace unos meses he estado utilizando buena parte de mi tiempo libre trabajando en Allegro.pas, una biblioteca que permite utilizar Allegro con compiladores Pascal.  Finalmente hace unos días publiqué una nueva versión, la 5.2.β.0.  La principal (y casi la única) novedad es que ha vuelto la compatibilidad con Delphi.

Lo cierto es que la compatibilidad con Delphi estuvo desde el principio.  Allegro comparte variables a través de su DLL, algo que Delphi no permite hacer.  Para conseguir que funcionara creé una DLL extra con la que obtener los punteros a dichas variables.  Esto hacía las cosas bastante complicadas tanto de mantener como de usar (nunca es cómodo usar punteros en Pascal, mucho menos con Delphi) así que terminé eliminando la compatibilidad con Delphi, siendo la última versión que la tuvo la 4.2.2.  Sin embargo, dado que la rama 5 eliminaba las variables de la API, siempre he prometido que la compatibilidad volvería algún día.

Y por fin esa compatibilidad ha vuelto.  No es una compatibilidad del 100% ya que algún ejemplo no funciona en Delphi, y lo que funciona sólo se ha comprobado con la versión Delphi 10.2 Tokio Starter Edition, pero la mayor parte de Allegro funciona así que puede utilizarse para hacer juegos con Delphi.  Buena parte de este hito ha sido gracias al trabajo de Gregor A. Cieslak, cuyo trabajo puede verse en GitHub.

Otra de las novedades ha sido añadir archivos de proyecto para Lazarus de todos los ejemplos, algo que me habían pedido desde Pascal Game Development.  Espero que facilite lascosas.

Se puede bajar los paquetes desde la página de descargas.  Hace ya algún tiempo creé un proyecto en GitHub, pero no tengo ni idea de cómo funciona, así que no se parece a ningún otro proyecto de los que he visto en GitHub y seguramente no sea muy útil.  Si alguien tiene algún consejo sobre este o cualquier otro tema, que no dude en hacermelo saber.

En cuanto al futuro, todavía queda trabajo antes de poder quitar esa β de la numeración (al menos ya que quitado el α), corregir las incompatibilidades con Delphi, añadir nueva funcionalidad que está pendiente y completar la documentación.  También debería hacer algo con la web del proyecto, que es un poco desastrosa.

Etiquetas: Pascal, Delphi, Free Pascal

Categorías: Allegro.pas, Programación, Proyectos

Un repaso general

El trabajo para poner en funcionamiento el nuevo negocio que hemos montado Iván Sarnago y un servidor de ustedes hace que ande de acá para alla y todavía no nos hemos hecho con un horario estable.  Lo peor de todo es que en este tiempo he dejado de lado el tema de la información, y eso es un error gravísimo.  No es poca la gente que desde que empezamos a pensar en el negocio me ha preguntado qué hacemos, y yo no es que haya contado mucho.  En parte debido a un complejo de personalidad múltiple en la web, con tanto sitio, tanta red social y tanta cosa (es más, creo que tengo que replanteármelo) hace que en lugar de decir más, diga menos.  En fin, que creo que va siendo hora de dar un repaso general a todo lo que he hecho en este tiempo de silencio, así como de las cosas que están por venir.

Unrated Cómics

Unrated Comics no es únicamente el nombre que hemos elegido para la empresa, sino también es un portal desde el que se podrán leer y comprar cómics, tebeos e historietas de diferentes autores.  Esta es la parte en la que menos estoy implicado, aparte del asesoramiento tecnológico, pero quienes me conocen saben que esto de hacer dibujos no me es ajeno.  E incluso hice mis pinitos con un webcómic de cortísima duración.  De vez en cuando vuelvo a dibujar, y la verdad es que si consigo sacar tiempo me gustaría volver a intentar sacar una serie de tiras cómicas.

En cualquier caso, una vez esté abierto se podrá disfrutar de cómics de todo tipo, tanto gratuitos como de pago, más o menos adultos y juveniles, con superhéroes, distópicos, infantiles, con autores noveles y consagrados;  incluso alguno ha ganado algún que otro premio.

Burdjia.com

Varios son los proyectos con los que he estado trabajando últimamente.  Algunos de ellos no los he publicado todavía, otros ya están disponibles desde hace tiempo.  Por poner sólo unos pocos ejemplos:

Tengo más proyectos informáticos, pero los más interesantes los dejo para la siguiente sección.

Piopio Juegos

Desde que empecé en esto de la programación, hace ya tanto que ni me acuerdo, he estado haciendo mis juegos.  La mayoría de ellos no merecen mención alguna, sin embargo, dentro del proyecto de Unrated Cómics tienen cabida, como empresa de entretenimiento que es.  Por eso creamos esta firma:  Piopio Juegos.

Por ahora, sólo hay un proyecto firme:  Green Onions: The I-Ching Saga, un juego retro basado en el cómic homónimo de Iván Sarnago (ya veis, todo queda en casa).  Ya ha habido gente que ha probado las versiones previas, y dentro de muy poco podréis disfrutarlo gratis en vuestras pantallas.

Es el primero, pero no el único.  Enseguida estarán disponibles los juegos que realicé para sendas convocatorias Ludum Dare, y también hay un futuro prometedor para Momen 3D: Fall of Mankind mi aportación al 3rd Pascal Game Development Challenge.  Y no son los únicos juegos planificados.

Conclusión

No está todo lo que es, falta El Saloncito del Cómic y el Café Cómic, pero esto se ha alargado ya mucho.  Otro día completaré el repaso.  Porque la intención es no dejar esto tan desangelado como hasta ahora, con parones de uno o más meses.  Claro que hablar por hablar no está bien.  Hay que poner cosas interesante.  Así que si tienes preguntas, dudas o sugerencias, no dudes en utilizar los comentarios para hacérmelas llegar.

Hasta la siguiente.

Etiquetas: Pascal, Lazarus, SourceForge

Categorías: Allegro.pas, Programación, Proyectos, Videojuegos

Pensando en el siguiente paso

Ayer estuve revisando una extensión para Gesbit que facilita la inserción de vídeos en los artículos, para el blog de El Saloncito del Cómic, y probando añadir algunos elementos HTML5 a uno de los formularios del panel de control de dicho gestor de blogs.

La cuestión es que creo que ha llegado uno de esos momentos en los que hay que decidir.  Como ya dije en en algún artículo anterior, la versión 3.0 entraba en mis planes desde que rescaté el proyecto,  Sin embargo estoy posponiéndolo mientras se pueda mejorar la versión actual.  Aun así hay carencias que son difícilmente mejorables sin arriesgarse a romper por completo el código actual, como es el que sólo permita el uso de bases de datos MySQL/MaríaDB, o que el filtro HTML identifique algunas etiquetas HTML5 como no deseadas, independientemente de lo que se ponga en la configuración, además de algunas incomodidades que no impiden que las bitácoras funcionen mal, pero hacen que no sea cómodo de utilizar y actualizar (esto último, no sólo se refiere a actualizar entradas sino también a la modificación del código fuente).  Por ejemplo, si Gesbit dispusiera de un sistema que permitiera añadir fotografías con la misma facilidad que vídeos seguramente pospondría aún más el inicio de esta versión 3.0, y aunque podría intentar añadir una extensión al efecto creo que esta característica sería más eficiente si formara parte del núcleo del gestor y no como un añadido.

Así que, visto lo visto, seguramente cree una nueva rama de desarrollo y comience la planificación y desarrollo del núcleo de esta nueva versión 3.0 de Gesbit.

Categorías: Gesbit, Programación, Proyectos, Web

¿Sirven las "cookies" de algo?

Desde hace un tiempo somos más conscientes de su existencia, porque en cualquier página en la que entras (salvo las que yo he creado, al parecer) te aparece un molesto mensaje indicando que se usan. Y digo molesto porque normalmente ocupan parte de la página, y en alguna ocasión me he encontrado con que no hay un botón que permita quitar el aviso. Me estoy refiriendo a las huellas o cookies.

La respuesta a si sirven de algo debería ser Sí, claro que sí, pero si he de ser sincero, no estoy yo muy seguro. Y no porque no crea que sean útiles, porque lo son, sino más bien por el uso que se les da normalemente. Según rezan muchos de esos mensajes, sirven (...) para mejorar la experiencia de usuario. ¿De qué forma podrían hacerlo? Bueno, las huellas son contenedores de datos que se almacenan en el ordenador cliente (es decir, en nuestro ordenador), frente a las variables de sesión, que se almacenan en el ordenador servidor (es decir, en el que está almacenada la web que visitamos). De esta forma, los programas pueden consultar información sobre el visitante sin tener que ocupar espacio en el servidor. Esta información puede ser muy variada: la fecha de la visita, qué página fue la última que visitó, qué búsquedas realizó... Cualquier cosa.

Si tenemos una tienda online, las huellas nos ayudan muchísimo. El programa puede tener la lista de artículos consultados y de esta forma deducir qué otros artículos puede recomendar. De hecho, esto es lo que se supone que hace GoogleAds, que se encarga de meternos anuncios en todo tipo de webs alrededor del orbe. Es decir, cuando una web es cargada, esta hace una petición a Google Ads para obtener un anuncio, y este mira en las huellas disponibles para decidir qué anuncio poner. Así, se supone que si hemos comprado cierto producto GoogleAds lo sabrá y no repetirá ese anuncio una y otra vez, pero mostrará otros productos que, según ciertas esotéricas fórmulas antroposociológicas, deberían interesarte.

Por desgracia, esto rara vez funciona. Y a las pruebas me remito:

Chaval de la mochila

Algo marcha mal, ¿no? Bueno, la verdad es que hay varias posibles razones por las que GoogleAds podría equivocarse. La configuración del navegador, que borra los datos de forma periódica o no permite a la aplicación a acceder a esas huellas, por ejemplo, es la más común. Otra es que, símplemente, estamos utilizando un navegador o equipo diferente al que usamos para comprar esas entradas o ese juego. Pero no siempre es así, y aunque nuestro navegador no borre sus huellas, permita acceso total a ellas a GoogleAds y estemos usando el mismo navegador, esta siguación no cambia. La cosa empeora porque no hay una norma de uso para las huellas. No me refiero a que no exista un ley, que la hay, sino a nomenclaturas de nombres y formatos de contenido comunes para su uso por parte de los programas. En definitiva: que GoogleAds no siempre sabe qué páginas hemos visitado, o qué hemos comprado. Y me temo que esta es la principal razón.

En definitiva, ¿sirven para algo? Pues en mi opinión no, porque no se usan correctamente.  Antiguamente, recuerdo que había páginas que las usaban para permitir al visitante cambiar, por ejemplo, el estilo de la página y leerla mejor.  Actualmente ni siguiera ofrecen esa posibilidad.  Son un incordio y sólo sirven para ocupar espacio, porque la inmensa mayoría de las web no las necesitan, como tampoco necesitan jQuery o Flash. Y si a eso añadimos que nuestros legisladores no tienen ni idea de lo que son, terminamos con un lío de tres pares.

Termino agradeciendo al Chaval de la mochila por permitirme usar su mensaje como ejemplo.

Notas al pie:

Permítaseme este arrebato de chovinismo, pero es que la palabra cookie siempre me ha sonado fatalmente mal, aparte de que tampoco sé muy bien qué tiene que ver una galleta con una variable.

Un colega me comentó que, aunque su web no las usaba, se vio obligado a poner el aviso de que sí porque le insistían desde el ministerio en que sí las usaba, porque era una web y por eso las usaba...

Otros:

Categorías: Artículos, Opinión, Programación, Web