viernes, 10 de noviembre de 2017

Ejemplo de Simulacion Netlogo



breed [Agricultores Agricultor]

turtles-own [energy edad]


to Configuracion
   clear-all
   ask patches [ set pcolor green ]
   create-turtles poblacion
   create-agricultores 2
   
   ask turtles[ 
    set shape "wolf" 
    set color red
    setxy random-xcor random-ycor  
    ]
    
    ask agricultores
    [
    set shape "person"
    set color white
    setxy random-xcor random-ycor 
    ]
end


 to Iniciar
   mover-turtles
   mover-Agricultores
 end

to mover-turtles
    ask turtles 
    [
       right random 360
       forward 1   
       set energy energy - 1 
       set edad edad + 1
       if pcolor = green [
                         set pcolor black
                          set energy (energy + 3) 
                         ]
       if energy < 0  [ die ]
       if edad = 43   [ die ]  
    ]
end

 to mover-Agricultores
    ask Agricultores 
    [
       right random 360   
       if pcolor = black [
                         set pcolor green
                         forward 1
                         ]
     
    ]
end

NetLogo

Netlogo es un entorno de programación que permite la simulación de fenómenos naturales y sociales. Fue creado por Uri Wilensky en 1999 y está en continuo desarrollo por el Center for Connected Learning and Computer-Based Modeling.



Netlogo es particularmente útil para modelar sistemas complejos que evolucionan en el tiempo. Los implementadores de modelos pueden dar instrucciones a cientos o miles de agentes para que todos ellos operen de manera independiente, entre sí y con el entorno. Esto hace posible explorar la relación entre el comportamiento a bajo nivel de los individuos y los patrones macroscópicos que surgen a partir de la interacción de muchos individuos entre sí.

Netlogo permite a los usuarios abrir simulaciones y “jugar” con ellas, así como explorar su comportamiento bajo una serie de condiciones. Asimismo, permite al usuario la creación de sus propios modelos. Netlogo es lo suficientemente sencillo como para que los estudiantes y los profesores puedan ejecutar las simulaciones o incluso construir las suyas propias. Además, su grado de desarrollo actual es suficiente como para servir como una herramienta potente para investigadores en muchos ámbitos.

Existe abundante documentación y tutoriales sobre Netlogo. El programa incluye una galería de modelos (
models library), que contiene una amplia colección de simulaciones que pueden ser ejecutadas y modificadas. Este conjunto de modelos pertenece a ámbitos muy diversos, tanto de la naturaleza como de ciencias sociales (biología, medicina, física y química, matemáticas y computación, economía y psicología social).

Existen dos maneras de ejecutar Netlogo:

1. Descargando e instalando el programa (permite simular y editar modelos, así como la creación de modelos propios).
2. Ejecutar un applet desde una página web (permite la ejecución de los modelos, pero no editarlos ni crear modelos nuevos).

El programa puede descargarse de manera gratuita desde aquí. Para su funcionamiento, requiere tener instalada en el ordenador una máquina virtual de Java (JVM - Java Virtual Machine) versión 1.4.2 o superior. En la versión de descarga para Windows existe la opción de descargar una versión que incluye la JVM necesaria.

Herramientas para trabajar GeoJSon

geojson.io:
es una especie de “producto mínimo viable” de la gente de Mapbox(concretamente su creador es Tom McWright). A grandes rasgos lo que permite es:

1.    Cargar un GeoJSON o CSV
2.    Editar o crearlo
3.    Guardar y compartir una visualización a través de un mapa con Leaflet en bl.ocks.org

Además es software libre


¿Cómo publicar un GeoJSON en Github?
Hace unos meses que Github añadió una parche interesante para trabajar con geojson. No hay que hacer nada, básicamente Github renderiza cualquier archivo GeoJSON que tengas en un repositorio utilizando (otra vez) Leaflet.

¿Cómo publicar una API de un GeoJSON en Github?
Bien hasta ahora las dos soluciones previas sirven para crear o importar datos geo y tener una visualización en un mapa interactivo en la web. con gitspatial.com
Este servicio, te permite conectar con uno de tus repositorios Github que contenga un GeoJSON y automáticamente te proporciona una API para hacer filtros tanto espaciales como alfanuméricos.

miércoles, 1 de noviembre de 2017

GeoJSON

1.  Que es GeoJson ?

GeoJSON es un formato comúnmente utilizado para almacenar y para trabajar con información o datos espaciales dentro de un objeto JSON.
La diferencia entre JSON y XML es que reducimos el tamaño de los datos a transportar eliminando información repetitiva e innecesaria, y mostrándolo de forma más natural.
La información que viaja por la red es menor, y adquiere más importancia cuando hablamos de dispositivos pequeños, redes de baja calidad o velocidad, etc.
En el caso de GeoJSON, es casi más relevante esta diferenciación sobre todo al tratar datos espaciales.

Cosas interesantes a conocer de este formato:

·         GeoJSON define un tipo llamando Entidad (Feature).
·         Una entidad tiene una geometría y propiedades opcionales.
·         Los tipos de geometría soportados aquí son: Punto , Segmento , Polígono ,  Multipunto , MultiSegmento y MultiPolígono .
·         Las propiedades no son más que pares nombre-valor
·         Un conjunto de entidades se representar como una FeatureCollection

lunes, 23 de octubre de 2017

Proyectos realizados con Arduino

El juego del Flappy Bird con un Arduino

El juego es bastante simple pero interesante y adictivo. Usando la pantalla táctil, controlamos al ave e intentamos evitar los pilares en movimiento, cuya velocidad aumenta a medida que progresamos. Además, el juego puede almacenar su puntaje más alto, incluso si desconecta la corriente.



Enlace [http://howtomechatronics.com/projects/arduino-game-project-replica-of-flappy-bird-for-arduino-on-a-tft-touch-screen/]

Coche dirigido con Arduino Nano desde Android

proyecto que  muestra como modificar un coche dirigido, para 'implantarle' un Arduino nano y un módulo Bluetooth JY-MCUpara poder controlarlo desde un smartphone o tablet Android que disponga de Bluetooth, utilizando la aplicación gratuita BlueTerm .  






Enlace [http://fuenteabierta.teubi.co/2013/08/controlando-arduino-via-bluetooth-desde.html]




Caleidoscopio con Arduino y TFT


proyecto en el que se ha utilizado una pantalla TFT de 1,8", un sensor de inclinación y unos altavoces, para obtener un caleidoscopio en versión moderna..
El tubo de madera y que contiene los espejos, alberga también dos pequeños altavoces, de manera que cuando se gira el tubo, el sensor de inclinación envía los datos la Arduino y además de cambiar la imagen, emite sonidos.





Enlace[http://proyectos-arduinogeometriaemocional.blogspot.com.co/2014/06/experimentando-con-una-pantalla-tft.html]El juego del Flappy Bird con un Arduino


Características Arduino


·      Económico : las placas Arduino son relativamente económicas en comparación con otras plataformas de microcontroladores. La versión menos costosa del módulo Arduino se puede ensamblar a mano, e incluso los módulos Arduino premontados cuestan poco.

·      Multiplataforma - El software de Arduino (IDE) se ejecuta en Windows, Macintosh OS X, y Linux. La mayoría de los sistemas de microcontroladores están limitados a Windows.

·      Entorno de programación sencillo y claro : el software Arduino (IDE) es fácil de usar para principiantes, pero lo suficientemente flexible como para que los usuarios avanzados puedan aprovecharlo también. Para los maestros, está convenientemente basado en el entorno de programación de Procesamiento, por lo que los estudiantes que aprenden a programar en ese entorno estarán familiarizados con el funcionamiento del IDE de Arduino.

·      Software de código abierto y extensible: el software Arduino se publica como herramientas de código abierto, disponibles para extensión por programadores experimentados. El lenguaje puede expandirse a través de bibliotecas C ++, y las personas que quieran comprender los detalles técnicos pueden dar el salto de Arduino al lenguaje de programación AVR C en el que se basa. Del mismo modo, puede agregar código AVR-C directamente en sus programas Arduino si así lo desea.


·      Hardware de código abierto y extensible : los planes de los paneles Arduino se publican bajo una licencia de Creative Commons, por lo que los diseñadores experimentados de circuitos pueden crear su propia versión del módulo, ampliarlo y mejorarlo. Incluso los usuarios relativamente inexpertos pueden construir la versión del módulo para comprender cómo funciona y ahorrar dinero.

Arduino

1.  Que es Arduino ?

Arduino es un recurso que ayuda en la realización de prototipos de circuitos. Antes se  tenía que construir un circuito, se debía  tener habilidades electrónicas específicas y conocer el mundo de los microcontroladores.
 
Con la introducción de la tecnología de la información en la realización de los circuitos entró en juego Arduino: un tablero de microcontroladores que se utiliza para hacer prototipos electrónicos de forma rápida y segura, pensado no para el trabajo de los ingenieros, sino para el de cualquiera que lo necesite: del diseñador, al artista, al arquitecto. 


2. Cuál es su definición.

Arduino es una plataforma de electrónica de código abierto basada en hardware y software fácil de usar. Las placas Arduino pueden leer entradas (luz en un sensor, un dedo en un botón o un mensaje de Twitter) y convertirlo en una salida, activar un motor, encender un LED y publicar algo en línea. Puede decirle a su tablero qué hacer enviando un conjunto de instrucciones al microcontrolador en el tablero. Para hacerlo, utiliza el lenguaje de programación Arduino(basado en el cableado ) y el software Arduino (IDE) , basado en el procesamiento .

3. Como es su estructura?




4. Cómo Funciona?

Arduino consta de tres elementos: la tarjeta electrónica, la comunidad en el sitio dedicado que garantiza una pronta respuesta a cualquier problema y, finalmente, el software que está instalado en la computadora para programar la tarjeta electrónica. Arduino, sin embargo, no planea en el sentido tradicional del término, pero está cargado de bocetos, es decir, una lista de comandos que la tarjeta deberá ejecutar. El boceto se divide en dos partes: stet up , que contiene las acciones que se ejecutarán cuando se enciende la tarjeta, y el ciclo, que contiene esos comandos que se repetirán continuamente indefinidamente.

5.  Donde es Útil?

Se pueden usar para controlar las luces del hogar, ejecutar un robot, lanzar un cohete aficionado, controlar un diorama lleno de entrenadores, crear instrumentos científicos complejos y mil cosas más. Esencialmente, una tarjeta Arduino es una computadora que lee una entrada y devuelve una salida; cada uno de nosotros puede programarlo usando Arduino Programing Language y Arduino Software (IDE), que se basa en un lenguaje simplificado que responde al nombre de procesamiento .  

jueves, 19 de octubre de 2017

Ventajas y Desventajas Entre (SOAP vs REST)

Según hemos visto en los anteriores blogs , el principal beneficio de SOAP recae en ser fuertemente acoplado, lo que permite poder ser testado y depurado antes de poner en marcha la aplicación. En cambio, las ventajas de la aproximación basada en REST recaen en la potencial escalabilidad de este tipo de sistemas, así como el acceso con escaso consumo de recursos a sus operaciones debido al limitado número de operaciones y el esquema de direccionamiento unificado.




A modo de resumen, veamos las características de ambas aproximaciones en la siguiente tabla:


miércoles, 18 de octubre de 2017

REST (Representational state transfer) Web Services

1.  Que es REST ?

REST (Representational State Transfer) es un estilo de arquitectura de software para sistemas hipermedias distribuidos tales como la Web. El término fue introducido en la tesis doctoral de Roy Fielding en 2000, quien es uno de los principales autores de la especificación de HTTP.



2. Cual es su definición 

Es una forma simple de organizar interacciones entre sistemas independientes. REST te permite trabajar de forma sencilla con clientes con diferentes sistemas operativos y plataformas como smartphones. En principio no está atado a la web, pero casi siempre se implementa en ella, ya que se fundamenta en HTTP.

3. Como es su estructura ?




4. como Funciona ?

Las pautas a seguir en el diseño de servicios Web basados en REST  son: 

1. Identificar todas las entidades conceptuales que se desean exponer como servicio.

2. Crear una URL para cada recurso. Los recursos deberían ser nombres no verbos 
(acciones). Por ejemplo no utilizar esto: http://www.service.com/entities/getEntity?id=001 Como podemos observar, getEntity es un verbo. Mejor utilizar el estilo REST, un nombre: http://www.service.com/entities/001.

3.  Categorizar los recursos de acuerdo con si los clientes pueden obtener un representación del recurso o si pueden modificarlo. Para el primero, debemos hacer los recursos accesibles utilizando un HTTP GET. Para el último, debemos hacer los recursos accesibles mediante HTTP POST, PUT y/o DELETE. 

4. Todos los recursos accesibles mediante GET no deberían tener efectos secundarios. Es decir, los recursos deberían devolver la representación del recurso. Por tanto, invocar al recurso no debería ser el resultado de modificarlo. 

5. Ninguna representación debería estar aislada. Es decir, es recomendable poner hipervínculos dentro de la representación de un recurso para permitir a los clientes obtener más información. 

6. Especificar el formato de los datos de respuesta mediante un esquema (DTD, W3C Schema, …). Para los servicios que requieran un POST o un PUT es aconsejable también proporcionar un esquema para especificar el formato de la respuesta. 

7.  Describir como nuestro servicio ha de ser invocado, mediante un documento WSDL/WADL o simplemente HTML.

5.  Donde es Util ?


Tanto los arquitectos como los desarrolladores necesitan decidir cual es el estilo adecuado para las aplicaciones. En algunos casos es adecuado un diseño basado en REST, se listan a continuación: 





  •  El servicio Web no tiene estado. Una buena comprobación de esto consistiría en considerar si la interacción puede sobrevivir a un reinicio del servidor. 
  • Una infraestructura de caching puede mejorar el rendimiento. Si los datos que el servicio Web devuelve no son dinámicamente generados y pueden ser cacheados, entonces la infraestructura de caching que los servidores Web y los intermediarios proporcionan, pueden incrementar el rendimiento. 
  • Tanto el productor como el consumidor del servicio conocen el contexto y contenido que va a ser comunicado. Ya que REST no posee todavía (aunque hayamos visto una propuesta interesante) un modo estándar y formal de describir la interfaz de los servicios Web, ambas partes deben estar de acuerdo en el modo de intercambiar de información. 
  • El ancho de banda es importante y necesita ser limitado. REST es particularmente útil en dispositivos con escasos recursos como PDAs o teléfonos móviles, donde la sobrecarga de las cabeceras y capas adicionales de los elementos SOAP debe ser restringida. 
  • La distribución de Servicios Web o la agregación con sitios Web existentes puede ser fácilmente desarrollada mediante REST. Los desarrolladores pueden utilizar tecnologías como AJAX y toolkits como DWR (Direct Web Remoting) para consumir el servicio en sus aplicaciones Web. 

martes, 17 de octubre de 2017

SOAP (Simple Object Access Protocol) Web Services

1.  Que es Soap ?
  • SOAP significa Simple Object Access Protocolo
  • SOAP es un protocolo de comunicación de aplicaciones
  • SOAP es un formato para enviar y recibir mensajes
  • SOAP es independiente de la plataforma
  • SOAP se basa en XML.
2. Cual es su definición ?

es un protocolo escrito en XML para el intercambio de información entre aplicaciones. Es un formato para enviar mensajes, diseñado especialmente para servir de comunicación en Internet, pudiendo extender los HTTP headers. Es una forma de definir qué información se envía y cómo mediante XML. Básicamente es un protocolo para acceder a un Web Service


3. Como es su estructura ?


4. como Funciona ?

  1. El Service Provider genera el WSDL describiendo el Web Service y registra el WSDL en el directorio UDDI o Service Registry.
  2. El Service Requestor o la aplicación del cliente requiere un Web Service y se pone en contacto con el UDDI para localizar el Web Service.
  3. El cliente, basándose en la descripción descrita por el WSDL, envía un request para un servicio particular al Web Service Listener, que se encarga de recibir y enviar los mensajes en formato SOAP.
  4. El Web Service analiza el mensaje SOAP del request e invoca una operación particular en la aplicación para procesar el request. El resultado se escribe de nuevo en SOAP en forma de respuesta y se envía al cliente.
  5. El cliente analiza el mensaje de respuesta SOAP y lo interpreta o genera un error si ha habido alguno.
5. Donde es util ?

Un diseño basado en SOAP es adecuado cuando: 
  • Se establece un contrato formal para la descripción de la interfaz que el servicio ofrece. El lenguaje de Descripción de Servicios Web (WSDL), como ya sabemos, permite describir con detalles el servicio Web. 
  • La arquitectura debe abordar requerimientos complejos no funcionales. Muchas especificaciones de servicios Web abordan tales requisitos y establecen un vocabulario común para ellos. Algunos ejemplos incluyen transacciones, seguridad, direccionamiento, … La mayoría de aplicaciones del mundo real se comportan por encima de las operaciones CRUD y requieren mantener información contextual y el estado conversacional. Con la aproximación REST, abordar este tipo de arquitecturas resulta más complicado. 
  • La arquitectura necesita manejar procesado asíncrono e invocación. En estos casos, la infraestructura proporcionada por estándares como WSRM y APIs como JAX-WS junto con la asincronía por el lado del cliente nos permitirán el soporte de estas características. 

jueves, 5 de octubre de 2017

INSTALACION DE UN ESB

En esta entrada realizare la instalación de un (ESB), para conocer como se configura e instala, lo primero que realice fue realizar un (ESB) que fuera open source y de esa manera fuera mas facil su descarga e instalación.

WSO2: El bus de servicios empresariales de código abierto (ESB) 100% open source de WSO2 es un motor de mensajería basado en estándares que proporciona el valor de la mensajería sin necesidad de escribir código. Proporciona capacidades de integración de datos, eliminando la necesidad de utilizar un servidor de servicios de datos independiente para sus procesos de integración. Además de los flujos de integración de corta duración y sin estado, el ESB puede utilizarse también para gestionar procesos empresariales largos y con estado. También viene con analíticas para un monitoreo integral, capacidades de intermediación de mensajes que pueden usarse para mensajería confiable, así como capacidades para ejecutar microservicios para sus flujos de integración.

INSTALACION


Primero, descargar los binarios desde https://wso2.com/products/enterprise-service-bus/
Descomprimir el archivo zip en un directorio cualquiera.
En el directorio “bin” modificar el scriptAgregar como primeras líneas la definición de variables de entorno para la ejecución del scriptJAVA _HOME indica la ruta de instalación del JDK de Java en nuestra máquina
CARBON_HOME es la ruta de instalación del ESB en nuestra máquina.


PASO 2: Crear la base de datos y la tablaEn la máquina donde corre el MySQL, se debe crear la base de datos SAMPLE con una tabla llamada INFO que tenga la siguiente estructura:

PASO 3: Copiar las libreríasEn el directorio %CARBON_HOME%/repository/components/lib, copiar los 2 JAR que vienen con los archivos del ejemplo.Smooks es un framework para construir aplicaciones que procesan datos en formato XML y no-XML usando Java. Mayor información en http://www.smooks.orgPASO 4: Modificar el archivo axis2.xmlEn el directorio   %CARBON_HOME%/repository/conf editar axis2.xml para habilitar servicios:
VFS
Es el transport file del ESB
En primer lugar se debe habilitar el “receiver” para archivos para ello hay que eliminar los comentarios en la línea:Luego se debe activar el “Sender” de archivos:Mail TransportSe usa para enviar y recibir mensajes de correo
Si se desea enviar correos, hay que configurar los datos de conexión al servidor de correo (que tenga la función de SMTP relay). Message Builders/Formatters
El “message builder” es responsable de convertir el mensaje que llega a un formato de mensaje SOAP.
Mientras que el “Message formatters” determina la salida del mensaje en format SOAP dentro del ESB.
Los “Message formatters” están configurados dentro del axis2.xml bajo el bloque:Finalmente, indicar de donde tomará la configuración de arranque.
Modificar la línea:
Para cambiar la ruta del sysnapse-config: observe que la ruta inicia en  “/repository/conf”

PASO 5: Configurar el synapse-configSynapse es el ESB ligero de Apache (http://synapse.apache.org/ )
Para evitar problemas de la configuración vamos a copiar:
DESDE: %CARBON_HOME%\repository\deployment\server\synapse-configs
HACIA: %CARBON_HOME% \repository\conf\Observar que se crea la estructura en donde la mayoría de subdirectorios están vacíos (a excepción del directorio “sequences”)Si DESTINO= %CARBON_HOME% \repository\conf\ synapse-configs\default
Copiar desde directorio de ejemplo los siguientes archivos:local-entries\smooks.xml   hacia   %DESTINO%\local-entries
proxy-services\FileProxy.xml  hacia  %DESTINO%\ proxy-services
sequences\*  hacia  %DESTINO%\ sequences

PASO 6: Copiar el archivo smooks-config.xmlCopiar desde el < directorio del ejemplo>/resources el archivo smooks.config.xml
Copiar hacia: %CARBON_HOME% \repository\resources

PASO 7: Configurar los localEntriesEn el directorio local-entries editar el archivo smooks.xml y verificar que la ruta sea correcta:

PASO 8: Configurar los proxyServicesUn proxy service se crea y expone en un transporte específico a través del motor de Axis2.
En el directorio proxy-services editar el archivo FileProxy.xml  y cambiar las rutas:

PASO 9: Configurar los sequencesEn el directorio sequences, abrir el archivo fileWriteSequence.xml y editar la ruta de salida:En el archivo sendMailSequence.xml, indicar el correo al cual se envía la notificación:En el archivo databaseSequence.xmlColocar los datos de conexión a la BD considerando el usuario, clave, dirección IP y puerto donde se ejecuta el motor de base de datos.

PASO 10: Crear los directorios de trabajoLos directorios están indicados en los archivos:
  • FileProxy.xml
  • fileWriteSequence.xml


PASO 11: Iniciar el ESB
En una ventana de comandos ejecutar:La consola de administración del ESB se carga en: https://IP-1:9443/carbonDonde IP-1 es la dirección IP donde está corriendo el ESB.
El usuario es “admin” y el password es “admin” por defecto.

x

Ejemplo de Simulacion Netlogo

breed [Agricultores Agricultor] turtles-own [energy edad] to Configuracion    clear-all    ask patches [ set pcolor green...