lunes, 13 de julio de 2009

La interesante vida de un programador!!!

Hace algunos dias tuve una discusion sobre el por que no hablo mucho sobre mi trabajo y no es que no quiera, sino que siendo realista si uno se pone a hablar sobre lo que hace la verdad veriamos a los que nos rodean viendonos como una extraña clase de entes que se han escapado de la realidad y la no estarian tan alejados de la verdad.

Imaginemos una platica entre un Desarrollador X y una Persona Comun Y (para evitar mucha introduccion seria la novia o lo que mas se acerque)

Persona Comun Y: Que tal el trabajo?
Desarrollador X: INCREIBLE!!!! me toco realizar una aplicacion en 3 capas que consumiera un Web Service de SAP y el resultado lo mostrara en una pagina ASP.NET todo esto con C# como code behind y JavaScript para acompañar el Front yo todo eso antes de comer
Al regresar de comer tuve que diseñar una aplicacion que gestionara los procesos que corren en el Background todo esto mediante WCF y que estos se pudieran monitorear mediante la WEB en una aplicacion Silverlight que utiliza el nuevo Framework MVC y tambien en una aplicacion de escritorio usando WPF y tomando los patrones de diseño que vi en Quince obviamente todo el proceso del log lo realize utilizando el Enterprise Library, etc...
Persona Comun Y: aja...
Persona Comun Y: que bueno que te la pasaste bien

pero bueno encontre otra forma de hacerme entender mediante un video que encontre en You Tube que explica practicamente todos los aspectos de la vida laboral de un programador espero les guste




Y para los que les digan que estan enajenados con el trabajo el siguiente video a lo mejor y ya estan asi




Saludos

domingo, 28 de junio de 2009

Abraza a un programador

La vida de un programador y todo lo que sufren en este conmovedor video se ve todo lo que un programador tiene que pasar pobres hay que hacer una fundacion para protegerlos.


Saludos!!

El orgullo de ser desarrollador

Hoy andaba googleando por ahi y me encontre con este increible articulo que habla mucho de lo que siento y de lo que es para mi ser un desarrollador

Es un articulo de Adam Barr y se llama "El orgullo de ser desarrollador" y pueden verlo en el siguiente link

http://msdn.microsoft.com/es-mx/magazine/cc163418.aspx

jueves, 25 de junio de 2009

Web User Control Star Rating

Hola otra vez mis lectores hoy me encontre con otro desafio al momento de desarrollar pero encontre algo bastante util como la utilizacion de un Web User Control para esto desarrolle un Rating Control como los que se llegan a ver en la mayoria de paginas para calificar algo ya sea un video una foto o lo que quieran

Les dejo el codigo espero les sirva y si pueden ayudarme a hacerlo mas facil ya saben que son bien recibidos los comentarios

Del lado del ascx



Del lado del cs

using System;
using System.Text;
using System.Data;
using System.Collections;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Concurso_ControlStarRating : System.Web.UI.UserControl
{
public int iNumeroEstrellas = 10;
public int iValorActual = 0;
protected void Page_Load(object sender, EventArgs e)
{
SetRanking();
if (!Page.IsPostBack)
{
RellenaEstrellas();
}
}

private void RellenaEstrellas()

{

DataTable dt = new DataTable();

DataColumn dc = new DataColumn("fcValor");

dt.Columns.Add(dc);

ArrayList arValores = new ArrayList();

for (int iNumeroItems = 0; iNumeroItems < iNumeroEstrellas; iNumeroItems++)

{

arValores.Clear();

arValores.Add((iNumeroItems + 1).ToString());

dt.Rows.Add(arValores);

}

dlStarList.DataSource = dt;

dlStarList.DataBind();

}

protected void dlStarList_ItemDataBound(object sender, DataListItemEventArgs e)

{

Image image = (Image)e.Item.FindControl("imgRating");

if (image != null)

{

iValorActual = iValorActual + 1;

image.ImageUrl = "~/Images/EstrellaVacia.gif";

image.ToolTip = iValorActual.ToString();

image.Attributes.Add("onMouseover ", "ShowSelectedStart('" + image.ToolTip + "','" + iNumeroEstrellas.ToString() + "','" + image.ClientID + "');");

image.Attributes.Add("onMouseout ", "ShowUnSelectedStart('" + iNumeroEstrellas.ToString() + "','" + image.ClientID + "','" + hfEstrellaSeleccionada.ClientID + "');");

image.Attributes.Add("onClick ", "SetRating('" + image.ToolTip + "','" + iNumeroEstrellas.ToString() + "','" + image.ClientID + "','" + hfEstrellaSeleccionada.ClientID + "');");

}

}

private void SetRanking()

{

TextBox txt = new TextBox();

StringBuilder sb = new StringBuilder();

sb.AppendLine("<script language=\"javascript\" type=\"text/javascript\">");

sb.AppendLine("function SetRating(iCalificacion,iMaxValue,imgEstrella,oCajaTexto)");

sb.AppendLine("{");

sb.AppendLine(" var txtValor=document.getElementById(oCajaTexto);");

sb.AppendLine(" txtValor.value=iCalificacion");

sb.AppendLine(" var iEstrellaSeleccionada = 0;");

sb.AppendLine(" var sEstrella;");

sb.AppendLine(" var imgSeleccionada;");

sb.AppendLine(" for(iEstrellaSeleccionada = 0; iEstrellaSeleccionada<iMaxValue; iEstrellaSeleccionada++)");

sb.AppendLine(" {");

sb.AppendLine(" sEstrella = imgEstrella.substring(0,(imgEstrella.length-12));");

sb.AppendLine(" sEstrella = sEstrella +padLeft(iEstrellaSeleccionada.toString(),'0',2)+ '_imgRating';");

sb.AppendLine(" imgSeleccionada =document.getElementById(sEstrella);");

sb.AppendLine(" imgSeleccionada.src='../Images/EstrellaVacia.gif';");

sb.AppendLine(" }");

sb.AppendLine(" for(iEstrellaSeleccionada = 0; iEstrellaSeleccionada<iCalificacion; iEstrellaSeleccionada++)");

sb.AppendLine(" {");

sb.AppendLine(" sEstrella = imgEstrella.substring(0,(imgEstrella.length-12));");

sb.AppendLine(" sEstrella = sEstrella +padLeft(iEstrellaSeleccionada.toString(),'0',2)+ '_imgRating';");

sb.AppendLine(" imgSeleccionada =document.getElementById(sEstrella);");

sb.AppendLine(" imgSeleccionada.src='../Images/EstrellaSeleccionada.gif';");

sb.AppendLine(" }");

sb.AppendLine("}");

sb.AppendLine("function ShowSelectedStart(iCalificacion,iMaxValue,imgEstrella)");

sb.AppendLine("{");

sb.AppendLine(" var iEstrellaSeleccionada = 0;");

sb.AppendLine(" var sEstrella;");

sb.AppendLine(" var imgSeleccionada;");

sb.AppendLine(" for(iEstrellaSeleccionada = 0; iEstrellaSeleccionada<iMaxValue; iEstrellaSeleccionada++)");

sb.AppendLine(" {");

sb.AppendLine(" sEstrella = imgEstrella.substring(0,(imgEstrella.length-12));");

sb.AppendLine(" sEstrella = sEstrella +padLeft(iEstrellaSeleccionada.toString(),'0',2)+ '_imgRating';");

sb.AppendLine(" imgSeleccionada =document.getElementById(sEstrella);");

sb.AppendLine(" imgSeleccionada.src='../Images/EstrellaVacia.gif';");

sb.AppendLine(" }");

sb.AppendLine(" for(iEstrellaSeleccionada = 0; iEstrellaSeleccionada<iCalificacion; iEstrellaSeleccionada++)");

sb.AppendLine(" {");

sb.AppendLine(" sEstrella = imgEstrella.substring(0,(imgEstrella.length-12));");

sb.AppendLine(" sEstrella = sEstrella +padLeft(iEstrellaSeleccionada.toString(),'0',2)+ '_imgRating';");

sb.AppendLine(" imgSeleccionada =document.getElementById(sEstrella);");

sb.AppendLine(" imgSeleccionada.src='../Images/EstrellaSeleccionada.gif';");

sb.AppendLine(" }");

sb.AppendLine("}");

sb.AppendLine("function ShowUnSelectedStart(iCalificacion,imgEstrella,oCajaTexto)");

sb.AppendLine("{");

sb.AppendLine(" var txtValor=document.getElementById(oCajaTexto);");

sb.AppendLine(" var iEstrellaSeleccionada = 0;");

sb.AppendLine(" var sEstrella;");

sb.AppendLine(" var imgSeleccionada;");

sb.AppendLine(" for(iEstrellaSeleccionada = 0; iEstrellaSeleccionada<iCalificacion; iEstrellaSeleccionada++)");

sb.AppendLine(" {");

sb.AppendLine(" sEstrella = imgEstrella.substring(0,(imgEstrella.length-12));");

sb.AppendLine(" sEstrella = sEstrella +padLeft(iEstrellaSeleccionada.toString(),'0',2)+ '_imgRating';");

sb.AppendLine(" imgSeleccionada =document.getElementById(sEstrella);");

sb.AppendLine(" imgSeleccionada.src='../Images/EstrellaVacia.gif';");

sb.AppendLine(" }");

sb.AppendLine(" for(iEstrellaSeleccionada = 0; iEstrellaSeleccionada<txtValor.value; iEstrellaSeleccionada++)");

sb.AppendLine(" {");

sb.AppendLine(" sEstrella = imgEstrella.substring(0,(imgEstrella.length-12));");

sb.AppendLine(" sEstrella = sEstrella +padLeft(iEstrellaSeleccionada.toString(),'0',2)+ '_imgRating';");

sb.AppendLine(" imgSeleccionada =document.getElementById(sEstrella);");

sb.AppendLine(" imgSeleccionada.src='../Images/EstrellaSeleccionada.gif';");

sb.AppendLine(" }");

sb.AppendLine("}");

sb.AppendLine("function padLeft(str, pad, count) ");

sb.AppendLine("{");

sb.AppendLine(" while(str.length<count)");

sb.AppendLine(" {");

sb.AppendLine(" str=pad+str;");

sb.AppendLine(" }");

sb.AppendLine(" return str;");

sb.AppendLine("}");

sb.AppendLine("</script>");

Page.RegisterClientScriptBlock("SetRating", sb.ToString());

}

A comprar la XBOX 360!!

Hoy buscando nuevas cosas de la Xbox 360 me encontre con el proyecto NATAL que al parecer saldra a la luz para el 2010 a mi punto de vista augura mucho y seria un buen punto a tomar en cuenta al momento de decidir que consola comprar y la verdad si no son fanaticos seria bueno que vieran este video




Saludos

jueves, 11 de junio de 2009

Obtener el tamaño de una tabla en SQL Server

Hoy en el trabajo tratando de ver el crecimiento de la Base de Datos me encontre con la pregunta de ¿que tamaño tendra cada tabla? y encontre un Procedimiento Almacenado en SQL Server que te lo dice, pero no lo iba a hacer tabla por tabla asi que decidi crear una consulta

Espero les sirva

  
SET NOCOUNT ON;
DECLARE
@fiMaxFilas INT,
@fiRenglonActual INT,
@fcComando VARCHAR(120)

SET @fiRenglonActual = 1

DECLARE @AllTables TABLE
(
fiIndice INT NOT NULL PRIMARY KEY,
fcNombreTabla VARCHAR(100) NOT NULL
)

INSERT INTO @AllTables
SELECT ROW_NUMBER() OVER(ORDER BY name) AS fiIndice,
name
FROM sysobjects
WHERE type = 'U'

SELECT @fiMaxFilas = MAX(fiIndice) FROM @AllTables

WHILE (@fiRenglonActual <= @fiMaxFilas )
BEGIN

SELECT @fcComando = 'sp_spaceused '+ fcNombreTabla FROM @AllTables WHERE fiIndice = @fiRenglonActual
EXECUTE (@fcComando)

SET @fiRenglonActual = @fiRenglonActual+1

END

sábado, 30 de mayo de 2009

CamStudio si existe lo bueno, bonito y barato

Hoy estaba muy decidido a empezar a elaborar un video tutorial pero las herramientas para realizar el screen recorder no me convencían, no había encontrado ninguna que tuviera todo lo que yo estaba buscando
  1. Fácil de manejar
  2. Consuma pocos recursos
  3. No alente el render de la pantalla cuando estuviera grabando
  4. Lo más importante que sea gratis
Con esas características descarte el Camtasia Studio que era el único screen recorder que había manejado y me encontré con el CamStudio - Software de grabación de vídeo Streaming que cumple con todo lo que yo estaba buscando así que pronto subiré varios video tutoriales sobre programación grabados con el CamStudio. Este graba sus vídeos en formato AVI pero no hay problema ya que cuenta con una herramienta para convertir el vídeo a formato flash el SWF Producer así que a grabar lo que hagan en el escritorio por lo mientras los dejo con estas capturas de pantalla

El enlace para la pagina oficial es http://www.camstudio.org/





miércoles, 20 de mayo de 2009

Surface del Touch al Multitouch

Googleando por la web me encontré con esto que también tiene Microsoft como proyecto en desarrollo Surface es una mesa computadora que puede soportar docenas de toques simultáneamente es bastante emocionante que esta mesa pueda conectarse a todo lo que se le ponga encima y además interactuar con el contenido como fotos archivos, etc. Pero para que sigo escribiendo si las imágenes pueden hablar por si solas les dejo el siguiente link para que vean que mas nos depara el futuro

http://www.microsoft.com/surface/

Les dejo 2 videos sobre lo que tiene surface



lunes, 18 de mayo de 2009

Insertar SyntaxHighlighter en Blogger (para que tu codigo se vea bonito)

He publicado varias articulos sobre programación y al principio tenia una serie de problemas, ya que no me gustaba como se veia el codigo era horroroso como si se hubiera copiado del bloc de notas y este hubiera sido escrito todo en una misma linea estuve probando con varias opciones hasta que encontre SyntaxHighlighter que es lo mejor que he encontrado para publicar codigo y lo mejor es que es gratis

Pero si ocupas solo poner un breve tag lo mas recomendable es un convertidor de tags aqui hay uno que esta muy bien y es de facil uso BloggerPaste

Bueno ahora les enseñare como implementar SyntaxHighlighter en Blogger

Primero que nada estas modificaciones se van a hacer en la parte que corresponde al diseño de tu blog en el apartado de Edición de HTML una vez estando ahi esto es lo que haremos

Necesitaras la informacion de la hoja de estilo

1.- Copia el sigueinte bloque



.dp-highlighter .comment, .dp-highlighter .comments { color: #008200; background-color: inherit; }
.dp-highlighter .string { color: blue; background-color: inherit; }
.dp-highlighter .keyword { color: #069; font-weight: bold; background-color: inherit; }
.dp-highlighter .preprocessor { color: gray; background-color: inherit; }

2.- Pegalo despues de <b:skin><!--[CDATA[/*
y antes de ]]--></b:skin>
3.- Copia lo que viene y pegalo despues del tag </head>
















4.- Copia lo que sigue y pegalo despues del </body> tag



5.- Salva tu plantilla y ahora cada vez que desees poner codigo en tu Blog deberas ponerlo como se muestra a continuacion


...Aqui va el codigo que quiera los diferentes tipos los puedes encontrar en la pagina del proyecto

PicPick una excelente herramienta para captura de pantallas

Estos dias que he estado haciendo manuales me encontre esta herramienta la veo de gran ayuda para aquellos que tengan que realizar capturas de pantalla y quieran evita utilizar word o el paint

Es el PicPick un programita muy intuitivo y lo me jor es gratis bueno si gustan pueden realizar un donativo por no es obligatorio pero si lo usan yo creo que no dudaran en aportar algo a este interesante programa

PicPick

Office Labs lo que estan preparando

Esto es algo de lo que esta preparando el equipo de Office Labs un video motivador para aquellos que les gusta soñar en grande