@ agnasg

agnasg


Cómo instalar Visual Studio 2015 y no morir en el intento

07-06-2017 3:04 AM

“Una struct simplemente se siente como una pila abierta de bits con muy poco en el camino de la encapsulación o la funcionalidad. Una class se siente como un miembro vivo y responsable de la sociedad con servicios inteligentes, una fuerte barrera de encapsulación, y una interfaz bien definida.” (“A struct simply feels like an open pile of bits with very little in the way of encapsulation or functionality. A class feels like a living and responsible member of society with intelligent services, a strong encapsulation barrier, and a well defined interface.”)

C++-faq-lite  (a propósito de la respuesta en Stackoverflow: Cuál es la diferencia entre struct y class)

Yo voy 3-4 años detrás de de los productos de Microsoft. Todavía sigo usando Win 7 en mi máquina de desarrollo (pero tengo 8.1 en mi laptop) Trabajo con Visual Studio 2013 (pero hasta hace poco usaba VS2010). Así que llegó el momento de migrar a 2015.  Ouch. ¿Por qué tardo años en migrar? Por lo difícil que es la experiencia. Por ejemplo la página de downloads de Microsoft ya apunta solamente a 2017, no hay un enlace claro de “no, yo no quiero 2017, yo quiero en este momento 2015, gracias”. Así que dependemos de google, lo cual nos lleva a esta página, la cual dice claramente “Visual Studio Community 2015”. ¿Correcto? No, el archivo está corrupto y no explica por ninguna parte que es un iso (si eso es lo que yo estoy buscando). Si buscamos “vs2015.com_enu.iso”en google llegamos a la página de stackoverflow que es a su vez un desastre. La respuesta correcta es este enlace https://go.microsoft.com/fwlink/?LinkID=623230. Pero hay que seguir las instrucciones en la respuesta de ray pixar (… y aquí está finalmente la página oficial de Microsoft, imposible de conseguir buscándola dentro del sitio). El download completo es de algo más de 24gb. Doble ouch!

Notas mezcladas

  • ¿Cómo se hace para avanzar al siguiente en una búsqueda en Word? CTRL-Page-Down.
  • ¿Por qué Lisp es tan amado y odiado? Una posible explicación en este artículo, donde el autor insiste que mientras C++ promociona la participación del grupo/comunidad, Lisp crea lobos esteparios capaces de producir un lenguaje similar a Haskel programado solamente con macros, por una persona trabajando en solitario. El resultado estará pobremente documentado y el resto de los lobos esteparios lo encontraran incomprensible, todo lo cual incrementará el amor y el odio por igual. Ni hablar de los que prefieren caminar juntos en manada, quienes ven la vida de los lobos esteparios como aborrecible, por no decir vergonzosa.  Interesante lectura. Enlace.
  • Descubrí con sorpresa JSON for Modern C++ de nlohmann. Yo he estado buscando alternativas para json, y recientemente tuve que implementar un parser dado que jsoncpp es demasiado pesado/complicado. Pero la solución de nlohmann es liviana y completa. Es interesante que al igual de jsoncpp no ofrece una solución para navegar un json si se desconoce la estructura. Por ejemplo, si tenemos algo así como “Employer”: [{“Name”: “Juan”,”Deparment”: [{“DptoName”: “Accounting”}]} you need to know the name of the field with the name of the deparment. There is no way you can find out programaticaly. Quizás estoy pidiendo demasiado, pero bueno. ¿Quién no?

Palabras dichas al viento en un campo desolado

10-05-2017 10:41 AM

Ashes of Creation (kickstarter) ya superó su meta y todavía le quedan 20 días para conseguir más dinero. No tengo opinión sobre este juego (ancient gamming noob y Gevlon lo han dicho todo) porque mantengo mi opinión que si quiero jugar un mago en un ambiente de fantasía simplemente sigo jugando wow, no tiene sentido repetir el proceso “quizás” en un ambiente “quizás” diferente. Además, no va a estar listo “quizás” hasta disciembre de 2018. Para entonces estaré demasiado ocupado con mi propio mmorpg.

Pero me llama la atención el esfuerzo de los desarrolladores en implementar nuevas soluciones a viejos problemas que ya han fracasado en el pasado: crear un ambiente que “cambie” o se “modifique” o “reaccione” con las acciones de los jugadores. La solución a esto es phasing tal como está implementado en wow (Gevlon), cualquier otra estrategia / promesa se va a quedar en el camino, quizás. Wizard101 tiene implementado algo similar  que afecta solamente al jugador por que he visto en Wysteria, y a pesar de tener el tiempo, los recursos y los programadores no han ido más allá. ¿Cómo es que repentinamente los programadores de  Ashes of Creation lo van a lograr? Esperaremos. Quizás.

La lista del mes: Conocimiento inútil.

  • Los nombres de los trasbordadores espaciales están en orden alfabético: Atlantis, Columbia, Challenger, Discovery, Endeavour.
  • Programar shaders usando el lenguaje hsls es como regresar a Algebra 1. Si no entiendes matemática, si no tienes una mente entrenada para pensar gráficamente, es mejor que regreses a trabajar como programador de sistemas administrativos.
  • En realidad, ahora que la euforia ha quedado como un tipo de efervescencia juvenil, no creo que las películas de Stanley Kubrick sean tan obras maestras como pensé en el pasado. Claro, excepto Barry Lindon. Y excepto La naranja mecánica. Y 2001. No, perdón, si son obras maestras. Algunos directores tienen sus momentos. Y hay otros como M. Night Shyamalan que tiene sus películas. Split es excelente. Es como su renacimiento ¿Cómo es que Kubrick y Shyamalan quedaron juntos en este texto? Notable. Friedkin es otro director que tuvo sus momentos de genialidad, y el recientemente fallecido Jonathan Demme. Geniales.
  • La vida no se abre caminos, la vida es el camino. ¿Hay algo más lleno de vida que un camino ideal?
  • Hablando de frases tipo etiqueta en el parachoque de los carros, leo en mi diario “Este es uno de esos capítulos que nadie va a leer. Yo no lo voy a leer. Nadie lo va a leer jamás ni siquiera buscando algo. ” lo que me recordó “Deja de vivir la vida como si fuera una novela. Nadie la va a leer”. Yo creo que Kafka vivió su vida con ese pensamiento devorándole por dentro. O riéndose de él.

psyblast event system

28-04-2017 11:43 AM

Me he acordado mucho de este artículo sobre un viejo bug en Eve, porque tiene que ver con un bug en el sistema de eventos de Eve. Un evento que se quedaba dormido sin que nadie pudiera descubrir la razón. psyblast tiene un sistema de eventos similar, y casi el 99%  del comportamiento de los npcs está programado utilizando eventos. Casi todos los patterns conocidos están implementado de alguna u otra forma, y ya no puedo decir cómo funcionan muchos de los eventos, si como un observador, un notificador, un tasklet especializado, usando workqueues, etc. No tengo idea.

Básicamente en el caso más genérico el sistema de scripting dispara un evento que es interpretado por el módulo correspondiente. Cada rutina ejecuta su acción y dispara un evento para revisar los resultados o simplemente termina esperando que alguien se encargue de las consecuencias (hay un flag levantado por algún tiempo indicando que algo pasó, si a alguien le concierne deberá encargarse o ignorarlo)

Todo esto es controlado por un sistema de scripting asociado a cada npc, que puede ser modificado on the fly. Hasta ahora no se me ha presentado el caso de dos npcs con el mismo script pero supongo que es posible así que pienso implementar librerías de forma que se puede hacer una llamada a un script desde un script. Sic.

El sistema es realmente complicado y cualquier modificación requiere una o dos horas de estudio para entender cómo funciona y cómo modificarlo. Está bien documentado pero bastan un par de meses de abandono (es decir, si paso dos meses sin ver el código) para que se convierta en una caja negra incomprensible y llena de magia. No tengo idea por qué los npcs se comportan como lo hacen, y examinar el código resulta en más asombro: no entiendo cómo el código en las rutinas generan ese comportamiento. Los eventos son asincrónicos, se ejecutan en algún orden y en algún momento y terminan generando conductas inesperadas. Uno de los npcs tiene en este momento algo demasiado parecido a un tick nervioso cuando alguna combinación de rutinas idle se ejecutan (son las rutinas que se deben ejecutar aleatoriamente cuando el npc está sin hacer nada). No tengo idea de cómo quitarle ese tick, a pesar de que le he dedicado varias horas a lo largo de los últimos 6 meses.

Shadow Build

27-04-2017 6:41 AM

Eso que parece el nombre de una película de suspenso o de terror es en realidad el nombre de una carpeta donde van a residir los archivos temporales y posiblemente los ejecutables de un proyecto. He estado usando el concepto en la migración a qt 5.6 porque por defecto al generar los ejecutables estos quedan dentro de la jerarquía de carpetas donde están los fuentes. Esto es inconveniente porque si requerimos comenzar desde el principio debemos estar seguros que estamos trabajando con una carpeta limpia o en blanco. Con el shadow build, la idea es tener una nueva carpeta por ejemplo c:\qt-build donde se almacenan todos los archivos generados en la compilación. Si no nos sirve simplemente borramos la carpeta completamente y empezamos de nuevo. Simple. De hecho ya yo había mencionado algo por el estilo en 2014 cuando estaba trabajando con qt-5.2 (lo dije en este post).

qt viene con algo que se parece a una forma de reset haciendo nmake confclean (o nmake clean (maybe)) pero al parece ahora no funciona (a mi nunca me funcionó ni en el 2014). Por ello el shadow build es una solución para hacer un “reset” a una instalación de qt.