﻿<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>El Blog de Fox &#187; C#</title>
	<atom:link href="http://blog.foxandxss.net/index.php/tag/c/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.foxandxss.net</link>
	<description>Fomentando el desarrollo y el software libre bajo .NET</description>
	<lastBuildDate>Thu, 12 Aug 2010 12:22:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>C# 4.0: Parámetros opcionales y con nombre</title>
		<link>http://blog.foxandxss.net/index.php/c-4-0-parametros-opcionales-y-con-nombre/</link>
		<comments>http://blog.foxandxss.net/index.php/c-4-0-parametros-opcionales-y-con-nombre/#comments</comments>
		<pubDate>Sun, 23 May 2010 11:22:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articulos]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://blog.foxandxss.net/?p=402</guid>
		<description><![CDATA[Con la salida de C# 4.0, se incluyeron varias novedades en el lenguaje como las que voy a presentar hoy. Empecemos con los parámetros con nombre. Vamos a imaginar un sencillo método: void Saludo(string nombre, int edad, string ciudad) { Console.WriteLine(&#34;Hola me llamo {0} tengo {1} años y vivo en {2}&#34;, nombre, edad, ciudad); } [...]]]></description>
			<content:encoded><![CDATA[<p>Con la salida de C# 4.0, se incluyeron varias novedades en el lenguaje como las que voy a presentar hoy.<br />
<span id="more-402"></span><br />
Empecemos con los parámetros con nombre.</p>
<p>Vamos a imaginar un sencillo método:</p>
<pre class="brush: csharp;">
void Saludo(string nombre, int edad, string ciudad)
{
    Console.WriteLine(&quot;Hola me llamo {0} tengo {1} años y vivo en {2}&quot;, nombre, edad, ciudad);
}
</pre>
<p>¿Cómo se puede usar este método? Es una respuesta obvia ¿Verdad?:</p>
<pre class="brush: csharp;">
Saludo(&quot;Jesus&quot;, 24, &quot;Cádiz&quot;);
</pre>
<p>El problema es que quizá no te acuerdes de si primero pedia la edad o la ciudad&#8230; Eso si, sabes como se llaman los parámetros, entonces puedes hacer:</p>
<pre class="brush: csharp;">
Saludo(nombre: &quot;Jesus&quot;, edad: 24, ciudad: &quot;Cádiz&quot;);
</pre>
<p>El resultado es sin duda más legible (aunque más redundante), también podemos hacer algo así:</p>
<pre class="brush: csharp;">
Saludo(ciudad: &quot;Cádiz&quot;, edad: 24, nombre: &quot;Jesus&quot;);
</pre>
<p>Hemos variado el orden de los parámetros, pero como le hemos dado un nombre pues no hay problema en ello.</p>
<p>Ahora bien, por otro lado están los parámetros opcionales.</p>
<p>Por ejemplo, tenemos un método para insertar un elemento a una base de datos, por defecto los elementos van a la categoría <i>Sin Categoría</i> a menos que especifiquemos lo contrario:</p>
<pre class="brush: csharp;">
static void InsertarElemento(string nombre, string categoria = &quot;Sin Categoria&quot;, bool debug = false)
{
    if (debug)
        Console.WriteLine(&quot;Nombre: {0}\nCategoria: {1}&quot;, nombre, categoria);

    // Insertar en base de datos
}
</pre>
<p>Fijamos en la sintaxis del método, le hemos asignado un valor a un par de parámetros. Con esto queremos decirle que esos parámetros son opcionales, no tenemos por qué darles un valor al llamar al método, y en caso de no hacerlo usará esos valores asignados (el nombre sin embargo si es obligatorio), por ejemplo:</p>
<pre class="brush: csharp;">
InsertarElemento(&quot;Canasta&quot;);
</pre>
<p>Con esto asignamos a la base de datos un elemento con el nombre <i>Canasta</i> y como categoría <i>Sin Categoría</i>.</p>
<p>¿Que queremos darle una categoria nosotros y ademas activar el modo debug?:</p>
<pre class="brush: csharp;">
InsertarElemento(&quot;Canasta&quot;, &quot;Mimbre&quot;, true);
</pre>
<p>Hemos asignado un valor nuevo a los dos parámetros opcionales, al estar el modo debug activado, antes de insertar el elemento en la base de datos, lo imprimirá:</p>
<p><code>Nombre: Canasta<br />
Categoria: Mimbre</code></p>
<p>Lo bueno de esto es que podemos usar los parámetros opcionales y con nombre a la vez, por ejemplo, ¿Cómo podríamos activar el modo debug sin cambiar la categoría por defecto?</p>
<p>Tenemos que hacer uso de los parámetros con nombre, o sea:</p>
<pre class="brush: csharp;">
InsertarElemento(&quot;Canasta&quot;, debug: true);
</pre>
<p>Nos hemos &#8220;saltado&#8221; el parámetro de la categoría gracias a los parámetros con nombre.</p>
<p>Esto imprimiría:</p>
<p><code>Nombre: Canasta<br />
Categoria: Sin Categoria</code></p>
<p>Los parámetros opcionales y con nombre son muy útiles a la hora de trabajar con <i>COM</i> ya que estos métodos suelen recibir hasta una docena de parámetros opcionales y quizá solo uno importante&#8230; Antes teníamos que especificarlos todos, ahora simplemente podemos especificar el importante e ignorar el resto.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.foxandxss.net/index.php/c-4-0-parametros-opcionales-y-con-nombre/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reseña: Diseño Ágil con TDD</title>
		<link>http://blog.foxandxss.net/index.php/resena-diseno-agil-con-tdd/</link>
		<comments>http://blog.foxandxss.net/index.php/resena-diseno-agil-con-tdd/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 14:36:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Reseñas]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://blog.foxandxss.net/?p=320</guid>
		<description><![CDATA[¿Tienes ganas de hacer buenos programas?¿Quieres dejar de invertir tanto tiempo usando el debugger? Para ello te traigo la solución: Diseño Ágil con TDD por Carlos Blé Jurado. Con este libro aprenderemos a crear programas de calidad, a prueba de bombas e incluso con diseños más simples. Como ya habréis supuesto, este libro nos enseña [...]]]></description>
			<content:encoded><![CDATA[<p>¿Tienes ganas de hacer buenos programas?¿Quieres dejar de invertir tanto tiempo usando el debugger? Para ello te traigo la solución:</p>
<p><b>Diseño Ágil con TDD</b> por Carlos Blé Jurado.</p>
<p><a href="http://www.dirigidoportests.com/wp-content/portada.jpg"><img alt="" src="http://www.dirigidoportests.com/wp-content/portada.jpg" class="alignnone" width="225" height="332" /></a><br />
<span id="more-320"></span><br />
Con este libro aprenderemos a crear programas de calidad, a prueba de bombas e incluso con diseños más simples.</p>
<p>Como ya habréis supuesto, este libro nos enseña todo lo relacionado con el mundo de los tests, en concreto el mundo del <i>Test-Drive Development</i> (A partir de ahora <b>TDD</b>. El <b>TDD</b> es una técnica de desarrollo en la cual escribimos los tests antes que el propio código. Aunque pueda parecer chocante en un principio, gracias a esta técnica, conseguiremos una gran cantidad de mejoras en nuestro código que hará que amemos el <b>TDD</b> hasta el fin de los días <img src='http://blog.foxandxss.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Ya que os he emocionado un poco con el <b>TDD</b>, paso a la reseña del libro.</p>
<p>El libro está dividido en dos partes, una parte teórica y una parte práctica, sin duda una buena combinación en un libro informático.</p>
<p>En la parte teórica Carlos hace un buen trabajo intentando poner sobre la mesa la teoría del <b>TDD</b> y todo lo que le rodea.</p>
<p>Nos cuenta qué es el agilismo y por qué gusta tanto a aquellos que lo prueban.</p>
<p>Después de ponernos los dientes largos, empieza a hablarnos de qué es el <b>TDD</b> y qué ventajas tiene frente al desarrollo tradicional.</p>
<p>Nos dá una pequeña introducción al <b>ATDD</b> para pasar a explicarnos qué tipos de tests hay y en qué ambitos nos ayudan.</p>
<p>¡Pero no solo eso! Todavía explica muchas más cosas, nos habla de qué frameworks tenemos a disposición para trabajar con tests, técnicas que se pueden usar para simplificarnos la vida o incluso nos recuerda los tan importantes principios del diseño orientado a objetos (que siempre viene bien recordar).</p>
<p>Por último, como en todo buen libro de informática, está la parte practica.</p>
<p>En la parte práctica vamos a poner practicar todo aquello que hemos aprendido en la parte teórica.</p>
<p>Para ello harémos un proyecto en <b>C#</b> donde aprenderemos a crear una aplicación desde 0 usando <b>TDD</b>. Por si esto fuera poco, luego portaremos esta aplicación a <b>Python</b>.</p>
<p>Termina el libro con unos cuantos consejos sobre antipatrones y los errores más comunes.</p>
<p>Vamos con algunas de sus cosas positivas:</p>
<ul>
<li>La parte teórica es más que correcta. Lo suficientemente simple para que no nos liemos con cosas que no nos interesan, y lo suficientemente complejo para que podamos ver todo lo aprendido.</li>
<li>Poner un ejemplo en Python es más que acertado. No hay nada mejor que ver un ejemplo desde otro punto de vista para terminar de entender las cosas</li>
</ul>
<p>Como ningún libro se salva de tener algun punto más negro, pues aquí vamos:</p>
<ul>
<li>Algún tema de la teoría puede ser dificil de agarrar en una primera lectura. Cosa lógica puesto que muchos de esos temas son para escribir un libro entero y no sólo un capítulo</li>
</ul>
<p>Así que como punto final, si queréis introduciros en el mundo del <b>TDD</b>, éste libro ha de estar entre las primeras opciones.</p>
<p>Aquí os dejo la página del libro donde podéis comprarlo, descargar el pdf de forma gratuita y por qué no, donar algo al autor por su buen trabajo.</p>
<p><a href="http://www.dirigidoportests.com/el-libro">Página de Diseño Ágil con TDD</a></p>
<p>Hasta otra <img src='http://blog.foxandxss.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.foxandxss.net/index.php/resena-diseno-agil-con-tdd/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>TwitFox 1.0</title>
		<link>http://blog.foxandxss.net/index.php/twitfox-1-0/</link>
		<comments>http://blog.foxandxss.net/index.php/twitfox-1-0/#comments</comments>
		<pubDate>Sun, 20 Dec 2009 13:52:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Mis Programas]]></category>
		<category><![CDATA[Blend]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[MVP]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://blog.foxandxss.net/?p=174</guid>
		<description><![CDATA[Hola! He creado un cliente de Twitter, es un cliente sencillito que he hecho con el proposito de aprender y de divertirme un poco. Os dejo una screen: Mi primera intención era la de crear un artículo explicando paso por paso como crear un cliente Twitter, pero la verdad es que aunque simple el cliente, [...]]]></description>
			<content:encoded><![CDATA[<p>Hola!</p>
<p>He creado un cliente de <b>Twitter</b>, es un cliente sencillito que he hecho con el proposito de aprender y de divertirme un poco.</p>
<p>Os dejo una screen:</p>
<p><a href="http://www.foxandxss.net/misprogramas/twitfox/principal.PNG"><img alt="ScreenTwitFox" src="http://www.foxandxss.net/misprogramas/twitfox/principal.PNG" class="alignnone" width="467" height="720" /></a><br />
<span id="more-174"></span></p>
<p>Mi primera intención era la de crear un artículo explicando paso por paso como crear un cliente Twitter, pero la verdad es que aunque simple el cliente, ha terminado con más código del que pensaba.</p>
<p>Aun así os daré algunos detalles para que cuando mirés el código pues sepais más o menos qué hace cada cosa.</p>
<p>No he usado ninguna librería concreta para desarrollar esta primera versión del cliente de Twitter. Simplemente he usado el <b>REST API</b> el cual es bastante limitado.</p>
<p>La clase <i>TwitterClient</i> es la que nos permitirá descargar nuestros Tweets y cambiar nuestro estado. No hace nada más. Cuando cambie la librería, añadiré más opciones a la interfaz de dicha clase sin modificar las opciones que ya hay.</p>
<p>Podeis observar que la clase lo que hace es descargar un XML con los tweets y parsearlos.</p>
<p>Por otro lado, podéis ver que la estructura del proyecto es MVP aunque le he añadido tambien la clase <i>DelegateCommand</i> para usar comandos siempre que sea posible.</p>
<p>Lo más complejo del proyecto es la UI, en la cual he usado <b>Data Templates</b>, <b>Fake DataContext</b> (Dos cosas que habéis aprendido aquí), además de un botón custom con una pequeña animación.</p>
<p>El código de la UI quizá sea un poco guarrete, pero es la primera aplicación que hago usando <b>Blend 3</b> como aplicación de diseño principal.</p>
<p>Nada más, os dejo aquí el enlace a la aplicación:</p>
<p><a href="http://www.foxandxss.net/misprogramas/twitfox/twitfox.php">TwitFox</a></p>
<p>Un saludo!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.foxandxss.net/index.php/twitfox-1-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reseña: C# In Depth</title>
		<link>http://blog.foxandxss.net/index.php/resena-c-in-depth/</link>
		<comments>http://blog.foxandxss.net/index.php/resena-c-in-depth/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 18:04:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Reseñas]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://blog.foxandxss.net/?p=156</guid>
		<description><![CDATA[¿Eres un programador de Java y quieres aprender C#? ¿O bien conoces lo básico de C# y quieres conocer todo lo que ofrece? En ambos casos, bienvenidos a C# In Depth, EL libro avanzado de C# por excelencia. Este libro tiene una finalidad muy concreta, enseñar qué ofrece C# 2 y 3. Al ser un [...]]]></description>
			<content:encoded><![CDATA[<p>¿Eres un programador de Java y quieres aprender C#? ¿O bien conoces lo básico de C# y quieres conocer todo lo que ofrece?<br />
En ambos casos, bienvenidos a <b>C# In Depth</b>, <span style="font-size: 2em;">EL</span> libro avanzado de <b>C#</b> por excelencia.</p>
<p><a href="http://www.manning.com/skeet/skeet_cover150.jpg"><img alt="" src="http://www.manning.com/skeet/skeet_cover150.jpg" class="alignnone" width="150" height="189" /></a><br />
<span id="more-156"></span><br />
Este libro tiene una finalidad muy concreta, enseñar qué ofrece C# 2 y 3.<br />
Al ser un libro avanzado, necesita que o bien seáis programadores de Java o bien que conozcáis C# 1 como mínimo.<br />
Como ya he dicho, este libro es maravilla (sí, parece que todos los libros que leo son maravilla, eso o que pierdo mucho tiempo descartando libros para quedarme con uno decente <img src='http://blog.foxandxss.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ), aunque son solo 424 páginas, parecerá que son 2 mil, pues es muy denso.</p>
<p>El libro está dividido en 3 partes, cada una dedicada a las 3 versiones de <b>C#</b> que hay <img src='http://blog.foxandxss.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p><b>Parte 1:</b><br />
Ya he dicho que este libro se centra en la versión 2 y 3 de <b>C#</b>, pero aun así, el autor quiere dedicar un poco de tiempo a hablarnos de lo que nos ofreció C# cuando nació y además de hacernos ver las cosas que se hacían mal en C# 1 y como C# 2 y 3 nos ofrecen una mejor alternativa para esos casos concretos.<br />
Por otro lado, esta parte empieza con lo típico y es que parece que ningún autor es capaz de resistir la tentación de poner la historia de C#, .NET y toda la pesca.<br />
Después de este aburrido capítulo, empieza ya lo interesante.<br />
Nos recordará algunas cosas básicas de C# para posteriormente mostrarnos que esas cosas maravillosas que usábamos, apestan y que ahora tenemos mejores formas de hacerlo. Básicamente lo que el autor quiere aquí es ponerte los dientes largos mostrándote por ejemplo como molan las <i>Lambdas</i>.</p>
<p><b>Parte 2:</b><br />
Ésta parte, titulada “Resolviendo los problemas de C# 1” se centrará en C# 2, el cual tiene jugosas novedades que hará que nuestro código C# sea mucho mejor <img src='http://blog.foxandxss.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .<br />
Nos hablará de la necesidad de los genéricos aunque también de sus limitaciones.<br />
También abordará sobre los tipos ‘nullables’, lo cual nos ayudará cuando tratemos con bases de datos.<br />
Veremos cómo implementar mejores delegados gracias a los métodos anónimos.<br />
Un poco de iteradores también y para terminar un conjunto de cosas no menos importantes.</p>
<p><b>Parte 3:</b><br />
Esta parte es igual a la anterior, más features pero esta vez las de C# 3.<br />
Tipos anónimos, inicialización simplificada, lambda, métodos de extensión (extension methods) y sobre todo…. <b>LINQ</b>.<br />
Ahora es cuando os emocionáis como yo y decís, uhm <b>¡LINQ!</b>. Después de más de 300 páginas leídas, viene quizá lo más interesante.<br />
Siento desilusionaros, porque para mí, este es el punto flojo del libro. ¿Por qué? Intenta en poco menos de 100 páginas, explicarnos todo LINQ to Objects, SQL, XML, DataSet pero intenta hacerlo de forma muy bruta ya que intenta meterte ahí con calzador toda la teoría detrás de <b>LINQ</b> la cual no es fácil de digerir.<br />
Yo entiendo que en 100 páginas no se puede explicar todo LINQ, pero yo lo habría dejado en una explicación básica o directamente lo hubiese sacado del libro.<br />
Para aprender <b>LINQ</b> hay otro libro de esta misma casa que ya reseñaré más adelante.</p>
<p><b>Conclusión:</b><br />
En conclusión, este libro es la mejor manera para llegar a dominar lo que se dice TODO <b>C#</b>, eso sí, es aburridísimo como habréis podido notar de mi reseña… No deja de ser escupir features una tras otra sin cesar. Aun así, lo hace una forma magistral, fácil de entender y sobretodo fácil de digerir.</p>
<p>Sin más preámbulos:</p>
<p><b>Positivo:</b></p>
<ul>
<li>Nos hace ver lo que hacemos mal y cómo mejorarlo.</li>
<li>Explica todas las features del lenguaje en su versión 2 y 3.</li>
<li>Los ejemplos de código, aunque de juguete, son muy claros.</li>
<li>No deja nada sin explicar, tiene respuesta a todo.</li>
</ul>
<p><b>Negativo:</b></p>
<ul>
<li>La parte de LINQ, sobraba, muy difícil de asimilar.</li>
<li>Algunas partes muy concretas son duras y difíciles de entender (Lease expression trees).</li>
</ul>
<p>La nota será de <b>9.8</b>. Le habría dado más puntos si hubiese quitado la parte de LINQ, puesto que solo hace confundir, y ya lo hubiese rematado si hubiese encontrado una forma de explicar los ‘Expression trees’ de una forma entendible.<br />
Si os termináis de leer este libro, probablemente el próximo a la cola sería el de <b>Linq In Action</b>, ya que explica <b>LINQ</b> de forma magistral y hasta los ‘Expression trees’ los explica bien jeje.</p>
<p>Bueno, os dejo el enlace a la página oficial del libro:</p>
<p><a href="http://www.manning.com/skeet/">Link</a></p>
<p>Un saludo,<br />
Fox</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.foxandxss.net/index.php/resena-c-in-depth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nueva versión de Apunta Notas 2</title>
		<link>http://blog.foxandxss.net/index.php/nueva-version-de-apunta-notas-2/</link>
		<comments>http://blog.foxandxss.net/index.php/nueva-version-de-apunta-notas-2/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 21:27:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Mis Programas]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[MVVM]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://www.foxandxss.org/blog/?p=109</guid>
		<description><![CDATA[Hola! Siento no escribir tanto como me gustaría, pero estuve de exámenes hace poco, y ahora he empezado a trabajar. Bueno, antes de dichos exámenes escribí una nueva versión del Apunta Notas y la anucio por aquí para que la probeis. Dicha versión tiene: Ahora al borrar una categoría te da la opción de borrar [...]]]></description>
			<content:encoded><![CDATA[<p>Hola!</p>
<p>Siento no escribir tanto como me gustaría, pero estuve de exámenes hace poco, y ahora he empezado a trabajar.</p>
<p>Bueno, antes de dichos exámenes escribí una nueva versión del Apunta Notas y la anucio por aquí para que la probeis.</p>
<p>Dicha versión tiene:<br />
<span id="more-109"></span></p>
<ul>
<li>Ahora al borrar una categoría te da la opción de borrar todas las notas asociadas a ella.</li>
<li>Si decides no borrar dichas notas, se enviarán a una categoría oculta llamada &#8220;Papelera&#8221;.</li>
<li>Ahora al pulsar intro se añadirá la nota automaticamente (antes no me funcionaba por un pequeño bug que no veía)</li>
<li>Los rectangulos de los colores también son botones para seleccionar el color</li>
<li>Algun bug solucionado</li>
</ul>
<p>Quizá se me olvide algo, pero ahora no caigo, realmente metí muchas mejoras a lo largo de 2 dias de trabajo con el.</p>
<p>Los enlaces están donde siempre <img src='http://blog.foxandxss.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>A ver si este fin de semana puedo hacer algo más interesante.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.foxandxss.net/index.php/nueva-version-de-apunta-notas-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apunta notas 2</title>
		<link>http://blog.foxandxss.net/index.php/apunta-notas-2/</link>
		<comments>http://blog.foxandxss.net/index.php/apunta-notas-2/#comments</comments>
		<pubDate>Sat, 22 Aug 2009 17:24:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Mis Programas]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[MVVM]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://www.foxandxss.org/blog/?p=105</guid>
		<description><![CDATA[¿Os acordais del Apunta notas? Seguro que sí Pues aquí estoy orgulloso de presentaros la nueva versión de mi programa de notas. Como veréis a continuación, el cambio es significativo: Como podéis ver, ahora soporta distintas categorías y estas, distintos colores. No sólo eso, si no que además podeis ampliar el tamaño de las notas [...]]]></description>
			<content:encoded><![CDATA[<p>¿Os acordais del <a href="http://blog.foxandxss.net/index.php/apunta-notas/">Apunta notas</a>? Seguro que sí <img src='http://blog.foxandxss.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Pues aquí estoy orgulloso de presentaros la nueva versión de mi programa de notas. Como veréis a continuación, el cambio es significativo:</p>
<p><a href="http://www.foxandxss.net/misprogramas/apuntanotas2/CapturaPrincipal-post.png"><img class="alignnone" src="http://www.foxandxss.net/misprogramas/apuntanotas2/CapturaPrincipal-post.png" alt="" width="485" height="364" /></a></p>
<p><span id="more-105"></span></p>
<p>Como podéis ver, ahora soporta distintas categorías y estas, distintos colores.</p>
<p>No sólo eso, si no que además podeis ampliar el tamaño de las notas por si quereis verla desde lejos del monitor[1]:</p>
<p><a href="http://www.foxandxss.net/misprogramas/apuntanotas2/zoom-post.png"><img class="alignnone" src="http://www.foxandxss.net/misprogramas/apuntanotas2/zoom-post.png" alt="" width="485" height="364" /></a></p>
<p>También tiene un editor de categorías donde podrás modificar todos los apartados de éstas como podéis ver aquí:</p>
<p><a href="http://www.foxandxss.net/misprogramas/apuntanotas2/Categorias-post.png"><img class="alignnone" src="http://www.foxandxss.net/misprogramas/apuntanotas2/Categorias-post.png" alt="" width="485" height="541" /></a></p>
<p>Como veis, podeis cambiar el nombre, color de fondo, color de texto&#8230; y además podéis ver una vista prévia de la nota para ver como quedará.</p>
<p>Para más detalles y descarga podéis visitar la página de <a title="Apunta Notas 2" href="http://www.foxandxss.net/misprogramas/apuntanotas2/apuntanotas.php">Apunta Notas 2</a>.</p>
<p>[1]: Yo personalmente apunto las cosas que le quiero comentar a mi novia y cuando la llamo me tumbo en la cama, así que pongo las notas bien grandecitas y así las veo desde allí <img src='http://blog.foxandxss.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.foxandxss.net/index.php/apunta-notas-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[WPF] Data Templates</title>
		<link>http://blog.foxandxss.net/index.php/wpf-data-templates/</link>
		<comments>http://blog.foxandxss.net/index.php/wpf-data-templates/#comments</comments>
		<pubDate>Sun, 16 Aug 2009 21:07:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articulos]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://www.foxandxss.org/blog/?p=92</guid>
		<description><![CDATA[Hola buenas! Estáis deseosos de aprender más maravillas de WPF, ¿verdad? Pues nada, aquí os traigo algo muy util que os podría venir bien para vuestros propios desarrollos. Empezamos con la gran pregunta: ¿Qué son los Data Templates? Imagina que tienes una clase llamada Persona, Animales, etc. y queréis representar instancias de dichas clases visualmente [...]]]></description>
			<content:encoded><![CDATA[<p>Hola buenas!</p>
<p>Estáis deseosos de aprender más maravillas de <b>WPF</b>, ¿verdad? Pues nada, aquí os traigo algo muy util que os podría venir bien para vuestros propios desarrollos.</p>
<p>Empezamos con la gran pregunta:<br />
<span id="more-92"></span></p>
<h2>¿Qué son los Data Templates?</h2>
<p>Imagina que tienes una clase llamada Persona, Animales, etc. y queréis representar instancias de dichas clases visualmente en vuestro programa, el problema como ya sabes es que dichas clases no tienen ninguna representación visual, con lo cual el resultado de ligar una instancia (o una lista de instancias) a un control como por ejemplo un ItemsControl sería el de llamar al método ToString de la instancia lo que nos da un resultado pésimo.</p>
<p>¿Qué podemos al respecto? Pues lo que estabas pensando si, usar <b>Data Templates</b>.</p>
<h2>¡Al turrón!</h2>
<p>Creamos un nuevo proyecto llamado <b>Data Templates</b> y creamos una clase llamada <i>Personas</i>, dicha clase contendrá este código:</p>
<pre class="brush: csharp;">
public class Persona
{
    public string Nombre {get; set; }
    public string Direccion { get; set; }
    public string Telefono { get; set; }
    public int Edad { get; set; }
    public string Sexo { get; set; }
    public string UrlImagen { get; set; }
    public string Color { get; set; }

    public Persona(string nombre, string direccion, string telefono,
                    int edad, string sexo)
    {
        Nombre = nombre;
        Direccion = direccion;
        Telefono = telefono;
        Edad = edad;
        Sexo = sexo;

        if (Sexo.Equals(&quot;Hombre&quot;))
        {
            Color = &quot;#bcebf9&quot;;
            UrlImagen = &quot;Imagenes\\hombre.png&quot;;
        }
        else
        {
            Color = &quot;#f8c2cd&quot;;
            UrlImagen = &quot;Imagenes\\mujer.png&quot;;
        }
    }

    public override string ToString()
    {
        return string.Format(&quot;Hola me llamo {0}, vivo en {1}, mi telefono es {2}, tengo {3} años y soy {4}&quot;, Nombre, Direccion, Telefono, Edad, Sexo);
    }
}
</pre>
<p>Nada aquí que os vaya a sorprender, una clase Persona, que aunque bastante mejorable, va de sobra para nuestro ejemplo. Puntualizo un par de cosas:</p>
<p>Ignorad por ahora el tema de las imagenes y el color, eso se usará más adelante (también meteremos las imagenes más adelante en el proyecto)<br />
El método ToString solo es para ver como quedaría la cosa sin Data Templates y luego se borrará.</p>
<p>Ahora creamos una clase llamada <i>Presenter</i> y le añadimos el siguiente código:</p>
<pre class="brush: csharp;">
class Presenter
{
    private List&lt;Persona&gt; listaPersonas;

    public Presenter()
    {
        listaPersonas = new List&lt;Persona&gt;();

        listaPersonas.Add(new Persona(&quot;Jesus&quot;, &quot;Calle 13&quot;, &quot;132456789&quot;, 23, &quot;Hombre&quot;));
        listaPersonas.Add(new Persona(&quot;Rosi&quot;, &quot;Big street 15&quot;, &quot;987654321&quot;, 27, &quot;Mujer&quot;));
        listaPersonas.Add(new Persona(&quot;Álvaro&quot;, &quot;To lejos street&quot;, &quot;147258369&quot;, 24, &quot;Hombre&quot;));
    }

    public List&lt;Persona&gt; ListaPersonas
    {
        get { return listaPersonas; }
        set { listaPersonas = value; }
    }
}
</pre>
<p>Una clase normal y corriente, simplemente creamos una lista de personas y añadimos algunos ejemplos de personas.</p>
<p>Ahora abrimos el code-behind de la ventana (<i>Windows1.xaml</i>) y modificamos el constructor para que quede de esta manera:</p>
<pre class="brush: csharp;">
public Window1()
{
    InitializeComponent();
    DataContext = new Presenter();
}
</pre>
<p>Y ahora, abrimos la ventana en sí y colocamos este markup:</p>
<pre class="brush: xml;">
&lt;Window x:Class=&quot;DataTemplates.Window1&quot;
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    Title=&quot;Data Templates&quot; Height=&quot;600&quot; Width=&quot;600&quot;&gt;
    &lt;ItemsControl ItemsSource=&quot;{Binding ListaPersonas}&quot;&gt;

    &lt;/ItemsControl&gt;
&lt;/Window&gt;
</pre>
<p>Aquí simplemente añadimos un ItemsControl vacío al que le ligamos la lista que hemos creado anteriormente.</p>
<p>Ahora ejecutamos la aplicación y vemos el resultado:</p>
<p><a href="http://www.foxandxss.net/CosasBlog/datatemplates/1.PNG"><img alt="" src="http://www.foxandxss.net/CosasBlog/datatemplates/1.PNG" class="alignnone" width="600" height="600" /></a></p>
<p>Como podeis ver, apesta, es lo más cutre &#8220;ever seen&#8221;, así que vamos a arreglarlo usando los Data Templates.</p>
<p>Antes que nada, me gustaría explicar una cosilla para que no os lieis tanto:</p>
<p>Hay 2 clases bases para los controles, por un lado tenemos la clase <b>ContentControl</b> de la cual heredarán aquellos controles que solo tienen una pieza de contenido, como <b>button</b>, <b>Label</b>, etc.<br />
Por otro lado tenemos la clase <b>ItemsControl</b> de la cual heredarán aquellos controles que muestran una colección de items, como <b>TreeView</b>, <b>ListBox</b>, etc.</p>
<p>Si con la funcionalidad básica que nos ofrecen dichas clases bases vamos bien, no tenemos por qué usar ninguna hija, y en este caso como habeis visto, hemos usado simplemente un ItemsControl pues es todo lo que necesitamos.</p>
<p>Bueno, al grano, si queremos usar los Data Templates, lo unico que debemos hacer es decirle al control, en este caso el ItemsControl, que vamos a definir el aspecto de cada item del control, ¿Cómo? Así:</p>
<pre class="brush: xml;">
&lt;ItemsControl ItemsSource=&quot;{Binding ListaPersonas}&quot;&gt;
    &lt;ItemsControl.ItemTemplate&gt;
		&lt;DataTemplate&gt;
			...
		&lt;/DataTemplate&gt;
	&lt;/ItemsControl.ItemTemplate&gt;
&lt;/ItemsControl&gt;
</pre>
<p>Ahí, donde están los puntos suspensivos pues añadimos todo el <b>xaml</b> necesario para lograr el aspecto que queramos. Recordad que estamos definiendo el aspecto de UN solo item y no de toda la colección a la vez, así que ahi escribimos como queremos que se vea cada item y ya se aplicará para todos los items de la lista.</p>
<p>Así que sabiendo esto, vamos a modificar nuestro ejemplo.</p>
<p>Para empezar, puedes borrar el ToString de la clase Personas que ya no nos vale, una vez hecho esto, creamos el directorio <i>Imagenes</i> dentro del proyecto y ahi metemos las dos imágenes que voy a adjuntar a continuación (boton derecho -> guardar como):</p>
<p><a href="http://foxandxss.net/CosasBlog/datatemplates/hombre.png"><img alt="" src="http://foxandxss.net/CosasBlog/datatemplates/hombre.png" class="alignnone" width="96" height="96" /></a></p>
<p><a href="http://foxandxss.net/CosasBlog/datatemplates/mujer.png"><img alt="" src="http://foxandxss.net/CosasBlog/datatemplates/mujer.png" class="alignnone" width="96" height="96" /></a></p>
<p>Ya lo único que nos queda es modificar el ItemsControl añadiendole el template de cómo queremos que se represente cada instancia de la clase.</p>
<p>El código de la ventana quedaría así:</p>
<pre class="brush: xml;">
&lt;Window x:Class=&quot;DataTemplates.Window1&quot;
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    Title=&quot;Data Templates&quot; Height=&quot;600&quot; Width=&quot;600&quot;
    Background=&quot;#f8fffb&quot;&gt;
    &lt;ItemsControl ItemsSource=&quot;{Binding ListaPersonas}&quot;&gt;
        &lt;ItemsControl.ItemTemplate&gt;
            &lt;DataTemplate&gt;
                &lt;Border BorderBrush=&quot;#4f9d70&quot; BorderThickness=&quot;2&quot;
                        Margin=&quot;5&quot; Padding=&quot;2.5&quot;&gt;
                    &lt;Grid Background=&quot;{Binding Color}&quot;&gt;
                        &lt;Grid.ColumnDefinitions&gt;
                            &lt;ColumnDefinition Width=&quot;auto&quot; /&gt;
                            &lt;ColumnDefinition Width=&quot;auto&quot; /&gt;
                            &lt;ColumnDefinition Width=&quot;*&quot; /&gt;
                        &lt;/Grid.ColumnDefinitions&gt;
                        &lt;Grid.RowDefinitions&gt;
                            &lt;RowDefinition Height=&quot;auto&quot; /&gt;
                            &lt;RowDefinition Height=&quot;auto&quot; /&gt;
                            &lt;RowDefinition Height=&quot;auto&quot; /&gt;
                            &lt;RowDefinition Height=&quot;auto&quot; /&gt;
                        &lt;/Grid.RowDefinitions&gt;
                        &lt;Border BorderBrush=&quot;#4f9d70&quot;  BorderThickness=&quot;1&quot;
                                Margin=&quot;2.5&quot; Grid.RowSpan=&quot;4&quot;&gt;
                            &lt;Image Source=&quot;{Binding UrlImagen}&quot; /&gt;
                        &lt;/Border&gt;
                        &lt;TextBlock Text=&quot;Nombre: &quot; FontSize=&quot;20&quot; FontWeight=&quot;Bold&quot; Grid.Column=&quot;1&quot; /&gt;
                        &lt;TextBlock Text=&quot;{Binding Nombre}&quot; FontSize=&quot;20&quot; Grid.Column=&quot;2&quot; /&gt;

                        &lt;TextBlock Text=&quot;Dirección: &quot; FontSize=&quot;20&quot; FontWeight=&quot;Bold&quot; Grid.Column=&quot;1&quot; Grid.Row=&quot;1&quot; /&gt;
                        &lt;TextBlock Text=&quot;{Binding Direccion}&quot; FontSize=&quot;20&quot; Grid.Column=&quot;2&quot; Grid.Row=&quot;1&quot; /&gt;

                        &lt;TextBlock Text=&quot;Teléfono: &quot; FontSize=&quot;20&quot; FontWeight=&quot;Bold&quot; Grid.Column=&quot;1&quot; Grid.Row=&quot;2&quot; /&gt;
                        &lt;TextBlock Text=&quot;{Binding Telefono}&quot; FontSize=&quot;20&quot; Grid.Column=&quot;2&quot; Grid.Row=&quot;2&quot; /&gt;

                        &lt;TextBlock Text=&quot;Edad: &quot; FontSize=&quot;20&quot; FontWeight=&quot;Bold&quot; Grid.Column=&quot;1&quot; Grid.Row=&quot;3&quot; /&gt;
                        &lt;TextBlock Text=&quot;{Binding Edad}&quot; FontSize=&quot;20&quot; Grid.Column=&quot;2&quot; Grid.Row=&quot;3&quot; /&gt;
                    &lt;/Grid&gt;
                &lt;/Border&gt;
            &lt;/DataTemplate&gt;
        &lt;/ItemsControl.ItemTemplate&gt;
    &lt;/ItemsControl&gt;
&lt;/Window&gt;
</pre>
<p>Bueno, aunque os de miedo al principio, el código es bastante facilón.</p>
<p>Añadimos un borde y dentro pues un grid y dentro de dicho grid colocamos los controles para representar los datos.</p>
<p>Aquí muy importante decir, que el <b>DataContext</b> dentro del DataTemplate será la instancia del objeto con el que estamos tratando, así que por ejemplo:</p>
<pre class="brush: xml;">
&lt;TextBlock Text=&quot;{Binding Nombre}&quot; FontSize=&quot;20&quot; Grid.Column=&quot;2&quot; /&gt;
</pre>
<p>Aqui con <i>Nombre</i> no nos estamos refiriendo a una propiedad llamada Nombre dentro de Presenter (el DataContext de la ventana), si no a la propiedad Nombre de las instancias de Persona que tiene la lista.</p>
<p>Ahora estáis viendo el uso que le doy a la propiedad <i>Color</i> dentro de la clase Persona, lo uso para definir el color de fondo del item. Sé que no debería añadir esta propiedad dentro de la clase, pero lo hago con motivos ilustrativos simplemente.</p>
<p>Creo que aquí no hay más nada que requiera de una explicación, aunque si os dejaré una screenshot para aquellos que no estén escribiendo el ejemplo en sus ordenadores.</p>
<p><a href="http://www.foxandxss.net/CosasBlog/datatemplates/2.PNG"><img alt="" src="http://www.foxandxss.net/CosasBlog/datatemplates/2.PNG" class="alignnone" width="600" height="502" /></a></p>
<p>Bueno, creo que no se me olvida nada, ahora solo queda esperar vuestros comentarios para ver que os ha parecido el artículo.</p>
<p>Os adjunto el proyecto : <a href="http://www.foxandxss.net/CosasBlog/datatemplates/DataTemplates.rar">DataTemplates.rar</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.foxandxss.net/index.php/wpf-data-templates/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Apunta Notas</title>
		<link>http://blog.foxandxss.net/index.php/apunta-notas/</link>
		<comments>http://blog.foxandxss.net/index.php/apunta-notas/#comments</comments>
		<pubDate>Mon, 25 May 2009 23:05:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Mis Programas]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://www.foxandxss.org/blog/?p=24</guid>
		<description><![CDATA[Bueno, es hora de abrir una de las nuevas secciones prometidas, o sea, la de mis programas. El primer programa que voy a colocar será &#8220;Apunta Notas&#8221;, aquí os dejo una captura: Apunta notas es un sencillito programa para eso mismo, escribir notas. Está escrito usando C# y WPF. Para más información, haced click en [...]]]></description>
			<content:encoded><![CDATA[<p>Bueno, es hora de abrir una de las nuevas secciones prometidas, o sea, la de mis programas.</p>
<p>El primer programa que voy a colocar será &#8220;Apunta Notas&#8221;, aquí os dejo una captura:</p>
<p><a href="http://www.foxandxss.net/misprogramas/apuntanotas/CapturaPost.png"><img alt="" src="http://www.foxandxss.net/misprogramas/apuntanotas/CapturaPost.png" class="alignnone" width="485" height="365" /></a><br />
<span id="more-24"></span><br />
Apunta notas es un sencillito programa para eso mismo, escribir notas.</p>
<p>Está escrito usando C# y WPF.</p>
<p>Para más información, haced click en la pestaña &#8220;Mis programas&#8221; arriba en la web o bien haced click directamente aquí:</p>
<p><a href="http://www.foxandxss.net/misprogramas/apuntanotas/apuntanotas.php">Información Apunta Notas</a></p>
<p>Espero vuestros comentarios.</p>
<p>Saludos,<br />
Fox</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.foxandxss.net/index.php/apunta-notas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Reseña: Head First C#</title>
		<link>http://blog.foxandxss.net/index.php/resena-head-first-c/</link>
		<comments>http://blog.foxandxss.net/index.php/resena-head-first-c/#comments</comments>
		<pubDate>Fri, 22 May 2009 21:00:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Reseñas]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Head First]]></category>

		<guid isPermaLink="false">http://www.foxandxss.org/blog/?p=14</guid>
		<description><![CDATA[Bueno, vamos a aventurarnos con lo que sería mi primera reseña de un libro. También me gustaría disculparme, puesto que la mayoría de libros que analizaré serán en inglés, puesto que la gran mayoría de documentación está en dicho idioma, y si quereis ser informáticos, en inglés es un requisito obligatorio. El honor de mi [...]]]></description>
			<content:encoded><![CDATA[<p>Bueno, vamos a aventurarnos con lo que sería mi primera reseña de un libro.</p>
<p>También me gustaría disculparme, puesto que la mayoría de libros que analizaré serán en inglés, puesto que la gran mayoría de documentación está en dicho idioma, y si quereis ser informáticos, en inglés es un requisito obligatorio.</p>
<p>El honor de mi primera reseña lo tendrá un libro de la que es mi colección favorita, &#8220;Head First&#8221;, en concreto &#8220;Head First C#&#8221;.</p>
<p><a href="http://www.headfirstlabs.com/books/hfcsharp/"><img class="alignnone" src="http://www.headfirstlabs.com/Images/hfcsharp_cover.png" alt="" width="180" height="208" /></a><br />
<span id="more-14"></span><br />
Antes que nada, para aquellos que no conozcan los libros de &#8220;Head First&#8221;, decir que son unos libros que se centran en introducirte en una materia, pero sin llegar a profundizar demasiado, pero lo justo y necesario como para poder desenvolverte en la materia. Entonces&#8230; ¿Por qué Head First? Puesto que no verás un libro de programación igual, estos están lleno de dibujitos y ejemplos muy graciosos tales como el de &#8220;Mi perro ha sido abducido por unos aliens, ¿Lo habeis visto?&#8221; (Este del libro de PHP).</p>
<p>Yo tengo un dicho: &#8220;Materia que explican los libros de Head First, materia que entiendes&#8221;. Lo explican de tal forma, con unos ejemplos tan tan sencillos y simpáticos, que no hay forma de que no te enteres de lo que están explicando. Bueno, no me enrollo más y vamos al lio.</p>
<p>Head First C#, tales como el resto de libros de la serie &#8220;Head First&#8221;, se presenta como un libro de iniciación a C#, aunque eso si, necesitarías una pequeña base ya que no se dedica a explicar las estructuras básicas de control ni nada de eso. Directamente se centra en QUE ofrece C#.</p>
<p>Empieza con un motivador capítulo para aquellos nuevos a .NET puesto que te pone un ejemplo de como crear una base de datos (usando SQL server), crear las tablas, los datos&#8230;. Y posteriormente, un formulario donde simplemente arrastras la tabla a este, y aparecen los campos de dicha tabla en el formulario. Ahi directamente podrás insertar, modificar y borrar los datos&#8230; Y eso con 2 líneas de código. El capítulo termina enseñandote a crear un paquete de la aplicación y publicarla. Vamos, un muy buen comienzo para ir abriendo boca de lo que Visual Studio te ofrece.</p>
<p>El resto de capitulos ya están más centrados en lo que C# ofrece. Si bien es cierto que el libro explica C# 3.5, explica más bien lo básico de C# como para poder empezar a hacer tus propias creaciones.</p>
<p>Esto quiere decir que no vais a ver nada sobre atributos, threads y alguna cosa más avanzada o quizá menos usada como reflexión. Sin embargo, si hay una pequeña introducción a LINQ.</p>
<p>También ponen algún tema sobre GDI+, lo cual puede pareceros interesantes a aquellos que useis Windows Forms, pero no para aquellos que sean de WPF.</p>
<p>Lo buenísimo de este libro, es que a lo largo del este te incita a hacer 3 programas, de los cuales te  da el material necesario para desarrollarlo (como imágenes), pero no te ofrece el código fuente. De hecho, en su día hicieron un concurso para ver quien los implementaba mejor.</p>
<p>No son los típicos programas aburridos, si no programas que te gustaría hacer, puesto que son muy divertidos.</p>
<p>En el primer programa, te hacen programar un simulador de apuestas de carrera de caballos, pero con animaciones y todo! Vamos, te salen los caballos pintados por pantalla corriendo hasta la meta!</p>
<p>En el segundo, te piden hacer un pequeño juego de aventura visto desde arriba donde un pequeño personajillo se va moviendo haciendo click en unos botones, incluso pega a los bichos.</p>
<p>Y en el tercero, es un pequeño clon de Space Invaders, el cual imagino que todos conocereis <img src='http://blog.foxandxss.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Paso a destacar lo que yo considero los aspectos negativos y positivos:</p>
<p>Positivo:</p>
<ul>
<li>Es Head First, con lo que todo ello conlleva.</li>
</ul>
<ul>
<li> Los programas que te piden hacer son divertidos de programar.</li>
</ul>
<ul>
<li> Conseguirás tener un conocimiento de C# bastante decente.</li>
</ul>
<ul>
<li> El primer capítulo os motivará con la plataforma .NET</li>
</ul>
<p>Negativo:</p>
<ul>
<li>No explica algunos conceptos más avanzados del lenguaje</li>
</ul>
<ul>
<li> Requiere al menos un conocimiento básico de programación</li>
</ul>
<p>Como libro de introducción a C# está muy bien, te divertirás mucho con el, asegurado.</p>
<p>Como nota le daría un 7,5/10 ya que podría explicar algunas de las cosas más dificiles como threads, al estilo Head First.</p>
<p>Os dejo unos cuantos enlaces:</p>
<p><a href="http://www.headfirstlabs.com/books/hfcsharp/">Página web del libro</a><br />
<a href="http://www.oreilly.com/catalog/9780596514822/chapter/ch05.pdf">Capítulo de ejemplo</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.foxandxss.net/index.php/resena-head-first-c/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
