miércoles, enero 20, 2010

Comandos Source Control Team Foundation

Buenas, hay veces que puede ser util realizar segun que acciones en el control de codigo fuente del team foundation desde la línea de comandos. Os voy a poner un ejemplo, en mi empresa compartimos varias dlls para diferentes proyectos, teniendo el código fuente en uno a parte, teniendo el problema, que en el momento que se desarrolla una nueva funcionalidad se ha de desplegar al resto, hasta ahora haciendo esta acción manualmente (copy & paste).

Cansado de esta tarea, he hecho un pequeño bat, que realiza dicha acción, para ello hemos hecho servir el ejecutable tf.exe que permite hacer todas las acciones sobre visual studio.


###BAT
SET TF="C:\Archivos de programa\Microsoft Visual Studio 9.0\Common7\IDE\TF.exe"
SET FILE=SolrNet.dll
SET SOURCE="C:\xxxxxxxxx\%FILE%"

## INFOJOBS
SET DESTINATION="C:\yyyyyyyyy\ExternalDLL
cd %DESTINATION%
%tf% checkout %DESTINATION%\%FILE%
copy %SOURCE% %DESTINATION% /Y
%tf% checkin %DESTINATION%\%FILE% /comment:"Actualizacion automatica de SOLR" /notes:"Development description"="Actualizacion automatica de SOLR"

lunes, enero 18, 2010

Editar registro de una máquina remota

Editar el registro de una máquina remota es fácil de hacer aunque parece lo contrario por la cantidad de blog que he estado leyendo.

Para ello utilizaremos el regedit de una máquina que este situada en la misma red, y clicaremos sobre la opción "Conectar a registro de red...", una vez aquí introduciremos el nombre o la IP de la máquina deseada y por arte de magia, ya podremos modificar la clave deseada.

El motivo de buscar esta opción, ha sido que uno de los equipos de la red tenía el siguiente problema:

SINTOMA
Inicio sesión en windows y en cuanto carga el escritorio, cierra la sesión

PROBLEMA
El problema se debe a la desconfiguración del userinit.exe, pudiendo desconfigurarse en 2 sitios, perdiendo el archivo que se encuentra en c:\windows\system32\ o que la clave del registro se ha desconfigurado y a perdido dicho directorio.

SOLUCIÓN
Verificar que el archivo se encuentra en el directorio anteriormente descrito
Verificar que la clave HKEY_LOCAL_MACHINE\RamaXP\Microsoft\Windows NT\CurrentVersion\Winlogon y verificar que tiene como valor userinit.exe

jueves, enero 14, 2010

Solr vs Lucene .Net

Actualmente me encuentro trabajando con estas dos tecnologias como sistemas de búsquedas. Que son? Cual es mejor, Solr o Lucene?? Ventajas???

Bueno, podemos indicar que Solr no es más que una capa situada por encima de Lucene que facilita el acceso para realizar consultas y inserciones a un indice de Lucene, optimizando estas acciones.

Las grandes ventajas que he detectado de Solr son:
  • Reducción del tiempo de indexación
  • Mayor rendimiento en consultas, sobretodo en indices grandes (>1 GB), sobretodo en el cálculo de facets
  • Gestion de cache
  • Gestión de inserciones via multithreading
  • Facilidades de creación de entornos master-slave
  • Replicación integrada
  • Bajo nivel de conocimiento de la tecnologia
  • Aislamiento de la plataforma (Podemos ejecutar en Windows y Linux al ser Java)
  • Facilidad para crear la estructura de los indices, permite muchos tipos de tokenizadores y filtros que podemos configurar a nuestro gusto y necesidad


Con todo esto, la pregunta es, ¿Debemos cambiar de tecnologia de búsquedas?
La respuesta es depende, prueba, mide y decide. En nuestro caso, de varios indices que tenemos, la reducción en tiempos a sido expectacular, tanto en reindexación, reduciendo de 13 horas a 1,5 y de tiempo de búsqueda, reduciendo en algunos casos hasta un 90% el tiempo.

domingo, enero 10, 2010

SERIALIZANDO OBJETOS .NET A XML

Una acción muy utilizada hoy en dia a nivel de programación, es la serializacion y deserialización de objetos en cadenas de texto, como no, via XML. De esta manera, conseguimos tener un seguido de caracteres que podemos enviar via red de un lado a otro o guardar objetos fácilmente.

Para ello, que mejor que tener 2 funciones estandards que funcionan para todos los objetos.

Codigo serializacion .net a xml:


public static string Serialize(object pBenefit)
{
System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(pBenefit.GetType());
System.Text.StringBuilder sb = new System.Text.StringBuilder();
System.IO.StringWriter writer = new System.IO.StringWriter(sb);
ser.Serialize(writer, pBenefit);
return sb.ToString();

}


Codigo deserializacion .net de xml:

public static object Deserialize(string lXml, Type lType)
{
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.LoadXml(lXml);

System.Xml.XmlNodeReader reader = new System.Xml.XmlNodeReader(doc.DocumentElement);
System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(lType);

object obj = ser.Deserialize(reader);

return obj;
}