Artículos de la fecha Julio 2008 ↓

Wormux

Logo de Wormux Esta semana parece que es la de los juegos. Aquí tenemos una versión del conocido Worms en versión libre (GPL) y con Tux como protagonista, de ahí el nombre. El juego es simple hay 2 equipos y uno debe destruir al otro turno a turno usando diferentes armas. Los gráficos son de lo más variopintos pero realizan su cometido. Soporta juego en red lo cual hace que sea más divertido y adictivo. Está portado para diferentes plataformas, desde Mac OS X, pasando por diferentes versiones de Unix hasta Windows.

Versión: 0.8.2 (20-Octubre-2008)

La página oficial: http://www.wormux.org/wiki/es/index.php

Captura de Wormux

Captura de Wormux

Captura de Wormux

Más capturas: Aquí

Sipcalc

Calculadora de subredes que funciona en consola, NO tiene entorno gráfico. Calcula todo tipo de redes y da información detallada.

Podemos compilar el source o mejor aún podemos instalar el port de MacPorts, por tanto requiere tener instalado MacPorts para esta segunda opción.

Página oficial: http://www.routemeister.net/projects/sipcalc/

Para instalar la aplicación:

$ sudo port install sipcalc

Ejemplo:

$ sipcalc 10.20.30.33/26
-[ipv4 : 10.20.30.33/26] - 0

[CIDR]
Host address            - 10.20.30.33
Host address (decimal)  - 169090593
Host address (hex)      - A141E21
Network address         - 10.20.30.0
Network mask            - 255.255.255.192
Network mask (bits)     - 26
Network mask (hex)      - FFFFFFC0
Broadcast address       - 10.20.30.63
Cisco wildcard          - 0.0.0.63
Addresses in network    - 64
Network range           - 10.20.30.0 - 10.20.30.63
Usable range            - 10.20.30.1 - 10.20.30.62

-

Ayuda y parámetros:

Usage: sipcalc [OPTIONS]... <[ADDRESS]... [INTERFACE]... | [-]>

Global options:
  -a, --all                     All possible information.
  -d, --resolve                 Enable name resolution.
  -h, --help                    Display this help.
  -I, --addr-int=INT            Added an interface.
  -n, --subnets=NUM             Display NUM extra subnets (starting from
                                the current subnet). Will display all subnets
                                in the current /24 if NUM is 0.
  -u, --split-verbose           Verbose split.
  -v, --version                 Version information.
  -4, --addr-ipv4=ADDR          Add an ipv4 address.
  -6, --addr-ipv6=ADDR          Add an ipv6 address.

IPv4 options:
  -b, --cidr-bitmap             CIDR bitmap.
  -c, --classfull-addr          Classfull address information.
  -i, --cidr-addr               CIDR address information. (default)
  -s, --v4split=MASK            Split the current network into subnets
                                of MASK size.
  -w, --wildcard                Display information for a wildcard
                                (inverse mask).
  -x, --classfull-bitmap        Classfull bitmap.

IPv6 options:
  -e, --v4inv6                  IPv4 compatible IPv6 information.
  -r, --v6rev                   IPv6 reverse DNS output.
  -S, --v6split=MASK            Split the current network into subnets
                                of MASK size.
  -t, --v6-standard             Standard IPv6. (default)

Address must be in the "standard" dotted quad format.
Netmask can be given in three different ways:
 - Number of bits    [/nn]
 - Dotted quad       [nnn.nnn.nnn.nnn]
 - Hex               [0xnnnnnnnn | nnnnnnnn]

Interface must be a valid network interface on the system.
If this options is used an attempt will be made to gain the address
and netmask from the specified interface.

Replacing address/interface with '-' will use stdin for reading further arguments.

Atajos de teclado en OSX

Recopilación de atajos de teclado de OSX, agrupados:

Ventana del Finder

  • Comando-W … Cierra la ventana
  • Opción-Comando-W… Cierra todas las ventana
  • Opción + click botón cerrar … Cierra todas las ventanas abiertas
  • Opción + click botón minimizar… Minimiza todas las ventanas abiertas
  • Opción + click botón zoom Amplía la ventana hasta llenar la pantalla
  • Opción + click una ventana… Oculta el programa anterior
  • Opción + click icono del Dock
  • Comando + arrastrar ventana… Mueve una ventana sin activarla
  • Comando + pulsar título ventana… Opta a una carpeta que contiene la carpeta en uso
  • Comando-Flecha Derecha… Descubre la carpeta (vista lista)
  • Opción-Comando-Flecha Derecha… Descubre la carpeta y subcarpetas (vista lista)
  • Comando-Flecha Izquierda… Contrae la carpeta (vista lista)
  • Opción-Comando-Flecha Arriba… Abre la carpeta origen y cierra la actual en uso

Clicks de ratón y combinación de teclas para el Dock

  • Click … Lanza o abre el item. Vuelve en sí fuera del Dock la ventana minimizada
  • Control-click… Descubre el menú contextual para el ítem.Usado sobre un separador del Dock descubre sus preferencias
  • Comando-click… Descubre el ítem original en el Finder
  • Control-Opción-click… Forzar salida sustituye a Salir en el menú contextual
  • Comando-Opción-click … Oculta todos los otros items abiertos
  • Pulsar … Descubre el menú contextual del item
  • Opción-pulsar… Forzar salida sustituye a Salir en el menú, añadiendo a la acción de presionar
  • Mayúsculas-click … Sólo aplicado para minimizar ventanas. El ítem es minimizado lentamente. Puedes verlo si presionas Mayúsculas mientras minimiza.
  • Mayúsculas-arrastrar… Usado sobre un separador del Dock, cambia el Dock de posición (izquierda, abajo, derecha)
  • Opción-arrastrar … Usado sobre un separador del Dock,dimensiona los iconos a su tamaño común (128×128, 64×64, 32×32, 16×16)
  • Comando-Tabulador … Ciclo adelante por las aplicaciones abiertas (Conmutador de Aplicaciones). Presiona Comando continuamente, mientras presionas y sueltas Mayúsculas y Tabulador
  • Comando-Mayúsculas-Tabulador… Ciclo atrás por las aplicaciones abiertas (Conmutador de Aplicaciones). Presiona Comando continuamente, mientras presionas y sueltas Mayúsculas y Tabulador
  • Comando-H… Oculta una aplicación que has seleccionado via Conmutador de Aplicaciones. Comando debe ser presionado continuamente desde el instante en que tu elección es hecha, hasta presionar H. Después de ocultar la aplicación selecciona otra con el Conmutador o volverá a primer plano cuando sueltes Comando
  • Comando-Q … Sale de una aplicación, debe ser usado con el Conmutador de Aplicaciones
  • Comando-Opción-D… Oculta o muestra el Dock

Comandos de Menú

  • Menú Apple
    • Mayúsculas-Comando-Q … Cierra la sesión
    • Mayúsculas-Opción-Comando-Q … Cierra la sesión inmediatamente
  • Menú Finder
    • Mayúsculas-Comando-Borrar… Vacia la Papelera
    • Opción-Mayúsculas-Comando-Borrar … Vacia la Papelera sin diálogo
    • Comando-H Oculta el Finder
    • Opción-Comando-H… Oculta otras aplicaciones
  • Menú Archivo
    • Comando-N … Nueva ventana Finder
    • Mayúsculas-Comando-N … Nueva carpeta
    • Comando-O … Abre
    • Comando-S … Guarda
    • Mayúsculas-Comando-S … Guarda como
    • Comando-P … Imprime
    • Comando-W … Cierra la ventana
    • Opción-Comando-W … Cierra todas las ventanas
    • Comando-I … Muestra Información
    • Opción-Comando-I … Muestra el Inspector de Información
    • Comando-D … Duplica
    • Comando-L … Crea un Alias
    • Comando-R … Muestra el original
    • Comando-T … Añade a Favoritos
    • Comando-Borrar … Traslada a la Papelera
    • Comando-E … Expulsa
    • Comando-F … Busca
  • Menú Edición
    • Comando-Z … Deshace
    • Comando-X … Corta
    • Comando-C … Copia
    • Comando-V … Pega
    • Comando-A … Selecciona todo
  • Menú Ver
    • Comando-1… Vista como Iconos
    • Comando-2… Viista como Lista
    • Comando-3… Vista como Columnas
    • Comando-B… Ocultar
    • Comando-J … Muestra las Opciones de Vista
  • Menú Ir
    • Comando - [… Vuelve
    • Comando - ] … Adelanta
    • Mayúsculas-Comando-C… Ordenador
    • Mayúsculas-Comando-H… Inicio
    • Mayúsculas-Comando-I … iDisk
    • Mayúsculas-Comando-A… Aplicaciones
    • Mayúsculas-Comando-F… Favoritos
    • Mayúsculas-Comando-G… Ir a la carpeta
    • Comando-K… Conecta al Servidor
  • Menú Ventana
    • Comando-M… Minimiza la ventana
    • Opción-Comando-M… Minimiza todas las ventanas
  • Menú Ayuda
    • Comando-?… Abre la Ayuda Mac

Acceso Universal

  • Opción-Comando- * (asterisco) … Habilita el Zoom
  • Opción-Comando- + (más) … Acerca la vista
  • Opción-Comando- - (menos) … Aleja la vista
  • Control-Opción-Comando- * (asterisco) … Alterna entre Blanco y Negro
  • Control-F1 … Habilita el Acceso Total de Teclado. Siendo el Acceso Total de Teclado habilitado, puedes usar la combinación de teclas mostrada debajo desde el Finder Acceso Total de Teclado
  • Control-F2… Realza el Menú Apple
  • Control-F3 … Realza el Dock
  • Control-F4… Realza la ventana (activa) o la ventana colocada inmediatamente detrás
  • Control-F5… Realza la Barra de Herramientas
  • Control-F6… Realza una paleta de herramientas y las paletas subyacentes por orden de activación
  • Control-F7 … Accede a todos los controles del cuadro de diálogo actual al seleccionar la opción de realzar sólo los campos de texto y las listas

Otros Comandos:

  • Opción-Comando-D… Muestra / Oculta el Dock
  • Comando-Tabulador… Cambia de aplicación
  • Tabulador… Realza el siguiente ítem dentro de la misma ventana
  • Comando-Flecha Arriba … Adelanta un directorio
  • Comando-Flecha Abajo … Atrasa un directorio
  • Opción-Arrastrar … Copia a una nueva localización
  • Opción-Comando-Arrastrar… Crea un Alias en una nueva localización
  • Comando-Arrastrar … Mueve a una nueva localización sin copiar
  • Mayúsculas-Comando-C … Muestra la paleta Colores de la aplicación
  • Comando-T… Muestra la paleta de Tipos de la aplicación
  • Comando-Mayúsculas-3… Toma una imagen de la pantalla
  • Comando-Mayúsculas-4 … Toma una imagen de la selección
  • Comando-Mayúsculas-4, entonces barra Espaciadora … Toma una imagen de la ventana seleccionada
  • Control-Comando-Mayúsculas-3… Copia la pantalla capturada al Portapapeles en vez de salvarla como un archivo
  • Control-Comando-Mayúsculas-4 … Copia la selección capturada al Portapapeles en vez de salvarla como un archivo
  • Opción-Comando-Escape… Fuerza la salida
  • Control-Expulsar … Cuadro de diálogo Reiniciar, Reposo, Apagar
  • Control-Comando-Expulsar … Sale de todas las aplicaciones y reinicia
  • Opción-Comando-Expulsar u Opción-Comando-Encendido … Reposo
  • Control-Opción-Comando-Expulsar … Sale de todas las aplicaciones y apaga
  • Control-Shift-Expulsar … Apaga la pantalla
  • Comando-click botón barra herramientas (arriba esquina derecha) …Ciclo por vistas disponibles para la barra de herramientas de la ventana (dependiendo de la clase de Finder o ventana de aplicación)

OSX: arranque en secure mode

El secure mode es un modo en el que es a la vez muy potente y peligroso ya que tenemos acceso TOTAL a todo el sistema como root y sin que sepamos la contraseña ni de un usuario ni la del propio root. Por lo tanto es conveniente que por una parte no dejemos a nadie desconocido nuestro MAC ni hagamos cosas sin saber en este modo porque podemos corromper nuestro sistema y dejarlo inservible.

Para entrar en este modo hacemos lo siquiente:

  1. Encendemos o reinciamos el MAC
  2. En cuanto arranque pulsamos y mantenemos pulsadas las tecla command+s (manzana+s o ⌘+s)
  3. Veremos como arranca en modo texto y terminará mostrandonos el prompt #

Una vez que estemos en el modo seguro (o más bien diría yo inseguro si no sabes lo que haces) podemos hacer cosas interesantes (sin las comillas):

  • “/sbin/fsck -y” esto hace un chequeo del disco de sistema de arranque. -y hace que no nos pregunte nada y asume YES (SI) a todas las preguntas.
  • /sbin/mount -wu /” por defecto el sistema está en modo solo lectura y con esto pasamos a modo lectura/escritura con lo cual podemos modificar ficheros.
  • passwd usuario” cambiamos la contraseña de un usuario del sistema incluida la de root (en alguna ocasión podemos necesitar pasarnos a root, usando su -, aunque es aconsejable usar el comando sudo).
  • /sbin/SystemStarter” esto inicializa los servicios de red, que es necesario para obtener acceso a NetInfo.
  • En caso de que tengamos problemas con el login o simplemente la ventana de login no aparezca, es muy probable que nuestro directorio NETINFO esté corrupto, podemos borrar y que el sistema cree uno nuevo. ATENCIÓN: esto borra todos los datos del usuario y hay que crearlos desde cero, también necesitamos que root tenga una contraseña y conocerla claro:
    • 10.4
      rm -Rf /var/db/netinfo
    • 10.5
      rm -Rf /var/db/dslocal
      rm /var/db/.AppleSetupDone

Para salir del secure mode podemos usar una de estas tres opciones:

  1. exit - Continua el proceso de arranque. En caso de que hayamos hecho modificaciones importantres y/o ejecutado SystemStarter o arrando algún demonio es más seguro reiniciar.
  2. reboot - Reinicia el ordenador.
  3. shutdown -h now - Apaga el ordenador.

SUDO y /etc/sudoers

El comando SUDO nos permite ejecutar scripts, aplicaciones como root u otro usuario sin saber la contraseña de estos usando la de nuestro usuario pudiendo configurar infinidad de opciones para tener un mayor control de la seguridad de nuestro sistema.

La configuración está en el fichero /etc/sudoers (Linux) o /private/etc/sudoers (OSX) y debe ser editado (realmente se puede usar cualquier editor pero es recomendable hacerlo) con el comando visudo, que a parte de ejecutar nuestro editor favorito (usando la variable de entorno EDITOR) para editar el fichero antes de salir hace una comprobación del fichero, por si hubiera algún error.

En este artículo solo expongo algunas nociones y apuntes muy resumidos de lo que se puede hacer para ver en profundidad todo lo que se puede hacer lo mejor es ir a la página del manual, man sudoers desde consola o aquí.

Estructura del fichero sudoers

1. Definiciones de alias

Aquí lo que hacemos es definir un alias, que es básicamente una abreviación o agrupación de otros nombres o alias. Su formato es:

Alias_Type NAME = item1, item2, ...

Alias_Type -> puede ser:

  • Cmnd_Alias para comandos por ejemplo:
    Cmnd_Alias ADMIN = /usr/bin/apt-get, /usr/bin/dpkg
  • User_Alias para usuarios
    User_Alias COLEGAS = Eduardo, Alex
  • Runas_Alias para usuarios privilegiados
    Runas_Alias ADMINS = root, operator
  • Host_Alias para hosts
    Host_Alias REDES = 128.138.0.0/255.255.0.0, 129.32.2.0/24

NAME -> Es el nombre del alias. Debe empezar por letra mayúscula y sólo se permiten letras mayúsculas y números.
itemx puede ser un elemento o un alias el cual será expandido.

NOTA: Existe un alias especial, ALL, que se utiliza para englobar a todos los comandos, usuarios, hosts.

2. Ajuste de opciones

Aquí es donde definimos los valores por defecto de cada usuario para que tenga unas opciones diferentes o específicas. La sintaxis es la siguiente:

Defaults             lista_opciones
Defaults:usuario     lista_opciones
Defaults@host        lista_opciones

La lista_opciones es una lista de opciones separadas por comas. Existen cuatro tipos de opciones:

  1. Booleanos: Que se activan con sólo escribir el nombre de la opción y se desactivan con el símbolo ! delante.
  2. Enteros: De la forma nombre_opcion = valor
  3. Strings: Igual que los enteros nombre_opcion = “valor”
  4. Listas: Que pueden ser de la forma nombre_opcion = “valor1 valor2″. Éstas opciones también pueden utilizar += y -= en lugar de = para añadir elementos y quitar elementos respectivamente.

NOTA: para ver la lista completa de opciones y su descripción aquí.

3. Reglas de acceso

Aquí es donde definimos que usuario puede ejecutar qué comando bajo que usuario (por defecto root) y en que host lo pueden hacer (por defecto localmente). El formato es (lo que va entre [ ] es opcional):

usuario    host = [(usuario_privilegiado)] [NOPASSWD:] comando

Como se puede ver es bastante simple, pero aquí va una breve explicación:
usuario es el usuario al que vamos a permitir ejecutar algo con privilegios.
host es en que máquina puede ejecutar, por defecto (y comodidad) se suele poner ALL.
NOPASSWD: sirve para que SOLO en este comando NO pida nuestra contraseña para validar y ejecutar el comando.
comando, es lo que queremos ejecutar con privilegios, y debe tener el path completo.

4. Ejemplos

#
# Aliases
#

# Comandos para instalar paquetes en Debian
Cmnd_Alias APT = /usr/bin/apt-get, /usr/bin/dpkg

# Usuarios que pueden instalar paquetes
User_Alias ADMIN = paco, felix

# Usuarios privilegiados
Runas_Alias OP = root, operator

#
# Reglas de acceso
# 

# Sólo pueden instalar paquetes los usuarios de ADMIN
# (por defecto, como root). No necesitan contraseña.
ADMIN           ALL = NOPASSWD: APT

# El usuario edu puede des/montar como si fuese root
edu             ALL = (OP) /sbin/mount

# El root puede hacer lo que quiera.
root            ALL = (ALL) ALL

CCNA: Curricula 4.0 - 640-802

La nueva currícula de Cisco CCNA 4.0 (640-802) ha sido una gran renovación en todos los sentidos, para empezar se han creado 2 currículas: Discovery y Exploration, la primera más sencilla y orientada a personas no técnicas, la segunda más extendida orientada a gente más técnica. Ambas incluyen el mismo temario.
Cambios importantes:

  • Se eliminan temas desactualizados como IGRP que aunque en la versión anterior era opcional, Cisco no soportaba este protocolo debido a la existencia de EIGRP. Tampoco se aborda RDSI.
  • Se añaden temas actuales como temas básicos en seguridad, redes inalámbricas y calidad de servicio (QoS).
  • Los temas están diseñados ahora por expertos en educación lo que dá más categoría, asesorados por expertos en comunicaciones.
  • Mejor distribución de los temas en los 4 semestres (libros) por ejemplo en el currículo actual, el semestre 2 es estrictamente enrutamiento, básico y avanzado, y el 3er semestre es estrictamente conmutación incluyendo en éste la configuración de redes inalámbricas, como en la versión anterior que estaba mezclado.
  • CCNA Exploration viene repleto de actividades interactivas y retos de configuración desde el primer semestre.

Los 4 semestres y libros:

  1. Network Fundamentals
  2. Routing Protocols and Concepts
  3. LAN Switching and Wireless
  4. Accessing the WAN

VIM: Formateando texto

Teclas Acción
:[linea1,linea2]center ancho Centra las líneas entre linea1 y linea2 (o el bloque marcado visualmente) en un ancho de ancho columnas.
:[linea1,linea2]left margen Alinea a la izquierda las líneas entre linea1 y linea2 (o el bloque marcado visualmente) dejando un margen de margen columnas.
:[linea1,linea2]right ancho Alinea a la derecha las líneas entre linea1 y linea2 (o el bloque marcado visualmente) usando el ancho columnas total.
:set autoindent
:set ai
Auto Tabula las líneas, especialmente útil para escribir script y código.
:set smartindent
:set si.
Auto Tabula de forma inteligente las líneas, especialmente útil para escribir scripts y código.
= Indenta la línea actual.
=i{ o =i} o =iB Tabula el bloque de código entre { y } pero no estos caracteres.
=a{ o =a} o =aB Tabula el bloque de código entre { y } incluyendo estos caracteres.
=i( o =i) o =ib Tabula el bloque de código entre ( y ) pero no estos caracteres.
=a( o =a) o =ab Tabula el bloque de código entre ( y ) incluyendo estos caracteres.
=i< o =i> Tabula el bloque de código entre < y > pero no estos caracteres.
=a< o =a> Tabula el bloque de código entre < y > incluyendo estos caracteres.
=i[ o =i] Tabula el bloque de código entre [ y ] pero no estos caracteres.
=a[ o =a] Tabula el bloque de código entre [ y ] incluyendo estos caracteres.
NOTA: después del = se puede poner un número indicando cuantos bloques anidamos hay y los tabula en concordancia.
:set paste Todo lo que se escriba o pegue no se tabula evitando así el efecto escalera al pegar bloques de texto.
:set nopaste Todo lo que se escriba o pegue se tabula (si está activado), se puede producir el efecto escalera al pegar bloques de texto.

Trucos:

Teclas Acción
yypVr= Crea una línea tipo título (subrayar) debajo de la actual con el carácter ‘=’ (se puede sustituir por # o * o cualquier carácter).
yy : copia la línea actual en el buffer
p : pega la línea copiada en el buffer
V : Selecciona la línea pegada
r : Reemplaza los caracteres seleccionados por el carácter seguido de la ‘r‘ (en este caso ‘=’)
gg=G Reformatea autotabulando todo el texto desde la primera hasta la última línea, perfecto para indentar código no tabulado.
gg : Va a la primera línea del fichero
= : reformatea líneas, es decir, tabula de acuerdo a la configuración de formateo
G : Va hasta la última linea (le dice al VIM cuando parar).

VIM: buscando y reemplazando

Teclas Acción
/quebuscar Busca hacia adelante “quebuscar”.
?quebuscar Busca hacia atrás “quebuscar”.
// Repite la busqueda hacia adelante.
?? Repite la busqueda hacia atrás.
NOTA: Si se activa set incsearch se busca mientras se teclea.
* Busca la palabra (completa) bajo el cursor hacia adelante.
# Busca la palabra (completa) bajo el cursor hacia atrás.
g* Busca la palabra (completa o no) bajo el cursor hacia adelante. Si la palabra es juan, encontrará juan, juanito, etc.
g# Busca la palabra (completa o no) bajo el cursor hacia atrás. Si la palabra es juan, encontrará juan, juanito, etc.
:%s/busca/reemplaza/gc Busca ‘busca‘ y lo reemplaza por ‘reemplaza‘. g significa todas las ocurrencias que haya y c significa preguntar antes de reemplazar.

VIM: moviendose por el fichero

Teclas Acción
h Cursor a la izquierda
l Cursor a la derecha
j Cursor arriba
k Cursor abajo
( Cursor al principio de la frase
) Cursor al final de la frase
{ Cursor al principio del párrafo
} Cursor al final del párrafo
g, Cursor donde se hizo el cambio anterior (hacia arriba).
) Cursor donde se hizo el cambio anterior (hacia abajo).
w Cursor al principio de la siguiente palabra.
b Cursor al principio de la palabra anterior.
e Cursor al final de la palabra.
% Cursor al siguiente bloque del grupo (por ejemplo #if-#else-#endif).
[{ Cursor al principio del bloque.
]} Cursor al final del bloque.
[/ Cursor al principio del bloque de comentario (/* */, //, #).
]/ Cursor al final del bloque de comentario (/* */, //, #).
gd Cursor donde está definida la variable dentro del mismo bloque (hay que estar encima de la variable).
gD Cursor donde está definida la variable desde el principio del fichero (hay que estar encima de la variable)
:bnext
:bn
ctrl+cursor derecha
Salta al siguiente buffer (para que funcione con control se ha de usar: map <C-right> <ESC>:bn<CR>).
:bprevious
:bp
ctrl+cursor izquierda
Salta al buffer anterior (para que funcione con control se ha de usar: map <C-leftt> <ESC>:bp<CR>)

Hexaddict

Logo de Hexaddict Siempre me han gustado los juegos de lógica y puedo decir que soy un adicto a ellos aunque también he de decir que los juegos me cansan enseguida.
Aquí tenemos una versión del “buscaminas” un poco más complicada ya que las formas en vez de ser cuadrados sin hexágonos con lo que hay más posibilidades de minas alrededor. También además del típico modo de buscar TODAS las minas hay un modo que es llegar hasta la meta (bandera verde) sin tener que encontrar todas las minas, esto hace que sea más divertido y adictivo. Tiene 3 tamaños de mapa (pequeño, medio y grande) a cada cual más complejo. Dispone de diversos temas (estilos de gráficos) que hacen que no canse y de la sensación de que estás jugando a diferentes versiones aunque algunos temas hagan que sea más complicado porque confunden visualmente.
En definitiva si os gustan este tipo de juegos disfrutaréis de esta versión que además es gratuita.

La página oficial: http://www.lairware.com/hexaddict/

Tema de Hexaddict

Tema de Hexaddict