domingo, 16 de enero de 2011

JoliCloud: por qué no tenerlo?


Realmente no tengo un netbook, en casa tengo un portátil de 11'' muy potente, pero estaba buscando un SO ligero y que arrancara rápido para esas veces que simplemente quieres encender el ordenador para escribir un correo, actualizar facebook o simplemente ver un vídeo... la verdad que en casa la mayoría de las veces que enciendo el portátil es para abrir Chrome y de ahí no me muevo. 
Había probado Moblin y no me convenció, pero ayer instale joliCloud y me ha encantado. Súper sencillo de manejar, arranca en cuestión de segundos y lo mejor de todo, lo fácil que se instala! 
Si eres usuario de Windows tienes que descargarte el ejecutable de aquí una vez descargado dos clicks y listo! Cuando termina de instalarse te pide reiniciar el ordenador y en el reboot ya puedes elegir si arrancar Windows o JoliCloud.
Una vez dentro de JoliCloud nos encontramos con una parrilla de aplicaciones con esta apariencia (a qué me recuerda :D?)

Como veis todas las aplicaciones están orientadas a usarse en la nube. Se pueden descargar más aplicaciones de una especie de "store" de aplicaciones, yo he descargado evernote y dropbox que son los servicios que uso habitualmente y que no venía preinstalados en joliCloud.
Otra cosa que igual me ha gustado es que desde JoliCloud podemos tener acceso al sistema de fichero de Windows leer y escribir en el.
Y por último lo que me terminó de enamorar de JoliCloud es que después de la instalación y a la primera me ha reconocido el modem 3G y venía preconfigurado mi conexión de banda ancha móvil 3G de Vodafone,  eso para mí que no tengo ADSL en casa me ha conquistado! :D

Pues eso, que si queréis tener un SO para esas ocasiones que queréis arrancar el ordenador para asomaros al correo y poco más, que sea rápido, fácil de instalar y ocupe el mínimo espacio os recomiendo JoliCloud.

viernes, 7 de enero de 2011

Desarrollo colaborativo en Dynamics Nav. Parte III, integrar SVN en Nav

El módulo de control de versiones para Nav que hemos desarrollo nace de la necesidad de controlar que objetos y en qué proyectos, paralelos en el tiempo y de una duración considerable, se están modificando.
Lo que se pretende es desde una sola base de datos central (“desarrollo primaria”) controlar todos los objetos que se están modificando aunque estos estén en otros proyectos que se están realizando en otras bases de datos (“desarrollo secundaria”). Además nos proporcionará información sobre cuando un objeto debe ser importado en la bbdd de “desarrollo primaria”, nos permitirá ver las diferencias en el código entre objetos de distintas bases de datos o recuperar versiones antiguas de un objeto.
Para conseguir esto lo que hacemos es usar un conjunto de repositorios gestionados por Subversion (no se guardan objetos, solo las diferencias entre una versión y la anterior) de forma que la comunicación se realiza desde las bases de datos secundarias hacia la primaria a través del repositorio. Este sistema se integra en Navision a través de una interfaz desarrollada en .NET.



En el diagrama se ve cómo funciona la comunicación de objetos en el sistema. Cada BD secundaria tiene su propio repositorio, donde envía revisiones de sus objetos y de donde puede extraer revisiones anteriores de sus objetos desde Nav.
La BD primaria por su parte tiene su propio repositorio donde puede enviar revisiones de sus objetos y extraer revisiones anteriores. Además la BD primaria tiene acceso para extraer objetos de los repositorios secundarios de esta forma podemos obtener las modificaciones que se están realizando en las BD secundarias para integrarlas en la primaria.
Los objetos que se envían a las BD del cliente siempre pasarán por la BD primaria y se integraran en esta para evitar la pérdida de modificaciones realizadas en BD secundarias o en la misma BD primaria.


martes, 28 de diciembre de 2010

Cómo saber los permisos que tienes sobre un objeto

Muchas veces no sabemos que objetos podemos modificar con una licencia. Os dejo un truco para saber que permisos tenemos para determinados rangos de objetos en una base de datos de Dynamics Nav.
Esta información se guarda en la tabla virtual "Permission Range", en versiones anteriores a la 2009 no podemos ver el contenido de esa tabla directamente, para ello lo que vamos a hacer es crear un formulario nuevo usando el asistente, en el campo "Table" escribimos "Permission Range"
Seleccionamos Tabular-Type Form y le damos a aceptar
Elegimos mostrar todos los campos. Podemos guardar el formulario dando a Finish o bien si solo queremos hacer una consulta de algún objeto específico damos a Preview

Vemos los permisos por objetos y rango de objetos que tiene nuestra licencia.

Esta truco sirve para mostrar el contenido de cualquier tabla virtual, por ejemplo las tablas "Object" o "Session"

lunes, 27 de diciembre de 2010

Desarrollo colaborativo en Dynamics Nav. Parte II, el repositorio


Cualquier proyecto en el que intervengan varias personas usando los mismos ficheros, no tienen porque ser código fuente, requiere de un sistema de control de versiones que gestione unos repositorios donde se almacenarán las copias comunes de esos ficheros.
Una versión, revisión o edición de un fichero, es el estado en el que se encuentra dicho fichero en un momento dado de su desarrollo o modificación. Se llama control de versiones a la gestión de los diversos cambios que se realizan sobre los elementos de algún producto o una configuración del mismo. Los sistemas de control de versiones facilitan la administración de las distintas versiones de cada producto desarrollado, así como las posibles especializaciones realizadas (por ejemplo, para algún cliente específico).

Existen varios sistemas de control de versiones:
  • Team foundation server de Microsoft
  • CVS
  • Source Safe de Microsoft
  • Subversion ó SVN
Para este proyecto hemos decidido usar Subversion e integrarlo con Dynamics Nav para controlarlo dentro del mismo entorno de desarrollo al que estamos tan acostumbrados.

Subversion es un sistema de control de versiones con la política copiar-modificar-mezclar con gran proyección en la actualidad. Por ejemplo, SourceForge utiliza Subversion como control de versiones, también Google Code se basa en Subversion. Gran parte del éxito de Subversion es su agilidad cuando intervienen varias personas, debido a su política, y a su flexibilidad que no lo limita a desarrollos software: es posible almacenar planos, imágenes, libros…

A la hora de instalar Subversion hay que tener en cuenta de van a estar los repositorios y como vamos a acceder a ellos. Se puede acceder  a los repositorios de Subversion a través de muchos métodos diferentes --en un disco local, o a través de varios protocolos de red. Una ubicación dentro del repositorio, sin embargo, es siempre una URL. La tabla describe cómo se corresponden diferentes esquemas de URL con los métodos de acceso disponibles. Métodos de acceso

EsquemaMétodo de acceso
file://acceso directo al repositorio (en disco local)
http://Acceso a través del protocolo WebDAV a un servidor web Apache2 con Subversion incluido
https://Igual que http://, pero con cifrado SSL
svn://Acceso al servidor svnserve mediante el protocolo predeterminado
svn+ssh://Igual que svn://, pero a través de un túnel SSH

En nuestro caso, hemos optado por acceso mediante el protocolo http. Para en lugar de instalar el paquete básico de Subversión hemos instalado Visual SVNServer que incluye el servidor web Apache.
Se puede obtener gratuitamente desde aquí http://www.visualsvn.com

No voy a meterme más en lo que es Subversion ya que se haría interminable el post, y además existe infinita documentación sobre este sistema de control de versiones.


Ya había cerrado el post, pero si quería comentar una cosa más. Subversion permite crear la estructura de repositorio que queramos, es cierto que se recomienda como mínimo tener las carpetas Trunk, Branches y Tags pero solo es una recomendación.
A la hora de decidir como queríamos gestionar el repositorio dudamos si esta recomendación, para la naturaleza de Dynamics Nav y como se afrontan los proyectos en un cliente Dynamics Nav sería adecuada, es más dudamos si no sería conveniente disponer de un repositorio para cada proyecto en lugar de una carpeta para cada proyecto dentro del mismo repositorio.
Al final, dado que nuestro interés radica en poder versionar los cambios en los objetos de Nav por proyectos, en que no necesitamos mantener una rama común, que podría nacer de los objetos estándar de Nav sin modificaciones, si no que nuestra rama común será tratada como un proyecto en sí y en que no necesitaremos mantener componentes externos (librerías de terceros por ejemplo) en los distintos proyectos hemos optado por la opción de tener un repositorio distinto para cada proyecto en lugar de todos los proyectos dentro del mismo repositorio.

Ahora si cierro el post ;)


lunes, 20 de diciembre de 2010

Desarrollo colaborativo en Dynamics Nav. Parte I, los problemas

Todos los que trabajamos habitualmente en el desarrollo de Dynamics Nav sabemos lo pobre que es y las pocas posibilidades que proporciona su EDI para desarrollar en C/AL, sobre todo cuando también trabajamos con otros como Visual estudio, Eclipse o NetBeans.
No solo nos quejamos de un aspecto visual pobre o de la poquísima ayuda al desarrollo que pueda proporcionar. Lo peor de todo es la nula aportación que hace al desarrollo colaborativo, sin pensar mucho se me ocurren una serie de problemas que tarde o temprano a todos nos han acarreado perder trabajo o tiempo:

  • Olvidaros de programar dos personas sobre los mismos objetos en la misma base de datos, si no os ponéis de acuerdo os acabareis pisando el trabajo
  • Olvidaros de programar el mismo objeto en dos bases de datos distintas sin tener que emplear un buen rato después para integración de las modificaciones
  • Olvidaros de tener una mínima historia de las modificaciones sufridas por un objeto: quién lo ha modificado, cuándo, para que proyectos ha sido modificado..
  • Olvidaros de deshacer modificaciones en caso de un error como puede ser importar un objeto erróneo y no tuvierais copia de ese objeto
  • ...
Estos días hemos estado desarrollando un módulo que nos ayudará a trabajar varias personas en varios proyectos dentro de un mismo cliente. Los puntos que hemos querido cubrir:
  • Un programador podrá bloquear un objeto impidiendo a otros programadores modificarlo hasta que no lo libere. Los objetos se pueden bloquear de forma automática con solo abrirlo en el diseñador.
  • Cada objeto tendrá asociada una historia: cuándo fue modificado, para que proyecto, por qué programador, cuando se envió al cliente.
  • Manejaremos una base de datos de desarrollo principal y varias secundarias para cada proyecto.
  • Desde la base de datos principal tendremos visibilidad sobre todos los objetos que se modifican en las secundarias a través de su historia.
  • Antes de importar un objeto de un proyecto (base de datos secundaria) en la base de datos principal para poder mandárselo al cliente, podremos comparar sin salir de Dynamics Nav las diferencias de código que hay entre la versión de la base de datos principal y la versión del objeto que hay en la base de datos del proyecto.
  • Se podrán recuperar distintas versiones de un objeto desde su historia. Si perdemos modificaciones de un objeto siempre podremos comparar como está el objeto en la base de datos en este instante con una versión del objeto en un momento anterior.
  • Informe de riesgo. Antes de importar los objetos modificados de un proyecto podremos sacar un informe donde veamos para que otros proyectos se han modificado esos objetos-
Todas estas nuevas funciones estarán integradas en Dynamics Nav como un nuevo menú para no tener que salir del entorno que ya conocemos.

Con todo esto lo que buscamos es, desde una sola base de datos por cliente, controlar varias bases de datos en las que distintos desarrolladores lleven a cabo distintos proyectos e integrar todas las modificaciones de una forma sencilla y controlada para no perder modificaciones y mantener un historial de todas estas modificaciones para para poder recuperarlas en cualquier momento.

miércoles, 15 de diciembre de 2010

Ya está disponible Dynamics Nav 2009 R2

Llevo mucho tiempo sin escribir nada, demasiado trabajo, sobre todo un proyecto muy interesante que estoy realizando para poder hacer un entorno de desarrollo en Nav colaborativo con bloqueos entre usuarios, control de versiones por proyectos, repositorio de código... bueno bueno cuando lo tenga listo (qué ya queda poco) mostraré aquí el resultado (a mi entender bastante bueno :))

Después de la disculpa, esta pequeña entrada es solo para comentar que ya se ha lanzado la versión 2009R2. Ya había comentado anteriormente sobre ella. Se puede descargar de la partner source desde el siguiente link:
https://mbs.microsoft.com/partnersource/support/selfsupport/productreleases/microsoftdynamicsnav2009r2.htm

Disfrutarla!