jueves, 16 de agosto de 2012

Seguridad en aplicaciones

Al momento de realizar aplicaciones o juegos en la web, la seguridad es algo indispensable a tener en cuenta. Chequeando aplicaciones de Facebook caí por ejemplo en el snake de facebook:



Más de 500.000 usuarios mensuales, sin embargo usando una extensión tan común como Firebug y analizando el tráfico de la misma, podemos ver lo transparente que se hace el envío de mensajes, y en este caso el puntaje.

Para Google Chrome por ejemplo tenemos la herramienta de desarrollador, ya provista en el navegador, que reemplaza de forma similar a la extensión Firebug.

Tal como vemos el envío es a través de un método POST (php). Esto facilita a todos a hackear el juego. Usando por ejemplo otra extensión de firefox llamada Tamper Data, podríamos activarla en el momento indicado, parar el envío de este mensaje php y modificar el score tal cual muestro en la siguiente imagen: 


Además en el mensaje se pueden cambiar otros datos como el user id, y por ejemplo loguear el puntaje a otras personas con su id de facebook. Sin contar las numerosas vulnerabilidades de seguridad que expone esta llamada visible, para ataques como un SQL Injection.

De esta manera es que aparezco en el máximo ranking, y es así cómo se rompe por ejemplo el esquema de puntuaciones planteado por la aplicación. No es nada grave, a comparación de lo que se puede hacer al tener esta función de inserción a su base de datos expuesta...

Como dato extra el score que ingresé no es arbitrario sino que se trata del máximo valor entero para sistemas 32 bit, y también el máximo valor para tipos de dato enteros en base de datos mysql.

Es interesante el uso de estas herramientas, se le puede sacar mucho más provecho del pensado al concepto de vigilar el tráfico en la red, detener llamadas a funciones php, requests http, obtener la forma en que se realizan y reproducirlas cíclicamente. Es así también como por ejemplo a un sitio como soundsnap.com se le pueden obtener urls de toda su librería de audio...


Bueno a pesar de mi intento de mantener actualizado el blog, por motivos más que nada laborales a veces no es tan fácil subir notas con frecuencia. Mi intento es siempre hacerlo y espero algun dia tener la constancia, el tiempo y el material necesario para bloggear con una frecuencia estable.. Lo siento y hasta la próxima :D


domingo, 20 de noviembre de 2011

Mis nuevos juegos


Dejo link de mis juegos desarrollados también para McDonald's en WILLDOM.


El arte de estos juegos fue realizado por Martín Chandías.

http://www.mcdonalds.com.ar/zoobles_pokemon/

Estos 4 juegos salieron acompañando la marca y los muñecos de la Cajita Feliz del mes pasado.

Imágenes de los juegos:


Con el fin de la facultad se me está complicando actualizar este blog, agradezco a toda la gente que ingresa periódicamente al blog o que lee notas y envía mails :D


Saludos,
Daniel SL


miércoles, 18 de mayo de 2011

AS3 Games

 
Copio link donde se encuentran mis dos juegos desarrollados en Vertigo para McDonald's:

Castellano: http://www.mcdonalds.com.ar/lps_bbb/batman.html
Portugués: http://www.mcdonalds.com.br/lps_bbb/batman.html



Arte Batman en las alturas: Ariel Ferreyra






















Arte Batimóvil: Pablo Messuti





















Estos juegos son para una promoción de Cajita Feliz que ya salió en todo latinoamérica, dejo sólo estos dos links para estos idiomas pero también se puede acceder a través de las páginas de los restantes paises.

No se pierdan tampoco los de mi amigo Ariel Deroche en los siguientes link:

http://www.mcdonalds.com.ar/lps_bbb/littlest_pet_shop.html
http://www.mcdonalds.com.br/lps_bbb/littlest_pet_shop.html

Arte de ambos juegos: Martín Chandías





Saludos,
Daniel SL

--Leyendo ActionScript 3.0 Design Patterns - William Sanders & Chandima Cumaranatunge (O'Reilly)

martes, 10 de mayo de 2011

¿Cómo configurar un servidor web en casa?


En este nuevo post paso a explicarles en pocos pasos como instalar un servidor web casero, para hacer hosting en nuestra propia pc de páginas html, servidores php, perl, flash media server, java, o la aplicación capa servidor que deseemos, y así mantener nuestra propia base de datos para nuestras aplicaciones cliente y mantener nuestra propia base de datos MySql.

Para esto el único requisito es tener encendida y conectada a Internet una PC que no necesita ser potente para nada, se puede usar tranquilamente una pc con 512 MB de ram por dar un ejemplo, no existe ese tipo de requisitos físicos. Desde ya, si nuestra web tiene un gran tráfico, ahí es cuando los requisitos del server, y la velocidad de conexión a internet entran en juego. Por el momento, para comenzar a desarrollar y aprender no hay que preocuparse, para esto no hay nada mejor que manejar nuestro server en nuestra propia pc… 

1 – Instalación del servidor Web.

El primer paso es la instalación del servidor web, y para eso recomiendo instalar el xampp, un paquete extremadamente liviano para cualquier sistema operativo y que trae incluido Apache, Php, MySql y Perl. Este funciona de maravilla, y nos evita mil problemas y configuraciones que tendríamos que hacer si instalamos cada uno de estos por separado.

Allí le dan al link dependiendo de su SO. Por ejemplo, en mi caso: “Xampp para Windows”
Y luego van al siguiente link, para ya comenzar la descarga:

Descarga Xampp

Una vez hecho esto ya podemos probarlo ingresando al navegador web, y como dirección para navegar escribimos 127.0.0.1. Si aparece una pantalla como la siguiente:


Inicio Xampp

El server está configurado y corriendo para un ambiente local (localhost), esto ya puede ser de utilidad por ejemplo como entorno de testing o prueba en nuestra pc. De acá en más la configuración es para la visibilidad de nuestro servidor hacia el exterior, o sea que este pueda ser accedido desde afuera, desde nuestra página web o nuestra aplicación fuera de nuestra pc.

2 – Configuración del router

En el caso de tener una sóla pc conectada al modem (no tener router en el medio) saltear el paso 2.

Para su configuración tenemos que saber el número de ip del router, y el número de ip de nuestra pc, y para esto entramos a: Inicio -> ejecutar -> cmd

En la consola tipeamos ipconfig, y tomamos nota del campo direccion ip y de puerta de enlace predeterminada.

El de puerta de enlace predeterminada es el de nuestro router. Para acceder a este vamos a nuestro navegador web y como dirección para navegador escribimos el número de ip tal cual nos apareció en la consola, al hacerlo nos aparecerá una pantalla de login al router.

Allí tipearemos el password que le hemos asignado al router, si es que nunca has modificado la configuración del router conviene buscar por la web la configuración estándar de éste... Para muchos de los router linksys, por default el campo de usuario es vacío y el password es: admin. Si es que no lo saben o tienen otro modelo pueden buscar en google router linksys default password por ejemplo.

Una vez que nos logueamos e ingresamos a la pantalla de configuración vamos a una pestaña u opción de configuración similar a la siguiente:




En port forwarding, o reenvío de puertos, o alguna opción de nombre similar completamos con el puerto 80, y con la dirección ip obtuvimos en la consola en el campo direccion ip (que sería la de nuestra pc). Con esta configuración le decimos al router que cada vez que alguien de afuera quiera ingresar por la web a nuestro ip (que nos da el navegador web) la conexión sea direccionada a nuestra pc, la del servidor web.

Hacemos click en guardar parámetros, y ya tendríamos la segunda parte de la configuración realizada. Para comprobar que este paso ha sido correctamente realizado tendríamos que ingresar a: http://www.whatismyip.com/

Copiar el número que aparece allí y pegarlo como dirección en el navegador. Si nos aparece la pantalla de Inicio de Xampp, quiere decir que hasta ahora vamos perfecto.

3 – Nombre de dominio

Podríamos arreglarnos sólo con nuestro número de ip y cada vez que se quiera ingresar a nuestra página hacerlo por este número, pero resulta que esto es muy poco estético, y lo peor es que nuestro número en general cambia, o sea que nos sería imposible saber en determinados momentos cuál es el número que tiene asignado a cada momento nuestra conexión. 

Para esto y para ahorrarnos de todos los problemas y vivir tranquilo existe dyndns: http://www.dyndns.com/

Allí nos podemos crear una cuenta, loguearnos, acceder a My services y luego darle a la opción Add Host Service.



Completar una pantalla como la siguiente con el nombre de la web que queremos crear, eligiéndo del combo el dominio de los posibles y en IP Address escribimos la ip del server o le damos click a Your current location's IP address, que si estamos bajo la misma conexión del server es esa.


Hacemos click en Add to Cart, luego en Proceed to checkout, y por último Activate Services y listo. Ya tenemos el ip asociado al nombre que establecimos sin ningún costo. Si entramos a miweb.dyndns.org ya estamos yendo a la página principal de nuestro servidor con un único problema, si es que tenemos ip dinámica (casi todos tenemos) cada un determinado tiempo tu ip va a cambiar y el nombre seguirá asociado a tu ip anterior.

Esto se puede resolver de 2 maneras:

1) La primera y la que no haremos es desde la configuración del router (cosa que no recomiendo ya que mis experiencias anteriores con 2 routers distintos es que la actualización a veces falla y se te cae el servidor, un dolor de cabeza).

2) La segunda y la que realmente vale, es bajarse el dyndns updater, software gratuito que chequea la conexión periódicamente y actualiza la ip en cuanto ésta se modifique. Ademas este software iniciará con windows, así que ya se pueden desentender de la ip dinámica. Link de descarga: https://www.dyndns.com/support/clients/

Nota. Si todo te salió bien no la leas ;)


Puede que a pesar de haber seguido todos estos pasos, sólo puedas acceder a tu servidor mediante 'localhost' en el navegador pero no por el nombre de dominio que le pusiste en el dyndns, esto se debe a que el firewall puede estar bloqueando el puerto 80. Esto en Windows 7 se resuelve yendo a la siguiente ruta: 


Panel de control\Sistema y seguridad\Firewall de Windows, y ahi acceder a la opción Configuración avanzada (para acceder a esto en cualquier SO Windows ir a inicio -> ejecutar -> y tipear wf.msc . Luego allí vamos a regla de entrada ponemos nueva regla TCP puerto 80. Y marcamos la opción "Permitir la conexión" damos siguiente hasta finalizar, el nombre de la regla es indistinto. Luego haremos lo mismo en reglas de salida, y con eso ya tenemos el servidor desbloqueado ;)


Y eso es todo, es mucho más facil de lo que parece y en menos de 1 hora tendrás tu server up and running...

Si es que seguiste el proceso y te surgió alguna duda, o te parece que alguno de los pasos no está demasiado claro por favor comentame!! Si la nota te fue útil también y si te gusta mi blog también jaja :)


Saludos,
Daniel SL

jueves, 3 de febrero de 2011

Historia


Empiezo con una historia por ahora no demasiado larga pero sí interesante para mi de contarles. Pienso redactar desde donde viene mi interés por los videojuegos y cuales fueron mis pasos, desde chico hasta ahora como programador de juegos.

Dejo todo claro con links (los que recuerdo) y libros que fueron para mi fundamentales en el aprendizaje ya que creo que esto puede ser de gran ayuda para aquellos que se pregunten cómo empezar con el desarrollo de videojuegos, pregunta que alguna vez me hice yo, y que en alguna ocasión recurrí a internet para buscar consejos.

Y así empiezo, a los 13 años o 12 quizá (es una gran duda fue por mitad de primer año cumplo años el 19 de junio es más probable que haya tenido 13 jaja), mi mejor amigo me prestó un cd que mucho no le gustaba, resultó ser el Div Games Studio 2.0 (una amigable y muy bien documentada herramienta como para comenzar con el desarrollo de video games). Otro compañero a quien ya se lo había prestado, me explicó las bases de como empezar con esta herramienta. De ahí en más comencé a aprender, a prueba y error y leyendo una y otra vez la documentación del CD. Sin Internet era todo distinto, había muchas menos alternativas, cuando no entendía algo había que leer de nuevo y volver a probar. Por un lado, eso también estaba bueno.

Aquí surgió DSL Tech y entre los desarrollos se encontraron un juego de naves, el viejo Pong, intentos de juegos de aventura y RPG, y un generador de nombres y sobrenombres asignados aleatoriamente en base a unos vectores largos creados para ese fin y formando nombres muy graciosos jaja :P

En base a todo esto y a mi gusto de la programación como un hobby es que desde chico ya tenía en claro que la computación era lo mío. 

Por estos años continué con el Div, y pasé brevemente por Visual Basic y por algo de Java Mobile.

En 2007 comencé Ingeniería en Sistemas, y en ese mismo año, por mi cuenta me había comprado El lenguaje de programación C de Kernighan y Ritchie (el mejor libro de programación que leí hasta ahora). 

Con la base de ese libro fui realizando los ejercicios que planteaba, y algun que otro proyecto DOS por mi cuenta, de todas formas mi orientación iba hacia otro lado, mi gusto del Software fue siempre a lo gráfico es por eso que pronto pasé a C++, tomando como principal referencia la web C Plus Plus, y leyendo tutoriales de allí, y ya después el libro: The C++ Programming Language de Stroustrup.

En la facultad mientras veíamos C, como principal proyecto para DOS en C está mi calculadora, digna de ver!!



Al conocimiento de C++ agregué SDL, y surgieron juegos como los siguientes:






La última foto es de un juego interesante de ver, el Fuckin' Last Pong, es un excelente y entretenido Pong 2 Players, bastante mejor que los pongs anteriores que había desarrollado en Div.

Como pilar fundamental para aprender SDL tomé los tutoriales de Lazy Foo, son verdaderamente interesantes, muy recomendables!!

También realicé en este tiempo una aplicación explicando de cierta manera recursividad y el algoritmo usado para resolver Torres de Hanoi, en esta aplicación se muestra el recorrido de llamadas que va haciendo para resolver el problema:





A todo esto luego incorporé la librería Box2D y a jugar con las físicas!! Todo este tema me llamó la atención luego de haber conocido juegos indie como Tower of Goo y una demo del Crayon, que de ambos surgieron versiones completas (el primero llamándose World of Goo). El Crayon usó Box2D como librería para la simulación de físicas reales. Estos 2 juegos son excelentes juegos independientes (como también el Braid y el Super Meat Boy).

De Box2D tomé como fuente principal de aprendizaje su User manual, y luego adapté ese código para funcionamiento con SDL, o sea para representar con gráficos las figuras geométricas que calcula Box2D.

Mi incorporación de físicas al desarrollo se puede apreciar en Coding Me!





A todo esto le siguió mi aprendizaje de Base de Datos en la facultad, y de Java e interfaces, conexiones a BD y redes. Lo que despertó mi interés para relacionar todo esto con los juegos. Es por eso que comencé a dejar un poco de lado las aplicaciones de escritorio (más que nada porque no tuve el tiempo para trabajar en ambas cosas). Y continué ampliando el Ahorcado en Java que desarrollé como un ejercicio de la facultad, primero transladándolo a un applet.

Y luego conectándolo mediante sockets a otro servidor Java, que a su vez se conecta a la base mysql y así manejando la web app en 3 capas. También le sume un poco de conocimiento de Developers para Facebook para administrar los distintos jugadores del Ahorcado Online que está actualmente funcionando en Fb.

Siguiendo con está línea de Internet, continué con RIAs y desarrollo de Web App con Flex. Orienté hacia esta tecnología ya que Flex usa Actionscript al igual que flash, y este es el lenguaje que mejor se adapta para la programación de juegos online.

La mejor fuente a mi gusto para aprender Flex son una serie de videotutoriales con ejercitación incluída llamados Flex in a Week, el contenido de esa web es realmente excelente!! Me llevo un poco más de 1 week jaja creo q 10 días (por cuestiones de tiempo) pero realmente valió la pena ver cada uno de los tutoriales.

Noté a simple vista que los juegos de Flash en Fb son los mejores, además las librerías de gráficos en Java son bastante pobres. Ya antes me había desilusionado al aprender un poco de Java Fx (Lenguaje Java orientado a RIAs), y es por eso también que decidí orientarme a Adobe Flash. Además le tengo bastante fe al progreso de Flash hacia aplicaciones 3D para la Web.

Linkeo mi anterior entrada para mostrar lo hecho en Flex: RIAs con Flex.

Y mi último paso fue pasar por fin a Flash y Flash Media Server y distintos tipos de conexiones con estos, como Remote Shared Object, y RMTP, y algunos otros protocolos interesantes que aún no implementé.

Actualmente para as3 me baso con la referencia oficial de Actionscript y este libro que tengo desde el año pasado.

Como mi último enlace dejo el de Emanuele Feronato, una página más que recomendable de Flash, en la cual hay excelentes tutoriales. 

Bueno eso es todo por ahora, y ya pronto voy a traer otra nota con un nuevo proyecto Flash.

Saludos,
Daniel SL

miércoles, 12 de enero de 2011

RIAs con Flex - Página de ventas y Administración de Stock



Aquí estoy otra vez, esta vez subiendo una nueva aplicación desarrollada en el segundo semestre de 2010. Esta aplicación, devenida en página Web fue mi primer aproximación a una RIA. Este fue un trabajo en grupo para la materia Seminario de Integración Profesional realizado por Martín Bossero, Juan Gastaldi, y quien les escribe: Daniel Sánchez Leguizamo.

Martín y Juan dieron su aporte en la etapa de análisis, documentación y testing. Yo me encargué de la codificación (implementación de las páginas web y servidor), la coordinación del proyecto, como también di mis aportes en el resto de las áreas.

La elección del tópico fue inicialmente un proyecto de administración de stock, pedidos de productos, ventas en sucursales, y abm's de productos y usuarios, enfocado al análisis de gestión con reportes y gráficos para la toma de decisiones orientados hacia la gerencia. Lamentablemente a nuestro alcance inicial, por orden de los profesores de la materia tuvimos que sumarle el desarrollo también de un sistema de venta online, lo que quizás no nos permitió enfocarnos en la herramienta para la toma de decisiones, y nos amplió el proyecto de sobremanera, para implementar en menos de 6 meses, con una tecnología que prácticamente no conocíamos.

Por eso mismo este proyecto se dividió en dos, el orientado hacia el cliente: 




Y el orientado hacia la administración de la empresa:





En este último se diferencian tres perfiles (dejo datos de usuarios creados):

Perfil: Administrador de Stock | Usuario: administrador | Password: administrador

Perfil: Gerente | Usuario: gerente | Password: gerente

Perfil: Empleado de Ventas | Usuario: ventas | Password: ventas

La actual implementación del sistema es sobre productos de una empresa de electrodomésticos, de todas formas de igual manera podría implementarse para cualquier otra empresa de venta de productos.

Mi idea con esto, más allá del desarrollo de un nuevo proyecto necesario para la aprobación de la materia, era aprender de alguna manera, desarrollando un proyecto básico, as3 (actionscript), y aprender mucho más sobre el desarrollo de aplicaciones Web, y la integración de las aplicaciones cliente con el servidor (usamos php) y con la base de datos mysql. Del lado del cliente usamos Actionscript, como antes mencioné, y Adobe Flex. Para la conexión de Flex a php, usamos objetos remotos, con amfphp.

Hasta el momento mi único precedente, en aplicaciones Web, era el Ahorcado Online, actualmente funcionando en Facebook, y desarrollado en java con conexión a Php y BD mysql.


Fue un gran proyecto, y por sobre todas las cosas me dejó una gran experiencia para un gran proyecto que estaré desarrollando durante este año...


danii!

lunes, 10 de enero de 2011

Simulando un Parque de Diversiones!!!



Después de un tiempo vuelvo a postear y espero este año tener un poco más de tiempo y poder dejar nuevas cosas para compartir. Esta vez subo a mi blog algunos nuevos proyectos del 2010. 


Primero un trabajo práctico interesante que realicé con Martín Bossero, él se encargo de gran parte del código en Visual Logic y de buena parte del diseño de la simulación. Lo subo porque este puede ser útil para alguno de los lectores del blog, este fue el desarrollo de un modelo de simulación de un parque de diversiones en Simul8 con algunas condiciones específicas, mencionadas en la documentación (que también subo).

Para todos los interesados en simular algun modelo con Simul8, programa usado en materia de Modelos y Simulación en muchas universidades, quizás les pueda servir como referencia este modelo realizado con una buena cantidad de código en Visual Logic que puede ser accedido y modificado. Pueden bajar los archivos accediendo al siguiente link:





Además destaco mi trabajo reciente en un proyecto freelance de simulación de cajas de un supermercado, particularmente de las colas, teniendo en cuenta, cajas prioritarias y clientes prioritarios. Fue un proyecto en Java de desarrollo rápido debido a la urgencia del mismo. Por lo que me parece que para todo aquel interesado en el área, la Simulación es bastante entretenida y se ubica entre un videojuego y un proyecto de negocios. Ya que seguramente a muchas otras personas que les gusta programar, les gusta ver su desarrollo funcionando y si es posible desde lo gráfico.



Hasta dentro de unos diasssss!!!

dani :)

martes, 16 de marzo de 2010

Y se hizo Online...

Bueno como ya venia siendo hora, las tecnologias avanzan... Años de Internet, y con la disponibilidad de una red social ENORME como es Facebook, con mas de 350 millones de usuarios. Es asi como decidi adaptar mi simple ahorcado hecho en Java para la plataforma de FB!!!

Como siempre, primer proyecto usando nuevas tecnologias, hasta lo mas simple me ofrecio resistencia y costo mucho avanzar cada paso. Pero al fin puedo publicarlo, y espero q ahora q me saque mi primer peso de encima, poder estar ligero para alguna q otra aplicación simple de Facebook. Para mejoras y correcion de errores del Ahorcado... Y desde ya, para continuar cn el proximo capitulo del Coding Me! Q esta EXCELENTE!!! Jaja :D

Muchas gracias a todos los q me ayudaron cn el Ahorcado Online!!

Espero que les guste y gracias a todos x leerme :)




Saludos,
Daniel SL

martes, 20 de octubre de 2009

Ahorcado Java Applet

Bueno, esta es una version desmejorada del juego del ahorcado ;)

Hecha como un lindo programa y traida a la web un poco simplificada como applet.



Debería verse el ahorcado en la página Web, es probable que no tengas instalado Java en tu pc, para eso podés descargarlo de: www.java.com. Además si tu navegador Web no tiene habilitado el uso de Scripts se te avisará con un mensaje y tendrás que activarlo.


Dani Returns :D

miércoles, 1 de abril de 2009

Coding Me! - Primer Capítulo...

Inauguro blog con mi primer proyecto de 2009, Coding Me! Este juego surgió a mediados de enero y paso por 2 compiladores, uso de unas cuantas librerías nuevas, y dio lugar a la creación de este blog... No es que el juego esté terminado, esto es sólo el primer capítulo, ni tampoco que sea maravilloso... pero de todas formas es mi mejor proyecto por el momento, así que quiero compartirlo =) todos los interesados pueden ir viendolo, y yo veo lo que cada uno de ustedes opina sobre este juego, y eso sinceramente es lo que más me ayuda a seguir... Saber que voy x el buen camino jaj :) Así que bueno sin más que decir dejo el link de Coding Me! Click aquí para descargar.


Dejo alguna foto del juego:







Espero que les guste,
y agradecería q me dejen sus comentarios =)

What's next?

Sólo para osados: Coding Me (Alpha). (Versión en pleno desarrollo, en que la primer etapa se saltea con sólo 3 líneas agarradas, esto es para pasar rapidamente al segundo capítulo. Además en esta versión no se pueden ver los créditos que sí vemos en el link anterior)


Un saludo a todos,
Daniel SL!