Information Technologies have increasingly been increasing, and networks are the means by which the world is moving and the Internet is the means to exploit these technologies. The internet is a giant network which allows users to move data back and forth no matter where, for owners of sites is really expensive to store all this information and maintain it, here comes into play mega datacenters that handle more and more the world of computing and storage needs, make the data-center networks will be increasingly important as the need for systems that allow the scalability of these large data managers is increasing, since generally the existing systems do not allow this growth and have a maximum point of administration.
A system that is in the process, which has a great future because it is designed with the objective of this can support to enable the scalability data centers, is "Portland", a system of algorithms and protocols that eliminate the constraints of scalability and path - in-routing of layer 2, and avoids the administrative problems caused by virtualization and deployment of network layer 3 in network environments datacenters. The data-center today, often at run on Layer 3 networks, but this requires large numbers of man-hours to configure and maintain these networks. These networks of layer 3, not allow a simple implementation of migration to virtual machines, limiting the flexibility and efforts to reduce energy costs in data-centers, as Portland if it meets this demand, enabling network operators to manage the datacenter as a single factory.
Portland's success is location discovery protocol which opens the possibility of a scalable Layer 2 network. The switches automatically learn its location within the topology of data-center without any human intervention. These switches assign then addresses' Pseudo MAC (PMAC) to all other servers that connect these directions PMAC, instead of MAC addresses, are used internally in the network for sending packets.
The behavior of servers remains the same while running on networks with Portland, where a server wants to talk to the server on the other side of data-center, the first server still sends a "ARP," which is the requisition of the MAC address the computer with which you want to communicate based on IP address. But now, instead of passing the requisition to the whole network, the switch that received the ARP communicates with a directory service which will address PMAC returns, instead of the traditional MAC address, then when new machines, simply generate new PMAC addresses, allowing the networks and the movement of data is growing as the scalable data centers can grow without any problem..
We know that the internet and the flow of data are increasingly growing, but this way of interacting with the network not only used by a PC, mobile technologies are rapid growth, and as such there is a need to exchange data as we do from our computer.
Mobile developers stop thinking of how to do to send voice, because although the text messaging and phone calls are not really the goal, are complementary, and statistics says this, where what more moves are means of a special phone multimedia data, but the bandwidths of these devices allow you to move large data quickly, so we think that new technologies bring embedded phones as wireless modems that enable supply this demand.
Finally, the networks are the means by which the world is moving, these dominate the planet, and must be thinking that they can grow more and more, and therefore need to think about scalable systems, and devices that can mobilize much data at a higher speed.
How to build a 100,000-port Ethernet switch
Mobile data to hit 1.6 exabytes monthly by 2014: ABI
Scalability Networks like Project Portland and mobile networks
jueves, 1 de octubre de 2009
Publicado por Bernal en 13:25 0 comentarios
Etiquetas: datacenter, mobile, Networks
Contexto de Coherencia
miércoles, 22 de abril de 2009
Cada vez que se desarrolla interfaces graficas de usuario, se debe de tener bien claro el contexto al que se va a desarrollar, sabiendo que poner y que no poner, y que es lo que el usuario utiliza mas, por lo que cada elemento colocado debe de ser coherente a su función. Un ejemplo que se me ocurre es cuando se manejan permisos en los sistemas, es decir un usuario administrador, tiene más privilegios que un usuario normal, por lo que las opciones en los menús cambian dependiendo de un usuario a otro, así mismo en la realización de cualquier funcionalidad, se debe de saber qué es lo que el usuario quiere u ocupa ver, que herramientas debe de utilizar, quitar lo que no necesita, y como se sabe todo esto, de nuevo hay que ponerse en la posición del usuario, y de un usuario inexperto, para así evitar que presione algo que eventualmente podría hacer que el sistema se caiga; pero al hacer todo esto no se debe de descuidar el desorden de la aplicación y se debe de mantener las características previas que se tenían, para evitar que el usuario se sienta perdido o desconcentrado dentro del sistema. Es por eso que el desarrollador debe de tener bien claro el contexto de cada pantalla para darse cuenta de que se debe de poner y que no, y así le permitirá al usuario tomar decisiones más acertadas acerca de lo que debe de hacer o no, evitando caer en el error.
Vease mas en: http://www.usabilitypost.com/2008/08/04/context-over-consistency/
Publicado por Bernal en 20:04 0 comentarios
Etiquetas: GUI Design
8 Características del éxito en la creacion de Interfaces de Usuario
En el mundo de la informativa y el diseño de sistemas es común seguir una serie de estándares o características que debe de tener un sistema, por ejemplo todo proyecto de software sigue un conjunto de normativas en sus etapas administrativas del proyecto (Especificación de software), y de igual manera existen buenas técnicas de programación, en cambio en la etapa de diseño de interfaces de usuario, existe mucha documentación al respecto y diferentes técnicas, pero de igual manera no se siguen todas al pie de la letra, o se aplican unas y otras no, por lo que los productos de software que salen al mercado, muchas veces quedan debiendo en este aspecto. Se pueden mencionar 8 aspectos de una buena UI, yo nombrare nueve.
1.Claridad: Esta es la característica más básica, y tal vez en la que la mayoría de los desarrolladores piensan primero, ya que se refiere al estado en el que las personas interactúan, pero interactúan bien y con claridad con el sistema conociendo los significados de cada icono utilizado; los tooltips son bien importantes en esta parte.
2.Conciso: Usted debe de poner lo necesario en una interfaz, es decir tratar de evitar de poner leyendas demasiados extensas que capten demasiada atención para el usuario, pero sin descuidar la claridad con la que se muestra la información; mantener las cosas claras y concisas dan muchas ventajas.
3.Familiar: Desarrolle interfaces donde el usuario no tenga la necesidad de leerse un manual, haga cosas que permitan al usuario realizarlas de manera intuitiva.
4.Responder: Los delay de tiempo que puede durar una aplicación resolviendo una consulta, muchas veces puede durar más de lo esperado, por lo que es aconsejable que la aplicación responda a esto utilizando barras de progreso, así mismo en todo cambio importante al sistema, llámese una inserción o eliminación, etc., se debe responder al usuario de que se realizo X acción, evitando tal vez frustración a la hora de esperar o insertar algo sin saber si se realizo con éxito.
5.Consistente: Es importante que se guarde lo más característico de una versión a otra en los sistemas, para así evitar aprender de nuevo; un ejemplo a medias es office, ya que es sus versiones 2007, todo su paquete que ofrece (Excel, PowerPoint, Word, etc.), tienen la misma barra de menú, permitiendo una familiarización con el sistema, sin embargo el cambio abrupto de office 2003 al 2007 fue enorme, ya que no se siguió con lo que se tenía, además de que Outlook 2007 guarda la misma barra de menú que el office 2003, dándonos inconsistencias, pero el punto es que en el caso de Word, Excel, PowerPoint y Access sus menús son iguales, permitiendo al usuario que ha usado Word pero no ha usado PowerPoint, utilizar este ultimo sin mayor complicación.
6.Atractivo: Esta otra característica que buscan todos los desarrolladores, de que sus productos sean atractivos, y esto se traduce a que en una primer instancia el usuario se puede enamorar del sistema, pero no hay que menospreciar las demás características, ni tampoco la funcionalidad del sistema, para que ese enamoramiento previo, dure bastante.
7.Eficiente: Cuando se desarrolla interfaces, hay que ponerse en la posición del usuario, y ver qué es lo que el usuario está tratando de lograr y luego hacer que él lo haga sin mucha complicación. Por lo que se debe de desarrollar interfaces que permitan realizar a las personas una lista de características con facilidad.
8.Indulgente: Algo muy importante que hay que saber es que los que van a usar nuestros sistemas, son seres humanos susceptibles a caer en el error, por lo que las aplicaciones deben de dar opciones para retractarse luego de haber realizado algo, pero esto no es tan fácil como parece, ya que se requiere un trabajo extra a nivel de funcionalidad, pero de igual manera ese trabajo extra nos puede brindar muchas ventajas.
9.Escalabilidad: Siempre que desarrollemos, no debemos de pensar que nuestros sistemas son para 5 personas, debemos de pensar que nuestro sistema puede, o más bien debe de ir creciendo, por lo que se deben de ofrecer interfaces que respalden esto, por ejemplo si se maneja clientes y estos los mostramos en un Grid, debemos de poner un opción de buscar, por si nuestra lista es de 2000 personas, y no 5 como era al inicio.
Yo pienso que si se siguen estas características es muy probable que la aplicación sea exitosa, digo probable, porque la funcionalidad del sistema debe de respaldar esa interfaz.
Comentario sobre http://www.usabilitypost.com/2008/08/04/context-over-consistency/%26hl%3Des%26sa%3DG&usg=ALkJrhhAjPiwGDxSCVr-owyOwJKEqmZTiA/
Publicado por Bernal en 19:44 0 comentarios
Etiquetas: GUI Design
JavaNNS (Java Neural Simulator)
miércoles, 25 de marzo de 2009
Neural network simulators are software applications that are used to simulate the behavior of artificial or biological neural networks. They focus on one or a limited number of specific types of neural networks. They are typically stand-alone and not intended to produce general neural networks that can be integrated in other software. Simulators usually have some form of built-in visualization to monitor the training process. Some simulators also visualize the physical structure of the neural network.
Historically, the most common type of neural network software was intended for researching neural network structures and algorithms. The primary purpose of this type of software is to, through simulation, gain a better understanding of the behavior and properties of neural networks. Today in the study of artificial neural networks, simulators have largely been replaced by more general component based development environments as research platforms.
Commonly used artificial neural network simulators include the Stuttgart Neural Network Simulator (SNNS), Emergent, JavaNNS and Neural Lab.
I'm going to talk about de Java Neutral Simulator (JavaNNS)
This neural network simulator originally developed at the Wilhelm-Schickard-Institute for Computer Science (WSI) in Tübingen, Germany. It`s development in java, gives a nice user interface, allowing the user creating a interesting neural networks.
JavaNNS is written around a simulation kernel to which user written activation functions, learning procedures and output functions can be added. It has support for arbitrary network topologies and the standard release contains support for a number of standard neural network architectures and training algorithms.
read more about this simulator, includes installation, and user manual, among other things
http://oosem.com/study/manual/JavaNNS-manual.html
if you wanna download this simulator, visite this site http://www.ra.cs.uni-tuebingen.de/downloads/JavaNNS/
Publicado por Bernal en 22:17 0 comentarios
Etiquetas: Inteligencia Artificial
It's the user experience stupid...??
En el entorno actual los productos de software van en crecimiento, y estos cada vez mas están dirigidos a un público cada vez más amplio, a usuarios cada vez menos expertos en el manejo de sistemas informáticos; lo cual hace que los productos que se desarrollen deben ser tan buenos funcionalmente como en experiencia de usuario, y tal vez esto sea uno de las grandes deficiencias que tienen los sistemas informáticos, especialmente el área de dispositivos móviles, ya que un producto muy bueno funcionalmente y con muchas características realmente sorprendentes las cuales pueden afectar la usabilidad del producto, donde un usuario normal o consumidor como se referencia en la lectura tal vez al ver cosas tan complejas en su dispositivo afecte su disfrute del producto. Por eso se dice que productos móviles con muchas características, puede ser muy bueno, pero dependiendo al tipo de usuario que vaya dirigido, además que desarrollar una buena interfaz que respalden esas características hacen que el trabajo sea muy difícil, y también que muchas características pueden que afecten el hardware, ya sea a nivel batería espacio, etc. Por lo que la venta del producto sería a precios muy altos, donde solo pocos podrían tener el producto. Y entiéndase que experiencia de usuario no es solo a nivel de software sino también de hardware, es decir por ejemplo en un dispositivo móvil el diseño de dicho dispositivo juega un papel importante, donde se debe de tomar en cuenta el peso, si va a usar teclado o va a ser touch screen (es lo mejor si se maneja como el iphone, nada de lápices para seleccionar), tamaño, etc. Para así darle no solo comodidad al usuario a la hora de interactuar con el sistema, si no también darle comodidad física.
En resumen la experiencia de usuario en cualquier sistemas de software es de vital importancia, ya que si un usuario se siente bien utilizando el sistema, y sentirse bien es poder utilizar las funciones de una manera fácil, sin tener que leerse ningún manual para utilizar X función, esto hace que la experiencia de usuario sea grandiosa otorgándole una satisfacción al usuario y así tener resultado exitoso de la creación del sistema.
Publicado por Bernal en 22:15 0 comentarios
Etiquetas: GUI Design
Breve comentario sobre las Redes Neuronales
Una red neuronal consiste en simular las propiedades observadas en los sistemas neuronales biológicos a través de modelos matemáticos recreados mediante mecanismos artificiales (como un circuito integrado o una computadora). El objetivo es conseguir que las máquinas den respuestas similares a las que es capaz de dar el cerebro que se caracterizan por su generalización, su robustez y su capacidad de aprender cosas nuevas.
Hay muchas buenas razones para el uso de redes neuronales, ya que los beneficios obtenidos pueden ser de gran beneficio para el avance tecnologico y es por eso que cada avance en este campo incrementara su popularidad.
Las redes neuronales son excelentes como clasificadores/reconocedores de patrones, y pueden ser usadas donde las técnicas tradicionales no funcionan. Las redes neuronales pueden manejar excepciones y entradas de datos anormales, muy importante para sistemas que manejan un amplio rango de datos (sistemas de radar y sonar, etc). Muchas redes neuronales son pueden proveer pistas de como trabaja el cerebro según progresen. Avances en la neurociencia también ayudarán al avance en las redes neuronales hasta el punto en que sean capaces de clasificar objetos con la precisión de un humano y la velocidad de una computadora, tambien su capacidad para ser tolerante a los fallos, es una ventaja increible la cual hace que determinados productos sean mucho mas efectivos si se utilizara alguna otra tecnica.
El futuro es brillante, el presente por otro lado queda debiendo.
Hay unas cuantas desventajas en las redes neuronales; La mayoría de ellas, de todas maneras, padecen nuestra falta de hardware. La capacidad de las redes neuronales radica en su habilidad de procesar información en paralelo (esto es, procesar múltiples pedazos de datos simultáneamente), y programar eso es relativamente complejo. Como todo en este día y época, el tiempo es esencial, lo que a menudo deja las redes neuronales fuera de las soluciones viables a un problema, pero con posibilidades que ese problema se solucione en un mañana.
Otros problemas con las redes neuronales son la falta de reglas definitorias que ayuden a construir una red para un problema dado; hay muchos factores a tomar en cuenta: el algoritmo de aprendizaje, la arquitectura, el número de neuronas por capa, el número de capas, la representación de los datos y mucho más. De nuevo, con el tiempo siendo tan importante, las compañías no pueden permitirse invertir tiempo de desarrollo para resolver los problemas eficientemente, pero pueden otorgar algo de tiempo a su desarrollo y asi dia con dia ir aportando mas conocimiento acerca de este tema tan complejo, pero tan beneficioso para el avance tecno-cientifico.
Publicado por Bernal en 22:15 0 comentarios
Etiquetas: Inteligencia Artificial
Lenguajes de Programación de Agentes
Un lenguaje de agentes es un sistema que permite programar sistemas de computación en términos de algunos conceptos desarrollados por la teoría de agente. Se espera que aunque sea haya una estructura que represente a un agente, aunque se debería esperar que dicho lenguaje tuviera más conceptos de la teoría de agentes como creencias, metas, objetivos, planificación etc.
La programación de sistemas multi-agentes ha sido generalmente soportada por lenguajes orientados a objetos o lenguajes lógicos. Ambos paradigmas muestran poseer características para soportar parcialmente el desarrollo de agentes. Sin embargo, si ambos paradigmas son integrados, una solución a la programación de agentes aparece en forma evidente.
Existen gran cantidad de lenguajes o más bien plataformas para desarrollar agentes; a continuación explicare algunos de ellos.
Agent0 -- AOP (Agent Oriented Programming)
Este fue uno de los primeros lenguajes aplicados al desarrollo de agentes; el cual sigue un ciclo de control simple cuando se ejecuta el programa en cada paso de tiempo:
- Recopilar y actualizar los mensajes del estado mental consecuentemente.
- Ejecutar los compromisos (usando sus capacidades)
--> Referencias
Para comprender el uso de la programación de esta plataforma de agentes; el siguiente link le muestra un manual de cómo y qué comandos pertenecen al Agent0:
http://www.doc.ic.ac.uk/~klc/Lectures/MASLectures/Agent0.4p.pdf
Torrance Mark and Viola Paul (1991) The AGENT0 Manual. Consultado en Marzo 2009 en ftp://reports.stanford.edu/pub/cstr/reports/cs/tr/91/1389/CS-TR-91-1389.pdf
JavaLog
Este lenguaje integra el lenguaje orientado a objetos Java y el lenguaje lógico Prolog. Esta combinación permite que agentes sean construidos como objetos manipulando un estado mental definido a través de cláusulas lógicas que son encapsuladas en módulos lógicos.
Las características principales de este lenguaje son:
• Permite la creación y uso de objetos Java en programas Prolog, integrando los paradigmas Lógico y Orientado a Objetos.
• Pre procesa los métodos Java con Prolog embebido permitiendo el uso de variables locales en ambos paradigmas.
• Soporta la administración de conocimiento común de varias instancias de nuestro intérprete Prolog por medio de una arquitectura Blackboard.
• Permite la distribución física de intérpretes Prolog utilizando Java RMI y movilidad de módulos lógicos.
--> Referencias
Este paper da una visión y explicación más clara de lo que es propiamente JavaLog:
Zunino Alejandro, Berdún Luis, Amandi Analía (). JavaLog: un Lenguaje para la Programación de Agentes. Consultado en http://cabrillo.lsi.uned.es:8080/aepia/Uploads/13/121.pdf
Para más información sobre JavaLog, su descarga, instalación, requerimientos pueden visitar este sitio:
http://www.exa.unicen.edu.ar/isistan/javalog.htm
Descargar JavaLog: http://"> http://sourceforge.net/projects/javalog/
Java Agent DEvelopment Framework (JADE)
JADE es una plataforma de software totalmente implementada en Java; esta implementación es oficial del estándar FIPA, y soporta todos los servicios básicos de infraestructura especificados en FIPA (comunicaciones, movilidad, gestión de agentes y localización de agentes), a los que añade algunas utilidades gráficas para facilitar la administración de las plataformas y la depuración de los mensajes intercambiados por agentes en tiempo de ejecución
--> Referencias
F. Bellifemine, G. Caire, A. Poggi, G. Rimassa (2003). JADE A White Paper. Consultado en Marzo 2009 en http://jade.tilab.com/papers/2003/WhitePaperJADEEXP.pdf
Programación en JADE:
http://programacionjade.wikispaces.com/Agentes?f=print
Descargar libro Developing Multi-Agent Systems with JADE desde rapidshare:
http://rs106.rapidshare.com/files/34743745/Wiley.Developing.Multi.Agent.Systems.with.JADE.Apr.2007.rar
Descargar JADE 3.6.1: Al lado izquierdo sale un apartado de download, luego se crean un usuario y listo.
http://jade.tilab.com/index.html?Submit=Continue
Ingenias Development Kit (IDK)
Es una plataforma para el análisis, diseño e implementación de sistemas multi-agente (MAS) basada en la metodología Ingenias y creado en Java. Se basa en la especificación de meta-modelos de MAS, donde las herramientas como el editor y el modelo de generación de código se generan.
--> Referencias
(Demo Paper) (). INGENIAS Development Kit: a visual Multi-Agent System. Consultado en http://www.ifaamas.org/Proceedings/aamas08/proceedings/pdf/demo/AAMAS08_demo8.pdf
IDK Manual:
Jorge J.Gómez Sanz and Juan Pavón (2008). INGENIAS Development Kit (IDK) Manual. Consultado en Marzo 02 2009 en http://voxel.dl.sourceforge.net/sourceforge/ingenias/ingeniasmanual.pdf
Descargar IDK: http://sourceforge.net/projects/ingenias
ABLE (Agent Building and Learning Environment)
ABLE es una herramienta de IBM para la construcción de sistemas de agentes inteligentes donde todos sus elementos, incluso los agentes, se construyen por composición de AbleBeans, una extensión de los JavaBeans. Son de interés un conjunto de AbleBeans especializados que implementan sistemas de aprendizaje estadísticos (mapas auto organizativos, redes neuronales, mapas de conexión) y control simbólico (razonamiento por encadenamiento hacia delante y lógica de predicados). ABLE incorpora también un entorno visual de desarrollo donde se interconectan AbleBeans. El interés de esta plataforma es que soluciona visualmente la construcción y comunicación de los agentes.
--> Referencias
Para más información sobre ABLE, su descarga, instalación, requerimientos pueden visitar estos sitios:
http://">http://www.alphaworks.ibm.com/tech/able
http://www.research.ibm.com/able/doc/
Citas Bibliográficas.
Yanis Stanley Pérez Ardila (2007). Aplicación De Metodologías Ingenias, Zeus, Masina Al Desarrollo De Sistemas Multi-Agente, Partiendo De Sma De Subastas Para La Identificación De Mejores Practicas. Consultado en Marzo, 2009 en http://d.scribd.com/docs/2nio7ixepgf1tnpesqqn.pdf
Jorge J. Gómez Sanz (). Metodologías para el desarrollo de sistemas multi-agente. Consultado en
http://cabrillo.lsi.uned.es:8080/aepia/Uploads/18/38.pdf
Cuesta Morales Pedro, Departamento de Informática (Universidad de Vigo) (). Ingeniería de Software Orientada a Agentes. Consultado en http://www.esiiab.uclm.es/conferencias/traspas/pcuesta.pdf
Antonio F. Gómez Skarmeta y Juan A. Botía Blaya (2002). Tecnologías y Plataformas de Agentes. Consultado en marzo 02 de 2009 en http://ants.dif.um.es/~juanbot/page_files/uimp2002.pdf
Tulio José Marchetti, Alejandro Javier García (CACIC 2003). Evaluación de Plataformas para el Desarrollo de Sistemas Multiagente. Consultado en http://cs.uns.edu.ar/~ajg/papers/2003(Cacic)MarchettiGarcia.pdf
Lenguaje ADL:
http://www.informatica.us.es/~ramon/tesis/agentes/MIX/mix-adl.html
Descargas Varias de eBooks sobre desarrollo de multiagentes
http://www.ebookpdf.net/__Developing-Multi-Agent-Systems-with-JADE-ebook_ebook_.html
Publicado por Bernal en 22:13 0 comentarios
Etiquetas: Inteligencia Artificial
