sábado, 19 de abril de 2008

Sang Shin en Cordoba

El jueves 17 de Abril de este año estuvo el señor Sang Shin en la Universidad Tecnologica Nacional Facultad Regional de Cordoba disertando acerca del desarrollo de aplicaciones SOA, BPEL JBI y Open ESB con la IDE NetBeans.
La conferencia fue organizada por el grupo de usuarios java de cordoba
Se diserto acerca de los conceptos fundamentales de las tecnologias SOA, BPEL JBI, y Open ESB y se siguio un ejemplo practico acerca de como la IDE NetBeans 6.0 facilita el trabajo con estas tecnologias.

NetBeans ha crecido mucho desde la version 5.0 hasta la version actual. Tiene caracteristicas, entre otras, como:
Estar soportado por una comunidad
Plugin Central desde donde puedan descargarse los plugins para la IDE
Tutoriales para cada una de las tecnologias que soporta
Soporte para el desarrollo de aplicaciones colaborativas
Soporte para el desarrollo de aplicaciones web
Soporte para el desarrollo de aplicaciones moviles
Soporte para el desarrollo de aplicaciones desktop
Soporte para otros lenguajes de programacion como Ruby y C/C++
Ventanas de edicion de codigo que facilitan el trabajo del desarrollador

Es importante tener en cuenta estas caracteristicas y las caracteristicas que son sobresalientes en otras IDEs como Eclipse y JDeveloper, debido a que debemos buscar que las mismas satisfagan eficientemente nuestras necesidades como desarrolladores con el objetivo de aumentar nuestra productividad. Esto depende por lo general del tipo de proyecto que encaremos.

En el proximo posteo, espero poder hacerles llegar un ejemplo practico, y "with passion" de lo visto en la conferencia del señor Sang Shin.

miércoles, 17 de octubre de 2007


script ruby para la busqueda de codigo en un archivo de un repositorio svn

El objetivo del programa es vericar la presencia de codigo en branches de un repositorio.
El codigo a detectar se especifica en un archivo plano con pares: path, expresion-regular
En donde la expresion-regular es la expresion regular a buscar en el path especificado
El programa recibe como parametro la url del repositorio y los branches dentro de esa url sobre
los cuales se iterara para detectar el codigo especificado en el archivo.

ruby check_codigo http://svn.ar.empresa/Proyecto/branches/bugs 0012812 0012813 archivo

Busca en el repositorio http://svn.ar.empresa/Proyecto/branches/bugs, en los branches que comiencen identificados por 0012812 y0012813 lo especificado en archivo.

El archivo archivo debe contener algo como lo siguiente
path expresion-regular
path expresion-regular
... 

#!/usr/bin/ruby -w
# Created by Martin Baspineiro 9/10/2007

# Lectura del archivo
#Obtiene una estructura de datos Hash con pares: archivo en el cual buscar, patron de #busqueda.
def leer_archivo(nombreArchivo)
  busqueda = Hash.new
  IO.readlines(nombreArchivo).each do |line|
     k, v = line.split
     busqueda[k] = v
  end
  busqueda
end

#Busca un conjunto de cadenas descriptas por un patron en un archivo determinado
def buscar_en_archivo(url_branches, branch, archivo, patron)
  out = `svn cat #{url_branches}/#{branch}/#{archivo} | grep --count --regexp=#{patron}`
  cantidad_ocurrencias = out.chomp.to_i
  if cantidad_ocurrencias > 0
     puts "Se encontraron #{cantidad_ocurrencias} ocurrencias"
  else
     puts "No se encontraron ocurrencias"
  end
end

#Verificacion de parametros del script
ids = ARGV
if ids.empty? || ids.length < 3
  puts "uso: #{$0} url_branches bug1_id [bug2_id [bug3_id [...]]] search_file"
  exit 1
end

#Inicializacion de variables
url_branches = ids[0];
branches = ids[1..-2];
puts "#{branches}"
file_name = ids.last;
busqueda = leer_archivo(file_name);

#Busco en los branches, en los archivos especificados un patron determinado
branches.each do |branch|
  puts "========================================================"
  puts "Analizando branch #{branch}..."
  busqueda.each_pair do |key, value|
    puts "========================================================"
    puts "Buscando..."
    puts "En el archivo: #{key}"
    puts "El patron: #{value}"
    puts"========================================================"
    buscar_en_archivo(url_branches, branch, key, value);
  end
end






viernes, 21 de septiembre de 2007

Sistemas web para la gestion de proyectos

basecamp

goplan

lunes, 10 de septiembre de 2007

Merges y Conflictos

En el desarrollo de Software utilizamos Sistemas de Control de Versiones , como por ejemplo CVS o Subversion, para controlar las versiones o revisiones de nuestro codigo fuente. Una practica comun consiste en crear branches o ramas a partir de una linea base o tronco para el desarrollo de una funcionalidad en particular.
Cuando mergeamos los branches creados con la linea base a partir de la cual fue creada solemos encontrarnos con conflictos.

Se puede tener una gran cantidad de conflitos debido a diferentes razones:

- La introduccion de gran cantidad de cambios en el branch.
- La introduccion de cambios en los archivos de la linea base que tambien son modificados en el branch.

Para evitar este tipo de conflictos lo recomendable es:

- Evitar que pase mucho tiempo entre la resolucion del branch y el merge con la linea base.
- Evitar crear branches si la arquitectura de la aplicacion no esta totalmente o en gran porcentaje definida.
- Evitar introducir cambios grandes no necesarios en los branches.
- Evitar crear branches durante un refactory de clases, realizar la creacion de branches una vez finalizado el refactory.

jueves, 23 de agosto de 2007

Creacion del blog

Hola, el objetivo de este blog es transmitir mis experiencias con las tecnologias de las comunicaciones e informacion. Sin duda durante este proceso tambien transmitire mi humilde manera de ver las cosas. Espero que lo posteado aqui sea de utilidad.