domingo, 26 de febrero de 2012

Efecto 3D sin lentes: Nintendo 3DS

La mayoría de nosotros hemos visto películas 3D en el cine a estas alturas. Pero para quienes no (si es que acaso hay alguien), rápidamente explico en que consiste este tipo de películas.

En las películas grabadas en modo 3D estereoscópico, o simplemente películas 3D, se intenta recrear la misma percepción de las cosas que tenemos visualmente en la vida real, gracias a que tenemos no uno, sino dos ojos separados que ven de frente. Al tener dos ojos, percibimos una imágen con cada uno de ellos, esta imágen varía debido a que cada ojo ve desde su propio punto de vista. Basta con taparnos un ojo y ver lo que nos rodea sin movernos, y luego taparnos el otro (y abrir el primero, claro) para darnos cuenta de la diferencia de perspectiva entre las dos imágenes que vemos.

Nuestro cerebro al percibir dos imágenes es capaz de analizar y distinguir la profundidad de las cosas por medio de la comparación que hace de estos dos puntos de vista, gracias a lo cual vemos en "3D".

Para que las películas logren este efecto, es necesario hacer que el espectador pueda ver una imágen independiente en cada ojo, que representen la escena con la misma variación de la perspectiva que la que tendría uno al verla en vivo; es decir, es necesario grabar todo con 2 cámaras separadas una de la otra a una distancia similar a la de los ojos humanos (aunque se puede jugar con esta distancia para conseguir diferentes efectos de profundidad). Por otro lado, es necesario filtrar una sola imágen por ojo. Hay varias formas de lograr esto. Las más comunes es mediante el uso de lentes, que bloqueen una de las dos imágenes en un ojo, y la otra en el otro ojo, logrando así que el cerebro pueda comparar ambas imágenes y percibir la profundidad de la escena. Los filtros pueden estar basados en colores, o frecuencias y otras técnicas.

Sin embargo recientemente Nintendo lanzó su consola portátil Nintendo 3DS, sucesora del Nintendo DS, y que entre sus atractivos principales está el soporte de 3D estereoscópico sin el uso de lentes especiales. ¿Es verdad? ¿Es el mismo efecto que puedo esperar de películas 3D en el cine o TV's 3D que si requieren lentes? ¿Cómo se logra esto?. Bien, pues para responder en orden, efectivamente es verdad, y si, es el mismo efecto que se puede ver en películas 3D en el cine, y en TV's 3D, y para quienes no lo crean o quienes ya lo hayan visto y no crean que es el mismo efecto (hay quienes afirman y juran que no es 3D), dejenme decirles que están mal. No es sólo una opinión, sino un hecho basado en evidencia. ¿Como estoy tan seguro de esto? Bueno, para eso contesto la tercera pregunta: ¿Cómo se logra el efecto sin lentes?.

El efecto 3D del Nintendo 3DS se logra gracias a su "display de barrera de paralaje". A grandes rasgos, existe una barrera intermitente que bloquea la luz trasera del lcd en puntos clave, de forma que la mitad de los pixels que se ven con el ojo izquiero son distintos de los que alcanza a ver el ojo derecho, por lo que que si la pantalla se ubica en medio de nuestros 2 ojos, el ojo izquierdo percibirá la imágen proyectada por los pixels que proyectan la imágen hacia la izquierda y el ojo derecho percibe la imágen de los pixels que proyectan hacia la derecha. Esto quiere decir que el efecto 3D se logra solo si vemos el 3DS directamente de frente. Si lo ladeamos, veremos ambas imágenes con ambos ojos o solo una, dependiendo del ángulo, y arruinará el efecto. Sin embargo, al lograr mostrar una imágen distinta en cada ojo, en donde cada una muestra un escenario 3D con un punto de vista ligeramente variado, conseguimos el mismo efecto de la vida real, o de las películas 3D.

Si lo ves y no lo crees, compruébalo. Toma el 3DS, viendolo directamente de frente, y cierra un ojo. Luego cambia de ojo. ¿Ves la diferencia del punto de vista? Eso es 3D estereoscópico. No hay de otra.

¡Saludos!

martes, 2 de marzo de 2010

Actualización sobre MonoDevelop

En mi último post, mencioné que MonoDevelop no era capaz de depurar completamente sitios en ASP, sin embargo, después de haberle dado otra mirada recientemente, vi con agrado que ya ha salido la versión 2.2 de este genial IDE, y ahora provee un depurador completo para aplicaciones ASP.NET. Además de que ya es multiplataforma.

Si quieren echar un ojo ustedes mismos, vayan a http://monodevelop.com/.

viernes, 26 de febrero de 2010

Visual Studio y Monodevelop

A la hora de trabajar en los proyectos de desarrollo en que me he visto involucrado profesionalmente, siempre lo he hecho con Visual Studio 2005/2008, puesto que desarrollo en .NET. En mis experimentos de migración total hacia Linux, he librado algunas pequeñas batallas. Una de ellas es el tratar de correr mis proyectos de ASP.NET en Linux, y me he llevado sorpresas tanto agradables como desagradables.

Entre las sorpresas agradables, es que puedo migrar casi la totalidad de mis aplicaciones nativas de .NET a mono sin problemas. El problema es que cuando las aplicaciones involucran elementos de terceros tal como conectores o drivers para bases de datos específicas, no siempre se tiene buena suerte. En mi caso, el problema fue Informix. Al intentar conectarme a una instancia de Informix Dynamic Server 9.4, la única opción existente al menos al momento de mi prueba, que fue hace unos 3 meses, era utilizar UnixODBC para conectarme a través de ODBC. Lo malo es que el driver ODBC de Informix limita en gran medida la funcionalidad a la que podemos acceder con el driver nativo de .NET, y como muchos de mis procedimientos ya estaban diseñados de forma que se aprovechan ciertas características, tendría que reprogramar varias cosas para hacerlo funcionar con el driver ODBC, y eso sin mencionar el menor rendimiento del mismo.

Otro punto malo fue que los controles de terceros (Infragistics .NET Advantage 2006) no se pueden migrar a mono, ya que aun no hay una implementación adecuada de esta suite. Lo mismo sucede con la suite de Telerik RadControls para ASP.NET, aunque de esta última ya existe una nueva versión con soporte para Mono. Sin embargo, no pensaba al menos por el momento en volver a pagar por la licencia de la suite.

Otro punto débil que aún tiene la plataforma para muchos programadores (a lo mejor para muchos no) es el IDE. MonoDevelop es un buen IDE por sí solo, pero si nos ponemos a hacer la comparación con Visual Studio, aún le falta mucho camino por recorrer. El depurador aún no es capaz de depurar aplicaciones de ASP, aunque ya está en desarrollo e incluso existe una versión anticipada del mismo.

Fuera de eso, la mayoría de aplicaciones se pueden migrar sin problemas, demostrando el gran potencial de esta implementación de la plataforma de .NET en Linux.

El proyecto Mono es muy prometedor, e incluso ahora es bastante bueno, creo que toda una proeza, ya que todo fue reimplementado; sin embargo creo que finalmente es Microsoft quien pone la pauta cuando de desarrollo en .NET se trata, por lo que al parecer Mono y MonoDevelop están destinados a seguirle siempre los pasos. Con esto me refiero a que las nuevas características se encontrarán primero en Visual Studio y Mono tardará un tiempo en implementarlas, como sucede con las versiones de Silverlight y Moonlight en Mono.

El lenguaje C# es muy práctico, y me gusta mucho utilizarlo para programar, es perfecto para aplicaciones de negocio y de usuario, pero para cosas más "serias", en mi opinión C y C++ siguen siendo los indiscutidos reyes.

martes, 8 de septiembre de 2009

Una larga historia... de sistemas operativos

Windows, el Sistema Operativo mayormente utilizado en el mundo, es el sistema que tiene felices (o al menos no infelices) a millones de usuarios en el mundo. Pienso que es una buena opción, que mediante tácticas de negocio se ha ganado el lugar en el que está ahora.

Sin embargo, por allá del año 1998, comienzo a escuchar sobre Linux, un sistema que en aquel entonces tenía entendido era para ingenieros y científicos, que necesitaban herramientas muy específicas, y que además tenían que correrlas en un ambiente ligero "libre de contaminantes". Además escuchaba que era muy seguro y estable, y "gratis". Pero mi interés en ese entonces por esa joya fue poco.

Un día paseando por una de las librerías de Sanborns encontré un pequeño libro que tenía en la portada "Red Hat 7" venía con un CD de instalación de dicho sistema operativo, y decía que era una introducción que cubría desde la instalación, así que me intrigó y lo compré. Llegando a mi casa, después de leer un poco el libro, me decidí a formatear mi computadora, no sin antes hacer un respaldo de archivos, y ponerme a instalar Red Hat 7. Muy emocionado, recuerdo que mis dudas mas grandes sobre la instalación se centraban en la creación de las diferentes particiones que usaba el sistema, así que las cree como entendí, y listo. Tenía instalado Linux. Comencé a navegar por el escritorio, dando clic en el "piecito". Pronto me encontré frustrado porque no sabía que iba a hacer ahora con eso en mi computadora.

Esa fue mi primer experiencia con Linux y a los pocos días, derrotado, regresé a mi Windows 98. Pasó un tiempo y entré a estudiar la carrera, donde desde el primer semestre llegué a escuchar comentarios de Red Hat y otras distribuciones, particularmente de parte de un amigo que conocí ahi. Conforme la carrera progresaba, llegó el momento de hacer algunas prácticas en Linux, y consulté opiniones sobre qué distribución usar. Algunos sugerían Mandrake, otros Red Hat, otros Debian... y el mismo amigo, sugirió Slackware. Como mi primer experiencia con Linux había sido Red Hat, recuerdo haberme decidido por ese. Y si, hice algunas prácticas ahi: configurar samba, apache, tomcat, dns y otras.

Pero me quedó la duda sobre Slackware, "es la distribución mas cercana a Unix", escuché por ahi (esto me recordó al caballero Virgo de Saint Seiya :P). Así que descargué Slackware, en ese entonces versión 9, y lo instalé. Ningún problema en la instalación, y de nuevo, tuve Linux en mi computadora. Ya moviendome un poco mejor con los comandos, podía hacer mas cosas, y el reto de entonces era configurar una conexión a Internet. En fin, después de varios intentos siempre había algo que me vencía, y terminaba usando Windows.
Pero no suelo rendirme y tarde o temprano lo intentaría de nuevo. Probé cada nueva distribución de Slackware, y en cada versión lograba hacer una cosa más. Al final siempre regresaba a Windows.

Terminé la carrera, entré a trabajar como desarrollador de aplicaciones web en ASP.NET y C# en Visual Studio 2005, y me fue muy bien. Siempre he sido buen programador, me gusta mucho, y el motivo de esto es que desde los 7 años he querido desarrollar videojuegos. Actualmente aun no he hecho eso, pero sigo insistiendo con ese objetivo.

Ya trabajando, intenté utilizar de nuevo Slackware 12.0 varias veces, y si, ya me movía muy bien con el sistema, aunque había muchas cosas que me costaban trabajo, sin embargo ya sabía lo que era recompilar el kernel y como se hacía... instalar un driver para una tarjeta inalámbrica, o montar particiones NTFS con capacidad de escritura.

Pero Windows ya empezaba a sentirse como un sistema que desperdiciaba recursos valiosos de mi computadora, y quería un sistema mínimo.

Fue así que me decidí aprender a crear mi propia distribución de Linux para hacer un sistema a la medida que pudiera usar como yo quisiera. Leí el libro de Linux From Scratch, y seguí todos los consejos para llevar a cabo mi objetivo. Lo logré. Armé una distribución completa bajo la guía de ese magnífico libro (lo recomiendo si quieres compilar hasta el compilador que vas a usar para compilar tu propio sistema operativo).

No puedo decir que cree mi propia distribución, ya que seguí los pasos casi al pie de la letra que vienen en el libro, pero lo que si es que me sirvió mucho escribir tanto comando para acostumbrarme a moverme en Linux (vaya que fue un enorme fogueo).

Tres días después de casi no parar de escribir comandos, terminé, y finalmente respaldé las particiones con Norton Ghost, y reinstalé Windows porque tenía que ponerme a trabajar en Visual Studio, así que ahora, ese era mi problema. Ya podía manejar Linux muy bien, pero me encontraba encadenado a las garras de Microsoft. Es ahi cuando mis ojos se abrieron, y vi que había algo más afuera de la Matrix, jejeje.

¡¡Slackware era una gran distribución!!. Después de toda la faena que pasé creando la distribución de LFS, me di cuenta. Su estructura de archivos, la forma en que están organizados los archivos de arranque del sistema, el cuidado de poner todo en su lugar.

Seguí usando Windows, mientras planeaba la manera de migrar definitivamente a Slackware, y en este año (2009) finalmente lo logré, y no pienso volver.

Actualmente, corro Slackware 12.2 y voy a comprar la versión 13. Si, ¡¡comprar!! es un sistema operativo que vale cada centavo, y me gustaría ayudar a quienes lo mantienen. Es sencillamente sensacional. Mis 2 computadoras por fin demuestran de lo que son capaces realmente. 8 GB ocupados en disco duro es a todo lo que llega con una inmensidad de software instalado. Comparado con Windows utilizaría como 40 GB. VirtualBox me permite seguir trabajando en Visual Studio cuando lo necesito, pero mientras estoy buscando la forma de cambiar de entorno de programación (y de lenguaje) para desligarme completamente.

La cúspide del éxito de mi cambio a Linux se dio hace poco. Cuando se me ocurrió que en realidad Linux no es un sistema difícil de usar. Solo se necesita leer para conocerlo, y que incluso un usuario casero sin mucho conocimiento de computación puede utilizar. Para probar esta teoría, le hablé de él a mi mamá. A ella le interesó, y estuvo de acuerdo en instalar Linux en su máquina, así que lo instalamos. Actualmente ella está feliz con su nueva distribución de Slackware 12.2, que yo le configuré de acuerdo a sus necesidades, y lo utiliza cada día. El único proceso que existe es adaptarse a los programas que no comparte con Windows, que son necesarios para realizar la actividad que uno desempeñe, pero al ir aprendiendo a manejar dichos programas, no hay barreras. Vale mucho la pena.

Bueno, pues esta es mi historia de incursión al mundo Linux, y quiero animar a quien esté considerando o incluso a los que no hayan esuchado nada sobre Linux, a probar este increíble sistema operativo, o cualquier otra distribución de Linux que les acomode más. En mi siguiente post hablaré un poco más de las ventajas y ¿desventajas? de usar Linux, específicamente Slackware.

Espero que mis siguientes posts no sean tan largos y aburridos, pero bueno. Si no les gustó, pueden comentar, jeje. Que la pasen bien.

Light Kuragari

Entonces, porqué Light Kuragari? Bueno, Light Kuragari es un personaje de mi creación, ya que además de la tecnología, siempre me ha gustado dibujar e inventar historias, normalmente inspiradas en cómics japoneses (manga) o cosas de anime como Dragon Ball. Pronto les presentaré a Light. En fin, Light se ha convertido también en mi identidad de internet por varios años, y planeo seguir usando esta identidad.

jueves, 3 de septiembre de 2009

Saludos!!

¿Que tal? ¿como les va? En este momento me encuentro desarrollando una modificación a una aplicación web de la cual estoy encargado. Es una aplicación para una empresa. Mientras hago eso, también estoy sincronizando unos archivos entre mi computadora de escritorio y mi laptop.

Esta es la primera vez que escribo, según recuerdo. Yo cree este blog hace mucho tiempo pero creo que nunca publiqué algo. Nunca publiqué porque realmente no tenía nada que decir; pero últimamente, he pensado en ir poniendo mi experiencia en relación a temas de tecnología, principalmente relacionados a la ingeniería en sistemas e informática, y que pienso que a lo mejor a alguien le servirá.

Mi intención es facilitarle la vida a aquellos que se topen con esos problemas que no se resuelven tan fácilmente, y que por alguna razón ya me ha tocado tener que resolver y hacer todo el trabajo de investigación, experimentación, prueba, muchos errores y al final, la satisfacción y utilidad del éxito.

Pero bueno, hoy empecé a escribir solo por impulso y olvidé presentarme. Mi nombre es Marco Pérez, pero en la red a veces suelo navegar como Light Kuragari.

Tengo 26 años y soy Ingeniero en Sistemas Computacionales egresado del Instituto Tecnológico de Zacatepec, lugar donde al mismo tiempo, conocí a mi novia, con quien comparto no solo el corazón, sino la carrera :)

Soy usuario de PC's. Me inclino más por Intel que por AMD. No he explorado realmente otras arquitecturas, y también tengo preferencia por las tarjetas gráficas con GPU NVIDIA.

Actualmente tengo 2 computadoras, la primera es una PC de escritorio con las siguientes especificaciones:

Intel Core 2 Duo E8400@3.06Ghz
2 GB RAM a 667 Mhz,
una austera GeForce 8400 GS de 256 Mb,
1 DD Seagate de 500 GB S-ATA
1 DD Seagate de 500 GB S-ATA (QEPD porque lo tiré al suelo sin querer)
Motherboard Intel chipset P33.
Monitor de 22" AOC.

y la otra es esta laptop:

Dell Inspiron 9400
17" WUXGA (1920x1200)
Intel Core 2 Duo 7200@2.0Ghz
2 GB RAM DDR2 @ 667Mhz
NVIDIA GeForce 7900GS 256Mb
DD Samsung de 320 Gb
DD Toshiba Externo 2.5" de 200 Gb
Intel Wireless 3945

Ambas computadoras funcionando con un S.O. Slackware 12.2, y virtualizando, Windows 7 RC1 y XP (gracias a VirtualBox).

Espero encuentren en este blog más de una vez un post que los informe, o ayude a salir de algún problema.

Estamos en contacto.

Light Kuragari