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


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:

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

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>


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


Ahora le damos permisos al grupo sobre el repositorio:
chown -R root:repositorio ~/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


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