Geoestacionado en la Termosfera

Mis inquietudes en la red


Deja un comentario

Instalación y configuración de servidor Web Apache con autenticación mediante base de datos MySQL

1. Instalación


En primer lugar vamos a proceder a instalar los servicios y paquetes necesarios.
Actualizar nuestros gestor de paquetes:

$ sudo apt-get update

Instalar servidor Web apache:

$ sudo apt-get install apache2

Instalar sistema gestor de base de datos MySQL:

$ sudo apt-get install mysql-server mysql-client

Ahora vamos a instalar el modulo de apache necesario para autenticarnos contra la base de datos MySQL:

$ sudo apt-get install libapache2-mod-auth-mysql

Y lo habilitamos:

$ sudo a2enmod auth_mysql

Por último para asegurarnos de que todo funciona correctamente reiniciamos el servidor:

$ sudo service apache2 restart

Accedemos a http://localhost y comprobando que nos muestra el famoso “It works”.

Imagen

2. Creación de base de datos

A continuación vamos a crear la base de datos, crear una tabla e insertar los datos mediante los que autenticarnos y poder así acceder al contenido del servidor.

Iniciar shell de MySQL con un usuario que disponga de los permisos necesarios para crear y manipular bases de datos:

$ mysql -h localhost -u root -p

Creamos la base de datos (podemos utilizar cualquier nombre):

  • > CREATE DATABASE httpauthdb;

Creamos el usuario mediante el cual apache se conectará con la base de datos:

  • > CREATE USER httpauth IDENTIFIED BY ‘httpauth’;

Asignamos permisos al usuario creado, siempre dependiendo de nuestros intereses. En un servidor de producción la mejor opción sería simplemente darle permisos de lectura. Para esta práctica le vamos a dar todos los permisos:

  • > GRANT ALL on httpauthdb.* TO httpauth IDENTIFIED BY ‘httpauth’;

Creamos la tabla:

  • > CREATE TABLE mysql_auth (
  • > userID INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
  • > username VARCHAR(50),
  • > password VARCHAR(100));

Insertamos valores. Al insertar el campo ‘password’ le aplicaremos un hash md5 para encriptar su valor:

  • > INSERT INTO mysql_auth(username, password) VALUES (‘test’, MD5(‘test’));

A continuación se muestra la descripción de la tabla y su contenido consecutivamente.

Quedando de la siguiente manera:

Imagen

3. Configuración

Es necesario configurar nuestro servidor apache como se explica a continuación.
Editamos el archivo de configuración /etc/apache2/sites-available/default a través de tu editor de
texto favorito o disponible. Para este tutorial utilizaré VIM, aquí os dejo un enlace a un
tutorial básico sobre manejo de este editor que se encuentra disponible prácticamente en todas las
distribuciones gnu/linux.

Editamos archivo de configuración:

vim /etc/apache2/sites-available/default

Cambiando o añadiendo la directiva AllowOverride dentro de la etiqueta <Directory /ruta> que
deseamos configurar:

AllowOverride None

Por:

AllowOverride AuthConfig

Imagen

Deberemos modificar o crear el fichero .htaccess dentro del directorio en el cual se restringirá el acceso añadiendo una serie de directivas.Por supuesto también es posible añadirlas en el fichero httpd.conf [/etc/apache2/sites-available/defaults en Ubuntu] dentro de <Directory /ruta>.En nuestro caso optaremos por la primera opción, creándolo dentro del directorio /var/www/ y añadiendo las siguientes directivas:

Imagen

Por último volvemos a reiniciar el servidor, y ya debería mostrarnos una ventana modal mediante la cual autenticarnos para poder acceder al contenido en http://localhost.

Imagen

En la captura de pantalla utilizo una dirección IP local, debido a que trato de acceder desde el navegador Web de mi sistema anfitrión, al servidor Web del sistema huesped.


Deja un comentario

Dart

Buenas de nuevo, en ésta ocasión quiero compartir con vosotros el proyecto de software libre auspiciado por Google conocido como “Dart”. ¿Y que es Dart? Pues básicamente supone la llegada de “la ley y el orden” al desarrollo WEB.


 

Hay dos motivos por los que se inicia éste desarrollo:

  • Los proyectos grandes son realmente difíciles de mantener. El compendio de tecnologías que conforman una página o aplicación WEB actual se vuelve un dolor cuando esta empieza a tener un tamaño considerable. JavaScript se creó para añadir pequeñas funcionalidades extra, no para trabajar con la GPU o sitios WEB tan grandes.
  • Las aplicaciones móviles o “apps” están ganando mucho terreno a las aplicaciones WEB, lo que supone un retroceso, puesto que éstas no siguen estándares abiertos, si no que cumplen con los requisitos indicados por la empresa de turno.

Ante éste panorama, surge Dart, que en resumen no es mas que una máquina virtual que compila un lenguaje específico en un bytecode propio y en código JavaScript.

He de decir que llevo poco tiempo probandolo, pero estoy encantado. Su sintaxis es tremendamente familiar para los desarrolladores de Java, C/C++ o C#, pero enfocado totalmente a la WEB y con características adaptadas a ello. Incluye definiciones de tipos, lo que hace mas legible el código con cientos de líneas [aunque los tipos son opcionales] y gran parte de la artillería, que en mi opinión hacen grandes a los principales lenguajes orientados a objetos de hoy en día:

  • Orientado a clases.
  • Excepciones.
  • Interfaces.
  • Declaración de tipos.

Por el momento los grandes de la industria como Microsoft o Mozilla se han negado a implementarlo en sus respectivos navegadores pero creo que el tiempo dará la razón a Google [como ya ha pasado en otras ocasiones] y creo que terminarán implementandolo, porque Dart facilita la vida a los desarrolladores, sobre todo ayuda a que trabajen en equipo y en aplicaciones grandes y hasta ahora es la mejor propuesta hecha en este campo.

También comentar que la intención es que además funcione en el lado servidor, si esto no es una buena guinda para terminar…

Aquí os dejo el enlace al sitio oficial y animo a probarlo. Saludos.

http://www.dartlang.org


Deja un comentario

Proyecto de agenda personal simple

¡Muy buenas! Ando muy ocupado éstos días con las clases, así que mis próximas entradas van a tratar sobre todo de proyectos que estoy iniciando, quiero compartir y abierto a quien quiera colaborar.
En ésta ocasión estoy trabajando en una pequeña y simple agenda personal. Su complejidad no es lo importante si no poner en práctica lo aprendido:
- Lenguaje de programación Java.
- Modelo Vista Controlador.
- Uso de patrones de diseño como Singleton o Adapter.
- Lenguaje SQL y bases de datos MySQL.

Captura de pantalla:

pantallazo

Y a quien pueda interesar, aquí está el código:

GitHub

Saludos.


Deja un comentario

Mis herramientas favoritas

Hoy simplemente quiero recomendar una de las herramientas que utilizo habitualmente, bien para administración del sistema o simplemente programar sin un entorno gráfico convencional.

Me refiero a i3:

http://i3wm.org/

Éste administrador de ventanas no tiene nada que ver con el clásico GUI.

Se trata de un gestor de ventanas denominado “de baldosas”  (tiles para los anglosajones), en el cual podemos ir desplegando nuestras aplicaciones a base de dividir la pantalla en cuadrados y rectángulos, y realizando la mayor parte del control del sistema mediante teclado.

Es perfecto para disponer de varios terminales abiertos y así editar código en un lado de la pantalla, mientras en el otro lo vamos probando con el interprete o promt del sistema. Es posible también abrir cualquier aplicación instalada, no se limita únicamente a abrir terminales.

Disponemos además de ventanas flotantes, como cualquier otro gestor de ventanas o directamente posicionar nuestras aplicaciones en modo de “tabs”. Tenemos flexibilidad total para trabajar.

Existen varios gestores de ventanas de este estilo en el mercado, ya sea Awesome Window Manager o el que utilizan los desarrolladores y administradores de Google XMonad, entre otros muchos.

Este es mi escritorio:

Imagen

Espero que os sea de utilidad. ¡Salud!


Deja un comentario

Jugando con Arduino

Hace ya tiempo que tenía ganas de echarle el guante al conjunto microcontrolador – componentes – placa electrónica Arduino.

Éste pack, completamente open source y ecológico, (si, emisión 0 de carbono en su fabricación y completamente reciclable) es ideal para quien quiera introducirse en el mundo de la electrónica microprogramable.

http://www.arduino.cc/es/

He de reconocer que siempre he sido fan de los productos Microchip y que hay infinidad de productos similares en el mercado, pero cierto es, que Arduino tiene algunas características que lo hacen especial.

En primer lugar llama la atención su facilidad de uso. Programaremos nuestro microcontrolador en lenguaje C/C++ con todas las ventajas que eso supone, como por ejemplo añadir fácilmente librerías de terceros. Bastante mas simple que hacerlo en lenguaje ensamblador.

Segundo, su IDE es multiplataforma, por lo que podremos usarlo sin problemas en cualquier sistema operativo (también en linux ;) ) lo cual es importante ya que la mayoría funciona únicamente en el sistema operativo Windows. Todo el código fuente del IDE está disponible a través de GitHub.

Y tercero dispone de una extensa comunidad de desarrolladores dispuestos a echar una mano y una enorme cantidad de información online.

Añado un vídeo con mi “Hello World” particular en Arduino. Saludos.


Deja un comentario

HUD

Actualmente estoy trabajando en desarrollar un HUD para Android. Para quien no lo sepa se trata de, como bien dice la wikipedia:

“Un head-up display, o simplemente HUD, en español pantalla de visualización frontal, es una pantalla transparente que presenta información al usuario de tal forma que éste no debe cambiar su punto de vista para ver dicha información. El origen del nombre proviene del hecho de que el usuario puede ver la información necesaria con la cabeza erguida (head up) y mirando al frente, en vez de bajar la cabeza para revisar los instrumentos.”

Y como una imagen vale mas que mil palabras:


He considerado que puede ser una buena idea contar con un proyecto de código abierto que cualquiera pueda utilizar en distintos menesteres. Actualmente ya existen soluciones para ésto, pero no hay ninguna disponible en Android y menos aún de código abierto, en la que puedan participar e involucrarse otras personas o instituciones. La idea original obviamente dista mucho de un HUD real, puesto que utilizaríamos principalmente la cámara para obtener imágenes mas la información que aportaran los sensores del dispositivo.

Altitud, velocidad, orientación, son algunos ejemplos de la información que podría incluir en la visualización.

Puesto que Android es una plataforma abierta y accesible, es posible, por ejemplo instalar la aplicación en una placa electrónica que disponga de Android (los hay del tamaño de un pen drive) como sistema operativo y posteriormente instalarlo en un helicóptero drone, un avión teledirigido o un globo sonda.

Y el código fuente está disponible en github:

GitHub

Saludos.

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.