martes, 18 de agosto de 2015

Introducción a ClearOS

ClearOS es una distribución Linux basada en CentOS y Red Hat Enterprise, utilizada principalmente como network gateway y servidor de red. Con ClearOs se puede obtener el control de una red administrando el ancho de banda, la seguridad, servicios DNS y muchas otras características. A continuación enumeramos algunas de ellas.

Gateway


- Protocol Filter
- Web Access Control
- Content Filter

Network


- Dynamic DNS
- DHCP Server
- SSH Server
- OpenVPN
- Bandwidth Manager
- RADIUS Server

Server


- File Server
- FTP Server
- Directory Server
- SMTP Server
- Web Server

Como vemos, existen muchas características integradas en una sola distribución que ayudarán a optimizar el trabajo de Administradores de Servidores, Redes, Bases de datos, y otros. Finalmente, un video corto acerca del objetivo perseguido por esta distro Linux.



Referencias

- ClearOS. (2015, April 26). In Wikipedia, The Free Encyclopedia. Retrieved 04:53, August 18, 2015, from https://en.wikipedia.org/w/index.php?title=ClearOS&oldid=659241923

lunes, 17 de agosto de 2015

Configuración servidor DNS con BIND

Recordemos que los nombres de dominio nos ayudan a acceder a distintos sitios en internet de forma trasparente ingresando en la barra de navegación por ejemplo www.google.com en vez de su dirección ip 74.125.21.104. En el anterior post (Servidor en DynDNS) vimos como configurar un servicio de HOST DNS para apuntar un subdominio alojado en internet a nuestro servidor local y publicarlo en internet. Sin embargo, si lo que queremos en apuntar un dominio real en internet, como por ejemplo midominio.com y miempresa.com, debemos pensar en una solución acorde como por ejemplo rentar un servicio de hosting profesional, o mucho más complejo, montar un servidor DNS propio que punte dicho dominio a nuestro servidor. Este post cubre la segunda y más compleja alternativa.

Configuración previa


Para este propósito es necesario tener configurado ya un servicio de HOST DNS. Se sugiere en lo posible el servicio con Dyn.com, si embargo, existen muy buenas alternativas como Noip.com. En el siguiente enlace te enseñamos a configurar dicho servicio con Dyn. Es de notar, que se deben crear dos subdominios, ambos dirigidos hacia el mismo servidor. Finalmente, es necesario que ya se tenga alquilado un servidor en internet con algún registrador autorizado, para este ejemplo, supondremos que se ha comprado el dominio domain.com. También supondremos que los HOST DNS creados son dns1.dyndns.org y dns2.dyndns.org.

Servidor en DynDNS

Configuración del servidor DNS


Para configurar nuestro propio servidor DNS, utilizaremos BIND DNS el cual es el software más utilizado en internet para estos propósitos. Lo primero que debemos hacer es descargarnos la última versión del BIND DNS la cual se encuentra en la siguiente dirección https://www.isc.org/downloads. Debemos dar click la opción BIND, y seleccionar la versión estable del momento.



Enseguida aparecerá una ventana modal indicándonos la arquitectura deseada, dependiendo del servidor donde se quiera montar el servidor DNS, podemos seleccionar a 32 bits o 64 bits.



Al descargar el archivo, lo descomprimimos en cualquier carpeta y ejecutamos el instalador como Administrador. En la versión actual del BIND, la v9.10.2, el instalador es el archivo BINDInstall.exe.



Antes de instalar el programa, creamos un directorio en el disco local C llamado bind. Con esto, en el instalador podemos colocar como directorio de instalación C:\bind. La cuenta con la cual instalaremos el BIND debe ser Administrador o del Grupo Administradores, colocamos la clave, quitamos la opción Automatic Startup, dejamos lo demás como está por defecto e instalamos.



Lo ideal es que se cree una cuenta diferente a la de Administrador para correr el servicio del DNS. Sin embargo, esto requiere de configuraciones adicionales y que el sistema operativo tenga la Group Policy (instalación aquí), la cual, no viene por defecto en las versiones Home. Esto, con el fin de asignar a la nueva cuenta el permiso "logon as a service".

Si al instalar sale una ventana de dialogo preguntando si se desea seleccionar otra cuenta le damos click en No. Probablemente si no tienes el Visual Studio C++ Redistributable instalado tengas que instalarlo en la mitad del proceso, si ya lo tienes instalado debes cancelar esa segunda instalación. Finalmente, al aparecer el mensaje de confirmación de instalación damos click en Aceptar y cerramos la ventana del instalador.

Podemos verificar que se ha instalado correctamente si navegamos hasta la carpeta C:\bind y no está vacía. Veremos entonces dos carpetas nuevas, C:\bind\bin y C:\bind\etc. Para nuestro próximo paso debemos agregar la primera carpeta a la variable Path del sistema para poder ejecutar los comandos del BIND DNS desde la consola de windows. Después de esto, ejecutamos entonces el siguiente comando desde la consola como administrador.

rndc-confgen -a

Este comando crea una llave específica para el servidor y la escribe en el archivo C:\bind\etc\rndc.key. Después de esto, creamos los siguientes archivos en el mismo directorio.

Archivo rdnc.conf, sobre el cual definiremos la dirección del servidor DNS y la llave generada. El servidor sobre el cual queremos que llegue el DNS debe tener una dirección IP estática dentro de la red local, en este caso, suponemos que es la 192.168.1.100. Además de esto, dbemos reemplazar el parámetro secret por la llave que se generó en el archivo rndc.key,


rndc.conf
key "rndc-key" {
 algorithm hmac-md5;
  secret "K+d/EiibN8h3l8BdiDLAGflzIIlAOUmpSP8L25pPl7o=";
};

options {
 default-key "rndc-key";
 default-server 192.168.1.100;
 default-port 953;
};


Archivo named.conf, sobre el cual definiremos las zonas que crearemos en nuestro servidor. En este archivo, definimos la zona que crearemos en internet, en este caso, domain.com, y el archivo del cual se obtiene la configuración de esta zona.


named.conf
options {
 directory "C:/bind/etc";
 allow-transfer {none;};
 listen-on {any;};
};

zone "domain.com" {
    type master;
    file "C:/bind/dns/db.domain.com";
};

key "rndc-key" {
 algorithm hmac-md5;
 secret "K+d/EiibN8h3l8BdiDLAGflzIIlAOUmpSP8L25pPl7o=";
};

controls {
 inet 192.168.1.100 port 953
 allow { 192.168.1.100; } keys { "rndc-key"; };
};


Finalmente, creamos la carpeta C:\bind\dns y el archivo db.domain.com, sobre el cual estará especificada la configuración del dominio. En este archivo, deberemos reemplazar los dns por los que hayamos creado previamente en nuestra cuenta Dyn o Noip. Además, debemos colocar la dirección IP actual del primer DNS, en este caso 186.118.49.227.


db.domain.com
$TTL 15S

@       IN      SOA     dns1.dyndns.org. your.email.com. (
                        2007061907      ; serial
                        3H              ; refresh
                        30M             ; retry
                        4W              ; expire
                        15S )           ; min TTL

                NS      dns1.dyndns.org. ; name server
                NS      dns2.dyndns.org. ; name server

@                    A          186.118.49.227
dns1.dyndns.org.     A          186.118.49.227
dns2.dyndns.org.     A          186.118.49.227
www                  A          186.118.49.227

homepage        CNAME            www



Hasta ahora, los registradores de dominio y servidores DNS en internet no saben que hemos creado un nuevo servidor en internet. Debemos entonces entrar a la página del registrador al cual le hemos alquilado el dominio, en dicha página debe existir alguna zona en donde podamos editar las DNS del dominio, por lo general, vienen configurados dos dns por defecto, entonces los cambiamos por los que tengamos configurados en nuestra cuenta de HOST DNS.

Ahora, debemos configurar el router para que el BIND DNS pueda pasar a través de él y recibir peticiones de internet. Debemos abrir los puertos 53 - 59 y 81 - 953 sobre la ip del servidor, para esto puedes seguir el siguiente tutorial en el cual se explica cómo abrir puertos en el router.

Configurar router para publicar web



Adicionalmente agregamos las respectivas reglas de entrada al firewall.


Finalmente, abrimos una consola cmd y ejecutamos el siguiente comando.

named -f
named-checkconf c:\bind\etc\name.conf

La ejecución de estos comandos no debe arrojar output.

named-checkzone domain.com c:\bind\dns\db.domain.com

La ejecución de este comando debe arrojar OK.

Abrimos la ventana de serivicios y verificamos que el servicio ISC BIND esté iniciado. Si no, lo iniciamos.

Si el sistema encuentra algún error derivado del inicio del servicio, lo ideal es revisar el log del sistema operartivo en la ventan Event Log. A continuación un ejemplo.



Si todo ha salido bien, en este momento cualquier persona en el mundo podría acceder a nuestro servidor local con el nombre de dominio domain.com o www.domain.com. Si embargo, a nuestro servidor aún le falta una última configuración, un daemon. Dado que la mayoría de equipos en internet cambian constantemente de IP, necesitamos un proceso que cambie constantemente la dirección del archivo de configuración db.domain.com a la que tiene actualmente el primer DNS que tengamos configurado. Esto se logra creando un script en PHP en el mismo directorio que dicho archivo con el siguiente contenido.

update_ip.php
 
/*
 * # php update_ip.php zone_file dns zone
 */

// Set localtime zone
date_default_timezone_set("America/Bogota");

$online = true;

while (true)
{
   $dnsIp = gethostbyname($argv[2]);

   $zone = $argv[1];
   $zoneContent = file_get_contents($zone);
   preg_match('/\[?[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\]?/', $zoneContent, $z);
   $currentIp = $z[0];

   if ($dnsIp == $argv[2])
   {
      if ($online === true)
      {
          echo "Unable to connect to DNS at ". date('Y-m-d H:i:s') . "\n";
          $online = false;
      }

      $hd = fopen("logs.txt", "a+");
      fwrite($hd, "Unable to connect to DNS at ". date('Y-m-d H:i:s') . "\r\n");
      fclose($hd);
   }
   else {

      if ($online === false)
      {
         echo "Connected to ". $dnsIp ." at ". date('Y-m-d H:i:s') ."\n";
         $online = true;

         $hd = fopen("logs.txt", "a+");
         fwrite($hd, "Connected to ". $dnsIp ." at ". date('Y-m-d H:i:s') ."\r\n");
         fclose($hd);
   }

   if ($currentIp != $dnsIp)
   {
        $zoneUpdated = str_replace($currentIp, $dnsIp, $zoneContent);
        file_put_contents($zone, $zoneUpdated);
        echo "DNS updated to: " . $dnsIp ." at ". date('Y-m-d H:i:s') ."\n";
        echo exec("rndc reload " . $argv[3]);
        echo "\n";

        $hd = fopen("logs.txt", "a+");
        fwrite($hd, "DNS updated to: " . $dnsIp ." at ". date('Y-m-d H:i:s') ."\r\n");
        fclose($hd);
     }
   }

   sleep(1);
}

Abrimos una nueva terminal, navegamos hasta el directorio C:\bind\dns y ejecutamos el siguiente comando.

php %CD%/update_ip.php %CD%/db.domain.com dns1.dyndns.org domain.com

Sobra anotar, que debemos reemplazar los parámetros del archivo por los que tengamos en nuestro caso específico.

Notas Finales


La solución que se ha expuesto en este post no es una solución que deba implementar en un servidor en producción, solamente debe hacerse para efectos pedagógicos y en el área académica. No se admitirán reclamaciones de ningún tipo relacionadas con daños o perjuicios causados por seguir cada uno de los pasos descritos en este post.

Aplicar esta solución en servidores de producción producirá los siguientes problemas:

- Los robos de Google notarán probablemente tres copias igual de la misma web dado que la página podrá ser accedida desde tres direcciones distintas a saber, dns1.dyndns.org, dns2.dyndns.org y domain.com. Todo esto, provocará que Google no indexe nuestra web o la indexe de manera incorrecta.
- La propagación de los DNS en internet nunca se concretará. A pesar de que se puede acceder desde cualquier parte del mundo, si revisamos la propagación de los DNS de nuestra página con herramientas online, propablemente nunca veremos un chequeo satisfactorio.

DNS Checkers

- https://dnschecker.org/
- https://www.whatsmydns.net/
- http://dnscheck.pingdom.com/


Referencias

- Domain Name System. (2015, 27 de junio). Wikipedia, La enciclopedia libre. Fecha de consulta: 02:41, agosto 18, 2015 desde
https://es.wikipedia.org/w/index.php?title=Domain_Name_System&oldid=83445155
- BIND. (2015, July 31). In Wikipedia, The Free Encyclopedia. Retrieved 02:41, August 18, 2015, from https://en.wikipedia.org/w/index.php?title=BIND&oldid=673899632
- Documentation | Internet System Consortium. (2012). In Internet System Consortium. Retrieved 21:56, August 17, 2015, from https://www.isc.org/downloads/bind/doc/
- How to Set Up a Local Domain width Bind in Windows: 12 Steps. (2015). In wikiHow - How to do anything. Retrieved 21:56, August 17, 2015, from
http://www.wikihow.com/Set-Up-a-Local-Domain-with-Bind-in-Windows
- Managing a Domain using Dynamic DNS. (2015). In Ian Atkinson's Homepage. Retrieved 21:56, August 17, 2015, from http://www.ianatkinson.net/computing/ddns.htm

Servidor en DynDNS

Dyn.com es una empresa que provee soluciones en Cloud para el monitoreo, control y optimización de infraestructura online. Dyn se asegura de optimizar el tráfico de dominios en internet para acceder más rapidamente y de forma segura a nombres de dominio contratados. Uno de los servicios de más auge de esta empresa y uno de los más utilizados es el servicio de Host DNS, del cuál hablaremos en este post.

Qué es el servicio de HOST DNS ?


Es un servicio que nos otorga un nombre de dominio en internet para nuestro uso personal o empresarial. Los nombres de dominio que otorga Dyn por lo general son en realidad subdominos como por ejemplo mipagina.dyndns.org o mipagina.is-saved.org.

Para qué sirve tener un HOST DNS ?


Son útiles para redirigir todo el tráfico de internet a direcciones IP específicas. Recordemos que en la red de redes toda máquina tiene una dirección IPv4 o IPv6 como por ejemplo 191.111.163.238. Si tenemos un servidor Web o FTP, muy seguramente sería mucho mejor que nuestros clientes accedan a estos servicios mediante un nombre de dominio y no una dirección IP que nadie puede recordar.


Cómo configurar un servicio de HOST DNS ?


Lo primero que debemos hacer es crear una cuenta en Dyn. Accedemos a la dirección https://account.dyn.com/entrance, y llenamos los datos necesarios en el formulario. Probablemente nos llegue un mensaje al correo el cual deberemos confirmar para poder iniciar sesión.



Después de iniciar sesión, para agregar un servicio de host dns, debemos dar clic en Add Host Services en el panel de incio de nuestra cuenta. 



Colocamos el nombre del subdominio a nuestro gusto con el dominio adecuado (ej: example.is-saved.org). El servicio que debemos escoger es Host with IP Address, colocamos la IP actual y agregamos al carrito. Hemos colocado nuestra IP actual en IP Andreess para que dicho dominio al ser accedido en internet redirija hacia nuestro PC servidor.



Después de agregar al carrito aparecerá el precio del servicio, que por lo general son $0 USD. Damos clic en Activate Services y enseguida tendremos nuestro servicio de host dns activo.



Servidor en DynDNS


Para esto debemos tener ya configurado un servidor Web, FTP, DNS, o cualquier otro ya operativo, en este caso supondremos que es un servidor web IIS o Apache en funcionamiento local. Respecto a esto, los dos pasos cruciales para tener éxito en la redirección del dominio creado hacia nuestro host son los siguientes:

1. Configurar servidor local para pasar por el firewall del Sistema Operativo.


2. Configurar los puertos necesarios en el router para ser accedido desde fuera de la red local (internet)


Si sigues estos dos tutoriales al pie de la letra el trabajo ya está hecho en un 90%. Nótese que en el caso de tener una IP fija, no nada hay más por hacer, recuerda que al crear el servicio en Dyn colocamos la IP pública que teniamos en ese momento, si no ha cambiado hasta ahora, nuestro servidor ya debe estar en internet y puede ser accedido con el nombre de dominio que nos ha otorgado DynDNS.

Si en lugar de ello, se tiene una IP dinámica, como el 90% del planeta, deberemos instalar un programa que actualice nuestra IP al servidor Dyn en internet. Para esto, Dyn ha desarrollado DynUpdater el cual puede ser descargado desde siguiente enlace Dyn Updater 4.1.10 (CNET).

Después de decargar el updater nos pedirá usuario y contraseña de la cuenta Dyn, el usuario no es el mismo correo con el cual fue creada la cuenta, es en sí el nombre de usuario.



Enseguida, aparecerán los HOST DNS que hayamos creado, seleccionamos el adecuado, damos click en "Apply" y en "Ok". Con esto, ya no tendremos que preocuparnos de que nuestra IP cambie de dirección constantemente, pues Dyn DNS redirigirá el trafico del dominio creado hacia nuestro servidor en cualquier momento.


Referencias

- DNS hosting service. (2015, March 12). In Wikipedia, The Free Encyclopedia. Retrieved 16:08, August 17, 2015, from 
- Dynamic DNS. (2015, August 4). In Wikipedia, The Free Encyclopedia. Retrieved 16:08, August 17, 2015, from https://en.wikipedia.org/w/index.php?title=Dynamic_DNS&oldid=674482387

viernes, 10 de julio de 2015

Hola mundo en Visual Basic .NET

Después de tener configurado el entorno para programar aplicaciones en .NET, tal y cómo se describe en el post Introducción a Visual Basic .NET, ya estamos listos para desarrollar nuestra primera aplicación denominada Hola Mundo!. Esta primera aplicación la desarrollaremos primero desde la consola de Windows y posteriormente desde Visual Studio.

Hola Mundo desde consola


Lo primero que debemos hacer es abrir un bloc de notas y escribir el siguiente código

Imports System

Module MyModule
   Sub Main()
      Console.WriteLine("Hola Mundo!")
      Console.ReadLine()
   End Sub
End Module

Es aconsejable no copiar el texto y pegarlo sino más bien teclearlo directamente guardando especial cuidado en separa los espacios con Tabs y no con la tecla espacio del teclado. Después de esto, guar-damos el archivo con "Archivo -> Guardar Como" y seleccionamos en Tipo la opción Todos los Archivos. Finalmente colocamos el nombre del archivo como HolaMundo.vb.

Después de guardar el archivo, debemos abrir una consola como administrador y navegar hasta el directorio en donde hemos guardado el archivo y tecleamos el comando:

vbc /out:HolaMundo.exe HolaMundo.vb

Recordemos que para que este comando funcione correctamente debe estar el directorio de binarios del .NET Framework correctamente configurado. Al terminar de ejecutar el comando, aparecerá un nuevo archivo en nuestro directorio denominado HolaMundo.exe el cual podemos ejecutar y deberá mostrar una salida similar a la siguiente.



Hola Mundo desde Visual Studio


Desde el Visual Studio seleccionamos "Archivo -> Nuevo Proyecto" y en plantillas buscamos Visual Basic y seleccionamos "Aplicación de Consola", posteriormente le damos el Nombre HolaMundo y damos clic en aceptar. El IDE nos creará un archivo base y nos mostrará el siguiente contenido:

Module Module1 
   Sub Main() 

   End Sub 
End Module

A partir del cual, nosotros debemos completar el código como se mostró en la sección anterior "Hola Mundo sin IDE" y finalmente damos clic en el icono verde de iniciar. Nuevamente, veremos una salida similar en consola pero esta vez desde el IDE Visual Studio.


También podemos compilar y ejecutar el código de forma similar presionando la tecla F5. A continuación, un video más detallado acerca de los primeros pasos en Visual Studio con VB.NET.

English




Referencias

- Visual Basic version of Hello, World. (2012). In MSDN, Microsoft Developer Network. Retrieved 05:07, July 10, 2015, from https://msdn.microsoft.com/en-us/library/3cf7t4xt(v=vs.110).aspx

Introducción a Visual Basic .NET

Visual Basic .NET es un lenguaje de programación de alto nivel que provee la plataforma .NET, considerado como el sucesor del antiguo lenguaje Visual Basic desarrollado por Alan Cooper. El IDE de desarrollo para este lenguaje es el conocido Visual Studio, el cual podemos instalar visitando el post Introducción a Microsoft .NET. Visual Basic es además, un lenguaje intuitivo y basado en Windows Forms, con una curva de aprendizaje demasiado alta a pesar de ser orientado a objetos. En este post, veremos como preparar el entorno para posteriormente desarrollar programas en este maravilloso lenguaje.

Configuración de la variable Path


Antes que nada, debemos configurar los binarios necesarios del .NET Framework para poder compilar codigo VB desde consola. Para esto debemos entrar a las configuraciones del sistema abriendo el navegador de archivos, dando clic derecho en "Equipo / Este Equipo" y seleccionando Propiedades. O bien, podemos utilizar el atajo del teclado Windows + Pausa.


Enseguida se abre la ventana de Sistema y debemos seleccionar en el panel izquierdo la opción "Configuración avanzada del sistema". Enseguida se abrirá la ventana de Propiedades del sistema en donde debemos seleccionar la pestaña "Opciones avanzadas" y dar clic en "Variables de entorno...".


Buscamos la variable Path en el cuadro de diálogo emergente y agregamos entre comillas dobles el directorio en donde por defecto debió ser instalado el .NET Framework. Según la versión instalada la ruta puede ser similar a la siguiente C:\Windows\Microsoft.NET\Framework\v4.0.30319. Guardamos los cambios dando clic en Aceptar a todas la ventanas y con esto ya ha debido quedar configurado los binarios del .NET Framework para ejecutar desde consola.


Para verificar que se ha realizado correctamente el proceso podemos abrir una consola como administrador y teclear el comando vbc. El comando debe enviar una salida similar a la siguiente:


Configuración del IDE


En algunos casos es necesario activar algunas funcionalidades que Visual Studio no tiene activadas por defecto. Una de ellas es la visualización de los números de línea que podemos activar en el menú "Tools > Options ..".


En la opción Text editor, seleccionamos All Languages, y finalmente en el panel derecho activamos la opción Line numbers. Con esto, activamos la opción de que en el código nos muestre los números de línea en todos los archivos. Finalmente, si se desea también se puede cambiar el idioma por defecto del IDE en la opción Environment > International Setings dentro del mismo menú de opciones.


Referencias

- Visual Basic .NET. (2015, July 4). In Wikipedia, The Free Encyclopedia. Retrieved 05:07, July 10, 2015, from https://en.wikipedia.org/w/index.php?title=Visual_Basic_.NET&oldid=669904061
- Microsoft Visual Studio. (2015, July 7). In Wikipedia, The Free Encyclopedia. Retrieved 05:08, July 10, 2015, from 

domingo, 28 de junio de 2015

Introducción a Microsoft .NET

La plataforma .NET consta de una serie de librerías que nos ayudan a realizar desarrollos mucho más rápidos e intuitivos, en una plataforma que soporta múltiples lenguajes para múltiples propósitos. El marco de trabajo .NET Framework, provee un extenso conjunto de soluciones predefinidas para necesidades generales de la programación de aplicaciones, mientras que otras herramientas como Visual Studio integran un conjunto de herramientas y lenguajes de programación diseñados para realizar aplicaciones Windows.

Microsoft .NET Framework, está conformado por tres componentes principales, una biblioteca de clases base (BCL), un entorno común de ejecución para lenguajes (CLR) y un conjunto de lenguajes de programación, entre los que se incluyen C#, Visual Basic .NET, Delphi, C++, F#, J#, Perl, Python, Fortran y Prolog. Además de esto, contiene un entorno (código administrativo) que provee servicios automáticos al código que se ejecuta, e incluye los siguientes servicios.

- Cargador de clases
- Recolector de basura
- Motor de seguridad
- Motor de depuración
- Administrador de excepciones
- Soporte multiproceso (hilos)

Microsoft Visual Studio


Microsoft Visual Studio, es un entorno integrado de desarrollo (IDE) elaborado por Microsoft para la plataforma .NET. Este entorno incluye un editor de código inteligente que completa y refactoriza el código escrito, un diseñador de formularios para aplicaciones con interfaz gráfica, un diseñador de esquemas de bases de datos, entre otras herramientas que agilizan el desarrollo de aplicaciones. Para instalar el Visual Studio, basta visitar la página oficial de Visual Studio 2015 Editions, y descargar la versión apropiada que para la mayoría de nosotros será la versión libre, o community, que nos aporta lo necesario para conocer la plataforma y desarrollar programas en Windows.

Versiones de Microsoft Visual Studio


Después de descargar el instalador de la versión elegida, al ejecutarlo deberá salir el siguiente formulario.


Finalmente, damos clic en instalar y el programa descargará los archivos necesarios para instalar el Visual Studio. Después de la instalación se pedirá reiniciar la computadora, y enseguida de ello al iniciar el programa pedirá iniciar sesión con una cuenta Microsoft. Si no se dispone de una cuenta Microsoft simplemente damos en clic en Not now, maybe later.


Iniciar sesión con una cuenta Microsoft tiene ciertos beneficios en el entorno. Se guardarán las configuraciones y los servicios de desarrollo en cualquier dispositivo desde donde se acceda al Visual Studio y no solamente en el computador donde se instale por primera vez. Dependiendo del lenguaje que tengamos pensado explorar, y del tema que más se ajuste a nuestras preferencias, al finalizar el proceso tendremos la siguiente interfaz principal.

Interfaz principal de Microsoft Visual Studio 2015 - Dark theme

Con esto, ya tenemos instalado el entorno de desarrollo de Microsoft .NET. Por último, dejo a continuación dos videos más detallados sobre la instalación de Visual Studio, tanto en español como en inglés.

Español



English




Referencias

- Microsoft .NET. (2015, 7 de junio). Wikipedia, La enciclopedia libre. Fecha de consulta: 15:47, junio 28, 2015 desde https://es.wikipedia.org/w/index.php?title=Microsoft_.NET&oldid=83012185.
- Microsoft Visual Studio. (2015, June 26). In Wikipedia, The Free Encyclopedia. Retrieved 16:33, June 28, 2015, from 

viernes, 3 de abril de 2015

Operable en el nivel AA

Dentro de la accesibilidad web, que un sitio sea operable en el nivel AA, significa que los componentes de interfaz de usuario deben ser operables y permitir la navegación sin ningún tipo de obstáculo. Para esto, es necesario tener en cuenta las siguientes cuatro pautas de operabilidad: accesible por teclado, tiempo suficiente, convulsiones, navegable.

PAUTA 1: Accesible por teclado


Objetivo: Asegurar la accesibilidad mediante el teclado o una interfaz de teclado.

Alcance: Personas con baja visión, con limitaciones técnicas, problemas de movilidad o invidentes.

Los contenidos de la página web deben poder ser accedidos a través del teclado. Muchos dispositivos no disponen más que del teclado para acceder a una web, este es el caso de los lectores de pantalla; debido a esto, debe garantizarse que la información sea accesible mediante este dispositivo de entrada. Además de esto, se debe garantizar que la página siga siendo operable con mouse.

Es necesario tener en cuenta las siguientes recomendaciones para garantizar esta pauta:

- Utilización de funciones de acceso por teclado para interactuar con enlaces, controles de formulario y otros elementos. 
- Si se utilizan eventos del mouse como onmouseup, onmouseover, u onmousedown, se debe agregar una funcionalidad equivalente mediante eventos semejantes del teclado como onkeydown, onkeyup y onfocus.
- En todas las veces en que sea posible situar el foco a un elemento de la interfaz mediante el teclado, también debe ser posible quitarlo mediante el teclado. 

PAUTA 2: Tiempo suficiente


Objetivo: Proporcionar a los usuarios el tiempo suficiente para leer,usar el contenido y no distraerse mientras se navega por la página.

Alcance: Personas con deficiencias técnicas, cognitivas o desórdenes de la atención.

Algunas personas requieren más tiempo para leer contenido o utilizarlo, debido a esto debe evitarse cualquier control de tiempo o limitación temporal que pueda impedir la correcta utilización del sitio. Así mismo, los contenidos que hacen parte de alguna animación, publicidad o demás elementos diseñados para llamar la atención no deben confundir al usuario dificultando la navegación.

Es necesario tener en cuenta las siguientes recomendaciones para garantizar esta pauta:

- El contenido no debe comenzar de forma automática y solo debe ser reproducido a petición de los usuarios.
- Permitir al usuario detener o reiniciar la reproducción de contenido con controles de interfaz.

PAUTA 3: Convulsiones


Objetivo: Impedir ataques fotosensitivos en cualquier usuario expuesto.

Alcance: Personas con trastornos fotosensitivos que puedan verse afectados por destellos de pantalla.

No se debe diseñar contenidos que puedan causar ataques de epilepsia fotosensitiva. Algunos cambios de luminosidad y destellos pueden provocar dichos ataques en pacientes con este tipo de patología.

Es necesario tener en cuenta las siguientes recomendaciones para garantizar esta pauta:

- La página no debe contener contenido que destelle más de tres veces por segundo (3Hz), o almenos el destello debe estar por debajo del umbral de destello general y de destello rojo.
- No deben generarse destellos en un cuadrado de más de 148 pixeles de lado o de más de 21.904 pixeles cuadrados de área.

PAUTA 4: Navegable


Objetivo: Ayudar al usuario a navegar de forma fácil por la página, encontrar contenido y saber en que parte se encuentra.

Alcance: Cualquier usuario en general, usuarios con lectores de pantalla o problemas de visión o cognitivos.

El usuario debe poder predecir el flujo general de la página, debe poder encontrar el contenido que necesite de forma simple e identificar en que parte de la página se encuentra.

La página debe tener algún mecanismo que permite saltar el contenido repetido en distintas páginas como por ejemplo el logo, menú  principal, barras laterales y pies de página. Muchos usuarios utilizan  lectores de pantalla con lo cual hacen un barrido lineal de la página y mucha información de la página se presenta nuevamente en cada carga. Un mecanismo para evitar esto, puede ser colocar un enlace al inicio de la página oculto con CSS, para saltar al contenido principal de la página.

Es necesario tener en cuenta las siguientes recomendaciones para garantizar esta pauta:

- Saltar contenido repetido centrándose en el principal
- Enlaces descriptivos respecto al destino, evitando palabras con poco contenido como "click aquí" o "ver más".
- Informar al usuario la sección en donde se encuentra
- Uso correcto de títulos, encabezados y etiquetas
- Proporcionar más de una forma para acceder a una página (utilización de un mapa de sitio)
- Uso correcto de la semántica en el elemento title
- Las interfaces operables por teclado deben proporcionar algún tipo de foco que resulta visible al usuario.


Referencias

- Accesibilidad a páginas web (NTC 5854). (2011, 15 de julio). Instituto Colombiano de Normas Técnicas y Certificación (ICONTEC), 2011, 15 de julio.
- Sidar. (2009). Web Content Accessibility Guidelines (WCAG) 2.0. Consultado el 10 de abril de 2014, en http://www.sidar.org/traducciones/wcag20/es/
- W3C. (2008). Web Content Accessibility Guidelines (WCAG) 2.0. Consultado el 10 de abril de 2014, en http://www.w3.org/TR/WCAG20/
- W3C. (2010). Al recibir el foco. Consultado el 10 de abril de 2014, en http://www.sidar.org/traducciones/wcag20/es/comprender-wcag20/consistent-behavior-receive-focus.html
- W3C. (2010). Encabezados y etiquetas. Consultado el 10 de abril de 2014, en http://www.sidar.org/traducciones/wcag20/es/comprender-wcag20/navigation-mechanisms-descriptive.html
- W3C. (2010). Evitar bloques. Consultado el 10 de abril de 2014, en http://www.sidar.org/traducciones/wcag20/es/comprender-wcag20/navigation-mechanisms-skip.html
- W3C. (2010). Múltiples vías. Consultado el 10 de abril de 2014, en http://www.sidar.org/traducciones/wcag20/es/comprender-wcag20/navigation-mechanisms-mult-loc.html
- W3C. (2010). Poner en pausa, detener, ocultar. Consultado el 10 de abril de 2014, en http://www.sidar.org/traducciones/wcag20/es/comprender-wcag20/time-limits-pause.html
- W3C. (2010). Propósito de los enlaces (en contexto). Consultado el 10 de abril de 2014, en http://www.sidar.org/traducciones/wcag20/es/comprender-wcag20/navigation-mechanisms-refs.html