- Trajectory
- A trajectory is the path that a moving object follows through space as a function of time.
- Configuration
- A configuration is an arrangement of functional units according to their nature, number, and chief characteristics.
- Net
- Is a collection of hardware components and computers interconnected by communication channels that allow sharing of resources and information.
- Automatic
- Working by itself with little or no direct human control.
- Behavior
- Refers to the actions and mannerisms made by organisms, systems, or artificial entities in conjunction with their environment, which includes the other systems or organisms around as well as the physical environment.
- Extension
- A filename extension is a suffix (separated from the basefilename by a dot) to the name of a computer file applied to indicate the encoding (file format) of its contents or usage. Examples of filename extensions are .png, .exe, .dmg and .txt
- Sequence
- In mathematics, a sequence is an ordered list of objects (or events). Like a set, it contains members (also called elements or terms), and the number of terms (possibly infinite) is called the length of the sequence. Unlike a set, order matters, and exactly the same elements can appear multiple times at different positions in the sequence.
- Convention
- a way in which something is usually done.
- Sudo
- Sudo is a program for Unix-like computer operating systems that allows users to run programs with the security privileges of another user
jueves, 19 de abril de 2012
Extra points
Accesibilidad en sistemas móviles
La importancia de la accesibilidad en sistemas móviles es relevante para generar software que mediante las cosas que ya tenemos existente, para todas aquellas personas que tengan algunas discapacidades, ya sean motrices o visuales, por lo que aumenta el rango de personas que puedan utilizar el dispositivo de manera más sencilla.
Para hablar acerca de la accesibilidad móvil que se utiliza actualmente en el mercado al igual que escribiré acerca de los elementos importantes considerando que un sistema sea accesible.
Podemos decir que podemos dividir en las 3 capacidades más importantes para mejor la accesabilidad en sistemas móviles, primero hablaremos de la visión.
Para personas que tengan deficiencia visual o personas ciegas, puedan usar un dispositivo móvil más facilmente, por ejemplo se tienen sistemas que tienen la capacidad de leer en voz alta todos los elementos que pueda tener la pantalla, al igual que leer indicaciones importantes, las notificaciones que recive, poder pronunciar al escribir, teniendo sistemas que puedan ser utilizados para personas que tengan esta deficiencia.
Existen sistemas en el cual por medio de bluetooth, conectan teclados especiales de Braile para poder utilizar algun dispositivo móvil, y así más facilmente se pueda utilizar.
Tambien, existen sistemas que tienen la capacidad de realizar zoom, para mejorar el rango de vision sobretodo en sistemas que utilizan pantallas pequeñas, utilizando los dedos para poder desplazarse.
Agrandar el texto en un sistema móvil en ciertas aplicaciones es importante para personas que consideran el tamaño del texto del sistema un inconveniente, sistemas como blackberry OS, tienen esta capacidad para cambiar de punto el texto.
Sistemas como iOS proveen "white on black", que hace como un cambio de colores, el cual propone un mejor contraste y reduce la tensión ocular.
Para las personas con problemas de audición, es posible poder seleccionar en algunos sistemas audio mono, para personas con dificultades o sencibles a la audición, al igual que poder sleccionar en cual oido deseas tener más sonido, si es que utilizas audifonos, al igual que reducir o fijar volumen al momento de escuchar música.
En cuestión de discapacidades motrices, iOS tiene un sistema llamado Assistive Touch para sus dispositivos, este es un sistema que esta diseñado para personas que por ejemplo no pueden utilizar todos los dedos en el dispositivo, o no pueden controlar sus movimientos, por lo que puedes utilizar el dispositivo con un solo boton.
Aquí les dejo un video de como se utiliza.
Podemos concluir que un sistema accesible es de suma importancia en el mundo actual, no nada mas para aumentar el rango de personas que lo puedan utilizar, si no que podemos hacer con tecnologia, que personas con deficiencias puedan utilizarlo satisfactoriamente y que cuando nosotros estemos haciendo nuestro proyecto, tener en cuenta que estas funcionalidades funcionen.
Para hablar acerca de la accesibilidad móvil que se utiliza actualmente en el mercado al igual que escribiré acerca de los elementos importantes considerando que un sistema sea accesible.
Podemos decir que podemos dividir en las 3 capacidades más importantes para mejor la accesabilidad en sistemas móviles, primero hablaremos de la visión.
Para personas que tengan deficiencia visual o personas ciegas, puedan usar un dispositivo móvil más facilmente, por ejemplo se tienen sistemas que tienen la capacidad de leer en voz alta todos los elementos que pueda tener la pantalla, al igual que leer indicaciones importantes, las notificaciones que recive, poder pronunciar al escribir, teniendo sistemas que puedan ser utilizados para personas que tengan esta deficiencia.
Existen sistemas en el cual por medio de bluetooth, conectan teclados especiales de Braile para poder utilizar algun dispositivo móvil, y así más facilmente se pueda utilizar.
Tambien, existen sistemas que tienen la capacidad de realizar zoom, para mejorar el rango de vision sobretodo en sistemas que utilizan pantallas pequeñas, utilizando los dedos para poder desplazarse.
Agrandar el texto en un sistema móvil en ciertas aplicaciones es importante para personas que consideran el tamaño del texto del sistema un inconveniente, sistemas como blackberry OS, tienen esta capacidad para cambiar de punto el texto.
Sistemas como iOS proveen "white on black", que hace como un cambio de colores, el cual propone un mejor contraste y reduce la tensión ocular.
Para las personas con problemas de audición, es posible poder seleccionar en algunos sistemas audio mono, para personas con dificultades o sencibles a la audición, al igual que poder sleccionar en cual oido deseas tener más sonido, si es que utilizas audifonos, al igual que reducir o fijar volumen al momento de escuchar música.
En cuestión de discapacidades motrices, iOS tiene un sistema llamado Assistive Touch para sus dispositivos, este es un sistema que esta diseñado para personas que por ejemplo no pueden utilizar todos los dedos en el dispositivo, o no pueden controlar sus movimientos, por lo que puedes utilizar el dispositivo con un solo boton.
Aquí les dejo un video de como se utiliza.
Podemos concluir que un sistema accesible es de suma importancia en el mundo actual, no nada mas para aumentar el rango de personas que lo puedan utilizar, si no que podemos hacer con tecnologia, que personas con deficiencias puedan utilizarlo satisfactoriamente y que cuando nosotros estemos haciendo nuestro proyecto, tener en cuenta que estas funcionalidades funcionen.
domingo, 15 de abril de 2012
Cubo LEDs 3x3x3 + Arduino BT
Como parte del proyecto de la materia de Cómputo integrado, en el cual consiste en realizar un cubo de leds de 10x10x10, como propuesta de irnos introduciendo en la parte de la electrónica y en la parte de la programación de arduino, realizamos un cubo led de 3x3x3 para darnos una idea de como lo debemos de realizar.
Para este proyecto, ocupamos el siguiente material.
Repite este paso 3 veces para tener las capas necesarias.
Ahora lo que hicimos fue soldar las capas, para arriba, ahora los anodos con los anodos.
La manera en que le conectamos, es la siguiente, obtenido de este blog.
Para este proyecto, ocupamos el siguiente material.
- 27 Leds (En este caso tenemos leds verdes claros)
- Cautín
- Estaño
- 9 resistencias de 220 Ohms
- 3 resistencias de 330 Ohms
- 3 transistores 2N2222
- Dremel
- Un trozo de madera
- Arduino (utilizamos el arduino bluetooth)
Bueno, luego de que tengamos todos los materiales lo primero que tenemos que hacer, es realizar un molde en el trozo de madera para de ahí, ir soldando las capas, por lo que con el dremel, seleccionamos el perforador o incluso pueden utilizar un taladro, para hacer puntos que sean del tamaño del LED de la cabeza y tambien considerando la magnitud de las patas del LED.
Para ilustrar mejor de lo que estoy hablando, publicaré algunas imágenes.
Recordar las patas que vamos a doblar para hacer el cubo, son los cátodos (las patas mas chicas) por lo que en base a este puedes hacer el molde que vas a necesitar para que sea más facil el trabajo.
Como lo explica Cecilia aquí, es preferible que utilices LEDs difusos para que tengas iluminación en toda la cabeza del LED y no solo en una parte, por lo que si tienes LEDs claros, puedes comprar un spray especial que pinta vidrios y los pone en modo ahumado, esto no es indispensable, solamente como tip para que tengan un mejor resultado final.
Es importante verificar que los LEDs que estes utilizando, funcionen, por lo que te recomiendo que realices pruebas para ver que estan en buen estado, por ejemplo nosotros realizamos un programa sencillo que le pasamos al Arduino para verificar que este prendiera.
Luego de que tengas todo preparado, fijate bien que en las entradas que perforaste, quepa bien el LEDs, obiamente que quede un poco flojo pero no mucho, que con facilidad puedas sacar los LEDs a la hora de sacar la base, no batalles y se te desolde por accidente, como dije anteriormente, bas a doblar cada una de los catodos haciendo un angulo de 90 grados, para luego con estaño ir soldando cada catodo siguiente y generar la base.
Repite este paso 3 veces para tener las capas necesarias.
Ahora, lo que realizamos es soldar cable, de cada columna, al protoboard, luego agregar una resistencia y cada una ponerlo en las primeras 9 entradas del arduino, luego de cada capa, agregamos cable, y pusimos los transistores y resistencias necesarios para luego mandarlo al arduino.
Ahora si puedes hacer un programa para pasarlo al arduino y hacer con el cubo lo que quieras, nosotros por ejemplo hicimos algunos programas como prender los LEDs y algunas pruebas que luego mostraremos cuando finalicemos nuestro proyecto.
Etiquetas:
Laboratorio de computo integrado
sábado, 14 de abril de 2012
Ruby en paralelo
Para la aportación de esta semana, hablaré acerca de un lenguaje de programación, llamado Ruby, algunos de mis compañeros tal vez ya lo conozcan ya que recuerdo que vimos algo de ello en lenguajes de programación hace algunos semestres.
Luego de instalarlo, existe un gestor de paquetes para el lenguaje de programación Ruby, llamado RubyGems, en donde podemos portar librerías para Ruby, por lo que necesitamos instalarlo para poder tener la extensión paralela, por lo que pondremos en el terminal.
Ahora con todo esto, lo que necesitamos es la estensión paralela de ruby, para eso simplemente vamos a utilizar el siguiente comando (Ahora lo pondré en Mac OS, pero es lo mismo que en Ubuntu).
Ahora modifiqué el código para que hiciera una simple división 100 millones de veces
Expongo el código.
Y aquí los resultados.
Ruby es un lenguaje de programación que abarca diferentes paradigmas entre ellos podemos decir, que Ruby es un lenguaje interpretado, reflexivo y también orientado a objetos, inspirado en Python y Perl, para esta entrada hablaré de como poder utilizar este lenguaje en forma paralela.
Ruby por default viene instalado en sistemas operativos de Mac OS a diferencia de Ubuntu, en donde para instarlo debemos de seguir el tipico comando.
Luego de instalarlo, existe un gestor de paquetes para el lenguaje de programación Ruby, llamado RubyGems, en donde podemos portar librerías para Ruby, por lo que necesitamos instalarlo para poder tener la extensión paralela, por lo que pondremos en el terminal.
Ahora con todo esto, lo que necesitamos es la estensión paralela de ruby, para eso simplemente vamos a utilizar el siguiente comando (Ahora lo pondré en Mac OS, pero es lo mismo que en Ubuntu).
Ahora que tenemos todo instalado, vamos a probar si esto funciona correctamente, la extensión parallel para ruby es poderosa, ya que podemos correr cualquier código en procesos paralelos, para utilizar los recursos del CPU o tambien utilizar hilos, así generando código más eficiente.
Para este caso, modifiqué un código realizado aquí en donde se realiza un benchmark entre como de una forma secuencial, mandamos ping host a diferentes páginas web, luego por medio de hilos, luego por medio de bifuración, como lo hemos visto en la materia, teniendo los siguientes resultados.
Obteniendo resultados favorables al utilizar Hilos y Forks, por lo que podemos ver considerablemente el cambio en tiempo.
PD: ara poder hacer funcionar el código pongan cambien las páginas hosts, pongan otras, las que ustedes quieran, porque las que vienen en el ejemplo, hay 2 que ya no existen.
Expongo el código.
require 'rubygems'
require 'parallel'
require 'net/http'
require 'benchmark'
hacer_ping = lambda { |host| 10.times { Net::HTTP.new(host).head('/') } }
puts "#{Parallel.processor_count} procesador(es)"
hosts = ['www.facebook.com', 'www.google.com', 'www.yahoo.com', 'www.uanl.mx', 'www.wikipedia.org', 'www.ruby-lang.org']
Benchmark.bm do |x|
x.report('Normal') {
hosts.each &hacer_ping
}
x.report('Hilos') {
Parallel.each(hosts, :in_threads => Parallel.processor_count, &hacer_ping)
}
x.report('Forks') {
Parallel.each(hosts, &hacer_ping)
}
end
Ahora modifiqué el código para que hiciera una simple división 100 millones de veces
Expongo el código.
require 'rubygems'
require 'parallel'
require 'benchmark'
div = lambda { 100000000.times { 4.0/2.0 } }
puts "#{Parallel.processor_count} procesador(es)"
Benchmark.bm do |x|
x.report('Normal') {
hosts.each &div
}
x.report('Hilos') {
Parallel.each(hosts, :in_threads => Parallel.processor_count, &div)
}
x.report('Forks') {
Parallel.each(hosts, &div)
}
end
Y aquí los resultados.
Etiquetas:
Sistemas distribuidos y paralelos
Suscribirse a:
Entradas (Atom)











