miércoles, 1 de marzo de 2017

Ionic 2: Selección de fecha y hora

En el siguiente ejemplo vamos a mostrar paso a paso cómo construir una sencilla app en Ionic 2, la cual permitirá al usuario introducir y visualizar fechas y horas.


Crear la app en Ionic 2

El primer paso será crear la aplicación, construyendo toda la estructura necesaria. Para ello, accederemos a la consola del sistema y accederemos al directorio en donde vayamos a construir la aplicación. A continuación, introduciremos el siguiente comando:

$ ionic start fechas blank --v2 --ts

Este comando creará el directorio fechas, dentro del cual se creará toda la estructura necesaria para nuestra app. Los parámetros utilizados son:

  • fechas: nombre de la app
  • blank: Nombre de la plantilla (template) que se utilizará para esta app
  • --v2: La app se creará en Ionic 2 (si se omite ser creará en Ionic 1)
  • --ts: Uso de TypeScript

Editar la app

Una vez construida la app, el siguiente paso será abrir el proyecto en un editor o, preferiblemente, en un IDE. Recomiendo utilizar Visual Studio Code o Atom, pero puedes usar el que más te guste.

Código de home.ts

El archivo home.ts (contenido en la carpeta fechas/src/pages) contiene la lógica de negocio de la página principal (y única de la app). Para este ejemplo, no se necesitará nada más que declarar e inicializar las propiedades de dicha página:
  • fechaCorta: Fecha utilizada para la fecha corta (Mes y Año)
  • fecha: Fecha utilizada para la fecha completa (Día, Mes y Año)
  • minFecha: Fecha mínima a gestionar. En este caso se hará por año, que será el año actual menos cinco años
  • maxFecha: Fecha máxima a gestionar. En este caso se hará por año, que será el año actual más cinco años
Al inicializar las fechas, éstas obtendrán el momento actual: día, mes, año, hora, minuto, segundo y milisegundo.

La fecha se almacenará en una cadena (string) con formato ISO 8601: YYYY-MM-DDTHH:mm:ssTZD.

El código para home.html será el siguiente:

import { Component } from '@angular/core';

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {
  fechaCorta: string = new Date().toISOString();
  fecha: string = this.fechaCorta;
  minFecha: string = (new Date().getFullYear()-5).toString();
  maxFecha: string = (new Date().getFullYear()+5).toString();
}

Código de home.html

El archivo home.html contiene la vista de la página. En esta vista se visualizarán tres bloques o secciones (card), cada uno de los cuales gestionará y visualizará un ejemplo de fecha y/o hora.

Comenzaremos con el esqueleto básico de esta página:


La parte de ion-heade mostrará, en la parte superior de la página, una cabecera con un título (Fechas). Esta cabecera es común en todas las apps, donde, además de mostrar el título de la página, permite también albergar elementos de navegación, como botones para volver atrás, o sidemenus (el típico botón "hamburguesa", con tres líneas, que despliega un menú lateral).

El contenido de la página estará encerrado en el componente ion-content, declarado entre las etiquetas correspondientes. Se han declarado tres comentarios TODO, que sustituiremos en cada caso.

Card 1: Fecha corta

Ionic 2 posee un rico repertorio de componentes, los cuales poseen características concretas de la app, y que tratan de emular, tanto el diseño como la experiencia de usuario, propios de la interfaz de usuario del smartphone.

El componente card representa un bloque de contenido (una tarjeta). Pero no nos engañemos: en Ionic 2, una tarjeta puede ser simple o muy compleja, dependiendo del contenido que deseemos mostrar (consultar más info en: http://ionicframework.com/docs/v2/components/#cards).


El código de esta tarjeta es el siguiente (sustituir el primer comentario TODO):



Para nuestro ejemplo, la tarjeta será muy simple. La tarjeta es gestionada por el componente ion-card. Dentro de la tarjeta, podremos definir una cabecera (ion-card-header), la cual contendrá un título. La tarjeta debe mostrar un contenido (ion-card-content). Este contenido, será una lista (ion-list) con dos elementos (ion-item).

El primero de estos elementos, mostrará una etiqueta Fecha (mediante label)

El componente ion-datetime mostrará la fecha actual. Si el usuario toca (pulsa o hace clic) sobre dicha fecha, en la parte inferior de la pantalla aparecerá un elemento visual que permitirá al usuario seleccionar otra fecha, cambiando el mes y el año. Una vez seleccionado, el usuario podrá Cancelar la operación (con lo que retornará a la página principal sin cambios) o aceptar (OK) los cambios realizados, retornano a la página principal. El formato de la fecha (mes y año) se configura mediante las propiedades displayFormat y pikerFormat.

Por último, el segundo elemento de la lista mostrará, en la parte inferior de la tarjeta, un literal (Valor de la fecha:) y la fecha actualmente seleccionada.

El componente ion-datetime actualiza automáticamente el valor de la propiedad fechaCorta, gracias a la directiva [(ngModel)]. Dicha directiva de Angular realiza una vinculación de datos (o data binding) en doble sentido (lee y escribe) a la propiedad fechaCorta. Es decir, que visualiza (lee) el valor de la propiedad, y guarda los cambios (escribe) en la propiedad.



En el segundo elemento de la lista, se produce una vinculación de un único sentido. Cuando se encierra una expresión entre dobles llaves ({{ expresión }}), Angular sustituirá dicha expresión por el valor resultante. Esta vinculación lee el valor de la propiedad fechaCorta y a continuación extrae los 7 primeros caracteres de su valor (usando la función substr() de JavaScript), dando como resultado el año y el mes (recordemos que el valor de esta propiedad es un string que contiene la fecha capturada al iniciar la app, en formato ISO 8601: YYYY-MM-DDTHH:mm:ssTZD).


Card 2: Fecha completa

Esta tarjeta es similar a la anterior. Las diferencias son:
  • Permite manipular y mostrar también el día en la fecha (día, mes y año). Para ello, se modificarán las propiedades displayFormat y pikerFormat
  • Permite establecer un rango de fechas (desde cinco años atrás a cinco años adelante). Estas limitaciones se consiguen mediante las propiedades min y max del componente ion-datetime, y que obtienen sus valores a través de las propiedades minFecha y maxFecha, definidas en home.ts


El código de esta tarjeta es el siguiente (sustituir el segundo TODO):



Para separar el valor de la fecha con respecto al de la tarjeta anterior, se utiliza la propiedad fecha, en lugar de fechaCorta.

Card 3: Hora corta

La mecánica de esta tarjeta es muy similar al de la primera tarjeta. La diferencia radica en que el formato de la fecha es la hora y el minuto, lo que se consigue mediante las propiedades code>displayFormat y pikerFormat. Como sólo afecta al tiempo y no al día, se utiliza también la propiedad fecha.


El código de esta tarjeta es el siguiente (sustituir el tercer TODO):


Ejecutar la app

Para probar la app, ejecutar el siguiente comando en la consola del sistema:

$ ionic serve

Esto compilará todo el código y lo empaquetará en el directorio www de la estructura del proyecto, y a continuación lanzará un navegador web, mostrando la aplicación desde la URL http://localhost:8100/. Recomiendo lanzar la aplicación en Google Chrome, ya que nos permite abrir el entorno de desarrollo y visualizar la app con una apariencia muy parecida a un smartphone o una tablet, pudiendo elegir también dicho dispositivo. Este entorno de desarrollo se obtiene pulsando las teclas Ctrl + Shift + I, o mediante el menú de opciones (tres puntos), opción "Más herramientas" y la opción "Herramientas para desarrolladores". En la parte superior del panel de control, habrá un icono que representa un dispositivo móvil (también se puede pulsar las teclas Ctrl + Shift + M).

Para llevar la app a un dispositivo móvil, previamente hemos de instalar Android Studio (en el caso de un terminal Android) o XCode (en el caso de un terminal iOS). Sin este requerimiento, no se puede compilar y generar los paquetes para dichas plataformas.

El siguiente paso sería agregar la plataforma que deseamos a nuestra aplicación. Para ello, ejecutar los siguientes comandos en la consola del sistema (según corresponda):

$ ionic platform add android
$ ionic platform add ios


Para ejecutar la app en el emulador, ejecutar los siguientes comandos en la consola del sistema (según corresponda):

$ ionic emulate android
$ ionic emulate ios


Si lo que queremos es ejecutar la app directamente en el dispositivo, conectar éste al ordenador y ejecutar los siguientes comandos en la consola del sistema (según corresponda):

$ ionic run android
$ ionic run ios


Enlaces de interés

martes, 4 de octubre de 2016

MAME: una máquina recreativa en tu PC

Recuerdo en mi lejana niñez aquellas vivencias mágicas y sorprendentes en torno a las máquinas recreativas. Ahorraba con ansia algunas monedas de cinco duros (25 pesetas) para controlar aquellos monigotes de luz que surgian de la pantalla: naves, monos, hamburguesas, guerreros, soldados, coches, superhéroes... podías interpretar y controlar casi cualquier personaje y hacer cosas increíbles.

Me vienen a la cabeza títulos como Asteroids, Space Invaders, Galaga, Pacman, Moon Cresta, R-Type, Commando, Green Beret, Tetris, Golden Axe, Altered Beast, Outrun, Ghost'n'Goblins, Bomb Jack, Street Fighter, Double Dragon, Donkey Kong, Metal Slug, 1942... La lista parece interminable, y los recuerdos y experiencias afloran como un incansable manantial.

Podemos revivir todos aquellos juegos gracias al emulador de MAME (Multi Arcade Machine Emulator), el cual está disponible de forma gratuita para Windows, MacOS y Linux, en la siguiente URL: http://www.mame.net


Instalación de MAME


En este artículo explicaré cómo instalar el emulador de MAME en Linux, más concretamente para distribuciones basadas en Ubuntu.

Para ello, abriremos la consola de comandos y ejecutaremos el siguiente comando:

sudo apt-get install mame mame-extra mame-tools mess gnome-video-arcade

Recomiendo también instalar la librería SDL (Simple Directmedia Library, https://wiki.libsdl.org/FrontPage), una librería especial multiplataforma diseñado para proveer una capa para acceso a audio, teclado, joystick y hardware via OpenGL y Direct3D, y es utilizada por emuladores de juegos:

sudo apt-get install libsdl2-dev libsdl-ttf2.0-dev

La interfaz de usuario no es muy atractiva que digamos, por lo que ejecutaremos el siguiente comando:

sudo ln -s /usr/share/games/mame /usr/share/games/xmame

Otra interfaz alternativa es ejecutar directamente Gnome Video Arcade desde la consola:

gnome-video-arcade

La primera vez tardará bastante, pues creará una base de datos con todos los juegos instalados, y analizará cada uno de ellos en búsqueda de problemas.

Cuando instales nuevos juegos, puedes reconstruir la base de datos mediante el siguiente comando:

gnome-video-arcade -b



Nota: Si tienes problemas al instalar los paquetes, posiblemente necesitarás configurar previamente los repositorios:

sudo add-apt-repository ppa:c.falco/mame


Configuración previa


Antes de empezar, hemos de crear el directorio de configuración y generar el archivo de configuración mame.ini mediante estos comandos (atención al punto previo a "mame"):

mkdir $HOME/.mame
cd $HOME/.mame
mame -cc

Si editamos el fichero mame.ini veremos una línea con el parámetro rompath, el cual, por defecto, apunta a las siguientes rutas:

/usr/local/share/games/mame/roms;/usr/share/games/mame/roms

Este parámetro indica al emulador de MAME dónde se encuentran los juegos (o ROMS). Podemos dejar estas rutas, pero prefiero una ruta más fácil de recordar, por lo que la he cambiado por:

rompath        $HOME/mame/roms

Guardo los cambios realizados y creo dicha ruta con los siguientes comandos:

mkdir $HOME/mame
mkdir $HOME/mame/roms

Por último, en el directorio $HOME/.mame deben existir las siguientes carpetas (si no existen, hay que crearlas):
  • cfg
  • comments
  • diff
  • inp
  • memcard
  • nvram
  • roms
  • snap
  • sta

Configurar el joystick o el gamepad

Si vas a utilizar un joystick o un gamepad para disfrutar de tus juegos, será conveniente saber como instalar el joystick en Linux.

El comando lsusb de Linux listará los dispositivos conectados a los puertos USB, para detectar si el joystick o el gamepad está conectado y reconocido.

Con el siguiente comando:

ls -l /dev/input | grep js

Mostrará, de forma secuencial, las conexiones de joystick. Así, el primer joystick será js0, el segundo joystick será js1, y así, sucesivamente.


Si no lo detecta, necesitaremos la herramienta joystick.

En Debian/Ubuntu/Linux Mint:

sudo apt-get install joystick


En Fedora:

su -c 'yum install joystick'

Para que los juegos puedan calibrar el joystick o gamepad, será preciso que configuremos el dispositivo en el directorio correspondiete, para que tenga todos los permisos de escritura y lectura:

sudo chmod 666 /dev/input/js0
sudo chmod 666 /dev/input/js1


Instalar las BIOS de MAME

De fábrica, el emulador de MAME posee un conjunto básico de BIOS, por lo que muchos juegos no funcionarán, y aparecerá un mensaje que vuelve loco a más de uno:

The selected machine is missing one or more required ROM or CHD images. Please select a different machine

Hay que recordar que cada máquina era de un fabricante y tenía su propia BIOS. A veces, había juegos con BIOS específicas y requerían de otros sets.

Podemos conocer la lista de BIOS necesarias en la siguiente URL:

http://www.mamedb.com/category/BIOS

Name Year Manufacturer File Category Score
Acclaim PSX  1995  Acclaim  acpsxBIOS7.51
Arcadia System BIOS  1988  Arcadia Systems  ar_biosBIOS7.50
Atari PSX  1996  Atari  atpsxBIOS3.29
Atlus PSX  1996  Atlus  atluspsxBIOS4.08
Baby Phoenix/GV System  1995  Konami  konamigvBIOS8.00
Crystal System BIOS  2001  BrezzaSoft  crysbiosBIOS7.11
DECO Cassette System  1981  Data East Corporation  decocassBIOS7.00
Hyper NeoGeo 64 Bios  1997  SNK  hng64BIOS6.95
Max-A-Flex  1984  Exidy  maxaflexBIOS7.60
Mega Play BIOS  1993  Sega  megaplayBIOS6.62
Mega-Tech  1989  Sega  megatechBIOS6.57
Multi Amenity Cassette System BIOS  1995  I'Max  macsbiosBIOS8.00
Neo-Geo  1990  SNK  neogeoBIOS6.83
Nintendo Super System BIOS  1969  Nintendo  nssBIOS7.45
PGM (Polygame Master) System BIOS  1997  IGS  pgmBIOS7.57
PlayChoice-10 BIOS  1986  Nintendo of America  playch10BIOS6.50
PS Arcade 95  1997  Eighting / Raizing  psarc95BIOS7.00
ST-V Bios  1996  Sega  stvbiosBIOS7.26
Super Kaneko Nova System BIOS  1996  Kaneko  sknsBIOS7.75
System GX  1994  Konami  konamigxBIOS5.00

Name Year Manufacturer File Category Score
Taito FX1  1995  Taito  taitofx1BIOS7.36
Taito GNET  1997  Taito  taitognBIOS8.20
TPS  1997  Tecmo  tpsBIOS6.45
ZN1  1995  Capcom  cpzn1BIOS7.90
ZN2  1997  Capcom  cpzn2BIOS9.00

Y descargar las BIOS buscando entre las ROMS de Emuparadise:

http://www.emuparadise.me/M.A.M.E._-_Multiple_Arcade_Machine_Emulator_ROMs/7

También podemos buscar las BIOS necesarias y descargarlas individualmente (vienen empaquetadas y comprimidas en archivos ZIP):

http://www.emulab.it/test/index-bios.php?t=1&order=2&dir=ASC

También lo puedes encontrar aquí:

http://www.emuline.org/topic/692-all-bios-mame

Pero es recomendable buscar una BIOS pack, en el que tendrás todas las BIOS en un único archivo comprimido. En esta URL puedes descargarte la BIOS pack:

http://www.planetemu.net/roms/mame-bios-pack

Una vez descargado, hay que descomprimir el archivo. Aparecerán todas las BIOS estándar disponibles, cada una en un fichero ZIP.

El siguiente paso será copiar todos esos archivos al directorio configurado para las ROMs (en mi caso en $HOME/mame/roms).

IMPORTANTE: Para asegurar el máximo éxito en la ejecución de los juegos, asegúrate que las BIOS son las más actuales. La versión de la BIOS pack debería coincidir con la última versión (o la más aproximada) a la versión del emulador de MAME (ver en la página oficial de MAME). La última versión en Septiembre de 2016 es la v0.178).


Descargar e instalar los juegos

Ahora viene la parte interesante: los juegos.

Los juegos para las máquinas recreativas estaban encapsulados en chips de memoria no volátil, es decir, que ya estaban grabados y eran imborrables y no reutilizables. Estos chips eran memorias de sólo acceso, o ROMs. Hay multitud de sitios en los cuales descargar juegos para la MAME. He aquí algunos de ellos:

Emuparadise: http://www.emuparadise.me/M.A.M.E._-_Multiple_Arcade_Machine_Emulator_ROMs/7
Free ROMS: http://www.freeroms.com/mame.htm
Cool ROM: http://coolrom.com/roms/mame
ROM World: http://www.rom-world.com/dl.php?name=MAME
Planet Emu: http://www.planetemu.net/roms/mame-roms

Particularmente, prefiero Emuparadise. Además de tener una colección muy completa, posee una gran información sobre cada ROM, en donde podemos conocer qué BIOS pack mínima es necesaria y qué otras BIOS o CHDs son necesarios para que el juego funcione.

Por ejemplo, si buscamos el juego Ghost'n Goblins (seleccionando la letra 'G' en la parte superior),  al bajar hasta la sección "Direct Download Links", además de tener el enlace a la ROM, debajo de éste encontraremos que necesita de una ROM "padre" (o parent ROM) llamada "Ghost'n Goblins (World? set 1)". Sin esta ROM, el juego no funcionará, con el consabido mensaje.


Archivos CHD


Los juegos arcade más modernos, a partir de los años 90, necesitaban muchos más datos para funcionar, y para ello, utilizaban unidades de disco duro, disco láser o CD ROMs. En MAME, Estos juegos necesitan estas unidades comprimidas en archivos CHD, como el Street Figher III.

Para instalar un archivo CHD y poder disfrutar de tu juego, además de la ROM zipeada e instalada en tu directorio ROMS, necesitarás el archivo CHD. Este archivo suele estar zipeado, pero tendrás de descomprimirlo y obtener así el archivo CHD. Una vez obtenido, tendrás que copiarlo en una carpeta con el mismo nombre que el juego, la cual debe estar dentro del directorio ROMS. Así, por ejemplo, en el juego de Street Fighter III, la ROM principal se llama sfiii y el archivo es sfiii.zip. Este archivo se copia a la carpeta ROMS. Este juego posee dos archivos CHD (sf3000.chd y cap-sf-3.chd). Ambos archivos se deben copiar a la carpeta sfiii dentro de la carpeta ROMS.

En Emuparadise, las ROMs de los juegos suelen incluir también los enlaces a sus archivos CHD correspondientes. No obstante, en DOPEROMS podrás encontrar los CHDs que puedas necesitar. El enlace es el siguiente: http://www.doperoms.com/roms/Mame_Chd/S.html


¿Por qué no funcionan algunas ROMS de MAME?


Tranquilo, no eres el único al que le pasa. Intentas lanzar un juego y MAME te dice que faltan algunos ficheros, que el juego no funciona al 100%, que falta alguna ROM...

Intentaré explicar por qué pasa.

Una de las razones es por el cambio de releases de MAME. Si te fijas en Emuparadise, el enlace de descarga de cada ROM viene acompañada de la release o versión de MAME a partir de la cual funciona.

Algunos juegos requieren de su propia BIOS. Esto lo encontrarás en juegos de Neo-Geo, Playchoice-10, Convertible Video System, Deco Cassette, MegaTech, MegaPlay, ST-V Titan u otros. De las BIOS ya hablamos al principio, y se instalan como si fueran ROMs de juegos.

Otra razón es que algunos juegos requieren de CHDs. Como se comentó anteriormente, un CHD es un dispositivo de almacenamiento adicional (disco duro, CDROM, Laser Disc) que necesita el juego. El contenido de este dispositivo es comprimido en un archivo especial llamado CHD, y debe incluirse en el directorio de juego correspodiente.

Algunos juegos son clones de juegos originales, o bien versiones alternativas de dichos juegos. Estos juegos se solapan y modifican propiedades tales como fechas de copyright, bootlegs, etc.  Para conocer los juegos clonados, puedes ejecutar desde la consola el comando mame -listclones

De un juego pueden aparecer multitud de versiones. Tanto las versiones como algunos juegos clonados necesitan de una ROM padre (parent ROM), la cual debe estar alojada en el directorio ROMS para que puedan funcionar.

Podemos comprobar si una ROM es correcta mediante el siguiente comando:

mame -verifyroms

Por ejemplo, para verificar el juego Combat School, utilizaremos:

mame -verifyroms combatsc

Si encontrase algún problema, informaría sobre el mismo, indicando qué archivo/s está/n generando dicho problema.


Consejos para descargar ROMs

EmuParadise es una gran base de datos que incluye ROMs de diversas máquinas, en diferentes idiomas y las diferentes versiones que éstas lanzaron. He aquí algunos consejos para no volvernos locos:

1) Evitar aquellas ROMs que no vienen acompañadas de una screenshot (pantallazo)
2) Evitar aquellas ROMs que son de máquinas lúdicas, propias de casinos o casas de apuestas. Las reconocderás rápidamente por que, además de venir sin screenshot, en el nombre, entre paréntesis, indican que máquina es. He aquí algunas de ellas: Scorpion, Bellfruit, Maygay, Ace, Empire, Mazooma. Casino, Barcrest, Mdm, Vivid. JPM, SYSTEM5, Bwb, Crystal, Impulse, EPOCH...
3) Evitar aquellas ROMs que sean de máquinas de Pinball. Se reconocen rápidamente porque en la Screenshot aparecerá el texto Pinball.
4) ROMs que funcionan en un alto porcentaje: las de NeoGeo y Deco Cassete (no olvidar tener estas BIOS instaladas), las de Taito
5) Entre varias ROMs, buscar la versión más alta o bien la ROM padre
6) Fijarse bien si necesita de otras ROMs o de CHDs. En tal caso, descargar también éstas
7) Hay muchos clones de juegos originales. Desde luego, si utilizas solamente el original, te evitarás tener varios juegos clonados, a no ser que el clon sea algo diferente del original y te guste.
8) Entre varios lenguajes, te recomiendo descargar la inglesa (US o USA) o la internacional (World)
9) Los ROMs de tipo "bootleg" son ediciones no autorizadas que se hacen pasar como originales. Por tanto, puedes ahorrarte esta descarga

jueves, 21 de enero de 2016

5 consejos para combatir el Síndrome de Infórgenes


Resulta anecdótico que el mundo que creamos con la tecnología termine adoptando símiles de la vida real o de nuestra cultura: virus, troyanos, zombies, etc.

Quisiera hablar en este artículo sobre algo que he denominado el "Síndrome de Infórgenes" (por buscar una similitud con el síndrome de Diógenes), el cual afecta a más del 75% de la sociedad y de las empresas de todo el mundo, y que se caracteriza por la acumulación constante e innecesaria de información basura.

Durante las dos últimas décadas hemos vivido una explosión descomunal de la información, gracias a internet y a una creciente y económica tecnología. ¿El resultado? Toneladas de información que se almacenan con poca o sin ninguna utilidad. Es decir, generamos, recogemos y almacenamos basura informativa.


Invito a cualquier lector a hacer una revisión de su disco duro, de sus pendrives, de su correo electrónico, de sus aplicaciones en la nube (Evernote, Pocket, Dropbox, Instagram...). Invito a cualquier empresa a revisar la información que almacena en sus servidores y en sus equipos de escritorio: ¿cuánto tiempo ha pasado desde la última vez que utilizaron dicha información? ¿Qué valor o utilidad reales tiene realmente dicha información? El hecho de que hayamos sustituido nuestros viejos archivadores físicos por pequeñas unidades de almacenamiento o invisibles repositorios en la nube, nos crea la ilusión de que apenas consumimos espacio de información. La ilusión del reducido espacio físico, unido a la ingente capacidad de estos medios de almacenamiento, nos lleva a creer que no estamos malgastando nada. Pero a la hora de buscar algo necesario, todo lo que no es necesario nos hará difícil esta labor, lo que al final se traduce en malgastar tiempo, esfuerzo y dinero. Es como vivir en una habitación en la cual vamos acumulando, día tras día, objetos y enseres que se apilan y se olvidan.  Al final, lastramos nuestra propia vida con esos objetos que no son útiles o que no son aprovechados correctamente.

La información nos puede esclavizar y perjudicar si no hacemos un uso útil y óptimo de la misma.

Mis consejos para lidiar, en términos generales, con el Síndrome de Infórgenes son los siguientes:
  1. Antes de guardar información, evaluar si esa información será útil en el futuro.  Esta sencilla decisión evitará acumular mucha información innecesariamente. Hay que discernir entre lo que es interesante de lo que es importante, entre lo que es posible de lo que es realmente.
  2. Clasificar y organizar bien toda la información. Esto facilitará encontrar rápida y eficientemente la información que queremos y evitará el estrés de bucear perdidos en un mar de información. 
  3. Compartir información en un repositorio común. En el caso de una organización, comunidad o empresa, nos permite tener un punto único para la información. Compartimos información, accedemos a información de otros y además, nos ayuda a identificar la redundancia de información, evitando repetir el trabajo innecesariamente.
  4. Revisión y limpieza periódicas de la información. Si hay información que no has usado durante mucho tiempo, y que es poco probable que vuelvas a necesitar, elimínala. Si hay información que no tiene utilidad real para ti o para los demás, elimínala. Si no quieres deshacerte de ella, muévela a un repositorio de respaldo (backup), pero quítala de tus sistemas habituales. Si guardas documentos de hace más de uno o dos años, es muy posible que en ese momento te fueron útiles, pero desde entonces no los has necesitado, pero tienes la duda de si en el futuro podrían ser necesarios. Cópialos en un NAS, en un servidor de almacenamiento, en un disco duro externo, en un repositorio en la nube... pero en tu sistema de trabajo quítalos para trabajar día a dia con lo que realmente necesitas en cada momento. No vivas con la preocupación constante de que no los quieres perder. Los tendrás siempre disponibles en caso de que sean necesarios, pero tu espacio de trabajo, en el día a día, estará liberado de información poco útil en ese momento, a favor de la información que realmente necesitas ahora.
  5. En el caso de una empresa, recomiendo un tener plan y un sistema para hacer resúmenes o registrar estados de la información importante a partir del detalle de la información. Un buen ejemplo es generar informes diarios, semanales, mensuales, trimestrales y anuales a partir de toda la información de la empresa. Esta información resumida es la realmente importante para tomar decisiones operativas, estructurales, organizativas y estratégicas. Ocupa muy poco y contiene la esencia de la acividad y el estado de la empresa en el mismo momento en que se genera (foto), contemplando también la evolución y la tendencia usando un histórico. El detalle de la información sobre la que se ha construido, se puede mover a un repositorio para consultas puntuales, y así liberar los sistemas de trabajo del día a día. Para llevar a cabo esta propuesta, es muy útil un sistema de Business Intelligence, el cual, aunque pueda parecer un gasto importante, con el tiempo es una inversión muy amortizable y beneficiosa, no sólo en dinero, si no también en esfuerzo, tiempo y recursos.
Imagen: WikiCommons: https://commons.wikimedia.org/wiki/File:Monta%C3%B1a_de_basura_junto_al_lago_Managua.jpg
Montaña de Basura junto al lago Managua