miércoles, 10 de septiembre de 2014

Entrar en el mundo MySQL en 3 pasos.


MySQL es un SGBD multiusuario y multihilo con aproximadamente 6 millones de usuarios.  Por reseña histórica decir que en 2008 Sun compró a MySQL que era una BD Open Source y posteriormente en el 2009 Oracle compró a Sun.

MySQL tiene licencia GPL pero también tiene parte con uso comercial con una licencia privativa, además comentar que el desarrollo de este SGBD es en C. Por lo que comenté en el primer párrafo ahora el control de MySQL lo lleva una empresa privada que también lo patrocina. El mayor uso de MySQL está en la web por ejemplo: Wikipedia, Google, Facebook, Twitter, Flickr y Youtube entre otros.

Después de esta pequeña introducción voy a pasar a detallar como se instala MySQL.

1.- Lo primero es ir a la página http://www.mysql.com/  en ella tendremos que ir al apartado de descargas (Downloads).
Como no me quiero gastar un duro en ello hay que ir al apartado que pone MySQL Community Edition (GPL) pulsamos en el link 

y posteriormente vamos al apartado MySQL Workbech accediendo al DOWNLOAD que encontramos justo debajo. 

Tras hacer esto accedemos a una nueva pantalla, en dicha pantalla podemos ver que en la parte de abajo nos da a elegir como queremos descargar el MySQL Workbech en mi caso voy a elegir la versión no instalable y para Windows. Nota: No hace falta registrarse ni logearse puedes hacerlo entrando en "No thanks, just start my download". A continuación, tendremos un archivo .zip descargado en el escritorio o donde lo hayamos guardado. 



2.- El siguiente paso es obvio, tenemos que descomprimir el paquete, de todas formas lo digo por si acaso XD. 

3.- Para ejecutarlo tenemos que ir al .exe  y con ello ya hemos entrado en el MySQL.

En alguna entrada os comentaré como crear una BBDD con el MySQL creo que de lo siguiente que voy a hablar será de la ingeniería inversa que he visto interés en alguno de vuestros comentarios. 

martes, 5 de agosto de 2014

Crear un índice con Oracle 11g



Bueno la entrada de hoy vamos a hablar de los índices de una BD. Un índice es una Estructura de Datos que mejora la velocidad en las operaciones de la BD. ¿Y cómo hace esto? , muy sencillo, el índice es un identificador único de cada una de los registros de una tabla de la BD con esto se permite un rápido acceso a ese registro, se suele hacer sobre aquellos campos que se requieren en frecuentes búsquedas.



En Oracle 11g los índices son opcionales, pero son bastante utilizados o casi imprescindibles. El índice está asociado a una tabla mediante una o varias columnas. Con esto como ya comenté antes se logra que las operaciones a la BD, por ejemplo, una consulta devuelva el resultado más rápidamente, con una tabla enorme es muy ventajoso. Las tablas pueden tener más de un índice, además puede haber índices compuestos.




Un cosa que hay que advertir también es que si bien se mejoran las operaciones de consulta (SELECT), empeoran mínimamente las operaciones de borrado y de inserción. (DELETE e INSERT)


A continuación voy a comentar como crear un índice en una tabla con Oracle 11g, se hace de la siguiente manera, sin tener en cuenta las clausulas y los atributos que podría tener:


CREATE [UNIQUE|BITMAP] INDEX [esquema.]nombre_indice
      ON [esquema.]nombre_tabla [alias_tabla]
         (col [ASC | DESC])

Por ejemplo, tenemos la tabla CLIENTE (nombre,apellidos,tlfno,DNI,sexo,edad), en el esquema EmpresaSA. Si en esta tabla queremos crear un índice lo tendríamos que hacer de la siguiente manera:
CREATE INDEX EmpresaSA.cliente_idx1 
 ON EmpresaSA.cliente (DNI);
Si ahora lo que queremos crear es un índice compuesto por apellido y el DNI sería de la siguiente manera:
CREATE INDEX EmpresaSA.cliente_idx2 
 ON EmpresaSA.cliente (apellido,DNI);
Ambos índices los va a crear en el TABLESPACE en que tenga por defecto el usuario que los ha creado.  Espero que con esto os pueda servir de ayuda para la creación sencilla de un índice.

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.