<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>net &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://wordpress.com/tag/net/</link>
	<description>Feed of posts on WordPress.com tagged "net"</description>
	<pubDate>Mon, 13 Oct 2008 03:21:32 +0000</pubDate>

	<generator>http://wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Você tem problemas com a Net? Relate aqui]]></title>
<link>http://eugostodeumacoisaerrada.wordpress.com/?p=613</link>
<pubDate>Mon, 13 Oct 2008 00:19:27 +0000</pubDate>
<dc:creator>Rachel Juraski</dc:creator>
<guid>http://eugostodeumacoisaerrada.da.wordpress.com/2008/10/13/voce-tem-problemas-com-a-net-relate-aqui/</guid>
<description><![CDATA[O consumidor deve ser o cara mais coitado do Brasil. Tipo, saca aquele mendigo ali na esquina, todo ]]></description>
<content:encoded><![CDATA[<p><span style="font-size:10pt;font-family:'Trebuchet MS';">O consumidor deve ser o cara mais coitado do Brasil. Tipo, saca aquele mendigo ali na esquina, todo remelento, encardido, bêbado e sem ter onde morar? Ele tá numa situação bem melhor que eu e você enquanto consumidores, pode crer. Veja só o meu final de semana from hell:</span></p>
<p><span style="font-size:10pt;font-family:'Trebuchet MS';">Quarta-feira liguei na Net pra fazer assinatura de internet e tv a cabo. O antigo morador do meu apartamento é um puta amigo, e enquanto ele não não transferia a linha para sua nova casa foi me deixando usar. Mas aí quarta ele mandou retirar e tive que fazer uma assinatura.</span></p>
<p><span style="font-size:10pt;font-family:'Trebuchet MS';">A Net me ofereceu para o técnico instalar a bagaça na sexta-feira, entre 14 e 17 hrs. Falei 'beleza! Não vou passar nem o final de semana sem rede'. Como eu não estaria em casa, deixei a portaria do prédio avisada que o pessoal da Net iria lá fazer a instalação. </span></p>
<p><span style="font-size:10pt;font-family:'Trebuchet MS';">Na quinta-feira ligou uma tiazinha atendente da Net. 'Gostaríamos de confirmar a visita do técnico amanhã, entre as 14 e as 17hrs'. 'Ok', eu disse. Umas três horas depois ligou outra atendente, repetiu a mesma frase e pediu para confirmar meus dados. Mano, foi aí que percebi: a gente informa até tamanho de calcinha e preferência de sorvete quando vai adquirir um serviço qualquer. Isso deve ser errado em algum lugar do universo, não é possível. Novamente eu confirmei que o cara poderia aparecer no apê naquele horário.</span></p>
<p><span style="font-size:10pt;font-family:'Trebuchet MS';">Aí, na sexta-feira, exatamente às 15h37, ligou uma tiazinha da Net. 'Estamos mandando um técnico na sua residência'. Eu falei 'ok, eu não estarei lá, mas a portaria está avisada e vão acompanhar o cara até o meu apartamento'. </span></p>
<p><span style="font-size:10pt;font-family:'Trebuchet MS';">Cheguei em casa às nove da noite, mó feliz, achando que teria internet E tv a cabo. Adivinhem? O infeliz do técnico só apareceu às oito da noite. E depois das cinco, o miserável do porteiro não tem autorização para deixar ninguém de manutenção subir sem a presença do morador. De modo que eu me fodi bonitamente.</span></p>
<p><span style="font-size:10pt;font-family:'Trebuchet MS';">Depois de falar um monte para o desgraçado, fui soltar os cachorros com o povo da Net. Levei duas horas no telefone, falei com os atendentes Josiane, Antonio, Thais e Thiago, na ordem, e os quatro me prometeram passar para um supervisor quando perceberam se tratar de uma cliente ensadecida. E adivinhem o que acontecia cada vez que transferiam a ligação? A LINHA CAÍA.</span></p>
<p><span style="font-size:10pt;font-family:'Trebuchet MS';">Pois é, gente, quando a Net não quer mais falar com você, eles desligam na sua cara. Um tremendo respeito ao cliente, não é mesmo?</span></p>
<p><span style="font-size:10pt;font-family:'Trebuchet MS';">No sábado à tarde, outra atendente da Net ligou, dizendo que eles haviam remarcado a instalação para domingo de manhã. Pensei em mandar todo mundo tomar no cu, mas eu tinha um monte de trabalho pra terminar e não podia me dar ao luxo de ficar sem internet mais um dia. Concordei.</span></p>
<p>Daí hoje acordei cedo, esperando o maldito técnico. Esperei, esperei, esperei. Quando deu duas da tarde, liguei na Net já sentando o sarrafo nos caras. 'Mas, senhora, segundo nosso sistema, o técnico foi a sua residência às nova da manhã e foi informado pela portaria que era proibido qualquer serviço no prédio de final de semana'. o_O</p>
<p>Meu. Pensa numa pessoa furiosa. Visualiza uma garota de dentes cerrados berrando com o cara na portaria. O FILHO DA PUTA não foi capaz nem de interfonar ao meu apartamento para informar que o técnico tava ali. Ele simplesmente dispensou o cara porque não é permitida nenhuma manutenção aos sábados e domingos.</p>
<p><span style="font-size:10pt;font-family:'Trebuchet MS';">'Não ia quebrar nenhuma parede! Não ia furar nada, nem martelar! Era só conectar dois fios no computador e na tv!!', eu expliquei. Mas de que adiantava? O técnico tinha ido emborra, eu tava sem internet e para remarcar a TERCEIRA visita do cara era preciso esperar até segunda, porque o MARAVILHOSO sistema da Net aparentemente não trabalha de final de semana - é muito mais folgado que eu. E quando eu reclamei disso, adivinha o que a atendente fez? Cortou a ligação.</span></p>
<p><span style="font-size:10pt;font-family:'Trebuchet MS';">Enfim. Só que eu não quero mais a Net. Não quero dar meu dinheiro para uma maldita empresa que me deixa falando com as paredes. Vou assinar tv a cabo separadamente e Speedy, mesmo que isso fique mais caro.</span></p>
<p><span style="font-size:10pt;font-family:'Trebuchet MS';">E vou rodar a baiana com o síndico do prédio. Que porra é essa? Agora minha vida fica na mão dos ignorantes da portaria, que a única coisa que têm que fazer é interfonar nos apartamentos E NEM ISSO eles são capazes de fazer direito?</span></p>
<p><span style="font-size:10pt;font-family:'Trebuchet MS';">Vai se fuder. Meu final de semana foi uma bosta. Sempre ouvi uma galeeeera reclamar da Net e agora percebi a razão. O pior mesmo foi nego desligando na minha cara. </span></p>
<p><span style="font-size:10pt;font-family:'Trebuchet MS';">Se você também teve problemas com a Net, fiquei à vontade para reclamar deles aqui. Eu vou endereçar este link ao serviço de atendimento ao cliente deles, se é que têm. E faço questão de enviar com o máximo de queixas que for possível conseguir.</span></p>
<p><span style="font-size:10pt;font-family:'Trebuchet MS';">Será que dá para fazer um boletim de ocorrência na polícia?</span></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Anonymous types (Tipos anónimos)]]></title>
<link>http://jimenezroda.wordpress.com/?p=41</link>
<pubDate>Sun, 12 Oct 2008 21:19:17 +0000</pubDate>
<dc:creator>Javier Jiménez Roda</dc:creator>
<guid>http://jimenezroda.da.wordpress.com/2008/10/12/anonymous-types-tipos-anonimos/</guid>
<description><![CDATA[Anonymous types (o tipos anónimos, también llamados projections) es una nueva característica que ]]></description>
<content:encoded><![CDATA[<p>Anonymous types (o tipos anónimos, también llamados <em>projections</em>) es una nueva característica que incorporan las nuevas versiones de los lenguajes C# y VB.NET (3.0 y 9.0 respectivamente). <br />
Los tipos anónimos nos permiten declarar tipos al momento, sin tener que hacer una declaración explícita (es decir, sin tener que crear una clase).  Los tipos anónimos tienen una mayor utilidad en las expresiones LINQ, ya que estas sentencias muchas veces no se mapean a una entidad lógica concreta y requieren la creación de un nuevo tipo de objetos al momento (on the fly) para poder ser tratadas posteriormente.</p>
<p>Nada mejor que un poco de código para comprender mejor lo explicado.</p>
<p><strong>VB.NET:</strong></p>
<p style="padding-left:30px;"><strong></strong>Existen diferencias sintácticas entre los dos lenguajes que tratamos en este blog asiduamente (VB.NET y C#) con respecto a los tipos anónimos.<br />
Para declarar un tipo anónimo en VB.NET se hace uso de la palabra reservada <strong><span style="color:#0000ff;">With</span></strong>, tal y como se muestra en la siguiente imagen:</p>
<p> </p>
[caption id="attachment_46" align="aligncenter" width="500" caption="Figura 1: Declaración de un tipo anónimo en VB.NET. Observar como el compilador detecta las propiedades declaradas."]<a href="http://jimenezroda.wordpress.com/files/2008/10/anonymoustypesvbnet1.jpg"><img class="size-full wp-image-46" title="anonymoustypesvbnet1" src="http://jimenezroda.wordpress.com/files/2008/10/anonymoustypesvbnet1.jpg" alt="Declaración de un tipo anónimo en VB.NET. Observar como el compilador detecta las propiedades declaradas." width="500" height="131" /></a>[/caption]
<p> </p>
<p style="padding-left:30px;">Tal y como puede observarse en la imagen, el compilador ya detecta las propiedades que tiene el nuevo tipo de objetos y que hemos especificado en la declaración (inline) de la propia variable. <br />
Cabe destacar el uso <em>necesario</em> de la palabra reservada <strong><span style="color:#0000ff;">With</span></strong> para especificar que se está declarando un tipo anónimo, así como el uso del punto para especificar el inicio de la declaración de un atributo del tipo en i.  </p>
<p> </p>
<p><strong>C#:</strong></p>
<p style="padding-left:30px;">A continuación se muestra el mismo ejemplo pero utilizando C# como lenguaje de programación. A destacar las diferencias en la sintaxis. No es necesario hacer uso de la palabra reservada <strong><span style="color:#0000ff;">With</span></strong> y tampoco es necesario comenzar los nombres de los atributos con un  punto:</p>
<p style="padding-left:30px;"> </p>
[caption id="attachment_47" align="aligncenter" width="500" caption="Figura 2: Aquí también puede apreciarse como el compilador detecta las propiedades del objeto que se ha declarado inline en la línea anterior"]<a href="http://jimenezroda.files.wordpress.com/2008/10/anonymoustypesc.jpg"><img class="size-full wp-image-47" title="anonymoustypesc" src="http://jimenezroda.wordpress.com/files/2008/10/anonymoustypesc.jpg" alt="Aqui tambien puede apreciarse como el compilador detecta las propiedades del objeto que se ha declarado inline en la linea anterior" width="500" height="299" /></a>[/caption]
<p>Nótese como se hace uso de la palabra reservada <strong><span style="color:#0000ff;">var</span></strong>, ya que en éste ejemplo también hay implícito el uso de la <a class="aligncenter" title="Type Inference" href="http://jimenezroda.wordpress.com/2008/10/12/type-inference-inferencia-de-tipos/" target="_self">inferéncia de tipos.</a></p>
<p>En el caso de VB.NET, será necesario tener activada la opción <em><strong>Option Infer On</strong></em> con tal de que este ejemplo compile correctamente.</p>
<p><em>Pero, ¿cómo actúa el compilador para conseguir éste resultado? ¿Cada vez que declaro un tipo anónimo se crea un nuevo tipo interno?</em><br />
Son buenas preguntas con respuestas simples:<br />
- Cuando declaramos un tipo anónimo, el compilador actúa creando un tipo interno exactamente igual que si nosotros lo hubiéramos creado de forma explícita, es decir, creando una clase (directamente en código MSIL) con un nombre del tipo <strong><em>&#60;proyección&#62;f__0.</em></strong></p>
<p>- Los tipos anónimos están tipados, por lo que, si nosotros declaramos otra variable del tipo anónimo utilizando la misma sintaxis que en los ejemplos, el compilador <em>no</em> crearía otro tipo de datos, sino que instanciaría un nuevo objeto haciendo uso del tipo antes declarado. En cambio, si cambiamos el orden en el que definimos los atributos (por ejemplo, primero indicamos los <em>Apellidos</em> y luego el <em>Nombre</em>, el compilador lo interpretará como un nuevo tipo de datos y creará, de forma interna, otro tipo de datos distinto.</p>
<p>Para finalizar, sólo cabe mencionar que los tipos anónimos son de contexto local, por lo que si pasamos como parámetro un tipo anónimo a otro assembly, éste no podrá determinar el tipo a menos que hagamos uso de la <em>Reflexión</em> (Reflection).</p>
<p>Y eso es todo por el momento. Espero que esta información os resulte interesante y os sea útil. Hasta pronto!</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Type inference (Inferencia de tipos)]]></title>
<link>http://jimenezroda.wordpress.com/?p=11</link>
<pubDate>Sun, 12 Oct 2008 21:18:59 +0000</pubDate>
<dc:creator>Javier Jiménez Roda</dc:creator>
<guid>http://jimenezroda.da.wordpress.com/2008/10/12/type-inference-inferencia-de-tipos/</guid>
<description><![CDATA[El lanzamiento del .NET Framework 3.5 trae consigo una nueva versión del CLR asi como una nueva ver]]></description>
<content:encoded><![CDATA[<p>El lanzamiento del .NET Framework 3.5 trae consigo una nueva versión del CLR asi como una nueva versión de VB.NET (9.0 o 2008) y C# (3.0) (éstos son los lenguajes que trato en éste blog).</p>
<p>Una de las nuevas características que incorporan éstos lenguajes es la inferencia de tipos. Para entender este nuevo concepto, creo que es mejor empezar con un ejemplo práctico:</p>
<p><strong>VB.NET:</strong></p>
<p style="padding-left:30px;">Partamos del siguiente código</p>
<p style="padding-left:60px;"><span style="color:#3366ff;">Dim</span> i=<span style="color:#3366ff;">new</span> <em>ArrayList</em>()     --&#62; Notar que se ha omitido la especificación del tipo (<span style="color:#0000ff;">As</span> XXXX)</p>
<p style="padding-left:30px;">Uno espera que el comportamiento del compilador sea tratar la variable <em>i</em> como un<br />
ArrayList, pero si comprobamos con IntelliSense la variable veremos que el<br />
compilador la trata como un <em>Object.</em> La inferencia de datos soluciona este problema. <br />
Si activamos la opción  <em>Option Strict On, </em>el compilador no dará un error en la sentencia anterior, puesto que no hemos indicado el tipo de la variable declarada, i los tipos no son convertibles de forma implícita.</p>
<p style="padding-left:30px;">Es muy recomendable programar con la opción <em>Option Strict </em>activada puesto que nos impedirá generar este tipo de código.</p>
<p style="padding-left:30px;">Si activamos la opción <em>Option Infer On</em> podremos introducir el siguiente código:</p>
<p style="padding-left:60px;">Option Infer On<br />
Dim i = new ArrayList()</p>
<p style="padding-left:30px;">El compilador, ahora es capaz de inferir el tipo del objeto i, reconociendo a éste como un objeto del tipo ArrayList. </p>
<p style="padding-left:30px;">Más ejemplos de Inferencia de tipos:</p>
<p style="padding-left:30px;"> </p>
[caption id="attachment_20" align="aligncenter" width="484" caption="Option Strict y Option Infer = Off (El compilador trata la variable i como Object, no como ArrayList)"]<a href="http://jimenezroda.wordpress.com/files/2008/10/inferencia-de-tipos-vb-no-infer-no-strict.jpg"><img class="size-full wp-image-20" title="inferencia-de-tipos-vb-no-infer-no-strict" src="http://jimenezroda.wordpress.com/files/2008/10/inferencia-de-tipos-vb-no-infer-no-strict.jpg" alt="Option Strict y Option Infer = Off" width="484" height="205" /></a>[/caption]
<p style="padding-left:30px;"> </p>
<p> </p>
[caption id="attachment_19" align="aligncenter" width="500" caption="Option Strict On (no nos permite este tipo de declaraciones, ya que los tipos no se pueden convertir de forma implícita)"]<a href="http://jimenezroda.wordpress.com/files/2008/10/inferencia-de-tipos-vb-no-infer-con-strict.jpg"><img class="size-full wp-image-19" title="inferencia-de-tipos-vb-no-infer-con-strict" src="http://jimenezroda.wordpress.com/files/2008/10/inferencia-de-tipos-vb-no-infer-con-strict.jpg" alt="Option Strict On (no nos permite este tipo de declaraciones, ya que los tipos no se pueden convertir de forma implicita)" width="500" height="230" /></a>[/caption]
<p style="padding-left:30px;"> </p>
<p style="padding-left:30px;"> </p>
[caption id="attachment_18" align="aligncenter" width="474" caption="Con Option Strict y Option Infer On, la inferencia de tipos funciona correctamente"]<a href="http://jimenezroda.wordpress.com/files/2008/10/inferencia-de-tipos-vb-con-infer-y-strict-activados.jpg"><img class="size-full wp-image-18" title="inferencia-de-tipos-vb-con-infer-y-strict-activados" src="http://jimenezroda.wordpress.com/files/2008/10/inferencia-de-tipos-vb-con-infer-y-strict-activados.jpg" alt="Con Option Strict y Option Infer On, la inferencia de tipos funciona correctamente" width="474" height="248" /></a>[/caption]
<p>Para activar las opciones Option Strict y/o Option Infer (o bien deshabilitarlas) para todo nuestro proyecto, podemos hacerlo accediendo a las propiedades del proyecto y modificándolo en la pestaña de Compilación:</p>
<p> </p>
[caption id="attachment_21" align="aligncenter" width="499" caption="Activando las Options en las propiedades del proyecto, evitaremos tener que declararlas en cada uno de nuestros archivos fuente"]<a href="http://jimenezroda.wordpress.com/files/2008/10/activar-option-strict-para-el-proyecto1.jpg"><img class="size-full wp-image-21" title="activar-option-strict-para-el-proyecto1" src="http://jimenezroda.wordpress.com/files/2008/10/activar-option-strict-para-el-proyecto1.jpg" alt="Activando las Options en las propiedades del proyecto, evitaremos tener que declararlas en cada uno de nuestros archivos fuente" width="499" height="357" /></a>[/caption]
<p> </p>
<p><strong>C#:</strong></p>
<p style="padding-left:30px;">La inferencia de tipos en C# se puede implementar haciendo uso de la palabra reservada <em>var</em>. La sintaxis para declarar una variable haciendo uso de la inferencia de tipos seria así:</p>
<p style="padding-left:60px;"><span style="color:#0000ff;">var</span> i=<span style="color:#0000ff;">new</span> ArrayList();</p>
<p style="padding-left:30px;">Ahora la variable i es del tipo ArrayList, pese a que en ningún momento hemos declarado su tipo, tal y como se demuestra en la siguiente imagen:</p>
<p> </p>
<p><a href="http://jimenezroda.wordpress.com/files/2008/10/inference-types-c.jpg"><img class="aligncenter size-full wp-image-17" title="inference-types-c" src="http://jimenezroda.wordpress.com/files/2008/10/inference-types-c.jpg" alt="" width="500" height="468" /></a></p>
<p> </p>
<p>Y eso es todo en cuanto a la inferencia de tipos. Espero que os sea útil en vuestro trabajo diario! :P</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Extension Methods (Métodos Extensores)]]></title>
<link>http://jimenezroda.wordpress.com/?p=3</link>
<pubDate>Sun, 12 Oct 2008 21:18:35 +0000</pubDate>
<dc:creator>Javier Jiménez Roda</dc:creator>
<guid>http://jimenezroda.da.wordpress.com/2008/10/12/extension-methods-metodos-extensores/</guid>
<description><![CDATA[Extension Methods es una de las novedades que incorporan tanto la nueva versión del lenguaje C# (3]]></description>
<content:encoded><![CDATA[<p><span style="color:#333333;"><em>Extension Methods</em> es una de las novedades que incorporan tanto la nueva versión del lenguaje C# (3.0) como el lenguaje VB.NET 2008 (o 9.0, que representan exactamente lo mismo, pero uno hace referencia a la versión del compilador y el otro es un nombre más comercial) ambos desplegados con la versión 3.5 del .NET Framework . Los <em>Extension Methods </em>(o métodos extensores) nos permiten añadir nuevos métodos a tipos ya existentes sin tener que crear un tipo derivado.</span></p>
<p><span style="color:#333333;">Un ejemplo clarificará el concepto:<br />
Imaginemos que necesitamos añadir un nuevo método a la clase </span><strong><em><span style="color:#0000ff;">String</span> </em></strong>. Como sabemos, la clase String es un tipo interno del framework (built-in type), por lo que no podemos acceder a su código para modificarlo. La primera idea que nos vendría a la cabeza es hacer uso de una de las propiedades de la POO: la <em>herencia</em>. Efectivamente, podríamos crear una nueva clase que derivase de String y allí añadir el método que requerimos, pero gracias a los <em>Extension methods </em>esto no será necesario. Como hemos comentado, los <em>extension methods </em>nos permiten añadir métodos a tipos ya existentes. ¿Cómo? pues la sintaxis cambiará en función del lenguaje que se utilice, pero conceptualmente la idea es crear un método en el que, el primer parámetro será un objeto del tipo al que se desea añadir el método. El resto de parámetros serán del tipo que se requiera. A continuación se muestra la sintaxis tanto para VB.NET (9.0) como para C# (3.0):</p>
<p><strong>C#:</strong></p>
<p style="padding-left:30px;"><span style="color:#0000ff;">public static </span><span style="color:#808080;"><em>tipo_retorno </em>NombreDeLaFuncion<em> </em></span><span style="color:#333333;">(</span><span style="color:#0000ff;"><strong>this</strong> <em>tipo_al_que_añadir_metodo</em> </span><span style="color:#808080;"><em>nombreDelParametro<span style="color:#333333;font-style:normal;">)<span style="color:#333333;"> </span></span></em></span></p>
<div style="padding-left:30px;"><span style="color:#333333;"><span style="color:#333333;"><span style="color:#333333;"><span style="color:#333333;">Ejemplo:</span></span></span></span></div>
<div><span style="color:#333333;"><span style="color:#333333;"><span style="color:#333333;"><span style="color:#333333;"> <span style="color:#000000;"> </span></span></span></span></span></div>
<p style="padding-left:60px;"><span style="color:#333333;"><span style="color:#0000ff;">public static int </span>ContarLetras (<span style="color:#0000ff;"><strong>this</strong> string </span>palabra)<br />
{</span></p>
<p style="padding-left:60px;"><span style="color:#333333;">            <span style="color:#0000ff;">return</span>palabra.Lenght;<br />
}</span></p>
<p style="padding-left:30px;"><span style="color:#333333;">Cabe remarcar el uso de la palabra reservada <strong>this </strong>delante del primer parámetro del nuevo método para indicar el tipo al que se desea añadir el mismo.</span></p>
<p><strong><span style="color:#333333;">VB.NET:</span></strong></p>
<p style="padding-left:30px;"> En VB.NET la sentencia cambia un poco, aunque conceptualmente se mantiene la misma idea: El primer parámetro indica el tipo al que se desea añadir el método. De forma genérica, un extension method se declara así en VB.NET:</p>
<p style="padding-left:30px;"><strong><em>&#60;Extension( )&#62;<br />
</em></strong><span style="color:#0000ff;">Public</span> [Sub&#124;Function] NombreDelSubOFunction(Byval <em>NombreDelParametro </em>As <em>tipo_al_que_añadir_el_método </em>) [AS <em>tipo_retorno</em>]</p>
<p style="padding-left:30px;">Ejemplo:</p>
<p style="padding-left:60px;">&#60;Extension()&#62;<br />
<span style="color:#0000ff;">Public Sub</span> DimeElContenido (<span style="color:#0000ff;">ByVal</span> Nombre <span style="color:#0000ff;">As String</span>)</p>
<p style="padding-left:90px;">Console.WriteLine(Nombre)</p>
<p style="padding-left:60px;"><span style="color:#0000ff;">End Sub</span></p>
<p style="padding-left:30px;"><span style="color:#000000;">Ejemplo 2: lo mismo pero utilizando una función</span></p>
<p style="padding-left:60px;"><span style="color:#0000ff;"><span style="color:#000000;">&#60;Extension()&#62;<br />
</span>Public Function <span style="color:#000000;">CuentaLetras </span>( ByVal <span style="color:#000000;">Palabra </span>As String) As Integer</span></p>
<p style="padding-left:90px;"><span style="color:#0000ff;">return <span style="color:#000000;">Palabra.Lenght</span></span></p>
<p style="padding-left:60px;"><span style="color:#0000ff;">End Function</span></p>
<p>Nota: Para poder hacer referencia al atributo &#60;<em>Extension()&#62;</em> se deberá importar el espacio de nombres <em>System.Runtime.CompilerServices</em>.</p>
<p>Finalmente indicar que sólo pueden extenderse métodos, <em><span style="color:#333399;">no se podrán extender propiedades (Properties), atributos (fields) o eventos (Events).</span></em></p>
<p>Finalmente, añado una captura de pantalla para que se vea como los extension methods funcionan y son reconocidos por el IntelliSense correctamente (aunque no hay nada como verlo en primera persona, ¿verdad? ;) )</p>
<p> </p>
[caption id="attachment_4" align="aligncenter" width="300" caption="Figura 1: Ejemplo de Extension Method (IntelliSense ya reconoce el método en el tipo especificado)"]<a href="http://jimenezroda.wordpress.com/files/2008/10/extension-methods.jpg"><img class="size-medium wp-image-4" title="extension-methods" src="http://jimenezroda.wordpress.com/files/2008/10/extension-methods.jpg?w=300" alt="Ejemplo de Extension Method (IntelliSense ya reconoce el método en el tipo especificado)" width="300" height="230" /></a>[/caption]
<p> </p>
<p> </p>
<p> </p>
<p> </p>
[caption id="attachment_55" align="aligncenter" width="500" caption="Figura 2: Ejemplo con VB.NET."]<a href="http://jimenezroda.files.wordpress.com/2008/10/extension-methods-vb.jpg"><img class="size-full wp-image-55" title="extension-methods-vb" src="http://jimenezroda.wordpress.com/files/2008/10/extension-methods-vb.jpg" alt="Ejemplo con VB.NET." width="500" height="194" /></a>[/caption]
]]></content:encoded>
</item>
<item>
<title><![CDATA[Quick tip on client side IDs in custom controls for javascript use.]]></title>
<link>http://sanzon.wordpress.com/?p=77</link>
<pubDate>Sun, 12 Oct 2008 19:23:56 +0000</pubDate>
<dc:creator>sanzon</dc:creator>
<guid>http://sanzon.da.wordpress.com/2008/10/12/quick-tip-on-client-side-ids-in-custom-controls-for-javascript-use/</guid>
<description><![CDATA[Well one thing I found annoying when developing custom controls that use javascript is what do you d]]></description>
<content:encoded><![CDATA[<p>Well one thing I found annoying when developing custom controls that use javascript is what do you do when you need to give an ID to a html dom object within a custom control in order to use it with javascript!</p>
<p>I thought at first, ok I could do some complex child/parent relationship coding, which I try not to do a ton of, but it works really well at times. In this case it would be too much of a pain. So I came up with another solution to this little problem and it's not hard when you think about it.</p>
<p>ClientID's often look like ct100_SomeID_SomeChildID_ETC</p>
<p>Well if you think about valid ID names, ID's cannot start with a number! So the answer is pretty simple when you think about it.</p>
<p>Simply take the base ID of ct100_SomeID and attach a string such as, "_100jso_myID"</p>
<p>It produces something like:<br />
ct100_SomeID_100jso_ClientSideID</p>
<p>The great part about using a numeric value first is that it's impossible to use a child control named 100jso, so it passes just fine. In case you're wondering jso stands for javascript object in this case. I guess hdo, or html dom object may make more sense. Long as it starts with a number it's safe!</p>
<p>So when you do work with javascript simple call:</p>
<p>document.getElementById('" &#38; myBase.clientID &#38; "_101jso_ClientID"')</p>
<p>Hope this helps</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Die Presse ist Vergangenheit]]></title>
<link>http://wirsprechenonline.wordpress.com/?p=2550</link>
<pubDate>Sun, 12 Oct 2008 13:43:17 +0000</pubDate>
<dc:creator>Gerrit Eicker</dc:creator>
<guid>http://wir-sprechen-online.com/2008/10/12/die-presse-ist-vergangenheit/</guid>
<description><![CDATA[Jeff Jarvis im Süddeutsche-Interview: &#8220;Die Presse ist Vergangenheit&#8220;; http://is.gd/3Vvr]]></description>
<content:encoded><![CDATA[<p><a href="http://wir-sprechen-online.com/?s=jarvis">Jeff Jarvis</a> im Süddeutsche-Interview: "<strong>Die Presse ist Vergangenheit</strong>"; http://is.gd/3Vvr</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[RSS Feeds for Google Search]]></title>
<link>http://wirsprechenonline.wordpress.com/?p=2534</link>
<pubDate>Sun, 12 Oct 2008 12:29:43 +0000</pubDate>
<dc:creator>Gerrit Eicker</dc:creator>
<guid>http://wir-sprechen-online.com/2008/10/12/rss-feeds-for-google-search/</guid>
<description><![CDATA[Search Engine Land confirmed that Google will launch RSS for Web search results soon; http://is.gd/3]]></description>
<content:encoded><![CDATA[<p><a href="http://searchengineland.com/">Search Engine Land</a> confirmed that <a href="http://wir-sprechen-online.com/tag/google/">Google</a> will launch RSS for <a href="http://wir-sprechen-online.com/tag/search/">Web search</a> results soon; <a href="http://searchengineland.com/google-confirms-rss-for-web-search-results-14987.php">http://is.gd/3Jr3</a></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Google Changes Political Debates]]></title>
<link>http://wirsprechenonline.wordpress.com/?p=2527</link>
<pubDate>Sun, 12 Oct 2008 10:04:09 +0000</pubDate>
<dc:creator>Gerrit Eicker</dc:creator>
<guid>http://wir-sprechen-online.com/2008/10/12/google-changes-political-debates/</guid>
<description><![CDATA[Google: &#8220;If information is the currency of democracy then people got a bit wealthier by search]]></description>
<content:encoded><![CDATA[<p><a href="http://wir-sprechen-online.com/tag/google/">Google</a>: "If information is the currency of democracy then people got a bit wealthier by <a href="http://wir-sprechen-online.com/tag/search/">searching</a>"; <a href="http://googleblog.blogspot.com/2008/10/vp-debate-candidates-questions-and.html">http://is.gd/3SNc</a></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[What's Next on the Web?]]></title>
<link>http://wirsprechenonline.wordpress.com/?p=2516</link>
<pubDate>Sun, 12 Oct 2008 09:29:11 +0000</pubDate>
<dc:creator>Gerrit Eicker</dc:creator>
<guid>http://wir-sprechen-online.com/2008/10/12/whats-next-on-the-web/</guid>
<description><![CDATA[RWW&#8217;s asks what&#8217;s next on the Web? Privacy and Cluetrain will become even bigger issues;]]></description>
<content:encoded><![CDATA[<p><a href="http://www.readwriteweb.com/">RWW</a>'s asks what's next on the <a href="http://wir-sprechen-online.com/tag/web/">Web</a>? <a href="http://wir-sprechen-online.com/tag/privacy/">Privacy</a> and <a href="http://wir-sprechen-online.com/tag/cluetrain/">Cluetrain</a> will become even bigger issues; <a href="http://www.readwriteweb.com/archives/whats_next_after_web_20.php">http://is.gd/3V4p</a></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Enlaces del 10 de Octubre: ASP.NET, ASP.NET AJAX, jQuery, IIS]]></title>
<link>http://thinkingindotnet.wordpress.com/?p=218</link>
<pubDate>Sun, 12 Oct 2008 08:58:32 +0000</pubDate>
<dc:creator>Vio</dc:creator>
<guid>http://thinkingindotnet.da.wordpress.com/2008/10/12/enlaces-del-10-de-octubre-aspnet-aspnet-ajax-jquery-iis/</guid>
<description><![CDATA[Aquí tenéis la última lista de links. Mirad la página de trucos y turoriales de ASP.NET y la de ]]></description>
<content:encoded><![CDATA[<p>Aquí tenéis la última lista de links. Mirad la página de <a href="http://weblogs.asp.net/scottgu/pages/ASP.NET-2.0-Tips_2C00_-Tricks_2C00_-Recipes-and-Gotchas.aspx">trucos y turoriales de ASP.N</a>ET y la de <a href="http://weblogs.asp.net/scottgu/pages/silverlight-posts.aspx">tutoriales de Silverlight</a> con un montón de enlaces a más recursos.<!--more--></p>
<p><strong>ASP.NET</strong></p>
<ul>
<li><a href="http://msmvps.com/blogs/omar/archive/2008/10/04/best-practices-for-creating-websites-in-iis-6-0.aspx">Buenas prácticas para crear sitios ASP.NET con IIS 6.0:</a> Omar Al Zabir, autor del libro <a href="http://www.amazon.com/gp/product/0596510500?ie=UTF8&#38;tag=scoblo04-20&#38;linkCode=xm2&#38;camp=1789&#38;creativeASIN=0596510500">Creando un portal web 2.0 con ASP.NET 3.5</a>, tiene un artículo que detalla las buenas prácticas que hay que seguir cuando configuramos un sitio con IIS 6.0. Es una lectura y compra obligada.</li>
<li><a href="http://www.myvbprof.com/2007_Version/Dynamic_Data_Tutorial.aspx">Videos de ASP.NET Dynamic Data con VB:</a> Bill burrows ha unido en una serie de vídeos un tutorial que nos enseña a usar el nuevo soporte de ASP.NET Dynamic Data de .NET 3.5 SP1. Podéis encontrar más enlaces a tutoriales de ASP.NET Dynamic Data en el anterior post sobre links <a href="http://thinkingindotnet.wordpress.com/2008/10/05/enlaces-de-octubre-aspnet-aspnet-mvc-aspnet-dynamic-data/">aquí</a>.</li>
<li><a href="http://www.codeproject.com/KB/aspnet/ExploringCaching.aspx">Explorando la cache en ASP.NET:</a> Abhijit Jana nos muestra las opciones de cacheado con ASP.NET. Si estáis interesados en otra gran técnica (pero no muy conocida), querréis leer un post que escribí <a href="http://weblogs.asp.net/scottgu/archive/2006/11/28/tip-trick-implement-donut-caching-with-the-asp-net-2-0-output-cache-substitution-feature.aspx">aquí</a>.</li>
<li><a href="http://morewally.com/cs/blogs/wallym/archive/2008/10/08/asp-net-podcast-show-125-routing-with-webforms.aspx">Routing con WebForms</a>: Wally McClure tiene un podcast donde nos muestra cómo usar la nueva infraestructura de rutado de ASP.NET en .NET 3.5 SP1 con páginas basadas en formularios. Un montón de gente piensa incorrectamente que esta característica sólo funciona en aplicaciones ASP.NET MVC - cuando en realidad también funciona con formularios web (en realidad todos los sitios con APS.NET Dynamic Data lo usan.</li>
<li><a href="http://msmvps.com/blogs/omar/archive/2008/10/06/asp-net-website-continuous-integration-deployment-using-cruisecontrol-net-subversion-msbuild-and-robocopy.aspx">Integración continua con ASP.NET y despliegue usando CruiseControl.NET, Subversion, MSBuild y Robocopy</a>: Omar Al Zabir tiene otro artículo - esta vez implementando la integración continua con ASP.NET.</li>
</ul>
<p><strong>ASP.NET AJAX y jQuery</strong></p>
<ul>
<li><a href="http://www.west-wind.com/presentations/jQuery/default.aspx">Introducción a jQuery (Parte 1)</a>: Rick Strahl ha posteado un artículo de introducción a jQuery, y habla sobre cómo aprovechar sus características en páginas ASP.NET.</li>
<li><a href="http://msdn.microsoft.com/en-us/magazine/cc972638.aspx">Nuevo soporte AJAX para aplicaciones guiadas por datos:</a> Bertrand Le Roy ha escrito un artículo para MSDN que muestra las nuevas características disponibles en ASP.NET AJAX en la preview de hoy. Leed también sus post <a href="http://weblogs.asp.net/bleroy/archive/2008/07/30/using-client-templates-part-1.aspx">aquí</a> y <a href="http://weblogs.asp.net/bleroy/archive/2008/09/02/using-client-templates-part-2-live-bindings.aspx">aquí</a> para aprender más sobre el soporte de templates de lado del cliente.</li>
<li><a href="http://encosia.com/2008/10/04/using-jquery-to-enhance-aspnet-ajax-progress-indication/">Usando jQuery para mejorar el indicador de progreso de ASP.NET AJAX:</a> Dave Ward tiene un artículo que describe cómo integrar la funcionalidad de jQuery con el control UpdatePanel de ASP.NET AJAX para mejorar el estado de progreso.</li>
<li><a href="http://aspnet.4guysfromrolla.com/articles/100808-1.aspx">ASP.NET AJAX: Habilitar marcadores en el botón de volver del navegador:</a> Scott Mitchell continúa con su serie sobre ASP.NET AJAX y muestra cómo añadir puntos en el historial en paginas con AJAX para que los visitantes puedan marcarlas, así como habilitar la navegación atras/siguiente en el navegador. Esta es una nueva característica que se ha añadido a ASP.NET  en .NET 3.5 SP1.</li>
<li><a href="http://www.asp.net/learn/ajax-control-toolkit/">46 tutoriales para el ASP.NET AJAX Control Toolkit:</a> Christian Wenz ha publicado 46 tutoriales tanto en VB como en C# en el que nos muestra escenarios típicos con el ASP.NET AJAX Control Toolkit.</li>
</ul>
<p><strong>Microsoft Web Platform</strong></p>
<ul>
<li><a href="http://www.hanselman.com/blog/WebPlatformInstallerTryingToMakeItEasierToSetupForWebDevelopment.aspx">Instalación de plataformas web:</a> Hacer un instalador para despliegue web: Scott Hanselman tiene un post donde nos muestra el nuevo "<a href="http://www.microsoft.com/web/channel/products/WebPlatformInstaller.aspx">Microsoft Web Platform Installer</a>" que estamos creanto para permitir una forma rápida de instalar cada componente web de Microsoft - y tener rápidamente una máquina lista para el desarrollo web.</li>
</ul>
<p>Espero que sirva.</p>
<p>Scott.</p>
<p>Traducido por: Juan María Laó Ramos.</p>
<p><a href="http://weblogs.asp.net/scottgu/archive/2008/10/10/october-10th-links-asp-net-asp-net-ajax-jquery-iis.aspx">Artículo original.</a></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[WCF Proxy and Channels]]></title>
<link>http://sankarsan.wordpress.com/2008/10/12/wcf-proxy-channels/</link>
<pubDate>Sun, 12 Oct 2008 06:27:14 +0000</pubDate>
<dc:creator>sankarsan</dc:creator>
<guid>http://sankarsan.da.wordpress.com/2008/10/12/wcf-proxy-channels/</guid>
<description><![CDATA[In my last post I had discussed about what is happening in the channels at the service end and how t]]></description>
<content:encoded><![CDATA[<p><span style="font-size:small;font-family:Calibri;">In my last post I had discussed about what is happening in the channels at the service end and how they are related to the <span style="color:#0000ff;">ServiceHost</span> class that we normally use.In this post we will take a look at what is happening at the client side channels.In the server side we have channel listeners listening for incoming requests similarly at the client end we have channel factories to create the channels as the client initiates the connection.For sake of simplicity we will not consider the duplex channels for now.In short we need to the following to send messages to the service from client:</span></p>
<ol>
<li><span style="font-size:small;font-family:Calibri;">Create a binding</span></li>
<li><span style="font-size:small;font-family:Calibri;">Create a ChannelFactory.</span></li>
<li><span style="font-size:small;font-family:Calibri;">Create a Channel</span></li>
<li><span style="font-size:small;font-family:Calibri;">Send/Receive messages over that channel.</span></li>
</ol>
<p><span style="font-size:small;font-family:Calibri;">Now let us take a closer look into the class <span style="color:#0000ff;">ChannelFactory</span>.The class definition : public class <span style="color:#0000ff;">ChannelFactory&#60;TChannel&#62; : </span><span style="color:#0000ff;">ChannelFactory, IChannelFactory&#60;TChannel&#62;, IChannelFactory, </span><span style="color:#0000ff;">ICommunicationObject</span> where <span style="color:#0000ff;">TChannel</span> is either <span style="color:#0000ff;">IOutputChannel</span> or <span style="color:#0000ff;">IRequestChannel</span> type.</span></p>
<ol>
<li><span style="font-size:small;font-family:Calibri;">Create a ChannelFactory by it's constructor .At this point <em>State</em> of the factory is <em>Created</em>.</span></li>
<li><span style="font-size:small;font-family:Calibri;">We need to Open the ChannelFactory via it's <em><span style="color:#0000ff;">Open()</span></em> method.At this point <em>State</em> of the factory is <em>Opened</em>.</span></li>
<li><span style="font-size:small;font-family:Calibri;">Create a channel by calling <em><span style="color:#0000ff;">ChannelFactory.CreateChannel()</span></em> method.At this point <em>State</em> of the channel is <em>Created</em>.CreateChannel will return an instance of type IRequestChannel.</span></li>
<li><span style="font-size:small;font-family:Calibri;">Open the channel by calling <em><span style="color:#0000ff;">IRequestChannel.Open()</span></em> method.At this point <em>State</em> of the channel is <em>Opened</em>.</span></li>
<li><span style="font-size:small;font-family:Calibri;">Invoke <em><span style="color:#0000ff;">IRequestChannel.Request()</span></em> method to send the message to the desired endpoint and receive the reply back.</span></li>
<li><span style="font-size:small;font-family:Calibri;">Close the channel and the channel factory respectively after use.</span></li>
</ol>
<p><span style="font-size:small;font-family:Calibri;">But we do not do all this when we generate a proxy using svcutil or .NET IDE "Add Service Reference" menu option.So these tools provides us with a higher level abstraction with the above mentioned steps taken care under the hood.</span></p>
<p><span style="font-size:small;font-family:Calibri;">If you take a look at the class generated in the Reference.cs file in the ServiceReference folder you will find that the custom proxy class inherits a class <em><span style="color:#0000ff;">ClientBase&#60;TChannel&#62;</span> : </em><em>ICommunicationObject</em><em>, IDisposable where TChannel : class.</em>This class encapsulates the functionality of channel factory and channels.This class exposes the ChannelFactory and Channel via <span style="color:#0000ff;">ChannelFactory</span> and <span style="color:#0000ff;">InnerChannel</span> properties.Prior to invoking the Service methods we need to open the proxy via it's <span style="color:#0000ff;"><em>Open()</em></span> method.</span></p>
<p><span style="font-size:small;font-family:Calibri;">This is the sequence in which ClientBase,ChannelFactory and InnerChannel works:</span></p>
<ol>
<li><span style="font-size:small;"><span style="font-family:Calibri;">When the proxy is instantiated via the ClientBase constructor the ChannelFactory is in <em>"Created" state.</em></span></span></li>
<li><span style="font-size:small;font-family:Calibri;">When the Open method of the proxy or ClientBase is called then the ChannelFactory is <em>"Opened"</em>.</span></li>
<li><span style="font-size:small;font-family:Calibri;">After that the ClientBase/Proxy state is transitioned to <em>"Opened"</em>.</span></li>
<li><span style="font-size:small;font-family:Calibri;">Then the InnerChannel is <em>"Opened"</em>.</span></li>
<li><span style="font-size:small;font-family:Calibri;">Similarly when Close() method of the proxy is invoked then things happen in reverse order i.e. InnerChannel is closed,then Proxy/ClientBase finally followed by ChannelFactory.</span></li>
</ol>
<p><em></em></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Golden Gate Bridge directors vote for net to catch suicides]]></title>
<link>http://eideard.wordpress.com/?p=8419</link>
<pubDate>Sun, 12 Oct 2008 04:00:45 +0000</pubDate>
<dc:creator>eideard</dc:creator>
<guid>http://eideard.da.wordpress.com/2008/10/11/golden-gate-bridge-directors-vote-for-net-to-catch-suicides/</guid>
<description><![CDATA[
Golden Gate Bridge directors have voted decisively to try to stop people from jumping to their deat]]></description>
<content:encoded><![CDATA[<p><img width="450" src="http://imgs.sfgate.com/c/pictures/2005/11/05/mn_suicide_jrs_0170.jpg" alt="" /></p>
<p>Golden Gate Bridge directors have voted decisively to try to stop people from jumping to their deaths from the landmark bridge by hanging nets along the sides of the span.</p>
<p>The Board of Directors voted 14-to-1 to install the stainless-steel net system, which would be placed 20 feet below the deck, and would collapse around anyone who jumped into it, making it difficult, if not impossible, for anyone to leap to their death. The lone "no" vote came from Director James Eddie of Mendocino County, who said his constituents did not consider a barrier necessary.</p>
<p>An audience of about 50 people, including psychiatrists, suicide prevention experts and family members of people who had jumped to their deaths from the bridge, applauded the decision. Some had fought for decades for a suicide barrier...</p>
<p>But <a href="http://www.sfgate.com/cgi-bin/article.cgi?f=/c/a/2008/10/11/BASH13F0MH.DTL">it probably will be years before the 3.4 miles of netting are installed</a>, said Mary Currie, bridge district spokeswoman. Before it can start construction, the bridge district must complete more studies, including one on the effects of the net on birds, and come up with a funding plan. Then it would need to complete engineering and design work, and hire a contractor.</p>
<p>"Our next big challenge is to come up with the money," she said.</p>
<p><em><strong>Let 'em jump.  Send the bill for recovery to their insurance beneficiary.</strong></em></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Code Nuggets: A Side-effect of Using DropDownList AppendDataBoundItems With Databound Items]]></title>
<link>http://uxuf.wordpress.com/2008/10/12/code-nuggets-a-side-effect-of-using-dropdownlist-appenddatabounditems/</link>
<pubDate>Sat, 11 Oct 2008 22:37:25 +0000</pubDate>
<dc:creator>uXuf</dc:creator>
<guid>http://uxuf.wordpress.com/2008/10/12/code-nuggets-a-side-effect-of-using-dropdownlist-appenddatabounditems/</guid>
<description><![CDATA[Picture this: You have a webform with two DropDownLists, both of them are databound to some data you]]></description>
<content:encoded><![CDATA[<p>Picture this: You have a webform with two <code>DropDownList</code>s, both of them are databound to some data you get from a database. Now the first DropDownList's selection determines the contents of the second dropdown. So you simply do a AutoPostBack = true for the first dropdown and populate the second dropdown in the handler function. Right?</p>
<p>But wait. What if you are required to put in a static item in the dropdown? Something like <strong>"-- Please Select --"</strong> as the first item in the list to force the user to make a conscious choice. Hmmm, so you look around and find the nice little property named AppendDataBoundItems that will take care of that. All you have to do is declare the first (static) item in the Items collection in the designer (or put a &#60;asp:ListItem&#62; tag inside your &#60;asp:DropDownList&#62; tags) and set AppendDataBoundItems to true. This nice little property tells the DropDownList to add the databound items after the statically declared items, so you can have your happy little "-- Please Select --" in your dropdown.</p>
<h4>The Side-effect:</h4>
<p>The side-effect becomes evident when you play around with your two dropdowns. Its immediately clear that something is not quite right. The AppendDataBoundItems property forces your dropdown's items from the <em>previous </em>postback to be treated as static objects on<em>this</em> display. Sort of where you get an ever-growing second dropdown with a hangover from the postback, which is clearly not what you wanted in the first place!
<p><a href="http://uxuf.blogspot.com/2008/10/code-nuggets-side-effect-of-using.html">Continue Reading &#62;&#62;</a></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Nvidia will surprise us in November?]]></title>
<link>http://flamaster.wordpress.com/?p=404</link>
<pubDate>Sat, 11 Oct 2008 22:19:43 +0000</pubDate>
<dc:creator>flamaster</dc:creator>
<guid>http://flamaster.da.wordpress.com/2008/10/12/nvidia-will-surprise-us-in-november/</guid>
<description><![CDATA[So at least argues TheInquirer. Service known from the administration sensational and not always in ]]></description>
<content:encoded><![CDATA[<p><a href="http://flamaster.files.wordpress.com/2008/10/00110.jpg"><img class="alignleft size-full wp-image-405" title="00110" src="http://flamaster.wordpress.com/files/2008/10/00110.jpg" alt="" width="120" height="90" /></a>So at least argues TheInquirer. Service known from the administration sensational and not always in reality, proving this information together writes that already in a few weeks to hit the market three completely new green cards to high-end segment. They have them be <strong>GeForce GTX 270</strong> and <strong>GTX 290</strong> based on the 55nm version of GT200, possibly working with the larger clocks taktującymi from their counterparts today, and ... Card made up of two identical GPU, similar in construction to the GeForce 9800 GX2. When this item TheInquirer puts a big question mark, however, writing about gigantic problems with waste heat generated by two graphics chip with an area of 460mm ^ 2 However, Nvidia has done everything that the new (s) creature came on the market and rozprawił with the Radeon HD 4870 X2. How will really see ...</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[The Smart Way To Test Your Data Access Code]]></title>
<link>http://openlandscape.wordpress.com/?p=77</link>
<pubDate>Sat, 11 Oct 2008 22:16:02 +0000</pubDate>
<dc:creator>openlandscape</dc:creator>
<guid>http://openlandscape.da.wordpress.com/2008/10/11/the-smart-way-to-test-your-data-access-code/</guid>
<description><![CDATA[A very important factor to determine before writing any unit test, is what its scope should be. In o]]></description>
<content:encoded><![CDATA[<p>A very important factor to determine before writing any unit test, is what its scope should be. In other words a unit test should be written with clear objectives in mind, as to what it's going to test, and anything outside this scope should be ignored as far as possible. This means that if we would like to verify business rules applied to data, then we should not test anything else. This includes the low level data access methods responsible for returning and transforming the data from the database.</p>
<p>Mocks come in extremely handy in this scenario. They can be used to return generated data from my data access methods that reflect an ideal situation where result-sets are 100% correct. However this creates an overly artificial test setup, which completely ignores the role of data access methods. Mistakes in the underlaying queries also go unnoticed until its too late.</p>
<p>Testing data access code, and including bringing them into the scope of unit tests is a very cumbersome process. Hence I give them very low priority in my unit tests.</p>
<p>The most straightforward option is to follow the following process:</p>
<ol>
<li>Insert generated objects with the expected initial state.</li>
<li>Fetch the inserted objects from the database, and execute business logic operations on them.</li>
<li>Update the objects.</li>
<li>Re-fetched them again, and delete the returned objects to clean-up the database.</li>
</ol>
<p>With this approach problems start when unit tests fail midway, and bits and pieces of the broken objects' state remain scattered across the development database. Over time it gets messy, and often the broken data affects other queries and unit tests. This means that we lose the isolated characteristic of a good unit test, since one unit test can cause unwanted effects in other unit tests through the central database. Very bad indeed.</p>
<p>So what can we do to solve this problem? Luckily <strong><em><a title="Unit Testing Data Access Code" href="http://hendryluk.wordpress.com/2008/09/08/unit-testing-data-access-code/" target="_blank">Hendry Luk</a></em></strong> has a whole series on this very problem and how we can solve it. He suggests the following smart ways to test data access code:</p>
<ol>
<li><strong><em><a title="Data Access Test with Sqlite" href="http://hendryluk.wordpress.com/2008/10/07/data-access-test-with-sqlite/" target="_blank">In-memory database using Sqlite</a></em></strong></li>
<li>Transaction rollback</li>
<li>Restorable file-based DB</li>
<li>Preset state with NDBUnit</li>
<li>Fake DB provider with Linq</li>
</ol>
]]></content:encoded>
</item>
<item>
<title><![CDATA[My anime list.net]]></title>
<link>http://violetme.wordpress.com/?p=196</link>
<pubDate>Sat, 11 Oct 2008 19:19:15 +0000</pubDate>
<dc:creator>Violet</dc:creator>
<guid>http://violetme.da.wordpress.com/2008/10/11/my-anime-listnet/</guid>
<description><![CDATA[Very organised by nature?
Watch so much anime your head is spinning?
Read too much manga to remember]]></description>
<content:encoded><![CDATA[<p>Very organised by nature?</p>
<p>Watch so much anime your head is spinning?</p>
<p>Read too much manga to remember?</p>
<p>Or just plain bored...</p>
<p>At <a href="http://www.myanimelist.net" target="_blank">myanimelist.net</a> you can find a list(s) of all the anime in the world ,or close to it, and create your own list. You can also rate shows, reviewed them, keep track of how many episodes seen and also of shows you plan on seeing. Same goes for manga.</p>
<p>You can also join clubs, keep blogs and other such social features.</p>
<p>Exporting your anime/manga list is possible as well. And this is the only thing I found a bit off. It gets exported to an "XML" file which I have no clue how to use, nor does it come with instructions. Yes, I googled it and gave up on it after a while.</p>
<p>An alternative to showing off your anime history is the direct links to the anime/manga list and they show up kinda like <a href="http://myanimelist.net/animelist/VioletGray" target="_blank">this </a>or <a href="http://myanimelist.net/mangalist/VioletGray" target="_blank">this</a>.</p>
<p>Enjoy</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[MVC in .Net]]></title>
<link>http://happyt.wordpress.com/?p=135</link>
<pubDate>Wed, 08 Oct 2008 22:56:42 +0000</pubDate>
<dc:creator>ianm</dc:creator>
<guid>http://happyt.da.wordpress.com/2008/10/08/mvc-in-net/</guid>
<description><![CDATA[Spent the evening with Cenk at the VBUG evening in London. It was at the offices of the Anteo group,]]></description>
<content:encoded><![CDATA[<p>Spent the evening with Cenk at the VBUG evening in London. It was at the offices of the <a href="http:// www.anteogroup.com/uk">Anteo group</a>, who are a staffing agency. They gave a quick rundown on getting a new job in the current climate. Everything is drying up so take advantage of any training opportuities, C# and .NET is still buoyant and keep the skills up to date was the message.</p>
<p>Bem Gmedouye gave a talk on the Microsoft MVC framework. He’s ex LBi, who I recently spoke to about PureMVC. A bit different here as this one is the .Net based framework from Microsoft. Bem claimed to have the first MVC (Microsoft) based web site up and running at the Morning Advertiser. The framework is using lambda functions in the View and the Spring.Net expressions in the Controller to give strongly typed View data, rather than using dictionary methods. jQuery is used for validation methods.<br />
[caption id="attachment_138" align="alignnone" width="270" caption="Morning Advertiser"]<a href="http://www.morningadvertiser.co.uk/"><img src="http://happyt.wordpress.com/files/2008/10/ma.jpg" alt="Morning Advertiser" title="ma" width="270" height="173" class="size-full wp-image-138" /></a>[/caption]<br />
The final framework is available at cacdframework.co.uk and was used to give the content management structure of the <a href="http://www.morningadvertiser.co.uk">Morning Advertiser</a> site. Looked as though it worked well and is woth investigation. The site looks clean and flexible.</p>
]]></content:encoded>
</item>

</channel>
</rss>
