<?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>3f blog &#187; web</title>
	<atom:link href="http://blog.soluciones3f.com.ar/category/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.soluciones3f.com.ar</link>
	<description>Experiencias compartidas</description>
	<lastBuildDate>Tue, 01 Nov 2011 18:08:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Utilizar mockConfig en test de Grails</title>
		<link>http://blog.soluciones3f.com.ar/2011/05/24/utilizar-mockconfig-en-test-de-grails/</link>
		<comments>http://blog.soluciones3f.com.ar/2011/05/24/utilizar-mockconfig-en-test-de-grails/#comments</comments>
		<pubDate>Tue, 24 May 2011 05:38:42 +0000</pubDate>
		<dc:creator>fernando</dc:creator>
				<category><![CDATA[grails]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[configuration holder]]></category>
		<category><![CDATA[configurationHolder]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[metaclass]]></category>
		<category><![CDATA[mock]]></category>
		<category><![CDATA[mockConfig]]></category>
		<category><![CDATA[mocking]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[test unitario]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[unit testing]]></category>

		<guid isPermaLink="false">http://blog.soluciones3f.com.ar/?p=693</guid>
		<description><![CDATA[Necesitaba realizar test unitarios en una aplicación que estamos desarrollando y una de las clases que quería testear accedía, por medio del ConfigurationHolder a datos que debían ser cargados en el Config.groovy Una búsqueda rápida en google arrojó varios resultados sobre como utilizar la magia del metaClass de groovy para mockear manualmente los objetos y [...]]]></description>
			<content:encoded><![CDATA[<p>Necesitaba realizar test unitarios en una aplicación que estamos desarrollando y una de las clases que quería testear accedía, por medio del <strong>ConfigurationHolder</strong> a datos que debían ser cargados en el <strong>Config.groovy</strong></p>
<p>Una búsqueda rápida en google arrojó varios resultados sobre como utilizar la magia del metaClass de groovy para mockear manualmente los objetos y métodos necesarios, pero hay mejores maneras de hacerlo.</p>
<p>Desde no se que versión de Grails existe el método <strong>mockConfig</strong> de la clase <strong>GrailsUnitTestCase</strong> de la cual deberían heredar todos nuestros test unitarios.</p>
<p>Lamentablemente no encontré mucha información sobre como usar este método por ningún lado. Solo había encontrado <a href="http://little418.com/2009/07/mocking-configuration-in-grails-for-unit-testing.html">un blog llamado <em>418 I&#8217;m a teapo</em>t</a> (en un artículo medio viejito) en el cual decían que no lo habían logrado hacer funcionar y por eso continuaban utilizando metaclass</p>
<p>Por suerte haciendo algunas pruebas descubrí una forma de hacerlo trabajar para mis necesidades. El secreto es que este método no acepta la sintaxis <em>jerárquica</em> (perdón, no se el nombre técnico) en el config, sino que debemos hacer todo más sencillamente.</p>
<p>Por ejemplo, en lugar de escribir</p>
<pre class="brush: plain; title: ; notranslate">
mockDomain(&quot;&quot;&quot;
    grails {
        paypal {
            server = &quot;https://www.sandbox.paypal.com/&quot;
        }
    }
&quot;&quot;&quot;)
</pre>
<p>lo que debemos escribir es</p>
<pre class="brush: plain; title: ; notranslate">
mockDomain(&quot;&quot;&quot;
    grails.paypal.server = &quot;https://www.sandbox.paypal.com/&quot;
&quot;&quot;&quot;)
</pre>
<p>De esta manera, y accediendo a la configuración por medio del ConfigurationHolder en mi aplicación, no he tenido mayores problemas.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.soluciones3f.com.ar/2011/05/24/utilizar-mockconfig-en-test-de-grails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programar Groovy y Grails con gedit (Ubuntu)</title>
		<link>http://blog.soluciones3f.com.ar/2011/05/22/programar-groovy-y-grails-con-gedit-ubuntu/</link>
		<comments>http://blog.soluciones3f.com.ar/2011/05/22/programar-groovy-y-grails-con-gedit-ubuntu/#comments</comments>
		<pubDate>Sun, 22 May 2011 18:13:44 +0000</pubDate>
		<dc:creator>fernando</dc:creator>
				<category><![CDATA[gnu linux]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[gedit]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[mime]]></category>
		<category><![CDATA[syntax]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.soluciones3f.com.ar/?p=449</guid>
		<description><![CDATA[Si bien he probado varios entornos de trabajo, a lo largo del tiempo, para desarrollar en Grails, siempre vuelvo a mi viejo amor: gedit (gnome-editor)) Por defecto, no tiene soporte para el lenguaje Groovy, pero es fácilmente configurable, e incluso sin necesidad de permisos de adminsitrador, permitiéndonos configurar nuestor ambiente de trabajo, sin modificar la [...]]]></description>
			<content:encoded><![CDATA[<p>Si bien he probado varios entornos de trabajo, a lo largo del tiempo, para desarrollar en Grails, siempre vuelvo a mi viejo amor: <strong>gedit</strong> <em>(gnome-editor))</em></p>
<p>Por defecto, no tiene soporte para el lenguaje Groovy, pero es fácilmente configurable, e incluso sin necesidad de permisos de adminsitrador, permitiéndonos configurar nuestor ambiente de trabajo, sin modificar la configuración de los demás usuarios.</p>
<p>Para esto debemos descargar el bundle con el coloreo de sintaxis, tipos mime y otras cosas del sitio http://www.grails.org/Gedit</p>
<p>En esa misma página podremos encontrar instrucciones para instalarlo, que requieren de permisos de administrador. Pero combinando un post anterior en este mismo blog, sobre como hacer que gedit abra archivos tpl como si fueran archivos php y algunos otros tips más, podremos instalarlo sin necesidad de permisos especiales.</p>
<p>Luego de descompactar el archivo descargado, copiamos los directorios plugins, snippets y styles a la carpeta ~/.gnome2/gedit</p>
<p>Para arreglar el coloreo de sintaxis y enseñarle a gedit la existencia de groovy debemos crear la carpeta (si no existe) ~/.local/share/gtksourceview-2.0/language-specs y copiar en ella los dos archivos terminados en .lang que descompactamos.</p>
<p>Despues creamos el archivo ~/.local/share/mime/packages/Overrides.xml (y las carpetas necesarias, si no existen) y agregamos en ese archivo el contenido de los dos archivos xml que se encuentran en el bundle.</p>
<p>El contenido final del archivo será similar a</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;mime-info xmlns=&quot;http://www.freedesktop.org/standards/shared-mime-info&quot;&gt;
	&lt;mime-type type=&quot;text/x-groovy&quot;&gt;
		&lt;sub-class-of type=&quot;text/x-java&quot;/&gt;
		&lt;comment&gt;Groovy Source File&lt;/comment&gt;
		&lt;glob pattern=&quot;*.groovy&quot;/&gt;
	&lt;/mime-type&gt;
	&lt;mime-type type=&quot;text/x-groovy++&quot;&gt;
		&lt;sub-class-of type=&quot;text/x-groovy&quot;/&gt;
		&lt;comment&gt;Groovy++ Source File&lt;/comment&gt;
		&lt;glob pattern=&quot;*.gpp;*.g++&quot;/&gt;
	&lt;/mime-type&gt;
	&lt;mime-type type=&quot;text/x-gsp&quot;&gt;
		&lt;sub-class-of type=&quot;text/html&quot;/&gt;
		&lt;comment&gt;Grails GSP File&lt;/comment&gt;
		&lt;glob pattern=&quot;*.gsp&quot;/&gt;
	&lt;/mime-type&gt;
&lt;/mime-info&gt;
</pre>
<p>Finalmente, para que el sistema reconozca nuestros cambios, debemos actualizar la base de datos de tipos mime, ejecutando el comando <em>update-mime-database ~/.local/share/mime</em></p>
<p>Con esto, al abrir el próximo archivo de groovy, deberíamos tener coloreo de sintaxis funcionando correctamente.</p>
<p>Se pueden seguir haciendo otras cosas como habilitar bash completion, pero lo dejaremos para otra oportunidad.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.soluciones3f.com.ar/2011/05/22/programar-groovy-y-grails-con-gedit-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Haciendo código i18n sólido con Grails y aprovechando Spring</title>
		<link>http://blog.soluciones3f.com.ar/2011/03/22/haciendo-codigo-i18n-solido-con-grails-y-aprovechando-spring/</link>
		<comments>http://blog.soluciones3f.com.ar/2011/03/22/haciendo-codigo-i18n-solido-con-grails-y-aprovechando-spring/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 16:03:45 +0000</pubDate>
		<dc:creator>fafa</dc:creator>
				<category><![CDATA[grails]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.soluciones3f.com.ar/?p=648</guid>
		<description><![CDATA[Hace algún tiempo estamos desarrollando una aplicación considerablemente grande, ejecutada e implementada en diferentes partes del mundo. Hasta ahora, Portugal, España, Italia, Brasil, México, próximamente UK. Justamente por esas características necesitábamos tener los contenidos en diferentes idiomas y seleccionar aspectos del sitio en base al país de origen. En otras palabras, nos interesaba decirle a [...]]]></description>
			<content:encoded><![CDATA[<p>Hace algún tiempo estamos desarrollando una aplicación considerablemente grande, ejecutada e implementada en diferentes partes del mundo. Hasta ahora, Portugal, España, Italia, Brasil, México, próximamente UK.</p>
<p>Justamente por esas características necesitábamos tener los contenidos en diferentes idiomas y seleccionar aspectos del sitio en base al país de origen. En otras palabras, nos interesaba decirle a los brasileros cosas que son importantes para ellos y no cosas que sean importantes para los italianos. (por decir un ejemplo)</p>
<p>La solución vino de la mano de algunas herramientas que Grails, de la mano de Spring, nos da. Entre las clases están:<br />
<code><br />
org.springframework.context.i18n.LocaleContextHolder as LCH<br />
org.springframework.web.servlet.support.RequestContextUtils as RCU<br />
org.springframework.web.context.request.RequestContextHolder as RCH<br />
</code><br />
Lo más cuiroso es que, aunque estas clases parecieran ser las de Spring mismo&#8230; por detrás, hay cosas de Grails ocurriendo y, como para citar un ejemplo el<br />
<code><br />
org.springframework.web.context.request.RequestContextHolder.currentRequestAttributes()<br />
</code><br />
que debería dar un <a href="http://static.springsource.org/spring/docs/current/api/org/springframework/web/context/request/RequestAttributes.html">org.springframework.web.context.request.RequestAttributes</a> internamente está dando algo diferente, directamente provisto por Grails y por supuesto gracias a su magia con mucha más funcionalidad, llamado <a href="http://grails.org/doc/latest/api/org/codehaus/groovy/grails/web/servlet/mvc/GrailsWebRequest.html">GrailsWebRequest</a>.</p>
<p>A pesar de mi actitud quejosa tengo que aceptar que atar confiar en una estructura ya formada, probada y sostenida en tecnologías como Spring era mucho más confiable que terminar transfiriendo el valor &#8220;request&#8221; en todas las clases de negocio y controladores de nuestro proyecto.</p>
<p>Gracias Grails.</p>
<p>pd: Está más que claro que no es la única clase de Spring que Grails está encapsulando, así que el día de mañana, si llegasen a tener un problema de este tipo recuerden que hay luz del otro lado del puente.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.soluciones3f.com.ar/2011/03/22/haciendo-codigo-i18n-solido-con-grails-y-aprovechando-spring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reflexiones y descubrimientos relacionados con mime-type, gedit y smarty</title>
		<link>http://blog.soluciones3f.com.ar/2011/02/16/reflexiones-y-descubrimientos-relacionados-con-mime-type-gedit-y-smarty/</link>
		<comments>http://blog.soluciones3f.com.ar/2011/02/16/reflexiones-y-descubrimientos-relacionados-con-mime-type-gedit-y-smarty/#comments</comments>
		<pubDate>Thu, 17 Feb 2011 01:20:52 +0000</pubDate>
		<dc:creator>fernando</dc:creator>
				<category><![CDATA[gnu linux]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[coloreo de sintaxis]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[editor de texto]]></category>
		<category><![CDATA[gedit]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mime type]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[smarty]]></category>
		<category><![CDATA[syntax]]></category>
		<category><![CDATA[text editor]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.soluciones3f.com.ar/?p=643</guid>
		<description><![CDATA[Siempre me molestó que para hacer que gedit reconozca un determinado tipo de archivos de una determinada manera, tenía que modificar archivos en el directorio /usr Particularmente lo que me molestaba tener que actualizar eran los tipos MIME que identifican un determinado archivo, con un determinado tipo y gedit como nautilus utilizan para saber como [...]]]></description>
			<content:encoded><![CDATA[<p>Siempre me molestó que para hacer que gedit reconozca un determinado tipo de archivos de una determinada manera, tenía que modificar archivos en el directorio /usr</p>
<p>Particularmente lo que me molestaba tener que actualizar eran los tipos MIME que identifican un determinado archivo, con un determinado tipo y gedit como nautilus utilizan para saber como abrir cada archivo, de que forma colorearlo, etc. Para modificar ese directorio se necesita permisos de administrador y siempre me pareció que debería haber una forma de hacerlo desde mi cuenta de usuario limitado.</p>
<p>Hoy, que estaba trabajado con PHP, queria abrir unos archivos de Smarty que tienen extensión tpl, y que se colorearan automáticamente como html, que es el lenguaje más cercano que reconoce (o al menos de los que vienen por defecto) y decidí buscar en internet una forma de hacerlo y encontré dos páginas, por un lado el blog de c3b en un artículo titulado <a href="http://www.c3b.co.uk/?p=32">Alternative method for opening Smarty templates with HTML syntax highlighting in gedit</a> y también en la página de gnome bajo el nombre <a href="http://library.gnome.org/admin/system-admin-guide/stable/mimetypes-modifying.html.en">Modifying MIME types</a></p>
<p>Combinando el conocimiento de ambos sitios, logré que al hacer doble-click sobre un archivo tpl, se me abra automáticamente el gedit (y no firefox!) y se me coloree automáticamente la sintaxis como PHP</p>
<p>¿Cual fue el procedimiento? Fácil.</p>
<p><span id="more-643"></span>Lo primero que hice fue crear la carpeta <em>~/.local/share/mime/packages</em></p>
<p>En esa carpeta creé un archivo llamado Overrides.xml con el siguiente contenido</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version='1.0' encoding='utf-8'?&gt;
&lt;mime-info xmlns=&quot;http://www.freedesktop.org/standards/shared-mime-info&quot;&gt;
    &lt;mime-type type=&quot;application/x-php&quot;&gt;
        &lt;glob pattern=&quot;*.tpl&quot;/&gt;
    &lt;/mime-type&gt;
&lt;/mime-info&gt;
</pre>
<p>Luego ejecuté el comando <em>update-mime-database ~/.local/share/mime</em></p>
<p>La lógica detras de este procedimiento, es que en el archivo Overrides.xml puedo crear nuevas asociaciones, o modificar exisntes. En este caso en particular, se le informa al sistema que los archivos .tpl son archivos PHP, y por lo tanto lo colorea automáticamente como PHP</p>
<p>Y todo esto sin usar sudo ni una sola vez <img src='http://blog.soluciones3f.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.soluciones3f.com.ar/2011/02/16/reflexiones-y-descubrimientos-relacionados-con-mime-type-gedit-y-smarty/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Como acceder a Vmware desde Ubuntu y no morir en le intento</title>
		<link>http://blog.soluciones3f.com.ar/2010/10/22/como-acceder-a-vmware-desde-ubuntu-y-no-morir-en-le-intento/</link>
		<comments>http://blog.soluciones3f.com.ar/2010/10/22/como-acceder-a-vmware-desde-ubuntu-y-no-morir-en-le-intento/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 21:34:01 +0000</pubDate>
		<dc:creator>fernando</dc:creator>
				<category><![CDATA[gnu linux]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[flechas]]></category>
		<category><![CDATA[keymap]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[teclado]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[virtualizacion]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://blog.soluciones3f.com.ar/?p=630</guid>
		<description><![CDATA[Si tenemos una versión de Ubuntu no necesariamente moderna, pero que ya tiene Firefox 3.5 e intentamos acceder a la interfaz Web de VMware Server nos llevaremos la desagradable sorpresa que por más que instalemos el complemento de VMware para manejar las máquinas virtuales, no funciona. Esto se debe a una incompatibilidad entre el Plugin  [...]]]></description>
			<content:encoded><![CDATA[<p>Si tenemos una versión de <a title="Ubuntu" href="ubuntu.com">Ubuntu</a> no necesariamente moderna, pero que ya tiene <a href="http://getfirefox.com">Firefox</a> 3.5 e intentamos acceder a la interfaz Web de <a href="http://www.vmware.com/products/server/">VMware Server</a> nos llevaremos la desagradable sorpresa que por más que instalemos el complemento de VMware para manejar las máquinas virtuales, no funciona.</p>
<p>Esto se debe a una incompatibilidad entre el Plugin  de VMware y esta versión de Firefox, lamentablemente no hay forma de hacerlo funcionar dentro de la ventana del explorador, pero es fácil de ejecutar.</p>
<p>Para ejecutarlo basta ejecutar el archivo <strong>vmware-vmrc</strong> que se encuentra en el directorio <strong>~/.mozilla/firefox/<em>&lt;perfil&gt;</em>/extensions/VMwareVM</strong></p>
<p>Donde<em> &lt;perfil&gt; </em>es el directorio donde se guarda e perfil del usuario.. a menudo será el único directorio dentro de ~/.mozilla/firefox y si hay más de un directorio, seguramente sabrás como identificarlo <img src='http://blog.soluciones3f.com.ar/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Aparecerá una pantalla donde deberás ingresar la url o ip del servidor (y el puerto, ejemplo 127.0.0.1:8333), luego listará todas las máquinas virtuales disponibles&#8230; y listo.. estarás controlando el sistema.</p>
<p>Luego de hacer esto te descepcionaras al ver que no anda parte del teclado. La solución a esto más facil que encontré, aunque no arregla todas las teclas, si arregla los cursores y lo que necesito para poder terminar de instalar el sistema es crear en el directorio <strong>~/.vmware</strong> un archivo llamado <strong>config</strong> con el texto <strong>xkeymap.nokeycodeMap = true</strong></p>
<p>Luego de esto, si todo sale bien&#8230; ya podremos utilizar las maquinas virtuales de vmware sin problema desde nuestro equipo <img src='http://blog.soluciones3f.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.soluciones3f.com.ar/2010/10/22/como-acceder-a-vmware-desde-ubuntu-y-no-morir-en-le-intento/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>jQuery, Manuales y una pequeña opinión personal</title>
		<link>http://blog.soluciones3f.com.ar/2010/10/15/jquery-manuales-y-una-pequena-opinion-personal/</link>
		<comments>http://blog.soluciones3f.com.ar/2010/10/15/jquery-manuales-y-una-pequena-opinion-personal/#comments</comments>
		<pubDate>Fri, 15 Oct 2010 16:46:15 +0000</pubDate>
		<dc:creator>fafa</dc:creator>
				<category><![CDATA[html]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://blog.soluciones3f.com.ar/?p=626</guid>
		<description><![CDATA[Hace poco más de un año, tuvimos internamente una gran discusión sobre qué tecnología (o framework, mejor dicho) elegir para el desarrollo de nuestras aplicaciones Web. La verdad es que las opciones eran muchas y ninguna terminaba de convencernos. Por un lado está Prototype, que es el clásico, más usado (a mi parecer) y por [...]]]></description>
			<content:encoded><![CDATA[<p>Hace poco más de un año, tuvimos internamente una gran discusión sobre qué tecnología (o framework, mejor dicho) elegir para el desarrollo de nuestras aplicaciones Web. La verdad es que las opciones eran muchas y ninguna terminaba de convencernos. </p>
<p>Por un lado está <a href="http://www.prototypejs.org/">Prototype</a>, que es el clásico, más usado (a mi parecer) y por sobre manera sencillo.<br />
Por otro lado, aparece también <a href="http://developer.yahoo.com/yui/">YUI</a> la alternativa de Yahoo que en general se dice que es super rápido, pero al mismo tiempo se propone como gran patrón de todos usando un modelo de objetos interesante y de por si complejo por con una excelente documentación y funciones de vista.<br />
Y, claro, por final y no por eso menos importante, está <a href="http://jquery.com/">jQuery</a>, quien aparecería, según nuestro criterio como el gran vencedor de toda esta lucha. ¿Por qué? porque es sencillo, es práctico, es escalable, es rápido y al estar orientado a plugins permite extenderlo hasta el infinito y más allá (si, me copié la cita de Buzz Lightyear), por eso en esta ocasión, además de recomendar el uso de jQuery como framework principal de javascript, les sugiero que lean <a href="http://www.noupe.com/jquery/all-about-jquery-plugins-tutorials-and-resources.html">este link</a> que contiene muchísimo material de estudio y referencia que estoy seguro lo van a encontrar interesante.</p>
<p>¡Espero les sirva!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.soluciones3f.com.ar/2010/10/15/jquery-manuales-y-una-pequena-opinion-personal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash 64 Bits para Linux</title>
		<link>http://blog.soluciones3f.com.ar/2010/09/19/flash-64-bits-para-linux/</link>
		<comments>http://blog.soluciones3f.com.ar/2010/09/19/flash-64-bits-para-linux/#comments</comments>
		<pubDate>Sun, 19 Sep 2010 17:59:36 +0000</pubDate>
		<dc:creator>fernando</dc:creator>
				<category><![CDATA[gnu linux]]></category>
		<category><![CDATA[sociedad]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[64 bits]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[macromedia]]></category>
		<category><![CDATA[maverick]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.soluciones3f.com.ar/?p=618</guid>
		<description><![CDATA[Creo que una noticia que nunca llegué a escribir es como un día intenté instalar el plugin de Flash de 64 Bits en mi Ubuntu GNU/Linux y al acceder a la página de Flash encontrarme con que habían quitado el beta del plugin. Si bien Flash no me gusta y creo que está en proceso [...]]]></description>
			<content:encoded><![CDATA[<p>Creo que una noticia que nunca llegué a escribir es como un día intenté instalar el plugin de Flash de 64 Bits en mi <a href="http://ubuntu.com">Ubuntu GNU/Linux </a>y al acceder a la página de Flash encontrarme con que habían quitado el beta del plugin.</p>
<p>Si bien Flash no me gusta y creo que está en proceso de desaparecer, el no tener una versión nativa de 64 bits me es molesto. Por un lado necesito instalar un montón de dependencias, que lejos de ayudar molestan, para poder ejecutar la versión de 32 bits, y además si no lo hago no puedo jugar al Gran DT (ni acceder a casi el 30% de las páginas web).</p>
<p>Hoy, aun configurando la beta de Ubuntu 10.10 Maverick, me puse a buscar si ya existía algun <a href="http://labs.adobe.com/technologies/flashplayer10/">Flash de 64bits</a> y me llevé la grata sorpresa. Además de volver a publicarse en el sitio de Adobe (para linux, mac y widows) , encontré un PPA para poder instalarlo utilizando apt-get</p>
<p>Basta con los siguientes comandos</p>
<blockquote>
<pre>sudo add-apt-repository ppa:sevenmachines/flash
sudo apt-get update &amp;&amp; sudo apt-get install flashplugin64-installer</pre>
</blockquote>
<p>Para mayor información los remito al blog de <a href="http://www.omgubuntu.co.uk/2010/09/install-64bit-flash-from-a-ppa-or-deb/?utm_source=feedburner&amp;utm_medium=twitter&amp;utm_campaign=Feed%3A+d0od+%28Omg!+Ubuntu!%29">OMG! Ubuntu!</a> de donde saqué esta información</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.soluciones3f.com.ar/2010/09/19/flash-64-bits-para-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cambios de seguridad en Firefox 4 por el exploit :visited</title>
		<link>http://blog.soluciones3f.com.ar/2010/09/10/cambios-de-seguridad-en-firefox-4-por-el-exploit-visited/</link>
		<comments>http://blog.soluciones3f.com.ar/2010/09/10/cambios-de-seguridad-en-firefox-4-por-el-exploit-visited/#comments</comments>
		<pubDate>Fri, 10 Sep 2010 04:29:25 +0000</pubDate>
		<dc:creator>fernando</dc:creator>
				<category><![CDATA[html]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[sociedad]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[accesibilidad]]></category>
		<category><![CDATA[accesibility]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[links]]></category>
		<category><![CDATA[visited]]></category>

		<guid isPermaLink="false">http://blog.soluciones3f.com.ar/?p=613</guid>
		<description><![CDATA[Cuando uno recien termina de formatear la computadora, una de las tareas más divertidas es bajar megas y megas de programas para reinstalar. Y mientras esos programas están bajando lo mejor que uno puede hacer es leer blogs. Ayer había visto que mi compañero Facundo estaba utilizando Firefox 4 Beta 5,  y me pregunté cuales [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando uno recien termina de formatear la computadora, una de las tareas más divertidas es bajar megas y megas de programas para reinstalar. Y mientras esos programas están bajando lo mejor que uno puede hacer es leer blogs.</p>
<p>Ayer había visto que mi compañero Facundo estaba utilizando Firefox 4 Beta 5,  y me pregunté cuales eran las diferencias y mejoras que se planteaban agregar en esta nueva versión de mi explorador favorito. Por este motivo hoy leí los <a href="http://www.mozilla.com/en-US/firefox/4.0b5/releasenotes/">release notes que figuran en la página de mozilla</a> y entre muchos cambios que nombran uno me llamó la atención y decidí escribir algunas líneas al respecto aquí</p>
<p>La característica en cuestión es <a href="http://hacks.mozilla.org/2010/03/privacy-related-changes-coming-to-css-vistited/">CSS :visited selectors have been changed to block websites from being able to check a user&#8217;s browsing history.</a> Lo cual se traduce más o menos como <em>El selector :visited de CSS ha sido cambiado para impedir que los sitios puedan chequear las páginas visitadas del usuario</em></p>
<p>La génesis del problema es que, actualmente, una página web pueda mostrar una larga lista de links y aplicarles por medio del selector <em>:visited</em> un estilo que diferencie los links visitados de los no visitados. Y luego utilizando algunas funciones JavaScript determinar cuales aparecen con un estilo u otro e informarselo al servidor.</p>
<p>En mi humilde opinión, no es un bug que requiera ser arreglado, sinó mas bien una característica y comportamiento de los estilos CSS, sin embargo entiendo los motivo (phishing y malas intenciones) para que se quiera bloquear este posible vector de ataque a la privacidad de un usuario.</p>
<p>Sin embargo, lo que más me llamó la atención es la forma en que plantean resolverlo, que básicamente son</p>
<ol>
<li>Algunas funciones de javascript mentirán en sus resultados para no delatar las páginas visitadas</li>
<li>Limitar <strong>muchísimo</strong> los estilos que se podrán aplicar al selector :visited reduciéndolos básicamente a sólo cambiar de color</li>
</ol>
<p>Ante semejante limitación, en esa misma página, se alzaron las voces a favor y en contra con argumentos muy interesantes de ambos lados.</p>
<p>Desde mi posición de ignorante amateur, la idea que Javascript mienta si bien en primera instancia no me pareció mala, me gustó mucho más el que en lugar de mentir se generen errores cuando se intenten acceder a propiedades que deberían ser limitadas.</p>
<p>Si bien muchas páginas que actualmente funcionan correctamente, comenzarían a mostrar errores por culpa de javascript, no creo que existan muchas que realmente necesiten acceder a las funciones que están involucradas. En cambio el mentir en lo que retorna una función me parece simplemente equivocado.</p>
<p>Es, sin embargo, el segundo punto que nombro el que mas me inquieta</p>
<p>Aunque no soy un diseñador experimentado he utilizado en varias ocaciones el pseudo selector <em>:visited</em> para agregar información al usuario resaltándole los links no visitados de los que ya ha estado navegando.</p>
<p>En algunos casos esto lo he realizado utilizando diferentes colores, o subrayando el texto, pero en muchos mi estrategia fue agregar un borde, o cambiar el tamaño de una tipografía o incluso pasandola a mayúsculas o minúsculas.</p>
<p>Ninguna de estas acciones funcionará con el nuevo modelo, por lo que algunos sitios dejarán de funcionar correctamente. Afortunadamente este cambio no hará al sitio inusable, pero si lo afectará visualmente. e incluso limita mis posibilidades de diseño.</p>
<p>Por otro lado, como bien dicen en el sitio de mozilla, otros engines de renderización html, como WebKit (el  utilizado por Google Chrome) están implementando las mismas restricciones por lo que es algo bueno que todos tomen las mismas medidas (sería muy desagradable y problemático que algunos tiren errores, otros mientas, etc) y además deberemos convivir con estas limitaciones, porque si la mayoría de los exploradores las adopta, serán unas limitaciones que llegarán para quedarse.</p>
<p>Esperemos que no afecte tanto como algunos dicen, aunque supongo que afectará más de lo que los optimistas piensan. De mi parte me adaptaré a los tiempos actuales, y trataré de ir evitando el uso de estas características desde ahora.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.soluciones3f.com.ar/2010/09/10/cambios-de-seguridad-en-firefox-4-por-el-exploit-visited/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5 &#8211; Custom Data</title>
		<link>http://blog.soluciones3f.com.ar/2010/07/26/html5-custom-data/</link>
		<comments>http://blog.soluciones3f.com.ar/2010/07/26/html5-custom-data/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 15:45:25 +0000</pubDate>
		<dc:creator>fernando</dc:creator>
				<category><![CDATA[html]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[custom data]]></category>
		<category><![CDATA[estandar]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[web develpment]]></category>
		<category><![CDATA[webiste]]></category>
		<category><![CDATA[xhtml]]></category>
		<category><![CDATA[xhtml5]]></category>

		<guid isPermaLink="false">http://blog.soluciones3f.com.ar/?p=593</guid>
		<description><![CDATA[Seguramente llegamos tarde,  pero siempre es bueno reconocer las cosas buenas, o al menos que nos resultan beneficiosas. En este caso estoy haciendo un sitio dinamico, donde necesitaba agregar información extra a los tags html para luego ser utilizada desde javascript. Hasta hoy, no habia una forma que realmente me gustara de realizar esto, ya [...]]]></description>
			<content:encoded><![CDATA[<p>Seguramente llegamos tarde,  pero siempre es bueno reconocer las cosas buenas, o al menos que nos resultan beneficiosas. En este caso estoy haciendo un sitio dinamico, donde necesitaba agregar información extra a los tags html para luego ser utilizada desde javascript.</p>
<p>Hasta hoy, no habia una forma que realmente me gustara de realizar esto, ya que o eran muy complejas, o no pasan la prueba de XHTML válido. Estas eran a pesar de la especificación agregar los atributos a los tags html directamente y luego recuperarlos utilizando getAttribute, o utilizando alguna librería de javassscript (o javascript puro) para realizar la misma tarea, pero 100% en el lado de javascript y asi pasar las validaciones de html.</p>
<p>Pero hoy investigando sobre HTML5 encontré que finalmente definieron una manera estructurada de lograr este objetivo. Así que a diseñar paginas HTML5 se ha dicho <img src='http://blog.soluciones3f.com.ar/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Rápidamente, todos los atributos que se definan con el prefijo <strong>data-</strong> se conciderarán validos y como datos costumizados, que no afectan la renderizacion del sitio. Justo lo que quería !</p>
<p>Mas información pueden encontrar en los sitios que me base los cuales fueron <a href="http://www.javascriptkit.com/dhtmltutors/customattributes.shtml">JavaScript Kit</a>, el <a href="http://ejohn.org/blog/html-5-data-attributes/">blog de John Resig</a> y también en la pagina de referencia formal, o sea la <a href="http://dev.w3.org/html5/spec/elements.html#embedding-custom-non-visible-data">especificación HTML5</a> (que aun se encuentra en draft)</p>
<p>Aunque me parecen maravillosas noticias, concuerdo igualmente que esta especificación, en el futuro y cuando se popularize su uso va a llevar a un caos de colision de nombres, como indican en la página <a href="http://html5doctor.com/html5-custom-data-attributes/">html5Doctor</a></p>
<p>Al margen de custom-data, otra cosa que estoy investigando y espero pronto usar para poder comentarla en este blog (aunque aun no he tenido la necesidad de hacerlo) es la especificación sobre microdata.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.soluciones3f.com.ar/2010/07/26/html5-custom-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Facebook una herramienta de comunicación?</title>
		<link>http://blog.soluciones3f.com.ar/2010/05/17/%c2%bffacebook-una-herramienta-de-comunicacion/</link>
		<comments>http://blog.soluciones3f.com.ar/2010/05/17/%c2%bffacebook-una-herramienta-de-comunicacion/#comments</comments>
		<pubDate>Mon, 17 May 2010 22:17:05 +0000</pubDate>
		<dc:creator>fafa</dc:creator>
				<category><![CDATA[sociedad]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[facebook]]></category>

		<guid isPermaLink="false">http://blog.soluciones3f.com.ar/?p=539</guid>
		<description><![CDATA[Hace algunos días me encontré con varios links que &#8220;critican&#8221; la actitud que la gente ha tomado hoy en día con facebook, pareciera que todo pasa por lo que se dice y no se dice dentro de esta red social. Pareciera que ya no tenemos ganas de comunicarnos y encontrarnos, parece que ahora lo importante [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.soluciones3f.com.ar/wp-content/uploads/2010/05/facebook-roto.png" rel="lightbox[539]"><img class="alignleft size-full wp-image-541" title="facebook-roto" src="http://blog.soluciones3f.com.ar/wp-content/uploads/2010/05/facebook-roto.png" alt="" width="246" height="82" /></a>Hace algunos días me encontré con varios links que &#8220;critican&#8221; la actitud que la gente ha tomado hoy en día con facebook, pareciera que todo pasa por lo que se dice y no se dice dentro de esta red social. Pareciera que ya no tenemos ganas de comunicarnos y encontrarnos, parece que ahora lo importante (e interesante) es hacer cosas del tipo:</p>
<ul>
<li>comentarios en los mensajes personales de nuestros amigos</li>
<li>vemos fotos de personas que ni conocemos, ni nunca vimos personalmente pero nos divertimos viendo qué es de su vida (?)</li>
<li>&#8220;nos gusta&#8221; o &#8220;no nos gustan&#8221; cosas que en realidad no nos interesaron nunca ni mirar</li>
<li>relaciones? resulta que ahora mi estado amoroso en facebook es real y muy importante para mi circulo de amigos</li>
<li>tengo una granja y necesito que mis amigos la vean y ayuden a cultivarla</li>
</ul>
<p>Yo tengo en mente que facebook es una genial herramienta para conectarme con gente que no veo diariamente o que está a una distancia tan grande que me es imposible mantener contacto&#8230; como gente que conocí de viaje, amigos del secundario (con los que he mantenido contacto y organizamos juntadas de vez en cuando) o personas que están en el exterior. Hasta es bueno para hacer anuncios a tus amigos de forma que se enteren en que andás por estos días&#8230; pero, vamos&#8230; tampoco vamos a convertirnos en facebook adictos y que todo lo que nos pase sea exclusivamente a través de ahí! De hecho ahora nos encontramos con que tenemos: buzz, twitter, facebook, orkut&#8230; uff&#8230; Estos videos, a mi parecer, nos muestran un poco en que nos está convirtiendo facebook&#8230; ¿queremos terminar así?</p>
<p><strong>Ahí van los links</strong></p>
<ul>
<li><a href="http://tv.gawker.com/5512185/south-park-explains-everything-that-is-annoying-about-facebook" target="_blank">http://tv.gawker.com/5512185/south-park-explains-everything-that-is-annoying-about-facebook</a></li>
<li><span style="font-family: tahoma,sans-serif;"><a href="http://www.youtube.com/watch?v=OiqHXPZwkYk" target="_blank">http://www.youtube.com/watch?v=OiqHXPZwkYk</a></span></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.soluciones3f.com.ar/2010/05/17/%c2%bffacebook-una-herramienta-de-comunicacion/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

