04 julio 2010

JAVA 4 Ever

Muchos se van a identificar con el niño de este video



Considerado una obra maestra por el padre de Java James Gosling

24 mayo 2010

El peor de los PK2

No es un nuevo Framework para programar, no es una herramienta para el bug del Y2K.
Es solo un acrónimo de 3 letras para designar algo que, si fuera creyente, pensaría que es malo.
Creyentes o no, el termino es muy familiar e incluso la acción para algunos es mas familiar que para otros.
Quien no ha cenado,cuando dijo estar a dieta?, quien no ha entrado al Facebook por vigésima vez en el día para enterarse de los acontecimientos (chismes) de sus conocidos?, en fin, la lista de PK2 diarios puede seguir...

Cual sera el peor de los pecados?? los invito a descubrirlo en el siguiente libro:
http://www.elsiglodetorreon.com.mx/noticia/526612.html

01 mayo 2010

Look de Sebastien Tellier

Una canción que se antoja para acompañar un paseo de media tarde en un dia de primavera



Un estilo desenfadado y ligero,muy parecido a ciertos acordes de Alan Parsons Project

19 abril 2010

Invitación plática "Patron Facade: Implementacion mediante WCF"

Dentro de las actividades de la Sociedad de Estudios en Computación de la UACJ (SEC), se realizan pláticas de temas técnicos enfocadas a compartir conocimiento y exponer temas relacionados a la tecnología, principalmente en las áreas de TI.

Este viernes me toca participar con un tema de Arquitectura de Software, el cual lleva por titulo "Patrón Facade: Implementacion mediante WCF
La plática se llevará a cabo en la UACJ, en el Instituto de Ingeniería y Tecnología. La cita es este viernes 23 de Abril a las 18:00 en el Audiovisual del Edificio E.


El temario de la platica es el siguiente:

  • Que es un patrón
  • Que es un patrón de diseño
  • Usos
  • Ventajas de su uso
  • Antipatrón
  • Tipos de patrones
  • Ejemplos de patrones
    • Singleton
    • Proxy
    • Observador
    • Decorador
    • Facade (Fachada)
  • Que es WCF
  • Ejemplo práctico del patrón Facade con WCF
Entrada libre, los espero!

11 abril 2010

La generación de los 8 bits




Alguna vez jugaste al invaders?, sabes porque mario bros es un Plomero italiano? y que decir del famoso Pac-man.
Como unos cuadros, rectangulos y barras, nos podian mantener entretenidos por horas; como un juego ruso conquisto el mundo entero? porque tetris al reves se dice triste?
Recuerdo a la ranita que queria pasar la calle y que tu mision era que no la atropellaran, era un juego cruel, sobre todo cuando atropellaban a la rana.
Asi es, todo esto fue gracias a los famosos 8 bits, tal vez suena poco 8 bits, sobre todo ahora que las tarjetas de graficos permiten tener representaciones de 32 bits.



El Plomero bigotón
Cuenta la historia, que la decisión de que Mario fuera un plomero obedeció a razones técnicas. En realidad el diseño de Mario no era así, si iba a ser Italiano, pero no plomero.
Le pusieron guantes porque con 8 bits no se podían representar con finura los dedos de la mano, le pusieron bigote porque nuevamente con 8 bits, no se podía representar la boca. Lo mismo paso con el cabello y optaron por ponerle gorra. Entonces por consiguiente alguien bigoton, con guantes y gorra solo podria ser un plomero.

Los detalles finos de la vida
Con 8 bits se tiene la opción de representar 256 colores, es decir 2 a la 8va. potencia, en cambio con 16 bits los colores que se pueden representar sube a  65536.
El ojo humano no percibe colores, percibe solo longitudes de onda, hay 3 principales logitudes que corresponden a los 3 colores primarios (azul, verde y rojo) el ojo los mezcla y de esta forma representa todos los colores. Este es el principio basico del color, te suenan las siglas RGB
Y cuantos colores puede percibir el ojo humano?, varia de una persona a otra, pero el promedio aceptado es que podemos percibir 18 bits de color, algo así como 262,144 colores. 
Con tantos colores disponibles y en ocasiones nos movemos en un espectro tan pequeño, hay veces que la vida se pone color de hormiga (les debo la combinación RGB de este color), algunos ven la vida de color de rosa, algunos les gusta el humor negro, los chistes blancos, los hay rabos verdes, a otros les cuesta tener azul celeste o que pasa cuando te piden que pongas la situación en blanco y negro?






Somos la generacion de los 8 bits, donde el ingenio era mas importante que los efectos, que las texturas, que la velocidad de procesamiento o el 3D. Donde se cimentaron las bases de la animacion, del arte digital y de tantas maravillas que ahora vemos tan comunes. 

04 abril 2010

Mensaje de graduación

Les comparto este mensaje que Steve Jobs a una generación de graduandos de Stanford



muy inspirador

11 febrero 2010

Recuerdos

Hay tantas cosas que se quedaron guardadas, tantas cosas que me hubiera gustado escuchar, aprender y reflexionar.
Aunque no tengo una memoria digital, tengo en mi mente recuerdos tan nítidos como ese árbol de navidad que cobijaba nuestros regalos, o como el naranjo que daba naranjas tan agrias como limones, pero que era nuestra proeza poder cortarlas.
Adonde va la mente?, puede ir a algún lado? o es una cantera que se desvanece con el paso de las generaciones

Una neurona se ha extinto en el inmenso mar de la eternidad...

Hasta siempre Abuelita Tomi

13 enero 2010

No te lo tomes Im-Personal (impersonate=true) Parte 2/2


Antes de entrar de lleno a lo que es la impersonalización, hay que comentar algunas cosas básicas sobre la configuración de los sitios web (al menos con .Net)
Hay un archivo XML llamado Web.Config que es donde se definen/guardan las configuraciones de las aplicación asp.net. aquí es donde se especifica la impersonalización.
Por otro lado, podemos configurar el comportamiento del Framework de .Net en el servidor, para eso tenemos un archivo muy machín, el archivo Machine.config. Pero aguas!!, las configuraciones que hagamos en el machín, van a afectar a TOOODAS las aplicaciones .Net que estén alojadas en el servidor.
Me llega a la mente la primicia de Homero Simpson, “si no está quebrado, no lo repares”. Si no sabes para que sirve una configuración, por favor, por lo que más quieras… No le muevas!! 

Que es la impersonalización (Hablando de sitios web)?
Las aplicaciones web necesitan accesar a recursos, entiéndase archivos, servicios del sistema operativo, web services, archivos, carpetas, etc. Este recursos no está accesibles a todo el mundo, por seguridad están restringidos y se requiere tener permisos para poder usarlos.
Como hacerle para que una aplicación web que está expuesta a sin número de ataques e intrusiones pueda utilizar recursos tan sensibles como DLL del sistema operativo?
En las aplicaciones que comúnmente llamamos desktop o cliente servidor, para usar la aplicación te tienes que loguear al sistema operativo, por lo tanto la aplicación corre con los permisos de un usuario autentificado por el sistema operativo y por lo tanto tiene permisos para usar los recursos de la maquina (salvo que ingreses como invitado)
Las aplicaciones web no cuentan con un usuario autentificado por el Sistema Operativo,  de hecho como están al alcance de todo el mundo, pueden ser accesadas por personas que no están en nuestra red, en nuestro idioma, en nuestro país, en nuestro planeta (exagere un poco).
Y volvemos a la pregunta, como le hacemos para que cualquier usuario de nuestro sistema web tenga permisos para usar recursos, sin comprometer la seguridad?


Hay 2 formas: El Usuario .Net y la Impersonalización


Como implementar impersonalizacion?
El usuario .Net .- En Asp.Net todas las aplicaciones utilizan un usuario para iniciar, dicho usuario se configura en el archivo Machin del que hablamos allá arriba.
Cada vez que alguien se conecta a la aplicación aumenta el consumo de recursos de ese usuario (léase memoria)

La bronca aquí es que, ese usuario se va a poner muuuy choncho, lo cual no es bueno para el performance de la aplicación y por otro lado ese usuario omnipotente tendría acceso a todos los recursos, lo cual es poco recomendable ya que cada recurso debe tener sus propias restricciones. Por ejemplo no son los mismos permisos que se necesitan para crear un archivo en un folder que ejecutar un CLR en la Base de datos.
Y otro problema es que se tiene un solo usuario para todas las aplicaciones web que estén alojadas en el servidor.
Impersonalización.- La opción B implica que cada aplicación web, cuenta con su archivo de configuración (web.config), dentro de este archivo definimos un usuario con el que se va a conectar la aplicación.  Se agrega una llave al XML en la sección de Identity

<identity impersonate="true|false" userName="username" password="password"/>
Por lo anterior la aplicación se ejecutara bajo el contexto de la identidad del cliente que esta accesando la aplicación.
La cuenta de ASPNET de Windows es usada para accesar recursos de ASP.Net a través del el llamado Worker Process (Aspnet_wp.exe). Esta cuenta esta limitada, en comparación con la cuanta de invitado de Internet (IUSR_ NombreComputadora), la cual se usa por el ASP clásico. 



En ciertas ocasiones se quiere que la aplicación sea ingresada por medio del usuario anónimo IUSR_NombreComputadora, en esos casos se configure la impersonalización, pero sin poner el usuario, los cual le indica al IIS que debe utilizar el usuario anónimo:
<system.web/>
<identity
impersonate="true"/>
</system.web/> 



En cambio si se quiere usar un usuario especial, solo basta con especificarlo en la llave del Identity:


<Identity impersonate=”true” 
userName=”misuariodeejemploparaelblog”
password="mipassworddelusuariodeejemploparaelblog " />


Riesgos de impersonalización de sitios web
  • La impersonalización puede afectar significativamente la escalabilidad (ni que fuera montaña) y performance de una aplicación. Nos sale más caro hacer la llamada a un recurso por medio de la impersonalización que hacer la llamada o el uso directamente. Se gana en seguridad pero se pierde en uso de recursos.
  • Otro detalle es que la impersonalización corre en forma local y sobre un hilo de ejecución. Cuando el código cambia de hilo, por ejemplo cuando se tiene un pool de hilos de ejecución, por default los hilos nuevos se ejecutan usando el identity, es decir, ya no usa el usuario de la impersonalización. Como sabemos el manejo de hilos de ejecución no es cosa sencilla, hay que tener vastos conocimientos sobre hilos e hilasas.
  • La impersonalización esta deshabilitada por default, esto es para tener compatibilidad con ASP (el antiguo) y para no vulnerar la seguridad de los sistemas.
  • Hay que tener cuidado al usar impersonalización, ya que permite que una aplicación ejecute código usando permisos no vislumbrado originalmente por el programador, aguas con esto.
  • Se tiene que poner en el web.config el usuario y el password, dejándolo accesible a cualquier persona que tenga un notepad para abrirlo.