<?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>developer.cl</title>
	<atom:link href="http://blog.developer.cl/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.developer.cl</link>
	<description>desarrollo, gestión y otras cosas acerca de proyectos de software</description>
	<lastBuildDate>Tue, 23 Jun 2009 02:36:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Extendiendo manage.py para sincornizar con Flex</title>
		<link>http://blog.developer.cl/?p=99</link>
		<comments>http://blog.developer.cl/?p=99#comments</comments>
		<pubDate>Tue, 23 Jun 2009 02:36:48 +0000</pubDate>
		<dc:creator>lcruz</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Cairngorm]]></category>
		<category><![CDATA[DJango]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.developer.cl/?p=99</guid>
		<description><![CDATA[Estamos haciendo un sistema que tendrá como interfaces algunas pantallas en Flex por lo que ha surgido la necesidad de publicar algunos servicios remotos utilizando PyAMF. En Flex utilizamos Cairngorm como MVC, este requiere la definición de un archivo de servicios Services.xml que estoy intendando generar utilizando Python y que mejor que hacerlo utilizando el [...]]]></description>
			<content:encoded><![CDATA[<p>Estamos haciendo un sistema que tendrá como interfaces algunas pantallas en Flex por lo que ha surgido la necesidad de publicar algunos servicios remotos utilizando PyAMF.   En Flex utilizamos Cairngorm como MVC, este requiere la definición de un archivo de servicios Services.xml que estoy intendando generar utilizando Python y que mejor que hacerlo utilizando el mismo estilo que utiliza DJango para la sincronización de la base de datos.   Por ello estoy intenando generar una opción nueva el comando manage.py de la aplicación DJango:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">manage.py syncflex</pre></div></div>

<p>Gracias a la flexibilidad de DJango esto es bastante fácil nada más debes crear una clase que debes llamar Command que extienda a la clase BaseCommand y ubicarla en paquete managment/commands bajo alguna de tus aplicaciones en mi caso yo estoy haciendo un pequeño ERP así que la ubique en la ruta flex/managment/commands:</p>
<p><img src="http://blog.developer.cl/wp-content/uploads/2009/06/tree.jpg" alt="Arbol de Proyectos" title="Arbol de Proyectos" width="315" height="291" class="alignnone size-full wp-image-103" /></p>
<p>En mi caso dado que mi comando no tiene argumentos extendere la clase <em>NoArgsCommand </em>:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">class</span> Command<span style="color: black;">&#40;</span>NoArgsCommand<span style="color: black;">&#41;</span>:
&nbsp;
    <span style="color: #008000;">help</span> = <span style="color: #483d8b;">&quot;Sync Flex Commands&quot;</span>
    requires_model_validation = <span style="color: #008000;">False</span>    
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> handle_noargs<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, <span style="color: #66cc66;">**</span>options<span style="color: black;">&#41;</span>:
&nbsp;
        <span style="color: #808080; font-style: italic;"># Your code here</span></pre></div></div>

<p>El método handle_noargs es el que nos permite ejecutar las acciones realizadas por nuestro comando cuando es invocado, en mi caso la implementación es la siguiente (algo básica por ahora):</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">def</span> handle_noargs<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, <span style="color: #66cc66;">**</span>options<span style="color: black;">&#41;</span>:
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">from</span> pyamf.<span style="color: black;">remoting</span>.<span style="color: black;">gateway</span>.<span style="color: black;">django</span> <span style="color: #ff7700;font-weight:bold;">import</span> DjangoGateway
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
&nbsp;
        project = settings.<span style="color: black;">ROOT_URLCONF</span>.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'.'</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>
&nbsp;
&nbsp;
        <span style="color: #808080; font-style: italic;">#import types</span>
        <span style="color: #ff7700;font-weight:bold;">for</span> app <span style="color: #ff7700;font-weight:bold;">in</span> models.<span style="color: black;">get_apps</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
            <span style="color: #ff7700;font-weight:bold;">if</span> project == app.__name__.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'.'</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>:
                app_name = app.__name__.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'.'</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span>-<span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span>
                package = project + <span style="color: #483d8b;">'.'</span> + app_name  + <span style="color: #483d8b;">'.gateway'</span>
                <span style="color: #ff7700;font-weight:bold;">try</span>:
                    mod = <span style="color: #008000;">__import__</span><span style="color: black;">&#40;</span>package, <span style="color: #008000;">globals</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>, <span style="color: #008000;">locals</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>, <span style="color: black;">&#91;</span><span style="color: #483d8b;">'gateway'</span><span style="color: black;">&#93;</span>, -<span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
                    <span style="color: #ff7700;font-weight:bold;">for</span> d <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">dir</span><span style="color: black;">&#40;</span>mod<span style="color: black;">&#41;</span>:
                        attr = <span style="color: #008000;">getattr</span><span style="color: black;">&#40;</span>mod, d<span style="color: black;">&#41;</span>
                        <span style="color: #ff7700;font-weight:bold;">try</span>:
&nbsp;
                            <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">isinstance</span><span style="color: black;">&#40;</span>attr, DjangoGateway<span style="color: black;">&#41;</span>:
                               <span style="color: #008000;">self</span>.<span style="color: black;">processClass</span><span style="color: black;">&#40;</span>d, attr<span style="color: black;">&#41;</span>
&nbsp;
                        <span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: #008000;">TypeError</span>:
                            <span style="color: #ff7700;font-weight:bold;">pass</span>
                <span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: #008000;">ImportError</span>:
                    <span style="color: #ff7700;font-weight:bold;">pass</span></pre></div></div>

<p>Como se puede ver su funcionamiento se basa en introspección, para ello busco un módulo llamado gateway dentro de mis aplicaciones DJango una vez que encuentro el módulo busco en él las clases que extiendan a DjangoGateway para generar el archivo Services.xml.   Un ejemplo de mi archivo gateway.py es:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">from</span> pyamf.<span style="color: black;">remoting</span>.<span style="color: black;">gateway</span>.<span style="color: black;">django</span> <span style="color: #ff7700;font-weight:bold;">import</span> DjangoGateway
<span style="color: #ff7700;font-weight:bold;">from</span> django.<span style="color: black;">contrib</span>.<span style="color: black;">auth</span>.<span style="color: black;">models</span> <span style="color: #ff7700;font-weight:bold;">import</span> User
<span style="color: #ff7700;font-weight:bold;">from</span> sampleapp.<span style="color: black;">contabilidad</span>.<span style="color: black;">models</span> <span style="color: #ff7700;font-weight:bold;">import</span> Comprobante
<span style="color: #ff7700;font-weight:bold;">from</span> sampleapp.<span style="color: black;">gateway</span>.<span style="color: black;">amf</span> <span style="color: #ff7700;font-weight:bold;">import</span> AMFGateway 
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> ComprobanteGateway<span style="color: black;">&#40;</span>AMFGateway<span style="color: black;">&#41;</span>:
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> obtenerComprobantes<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, request, data<span style="color: black;">&#41;</span>:     
       <span style="color: #808080; font-style: italic;"># Implemetnar</span>
       <span style="color: #ff7700;font-weight:bold;">pass</span>           
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> CuentaGateway<span style="color: black;">&#40;</span>AMFGateway<span style="color: black;">&#41;</span>:
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> obtenerCuentas<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, request, data<span style="color: black;">&#41;</span>:     
       <span style="color: #808080; font-style: italic;"># Implemetnar</span>
       <span style="color: #ff7700;font-weight:bold;">pass</span>
&nbsp;
contabilidadGateway = DjangoGateway<span style="color: black;">&#40;</span><span style="color: black;">&#123;</span><span style="color: #483d8b;">'gwComprobante'</span> : ComprobanteGateway, <span style="color: #483d8b;">'gwCuenta'</span> : CuentaGateway,<span style="color: black;">&#125;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>Si vemos la implementación del método processClass tenemos lo siguiente:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">def</span> processClass<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, name, gateway<span style="color: black;">&#41;</span>:     
        <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">inspect</span>   
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;&lt;?xml version=<span style="color: #000099; font-weight: bold;">\&quot;</span>1.0<span style="color: #000099; font-weight: bold;">\&quot;</span> encoding=<span style="color: #000099; font-weight: bold;">\&quot;</span>utf-8<span style="color: #000099; font-weight: bold;">\&quot;</span>?&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
               <span style="color: #483d8b;">&quot;&lt;cairngorm:ServiceLocator xmlns:mx=<span style="color: #000099; font-weight: bold;">\&quot;</span>http://www.adobe.com/2006/mxml<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span>
               <span style="color: #483d8b;">&quot;xmlns:cairngorm=<span style="color: #000099; font-weight: bold;">\&quot;</span>com.adobe.cairngorm.business.*<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: black;">&#41;</span>  
        <span style="color: #ff7700;font-weight:bold;">for</span> g <span style="color: #ff7700;font-weight:bold;">in</span> gateway.<span style="color: black;">services</span>:
            <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;&lt;mx:RemoteObject id=<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span> + g + <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\&quot;</span> &quot;</span>
                   <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\t</span><span style="color: #000099; font-weight: bold;">\t</span>destination=<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span> + g + <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\&quot;</span> &quot;</span>
                   <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\t</span><span style="color: #000099; font-weight: bold;">\t</span>endpoint=<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span> + settings.<span style="color: black;">REMOTING_URL</span> +  <span style="color: #483d8b;">&quot;/&quot;</span> + name + <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\&quot;</span> &quot;</span>
                   <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\t</span><span style="color: #000099; font-weight: bold;">\t</span>showBusyCursor=<span style="color: #000099; font-weight: bold;">\&quot;</span>true<span style="color: #000099; font-weight: bold;">\&quot;</span> &quot;</span> 
                   <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\t</span><span style="color: #000099; font-weight: bold;">\t</span>result=<span style="color: #000099; font-weight: bold;">\&quot;</span>event.token.resultHandler( event );<span style="color: #000099; font-weight: bold;">\&quot;</span> &quot;</span> 
                   <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\t</span><span style="color: #000099; font-weight: bold;">\t</span>fault=<span style="color: #000099; font-weight: bold;">\&quot;</span>event.token.faultHandler( event );<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;&quot;</span><span style="color: black;">&#41;</span>
&nbsp;
            service = gateway.<span style="color: black;">services</span><span style="color: black;">&#91;</span>g<span style="color: black;">&#93;</span>            
            <span style="color: #ff7700;font-weight:bold;">for</span> m <span style="color: #ff7700;font-weight:bold;">in</span> service.<span style="color: black;">getMethods</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
                <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>&lt;mx:method name=<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span> + m + <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\&quot;</span> /&gt;&quot;</span> 
            <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;&lt;/mx:RemoteObject&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;&lt;/cairngorm:ServiceLocator&gt;&quot;</span></pre></div></div>

<p>Con eso ya estamos casí listos sólo nos falta agregar nuestra aplicación para que DJango la conozca y definir la variable REMOTING_URL para ello sólo editamos nuestro archivo settings.py:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">INSTALLED_APPS = <span style="color: black;">&#40;</span>
    <span style="color: #483d8b;">'django.contrib.auth'</span>,
    <span style="color: #483d8b;">'django.contrib.contenttypes'</span>,
    <span style="color: #483d8b;">'django.contrib.sessions'</span>,
    <span style="color: #483d8b;">'django.contrib.sites'</span>,
    <span style="color: #483d8b;">'django.contrib.admin'</span>,
    <span style="color: #483d8b;">'sampleapp.contabilidad'</span>,    
    <span style="color: #483d8b;">'sampleapp.compra'</span>,
    <span style="color: #483d8b;">'sampleapp.agricola'</span>,
    <span style="color: #483d8b;">'sampleapp.rrhh'</span>,
    <span style="color: #483d8b;">'sampleapp.maquinaria'</span>,
    <span style="color: #483d8b;">'sampleapp.comun'</span>,    
    <span style="color: #483d8b;">'sampleapp.actividad'</span>,
    <span style="color: #483d8b;">'sampleapp.flex'</span>,
<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># --------------------------------------------------</span>
<span style="color: #808080; font-style: italic;"># My customs settings</span>
<span style="color: #808080; font-style: italic;"># --------------------------------------------------</span>
REMOTING_URL = <span style="color: #483d8b;">&quot;http://localhost:8080/remoting&quot;</span></pre></div></div>

<p>Con eso ya estamos listo ahora sólo ejecutamos manage.py syncflex en la consola:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;"> manage.py syncflex</pre></div></div>

<p>Aquí una muestra del resultado:</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;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;cairngorm:ServiceLocator</span> <span style="color: #000066;">xmlns:mx</span>=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span><span style="color: #000066;">xmlns:cairngorm</span>=<span style="color: #ff0000;">&quot;com.adobe.cairngorm.business.*&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mx:RemoteObject</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;gwCuenta&quot;</span> </span>
<span style="color: #009900;">		<span style="color: #000066;">destination</span>=<span style="color: #ff0000;">&quot;gwCuenta&quot;</span> </span>
<span style="color: #009900;">		<span style="color: #000066;">endpoint</span>=<span style="color: #ff0000;">&quot;http://localhost:8080/remoting/contabilidadGateway&quot;</span> </span>
<span style="color: #009900;">		<span style="color: #000066;">showBusyCursor</span>=<span style="color: #ff0000;">&quot;true&quot;</span> </span>
<span style="color: #009900;">		<span style="color: #000066;">result</span>=<span style="color: #ff0000;">&quot;event.token.resultHandler( event );&quot;</span> </span>
<span style="color: #009900;">		<span style="color: #000066;">fault</span>=<span style="color: #ff0000;">&quot;event.token.faultHandler( event );&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mx:method</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;obtenerCuentas&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/mx:RemoteObject<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mx:RemoteObject</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;gwComprobante&quot;</span> </span>
<span style="color: #009900;">		<span style="color: #000066;">destination</span>=<span style="color: #ff0000;">&quot;gwComprobante&quot;</span> </span>
<span style="color: #009900;">		<span style="color: #000066;">endpoint</span>=<span style="color: #ff0000;">&quot;http://localhost:8080/remoting/contabilidadGateway&quot;</span> </span>
<span style="color: #009900;">		<span style="color: #000066;">showBusyCursor</span>=<span style="color: #ff0000;">&quot;true&quot;</span> </span>
<span style="color: #009900;">		<span style="color: #000066;">result</span>=<span style="color: #ff0000;">&quot;event.token.resultHandler( event );&quot;</span> </span>
<span style="color: #009900;">		<span style="color: #000066;">fault</span>=<span style="color: #ff0000;">&quot;event.token.faultHandler( event );&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mx:method</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;obtenerComprobantes&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/mx:RemoteObject<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/cairngorm:ServiceLocator<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Compartelo!</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D99&amp;title=Extendiendo+manage.py+para+sincornizar+con+Flex" rel="nofollow" title="Agregar a&nbsp;Del.icio.us"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/delicious.png" title="Agregar a&nbsp;Del.icio.us" alt="Agregar a&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D99" rel="nofollow" title="Agregar a&nbsp;Facebook"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/facebook.png" title="Agregar a&nbsp;Facebook" alt="Agregar a&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D99&amp;title=Extendiendo+manage.py+para+sincornizar+con+Flex" rel="nofollow" title="Agregar a&nbsp;Google Bookmarks"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/google.png" title="Agregar a&nbsp;Google Bookmarks" alt="Agregar a&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D99&amp;title=Extendiendo+manage.py+para+sincornizar+con+Flex" rel="nofollow" title="Agregar a&nbsp;LinkedIn"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/linkedin.png" title="Agregar a&nbsp;LinkedIn" alt="Agregar a&nbsp;LinkedIn" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D99&amp;title=Extendiendo+manage.py+para+sincornizar+con+Flex" rel="nofollow" title="Agregar a&nbsp;reddit"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/reddit.png" title="Agregar a&nbsp;reddit" alt="Agregar a&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D99" rel="nofollow" title="Agregar a&nbsp;Technorati"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/technorati.png" title="Agregar a&nbsp;Technorati" alt="Agregar a&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Extendiendo+manage.py+para+sincornizar+con+Flex+@+http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D99" rel="nofollow" title="Agregar a&nbsp;Twitter"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/twitter.png" title="Agregar a&nbsp;Twitter" alt="Agregar a&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://blog.developer.cl/?feed=rss2&amp;p=99</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Complementos de búsqueda con OpenSearch</title>
		<link>http://blog.developer.cl/?p=86</link>
		<comments>http://blog.developer.cl/?p=86#comments</comments>
		<pubDate>Mon, 25 May 2009 03:15:46 +0000</pubDate>
		<dc:creator>lcruz</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://blog.developer.cl/?p=86</guid>
		<description><![CDATA[Hace poco escribí algunas extensiones utilizando OpenSearch. OpenSearch es un conjunto de estándares que permiten la publicación de los resultados de los sistemas de búsqueda permitiendo de este modo la sindicación y la agregación de contenidos entre diferentes motores y sistema de búsqueda. OpenSearch se compone de 3 partes, un formato para la descripción de [...]]]></description>
			<content:encoded><![CDATA[<p>Hace poco escribí algunas extensiones utilizando OpenSearch.   OpenSearch es un conjunto de estándares que permiten la publicación de los resultados de los sistemas de búsqueda permitiendo de este modo la sindicación y la agregación de contenidos entre diferentes motores y sistema de búsqueda.   OpenSearch se compone de 3 partes, un formato para la descripción de motores de búsqueda, un formato para la descripción de los resultados de búsqueda llamado OpenSearch Response y finalmente los agregadores o sitios capaces de mostrar resultados en formato OpenSearch.    </p>
<p>Navegadores como IE7 y Firefox soportan ya OpenSearch, es decir, permiten la incorporación de complementos de búsqueda mediante este estándar, al mismo tiempo cada uno de estos navegadores extiende las capacidades estándares de OpenSearch agregándole sus propios sabores.</p>
<p>La utilización de OpenSearch permite incorporar algo de usabilidad a tus sitios Web, si es que, los mismos presentan buscadores a los usuarios.   Yo en mi caso particular utilizo un diccionario en inglés de la empresa WordMagic, este diccionario presenta un buscador en su portada mediante el cuál puedes acceder a las palabras del diccionario.  Dado que a mí me resultaba bastante molesto ingresar al sitio para realizar la búsqueda es que me decidí a hacer este complemento, además es muy sencillo hacerlo y lo puedes incorporar también en tus sitios.  A continuación veremos este ejemplo:</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;OpenSearchDescription</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;http://a9.com/-/spec/opensearch/1.1/&quot;</span> <span style="color: #000066;">xmlns:moz</span>=<span style="color: #ff0000;">&quot;http://www.mozilla.org/2006/browser/search/&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span> 
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ShortName<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>WordMagic<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/ShortName<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Description<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Word Magic Software, Inc. es una compañia dedicada al desarrollo de software con sede en Houston, Texas.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Description<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;InputEncoding<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>UTF-8<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/InputEncoding<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Image</span> <span style="color: #000066;">width</span>=<span style="color: #ff0000;">&quot;16&quot;</span> <span style="color: #000066;">height</span>=<span style="color: #ff0000;">&quot;16&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;image/x-icon&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>http://wordmagicsoft.com/favicon.ico<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Image<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Url</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;text/html&quot;</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">&quot;POST&quot;</span> <span style="color: #000066;">template</span>=<span style="color: #ff0000;">&quot;http://wordmagicsoft.com/diccionario/search.php&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span> 
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Param</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;word_to_search&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;{searchTerms}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span> 
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Param</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;search_option&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;es-en&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span> 
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/OpenSearchDescription<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Los parámetros especificados son los siguientes:</p>
<ul>
<li><strong>OpenSearchDescription</strong>: Este es el nodo principal de un documento OpenSearch. </li>
<li><strong>ShortName</strong>: Un pequeño titulo que identifique al buscador.</li>
<li><strong>Description</strong>: Una descripción más larga acerca del buscador. </li>
<li><strong>InputEncoding</strong>: El encoding que soporta nuestro el buscador. </li>
<li><strong>Image</strong>: La url de algún icono representativo de nuestro buscador. </li>
<li><strong>URL</strong>: Describe la interfaz para nuestro buscador, o sea aquella que responderá a las búsquedas.   El atributo template permite especificar la url y el atributo method permite indicar si se hará un GET o un POST a la url.</li>
</ul>
<p>Eso es todo! Guardamos el contenido en un archivo xml, en mi caso le puse wordmagic.xml y ya esta! ahora solo nos queda agregarlo a nuestro navegador, para ello utilizaremos un pequeño javascript, para ello puedes construirte una página con lo siguiente:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>SCRIPT LANGUAGE<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;JavaScript&quot;</span><span style="color: #339933;">&gt;</span> 
<span style="color: #339933;">&lt;!--</span> 
    <span style="color: #003366; font-weight: bold;">function</span> addWordMagicSearch<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> 
        window.<span style="color: #660066;">sidebar</span>.<span style="color: #660066;">addSearchEngine</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;http://developer.cl/opensearch/wordmagic.xml&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;http://wordmagicsoft.com/favicon.ico&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;WordMagic&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
    <span style="color: #009900;">&#125;</span> 
<span style="color: #006600; font-style: italic;">//--&gt; </span>
<span style="color: #339933;">&lt;/</span>SCRIPT<span style="color: #339933;">&gt;</span></pre></div></div>

<p>Luego solo tienes que agregar la llamada en el HTML:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;a href=&quot;#&quot; onclick=&quot;addWordMagicSearch();&quot;&gt;Agregar búsqueda en WordMagic&lt;/a&gt;</pre></div></div>

<p><SCRIPT LANGUAGE="JavaScript"><br />
<!--<br />
    function addWordMagicSearch() {<br />
        window.sidebar.addSearchEngine("http://developer.cl/opensearch/wordmagic.xml", "http://wordmagicsoft.com/favicon.ico", "WordMagic", "");<br />
    }<br />
//--><br />
</SCRIPT><br />
Mira <a href="#" onclick="addWordMagicSearch();">aquí</a> esta el mio.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Compartelo!</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D86&amp;title=Complementos+de+b%C3%BAsqueda+con+OpenSearch" rel="nofollow" title="Agregar a&nbsp;Del.icio.us"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/delicious.png" title="Agregar a&nbsp;Del.icio.us" alt="Agregar a&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D86" rel="nofollow" title="Agregar a&nbsp;Facebook"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/facebook.png" title="Agregar a&nbsp;Facebook" alt="Agregar a&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D86&amp;title=Complementos+de+b%C3%BAsqueda+con+OpenSearch" rel="nofollow" title="Agregar a&nbsp;Google Bookmarks"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/google.png" title="Agregar a&nbsp;Google Bookmarks" alt="Agregar a&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D86&amp;title=Complementos+de+b%C3%BAsqueda+con+OpenSearch" rel="nofollow" title="Agregar a&nbsp;LinkedIn"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/linkedin.png" title="Agregar a&nbsp;LinkedIn" alt="Agregar a&nbsp;LinkedIn" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D86&amp;title=Complementos+de+b%C3%BAsqueda+con+OpenSearch" rel="nofollow" title="Agregar a&nbsp;reddit"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/reddit.png" title="Agregar a&nbsp;reddit" alt="Agregar a&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D86" rel="nofollow" title="Agregar a&nbsp;Technorati"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/technorati.png" title="Agregar a&nbsp;Technorati" alt="Agregar a&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Complementos+de+b%C3%BAsqueda+con+OpenSearch+@+http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D86" rel="nofollow" title="Agregar a&nbsp;Twitter"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/twitter.png" title="Agregar a&nbsp;Twitter" alt="Agregar a&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://blog.developer.cl/?feed=rss2&amp;p=86</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter, algo &#250;til despues de todo.</title>
		<link>http://blog.developer.cl/?p=25</link>
		<comments>http://blog.developer.cl/?p=25#comments</comments>
		<pubDate>Wed, 09 Jul 2008 03:25:53 +0000</pubDate>
		<dc:creator>lcruz</dc:creator>
				<category><![CDATA[Gente]]></category>
		<category><![CDATA[Herramientas]]></category>

		<guid isPermaLink="false">http://blog.developer.cl/?p=25</guid>
		<description><![CDATA[Antes pensaba que twitter era una perdida de tiempo ¿para que diablos alguien seguirá a otros en una especie de reality virtual con sólo 140 caracteres por escena?&#160;&#160; Ahora lo llevo utilizando una par de días y lo encuentro de una simpleza similar a del.icio.us pero con un potencial de igual magnitud: acceso a información [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.developer.cl/wp-content/uploads/2008/07/image1.png"><img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="183" alt="image" src="http://blog.developer.cl/wp-content/uploads/2008/07/image_thumb1.png" width="260" border="0" /></a></p>
<p>Antes pensaba que <a href="http://www.twitter.com">twitter</a> era una perdida de tiempo ¿para que diablos alguien seguirá a otros en una especie de reality virtual con sólo 140 caracteres por escena?&#160;&#160; Ahora lo llevo utilizando una par de días y lo encuentro de una simpleza similar a <a href="http://del.icio.us">del.icio.us</a> pero con un potencial de igual magnitud: acceso a información de primera línea, una mirada sobre el hombro de gente que la lleva en determinados temas.&#160;&#160; Me quede pensando en esto luego de descubrir <a href="http://watin.sourceforge.net">Watin</a> ojeando twitter. Con una rápida mirada te enteras del diario vivir de gente que consideras <a href="http://twitter.com/jeremydmiller">un referente</a>, sin quererlo una especie de consejo, un mini-blog, en fin, una herramienta útil para un aprendiz de <a href="http://es.wikipedia.org/wiki/Jedi">Jedi</a> como yo.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Compartelo!</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D25&amp;title=Twitter%2C+algo+%26uacute%3Btil+despues+de+todo." rel="nofollow" title="Agregar a&nbsp;Del.icio.us"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/delicious.png" title="Agregar a&nbsp;Del.icio.us" alt="Agregar a&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D25" rel="nofollow" title="Agregar a&nbsp;Facebook"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/facebook.png" title="Agregar a&nbsp;Facebook" alt="Agregar a&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D25&amp;title=Twitter%2C+algo+%26uacute%3Btil+despues+de+todo." rel="nofollow" title="Agregar a&nbsp;Google Bookmarks"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/google.png" title="Agregar a&nbsp;Google Bookmarks" alt="Agregar a&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D25&amp;title=Twitter%2C+algo+%26uacute%3Btil+despues+de+todo." rel="nofollow" title="Agregar a&nbsp;LinkedIn"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/linkedin.png" title="Agregar a&nbsp;LinkedIn" alt="Agregar a&nbsp;LinkedIn" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D25&amp;title=Twitter%2C+algo+%26uacute%3Btil+despues+de+todo." rel="nofollow" title="Agregar a&nbsp;reddit"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/reddit.png" title="Agregar a&nbsp;reddit" alt="Agregar a&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D25" rel="nofollow" title="Agregar a&nbsp;Technorati"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/technorati.png" title="Agregar a&nbsp;Technorati" alt="Agregar a&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Twitter%2C+algo+%26uacute%3Btil+despues+de+todo.+@+http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D25" rel="nofollow" title="Agregar a&nbsp;Twitter"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/twitter.png" title="Agregar a&nbsp;Twitter" alt="Agregar a&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://blog.developer.cl/?feed=rss2&amp;p=25</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Watin, mejor que Selenium pero s&#243;lo para .NET</title>
		<link>http://blog.developer.cl/?p=23</link>
		<comments>http://blog.developer.cl/?p=23#comments</comments>
		<pubDate>Wed, 09 Jul 2008 01:51:37 +0000</pubDate>
		<dc:creator>lcruz</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[SerUnJedi]]></category>

		<guid isPermaLink="false">http://blog.developer.cl/?p=23</guid>
		<description><![CDATA[Acabo de encontrar a Watin, una herramienta OpenSource para la automatización de pruebas mediante la imitación o grabación de las secuencias de interacción sobre una página Web, según un experto en el tema es mejor que Selenium, al parece su uso es bastante sencillo y soporta Internet Explorer y Firefox.   Lamentablemente sirve solo para aplicaciones [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.developer.cl/wp-content/uploads/2008/07/image.png"><img width="260" height="173" border="0" alt="image" style="border: 0px none " title="image" src="http://blog.developer.cl/wp-content/uploads/2008/07/image_thumb.png" /></a></p>
<p>Acabo de encontrar a <a href="http://watin.sourceforge.net">Watin</a>, una herramienta OpenSource para la automatización de pruebas mediante la imitación <strike>o grabación</strike> de las secuencias de interacción sobre una página Web, según un experto en el tema es mejor que <a href="http://selenium.openqa.org">Selenium</a>, al parece su uso es bastante sencillo y soporta Internet Explorer y Firefox.   Lamentablemente sirve solo para aplicaciones .NET, así que por ahora no me queda otra que seguir intentando configurar Selenium.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Compartelo!</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D23&amp;title=Watin%2C+mejor+que+Selenium+pero+s%26oacute%3Blo+para+.NET" rel="nofollow" title="Agregar a&nbsp;Del.icio.us"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/delicious.png" title="Agregar a&nbsp;Del.icio.us" alt="Agregar a&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D23" rel="nofollow" title="Agregar a&nbsp;Facebook"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/facebook.png" title="Agregar a&nbsp;Facebook" alt="Agregar a&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D23&amp;title=Watin%2C+mejor+que+Selenium+pero+s%26oacute%3Blo+para+.NET" rel="nofollow" title="Agregar a&nbsp;Google Bookmarks"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/google.png" title="Agregar a&nbsp;Google Bookmarks" alt="Agregar a&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D23&amp;title=Watin%2C+mejor+que+Selenium+pero+s%26oacute%3Blo+para+.NET" rel="nofollow" title="Agregar a&nbsp;LinkedIn"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/linkedin.png" title="Agregar a&nbsp;LinkedIn" alt="Agregar a&nbsp;LinkedIn" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D23&amp;title=Watin%2C+mejor+que+Selenium+pero+s%26oacute%3Blo+para+.NET" rel="nofollow" title="Agregar a&nbsp;reddit"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/reddit.png" title="Agregar a&nbsp;reddit" alt="Agregar a&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D23" rel="nofollow" title="Agregar a&nbsp;Technorati"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/technorati.png" title="Agregar a&nbsp;Technorati" alt="Agregar a&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Watin%2C+mejor+que+Selenium+pero+s%26oacute%3Blo+para+.NET+@+http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D23" rel="nofollow" title="Agregar a&nbsp;Twitter"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/twitter.png" title="Agregar a&nbsp;Twitter" alt="Agregar a&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://blog.developer.cl/?feed=rss2&amp;p=23</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Documentaci&#243;n que entorpece la calidad</title>
		<link>http://blog.developer.cl/?p=22</link>
		<comments>http://blog.developer.cl/?p=22#comments</comments>
		<pubDate>Mon, 30 Jun 2008 01:56:32 +0000</pubDate>
		<dc:creator>lcruz</dc:creator>
				<category><![CDATA[Gente]]></category>
		<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://blog.developer.cl/?p=22</guid>
		<description><![CDATA[¿Hasta cuando será suficiente documentar el código? Uno de nuestros clientes revisa detenidamente el código fuente en las entregas, o por los menos a primera vista eso parece, sin embargo, me he dado cuenta que el foco principal de la revisión es la documentación del código, esto prosupuesto no tiene nada de extraño ni de [...]]]></description>
			<content:encoded><![CDATA[<p>¿Hasta cuando será suficiente documentar el código? Uno de nuestros clientes revisa detenidamente el código fuente en las entregas, o por los menos a primera vista eso parece, sin embargo, me he dado cuenta que el foco principal de la revisión es la documentación del código, esto prosupuesto no tiene nada de extraño ni de malo, pero en mi opinión se ha perdido un aspecto importante de la revisión: la calidad del código entregado.</p>
<p>Cada día me encuentro con código duplicado, extensas funciones y métodos o nulo control de errores, es evidente que las revisiones ponen mas énfasis en la forma que en el fondo, dejando atrás los muchos otros aspectos que hablan acerca de la calidad del software.&#160;&#160; Bajo este planteamiento los mejores códigos serán aquellos que están más documentados, sin considerar aspectos como el tamaño, la complejidad de los algoritmos, el uso eficiente de recursos, entre muchas otras cosas.</p>
<p>Hoy en día el escenario global resalta otras metodologías y prácticas, una de ellas es el <a href="http://en.wikipedia.org/wiki/Code_refactoring">refactoring</a>, definido de forma simple como la mejora del diseño del código existente, el cuál debido al acoplamiento existente entre la documentación y su código, se ve entorpecido; en cierto sentido la documentación desincentiva la iniciativa de refactorizar poniendo barreras a la mejora.</p>
<p>Es indudable que la documentación del código nos ahorrara varios dolores de cabeza y frustración pero cuando nos nubla la vista y adormece nuestros sentidos es hora de preocuparse.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Compartelo!</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D22&amp;title=Documentaci%26oacute%3Bn+que+entorpece+la+calidad" rel="nofollow" title="Agregar a&nbsp;Del.icio.us"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/delicious.png" title="Agregar a&nbsp;Del.icio.us" alt="Agregar a&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D22" rel="nofollow" title="Agregar a&nbsp;Facebook"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/facebook.png" title="Agregar a&nbsp;Facebook" alt="Agregar a&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D22&amp;title=Documentaci%26oacute%3Bn+que+entorpece+la+calidad" rel="nofollow" title="Agregar a&nbsp;Google Bookmarks"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/google.png" title="Agregar a&nbsp;Google Bookmarks" alt="Agregar a&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D22&amp;title=Documentaci%26oacute%3Bn+que+entorpece+la+calidad" rel="nofollow" title="Agregar a&nbsp;LinkedIn"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/linkedin.png" title="Agregar a&nbsp;LinkedIn" alt="Agregar a&nbsp;LinkedIn" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D22&amp;title=Documentaci%26oacute%3Bn+que+entorpece+la+calidad" rel="nofollow" title="Agregar a&nbsp;reddit"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/reddit.png" title="Agregar a&nbsp;reddit" alt="Agregar a&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D22" rel="nofollow" title="Agregar a&nbsp;Technorati"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/technorati.png" title="Agregar a&nbsp;Technorati" alt="Agregar a&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Documentaci%26oacute%3Bn+que+entorpece+la+calidad+@+http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D22" rel="nofollow" title="Agregar a&nbsp;Twitter"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/twitter.png" title="Agregar a&nbsp;Twitter" alt="Agregar a&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://blog.developer.cl/?feed=rss2&amp;p=22</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox, simplemente es mejor</title>
		<link>http://blog.developer.cl/?p=21</link>
		<comments>http://blog.developer.cl/?p=21#comments</comments>
		<pubDate>Sun, 29 Jun 2008 14:26:04 +0000</pubDate>
		<dc:creator>lcruz</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[SerUnJedi]]></category>

		<guid isPermaLink="false">http://blog.developer.cl/?p=21</guid>
		<description><![CDATA[Nos soy de esos que históricamente han manifestado su repudio al gigante Microsoft, no utilizo Internet Explorer porque no vaya de acuerdo a mis ideas en cuanto a código abierto, simplemente utilizo Firefox por que es mejor.&#160; No he analizado en detalle la experiencia de usuario en uno u otro navegador, no he comparado su [...]]]></description>
			<content:encoded><![CDATA[<p>Nos soy de esos que históricamente han manifestado su repudio al gigante Microsoft, no utilizo Internet Explorer porque no vaya de acuerdo a mis ideas en cuanto a código abierto, simplemente utilizo Firefox por que es mejor.&#160; No he analizado en detalle la experiencia de usuario en uno u otro navegador, no he comparado su rendimiento, su seguridad, etc., tal vez en otras áreas Firefox no sea el que la lleva, el hecho es que en mi área Firefox es por mucho el gran ganador.&#160;&#160; Es tan grande este sentimiento que he incorporado la pregunta “¿que navegador utilizas?” en la entrevista a desarrolladores.&#160; ¿Y por qué tal diferencia y adhesión?, la razón es simple y esta dada por una serie de plugins que me hacen ser mas eficiente, construir aplicaciones de calidad en un menor tiempo, en fin ser más productivo.</p>
<p>He aquí un pequeño listado de mis plugins favoritos:</p>
<p> <a href="http://blog.developer.cl/wp-content/uploads/2008/06/image.png"><img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="110" alt="image" src="http://blog.developer.cl/wp-content/uploads/2008/06/image_thumb.png" width="244" border="0" /></a>
<p><a href="http://karmatics.com/aardvark">Aardvark</a>, me permite limpiar páginas antes de la impresión quitando así esos molestos banners publicitarios. </p>
<p><a href="http://blog.developer.cl/wp-content/uploads/2008/06/image1.png"><img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="110" alt="image" src="http://blog.developer.cl/wp-content/uploads/2008/06/image_thumb1.png" width="244" border="0" /></a> </p>
<p><a href="http://getfirebug.com">Firebug</a>, herramienta indispensable para todo desarrollador, permite inspeccionar y editar HTML, inspeccionar el modelo de objetos DOM, ver los errores, depurar javascript y mucho más.</p>
<p><a href="http://blog.developer.cl/wp-content/uploads/2008/06/image2.png"><img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="110" alt="image" src="http://blog.developer.cl/wp-content/uploads/2008/06/image_thumb2.png" width="244" border="0" /></a> </p>
<p><a href="http://chrispederick.com/work/web-developer">Web Developer</a>, agrega una barra a Firefox con un montón de utilidades como resaltado de tablas, manejo de formularios, validación de CSS y HTML , información de la página, etc.</p>
<p><a href="http://blog.developer.cl/wp-content/uploads/2008/06/image3.png"><img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="110" alt="image" src="http://blog.developer.cl/wp-content/uploads/2008/06/image_thumb3.png" width="244" border="0" /></a> </p>
<p><a href="http://selenium-ide.openqa.org">Selenium IDE</a>, graba y reproduce nuestra navegación en una página, está herramienta ha sido creada con el propósito de realizar pruebas a nuestras páginas y lo logra de una manera muy sencilla.</p>
<p><a href="http://blog.developer.cl/wp-content/uploads/2008/06/image4.png"><img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="189" alt="image" src="http://blog.developer.cl/wp-content/uploads/2008/06/image_thumb4.png" width="244" border="0" /></a> </p>
<p><a href="http://screenshot-program.com/fireshot">Fireshoot</a>, es una extensión que nos permite crear ScreenShoot de páginas Web y realizar anotaciones sobre estos.</p>
</p>
<p><a href="http://blog.developer.cl/wp-content/uploads/2008/06/image5.png"><img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="110" alt="image" src="http://blog.developer.cl/wp-content/uploads/2008/06/image_thumb5.png" width="244" border="0" /></a> </p>
<p><a href="http://tamperdata.mozdev.org">TamperData</a>, permite seguir y modificar las solicitudes HTTP, ideal para comprobaciones de seguridad (modificando los datos) y para hacer seguimiento a los request.</p>
</p>
<p><a href="http://blog.developer.cl/wp-content/uploads/2008/06/image6.png"><img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="149" alt="image" src="http://blog.developer.cl/wp-content/uploads/2008/06/image_thumb6.png" width="244" border="0" /></a> </p>
<p><a href="http://www.google.com/notebook">Google Notebook</a>, nos permite realizar anotaciones rápidas a medida que vamos navegando.</p>
<p><a href="http://blog.developer.cl/wp-content/uploads/2008/06/image7.png"><img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="218" alt="image" src="http://blog.developer.cl/wp-content/uploads/2008/06/image_thumb7.png" width="244" border="0" /></a> </p>
<p><a href="http://www.squarefree.com/shell">Javascript Shell</a>,&#160; esta es una pequeña pero potente shell para javascript sin duda una de mis favoritas.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Compartelo!</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D21&amp;title=Firefox%2C+simplemente+es+mejor" rel="nofollow" title="Agregar a&nbsp;Del.icio.us"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/delicious.png" title="Agregar a&nbsp;Del.icio.us" alt="Agregar a&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D21" rel="nofollow" title="Agregar a&nbsp;Facebook"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/facebook.png" title="Agregar a&nbsp;Facebook" alt="Agregar a&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D21&amp;title=Firefox%2C+simplemente+es+mejor" rel="nofollow" title="Agregar a&nbsp;Google Bookmarks"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/google.png" title="Agregar a&nbsp;Google Bookmarks" alt="Agregar a&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D21&amp;title=Firefox%2C+simplemente+es+mejor" rel="nofollow" title="Agregar a&nbsp;LinkedIn"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/linkedin.png" title="Agregar a&nbsp;LinkedIn" alt="Agregar a&nbsp;LinkedIn" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D21&amp;title=Firefox%2C+simplemente+es+mejor" rel="nofollow" title="Agregar a&nbsp;reddit"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/reddit.png" title="Agregar a&nbsp;reddit" alt="Agregar a&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D21" rel="nofollow" title="Agregar a&nbsp;Technorati"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/technorati.png" title="Agregar a&nbsp;Technorati" alt="Agregar a&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Firefox%2C+simplemente+es+mejor+@+http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D21" rel="nofollow" title="Agregar a&nbsp;Twitter"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/twitter.png" title="Agregar a&nbsp;Twitter" alt="Agregar a&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://blog.developer.cl/?feed=rss2&amp;p=21</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#191;El mejor deber&#237;a ser despedido?</title>
		<link>http://blog.developer.cl/?p=20</link>
		<comments>http://blog.developer.cl/?p=20#comments</comments>
		<pubDate>Sun, 22 Jun 2008 02:12:05 +0000</pubDate>
		<dc:creator>lcruz</dc:creator>
				<category><![CDATA[Gente]]></category>

		<guid isPermaLink="false">http://blog.developer.cl/?p=20</guid>
		<description><![CDATA[Creo que era el titulo de un viejo post que no encontré, pero es lo que me viene a la cabeza al pensar en aquellos “buenos programadores” que escudados en su supuesta “excelencia” se sienten con el derecho de ser tratados diferentes, no quieren ensuciarse las manos.&#160;&#160; No me mal interpreten, la mayoría de las [...]]]></description>
			<content:encoded><![CDATA[<p>Creo que era el titulo de un viejo post que no encontré, pero es lo que me viene a la cabeza al pensar en aquellos “buenos programadores” que escudados en su supuesta “excelencia” se sienten con el derecho de ser tratados diferentes, no quieren ensuciarse las manos.&#160;&#160; No me mal interpreten, la mayoría de las veces intento poner a cada uno en el puesto que me parece más acorde de acuerdo a su perfil, sin embargo, eso no siempre es posible.&#160;&#160; Cuando la situación lo amerita necesitamos gente flexible, capaz de abordar uno u otro rol.&#160;&#160; Por ahora las malas caras me comienzan a irritar, siendo sincero prefiero un programador un poco menos hábil pero en el que pueda confiar. </p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Compartelo!</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D20&amp;title=%26iquest%3BEl+mejor+deber%26iacute%3Ba+ser+despedido%3F" rel="nofollow" title="Agregar a&nbsp;Del.icio.us"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/delicious.png" title="Agregar a&nbsp;Del.icio.us" alt="Agregar a&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D20" rel="nofollow" title="Agregar a&nbsp;Facebook"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/facebook.png" title="Agregar a&nbsp;Facebook" alt="Agregar a&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D20&amp;title=%26iquest%3BEl+mejor+deber%26iacute%3Ba+ser+despedido%3F" rel="nofollow" title="Agregar a&nbsp;Google Bookmarks"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/google.png" title="Agregar a&nbsp;Google Bookmarks" alt="Agregar a&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D20&amp;title=%26iquest%3BEl+mejor+deber%26iacute%3Ba+ser+despedido%3F" rel="nofollow" title="Agregar a&nbsp;LinkedIn"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/linkedin.png" title="Agregar a&nbsp;LinkedIn" alt="Agregar a&nbsp;LinkedIn" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D20&amp;title=%26iquest%3BEl+mejor+deber%26iacute%3Ba+ser+despedido%3F" rel="nofollow" title="Agregar a&nbsp;reddit"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/reddit.png" title="Agregar a&nbsp;reddit" alt="Agregar a&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D20" rel="nofollow" title="Agregar a&nbsp;Technorati"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/technorati.png" title="Agregar a&nbsp;Technorati" alt="Agregar a&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+%26iquest%3BEl+mejor+deber%26iacute%3Ba+ser+despedido%3F+@+http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D20" rel="nofollow" title="Agregar a&nbsp;Twitter"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/twitter.png" title="Agregar a&nbsp;Twitter" alt="Agregar a&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://blog.developer.cl/?feed=rss2&amp;p=20</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Porque debería mantenerme al día?</title>
		<link>http://blog.developer.cl/?p=17</link>
		<comments>http://blog.developer.cl/?p=17#comments</comments>
		<pubDate>Sun, 13 Apr 2008 13:23:43 +0000</pubDate>
		<dc:creator>lcruz</dc:creator>
				<category><![CDATA[Gente]]></category>
		<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://blog.developer.cl/?p=17</guid>
		<description><![CDATA[He estado pensando acerca de si los desarrolladores deberían tener o no ese "no se que" que los lleva a ser curisos, a investigar, a querer aprender nuevas cosas, o sea ¿es obligatorio que un desarrollador lo posea?, al fin llegue a la conclusión de que si lo es, de que si elegimos esta profesión [...]]]></description>
			<content:encoded><![CDATA[<p>He estado pensando acerca de si los desarrolladores deberían tener o no ese "no se que" que los lleva a ser curisos, a investigar, a querer aprender nuevas cosas, o sea ¿es obligatorio que un desarrollador lo posea?, al fin llegue a la conclusión de que si lo es, de que si elegimos esta profesión no cabe otra opción o acaso ¿como te sentirias tú al tratarte con un doctor que ocupe tecnicas del siglo pasado?, bueno en este mundo las cosas son un poco más rápidas, todos los días aparecen nuevas herramientas y lenguajes que nos sirven para codificar con mayor rapidez, con menos erroes y de una forma más mantenible, en fin, a ser más productivos,  además ¿no sería aburrido no hacerlo...? para mi ahi esta lo entretenido de esta pega, en descubrir todos los días una nueva y mejor forma de hacer las cosas.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Compartelo!</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D17&amp;title=%C2%BFPorque+deber%C3%ADa+mantenerme+al+d%C3%ADa%3F" rel="nofollow" title="Agregar a&nbsp;Del.icio.us"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/delicious.png" title="Agregar a&nbsp;Del.icio.us" alt="Agregar a&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D17" rel="nofollow" title="Agregar a&nbsp;Facebook"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/facebook.png" title="Agregar a&nbsp;Facebook" alt="Agregar a&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D17&amp;title=%C2%BFPorque+deber%C3%ADa+mantenerme+al+d%C3%ADa%3F" rel="nofollow" title="Agregar a&nbsp;Google Bookmarks"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/google.png" title="Agregar a&nbsp;Google Bookmarks" alt="Agregar a&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D17&amp;title=%C2%BFPorque+deber%C3%ADa+mantenerme+al+d%C3%ADa%3F" rel="nofollow" title="Agregar a&nbsp;LinkedIn"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/linkedin.png" title="Agregar a&nbsp;LinkedIn" alt="Agregar a&nbsp;LinkedIn" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D17&amp;title=%C2%BFPorque+deber%C3%ADa+mantenerme+al+d%C3%ADa%3F" rel="nofollow" title="Agregar a&nbsp;reddit"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/reddit.png" title="Agregar a&nbsp;reddit" alt="Agregar a&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D17" rel="nofollow" title="Agregar a&nbsp;Technorati"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/technorati.png" title="Agregar a&nbsp;Technorati" alt="Agregar a&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+%C2%BFPorque+deber%C3%ADa+mantenerme+al+d%C3%ADa%3F+@+http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D17" rel="nofollow" title="Agregar a&nbsp;Twitter"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/twitter.png" title="Agregar a&nbsp;Twitter" alt="Agregar a&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://blog.developer.cl/?feed=rss2&amp;p=17</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿PHP, Ruby o Python?</title>
		<link>http://blog.developer.cl/?p=15</link>
		<comments>http://blog.developer.cl/?p=15#comments</comments>
		<pubDate>Mon, 07 Apr 2008 20:53:24 +0000</pubDate>
		<dc:creator>lcruz</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Proyectos]]></category>

		<guid isPermaLink="false">http://blog.developer.cl/?p=15</guid>
		<description><![CDATA[Se ha establecido la discución internamente en mi empresa acerca de cual debería ser el lenguaje seleccionado para nuestros desarrollos, por lo menos para aquellos desarrollos donde al cliente no le interesa cual será la tecnología. Con la aparición de frameworks como Rails o DJango nace la necesidad de migrar del viejo y querido PHP [...]]]></description>
			<content:encoded><![CDATA[<p>Se ha establecido la discución internamente en mi empresa acerca de cual debería ser el lenguaje seleccionado para nuestros desarrollos, por lo menos para aquellos desarrollos donde al cliente no le interesa cual será la tecnología.   Con la aparición de frameworks como Rails o DJango nace la necesidad de migrar del viejo y querido PHP hacia lenguajes mas ágiles, donde los cambios rápidos son más fáciles de implementar, son más fáciles de mantener y quien sabe que otra ventajas.</p>
<p>Por mi parte aunque reconozco la gran oportunidad que estos lenguajes ofrecen me tomo con calama la selección, ya que a mi juicio el factor lenguaje no es un argumento tan ponente como si lo es la perfecta coordinación del equipo de desarrollo, la generación de conocimiento al interior de las empresas y la utilización de las metodologías actuales como TDD, BDD, XP, etc.   Este es mi juicio es el mayor valor que una empresa de software tiene o debierá tener.    Así para mi siempre será mejor tener 10 tipos aromicamente coordinados trabajando en PHP que 10 expertos pero incomuicados programadores en Python.</p>
<p>En todo caso las cosas que he visto de Python ya me han abierto el apetito, mmhhhh... ya tengo mi elección.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Compartelo!</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D15&amp;title=%C2%BFPHP%2C+Ruby+o+Python%3F" rel="nofollow" title="Agregar a&nbsp;Del.icio.us"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/delicious.png" title="Agregar a&nbsp;Del.icio.us" alt="Agregar a&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D15" rel="nofollow" title="Agregar a&nbsp;Facebook"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/facebook.png" title="Agregar a&nbsp;Facebook" alt="Agregar a&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D15&amp;title=%C2%BFPHP%2C+Ruby+o+Python%3F" rel="nofollow" title="Agregar a&nbsp;Google Bookmarks"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/google.png" title="Agregar a&nbsp;Google Bookmarks" alt="Agregar a&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D15&amp;title=%C2%BFPHP%2C+Ruby+o+Python%3F" rel="nofollow" title="Agregar a&nbsp;LinkedIn"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/linkedin.png" title="Agregar a&nbsp;LinkedIn" alt="Agregar a&nbsp;LinkedIn" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D15&amp;title=%C2%BFPHP%2C+Ruby+o+Python%3F" rel="nofollow" title="Agregar a&nbsp;reddit"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/reddit.png" title="Agregar a&nbsp;reddit" alt="Agregar a&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D15" rel="nofollow" title="Agregar a&nbsp;Technorati"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/technorati.png" title="Agregar a&nbsp;Technorati" alt="Agregar a&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+%C2%BFPHP%2C+Ruby+o+Python%3F+@+http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D15" rel="nofollow" title="Agregar a&nbsp;Twitter"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/twitter.png" title="Agregar a&nbsp;Twitter" alt="Agregar a&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://blog.developer.cl/?feed=rss2&amp;p=15</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ese no se qué&#8230;</title>
		<link>http://blog.developer.cl/?p=14</link>
		<comments>http://blog.developer.cl/?p=14#comments</comments>
		<pubDate>Sat, 29 Mar 2008 12:33:24 +0000</pubDate>
		<dc:creator>lcruz</dc:creator>
				<category><![CDATA[Gente]]></category>

		<guid isPermaLink="false">http://blog.developer.cl/?p=14</guid>
		<description><![CDATA[He estado buscando programadores para la empresa donde trabajo, siempre cuando lo hago busco un “no se que” que podría describir como un deseo interno de crecimiento, de ser un programador “de verdad”, no quiero ofender a nadie, no digo que no existan buenos programadores, pero busco a aquellos que día a día se preocupan [...]]]></description>
			<content:encoded><![CDATA[<p>He estado buscando programadores para la empresa donde trabajo, siempre cuando lo hago busco un “no se que” que podría describir como un deseo interno de crecimiento, de ser un programador “de verdad”, no quiero ofender a nadie, no digo que no existan buenos programadores, pero busco a aquellos que día a día se preocupan de aprender nuevas cosas, nuevas formas de desarrollo, relacionan los conocimientos para encontrar nuevas y novedosas soluciones a problemas.<br />
La mayoría de los que encuentro pertenecen al grupo de los que sólo aprenden nuevas cosas cuando se ven obligados a hacerlo, se conforman con conocer una mínima parte de un lenguaje o tal vez simplemente no se han preguntado que existe más allá de su “circulo cómodo”, no creen que existan posibilidades de hacer lo que se hizo ayer de otra forma más eficiente.   Deambulan por el mundo del desarrollo de forma inconsciente y reactiva, los detectas por que han pasado años desarrollando en lo mismo, y lo que es peor, de la misma forma.  Un buen día reaccionan y se dan cuenta del error, pero ya es tarde, han quedado fuera del mercado.</p>
<p>Existe otro grupo que tiene ese “no se que” pero se pierde al no ser guiado, al vivir entre los otros se destaca, pero esto sólo lo lleva a ser castigado con más trabajo, poco a poco comienza a sentirse como un “gran pez” en una pequeña pecera, quiere conocer otros mares y finalmente se va, algunos tienen suerte y su búsqueda constante lo lleva a encontrar más gente como él.   Yo era uno de ellos, pero emprendí mi viaje hace ya varios años, he aprendido, crecido, el camino recorrido me permite ver más lejos, me doy cuenta ahora más conciente que aún me falta mucho por recorrer.</p>
<p>Cuando miro atrás veo a muchos que se han quedado, lo veo que tristeza por que ese “no se que” se ha ido extinguiendo, oxidando con el paso del tiempo, que ganas de rescatarlos, de traerlos a trabajar conmigo, pero eso es un riesgo, quizás las exigencias del trabajo te vuelven un poco egoísta, quiero una apuesta segura.</p>
<p>Por ahora sigo buscando, si bien son pocos, están ahí, esperando los estímulos correctos, si tu eres uno de ellos no dudes en escribir, aquí ahí un puesto para ti.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Compartelo!</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D14&amp;title=Ese+no+se+qu%C3%A9%26%238230%3B" rel="nofollow" title="Agregar a&nbsp;Del.icio.us"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/delicious.png" title="Agregar a&nbsp;Del.icio.us" alt="Agregar a&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D14" rel="nofollow" title="Agregar a&nbsp;Facebook"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/facebook.png" title="Agregar a&nbsp;Facebook" alt="Agregar a&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D14&amp;title=Ese+no+se+qu%C3%A9%26%238230%3B" rel="nofollow" title="Agregar a&nbsp;Google Bookmarks"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/google.png" title="Agregar a&nbsp;Google Bookmarks" alt="Agregar a&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D14&amp;title=Ese+no+se+qu%C3%A9%26%238230%3B" rel="nofollow" title="Agregar a&nbsp;LinkedIn"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/linkedin.png" title="Agregar a&nbsp;LinkedIn" alt="Agregar a&nbsp;LinkedIn" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D14&amp;title=Ese+no+se+qu%C3%A9%26%238230%3B" rel="nofollow" title="Agregar a&nbsp;reddit"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/reddit.png" title="Agregar a&nbsp;reddit" alt="Agregar a&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D14" rel="nofollow" title="Agregar a&nbsp;Technorati"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/technorati.png" title="Agregar a&nbsp;Technorati" alt="Agregar a&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Ese+no+se+qu%C3%A9%26%238230%3B+@+http%3A%2F%2Fblog.developer.cl%2F%3Fp%3D14" rel="nofollow" title="Agregar a&nbsp;Twitter"><img class="social_img" src="http://blog.developer.cl/wp-content/plugins/social-bookmarks/images/twitter.png" title="Agregar a&nbsp;Twitter" alt="Agregar a&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://blog.developer.cl/?feed=rss2&amp;p=14</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
