Conceptos

Conceptos generales de programación o cómputo, no necesariamente atados a una tecnología específica.

HeadhunterIT, seleccionamos el mejor talento IT, que colabore para TI.

HeadhunterIT, es una empresa 100% mexicana dedicada al reclutamiento y seleccion únicamente de talentos enfocados en la Tecnología de Información.
En HeadHunterIT damos un servicio personalizado y especializado para Analizar y comprender las necesidades del cliente y con ello poder satisfacerlas.
En HeadhunterIT contamos con una base de datos real y cuantificada de talentos identificados a nivel Latinoamérica de especialistas en TI, nos aseguramos de su nivel técnico a través de entrevistas y exámenes según la especialidad.
Nuestro CORE de negocio es el reclutamiento de perfiles de IT: Becarios, Analistas, Consultores, Desarrolladores, Líderes , Managers de todas las tecnologías que el mercado demanda

Visítanos

El poder de Either en Scala

Hace tiempo escribí acerca de la versatilidad que nos da el usar Option en Scala, cuando se puede manejar un valor que podría ser nulo.

Esto es muy útil por ejemplo para un método de login: pasamos usuario y password, y obtenemos un Usuario, siempre y cuando exista el usuario con ese nombre y su password sea correcto. Entonces podemos implementar el método de estar forma:

 

Entonces cuando invocamos el método  , ya no tenemos que validar contra null en un   para proceder de una forma, y presentar un error en el  ; en vez de eso podemos hacer distintas funciones:

 

¿XML ... eso con que se come?

Java aparte de bonito, barato y eficiente es un lenguaje que permite procesar (con ayuda de algunas herramientas como:JAXB , XStream, JDom, etc.) los archivos *.xml.

Los documentos xml tienen varios usos:

  1. Intercambo de informaciön entre aplicaciones (Web o de escritorio)
  2. XML como "base de datos"
  3. Ahorro de recursos de los servidores
  4. etc.

Permite crear etiquetas personalizadas, sin embargo, es necesario que los documentos xml tengan un significado coherente.

Un ejemplo. Crear un xml que represente la entidad Programador y sus atributos (nombre,edad y email).

Programador.xml
 

Es un archivo xml básico, pero todavia falta como darle validez.

¿Cómo se le da validez a los archivos xml?

Existen dos alternativas (validadores) los Documentos de definición de tipos:

ScalaQuery: Un DSL para acceso a base de datos en Scala

La manera más básica o primitiva de interactuar con una base de datos en Java es por medio de JDBC. Esto por supuesto se puede hacer también en Scala, Groovy o cualquier otro lenguaje para la JVM, pero al usar JDBC se tiene que programar en estilo Java por la manera en que fue diseñado.

En Scala existe una alternativa interesante: ScalaQuery. Lo que esta biblioteca nos permite hacer es realizar queries con código Scala, con un margen de error mucho menor, ya que se aprovecha el tipado estático del lenguaje de una forma que incluso en Java no se hace con JDBC.

La mejor manera de ilustrar su uso es con un ejemplo sencillo. Supongamos que tenemos una tabla, definida así en SQL:

 

Disruptor: una nueva estructura de datos

Algunos de ustedes tal vez conozcan el esquema productor-consumidor; es un escenario simple de concurrencia: un hilo o proceso está creando datos para procesar, los cuales tienen que ser procesados por otro hilo o proceso.

El productor puede estar generando estos datos porque está leyéndolos de un socket, o de algún sensor conectado a la computadora (temperatura, teclado, ratón, etc), o vienen de base de datos, etc. La cosa es que se dedica exclusivamente a producir estos datos, no puede procesarlos porque entonces puede perderse de algunos de los datos que vienen de la fuente, por estar procesando lo que tiene. Por eso hay un consumidor de estos datos, que debe procesarlos en un hilo aparte.

La comunicación entre productor y consumidor por lo general se resuelve utilizando una cola: una estructura de datos tipo FIFO en donde el productor va colocando los datos que produce y el consumidor va tomando datos para procesarlos.

Serialización de alto desempeño: Protocol Buffers

El 11 de octubre de 2011 liberé la versión 1.6.0 de jAlarms, y una de las características nuevas de esta versión es la posibilidad de poner un servicio de envío remoto de alarmas.

Una manera de lograr esto es con RMI, de lo cual ya hablaré posteriormente, pero una manera mucho más eficiente es con los Protocol Buffers de Google. Esta es una herramienta bastante buena para comunicación en red, de hecho es lo que usa Google para la comunicación entre sus procesos, porque ofrece las siguientes ventajas:

  • Alto desempeño para serializar y de-serializar objetos.
  • Portabilidad e interoperabilidad: permite comunicación entre aplicaciones hechas en distintos lenguajes y plataformas.
  • Ancho de banda/espacio: los mensajes serializados ocupan muy poco espacio en comparación con otros formatos como XML, JSON, o incluso serialización binaria nativa de varias plataformas.

TDD ... el usuario

Cada quien programa como quiere. El usuario no es importante (...). El usuario cuenta su problema y el analista/programador hace como que le escucha y va tomando nota de todo. Se dan un apretón de manos y listos para trabajar.

"Si como no, le voy hacer caso ... si el que programa soy yo"

Problema. El usuario requiere de un programa que almacene documentos en formato pdf, nada más.

"¿Eso es todo en serio? ... jaja eso está muy fácil"

Bien. Manos a la obra. El el analista/programador empieza a escribir código lo más rápido posible para quedar bien con el usuario (además de sorprenderlo de lo rápido que puede entregar el proyecto).

"La interfaz me está quedando muy bien, pero como que le falta algo está muy simple"

TDD ... en la vida real

¿Qué es el TDD?

Es una técnica de programación para mejorar el "diseño" de nuestro código. Significa desarrollo guiado por pruebas.

¿Cómo funciona?

Consiste en aplicar pruebas unitarias (probar el código y comprobar su buen funcionamiento) y refactorizar (eliminar duplicados, código muerto, y en algunos casos rehacer el código).

Algoritmo básico del TDD

  1. Hacer un test y ver que falle (rojo)
  2. Hacer el còdigo mínimo y suficiente para que el test pase (verde)

Encapsulamiento

Toca el turno al concepto de la programación orientada a objetos llamado "encapsulamiento".

Como su nombre lo indica.....

Bueno mejor un ejemplo:

 

Este código define una clase llamada   con dos atributos   y  .

Aunque parece trivial y obvio este es uno ( otro ) de los aspectos más importantes de la programación orientada a objetos; definir los datos y los métodos para acceder/modificar los datos en el mismo lugar.

A este simple concepto se le llama "encapsulamiento" pues los datos están dentro de la capsula que forma la definición de la clase.

Y.... yap!.. eso es todo en serio. Es un concepto muy fácil de entender.

Ahora, para máximizar la eficacia de este concepto algunos lenguajes de programación como Java permiten tener diferentes "modificadores de acceso" para restringir o permitir más o menos visibilidad de los atributos ( modificar la forma en la que esos datos pueden ser accedidos ).

Auxilio!!! Qué es Portls???

Hola a todos!

Quiero solicitar su amable apoyo para checar detalles de una tecnología que requerimos para cubrir una vacante, la herramienta es Portls, ojalá alguien tenga información al respecto...

Saludos!

Distribuir contenido