viernes, 9 de marzo de 2012

Computación distribuida en Python usando Pyro

¿Que es Pyro?
Pyro es una librería de python que podemos utilizar para nuestro proyecto de la materia de paralelos y distribuidos, ya que nos permite construir aplicaciones en donde podemos crear objetos que se comuniquen entre ellos mismos atraves de la red, de una manera relativamente fácil.


Podemos hacer llamadas de métodos normales de Python, con casi cualquier parámetro posible y obtendremos una respuesta, con Pyro lo que hace es localizar el objeto para poder ejecutar el método, por lo que tendremos un conjunto de herramientas permitiendonos construir aplicaciones distribuidas muy fácilmente.


Pyro está escrito 100% en python.


Para instalar Pyro simplemente lo puedes descargar desde su pagina (aquí)
Ahí mismo pueden encontrar la documentación la cual viene muy completa.


Según la documentación de Pyro tienen algunos benchmark usando su código.


"2000 connections in 1.139 sec = 1756 conn/sec
2000 new proxy calls in 1.451 sec = 1378 calls/sec
10000 calls in 1.058 sec = 9452 calls/sec" [Aquí has info] 
 Por lo que podemos ver que es relativamente rápido.


Mi aportación de esta semana consiste en realizar un programa utilizando esta librería, para ello hice un código en el cual se hacen llamadas para obtener las funciones trigonométricas.


Para eso, primero que nada realicé un código que me devolviera dichos valores.






Luego necesitamos un servidor, para el cual utilizo las librerías de Pyro.





Y por ultimo el cliente





Por lo que, necesitamos para correrlo, primeramente nombrar el servidor, por lo que vamos a poner en el terminar, en la carpeta donde tengas el código "pyro-ns"




Luego en otra terminal vamos a ejecutar el servidor.




Y en otra terminal vamos a ejecutar el cliente el cual llama a las funciones trigonométricas.




Aquí podemos ver las tres terminales, para que también puedan ejecutarlo.




Como ven es muy sencillo, con esto podemos hacer lo que vimos en clase de RMI, al igual que hacer el computo PI o mandar mensajes.


Esto es todo por mi parte.

domingo, 4 de marzo de 2012

NFC [Near Field Communication]

NFC, es una tecnología de comunicación que si bien no es nueva, se he escuchado en los últimos años como una de las posibles tecnologías que pudiera cambiar la forma de interactuar con las cosas y ciertas empresas tienen muchos planes utilizando esta tecnología en aparatos móviles, en esta entrada, voy a hablar acerca de que es, como funciona y aplicaciones prácticas.






¿Qué es NFC?
NFC, es una tecnología de comunicación de corto alcance, lo cual permite que diferentes dispositivos puedan intercambiar información con otros dispositivos que utilicen las misma tecnología NFC o con tarjetas de apoyo NFC, por lo que se puede escanear y obtener datos relevantes de esta, algunos países como Japón, tienen desarrolladas aplicaciones utilizandolas.


¿Como funciona?
Es basicamente, poner la parte de atrás algún dispositivo que tenga la funcionalidad NFC, ya sea contra la parte trasera de otro dispositivo que tenga NFC o con una terminal NFC, este lo reconoce automáticamente, mostrando mensajes en la pantalla para leer o escribir información en el dispositivo, funciona con una frecuencia de 13,56 MHz y soporta transferencia de datos a una velocidad mas o menos lenta de 424 kbps, pero es suficiente para mandar datos pequeños, aunque se espera que en algún futuro se aumente esta velocidad, se puede acercar a menos de 20 cm y en menos de 0,2 segundos se establece una conexión, algo que es importante es que solamente requiere poca energía, menor a 15 mA, puede ser más, según cuanta cantidad de datos estamos mandando.


¿Por qué utilizar NFC y no otros?
Ya que las especificaciones técnicas de las que he hablado anteriormente nos ofrece comodidad y seguridad, porque hablando de tecnologías como Bluetooth y Wi-Fi la comunicación que se da es más amplia con frecuencias que oscilan entre 1 a 100 metros, por lo que se pueden tener problemas principalmente de seguridad, ya que si los dispositivos están configurados para aceptar conexiones sin autentificación, cualquier persona dentro de ese rango puede contectarse a ellos y tener acceso a la información almacenada de otro dispositivo, creando un problema de seguridad importante, aunque si decimos que se requiere una contraseña para poder establecer la conexión, también tenemos otro problema, por lo que podemos decir que si queremos seguridad, necesitamos una contraseña para establecer conexión.


La tecnología NFC, puede ofrecernos comodidad y seguridad, al hacer exigir un contacto directo entre dispositivos para poder realizar un intercambio de información y que casi automáticamente puedas obtener información de este, por lo que puedes tener a varias personas que no tengan contraseña configurada para una comunicación NFC y no corren el riesgo de obtener información autorizada.


Aplicaciones.


Actuales:
  • Explorador de etiquetas RFID
    • Un dispositivo que tenga NFC, puede funcionar como un lector de etiquetas RFID, leyendo la información incluida, se puede decir, que se puede utilizar en medios de comunicación como en carteles publicitarios, folletos o incluso para darnos información, por ejemplo, imaginen que vamos a un restaurante y acercamos el dispositivo, al momento tenemos un menú en nuestro celular con descripciones y críticas de los platillos.
  • Sustituto de tarjetas de crédito
    • NFC permite remplazar las tarjetas de plástico y tenerlas todas en nuestro teléfono (pueden ver el video que adjunto abajo), en donde acceder a los servicios de una tarjeta de crédito con esta tecnología, por lo que hacer pagos puede ser mas accesible.
  • Intercambio de datos
    • Dos teléfonos con NFC, pueden realizar intercambios de datos, por ejemplo transferir tarjetas de presentación y tenerlas accesibles en el celular, o compartir fotos y vídeos relativamente fácil.
  • Emparejamiento de Bluetooth o Wi-Fi de autentificación
    • Se puede establecer conexión de bluetooth o Wi-Fi con autenticación, esto es solamente acercar con algún dispositivo lo cual automáticamente podríamos tener un emparejamiento de estos, en vez de pedir códigos de seguridad, solamente los acercamos.

Tendencias Futuras:
  • Pagos Personales
  • Seguridad sin llave
  • Identificación 
  • Redes Sociales
  • Entretenimiento
  • Salud y Seguridad Pública




Referencias
NFC
Near Field Communication
Importancia de NFC

Generic Array Logic [Lab]

¿Que es un GAL?
En electrónica digital, un GAL de las siglas en inglés Generic Array Logic, es un dispositivo lógico programable que es utilizado para realizar circuitos combinacionales lógicos, se desarrolló en los años 80's por la empresa Lattice Semiconductor .


Una lógica combinacional, es un tipo de lógica digital, que se realiza a través de un circuito booleano, esto quiere decir, que la salida es una función que solo depende de la entrada actual, en contrario con la lógica secuencial, la cual tiene memoria, mientras que esta lógica combinacional no.


Arquitectura de un GAL.
El GAL está constituido por un nivel de lógica programable, que consta de una matriz de puertas AND reprogramables conectada con otra matriz de puertas OR para obtener las salidas fijas con lógica programable.




El GAL se puede programar una y otra vez, ya que utiliza E2CMOS (eléctricamente borrable CMOS).


Para ver un poco mas de como se trabaja con un GAL, expongo un programa en lenguaje ABEL, hecho con el programa ispLever Versión 1.5, utilizado en un semestre anterior.


El material que utilicé es:
• Fuente de voltaje de 5VCD.
• Una tablilla de conexiones. [Protoboard]
• Circuito integrado GAL16V8.
• Un DIP switch deslizable de 8 o 4 Switch.
• 4 LED’s
• 4 resistencias de 330 Ohms
• Alambre de conexiones.


Se nos pide que se diseñe un circuito lógico de 3 entradas (A, B y C) y una salida (S).
La salida debe ser de uno lógico, cuando el valor binario de las entradas es mayor que cero (000) y menor o igual que cinco (101) y de cero lógico cuando no cumpla lo anterior.


Procedimiento
1. Especificar el sistema.
A, B, C = primera, segunda y tercera cifra de números binarios. 
F= salida cuando 0<n<=5 en binario 000<n<=101


2. Determinar entradas y salidas






3. Trasladar el comportamiento del sistema a una tabla de verdad
([A,B,C]->F); [0,0,0]->0;  [0,0,1]->1;  [0,1,0]->1;  [0,1,1]->1;  [1,0,0]->1;  [1,0,1]->1;  [1,1,0]->0;  [1,1,1]->0;


4. Minimizar

Todo esto, lo genera el reporte que realizamos en el programa ispLever.


5. Elaborar diagrama esquemático




6. Implementar



  • Circuito con el GAL implementado


  • Código en lenguaje ABEL


  • Simulación de salida




Como podrán ver es muy sencillo programar un GAL y hacer pruebas, para tener mas información, les dejo algunos libros interesantes y links de páginas.


Referencias
Garza Garza, Juan Angel
Sistemas digitales y electrónica digital,
prácticas de laboratorio, Primera edición.
Pearson Educacion, México, 2006


Tocci Ronald J.
Sistemas digitales: principios y aplicaciones,
Octava edición.
Pearson Educacion, México, 2003

M. C. Juan Angel Garza

Microelectronic circuits 1

Sove Elec: Simulación de circuitos en OS X [Lab]

Para realizar circuitos sencillos y comprobarlos antes de realizarlos manualmente, podemos utilizar simuladores que ya realizan esta función y con los cuales podemos de manera sencilla, saber si nuestra idea de circuito, esta bien planteada.


Para esta entrada de blog, les voy a hablar acerca de un simulador de circuitos que encontré para OS X, su nombre es Solve Elec.


Solve Elec, es un programa gratuito, disponible para OS X, en el que facilmente se pueden realizar y analizar el funcionamiento de circuitos eléctricos ya sea de correinte alterna o de corriente contínua, podemos obtener las fórmulas y los valores de las intensidades de corriente y tensiones definidas en el circuito, para así verificar si lo estamos haciendo bien, también tiene la posibilidad de realizar gráficas del comportamiento de este.


Para instalarlo, en realidad no tienes que hacer mucho, solamente vas a la página del proyecto (aquí) y descargas el archivo .dmg, el cual te da la aplicación para que la pongas en tu carpeta de aplicaciones de OS X.


Luego de descargarlo, tendrás una ventana como esta:

Para este caso, voy a simular un circuito con 3 resistencias, una fuente de voltaje, al igual que un amperímetro y un voltímetro para obtener los resultados.

Para realizar esto, vamos agregar los componentes, esto es muy sencillo, simplemente del menú que tenemos del lado izquierdo, le damos clic a uno, y luego damos clic en la parte donde lo queremos, puedes teclear la tecla "r" para rotarlo y acomodarlo a tu gusto.

Luego hice un circuito simple.


Para poder obtener la gráfica y las fórmulas, en la barra de arriba, tenemos unos botones de colores, en los cuales puedes prender o apagar la simulación, ver la solución del circuito y graficarlo.




Entonces, puedes seleccionar lo que quieres saber de ese circuito, en mi caso, seleccioné una gráfica y las ecuaciones.



Espero que les sirva el programa de simulación de circuitos, si desean tener mas información ingresen a la página del proyecto de Solve elec.

Referencia.