Programación

La programación informática o programación algorítmica, acortada como programación, es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas computacionales.

Algoritmo

Un algoritmo es una secuencia no ambigua, finita y ordenada de instrucciones que han de seguirse para resolver un problema. Un programa normalmente implementa (traduce a un lenguaje de programación concreto) uno o más algoritmos.

Compilación

El programa escrito en un lenguaje de programación de alto nivel (fácilmente comprensible por el programador) es llamado programa fuente y no se puede ejecutar directamente en una computadora.

Desarrollador

Para conseguirlo se hace uso de tecnologías de software del lado del servidor y del cliente que involucran una combinación de procesos de base de datos con el uso de un navegador web a fin de realizar determinadas tareas o mostrar información.

Diseño Web

Actividad que consiste en la planificación, diseño, implementación y mantenimiento de sitios web. No es simplemente la implementación del diseño convencional ya que se abarcan diferentes aspectos como el diseño gráfico web; diseño de interfaz y experiencia de usuario

miércoles, 4 de octubre de 2017

Configurar SessionTimeout en springboot para un servidor Apache Tomcat

Configurar session timeout en spring boot para un embedded tomcat

Durante el desarrollo, aplicaciones de Java Web se ejecuta dentro de un embedded tomcat contenedor que está controlado por spring boot. El tiempo de espera de sesión puede configurarse usando el siguiente ajuste en application.yml.
server:
   session:
      timeout: 3600

Configurar session timeout en spring boot para un servidor independiente Tomcat.

La configuración anterior en application.yml funciona bien para el entorno de desarrollo. Sin embargo, no tendrá ningún efecto cuando el war se despliega en un independiente de Tomcat. La otra opción es crear un HttpSessionListener y establezca el maxInActiveInterval desde el event sessionCreated.

@WebListener
class SessionTimeoutListener implements HttpSessionListener {

 @Override
 void sessionCreated(HttpSessionEvent event) {
  event.getSession().setMaxInactiveInterval(60*5);
 }

 @Override
 void sessionDestroyed(HttpSessionEvent se) {

 }
}
La clase de escucha está anotado con @WebListener anotación por lo que será detectado automáticamente por contenedor.

Configuración de global session timeout para todas las aplicaciones deployadas en apache Tomcat.


 Todas las aplicaciones implementadas a tomcat hereda la configuración de $CATALINA BASE/conf/web.xml para cualquier configuración poner en este archivo se aplicará a cada aplicación.

<session-config>
  <session-timeout>60</session-timeout>
</session-config>

miércoles, 24 de mayo de 2017

Enlaces de cursos gratuitos de programación





video2brain  es una productora de videotutoriales para trabajadores de oficina, fotógrafos, profesionales del diseño, el desarrollo de frontend, backend entre otros, sinceramente los vídeo tutoriales son buenos que ayudan a uno aprender.

Los cursos pueden descargarlo a travez de mega en el siguiente enlace:

sábado, 8 de abril de 2017

Los 6 niveles de desarrolladores de software



A menudo surge la duda de por qué existe una diferencia o clasificación entre los profesionales del área de desarrollo de aplicaciones.

Más allá de una simple segmentación por nombre, en términos generales nuestra profesión abarca el análisis, diseño, codificación, implementación y pruebas para convertir una idea en solución informática. A lo largo de este artículo mostraré los 6 niveles de profesionales según sus responsabilidades, expertise y experiencia laboral.





Junior o Nivel 1




A menudo suele recibir instrucciones detalladas de que debe hacer, puede escribir parte del código de un software o realizarlo completo.

Un junior es normalmente un desarrollador inicial, alguien que empieza a dar sus primeros pasos en el ambiente de la creación de aplicaciones o que recién sale de la universidad sin experiencia laboral previa. El Junior es frecuentemente puesto como pasante y por esto sus funciones suelen verse limitadas.

A menudo un Junior no suele interactuar con los clientes o futuros usuarios de la aplicación. Suele dejarse manejar por la presión y por esto no se delega en el labores de vigilancia de aplicaciones en producción ni proyectos con premura o corto deadline.

El periodo en el que se considera Junior puede estar hasta los 2, 3 y 4 años (dependerá en algunos casos de la empresa) de vida laboral en el área. Algunas empresas suelen usar como modo de adaptación y evaluación, poner a los desarrolladores Junior a trabajar en pequeñas aplicaciones para medir su desenvolvimiento.

Podemos decir que:

Se poner block, mezclar, pero a menudo no uso agua!.. Pese a sus conocimientos el desarrollador Junior debe ser guiado a hacer las cosas exactamente donde se las indicaron.

Senior o Nivel 2


Normalmente recibe una lista de requerimientos para un proyecto en el cual puede que trabaje solo o tenga algún (os) Juniors de asistenté(s). Se toma la libertad de adecuar los requerimientos y genera un project plan segmentado en fases.

El Senior no necesita instrucciones en todos los detalles como los Junior, suele ingeniársela para investigar detalles puntuales que quizás no fueron especificados en los requerimientos.

No es necesario tenerle tanta vigilancia en el cumplimiento de sus metas.

En cierta medida la mayor diferencia entre un desarrollador senior y un junior radica en su autonomía en la ejecución de sus funciones y pese a su experiencia laboral el senior suele manejar mejor la presión.

Un senior experimentado suele ser a partir de los 4 años. Algunas personas y empresas consideran el espacio entre los 2 y 4 años de experiencia como Mid Senior (semi-senior) pues no se considera que sus capacidades sean completamente óptimas.

Podemos decir que:

El Senior es el guía de aquellos jóvenes que saben clavar clavos en la madera, poner block y ligar cemento pero no saben cuando ni donde deben hacerlo sin una supervisión, el senior les sirve de guía… Él sabe las herramientas pero no está calificado para diseñar casas completas.

Analista o Nivel 3


El analista en muchos casos suele ser el puente entre los desarrolladores y el cliente; en muchos de los casos cumple la función de team leader o project manager.

El analista a menudo tiene una clara idea de que puede o no hacer su equipo y cuales son sus límites. Es la persona que se sienta con el cliente, revisa sus ideas para convertirlas en requerimientos y las lleva a alternativas viables. Administra recursos y tiempo dentro de su equipo para cumplir con las fechas acordadas.

Siendo justo y llevando esta descripción al plano laboral, pudiera decirse que un analista no necesariamente es un desarrollador pues en algunos casos es una persona que conoce las funciones de los desarrolladores, tienes nociones de las herramientas pero no desarrolla.

Podemos decir que:

El Analista es el capataz que sabe para que sirve el block, donde se debe hacer una zanja, que tanto cemento usar pero a menudo termina su jornada con las manos limpias… tiene en teoría una idea clara de como hacer una casa.

Analista Desarrollador o Nivel 4


Este nivel tiene lo mejor de los dos mundos, pues un Analista Desarrollador suele ser un Senior con las cualidades y capacidades del analista antes mencionado.

En este nivel se suele tener una idea más aterrizada de cada requerimiento y el plan de acción suele ser más acabado y preciso en la práctica pues también desarrollar es parte de su día a día.

Un Analista Desarrollador sabe que herramientas son mejores para cada tarea y por ende sus resultados suelen ser mejores o sus resultados más exactos que los de los Analistas.

Existe un segmento “Analista Desarrollador Senior” que suele diferenciarse de los anteriores por sus altas capacidades o mejor dominio de la implementación de sus aplicaciones.

Podemos decir que:

Entiendo que quieras hacer un lobby con baño incluido pero, ¿por qué no mejor hacer uno aparte para las visitas? … Si tu Analista solo sabe decir que sí a todo requerimiento, quizás te está sobrando un Junior en la empresa.

Arquitecto de Software o Nivel 5




Los Arquitectos de Software son quienes determinan las reglas de negocio al momento de implementar una nueva solución, no solo se limitan a mirar en el entorno de desarrollo las herramientas y tecnologías a utilizar sino que evalúan y proponen upgrade a nuevo hardware para los sistemas que van a crear.

Fuera de lo que puedan pensar los Junior y Senior, para los Arquitectos de Software la creación de aplicaciones es un arte.

Cuando un Junior piensa en la palabra “Arquitecto” imagina un individuo con grandes maquetas en la cual está impregnada la concepción de su infraestructura, esto mismo hacen los Arquitectos de Software aplicado al desarrollo de soluciones.

El trabajo y responsabilidad de los Arquitectos de Software es más grande en cierta medida pues deben hacer las predicciones de cuanto hardware es necesario para correr la nueva aplicación que crearán en base a mediciones de carga o pruebas de stress.

La Arquitectura de Software, tiene que ver con el diseño y la implementación de estructuras del software, desempeño del sistema, la escalabilidad y portabilidad de forma adecuada para satisfacer las necesidades del negocio.

Podemos decir que:

Soy el encargado de diseñar todo lo que aquí verán, pegar block fue una vez lo mio pero todavía me ensucio las manos para estar seguro que el trabajo se hace como lo pensé.

Inventor o Nivel 6




Un inventor es un ente completamente independiente de toda tarea recurrente y cuya misión es crear nuevas implementaciones, API o innovaciones tecnológicas no existentes en el mercado.

El inventor debe ser alguien con visión y amplios conocimientos en un lenguaje o tecnología y con la capacidad de concebir una idea completamente original y que pueda revolucionar o brindar una solución al mercado de software.

Este nivel no es muy abundante en el mercado común y suele requerir una gran cantidad de años de experiencia obtener este título.

Podemos decir que:


¿Pega block? ¿Qué es eso? … hablemos luego, estoy creando un nuevo block redondo que aunque en la actualidad no presente mucha importancia marcará la nueva tendencia de crear casas en unos años

Fuente: linkedin

martes, 28 de marzo de 2017

¿Programar genera estrés?



Vease al programador como aquella persona de ojos rojos que trabaja día y noche, y no tiene vida. Pues esto es parcialmente falso.

Los primeros pasos de nuestra vida

Cuando comenzamos en este mundo, los primeros empleos que van a conseguir no son de los mejores, pagan poco y piden mucho, y esto es normal debido a nuestra falta de experiencia y estas empresas normalmente, no estan constituidas para liderar un área de TI o simplemente no saben lo que es estoI. Pero de cierto modo, es una gran oportunidad para aprender de todo un poco y así, más adelante profundizar en algo específico.

Es inevitable obviar el estrés en esta, normalmente, aquí el joven programador decide si seguir en esto o migrar a QA, analista, etc, debido a que nos vamos a quedar más horas de lo normal para corregir nuestros errores, vamos hacer de todo: frontend, backend, maquetación y en el peor de los casos, hasta photoshop.


Los que sobrevivieron a la primera oleada

A este punto todavía pensamos como Junior, pero ya tenemos cierta experiencia y deberíamos tener claro lo que QUEREMOS HACER y en que ESPECIALIZARNOS. Entonces, tu criterio de búsqueda debería ser optar por una empresa en la que puedas crecer profesionalmente asumiendo nuevos retos. Si logramos conseguir una empresa buena, entonces la cosa se pondrá más interesante, el estrés se verá opacado por los nuevos retos afrontar, el trabajo en équipo (cosa que asumo no veías antes), verás que hay varios desarrolladores trabajando en un mismo proyecto usando un sistema de versiones, aprenderás más de tecnología, cosas que harán que crezcas profesionalmente y te olvidarás del estrés a pesar que te quedes más de lo normal.

El estrés volverás cuando te comiences aburrir de hacer lo mismo, entonces, tendrás que cambiar de trabajo. Ojo, si te aburres a pesar que afrontas nuevos retos, entonces esto no es lo tuyo.


Menos errores, más eficientes

Ya no somos pequeños padawans, tampoco seniors, pero conocemos del tema, cometemos menos errores, creamos código más eficiente, reutilizable. Por ende, nuestra prioridad debe ser asumir nuevos retos, conocer nuevos modelos de negocios, más de tecnología, tal vez nos toque ver arquitectura de software. A este punto ya conoces el trabajo en équipo, tienes un buen lider técnico que sabe hacer su trabajo, delega bien las tareas, eres lo suficientemente hábil para acabar a tiempo tus cosas por lo tanto, podrás salir a tu hora sin tener que quedarte de más, y mejor aún, sentirás que tienes tiempo de sobra. Mi consejo es, si tienes tiempo de sobra, investiga algo, es lo que suelo hacer yo.

El paso siguiente

Tenemos experiencia, brindamos buenas soluciones, preguntamos muy poco, somos autodidactas (basta con leer la documentación para entender), pero asumir nuevos retos ya no es tan interesante, ahora buscamos una empresa que sea más flexible, que no tenga muchas restricciones que puedas ir vestido como quieras, si llegas tarde, que no te digan nada y que paguen bien. En este punto me encuentro yo, normalmente acabo rápido mis deberes y me doy tiempo para hacer otras cosas, muy rara vez trabajo demás y solo me quedo cuando quiero. Lo que me gusta hacer en esta fase es apoyar al équipo, participar en las decisiones, plantear nuevas estrategias para lograr los objetivos, ver de arquitectura y mejorar mi ingles (todo en mi empresa es ingles).


Conclusión

Personalmente el estrés lo he dejado a un lado y cuando lo hago es normalmente porque me aburro y siento que no avanzo, por suerte en la empresa que estoy es americana y los gringos siempre estan a la vanguardia, se aprenden muchas cosas, tengo un buen lider técnico y el dueño conoce bastante de tecnología (no hay forma de discutirle de algo porque es muy probable que tu no tengas la razón).

Algunos factores a considerar que me han hecho dejar a un lado el estrés:

Equipo mejor organizado, tenemos un tester y un LT que conoce bastante (más que yo).
No tengo que venir formal al trabajo, odio las corbatas.
Horarios flexibles (lo importante es cumplir 8 horas al día)
Viernes de Whisky

Razones principales del estrés

Empresa con pésima organización
No comprendemos los procesos, muchos errores técnicos
Poco personal
Líder técnico ineficiente
Hacemos de todo
Trabajamos por cumplir, no por pasión
Ver lo mismo aburre, innovar sería lo ideal
Usar corbata
Trabajamos más horas de lo normal y sentimos que no progresamos


Recomendaciones

Si ya conoces tu trabajo, sabes que tienes experiencia, no necesitas quedarte de más.
Nadie te puede obligar a quedarte si realmente no quieres
Haz deporte (ayuda mucho), yo hago box en las noches y spinning
Sal con tus amigos, conoce nuevas personas, ten vida social
Disfruta de los videojuegos, ve películas
Busca un pasatiempo, disfrútalo
Ten sexo!!!!

fuente anexsoft.

domingo, 26 de marzo de 2017

Java Top 5 Servidores de Aplicación Opensources


Este artículo es una breve revisión de los servidores de software abierto JEE que existen en el mercado. Serán listados incluyendo algunos detalles para cada servidor de aplicación.
WidFly – JBoss Application Server
Visión General
WidFly inicialmente conocida como JBoss Application Server, es un software de aplicación creado por JBoss, ahora desarrollado por Red Hat. WidFly esta escrito en Java y se puede ejecutar en las mejoras plataformas Java EE, se encuentra disponible en multi plataformas.
En terminos de API, WidFly soporta el último estándar en Java Enterprise ( Java EE 7) y esta basado en los mejores proyectos de software abierto tales como:
Undertow (servidor web)
Apache CXF (web services basado en SOAP)
RestEasy ( web services basado en REST)
Infinispan (plataforma de Data Grid y Cluster )
HornetQ (proveedor de JMS)
JGroups (framework de comunicación Multicast)
En términos de arquitectura interna, WidFly (tal cual JBoss AS 7) esta diseñado en una arquitectura modular basado en dos proyectos principales:
JBoss Module, maneja la carga de los recursos de clase en el contenedor
Modular Service Container (MSC), que proporciona una forma de instalar, des-instalar y administrar los servicios utilizados por el contenedor.
WidFly se puede ejecutar de dos formas: con un simple JVM y multi-JVM o modo domain.

GlassFish
Visión General
GlassFish es un servidor de aplicaciones de código abierto iniciado por Sun Microsystems para la plataforma Java EE y ahora patrocinado por la corporación Oracle.
El servidor GlassFish 4.0 esta desarrollado a través de un proyecto de la comunidad de sofware en http://glassfish.java.net/. El proyecto GlassFish proporciona un proyecto estructurado para el desarrollo el cual permite tener disponibles las nuevas características de la plataforma Java EE en forma más rápido que en otros servidores.
GlassFish esta construido en un núcleo modular basado en OSGi, GlassFish se ejecuta sobre la aplicación de Apache Felix. También se ejecuta con Equinox OSGi o Knopflerfish OSGi.
Apache Geronimo
Apache Geronimo es un servidor de software abierto que integra los mejores proyectos de software abierto creados para Java/OSGi el cual conoce las necesidades de programadores y administradores de sistema. Entonces la característica más importante de este servidor es que contiene una colección de los mejores proyectos de software abierto para hacer un servidor complementa funcional. Los componentes del núcleo de Jeronimo incluyen:
 Apache Tomcat (Servidor HTTP y contenedor de servlet)
Jetty (Servidor HTTP y contenedor de servlet, alternativo a Tomcat)
Apache ActiveMQ (proveedor de JMS 1.1)
Apache OpenEJB (contenedor EJB)
Apache OpenJPA (Implementación de Java Persistence API – JPA 1.0)
Apache ServiceMix (Enterprise Services Bus)
Apache CXF (framework de web services con una variedad de protocolos)
Apache Derby (administrador de base de datos relacional con un soporte nativo para JDBC)
Apache WADI (solución cluster y de balanceo de carga)
El núcleo de Geronimo es un framework para los servicios del núcleo y control de los componentes básicos del servidor. Todo en Geronimo es un GBean: contenedor, conector, adaptador, aplicación y más. Un GBean es la unidad mínima de Geronimo, el cual consiste en un conjunto de clases (.jar) y el plan de implementación.
JOnAS
Visión General
JOnAs es una implementación de software libre de la especificación de JEE para servidores de aplicación, desarrollada y alojada el consorcio ObjectWeb.
Las características de JOnAS lo certifican como un contenedor Java EE 6. Proporciona un contenedor de EJB a través de EasyBeans y esta disponible con un servidor Tomcat y un servidor Jetty. JVM 6 esta soportado y los intentos de ejecutar en una pila libre con el classpath GNU son prometedores. Además de la pila de Java EE, JOnAS proporciona mecanismos de alto nivel para cluster y así proporcionar escalabilidad y alta disponibilidad.

Apache Tomcat EE
Visión General
Apache TomEE es la edición Java EE de Apache Tomcat, el cual combina varios proyectos Java incluyendo Apache OpenEJB, ApacheOpenWebBeans, Apache OpenJPA, ApacheMyFaces y otros. El proyecto tiene una certificación de la corporación Oracle como un servidor compatible del perfil web Java EE 6 , que es una parte de toda la especificación Java EE.
Básicamente ApacheTomEE es ensamblada de vanilla Apache Tomcat.
Este artículo esta basado en Top 5 OpenSource Application Servers

lunes, 20 de marzo de 2017

Las tendencias de programación que deberías conocer, seas desarrollador o no



Es evidente que el desarrollo de software está presente en la vida moderna y a estas alturas existe una app móvil o web para casi todas las situaciones. Entender la tecnología y su evolución es también la capacidad de aprovecharla al máximo.

Cada año surgen nuevas prácticas y tecnologías, y qué mejor fuente para enterarse que los propios desarrolladores. Todos los años el foro de dudas para programadores Stack Overflow realiza una encuesta entre sus millones de usuarios para medir el pulso de la industria. Los resultados de este año ya están publicados y las respuestas han brindado un panorama muy interesante sobre las tendencias de empresas y programadores.

45 preguntas respondidas por 56.032 usuarios desde 173 países. Más de 3 millones de desarrolladores visitan esta web desde España y 1.023 participaron en la encuesta.

Datos que llaman la atención:

La gran mayoría de los participantes se definen como “Full Stack Developers” (si no te suena, te explicamos de qué vá más adelante).
Para aprender nuevas tecnologías, el camino preferido es ser autodidacta.
Casi la mitad son desarrolladores/programadores sin titulación oficial. Y prefieren ser llamados “desarrollador” a “programador”.
El lenguaje más popular es JavaScript.
El stack de tecnologías frontend más popular está formado por  AngularJS, Node.js y JavaScript.
Los desarrolladores que manejan JavaScript, Node.js, AngularJS y tecnologías Cloud son los mejor pagados.
Node.js. AngularJS y Python ocupan los primeros lugares en tecnologías que los desarrolladores quieren aprender.
63% de especialistas en Big Data trabajan con Python.
Star Wars es la favorita de los desarrolladores cuarentones, Star Trek es muy querida por los más seniors, y entre los más jóvenes (menos de 30) Babylon 5, Dr Who y Firefly también dan pelea.



Estas respuestas interesan no sólo a programadores

Los desarrolladores son los arquitectos del mundo moderno. Apps y dispositivos moldean nuestra vida y manera de relacionarnos, por esta razón, no hay que perder de vista cuál es la tendencia del desarrollo moderno. Toma nota:

Si eres desarrollador

Si no te has dado cuenta hasta ahora, los stacks MEAN y Django marcarán un antes y un después en tu carrera como desarrollador web. Revisa los blogs técnicos de la mejores empresas como Netflix o Amazon y averigua las últimas tendencias. Ten presente el concepto “Arquitectura de Microservicios”, pues es lo que pega fuerte en este momento.
Si quieres marcar la diferencia, apunta a convertirte en “Full Stack Developer”, es decir, un profesional que maneja los diferentes componentes de un producto de software, sabe cómo se relacionan y sabe desarrollarlos con las herramientas más ágiles.
El título universitario no condiciona tu éxito en esa entrevista de trabajo que anhelas. Manejar tecnologías modernas y poder mostrar un proyecto funcional será tu mejor arma.
La pista más importante: PREPÁRATE. No es suficiente conocer algunas de las herramientas. Las empresas buscan a Full Stack Developers con el arsenal más actualizado y criterio para saber aplicarlo a cualquier proyecto.
Full Stack.



Si eres recruiter

Un título no garantiza el perfil más cualificado. La Universidad brinda una excelente base, pero no enseña tecnologías modernas, así que fíjate en los desarrolladores con proyectos y apps publicadas, activos en redes técnicas como gitHub, Twitch y el propio Stack Overflow.
Mantente al día con nuevas herramientas y busca desarrolladores que las conozcan no sólo por el nombre.
La versatilidad de un desarrollador asegura un proyecto con final feliz. Durante su carrera el programador tiene que actualizarse como mínimo cada cuatro años, así que toma muy en cuenta la capacidad del candidato para aprender nuevas herramientas y aplicarlas en un plazo breve.
Si no eres desarrollador

Internet es el nuevo terreno de acción. Si no te encuentran, no existes. Sin importar el sector, cualquier proyecto o empresa puede evolucionar a pasos gigantes gracias a una solución tecnológica. Manejar tendencias y vocabulario facilitará la comunicación con profesionales técnicos y por lo tanto asegurará que tus proyectos se realicen eficazmente.
Conocer qué opciones hay y qué es posible hacer te dará una perspectiva amplia de tu negocio o proyecto y estimulará tu creatividad para innovar.
… Y si además de conocer las opciones, sabes desarrollarlas, serás un profesional muy valioso sea cual sea tu profesión, ya que contarás con el criterio suficiente para agilizar tu proyecto o empresa con herramientas modernas.
Cualquier persona puede convertirse en programador y cualquier desarrollador (jovenzuelo o dinosaurio) puede dar el salto a las grandes ligas. Recuerda que es un trabajo fundamentalmente intelectual y la clave está en la preparación.

Las oportunidades están allí. No hay tiempo que perder

Las empresas punteras alrededor del mundo tiene algo en común entre sus diferentes productos: un backend muy potente y escalable, al que se accede hoy en día fundamentalmente a través de clientes móviles y clientes web.

La demanda de desarrolladores capaces de sacar adelante este tipo de proyectos es enorme y mundial. Sólo en EEUU, se estiman van a faltar en 2020 cerca de 400 mil desarrolladores de software y en el resto del mundo -España incluida- el escenario profesional no es muy diferente. Fórmate para lo mejor, es lo más importante. La edad en este entorno no es una pega para competir por los mejores puestos de trabajo lo cual es una gran noticia.

Una excelente opción para actualizarte de forma definitiva y eficiente, sin importar edad o años de experiencia, es el KeepCoding Web Development Bootcamp. Una formación intensiva donde, a través del entrenamiento riguroso, te convertirás en un Full Stack Developer preparado según lo que piden las empresas más importantes del mundo.

Es un programa duro, un maratón de tecnologías desafiante, pero muy, muy efectivo y a la vez compatible con trabajo. Un entorno donde no sólo aprenderás la correcta asimilación de todos los conceptos, sino las mejores prácticas para aplicarlos.

Los conceptos que realmente necesitas

Aprenderás a usar la Arquitectura de Microservicios (MSA), que permite usar diferentes stacks tecnológicos según la tarea asignada, así se logra un backend más potente y eficaz. Conocerás JavaScript desde los fundamentos, aplicándolo tanto del lado del cliente, como del servidor. Verás a fondo los stacks MEAN y Django.
Tanto si buscas actualizar tus aptitudes como si estás comenzando en desarrollo web, esta es la formación que te lleva rápidamente a dar un salto profesional. Interfaces adaptativas, automatización de tareas, buenas prácticas de desarrollo, trabajo en equipo…

A todo eso se suman módulos de optimización (SEO), analytics y tests A/B desde el punto de UX y de monetización, Gestión de Proyectos Ágiles, TDD, control de versiones con Git, y mucho más.  Además, crearás un proyecto real (clon de Medium) y en cada módulo se desarrolla un elemento de la arquitectura del producto, para unirlos todos en la Práctica Final.

Empresas y startups buscan talento de donde sea ¿Qué harás al respecto?

Si quieres reforzar tu base de programación, actualizarte con nuevas tecnologías, reciclarte con una apuesta segura, brindar valor a tu carrera o emprender un proyecto técnico con los más altos estándares, no lo pienses más, KeepCoding te acerca a los mejores puestos de trabajo en todo el mundo.

Si tienes dudas, podrás aclararlas en vivo este viernes. Conoce todo lo que podrás disfrutar en el Bootcamp el 15 de abril a las 21:30 en YouTube. Descubre aquí todos los detalles.

El desarrollo es una opción absolutamente viable para cambiar tu vida. Sólo necesitas las herramientas adecuadas, ganas y disciplina para lograr ese sueño profesional.

fuente: stack overflow

lunes, 13 de marzo de 2017

JSON en SQL Server 2016: Página 4 de 4 Páginas

Exportar datos como JSON, for JSON

En este post final de nuestra serie de JSON cuatro, nos muestra la capacidad de formato de resultados de la consulta como texto JSON mediante la cláusula de JSON para. Si estás familiarizado con la cláusula FOR XML, entenderás fácilmente para JSON
Cuando se agrega la cláusula de JSON para el final de una consulta SELECT de SQL, SQL Server los resultados, formato como texto JSON y devolverlos al cliente. Cada fila tiene un formato como un objeto JSON, valores de las celdas del resultado se generará como valores de objetos JSON y nombres de columna o alias se utilizarán como nombres de clave. Tenemos dos tipos de cláusulas para JSON:
  • FOR JSON PATH: Le permite definir la estructura de una salida JSON usando los nombres de columna/alias. Si pones nombres separados por punto en los alias de columna, propiedades JSON seguirá la Convención de nomenclatura. Esta función es similar a la de ruta XML donde se pueden utilizar rutas de slash separado.
  • FOR JSON AUTO Crea automáticamente matrices anidadas de sub JSON basados en la jerarquía de la tabla en la consulta. Una vez más, esto es similar a la de XML AUTO.
Texto JSON que se genera con una cláusula para JSON puede transformarse a la forma relacional usando OPENJSON.

Conclusión

JSON funciones en SQL Server le permiten consultar y analizar los datos JSON como transformar JSON a dominios relacionales y datos relacionales a JSON. Permiten integrar SQL Server con los sistemas externos que producen o consumen datos JSON sin transformaciones adicionales en la capa de aplicación. 

SQL Server también proporciona un modelo de almacenamiento híbrida donde combinas datos relacionales y JSON. Este modelo permite hacer compensaciones entre alto rendimiento evolución de acceso y flexibilidad rápida de datos. Puede utilizar las mismas técnicas de indexación en columnas estándar y los valores en texto JSON. 

El modelo híbrido conserva todas las ventajas del motor de SQL Server con lenguaje de consulta totalmente potente y transacciones ACID. También cuenta con modelos de gestión y seguridad bien conocidos, varias funciones que trabajan con funciones JSON y un amplio ecosistema de herramientas compatibles con SQL Server.

JSON en SQL Server 2016: Página 1 de 4
JSON en SQL Server 2016: Página 2 de 4
JSON en SQL Server 2016: Página 3 de 4

JSON en SQL Server 2016: Página 3 de 4 Páginas

Transformar texto JSON a tabla relacional – OPENJSON
OPENJSON es una función del valor de tabla (TVF) que se ve en texto JSON, localiza una gran variedad de objetos JSON, recorre en iteración los elementos de la matriz y cada elemento devuelve una fila en el resultado de salida.

En el ejemplo anterior, podemos especificar dónde ubicar la matriz JSON que debe ser abierta (es decir, en el $. Ruta de órdenes), qué columna debe ser devuelto como resultado, y donde en el JSON pueden ubicarse los valores de los objetos que se devolverá como células. 
OPENJSON se puede utilizar en cualquier consulta que trabaja con datos. Como ejemplo, podemos transformar un conjunto de filas de una matriz JSON en la variable @orders e insertarlos en una tabla estándar:
INSERT INTO Orders(Number, Date, Customer, Quantity)
SELECT Number, Date, Customer, Quantity
 OPENJSON (@orders)
 WITH (
        Number varchar(200), 
        Date datetime,
        Customer varchar(200),
        Quantity int
 ) AS OrdersArray
Cuatro columnas en el conjunto de resultados devuelto por OPENJSON se definen en la cláusula WITH. OPENJSON tratará de encontrar las propiedades de número, fecha, cliente y la cantidad en cada objeto JSON y convertir sus valores en columnas en el resultado. Por defecto, es NULL devuelve si no se encuentra la propiedad. La Asunción en la consulta anterior es que la variable @orders contiene la siguiente matriz JSON:
'[
   {"Number":1, "Date": "8/10/2012", "Customer": "Adventure works", "Quantity": 1200},
   {"Number":4, "Date": "5/11/2012", "Customer": "Adventure works", "Quantity": 100},
   {"Number":6, "Date": "1/3/2012", "Customer": "Adventure works", "Quantity": 250},
   {"Number":8, "Date": "12/7/2012", "Customer": "Adventure works", "Quantity": 2200}
]'
Como se puede ver, la transformación de un texto JSON a una forma relacional es simple. Solo tienes que especificar nombres de columna y tipos y OPENJSON encontrará propiedades en JSON que coinciden con estas columnas. En este ejemplo, se utiliza JSON simple; sin embargo, OPENJSON puede manejar cualquier estructura anidada/jerárquica de objetos JSON. 
, OPENJSON puede utilizarse para combinar relacional y datos JSON en la misma consulta. Si suponemos que la matriz JSON que se muestra en el ejemplo anterior se almacena en la columna de pedidos, la consulta siguiente puede combinar las columnas y los campos JSON:
SELECT Id, FirstName, LastName, Number, Date, Customer, Quantity
 FROM Person
    CROSS APPLY OPENJSON (OrdersJson)
                            WITH (
                                        Number varchar(200), 
                                        Date datetime,
                                        Customer varchar(200),
                                        Quantity int ) AS OrdersArray
OPENJSON abre una matriz de cada celda y devuelve una fila por cada objeto JSON (es decir, elemento) en la matriz. Cruz OPENJSON aplicar sintaxis se utilizan para "juntar" filas en la tabla con la tabla interna del niño que se materializará de una matriz JSON en la celda JSON.

Indexación de datos JSON

Aunque los valores en JSON formato como texto, puede indexarlos al igual que cualquier otros valores en columnas de la tabla. Puede utilizar Cluster no estándar o índices de búsqueda de texto completo. 
Si desea crear un índice en alguna propiedad JSON que se utiliza con frecuencia en las consultas, puede crear una columna calculada no persistió que hace referencia el valor y se crea un índice estándar en esa columna. En el ejemplo siguiente, optimizamos consultas que filtran filas mediante la propiedad de .Company $ en la columna de InfoJSON:
ALTER TABLE Person
ADD vCompany AS JSON_VALUE(InfoJSON, '$.Company')
CREATE INDEX idx_Person_1
    ON Person(vCompany)
Como se puede ver, SQL Server proporciona un modelo híbrido, donde usted puede poner valores de JSON en columnas de clave o incluye y utiliza valores JSON y columnas estándar en el mismo índice. 
Puesto que JSON es texto normal, usted puede utilizar el índice de texto completo. Se pueden crear índices de texto completo en matrices de valores. 

Crear un índice de texto completo en una columna que contiene una matriz JSON, o puede crear una columna calculada que hace referencia a un array en la columna existente y crear un índice de búsqueda de texto completo en la columna:
ALTER TABLE Person
ADD vEmailAddresses AS JSON_QUERY(InfoJSON, '$.Contact.Emails')
CREATE FULLTEXT INDEX ON Person(vEmailAddresses)
    KEY INDEX PK_Person_ID ON jsonFullTextCatalog;
Índice de texto completo es útil si usted necesita para optimizar las consultas que intentan encontrar filas en la matriz JSON contiene algún valor:
SELECT PersonID, FirstName,LastName,vEmailAddresses
FROM Person
WHERE CONTAINS(vEmailAddresses, 'john@mail.microsoft.com')
Esta consulta devolverá filas de persona donde la matriz de correo electrónico contiene el valor 'john@mail.microsoft.com'. Índice de texto completo no tiene ninguna regla especial para el análisis de JSON. Dividirá un array JSON usando separadores (es decir doble comillas, comas, soportes) y los valores del índice en un array. Índice de texto completo es aplicable en matrices de números y valores de cadena simple. Si tienes objetos más complejos de una matriz JSON, un índice de texto completo no se puede aplicar directamente porque el sistema no sabe la diferencia entre claves y valores. 

Como se puede ver, los mismos métodos de indexación se utilizan tanto en columnas relacionales y valores JSON.
JSON en SQL Server 2016: Página 1 de 4
JSON en SQL Server 2016: Página 2 de 4
JSON en SQL Server 2016: Página 4 de 4