Probando Pentaho I - Instalación

miércoles, 10 de abril de 2013

logopentaho
Como comenté en un artículo anterior,  Tercer Planeta se está introduciendo en el tema visualización de información. 
Generada la inquietud, fue necesario encontrar herramientas que nos permitan asociar los datos de nuestras bases con gráficos. Herramientas hay miles. Espectaculares. Pero, por supuesto, con altos costos de licencias. Una muy buena, es Tableau. Nos resultó muy fácil de instalar y usar. 
Existen también librerías de Javascript que nos permiten construir visualizaciones interesantes, entre ellas  protovis y D3.js. En este caso, el desarrollo no es sencillo.
Continuando nuestra búsqueda, consideramos que para visualizar datos, no podíamos descartar las soluciones de Business Intelligence. Así, encontramos opciones de código abierto  y de implementación sin costos de licencia, relativamente simples.

 Herramientas Open Source para Business Intelligence

En el área de Inteligencia de Negocios han surgido varias iniciativas de desarrollo de soluciones e implementación de herramientas Open Source. Existen en el mercado varias suites, entre ellas: Pentaho, SapgoBI, Vanilla,OpenI.
Todas parten de Mondrian (motor OLAP) + jpivot (interfase para OLAP) + kettle (ETL). Tienen diferentes políticas Open Source. En este artículo voy a contar nuestra experiencia con Pentaho (http://www.gravitar.biz)

 

Qué es Pentaho

Es un proyecto iniciado por una comunidad OpenSource, provee una alternativa de soluciones de BI en distintas áreas como en la Arquitectura, Soporte, Funcionalidad e Implantación. Estas componentes, al igual que su ambiente de implantación, están basadas en JAVA, brindando entonces gran flexibilidad.
Gracias a la integración funcional de diversos proyectos de OpenSource permite ofrecer soluciones en áreas como: análisis de información, reportes, dashboards, flujos de trabajo y minería de datos.
Las principales son:
  • Plataforma BI : provee la arquitectura y la infraestructura a la vez. Mondrian, forma parte del motor OLAP integrado en el SUITE BI de PENTHO.
  • Pentaho Reporting JfreeReport/ Pentaho Reporting: herramienta de Reportes.
  • Kettle Pentaho Data Integration (Extraction Transformation Load): usando una interface grafica “SPOON” permite diseñar “jobs” de transformación de datos para ser procesados bajo las herramientas de Kettle (PAN y KITCHEN)
  • WEKA : minería de datos.


Instalación y configuración de Pentaho

Mi primera aproximación fue por medio de las versiones comerciales disponibles. Bajé la versión para Windows 7. La instalación fue sencilla. Armé un pequeño data warehouse para un trabajo académico, con Oracle como base de datos.
Encontré buena documentación. Pude acceder bien a los datos, armar reportes y tableros de control.
Fue una experiencia útil para entender la herramienta y plantear nuevos problemas a resolver. De todas maneras, el desafío fue configurar la versión Open Source.
En los siguientes párrafos ennumero los pasos seguidos.  Hubo mucho 'google' y prueba y error! Hay mucha información disponible. Hice un resumen de todo lo leido, que ahora quiero compartir. Bienvenidos los comentarios y aportes!


Bajar zips y descomprimirlos en el lugar adecuado
Las herramientas de código abierto se pueden bajar de Pentaho community y sourceforge.
Bajé algunas de las herramientas que componen Pentaho y armé un cuadro con el detalle. Tomé como guía un artículo de la wiki de la comunidad.








A continuación la instalación de los tres primeros componentes.
  1. Crear directorio c:\Pentaho
  2. Descomprimir en el mismo el servidor BI de Pentaho (biserver-ce).
  3. Crear el directorio c:\Pentaho\design-tools.
  4. Dentro del mismo descomprimir las herramientas cliente. (prd-ce y psw-ce)




Java y variables de entorno
 La plataforma Pentaho BI necesita una JVM (Java Virtual Machine) instalada. Podemos bajarlo desde Sun Developer Network download page.
Pentaho usa las variables de entorno: JAVA_HOME y JRE_HOME.
En mi caso la dí de alta, esta es la imagen del setup


                     

 Arrancando el Server de Pentaho y la consola de Administración
Arranque del Server:
pentaho/biserver-ce> startup.bat

Acceso a Pentaho User Console:
http://localhost:8080/pentaho
(Usuario: joe Password: password)



Arranque de consola de Administración:
Pentaho/Administration-console/start-pac.bat
Acceso a la consola:
http://localhost:8099
(Usuario: admin Password: admin)

Hasta acá los pasos mínimos de instalación. Con esto es posible investigar los ejemplos y crear algún reporte o gráfico con las conexiones disponibles. Para trabajar con datos propios, un par de pasos más.



Conectar a una base de datos
 Instalar primero el driver adecuado para la base de datos. O archivo JAR. Este archivo normalmente se puede bajar desde el sitio oficial del motor a usar. Es importante instalar en cada directorio solamente la última versión del driver.
En mi caso, investigué las conexiones a SQL Server (motor para las aplicaciones que desarrollamos en Tercer Planeta). Tomé los drivers desde el sitio oficial de Microsoft. Probé también con los drivers de codigo libre. Estoy usando estos últimos.
Copié el driver jtds-1.3.0.jar en los siguientes directorios correspondientes al server, a la herramienta de reportes y al schema-workbench. Esta es la lista de directorios:
  1. Pentaho\administration-console\jdbc
  2. Pentaho\biserver-ce\tomcat\lib
  3. Pentaho\biserver-ce\data\lib
  4. Pentaho\design-tools\report-designer\lib\jdbc
  5. Pentaho\design-tools\schema-workbench\drivers
Una vez copiado el driver en los diretorios, reiniciar el servicio.
Creación de una conexión desde la pantalla de administración: (referencia Pentaho)




Nombre: es el que se usará desde los distintos componentes de Pentaho
Driver Class: lista de los drivers default de Pentaho. Debería incluir el instalado previamente. (net.sourceforge.jtds.jdbc.Driver)
Usuario: un usuario con permiso a la base de datos a acceder.
Password: para la base de datos
Url:jdbc:jtds:sqlserver://NombreServer:1433/BaseDatos;instance=nombreInstancia
Consideraciones de configuración
Para publicar reportes creados con el report-designer, o esquemas generados con schema-workbench:
Ingresar password en el archivo: Pentaho\biserver-ce\pentaho-solutions\system\publisher_config.xml
<publisher-config>
<publisher-password>password</publisher-password>
</publisher-config>

Para acceder a la consola desde otra máquina, reemplazar localhost por la IP en:
 Pentaho\biserver-ce\tomcat\webapps\pentaho\WEB-INF\web.xml

<!--  FullyQualifiedServerUrl is used only in the case of offline content generation and whenever something need to talk back to the server -->
<context-param>
<param-name>fully-qualified-server-url</param-name>
<param-value>http://TIERRA:8080/pentaho/</param-value>
</context-param>

Hasta acá la instalación inicial de Pentaho. Desde la consola es muy intuitiva la consulta los reportes y los cubos de ejemplo.
En próximos artículos generación de reportes (report-designer), herramientas de análisis (squema-workbench) y dashboards. ( CDF: community dashboard framework).
Leer más...

Sublime Text 2

viernes, 5 de abril de 2013

icono Sublime Text
Como en tantos otros equipos, a la hora de trabajar en los proyectos web usamos como principal herramienta Visual Studio. Pero muchas veces nos encontramos con que no es necesario un IDE tan poderoso para crear ejemplos, probar scripts, tags nuevos, simplemente leer un código o editar cualquier texto.

En reiteradas ocasiones hemos usado Notepad++ y nos hemos maravillado por su simplicidad, su integración con Windows y atajos de ejecución. Hoy se ha ganado un lugar Sublime Text 2.


Sublime Text 2 es un editor de texto/código que se distribuye libremente pero no es gratuito. De igual manera, no limita ninguna funcionalidad al usuario que lo esté usando. 


Tiene muchas características que lo destaca sobre sus pares:

- Es multiplataforma: Hace falta aclaración al respecto?.

- Tiene un minimapa: Consiste en un preview de la estructura de nuestro código que se sitúa a la derecha del editor (Podemos ocultarla). Es muy útil para desplazarse por el archivo cuando conocemos bien la estructura del mismo.
- Multiselección: No es una característica que destaca pero si muy útil.
- MultiCursor: Permite la escritura paralela en diferentes posiciones del documento.
- Soporte nativo para infinidad de lenguajes: HTML, CSS, Python, XML, PHP, SQL, JavaScript, C#.
- Edición de múltiples archivos mediante solapas.
- Archivos de configuración: Permiten configurar desde la coloración de la sintaxis hasta los atajos de teclado.
- Búsquedas dinámicas: Se puede buscar por expresiones normales y regulares en archivos, proyectos, directorios o todo a la vez.
- Autocompletado de código: Por ejemplo, al abrir etiquetas de html, al dar tab se autocompleta su cierre automáticamente.
- Soporte de plugins y snippets para aumentar la funcionalidad.
- Modos de uso: Podemos "codear" a pantalla completa o en modo sin distracciones.

Instalación

Desde la página oficial podemos descargar los instaladores (Para Windows y Mac) o su versión portable para Linux (También es posible descargarlo vía PPA).


Primer uso

Esta herramienta tiene una interfaz minimalista, cómoda y muy productiva. No te asustes la primera vez



El comando Ctrl + K + B, que permite visualizar los documentos abiertos actualmente en una barra lateral que se despliega por la izquierda




Luego tenemos una de las opciones indispensables que es "GoTo Anything" (Ctrl + P) que te permitirá localizar los archivos rápidamente y a medida que escribas irá filtrando los archivos que por nombre coincidan. Si te desplazas con las fechas de dirección, podrás obtener una vista previa y al dar enter irás a parar al archivo en cuestión


Una vez dentro del documento, podemos especificar más nuestra búsqueda de la siguiente manera. Escribiendo:


:[Número] iremos a parar a una línea en concreto

:@ verás los métodos utilizados anteriormente
:# podrás buscar en el interior del fichero

(En el comando incluir los dos puntos)


Tambien podemos crear proyectos desde el menú "Project" para gestionar mejor tus documentos/proyectos. Incluso tiene un plugin para GIT!


Escribiendo código

Sublime text 2 posee un motor de autocompletado para etiquetas html y css (entre otros lenguajes) que permite hacer más fluida nuestra escritura y ganar tiempo de desarrollo. Por ejemplo, en html si escribimos div.contenedor y pulsar tab, el editor completará y cerrará la etiqueta quedando así:

<div class="contenedor"></div>


Lo mismo sucede para un id.


En el caso de css es algo parecido, al escribir estilos generalmente reconoce los atributos y te permite autocompletarlos (Salvo features nuevos de html5)



Personalización del entorno

Sublime text 2 por defecto tiene una serie de temas instalados que se pueden utilizar desde Preferences - Color scheme. Si ninguno te gusta puedes descargarte otros o crear el tuyo


Instalar un plug-in: Package control

Posiblemente el plugin más necesario que existe para sublime text es Package control. Este permite instalar cientos de otros plugins. Su instalación es muy sencilla y está detallada en instalación de Package control

Una vez completa su instalación podemos acceder al Package control mediante Ctrl + Shift + P y escribiendo Package Control: Install Package (Y posterior enter) se listarán los paquetes para instalar




Una pequeña de plugins que he probado y me resultaron útiles son:

- SublimeLinter: Subraya los potenciales errores de un programa, muy útil para ahorrar tiempo detectando la falta de un punto y coma o el cierre de paréntesis.

- Alignment: Formatear código rápido presionando Ctrl + Alt + a.
- Git: Conexión al repositorio Git. También funciona con GitHub y Bitbucket.


Snippets

Los snippets son pequeños fragmentos de código guardados en archivos individuales que te permitirán insertar de forma fácil y rápida partes de código simplemente escribiendo una palabra y pulsando tabulador, o bien asignándole una combinación de teclas.

Por defecto el programa ya cuenta con unos cuantos snippets por ejemplo "lorem". Prueba a abrir un nuevo documento y escribir lorem y luego tabulador (Seguro te sorprenderás como yo)


Hasta acá la revisión. Espero que le den una oportunidad a Sublime Text 2 y estemos atentos que la versión 3 ya está en beta (Sólo para usuarios registrados)
Leer más...

Responsive design - Parte 2/2

miércoles, 23 de enero de 2013

Para empezar a pensar en diseños adaptables primero debemos ponernos al dia con algunos conceptos:

Tag meta

Proporciona metadata acerca del documento HTML, útil para el procesamiento de la página (Por ejemplo: Codificación de caracteres, Autor, Últimas modificaciones, etc)

Siempre se ubican dentro del tag head



Viewport

Es un atributo del tag meta. Hace referencia al área visual en la cual mostramos el documento HTML. Podemos manipular una serie de caracteristicas que posee para controlar la visualización del HTML dentro de la pantalla de un dispositivo móvil.

Sus propiedades más destacadas son:
  • Inicial-scale: Escala inicial en la que se muestra la página. Valor numérico de 0.1 en adelante. 1 representa no escalar
  • Width: Ancho del área visible, en píxeles. Es buena práctica usar el valor device-width para ajustar dinámicamente el tamaño del área visible al ancho del dispositivo
(Más info: http://www.desarrolloweb.com/articulos/etiqueta-meta-viewport.html)

Media-queries

Le facilita al navegador la información necesaria acerca de cómo renderizar la página para anchuras específicas a través de expresiones que retornan verdadero o falso

Hay varias alternativas de lugares donde podemos especificar la media-query. Ellas son:
  • Usando @media en las hojas de estilo: Es la opción más usada. Si la expresión es verdadera se ejecuta el código css encerrado entre llaves { }
  • Usando @import: Es parecido al anterior, solo que en vez de código css se indica la hoja de estilos que se quiere usar en el caso de que la condición sea verdadera
  • Indicando la expresión directamente en el link de importación del .css bajo el atributo media
  • Utilizando código javascript: Por medio de las media-queries podremos adaptar nuestros sitios a resoluciones, orientación e incluso colores
La opción más utilizada (y sobre la cual nos vamos a enfocar) es la primera, usando @media


Ejemplo práctico

Creamos el código necesario para editar los estilos cuando tenemos un iPad en posición vertical

En el HTML:



En el CSS:



Sencillo? Analicemos en profundidad el código HTML y el CSS correspondiente

HTML:





En este código le indicamos al navegador que ancho, alto y escala debe utilizar para mostrar el contenido. Detalles:
  • El valor del atributo content es conjunto de propiedades especificadas como clave=valor donde hay constantes que podemos utilizar para adaptar nuestro sitio de mejor manera a la resolución del usuario: device-width y device-height (este último no suele utilizarse porque el navegador muestra el scroll cuando el contenido verticalmente es mayor a la resolucion del usuario)
Existen otras propiedades que podemos utilizar:


  • Escala: zoom inicial




  • Limitaciones de escala máxima y mínima




  • Desactivar / Activar zoom




  • Ajustar los DPI (Puntos por pulgada)





CSS:

Con la sintáxis @media se nos permite interactuar con el browser para generar estilos que serán aplicados solo si se cumplen las condiciones especificadas.


@media + media type: Es una regla que permite definir estilos para cada tipo de medio de visualización de una página. Estos medios incluyen desde pantallas, proyectores, impresiones, pantallas táctiles para braille, televisores, etc.

Podemos usar un mismo estilo para varios tipos (Separados por coma)
           


En nuestro ejemplo, nosotros solo aplicamos estilo a un solo tipo de visualizador (screen)


and (propiedad: valor): Se anexan al media type para dar especifidad a los estilos que buscamos aplicar. Podemos usar muchos de estos condicionales separados por coma

Las propiedades que podemos utilizar son muchas pero las más importantes son:
  • Aspect-ratio: Mira las dimensiones relativas del dispositivo expresadas como una relación de aspecto: 16:9, por ejemplo
  • Width y height: Mira las dimensiones del área de visualización. Además pueden ser expresadas en valores mínimos y máximos (Como en el ejemplo que estamos analizando)
  • Orientation: Mira si el layout es panorámico (el ancho es mayor que el alto) o vertical (el alto es mayor que el ancho). Esto nos permite ajustar los diseños para dispositivos con propiedades de giro de la pantalla como el iPhone, y otros smartphones y los tablets
  • Resolution: Mira la densidad de los pixeles en el dispositivo de salida. Esto es especialmente útil cuando queremos aprovecharnos de las ventajas de los dispositivos que tiene una resolución mayor a 72 dpi
  • Color, Color-index y monochrome: Encuentran el número de color o bits por color. Esto nos permite crear diseños específicos para dispositivos monocromáticos.
En el ejemplo que citamos, hacemos uso de condiciones que afectan:
  • Ancho máximo y mínimo de la pantalla: and (min-width: 768px)  and (max-width: 1024px)
  • Orientación: and (orientation: landscape)






Para terminar, les dejo como un nuevo ejemplo de un sitio que responde perfectamente con las técnicas de un diseño responsive design: www.bostonglobe.com

Y para ser más específicos todavía les dejo el link de la hoja de estilos donde se aplican las media queries para que las puedan ver más fácilmente: http://www.bostonglobe.com/css/globe-trialHeaders.css



Leer más...

Responsive design - Parte 1/2

miércoles, 9 de enero de 2013

La web no es estática; cambia todo el tiempo y también la forma en la que accedemos a ella. Un signo visible de esta verdad es la cantidad de dispositivos móviles que están a nuestro alcance y que usamos para conectarnos a internet

Este cambio de paradigma tan grande que se dio en estos tiempos debido al gran uso de teléfonos inteligentes y tabletas nos hizo notar (a todos aquellos que construimos la web) que no basta con una sola vista de nuestro sitio para toda la gama de ordenadores móviles y de escritorio desde la que nuestros clientes consumen lo que les ofrecemos


Es por ello que nacen un conjunto de técnicas que nos permitirán hacer adaptable al entorno del usuario nuestros sitios web. A este conjunto de técnicas las denominamos Responsive design


El diseño adaptable o responsivo es un conjunto de técnicas de desarrollo web que, mediante el uso de estructuras fluidas y media-queries, permiten adaptar un sitio al entorno del usuario

 
Aquí les dejo un ejemplo de un sitio web con un diseño adaptable: www.spigotdesign.com

La idea y creación de estas técnicas provienen de la W3C en su recomendación “Mobile Web Best Practices”, donde se hace referencia a que deberíamos construir una web para todos y accesible desde cualquier dispositivo


Aplicar un diseño adaptable tiene sus ventajas:


  • 1 sólo código: No quedamos atados a plataformas, tecnologías o resoluciones
  • Experiencia de usuario mejorada: Diseño según resoluciones y según orientación de nuestro dispositivo
  • Mejor lectura y usabilidad para personas con discapacidad
  • Actualizaciones eficientes y mejores búsquedas
  • Mejor SEO: Google localiza mejor el contenido

Y también algunos detalles que debemos tener en cuenta:
  • Google te odia: Las imágenes se redimensionan, pero hacen esto desde el máximo posible (Un tamaño que seguramente en un dispositivo móvil no usemos). Así, penalizamos a nuestro móvil en una descarga de imágenes que finalmente no utilizará y a nuestro sitio por tardar en descargarse, e iremos a parar a las catacumbas de los resultados de Google
  • Estresando las máquinas: Para el CPU del dispositivo o el PC no es gratuito redimensionar las imágenes
  • Reestructuración de sitios existentes: Algunos sitios (Al estar pensados para grandes resoluciones) pueden ser complicados de aplicar un diseño responsivo. Quizás se deba modificar la estructura original para obtener claridad y luego recién, trabajar en las diferentes vistas para resoluciones inferiores a la inicial

    La aplicación de estas técnicas tiene su éxito en aprovechar las bondades de cada dispositivo para ofrecer la mejor experiencia de usuario posible, bajo ningún punto de vista requiere que la información y funcionalidad esté implementada de la misma manera para el universo de puntos de acceso

    En un próximo artículo veremos la aplicación práctica!


    Links de interés:



    Leer más...

    ¿Qué es Visualización de Datos?

    jueves, 27 de diciembre de 2012

    logo

    Un issue para los informáticos y no informáticos

    Al desarrollar  un estudio, investigación o trabajo generalmente se deja para el final la presentación de los datos. Se suele dar gran importancia al proceso de descubrimiento, al desarrollo de las preguntas, al estudio del conocimiento existente pero al armado de los gráficos con resultados se le dedica poco tiempo.
    En sistemas, invertimos gran parte del  tiempo en el análisis, diseño y desarrollo de nuestras aplicaciones. Normalmente, asignamos mucho tiempo al testing, a la implementación y la puesta en producción. Sin embargo la presentación de los  datos  almacenados, se limita solo al desarrollo de aburridos reportes que poco significan para el usuario. Los que  trabajamos en desarrollo, confiamos el diseño de nuestros sitios a empresas especializadas. No tenemos miedo, es más, nos jactamos al decir que lo nuestro es la estructura interna. La presentación es un detalle en el cual poco nos involucramos.
     No es un tema menor la preparación del artículo final de los resultados de una investigación o el acceso a los datos almacenados en la base de una aplicación compleja.
    Por otro lado,  actualmente Internet nos tapa de información. Desde datos de distintas fuentes, blogs, páginas de presentación de empresas, instituciones. Textos de todo tipo, noticias, ensayos, tesis, revistas científicas.
    Dentro de toda esta maraña de info, se han puesto de moda los gráficos. Toda empresa que se precie debe tener ( o tratar de ) un tablero de comandos o Dashboard.

    Miremos algunos gráficos que dan que hablar


    • Cómo se consume la energía en Alemania ... ?
    • Conozcamos la escala del universo
    Es  increíble todo lo que dicen estos simples gráficos o animaciones. Son sólo un ejemplo para tomar conciencia de la importancia de un diseño adecuado y enriquecedor.
    Es interesante también conocer imágenes donde el tamaño o la ubicación proveen de información valiosa. Tales como los 'treemaps' y los 'timelines'.

    Treemaps y líneas de tiempo

    Por ejemplo el treemap del buscador de noticias http://newsmap.jp, donde el tamaño se asocia a la popularidad de la noticia y el color al tema.Por otro lado, las lineas de tiempo permiten conocer de un vistazo una historia, pudiendo entrar en detalle a demanda. Un caso es la biografía de Facebook.
    Hay gente dedicada a esto desde hace tiempo:
    A esta altura es necesario formalizar un poco todo esto y definir:

    Infovis -Information Visualization-

      ¿Qué es Visualizar?
    Es la formación  de la imagen mental de un concepto abstracto. Entendiendo como Imagen: conciencia de un objeto ausente o inexistente. Imagen es la representación construida al margen de los estímulos sensoriales.
    ¿Qué es la información?
    Conocimiento adquirido a través de la experiencia o el estudio La información consiste en la elaboración de datos, las señales en bruto que se pueden recoger de los objetos o fenómenos, para construir el conocimiento.
     Entonces,¿ que es visualización de la información?
    'proceso de interiorización del conocimiento mediante la percepción de información'
    La visualización de la información incide en la transformación de la información en conocimiento   (tomado de http://infovis.ne)


    Me gustó mucho también la definición de http://infovis.org/
     ...
    Visualization is more than a method of computing! It is a process of transforming information into a visual form enabling the viewer to observe, browse, make sense, and understand the information. It typically employs computers to process the information and computer screens to view it using methods of interactive graphics, imaging, and visual design. It relies on the visual system to perceive and process the information.
    Visualization is more than pretty pictures. This is not to lessen the importance of visual aesthetics. The latter is quite important in making the user like to look at the information. However, the beauty of an effective visualization is more than skin deep ..
     Las visualizaciones de datos nos permiten ver y entender nuestra información con mayor profundidad. Esta comprensión nos conduce a tomar mejores decisiones.
    Sin la visualización de los datos y el análisis de los mismos, es posible caer en malentendidos y perder oportunidades.
    Algunas visualizaciones son tan poderosas que nos permiten cambiar nuestra concepción del mundo. Les muestro algunas representaciones que cambiaron la historia:

    • Florence Nightingale
    En la guerra de Crimea, en 1855 Gran Bretaña está luchando tanto con Rusia como con la enfermedad.
    Como enfermera, Florence quería convencer a la armada para que invirtiera en hospitales y cuidado de la salud en lugar de gastar en armas.

    Para esto, contó una historia con datos mostrando la cantidad de muertes por enfermedad. Esto se marca con gris.

    Después de esto, los cuidados sanitarios se hicieron prioritarios para la armada inglesa.


    • Minard, al representar la campaña de Napoleon
    En 1812 Napoleón marcho a Moscú para expandir su imperio. El 98% de los soldados murieron. Cincuenta años más tarde, el ingeniero Charles Minard quizo recordar los horrores de la guerra con datos.
    Estos se representan en el mapa. El ancho de la linea representa la cantidad de soldados en la ida y vuelta.

    Debajo, hay un  grafico de la temperatura, que demuestra que las bajas temperaturas aniquilaron la tropa.

    Este gráfico sirvió de inspiración para aquellos que deben determinar el verdadero costo de la guerra. 
    • Mapa del cólera en Londres

    En 1854 hubo una epidemia de colera en la que más de 500 personas murieron en un mismo barrio. Este foco misterioso de infección era especialmente aterrador por no saber la causa del mismo.
    John Snow, un epidemiologista, determinó que el suministro de agua fue la causa del desarrollo de la epidemia en la zona.
    Dibujó cada muerte en un mapa, con un gráfico de barras cuya altura correspondía a la cantidad de muertes por lugar.
    Asi se dio cuenta que verca de la bomba de agua de Broad Street había una mayor cantidad de muertes.Así pudo convencer a las autoridades para modificar la ubicación del suministro de agua.
    http://en.wikipedia.org/wiki/1854_Broad_Street_cholera_outbreak


     
    Quiénes trabajan con visualizaciones actualmente
    Hay mucho más para ver y debatir, pero es un buen momento para determinar cómo estamos ubicados respecto al tema. Para ello,  es interesante el test publicado por la gente de PerceptualEdge: determinar el IQ gráfico.
    ¿Cómo les fué?

    Escribí este artículo después de leer material de la Maestría que cursé en la Universidad de Buenos Aires.
    To be continued ...
    Leer más...

    Git: submódulos anidados

    jueves, 25 de octubre de 2012

    Los submódulos en Git son una forma muy elegante de resolver el tema de las dependencias entre proyectos, permitiendo hacer referencia en varios proyectos (repositorios) a un mismo proyecto (repositorio) compartido.

    Sin embargo, la creación de un repositorio con submódulos anidados está lejos de ser intuitiva. En esta entrada de nuestro blog en inglés le mostramos cómo hacerlo.
    Leer más...

    TypeScript: desarrollo Javascript a gran escala

    jueves, 4 de octubre de 2012


    Actualmente existen varios “superlenguajes” que permiten escribir JavaScript en una forma más abreviada o segura o con diversas ventajas (el mas conocido es CofeeScript).  Todos ellos se “compilan” a Javascript válido, que es el que viaja al browser.

    Ahora Microsoft está haciendo su propia apuesta en ese tema, con el TypeScript  - que es un super-conjunto de Javascript con varias características novedosas (entre ellas el control opcional de tipos) que hacen más seguro y fácil el desarrollo en la escala de aplicaciones completas. Tal como en los otros casos, se compila a Javascript convencional..

    Hasta acá la iniciativa no sería demasiado impresionante… pero MS se está jugando una carta fuerte en este proyecto – que espera sirva de base para el desarrollo para Windows 8 ademas de la web. El responsable del proyecto es nada menos que Anders Hejlsberg, creador del C# y uno de los responsables del proyecto del .NET framework – que fue la plataforma que permitió a MS recuperar el liderazgo en las herramientas de desarrollo.

    Asi que va a valer la pena seguir con atención la evolución de este tema…
    El anuncio fue realizado en esta entrada (en inglés) en el blog de S. Somasegar, VicePresidente de la division de Desarrollo en Microsoft.
    Leer más...

    Puente entre TFS y Git para control de código en paralelo

    viernes, 14 de septiembre de 2012

    Una alternativa para casos especiales

    A veces un repositorio de código está alojado en Team Foundation Server - y no puede cambiarse esa decisión - pero uno necesita interactuar desconectado del mismo durante un lapso más o menos prolongado (en términos de la cantidad de modificaciones aplicadas). O simplemente, las preferencias personales por Git - fácilmente entendibles - hacen que para una serie de cambios que requieran un manejo flexible del control de código, se busque la forma de aprovechar las ventajas de Git.

    git-tfs

    Para resolver las tareas de identificar los cambios realizados sobre el repositorio Git (agregados, eliminaciones y modificaciones) y expresarlos en uno o más "changesets" de TFS, Matt Burke desarrolló un conector que funciona como puente entre los dos sistemas de control de cambios: git-tfs

    Despues de instalar el conector copiando los ejecutables a alguna carpeta y agregando la misma al PATH, se dispone de una serie de comandos 'git tfs' que funcionan como extensiones al git; eso permite:
    1. Crear un repositorio Git a partir de un proyecto o carpeta de TFS, ya sea con su "última foto" o con su historial completo de cambios.
    2. Sobre eso puede operarse con todas las facilidades de Git (branches, etc) haciendo "commits" (de Git) sobre el repositorio
    3. Para generar un "changeset" de TFS se utiliza el comando 'git tfs checkintool'
    4. Tambien pueden traerse cambios subidos al TFS despues de la bifurcacion inicial, mediante las secuencia de comandos 'git tfs fetch' y 'git tfs merge' (o 'git tfs rebase')
    La información más detallada puede leerse en el proyecto git-tfs en GitHub, y tambien en esta entrada de blog (en inglés) de Jeremy Skinner.

    Leer más...