Entradas con la etiqueta ‘Programación’

Velneo, ¿el futuro?

Viernes, 26 de febrero de 2010

Cuando llevas mucho en este negocio, te toca probar aunque sea superficalmente casi todas las herramientas, y mas una herramienta, que como sus creadores dicen, es la forma mas rapida, intuitiva y facil de desarrollar aplicaciones, si ademas, segun ellos mismos dicen que la avalan instituciones como el ejercito y sitios asi, bueno y dado a que debo ser el tipo mas ingenuo de la tierra y despues de 15 años en el rollo este me sigo creyendo estas cosas pues lo minimo es probarlo.

No entrare en que opino del entorno, de ese modelo de programacion basado en, yo que se, el caso es que por un motivo que no viene al caso tuve la que analizar una aplicacion hecha en velneo, la primera traba que me encontre fue que la base de datos tenia una clave de usuario y bueno no sabia nada del usuario que tenia permisos para entrar, siendo el sistema mas potente jamas creado, parecia una mision imposible, quizas desempolvado el viejo desesamblador, cazando los mensajes de windows, o aplicando ingenieria inversa podriamos ver algo, bueno todo esto o quizas borrando un fichero con extension .usr.

Pues si simplemente por borrar el fichero este, ya podias entrar sin problemas, no entrare mas en este tema, el entorno es una cosas realmente compleja, principalmente porque no usa ningun modelo de programacion conocido, quiza si sabes nada de programacion te resulte facil si sabes algo te sera mas complicado, luego utiliza un sistema de scripts, que se escriben es pseudo-castellano, que realmente producen unas sentencias riduclas.

En mi opión me parece una perdida de tiempo invertir en este tipo de entornos, a fin de cuentas son entorno propietarios con muy poco calado dentro de los profesionales, lo que desde el punto de vista del programador profesional, le hace invertir en algo que no tiene demanda por que probablemente acabe estancado en un modelo de desarrollo con muy poca demanda. Y por otro lado esta el cliente, que esta exponiendose su inversion en un desarrollo basado en una herramienta que no tiene un futuro muy claro, y que dificilmente puedra ser migrado a otro sistema.

Existen muchos evangelizadores del velneo, pero realmente es siempre el mismo discurso una redefinicion de lo que es programar y presentaciones del tipo Mac World, salvando las diferencias ;)

http://www.youtube.com/watch?v=3abnBQKJURI&feature=related

Realmente creo que velneo es un sistema para hacer pequeñas aplicaciones y no dudo que tenga su mercado, se me ocurre que empresas que no tengan recursos para desarrollar aplicaciones pueden conseguir una licencia y realizar sencillas aplicaciones, y sin muchas aspiraciones, pero no puede considerarse como una herramienta de programacion.

Dicen que solamente se puede hablar de un entorno de programacion cuando este es capaz de poder programarse asi mismo, dudo mucho que velneo sea capaz de poder programar algo como velneo.

Aunque no tenga que ver con el propio producto, me llama la atencion el caracter de convencimiento de los que trabajan con esta herramienta, casi todos los que he conocido tienen una profunda fé en este sistema cercanos a secta, con una devocion por la predicacion de la plataforma, y todo esto liderado por el “Arquitecto”.

Y bueno para ser justos, acabare con dos cosas que me parecen buenas, la primera que la empresa vende una cosa llamada plantillas, que son aplicaciones acabadas que solamente hay que configurarlas para el cliente, lo que te permite vender una solucion acabada invirtiendo unas pocas horas, y la segunda es que es raro que “pete” la aplicación.

PDF    Enviar artículo en formato PDF   

Mapa de normanles ;)

Martes, 19 de agosto de 2008

¿Alguna vez habías oido el termino normal maps, o mapa de normales?, sin has visto algun video juego moderno, casi con seguridad que habrás visto los normal maps, la sensacion de rugosidad, bajos relieves en paredes, armaduras con detalle, , aunque los fabricantes de chips, vienen contando los trillones de poligonos que pueden manejar, el tener que renderizar constantemente estas texturas seria un trabajo tedioso y realmente enlentecedor para los motores graficos, asi que el truco es archivar de alguna la informacion mas importan de un relieve, que viene a ser la informacion de altura sobre el plano, es decir la normal.

Aplicando el normal-maps a la imagen original

El comienzo de esta tecnica se llamaba bump, abultamiento, y persolamente lo utilice en el 3d-max, yo lo utilizada para mejorar el modelo, aunque no necesitaba velocidad ya que el renderizado podia llevar horas, e incluso dias, en aquel viejo 386 con coprocesar matematico. En la tecnica bump se utilizaba un grafico con niveles de grises, que se utilizaba para dar un efecto de estampado a la superficie sobre la que se aplicaba, digamos que el blanco seria el altura 0, y el negro altura 1, entre el blanco y el negro se creaban 256 niveles alturas. Esto hacia que p.e. Si usabamos un texto, negro sobre fondo blanco en una superficie plana esta fuese interpretada como un mapa de niveles, y en el renderizado final apareciese un repujado del texto. Sin esta tecnica habria que meter muchas horas para generar una superficie de alambren que hiciese el mismo efecto. Pero el modelo bump, solamente daba informaicon sobre una coordenada, pero como todos sabemos una imagenen en color esta formado por 3 colores basicos, rojo, verde y azul, lo que se llama RGB (Red, Green Blue), asi que por que no usar la informacion de cada canal como valor de profundidad.

Por lo tanto un mapa de normales, aporta una información sobre la normal de cada coordenada, y viene a ser un gráfico similar al original pero con sus paramentros RGB, alterados, es decir si en el gráfico original la información RGB, determinan el color, en el mapa de normanles:

  • R normal de X
  • G normal de Y
  • B normal de Z

Con esta informacion el motor grafico, pintara la superificie el grafico orignal sobre el plano, y luego usar los parametros del mapa de normales, junto con la fuente de luz para crear las sombras en relacion con los valores de las normales

Esto principalmente se usa para acelera el renderizado de la superficie en tiempo real, con un efecto realmetne creible. El problema es que es una simulacion, el modelo sigue siendo plano asi que cuando una superficie se observa desde una perspectiva cercana a 180º, lo mas probable es que se vea una superficie plana, con un monton de extrañas sombras.

Si lo que se quiere es generar una textura rugosa a veces se puede generar directamente desde el grafico plano, con programas como photoshop, ahora si lo que se precisa es de una informacion mas precisa como los detalles de una cara, entonces probablemente el diseñador opte por usar el modelo completo en 3D de la cara y que sea la misma herramienta de generacion la que genere el mapa de normales.

http://wiki.blender.org/index.php/Manual/Bump_and_Normal_Maps

Crear PDF    Enviar artículo en formato PDF   

Calidad de software

Viernes, 20 de octubre de 2006

Durante los últimas semanas me estoy concienciando sobre el tema de la mal llamada calidad del software, en mi opinión la calidad siempre será la misma, porque esta mal llamada calidad de software no pretende mejorar el “ingenio” o eliminar la “torpeza”. Pero si que es cierto que bajo “calidad de software” al menos se alojan una serie de técnicas que no pueden ser cuestionadas, y evitan en gran medida el descontrol y la anarquía que suele aparecer en los proyectos medios.

Una vez tomados lo requisitos creo que las herramientas fundamentales para el control del desarrollo de un equipo, son:

  • Un sistema de control de versiones
  • Bugtracker
  • Dailybuild

Control de versiones

Quizás unos de los puntos mas importantes y que, sinceramente, la mayoría de las empresas olvidan, es el sistema de revisiones, por lo que he visto la mayoría se conforman con una carpeta compartida, donde se dejan todos los fuentes (con un copy de toda la vida), luego se añade un sistema de backups, mas o menos fiable, que se realizará todos los dias rezando porque no se necesite utilizar. Como cada programador se encarga de un módulo pues no se producen colisiones por lo que todos contentos. Los errores se comunicaban en post’it, y una vez al mes o cuando toque se hace la compilación conjunta y se crea el instalador, vamos el setup.exe de toda la vida. Este sistema funciona, ¿porque no?

El principal problema esta cuando se comparte el código de verdad, es decir cuando existe varios programadores que manejan una area común, como por ejemplo librerías. En este caso el ultimo en pasar los datos machacaría a los demás. Otro caso seria la recuperación de versiones anteriores, y por supuesto el control de ramas de aplicación, es decir podemos estar trabajando en la version 4.0 beta mientras tenemos la 3.5 como estable, la 4.0 puede ser una rama de la version 3.0 cuando la 4.0 esta en version estable se puede fisionar con la 3.5

Una vez convencidos de la necesidad de un sistema de versiones ahora queda, escojer uno, y como en todo este negocio, cada fabricante tiene el suyo, Sharepoint, cvs, svn, etc., el sistema de revisiones mas extendido era el CVS, ahora es sustituido por subversion o SVN, subversion tiene una mejora importante sobre CVS, que permite el ser montado sobre un servidor apache, de tal forma que el codigo puede ser compartido a traves de un servidor web, convencional. Las actualizaciones de los fuentes se realizan de una forma realmente rápida, y gracias a la herramienta TortoiseSVN, ademas es realmente facil. En principio yo tengo instalado este sistema bajo un servidor apache2, montado en un linux, y bajo una conexion adsl con ip fija, lo que me permite el trabajar en la oficina y fuera de ella.

El segundo punto fue instalar un bugtracker, que no es mas que un punto de encuentro de betatester y programadores, yo instale flyspray, una aplicación de desarrollada para un entorno LAMP, y realmente da buenos resultados.

En tercer lugar desarrolle las dailybuild, las compilaciones diarias, las cuales mediante un script, bastante cañero, permite el compilar, generar el setup up, subir al espacio web, y modificar la página, permitiendo ver los cambios en la nueva versión.

Con todo esto lo que hemos conseguido es un mejor control del proyecto, permitiendo no molestarnos, y dirigir el desarrollo a puntos especificos, pero el proyecto sigue siendo el mismo con la misma calidad, por eso me parece un poco pretencioso el definir los nuevos sistemas como “calidad” del software.

PDF Creator    Enviar artículo en formato PDF