sábado, 27 de mayo de 2017

JSON

EL FORMATO JSON
Ya sabemos que un aspecto principal de la tecnología Ajax es el intercambio de datos. Sabemos igualmente que podemos recuperar datos en formatos no estandarizados (por ejemplo datos contenidos en un fichero php) pero que resulta más ventajoso el uso de formatos estándar como XML. JSON es otro formato estándar para datos que destaca por ser ligero y rápido.
Cuando todos nos iniciamos en el mundo de la programación web llegamos a un punto en el que necesitamos gestionar de forma sencilla y eficaz mucha información. Para los que no os suene el nombre de JSON, enhorabuena porque con esta serie de tutoriales vais a dar un gran paso en vuestro aprendizaje.
logo ajax

DE XML A JSON: PRIMERA APROXIMACIÓN
Al igual que XML define un formato para el intercambio de datos, JSON define otro formato. El formato JSON se basa en pares atributo-valor.
Un ejemplo de dato en formato JSON y su equivalente en XML puede ser el siguiente:
Formato JSON
Formato XML
{
"nombre": "Juan",
"apellidos": "Suárez Iglesias",
"edad": 25,
"direccion": {
"calle_y_num": "Acacias, nº34",
"ciudad": "Valencia",
"codigo_postal": "43005",
"pais": "Colombia",
},
"telefono": [
{
"tipo": "fijo",
"numero": "0034966432134"
},
{
"tipo": "móvil",
"numero": "0034677493826"
}
]
}
<?xml version="1.0" encoding="UTF-8" ?>
<nombre>Juan</nombre>
<apellidos>Suárez Iglesias</apellidos>
<edad>25</edad>
<direccion>
<calle_y_num>Acacias, nº34</calle_y_num>
<ciudad>Valencia</ciudad>
<codigo_postal>43005</codigo_postal>
<pais>Colombia</pais>
</direccion>
<telefono>
<tipo>fijo</tipo>
<numero>0034966432134</numero>
</telefono>
<telefono>
<tipo>móvil</tipo>
<numero>0034677493826</numero>
</telefono>

En este ejemplo vemos algunas de las características de JSON. Un elemento de datos (unidad básica de intercambio de información u objeto JSON) queda delimitado por llaves { … }. En este ejemplo las llaves externas delimitarían los datos de una persona.
Un elemento de datos JSON contiene pares de elementos "nombre": "valor" con la peculiaridad de que valor puede ser tanto una cadena de texto entrecomillada como otras cosas como explicaremos a continuación.


JSON: HISTORIA Y ESPECIFICACIÓN OFICIAL
A finales de los años 90 XML era el formato para intercambio de datos con mayor implantación. No obstante, presentaba problemas sobre todo cuando se trataba de trabajar con ficheros con gran volumen de datos donde el procesamiento se volvía lento.
Surgieron entonces intentos para definir formatos que fueran más ligeros y rápidos para el intercambio de información. Uno de ellos fue JSON, promovido y popularizado por Douglas Crockford y sus colaboradores a principios de los años 2000.
JSON se caracteriza por reducir el tamaño de los archivos y el volumen de datos que es necesario transmitir frente a otros estándares como XML. Por ello JSON fue adquiriendo popularidad hasta convertirse en un estándar. Esto no significa que XML haya dejado de utilizarse. En la actualidad se utiliza tanto XML como JSON para el intercambio de datos. Utilizar uno u otro depende de las circunstancias y de las preferencias que en cada momento se determinen.
Hoy día JSON cuenta con un sitio web oficial (http://json.org) y una especificación oficial producida por ECMA International, el mismo organismo encargado de la especificación oficial de JavaScript. La especificación oficial de JSON, publicada por primera vez en 2013 con el nombre de “Standard ECMA-404 The JSON Data Interchange Format” puede consultarse en la web de Ecma International (http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf).
Aunque en sus orígenes JSON estuvo ligado a JavaScript, y de hecho su notación puede decirse que está inspirada en la notación de objetos JavaScript, con el tiempo se ha convertido en un estándar independiente de datos, no ligado a ningún lenguaje en concreto, de la misma forma que xml no está ligado a ningún lenguaje en concreto.
Al igual que un fichero xml es un fichero de texto, un fichero json también lo es.


JSON: LENGUAJES CON SOPORTE
Con el tiempo prácticamente todos los lenguajes de programación han introducido soporte para el intercambio de datos basado en JSON. En este listado podemos ver algunos de los lenguajes o entornos con soporte para JSON y los nombres de sus librerías, extensiones o utilidades dedicadas a JSON:
ABAP: EPO Connector.
ActionScript: ActionScript3 , JSONConnector.
Ada: GNATCOLL , JSON.
AdvPL: JSON-ADVPL.
ASP: JSON for ASP , JSON ASP utility class.
AWK: JSON , awk , rhawk.
Bash: Jshon , JSON , sh.
BlitzMax: bmx-rjson.
C: JSON_checker , YAJL , js0n , LibU , json-c , json-parser , jsonsl , WJElement , M's JSON parser , cJSON , Jansson , jsmn , cson , parson , ujson4c , nxjson , frozen , microjson.
C++: JSONKit , jsonme-- , ThorsSerializer , JsonBox , jvar , rapidjson , jsoncons , json , JSON Support in Qt , QJson , qmjson , jsoncpp , zoolib , JOST , CAJUN , libjson , nosjob , JSON++ , SuperEasyJSON , Casablanca , JSON library for IoT , minijson.
C#: fastJSON , JSON_checker , Jayrock , Json , NET - LINQ to JSON , LitJSON , JSON for , NET , JsonFx , JSON@CodeTitans , How do I write my own parser? , JSONSharp , JsonExSerializer , fluent-json , Manatee Json , FastJsonParser
Ciao: Ciao JSON encoder and decoder.
Clojure: data , json.
Cobol: XML Thunder.
ColdFusion: SerializeJSON , toJSON.
D: Cashew , Libdjson
Dart: json library.
Delphi: Delphi Web Utils , JSON Delphi Library , tiny-json.
E: JSON in TermL.
Erlang: mochijson2.
Fantom: Json.
FileMaker: JSON.
Fortran: json-fortran , YAJL-Fort.
Go: package json.
Groovy: groovy-io
Haskell: RJson package , json package
Java: JSON-java , JSONUtil , Jackson JSON Processor , jsonp , Json-lib , JSON Tools , Stringtree , SOJO , Jettison , json-taglib , XStream , Flexjson , JON tools , Argo , jsonij , fastjson , mjson , jjson , json-simple , json-io , JsonMarshaller , google-gson , Json-smart , FOSS Nova JSON , Corn CONVERTER , Apache johnzon
JavaScript: JSON , json2 , js , clarinet , Oboe , js.
LabVIEW: i3-JSON , LAVA JSON ,
Lisp: Common Lisp JSON , Yason , Emacs Lisp.
LiveCode: mergJSON ,
LotusScript: JSON LS.
LPC: Grimoire: LPC JSON.
Lua: JSON Modules.
M: DataBallet.
Matlab: JSONlab , 20565 , 23393.
Net.Data: netdata-json.
Objective C: NSJSONSerialization , json-framework , JSONKit , yajl-objc , TouchJSON , ObjFW.
OCaml: Yojson , jsonm.
OpenLaszlo: JSON.
PascalScript: JsonParser.
Perl: CPAN , perl-JSON-SL.
Photoshop: JSON Photoshop Scripting
PHP: PHP 5 , 2 , json , Services_JSON , Zend_JSON , Comparison of php json libraries.
PicoLisp: picolisp-json.
Pike: Public , Parser , JSON , Public , Parser , JSON2.
PL/SQL: pljson: Librairie-JSON.
PowerShell: PowerShell.
Prolog: SWI-Prolog HTTP support.
Puredata: PuRestJson
Python: The Python Standard Library , simplejson , pyson , Yajl-Py , ultrajson , metamagic , json
R: rjson , jsonlite.
Racket: json-parsing.
Rebol: json , r.
RPG: JSON Utilities
Ruby: json , yajl-ruby , json-stream , yajl-ffi.
Scala: package json.
Scheme: MZScheme , PLT Scheme.
Squeak: Squeak.
Symbian: s60-json-library.
Tcl: JSON.
Visual Basic: VB-JSON , PW , JSON
Visual FoxPro: fwJSON , JSON , vfpjson.


JSON: ESPECIFICACIÓN FORMAL
La especificación formal de JSON es relativamente simple.
Gráficamente se define con las siguientes figuras.

Figura 1: un objeto JSON está formado por uno o varios pares string: value (cadena:valor)
objeto json

Figura 2: un valor en JSON puede ser un string (cadena), un número, un objeto JSON, un array, el valor true, el valor false o el valor null.
valor json

Figura 3: un array o arreglo en JSON está formado por valores delimitados entre corchetes y separados por comas.
array json

Figura 4: una cadena JSON queda formada de forma análoga a como se forma en muchos lenguajes de programación. Determinados caracteres han de usar una secuencia de escape.
cadena json

Figura 5: un número JSON queda formado de forma análoga a como se forma en muchos lenguajes de programación.
numero json



EJERCICIO
Transforma los datos en formato JSON mostrados a continuación en datos en formato XML y responde:
{
    "personas": [
        {
            "nombre": "Juan Pérez Galones",
            "altura": 1.72,
            "peso": 75,
            "pasatiempos": [
                "Comics",
                "Baloncesto",
                "Gaming"
            ],
            "soltero": true,
            "direccion": {
                "calle": "Avenida Soleares",
                "numero": "44",
                "pais": "Chile"
            }
        },
        {
            "nombre": "Pedro Motos Sandez",
            "altura": 1.69,
            "peso": 72,
            "pasatiempos": [
                "Programación",
                "Senderismo"
            ],
            "soltero": true,
            "direccion": {
                "calle": "Torero Pedro Cano",
                "numero": "78",
                "pais": "México"
            }
        }
    ]
}

a) Muestra el código XML equivalente.
b) Compara el número de caracteres que forma una codificación y otra. ¿Cuántos caracteres ocupa la codificación JSON? ¿Cuántos caracteres ocupa la codificación XML? (Nota: el número de caracteres se puede contar con un editor de texto).
c) Transforma la notación JSON para que toda la información quede en una sola línea. ¿Crees que el contenido en una sola línea es equivalente al contenido inicial? ¿Qué ventajas e inconvenientes le ves a tener toda la información en una sola línea?
d) Transforma la notación XML para que toda la información quede en una sola línea. ¿Qué línea resulta más larga, la línea con notación JSON o la línea con notación XML?

sábado, 8 de abril de 2017

PROCCES MAKER


Introducción
La empresa Colosa ha desarrollado un servicio de ultima generación (Web 2.0) llamada Process Maker ™. Es una herramienta que funciona con el modelo ASP (Application Service Provider), es decir la compañía ofrece la aplicación desde sus servidores por un pago mensual, o sea un alquiler.
ProcessMaker es ideal para diseñar y automatizar procesos que utilicen formularios y requieren de decisiones o aprobaciones y que actualmente están siendo manejados por email, hojas de excel, formularios en Word, o papeles.
A pesar de que funciona en forma semejante a un workflow, ProcessMaker contiene una funcionalidad más avanzada. ProcessMaker permite al usuario crear, modificar, e integrar aplicaciones directamente desde un Web-Browser.
Con ProcessMaker los usuarios pueden crear aplicaciones que llenan y complementan funcionalidades faltantes en sistemas CRM, ERP, etc.
Además, ProcessMaker se integra sin dificultad a otros productos mediante una interfaz de Web Services.
ProcessMaker se presenta a los usuarios en una forma unificada, a pesar de que se estén usando diferentes sistemas internamente.
Los usuarios pueden usar inmediatamente plantillas (templates) prediseñadas de muchos procesos generales, o los pueden crear desde cero, según las necesidades de la empresa.
Componentes
El sistema esta dividido en las siguientes componentes:
La compañía: Mediante esta componente los usuarios pueden manejar los diferentes procesos y flujos de la empresa.
La fabrica: es utilizada por los administradores para diseñar y crear nuevos flujos de trabajo así como reglas, formas y generar reportes. Esta componente contiene un programa Windows para el desktop.

Fabrica para crear flujos
Funcionalidad
El usuario de ProcessMaker puede manejar los procesos y flujos predefinidos o generados por los administradores directamente desde su Internet Browser, como se muestra en la siguiente imagen:

Lista de tareas pendientes
También cada usuario tiene un dashboard personalizado, que muestra un resumen de todos los procesos y sus respectivos avances.


Dashboard pesonalizado

domingo, 26 de marzo de 2017

ipv4 y ipv6

Información General de Direcciones IP
Una dirección IP es como un número telefónico o una dirección de una calle. Cuando te conectas a Internet, tu dispositivo (computadora, teléfono celular, tableta) es asignado con una dirección IP, así como también cada sitio que visites tiene una dirección IP. El sistema de direccionamiento que hemos usado desde que nació Internet es llamado IPv4, y el nuevo sistema de direccionamiento es llamado IPv6. La razón por la cual tenemos que reemplazar el sistema IPv4 (y en última instancia opacarlo) con el IPv6 es porque Internet se está quedando sin espacio de direcciones IPv4, e IPv6 provee una exponencialmente larga cantidad de direcciones IP... Veamos los números:
·         Total de espacio IPv4: 4,294,967,296 direcciones.
·         Total de espacio IPv6: 340,282,366,920,938,463,463,374,607,431,768,211,456 direcciones.

Incluso diciendo que IPv6 es "exponencialmente largo" realmente no se compara en diferencia de tamaños.

Direcciones IPv4

Para entender el por qué el espacio de direcciones IPv4 es limitado a 4.3 mil millones de direcciones, podemos descomponer una dirección IPv4. Una dirección IPv4 es un número de 32 bits formado por cuatro octetos (números de 8 bits) en una notación decimal, separados por puntos. Un bit puede ser tanto un 1 como un 0 (2 posibilidades), por lo tanto la notación decimal de un octeto tendría 2 elevado a la 8va potencia de distintas posibilidades (256 de ellas para ser exactos). Ya que nosotros empezamos a contar desde el 0, los posibles valores de un octeto en una dirección IP van de 0 a 255.
Ejemplos de direcciones IPv4: 192.168.0.1, 66.228.118.51, 173.194.33.16
Si una dirección IPv4 está hecha de cuatro secciones con 256 posibilidades en cada sección, para encontrar el número de total de direcciones IPv4, solo debes de multiplicar 256*256*256*256 para encontrar como resultado 4,294,967,296 direcciones. Para ponerlo de otra forma, tenemos 32 bits entonces, 2 elevado a la 32va potencia te dará el mismo número obtenido.

Direcciones IPv6

Las direcciones IPv6 están basadas en 128 bits. Usando la misma matemática anterior, nosotros tenemos 2 elevado a la 128va potencia para encontrar el total de direcciones IPv6 totales, mismo que se mencionó anteriormente. Ya que el espacio en IPv6 es mucho mas extenso que el IPv4 sería muy difícil definir el espacio con notación decimal... se tendría 2 elevado a la 32va potencia en cada sección.
Para permitir el uso de esa gran cantidad de direcciones IPv6 más fácilmente, IPv6 está compuesto por ocho secciones de 16 bits, separadas por dos puntos (:). Ya que cada sección es de 16 bits, tenemos 2 elevado a la 16 de variaciones (las cuales son 65,536 distintas posibilidades). Usando números decimales de 0 a 65,535, tendríamos representada una dirección bastante larga, y para facilitarlo es que las direcciones IPv6 están expresadas con notación hexadecimal (16 diferentes caracteres: 0-9 y a-f).
Ejemplo de una dirección IPv6: 2607 : f0d0 : 4545 : 3 : 200 : f8ff : fe21 : 67cf
que sigue siendo una expresión muy larga pero es mas manejable que hacerlo con alternativas decimales.


la primera idea del robot

LA PRIMERA IDEA DEL ROBOT
En la actualidad, los robots comerciales e industriales son ampliamente utilizados, y realizan tareas de forma más exacta o más barata que los humanos. También se les utiliza en trabajos demasiado sucios, peligrosos o tediosos para los humanos. Los robots son muy utilizados en plantas de manufactura, montaje y embalaje, en transporte, en exploraciones en la Tierra y en el espacio, cirugía, armamento, investigación en laboratorios y en la producción en masa de bienes industriales o de consumo.
Otras aplicaciones incluyen la limpieza de residuos tóxicos, minería, búsqueda y rescate de personas y localización de minas terrestres.
Los robots parecen estar abaratándose y reduciendo su tamaño, una tendencia relacionada con la miniaturización de los componentes electrónicos que se utilizan para controlarlos. Además, muchos robots son diseñados en simuladores mucho antes de construirse y de que interactúen con ambientes físicos reales. Un buen ejemplo de esto es el equipo Spiritual Machine, un equipo de 5 robots desarrollado totalmente en un ambiente virtual para jugar al fútbol en la liga mundial de la F.I.R.A. Existe una gran esperanza, especialmente en Japón, de que el cuidado del hogar para la población de edad avanzada pueda ser desempeñado por robots.
Además de los campos mencionados, hay modelos trabajando en el sector educativo, servicios (por ejemplo, en lugar de recepcionistas humanos o vigilancia) y tareas de búsqueda y rescate.

diferencia entre microcomputadoras y macrocomputadoras

Supercomputadora

Una supercomputadora o un superordenador es aquella con capacidades de cálculo muy superiores a las computadoras comunes y de escritorio y que son usadas con fines específicos. Hoy día los términos de supercomputadora y superordenador están siendo reemplazados por computadora de alto rendimiento y ambiente de cómputo de alto rendimiento, ya que las supercomputadoras son un conjunto de poderosos ordenadores unidos entre sí para aumentar su potencia de trabajo y rendimiento. Al año 2011, los superordenadores más rápidos funcionaban en aproximadamente más de 1 petaflops (que en la jerga de la computación significa que realizan más de 1000 billones de operaciones por segundo). La lista de supercomputadoras se encuentra en la lista TOP500.
Características
Las principales son:
·         Velocidad de procesamiento: miles de millones de instrucciones de coma flotante por segundo.
·         Usuarios a la vez: hasta miles, en entorno de redes amplias.
·         Tamaño: requieren instalaciones especiales y aire acondicionado industrial.
·         Dificultad de uso: solo para especialistas.
·         Clientes usuales: grandes centros de investigación.
·         Penetración social: prácticamente nula.
·         Impacto social: muy importante en el ámbito de la investigación, ya que provee cálculos a alta velocidad de procesamiento, permitiendo, por ejemplo, calcular en secuencia el genoma humano, número π, desarrollar cálculos de problemas físicos dejando un margen de error muy bajo, etc.
·         Parques instalados: menos de un millar en todo el mundo.
·         Hardware : Principal funcionamiento operativo


Microcomputadora


Es un dispositivo de computación de sobremesa o portátil, que utiliza un microprocesador como su unidad central de procesamiento o CPU. Los microordenadores más comunes son las computadoras u ordenadores personales, PC, computadoras domésticas, computadoras para la pequeña empresa o micros. Las más pequeñas y compactas se denominan laptops o portátiles e incluso palm tops por caber en la palma de la mano. Cuando los microordenadores aparecieron por primera vez, se consideraban equipos para un solo usuario, y sólo eran capaces de procesar cuatro, ocho o 16 bits de información a la vez. Con el paso del tiempo, la distinción entre microcomputadoras y grandes computadoras corporativas o mainframe (así como los sistemas corporativos de menor tamaño denominados minicomputadoras) ha perdido vigencia, ya que los nuevos modelos de microordenadores han aumentado la velocidad y capacidad de procesamiento de datos de sus CPUs a niveles de 32 bits y múltiples usuarios.


Los microordenadores están diseñados para uso doméstico, didáctico y funciones de oficina. En casa pueden servir como herramienta para la gestión doméstica (cálculo de impuestos, almacenamiento de recetas) y como equipo de diversión (juegos de computadora, catálogos de discos y libros). Los escolares pueden utilizarlos para hacer sus deberes y, de hecho, muchas escuelas públicas utilizan ya estos dispositivos para cursos de aprendizaje programado independiente y cultura informática. Las pequeñas empresas pueden adquirir microcomputadoras para el procesamiento de textos, para la contabilidad y el almacenamiento y gestión de correo electrónico.
Microcomputadora Caracteristicas:
Su nombre deriva a raiz de la aparicion de los microprocesadores.
Un microprocesador es una computadora dentro de un chip o sea un circuito integrado independiente.
 Son de uso personal y realmente economicas
 Se encuentran en hogares, oficinas y escuelas.
1.- Computadoras personales, con el gabinete tipo minitorre, separado del monitor.
2.- Computadoras personales portátiles “Laptop” o “Notebook”.

3.- Computadoras personales más comunes, con el gabinete horizontal, separado del monitor.