jueves, 12 de febrero de 2015

Un editor: notepad++



Los que llevamos ya tiempo en trabajando solemos tener varios programas de confianza, pequeñas utilidades que nos han sacado de un apuro más de una vez.

Yo os quiero hablar de una herramienta que va conmigo allá donde voy, se llama Notepad++ (http://notepad-plus-plus.org).

Este editor es libre y gratuito, tiene muchas funcionalidades que hacen que se iguale a otros editores de pago. Pero lo que más me gusta de él, es que tiene un gestor de plugin que permite multiplicar sus funcionalidades.

Cualquier persona puede codificar su propio plugin, y subirlo para compartirlo con la comunidad.

Os voy a comentar un par de características nativas de este editor:

  • Modo columna: si pulsamos "shift" + "alt" y nos movemos con el cursor arriba y abajo, podemos seleccionar en forma de columna. Esto es genial para insertar una cadena es una posicion específica en todas las lineas.   
  • Macros: esta me salva la vida una y otra vez. Podemos grabar una acción determinada en una linea, y luego repetir esa acción en todas las demás.   
  • Seleccion de lenguaje: puedes usar este editor para programar diversos lenguajes, si seleccionas el tuyo te colorea la sintaxis para que sea más fácil.   
Ahora vamos a por algún plugin.  

Si nos vamos a Plugins->Plugin Manager, allí podremos ver muchísimos que podemos instalar. Normalmente yo siempre tengo:
   

  • Xmltools: cuando tienes una línea de xml y no ves nada, lo mejor es traértelo aquí y que el solo te lo coloque y te lo coloree. También lo valida, aplica transformaciones...
  • Source cookifier: este plugin, te captura las diversas variables, constantes, funciones de tu código, y te las muestra a la derecha. Ideal para javascript.
De momento solo esta disponible para sistemas Windows. Aunque en linux podemos utilizarlo con Wine.

lunes, 26 de enero de 2015

Mantenimiento


Por motivos ajenos a nosotros, tenemos que poner Conquista Castilla y León en mantenimiento.

Esta aplicación está alojada en la instancia española de FIWARE (FI-LAB) y la semana pasada nos comunicaron que mañana día 27 hay una parada programada que empieza a las 7:30 de la mañana.

A esa hora estamos trabajando y no podemos estar pendientes de esta aplicación.

Activaremos el servicio lo antes posible. 

Éste es el Vídeo de la presentación del juego.

Te recomendamos leer alguno de nuestros artículos, esperamos que os gusten.


sábado, 17 de enero de 2015

Conquista Castilla y León



Hace unos días os comentaba que estábamos metidos en el desarrollo de un juego de navegador para un concurso (http://www.datosabiertos.jcyl.es/).

Esta semana por fin ha llegado el día de la entrega.

Lo hemos desarrollado todo en mes y medio entre Alberto y yo. Nos hubiera gustado hacer muchas más cosas pero el tiempo no nos ha dado más de sí.

Lo hemos realizado en JAVA utilizado SPRING. Un framework que ninguno de los dos controlaba. Además como base de datos usamos MongoDB, que tampoco conocíamos demasiado.

Intentaremos escribir un par de tutoriales sobre las cosillas que hemos aprendido en las próximos entradas.

Aquí os dejo un vídeo donde podéis ver el resultado final:



Si queréis daros de alta y probarlo lo podéis hacer a través de este enlace:

http://conquista.tecnificados.com

Esperamos que os guste. Se aceptan todo tipo de sugerencias.

Seguiremos evolucionandolo en un futuro cercano. Ahora mismo estamos "de vacaciones", ya que las últimas semanas han sido un no parar.

Muchas gracias a todos los que nos han ayudado con sugerencias y pruebas.




miércoles, 14 de enero de 2015

Nuevos modelos de desarrollo: Scrum

El año pasado Rebeca nos hablaba sobre los MOOC que últimamente están tan de moda, en concreto nos hacía referencia a MiriadaX y a un curso sobre Agilidad y Lean (lee el artículo completo aquí) y yo quería hablaros sobre Scrum, que es un modelo de desarrollo ágil del software que me llama mucho la atención y se adapta mejor a los tiempos que corren.

Los modelos tradicionales de desarrollo, en los que hay una planificación casi invariable del alcance, el tiempo y el coste del proyecto tras un análisis exhaustivo de los requerimientos, son buenos para otras ingenierías o arquitecturas, como por ejemplo las construcciones de viviendas o edificios donde es muy fácil distinguir las diferentes fases del proyecto que han de llevar un orden concreto, pero esto no siempre pasa en las aplicaciones software puesto que nos aparecen clientes que no pueden esperar a que se finalice el edificio para utilizar un aseo, o no tienen presupuesto para abarcar un proyecto completo, o no tienen claros todos sus requerimientos sino una pequeña parte de los mismos o simplemente no quieren casarse contigo hasta la finalización del proyecto.

Scrum da respuesta a este tipo de problemas ya que adopta una estrategia de desarrollo incremental e iterativa, en lugar de la planificación y ejecución completa del producto solapando las fases del desarrollo, consiguiendo de este modo que los cambios de alcance (ya sea por nuevos requerimientos o por mala interpretación de los mismos por parte de los analistas o el equipo de desarrollo) no interfieran en absoluto.

Como ya he comentado anteriormente, en los desarrollos tradicionales los requisitos han de estar desde el comienzo y el equipo de desarrollo ha de adaptar el trabajo a los plazos y criterios definidos en el análisis al principio, y no se comienza el desarrollo hasta que dicho análisis quede finalizado. Mencionar que las estadísticas hablan de que la incertidumbre de un análisis aumenta un 4% con cada mes que analizamos por adelantado, un proyecto analizado a 1 año tendría un 50% de incertidumbre. En cambio Scrum define la sucesión de una serie de ciclos al final de los cuales el cliente recibe un trozo del producto que puede ser considerado terminado y completo pese a contener únicamente la implementación de unos pocos requisitos del cliente. La clave está en que después del ciclo obtenemos feedback del cliente y podemos adaptar el siguiente ciclo a posibles cambios de los requisitos y lo que en ese momento es prioritario, aprendiendo con cada iteración lo que es importante para el cliente y reduciendo la incertidumbre a la mínima expresión.

¿Cómo es esto? Al principio de cada reunión el equipo de desarrollo elige de entre el listado ordenado por importancia para el cliente, qué requisitos va a implementar en ese ciclo. Y no solo los elige sino que se compromete a tenerlos terminados y probados para la fecha concretada y se pone a trabajar en ellos. Durante el tiempo de trabajo nadie puede interrumpirles ni influir en su ritmo de trabajo.
Marco de trabajo Scrum

Tras esta breve introducción al Scrum (puedes aprender más en los cursos de Scrummanager o visitar el blog de mi amigo Alex quisiera comentar desde mi experiencia, por qué me parece interesante y que dificultades le veo en la implantación de este modelo de desarrollo.

Por un lado Scrum da importancia al equipo y al conocimiento tácito de las personas. Desde que comencé a trabajar y tras mi paso por varias empresas lo importante siempre han sido los compañeros. Cuando hemos tenido buen ambiente entre nosotros y hemos cogido un compromiso con un plazo de entrega, hemos puesto toda la carne en el asador para llegar a ello intentando hacer las cosas bien, aprendiendo de los demás del equipo y compartiendo con ellos mis propios conocimientos. En cambio no pasa lo mismo cuando las decisiones no las tomas tú sino que te las imponen o el equipo no está cohesionado o aparecen interrupciones en el trabajo diario o cuando antes de terminar lo que estás realizando te cambian de repente el alcance del proyecto y tu trabajo no ha servido para nada.

Por otro lado cuando el cliente recibe entregas funcionales que puede utilizar cada breve espacio de tiempo se involucra más en el desarrollo de algo que será suyo. Le es más fácil percibir que sus impresiones, ideas y opiniones son tomadas en cuenta y se reflejan al poco tiempo en el producto que recibe, dándose cuenta de la dificultad que tiene implementar sus peticiones, de modo que está también más receptivo ante retrasos y/o errores.

De todos modos cabe destacar que no es fácil llegar a implantar esta metodología de trabajo ya que hay que conseguir cambiar el modo de pensar de toda la organización, desde la directiva y la gerencia hasta el propio: hace poco a comienzos de un proyecto personal a pequeña escala intenté implantar Scrum para su desarrollo, pero al final con los plazos de entrega tan ajustados acabamos desarrollando un Extreme Programming de libro.

Referencias:

domingo, 11 de enero de 2015

Un nuevo comienzo



Empezamos este año con nuevas ideas y con dominio propio: www.tecnificados.com

Tenemos en mente realizar muchos proyectos e ir escribiendo aquí lo que estamos haciendo para compartirlo con la comunidad.

El primer reto es presentarnos a un concurso de aplicaciones con un juego.

Estamos haciendo un juego de navegador utilizando datos abiertos, de momento no voy a daros más pistas.

Tenemos de plazo hasta el día 15 de este mes y estamos bastante liados, os seguiremos informando.


El equipo de Tecnificados.

miércoles, 30 de abril de 2014

ASP.Net MVC: Subida de imágenes al servidor y recorte con Jcrop

Recientemente tuve que incluir, en un proyecto de ASP.Net MVC en el que estoy trabajando, un formulario donde un usuario podía subir su foto al perfil, y si el sistema detectaba que el tamaño de la imagen subida superaba el 100x100, había que recortarla.

Esta premisa, aunque parece sencilla, encierra varios problemas técnicos a solucionar:

1) Subida de ficheros al servidor con ASP.Net MVC.
2) Recorte de foto y guardado.
3) Puntos a tener en cuenta: versiones de navegadores y otros aspectos técnicos.

Vamos a ir viendo paso a paso cómo implementar esta práctica funcionalidad.

Subida de ficheros al servidor con ASP.Net MVC

Para subir ficheros al servidor desde la Vista, en Mvc se dispone de la clase System.Web.HttpPostedFileBase. Para utilizarla, hay que seguir los pasos:

- Declarar una propiedad de este tipo en el Model que se va a utilizar:

public HttpPostedFileBase Fichero { get; set; }

- Crear en la vista el formulario para realizar la subida de la imagen. La propiedad Fichero del modelo en la vista se representa con un <input type="file">.

- Añadir como propiedad al formulario enctype = "multipart/form-data".

El formulario de selección se mostraría así:

Una vez que se selecciona la imagen y se sube, se trata en el Controlador correspondiente, teniendo en la propiedad Fichero el Stream de la imagen subida:

Y con esto ya se tiene el fichero subido. Como en el Controlador se ha especificado volver a dibujar la Vista, que se alimenta con un Modelo que ya contiene la imagen, se ve la imagen recién subida:


Recorte de foto y guardado

Para recortar la foto lo más sencillo es utilizar JCrop, un plugin de JQuery gratuito disponible en http://deepliquid.com/content/Jcrop.html

Una vez obtenido JCrop, se deben incluir los siguientes ficheros:


En la página web de DeepLiquid se pueden ver varios ejemplos de uso de este plugin realmente potente. A continuación se detalla cómo crear el recorte una vez que se carga la imagen recién subida con el formulario anterior, detectando el tamaño de la misma en el evento load de la imagen. El tamaño del área a recortar se establece fijo ya que no debe sobrepasar el tamaño 100x100:


Las variables que se pueden ver en la función storeCoords son también parte del Model, y en la vista serán campos ocultos que se utilizarán en el Controlador al ejecutar la acción de recortar la imagen:

Al activarse JCrop si la imagen es mayor de 100x100, el usuario debe recortarla si quiere almacenarla en el servidor:

Una vez que el usuario ha seleccionado el área que desea guardar, se ejecuta finalmente la acción de Recortar y se guarda la imagen definitiva.


Puntos a tener en cuenta

Implementar esta funcionalidad requiere tener varias cosas en cuenta:

1) Las variables x, y, height y width, utilizadas por JCrop y necesarias para poder realizar el recorte final, se definen en el Model como string, debido a que JCrop las devuelve como decimales en inglés, con separador ".". Así es más sencillo, en el Controlador, convertir a decimal con el separador del idioma actual:

decimal decX = Convert.ToDecimal(imagen.x.Replace(".", Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator));

2) Internet Explorer pone alguna que otra pega, como siempre. Por ejemplo, si se quiere utilizar el evento "load" de la imagen para detectar el ancho y alto de la misma, para mostrar la funcionalidad de Recortado en caso necesario, previamente hay que ejecutar la línea:

$("img").attr("src", $("img").attr("src"));

Esto es una solución extraída de http://garage.socialisten.at/2013/06/how-to-fix-the-ie9-image-onload-bug/. Con esto Internet Explorar ejecuta el evento "load". Hay otras soluciones utilizando también CSS, a mí ésta me pareció la más sencilla.

3) A lo largo del ejemplo, una vez guardada la imagen, tanto la inicial como la recortada, se cambia de nombre de la misma cada vez que se ejecuta un Action en el Controlador. Esto es debido a que, si se mantiene el mismo nombre de imagen en varias llamadas, aunque la imagen varíe (recortándola, por ejemplo), Internet Explorar la cachea (esto no ocurre ni en Chrome ni Firefox), por lo que siempre mostrará la primera imagen con el nombre dado. Así que para evitarnos esta molestia, utilizando los Ticks del momento actual se genera un nombre único:

string nombreFichero = Path.GetFileNameWithoutExtension(imagen.Fichero.FileName) + "_" + DateTime.Now.Ticks.ToString() + Path.GetExtension(imagen.Fichero.FileName);

4) Cuando se carga la imagen subida por el usuario, y antes de calcular si debe recortarse o no, se muestra. Normalmente cuando la imagen se muestra, se realizará dentro de un contenedor que puede tener definidos un ancho y un alto fijos (por temas de diseño, por ejemplo), por lo que la imagen que se verá en el navegador no tendrá ni su ancho ni alto reales. Para poder recortar correctamente JCrop ofrece la funcionalidad de definir el área en base a su tamaño real. Esto obliga a modificar ligeramente el ejemplo anterior:

En el modelo habrá que establecer 2 nuevas propiedades, "AnchoReal" y "AltoReal", que obtendremos de la imagen al subirla por primera vez, y que JCrop utilizará para calcular el ratio de aspecto:

5) Y por último el amigo Internet Explorer tiene reservada una sorpresa final.
La idea inicial de implementar esta funcionalidad era la de ocultar el input type="file" de Fichero, y simular el submit del formulario detectando cuando cambia este input, ya que es más cómodo para el usuario y visualmente queda más presentable.

Sin embargo, por motivos de seguridad, Internet Explorer no permite cambios en input type="file" mediante Javascript (consultar http://stackoverflow.com/questions/3935001/getting-access-is-denied-error-on-ie8/4335390#4335390 para más información). También hay varias soluciones posibles y es cuestión de probar.

Adjunto un ejemplo con todas las variantes posibles:
1) Sin redimensionar. Imagen recortando a su tamaño original.
2) Redimensionada. Imagen recortando a un ratio de aspecto, ubicada en un contenedor con tamaño fijo establecido en su estilo.
3) Sin redimensionar para navegadores no IE. Si tienes la suerte de estar completamente segur@ de que tus usuarios no utilizarán Internet Explorer, y quieres utilizar la aproximación comentada en el último punto (el input type="file" oculto y simular el submit del formulario de subida con Javascript) también dejo el ejemplo.

https://drive.google.com/drive/folders/0B7Im7mEr5csqNHFXcDBVNGROZ1U

Por supuesto se agradecen todos los comentarios.

¡¡Saludos y hasta la próxima!!

miércoles, 16 de abril de 2014

Tomcat y Eclipse: compañeros de camino II


Ahora que ya tenemos nuestro entorno de pruebas listo, vamos a preparar nuestro entorno de desarrollo.

Escribir paso a paso cómo montar este entorno es un poco latoso, y he pensado que mejor hacerlo con vídeos. Y al final he preparado dos:

a) descargas de Java y Eclipse
b) configuración del entorno de desarrollo

En el primero utilizo estas URLs:
Y únicamente me descargo la JDK y IDE para J2EE. 



 
En el segundo preparo el entorno de desarrollo en estos pasos:
  1. Instalación de la JDK de Oracle (todavía pienso en la JDK de Sun).
  2. Descompresión de Eclipse.
  3. Ejecutamos eclipse, creamos un nuevo proyecto web.
  4. A este proyecto le asignamos como servidor Tomcat7, el cual se descarga automáticamente.
  5. Creamos en el proyecto una JSP con un bucle y probamos que funciona.
Aunque en el vídeo seleccione JAVA 8, luego he tenido que retroceder por problemas de compatibilidad. Lo comento por si os pasa también a vosotros.

Está al doble de la velocidad normal, me parecía un poco pesado ver cómo se descomprime un zip a velocidad normal.

Aquí lo tenéis:



Con esto la creación de los entornos ya está hecha.

Lo siguiente que quiero hacer es un pequeño proyecto de navegación clásica de JSP a Servlet y de Servlet a JSP, y desplegarlo en el entorno de pruebas.

Nos vemos.

lunes, 31 de marzo de 2014

Tomcat y Eclipse: compañeros de camino


En este post vamos a finalizar nuestro entorno de pruebas. Vamos a instalar Tomcat 7 para poder desplegar las aplicaciones que hagamos en nuestro entorno de desarrollo.

Arrancamos nuestra máquina virtual y accedemos a ella a través de nuestro cliente favorito: putty.


Si habéis hecho lo mismo que yo vemos que tenemos algunas actualizaciones pendientes, para estar seguros de que tenemos los paquetes de los repositorios actualizados ejecutamos el comando:

sudo apt-get update

La consola empezará a escribir como loca, en cuando metamos nuestro password. Tranquilos, sólo está actualizando lo que el sistema necesita.



Cuando llegue al final podremos leer:

Leyendo lista de paquetes... Hecho

Ahora vamos a instalar Tomcat 7 y el Administrador Web de Tomcat.

Ejecutamos el comando:

sudo apt-get install tomcat7 tomcat7-admin

A continuación nos aparece todo lo que va a instalar, y nos pregunta si estamos de acuerdo.


Le decimos que Sí y esperamos un rato (largo). Como veis es bastante fácil.

Él sólo se va a bajar Java y todas las dependencias que necesita:


Cuando termina en la consola aparece lo siguiente:

Procesando disparadores para libc-bin ...
ldconfig deferred processing now taking place

Para ver si todo ha ido bien podemos ver la versión de JAVA que tenemos instalada con:

java -version

A mí me aparece esto:

java version "1.6.0_30"
OpenJDK Runtime Environment (IcedTea6 1.13.1) (6b30-1.13.1-1ubuntu2~0.12.04.1)
OpenJDK Client VM (build 23.25-b01, mixed mode, sharing)

Cuando instalamos Tomcat así, se "reparte" por el sistema de ficheros de forma que todo cuadre con el sistema operativo. Las rutas que necesitamos saber son éstas:

Dentro de /var/lib/tomcat6 tenemos estos directorios:
  • common  
  • conf 
  • logs  
  • server  
  • shared  
  • webapps  
  • work
Para arrancarlo, pararlo y esas cosas, podemos usar el comando service:

Arrancar: sudo tomcat7 start
Parar: sudo tomcat7 stop
Reiniciar: sudo tomcat7 restart

Cualquier servicio que instalemos se puede gestionar desde este comando. Mola, ¿eh?

Ahora vamos a configurar los permisos del administrador web.

Por defecto viene deshabilitado, pero vamos a crearnos un usuario para poder gestionar las aplicaciones que contiene.

Editamos su fichero de configuración:

sudo vi /var/lib/tomcat7/conf/tomcat-users.xml

Yo soy de usar este editor, aunque podéis usar cualquier otro.

Éste es el contenido del fichero:



Cómo podéis ver esté todo comentado y muy bien documentado. Explica perfectamente lo que hay que hacer. Yo lo que voy a hacer es pegar este contenido dentro de <tomcat-users>:

<role rolename="manager-gui"/>
<user username="tecnificados" password="tecnificados" roles="manager-gui"/>

Esto otorgará al usuario "tecnificados" privilegios para poder entrar vía web al administrador de Tomcat.



Guardamos el fichero y reiniciamos Tomcat con sudo service tomcat7 restart.

Vamos a probarlo a través del navegador, el contexto es /manager y el puerto por defecto de Tomcat es el 8080.

Ahora hay que redirigir el puerto 8080 para que funcione (si no sabes qué es esto, mira el anterior post).

Yo lo que hago es redirigir el puerto 80 de mi máquina física al 8080 de la máquina virtual. Cuidado, si tenéis el 80 ocupado no os funcionará la redirección.

Ésta es mi configuración de puertos:



Con esto lo que hago es reservarme el puerto 8080 para el Tomcat que usaremos en desarrollo y usar el puerto 80 para el de pruebas.

En mi caso yo accedo al administrador de tomcat así: http://localhost/manager, si lo queréis dejar en el puerto 8080 accederíais con esta otra URL: http://localhost:8080/manager

Al escribir la URL en el navegador lo primero que nos pide es la autenticación:


Escribimos lo que hemos puesto en el fichero de usuarios y pulsamos aceptar.




Desde esta pantalla podremos subir nuestras aplicaciones, pararlas o borrarlas.

Y con esto ya tenemos nuestro entorno de pruebas listo.

Ahora sólo nos queda el entorno de desarrollo.

domingo, 16 de marzo de 2014

Redirección de puertos en Virtual Box


Continuando con mis anteriores "posts", vamos a terminar nuestro entorno de pruebas redirigiendo los puertos que nos interesan de la máquina virtual a nuestro PC.

Con Virtual Box podemos configurar la red de diversas formas, una de ellas es redireccionar los puertos de la máquina virtual a la nuestra.

Es bastante fácil y rápido de configurar, y lo que hace es que tengamos unos puertos destinados al entorno de desarrollo y otros para el entorno de pruebas.

Ejemplo de uso: 

- podemos usar el puerto 8080 para desarrollar en eclipse en nuestro entorno de desarrollo con Tomcat.
- usaremos el puerto 80 para el Tomcat del entorno de pruebas
Más adelante veremos cómo configurar las redes de virtual box para que sean máquinas independientes conectadas a nuestra red y más opciones.

Vamos a hacer la redirección del puerto 22 para poder acceder a nuestra máquina virtual a través de uno de los clientes ssh más extendidos (y con nombre controvertido): "putty".

Si recordáis, cuando instalamos Ubuntu 12 Server dejamos marcada la opción de "Open SSH Server", esto hace que nuestra máquina virtual escuche por el puerto 22 (por defecto) las peticiones ssh.

Antes de nada vamos a bajarnos el cliente de esta url: http://www.putty.org/



Pulsamos en el primer enlace ("here") y seleccionamos el fichero "putty.exe" que más se ajuste a nuestro sistema operativo y a nuestra arquitectura. En mi caso "For Windows on Intel x86".

Descargamos el fichero y lo ejecutamos.


Vamos a hacer una prueba que no debe funcionar: escribimos en "Host Name or (IP Address)" localhost y pulsamos el botón "Open". Nos aparecerá el siguiente error:


Esto ocurre porque nuestra máquina física no sabe que tiene que redirigir las peticiones del puerto 22 a la máquina virtual. Vamos a decírselo.

Sobre nuestra máquina virtual pulsamos botón derecho y en "configuración".


Seleccionamos "Red" en la parte de la izquierda y pulsamos el botón "Reenvío de puertos".


Se nos abre la siguiente ventana. Pulsamos sobre la cruz verde de la derecha.


Nos aparece una linea para añadir una regla. Escribimos en la columna "Puerto anfitrión" el puerto de la máquina física que queremos dirigir y en la columna "Puerto invitado" el puerto de la máquina virtual. Vamos a poner el 22 en las dos columnas.



Si por casualidad el puerto 22 de nuestra máquina física está ocupado, podemos poner otro como el 24. A la hora de lanzar la llamada desde "putty" hay que poner ese número de puerto en el texto "Port" en lugar del 22 que aparece por defecto.

Puede que en algún momento puede que nos aparezca el siguiente aviso:


Se pulsa en el botón "Permitir acceso" y ya no debería aparecernos más.

Volvemos al "putty" (suena un poco raro, ¿verdad?). Y repetimos la operación anterior.



Debería aparecer la siguiente advertencia:



Como es un entorno de pruebas no pasa nada y pulsamos el botón "Si".

A continuación ya deberíamos ver el terminal pidiéndonos nuestro usuario y password.


Trabajar con este terminal es mucho más rápido que directamente contra la máquina virtual. 

Truco: si queremos cortar algún texto solo tendremos que seleccionarlo con el ratón y para pegar pulsar con el botón derecho.

Una vez dentro ya podemos empezar a trabajar con la máquina virtual. Recordar que para apagarla basta con escribir "sudo shutdown -P now".

Con esto ya tenemos el entorno de pruebas listo para configurarlo a nuestro gusto.

Si queremos redirigir más puertos solo tenemos que repetir el proceso tantas veces como puertos queramos redirigir.

martes, 25 de febrero de 2014

Instalación de Ubuntu Server 12


Muy buenas a tod@s, vamos a continuar con el tutorial anterior ("Preparación de entorno de pruebas con Virtual Box").

En este tutorial vamos a seguir paso a paso el proceso de instalación de Ubuntu 12.04 Server en una máquina virtual ya creada y con el fichero ISO cargado en su unidad de CD. Este proceso es análogo a instalarlo en un PC/Servidor con el disco duro "vacio" y teniendo en una unidad el CD de Instalación (o un USB preparado para arrancar con la ISO).

Aviso: esto es sin entorno gráfico. Para lo que vamos utilizar está máquina no nos interesa gastar recursos inutilmente. Estás avisado, no esperes ventanas.

Primer paso: vamos a por nuestro sistema operativo: nos vamos a http://www.ubuntu.com, sección "Downloads", subsección "Server".


Seleccionamos la arquitectura que coincida con nuestro equipo, si no queréis arriesgar, seleccionar 32 bits.


Esperamos que se descargue la ISO. Una vez descargada la montamos en la máquina virtual como explicamos en el tutorial anterior. También podemos grabar el CD y utilizarlo fisicamente en la máquina virtual o en otra máquina del mundo real.

Segundo paso: instalación

Arrancamos la máquina virtual, puede que nos aparezcca algún aviso. A mí me dice que puede que tenga problemas con el audio (no debería haber dejado el hardware del sonido), no pasa nada.


Lo primero que nos aparece es el idioma de la instalación. Seleccionamos el nuestro.


En la siguiente pantalla seleccionaremos la primera opción: "Instalar Ubuntu Server".

 


Ahora toca seleccionar la ubicación:

 

Después viene la configuración del teclado:


Nos pide que pulsemos una serie de teclas para detectar la disposición de nuestro teclado. Al final si todo ha ido bien (y queremos la cofiguración "es"), veremos este mensaje.


Pulsamos "Continuar" y veremos cómo empieza a detectar hardware y configurar componentes.



Configuración de la red: lo único que nos pide es el nombre de la máquina.

 Ahora nos pide el nombre de nuestro usuario y después el password.

Si el password no cumple las características seguras nos lo avisará en esta pantalla:

Después de escribir tu usuario, te preguntara si deseas cifrar tu directorio personal, yo le he dicho que no.

Llega el turno de las particiones: yo selecciono la segunda opción, todo el disco para linux. Cuidado, si tienes algo más en el disco duro y quieres conservarlo ¡¡¡no hagas esto!!!


Cuando solo hay un disco solo hay una elección.


¿Quieres guardar los cambios?  Sí.


¿Vas a usar todo el disco? Todo

 Comienza a preparar el disco.

Nos enseña todos los cambios y nos pregunta otra vez, si estamos de acuerdo con ellos. Este es el punto de "no retorno". Si pulsas "Sí", todo lo que haya en el disco, desaparecerá (y yo no tendré la culpa).

 Ahora empezará a instalar el sistema base.


A continuación nos pregunta por el proxy. Yo no tengo, así que lo dejo en blanco.


Ahora empiezan a descargarse unos cuantos ficheros.


Siguiente parada: configuración de actualizaciones automáticas. Yo le digo que sin ellas.


Llegamos a la selección de programas. Aquí depende de para qué quieras el servidor, yo lo que hago es dejar solamente la opción "OpenSSH Server", con eso permito poder acceder a la máquina por el protocolo seguro SSH. Así puedo conectarme después e instalar lo que me interese.

Si directamente quieres instalar un "Tomcat Java Server", no hay ningún problema. Todo lo que vayamos necesitando en próximos tutoriales lo instalaremos paso a paso.


 Como os comentaba yo lo dejo así:


Pulsamos "Continuar" y veremos cómo se instalan y se descargan paquetes y paquetes:




Nos acercamos al final. Esto es un punto delicado, es la configuración del arranque:
  • Si estás haciendo esto en una máquina virtual limpia no hay problema.
  • Si lo estás haciendo en un pc donde no hay nada, o no te importa lo que hay tampoco hay problema. 
  • Si estás en una máquina con otro sistema operativo instalado, ten cuidado y no sigas estos pasos.
Como no hay nada el en cargador principal le decimos que "SI".


Y con esto ya está la instalación finalizada.



Tercer paso: arrancamos.

Ahora la máquina virtual se reiniciará y vemos como arranca:


 Una vez arrancada veremos nuestro querido terminal


¿Esperabas un entorno gráfico?

Y para terminar vamos a apagarla con el comando: "sudo shutdown -P now". Como lo hacemos con el comando "sudo" nos pedirá la constraseña de nuestro usuario.

 

Y con esto se acaba el tutorial. 

Espero que os haya gustado, y que os animéis a intentarlo.