<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Uninstallme</title>
	
	<link>http://uninstallme.com</link>
	<description>Desarrollo frontend, estándares web, accesibilidad y más</description>
	<lastBuildDate>Sun, 21 Mar 2010 12:30:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/uninstallme" /><feedburner:info uri="uninstallme" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license><feedburner:emailServiceId>uninstallme</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Suavizado de fuentes embebidas mediante @font-face en Internet Explorer</title>
		<link>http://feedproxy.google.com/~r/uninstallme/~3/SiWgzCSFFvc/</link>
		<comments>http://uninstallme.com/suavizado-de-fuentes-embebidas-mediante-font-face-en-internet-explorer/#comments</comments>
		<pubDate>Sun, 21 Mar 2010 12:25:05 +0000</pubDate>
		<dc:creator>kcmr</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Navegadores]]></category>
		<category><![CDATA[@font-face]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[legibilidad]]></category>

		<guid isPermaLink="false">http://uninstallme.com/?p=776</guid>
		<description><![CDATA[Cada vez son más los sitios que usan @font-face y por fin parece que el abanico de fuentes disponibles en páginas web deja de estar limitado a Arial, Verdana, Georgia y poco más. De todos los métodos que se han usado durante años para utilizar fuentes que no son de sistema, @font-face es sin duda [...]]]></description>
			<content:encoded><![CDATA[<p>Cada vez son más los sitios que usan @font-face y por fin parece que el abanico de fuentes disponibles en páginas web deja de estar limitado a Arial, Verdana, Georgia y poco más. De todos los métodos que se han usado durante años para utilizar fuentes que no son de sistema, @font-face es sin duda el más accesible, pero ¡cómo no!, la cosa no podía ser tan fácil. Una vez más es Internet Explorer el que tenía que causar algún problema.</p>
<p>Cuando el suavizado de fuentes mediante ClearType está habilitado en Windows o el suavizado de fuentes está desactivado por completo, Internet Explorer muestra algunas fuentes embebidas mediante @font-face con un aspecto pixelado. Si el tamaño de fuente es pequeño se empeora la legibilidad.</p>
<div id="attachment_779" class="wp-caption aligncenter" style="width: 317px"><img class="size-full wp-image-779" src="http://uninstallme.com/wp/wp-content/sin-suavizado.gif" alt="" width="307" height="110" /><p class="wp-caption-text">Suavizado de texto desactivado</p></div>
<div id="attachment_778" class="wp-caption aligncenter" style="width: 388px"><img class="size-full wp-image-778" src="http://uninstallme.com/wp/wp-content/cleartype1.gif" alt="" width="378" height="99" /><p class="wp-caption-text">Suavizado de texto mediante ClearType</p></div>
<p>Este problema no ocurre cuando está activado el suavizado estándar.</p>
<div id="attachment_780" class="wp-caption aligncenter" style="width: 319px"><img class="size-full wp-image-780" src="http://uninstallme.com/wp/wp-content/suavizado-estandar.gif" alt="" width="309" height="117" /><p class="wp-caption-text">Suavizado de texto estándar de Windows</p></div>
<p>Este efecto pixelado se puede corregir mediante una técnica algo sucia. Consiste en la utilización de un filtro CSS para desactivar el suavizado de texto. Funciona porque Internet Explorer no aplica el suavizado de texto mediante ClearType a los elementos con filtros CSS propietarios.</p>
<p>Código CSS:</p>
<pre><code>
.suavizado{ filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=hIEfix.png,sizingMethod=crop);
min-height: 0;
color: green;}
</code></pre>
<p>Utilizando este filtro el resultado es el que se puede ver en las siguientes capturas:</p>
<div id="attachment_781" class="wp-caption aligncenter" style="width: 335px"><img class="size-full wp-image-781 " src="http://uninstallme.com/wp/wp-content/sin-suavizado-filtro.gif" alt="" width="325" height="152" /><p class="wp-caption-text">Suavizado de texto desactivado. Texto verde con filtro CSS</p></div>
<div id="attachment_782" class="wp-caption aligncenter" style="width: 376px"><img class="size-full wp-image-782" src="http://uninstallme.com/wp/wp-content/cleartype-filtro.gif" alt="" width="366" height="112" /><p class="wp-caption-text">Suavizado mediante ClearType. Texto verde con filtro CSS.</p></div>
<p>Sin embargo esta técnica tiene otro problema, y es que al hacer zoom para aumentar el tamaño de fuente, aparecen bordes negros alrededor de la fuente que nuevamente dificultan su legibilidad. Eso sí, sobre fondo negro no se aprecia este fallo, pero sobre fondo blanco nos encontramos con este aspecto:</p>
<div id="attachment_783" class="wp-caption aligncenter" style="width: 305px"><img class="size-full wp-image-783 " src="http://uninstallme.com/wp/wp-content/filtro-zoom.gif" alt="" width="295" height="138" /><p class="wp-caption-text">Zoom sobre texto con filtro CSS. Legibilidad empeorada.</p></div>
<p>Si decidimos utilizar esta técnica sería recomendable ofrecer también un método para desactivarla a petición del usuario, por ejemplo mediante la adición o eliminación de una clase CSS a los elementos afectados.</p>
<p>Quizá con Internet Explorer 9 tengamos más suerte.</p>
<p><strong>Más información</strong> en <a lang="en" hreflang="en" href="http://allcreatives.net/2009/12/05/smoother-font-face-embedding-in-ie-7-8/">Smoother @font-face embedding in IE 7 &amp; 8</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/uninstallme?a=SiWgzCSFFvc:51CO-Hm_4Ng:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/uninstallme?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=SiWgzCSFFvc:51CO-Hm_4Ng:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/uninstallme?i=SiWgzCSFFvc:51CO-Hm_4Ng:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=SiWgzCSFFvc:51CO-Hm_4Ng:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/uninstallme?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=SiWgzCSFFvc:51CO-Hm_4Ng:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/uninstallme?i=SiWgzCSFFvc:51CO-Hm_4Ng:3QFJfmc7Om4" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/uninstallme/~4/SiWgzCSFFvc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://uninstallme.com/suavizado-de-fuentes-embebidas-mediante-font-face-en-internet-explorer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://uninstallme.com/suavizado-de-fuentes-embebidas-mediante-font-face-en-internet-explorer/</feedburner:origLink></item>
		<item>
		<title>LESS: variables y operaciones en CSS</title>
		<link>http://feedproxy.google.com/~r/uninstallme/~3/IFQ4t5v6q9A/</link>
		<comments>http://uninstallme.com/less-variables-y-operaciones-en-css/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 01:35:44 +0000</pubDate>
		<dc:creator>kcmr</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Utilidades]]></category>

		<guid isPermaLink="false">http://uninstallme.com/?p=767</guid>
		<description><![CDATA[LESS es una extensión de CSS escrita en Ruby que permite utilizar variables, operaciones, reglas anidadas y mezclas con paso de parámetros que se comportan como funciones.
De todas sus posibilidades, las dos que me resultan más interesantes y que voy a comentar son el uso de variables y las operaciones.
Instalación de LESS
En Mac OS X, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://lesscss.org/">LESS</a> es una extensión de CSS escrita en Ruby que permite utilizar variables, operaciones, reglas anidadas y mezclas con paso de parámetros que se comportan como funciones.</p>
<p>De todas sus posibilidades, las dos que me resultan más interesantes y que voy a comentar son el uso de variables y las operaciones.</p>
<h3>Instalación de LESS</h3>
<p>En Mac OS X, que ya tiene instalado ruby y ruby-gems, es tan sencillo como escribir esta línea en la consola:</p>
<pre><code>
$ sudo gem install less
</code></pre>
<p>En Windows y Linux hay que instalar primero ruby y ruby-gems.</p>
<p>Una vez instalado podemos utilizar LESS escribiendo nuestro CSS en un archivo .less tal y como lo haríamos con un archivo .css, con la diferencia de que es necesario compilarlo.</p>
<h3>Compilación de LESS</h3>
<p>Para compilar un archivo .less escribimos lo siguiente en la consola:</p>
<pre><code>
lessc style.less style.css
</code></pre>
<p>Si no se especifica el archivo de destino, se creará uno con el mismo nombre pero con la extensión .css. Es decir, la siguiente línea generaría un archivo style.css</p>
<pre><code>
lessc style.less
</code></pre>
<h3>Compilación automática</h3>
<p>Afortunadamente, no es necesario compilar el archivo manualmente cada vez que hacemos cambios, ya que es posible detectar los cambios en el archivo .less y compilar automáticamente. Para hacer esto utilizamos la instrucción &#8211;watch sobre el archivo que queremos compilar:</p>
<pre><code>
lessc style.less --watch
</code></pre>
<h3>Uso de variables y operaciones</h3>
<p>Sobre las ventajas del uso de variables en CSS sobran las explicaciones. A todos nos gustaría poder definir unas variables para colores de enlaces, texto, encabezados, fondos, etc. y poder usarlas cuando sea necesario sin tener que rebuscarlas en la CSS. También a la hora de hacer un cambio global resulta mucho más cómodo cambiar solamente el valor de una variable que todas las coincidencias. (Sí, conozco el buscar y reemplazar).</p>
<p>Para mí, el uso de variables no es su punto más fuerte, ya que se pueden usar varibles en CSS mediante PHP u otro lenguaje o incluso creando atajos de teclado personalizados en tu editor de texto, de manera que cada vez que tecleas, por ejemplo, colorLink seguido de tabulador, se escribe un color hexadecimal definido previamente. Esta última opción se puede usar con <a href="http://www.panic.com/coda/">Coda</a> (Mac).</p>
<p>Lo que más me ha gustado de LESS es la posibilidad de realizar operaciones, algo que ahorra bastante trabajo cuando se utilizan diseños elásticos.</p>
<h3>Operaciones CSS en diseños elásticos</h3>
<p>En los diseños elásticos, una unidad es relativa al elemento al que se refiere. Por ejemplo, si tenemos un encabezado de 20px de tamaño de fuente, con un margen inferior de 7px, esos 7px deben calcularse respecto a los 20 del encabezado, de manera que tenemos que hacer una división (7 / 20).</p>
<pre><code>
h2{font-size: 2em; margin-bottom: .35em;}
</code></pre>
<p>Con LESS podemos escribir esta división en la CSS.</p>
<pre><code>
h2{font-size: 2em; margin-bottom: 7 / 20em;}
</code></pre>
<p>Se añade el em al 20 para conservar la unidad de medida. De otra forma el resultado sería 0.35 en vez de 0.35em;</p>
<p>Además de ahorrarnos la operación, ya sea mediante calculadora o cabeza (siempre supone un esfuerzo), podemos ver inmediatamente qué unidad en píxeles estamos manejando en cada momento, es decir, nos ahorramos la multiplicación correspondiente o la ojeada al Firebug.</p>
<h3>Inconvenientes de LESS</h3>
<h4>Agrupación de selectores</h4>
<p>Si escribimos algo como <code>h2 a, h3 a, h4 a{font-weight: normal;}</code> el resultado al compilar es<br />
<code>h2 a{font-weight: normal;}</code><br />
<code>h3 a{font-weight: normal;}</code><br />
<code>h4 a{font-weight: normal;}</code></p>
<h4>Saltos de línea</h4>
<p>Al compilar, cada declaración se escribe en una línea dando lugar a archivos más pesados.</p>
<h4>@import y @media</h4>
<p>Simplemente, no funcionan. Las variables en LESS van precedidas del signo arroba.</p>
<h4>Transformación de colores en formato hexadecimal a palabras clave.</h4>
<p><code>#fff</code> se convierte en <code>white</code>.</p>
<p>Estos inconvenientes se pueden solucionar con la ayuda de alguna herramienta de compresión como <a href="http://www.cleancss.com/">Clean CSS</a>, que permite agrupar selectores, eliminar saltos de línea, utilizar las formas cortas de códigos de color, etc.</p>
<p>Otra herramienta útil es <a href="http://code.google.com/p/minifyme/downloads/detail?name=MinifyMe.air">MinifyMe</a>, una aplicación en Adobe AIR que se limita a eliminar comentarios y dejar todo el código en una sola línea. También sirve para comprimir Javascript.</p>
<p><strong>Más información sobre uso e instalación en la <a href="http://lesscss.org/docs.html">documentación oficial de LESS </a></strong></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/uninstallme?a=IFQ4t5v6q9A:p4eBUQrES8g:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/uninstallme?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=IFQ4t5v6q9A:p4eBUQrES8g:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/uninstallme?i=IFQ4t5v6q9A:p4eBUQrES8g:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=IFQ4t5v6q9A:p4eBUQrES8g:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/uninstallme?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=IFQ4t5v6q9A:p4eBUQrES8g:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/uninstallme?i=IFQ4t5v6q9A:p4eBUQrES8g:3QFJfmc7Om4" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/uninstallme/~4/IFQ4t5v6q9A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://uninstallme.com/less-variables-y-operaciones-en-css/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://uninstallme.com/less-variables-y-operaciones-en-css/</feedburner:origLink></item>
		<item>
		<title>Reseteado de margin y padding en CSS: un término medio</title>
		<link>http://feedproxy.google.com/~r/uninstallme/~3/E4AUsNIr96g/</link>
		<comments>http://uninstallme.com/reseteado-de-margin-y-padding-en-css-un-termino-medio/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 23:58:02 +0000</pubDate>
		<dc:creator>kcmr</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[css base]]></category>
		<category><![CDATA[css reset]]></category>

		<guid isPermaLink="false">http://uninstallme.com/?p=760</guid>
		<description><![CDATA[Aprovechando las vacaciones estoy preparando un nuevo diseño para este blog (que en algún momento estará listo) y de paso he recuestionado algunas de mis prácticas de CSS. Le ha tocado al método para establecer en 0 el margen y relleno de todos los elementos.
Son muchos los que apuestan por el método utilizado en la [...]]]></description>
			<content:encoded><![CDATA[<p>Aprovechando las vacaciones estoy preparando un nuevo diseño para este blog (que en algún momento estará listo) y de paso he recuestionado algunas de mis prácticas de CSS. Le ha tocado al método para establecer en 0 el margen y relleno de todos los elementos.</p>
<p>Son muchos los que apuestan por el método utilizado en la <a href="http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/">CSS Reset de Eric Meyer</a> en lugar del <strong>selector universal asterisco</strong>, al que suelen acusar de requerir un <strong>rendimiento excesivo para el navegador</strong>. Otro de los argumentos para evitar este selector es su <strong>efecto sobre elementos de formulario</strong>. Cito a Eric Meyer sobre esta cuestión:</p>
<blockquote xml:lang="en" cite="http://meyerweb.com/eric/thoughts/2007/04/18/reset-reasoning/"><p>This is why so many people zero out their padding and margins on everything by way of the universal selector. That’s a good start, but it does unfortunately mean that all elements will have their padding and margin zeroed, including form elements like textareas and text inputs. In some browsers, these styles will be ignored. In others, there will be no apparent effect. Still others might have the look of their inputs altered.</p></blockquote>
<p>Después de hacer unas pruebas incluyendo todos los elementos de formulario que se me han ocurrido, he comprobado que <strong>Firefox aplica un padding-right y padding-left a los elementos OPTION </strong>que queda anulado al usar el selector asterisco, mientras que el resto de navegadores sigue mostrando ese espacio, por lo que en este caso el selector universal no ayuda a eliminar diferencias entre navegadores sino todo lo contrario.</p>
<p><img class="aligncenter size-full wp-image-761" src="http://uninstallme.com/wp/wp-content/padding-ff-option.gif" alt="Captura de los estilos interpretados para un elemento OPTION en Firebug" width="291" height="152" /></p>
<p>Aunque es cierto que es un &#8220;derroche&#8221; aplicar margin y padding 0 a todos los elementos, incluso a los que por defecto no lo tienen, la regla del asterisco es facilísima de recordar y ocupa menos bytes que la tira de elementos HTML utilizados en la CSS Reset de Eric Meyer. Por otra parte, <strong>en cuanto al rendimiento</strong>, yo estoy en el punto de <strong>&#8220;si no lo veo no lo creo&#8221;</strong> y creo que en cualquier caso, tiene que ser imperceptible para el usuario final.</p>
<p>A pesar de estas ventajas me he decidido a probar el Reset de Eric Meyer.</p>
<pre class="brush:css">html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td{  margin: 0; padding: 0; font-size: 100%; }</pre>
<p>No ha sido hasta este momento cuando he podido observar un efecto que no había visto usando el selector universal. En el HTML cargo las CSS en este orden: reset, 960.css (<a href="http://960.gs">sistema de retícula de 960.gs</a>) y por último la CSS específica de la página.</p>
<pre class="brush:html">&lt;link rel="stylesheet" type="text/css" media="screen" href="css/base.css" /&gt;
&lt;link rel="stylesheet" type="text/css" media="screen" href="css/960.css" /&gt;
&lt;link rel="stylesheet" type="text/css" media="screen" href="css/style.css" /&gt;</pre>
<p>Al cargar la página, durante unos segundos me aparecía el contenido de forma lineal, lo que quiere decir que por alguna razón se estaba retrasando la carga de 960.css, que define la anchura y posicionamiento de los bloques. Logicamente le he echado la culpa al Reset de Eric Meyer, que ha sido la única modificación hecha en mi CSS inicial, aunque la verdad es que no puedo demostrarlo.</p>
<p>Si observamos los elementos HTML incluidos en el Reset de Eric Meyer, vemos que hay unos cuantos que no tienen margen ni relleno, como SPAN, A, SMALL, etc., por lo que podemos prescindir tranquilamente de ellos.</p>
<p>En Perishable Press hay un post dedicado a las <a href="http://perishablepress.com/press/2007/10/23/a-killer-collection-of-global-css-reset-styles/">múltiples técnicas de reseteado que podemos usar</a>, en el que aparece una <strong>versión reducida del Reset de Eric Meyer bastante aceptable</strong>.  Al final he decidido quedarme con una combinación, ni tan escasa como la que sólo aplica el margen y relleno a los elementos HTML y BODY, ni tan amplia como la versión completa de Eric Meyer.</p>
<pre class="brush:css">html, body, p, ul, ol, li, dl, dt, dd, h1, h2, h3, h4, h5, h6, th, td, pre, blockquote,
form, fieldset, legend, input, select, textarea, button{ margin: 0; padding: 0; font-size: 100%; }</pre>
<p>La razón por la que añado el font-size: 100%, es porque algunos elementos de formulario no heredan el tamaño de fuente del body, como tampoco heredan la familia tipográfica.</p>
<p>Lo he probado en un par de proyectos en los que había usado el asterisco y no he observado ningún cambio, así que, hasta que no me encuentre con ningún inconveniente me voy a quedar con esta lista de selectores en lugar del asterisco.</p>
<h3>Información relacionada y opiniones variadas</h3>
<ul>
<li><a href="http://meiert.com/en/blog/20080419/reset-style-sheets-are-bad/">Why &#8220;Reset&#8221; Style Sheets Are Bad</a></li>
<li><a href="http://meyerweb.com/eric/thoughts/2007/04/18/reset-reasoning/">Eric&#8217;s Archived Thoughts: Reset Reasoning</a></li>
<li><a href="http://www.fivefingercoding.com/xhtml-and-css/create-custom-css-reset">Is Your CSS Reset Doing More Harm Than Good?</a></li>
<li><a href="http://code.google.com/intl/es-ES/speed/page-speed/docs/rendering.html">Optimize browser rendering (Google Code)</a></li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/uninstallme?a=E4AUsNIr96g:_IA-mmsvfDM:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/uninstallme?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=E4AUsNIr96g:_IA-mmsvfDM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/uninstallme?i=E4AUsNIr96g:_IA-mmsvfDM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=E4AUsNIr96g:_IA-mmsvfDM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/uninstallme?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=E4AUsNIr96g:_IA-mmsvfDM:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/uninstallme?i=E4AUsNIr96g:_IA-mmsvfDM:3QFJfmc7Om4" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/uninstallme/~4/E4AUsNIr96g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://uninstallme.com/reseteado-de-margin-y-padding-en-css-un-termino-medio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://uninstallme.com/reseteado-de-margin-y-padding-en-css-un-termino-medio/</feedburner:origLink></item>
		<item>
		<title>Lazy Load de imágenes con Mootools</title>
		<link>http://feedproxy.google.com/~r/uninstallme/~3/C1aJUlBKrME/</link>
		<comments>http://uninstallme.com/lazy-load-de-imagenes-con-mootools/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 14:15:19 +0000</pubDate>
		<dc:creator>kcmr</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Utilidades]]></category>

		<guid isPermaLink="false">http://uninstallme.com/?p=755</guid>
		<description><![CDATA[La técnica &#8220;Lazy Load&#8221; consiste en detener la carga inicial de imágenes u otros elementos hasta que están en el área visible de la pantalla, momento en que se cargan con un efecto fade in (aparición suave).
Es ideal para páginas con galerías lineales de imágenes, en las que la carga de imágenes a petición (al [...]]]></description>
			<content:encoded><![CDATA[<p>La técnica &#8220;Lazy Load&#8221; consiste en detener la carga inicial de imágenes u otros elementos hasta que están en el área visible de la pantalla, momento en que se cargan con un efecto fade in (aparición suave).</p>
<p>Es ideal para páginas con galerías lineales de imágenes, en las que la carga de imágenes a petición (al hacer scroll) puede reducir considerablemente el tiempo inicial de carga de la página.</p>
<p>Existe un <a title="Lazy Load para jQuery" href="http://www.appelsiini.net/projects/lazyload">plugin para jQuery</a> y también <a title="Lazy Load para Prototype" href="http://www.bram.us/projects/js_bramus/lazierload/">uno para Prototype</a>, pero no acababa de encontrar uno que funcionara exactamente igual para Mootools, aunque <a title="Lazy Load para Mootools" href="http://mootools.net/forge/p/lazyload">existe uno</a>, así que me he decidido a hacerlo basándome en el de Prototype.</p>
<p>Es un script bastante sencillo que no contempla otras opciones como ancho y alto mínimo de las imágenes o extensión (gif, jpg, etc). Su funcionamiento se basa en reemplazar el atributo src de las imágenes que no están en el área visible de la pantalla por el de una imagen de peso muy reducido (43 bytes) y utilizar el atributo src original cuando esta imagen pasa a estar en el área visible de la pantalla. La posición de la imagen se detecta con el evento scroll de la página.</p>
<p>Para saber si la imagen está en el área visible de la pantalla he utilizado el <a title="Calcular la posición Y de un elemento en pantalla con Prototype" href="http://uninstallme.com/calcular-la-posicion-y-de-un-elemento-en-pantalla-respecto-al-area-visible-con-prototype/">método explicado en otro post</a> para hacer lo mismo con Prototype.</p>
<h3>Archivos requeridos</h3>
<ul>
<li><a href="http://mootools.net/download">Mootools Core</a></li>
<li>Imagen transparente de 1&#215;1px</li>
</ul>
<h3>Uso</h3>
<p>Se inicializa con el evento &#8216;domready&#8217; del objeto window. En la <a href="http://uninstallme.com/ejemplos/mootools-lazy-load">demo</a> se utilizan todas las imágenes, pero se podría utilizar cualquier selector, sólo las imágenes con una determinada clase, o las imágenes que estén dentro de una capa, etc.</p>
<pre class="brush:javascript">window.addEvent('domready', function(){
   $$('img').each(function(el){
      new Kcmr.MooLazyLoad(el);
   });
});</pre>
<p>Como única opción se puede pasar la ruta a la imagen de 1&#215;1px que se utiliza como sustitución de la imagen original. La ruta por defecto es &#8220;images/blank.gif&#8221;</p>
<p>Ejemplo con otros selectores y ruta personalizada a la imagen de sustitución:</p>
<pre class="brush:javascript">window.addEvent('domready', function(){
   $$('.clase img.clase').each(function(el){
      new Kcmr.MooLazyLoad(el, {
         blank: 'directorio/imagen.gif'
      });
   });
});</pre>
<h3>Demo y descarga</h3>
<ul>
<li><a href="http://uninstallme.com/ejemplos/mootools-lazy-load"><strong>Demo</strong></a></li>
<li><a href="http://uninstallme.com/ejemplos/mootools-lazy-load/js/lazyload.js"><strong>Descargar lazyload.js (1,61 KB)</strong></a></li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/uninstallme?a=C1aJUlBKrME:i4stdThnyrs:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/uninstallme?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=C1aJUlBKrME:i4stdThnyrs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/uninstallme?i=C1aJUlBKrME:i4stdThnyrs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=C1aJUlBKrME:i4stdThnyrs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/uninstallme?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=C1aJUlBKrME:i4stdThnyrs:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/uninstallme?i=C1aJUlBKrME:i4stdThnyrs:3QFJfmc7Om4" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/uninstallme/~4/C1aJUlBKrME" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://uninstallme.com/lazy-load-de-imagenes-con-mootools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://uninstallme.com/lazy-load-de-imagenes-con-mootools/</feedburner:origLink></item>
		<item>
		<title>Detectar suavizado de fuentes con javascript</title>
		<link>http://feedproxy.google.com/~r/uninstallme/~3/CwzQzZw-LWE/</link>
		<comments>http://uninstallme.com/detectar-suavizado-de-fuentes-con-javascript/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 20:54:36 +0000</pubDate>
		<dc:creator>kcmr</dc:creator>
				<category><![CDATA[Buenas ideas]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[@font-face]]></category>
		<category><![CDATA[fuentes]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://uninstallme.com/?p=750</guid>
		<description><![CDATA[En User Agent Man han publicado un script para detectar el suavizado de fuentes en el navegador. Si el suavizado de fuentes está activado, se añade una clase al elemento html que permite usar unas u otras fuentes en la CSS dependiendo de esta característica.
Este script es especialmente útil para utilizar fuentes embebidas mediante @font-face, [...]]]></description>
			<content:encoded><![CDATA[<p>En User Agent Man han publicado un <a href="http://www.useragentman.com/blog/2009/11/29/how-to-detect-font-smoothing-using-javascript/">script para detectar el suavizado de fuentes en el navegador</a>. Si el suavizado de fuentes está activado, se añade una clase al elemento html que permite usar unas u otras fuentes en la CSS dependiendo de esta característica.</p>
<p>Este script es especialmente útil para utilizar fuentes embebidas mediante @font-face, ya que la calidad del resultado depende muchísimo de si el suavizado de fuentes está o no habilitado en el SO del usuario. También es útil a la hora de decantarse por unas u otras fuentes de sistema, como por ejemplo, la Lucida Sans Unicode, que sin suavizado resulta de mala legibilidad en Windows.</p>
<h3>Información relacionada (@font-face)</h3>
<dl>
<dt><a href="http://paulirish.com/2009/bulletproof-font-face-implementation-syntax/">Bulletproof @font-face syntax</a></dt>
<dd>La mejor forma de utilizar @font-face.<br />
Existe una <a href="http://www.cssblog.es/sintaxis-de-font-face/">traducción al español en CSSBlog</a></dd>
<dt><a href="http://www.fontsquirrel.com/fontface">Font Squirrel</a></dt>
<dd>Kits de fuentes para usar mediante @font-face</dd>
<dt><a href="http://www.fontsquirrel.com/fontface/generator">@font-face generator</a></dt>
<dd>Nos permite subir una fuente y descargar el paquete completo para usar mediante @font-face</dd>
<dt><a href="http://www.kirsle.net/wizards/ttf2eot.cgi">TTF to EOT Font Converter</a></dt>
<dd>Para convertir fuentes TrueType a OpenType (EOT), el formato usado por Internet Explorer</dd>
</dl>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/uninstallme?a=CwzQzZw-LWE:4pbtrI1lPe8:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/uninstallme?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=CwzQzZw-LWE:4pbtrI1lPe8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/uninstallme?i=CwzQzZw-LWE:4pbtrI1lPe8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=CwzQzZw-LWE:4pbtrI1lPe8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/uninstallme?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=CwzQzZw-LWE:4pbtrI1lPe8:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/uninstallme?i=CwzQzZw-LWE:4pbtrI1lPe8:3QFJfmc7Om4" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/uninstallme/~4/CwzQzZw-LWE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://uninstallme.com/detectar-suavizado-de-fuentes-con-javascript/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://uninstallme.com/detectar-suavizado-de-fuentes-con-javascript/</feedburner:origLink></item>
		<item>
		<title>MySQL por línea de comandos en Mac</title>
		<link>http://feedproxy.google.com/~r/uninstallme/~3/iqMCtHI3b0M/</link>
		<comments>http://uninstallme.com/mysql-por-linea-de-comandos-en-mac/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 01:37:16 +0000</pubDate>
		<dc:creator>kcmr</dc:creator>
				<category><![CDATA[Cajón de sastre]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://uninstallme.com/?p=746</guid>
		<description><![CDATA[Hace un tiempo publicaba un método para poder utilizar comandos SQL desde la consola de Windows, que consiste en añadir el directorio de MySQL a las variables de entorno del sistema.
En Mac se puede conseguir escribiendo lo siguiente en la consola:

Machine:~ user$ sudo su
Password: (tu contraseña...)
sh-3.2# echo '/usr/local/mysql/bin' &#62;&#62; /etc/paths.d/mysql
sh-3.2#
exit

La primera vez que hice esto [...]]]></description>
			<content:encoded><![CDATA[<p>Hace un tiempo publicaba un método para poder <a href="http://uninstallme.com/mysql-por-linea-de-comandos-en-windows/">utilizar comandos SQL desde la consola de Windows</a>, que consiste en añadir el directorio de MySQL a las variables de entorno del sistema.</p>
<p>En Mac se puede conseguir escribiendo lo siguiente en la consola:</p>
<pre><code>
Machine:~ user$ sudo su
Password: (tu contraseña...)
sh-3.2# echo '/usr/local/mysql/bin' &gt;&gt; /etc/paths.d/mysql
sh-3.2#
exit
</code></pre>
<p>La primera vez que hice esto funcionó, pero después de la actualización a Snow Leopard (realmente no sé si tiene algo que ver) me he encontrado con la sorpresa de que el directorio /usr/local/mysql no existe:<br />
<code>/usr/local/mysql no such file or directory</code></p>
<p>Para los que utilicen MAMP y se hayan encontrado con este mismo problema, esta solución es la que me ha funcionado (utilizar el directorio de MAMP):</p>
<pre><code>
sh-3.2# echo <strong>'/Applications/MAMP/Library/bin/mysql'</strong> &gt;&gt; /etc/paths.d/mysql
</code></pre>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/uninstallme?a=iqMCtHI3b0M:HIDrsPbIa68:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/uninstallme?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=iqMCtHI3b0M:HIDrsPbIa68:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/uninstallme?i=iqMCtHI3b0M:HIDrsPbIa68:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=iqMCtHI3b0M:HIDrsPbIa68:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/uninstallme?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=iqMCtHI3b0M:HIDrsPbIa68:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/uninstallme?i=iqMCtHI3b0M:HIDrsPbIa68:3QFJfmc7Om4" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/uninstallme/~4/iqMCtHI3b0M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://uninstallme.com/mysql-por-linea-de-comandos-en-mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://uninstallme.com/mysql-por-linea-de-comandos-en-mac/</feedburner:origLink></item>
		<item>
		<title>Suavizado de imágenes redimensionadas con CSS en Internet Explorer</title>
		<link>http://feedproxy.google.com/~r/uninstallme/~3/LvHsCcgFW64/</link>
		<comments>http://uninstallme.com/suavizado-de-imagenes-redimensionadas-con-css-en-internet-explorer/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 23:51:58 +0000</pubDate>
		<dc:creator>kcmr</dc:creator>
				<category><![CDATA[Buenas ideas]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Navegadores]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[IE 6]]></category>
		<category><![CDATA[int]]></category>
		<category><![CDATA[internet explorer]]></category>

		<guid isPermaLink="false">http://uninstallme.com/?p=734</guid>
		<description><![CDATA[Cuando forzamos el tamaño de una imagen mediante CSS reduciendo su ancho o alto original, nos encontramos con que Internet Explorer hace cosas feas. A falta de palabras para describirlo, nada mejor que una captura:
En el blog de ZURB, que por cierto, me encanta, nos muestran un pequeño truco para suavizar las imágenes en Internet [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando forzamos el tamaño de una imagen mediante CSS reduciendo su ancho o alto original, nos encontramos con que Internet Explorer hace cosas feas. A falta de palabras para describirlo, nada mejor que una captura:</p>
<div id="attachment_736" class="wp-caption aligncenter" style="width: 285px"><img class="size-full wp-image-736" src="http://uninstallme.com/wp/wp-content/captura-suavizado.gif" alt="Captura de imágenes redimensionadas en Explorer 7" width="275" height="244" /><p class="wp-caption-text">Imágenes redimensionadas en Explorer 7</p></div>
<p>En el <a href="http://www.zurb.com/blog">blog de ZURB</a>, que por cierto, me encanta, nos muestran un pequeño truco para <strong>suavizar las imágenes en Internet Explorer</strong> entre otras <a href="http://www.zurb.com/article/173/3-ways-to-make-your-site-look-better-in-m">técnicas para mejorar la presentación visual en varios navegadores</a></p>
<pre><code>
img{-ms-interpolation-mode: bicubic;}
</code></pre>
<p>Este método no funciona en Internet Explorer 6, para el que proponen usar algo un poco más sucio que lo anterior:</p>
<pre><code>
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader (src='/path/to/image.jpg', sizingMethod='scale');
</code></pre>
<p>Afortunadamente, Internet Explorer 8 no tiene este problema.</p>
<p><a href="http://uninstallme.com/ejemplos/suavizado-imagenes-explorer"><strong>Demo suavizado de imágenes (sólo para IE 7)</strong></a></p>
<p><strong>Actualización: script para aplicar el filtro a las imágenes redimensionadas</strong></p>
<p>En <a href="http://uninstallme.com/suavizado-de-imagenes-redimensionadas-con-css-en-internet-explorer/comment-page-1/#comment-331">este comentario</a> proponen el uso de un pequeño <strong>script en jQuery para detectar si una imagen está redimensionada</strong> y en ese caso aplicarle el estilo correspondiente para IE 7 y el filtro para IE 6. De esta forma evitamos tener código no válido en la CSS y aplicamos estos estilos sólo a las imágenes que lo requieran. Ya que el código no aparece muy bien formateado en los comentarios, lo pego aquí.</p>
<p>Gracias por la aportación!</p>
<pre class="brush:javascript">
jQuery.each($('img'), function() {
   ancho_forzado = $(this).width();

   img = new Image();
   img.src = $(this).attr('src');
   ancho_real = img.width;

   if (ancho_forzado != ancho_real) {
      if ($.browser.version.substr(0,1) == '7') {
         this.style.msInterpolationMode = "bicubic";
      } else if ($.browser.version.substr(0,1) == '6') {
         $(this).attr('width', ancho_forzado);
         this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + img.src + "', sizingMethod='scale')",
         this.runtimeStyle.paddingTop = this.height,
         this.runtimeStyle.height = 0;
      }
   }
});
</pre>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/uninstallme?a=LvHsCcgFW64:on5igppunyw:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/uninstallme?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=LvHsCcgFW64:on5igppunyw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/uninstallme?i=LvHsCcgFW64:on5igppunyw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=LvHsCcgFW64:on5igppunyw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/uninstallme?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=LvHsCcgFW64:on5igppunyw:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/uninstallme?i=LvHsCcgFW64:on5igppunyw:3QFJfmc7Om4" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/uninstallme/~4/LvHsCcgFW64" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://uninstallme.com/suavizado-de-imagenes-redimensionadas-con-css-en-internet-explorer/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://uninstallme.com/suavizado-de-imagenes-redimensionadas-con-css-en-internet-explorer/</feedburner:origLink></item>
		<item>
		<title>Max-width para Internet Explorer 6 sólo con CSS</title>
		<link>http://feedproxy.google.com/~r/uninstallme/~3/ZrK3cTlCrzg/</link>
		<comments>http://uninstallme.com/max-width-para-internet-explorer-6-solo-con-css/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 20:22:00 +0000</pubDate>
		<dc:creator>kcmr</dc:creator>
				<category><![CDATA[Buenas ideas]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[IE 6]]></category>

		<guid isPermaLink="false">http://uninstallme.com/?p=724</guid>
		<description><![CDATA[En CSSPlay han publicado un método basado sólo en CSS válido, para emular el funcionamiento de la propiedad max-width de CSS en Internet Explorer 6.
Esta propiedad es útil para fijar un ancho máximo de página (bloque contenedor) en diseños fluidos, evitando que los bloques de texto sean demasiado largos y dificulten su lectura.
La solución quizá [...]]]></description>
			<content:encoded><![CDATA[<p>En <a href="http://www.cssplay.co.uk">CSSPlay</a> han publicado un método basado sólo en <strong>CSS válido</strong>, para emular el funcionamiento de la <a href="http://www.cssplay.co.uk/boxes/maxwidth.html">propiedad max-width de CSS en Internet Explorer 6</a>.</p>
<p>Esta propiedad es útil para fijar un ancho máximo de página (bloque contenedor) en diseños fluidos, evitando que los bloques de texto sean demasiado largos y dificulten su lectura.</p>
<p>La solución quizá llega un poco tarde ahora que, ¡por fin!, el porcentaje de uso de IE 6 es menor que el de sus hermanos mayores, IE 7 y 8, y poco a poco vamos dejando de dar soporte (teniendo siempre en cuenta aquello de la degradación elegante) a este navegador.</p>
<p>La técnica varía según la alineación de página que se use. Para un contenedor centrado de 960 pixeles de ancho máximo, el código HTML y CSS a usar sería similar a este:</p>
<p><strong>HTML</strong></p>
<pre class="brush:html">&lt;div class="leftpad"&gt;&lt;/div&gt;
&lt;div class="rightpad"&gt;&lt;/div&gt;
&lt;div id="contenedor"&gt;
... bla bla bla ...
&lt;/div&gt;</pre>
<p><strong>CSS</strong></p>
<pre class="brush:css">.leftpad{
width: 50%; float: left;
margin-right: -480px; height: 1px;
}
.rightpad{
width: 50%; float: right;
margin-left: -480px; height: 1px;
}
#contenedor{overflow: hidden;}
* html #contenedor{float: left;}</pre>
<ul>
<li>El alto de los bloques con el margen negativo debe ser una unidad. No funciona un porcentaje o el valor auto.</li>
<li>El margen negativo es igual a la mitad del ancho máximo del bloque contenedor, que no se declara en ningún otro sitio.</li>
</ul>
<p>Existen otras soluciones para conseguir un ancho máximo en IE 6, <a title="Ancho máximo y mínimo para IE 6 con Javascript" href="http://www.doxdesk.com/software/js/minmax.html">basadas en Javascript</a> o en el uso de <a href="http://www.google.es/search?hl=es&amp;q=expression%28document.body.clientWidth">expresiones propietarias de Microsoft</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/uninstallme?a=ZrK3cTlCrzg:koZDiOTI7FQ:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/uninstallme?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=ZrK3cTlCrzg:koZDiOTI7FQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/uninstallme?i=ZrK3cTlCrzg:koZDiOTI7FQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=ZrK3cTlCrzg:koZDiOTI7FQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/uninstallme?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=ZrK3cTlCrzg:koZDiOTI7FQ:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/uninstallme?i=ZrK3cTlCrzg:koZDiOTI7FQ:3QFJfmc7Om4" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/uninstallme/~4/ZrK3cTlCrzg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://uninstallme.com/max-width-para-internet-explorer-6-solo-con-css/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://uninstallme.com/max-width-para-internet-explorer-6-solo-con-css/</feedburner:origLink></item>
		<item>
		<title>Acceso a un virtual host en Mac desde Windows con Parallels</title>
		<link>http://feedproxy.google.com/~r/uninstallme/~3/Y62Hrj_xFog/</link>
		<comments>http://uninstallme.com/acceso-a-un-virtual-host-en-mac-desde-windows-con-parallels/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 22:30:47 +0000</pubDate>
		<dc:creator>kcmr</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Virtual Host]]></category>
		<category><![CDATA[WAMP]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://uninstallme.com/?p=712</guid>
		<description><![CDATA[Parallels es el mejor sistema de virtualización de los que he probado hasta ahora, que la verdad, tampoco han sido muchos: Virtual Box y Virtual PC de Microsoft.
Gracias al &#8220;modo coherencia&#8221; de Parallels, para abrir un archivo que tengamos en Mac en una aplicación de Windows, basta con arrastrar y soltar. Así de sencillo.
Ahora bien, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.parallels.com/es/">Parallels</a> es el mejor sistema de virtualización de los que he probado hasta ahora, que la verdad, tampoco han sido muchos: <a href="http://www.virtualbox.org/">Virtual Box</a> y <a href="http://www.microsoft.com/downloadS/details.aspx?displaylang=es&amp;FamilyID=04d26402-3199-48a3-afa2-2dc0b40a73b6">Virtual PC de Microsoft</a>.</p>
<p>Gracias al &#8220;modo coherencia&#8221; de Parallels, para abrir un archivo que tengamos en Mac en una aplicación de Windows, basta con arrastrar y soltar. Así de sencillo.</p>
<p>Ahora bien, cuando necesitamos usar un virtual host para algún proyecto y tenemos que acceder a él desde Windows, la cosa se complica un poco.</p>
<p>Este sería el caso de las aplicaciones web que usan rutas absolutas para vincular hojas de estilo, scripts, imágenes&#8230;, de manera que no nos sirve utilizar la dirección IP para acceder a ellas.</p>
<p>Necesitamos instalar <strong>Rinetd</strong>, concrétamente una <a href="http://codewut.de/Port-Redirection-with-Windows">versión modificada para Windows que podemos descargar en esta página</a>.</p>
<p>Descomprimimos el archivo en C y modificamos el archivo <strong>rinetd.conf</strong> con los datos correspondientes a nuestro equipo. La segunda IP que aparece en la captura es la de nuestro equipo. Podemos encontrarla en Preferencias del Sistema &gt; Compartir.<br />
Si estamos utilizando MAMP y no hemos cambiado los puertos por defecto de MAMP, en lugar del puerto 80 tendríamos que usar el 8888.</p>
<div id="attachment_713" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-713" src="http://uninstallme.com/wp/wp-content/rinetd-conf.png" alt="Ejemplo de configuración de Rinetd.conf" width="500" height="243" /><p class="wp-caption-text">Ejemplo de configuración de Rinetd.conf</p></div>
<p>Después instalamos <a href="http://www.wampserver.com/en/">WAMP</a> en Windows y creamos el virtual host que necesitemos usar en el archivo httpd-vhosts.conf, que se encuentra en wamp\bin\apache\apacheX(*)\conf\extra<br />
<em>* X se corresponde a la versión de Apache</em></p>
<div id="attachment_715" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-715" src="http://uninstallme.com/wp/wp-content/vhosts1.png" alt="Configuración del virtual host en Windows" width="500" height="486" /><p class="wp-caption-text">Configuración del virtual host en Windows</p></div>
<p>En el <strong>archivo hosts de Windows</strong>, añadimos el virtual host que acabamos de crear (línea destacada en la captura). En Windows XP este archivo está en C:\WINDOWS\System32\drivers\etc</p>
<div id="attachment_717" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-717" src="http://uninstallme.com/wp/wp-content/hosts1.png" alt="Configuración del archivo hosts de Windows" width="500" height="486" /><p class="wp-caption-text">Configuración del archivo hosts de Windows</p></div>
<p>Iniciamos WAMP o reiniciamos si estaba iniciado y ejecutamos Rinetd mediante la consola de Windows escribiendo:<br />
<samp>C:\rinetd\rinetd.exe -c C:\rinetd\rinetd.conf</samp></p>
<div id="attachment_718" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-718" src="http://uninstallme.com/wp/wp-content/consola.png" alt="Captura de la consola de Windows" width="500" height="161" /><p class="wp-caption-text">Captura de la consola de Windows</p></div>
<p>No veremos ningún mensaje en la consola, es lo normal. La dejamos abierta y ya podemos acceder a nuestro virtual host en Mac.</p>
<div id="attachment_719" class="wp-caption aligncenter" style="width: 459px"><img class="size-full wp-image-719" src="http://uninstallme.com/wp/wp-content/ie.png" alt="Internet Explorer accediento a un Virtual Host en Mac" width="449" height="239" /><p class="wp-caption-text">Internet Explorer accediento a un virtual host en Mac</p></div>
<p><strong>La principal ayuda para llegar a esta solución:</strong> <a href="http://jedisthlm.com/2008/12/13/access-a-local-mac-server-from-windows-in-parallels/">Access a local Mac server from Windows in Parallels</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/uninstallme?a=Y62Hrj_xFog:UuPw7ooeozQ:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/uninstallme?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=Y62Hrj_xFog:UuPw7ooeozQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/uninstallme?i=Y62Hrj_xFog:UuPw7ooeozQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=Y62Hrj_xFog:UuPw7ooeozQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/uninstallme?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=Y62Hrj_xFog:UuPw7ooeozQ:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/uninstallme?i=Y62Hrj_xFog:UuPw7ooeozQ:3QFJfmc7Om4" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/uninstallme/~4/Y62Hrj_xFog" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://uninstallme.com/acceso-a-un-virtual-host-en-mac-desde-windows-con-parallels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://uninstallme.com/acceso-a-un-virtual-host-en-mac-desde-windows-con-parallels/</feedburner:origLink></item>
		<item>
		<title>Ejemplo de Javascript Multiidioma</title>
		<link>http://feedproxy.google.com/~r/uninstallme/~3/w5wBTkbLvgQ/</link>
		<comments>http://uninstallme.com/ejemplo-de-javascript-multiidioma/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 00:07:48 +0000</pubDate>
		<dc:creator>kcmr</dc:creator>
				<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://uninstallme.com/?p=706</guid>
		<description><![CDATA[Cuando tenemos un sitio en varios idiomas en el que estamos añadiendo atributos como ALT o TITLE a imágenes o enlaces, lo ideal es proporcionar esos literales en todos los idiomas del sitio y usar los correspondientes al idioma según el valor del atributo xml:lang o lang de la etiqueta HTML.
Para estos casos es útil [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando tenemos un sitio en varios idiomas en el que estamos añadiendo atributos como ALT o TITLE a imágenes o enlaces, lo ideal es proporcionar esos literales en todos los idiomas del sitio y usar los correspondientes al idioma según el valor del atributo xml:lang o lang de la etiqueta HTML.</p>
<p>Para estos casos es útil crear un objeto en el que almacenamos todos los literales según el código del idioma.</p>
<p>Mediante una función que devuelva el valor del atributo xml:lang o lang del tag HTML, estableceremos el idioma del sitio y los literales a usar.</p>
<p>Ejemplo completo usando Mootools:</p>
<pre class="brush:javascript">
var MiClase = new Class({
  Implements: Options,
  // literales a usar
  options: {
    literales: {
      ES: {
        titleMostrar: 'Mostrar álbum',
        titleOcultar: 'Ocultar álbum'
      },
      EN: {
        titleMostrar: 'Show album',
        titleOcultar: 'Hide album'
      }
    }
  },
  initialize: function(element, options){
    this.setOptions(options);
    this.element = element;
    ...
    // llamamos a la función encargada de obtener el valor del atributo lang del tag HTML
    this.getDocumentLang();
    // según el valor de this.lang (devuelto por la función anterior) asociamos los literales de uno u otro idioma a una propiedad "literales" de nuestra clase "MiClase"
    this.lang == 'es' ? this.literales = this.options.literales.ES : this.literales = this.options.literales.EN;
  },
  getDocumentLang: function(){
    // obtengo el valor de xml:lang o de lang si xml:lang no se ha usado en el HTML
    this.lang = $$('html')[0].get('xml:lang') || $$('html')[0].get('lang');
    if(!this.lang) this.lang = 'es'; // idioma por defecto si no se ha declarado el idioma principal del documento
    return this.lang;
  },
  // uso de la propiedad literales en otras funciones
  funcionEjemplo: function(){
    var miElemento = ...;
    miElemento.set('title', this.literales.titleMostrar);
  }
});
</pre>
<p>En el caso de más de dos idiomas, en lugar del condicional usado dentro del método initialize en el ejemplo anterior, podríamos usar una estructura switch case.<br />
Ejemplo:</p>
<pre class="brush:javascript">
initialize: function(element, options){
  ...
  this.getDocumentLang();
  switch(this.lang){
    case 'es':
      this.literales = this.options.literales.ES;
      break;
    case 'en':
      this.literales = this.options.literales.EN;
      break;
    case 'fr':
      this.literales = this.options.literales.FR;
      break;
    default:
      this.literales = this.options.literales.ES;
  }
}
</pre>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/uninstallme?a=w5wBTkbLvgQ:PobQw5aneFI:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/uninstallme?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=w5wBTkbLvgQ:PobQw5aneFI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/uninstallme?i=w5wBTkbLvgQ:PobQw5aneFI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=w5wBTkbLvgQ:PobQw5aneFI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/uninstallme?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/uninstallme?a=w5wBTkbLvgQ:PobQw5aneFI:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/uninstallme?i=w5wBTkbLvgQ:PobQw5aneFI:3QFJfmc7Om4" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/uninstallme/~4/w5wBTkbLvgQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://uninstallme.com/ejemplo-de-javascript-multiidioma/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://uninstallme.com/ejemplo-de-javascript-multiidioma/</feedburner:origLink></item>
	</channel>
</rss>
