miércoles, 23 de julio de 2014

Patrón de Arquitectura Software: MVC



Este año en la Universidad pude ver más a fondo alguno de los patrones arquitectónicos más destacados de la arquitectura software. En una de las asignaturas que más interés me han despertado,  “Arquitectura y Diseño Software”.
De entrada decir que un patrón de arquitectura ofrece soluciones a problemas de arquitectura software. Se define como una descripción de los elementos que componen dicha arquitectura, el conjunto de relaciones y restricciones que tienen entre esos elementos, lo que viene a ser una relación estructural. La diferencia con los patrones de diseño es que tiene un nivel mucho mayor de abstracción, algo bastante importante para un Arquitecto Software.
Después de esta breve introducción pasaré a comentar en qué consiste el patrón de arquitectura llamado “Modelo-Vista-Controlador (MVC)”. Este modelo lo que hace es separar por una parte los datos y  la lógica de negocio de una aplicación software y por otro lado el módulo que controla las comunicaciones y eventos. En un sitio están los componentes que definen la representación de la información, por ejemplo, una Bases de Datos, tanto para consultas como para actualizaciones y por  otro lado los que interaccionan con el usuario de la aplicación que es el módulo controlador y el de la vista.
El controlador responde a las acciones que va solicitando el usuario y el de vista presenta la información en un formato adecuado para el usuario. Los dos puntos fuertes de este patrón son:
- Reutilización del código.
Separación de conceptos o modularización.
Ambas cosas logran facilitar el desarrollo y el mantenimiento de nuestro desarrollo software.  A continuación, haciendo uso del siguiente gráfico del uso del patrón MVC en con el ejemplo de una aplicación Web:


En primer lugar el usuario envía una petición al controlador mediante una url con el navegador (Browser) posteriormente el controlador solicita al modelo los datos (Base de Datos), el modelo le devuelve los datos solicitados al controlador.  El controlador además selecciona una de las vistas y la vista seleccionada para al controlador. Por último el controlador devuelve una vista que carga los datos del modelo seleccionado para que es usuario la pueda ver en un formato adecuado, según su petición.
Originalmente el MVC fue desarrollado para aplicaciones de escritorio, pero con el auge de las aplicaciones web se ha ido adaptando el patrón de arquitectura para diseñar e implementar aplicaciones web con los principales lenguajes, por ejemplo, Java. Se han desarrollado multitud de frameworks, comerciales y no comerciales, que implementan este patrón.

jueves, 12 de junio de 2014

¿Qué es Processing 2.0?

Bueno hoy os voy a hablar de un lenguaje de programación orientado a objetos y que apareció en el año 2001 y se distribuye bajo licencia GNU GPL, su nombre es Processing.



Además, le acompaña un entorno de desarrollo que está basado en Java. Es una excelente herramienta para entornos de educación y para producir entornos educativos multimedia e interactivos. También otra cosa que hay que tener en cuenta es que puede heredar todas las funcionalidades de Java ya que como dije está basado en el, esto lo convierte en una herramienta muy poderosa si queremos desarrollar proyectos más complejos.
  

Por si os interesa conocer un poco más en detalle en que consistes y que cosas se pueden hacer con esta potente herramienta os añado el siguiente enlace donde podréis encontrar un tutorial destinado a los estudiantes del ITP (Interactive Telecommunications Program) de la New York University, el enlace es el siguiente y además viene en castellano Tutorial Processing.



En el sitio oficial de Processing se puede descargar uno el entorno para poder trastear y ver las maravillas que se pueden hacer, os incluyo un vídeo que he encontrado por Youtube con un ejemplo curioso para que veáis las cosas que se pueden hacer en este caso para Android



Se puede ver como podemos modificar los colores y hacer que maravillas con dicho entorno, pronto pondré algún ejemplo más por si os animáis a realizar alguna cosa con dicho entorno, para concluir os voy a poner en enlace del sitio oficial de ProcessingSitio Oficial de Processing






martes, 10 de junio de 2014

La primera máquina inteligente pasa la prueba de Turing.

Fue hace unos años cuando en Teoría de Autómatas me explicaron que era o que es una máquina de Turing. En primer lugar comentar que la Teoría de Autómatas es una rama de la ciencia de computación que estudia las máquinas abstractas y además estudia los problemas que son capaces de resolver.

Pude aprender que era un lenguaje formal, un Autómata Finito Determinista (AFD) uno no determinista (AFND), etc. Recuerdo además el cálculo de los BNF que es una metodología formal para describir lenguajes formales.




Llegado el caso nos presentaron la jerarquía de gramáticas de Chomsky:


  • Gramática de tipo 0 la joya de la corona, son los recursivamente enumerables, y aquí es donde aparece la Máquina de Turing con ella se demostró que había problemas que una máquina no podría resolver.

  • Gramática de tipo 1 son conocidos por ser dependientes del contexto es lo contrario a un lenguaje recursivo que no es sensible al contexto.

  • Gramática de tipo 2 dando lugar a los lenguajes libres o independientes de contexto, digamos que la mayoría de los lenguajes encajan en este lugar.

  • Gramática de tipo 3 de lenguajes regulares, nos encontramos los autómatas finitos, son los lenguajes más simples.

Alan Turing considerado uno de los padres de la computación y precursor de la informática fue el creador de dicha máquina para demostrar que una máquina no era inteligente. Pues bien por fin una máquina o mejor dicho una supercomputadora ha logrado pasar el Prueba de Turing.

Esta supercomputadora paso la prueba haciéndose pasar por un niño de 13 años, para demostrar la inteligencia de la máquina se le pregunta lo siguiente: ¿Las máquinas pueden pensar? quién la practica debe de adivinar si es una máquina o una persona.

Esto se hace para comprobar si una máquina no se puede distinguir de una persona es que puede pensar. Se utilizaron 5 máquinas para ver si las personas podrían distinguirlas, haciendo dichas preguntas. Para ello se necesita un 30% de personas que no logren detectar que hablan con una máquina para poder considerarla inteligente, nunca ninguna computadora había pasado este porcentaje, pero por fin la supercomputadora se hizo pasar por un chico de 13 años logrando convencer a un 33% por ciento de los jueces.


Lo han logrado por primera vez dos ingenieros Vladimir Veselov y Eugene Demchenko. Han creado un sistema capaz de engañar a una buena parte del jurado, convenciéndolos que en el otro lado había un chaval ucraniano de 13 años llamado Eugene Goostman, amante de las hamburguesas y las golosinas. 



“Que un ordenador pueda engañar a un humano haciéndole pensar que algo, o una cosa, es una persona en la que poder confiar es una llamada de atención respecto al ciber-crimen”, aseguró


Kevin Warwick, profesor visitante en la Universidad de Reading, donde se llevó a cabo la histórica prueba.



sábado, 1 de junio de 2013

Lifi el heredero natural del Wifi.


Un grupo de investigadores alemanes de Instituto Fraunhofer Heinrich Herzt en Berlín han logrado transmitir datos mediante LEDs a una velocidad de 800Mbps. Puede que estemos ante la puerta a un futuro o casi un presente de las nuevas conexiones sin cable a la red.
Están hablando de unas velocidades de transmisión de hasta 3 Gbps, si si estas leyendo bien, hasta tres Gigas. Las conexiones wifi pueden llegar a alcanzan unos 300 Mbps mientras que la Lifi en condiciones normales están alcanzando ya unos 500 Mbps y se está mejorando para poder llegar a alcanzar los 3 Gbps.
Se envía la información digital que es invisible a la vista a un sensor que recoge la información enviada por el LED. 
Como se puede ver es muy buena alternativa en lugares donde no se pueda disponer del cable para realizar conexiones tradicionales. Cualquier lámpara o farola se puede convertir en unos años en una conexión punto caliente de conexión o como se conoce en redes en un hotspot.

viernes, 22 de marzo de 2013

Optimizar SQL

Cuando realizamos una consulta a una BD para obtener datos hay que ver que dicha consulta está optimizada o lo que es lo mismo, ver si es la mejor manera como la hemos realizado. 

Si no lo hacemos podemos sobrecargar el sistema innecesariamente y que tarde en recuperar los datos de forma escandalosa.

Voy a comentar que podemos hacer para que al realizar una consulta SQL no quede lo mas optimizada posible con las siguientes ayudas:

-Lo primero que hay que tener en cuenta es que las tablas tienen que estar en 3FN con ello evitamos duplicidad de datos y para poder aprovechar al máximo el almacenamiento de los datos.

-Es muy común pensar crear campos para comentarios en una tabla y muchas veces ni los rellenamos, por eso es mejor crear una tabla a parte para los comentarios evitando así desperdiciar espacio.

-Los tamaños de los datos ajustarlos bien, poner los campos que son fijos los primeros de las tablas y los variables los últimos.

-Colocar indices en los atributos que nos sirven como nexos entre varias tablas por ejemplo en las claves de tablas con las que vayamos hacer consultas que requieran JOINs.

-Solo seleccionar los campos que necesitemos para la consulta y no seleccionar todos los campos con el clásico asterisco * .

-Indicar la tabla a la que accedemos cuando usamos varias tablas en una consulta con varios atributos procedentes de distintas tablas, viene bien el uso de alias.

-Es importante hacer que los WHEREs en las consultas los hagamos sobre los campos claves.

-Tener en cuenta el orden de las tablas en la clausula FROM y WHERE ya que si queremos obtener por ejemplo los PEDIDOS de un CLIENTE en el año 2012 es conveniente hacer primero que filtre el año para evitar que recorra todos los pedidos.

Estas son algunas de las cosas que se pueden hacer para que las consultas se realicen de una forma más optima. Aunque en otros artículos repasaré mas formas.




miércoles, 27 de febrero de 2013

Sinclair ZX Spectrum


Cuando miro al pasado y me acuerdo Spectrum recuerdo aquellas tardes en las que uno estaba embobado delante del televisor esperando a que cargase un juego, que en mi caso estaba acompañado de mi hermano. Mirando la pantalla escuchando esos pitidos característicos que emitía al cargar incluso al pasar los niveles del juego.

El Sinclair ZX Spectrum fue uno de los ordenadores más populares de Europa en los años 80 y principio de los 90. Este ordenador que marco una época y que incluso a día de hoy aún tiene miles de fans que siguen jugando a sus juegos y existe un mercado de coleccionismo.

Sus creadores fueron R.Altwasser (Hardware) y S.Vickers (Software), pero en España se fabricó el Sinclair ZX Spectrum 128K por la empresa Ivestrónica. En sus inicios los vendían en El Corte Inglés cuya distribuidora oficial era Sinclair Research. Posteriormente, en 1986 esta se lo vendió a Amstrad por unos 5 millones de libras. El que yo tengo el modelo ZX Spectrum +2 ya pertenecía a Amstrad y lo adquirimos en donde se encuentra la actual Fnac de Callao donde había un Galerias Preciados.
Con su unidad de cassete, con una memoria ROM de 32 Kb,  su pantalla a 8 colores y hasta 16 colores en modo brillo,  una CPU Zilog a 3,5 Mhz y los 128 Kb de RAM. 

Bueno viendo estas características uno se puede hacer una idea de los gráficos que tenía el chisme.

Os recomiendo echar un vistazo a una web para recordar aquellos momentos o conocer de lo que estoy hablado, os dejo un enlace para jugar online en una página con muchos juegos y algunos clásicos. http://www.zxspectrum.net/

Un pequeño trozo de la historia de la informática sin lugar a dudas y uno de los mejores trastos que he tenido el placer usar jamás.





lunes, 18 de febrero de 2013

Appserv: Apache + MySQL + PHP

Esta herramienta Open Source de la que os voy a hablar se llama Appserv. Nos permite tener un servidor Apache, una base de datos MySQL y depurar nuestros scripts PHP sin subir los archivos a un servidor remoto, todo desde localhost.



Es un programa que esta bajo la licencia GNU y es gratis, sus creadores fueron un grupo de desarrolladores tailandeses. Nos permitirá crear nuestras webs dinámicas y probarlas en nuestro equipo antes de subirlas al servidor remoto. 

Actualmente, la última versión que se está utilizando es la Appserv 2.6.0 y que se puede descargar desde el enlace que os pongo.

Esta versión contiene los siguientes paquetes:

-Apache 2.2.8 que es un servidor web HTTP de código abierto.

-PHP 6.0 es un lenguaje tipo script del lado del servidor.


-MySQL 6.0.4-alfa un gestor de bases de datos open source.

-phpMyAdmin -2.10.3 es una herramienta para administrar la base de datos mediante a través de la web.




Se recomienda instalarlo en Linux, pero yo lo estoy usando en Windows para un curso que estoy haciendo de PHP + MySQL y funciona muy bien. 

Sin lugar a dudas para hacer pruebas antes de subir toda la web al servidor y comprobar que todo está correctamente es la herramienta ideal, nos ahorrará mucho tiempo y podremos trabajar desde nuestro equipo y depurar los errores. Espero que os sirva de ayuda para vuestras creaciones.