<?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>Desarrollando Ideas &#187; Programación</title>
	<atom:link href="http://desarrollandoideas.com.ar/category/programacion/feed/" rel="self" type="application/rss+xml" />
	<link>http://desarrollandoideas.com.ar</link>
	<description>Abandon all hope, ye who enter here...</description>
	<lastBuildDate>Tue, 28 Feb 2012 18:48:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>SlimStats, estadísticas web open source</title>
		<link>http://desarrollandoideas.com.ar/2010/03/09/slimstats-estadisticas-web-open-source/</link>
		<comments>http://desarrollandoideas.com.ar/2010/03/09/slimstats-estadisticas-web-open-source/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 19:18:33 +0000</pubDate>
		<dc:creator>Paul M Dorr</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[Diseño Web]]></category>
		<category><![CDATA[herramientas]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[soluciones]]></category>

		<guid isPermaLink="false">http://desarrollandoideas.com.ar/?p=716</guid>
		<description><![CDATA[SlimStat es una aplicación open source de análisis y estadísticas para páginas web. Está creada con PHP y MySQL, así que se puede integrar fácilmente en nuestros sitios mediante JavaScript (como Google Analytics) o PHP. Para un determinado período, la aplicación muestra: La cantidad de &#8220;hits&#8221;, visitas y páginas vistas. Las URLs y dominios de [...]]]></description>
			<content:encoded><![CDATA[<div>
<p><a href="http://slimstat.net/" target="_blank"><strong>SlimStat</strong></a> es una aplicación <strong>open source</strong> de <strong>análisis y estadísticas para páginas web</strong>.</p>
<p>Está creada con <strong>PHP </strong>y<strong> MySQL</strong>, así que se puede integrar fácilmente en nuestros sitios mediante <strong>JavaScript </strong>(como <strong>Google Analytics</strong>) o <strong>PHP</strong>.</p>
<p style="text-align: center;"><a href="http://slimstat.net/" target="_blank"></a><a href="http://desarrollandoideas.com.ar/wp-content/uploads/2010/03/slimstat.gif"><img class="aligncenter size-full wp-image-717" title="slimstat" src="http://desarrollandoideas.com.ar/wp-content/uploads/2010/03/slimstat.gif" alt="" width="480" height="261" /></a></p>
<p>Para un determinado período, la aplicación muestra:</p>
<ul>
<li>La cantidad de &#8220;hits&#8221;, visitas y páginas vistas.</li>
<li>Las URLs y dominios de origen de los links.</li>
<li>Términos de búsqueda.</li>
<li>Navegadores, sistemas operativos, países, resoluciones de pantalla.</li>
</ul>
<p>También hay una opción llamada &#8220;paths&#8221;, que muestra el camino recorrido por un usuario desde su navegador, <strong>página por página</strong>.</p>
<p>La gran ventaja de <strong>Slimstat </strong>ante <strong>Google Analitycs</strong> es que muestra las <strong>estadísticas en vivo</strong>, con tan sólo presionar F5.</p>
<p>Hace unos minutos lo he instalado en <a href="www.shooteando.com.ar">www.shooteando.com.ar</a>, mediante un proceso <a href="http://slimstat.net/install">extremadamente sencillo</a> que lo dejó funcionando en el acto. Para probarlo &#8220;<strong>en vivo</strong>&#8220;, entré varias veces desde esta misma pc y desde una con otra ip [ gracias <a href="http://twitter.com/rulski">@rulski</a> =P ] mientras actualizaba con F5 para ver los cambios. Los resultados fueron <strong>más que satisfactorios</strong>; me mostró la cantidad de &#8220;hits&#8221; [ 5 en total, 4 desde mi pc ] y las visitas &#8220;reales&#8221; [ que eran 2 ]. Lo único que le faltaría es permitir que el <strong>gráfico se muestre por visitas</strong> y no por hits/día, aunque los números en la parte superior sobran para hacerse una idea correcta de la cantidad de visitas &#8220;reales&#8221;.</p>
<p>Espero que les sea útil y no dejen de <strong>comentar </strong>si lo probaron o tienen dudas.</p>
<p>Vía <a href="http://www.webresourcesdepot.com/open-source-and-live-web-analytics-slimstat/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+webresourcesdepot+%28WebResourcesDepot%29&amp;utm_content=Google+Reader">WebResourcesDepot</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://desarrollandoideas.com.ar/2010/03/09/slimstats-estadisticas-web-open-source/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Adiós HTML, bienvenido Haml</title>
		<link>http://desarrollandoideas.com.ar/2009/11/16/adios-html-bienvenido-haml/</link>
		<comments>http://desarrollandoideas.com.ar/2009/11/16/adios-html-bienvenido-haml/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 18:53:56 +0000</pubDate>
		<dc:creator>Paul M Dorr</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Diseño Web]]></category>
		<category><![CDATA[ERB]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[Haml]]></category>
		<category><![CDATA[herramientas]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[soluciones]]></category>
		<category><![CDATA[templates]]></category>

		<guid isPermaLink="false">http://desarrollandoideas.com.ar/?p=677</guid>
		<description><![CDATA[Actualmente me encuentro comenzando varios proyectos pequeños basados en diferentes plataformas y/o frameworks (Django, Ruby on Rails, PHP), con lo cual se me &#8220;armó&#8221; un lío interesante a la hora de recordar las sintaxis que utiliza cada framework/lenguaje para generar el HTML final. RoR usa por defecto ERB, Django tiene su lenguaje para templates y [...]]]></description>
			<content:encoded><![CDATA[<p>Actualmente me encuentro comenzando varios <strong>proyectos </strong>pequeños basados en diferentes plataformas y/o frameworks (<strong>Django</strong>, <strong>Ruby on Rails</strong>, <strong>PHP</strong>), con lo cual se me &#8220;armó&#8221; un lío interesante a la hora de recordar las sintaxis que utiliza cada framework/lenguaje para generar el <strong>HTML </strong>final. <strong>RoR </strong>usa por defecto <a href="http://www.ruby-doc.org/stdlib/libdoc/erb/rdoc/index.html">ERB</a>, <strong>Django </strong>tiene su<em> lenguaje para templates</em> y con <strong>PHP </strong>me alcanzaba con la forma básica de <em>embeberlo </em>en <strong>HTML</strong>. Con la escasa memoria que tengo, se podrán imaginar que iba a terminar escribiendo cualquier cosa.</p>
<p>Por suerte, y gracias al <em>dios de los lenguajes de programación </em>(?), <a href="http://twitter.com/eljuanchosf">@eljuanchosf</a> llegó para salvarme con <a title="Haml" href="http://haml-lang.com/">Haml</a> en la mano.</p>
<p><strong>Haml </strong>fue ideado para<em> acelerar los tiempos de desarrollo </em>y a la vez lograr un lenguaje de markup <em>agradable a la vista</em>. No por nada de su idea principal es:</p>
<blockquote><p><em>Markup should be beautiful</em>.</p></blockquote>
<p>Luego de ver un ejemplo, se puede comprobar la<em> sencillez y &#8220;limpieza&#8221; </em>que este lenguaje le puede dar a nuestros <em>templates</em>. El ejemplo siguiente está extraído del <a title="Tutorial de Haml" href="http://haml-lang.com/tutorial.html"><strong>tutorial </strong>que se puede ver</a> en la página principal de <strong>Haml</strong>.</p>
<div style="float: left; width: 48%; margin-bottom: 20px">
<h4>ERB</h4>
<pre>&lt;div id='content'&gt;
  &lt;div class='left column'&gt;
    &lt;h2&gt;Welcome to our site!&lt;/h2&gt;
    &lt;p&gt;&lt;%= print_information %&gt;&lt;/p&gt;
  &lt;/div&gt;
  &lt;div&gt;
    &lt;%= render :partial =&gt; "sidebar" %&gt;
  &lt;/div&gt;
&lt;/div&gt;</pre>
</div>
<div style="float: left; width: 48%">
<h4>Haml</h4>
<pre>#content
  .left.column
    %h2 Welcome to our site!
    %p= print_information
  .right.column
    = render :partial =&gt; "sidebar"</pre>
</div>
<div style="clear: left;">
Si bien en principio (y sobre todo para aquellos que no conozcan <strong>ERB</strong>) el código pueda parecer un tanto extraño, una mirada más detenida nos demuestra que el increíble<em> ahorro de código y tiempo</em> que este<strong> lenguaje de markup</strong> nos puede brindar. Además, una vez que nos acostumbramos, el código de <strong>Haml </strong>es<em> mucho más agradable y legible</em> que el <strong>HTML </strong>puro, y ni hablar cuando se trata de <strong>HTML </strong>+ algún-lenguaje-de-template.
</div>
<p>Pero el hecho de que me gustara tanto <strong>Haml </strong>traía consigo un nuevo <strong>problema</strong>; empecé a &#8220;odiar&#8221; el lenguaje de templates de <strong>Django </strong>y <strong>PHP</strong> embebido en <strong>HTML </strong>(en realidad a éste último ya lo odiaba). Así que puse manos al teclado y busqué <strong><em>implementaciones </em>de </strong><strong>Haml </strong>para estos lenguajes, encontrando resultados mucho más<em> rápido y fácil </em>de lo que esperaba.</p>
<p>Para poder tener un lenguaje similar a <strong>Haml </strong>en <strong>Django</strong>, <a title="GHRML, Haml-like para Django" href="http://www.ghrml.org/">podemos utilizar GHRML</a>, el cual está basado en <strong>Genshi Markup Templates</strong>. En el caso de <strong>PHP</strong>, existe un <a title="Parser Haml para PHP" href="http://phphaml.sourceforge.net/">parser llamado phphaml</a>, el cual nos permite escribir los templates casi de la misma forma que lo hacemos en el <strong>Haml </strong>original. Pueden ver ejemplos de estos en sus respectivas páginas.</p>
<p>¿Conocen otras implementaciones de <strong>Haml </strong>para <strong>Django </strong>o <strong>PHP</strong>? ¿Son mejores que las encontradas por mi? ¡No duden en dejar sus comentarios recomendándolas!</p>
]]></content:encoded>
			<wfw:commentRss>http://desarrollandoideas.com.ar/2009/11/16/adios-html-bienvenido-haml/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>De las DLLs del infierno al infierno de las XML</title>
		<link>http://desarrollandoideas.com.ar/2009/09/22/de-las-dlls-del-infierno-al-infierno-de-las-xml/</link>
		<comments>http://desarrollandoideas.com.ar/2009/09/22/de-las-dlls-del-infierno-al-infierno-de-las-xml/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 13:45:38 +0000</pubDate>
		<dc:creator>Paul M Dorr</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://desarrollandoideas.com.ar/?p=574</guid>
		<description><![CDATA[Leo en On Software and Languages un interesante artículo en el que habla de lo &#8220;complejos&#8221; y difíciles de leer que se hacen actualmente los proyectos basadaos en Java, gracias a los archivos de compilación y configuración en XML usados por herramientas como Scripts Ant, Struts2, Spring, log4j, Hibernate, etc. Para ilustrar este problema, el [...]]]></description>
			<content:encoded><![CDATA[<p>Leo en<a title="XMLs infernales =P" href="http://ib-krajewski.blogspot.com/2009/04/from-dll-to-xml-hell.html"> On Software and Languages</a> un interesante artículo en el que habla de lo &#8220;complejos&#8221; y difíciles de leer que se hacen actualmente los proyectos basadaos en Java, gracias a los archivos de compilación y configuración en XML usados por herramientas como Scripts <em>Ant,</em> <em>Struts2</em>, <em>Spring, log4j, Hibernate, etc.</em></p>
<p>Para ilustrar este problema, el autor empieza comparando un Script de Ant en <em>XML </em>con un Ant-builder en <em>Groovy</em>:</p>
<p>Ant XML</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;project</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;prepareBookDirs&quot;</span> <span style="color: #000066;">default</span>=<span style="color: #ff0000;">&quot;copy&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;target.dir&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;target&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;chapters.dir&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;chapters&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;target</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;copy&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;delete</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;${target.dir}&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;copy</span> <span style="color: #000066;">todir</span>=<span style="color: #ff0000;">&quot;${target.dir}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;fileset</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;${chapters.dir}&quot;</span></span>
<span style="color: #009900;">        <span style="color: #000066;">includes</span>=<span style="color: #ff0000;">&quot;*.doc&quot;</span></span>
<span style="color: #009900;">        <span style="color: #000066;">excludes</span>=<span style="color: #ff0000;">&quot;~*&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/copy<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/target<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/project<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Ant-builder en Groovy</p>

<div class="wp_syntax"><div class="code"><pre class="groovy" style="font-family:monospace;">  TARGET_DIR <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'target'</span>
  CHAPTERS_DIR <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'chapters'</span>
  ant <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">new</span> AntBuilder<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
  ant.<span style="color: #006600;">delete</span><span style="color: #66cc66;">&#40;</span>dir:TARGET_DIR<span style="color: #66cc66;">&#41;</span>
  ant.<span style="color: #006600;">copy</span><span style="color: #66cc66;">&#40;</span>todir:TARGET_DIR<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
      fileset<span style="color: #66cc66;">&#40;</span>dir:CHAPTERS_DIR, includes:<span style="color: #ff0000;">'*.doc'</span>, excludes:<span style="color: #ff0000;">'~*)
  }</span></pre></div></div>

<p>Como pueden ver, es notablemente más legible el segundo código, no sólo porque es más corto y con menos caracteres superfluos, sino porque se usa el mismo lenguaje para escribirlo, en vez de XML. Como bien dice el autor de la entrada original, el creador de Ant admitió que usar <em>XML </em>es <em>&#8220;&#8230;probablemente un error&#8221;</em>.</p>
<p>Luego, el autor del artículo muestra una tabla donde compara números de código realizado en Java contra Ruby on Rails. Prestar especial atención a las líneas de configuración y al tiempo que lleva realizar el proyecto.</p>
<div style="margin: 0pt auto; width: 570px;">
<pre><strong>     Metric               Java +              Ruby +
                     Spring/Hibernate         Rails </strong>

  Time to market     4 months, approx.      4 nights,
                      20 hours/week       5 hours/night
  Lines of code          3,293                1,164
<span style="color: #009900;">  Lines of config        1,161                113</span>
  Number of classes/     62/549               55/126
  methods</pre>
</div>
<p>Los archivos de configuración en <em>Ruby </em>ocupan el<strong> ¡10%! </strong>de líneas de lo que ocupan en <em>Java</em>, y el tiempo de desarrollo cambia de <strong>4 meses</strong> en el lenguaje de los infames XMLs, a<strong> ¡4 noches!</strong> en el interpretado. Si bien no sé hasta que punto los números son acertados, por más que las líneas de configuración en ruby aumenten un<em> 200%</em>, aún serían muchísimas menos que las de <em>Java</em>.</p>
<p>En el artículo original, el autor señala la <em>complejidad de frameworks como spring</em>, que llevan a necesitar utilizar gráficas para poder entender la estructura interna de sus archivos de configuración <em>XML</em>. También cuenta lo siguiente, que me pareció ya excesivo, pero que a muchos compañeros de trabajo que conozco les encantaría:</p>
<blockquote><p>But wait, it comes even better: some people are so enamoured with XML that they are using it as a programming languag, either doing patterns with <em>Spring</em> and XML configuration files, or even inventing an XML-based programming language and writing its interpterer in XSLT (I&#8217;m not joking!).</p></blockquote>
<p>Lo que en español viene a ser algo parecido a esto:</p>
<blockquote><p>Pero esperen, se pone mucho mejor: algunas personas están tan<em> enamoradas de  XML</em>, que lo están utilizandon como un lenguaje de programación, ya sea haciendo patrones con<em> Spring</em> y archivos de configuración XML, o incluso<em> inventando un lenguaje de programación basado en XML</em> y escribiendo su intérprete en XSLT (No es broma!).</p></blockquote>
<p>Sin comentarios. Creo que con el ejemplo ya sobra, hay gente para todo.</p>
<h3>Conclusión</h3>
<p>En la entrada original, el autor hace un análisis final que no me pareció necesario incluir en este post (lo van a tener que leer en inglés). Por mi parte, la conclusión es sencilla, XML es un recurso excelente, cuando es usado con moderación y no para cada problema que se cruza en nuestro camino. Prefiero usar archivos de configuración más pequeños, preferiblemente <em>escritos en el mismo lenguaje en que estoy desarrollando</em> (como es el caso de <em>Python </em>o <em>PHP</em>), o llegado el caso, algo más legible como <em>JSON </em>o <em>YAML</em>.</p>
<p>Y para terminar, coincido totalmente con la reflexión del autor de la entrada original:</p>
<blockquote><p><strong>I think that the loose coupling thing is overrated&#8230;</strong></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://desarrollandoideas.com.ar/2009/09/22/de-las-dlls-del-infierno-al-infierno-de-las-xml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Administrador de proyectos y bug tracker InDefero</title>
		<link>http://desarrollandoideas.com.ar/2009/09/15/administrador-de-proyectos-y-bug-tracker-indefero/</link>
		<comments>http://desarrollandoideas.com.ar/2009/09/15/administrador-de-proyectos-y-bug-tracker-indefero/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 17:55:01 +0000</pubDate>
		<dc:creator>Paul M Dorr</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Software Libre]]></category>

		<guid isPermaLink="false">http://desarrollandoideas.com.ar/?p=512</guid>
		<description><![CDATA[InDefero es una aplicación basada en PHP, que nos brinda la posibilidad de tener en nuestro servidor las características de sistemas de administración multi-proyecto como Google Code o Sourceforge. Entre sus funcionalidades se cuentan: Seguimiento de bugs Subida y descarga de archivos Documentación y vista general del código Cada usuario tiene su propio &#8220;tablero&#8221; Soporte [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.indefero.net/" target="_blank"><strong><img class="alignright size-full wp-image-515" title="indefero-nice-screenshot" src="http://desarrollandoideas.com.ar/wp-content/uploads/2009/09/indefero-nice-screenshot.png" alt="indefero-nice-screenshot" width="450" height="295" />InDefero</strong></a> es una aplicación basada en PHP, que nos brinda la posibilidad de tener en nuestro servidor las características de sistemas de administración <strong>multi-proyecto como Google Code o Sourceforge.</strong></p>
<p><strong> </strong>Entre sus funcionalidades se cuentan:</p>
<ul>
<li>Seguimiento de bugs</li>
<li>Subida y descarga de archivos</li>
<li>Documentación y vista general del código</li>
<li>Cada usuario tiene su propio &#8220;tablero&#8221;</li>
<li>Soporte para explorar código (git, Subversion y Mercurial)</li>
<li>Línea de tiempo del proyecto</li>
<li>Un motor de búsqueda poderoso</li>
<li>Visualización de las diferencias en los commits</li>
<li>Resaltado de la sintáxis online</li>
<li>Facilidad de comunicación con el usuario final</li>
<li>Y mucho más&#8230;</li>
</ul>
<p>Requiere un servidor con PHP y soporte para bases de datos  PostgreSQL, SQLite o MySQL 4.1+.</p>
]]></content:encoded>
			<wfw:commentRss>http://desarrollandoideas.com.ar/2009/09/15/administrador-de-proyectos-y-bug-tracker-indefero/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Programar en Python (o Ruby) es divertido!</title>
		<link>http://desarrollandoideas.com.ar/2009/08/31/programar-en-python-o-ruby-es-divertido/</link>
		<comments>http://desarrollandoideas.com.ar/2009/08/31/programar-en-python-o-ruby-es-divertido/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 17:08:09 +0000</pubDate>
		<dc:creator>Paul M Dorr</dc:creator>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://desarrollandoideas.com.ar/?p=482</guid>
		<description><![CDATA[En Viva Linux! publicaron hace unos días un artículo en el cual cuentan que basándose en los resultados de un experimiento, se comprueba que para C# y Java se realizan más consultas los días de semana laborables, disminuyendo su cantidad los fines de semana; mientras que con Python y Ruby sucede exactamente lo contrario. La [...]]]></description>
			<content:encoded><![CDATA[<p>En <a title="Python y Ruby más divertidos" href="http://www.vivalinux.com.ar/articulos/python-y-ruby-mas-divertidos"><em>Viva Linux!</em></a> publicaron hace unos días un artículo en el cual cuentan que basándose en <a href="http://danlorenc.blogspot.com/2009/08/stackoverflow-experiment-results.html">los resultados</a> de un experimiento, se comprueba que para <strong>C#</strong> y <strong>Java </strong>se realizan<strong> </strong>más consultas los días de semana laborables, disminuyendo su cantidad los fines de semana; mientras que con <strong>Python</strong> y <strong>Ruby</strong> sucede exactamente lo contrario. La conclusión de este experimento, según su propio autor, es muy sencilla:</p>
<blockquote><p>“Mi teoría es que los programadores eligen usar lenguajes como Python y Ruby para sus proyectos personales, a pesar de sus debilidades, <strong>porque es más divertido programar en esos lenguajes</strong>”.</p></blockquote>
<p>Si bien la conclusión puede parecer un poco &#8220;precipitada&#8221;, me parece muy lógica y acertada, ya que a los resultados de este experimento le puedo sumar mi <em>experiencia real</em> y la de colegas que han trabajado con cualquiera de estos <em>cuatro lenguajes</em>.</p>
<p>Y ustedes<em> ¿qué opinan de la conclusión? ¿Les parece acertada?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://desarrollandoideas.com.ar/2009/08/31/programar-en-python-o-ruby-es-divertido/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Leyes del código fuente y el desarrollo de software</title>
		<link>http://desarrollandoideas.com.ar/2009/05/08/leyes-del-codigo-fuente-y-el-desarrollo-de-software/</link>
		<comments>http://desarrollandoideas.com.ar/2009/05/08/leyes-del-codigo-fuente-y-el-desarrollo-de-software/#comments</comments>
		<pubDate>Fri, 08 May 2009 13:33:31 +0000</pubDate>
		<dc:creator>Paul M Dorr</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[trucos]]></category>

		<guid isPermaLink="false">http://desarrollandoideas.com.ar/?p=122</guid>
		<description><![CDATA[Leo en Juixe TechKnow una lista muy acertada de &#8220;leyes&#8221; que el autor considera imprescindibles a la hora de escribir código fuente. Les dejo a continuación mi humilde traducción de cada uno de los puntos tratados en el post original, con unos pocos agregados y modificaciones: Las líneas de código comentado no son comentarios &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>Leo en <a title="Juixe Techknow" href="http://www.juixe.com/techknow">Juixe TechKnow</a> una lista muy acertada de &#8220;leyes&#8221; que el autor considera imprescindibles a la hora de escribir código fuente. Les dejo a continuación mi humilde traducción de cada uno de los puntos tratados en <a title="Laws of Source Code and Software Development " href="http://www.juixe.com/techknow/index.php/2009/05/07/laws-of-source-code-and-software-development/">el post original</a>, con unos pocos agregados y modificaciones:</p>
<ul>
<li><strong>Las líneas de código comentado no son comentarios</strong> &#8211; Usa control de versiones, no lleves un registro de los cambios del código comentándolo.  El código comentado es código esquizofrénico.</li>
<li><strong>Deja que tu reputación te preceda</strong> &#8211; Si trabajas en proyectos de código abierto, blogueas y mantienes una buena red de contactos, conseguirás más ofertas que aquellos que sólo envían currículums por mail para buscar trabajo.</li>
<li><strong>No des excusas por tu código, déjalo hablar por si mismo</strong> &#8211; Te pagan para encontrar soluciones usando código, no busques excusas para el mismo. &#8220;Funcionó en mi máquina&#8221; no es una solución, el cliente no usará tu computadora para correr la aplicación.</li>
<li><strong>No tomes las críticas a tu código como algo personal </strong>- No se trata de tí, sino de una característica de negocios y de la performance de toda la aplicación.</li>
<li><strong>Tu código es el legado de tu carrera </strong>- Aquellos que mantengan tu código una vez que lo hayas dejado, te maldecirán o te agradecerán.</li>
<li><strong>Escribir código no es lo mismo que programar -</strong> Escribir código no es igual a desarrollar software; lo primero requiere pensar y ser creativo mientras que en el segundo caso esto no siempre es necesario.</li>
<li><strong>Escribir código implica aprender </strong>- La ley de Moore establece que la tecnología se &#8220;duplica&#8221; cada 18 meses, hay que mantenterse actualizado. Si no aprendes nada es que estás haciendo algo mal. Cada proyecto es una oportunidad para aprender.</li>
<li><strong>Escribir código es comunicar </strong>- Muchos leerán el código que escribiste. Usa buenas prácticas así como patrones de diseño conocidos. Esfuérzate por la simplicidad antes que por impresionar, tu código debe comunicar clara y consistentemente su propósito<strong>.</strong></li>
<li><strong>Las herramientas no hacen al desarrollador </strong>- Conoce a fondo tus herramientas y úsalas con su máximo poder, pero no permitas que se conviertan en tus muletas. Trabajar con diferentes IDEs no debería detenerte sólo porque no encuentras el asistente de generación de código que necesitas.</li>
<li><strong>No confíes en tu código </strong>- Confiar en tus habilidades al codificar no remplaza la necesidad de realizar tests. No confíes en tu código. No confíes en tus suposiciones. No confíes en los usuarios.</li>
<li><strong>El código no está escrito en latín </strong>- El código no muere una vez terminada la aplicación, tiene que ser refactorizado, modificado y reusado. El código tiene que evolucionar. Tu mayor fortaleza no radica en escribir montañas de nuevas líneas de código, sino en mantener, refactorizar y reagrupar código existente según las exigencias y las especificaciones de la aplicación.</li>
<li><strong>Respetar la API</strong> &#8211; Tu API es un contrato del que otros dependerán. Mantén la API limpia y explícita. Mientras menos métodos expongas, menos testeo, mantenimiento y documentación serán necesarios.</li>
<li><strong>El código significa cosas diferentes para diferentes personas </strong>- En última instancia, para los usuarios finales el código simplemente es la habilidad de poder hacer lo que ellos esperan.</li>
</ul>
<p>Agrego un par de &#8220;mi cosecha&#8221;:</p>
<ul>
<li><strong>No te cases con un lenguaje o tecnología</strong> &#8211; Hoy en día existen muchísimos lenguajes, frameworks y soluciones disponibles para diferentes finalidades. A la hora de desarrollar una nueva aplicación, es mucho mejor elegir el lenguaje o la tecnología apropiada para ella, antes que intentar adaptar lo único que conoces al propósito del proyecto.</li>
<li><strong>No mates mosquitos con bombas H</strong> &#8211; Esto es un corolario del anterior punto. Nunca sobredimensiones las necesidades de una aplicación sólo porque no sabes cómo utilizar la herramienta adecuada, en vez de eso, aprovecha la oportunidad de aprender. De esta forma no sólo harás un mejor desarrollo, sino que también se incrementarán tus conocimientos.</li>
</ul>
<p>Aclaro que varios puntos fueron levemente modificados e incluso uno fue completamente removido, ya que no me pareció relevante incluirlo. Estoy seguro de que los incluídos son suficientes y están traducidos de forma clara y concisa, si piensas al contrario, ¡házmelo saber!</p>
<p>Vía: <a title="Juixe Techknow" href="http://www.juixe.com/techknow">Juixe TechKnow</a> | <a title="Laws of Source Code and Software Development " href="http://www.juixe.com/techknow/index.php/2009/05/07/laws-of-source-code-and-software-development/">Laws of Source Code and Software Development</a></p>
]]></content:encoded>
			<wfw:commentRss>http://desarrollandoideas.com.ar/2009/05/08/leyes-del-codigo-fuente-y-el-desarrollo-de-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Expresiones Regulares Avanzadas</title>
		<link>http://desarrollandoideas.com.ar/2009/05/07/expresiones-regulares-avanzadas-conceptos-cruciales/</link>
		<comments>http://desarrollandoideas.com.ar/2009/05/07/expresiones-regulares-avanzadas-conceptos-cruciales/#comments</comments>
		<pubDate>Fri, 08 May 2009 00:05:21 +0000</pubDate>
		<dc:creator>Paul M Dorr</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Expresiones Regulares]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[soluciones]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://desarrollandoideas.com.ar/?p=116</guid>
		<description><![CDATA[Las expresiones regulares pueden llegar a ser una herramienta extremadamente poderosa, siempre que logremos tener un buen nivel de entendimiento acerca de cómo funcionan. Si bien a veces podemos creer que ya sabemos todo (o casi) acerca de cierta herramienta o lenguaje, siempre hay algo nuevo que podemos aprender. En este caso les dejo el [...]]]></description>
			<content:encoded><![CDATA[<p>Las expresiones regulares pueden llegar a ser una herramienta extremadamente poderosa, siempre que logremos tener un buen nivel de entendimiento acerca de cómo funcionan. Si bien a veces podemos creer que ya sabemos todo (o casi) acerca de cierta herramienta o lenguaje, siempre hay algo nuevo que podemos aprender. En este caso les dejo el link de un tutorial (en inglés) muy bien explicado, el cual habla de <a title="Crucial concepts Behind Advanced Regular Expressions" href="http://www.smashingmagazine.com/2009/05/06/introduction-to-advanced-regular-expressions/">conceptos cruciales en las expresiones regulares avanzadas</a>.</p>
<p>Vía: <a title="Smashing Magazine" href="http://www.smashingmagazine.com">Smashing Magazine</a> | <a title="Crucial Concepts Behind Advanced Regular Expressions" href="http://www.smashingmagazine.com/2009/05/06/introduction-to-advanced-regular-expressions/">Crucial Concepts Behind Advanced Regular Expressions</a></p>
]]></content:encoded>
			<wfw:commentRss>http://desarrollandoideas.com.ar/2009/05/07/expresiones-regulares-avanzadas-conceptos-cruciales/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

