@ agnasg

agnasg


Misterios

07-11-2017 4:48 AM

Yo llevo bitácoras de desarrollo para cada proyecto. Están en un archivo llamado ProjectSpecifications.txt (siempre es el mismo nombre para identificarlo rápidamente). Constituyen depósitos de momentos importantes en el desarrollo de los proyectos, los bugs, sus soluciones, historias cortas (de una o dos frases) que narran las vicisitudes que  encuentro en el camino.

Ayer encontré esta perla en la bitácora de khpx (una aventura espacial, con satélites asesinos):

[code]

04-06-2012  · Ver este video: http://www.wimp.com/coldplaywristbands/
implementar el efecto del snake que se mueve arriba de las tribunas
casi cerca del techo. 10 horas contínuas de php/javascript coding.

[/code]

Se refiere a otro proyecto (posiblemente tilewar, una mezcla de pacman y leemings), porque khpx está desarrollado en C++, nada de php/javascript. Lo interesante y misterioso es que el video no muestra ningún efecto de una snake cerca del techo. Supuse que por algún motivo habían cambiado el video correspondiente al enlace (es un enlace de 2012, hace 5 años), pero una búsqueda rápida en youtube (hay varios videos de esos conciertos de colplay con las pulseras luminosas) reveló que no hay ningún efecto de snake en el techo. Pero… en el mencionado video se ve a alguien señalando al techo.

Misterio

¿Qué pueden hacernos? ¿Despedirnos?

12-10-2017 2:15 PM

Leí con cierta despreocupación esta historia sobre una compañía abandonando la creación de juegos porque Steam removió sus juegos… 200 de ellos. La compañía está clasificada, de acuerdo a la respetable discusión en reddit, como shovelware, que es como se llaman aquéllas compañías y sus productos que producen juegos “duplicados” (muy similares entre sí) donde básicamente hay algunos cambios en las texturas y los modelos y nada más. La historia me recordó básicamente aquélla discusión sobre The Slaughtering Grounds y Digital Suicide que mencioné hace algún tiempo en  este post. Una empresa más que produce juegos de mala calidad quejándose de que desechen sus juegos. Nada nuevo bajo el sol. Pero, espera un momento ahí, Gevlon no piensa igual. Para él, esta historia hay que leerla de otra forma: se trata de una empresa, Valve, que tiene un monopolio sobre la distribución de juegos, cercenando los derechos de una empresa. Interesante. ¿Interesante? Sigamos…

Ahora esta conducta me recuerda algo que sucede con demasiada frecuencia en empresas de internet, por ejemplo la forma como paypal congela cuentas porque sospecha que una transacción es fraudulenta, lo cual no me parece malo, el problema es que puede tardar meses en descongelar la cuenta en casos en que la operación es ok, es decir legal. O cuando freelancer.com implementa el bendito “bid quality score” un mecanismo supuestamente para combatir el spamming con los bids pero que perjudica a moros y cristianos por igual. O cuando  upwork suspende cuentas como se narra en es este artículo, de una forma poco realista y poco razonable. Y cuando las discusiones sobre el tema avanzan, la conclusión es que ellos lo hacen porque pueden hacerlo y porque en todos estos casos ellos no están ganando real, es decir, no les conviene. Y los usuarios no tienen forma de apelar, y si lo hacen es simplemente una pérdida de tiempo.

Yo no ando en la onda antimainsteam, pero a veces las justificaciones para luchar contra las grandes corporaciones se hacen difíciles de rebatir.  Y lo digo yo que en mi oportunidad en mi otra vida salí como botellazo de mesonera en aquél desastre llamado la burbuja de las .com Si no saben de qué hablo les recomiendo esta película de Ben Affleck, la versión sería de la sátira de Jim Carrey Las aventuras de Dick & Jane.

Usar el cerebro

10-10-2017 6:27 PM

Súbitamente, sin aviso ni protesto, comencé a trabajar de nuevo en mi juego, luego de un par de meses de casi alguna actividad (porque “casi ninguna” es mucha, ¿correcto?) El punto es que recordé por qué lo había abandonado en un alarde de desidia: tiene un bug, uno de esos bugs incomprensibles que no puedes detectar con el debugger, sino que, lamentablemente, requiere que uses el cerebro (sí, eso duele, lo se). El problema es  que ni siguiera el bug se comportaba uniformemente de una versión a la otra. La 139 funcionaba, la 140 con el CSpell de la 139 también, pero las 141 con  el CSpell de la 139 no funcionaba pero los cambios de 140 -> 141 no eran (o no parecían relevantes al bug), era, en fin, una pesadilla incomprensible.

Pasé a una fase minuciosa de comparación de versiones dado que no he estado utilizando git en este proyecto. Lo usé con un roguelike hace años pero por razones que no recuerdo no lo quise usar más. Quizás para hacerme la vida más difícil (¿por qué hacer las cosas fáciles?). Comencé a buscar como comparar directorios porque es algo que no hacía desde hace tiempo. Probé con

[code language=”bash”]

find /dir1/ -type f -exec md5sum {} \; > dir1.txt
find /dir2/ -type f -exec md5sum {} \; > dir2.txt

diff dir1.txt dir2.txt

[/code]

que simplemente indica de una forma poco amigable cuáles archivos son diferentes en los directorios “dir1” y “dir2″.

Luego encontré que con git también se puede hacer sin necesidad de un repositorio:

[code language=”bash”]
git diff –no-index dir1/ dir2/
[/code]

Pero esto tampoco ayudó mucho. Así que esta era una excelente oportunidad para reinventar la rueda, y surgió en pocos minutos un script bash que compara dos directorios:

[code language=”bash”]

#!/bin/bash
# Bourne shell script
# compare two folders
# select files
if [ $# -ne 2 ]; then
echo "USAGE: compare folder1 folder2"
exit
fi
p1=$1
p2=$2
files1=( `ls $p1` )
files2=( `ls $p2` )
# n=${afiles[*]} is not available everywhere…
# or maybe yes
## how many are
n=${#files1[*]}
idx=0
while [ $idx -lt $n ]
do
diff -q "$p1/${files1[idx]}" "$p2/${files2[idx]}"
let "idx = idx + 1"
done

[/code]

Con ayuda de este script logré encontrar el bug, finalmente. Resulta que “virtual bool OnEvent(const SEvent &event) en class MyEventReceivervirtual bool OnEvent(const SEvent &event) en class MyEventReceiver llama a CSpell::GetClass(), y esto accede a varias funcionalidades del motor gráfico ANTES de que el motor esté arriba. ”

El éxito merecía un descanso y seguí viendo en Netflix “Orange is the new black” que trata sobre unas delincuentes en una cárcel, que ciertamente suena deprimente, pero en realidad es la serie más graciosa que he visto en mucho tiempo (desde Californication, creo). El punto es que mi cerebro comenzó a relajarse, y relajarse, y relajarse y entonces “¿Yo no tenía una herramienta para comparar directorios, con ventanas, full funcionalidad, etc?”. No me acordaba del nombre pero sí del ícono. Lo busqué en el escritorio, en el menú, y finalmente en programas y características en el panel de control. WinMerge. Perfecto para comparar directorios, fácilmente, relajado. Lo anoté en mi chuletario, en la bitácora, etc. para que no se me vuelva a olvidar. Porque parece que tenía años que no se me presentaba un bug de este estilo y que requiere cirugía de respaldos. Y usar el cerebro. ¡Ouch!

Cómo forzar que un sitio wordpress utilice https

07-10-2017 5:08 PM

Forzar el uso de https en un sitio wordpress. Luego de hacer el setup de  SSL (instalar el certificado, etc) usted debe cambiar el  .htaccess  para que incluya lo siguiente:

[code language=”html”]

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^micronosis\.com [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.micronosis.com/$1 [R,L]
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

[/code]

Aquí hay que cambiar example por el nombre de su dominio.

Si todavía chrome o firefox están reportando que hay imágenes inseguras (seguramente porque están siendo referenciadas como http://www.example.com/images/imagen.jpg) hay que agregar en la carpeta images o donde quiera que sea que están las imágenes un .htaccess con el siguiente contenido:

[code language=”html”]

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} folder
RewriteRule ^(.*)$ https://www.example.com/folder/$1 [R,L]

[/code]

Aquí hay que cambiar example por el nombre de su dominio.

Luego de estos cambios chrome debe indicar que el sitio es seguro.