lunes, 20 de octubre de 2008

TortoiseSVN: Optimizar Cache SVN (TSVNCache.exe)

Si somos usuarios de TortoiseSVN seguramente hemos notado en el Administrador de Tareas de Windows que hay un proceso ejecutándose en segundo plano llamado TSVNCache.exe (ocupa alrededor de 5MB de memoria) que es el responsable de colocar y mantener los íconos sobreimpresionados en las carpetas versionadas.
Cada vez que se produce una copia, creación o modificación de un archivo o carpeta en el sistema de archivos este proceso analiza la/s rutas en donde se realiza la acción en busca de la carpeta oculta ".svn" (la presencia de la misma indica que se trata de una carpeta versionada) produciendo un gasto absolutamente colosal e innecesario de entrada/salida. Para resolver este problema hay dos posibles soluciones:

1) Desactivar cache, con la consecuente pérdida de los íconos, que por cierto son útiles e ilustrativos.
2) Limitar las rutas de búsqueda de carpetas y/o archivos versionados.

Dado que la segunda opción es la más recomendable configuraremos TortoiseSVN de la siguiente manera:

1) Abrimos la configuración de TortoiseSVN (click derecho sobre el Escritorio, TortoiseSVN -> Configuración)
2) Seleccionamos el ítem "Íconos Sobreimpresionados" en la vista de árbol.
3) Introducimos "C:\*" en el cuadro de texto "Excluir rutas"
4) En el cuadro de texto "Incluir rutas" introduciremos las rutas de las carpetas que deseamos incluir en la búsqueda de archivos versionados, por ejemplo:
C:\Documents and Settings\Usuario\Mis documentos\Visual Studio 2008\Projects*
5) Aplicar los cambios.
6) Reiniciar TSVNCache.exe

SVNBridge: Soporte SVN en Codeplex

SVNBridge es una pequeña y liviana aplicación que se ejecuta en nuestra PC actuando como proxy y traductor entre nuestro cliente SubVersion (TortoiseSVN, svn native, etc...) y un servidor remoto TFS.
El uso de esta aplicación es muy sencillo. La clave esta en la dirección URL usada para obtener el código.

Descargando el proyecto AnOtherBlog:

1) Ejecutar SVNBridge.
2) En nuestro cliente SVN (en mi caso TortoiseSVN) introducimos la siguiente dirección:
http://localhost:8081/tfs04.codeplex.com/anotherblog
3) Descargamos el código.

En el siguiente link se encuentran los archivos binarios de SVNBridge que he compilado con la última versión de código fuente (23665) disponible hasta la fecha.

SVNBridge-23665-bin

jueves, 25 de septiembre de 2008

Fotos 2º Presentacion

El Viernes 12 de Septiembre se ralizo una nueva presentacion, aqui hay algunas fotos...

martes, 19 de agosto de 2008

Encuento de Desarrolladores .NET en Jujuy - Animate y aprende algo nuevo

El día 22 de agosto en el auditorio de la UCSE - DASS (Lavalle 333 - San Salvador de Jujuy) y de 17 a 21 hs. se ha de realizar Primer Encuentro de Desarrolladores .NET de Jujuy.
Este es un encuentro gratuito organizado en conjunto por las Células Académicas Jujuy ASP NET y THE ASP-BERRIES.
Los temas a tratar y los oradores son:
Diego Ortega (Líder THE ASP-BERRIES) y Octavio Daniel Coro (Profesor THE ASP-BERRIES) - AJAX: Fundamentos teóricos e introducción. La necesidad de incorporar la tecnología al desarrollo de Páginas Web para una mejor interacción con el usuario. Herramientas disponibles para ASP.NET. Ejemplos prácticos. Modalidad: PPT + demo. 45 min.
Guillermo Bellmann (Líder Jujuy ASP NET) - LINQ: Evolución del acceso a datos. Integración en el lenguaje. Simplificando y unificando el acceso a cualquier tipo de datos. Modalidad: PPT + demo. 45 min.
Federico Medrano (Vicelíder Jujuy ASP NET) y Lucas Bolívar (Miembro Jujuy ASP NET) - ASP.NET MVC: Implementación del patrón de diseño para ASP.NET. Descripción y esquema de funcionamiento. Ventajas aportadas. Integrando el framework MVC al desarrollo en Visual Studio 2008. Modalidad: PPT + demo. 45 min.
Antonio Jarma (Vicelíder THE ASP-BERRIES) - Reflection: Fundamentos teóricos e importancia. Potencialidad de Reflection en el desarrolo de aplicaciones. Aplicación del mismo en la plataforma .NET. Ejemplos prácticos y desarrollo de herramientas. Modalidad: PPT + demo. 45 min.
Elvio Velázquez (Miembro THE ASP-BERRIES) - Interfaces personalizadas con Web Parts, conceptos desarrollo y configuración, comunicacion y persistencia. Ejemplos Prácticos. Modalidad: PPT + demo. 45 min.
Todos los que quieran ser parte de esta fiesta seran bienvenidos!!!!
Para participar tan solo deben incribirse en el link siguiente:http://msevents.microsoft.com/CUI/InviteOnly.aspx?EventID=96-91-12-BF-BE-0F-70-14-A4-86-D0-5C-78-39-28-90&Culture=es-AR
Va a haber regalos y sorteos y... y... mucha fruta. Los esperamos!!

lunes, 30 de junio de 2008

Introduccion

Hola a todos, para aquellos que se estan iniciando en esto les recomiendo la pagina http://www.illasaron.com/, en esta pagina van a encontrar unos 22 videos introductorios al ASP, los vi y francamente me saco el sobrero ante el sujeto que los hizo...MINIU!!! (si ven los videos van a entender porque eso ultimo)
Y nada... tambien hay videos tutoriales de CSS. Suerte!!!

domingo, 29 de junio de 2008

Mensajes al usuario utilizando AJAX

Uno de los temas que vamos a tratar en la célula es AJAX, y resulta que estuve peleando con un esquema para mostrar mensajes que se borren después de un tiempo.

Logre un ejercicio interesante, especialmente para los que arrancan con esta historia de comunicaciones asincrónicas con el servidor.

Definitivamente con ASP.NET es mucho pero mucho más sencillo, solo hay que leer que y como lo hacen los diferentes controles.

Toda la explicación, incluso el código fuente del proyecto lo encuentran aquí.

sábado, 28 de junio de 2008

Tratamiento de Cadenas en C#

El lenguaje C#, al ser un derivado del lenguaje C, tiene ciertos caracteres que tienen un significado particular, y al ser incluidos en una cadena de texto deben ir precedidos por el caracter de escape ("\").
Por ejemplo: para escribir "C:\" en una cadena deberemos escribir "C:\\".
Pero, qué pasa si queremos escribir una cadena como la cadena de conexión del ejemplo de Conexión a la base de Datos de Diego?
Puede resultar muy engorroso tener que escribir "\\" por cada subdirectorio. Lo que además resulta complicado de leer. (Ni hablar si se está escribiendo una expresión regular!!!)
Para esto existe una solución!!!
Se debe anteponer a la cadena el símbolo "@", para que la cadena sea tomada tal como está (internamente el compilador tendrá que poner todos los caracteres de escape que necesite).
Ejemplo:
La cadena de conexion original tenía lo siguiente:

string strConexion = "Data Source=.\\SQLEXPRESS;AttachDbFilename=E:\\sql\\MSSQL.1\\MSSQL\\Data\\Celula.mdf;Inte...";

Para que quede más legible la podemos reescribir de la siguiente manera:

string strConexion = @"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\sql\MSSQL.1\MSSQL\Data\Celula.mdf;Inte...";

Conexión a una BD - Segunda Parte

En el post anterior de Diego se vio cómo hacer una conexión a una Base de Datos de SQL Server 2005, traer los datos de una tabla y mostrarlos en un GridView.
El código original es el siguiente:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Collections;
using System.Data.OleDb;

public partial class _Default : System.Web.UI.Page
{
string strConexion = "Data Source=.\\SQLEXPRESS;AttachDbFilename=E:\\sql
\\MSSQL.1\\MSSQL\\Data\\Celula.mdf;Integrated Security=True;Connect
Timeout=30;User Instance=True"
;
protected void Page_Load(object sender, EventArgs e)
{
Listar();
}

//con este metodo relleno el gridview1
protected void Listar()
{
SqlConnection conexion = new SqlConnection(strConexion);
SqlDataAdapter adapter = new SqlDataAdapter("Select * from
Integrantes"
, conexion);
DataSet ds = new DataSet();
try
{
conexion.Open();
adapter.Fill(ds, "Integrantes");
this.GridView1.DataSource = ds.Tables["Integrantes"].DefaultView;
this.GridView1.DataBind();
conexion.Close();
}
catch (SqlException ex)
{
Response.Write("se ha producido una excepción: " + ex);
}
}
}

Para mejorar el código comenzamos por lo siguiente: reemplazar en la cadena de conexión la dirección física del archivo de base de datos por el nombre de la misma, mediante la propiedad Initial Catalog, dejando que el motor del SQL Server busque la ubicación física:

string strConexion = @"Data Source=.\SQLEXPRESS;Initial Catalog=Celula;
Integrated Security=True;Connect Timeout=30;User Instance=True"
;

Otra cosa, en este código se está referenciando muchos NameSpaces que no son necesarios. El comienzo del código debería quedar sólo con lo siguiente:

using System;
using System.Web;
using System.Web.UI;
using System.Data;
using System.Data.SqlClient;

Ahora, como se puede ver en este post de Jujuy ASP NET, es conveniente utilizar bloques using, por lo que se debería cambiar el código de la función Listar para que quede como el siguiente:

protected void Listar()
{
using (SqlConnection conexion = new SqlConnection(strConexion))
{
using (SqlDataAdapter adapter = new SqlDataAdapter("Select * from
Integrantes"
, conexion))
{
using (DataSet ds = new DataSet())
{
try
{
conexion.Open();
adapter.Fill(ds, "Integrantes");
this.GridView1.DataSource = ds.Tables["Integrantes"].DefaultView;
this.GridView1.DataBind();
//conexion.Close();
}
catch (SqlException ex)
{
Response.Write("se ha producido una excepción: " + ex);
}
}
}
}
}

Como se puede ver, también se ha comentado la línea en donde se cierra la conexión. Esto se debe a que al utilizar un bloque using no hace falta cerrar explícitamente la conexión.
Eso es todo! Espero que haya servido.

Pausa

Nada mejor que postear escuchando a Edith Piaf o a los Cranberries ...si... de ahi viene el nombre de la celula, misterio resuelto :-)

Conexion con una BD

Bueno hola, empecemos:

Primero que nada creemos nuestra BD, para ello abramos el SQL, observen el nombre que figura para el nombre del servidor.. mas adelante nos servira.
Bueno una vez dentro hagamos click derecho en DataBase, se nos abrira una solapa y seleccionaremos la primera opcion para crear una nueva Base de Datos.


Bien pues ahora diseñemos una tabla, la cual puede contener los datos de las imagen:

Recordemos añadir algun dato que otro a la tabla, esto podemos hacerlo al abrir la tabla que creamos...
Una vez hecho esto estamos en condiciones de utilizar el Visual Estudio 2008, alli crearemos una pagina Web, y en la misma, en la parte de diseño introduciremos un GridView
Una vez hecho esto se nos pedira el tipo de origen de datos, seleccionaremos SqlDataSource (podremos asignarle un nombre)


Bien una vez ubicada la BD de datos podremos probar la conexion y ver que todo esta bien (que bien que bien... ya todo esta bien) Observen el area marcada con azul, alli se puede apreciar los datos necesarios con los que se a confeccionado nuestra cadena de conexion, tratemos de guardar esta cadena que mas tarde nos servira de mucho...

Damos a ejecutar el proyecto y voila! Todo bien... podremos ver los datos de nuestra BD!!!

Ahora todo bien... pero nuestra tabla se conecta de manera directa con la BD de datos... es esto seguro? Pues no la verdad y es un poco desordenado tambien....

Mejor hagamos todo lo que hicimos pero programando mejor...

Esto por que? Bueno al programar podemos tener un mejor control de la informacion y podemos establecer un patron de trabajo mas que nada... Supongamos que tenemos que hacer muchas de estas tablas y establecer una relacion entre ellas, nos conviene que Pedro haga las tablas, que Miguel realice el enlace, Juancito la programacion y Amalia el diseño... Ahora estamos produciendo software y del bueno.... y estamos minimizando los tiempos.

Esto es mucho mejor que si cada uno de estos individuo hiciese todos los pasos que hicimos nosotros.. pero bueh... basta de chachara ahi vamos...

Copiemos este codigo en el codebehind de nuestra pagina:

ALERTA: antes que nada a nuestro GridView le quitaremos la relacion con su SqlDataSource y le asignaremos ninguno.

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Collections;
using System.Data.OleDb;

public partial class _Default : System.Web.UI.Page
{

string strConexion = "Data Source=.\\SQLEXPRESS;AttachDbFilename=E:\\sql\\MSSQL.1\\MSSQL\\Data\\Celula.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";


protected void Page_Load(object sender, EventArgs e)
{
Listar();
}

//con este metodo relleno el gridview1
protected void Listar()
{
SqlConnection conexion = new SqlConnection(strConexion);
SqlDataAdapter adapter = new SqlDataAdapter("Select * from Integrantes",conexion);
DataSet ds = new DataSet();
try
{
conexion.Open();
adapter.Fill(ds, "Integrantes");
this.GridView1.DataSource = ds.Tables["Integrantes"].DefaultView;
this.GridView1.DataBind();
conexion.Close();
}
catch (SqlException ex)
{
Response.Write("se ha producido una excepción: " + ex);
}
}

}

Bueno no soy muy bueno con los colores pero ahi se va...

Ah observen que hay un strConexion de tipo cadena y le estoy pasando nuestra cadena de conexion que habiamos guardado antes recuerdan? La unica diferencia es que se añadio una barra invertida de mas a esta cadena (sino daba error)

Y Bueno nada... si ejecutamos veremos que obtendremos el mismo resultado, pero ahora tenemos el control de todo

Tambien podriamos haber llamado a un procedimiento almacenado que nos trajera la lista de registros. Pero bueno si alguien quiere meterse en esos llanos, bienvenido sea... SALUDOS Y ESPERO QUE SIRVA ESTO!!!







jueves, 26 de junio de 2008

Temas - A darle atomos!!!

Temas de discucion... hummm bien empecemos de a pucho... en principio vamos a creer que sabemos algo de C# ya... asi que de entrada en estos dias voy a estar preparando el siguiente tema: Conexion con la Base de Datos (BD).
Existen muchas formas de hacerlo y me gustaria que mandaran algunas ideas, cualquier cosa yo voy a postear (asi se dice?) algunas ideas, espero que haya preguntas y que se diga cual es el siguiente tema a estudiar... Bueno nos veremos pronto, saludos!!!
Hola, hola... pues nada.... primero lo primero, no se si tendran el mismo problema que yo al poder acceder a la informacion de Codepl... pero bien yo ya intente y despues de un par de dolores de cabeza lo hice y nada... aqui va una explicadita de como fue
Primero que nada, una vez que se han logueado en la pagina de Code.. alli podran visitar el proyecto de grupo sobre el que estamos avanzando de a puchito en puchito...

Vean que al inicio aparece las formas en que se puede establecer conexion con el proyecto... por ahora nos quedemos con la primera opcion... asi que hacemos click en Cod... proyect como aparece en la imagen.

Acto seguido nos descargamos el archivo zipi.... (si se dice ZIP pero bueh...)
Bueno y ahora nos creamos una carpeta en donde ira nuestro proyecto de manera local en nuestro disco. Una vez hecho estonos pondremos a teclear...
CPC checkout YelNombreDelProyecto
Todo esto sobre la carpeta que hemos creado.. esta linea nos traera el proyecto de internet y lo copiara en nuestra carpeta... solo los cambios efectuados vale aclarar... y luego para que nosotros podamos subir algun cambio efectuado... sobre la misma carpete hemos de escribir
CPC commit YelNombreDelProyecto
Para ambos casos se nos exigira nuestro nombre de usuario y contraseña ademas para el commit deberemos dejar una breve descripcion de las changas que hicimos en un archivo de texto (obligatoria a mi entender) ...
Pues nada, espero que les haya servido, saludos!!!












martes, 24 de junio de 2008



Ya tenemos nuestra bandera!!!

lunes, 23 de junio de 2008

Bienvenidos...