lunes, 29 de septiembre de 2014

Breve historia de las computadoras

El concepto de computadora apareció hace más de 160 años gracias a Charles Babbage y su Máquina Diferencial. Esta calculadora mecánica fue diseñada para tabular funciones polinomiales y su construcción no se llegó a culminar hasta mucho tiempo después de su diseño. La computadora estaba compuestaba por cientos de ruedas giratorias y una manivela para operarla.

Máquina diferencial del Museo de Londres.

Después de la Máquina diferencial, Babbage diseñó una máquina mucho mejor denominada Máquina Analítica, la cual incluyó soporte para realizar cálculos complejos con tarjetas perforadas. Aunque nunca se construyó, el diseño de esta máquina es notable debido a que está basada en los principios fundamentales de la informática moderna.


Primera Generación de Computadoras (1938-1958)


La primera generación de computadoras se caracterizó por el uso de tubos de vacío y relés para el procesamiento de datos. También era usual utilizar tarjetas perforadas o cintas de papel perforado para la entrada de datos y como medio de almacenamiento no volátil.

La primera computadora de esta generación de propósito general es la ENIAC (Electronical Numerical Integrator And Computer), también considerada como la primera computadora electrónica completa. Fue desarrollada inicialmente para el cálculo de trayectoria de proyectiles para el Laboratorio de Investigación de Balística de los Estados Unidos, y se terminó de construir en 1945. Su peso aproximado era de 27 toneladas y ocupada unos 167 metros cuadrados. Fue construída bajo la dirección de John Presper Eckert y John William Mauchly de la universidad de Pensilvania. Una de las grandes desventajas que tuvo la construcción y puesta en marcha de esta máquina era el gran costo que generaba en luz eléctrica, pues consumía unos 160.000 Watts, y era muy común el reemplazo de válvulas cada uno o dos días.

ENIAC (Tomado de Wikipedia)

En 1951, se construye la UNIVAC I, la primera computadora comercial fabricada en los Estados Unidos. Esta computadora pesaba más de 7 toneladas y estaba compuesta por 5.000 tubos de vacío, pudiendo ejecutar unos 1.000 cálculos por segundo. Funcionaba con una frecuencia del reloj de 2,25 MHz y utilizaba memorias de mercurio mucho más fiables que las anteriormente usadas de tubos de rayos catódicos.

UNIVAC I (Tomado de Wikipedia)

Segunda Generación de computadoras (1958-1964)


La segunda generación de computadoras reemplazó los antiguos tubos de vacío por transistores, lo cual impulsó el desarrollo de computadoras más pequeñas. Estas computadoras se programaban con lenguajes de programación de alto nivel.

En 1957 aparece el primer lenguaje de programación de alto nivel denominado FORTRAN (FORmula TRANslator) desarrollado por IBM para el equipo IBM 704.

En 1959 aparece el IBM 1401 basado en la tecnología de transistores, y con una memoria magnética de 4.000 caracteres que posteriormente se extendió a 16.000.

En 1960 aparece el IBM 1620 con una memoria de núcleo magnética de más de 60.000 dígitos decimales. En este mismo año se desarrolla el lenguaje de programación COBOL (COmmon Business-Oriented Languaje), el primer lenguaje de programación de alto nivel transportable entre modelos diferentes de computadoras; y ALGOL (ALGOrithmic Language), primer lenguaje de programación estructurado y orientado a los procedimientos.

Tercera Generación de computadoras (1964-1971)


La tercera generación de computadoras se caracterizó por la utilización de circuitos integrados que reemplazaron las placas de circuitos impresas.

En el año 1964 IBM anuncia la serie 360, la cual marca el comienzo de la tercera generación de computadoras. Las placas de circuito impreso con múltiples componentes son reemplazadas por circuitos integrados. Esto generó un gran avance en la construcción de computadores pues se redujo su tamaño y se optimizó la velocidad de procesamiento. En esta época aparecen las primeras minicomputadoras.

Cuarta Generación de computadoras (1971-1981)


La cuarta generación de computadoras estuvo marcada por la utilización de microprocesadores haciendo posible la construcción de microcomputadoras.

El tamaño reducido de los microprocesadores hizo posible la construcción de los primeras microcomputadoras, más conocidas como computadoras personales. El primer microprocesador de 8 bits fue el 8008 desarrollado por Intel en 1972. Este microprocesador contenía 3.300 transistores, aunque el microprocesador realmente diseñado para uso general fue su sucesor el Intel 8080, el cual contenía 4.500 transistores.

Intel 8008

Las microcomputadoras han evolucionado hasta convertirse en Laptops, las cuáles son las computadoras con más alta tendencia en el mercado hoy en día. También existen las Supercomputadoras que son utilizadas para fines específicos, construidas con cientos de los componentes principales de las computadoras de escritorio.


Referencias

- C. Wu, Thomas (2010). An introduction to Object-Oriented Programming with Java™ 5ed. NY: Mc Graw Hill.
- Primera generación de computadoras. (2014, 8 de septiembre). Wikipedia, La enciclopedia libre. Fecha de consulta: 16:18, septiembre 29, 2014 desde http://es.wikipedia.org/w/index.php?title=Primera_generaci%C3%B3n_de_computadoras&oldid=76852532.
- ENIAC. (2014, 25 de septiembre). Wikipedia, La enciclopedia libre. Fecha de consulta: 14:47, septiembre 29, 2014 desde http://es.wikipedia.org/w/index.php?title=ENIAC&oldid=77179255.
- UNIVAC I. (2014, 4 de septiembre). Wikipedia, La enciclopedia libre. Fecha de consulta: 16:08, septiembre 29, 2014 desde http://es.wikipedia.org/w/index.php?title=UNIVAC_I&oldid=76772820.
- Segunda generación de computadoras. (2014, 24 de septiembre). Wikipedia, La enciclopedia libre. Fecha de consulta: 16:17, septiembre 29, 2014 desde http://es.wikipedia.org/w/index.php?title=Segunda_generaci%C3%B3n_de_computadoras&oldid=77166469.
- Anexo:Historia de la computación. (2014, 27 de septiembre). Wikipedia, La enciclopedia libre. Fecha de consulta: 16:16, septiembre 29, 2014 desde http://es.wikipedia.org/w/index.php?title=Anexo:Historia_de_la_computaci%C3%B3n&oldid=77211596.
- Tercera generación de computadoras. (2014, 18 de septiembre). Wikipedia, La enciclopedia libre. Fecha de consulta: 19:09, septiembre 29, 2014 desde http://es.wikipedia.org/w/index.php?title=Tercera_generaci%C3%B3n_de_computadoras&oldid=77047459.

sábado, 6 de septiembre de 2014

Introducción a UML

Las grandes empresas necesitan aplicaciones corporativas que ayuden a mejorar sus procesos de negocio de una forma rápida y eficiente, y que brinden la posibilidad de evolución a medida que las necesidades cambien. Es por esto que una aplicación empresarial debe aportar escalabilidad, seguridad, robustez, y debe mantenerse estable ante condiciones de estrés, este conjunto de características hace referencia a lo que el el software se denomina su arquitectura. De la misma forma en que un edificio requiere de planos arquitectónicos para soportar teóricamente su existencia, las aplicaciones de software requieren de modelos que soporten su estabilidad y garanticen el correcto funcionamiento del sistema y su mantenibilidad. Estas características también pueden ser aplicadas a proyectos de software mucho más pequeños, pero en donde realmente compruban su eficacia es en proyectos de gran escala. El estándar para el modelado arquitectónico en aplicaciones de software se denomina UML (Lenguaje Unificado de Modelado).

El origen de UML


Anteriormente los programadores intentaban de manera somera representar los requerimientos del cliente dibujando dos o tres garabatillos que solo ellos entendían. Seguidamente casi sin analizar un poco más lo que habían obtenido del cliente empezaban a programar el sistema agregando poco a poco el código que fuera necesario en el proceso. Hoy en día ésta no es una práctica recomendada dado que no se transmite una idea clara del proceso al cliente y éste no puede evidenciar de manera correcta el avance del sistema. Puede ocurrir el caso de que el analista haya malinterpretrado al cliente y esto solo se evidencie después de la realización del proyecto.

Logo oficial de UML
Es por esto, que hoy en día es necesario contar con un plan bien definido del proceso de desarrollo de software. Se debe organizar el proceso de diseño de tal forma que los analistas, desarrolladores, project manager, y otras personas involucradas en el desarrollo del sistema comprendan cuál es el objetivo general del mismo y el lugar que ocupa cada uno dentro de él. Es entonces cuando aparece el concepto de UML, que solidifica el proceso de creación de proyectos de software permitiendo al observador distinguir los aspectos relevantes del sistema, así como visualizar de forma clara y fácil el flujo del mismo.

Modelado de software


El modelado comprende todo el proceso de diseño de aplicaciones de software. Antes de codificar las aplicaciones se recomienda realizar un modelado de la aplicación en donde se especifique su arquitectura y diseño. Entre más grande sea un producto de software es mucho mayor la probabilidad de fracaso, de no terminar el producto a los plazos pactados y con el presupuesto asignado. Es por esto, que el modelado en el desarrollo de software brinda una visión prometedora del proyecto para la toma de decisiones.

En la última especificación de UML, se definen trece tipos de diagramas agrupados en tres categorias. Seis tipos de diagramas representan la estructura estática de la aplicación, otros tres representa su comportamiento y cuatro más representan las interacciones.

Diagramas de Estructura: Diagrama de Clase, Diagrama de Objeto, Diagrama de Componente, Diagrama de Estructura Compuesta, Diagrama de Paquete, Diagrama de Despliegue.

Diagramas de Comportamiento: Diagrama de caso de uso, Diagrama de Actividad, Diagrama de Estado de la Máquina.

Diagramas de Interacción: Diagrama de Secuencia, Diagrama de Comunicación, Diagrama de Tiempo, Diagrama de Interacción.

Más adelante, veremos como cada uno de estos diagramas pueden representar parte del programa de manera clara y concisa. Hasta la próxima!.


Referencias

- Schmuller, Joseph (2001). Aprendiendo UML en 24 horas. México: Pearson Educación.
- Introduction To OMG's Unified Modeling Language™ (UML®). (2014, September 6). In OMG UML. Retrieved 09:00, September 6, 2014, from http://www.omg.org/gettingstarted/what_is_uml.htm

viernes, 5 de septiembre de 2014

Configuración PHP en Apache

La siguiente documentación se aplica para el servidor web Apache 2.2+ y PHP 5.3 o superior. Se ha de suponer que ya se tiene instalado tanto el servidor Apache (ver instalación) como el compilador del lenguaje de programación PHP (ver instalación).

Existen tres formas distintas de configurar PHP para trabajar con Apache. La primera es configurar PHP como un controlador de Apache, la segunda configurarlo como CGI, y la tercera como FastCGI.

Windows 7/8


PHP como controlador de Apache (handler)


Para configurar PHP como handler se deben agregar las siguientes líneas de código al archivo httpd.conf del Apache.

# Cargar PHP
LoadModule php5_module "c:/php-5.5.12/php5apache2_4.dll"
AddHandler application/x-httpd-php .php

# Configurar la ruta de php.ini
PHPIniDir "C:/php-5.5.12"

En este caso se ha utilizado la ruta c:\php-5.5.12 de acuerdo a nuestra versión de PHP y a la instalación que hemos hecho en Instalación PHP. Debemos asegurarnos que el archivo php4apache2_4.dll exista en este directorio. Posteriormente, si no lo hemos hecho antes, configuramos la zona horaria y el directorio raíz en el fichero php.ini.

doc_root = c:\inetpub\wwwroot
date.timezone = "America/Bogota"

El directorio raíz viene por defector direccionado al directorio c:\php-5.5.12\htdocs, si deseas cambiarlo deberás agregar la primera línea, en caso contrario solamente la segunda. Para verificar que todo se ha configurdo correctamente iniciarmos el servicio de apache, creamos un archivo llamado phpinfo.php en el directorio raíz y vamos a la dirección URL http://localhost/phpinfo.php. El archivo deberá contener la siguiente línea de código:

<?php phpinfo() ?>

Y deberá visualizarse de la siguiente manera en el navegador


La configuración de php mostrará en la directiva Server API el valor Apache 2.0 Handler.

PHP como CGI


CGI (Common Gateway Interface) define un camino para ejecutar aplicaciones externas denominadas scripts. Con las configuración adecuada no solamente podremos ejecutar aplicaciones PHP sino cualquier otra aplicación que soporte scripting como en Perl, Python, entre otros. Para poder ejecutar aplicaciones CGI debemos tener configurado el Apache para permitir la ejecución de scripts por CGI. Esto se logra de varias maneras.

ScriptAlias


La directiva ScriptAlias le comunica a Apache que un directorio ha sido configurado para ejecutar programas CGI y por ende, todo fichero situado en este directorio será ejecutado como CGI. Para lograr esto debemos agregar la siguiente línea de código al archivo de configuración httpd.conf.

ScriptAlias /cgi-bin/ c:/Users/youruser/Documents/cgi-bin

Por lo general el directorio en donde se encuentran los programas CGI es un directorio externo al DocumentRoot definido en el mismo httpd.conf.

CGI fuera de los directorios ScriptAlias


Como se vio anteriormente, la ejecución de programas CGI está restringida a la directiva ScriptAlias por razones de seguridad. Sin embargo, si se toman las medidas de seguridad adecuadas puede permitirse la ejecución de scripts CGI en cualquier directorio. Para lograr esto debe habilitarse la directiva AddHandler o SetHandler y especificar ExecCGI en las opciones de directiva.

En el archivo httpd.conf especificamos que extensiones están habilitadas para scripts CGI.

AddHandler cgi-script .cgi .pl

En el archivo principal de configuración del servidor

<Directory c:/apache2/htdocs/algundirectorio>
   Options +ExecCGI
</Directory>

Para habilitar la ejecución de scripts CGI a cualquier usuario del sistema agregamos la siguiente directiva

<Directory c:/Users/*/Documents/public_html>
   Options +ExecCGI
   AddHandler cgi-script .cgi .pl
</Directory>

Archivos .htaccess


Finalmente si no se tiene acceso al archivo de configuración httpd.conf en el servidor se puede lograr la ejecución de script CGI mediante archivos .htaccess. Puedes visitar el siguiente tutorial directamente en la página de Apache (VER TUTORIAL).

PHP como FastCGI


Ejecutar PHP bajo FastCGI tiene varias ventajas sobre instalarlo como CGI. Para configurar PHP como FastCGI debe seguir las siguientes instrucciones:

1. Descargar el módulo de Apache mod_fcgid directamente desde la página de Apache (DESCARGAR) e instalarlo de acuerdo a sus instrucciones de instalación.

2. Configurar el servidor web tal como se muestra a continuación

LoadModule fcgid_module modules/mod_fcgid.so


# Directorio en donde se encuentra php.ini
FcgidInitialEnv PHPRC  "c:/php" 

AddHandler fcgid-script .php
FcgidWrapper "c:/php/php-cgi.exe" .php

Después de esto los archivos con extensión .php serán ejecutados bajo FastCGI.


Referencias

- PHP: Apache 2.x on Microsoft Windows - Manual. (2014, 5 de Septiembre). PHP: Hypertext Preprocessor. Fecha de consulta: 19:08, Mayo 9, 2014 desde http://php.net/manual/en/install.windows.apache2.php
-Apache Tutorial: Dynamic Content with CGI. (2014, 5 de Mayo). The Apache Software Foundation. Fecha de consulta: 7:08, Septiembre 5, 2014 desde http://httpd.apache.org/docs/current/howto/cgi.html

Introducción a Java

La tecnología Java es tanto un lenguaje de programación como una plataforma.

Java como lenguaje de programación


Es un lenguaje de programación de alto nivel caracterizado por ser simple, orientado a objetos, robusto, seguro, dinámico, portable y multihilo. El código fuente esta compuesto por archivos de texto plano con la extensión .java. Estos archivos son compilados por el javac compiler que lo convierte en bytecodes para que la JVM (Java Virtual Machine) los traduzca a código binario para que los pueda comprender el computador. De esta forma, solo es necesario tener instalada una copia de la JVM en cualquier computador para poder ejecutar programas en java, he aquí la supremacía de su portabilidad.

Proceso de desarrollo en java


Java como plataforma


La plataforma Java comprende únicamente el entorno de software, el cual puede ser ejecutado en distintas plataformas como Microsoft Windows, Linux, Solaris OS y Mac OS. Esta plataforma está compuesta por dos compnentes

- La JVM (Java Virtual Machine)
- La API (Application Programming Interface)

La JVM com ya hemos visto se encarga de transformar el código de las aplicaciones a el código binario necesario para que cada procesador lo ejecute. Entre tanto, la API de Java es un conjunto de funciones (métodos) en clases, y empaquetadas en packages o paquetes de software que proveen la funcionalidad básica en la aplicaciones de Java.

Lugar la plataforma Java


Como puede observarse, la plataforma Java se sitúa justo en el medio de las plataformas de hardware populares y los programas Java. Más adelante veremos como instalar la JVM y las herramientas necesarias para desarrollar aplicaciones en Java con el JDK (Java Development Kit).

Para realizar una instalación del entorno de desarrollo en Java JDK puedes seguir este hilo leyendo nuestro post Instalación de Java (JDK).


Referencias

- Trail: Getting Started (The Java&trade; Tutorials). (2014, August 20). In Oracle Documentation. Retrieved 09:00, September 5, 2014, from http://docs.oracle.com/javase/tutorial/getStarted/intro/definition.html