Probablemente ya hayas visto este video en algún otro blog de informática, pero para todos aquellos que no lo conozcan, acá les publico este video sobre los origenes y evolución de la red de redes.
24 julio 2009
14 julio 2009
Gifs de apoyo a COECYS 09
Apoyando el trabajo que han realizado los amigos organizadores del Congreso de Estudiantes de Ciencias Y Sistemas (COECYS) de este año, público algunos gifs que me permití hacer para que quien quiera los pueda usar en su blog, twitter, messenger y demás lugares y así ayudar a promover el congreso entre sus lectores.
De igual forma, si tienes alguna sugerencia para mejorar los gifs, eres invitado a escribirme y si decides hacer tus propias creaciones, también te invito a que comentes la dirección de tu post.
02 julio 2009
Integración de JUnit y Netbeans
Hacer pruebas de funcionamiento de los diversos componentes de un proyecto es una parte vital del ciclo de desarrollo, consumiendo grandes cantidades de tiempo y recursos en su realización, es por ello que debemos buscar alternativas que nos permitan automatizar estas pruebas, por lo menos a nivel unitario (cada componente).
Una de las propuestas más conocidas es usar el framework JUnit, para escribir y ejecutar pruebas unitarias en proyectos Java.
En esta entrada vamos a ver como integrar y configurar JUnit versión 4, aprovechando las facilidades que brinda un IDE como Netbeans.
La forma en la que JUnit trabaja es indicàndole una serie de entradas y sus salidas esperadas y luego compara los resultados de la ejecuciòn con los valores esperados para encontrar inconsistencias.
En Junit contamos con la clase Assert que es la encargada de realizar todas las comprobaciones que necesitemos mediante una serie de mètodos que validan condiciones especìficas. Entre los mètodos con los que contamos estan:
AssertEquals: Comprueba si dos objetos son iguales, en sus distintas versiones siempre recibe un valor esperado, un valor obtenido y un rango de variación o delta.
asserFalse: Comprueba que la condición pasada como parámetro sea falsa, su contraparte es el mètodo assertTrue
asserNotNull: Verifica que el objeto pasado como parámetro no sea nulo. Su contraparte es el método assertNull
assertSame: Verifica si dos referencias apuntan al mismo objeto. Su contraparte es el mètodo assertNotSame
Fail(): Hace que falle la prueba.
Ejemplo:
Bueno, empecemos nuestro ejemplo creando un nuevo proyecto de aplicaciòn en Netbeans (File > Nuevo Proyecto >Java > java Application) al que le pondremos "test_Junit".
Ahora creamos una clase llamada "Validador" que tendrá métodos para verificar que un paràmetro sean mayor, menor o igual a otro paràmetro. Una posible implementación podría ser la siguiente:
Ahora debemos dar click derecho sobre el icono de la nueva clase y seleccionar Tools > create JUnit tests, donde saldrá una pantalla donde sólo debemos indicar el nombre, paquete y las opciones de generación de código, al final damos click en el botón "aceptar"
Se habrá creado una nueva clase llamada ValidadorTest en el paquete Test (por default) la cual contiene todos los métodos "assert" para probar cada método de nuestra clase, por lo que solo debemos modificar estos métodos para hacer las pruebas que queramos.
Ya modificadas las pruebas solo falta ejecutarlas, para eso nos vamos al menú "Run" y seleccionamos "Test Project", después de un momento obtenemos los resultados de la prueba:
Como ves, no es cosa del otro mundo y permite avanzar mucho más rápido y seguro dado que no tienes que estar parando y haciendo pruebas por tu cuenta cada vez que hacemos una modificación o una nueva función, solamente debemos definir nuestra serie de pruebas desde el inicio e ir ejecutando los test en cada actualización y listo.
Fuentes:
http://junit.org/
http://www.netbeans.org/kb/docs/java/junit-intro.html
http://es.wikipedia.org/wiki/JUnit
http://www.jtech.ua.es/tutoriales/apuntes/sesion-junit-apuntes.htm
http://www.lab.dit.upm.es/~lprg/material/apuntes/pruebas/aceptacion.htm
http://www.javahispano.org/contenidos/es/introduccrion_a_junit/
Una de las propuestas más conocidas es usar el framework JUnit, para escribir y ejecutar pruebas unitarias en proyectos Java.
En esta entrada vamos a ver como integrar y configurar JUnit versión 4, aprovechando las facilidades que brinda un IDE como Netbeans.
La forma en la que JUnit trabaja es indicàndole una serie de entradas y sus salidas esperadas y luego compara los resultados de la ejecuciòn con los valores esperados para encontrar inconsistencias.
En Junit contamos con la clase Assert que es la encargada de realizar todas las comprobaciones que necesitemos mediante una serie de mètodos que validan condiciones especìficas. Entre los mètodos con los que contamos estan:
AssertEquals: Comprueba si dos objetos son iguales, en sus distintas versiones siempre recibe un valor esperado, un valor obtenido y un rango de variación o delta.
asserFalse: Comprueba que la condición pasada como parámetro sea falsa, su contraparte es el mètodo assertTrue
asserNotNull: Verifica que el objeto pasado como parámetro no sea nulo. Su contraparte es el método assertNull
assertSame: Verifica si dos referencias apuntan al mismo objeto. Su contraparte es el mètodo assertNotSame
Fail(): Hace que falle la prueba.
Ejemplo:
Bueno, empecemos nuestro ejemplo creando un nuevo proyecto de aplicaciòn en Netbeans (File > Nuevo Proyecto >Java > java Application) al que le pondremos "test_Junit".
Ahora creamos una clase llamada "Validador" que tendrá métodos para verificar que un paràmetro sean mayor, menor o igual a otro paràmetro. Una posible implementación podría ser la siguiente:
public class Validador {
public Validador(){};
public boolean menorQue(int a, int b){ return a < b;}
public boolean mayorQue(int a, int b){ return a > b;}
public boolean igualQue(int a, int b){ return a==b;}
}
public Validador(){};
public boolean menorQue(int a, int b){ return a < b;}
public boolean mayorQue(int a, int b){ return a > b;}
public boolean igualQue(int a, int b){ return a==b;}
}
Ahora debemos dar click derecho sobre el icono de la nueva clase y seleccionar Tools > create JUnit tests, donde saldrá una pantalla donde sólo debemos indicar el nombre, paquete y las opciones de generación de código, al final damos click en el botón "aceptar"
Se habrá creado una nueva clase llamada ValidadorTest en el paquete Test (por default) la cual contiene todos los métodos "assert" para probar cada método de nuestra clase, por lo que solo debemos modificar estos métodos para hacer las pruebas que queramos.
Ya modificadas las pruebas solo falta ejecutarlas, para eso nos vamos al menú "Run" y seleccionamos "Test Project", después de un momento obtenemos los resultados de la prueba:
Como ves, no es cosa del otro mundo y permite avanzar mucho más rápido y seguro dado que no tienes que estar parando y haciendo pruebas por tu cuenta cada vez que hacemos una modificación o una nueva función, solamente debemos definir nuestra serie de pruebas desde el inicio e ir ejecutando los test en cada actualización y listo.
Fuentes:
http://junit.org/
http://www.netbeans.org/kb/docs/java/junit-intro.html
http://es.wikipedia.org/wiki/JUnit
http://www.jtech.ua.es/tutoriales/apuntes/sesion-junit-apuntes.htm
http://www.lab.dit.upm.es/~lprg/material/apuntes/pruebas/aceptacion.htm
http://www.javahispano.org/contenidos/es/introduccrion_a_junit/
Expandir/Contraer este Post
27 junio 2009
Integracion de Tomcat con Apache
En este post instalaremos Tomcat y lo configuraremos para que se integre con Apache, sobre un Ubuntu 9.04 con KDE 3.5
Para instalar Apache puedes guiarte en parte de este post hasta antes de la parte de instalación de Subversion.
Para instalar Tomcat primero necesitamos tener instalado el JDK de Java de Sun (si ya estas seguro que lo tienes, puedes saltarte estos pasos), por lo que ejecutamos el comando sudo apt-get install sun-java6-jdk, aceptamos su acuerdo y esperamos a que termine. Al final puedes confirmar que todo esta bien instalado con un "java -version" y un "javac -version", si ambos te indican la misma versión, entonces todo esta bien.
Tambien debemos crear la variable de entorno JAVA_HOME apuntando hacia /usr/lib/jvm/java-6-sun, agregándola al final del archivo /usr/profile:
sudo nano /usr/profile
(tambien puedes hacerlo al final del archivo ~/.bash_profile o también ~/.bashrc, dependiendo de cual encuentres en uso) la siguiente línea:
export JAVA_HOME=/usr/lib/jvm/java-6-sun ,
Ahora para actualizar nuestras variables de entorno debemos reiniciar nuestra sesión y listo, si escribes el comando "echo $JAVA_HOME" debería mostrarnos el path que le asignamos.
Todo listo para instalar Tomcat por lo que ejecutamos el siguiente comando:
sudo apt-get install tomcat6 libapache2-mod-jk libapache-mod-jk-doc apache2-threaded-dev
Otra alternativa es descargar el paquete .tar.gz desde el sitio oficial de Tomcat (en cuyo caso debieras seguir las instrucciones del sitio oficial)
Lo que toca ahora es activar el modulo jk mediante el comando:
Por ùltimo debemos modificar el archivo /etc/libapache2-mod-jk/workers.properties, buscamos la linea workers.java_home=/usr/lib/kaffe y la sustituimos por workers.java_home=/usr/lib/jvm/java-6-sun; ademàs debemos fijarnos en los valores de las variables workers.tomcat_home, workers.java_home y ps (descomentarlos en caso que esten comentados)
El otro archivo a considerar es /etc/apache2/mods-enabled/jk.conf que es donde indicamos los puntos de montaje para cada worker especificado en el archivo workers.properties
Para instalar Apache puedes guiarte en parte de este post hasta antes de la parte de instalación de Subversion.
Para instalar Tomcat primero necesitamos tener instalado el JDK de Java de Sun (si ya estas seguro que lo tienes, puedes saltarte estos pasos), por lo que ejecutamos el comando sudo apt-get install sun-java6-jdk, aceptamos su acuerdo y esperamos a que termine. Al final puedes confirmar que todo esta bien instalado con un "java -version" y un "javac -version", si ambos te indican la misma versión, entonces todo esta bien.
Tambien debemos crear la variable de entorno JAVA_HOME apuntando hacia /usr/lib/jvm/java-6-sun, agregándola al final del archivo /usr/profile:
sudo nano /usr/profile
(tambien puedes hacerlo al final del archivo ~/.bash_profile o también ~/.bashrc, dependiendo de cual encuentres en uso) la siguiente línea:
export JAVA_HOME=/usr/lib/jvm/java-6-sun ,
Ahora para actualizar nuestras variables de entorno debemos reiniciar nuestra sesión y listo, si escribes el comando "echo $JAVA_HOME" debería mostrarnos el path que le asignamos.
Todo listo para instalar Tomcat por lo que ejecutamos el siguiente comando:
sudo apt-get install tomcat6 libapache2-mod-jk libapache-mod-jk-doc apache2-threaded-dev
Otra alternativa es descargar el paquete .tar.gz desde el sitio oficial de Tomcat (en cuyo caso debieras seguir las instrucciones del sitio oficial)
Lo que toca ahora es activar el modulo jk mediante el comando:
/etc/apache2/mods-enabled#a2enmod jk
Por ùltimo debemos modificar el archivo /etc/libapache2-mod-jk/workers.properties, buscamos la linea workers.java_home=/usr/lib/kaffe y la sustituimos por workers.java_home=/usr/lib/jvm/java-6-sun; ademàs debemos fijarnos en los valores de las variables workers.tomcat_home, workers.java_home y ps (descomentarlos en caso que esten comentados)
El otro archivo a considerar es /etc/apache2/mods-enabled/jk.conf que es donde indicamos los puntos de montaje para cada worker especificado en el archivo workers.properties
Expandir/Contraer este Post
19 junio 2009
Integración entre hudson y trac
En este post veremos como lograr que Hudson y Trac se integren mediante un plugin que crea links desde un proyecto de Hudson hacia una instancia de Trac, con lo cual conseguimos "decorar" los reportes de cambios de Hudson agregando links a los apartados de Trac, por ejemplo la wiki, tickets, conjunto de cambios y el visor del código fuente.
Lo primero que hacemos es abrir la página inicial de hudson ("http://localhost:8080") y damos click sobre el link "Manage Hudson" de la barra lateral izquierda
Ahora buscamos el link "Manage Plugins" y damos click en él.
En la siguiente página, damos click en la pestaña "Available" y luego buscamos el plugin "Trac Plugin", lo marcamos y damos click en el botón "install" hasta el final de la lista.
Ahora Hudson nos indica que una vez instalado el plugin, debe reiniciarse para que los cambios tengan efecto por lo que damos click en el botón "Restart now"
Esperamos mientras Hudson se reinicia, luego de algunos segundos nos regresará al inicio de Hudson. Ahora para confirmar que el plugin ha sido instalado debemos ir al link "Manage Hudson" > "Manage Plugins" y la pestaña "Installed" y debemos ver que aparezca en la lista la entrada "Hudson Edgewall Trac plugin".
Listo, ya hemos agredado el plugin, ahora para usarlo en un job que hayamos creado previamente, debemos editar las configuraciones del job (click sobre el job, luego en el link "configure")
Buscamos la entrada "Trac website" y escribimos "http://localhost/trac"; por último buscamos la lista "Repository Browser", seleccionamos "Trac" y damos click en el botòn "save" al final de la página.
Ahora nos aparecerá un nuevo link para trac en la barra lateral derecha de la página del Job, el cual apunta al "project enviroment" de Trac.
Listo, ahora, si por ejemplo hacemos un commit, la página de cambios del Job relacionado tendrá los links apropiados para el conjunto de cambios y la página de tickets de Trac, respectivamente.
Además en la parte de detalle de cambios de Hudson habrá un link hacia las páginas de Trac para el conjunto de cambios "committed", archivos cambiados y las diferencias entre las versiones de archivos.
Lo primero que hacemos es abrir la página inicial de hudson ("http://localhost:8080") y damos click sobre el link "Manage Hudson" de la barra lateral izquierda
Ahora buscamos el link "Manage Plugins" y damos click en él.
En la siguiente página, damos click en la pestaña "Available" y luego buscamos el plugin "Trac Plugin", lo marcamos y damos click en el botón "install" hasta el final de la lista.
Ahora Hudson nos indica que una vez instalado el plugin, debe reiniciarse para que los cambios tengan efecto por lo que damos click en el botón "Restart now"
Esperamos mientras Hudson se reinicia, luego de algunos segundos nos regresará al inicio de Hudson. Ahora para confirmar que el plugin ha sido instalado debemos ir al link "Manage Hudson" > "Manage Plugins" y la pestaña "Installed" y debemos ver que aparezca en la lista la entrada "Hudson Edgewall Trac plugin".
Listo, ya hemos agredado el plugin, ahora para usarlo en un job que hayamos creado previamente, debemos editar las configuraciones del job (click sobre el job, luego en el link "configure")
Buscamos la entrada "Trac website" y escribimos "http://localhost/trac"; por último buscamos la lista "Repository Browser", seleccionamos "Trac" y damos click en el botòn "save" al final de la página.
Ahora nos aparecerá un nuevo link para trac en la barra lateral derecha de la página del Job, el cual apunta al "project enviroment" de Trac.
Listo, ahora, si por ejemplo hacemos un commit, la página de cambios del Job relacionado tendrá los links apropiados para el conjunto de cambios y la página de tickets de Trac, respectivamente.
Además en la parte de detalle de cambios de Hudson habrá un link hacia las páginas de Trac para el conjunto de cambios "committed", archivos cambiados y las diferencias entre las versiones de archivos.
Expandir/Contraer este Post
18 junio 2009
Instalación y Configuración de Trac
Trac es una herramienta para la gestión de proyectos y seguimiento de errores, fuertemente relacionado con Subversion.
En este post veremos como instalar Trac e integrarlo con Apache y Subversion.
Lo primero que hacemos es instalar trac (y sus dependencias) junto al modulo libapache2-mod-python, mediante el siguiente comando:
Ahora debemos crear una carpeta para que sirva de ambiente de proyectos (project enviroment) para que Trac pueda almacenar informaciòn sobre páginas de wikis, tickets, reportes, configuraciones, etc. En nuestro ejemplo la carpeta se llama trac_env y esta alojada en la carpeta del usuario (/home/tuUsuario/ abreviado como ~/), y www-data es el usuario creado por Apache.
trac-admin empezará a preguntarnos datos sobre la configuración; el primero es el nombre del proyecto, puede ser cualquiera, por ejemplo "holaTrac". El segundo parametro es el string de conección a la base de datos (en caso tengas uno instalado, como MySql o algo así) que dejamos vacío por default. El tercer valor es el tipo de sistema de control de versiones, por default es subverion,lo dejamos así. El cuarto es el path absoluto a la carpeta del repositorio, por ejemplo "/home/tuUsuario/repositorio"
Al terminar la configuración del ambiente podemos aprovechar para crear un grupo "trac" donde agregaremos a todos los usuarios que necesitemos que tengan acceso al enviroment (como tu usuario, y www-data) y cambiamos el dueño y el grupo de todos los archivos generados dentro de trac_env.
Ahora debemos crear un archivo de configuración para que apache reconozca la localización de la carpeta de /trac y de paso aprovechamos para escribir la configuración necesaria para que trac use el mismo archivo de contraseñas de Subversion.
Y agregamos las siguientes líneas:
<Location /trac> #set up Trac handling
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /home/tuUsuario/trac_env
PythonOption TracUriRoot /trac
# Use the SVN password file.
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</Location>
Debes notar que el parametro que sigue al TracUriRoot debe ser el mismo que el que esta despues de Location
Ahora debemos hacer que Apache reconozca "/trac" como un sitio valido y permitido, para esto, nos movemos a la carpeta sites-enabled de apache y creamos un enlace al archivo trac.conf que creamos previamente.
Por último reiniciamos apache:
Para probar la instalación, escribimos la url "http://localhost/trac" en nuestro navegador donde nos encontraremos con una página que nos lista los proyectos que hemos creado (como el holaTrac).
Al dar click en el link del proyecto, entramos a su "wiki" donde tenemos varias opciones para para registrar, por ejemplo la opción de "browse source", ver tickets, agregar tickets y buscar.
En la parte de "browse source" tenemos un listado de las carpetas del repositorio, donde podemos incluso llegar a ver los archivos fuentes y los cambios que han tenido.
Bueno hasta aquí llega este post, ojalá les haya servido, saludos.
Fuentes:
http://trac.edgewall.org/wiki/TracInstall
http://es.wikipedia.org/wiki/Trac
http://trac.edgewall.org/wiki/TracModPython
https://help.ubuntu.com/community/UbuntuTracHowto
En este post veremos como instalar Trac e integrarlo con Apache y Subversion.
Lo primero que hacemos es instalar trac (y sus dependencias) junto al modulo libapache2-mod-python, mediante el siguiente comando:
sudo apt-get install trac libapache2-mod-python
Ahora debemos crear una carpeta para que sirva de ambiente de proyectos (project enviroment) para que Trac pueda almacenar informaciòn sobre páginas de wikis, tickets, reportes, configuraciones, etc. En nuestro ejemplo la carpeta se llama trac_env y esta alojada en la carpeta del usuario (/home/tuUsuario/ abreviado como ~/), y www-data es el usuario creado por Apache.
sudo mkdir ~/trac_env
sudo chown -R www-data ~/trac_env
cd ~/trac_env
sudo trac-admin holaTrac initenv
sudo chown -R www-data ~/trac_env
cd ~/trac_env
sudo trac-admin holaTrac initenv
trac-admin empezará a preguntarnos datos sobre la configuración; el primero es el nombre del proyecto, puede ser cualquiera, por ejemplo "holaTrac". El segundo parametro es el string de conección a la base de datos (en caso tengas uno instalado, como MySql o algo así) que dejamos vacío por default. El tercer valor es el tipo de sistema de control de versiones, por default es subverion,lo dejamos así. El cuarto es el path absoluto a la carpeta del repositorio, por ejemplo "/home/tuUsuario/repositorio"
Al terminar la configuración del ambiente podemos aprovechar para crear un grupo "trac" donde agregaremos a todos los usuarios que necesitemos que tengan acceso al enviroment (como tu usuario, y www-data) y cambiamos el dueño y el grupo de todos los archivos generados dentro de trac_env.
sudo addgroup trac
sudo useradd tuUsuario trac
sudo useradd www-data trac
sudo chown -R www-data:trac holaTrac
sudo chmod -R 770 holaTrac
sudo useradd tuUsuario trac
sudo useradd www-data trac
sudo chown -R www-data:trac holaTrac
sudo chmod -R 770 holaTrac
Ahora debemos crear un archivo de configuración para que apache reconozca la localización de la carpeta de /trac y de paso aprovechamos para escribir la configuración necesaria para que trac use el mismo archivo de contraseñas de Subversion.
sudo nano /etc/apache2/sites-available/trac.conf
Y agregamos las siguientes líneas:
<Location /trac> #set up Trac handling
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /home/tuUsuario/trac_env
PythonOption TracUriRoot /trac
# Use the SVN password file.
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</Location>
Debes notar que el parametro que sigue al TracUriRoot debe ser el mismo que el que esta despues de Location
Ahora debemos hacer que Apache reconozca "/trac" como un sitio valido y permitido, para esto, nos movemos a la carpeta sites-enabled de apache y creamos un enlace al archivo trac.conf que creamos previamente.
cd /etc/apache2/sites-enabled
sudo ln -s ../sites-available/trac.conf 010-trac
sudo ln -s ../sites-available/trac.conf 010-trac
Por último reiniciamos apache:
sudo /etc/init.d/apache2 restart
Para probar la instalación, escribimos la url "http://localhost/trac" en nuestro navegador donde nos encontraremos con una página que nos lista los proyectos que hemos creado (como el holaTrac).
Al dar click en el link del proyecto, entramos a su "wiki" donde tenemos varias opciones para para registrar, por ejemplo la opción de "browse source", ver tickets, agregar tickets y buscar.
En la parte de "browse source" tenemos un listado de las carpetas del repositorio, donde podemos incluso llegar a ver los archivos fuentes y los cambios que han tenido.
Bueno hasta aquí llega este post, ojalá les haya servido, saludos.
Fuentes:
http://trac.edgewall.org/wiki/TracInstall
http://es.wikipedia.org/wiki/Trac
http://trac.edgewall.org/wiki/TracModPython
https://help.ubuntu.com/community/UbuntuTracHowto
Expandir/Contraer este Post
17 junio 2009
Opera Unite: Un servidor web en el navegador
Imagina simplemente convertir tu computadora (o cualquier otro dispositivo que use Opera) en un servidor web simplemente habilitando una función desde el navegador, pues esto es lo que propone la nueva tecnología de Opera, llamada Opera Unite e incluída a partir de la versión 10 del navegador web de Opera (aún en fase de pruebas).
En otras palabras tu ordenador dejará de ser sólo un medio para interactuar con la red para convertirse en parte de la estructura de la web, dejando de depender de grandes servidores y permitiéndote brindar servicios y compartir contenidos desde el navegador, todo esto sin importar si eres un usuario técnico o no.
A continuación un video acerca del punto de vista de Opera Unite:
Algunas de las funcionalidades más sobresalientes (por ahora) son:
Opera Unite es una gran propuesta para la web interpersonal, pero dependerá de los usuarios, desarrolladores, companías, empresarios, y cualquier persona visionaria para crecer y llegar a ser una verdadera revolución.
Fuentes:
http://labs.opera.com/
news/2009/06/16/
http://unite.opera.com/
(Y todavía hay quienes me preguntan porque prefiero usar Opera ¬¬,)
Expandir/Contraer este Post
Instalación y configuración de Hudson
Hudson es una herramienta open source para integración contínua que nos ayuda a monotorizar la ejecución de tareas repetitivas como el compilar un proyecto cada cierto tiempo. Además se enfoca en la construcción y prueba de proyectos de software contínuamente y en monitorizar la ejecución de tareas ejecutadas externamente.
Algunas de las características más sobresalientes de la herramienta son:
- Fácil de instalar: podemos hacer un deployment del archivo hudson.war en cualquier web container como tomcat, pero también podemos ejecutarlo como standalone mediante el comando:
java -jar hudson.war
- Configuración: Se realiza totalmente mediante su interfaz web lo cual nos ahorra el trabajo de estar editando archivos XML por nuestra cuenta.
- Soporta cvs y subversion como SCM: (SCM=manejador de la configuración del software) Aunque también puede trabajar sin repositorio para control de versiones (scm).
- Extensión de la herramienta mediante plugins. Actualmente se cuentan con plugins de JIRA, findbugs, Plot, Polarion, Trac, Clover entre otros.
- Soporte para reportes de JUnit y TestNG: Los cuales pueden ser tabulados, resumidos y desplegados junto con información histórica.
En este post veremos como instalar y configurar la herramienta e integrarla con Apache y Subversion. (si aún no has instalado Subversion, puedes revisarte este post para hacerlo)
Lo primero que debemos hacer es descargar el archivo hudson.war desde su página oficial.
Ya descargado, podemos probarlo abriendo una consola en la carpeta donde este el archivo y ejecutando el comando:java -jar hudson.war con lo que empezará a escuchar solicitudes desde el puerto 8080; es importante no cerrar la ventana de comandos mientras usemos hudson ya que si lo hacemos, se para el servicio.
Para probar hudson nos vamos al navegador y escribimos http://localhost:8080/ con lo que nos deberá abrir la siguiente página:
Como notaremos, la primera vez que lo ejecutamos no hay ningún trabajo en lista, por lo que procedemos a crear uno dando un click en el link "new job" de la esquina superior izquierda. En esta nueva página, se nos presentarán cuatro opciones diferentes para crear un tipo de trabajo, sin embargo, nosotros seleccionamos la segunda "build a free-style software project" y le asignamos un nombre al trabajo (en mi caso "holaHudson"), al final presionamos ok.
La siguiente es la página de configuración del nuevo job, aquí podemos chequear todas las opciones que nos dá pero lo más importante es que configuremos en la parte de "Source Code Management" la url de nuestro repositorio de subversion (esto si has leido mis posts anteriores, si no, puedes omitirlo) la cual es "http://localhost/svn/trunk/helloSubversion".
También debemos configurar la opción build triggers donde tenemos varias opciones, seleccionamos la opción "Poll SCM" (SCM es el Subversion) y le indicamos que haga una revisión cada media hora, por lo que escribimos 30 * * * para que Hudson le pregunte a Subversion cada media hora por nuevas actualizaciones.
En la casilla de Build debemos indicarle a Hudson como debe construir el proyecto, Hudson nos da varios mecanismos, sin embargo nosotros usaremos Ant, por lo que seleccionamos "invoke Ant" (Ant debe estar instalado en la máquina del repositorio)
En target debemos especificar los targets definidos en el build.xml del proyecto, generado automáticamente por Netbeans que queremos que Hudson ejecute, por lo que sólo escribimos "compile test javadoc"
Ahora debemos marcar la casilla "generate javadoc" para que la documentación de las clases se actualize automáticamente, sólo debemos pasarle la direccion de la carpeta dentro del proyecto donde queremos que se guarde, en nuestro ejemplo es "helloSubversion/dist/javadoc"
Listo, ahora sólo damos click en save y ya tendremos nuestro primer job guardado. Si regresamos al index de Hudson ("http://localhost:8080") veremos que habrá un listado de todos los jobs que hemos configurado.
Si ahora damos click en nuestro nuevo job (helloHudson) entramos a su panel de administración (por así llamarlo), donde entre otras cosas podemos dar click en el link "build now" con el cual ejecutamos inmediatamente el job (sin esperar los 30 minutos), al hacerlo nos aparecerá una nueva entrada en en el apartado "build history" de la columna izquierda y si damos click en ella entramos al "panel de control" del "build" (por así llamarlos)
Lo más importante de este panel es que podemos revisar cual fue la salida de la consola ya que es muy útil si tenemos algún problema con los builds y no sepamos porque.
Por ejemplo, la salida que obtuvimos con el último build es:
View as plain text
Started by user anonymous
Updating http://localhost/svn/trunk/helloSubversion
At revision 12
no change for http://localhost/svn/trunk/helloSubversion since the previous build
[helloSubversion] $ ant compile javadoc
Buildfile: build.xml
....
....
....
init:
-javadoc-build:
[javadoc] Warning: Leaving out empty argument '-windowtitle'
[javadoc] Generating Javadoc
[javadoc] Javadoc execution
[javadoc] Loading source file /home/alexander/.hudson/jobs/helloHudson/workspace/helloSubversion/src/hellosubversion/Main.java...
[javadoc] Constructing Javadoc information...
[javadoc] Standard Doclet version 1.6.0_13
[javadoc] Building tree for all the packages and classes...
[javadoc] Building index for all the packages and classes...
[javadoc] Building index for all classes...
-javadoc-browse:
javadoc:
BUILD SUCCESSFUL
Total time: 3 seconds
Publishing Javadoc
Finished: SUCCESS
Donde podemos ver que no tuvimos mayor problema.
Bueno, esto fue todo con respecto a Hudson (por ahora), espero que este post les ayude a instalarlo, los anime a explorar un poco más la herramienta y descubran los beneficios que puede brindarnos.
Saludos.
Fuente:
Documentación Oficial: http://wiki.hudson-ci.org/display/HUDSON/Use+Hudson
Un muy buen manual: http://ivanator.wordpress.com/2009/01/12/montando-un-entorno-integracion-continua-hudson-ant-svn-netbeans/
Expandir/Contraer este Post
15 junio 2009
Integración de Subversión y Netbeans
Continuando con los posts relacionados con el sistema Subversión, en esta ocación veremos como realizar una integración entre este y el IDE Netbeans para desarrollo.
En nuestro caso usaremos la versión 6.5 de Netbeans para Ubuntu, por lo que si no lo tienes instalado puedes bajarlo de aquí, si aún no tienes instalado o configurado Subversion, puedes revisar mi post anterior
Ya descargado el archivo .deb, le debemos dar permisos de ejecución por lo que nos vamos a consola y ejecutamos (suponiendo que guardaste el instalador en el escritorio):
cd ~/Escritorio
chmod +x ./netbeans-6.5-ml-linux.sh
./netbeans-6.5-ml-linux.sh
chmod +x ./netbeans-6.5-ml-linux.sh
./netbeans-6.5-ml-linux.sh
Con lo aparecerá en instalador gráfico de Netbeans por lo que sólo debemos seguir sus instrucciones hasta terminar.
Ahora a lo que concierne en este post, abrimos Netbeans y nos vamos al menú llamado "versioning" donde damos click sobre "subversion" y luego sobre "checkout" (ver imagen) donde nos debería aparecer una forma donde debemos ingresar la url del servidor de subversion así como el nombre y password de algún usuario de subversion.
Es importante que en el campo "url" ingresemos la dirección incluyendo la carpeta "trunk" (como en la imagen) para que sea ahí donde almacene el proyecto y los commits que realicemos.
Si todo sale bien y logra conectarse y validar el usuario, nos mostrará otra ventana donde aparecerá la carpeta trunk en la casilla de repository folder, por lo que lo dejamos así y damos click en el botón finish.
Si volviera a preguntarnos las credenciales, las ingresamos y damos click en retry, en ese momento, si netbeans logra conectarse, nos dirá que aún no hay un proyecto creado por lo que podemos hacerlo o no (en el caso que ya tengamos uno creado y solo deseemos subirlo al repositorio).
Ahora vamos a ver como podemos subir un proyecto ya existente al servidor de subversion, para eso usaremos un proyecto de prueba llamado "holaSubversion", el cual después de crearlo damos click derecho sobre su nombre, en la columna derecha (donde se muestra el árbol de archivos), clickeamos en "versioning" y luego en "import into subversion repository" donde, en la siguiente pantalla confirmamos la url del repositorio y los datos del usuario, presionamos next y se nos mostrará una tabla con todos los archivos que subiremos al repositorio (ver imagen) por lo que ahora damos click en finish para que Netbeans empiece la transferencia.
Si ahora revisamos nuestro repositorio mediante el navegador web (http://localhost/svn) veremos que en la carpeta trunk esta ahora alojado nuestro nuevo proyecto.
Cómo hacer un commit?
Supongamos que hemos trabajado cierto tiempo sobre una parte del proyecto y deseamos realizar un commit de los archivos modificados,por lo que debemos guardar el proyecto y luego dando click derecho sobre el icono del proyecto en la columna izquierda y seleccionando "Subversion" y luego la opción commit (ver imagen derecha).
Ahora nos aparecerá una pantalla donde nos indicará cuales han sido los cambios que se han hecho sobre el proyecto y que archivos se han modificado, por lo que damos click en "commit" y netbeans actualizará automáticamente en el repositorio los archivos modificados.
Supongamos que tiempo después de trabajar nos damos cuenta que hay un error en el proyecto y que necesitamos regresar a una etapa anterior, esto lo podemos hacer simplemente dando click sobre el ícono del proyecto, luego en subversion y luego en "revert modifications", donde nos aparecerá una ventana solicitando le indiquemos a que revisión debemos retornar (ver imagen), para este ejemplo seleccionamos "Revert Modifications from Single Commit" y luego presionamos el botón search por lo que aparece una nueva ventana donde si presionamos el botón "list" aparece un listado de todas los commits que se han realizado en la fecha indicada.
Aquì seleccionamos la versión anterior y damos click en ok y luego en el botón "revert". Si ahora observamos nuestro proyecto veremos que se ha retrocedido en el tiempo hasta la versión que solicitamos, por lo que ahora podremos hacer las modificaciones que queramos.
Bueno, eso es todo por ahora, espero que este post les ayude a comenzar a explorar las diversas propiedades de usar subversion junto a un IDE como Netbeans.
Fuentes:
Instalación de Netbeans en Ubuntuhttp://www.guia-ubuntu.org/index.php?title=NetBeans
http://wiki.netbeans.org/SpanishTranslationSVN6.5Ubuntu
http://wiki.netbeans.org/SpanishTranslationSVN6.5
Expandir/Contraer este Post
14 junio 2009
Instalación y Configuracíon de Subversion
Subversion (SVN) es uno de los sistema para manejo y control de versiones más usado hoy en día, llegando a reemplazar a sistemas anteriores como CVS.
Algunas de las ventajas que nos da trabajar un proyecto junto a un sistema de control de versiones es que este centraliza mediante un repositorio todos los documentos, archivos fuentes, librerías y demás por lo que evitamos duplicados y redundancia de códigos; otra ventaja es que nos ayuda a mantener la información de la evolución del sistema (su historia) y no sólo de los componentes individuales. Intenta mantener todo esto en un proyecto grupal sin usar un controlador de versiones y verás el verdadero infierno en que se puede convertir.
Es por eso que algunos ejemplos de proyectos en los cuales se usa actualmente SVN son Apache, KDE, GCC, por mencionar algunos.
En este manual vamos a instalar Subversión sobre Apache en un Ubuntu 9.04, sin embargo, los comandos son los mismos para cualquier otra versión de Linux.
Bueno, empecemos con la instalación, lo primero que debemos tener instalado es Apache, por lo que aquí dejo unas instrucciones sencillas para hacerlo, si tu ya tienes instalado Apache, puedes saltarte a los siguientes pasos.
Instalación de Apache:
Lo primero que debemos hacer es instalar Apache y Subversion junto con el módulo de integración de ambos, esto lo conseguimos con el comando:
Esto instalará Apache junto a todas sus dependencias por lo que lo siguiente es modificar el archivo httpd:
y agregamos las siguientes líneas:
Donde debes reemplazar usuario por tu nombre de usuario (con el que te logueas en Ubuntu). Guardamos y reiniciamos apache:
Por lo que nos deberá aparecer un mensaje indicándonos que se ha levantado correctamente el servicio, por lo que ahora podemos probar a escribir "http://localhost" en el navegador, si todo esta correcto deberíamos obtener una página con el texto "It, Works!", si es asì, ya tenemos instalado Apache (la carpeta donde estan los documentos web es /var/www/ por si deseas cambiar ese index)
Instalación de Subversion:
Si te saltaste la sección anterior porque ya tienes instalado Apache, solamente deberás instalar los siguientes paquetes:
Esto instalará subversion junto con el módulo de integración para apache, por lo que ahora debemos de hacer las configuraciones para permitir que se modifiquen los archivos del repositorio desde web, mediante apache, esto lo conseguimos a través del protocolo WEB/DAV ((Web-based Distributed Authoring and Versioning)), el cual es una extensión del HTTP.
WEBDAV esta diseñado para permitir a grupos o individuos el editar y manejar archivos almacenados en un servidor web. El protocolo permite la creacion de “web-shares” que pueden usarce para almacenar archivos, proyectos colaborativos, editar sitios web, entre otras cosas. WebDAV soporta propiedades tales como editar, copiar, y mover archivos, poner candados, listas de recursos, y modificacion de propiedades.
Para más información sobre WEBDAV en Apache, podemos consultar el siguiente enlace
El módulo de subversion utiliza WEBDAV por lo que es de esperar que la instalación habilite los modulos, pero para confirmar debemos ingresar el siguiente comando:
Ahora lo que deberemos hacer es crear una carpeta para el repositorio, esta puedes ponerla donde quieras y con el nombre que quieras, en mi caso será "~/repositorio"
Ejecutamos el siguiente comando para que subversion cree un nuevo repositorio en la carpeta indicada, usando la herramienta svnadmin:
Ahora hay q configurar Apache para que reconozca el repositorio. Esto lo hacemos editando el archivo:
Buscamos la línea #<location /svn> y la descomentamos (quitamos el simbolo de #) ahora habilitamos el repositorio descomentando la linea #DAV svn, descomentamos la linea #SVNPath y escribimos la direccion de la carpeta de repositorio (en mi caso, ~/repositorio). Para el control de acceso, haremos la configuracion del modo basico, pero sería bueno que leyeras las instrucciones que estan comentadas para los otros dos modos en caso que creas que sea necesario un control mas fino para tu proyecto. Descomentamos las siguientes lineas #AuthType Basic, #AuthName "Subversion Repository", #AuthUserFile /etc/apache2/dav_svn.passwd, #Require valid-user, #</Location> por lo que al final nuestro archivo quedará algo así:
Guardamos y salimos.
Ahora debemos crear los usuarios para trabajar con Subversion, esto podemos hacerlo de dos formas, creamos usuarios individualmente mediante el comando:
Donde usuario es cualquier nombre que desees, luego ingresas tu password y luego el password del nuevo usuario.
Otra forma es creando un grupo de usuarios con todos los permisos y restricciones, y luego agregando cuantos usuarios comunes como se requieran:
ahora creamos todos los usuarios que necesitemos y los agregamos al grupo:
Ahora le damos permisos al grupo sobre el repositorio:
Para que los usuarios al crear revisiones, las creen con determinados permisos de manera que todos los usuarios puedan acceder, debemos asignarles el umask y asì evitamos errores de permiso denegado, como este:
Asignamos el umask para cada usuario que creemos, editamos el archivo .profile de su home, por ejemplo:
y buscamos la línea "#umask 022" y la cambiamos por "umask 770"
Ya casi terminamos, ahora sólo debemos importar la estructura de carpetas: trunk, branches, y tags a nuestro repositorio. A continuación una descripción del porque de esta estructura:
trunk: contiene el tronco principal del proyecto donde se va creando los directorios/ficheros y se van modificando.
branches: es donde se guardan copias del tronco principal en estas para poder hacer cambios experimentales y pruebas sin tener que modificar el trunk.
tags:Acá se guardan versiones del proyecto, que ya están terminadas y sobre las cuales no se harán más cambios. (son versiones históricas)
Para crear esta estructura en el repositorio, creamos una carpeta temporal cualquiera (por ejemplo, ~/tmpRepositorio)
Ahora importamos esta estructura al subversion mediante el comando:
Donde en file:// debes poner la dirección local de la carpeta que usarás para repositorio.
El parámetro despues de -m es para enviarle un mensaje a subversion indicando la razón de la operación.
Por último debemos cambiar los permisos del repositorio para que se puedan realizar los commits (actualizaciones):
sudo chmod -R 770 /home/alexander/repositorio
Listo, ya tenemos instalado y configurado Subversion, por lo que ahora deberemos reiniciar el servidor Apache:
Y escribimos en nuestro navegador: "http://localhost/svn" donde nos pedirá que nos autentiquemos, escribimos el usuario y contraseñas que creamos para Subversion y listo, nos deberá mostrar la siguiente estructura de carpetas:
Fuentes:
Instalaciòn de Apache: http://ubuntu-ar.org/node/206
Wiki sobre Subversion: http://en.wikipedia.org/wiki/Subversion_(software)
Conf. de WEBDAV junto a Apache: http://www.digital-arcanist.com/sanctum/article.php?story=20070427101250622
Instalación y conf. de Subversion: http://sherekan.com.ar/2008/03/25/instalacion-configuracion-y-uso-de-subversion-en-linux/
Algunas de las ventajas que nos da trabajar un proyecto junto a un sistema de control de versiones es que este centraliza mediante un repositorio todos los documentos, archivos fuentes, librerías y demás por lo que evitamos duplicados y redundancia de códigos; otra ventaja es que nos ayuda a mantener la información de la evolución del sistema (su historia) y no sólo de los componentes individuales. Intenta mantener todo esto en un proyecto grupal sin usar un controlador de versiones y verás el verdadero infierno en que se puede convertir.
Es por eso que algunos ejemplos de proyectos en los cuales se usa actualmente SVN son Apache, KDE, GCC, por mencionar algunos.
En este manual vamos a instalar Subversión sobre Apache en un Ubuntu 9.04, sin embargo, los comandos son los mismos para cualquier otra versión de Linux.
Bueno, empecemos con la instalación, lo primero que debemos tener instalado es Apache, por lo que aquí dejo unas instrucciones sencillas para hacerlo, si tu ya tienes instalado Apache, puedes saltarte a los siguientes pasos.
Instalación de Apache:
Lo primero que debemos hacer es instalar Apache y Subversion junto con el módulo de integración de ambos, esto lo conseguimos con el comando:
sudo apt-get install apache2 subversion lipapache2-svn
Esto instalará Apache junto a todas sus dependencias por lo que lo siguiente es modificar el archivo httpd:
sudo nano /etc/apache2/httpd.conf
y agregamos las siguientes líneas:
ServerName localhost
User usuario
Group usuario
User usuario
Group usuario
Donde debes reemplazar usuario por tu nombre de usuario (con el que te logueas en Ubuntu). Guardamos y reiniciamos apache:
sudo /etc/init.d/apache2 restart
Por lo que nos deberá aparecer un mensaje indicándonos que se ha levantado correctamente el servicio, por lo que ahora podemos probar a escribir "http://localhost" en el navegador, si todo esta correcto deberíamos obtener una página con el texto "It, Works!", si es asì, ya tenemos instalado Apache (la carpeta donde estan los documentos web es /var/www/ por si deseas cambiar ese index)
Instalación de Subversion:
Si te saltaste la sección anterior porque ya tienes instalado Apache, solamente deberás instalar los siguientes paquetes:
sudo apt-get install subversion libapache2-svn
Esto instalará subversion junto con el módulo de integración para apache, por lo que ahora debemos de hacer las configuraciones para permitir que se modifiquen los archivos del repositorio desde web, mediante apache, esto lo conseguimos a través del protocolo WEB/DAV ((Web-based Distributed Authoring and Versioning)), el cual es una extensión del HTTP.
WEBDAV esta diseñado para permitir a grupos o individuos el editar y manejar archivos almacenados en un servidor web. El protocolo permite la creacion de “web-shares” que pueden usarce para almacenar archivos, proyectos colaborativos, editar sitios web, entre otras cosas. WebDAV soporta propiedades tales como editar, copiar, y mover archivos, poner candados, listas de recursos, y modificacion de propiedades.
Para más información sobre WEBDAV en Apache, podemos consultar el siguiente enlace
El módulo de subversion utiliza WEBDAV por lo que es de esperar que la instalación habilite los modulos, pero para confirmar debemos ingresar el siguiente comando:
sudo a2enmod dav_svn
, lo cual nos mostrará un resultado similar a la imagen. Ahora lo que deberemos hacer es crear una carpeta para el repositorio, esta puedes ponerla donde quieras y con el nombre que quieras, en mi caso será "~/repositorio"
mkdir ~/repositorio
Ejecutamos el siguiente comando para que subversion cree un nuevo repositorio en la carpeta indicada, usando la herramienta svnadmin:
sudo svnadmin create ~/repositorio
Ahora hay q configurar Apache para que reconozca el repositorio. Esto lo hacemos editando el archivo:
sudo nano /etc/apache2/mods-enabled/dav_svn.conf
Buscamos la línea #<location /svn> y la descomentamos (quitamos el simbolo de #) ahora habilitamos el repositorio descomentando la linea #DAV svn, descomentamos la linea #SVNPath y escribimos la direccion de la carpeta de repositorio (en mi caso, ~/repositorio). Para el control de acceso, haremos la configuracion del modo basico, pero sería bueno que leyeras las instrucciones que estan comentadas para los otros dos modos en caso que creas que sea necesario un control mas fino para tu proyecto. Descomentamos las siguientes lineas #AuthType Basic, #AuthName "Subversion Repository", #AuthUserFile /etc/apache2/dav_svn.passwd, #Require valid-user, #</Location> por lo que al final nuestro archivo quedará algo así:
<Location /svn>
DAV svn
SVNPath /home/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</Location>
DAV svn
SVNPath /home/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</Location>
Guardamos y salimos.
Ahora debemos crear los usuarios para trabajar con Subversion, esto podemos hacerlo de dos formas, creamos usuarios individualmente mediante el comando:
sudo htpasswd -cm /etc/apache2/dav_svn.passwd usuario
Donde usuario es cualquier nombre que desees, luego ingresas tu password y luego el password del nuevo usuario.
Otra forma es creando un grupo de usuarios con todos los permisos y restricciones, y luego agregando cuantos usuarios comunes como se requieran:
groupadd repositorio
ahora creamos todos los usuarios que necesitemos y los agregamos al grupo:
useradd usuario1 -m -G repositorio
passwd usuario1
useradd usuario2 -m -G repositorio
passwd usuario2
passwd usuario1
useradd usuario2 -m -G repositorio
passwd usuario2
Ahora le damos permisos al grupo sobre el repositorio:
chown -R root:repositorio ~/repositorio
chmod 770 ~/repositorio
chmod 770 ~/repositorio
Para que los usuarios al crear revisiones, las creen con determinados permisos de manera que todos los usuarios puedan acceder, debemos asignarles el umask y asì evitamos errores de permiso denegado, como este:
No se pudo abrir el archivo '/svn/db/current': Permiso denegado
Asignamos el umask para cada usuario que creemos, editamos el archivo .profile de su home, por ejemplo:
sudo nano /home/usuario1/.profile
y buscamos la línea "#umask 022" y la cambiamos por "umask 770"
Ya casi terminamos, ahora sólo debemos importar la estructura de carpetas: trunk, branches, y tags a nuestro repositorio. A continuación una descripción del porque de esta estructura:
trunk: contiene el tronco principal del proyecto donde se va creando los directorios/ficheros y se van modificando.
branches: es donde se guardan copias del tronco principal en estas para poder hacer cambios experimentales y pruebas sin tener que modificar el trunk.
tags:Acá se guardan versiones del proyecto, que ya están terminadas y sobre las cuales no se harán más cambios. (son versiones históricas)
Para crear esta estructura en el repositorio, creamos una carpeta temporal cualquiera (por ejemplo, ~/tmpRepositorio)
mkdir ~/tmpRepositorio
cd ~/tmpRepositorio
mkdir trunk branches tags
cd ~/tmpRepositorio
mkdir trunk branches tags
Ahora importamos esta estructura al subversion mediante el comando:
sudo svn import . file:///home/mi_usuario/repositorio -m "Se ha importado la estructura del directorio"
Donde en file:// debes poner la dirección local de la carpeta que usarás para repositorio.
El parámetro despues de -m es para enviarle un mensaje a subversion indicando la razón de la operación.
Por último debemos cambiar los permisos del repositorio para que se puedan realizar los commits (actualizaciones):
sudo chmod -R 770 /home/alexander/repositorio
Listo, ya tenemos instalado y configurado Subversion, por lo que ahora deberemos reiniciar el servidor Apache:
sudo /etc/init.d/apache2 restart
Y escribimos en nuestro navegador: "http://localhost/svn" donde nos pedirá que nos autentiquemos, escribimos el usuario y contraseñas que creamos para Subversion y listo, nos deberá mostrar la siguiente estructura de carpetas:
Fuentes:
Instalaciòn de Apache: http://ubuntu-ar.org/node/206
Wiki sobre Subversion: http://en.wikipedia.org/wiki/Subversion_(software)
Conf. de WEBDAV junto a Apache: http://www.digital-arcanist.com/sanctum/article.php?story=20070427101250622
Instalación y conf. de Subversion: http://sherekan.com.ar/2008/03/25/instalacion-configuracion-y-uso-de-subversion-en-linux/
Expandir/Contraer este Post
09 junio 2009
Ya disponible Fedora 11
Fedora 11: Gobierna
Ese es el slogan para la nueva versión de Fedora, disponible a partir de hoy en su sitio oficial donde podrán encontrar la documentación de la versión en buen español.
Entre algunas de las características más importantes que trae Fedora 11 (y que están más detalladas en la documentación oficial de la versión) son:
Presto: Normalmente cuando actualiza un paquete en Fedora, descarga un paquete reemplazo entero. La mayor parte del tiempo (especialmente para paquetes más grandes), la mayoría de los datos actuales en el paquete actualizado es el mismo que el del paquete original, pero todavía puede terminar descargando el paquete completo. Presto le permite descargar la diferencia (llamada delta) entre el paquete que tiene instalado y el que quiere actualizar. Esto puede reducir el tamaño de descarga de las actualizaciones en un 60% – 80%. No está habilitado por defecto en este lanzamiento. Para usar esta característica debe instalar el complemento yum-presto con yum install yum-presto.
Instalación automática de fuente y tipos mime: PackageKit permite instalar automáticamente fuentes donde se necesiten para ver y editar documentos.
Control de Volumen: PulseAudio unifica los controles de volumen en una interfase que mejora la configuración de sonido, haciendo mucho más fácil su control.
Modesetting del kernel (KMS) en Intel, ATI y Nvidia: Lo que permite agilizar el arranque gráfico Ahora se incluyen muchas más placas de video, incluídas Intel y Nvidia, así como también otras ATI.
Huella digital: Se ha hecho un mejor trabajo para soportar esta funcionalidad directamente desde el sistema.
Además entre las nuevas características se mencionan:
Sistema de archivo Ext4: reemplazando a ext3 dado a su diseño mejorado, una mejor performance y confiabilidad, soporte para un almacenamiento más grande y chequeos de sistema de archivo y borrado de archivos mucho más rápido.
MinGW (compilador cruzado de Windows): MinGW, un entorno de desarrollo para compilar en forma cruzada programas para que se ejecuten en Windows sin tener que usar Windows, eliminando el trabajo duplicado a los desarrolladores, proveyéndoles de un rango de bibliotecas y de herramientas de desarrollo que ya fueron portados al entorno del compilador cruzado. Los desarrolladores no tendrán que recompilar toda la pila de aplicaciones por si mismos, sino que solamente tendrán que concentrarse en los cambios necesarios por su aplicación.
A continuación copypasteo los requerimientos mínimos en arquitecturas X86 y X86_64
Requerimientos de Memoria y procesador en arquitecturas x86
Las siguientes especificaciones de CPU se pusieron en términos de procesadores Intel. Los demás procesadores, tales como los de AMD, Cyrix y VIA, que son compatibles y equivalentes a los procesadores de Intel, también se pueden usar con Fedora. Fedora 11 requiere un Intel Pentium o mejor, y está optimizado para procesadores Pentium 4 y posteriores.
Para modo texto se recomienda: Pentium 200 MHz o mejor
Para gráficos: 400 MHz Pentium II o mejor
RAM mínimo para modo texto: 128 MB
Mínimo de RAM para gráficos: 192 MB
RAM recomendado para gráficos: 256 MB
Requerimientos de Memoria y Procesador en arquitecturas x86_64
RAM mínimo para modo texto: 256 MB
Mínimo de RAM para gráficos: 384 MB
RAM recomendado para gráficos: 512 MB
Bueno, esa es toda la información relevante que quería compartirles, yo me pondré a descargar el iso y probablemente lo pruebe durante algunas semanas, saludos.
Expandir/Contraer este Post
06 junio 2009
Sixthsense: una tecnología que extiende nuestra realidad con información.
De vez en cuando es posible toparnos con cosas que son tan innovadoras que parecen sacadas de un película de ciencia ficción.
Imagina poder chequear tu correo en una pared, ver videos en el periódico que lees en el parque o tomar una fotografía con sólo crear un marco con tus dedos, usar tu mano para ver información de donde te encuentras y aún más.
Pues esto es lo que algunos investigadores del MIT han propuesto con su proyecto de realidad aumentada llamado SixthSense y actualmente a cargo de la doctora Pattie Maes.
El prototipo de SixthSense consiste de una combinación de una pequeña cámara y un proyector acompañados de un smartphone para correr el software de la aplicación y mantenerla conectada a internet, por lo que el costo de construcción de una unidad anda alrededor de los $350.
Citando las palabras de la Dra. Maes: "La idea es que SixthSense trate de determinar no sólo con que estás interactuando sino que también como estas haciendolo.
El sistema está constantemente tratando de comprender que hay alrededor tuyo y que es lo que estás tratando de hacer por lo que tiene que reconocer las imágenes que miras y los gestos que haces para relacionarlos entre sí, buscar información relevante en internet y luego presentarla mediante el proyector."
A mi punto de ver, si el grupo logra capturar el interés de alguna(s) empresa(s) de telefonía móvil, no será nada raro que algún día veamos esta tecnología implementada en nuestros teléfonos celulares.
Acá les dejo un video donde demuestran el funcionamiento del sistema:
Otro video, explicado por la Dra. Maess:
Así que a irnos olvidando de las pantallitas táctiles que lo que depara el futuro es mucho más interesante... :)
Fuentes:
http://news.bbc.co.uk/2/hi/technology/7997961.stm
http://news.bbc.co.uk/2/hi/technology/7997983.stm
Sitio Oficial: http://www.pranavmistry.com/projects/sixthsense/
Expandir/Contraer este Post
27 mayo 2009
Publicada encuesta sobre el link expandir/contraer del blog
Hola a todos, he agregado una encuesta en la parte superior de esta columna para saber que tan útil consideran ustedes, mis amigos lectores, la función del link expandir/contraer un post, además si tienen algún tipo de sugerencia que deseen dar al respecto para mejorar su funcionalidad o de cualquier otra parte del blog, estan invitados a dejar un comentario o contactarme en la sección de contacto. Saludos, yo me voy a dormir por hoy.
Actualización: Se ha acabado el semestre y seguimos con exámenes finales y entregas de proyectos (que no es cosa rara en la escuela de sistemas) aunque por lo menos ya me he quitado (si, yo mismo, je) el yeso de la pierna (creo que todavía me faltaba tiempo)
Actualización: Se ha acabado el semestre y seguimos con exámenes finales y entregas de proyectos (que no es cosa rara en la escuela de sistemas) aunque por lo menos ya me he quitado (si, yo mismo, je) el yeso de la pierna (creo que todavía me faltaba tiempo)
15 mayo 2009
Qué ha pasado últimamente conmigo y mi Guatemala?
Primero quiero comentarles que por un accidente jugando futbol terminé con un esguinse de tobillo y con la pierna toda enyesada por lo menos por un mes :( (ni modo, a apretarla) sin embargo el que ha tenido la peor parte ha sido mi hermano que ha tenido que ayudarme y llevarme a todos lados, jejeje, lo siento por él.
Segundo, a pesar que he intentado no meter el blog en mis opiniones sobre la situación del país, realmente no podemos hacernos de la vista gorda con lo que últimamente ha ocurrido en Guatemala o simplemente quedarnos de brazos cruzados con todo lo sucedido con el caso Rosenberg, Khalil y Marjorie Musa(para los que no lo sepan, pueden revisar este link)
Debo confesar que al inicio le daba el beneficio de la duda al presidente dado que no se conocía en que situación se habia grabado el video (todo cabe en lo posible)y que la mayoría de comentarios se hacían más por la ira e indignación que basados en hechos reales y con evidencia en mano, sin embargo debido a todos los acontecimientos que han ocurrido últimamente, como el caso de jeanfer en Twitter o la gente pobre obligada a marchar a favor del presidente a cambio de mantener la bolsa de ayuda solidaria me ha hecho reconsiderar mi posición.
Nosotros los guatemaltecos lo primero que debemos hacer es exigir a las autoridades a cargo de investigar los casos del abogado Rosenberg y el señor Musa y su hija así como las demás cuestiones que presenta el abogado en sus videos que se agilize la investigación y que se dé prontamente con los responsables y que se dicte una sentencia justa sobre los culpables de tener a Guatemala en tal sosobra.
Los guatemaltecos que tenemos la suerte de poder difundir nuestras ideas, comentarios y demás cuestiones a través de internet debemos también aprovechar el medio para difundir todo lo que ha esta aconteciendo para que las noticias lleguen a todo el mundo y así se ejerza presión internacional sobre los encargados del caso.
Aquí adelante les dejo el poema "Como Me Dueles Guatemala", escrito por Gonzalo Asturias y que para mí, ultimamente ha tomado mucha coherencia...
Saludos y nos seguimos hablando.
Segundo, a pesar que he intentado no meter el blog en mis opiniones sobre la situación del país, realmente no podemos hacernos de la vista gorda con lo que últimamente ha ocurrido en Guatemala o simplemente quedarnos de brazos cruzados con todo lo sucedido con el caso Rosenberg, Khalil y Marjorie Musa(para los que no lo sepan, pueden revisar este link)
Debo confesar que al inicio le daba el beneficio de la duda al presidente dado que no se conocía en que situación se habia grabado el video (todo cabe en lo posible)y que la mayoría de comentarios se hacían más por la ira e indignación que basados en hechos reales y con evidencia en mano, sin embargo debido a todos los acontecimientos que han ocurrido últimamente, como el caso de jeanfer en Twitter o la gente pobre obligada a marchar a favor del presidente a cambio de mantener la bolsa de ayuda solidaria me ha hecho reconsiderar mi posición.
Nosotros los guatemaltecos lo primero que debemos hacer es exigir a las autoridades a cargo de investigar los casos del abogado Rosenberg y el señor Musa y su hija así como las demás cuestiones que presenta el abogado en sus videos que se agilize la investigación y que se dé prontamente con los responsables y que se dicte una sentencia justa sobre los culpables de tener a Guatemala en tal sosobra.
Los guatemaltecos que tenemos la suerte de poder difundir nuestras ideas, comentarios y demás cuestiones a través de internet debemos también aprovechar el medio para difundir todo lo que ha esta aconteciendo para que las noticias lleguen a todo el mundo y así se ejerza presión internacional sobre los encargados del caso.
Aquí adelante les dejo el poema "Como Me Dueles Guatemala", escrito por Gonzalo Asturias y que para mí, ultimamente ha tomado mucha coherencia...
Ay, como dueles, Guatemala:
tu miseria, tu hambre, tus andrajos,
tus muchachos ignorantes,
tus campesinos y obreros mal alimentados,
tus hijos víctimas de la violencia
degenerada de tus hombres.
Ah, cómo me dueles Guatemala:
tanto egoísmo, tanta pereza,
tanta irresponsabilidad,
tanta brutalidad que encierras.
Pero te canto, mi Guatemala:
yo le canto a tus hijos laboriosos,
a tus hombres y mujeres
trabajadores y responsables
que ayudan a los demás
con generosidad constante.
Yo le canto a mis padres,
a sus vidas admiradas,
a su cariño inmenso,
a su rectitud probada.
Le canto a tantos ideales nobles
y a tantas vidas dedicadas
al servicio de los otros hombres.
Yo te canto, mi Guatemala,
le canto a tu tierra fértil
de olores penetrantes,
trópico que se capta por los cinco sentidos,
a los jaguares y a los pumas de tus selvas
a las irupciones violentas de tus volcanes,
al embrujo de tus lagos,
a tus tormentas tropicales.
Le canto al rancho de paja,
al perro que ladra,
al cerco de alambre,
a los maizales campesinos.
Guatemala, eres fuerte
de piel antigua, estela maya,
calles empedradas,
acaranda en flor,
alameda de matilisguates.
Hueles a tela de indio,
a cántaro de barro,
a incienso, a coroso,
a serrín teñido para el Nacimiento
o alfombra de Semana Santa.
Déjame que te cante,
déjame que llore,
déjame que luche
por tu desarrollo,
por tu gente, por tu pueblo,
por mi pueblo.
Déjame que te sueñe a plenitud,
déjame que te llame “Marialinda Chulamar´´,
déjame que te sueñe
con justicia social, en paz,
trabajadora,
llena de progreso, de generosidad,
y de educación.
Pero cuando no te sueño,
me dueles, Guatemala:
me duele el estómago lombriciento
de tus niños,
el hambre de tus hombres
que no han probado sino maíz y fríjol,
la frivolidad torpe de tantos ricos
repletos de dinero, pero infelices.
Me duele, patria mía,
El hedor de tus borrachos,
el desenfreno de tus niños
que se sienten bestias,
que carecen de espíritu y de ideales,
que sólo aspiran a comer, dormir,
distraerse, engendrar hijos
y morir.
Ah, cuando me dueles, Guatemala,
Lloro y trabajo por ti
Ver el Poema
Saludos y nos seguimos hablando.
24 abril 2009
Videos sobre Instalación de Gentoo, partes 11 al 14
Bueno, ya era hora de subir el resto de videos sobre como instalar Gentoo.
En esta parte terminaremos con la instalación básica del sistema; desde ya me disculpo por haber puesto la dirección del blog en los videos, pero considero que es algo que tenía que hacer debido a que a veces se deja como trabajo o tarea elaborar una serie de videos sobre la instalación de Gentoo por lo que sería muy simple descargarlos de youtube y entregarlos, sin embargo mi objetivo es ayudar a que realicen su propia instalación.
Parte 11: Instalación del Kernel
En esta parte configuramos la zona horaria, descargamos los archivos fuente del kernel, configuramos su compilación, lo compilamos y lo instalamos.. Si estas haciendo esta instalación en VirtualBox, sería aconsejable que crees una imagén del estado de tu sistema, para que en caso de tener problemas con el kernel no pierdas todo lo que ya llevas.
Parte 12: Más Configuraciones del Sistema
Configuración del sistema de archivos (fstab) y demás archivos de configuraciones.
Parte 13: Instalación de Herramientas Necesarias para el Sistema
En esta parte se instalan algunas herramientas que son necesarias para el sistema pero que no vienen ni en el portage ni en el stage.
Entre estas herramientas estan: Syslog, logrotate, dhcpcd (cliente dhcp) y grub.
Parte 14: chequeando instalación
Aquí simplemente reiniciamos la máquina virtual para comprobar que toda la instalación ha funcionado.
En esta parte terminaremos con la instalación básica del sistema; desde ya me disculpo por haber puesto la dirección del blog en los videos, pero considero que es algo que tenía que hacer debido a que a veces se deja como trabajo o tarea elaborar una serie de videos sobre la instalación de Gentoo por lo que sería muy simple descargarlos de youtube y entregarlos, sin embargo mi objetivo es ayudar a que realicen su propia instalación.
Parte 11: Instalación del Kernel
En esta parte configuramos la zona horaria, descargamos los archivos fuente del kernel, configuramos su compilación, lo compilamos y lo instalamos.. Si estas haciendo esta instalación en VirtualBox, sería aconsejable que crees una imagén del estado de tu sistema, para que en caso de tener problemas con el kernel no pierdas todo lo que ya llevas.
Parte 12: Más Configuraciones del Sistema
Configuración del sistema de archivos (fstab) y demás archivos de configuraciones.
Parte 13: Instalación de Herramientas Necesarias para el Sistema
En esta parte se instalan algunas herramientas que son necesarias para el sistema pero que no vienen ni en el portage ni en el stage.
Entre estas herramientas estan: Syslog, logrotate, dhcpcd (cliente dhcp) y grub.
Parte 14: chequeando instalación
Aquí simplemente reiniciamos la máquina virtual para comprobar que toda la instalación ha funcionado.
Expandir/Contraer este Post
19 abril 2009
Una pelicula que quiero ver: Where the Wild Things Are
Dirigida por Spike Jonze y basada en el libro para niños escrito por Maurice Sendak.
Trailer: Where The Wild Things Are
Fecha de Estreno: 16-10-2009
Trailer: Where The Wild Things Are
Fecha de Estreno: 16-10-2009
Expandir/Contraer este Post
15 abril 2009
El Gobierno brasileño pretende llevar Internet al 100% de su población
Esta nota la copipasteo de un artículo de periodismo.com porque me pareció realmente muy interesante las iniciativas que el gobierno brazileño esta tomando para brindarle acceso a la tecnología a toda su población, ojalá esto le sirviera de ejemplo a nuestro gobierno...
El uso de la Web en Brasil tuvo un crecimiento del 78% en los últimos dos años. El presidente Lula da Silva quiere comenzar a aplicar su plan entre los más pobres.
Un nuevo plan del presidente de Brasil, Luiz Inácio Lula da Silva, pretende que en los próximos años el 100 por ciento de su población cuente con una conexión a Internet de banda ancha y, en lo posible, gratuita. Hasta el momento, 64 millones de ciudadanos de este país de todas las edades- utilizan la Web, según indicó el Instituto de encuestas Datafolha.
Como parte de este proyecto, favelas de Río de Janeiro (una de las áreas de más pobreza), como la de Morro de Dona Marta, ya cuentan con acceso gratuito a Internet. Otro ejemplo es el del gobernador de este Estado, Sergio Cabral, quien otorgará a toda la población local la posibilidad de usar banda ancha, para 2013.
También como parte del plan, se conectará a Internet a las 150 mil escuelas públicas brasileñas. Además, cada alumno tendrá la oportunidad de tener su propia máquina. Todas estas acciones hacen que actualmente Brasil sea el país del mundo donde se dedica más tiempo a la navegación por la Web, con 23 horas y 48 minutos mensuales. En Latinoamérica, además, es el país con el mayor número de computadoras.
El uso de la Web en Brasil tuvo un crecimiento del 78% en los últimos dos años. El presidente Lula da Silva quiere comenzar a aplicar su plan entre los más pobres.
Un nuevo plan del presidente de Brasil, Luiz Inácio Lula da Silva, pretende que en los próximos años el 100 por ciento de su población cuente con una conexión a Internet de banda ancha y, en lo posible, gratuita. Hasta el momento, 64 millones de ciudadanos de este país de todas las edades- utilizan la Web, según indicó el Instituto de encuestas Datafolha.
Como parte de este proyecto, favelas de Río de Janeiro (una de las áreas de más pobreza), como la de Morro de Dona Marta, ya cuentan con acceso gratuito a Internet. Otro ejemplo es el del gobernador de este Estado, Sergio Cabral, quien otorgará a toda la población local la posibilidad de usar banda ancha, para 2013.
También como parte del plan, se conectará a Internet a las 150 mil escuelas públicas brasileñas. Además, cada alumno tendrá la oportunidad de tener su propia máquina. Todas estas acciones hacen que actualmente Brasil sea el país del mundo donde se dedica más tiempo a la navegación por la Web, con 23 horas y 48 minutos mensuales. En Latinoamérica, además, es el país con el mayor número de computadoras.
Expandir/Contraer este Post
14 abril 2009
Bombas fork, ¿Qué son?
Una bomba fork es sencillamente un tipo de ataque que afecta a cualquier sistema operativo (windows, *nix, etc) que usa la función fork o sus equivalentes para desatar un ataque de tipo bucle recursivo infinito (sí, suena marciano) sobre el sistema, haciendolo colapsar debido a la saturación de la memoria y el procesador, haciendo que el sistema quede inestable e incluso inutilizable (calma, se compone con reiniciar la computadora) ...
Debido a sus características, una vez iniciada una bomba fork, es casi imposible detener la ejecución del ataque puesto que para hacer eso necesitariamos matar los n-ésimos procesos que se han creado, pero como la memoria esta saturada no podríamos ejecutar ni siquiera un comando "kill"
Un ejemplo de estos ataques es la bien conocida instrucción de bash para los sistemas Unix/Linux:
La cual, si deseas, puedes probar (bajo tu propio riesgo) escribiéndola en una terminal de bash en cualquier Linux; aunque si decides hacerlo, es recomendable que cierres todos los programas y guardes tus documentos para evitar pérdidas de información; de cualquier forma, el sistema se restaurá con reiniciar el equipo (siempre y cuando no vuelvas a ejecutar la instrucción)
A simple vista, la línea anterior puede parecer una marcianada, por lo que para entender como funciona debemos reescribirla en una forma más entendible, por ejemplo:
bomba()
{
bomba | bomba&
}; bomba
Ahora, como podrás notar, esta es una función recursiva que se llama a sí misma dos veces dentro de la definición de su cuerpo. Además, usa un pipe (|) para mandar la salida de la primera llamada a la segunda llamada.
El & hace que la función llamada se ejecute en segundo plano, por lo que las llamadas hijas no se pueden morir y de esta forma es como la instrucción empieza a comerse todos los recursos de tu máquina.
el último "bomba" es la primera llamada de la función y con la cual se desata la lluvia de llamadas recursivas.
Obviamente, este tipo de "ataques" no son tan críticos para los usuarios de escritorio de linux, dado que con reiniciar la máquina y no volver a ejecutar la función es suficiente, pero si consideramos el riesgo que representan para los servidores, es evidente que debemos buscar una forma para protegerlos.
Una forma muy simple para evitar estos bucles infinitos recursivos (bombas fork) es limitar el número de procesos que pueden ejecutarse simultáneamente por usuario, ésto lo hacemos editando el archivo /etc/security/limits.conf, ejecutando el comando:
sudo nano /etc/security/limits.conf
y agregamos la siguiente línea al final:
% hard nproc 100
Donde 100 es el número máximo de procesos que un usuario puede ejecutar, por lo que si consideras que es muy poco o empiezas a tener errores del tipo "bash: fork:", simplemente incrementa el valor a 1000 o más.
Listo, ahora sólo deberemos guardar y reiniciar la computadora y ya estaremos protegidos contra las bombas fork, aunque para confirmar podemos usar el comando ulimit -a y ver la linea max user processes, si concuerda con el valor que ingresamos, entonces todo esta bien.
Ahora si, si volvemos a probar la instrucción :(){ :|:& };: veremos que no congela el sistema y que al contrario logra sovrevivir a ella. :)
Debido a sus características, una vez iniciada una bomba fork, es casi imposible detener la ejecución del ataque puesto que para hacer eso necesitariamos matar los n-ésimos procesos que se han creado, pero como la memoria esta saturada no podríamos ejecutar ni siquiera un comando "kill"
Un ejemplo de estos ataques es la bien conocida instrucción de bash para los sistemas Unix/Linux:
:(){ :|:& };:
La cual, si deseas, puedes probar (bajo tu propio riesgo) escribiéndola en una terminal de bash en cualquier Linux; aunque si decides hacerlo, es recomendable que cierres todos los programas y guardes tus documentos para evitar pérdidas de información; de cualquier forma, el sistema se restaurá con reiniciar el equipo (siempre y cuando no vuelvas a ejecutar la instrucción)
A simple vista, la línea anterior puede parecer una marcianada, por lo que para entender como funciona debemos reescribirla en una forma más entendible, por ejemplo:
bomba()
{
bomba | bomba&
}; bomba
Ahora, como podrás notar, esta es una función recursiva que se llama a sí misma dos veces dentro de la definición de su cuerpo. Además, usa un pipe (|) para mandar la salida de la primera llamada a la segunda llamada.
El & hace que la función llamada se ejecute en segundo plano, por lo que las llamadas hijas no se pueden morir y de esta forma es como la instrucción empieza a comerse todos los recursos de tu máquina.
el último "bomba" es la primera llamada de la función y con la cual se desata la lluvia de llamadas recursivas.
Obviamente, este tipo de "ataques" no son tan críticos para los usuarios de escritorio de linux, dado que con reiniciar la máquina y no volver a ejecutar la función es suficiente, pero si consideramos el riesgo que representan para los servidores, es evidente que debemos buscar una forma para protegerlos.
Una forma muy simple para evitar estos bucles infinitos recursivos (bombas fork) es limitar el número de procesos que pueden ejecutarse simultáneamente por usuario, ésto lo hacemos editando el archivo /etc/security/limits.conf, ejecutando el comando:
sudo nano /etc/security/limits.conf
y agregamos la siguiente línea al final:
% hard nproc 100
Donde 100 es el número máximo de procesos que un usuario puede ejecutar, por lo que si consideras que es muy poco o empiezas a tener errores del tipo "bash: fork:", simplemente incrementa el valor a 1000 o más.
Listo, ahora sólo deberemos guardar y reiniciar la computadora y ya estaremos protegidos contra las bombas fork, aunque para confirmar podemos usar el comando ulimit -a y ver la linea max user processes, si concuerda con el valor que ingresamos, entonces todo esta bien.
Ahora si, si volvemos a probar la instrucción :(){ :|:& };: veremos que no congela el sistema y que al contrario logra sovrevivir a ella. :)
Expandir/Contraer este Post
06 abril 2009
QTTabBar: Como Agregar Pestañas en el Explorador de Windows
Todos sabemos lo útiles que son las pestañas cuando navegamos en internet, de ahí que casi todos los navegadores los tengan implementados de una u otra forma, pero que sucede si intentaramos aplicar el mismo concepto a las ventanas de Windows?
Pues investigando un poco encontré una pequeña e interesante aplicación llamada QTTabBar, la cual después de instalarla y configurarla te agrega las dichosas pestañas.
La instalación es tan sencilla como descargarse el zip de aquí(de mpmento selecciona la versión 1.2.2.1 que es la estable), descomprimirlo, ejecutar el instalador, reiniciar la máquina, abrir una carpeta cualquiera, dar click en el menú ver > barras de herramientas, chequear la opción QT tabBar y (opcionalmente) QT Tab Standar Buttons, luego deschequear la penúltima opción llamada "bloquear barras de herramientas" para poder mover las barras a donde queramos situarlas y luego volver a chequear "bloquear barras de herramientas" para que ya no se muevan (¬¬)
Jeje, luego de todo eso, podremos abrir multiples carpetas en una sola ventana, por ejemplo así:
Si damos click derecho sobre un espacio en la barra de pestañas, obtenemos el siguiente menú, el cual tiene opciones demasiado intuitivas como para tener q describirlas (¬¬,)
Además, si colocamos el mouse sobre el ícono de una carpeta (o sobre el ícono de una pestaña) nos muestra un listado de las carpetas/archivos que contiene, pudiendo escoger directamente uno o recorrer todo un árbol de carpetas directamente
Bueno, estas son algunas de las propiedades que tiene esta herramienta que me ha simplificado un poco más la vida y el trabajo, sin embargo cuenta con algunas otras cosas interesantes por lo que si deseas saber más, puedes visitar su página oficial:
qttabbar.wikidot.com/
Pues investigando un poco encontré una pequeña e interesante aplicación llamada QTTabBar, la cual después de instalarla y configurarla te agrega las dichosas pestañas.
La instalación es tan sencilla como descargarse el zip de aquí(de mpmento selecciona la versión 1.2.2.1 que es la estable), descomprimirlo, ejecutar el instalador, reiniciar la máquina, abrir una carpeta cualquiera, dar click en el menú ver > barras de herramientas, chequear la opción QT tabBar y (opcionalmente) QT Tab Standar Buttons, luego deschequear la penúltima opción llamada "bloquear barras de herramientas" para poder mover las barras a donde queramos situarlas y luego volver a chequear "bloquear barras de herramientas" para que ya no se muevan (¬¬)
Jeje, luego de todo eso, podremos abrir multiples carpetas en una sola ventana, por ejemplo así:
Si damos click derecho sobre un espacio en la barra de pestañas, obtenemos el siguiente menú, el cual tiene opciones demasiado intuitivas como para tener q describirlas (¬¬,)
Además, si colocamos el mouse sobre el ícono de una carpeta (o sobre el ícono de una pestaña) nos muestra un listado de las carpetas/archivos que contiene, pudiendo escoger directamente uno o recorrer todo un árbol de carpetas directamente
Bueno, estas son algunas de las propiedades que tiene esta herramienta que me ha simplificado un poco más la vida y el trabajo, sin embargo cuenta con algunas otras cosas interesantes por lo que si deseas saber más, puedes visitar su página oficial:
qttabbar.wikidot.com/
Expandir/Contraer este Post
Suscribirse a:
Entradas (Atom)