sábado, 9 de abril de 2011

Configurando apache para trabajar con repositorios Subversion en windows

En esta ocasión voy a explicar como configurar subversion para el control de versiones de nuestros proyectos.

De antemano advierto que solo se configurará Subversion para tener acceso vía web, esto por razones diversas, por lo general, los IDE's con los que trabajamos poseen plug-in's que acceden a nuestros repositorios de esta manera, por lo que no es necesario tener en ejecución el servidor svnserve para tener acceso a nuestros repositorios, bien desde nuestra red o bien desde Internet.

Se asume que ya se tiene instalado apache, en mi caso lo tengo instalado vía wamp versión 2.1e.

Este trae:

  • apache versión 2.2.17

  • php versión 5.3.3

  • mysql versión 5.5.8

  • PhpMyadmin versión 3.2.0.1

  • SQLBuddy versión 1.3.2

Primero que nada debemos descargarnos la aplicación en cuestión Subversion, la podemos encontrar aquí, para efectos de este mini-how-to, se utilizó la versión 1.6.6.

Para instalarlo basta con siguiente, siguiente, siguiente; a menos que quieras cambiar la dirección de instalación de subversion, la deberían tener en C://archivos de programas/Subversion.

Yo en lo particular lo he instalado en la carpeta de instalación de wamp, C:\wamp\bin\subversion\Subversion.

Ya instalado Subversion, haremos los siguientes ajuste:


  1. Tomamos los dos archivos .so que se encuentran en la carpeta bin de la instalación de subversion, en mi caso C://wamp/bin/subversion/Subversion/bin y los copiamos en la carpeta modules de nuestra instalación de apache C:\wamp\bin\apache\Apache\modules. A diferencia de otros tutoriales que se consiguen en la web

  2. Editamos el archivo httpd.conf, ubicado en la carpeta conf de la instalación de apache C:\wamp\bin\apache\Apache\conf, buscamos la sección de LoadModule y la linea LoadModule dav_module modules/mod_dav.so descomentarla.
    comentada

    #LoadModule dav_module modules/mod_dav.so

    descomentada

    LoadModule dav_module modules/mod_dav.so

    y al final de esta sección le añadimos las siguientes dos lineas (puede ser en el lugar que queramos):

    LoadModule dav_svn_module modules/mod_dav_svn.so

    LoadModule authz_svn_module modules/mod_authz_svn.so



  3. Ahora nos dirigimos al final del archivo agregamos la siguiente linea:
    Include conf/extra/httpd-subversion.conf

  4. Este archivo será el que utilicemos para crear la seguridad y el acceso a nuestros repositorios vía web.

  5. Pues bien, vamos a crear el archivo httpd-subversion.conf en la carpeta ubicada en C:\wamp\bin\apache\Apache\conf\extra, este archivo contendrá la siguiente información:

  6. <location /svn>

    # Le dice a Apache qué módulo será responsable de servir esa URL - en este caso, el módulo de Subversion.
    DAV svn

    # Para Subversion 1.3 y superiores, esta directiva habilita el listado de todos los repositorios disponibles bajo SVNParentPath.
    SVNListParentPath on

    # Activa la versión automática de WebDAV sin un cliente SVN.
    SVNAutoversioning on

    # Opciones de indexacion.
    Options Indexes MultiViews IncludesNoExec

    # Le dice a Subversion que busque repositorios en C:/ruta/de/mis/repositorios.
    SVNParentPath C:/ruta/de/mis/repositorios

    # Utilizado para mejorar la visualización desde un navegador de web.
    SVNIndexXSLT /svnindex.xsl

    # Se utiliza para activar la autenticación básica, es decir, Usuario/contraseña.
    AuthType Basic

    # Se utiliza cuando aparece el diálogo de autenticación como información para indicar que se necesita su autenticación.
    AuthName "Mis Repositorios"

    # Especifica qué archivo de contraseñas se utiliza para la autentificación.
    AuthUserFile C:/wamp/bin/apache/Apache2.2.17/usuarios.conf

    # Lugar del archivo de Acceso para las rutas dentro del repositorio de Subversion.
    #AuthzSVNAccessFile C:/wamp/bin/apache/Apache2.2.17/acceso.conf

    # Obliga a apache a solicitar autenticación usuario/contraseña
    Require valid-user


    </location >

    Para mayor información de como configurar esta sección pueden referirse a la siguiente dirección.

    Nota: En <location /svn>, /svn (puede ser cualquier nombre), es el nombre con el que accederemos vía web, es decir, http:/<monbre de mi servidor>//svn


  7. Después de todo esto, necesitamos crear el archivo de usuarios que podrán acceder a nuestros repositorios, tal como se especificara en el punto anterior, le colocaremos el nombre de usuarios.conf, este archivo lo colocaremos en la carpeta raíz de apache C:/wamp/bin/apache/Apache, aunque puede ir en el lugar que mejor no parezca. Para esto hacemos win+r escribimos cmd y nos abre la consola de MS-DOS (tambien se puede hacer inicio->ejecutar->cmd) y escribimos los siguiente:
    C:\wamp\bin\apache\Apache\bin\htpasswd -cm "C:\wamp\bin\apache\Apache\usuarios.conf" administrador
  8. nos solicitará la contraseña para el usuario administrador dos veces. Si queremos agregar nuevos usuarios solo tendremos que ejecutar la siguiente linea
    C:\wamp\bin\apache\Apache\bin\htpasswd -m "C:\wamp\bin\apache\Apache\usuarios.conf" nuevousuario
    Nótese que en esta ocasión solo se ha colocado la opción -m y no -cm; esto es porque la opción c crea el archivo que le hemos colocado, para más información refiérase a la documentación de Subversion aquí.

  9. Por otro lado tenemos el acceso a los repositorios a través de lo que se llama rutas de acceso, este archivo lo crearemos al igual que en el punto anterior en la carpeta C:/wamp/bin/apache/Apache con el editor de texto de nuestra preferencia, en él colocaremos la siguiente información:
    [aliases]

    administrador = CN=Nombre del administrador,OU=area de trabajo,DC=grupo de trabajo,DC=empresa
    usuario1 = CN=Nombre del Usuario1,OU=area de trabajo,DC=grupo de trabajo,DC=empresa
    usuariodev = CN=Nombre del Usuariodev,OU=area de trabajo,DC=grupo de trabajo,DC=empresa
    usuariodoc = CN=Nombre del usuariodoc,OU=area de trabajo,DC=grupo de trabajo,DC=empresa


    [groups]
    administratores = &administrador, &usuario1
    desarrolladores = &usuariodev
    documentadores = &usuariodoc
    invitados = anonymous, anonimo

    # Regla de acceso por defecto para TODOS los repositorios
    # Todo el mundo puede leer, los administradores pueden escribir.
    [/]
    * = r
    @administrador = rw

    # Dar a los documentadores acceso de escritura
    # a todas las carpetas de documentación
    [miproyecto:/trunk/doc]
    @documentador = rw

    [miproyecto:/trunk]
    @administrador = rw
    @desarrollador = rw
    @documentador = r
    usuariodev = rw

    [miproyecto:/branches]
    @administrador = rw
    @desarrollador = rw
    usuariodev = r

    [miproyecto:/tags]
    @administrador = rw
    @desarrollador = rw
    @documentador = r
    usuariodev = r

    [miotroproyecto:/]
    @administrador = rw
    @desarrollador = rw
    @documentador = rw

    Nota: este es un ejemplo para visualizar algunas combinaciones que se pudieran hacer en este archivo.

Nota: En el punto 5 la linea #AuthzSVNAccessFile C:/wamp/bin/apache/Apache2.2.17/acceso.conf aparece comentada, esto es porque por alguna razón que desconozco por el momento, apache no está permitiendo acceder a los repositorios a través de los grupos definidos; mientras resuelvo el problema se mantendrá comentada.

Nota: En el mismo punto 5 la linea #SVNIndexXSLT /svnindex.xsl también esta comentada, este archivo es un compendio de 2 archivos el svnindex.xsl y svnindex.css; estos archivos van en la carpeta que indica la directiva DocumentRoot del archivo de configuración httpd.conf de Apache. Los archivos se pueden conseguir en la web con solo escribir svnindex.xsl



lunes, 21 de marzo de 2011

Editor visual para eclipse

Revisando en internet en mi afán de conseguir una buena solución para el diseño de ventanas en eclipse de forma gráfica, he descubierto que se puede hacer uso de el entorno visual de netbeans , gracias a MyEclipse que ha adaptado el plugin del visual editor para eclipse y de aquí hé tomado la información.

Pero de todas formas aquí dejo la solución, solo tenemos que agregar esta dirección a nuestros repositorios de eclipse y voila.

Help > Install New Software> Add>

colocamos la etiqueta Swing GUI Designer, puede ser cualquier nombre que le queramos poner y agregamos la URL http://downloads.myeclipseide.com/downloads/products/eworkbench/helios/enterprise-earlyaccess

lunes, 15 de febrero de 2010

Comet ó Ajax

INTRODUCCIÓN

Hace casi cuatro años (aproximadamente) se hablaba de una nueva técnica de programación Web que utiliza el objeto XMLHttpRequest, muy similar a Ajax, por algunos llamada Comet. Está técnica también es conocida como Reverse Ajax, Ajax Push, Server Push, HTTP Push , Two-way-web, HTTP Streaming y HTTP server push entre otros.

HISTORIA

En el año 1994 Netscape Navigator 1.1 introdujo la posibilidad de realizar un "server push" a través de un tipo de contenido HTTP multipart / x-mixed-replace.  Una ejecución CGI mantenía una conexión TCP abierta en el navegador, con la que se podía realizar el envío de nuevos contenidos a intervalos arbitrarios, sin una solicitud del cliente.

Esta técnica tenía algunas aplicaciones interesantes, pero se adelantó a su tiempo y se empleó raramente. El soporte multipart / x-mixed-replace nunca fué agregado a Internet Explorer, así que cuando Netscape perdió la guerra de los navegadores en la década de los 90, esta técnica fue en su mayoría abandonada.

         Con la incorporación de ajax en el contexto de la programación web se comenzaron a presentar nuevos retos de desarrollo, lo que ha permitido el resurgimiento de esta vieja tecnología que data de hace más de 25 años.

                Alex de DojoToolkit.org fué el primero en definir esta técnica hacia el año 2006, y Dojo es el primer framework que implementa Comet.

EN QUE CONSISTE

Comet (Push Ajax) nos permite establecer una conexión abierta de larga duración entre el cliente y el servidor web, en este caso, es el servidor el que se encargará de enviar información al cliente cuando se genere algún evento en este.

Esta tecnología difiere del modelo original de la web, en el que un navegador solicita una página web completa o trozos de datos para actualizar una página web. En la práctica, las aplicaciones Comet usan tradicionalmente programación AJAX con una petición prolongada para detectar nueva información en el servidor.

Esto no quiere decir que el cliente no envía información al servidor, al contrario, si envía información al servidor, pero en este caso, el servidor no le responde al cliente con un bloque de datos, espera a que se suscite algún evento para informar al cliente de su nuevo estado.

Diagrama COMET


QUIENES USAN Comet

  • Chat en GMail
  •  Meebo
  •  Facebook
  •  Twitter
  •  Entre otros.

EJEMPLOS Y DOCUMENTACIÓN

En los siguientes enlaces se puede conseguir bastante información sobre la implementación de esta no tan nueva tecnología llamada COMET.

Español

http://www.ribosomatic.com/articulos/como-implementar-comet-con-php-y-prototype/

http://component-showcase.icefaces.org/component-showcase/showcase.iface

Ingles

http://cometdaily.com/

http://cometdproject.dojotoolkit.org/

http://alex.dojotoolkit.org/2006/03/comet-low-latency-data-for-the-browser/

http://www.ape-project.org/demos/1/ape-real-time-chat.html

http://www.lightstreamer.com/?gclid=CNjqupv39J8CFRKenAod8QL7-g

 

CONCLUSIONES

Como palabras finales, son innumerables las aplicaciones que se pueden servir de esta tecnología, que si bien no es nada nueva, hasta hace poco tiempo no se le prestaba la debida atención y que indudablemente está marcando una nueva era en la prestación de servicios vía web, lo que representa un crecimiento cada vez mayor de este mercado.

Por otro lado cabe destacar, que si bien esta tecnología hace uso en algunas implementaciones de otra tecnología tal como lo es ajax, no se debe confundir, pues puede ser aplicada sin el uso de esta.

                Se recomienda el uso de la terminología Push ajax para esta tecnología.

REFERENCIAS

http://alex.dojotoolkit.org/2006/03/comet-low-latency-data-for-the-browser/

http://www.openjsan.org/doc/f/fu/fuzzynerd/HTTP/Push/0.04/lib/HTTP/Push.html

http://es.wikipedia.org/wiki/Comet