Bienvenidos al nuestro Blog de la materia :D

Equipo 6

• Jonathan Daniel Contreras Vargas ----> Matricula: 1443137

• Juan Martin Rios Gonzalez ----> Matricula: 1491904

• Angelica Zuleima Ramirez ----> Rivera Matricula: 1493139

• Alejandro Flores Vazquez ----> Matricula: 1446219

domingo, 26 de mayo de 2013

Proyecto Final


Proyecto Final


Introducción:

En la actualidad la rapidez forma parte de un factor muy importante, ya que en muchas ocasiones al momento de escoger un servicio o producto nos enfocamos en gran medida a la rapidez de este, así como cuando buscamos una respuesta, lo queremos rápido y confiable. Ahora al imaginar la gran cantidad de datos con las que tienen que trabajar diariamente las empresas internacionales, ahora con saber que el jefe quisiera saber cuantos de sus productos se están vendiendo en este mismo momento y de manera actualizada, solo con pensar en las miles de sucursales que tienen en todo el mundo. Que dolor de cabeza imaginar el contador de la matriz recibiendo datos de todo el mundo y contándolos uno por uno. Pues esto cambia totalmente con los sistemas distribuidos ya que funciona como una gran malla donde donde todas las computadoras trabajan al mismo tiempo para dar el resultado deseado, ya no tiene que sumar todo una sola ni de dato por dato, si no que todas las computadoras de las sucursales y de la matriz trabajan juntas para dar el resultado final de manera rapida


Planeación de la implementación:

Ya hablando de matrices y sucursales comerciales, nos vino la idea de que ademas de manejar datos de muchas sucursales seria una buena aplicación que estos datos recibidos sean de gran cantidad, de aquí nuestra idea de realizar "inventarios" de sucursales. El servidor sera instalado en la computadora que simula ser la matriz, y los demás clientes serán instalados en las sucursales. Los clientes(sucursales) realizaran su inventario simultáneamente y sera recidivo por el servidor(matriz) que este solo se encargara de sumar el total de cada cliente.


Proceso

El servidor les pedirá realizar inventarios simultáneamente a cada cliente, las cantidades con las que trabajaran estarán situadas en un txt, el cliente tiene la responsabilidad de tomar, leer e interpretar los archivos para saber la ganancia neta un año de tal sucursal, después de saber la ganancia, esta sera enviada al servidor, el cual estará a tentó de recibir todas y cada unas de las ganancias de todos sus clientes, estos al final serán sumados y mostrados para conocer la ganancia global



Aplicación

Como se vino contando anteriormente, este sistema distribuido sera aplicado en simulación de una empereza internacional, con sucursales alrededor de todo el mundo, que desean saber las ganancias globales, así que cada sucursal realizara sus operaciones correspondientes simultáneamente cuando la matriz lo desee, y serán enviadas a esta, para que después de realizar las sumas de casa sucursal tener al fin el resultado global.


Evidencia del programa:


1. El proyecto se ve de la siguiente manera, ya que es una aplicación de consola, aquí se observa la consola en los entornos de desarrollo Netbeans y Eclipse.

Figura 1.



2. El proyecto se ve de la siguiente manera, ya que es una aplicación de consola, aquí se observa la consola en los entornos de desarrollo Netbeans y Eclipse.

Figura 1.1



3. Ahora se inicia el servidor (Entorno Eclipse), para esperar a los clientes que quieran conectarse, después de esto se pide el IP correspondiente. El número de clientes puede llegar a ser de “N” cantidad.


Figura 1.2



4. Una vez que llega el cliente, el servidor le envía el archivo que solicitó el cual se va leyendo de número por número desde el archivo .txt, y tales cifras aparecen en la consola.

Figura 1.3



5. Posteriormente, se obtiene la suma total del archivo, Después, si llega otro cliente, se hace la misma operación, y como se observa en la figura 1.4 el servidor recibe la suma total del cliente.

Figura 1.4

Conclucion

Como hemos visto desde la introducción con el ejemplo del contador de la matriz de la empresa contando los datos uno por uno hasta el sistema distribuido donde pone a cada computadora de las sucursales a realizar las operaciones correspondientes para obtener las ganancias y ventas totales de su sucursal de manera simultanea, para que después solo la computadora de la matriz tenga que sumar las cantidades finales, de un ejemplo a otro tiene en comun el resultado, pero una gran diferencia en el tiempo de realización, donde en una se podrían tardar grandes jornadas de trabajo, hasta otra donde se obtienen los resultados de manera instantánea. Con este trabajo obtuvimos granes conocimientos sobre un sistema distribuido, y de la mejor manera que con un ejemplo práctico y llevando en práctica la realización de este, notamos la potencia y la rapidez casi instantánea de sistema distribuido y los grandes beneficios que otorga.

Actividad 10. Final

Resultado Final, Evidencia y Conclusión.


Resultado final

Se obtuvo lo que se esperaba del proyecto, ya que funcionó correctamente, leyendo los archivos y haciendo de forma correcta el inventario, los datos del servidor eran solicitados y enviados al cliente el cual por medio de un proceso los sumaba para conocer el inventario. El archivo, en formato txt, estaba compuesto por cientos de números, lo cual hacia la operación un poco más larga que cualquier otra, pero al final lo lograba.


Evidencia:

 Aquí se muestra un screenshot de cuando e conecta el cliente con el servidor. Posteriormente recibe datos y los envía, y muestra la suma tanto al cliente como al servidor, además de permitir conexiones múltiples:




Conclusión:

El resultado al que se quería llegar, se logró. Todo el equipo, coincidimos en que es un proyecto que nos dejó conocimiento muy útil para posibles trabajos futuros, no solo académicamente hablando sino también al momento de estar trabajando en una empresa, ya que lo sistemas distribuidos forman, hoy en día un papel muy importante en la sociedad y son de gran ayuda en la tecnologías de información de empresas, o lugares donde se manejan un alto número de datos, en las que un sistema paralelo, o un sistema secuencial, no pueden lograr.

Aviso







La entrada correspondiente a esta actividad es la misma que corresponde a la #9, haga clic en este ENLACE para ir a la entrada

Actividad 8. Fases, Planeación e Implementación

Fases, Planeación e implementación:


Las fases de nuestro proyecto fueron:

·         Elección del lenguaje de programación. El lenguaje forma parte importante del desarrollo del problema ya que debe soportar lo que queríamos hacer.
·         Elección de la funcionalidad. Se tenía en mente el trabajo a realizar, sin embargo, no había un
acuerdo en que e realizaría con los archivos.
·         Investigación para complementar con los conocimientos que tenemos. Previamente habíamos visto algo a cerca de los sockets cada quien por su propia cuenta, sin embargo nos fue necesario saber un poco más de lo que ya conocíamos.
·         Codificar. Se realizó la implementación del código en el lenguaje JAVA, por medio de Eclipse y NetBeans.
·         Realizar pruebas. Para revisar que todo estuviese en orden, y presupuestó que funcionara a la perfección


La planeación:

-          La primera planificación que hicimos fue la de estudiar, repasa cada quien a cerca de sockets y buscar una alternativa correcta para implementarlos orientado a nuestro proyecto.
-          Posteriormente, empezamos a revisar lo que sería necesario.
-          Después de saber que teníamos que haces el trabajo se dividió entre los miembros del equipo.
-          Después cada quien realizó la parte del proyecto que se le había asignado, para después de unos días revisarla en equipo, y revisar que todo estuviese en orden.
-          Ahora, el programa fue probado, y sometido a varias pruebas.
-          Después de revisar el programa, nos dimos cuenta que después de un tiempo no había errores así que funcionaba a perfección.


Implementación:

Al terminar todos estos pasos, se tuvo un programa que era capaz de realizar e inventario de una empresa sin necesidad de papeleo, ya que automáticamente tomaba el archivo y  lo procesaba, lo recibía del servidor y una vez que el cliente terminaba, lo enviaba a la respuesta.

sábado, 25 de mayo de 2013

Actividad 7: Presentación del caso de aplicación y detalles.


Presentación del caso, aplicación y detalles


Objetivo del proyecto:

Implementar un programa que sea capaz de realizar inventarios por medio de un sistema distribuido.


Descripción:
Se realizará un programa que sea capaz de realizar un inventario paa N cantidad de clientes con N cantidad de archivos; tales archivos tendrán una extensión .txt. Cada cliente llamará al servidor para realizar la petición del archivo, éste será mandado, y posteriormente recibido con la suma de la sub-empresa en un lapso determinado de tiempo.


Herramientas a utilizar:

·         Entorno de desarrollo para Java (Eclipse o Netbeans).
·         Tres o más computadoras conectadas en red, y una más que será el servidor.


Métodos a utilizar:

Para realizar la conexión entre cliente – servidor se utilizarán sockets, teniendo en cuenta que:




“Un socket (enchufe), es un método para la comunicación entre un programa del cliente y un programa del servidor en una red. Un socket se define como el punto final en una conexión. Los sockets se crean y se utilizan con un sistema de peticiones o de llamadas de función a veces llamados interfaz de programación de aplicación de sockets (API, application programming interface).
Un socket es también una dirección de Internet, combinando una dirección IP (la dirección numérica única de cuatro partes que identifica a un ordenador particular en Internet) y un número de puerto (el número que identifica una aplicación de Internet particular, como FTP, Gopher, o WWW)”

La conexión se utilizará por medio de la IP, con computadoras conectadas en una misma red de usuarios, para de esta manera hacer más fácil el envío y recepción de los archivos.


 Conclusión:

Es un proyecto muy completo, ya que además de hacer la conexión debida del cliente con el servidor se abren y hacen inventarios de archivos txt, y nos ayuda a aprender un poco más a cerca del comportamiento de los sockets.



sábado, 20 de abril de 2013

Practica #6 - Implementacion del algoritmo distribuido

Practica #6.

Codificación del algoritmo distribuido, el cual consta de cliente-servidor programado en el lenguaje C#. Donde el servidor actúa como receptor de datos, de cada cliente, los cuales hacen una lectura de un archivo .txt con mas de 3000 precios de un almacén  los cuales son sumados y a su vez enviados al servidor en forma de bytes para que este haga una recopilación de los precios que tiene cada cliente, sumando cada una de las cantidades recibidas dependiendo cuantas conexiones existan. Al termino de cada suma de los archivos recibidos el servidor escribe en otro .txt el valor total obtenido y a la espera de alguna nueva conexión.


Pantalla del Servidor.



Pantallas de los clientes conectados.



El archivo de texto generado por el servidor:

Link de los ejecutables y archivos de texto.
Nota: colocar los archivos de texto en la raíz del disco local.

lunes, 8 de abril de 2013

Actividad 5. Algoritmo distribuido

Algoritmo de un sistema distribuido:


El algoritmo es de una aplicación, que envía mensajes del cliente al servidor por medio de una conexión que se hace por el IP, este sistema interactuará con más de una computadora, una de ellas será el servidor, quien recibirá el mensaje, y las demás el cliente quienes envían el mensaje.

Aplicación: Este algoritmo se puede utilizar por ejemplo, en una empresa donde se requiera enviar un mensaje sin necesidad de usar correo electrónico y por seguridad, se requiere del IP para poder contactar al servidor.

A continuación se presenta el algoritmo del programa:

1.     Inicio
2.     Para el servidor, se declaran las librerías
3.     Se crea un socket
4.     Se crea un método para recibir el host
5.     Se almacena el numero
6.     Se crea un método para recibir el puerto
7.     Se almacena el número de puerto
8.     Se declara cuantas conexiones debe escuchar
9.     Se realiza un ciclo while true
10.Se establece el tamaño del mensaje
11.Para el cliente, se declaran librerías
12.Se crea el socket
13.Se recibe el host
14.Se almacena el numero
15.Se recibe el puerto
16.Se almacena el número del puerto
17.Se conecta al servidor
18.Se manda un mensaje que se conectó al host del servidor
19.Se crea un while true
20.Se condiciona, si el host no recibe señal del puerto al que se quiere conectar
21.Si es así, se manda un mensaje “No se puede conectar”
22.De lo contrario, se pide el mensaje a enviar
23.Se envía el mensaje
24.El servidor recibe el mensaje
25.Se cierra el socket del cliente
26.Se cierra el socket del servidor
27.Se imprime que se ha cerrado la conexión
28.Fin

miércoles, 6 de marzo de 2013

Actividad 4. Análisis y conclusión de las aplicaiones


Actividad #4

A continuación se presentan las diapositivas usadas en clase:


Ejecutables:

Python:

Java:


C#:


Conclusiones:
Observando el funcionamiento de cada programa se puede deducir que no siempre utilizar hilos es la manera más “rápida” para llevar a cabo una serie de tareas, ya que algunas veces pueden tardar más que el mismo programa secuencial (recorriendo elemento por elemento), en este caso eran programas pequeños, por lo que utilizar hilos no es una manera muy eficiente para trabajar. También otra cosa que es importante es que el lenguaje a usar en muy importante, ya que no se puede usar cualquiera para cualquier tarea es decir, cada lenguaje tiene su “fuerte” en ciertas actividades.

martes, 26 de febrero de 2013

Actividad 3. Codificación en tres lenguajes


        Diagrama de flujo del Algoritmo Paralelo



Descripción del proyecto:



Consta de tres archivos, (formato .txt) los cuales contienen aproximadamente 1000 cantidades numéricas, las cuales serán sumadas por el programa, al mismo tiempo mediante el uso de Threads (hilos). Este programa realiza la simulación de un inventario, con la diferencia de que realiza múltiples tareas al mismo tiempo.



El siguiente diagrama presenta los procesos e hilos que se ejecutan en el programa, así como el desarrollo de los mismos a la derecha.








Ejecutables en tres lenguajes distintos:


Java:
Link del ejecutable:
Ejecutable



Python:

Link del ejecutable:  
Ejecutable





C#:

Link del ejecutable:
Ejecutable





lunes, 18 de febrero de 2013

Actividad 2: Algoritmo en Paralelo


Regulador de Temperatura:

Nuestro algoritmo es pensado para hacer un programa que pueda regular la temperatura de una computadora, por medio de los abanicos que ésta tiene integrados, de tal forma que el software a realizar con este algoritmo, simulará por medio de hilos las temperaturas que puede tener la máquina, haciendo uso de rangos predefinidos, se tomara la decisión de la cantidad de ventiladores que regularan el calor del equipo (encendiéndolos o apagándolos)

 A continuación se muestra el algoritmo:


1.       Inicio
2.       Declarar: C “Temperatura considerada como caliente”, e inicializar en 30°C
3.       Declarar: E “Temperatura considerada como estable”, e inicializar en 17°C
4.       Declarar: CC “Temperatura considerada demasiada caliente como para un riesgo”, e inicializar en 45°C
5.       Declarar: T1 "Temperatura de la sección bajo el ventilador 1", e inicializar en 21°C
6.       Declarar: T2 "Temperatura de la sección bajo el ventilador 1", e inicializar en 21°C
7.       Declarar: T3 "Temperatura de la sección bajo el ventilador 1", e inicializar en 21°C
8.       Construir un hilo para el ventilador 1
9.       Construir un hilo para el ventilador 2
10.   Construir un hilo para el ventilador 3
11.   Para cada hilo: Hacer un constructor Inicializar: “que permitirá que el ventilador arranque”
12.   Para cada hilo: Hacer un constructor Pausar: “permitirá detener por un momento la ejecución del abanico”
13.   T1, T2, T3 aumentar la temperatura constantemente
14.   Si la temperatura en  “T” es mayor a “C” imprimir: “Inicializar el Ventilador n para empezar a enfriar”
15.   Si el Ventilador(hilo) esta ”Inicializado” disminuir temperatura constantemente
16.   Si la temperatura en “T” en menor a “E” imprimir: “Pausar Ventilador para ahorrar energía”
17.   Si en Ventilador(hilo) esta Pausado aumentar temperatura constantemente
18.   Si la temperatura en  “T” es mayor a “CC” imprimir: “Inicializar los tres enfriadores para evitar daños”
19.   Regresar al paso  14 
20.   Fin

martes, 12 de febrero de 2013

Esta es la tabla de compromisos del laboratorio:


lunes, 11 de febrero de 2013

Alejandro Flores

Biografía Estudio nivel medio superior en la preparatoria Álvaro Obregon de la UANL en la carrera de Mecánico Automotriz y Diesel, Experiencia Laboral 6 meses De servicio Social y 13 meses Trabajando de Mecánico Diesel  Actualmente Estudia en la UANL de Ingeniero en Tecnología de Software.

Mi Objetivo de Clase
Es aprovechar al máximo todas las enseñanzas proporcionadas por el maestro y aprender realizando nuestros proyectos para tener un mejor desarrollo en el campo laboral, así como conocer muy bien los sistemas distribuidos y paralelos que abarca la materia y aumentar el grado de trabajo en equipo.