<?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>Johnny De Castro</title>
	<atom:link href="http://www.jdcastro.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.jdcastro.com</link>
	<description>Web Designer and Developer &#124; Joomla and WordPress Expert</description>
	<lastBuildDate>Mon, 30 Apr 2012 19:32:37 +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>linux process isolation</title>
		<link>http://www.jdcastro.com/linux/linux-process-isolation</link>
		<comments>http://www.jdcastro.com/linux/linux-process-isolation#comments</comments>
		<pubDate>Mon, 30 Apr 2012 19:31:54 +0000</pubDate>
		<dc:creator>jdcastro</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[isolation]]></category>

		<guid isPermaLink="false">http://www.jdcastro.com/?p=23553</guid>
		<description><![CDATA[sandboxing for multi tenant applications]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.technologyofcontent.com/2011/04/sandboxing-for-multi-tenant-applications/" target="_blank">sandboxing for multi tenant applications</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jdcastro.com/linux/linux-process-isolation/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eligiendo el Lenguaje Apropiado para Desarrollo Web</title>
		<link>http://www.jdcastro.com/personal/inspiracion/eligiendo-el-lenguaje-apropiado-para-desarrollo-web</link>
		<comments>http://www.jdcastro.com/personal/inspiracion/eligiendo-el-lenguaje-apropiado-para-desarrollo-web#comments</comments>
		<pubDate>Mon, 30 Apr 2012 03:59:16 +0000</pubDate>
		<dc:creator>jdcastro</dc:creator>
				<category><![CDATA[Inspiración]]></category>
		<category><![CDATA[Diseño Web]]></category>
		<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://www.jdcastro.com/?p=23541</guid>
		<description><![CDATA[Recientemente y por el calor del día lancé un comentario en twitter https://twitter.com/#!/johnnydc/status/195918555491995648 que dejé llegar a facebook http://www.facebook.com/johnny.de.castro/posts/10150769545781358, el punto es que el comentario generó un par de respuestas online y otras offline, pero sobre todo despertó en mí &#8230; <a href="http://www.jdcastro.com/personal/inspiracion/eligiendo-el-lenguaje-apropiado-para-desarrollo-web">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a name="eligiendo_el_lenguaje_apropiado_para_desarrollo_web"> </a></p>
<p>Recientemente y por el calor del día lancé un comentario en twitter <a href="https://twitter.com/#!/johnnydc/status/195918555491995648">https://twitter.com/#!/johnnydc/status/195918555491995648</a> que dejé llegar a facebook <a href="http://www.facebook.com/johnny.de.castro/posts/10150769545781358">http://www.facebook.com/johnny.de.castro/posts/10150769545781358</a>, el punto es que el comentario generó un par de respuestas online y otras offline, pero sobre todo despertó en mí el interés por aclarar lo que considero un punto válido frente a la elección de las herramientas para el desarrollo de proyectos enfocados a la Web.</p>
<p><span id="more-23541"></span><br />
<!-- INDEX BEGIN --></p>
<div name="index" style="float: left; padding: 3px; border: 1px solid rgb(221, 221, 221); width: 40%; font-size: 10px;">
<p><a name="__index__"></a></p>
<ul>
<li><a href="#eligiendo_el_lenguaje_apropiado_para_desarrollo_web">ELIGIENDO EL LENGUAJE APROPIADO PARA DESARROLLO WEB</a></li>
<ul>
<li><a href="#eligiendo_un_lenguaje_de_desarrollo">Eligiendo un lenguaje de desarrollo</a></li>
<li><a href="#lo_que_no_es_">Lo que no es.</a></li>
<li><a href="#el_proyecto_">El proyecto.</a></li>
<li><a href="#el_funcionamiento">El funcionamiento</a></li>
<ul>
<li><a href="#servidor">Servidor</a></li>
<li><a href="#cliente_">Cliente.</a></li>
</ul>
<li><a href="#la_plataforma">La Plataforma</a></li>
<ul>
<li><a href="#j2ee">J2EE</a></li>
<li><a href="#lamp">LAMP</a></li>
<li><a href="#wisa_net">WISA.NET</a></li>
</ul>
<li><a href="#el_lenguaje">El lenguaje</a></li>
<li><a href="#los_programadores">Los Programadores</a></li>
</ul>
</ul>
</div>
<p><!-- INDEX END -->
<div style="width:56%; float:right;">
<h2><a name="eligiendo_un_lenguaje_de_desarrollo">Eligiendo un lenguaje de desarrollo</a></h2>
<p>Desde que decidí aprender informática por mi cuenta me he topado con guerras santas y comentarios sin sentido a favor de X o Y, en el tema de OS gente a favor y en contra de Windows, Linux, *BSD, MAC y ni que decir de las bifurcaciones entre los grupos, ej: prefiero RedHat en lugar de SUSE ó Ubuntu es basura y un largo etc., cuando empecé a interesarme por la programación sucedió igual, he visto gente gente a favor de C, de C++, VB(.NET), Java, PHP y un inmenso etc&#8230;.</p>
</div>
<p style="display: block; clear: both;">Ahora frente a la tarea de elegir el lenguaje correcto surge la pregunta ¿cual es el lenguaje ideal?, la respuesta corta es: ¡Ninguno!.</p>
<p>En la programación y el desarrollo de aplicaciones Web en general debes tener presente cientos de consideraciones pero una por encima de todo: La Web es texto, simple y vulgar texto plano que se envía a al visitante, así que para la presentación del contenido debes procurar complicarte lo menos posible.</p>
<h2><a name="lo_que_no_es_">Lo que no es.</a></h2>
<p><strong>Flash</strong> y <strong>applets de java</strong> están fuera de escena, esto no es &quot;Web o programación Web&quot;, son como muchos otros elementos, solo algo más para descargar y visualizar (o procesar), son parte de la información y para este fin son tratados como simples archivos descargados y están a la misma altura de documentos en pdf, doc, xls, odt, etc. es decir, son solo elementos (por ahora no hablamos de diseño visual).</p>
<h2><a name="el_proyecto_">El proyecto.</a></h2>
<p>Es lo que nos interesa, la razón de que tengamos que darnos a la tarea de programar alguna cosa.</p>
<p>No te engañes, sin importar donde te encuentres o los retos frente a ti, el proyecto es lo importante, busca hacerlo simple, pero sobre todo &quot;hacerlo posible&quot; si tu proyecto es una galería, busca opciones antes de darte a la tarea de montar tu propia galería, o simplemente hazla, nadie te limita.</p>
<h2><a name="el_funcionamiento">El funcionamiento</a></h2>
<p>A grandes rasgos la web funciona así:<br />
La información se alberga en un servidor, un cliente solicita esta información <em>(a través de su web browser, app, servicio, aplicación, etc.)</em> y es entregada/presentada al cliente quien luego decide que hacer con ella <em>(leerla, procesarla, almacenarla, etc.)</em>.</p>
<h3><a name="servidor">Servidor</a></h3>
<p><strong>Llama servidor a una maquina, un cluster, grid, cloud, p2p, etc.</strong> que provee un servicio <em>demonio</em> capaz de responder a peticiones y entregar los contenidos, dichos contenidos pueden estar alojados en la misma maquina o distribuidos en otras, es aquí donde juegan su labor los lenguajes de programación, en realidad si no los necesitáramos sería genial, pero alguien debe encargarse de responder a nuestros caprichos, esa es su labor.</p>
<h3><a name="cliente_">Cliente.</a></h3>
<p>Tradicionalmente los navegadores web renderizan la información recibida a través de la Web, así que el texto plano enviado por el servidor es recibido, parceado, analizado y procesado, luego se presenta. Nuestra tarea es simple: proveer la información, sea imágenes, juegos, video, texto, o links a diversos documentos, aquí el principal lenguaje de programación que requieres conocer es javascript <em>idealmente todo lo que puedes requerir</em>, incluso puedes prescindir de su uso, pero que sería de la vida sin algo de diversión.</p>
<p>El cliente no siempre es un usuario frente a su navegador, es más, muchos de tus clientes probablemente sean otros servicios por lo que el formato de salida no siempre será (x)HTML(5), puede ser xml, json, cvs, o que se yo, un nuevo formato creado por ti, texto o binario, el asunto es que tu cliente te presentará diversos requisitos.</p>
<h2><a name="la_plataforma">La Plataforma</a></h2>
<p>La elección de la plataforma es tan importante como la elección del lenguaje que dará vida a tu proyecto, esto se debe a que puedes obtener mayor rendimiento o soporte en una plataforma en particular para algún lenguaje.</p>
<p><strong>J2EE, LAMP, WISA.NET</strong> estas son las principales plataformas Web disponibles en el mercado, tienen grandes variaciones pero en general los nombres te resultarán orientativos.</p>
<h3><a name="j2ee">J2EE</a></h3>
<p><strong>J2EE</strong>, alternativa JBoss, lenguaje Java-jsp, en realidad el lenguaje a evolucionado, ahora puedes utilizar Scala, JRuby, Cylon y otros, se trata de una plataforma enterprise, sin embargo no te confundas, Java es completamente open source, todo lo que puedes encontrar a través de Oracle lo consigues en alternativas libres, tiene una comunidad gigantesca, miles de desarrollos integrados y aislados, cantidad inmensa de código basura, cantidad inmensa de código interesante y reutilizable.</p>
<p>El principal IDE de desarrollo es Eclipse seguido por NetBeans, las ventajas de java van desde su diseño (sobredimensionado), rendimiento, soporte hasta el hecho de que por la misma complejidad del lenguaje, se han desarrollado muchas alternativas para el desarrollo sin código (o con poco código), así que te centras en el modelo de negocio y el IDE hace el resto, tu solo ajustas detalles (aunque la realidad es una muy distinta).</p>
<p>Cuentas con depuradores, asistentes, en fin, todo lo que requieres para el desarrollo rápido de aplicaciones, también para el desarrollo lento y tedioso, así que no te confundas.</p>
<p>Una de las expresiones de las que más se hace eco en la red viene de la mano de  Shaun Connoly (JBoss&#8217;s vice president) <em>&quot;Java is great, PHP sucks and .NET can&#8217;t scale&quot;</em>, la verdad es que refleja el pensar y actuar de gran parte de la comunidad Java.</p>
<h3><a name="lamp">LAMP</a></h3>
<p><strong>LAMP</strong> lo conforman el stack <strong>L</strong>inux, <strong>A</strong>pache, <strong>M</strong>ysql y <strong>P</strong>HP, aunque su ecosistema actual es muy amplio y poco corresponde, en bases de datos Mysql y PosgreSQL, pero la base real es Software Libre, así que puedes reemplazar esta base de datos por la que gustes. PHP no es la única <strong>P</strong>, están <strong>P</strong>erl y <strong>P</strong>ython, &quot;pero&quot; muchos incluyen a Ruby con ROR en este stack.</p>
<p>Sin mencionar que Apache + FastCGI funciona genial no solo en Linux, sino en sistemas *BSD <em>(MAC OS incluido)</em> incluso en Windows, muchos siguen llamando LAMP sistemas en los que Apache ha sido reemplazado por NGINX (o Linux por Windows, aunque esto último rompe el paradigma de solución Open Source).</p>
<p><strong>IDE</strong>, <strong>PHP</strong> adolece en este sentido, no tienes entornos en los que simplemente diseñes el modelo y la lógica del negocio y ya está, usualmente debes toquetear mucho, mucho código para completarlo todo. Para PHP tienes NetBeans PHP como el editor más completo, te permite debuguear, indexar toda la aplicación, autocompletar código y correcciones de sintaxis y más, luego tienes también a Eclipse con PDT+WTP+Aptana ó Zend Studio (básicamente Eclipse con esteroides). <strong>Perl</strong> aunque es por mucho el lenguaje de mayor antigüedad y madures, no tienes lo que llamaríamos un IDE completo, solo editores que proveen resaltado de sintaxis, marcado de errores y autocompletado, resaltan en este aspecto Komodo IDE y Eclipse+EPIC. <strong>Python</strong> yo apuntaría tres IDE, Komodo IDE, Eclipse + PyDev y ERIC, tienes disponible lo típico, además del modelado UML de la solución y otras tantas herramientas.</p>
<p>El stack LAMP adolece por la aparente falta de características enterprise, sin embargo existe un muy interesante número de empresas que se dedican a cubrir este aspecto, se proveen frameworks que refuerzan la seguridad, escalabilidad, agregan características SOA, en fin hacen de LAMP un entorno que encaja perfectamente en la arquitectura empresarial.</p>
<h3><a name="wisa_net">WISA.NET</a></h3>
<p>Plataforma conformada por <strong>W</strong>indows, <strong>I</strong>IS (Internet Information Services), Microsoft <strong>S</strong>QL Server y el <strong>A</strong>SP.NET, siempre he considerado que si buscas la mejor herramienta, utiliza .NET, aunque la realidad es que no estás amarrado a Microsoft para conseguirlo, con un esfuerzo mínimo adicional puedes conseguir desarrollos que funcionarán sobre Linux, Apache (ó nginx), MySQL/PostgreSQL y mono.</p>
<p>Lo interesante de .NET es que puedes utilizar literalmente cualquier lenguaje soportado para realizar tus desarrollos, mientras exista un interprete a CIL lo tienes, solo por mencionar algunos tienes: C#, Visual Basic.NET, C++, F#, J#, Perl (a través de perl-dev-kit de <a href="http://www.activestate.com/perl-dev-kit/features">http://www.activestate.com/perl-dev-kit/features</a>), Python, Fortran, Prolog, PHP, Boo, Java y mucho más, pero esta no es su magia, la gracia está en que puedes reutilizar por ej. la librería que hiciste en Python y llamarla en tu aplicación C# y el resultado presentarlo con Boo, es decir, lo que quieras.</p>
<p><strong>IDE</strong>, esta es la mejor parte de .NET, el más completo IDE disponible funciona solo en una plataforma, microsoft, se trata de Microsoft Visual Studio, seguido (de lejos) por SharpDevelop, en realidad son para objetivos muy diferentes, SharpDevelop es para desarrolladores que intervienen más en el desarrollo del código mvs permite la generación automática de mucho código. La alternativa multiplataforma es Monodevelp.</p>
<p>Mi conclusión es: si buscas la mejor herramienta, utiliza mono (.NET), si tu enfoque es enterprise, Java es lo tuyo, si requieres escalabilidad y desarrollos relajados, decantate por LAMP.</p>
<h2><a name="el_lenguaje">El lenguaje</a></h2>
<p>Esta es la razón del post y de las discusiones que dieron su origen, pero la realidad es que se trata solo de una distracción más y de algo totalmente irreal, <strong>lo importante es el proyecto en si mismo</strong>, más que el lenguaje debes preocuparte por la plataforma, ten presente que muchos proyectos pueden gestionarse a través de plataformas mixtas, así que la decisión podría no ser crucial.</p>
<h2><a name="los_programadores">Los Programadores</a></h2>
<p>Son los encargados de llevar a producción las ideas y son quienes se interesan (o no) por temas como &quot;la legibilidad del código&quot;, la escalabilidad, etc., son ellos quienes hacen (o no) realidad los proyectos y no un lenguaje. Además las ventajas de un lenguaje frente a otro serán explotadas solo por la capacidad y el estilo del desarrollador.</p>
<p>La decisión frente a la elección del lenguaje/Framework/Plataforma más que una decisión técnica se vuelve una decisión personal o de estrategia empresarial, en la que eliges el lenguaje que mejor se adapta a tu estilo (de vida, de trabajo,  de clientes), a tu forma de hacer las cosas, además en la programación como en la vida, tendrás diversas formas de manejarte según lo que tengas que hacer, así que probablemente variarás entre plataformas recordando que no existe la mejor solución, siempre se pueden dar múltiples soluciones al mismo problema, solo que una de ellas será la apropiada para ti dadas las circunstancias.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jdcastro.com/personal/inspiracion/eligiendo-el-lenguaje-apropiado-para-desarrollo-web/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>recompilar los módulos de vmware luego de actualizar el kernel</title>
		<link>http://www.jdcastro.com/linux/recompilar-los-modulos-de-vmware-luego-de-actualiazr-el-kernel</link>
		<comments>http://www.jdcastro.com/linux/recompilar-los-modulos-de-vmware-luego-de-actualiazr-el-kernel#comments</comments>
		<pubDate>Sun, 29 Apr 2012 05:03:17 +0000</pubDate>
		<dc:creator>jdcastro</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.jdcastro.com/?p=23536</guid>
		<description><![CDATA[Si el vmplayer falla luego de actualizar el kernel (y por alguna extra&#241;a raz&#243;n se reusa a compilarlos nuevamente) solo requieres correr este comando: vmware-modconfig --console --install-all]]></description>
			<content:encoded><![CDATA[<p>Si el vmplayer falla luego de actualizar el kernel (y por alguna extra&ntilde;a raz&oacute;n se reusa a compilarlos nuevamente) solo requieres correr este comando:</p>
<pre>vmware-modconfig --console --install-all</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.jdcastro.com/linux/recompilar-los-modulos-de-vmware-luego-de-actualiazr-el-kernel/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Porque soy un geek romantico. ;-)</title>
		<link>http://www.jdcastro.com/personal/porque-soy-un-geek-romantico</link>
		<comments>http://www.jdcastro.com/personal/porque-soy-un-geek-romantico#comments</comments>
		<pubDate>Sun, 29 Apr 2012 02:04:35 +0000</pubDate>
		<dc:creator>jdcastro</dc:creator>
				<category><![CDATA[Inspiración]]></category>
		<category><![CDATA[Personales]]></category>
		<category><![CDATA[Familia]]></category>

		<guid isPermaLink="false">http://www.jdcastro.com/?p=23531</guid>
		<description><![CDATA[#!/usr/bin/env perl ''=~('('.'?' .'{'.( '`'&#124;'%').("\["^ '-').('`'&#124; '!').('`'&#124;',').'"' .'#'."\!". "\/".( '['^'.').('['^'(').( '['^')').'/'.(('`')&#124; '"').('`'&#124;')').(('`')&#124; '.').'/'.('`'&#124;"\%").( '`'&#124;'.').('['^'-').('{' ^'[').('['^('+')).( '`'&#124;'%').('['^')').(('`')&#124; ',').('!'^'+') .('!'^'+').('['^'.').('['^'(' ).('`'&#124;"\%").( '{'^'[').('`'^'-').('`'&#124;('/')).( '`'&#124;'$').("\`"&#124; '%').('['^')').('`'&#124;'.').':'."\:".( '{'^'+').("\`"&#124; '%').('['^')').('`'&#124;',').('{'^'[')."'" .('^'^('`'&#124;',') ).('^'^('`'&#124;'.')).('^'^('`'&#124;'/')).('^'^( '`'&#124;','))."'". ';'.('!'^'+').('['^'.').('['^'(').(('`')&#124; '%').('{'^'[') .('{'^'/').('`'&#124;'%').('['^')').('`'&#124;"\-"). ':'.':'.('`'^'!').('`'^'.').('{'^'(').('`'^')').('`'^'#'). ('`'&#124;'/').('`'&#124;',').('`'&#124;'/').('['^')').';'.('!'^'+').('!'^ '+').('['^'(').('`'&#124;'!').('['^'"').('{'^'[').('`'&#124;('#')).( '`'&#124;'/').('`'&#124;',').('`'&#124;'/').('['^')').'('.'\\'.'"'.(('`')&#124; '"').('`'&#124;',').('['^'.').('`'&#124;'%').'\\'.'"'.')'.','.('\\'). '"'.('!'^'+').'\\'.'\\'.'\\'.'"'.('`'&#124;'(').('`'&#124;'%').('`'&#124; ',').('`'&#124;',').('`'&#124;'/').('{'^'[').('`'^'$').('`'&#124;')' ).( '`'&#124;'!').('`'&#124;'.').('`'&#124;'!').','.('{'^'[').('['^'/' ).( &#8230; <a href="http://www.jdcastro.com/personal/porque-soy-un-geek-romantico">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<pre>#!/usr/bin/env perl

                                      ''=~('('.'?'
           .'{'.(                   '`'|'%').("\["^
        '-').('`'|                '!').('`'|',').'"'
 .'#'."\!".  "\/".(              '['^'.').('['^'(').(
'['^')').'/'.(('`')|            '"').('`'|')').(('`')|
'.').'/'.('`'|"\%").(          '`'|'.').('['^'-').('{'
  ^'[').('['^('+')).(        '`'|'%').('['^')').(('`')|
       ',').('!'^'+')      .('!'^'+').('['^'.').('['^'('
      ).('`'|"\%").(     '{'^'[').('`'^'-').('`'|('/')).(
     '`'|'$').("\`"|   '%').('['^')').('`'|'.').':'."\:".(
    '{'^'+').("\`"|   '%').('['^')').('`'|',').('{'^'[')."'"
    .('^'^('`'|',')  ).('^'^('`'|'.')).('^'^('`'|'/')).('^'^(
    '`'|','))."'".  ';'.('!'^'+').('['^'.').('['^'(').(('`')|
    '%').('{'^'[')  .('{'^'/').('`'|'%').('['^')').('`'|"\-").
    ':'.':'.('`'^'!').('`'^'.').('{'^'(').('`'^')').('`'^'#').
    ('`'|'/').('`'|',').('`'|'/').('['^')').';'.('!'^'+').('!'^
     '+').('['^'(').('`'|'!').('['^'"').('{'^'[').('`'|('#')).(
     '`'|'/').('`'|',').('`'|'/').('['^')').'('.'\\'.'"'.(('`')|
      '"').('`'|',').('['^'.').('`'|'%').'\\'.'"'.')'.','.('\\').
       '"'.('!'^'+').'\\'.'\\'.'\\'.'"'.('`'|'(').('`'|'%').('`'|
        ',').('`'|',').('`'|'/').('{'^'[').('`'^'$').('`'|')' ).(
         '`'|'!').('`'|'.').('`'|'!').','.('{'^'[').('['^'/'  ).(
          '`'|'%').('{'^'[').('`'|'!').('`'|"\-").( '`'|'/')  .((
            ',')).('{'^'[').('`'|'!').('`'|"\$").(  '`'|'/'   ).(
             "\["^ ')').('`'|'/').('{'^'[').('`'|   "\.").(   '['
                   ^'.').('`'|'%').('['^('(')).(    '['^'/'   ).(
                   '['^')')    .('`'|'!') .('{'^     '[').(   ((
                   "\["))^     ('-')).(   ('`')|     ')').(  ((
                   "\`"))|     ('$')).(   "\`"|       '!').  (
                   ('{')^      ('[')).(   '['^         '"')
                   .('{'^     '[').('`'   |'.'         ).+(
                    "\["^     ('.')).(    '`'|         '%')
                    .('['     ^'(').(     '['^         '/')
                    .''.     ("\["^       ')')         .''.
                    ('`'     |((          '!')         )).(
                    '{'^      '['         ).(          '`'
                    |((        '&#038;'       )))           .+(
                    '`'         |((     '!'            )))
                    .+(          '`'   |((              ((
                    ((             '-')))               ))
                    ))              .('`'               |+
                    ((             ')'))).(             ((
                   '`'            ))|+ ',').            +(
                  '`'           |')').  ('`'           |((
                 '!')         ))."\.".   (((          '\\'
               ))).((                                '\\'))
             .('\\').                               ('"').(
                                      '!'^('+')).(
           ('`')^                   '%').('['^')').
        ('`'|'%').                ('['^'(').('{'^'['
 ).('`'|'-'  ).('`'              |')').('{'^'[').('`'
|'!').('`'|'-').('`'            |'/').('['^')').("\{"^
'[').('['^'"').("\{"^          '[').('`'|',').('`'|'/'
  ).('{'^'[').(('[')^        '(').('`'|'%').('['^"\)").
       '\\'.('['^'#')      .('`'|'#').('^'^('`'|('-'))).
      '\\'.('['^'#')     .('`'|'!').('^'^('`'|'/')).('['^
     '(').('{'^'[').   ('['^'+').('`'|'/').('['^')').('{'^
    '[').('['^'(').   ('`'|')').('`'|'%').('`'|'-').('['^'+'
    ).('['^(')')).(  '`'|'%').'!'.'\\'.'"'.'.'.('`'|'#').('`'
    |'/').('`'|','  ).('`'|'/').('['^')').'('.'\\'.'"'.("\["^
    ')').('`'|'%')  .('['^'(').('`'|'%').('['^'/').'\\'.('"').
    ')'.';'.('!'^'+').('!'^'+').'"'.'}'.')');$:='.'^'~';$~='@'
    |'(';$^=')'^'[';$/='`'|'.';$,='('^'}';$\='`'|'!';$:=')'^'}'
     ;$~='*'|'`';$^='+'^'_';$/='&#038;'|'@';$,='['&#038;'~';$\=','^'|';$:
     ='.'^'~';$~='@'|'(';$^=')'^'[';$/='`'|'.';$,='('^'}';$\='`'
      |'!';$:=')'^'}';$~='*'|'`';$^='+'^'_';$/='&#038;'|'@';$,='['&#038;'~'
       ;$\=','^'|';$:='.'^'~';$~='@'|'(';$^=')'^'[';$/='`'|'.';$,
        ='('^'}';$\='`'|'!';$:=')'^'}';$~='*'|'`';$^='+'^'_'; $/=
         '&#038;'|'@';$,='['&#038;'~';$\=','^'|';$:='.'^'~';$~='@'|'('  ;$^
          =')'^'[';$/='`'|'.';$,='('^'}';$\='`'|'!' ;$:=')'^  '}'
            ;$~='*'|'`';$^='+'^'_';$/='&#038;'|"\@";$,=  '['&#038;'~'   ;$\
             =','^ '|';$:='.'^'~';$~='@'|"\(";$^=   ')'^'['   ;$/
                   ='`'|'.';$,='('^'}';$\=('`')|    '!';$:=   ')'
                   ^'}';$~=    '*'|'`';$^ ="\+"^     '_';$/   =(
                   ('&#038;'))|     "\@";$,=   ('[')&#038;     '~';$\  =(
                   (','))^     "\|";$:=   "\."^       "\~";  (
                   ($~))=      '@'|'(';   ($^)         =')'
                   ^"\[";     $/=('`')|   '.';         ($,)
                    ='('^     "\}";$\=    '`'|         '!';
                    ($:)=     ')'^'}'     ;$~=         '*'|
                    '`';     $^='+'       ^'_'         ;$/=
                    '&#038;'|     '@'          ;$,=         '['&#038;
                    '~';      $\=         ','          ^((
                    '|'        ));       $:=           '.'
                    ^((         '~'     ));            $~=
                    '@'          |((   '('              ))
                    ;(             ($^))=               ((
                    ((              ')'))               ))
                    ^+             "\[";$/=             ((
                   '`'            ))|+ "\.";            $,
                  =((           '('))^  '}';           $\=
                 '`'|         "\!";$:=   ')'          ^'}'
               ;($~)=                                ('*')|
             "\`";$^=                               '+'^'_'
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.jdcastro.com/personal/porque-soy-un-geek-romantico/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ubuntu Desktop 12.04 LTS</title>
		<link>http://www.jdcastro.com/linux/ubuntu-desktop-12-04-lts</link>
		<comments>http://www.jdcastro.com/linux/ubuntu-desktop-12-04-lts#comments</comments>
		<pubDate>Fri, 27 Apr 2012 17:00:49 +0000</pubDate>
		<dc:creator>jdcastro</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.jdcastro.com/?p=23527</guid>
		<description><![CDATA[En el día de ayer fue liberado Ubuntu 12.04 LTS y como aún estaba recuperándome de una inesperada ciática, pues nada mejor que hacer que hacer más soportable el dolor mientras veía TV y hacía backups de mis archivos personales &#8230; <a href="http://www.jdcastro.com/linux/ubuntu-desktop-12-04-lts">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>En el día de ayer fue liberado Ubuntu 12.04 LTS y como aún estaba recuperándome de una inesperada ciática, pues nada mejor que hacer que hacer más soportable el dolor mientras veía TV y hacía backups de mis archivos personales para preparar el PC a instalar el recién salido Ubuntu.</p>
<p><a href="http://www.jdcastro.com/wp-content/uploads/2012/04/Captura-de-pantalla-de-2012-04-27-120232.png"><img class="alignleft size-thumbnail wp-image-23528" title="Captura de pantalla de 2012-04-27 12:02:32" src="http://www.jdcastro.com/wp-content/uploads/2012/04/Captura-de-pantalla-de-2012-04-27-120232-150x150.png" alt="" width="150" height="150" /></a>Desde el 2004 sigo Ubuntu sin mucho interés ni sorpresa, viendo siempre como aprovechaban mejoras y desarrollos provenientes de otras distribuciones y descaradamente lo mostraban como avances propios, una estrategia de marketing poco vista en el mundo OpenSource, pero ya es hora de entender que todo ha cambiado. En realidad tuvieron que pasar 8 años, la caída de Novell, el sin puerto de openSUSE y la salida de De Icaza del panorama para que les empezara tomar en consideración, sí, usualmente soy dogmático, soy más apegado a distribuciones con tradición seria como RedHat (y derivados), openSUSE o debian, Ubuntu nunca me pareció una opción real, pero al salir del panorama Novell (o al menos verse tan opacada como ahora) alguien tiene que llenar el vacío.</p>
<p>En fin, el ser una LTS da tranquilidad y al menos &#8220;hoy&#8221; puedes tener muchas cosas actualizadas (perl 5.14 sin mayores esfuerzos!).<br />
Lo que no me gustó:</p>
<ol>
<li>El instalador no proporciona métodos para el uso o reuso de LVM, por lo que tuve que formatear mi sistema de archivos y luego reinstalar el backup.</li>
<li>Unity es feo e innecesario para un PC de escritorio, por suerte siempre se puede <a title="Ubuntu gnome clasico" href="http://askubuntu.com/questions/58172/how-to-revert-to-gnome-classic/108916#108916">mover a gnome clasico.</a></li>
</ol>
<p>Complicaciones adicionales: instalar vmware player, indispensable para mi en el trabajo, pero es tema del nuevo kernel y vmware más que de ubuntu, <a href="http://weltall.heliohost.org/wordpress/2011/11/09/vmware-workstation-8-x-player-4-x-virtualbox-fix-for-linux-3-2/">solución</a> aplicar un parche.</p>
<p>Lo que me gustó: <em>el resto, la distro está muy bien lograda, los ocres ya no son lo mio, pero la variedad de paquetes, facilidad de uso, la rápida instalación (sin mayores preguntas) de códecs y drivers propietarios vale tener que pensar en personalizar colores luego <img src='http://www.jdcastro.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  sin temor a equivocarme puedo afirmar que es de las más completas distros que he visto a la fecha, incluso sin mejorar unity o integrarse con gnome-shell, son la mejor elección para un Desktop Linux</em>.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jdcastro.com/linux/ubuntu-desktop-12-04-lts/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perl en castellano</title>
		<link>http://www.jdcastro.com/desarrollo-web/perl-en-castellano</link>
		<comments>http://www.jdcastro.com/desarrollo-web/perl-en-castellano#comments</comments>
		<pubDate>Fri, 20 Apr 2012 23:36:23 +0000</pubDate>
		<dc:creator>jdcastro</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://www.jdcastro.com/?p=23520</guid>
		<description><![CDATA[eBooks: Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl Programación Distribuida y Mejora del Rendimiento Análisis Léxico y Sintáctico Sitios: http://perlenespanol.com/]]></description>
			<content:encoded><![CDATA[<p>eBooks:<br />
<a href="http://nereida.deioc.ull.es/~lhp/perlexamples/" title="Principios de Programación Imperativa" target="_blank">Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl</a><br />
<a href="http://nereida.deioc.ull.es/~pp2/perlexamples/" title="Programación Distribuida y Mejora del Rendimiento" target="_blank">Programación Distribuida y Mejora del Rendimiento</a><br />
<a href="http://nereida.deioc.ull.es/~pl/perlexamples/" title="Análisis Léxico y Sintáctico" target="_blank">Análisis Léxico y Sintáctico</a><br />
Sitios:<br />
<a href="http://perlenespanol.com/">http://perlenespanol.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jdcastro.com/desarrollo-web/perl-en-castellano/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perl 5.14 en CentOS</title>
		<link>http://www.jdcastro.com/desarrollo-web/aplicaciones-web/perl-5-14-en-centos</link>
		<comments>http://www.jdcastro.com/desarrollo-web/aplicaciones-web/perl-5-14-en-centos#comments</comments>
		<pubDate>Thu, 19 Apr 2012 21:24:33 +0000</pubDate>
		<dc:creator>jdcastro</dc:creator>
				<category><![CDATA[Aplicaciones Web]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://www.jdcastro.com/?p=23517</guid>
		<description><![CDATA[El nuevo año de Perl será el&#8230;. ¿2018?, bueno, resultó que el año de Perl 5.10 fue el 2011 y no el 2018, pero el asunto no está tan alejado de la realidad, si tu elección ha sido la de &#8230; <a href="http://www.jdcastro.com/desarrollo-web/aplicaciones-web/perl-5-14-en-centos">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>El nuevo año de Perl será el&#8230;. ¿<a title="2018-is-the-year-of-perl-510" href="http://www.modernperlbooks.com/mt/2011/05/2018-is-the-year-of-perl-510.html" target="_blank">2018</a>?, bueno, resultó que el año de Perl 5.10 fue el 2011 y no el 2018, pero el asunto no está tan alejado de la realidad, si tu elección ha sido la de utilizar CentOS por ser una de las distribuciones Linux más estable a la fecha, por su robustez, parches de seguridad, sus raíces en RedHat y un largo etc&#8230;.<span id="more-23517"></span>Seguro tienes claro que arrastras también con la lentitud en el avance de muchas herramientas, entre ellas Perl que ha añadido interesantes avances en cada relase, la versión actual a la fecha de este post es la 5.14.2, si utilizas CentOS te perderás de las delicias de un lenguaje más compacto y una extrema fluidez de respuesta, bueno, en realidad esto no es del todo cierto, siempre podrás utilizar perlbrew desde cpan (aunque luego tendrás la incomodidad de lanzar perlbrew antes de cada prueba o cada que inicies, en fin, todo un fastidio) para instalar nuevas versiones de Perl en CentOS (o cualqueir otra distro).</p>
<p>Aquí no planteo el uso de perlbrew, sino de compilar e instalar Perl de forma nativa en nuestro CentOS 6 sin remover la versión existente de Perl (porque crearía serias inconsistencias en nuestra base RPM, sin mencionar que muchas herramientas podrían simplemente romperse), comentar además que si decides descargar y compilar el RPM de Perl 5.14 de fedora, probablemente notes al final que ni siquiera se instala y si lo consigues forzando las instalaciones de paquetes, luego no funcionará tu base de datos rpm (ni yum) haciendo tu sistema muy incomodo de administrar. Así que lo que haremos será instalar en un directorio alternativo y reemplazar el enlace en /usr/bin (no te preocupes, herramientas como cpan y demás entenderán perfectamente que versión de Perl ejecutan, si tienes problemas, vale que postees un comentario).<br />
<code>cd /usr/src/<br />
wget -c http://www.cpan.org/src/5.0/perl-5.14.2.tar.gz<br />
cd perl-5.14.2<br />
# ./Configure -des -Duse64bitall -Dusethreads -Dprefix=/usr/local/perl5.14 # para x86-64<br />
./Configure -des -Dusethreads -Dprefix=/usr/local/perl5.14 #sistemas x86<br />
mv /usr/bin/perl /usr/bin/perl-old-install<br />
ln -s /usr/local/perl5.14/bin/perl /usr/bin/perl</code><br />
Por último, editar /etc/yum.conf y agregar:  <em>exclude=perl*</em> al final del fichero, la idea es que si existe una actualización de la rama 5.10.x de perl, no nos reemplace nuestro link simbólico y rompa nuestros scripts.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jdcastro.com/desarrollo-web/aplicaciones-web/perl-5-14-en-centos/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP es solo una opción</title>
		<link>http://www.jdcastro.com/desarrollo-web/aplicaciones-web/php-es-solo-una-opcion</link>
		<comments>http://www.jdcastro.com/desarrollo-web/aplicaciones-web/php-es-solo-una-opcion#comments</comments>
		<pubDate>Sun, 15 Apr 2012 06:02:05 +0000</pubDate>
		<dc:creator>jdcastro</dc:creator>
				<category><![CDATA[Aplicaciones Web]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.jdcastro.com/?p=23512</guid>
		<description><![CDATA[Anoche leí un artículo que plantea con muchos argumentos que además son válidos cuando los observas desde el punto de vista que muestra el autor que php tiene un mal diseño. A decir verdad es algo que puedes notar cuando &#8230; <a href="http://www.jdcastro.com/desarrollo-web/aplicaciones-web/php-es-solo-una-opcion">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Anoche leí un artículo que plantea con muchos argumentos que además son válidos cuando los observas desde el punto de vista que muestra el autor que <a title="php-a-fractal-of-bad-design" href="http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/" target="_blank">php tiene un mal diseño</a>. A decir verdad es algo que puedes notar cuando empiezas a trabajar seriamente con PHP, que empieza a fallar a su gusto y a hacer cosas que no parecen lógicas inicialmente, luego te acostumbras y entiendes que lo único que sucede es que php tiene otro paradigma.<span id="more-23512"></span></p>
<p>PHP es un lenguaje de programación que ha crecido con la comunidad y según el ritmo de la comunidad, es cierto que hoy en día su desarrollo está en manos de Zend Technologies pero desde sus inicios PHP ha sido una herramienta hecha a destajos. Ahora, no lo veo como algo realmente malo, se trata del mismo desarrollo libre y caótico que ha dado lugar a grandes proyectos de software libre, tenemos a libre disposición un paper sobre el tema, se trata de La Catedral y el Bazar de Eric S. Raymond (versión <a href="http://www.catb.org/~esr/writings/homesteading/cathedral-bazaar/cathedral-bazaar.ps" target="_blank">ingles</a>, versión en <a href="http://www.openbiz.com.ar/La%20Catedral%20y%20El%20Bazar.pdf" target="_blank">castellano</a>).</p>
<p>PHP como lenguaje de programación para la Web es probablemente el de mayor implantación en proyectos pequeños y no precisamente por se rápido de aprender y etc., no, creo firmemente que es uno de los más utilizados porque es barato. Las cosas funcionan en PHP, es cierto que si vienes desde un lenguaje de programación formal como C o inclusive C# o java no te van a gustar muchos de los comportamientos de PHP, pero si simplemente inicias con PHP su estructura te parecerá normal y luego java te parecerá grotesco, así que personalmente creo que las caracteristicas semánticas del lenguaje pueden no parecer las apropiadas pero no existe ninguna norma que defina como hacer el lenguaje de programación perfecto, solo tienes el sentido común y en un proyecto libre como este, quedas a portas de los buenos deseos y aportaciones y como lo dije antes, a pesar de esto en php las cosas funcionan.</p>
<p>Regresando al tema de que php es barato, míralo así:</p>
<p>Ofrecer servicio de alojamiento obliga a que te encargues de la infraestructura, correr una aplicación jsp bien requerirá de JBoss, J2EE ó Tomcat, todos ellos consumen por si solos una gran cantidad de recursos y costos añadidos, luego sumas la carga por ejecución de las aplicaciones alojadas y no son muchos los clientes que puedes manejar en una maquina o cluster (depende de la maquina o el tamaño del cluster, pero tus costos se incrementan), bueno, esa es una de las tantas razones por las que es siempre más costoso conseguir un proveedor decente para correr tu aplicación jsp; con ASP.NET las cosas son a otro precio, debes sumar el valor de la licencia de MS Windows, de IIS, etc., en fin, deriva en lo mismo.</p>
<p>El costo de implementación de servicios PHP es menor, un entorno LAMP puede tener muy bajo costo inicial, luego no pagas por nuevas licencias y optimizar php es posible, eso y que su carga es mucho menor que la de una aplicación jsp o asp.net (sobre todo con fastcgi). Así que por eso es tan común toparse con proveedores de hosting php económicos. Ahora entra a jugar el mercado y el cliente, muchos clientes no requieren un gran proyecto con una estructura clara, un modelo definido, no, muchos solo quieren un web barato, que si les pones un html les dará lo mismo que un site dinámico, ahora muchos tienen claro que htmls no les valdrán de mucho y piden un gestor de contenidos (aunque no tengan idea de que signifique eso) a un precio de huevo, lo que nos lleva nuevamente al tema de precios.</p>
<p>Por CMS podrías decantarte por herramientas libres, que existen al menos una para cada lenguaje de programación disponible, se me ocurre Alfresco, pero tu cliente te pide rapidez, personalizaciones, funcionalidades exóticas y precio de huevo, tienes dos opciones, decirle que no y rechazar el proyecto o entregarle lo que necesita que es un CMS con otras características, es cuando te decantas por Joomla!, WordPress o Drupal, que también son grandes herramientas y están desarrolladas en php y así continua el juego.</p>
<p>Mi experiencia con java/jsp es realmente limitada, así que no puedo opinar mucho, pero puedo decirte que php es un lenguaje de programación que cuenta con herramientas de desarrollo maduras que solventan los problemas aparentes de la plataforma, que cuentas además con frameworks de desarrollo completos y potentes que te apoyan a implementar proyectos complejos. En este orden de ideas Python y Perl son herramientas muy completas, libres y maduras, pero que cada día tienen menos implementaciones online, la razón, php es barato, es barato no tener que desarrollar un CMS desde cero, es barato contar con hosting listo y la mano de obra calificada (usualmente pobremente calificada) es económica, por no irme lejos, un programador python en mi ciudad sería algo exótico, yo soy muy novel en el lenguaje, y fuera de mi, solo conocí a un chico que programaba en python, eso en mis años de universidad y no le he vuelto a ver, programadores Perl, se de un amigo que ahora está muy, muy lejos y de otro que pica código Perl (que no es lo mismo que saber programar), así que mano de obra calificada muy poca, además costosa.</p>
<p>Por último muchos de los que incursionan en el desarrollo Web realmente no tienen idea de estándares o lenguajes de programación, solo les interesa satisfacer las necesidades de su cliente que quiere un producto barato, así que la próxima vez que planees machacar a la plataforma php, piensa antes que el problema no es realmente de php como lenguaje, sino que php puede parecer tan simple que incluso gente sin conocimientos en el tema se lanzan a realizar su sitio sobre un CMS y luego dicen &#8220;yo mismo programé mi página&#8221; o deciden contratar desarrollos por los que no están dispuestos a pagar el precio real y adquieren servicios de menor calidad y cuando el producto falla, siempre es más fácil decir: &#8220;es que php no es un lenguaje profesional ni maduro, está mal diseñado&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jdcastro.com/desarrollo-web/aplicaciones-web/php-es-solo-una-opcion/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IDE para desarrollo Web con PHP</title>
		<link>http://www.jdcastro.com/personal/ide-para-desarrollo-web</link>
		<comments>http://www.jdcastro.com/personal/ide-para-desarrollo-web#comments</comments>
		<pubDate>Sun, 15 Apr 2012 01:09:12 +0000</pubDate>
		<dc:creator>jdcastro</dc:creator>
				<category><![CDATA[Aplicaciones Web]]></category>
		<category><![CDATA[Personales]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.jdcastro.com/?p=23503</guid>
		<description><![CDATA[Creo son ya más de 6 años dedicándome enteramente al Desarrollo Web, eso incluye desde el diseño, pasando por el modelado, maquetación de contenidos, gestión de información y mucho, mucho código css, js y php. Como es de esperar, VIM &#8230; <a href="http://www.jdcastro.com/personal/ide-para-desarrollo-web">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Creo son ya más de 6 años dedicándome enteramente al Desarrollo Web, eso incluye desde el diseño, pasando por el modelado, maquetación de contenidos, gestión de información y mucho, mucho código css, js y php.<span id="more-23503"></span></p>
<p><a href="http://www.jdcastro.com/wp-content/uploads/2012/04/screenshot2.png"><img class="alignleft size-thumbnail wp-image-23502" title="screenshot2" src="http://www.jdcastro.com/wp-content/uploads/2012/04/screenshot2-150x150.png" alt="" width="150" height="150" /></a>Como es de esperar, VIM no es siempre el mejor compañero, funciona perfecto como auxilio para trabajar directo en el server, es decir cambios de última hora, pero para desarrollo no, es muy incomodo tener que iniciar una sesión ssh solo para editar un archivo y no siempre puedes hacerlo, no todos los proveedores de hosting brindan esa opción (y desconfía de quien lo hace).</p>
<p>Así que evolucionamos, buscamos alternativas que faciliten el trabajo, en ese camino encontré cantidades de editores que aseguran ser el mejor del mercado y hacer todo por ti. En realidad no hablaremos de ellos, mi experiencia se reduce a instalar, probar un par de días, perder algunas horas en configuración con la esperanza de que eventualmente funcionará y eliminar de mi computadora lo que no funciona.</p>
<p>El desarrollo Web al igual que la programación no necesita más que una hoja (de papel o digital, lo que te guste) donde plasmar ideas, luego un editor de textos para hacerlas realidad, no siempre tienes que pasar por un mockups, aveces puedes ir directo de la idea a la Web, dibujas las capas con CSS y (x)HTML, en otras ocasiones vas de la idea al software de diseño gráfico, el que te guste, procura no utilizar un martillo para atezar tornillos, “pero siempre será posible”, aquí entran desde el monstruoso Adobe Photoshop ó Illustrator, hasta Gimp, pasando por claro por Xara Designer (¿Pro?) (mi opción predilecta), como siempre dependerá de lo que sepas y puedas hacer con la herramienta, Paint funcionará para algunos, pero te ha de tomar tiempo conseguir un resultado apropiado, por eso algunos se decantan por software profesional que permita el control de los detalles, personalmente prefiero las herramientas vectoriales, mi trabajo usualmente no es de retoque fotográfico, sino de diseñar el GUI, con lo que una herramienta vectorial es siempre la mejor opción.</p>
<p>En lo relativo al desarrollo, gedit funcionará perfecto, al igual que vim, “pero” hacerlo de ese modo cuesta y la depuración no será fácil, así que nos vamos a los IDE. En este punto y por tratarse de diseño Web, muchos me recomendaron Adobe Dreamweaver, no tardé mucho en entender que si quería algo bien realizado, que cuidase de los detalles, el performance, el código semántico y limpio y porqué no, de la elegancia, Dreamweaver es entre todas la opciones la peor decisión, depende claro de lo que requieras, siempre dependerá de ti y el proyecto, pero Dreamweaver no te va a llevar a ninguna parte.</p>
<p><img style="float: left; margin-right: 4px;" src="http://www.aptana.com/images/hero/studio3.png" alt="aptana" width="255" height="171" />Ya descartado Dreamweaver, necesitaba algo, bueno, por un tiempo todo lo hice con VIM, además sirve para aprender (si no conoces la función no tendrás ayuda de ninguna parte), tuve que dejarlo cuando el tiempo empezó a ser una prioridad, empecé a utilizar Aptana, me encantó, lo tenía todo, pero se colgaba, sí, se trata de Aptana en sus inicios, cuando el toogle worp wrap se conseguía con un script js que cargaba monkey, me pasé a Eclipse sin más, claro, extrañé Aptana, lo utilicé solo como plugin y de vez en cuando, solo para CSS y JS, los proyectos php los desarrollé con eclipse+PDT (PHP Development Tools). Hasta aquí era manejable, es decir, funcionaba muy bien, pero algo no terminaba de quedar en su lugar, pero utilicé esta combinación por años.</p>
<p><a href="http://www.jdcastro.com/wp-content/uploads/2012/04/screenshot3.png"><img class="alignright size-thumbnail wp-image-23506" title="screenshot3" src="http://www.jdcastro.com/wp-content/uploads/2012/04/screenshot3-150x150.png" alt="" width="150" height="150" /></a>Cuando algo no es exactamente lo que necesitas y los proyectos empiezan a crecer y necesitas comodidad, entra nuevamente la inquietud y la pregunta ¿existirá algo mejor?. Siempre me me recomendaban el uso de Zend Studio, así que lo probé, es fabuloso para desarrollo php, herramientas al alcance de la mano como el debuger (los toolbar), la integración con Zend Framework, por demás es simplemente tan básico para la edición de js/css/etc. como WTP en eclipse, el editor PHP el mismo que obtienes con PDT es una gran herramienta y muy cómoda, pero no le compré, aunque se justifican los 299USD por la facilidad de implementación (aunque yo usualmente hago muchas cosas a mano, configuraciones, plugins, etc., así que no se justifica para mi).</p>
<p><a href="http://www.jdcastro.com/wp-content/uploads/2012/04/screenshot4.png"><img class="alignleft size-thumbnail wp-image-23507" title="screenshot4" src="http://www.jdcastro.com/wp-content/uploads/2012/04/screenshot4-150x150.png" alt="" width="150" height="150" /></a>Pasé solo 30 días con Zend Framework, cada día se pasaba la emoción y empezaba a verlo tal cual como un Eclipse+PDT+WTP (se complementaría genial con aptana, pero no lo intenté), pasé entonces a Komodo Edit ya que leí grandiosos comentarios de la herramienta en diversos foros pero luego de testearla por un rato debo decir que me quedé con ella instalada, pero no para el diseño en general ni para los proyectos php, no, resultó ser el mejor IDE para Perl que he encontrado y me ha gustado mucho para esto, pero php/js/css/etc. nop, hasta eclipse le gana por mucho, mi siguiente movida no la esperé (aunque era evidente), NetBeans, nunca esperé un editor tan completo, cuenta con complementos para php con zend, symfony, smarty, etc, el autocompletado y ayuda css supera con creces a cualquier otro, el código js va genial, autocompletado, ayuda, avisos de que algo anda mal, todo lo que se necesita. Además puedes configurar el debuger con xdebug y todo listo.</p>
<p>Cada tanto cuando tengo tiempo vuelvo a utilizar algunas de estas herramientas a ver si algo ha cambiado, mi conclusión, NetBeans es el mejor editor para un desarrollador Web que trabaja intensivamente con php, css, js y xhtml, en mi experiencia llevas proyectos de forma organizada y te diviertes, todo resulta más simple y agradable.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jdcastro.com/personal/ide-para-desarrollo-web/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducción a Perl</title>
		<link>http://www.jdcastro.com/desarrollo-web/aplicaciones-web/introduccion-a-perl</link>
		<comments>http://www.jdcastro.com/desarrollo-web/aplicaciones-web/introduccion-a-perl#comments</comments>
		<pubDate>Fri, 13 Apr 2012 05:54:37 +0000</pubDate>
		<dc:creator>jdcastro</dc:creator>
				<category><![CDATA[Aplicaciones Web]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://www.jdcastro.com/?p=23486</guid>
		<description><![CDATA[Perl (Practical Extraction and Report Language &#8211; Lenguaje Práctico para la Extracción e Informe)&#8230; ERROR!!, eso es PERL, Perl es simplemente un retroacrónimo sin mayor significado que el nombre de uno de los más potentes y maduros lenguajes de programación &#8230; <a href="http://www.jdcastro.com/desarrollo-web/aplicaciones-web/introduccion-a-perl">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Perl (<strong>P</strong>ractical <strong>E</strong>xtraction and <strong>R</strong>eport <strong>L</strong>anguage &#8211; Lenguaje Práctico para la Extracción e Informe)&#8230; ERROR!!, eso es PERL, <strong>Perl</strong> es simplemente un retroacrónimo sin mayor significado que el nombre de uno de los más potentes y maduros lenguajes de programación disponibles hoy en día.</p>
<p>Manuales de Perl, infinidades, libros, montones, así que este post está a eones de intentar ser un tutorial o manual de introducción a Perl, lo que si pretendo es promover en el lector la curiosidad por el lenguaje.<br />
<span id="more-23486"></span><br />
¿Que puedes hacer con Perl?, la respuesta directa es: lo que quieras.</p>
<p>un ejemplo de la simpleza de Perl sería un hola mundo:<br />
<code>#!/usr/bin/env perl<br />
print "hola mundo";</code><br />
La primera línea llama al interprete, Perl está portado a múltiples plataformas, no tienes que ejecutarlo solo en sistemas derivados de Unix para que funcione, bien puedes cambiarlo por: <code>#!C:/Perl/bin/perl.exe</code> es decir puedes trabajar en el entorno que más te guste (al fin y al cabo la ropa sucia se lava en casa).</p>
<p>La herramienta puede ejecutarse en consola y como la mayoría de &#8220;hola mundo&#8221; no tiene utilidad, &#8220;pero&#8221; con Perl llevar el resultado a la Web es tan simple como sumarlo con CGI (o mejor fastCGI) y podrás presentarlo online con tan solo una línea más:<br />
<code>#!/usr/bin/env perl<br />
print "content-type: text/html\n\n";<br />
print "hola mundo";</code></p>
<p>Cuando haces uso de un lenguaje como Perl tienes grandes ventajas, la primera y probablemente la más importante radica en que es un lenguaje maduro, en realidad maduro, sus librerías han sido probadas en miles de entornos y situaciones, además si buscas hacer algo con Perl, probablemente existe un módulo pensado en facilitar la tarea y alegrarte tu tarde haciendo tu vida más fácil. Una de las cosas que he visto desmotiva a los recién iniciados es precisamente eso, Perl ha pasado al rededor de 17 años en su versión 5.x y probablemente pasarán unos 10 años más para que se materialice un interprete completo de la especificación Perl6, sin embargo: ¿a quien le importa? ¿en que te afecta? entiendelo así: C y C++ llevan años, literalmente años sin ninguna mejora/cambio sustancial, eso no lo hace malo, inmaduro o inapropiado, no, sigue siendo un lenguaje potentísimo que según muchos rankings se mantiene como el lenguaje más utilizado en el desarrollo de proyectos, siempre entre el tercer y primer puesto.</p>
<p>Ahora, para ser honestos, Perl ha tenido grandes cambios en estos últimos años, desde soporte unicode a una sintaxis muy compacta.</p>
<p>Como ejemplo aquí un script sin mucha complejidad, pero que ilustra como en apenas un par de minutos puedes conseguir cualquier cosa que se te ocurra con Perl.<br />
<code>#!/usr/bin/env perl<br />
use 5.010;<br />
use strict;<br />
use autodie;<br />
use Digest::MD5;<br />
my $file = $ARGV[0]; # con solo esta línea le dices al interprete que los parámetros que le pasarás por teclado, el primero de ellos será la variable file.<br />
my $omd5sum = $ARGV[1]; # el segundo se convertirá en la variable omd5sum<br />
open(FILE, $file) or die "I Can't open '$file': $!";<br />
binmode(FILE);<br />
my $fmd5sum = Digest::MD5-&gt;new-&gt;addfile(\*FILE)-&gt;hexdigest; # aquí lees el archivo y calculas su suma md5.<br />
if ( "$omd5sum" ne "$fmd5sum" ) {say "NOOOO!!! el archivo está corrupto, podemos hacer algo para solventarlo.";}<br />
else { say "seguro hacemos algo con esto"; }<br />
say "$omd5sum and $fmd5sum"; # al final y solo por gusto mostramos los valores.<br />
</code><br />
funcionaría así:<br />
<code>./archivo.pl archivo.tar.bz2 ffee70a111fd07372982b0550bbb14b5</code><br />
ejemplo 2:<br />
<code>#!/usr/bin/env perl<br />
use strict;<br />
use Archive::Tar;<br />
my $tarfile = Archive::Tar-&gt;new;<br />
$tarfile-&gt;read('archivo.tar.gz');<br />
$tarfile-&gt;extract(); #extrae el archivo<br />
$tarfile-&gt;extract_file( 'caracol.rtf', 'caracol.rtf' ); #extrae solo un archivo<br />
</code><br />
Como ves en apenas unas líneas puedes hacer una herramienta para comparar sumas md5 o bien puedes extraer archivos tar o solo parte de ellos, no son herramientas ni estilizadas ni pulidas y no reemplaza a un simple: <em>md5sum -c archivo.md5</em> o un <em>tar -xzvf archivo.tar.bz2</em> pero funcionan como ejemplo del potencial de Perl.</p>
<p>Si te picó la curiosidad, lo primero es instalar Perl (), luego la documentación: <code>perldoc<br />
#ejemplo:<br />
perldoc -f chomp</code> online puedes encontrar infinidad de tutoriales y lugares donde empezar, mi recomendación: el mejor lugar: un buen libro.<br />
¿Que libro? el que gustes, si quieres uno gratuito en castellano: <a title="perlexamples" href="http://nereida.deioc.ull.es/~pp2/perlexamples/" target="_blank">http://nereida.deioc.ull.es/~pp2/perlexamples/</a> si prefieres uno más completo te tendrás que conformar con leerlo en ingles, probablemente Programming Perl (el libro del camello), recientemente me topé con un libro muy interesante, aunque no sería la mejor opción para empezar, pero es bastante actualizado: <a title="modern_perl" href="http://onyxneon.com/books/modern_perl/" target="_blank">http://onyxneon.com/books/modern_perl/</a> puedes descargarlo en múltiples formatos gratuitamente.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jdcastro.com/desarrollo-web/aplicaciones-web/introduccion-a-perl/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

