<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-33160121</id><updated>2018-09-17T06:29:22.320-03:00</updated><category term="web"/><category term="php"/><category term="ocio"/><category term="linux"/><category term="html"/><category term="cakephp"/><category term="javascript"/><category term="zend framework"/><category term="css"/><category term="ie fix"/><category term="musica"/><category term="rss"/><category term="xml"/><category term="yahoo weather"/><category term="denuncia"/><category term="eclipse"/><category term="mootools"/><category term="twitter"/><category term="GAE"/><category term="apcupsd"/><category term="blogs"/><category term="creative commons"/><category term="django"/><category term="firefox"/><category term="html5"/><category term="internet explorer"/><category term="lightbox"/><category term="movistar"/><category term="netbooks"/><category term="olpc"/><category term="opensolaris"/><category term="photo explorer"/><category term="python"/><category term="samba"/><category term="svn"/><category term="trabajo"/><category term="windows"/><title type='text'>Infectogroovalistic</title><subtitle type='html'>Web development, systems design, software architecture</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>64</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-33160121.post-4003900745827766086</id><published>2012-11-13T11:02:00.001-03:00</published><updated>2012-11-13T11:02:52.875-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="netbooks"/><category scheme="http://www.blogger.com/atom/ns#" term="olpc"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>Como desbloquear netbooks del Gobierno Argentino</title><content type='html'>Copio hoy un texto del autor Sebastian Bassi publicado originalmente en su perfil de Facebook (&lt;a href=&quot;https://www.facebook.com/sebastian.bassi/posts/337682969663677&quot;&gt;https://www.facebook.com/sebastian.bassi/posts/337682969663677&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt; Como saben al gobierno argentino les gusta censurar la información que no les conviene, asi que aprovechen y difundan antes de que lo censuren por completo. &lt;br /&gt;&lt;br /&gt; Texto original: &lt;br style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;Censurame esta.&lt;/span&gt;&lt;br /&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;Desbloquear Netbook EXO X352 - Las del Gobierno.&lt;/span&gt;&lt;br /&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;Bueno, este post está hecho, para educar, para dar a los usuarios de estas Netbooks, control sobre sus equipos, todos sabemos que las mismas vienen programadas de tal forma que se bloqueen en caso de ser denunciadas como perdidas, robadas, o en caso de que el alumno no lleve la Netbook al colegio durante determinado períod&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;o de tiempo, este es el caso particular que afecto a un amigo mío, que sin mi ayuda, se hubiera quedado con la Netbook de pisapapeles durante todas las vacaciones, hasta que pudiera llevarla al colegio en Marzo para que se la re-activaran.&lt;/span&gt;&lt;br /&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;DESCARGO&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;* No me hago responsable de ningún daño que ocasionen a sus equipos por meter mano sin saber lo que están haciendo.&lt;/span&gt;&lt;br /&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;* Si los cabezas de las villas entran a robar más Netbooks ahora que yo hago público este tutorial, me importa un bledo, la información no es buena ni mala, cada quien le da el uso que le parece, y si un zombie de paco se roba una Netbook, no piensa si le va a andar o si no le va andar, se conforma con que le den 50 mangos por el disco y la memoria.&lt;/span&gt;&lt;br /&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;* Este no infringe ninguna ley vigente, como tampoco viola el contrato entre el alumno y la escuela, si a la escuela no le parece que los alumnos re-configuren sus equipos, pueden perfectamente reclamárselos y volver a formatearlos con el software de base.&lt;/span&gt;&lt;br /&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;Bueno, ahora que me he cubierto las nalgas por cualquier posible crítica futura, vamos a lo que nos comPETE:&lt;/span&gt;&lt;br /&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;¿QUÉ VAMOS A NECESITAR?&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;1) Un destornillador Phillips, si tienen uno con punto imantada, hermoso! Uno como este sería lo ideal:&lt;/span&gt;&lt;br /&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;2) Una Lectora/Grabadora con conexión USB&lt;/span&gt;&lt;br /&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;3) Un CD de Windows XP (El que más les guste)&lt;/span&gt;&lt;br /&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;4) Una pinza como esta:&lt;/span&gt;&lt;br /&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;En ML se consiguen por $ 5, les dejo el link por si son muy vagos para buscar:&lt;/span&gt;&lt;br /&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot; /&gt;&lt;a href=&quot;http://www.facebook.com/l.php?u=http%3A%2F%2Farticulo.mercadolibre.com.ar%2FMLA-101495421-pinzas-para-maquinas-de-coser-overlock-textil-electronica-_JM&amp;amp;h=bAQGZYMU9&amp;amp;s=1&quot; rel=&quot;nofollow nofollow&quot; style=&quot;background-color: white; color: #3b5998; cursor: pointer; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;http://articulo.mercadolibre.com.ar/MLA-101495421-pinzas-para-maquinas-de-coser-overlock-textil-electronica-_JM&lt;/a&gt;&lt;br /&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;PASO A PASO&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;1) Quitamos la protección símil cuero, que está simplemente abrochada a la carcaza.&lt;/span&gt;&lt;br /&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;2) Mirando la parte trasera, vamos a notar 5 tornillos a la vista, 3 en una línea, y 2 en la otra, los sacamos y levantamos la tapa por la muesca que tiene arriba al centro, siempre considerando la batería como &quot;Arriba&quot;.&lt;/span&gt;&lt;br /&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;3) Una vez abierta, vamos a ver un objeto rectangular color azul, eso es el disco rígido, vamos a sacarlo. ¿Cómo? Primero, vamos a desconectar el cable plano color dorado del Mother, para no estropearlo, simplemente levantamos el seguro plástico negro que lo sostiene, y ahí se va a poder deslizar el cable con facilidad. Luego colocamos las pinzas entre el disco rígido, y el lateral izquierdo del compartimento, y haciendo palanca de a poquito, sacamos el disco rígido.&lt;/span&gt;&lt;br /&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;4) Ahora vamos a &quot;Puentear&quot; la pila del Mother, para esto giramos la Netbook 90 grados hacia la derecha, ahora nos va a quedar la memoria en la posición superior izquierda como referencia. ¿Ven la licencia de Windows pegada? Bueno, en el hueco que quedó debajo de la misma, onda detrás de donde sacamos el cable del Disco Rígido, ahí abajo, está la pila, vamos a girar la Netbook 90 grados hacia delante, quedándonos los conectores laterales en la cara, en el siguiente orden, de izquierda a derecha: Power, Ethernet, USB, USB, Mic y Out. Ahora vamos a meter con cuidado la pinza en ese hueco, y vamos a separar la pila del encastre del Mother, con cuidado, pero sin miedo, que no van a romper nada, la idea no es separar la pila y sacar la pinza, la idea es dejar la pinza metida entre la pila y la base (Si, se que suena a locura, pero funciona)&lt;/span&gt;&lt;br /&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;5) Vamos a volver a conectar el Disco Rígido (Si, sin sacar la pinza), ya saben, levanta el seguro de plástico negro, meten el cable plano dorado, y bajan el seguro para trabar el cable, no hace falta que el disco quede totalmente empotrado, con que haga tope basta.&lt;/span&gt;&lt;br /&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;6) Ahora vamos a arrancar la Netbook, si hicimos todo bien, ya debería bootear con normalidad, o en su defecto, marcarnos en la parte superior izquierda de la pantalla, la palabra &quot;GRUB&quot; (Nota: si la tercera luz indicadora del tablero, viniendo desde la derecha, no se enciende, chicos, tienen mal conectado el disco XD). Si no arranca, simplemente vuelvan al ataque con la pinza y la pila hasta que salga (Nota: Recuerden volver la pila a su posición original antes de seguir con el próximo paso)&lt;/span&gt;&lt;br /&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;7) Bien, si todo salió bien, actualmente la Netbook ya fue &quot;Desbloqueada&quot;, pero nosotros somos groxos, nosotros somos bien pero bien piratas, y la vamos a hacer completa. Apagamos la Netbook, conectamos la Lectora/Grabadora USB, encendemos la Netbook, presionamos F11, metemos el CD de Windows en la Lectora/Grabadora USB, le damos tiempo a que lo lea, y en el selector de Booteo, elegimos nuestra Lectora/Grabadora USB.&lt;/span&gt;&lt;br /&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;8) Bueno, ahora instalamos Windows como en cualquier otra PC. Igual, les comento, tengan cuidado, con el tema de los drivers, porque si meten el Driver del Módulo TPM, se les puede volver a bloquear, digo puede porque depende cual metan se comporta distinto, hay más de 1 Driver que va.&lt;/span&gt;&lt;br /&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;De todas formas no se hagan drama porque en la semana voy a subir un video explicativo y una imagen hecha con Norton Ghost de un Windows UE 2009.1, actualizado, con Serial de Oro y todos los Drivers cargados. Lo iba a subir ayer pero como buen bruto que soy rompí mi Lectora/Grabadora USB y recien el Lunes o Martes voy a poder ver de conseguir otra.&lt;/span&gt;&lt;br /&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot; /&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left;&quot;&gt;Aclaro que también comenté esto en 3DG y unos cuantos Cyber-K me tiraron bosta a lo pavo, ahora dicen que estoy dilatando el asunto porque en realidad no hackee nada, el asunto es que se me rompió la Lectora y no estoy forrado en guita como para pedir una por teléfono en el instante en que se rompe la anterior.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/4003900745827766086/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33160121&amp;postID=4003900745827766086' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/4003900745827766086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/4003900745827766086'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/2012/11/como-desbloquear-netbooks-del-gobierno.html' title='Como desbloquear netbooks del Gobierno Argentino'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33160121.post-4228318127496798985</id><published>2011-10-12T16:17:00.002-03:00</published><updated>2011-10-13T12:43:01.512-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="django"/><category scheme="http://www.blogger.com/atom/ns#" term="GAE"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>Django Session Middleware basado en Memcache</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;Para los que estén desarrollando aplicaciones con Django para Google App Engine ( GAE ), se habrán encontrado con el problema de las sesiones de Django, las cuales no son compatibles con GAE.&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;Si bien existen múltiples alternativas que van desde frameworks enteros dedicados a la integración de los middlewares de Django en GAE hasta simples handlers de sesión basados en el storage de Google, yo he encontrado varias razones para no usarlos, que pueden ser válidas o no, pero son mis razones:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;- Los frameworks hechos para una mejor integración entre Django y GAE, o son muy inmaduros o tienen demasiada funcionalidad que no me interesan. Por otro lado, prefiero hacer las cosas yo mismo y aprender un poco más.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;- Las sesiones basadas en storage suelen no escalar muy bien.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;- En el billing del GAE, el storage es más caro que el memcache.&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;Con estas simples razones en mente, encontré una solución a mi dilema: &lt;a href=&quot;https://github.com/leonelquinteros/memsession&quot;&gt;MemSession&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;MemSession es un proyecto hosteado en GitHub (&amp;nbsp;&lt;a href=&quot;https://github.com/leonelquinteros/memsession&quot;&gt;https://github.com/leonelquinteros/memsession&lt;/a&gt;&amp;nbsp;) y se trata de un muy pequeño y simple middleware para Django que sirve de handler para sesiones y que utiliza Memcache como sistema de almacenamiento de las mismas.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;El setup es muy sencillo (hay instrucciones in inglés en el archivo &lt;a href=&quot;https://github.com/leonelquinteros/memsession/blob/master/README&quot;&gt;README&lt;/a&gt; del proyecto) y consta de 2 simples pasos:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;1) Clonar o bajar el módulo python ( session.py ) directamente de GitHub y alojarlo dentro del PATH del proyecto.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;2) Agregar el módulo a la lista de middleware del proyecto Django en cuestión.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;Una vez hecho esto, el middleware se encargará de inicializar automáticamente una sesión única por cada usuario de nuestra aplicación, y pondrá a disposición el objeto&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: pre-wrap;&quot;&gt;&lt;i style=&quot;font-weight: bold;&quot;&gt;memSession &lt;/i&gt;como una propiedad de todos los objetos &lt;b&gt;&lt;i&gt;request&lt;/i&gt;&lt;/b&gt; de la aplicación.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; white-space: pre-wrap;&quot;&gt;El objeto memSession tiene 3 métodos básicos que proporcionan la funcionalidad de sesión que necesitamos: &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; white-space: pre-wrap;&quot;&gt;- memSession.read( key )&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif; white-space: pre-wrap;&quot;&gt;- memSession.write( key, value)&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif; white-space: pre-wrap;&quot;&gt;- memSession.delete( key )&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; white-space: pre-wrap;&quot;&gt;Creo que tanto los métodos como los parámetros de los mismos son bastante auto-explicativos.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; white-space: pre-wrap;&quot;&gt;Para resumir, me parece una librería extremadamente útil para la simplicidad que tiene y creo que puede escalar bastante bien haciendo uso de Memcache, aunque no lo he probado.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;Y por último, el link del proyecto en GitHub: &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;a href=&quot;https://github.com/leonelquinteros/memsession&quot;&gt;https://github.com/leonelquinteros/memsession&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/4228318127496798985/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33160121&amp;postID=4228318127496798985' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/4228318127496798985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/4228318127496798985'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/2011/10/django-session-middleware-basado-en.html' title='Django Session Middleware basado en Memcache'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33160121.post-8178900941652351859</id><published>2011-03-22T16:23:00.001-03:00</published><updated>2011-03-22T16:25:38.948-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cakephp"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>PHP bug ?</title><content type='html'>&lt;div&gt;&amp;lt;?php&lt;/div&gt;&lt;div&gt;$price = 125.99;&lt;/div&gt;&lt;div&gt;$dec = ($price - intval($price)) * 100;&lt;/div&gt;&lt;div&gt;$dec = (int) $dec;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;echo $dec; // WTF?!&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/8178900941652351859/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33160121&amp;postID=8178900941652351859' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/8178900941652351859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/8178900941652351859'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/2011/03/php-bug.html' title='PHP bug ?'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33160121.post-5264296758038360333</id><published>2010-11-18T10:54:00.000-03:00</published><updated>2010-11-18T10:55:04.710-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="css"/><category scheme="http://www.blogger.com/atom/ns#" term="internet explorer"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>Why Internet Explorer sucks so much?</title><content type='html'>WHY??!!!!</content><link rel='replies' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/5264296758038360333/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33160121&amp;postID=5264296758038360333' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/5264296758038360333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/5264296758038360333'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/2010/11/why-internet-explorer-sucks-so-much.html' title='Why Internet Explorer sucks so much?'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33160121.post-6320474510151022924</id><published>2010-10-05T18:22:00.003-03:00</published><updated>2010-10-05T18:35:42.038-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cakephp"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><title type='text'>Campos LONGTEXT de MySQL y las Schema Migrations de CakePHP</title><content type='html'>Ultimamente ando un poco vago para escribir en este Blog, pero hoy me encontré con un caso/problema/solución que me parece que vale la pena compartir con uds.&lt;br /&gt;&lt;br /&gt;Estaba trabajando con las &lt;a href=&quot;http://book.cakephp.org/es/view/734/Schema-management-and-migrations&quot;&gt;migraciones de esquemas de CakePHP&lt;/a&gt; y me encontré con que el shell &quot;schema&quot; no distingue los tipos de columna LONGTEXT de MySQL, omitiendo las variantes de este tipo de columna y unificandolos a todos como &#39;text&#39;.&lt;br /&gt;&lt;br /&gt;He desarrollado una solución, más o menos elegante, para que los comandos &quot;create&quot; y &quot;update&quot; del schema shell reconozcan este tipo de dato. Todavía no encuentro una forma &quot;no-intrusiva&quot; de hacerlo para el comando &quot;generate&quot;.&lt;br /&gt;&lt;br /&gt;Básicamente, se trata de hacer un nuevo &lt;a href=&quot;http://book.cakephp.org/es/view/87/DataSources&quot;&gt;Data Source&lt;/a&gt; de CakePHP, pero en vez de extender la clase base, extender del DboMysql y solo implementar el array de tipos de datos del motor.&lt;br /&gt;&lt;br /&gt;Para ello, como explica el manual, creo un nuevo archivo en &lt;span style=&quot;font-style: italic; font-weight: bold;&quot;&gt;app/models/datasources/dbo_custom_mysql.php&lt;/span&gt; con el siguiente contenido:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;require_once(ROOT . &#39;/cake/libs/model/datasources/dbo/dbo_mysql.php&#39;);&lt;br /&gt;&lt;br /&gt;class DboCustomMysql extends DboMysql {&lt;br /&gt;/**&lt;br /&gt;* MySQL column definition&lt;br /&gt;*&lt;br /&gt;* @var array&lt;br /&gt;*/&lt;br /&gt;  var $columns = array(&lt;br /&gt;      &#39;primary_key&#39; =&gt; array(&#39;name&#39; =&gt; &#39;NOT NULL AUTO_INCREMENT&#39;),&lt;br /&gt;      &#39;string&#39; =&gt; array(&#39;name&#39; =&gt; &#39;varchar&#39;, &#39;limit&#39; =&gt; &#39;255&#39;),&lt;br /&gt;      &#39;text&#39; =&gt; array(&#39;name&#39; =&gt; &#39;text&#39;),&lt;br /&gt;      &#39;longtext&#39; =&gt; array(&#39;name&#39; =&gt; &#39;longtext&#39;),&lt;br /&gt;      &#39;integer&#39; =&gt; array(&#39;name&#39; =&gt; &#39;int&#39;, &#39;limit&#39; =&gt; &#39;11&#39;, &#39;formatter&#39; =&gt; &#39;intval&#39;),&lt;br /&gt;      &#39;float&#39; =&gt; array(&#39;name&#39; =&gt; &#39;float&#39;, &#39;formatter&#39; =&gt; &#39;floatval&#39;),&lt;br /&gt;      &#39;datetime&#39; =&gt; array(&#39;name&#39; =&gt; &#39;datetime&#39;, &#39;format&#39; =&gt; &#39;Y-m-d H:i:s&#39;, &#39;formatter&#39; =&gt; &#39;date&#39;),&lt;br /&gt;      &#39;timestamp&#39; =&gt; array(&#39;name&#39; =&gt; &#39;timestamp&#39;, &#39;format&#39; =&gt; &#39;Y-m-d H:i:s&#39;, &#39;formatter&#39; =&gt; &#39;date&#39;),&lt;br /&gt;      &#39;time&#39; =&gt; array(&#39;name&#39; =&gt; &#39;time&#39;, &#39;format&#39; =&gt; &#39;H:i:s&#39;, &#39;formatter&#39; =&gt; &#39;date&#39;),&lt;br /&gt;      &#39;date&#39; =&gt; array(&#39;name&#39; =&gt; &#39;date&#39;, &#39;format&#39; =&gt; &#39;Y-m-d&#39;, &#39;formatter&#39; =&gt; &#39;date&#39;),&lt;br /&gt;      &#39;binary&#39; =&gt; array(&#39;name&#39; =&gt; &#39;blob&#39;),&lt;br /&gt;      &#39;boolean&#39; =&gt; array(&#39;name&#39; =&gt; &#39;tinyint&#39;, &#39;limit&#39; =&gt; &#39;1&#39;)&lt;br /&gt;  );&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Como ven, lo único que hago es extender el Datasource original de MySQL de CakePHP y agregarle un nuevo tipo de columna. Nada más. Luego, en su archivo &lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;app/config/database.php&lt;/span&gt; sólo deben indicar que su &lt;span style=&quot;font-weight: bold;&quot;&gt;driver&lt;/span&gt; es &#39;custom_mysql&#39; para hacer referencia a nuestro datasource. Y listo.&lt;br /&gt;&lt;br /&gt;Esperemos que la gente de CakePHP ponga más esmero en resolver estas cositas que deberían estar listas desde varias versiones anteriores.</content><link rel='replies' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/6320474510151022924/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33160121&amp;postID=6320474510151022924' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/6320474510151022924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/6320474510151022924'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/2010/10/campos-longtext-de-mysql-y-las-schema.html' title='Campos LONGTEXT de MySQL y las Schema Migrations de CakePHP'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33160121.post-3989178221649882929</id><published>2010-07-26T12:06:00.003-03:00</published><updated>2010-07-26T12:11:44.030-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="firefox"/><category scheme="http://www.blogger.com/atom/ns#" term="html"/><category scheme="http://www.blogger.com/atom/ns#" term="html5"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>Quick tip: _moz-rs-heading</title><content type='html'>Bueno, hoy me encontré con algo nuevo que vale la pena destacar. &lt;br /&gt;Estoy empezando a transformar los sitios que desarrollo a HTML5. Sin mucha parafernaria, solo para ir testeando los casos de uso y acá me encontré uno peculiar.&lt;br /&gt;&lt;br /&gt;Usando Firefox, me encuentro con un H2 que tiene un enlace en el DOM, el cual no está definido en el código. &lt;br /&gt;&lt;br /&gt;El enlace, al inspeccionarlo con Firebug, se presenta similar al siguiente: &lt;br /&gt;&amp;lt;a _moz-rs-heading=&quot;&quot; href=&quot;&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;Resultó ser culpa de un enlace mal cerrado anteriormente. Y parece ser que Firefox reestructura el DOM al encontrar errores como este en HTML5 y ha cerrado el enlace mal cerrado anteriormente al encontrar un punto en el que el contenido del enlace era inválido y lo ha continuado luego, abriendo esta etiqueta dentro de mi H2. &lt;br /&gt;&lt;br /&gt;En fin, parece extraño, pero no se si juzgarlo como malo. En todo caso, es un comportamiento que la gente de Mozilla ha programado para este tipo de errores humanos en el código. Lo cual deja un DOM válido, como para que el layout se rompa lo menos posible, pero eso sí, si no tenemos en cuenta lo anterior, quizas sea un poco confuso al momento de encontrarlo... ahora ya saben!</content><link rel='replies' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/3989178221649882929/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33160121&amp;postID=3989178221649882929' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/3989178221649882929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/3989178221649882929'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/2010/07/quick-tip-moz-rs-heading.html' title='Quick tip: _moz-rs-heading'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33160121.post-952543760299378453</id><published>2009-12-22T11:34:00.003-03:00</published><updated>2009-12-22T11:58:45.342-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apcupsd"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="samba"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><title type='text'>Apagar Windows Server desde Linux</title><content type='html'>Hoy me encontré con el dilema de tener 2 servidores y un solo UPS. La cuestión es que la interfaz USB del UPS está conectada a un servidor Ubuntu que corre el servicio &lt;span style=&quot;font-weight: bold;&quot;&gt;apcupsd&lt;/span&gt; el cual me permite configurarlo para que el Ubuntu se apague cuando se está por agotar la batería del UPS.&lt;br /&gt;&lt;br /&gt;Hasta acá todo en orden, la cuestión era apagar amablemente el otro servidor Windows 2003 también, antes de que se le acabe la batería al UPS. Para esto, el demonio &lt;span style=&quot;font-weight: bold;&quot;&gt;apcupsd&lt;/span&gt; viene listo para que podamos escribir un programa que haga cualquier cosa antes de cualquiera de los eventos del UPS.&lt;br /&gt;En nuestro caso, el evento en cuestión es el &lt;span style=&quot;font-weight: bold;&quot;&gt;doshutdown&lt;/span&gt; que es el evento que apaga el servidor.&lt;br /&gt;Para esto necesitamos crear un archivo llamado igual que el evento ubicado en el directorio &lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;/etc/apcupsd&lt;/span&gt; que es donde residen todos los scripts del demonio.&lt;br /&gt;&lt;br /&gt;El script es:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;net rpc shutdown -I 192.168.0.1 -U user%pass&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;que creo que es bastante clara... lo unico que vale aclarar es que el comando &lt;span style=&quot;font-weight: bold;&quot;&gt;net&lt;/span&gt; está disponible en el paquete &lt;span style=&quot;font-weight: bold;&quot;&gt;samba-common&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Recuerden que el script debe tener permisos de ejecución para funcionar.&lt;br /&gt;&lt;br /&gt;Ahora el script se ejecutará siempre antes de que el apcupsd apague el servidor donde corre y así los 2 servidores serán apagados.</content><link rel='replies' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/952543760299378453/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33160121&amp;postID=952543760299378453' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/952543760299378453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/952543760299378453'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/2009/12/apagar-windows-server-desde-linux.html' title='Apagar Windows Server desde Linux'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33160121.post-7916525205599998313</id><published>2009-12-09T12:39:00.004-03:00</published><updated>2009-12-09T12:45:30.223-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cakephp"/><title type='text'>Crear un sitio CakePHP sin conexion a una base de datos</title><content type='html'>CakePHP por default asume que usaremos una base de datos para nuestra aplicación, esto trae un problema cuando intentamos crear un sitio web sin base de datos.&lt;br /&gt;&lt;br /&gt;Encontré la solución, creando una conexión falsa que devuelva siempre TRUE. Esto lo hacemos de la siguiente manera:&lt;br /&gt;&lt;br /&gt;- Primero creamos un datasource en &lt;span style=&quot;font-weight: bold;&quot;&gt;app/models/datasources/dbo/dbo_fake_dbo_source.php&lt;/span&gt; con el siguiente contenido:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;class DboFakeDboSource extends DboSource&lt;br /&gt;{&lt;br /&gt; function connect()&lt;br /&gt; {&lt;br /&gt;  $this-&gt;connected = true;&lt;br /&gt;  return true;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; function disconnect()&lt;br /&gt; {&lt;br /&gt;  $this-&gt;connected = false;&lt;br /&gt;  return true;&lt;br /&gt; }&lt;br /&gt;  &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Y ahora simplemente en la configuración de la base de datos ( &lt;span style=&quot;font-weight: bold;&quot;&gt;app/config/database.php&lt;/span&gt; ) reemplazamos el valor del driver que por default es &lt;span style=&quot;font-weight: bold;&quot;&gt;&#39;&lt;span style=&quot;font-style: italic;&quot;&gt;mysql&lt;/span&gt;&#39;&lt;/span&gt; por &lt;span style=&quot;font-weight: bold;&quot;&gt;&#39;&lt;span style=&quot;font-style: italic;&quot;&gt;fake_dbo_source&lt;/span&gt;&#39;&lt;/span&gt; y listo!</content><link rel='replies' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/7916525205599998313/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33160121&amp;postID=7916525205599998313' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/7916525205599998313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/7916525205599998313'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/2009/12/crear-un-sitio-cakephp-sin-conexion-una.html' title='Crear un sitio CakePHP sin conexion a una base de datos'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33160121.post-87355275926974032</id><published>2009-10-31T16:27:00.003-03:00</published><updated>2009-10-31T16:28:31.582-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cakephp"/><title type='text'>Planet CakePHP</title><content type='html'>A partir de esta semana, los articulos relacionados con CakePHP de este blog serán publicados en la sección en español de &lt;a href=&quot;http://planetcakephp.org/&quot;&gt;Planet CakePHP&lt;/a&gt;, junto con otros muchos blogs sobre el tema y en diferentes idiomas.</content><link rel='replies' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/87355275926974032/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33160121&amp;postID=87355275926974032' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/87355275926974032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/87355275926974032'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/2009/10/planet-cakephp.html' title='Planet CakePHP'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33160121.post-8967363765585590520</id><published>2009-10-31T15:34:00.010-03:00</published><updated>2009-11-11T14:52:22.725-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cakephp"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><title type='text'>Schema migrations con Plugins de CakePHP</title><content type='html'>CakePHP trae incluidas algunas aplicaciones de consola con utilidades varias.&lt;br /&gt;Una de ellas es la utilidad para generar y actualizar &lt;a href=&quot;http://book.cakephp.org/es/view/734/Schema-management-and-migrations&quot;&gt;Esquemas&lt;/a&gt;. Esta utilidad está disponible vía la consola &lt;span style=&quot;font-style: italic;&quot;&gt;cake&lt;/span&gt; ( &lt;span style=&quot;font-style: italic;&quot;&gt;/&lt;span style=&quot;color: rgb(153, 153, 153);&quot;&gt;PATH&lt;/span&gt;/cake/console/cake&lt;/span&gt; ).&lt;br /&gt;&lt;br /&gt;Con el comando:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ cake schema generate&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;generamos un archivo de esquema de la base de datos para todos los modelos definidos en la aplicación. Aquí surge el primer problema, qué es que esta aplicación, en la versión estable 1.2.5 de CakePHP, no tiene en cuenta los &lt;a href=&quot;http://book.cakephp.org/es/view/117/Plugin-Models&quot;&gt;modelos de los plugins&lt;/a&gt; de la aplicación, por lo cual estos modelos son ignorados. Hay un patch que agrega esta funcionalidad programado para la versión 1.3, pero todavía no existe una versión estable de este release.&lt;br /&gt;La solución preliminar es usar la opción -f del comando, para forzar a crear un esquema para todas las tablas de la base de datos, sin importar si tienen un modelo definido o no:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ cake schema generate -f&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Con esto solucionado, podemos realizar migraciones de esquemas editando el archivo generado y usando el comando:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ cake schema run update&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Las migraciones de esquemas sirven para mantener versionadas y documentadas las modificaciones a la base de datos, para que, de esta forma, al trabajar en equipos, cuando un desarrollador realiza una modificación al esquema y lo actualiza modificando la estructura de la base de datos, puede distribuir su esquema modificado al resto del equipo para que ellos también actualicen su copia de la base de datos.&lt;br /&gt;&lt;br /&gt;El segundo problema que nos enontramos al trabajar usando una &lt;a href=&quot;http://book.cakephp.org/es/view/114/Plugins&quot;&gt;arquitectura de plugins&lt;/a&gt;, es que la idea de desarrollar un plugin es tener una cierta funcionalidad que se pueda mantener independiente al resto de la aplicación y así agregarla o quitarla a la misma sin mayores inconvenientes. Entonces el mantener un archivo de esquema único para todos los plugins rompe con esta separación de componentes y nos fuerza a mantener actualizado el esquema mientras agregamos o quitamos plugins.&lt;br /&gt;&lt;br /&gt;Para poder conservar la independencia de los plugins. he extendido el archivo de esquema básico para que se extienda automáticamente en función de la prescencia de plugins, agregando en los plugins archivos de esquema personalizados con el mismo formato de definición de tablas que los esquemas generados automáticamente.&lt;br /&gt;&lt;br /&gt;El primer archivo es el archivo &lt;span style=&quot;font-style: italic;&quot;&gt;/&lt;span style=&quot;color: rgb(153, 153, 153);&quot;&gt;PATH&lt;/span&gt;/app/config/sql/schema.php&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;class AppSchema extends CakeSchema {&lt;br /&gt; var $name = &#39;App&#39;;&lt;br /&gt;&lt;br /&gt; function before($event = array()) {&lt;br /&gt;  return true;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function after($event = array()) {&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * Load plugin schemas...&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;$path = dirname(dirname(dirname(__FILE__))) . &quot;/plugins&quot;;&lt;br /&gt;$dirHandle = opendir($path);&lt;br /&gt;&lt;br /&gt;while ($file = readdir($dirHandle)) {&lt;br /&gt; $schemaPath = $path . &#39;/&#39; . $file . &#39;/config/sql/schema.php&#39;; &lt;br /&gt; &lt;br /&gt; if( is_file($schemaPath) )&lt;br /&gt; {&lt;br /&gt;  include_once($schemaPath);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;closedir($dirHandle);&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Como ven, es un Schema de CakePHP sin definiciones, con código agregado al final para que cargue todos los archivos de esquema de los plugins, asumiendo su ubicación en &lt;span style=&quot;font-style: italic;&quot;&gt;/&lt;span style=&quot;color: rgb(102, 102, 102);&quot;&gt;PATH&lt;/span&gt;/app/plugin/&lt;span style=&quot;color: rgb(102, 102, 102);&quot;&gt;pluginName&lt;/span&gt;/config/sql/schema.php&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Este es un archivo schema.php de plugin de ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?php &lt;br /&gt;&lt;br /&gt;class PagesSchema extends CakeSchema {&lt;br /&gt; &lt;br /&gt; var $name = &quot;Pages&quot;;&lt;br /&gt;&lt;br /&gt; function before($event = array()) {&lt;br /&gt;  return true;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function after($event = array()) {&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;  var $pages = array(&#39;type&#39; =&gt; &#39;integer&#39;, &#39;null&#39; =&gt; false, &#39;default&#39; =&gt; NULL, &#39;key&#39; =&gt; &#39;primary&#39;),&lt;br /&gt;  &#39;title&#39; =&gt; array(&#39;type&#39; =&gt; &#39;string&#39;, &#39;null&#39; =&gt; false, &#39;default&#39; =&gt; NULL, &#39;length&#39; =&gt; 150),&lt;br /&gt;  &#39;content&#39; =&gt; array(&#39;type&#39; =&gt; &#39;text&#39;, &#39;null&#39; =&gt; false, &#39;default&#39; =&gt; NULL),&lt;br /&gt;  &#39;indexes&#39; =&gt; array(&#39;PRIMARY&#39; =&gt; array(&#39;column&#39; =&gt; &#39;id&#39;, &#39;unique&#39; =&gt; 1))&lt;br /&gt;  );&lt;br /&gt;&lt;br /&gt; var $categories = array(&lt;br /&gt;  &#39;id&#39; =&gt; array(&#39;type&#39; =&gt; &#39;integer&#39;, &#39;null&#39; =&gt; false, &#39;default&#39; =&gt; NULL, &#39;key&#39; =&gt; &#39;primary&#39;),&lt;br /&gt;  &#39;title&#39; =&gt; array(&#39;type&#39; =&gt; &#39;string&#39;, &#39;null&#39; =&gt; false, &#39;default&#39; =&gt; NULL, &#39;length&#39; =&gt; 150),&lt;br /&gt;  &#39;indexes&#39; =&gt; array(&#39;PRIMARY&#39; =&gt; array(&#39;column&#39; =&gt; &#39;id&#39;, &#39;unique&#39; =&gt; 1))&lt;br /&gt;  );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ahora, podemos definir un schema por cada plugin utilizando esta estructura, y editarlo cuando sea necesario realizar Schema Migrations. Así mismo, la migración de esquemas agregará o eliminará las tablas de la base de datos cuando se agreguen o eliminen, respectivamente, plugins a la aplicación. Todo esto lo realizaremos ejecutando el comando:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ cake schema run update Pages -f&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Donde Pages es el nombre del schema definido en el Pages plugin. Es necesario nombrar el plugin que estamos actualizando y usar el parámetro -f para que no tenga en cuenta los modelos definidos en la aplicación y los compare con toda la base de datos.&lt;br /&gt;&lt;br /&gt;Luego solo queda automatizar la actualización de todos los esquemas a la vez, pero lo dejamos para la próxima...</content><link rel='replies' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/8967363765585590520/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33160121&amp;postID=8967363765585590520' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/8967363765585590520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/8967363765585590520'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/2009/10/schema-migrations-con-plugins-de.html' title='Schema migrations con Plugins de CakePHP'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33160121.post-6365461252348559016</id><published>2009-09-20T13:25:00.006-03:00</published><updated>2010-04-29T21:40:18.271-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="denuncia"/><category scheme="http://www.blogger.com/atom/ns#" term="movistar"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>Red argentina de Movistar 3G, APESTA!</title><content type='html'>Hace poco adquirí un modem Huawei 3G USB de Movistar Argentina. Habrán visto en los últimos posts que estuve jugando un poco para hacerlo funcionar.&lt;br /&gt;&lt;br /&gt;Hoy el comentario no es sobre el modem en sí, sino sobre la red de Movistar y la falta de decencia de los mismos.&lt;br /&gt;Resulta que el modem 3G me asigna una IP interna del tipo 10.x.x.x, hasta acá nada nuevo, muchos de los cablemodems también asignan al equipo una IP interna y conservan ellos la externa a modo de router. Lo que me entero hoy, es que mi IP pública está COMPARTIDA con otros usuarios. Es decir, estamos todos (no se cuantos ni cómo) en una red interna, compartiendo una única interfaz pública.&lt;br /&gt;&lt;br /&gt;Lo que me conlleva al problema de hoy, al intentar descargar algo de RapidShare, me decía que mi IP ya estaba descargando del sitio y que no se podían realizar descargas simultáneas desde la misma IP. WTF?!&lt;br /&gt;Ya me había pasado utilizando eMule, que siempre se me asignaba un ID bajo, debido a que estaba detrás de un firewall compartiendo la interfaz de red pública con N usuarios más.&lt;br /&gt;&lt;br /&gt;En fin, pago el doble que una conexión cablemodem por una conexión que anda la mitad y que me deja dentro de una red privada que comparte una única interfaz pública y que tiene filtrados varios servicios.&lt;br /&gt;&lt;br /&gt;APESTA!</content><link rel='replies' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/6365461252348559016/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33160121&amp;postID=6365461252348559016' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/6365461252348559016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/6365461252348559016'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/2009/09/red-argentina-de-movistar-3g-apesta.html' title='Red argentina de Movistar 3G, APESTA!'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33160121.post-7914779794882286520</id><published>2009-08-13T09:24:00.003-03:00</published><updated>2009-08-24T13:23:12.954-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>Modem USB 3G Huawei E176 en Ubuntu 9.04</title><content type='html'>Ayer me encontré con la grata sorpresa de que Ubuntu 9.04 reconoce automágicamente el modem 3G de Huawei modelo E76 USB stick. No así, la versión 8.04 que tenía instalada antes de empezar a hacer pruebas.&lt;br /&gt;Tampoco OpenSolaris 2009.06 lo ha reconocido, asi que la instalación de OpenSolaris tendrá que esperar un tiempo más hasta saber como hacer funcionar este dispositivo.&lt;br /&gt;&lt;br /&gt;Por lo pronto, si uds., como yo, estaban googleando buscando la compatibilidad de este modem con Ubuntu Linux, ya les confirmo que pueden instalar sin problemas, que apenas conecten el modem al puerto USB, se les abrirá el configurador de conexión a internet móvil del applet NetworkManager de Gnome para usarlo al instante.</content><link rel='replies' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/7914779794882286520/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33160121&amp;postID=7914779794882286520' title='7 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/7914779794882286520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/7914779794882286520'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/2009/08/modem-usb-3g-huawei-e176-en-ubuntu-904.html' title='Modem USB 3G Huawei E176 en Ubuntu 9.04'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33160121.post-7059363065290806477</id><published>2009-08-11T10:33:00.002-03:00</published><updated>2009-08-11T10:37:32.526-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>Nuevo motor de Google</title><content type='html'>Parece ser que ya hace un tiempo, Google tiene un equipo de desarrolladores trabajando en un nuevo motor de búsqueda para su principal producto, el buscador Google.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://googlewebmastercentral.blogspot.com/2009/08/help-test-some-next-generation.html&quot;&gt;Ayer han anunciado&lt;/a&gt; que ya se pueden ir probando los resultados del trabajo de este equipo en la siguiente URL: &lt;a href=&quot;http://www2.sandbox.google.com/&quot;&gt;http://www2.sandbox.google.com/ &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A simple vista no hay cambios, debido a que la interfaz sigue siendo la misma, sin embargo, cuando realicemos una búsqueda aquí, estaremos utilizando el nuevo motor de busqueda, lo cual supone un cambio en los resultados con respecto a una búsqueda realizada en &lt;a href=&quot;http://www.google.com&quot;&gt;http://www.google.com&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/7059363065290806477/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33160121&amp;postID=7059363065290806477' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/7059363065290806477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/7059363065290806477'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/2009/08/nuevo-motor-de-google.html' title='Nuevo motor de Google'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33160121.post-8809287751056787814</id><published>2009-08-06T15:20:00.001-03:00</published><updated>2009-08-06T15:23:44.972-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="twitter"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>Twitter DOS</title><content type='html'>Desde hoy a la mañana, el sitio de &lt;a href=&quot;http://www.twitter.com&quot;&gt;Twitter&lt;/a&gt; está recibiendo un ataque de &lt;a href=&quot;http://es.wikipedia.org/wiki/Denegacion_de_servicio&quot;&gt;DOS&lt;/a&gt; y esto ha provocado que tanto el sitio, como el servicio esté offline durante horas y todavía siga con problemas.&lt;br /&gt;&lt;br /&gt;Así lo han publicado en su &lt;a href=&quot;http://blog.twitter.com/2009/08/denial-of-service-attack.html&quot;&gt;Blog&lt;/a&gt; y en la página de &lt;a href=&quot;http://status.twitter.com/post/157191978/ongoing-denial-of-service-attack&quot;&gt;estado&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/8809287751056787814/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33160121&amp;postID=8809287751056787814' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/8809287751056787814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/8809287751056787814'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/2009/08/twitter-dos.html' title='Twitter DOS'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33160121.post-1998675804479766201</id><published>2009-08-05T16:25:00.005-03:00</published><updated>2009-08-05T16:37:22.752-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="opensolaris"/><title type='text'>OpenSolaris cada día mas cerca</title><content type='html'>Cada vez más veo artículos sobre &lt;a href=&quot;http://www.opensolaris.com&quot;&gt;OpenSolaris&lt;/a&gt; dando vueltas por la red.&lt;br /&gt;Ya hace un tiempo que vengo siguiendo su desarrollo y hoy en día ya estoy decidido a probarlo, luego de haberlo instalado en un VirtualBox sobre el Ubuntu 8.04 de mi casa, y haber visto que el escritorio Gnome corría aceptablemente rápido, en una máquina virtual con 600MB de RAM.&lt;br /&gt;&lt;br /&gt;Ya tengo el LiveCD de OpenSolaris 2009.06 grabado y hoy a la noche empiezo a testear la compatibilidad con mi hardware usándolo en modo LiveCD.&lt;br /&gt;Sin dudas el desafío mas grande, será lograr conectarlo a Internet usando un modem 3G USB de algún proveedor de telefonía móvil. Para eso, también estoy llevándome la Preview Release OpenSolaris 2010.02 (build 118) para casa, por si en esa las cosas están mas fáciles.&lt;br /&gt;&lt;br /&gt;Hace tiempo ya que le venía dando vueltas al asunto de instalarme un Unix real en casa para jugar un poco. Todo bien con Linux, pero en serio, no es Unix, es Unix-like y eso no le quita mérito ni mucho menos, pero estaba encaprichado con Unix.&lt;br /&gt;La cuestión es que hasta hace no mucho, las distintas ramas de Unix que había en el mercado, estaban orientadas exclusivamente a los servidores. Hubo que esperar un tiempo hasta que aparecieron derivados como el Mac OS X ( el día en que Apple nos dió un sistema operativo Unix para el escritorio ) o PC-BSD ( un derivado de FreeBSD ) orientados al usuario de escritorio con todo lo que eso implica.&lt;br /&gt;&lt;br /&gt;Hoy en día, espero encontrar en OpenSolaris, un sistema operativo de escritorio, profesional, estable, seguro, y por sobre todo, Open Source.&lt;br /&gt;&lt;br /&gt;Próximamente, espero volver a escribir sobre gratas experiencias sobre este tema.</content><link rel='replies' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/1998675804479766201/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33160121&amp;postID=1998675804479766201' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/1998675804479766201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/1998675804479766201'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/2009/08/opensolaris-cada-dia-mas-cerca.html' title='OpenSolaris cada día mas cerca'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33160121.post-1552484783080413447</id><published>2009-08-04T15:20:00.004-03:00</published><updated>2009-08-04T15:28:02.286-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="denuncia"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>El producto de la ignorancia</title><content type='html'>Bueno, hoy publico una queja, luego de muchos años de ser cliente de Telecom Personal Argentina, me cansé de que el sitio web ( www.personal.com.ar ) funcione cuando los orcos del departamento de sistemas por casualidad logran que algo funcione.&lt;br /&gt;Ya hace tiempo logré descubrir (luego de varios intentos) que el chat de atención al cliente funciona solamente en Internet Explorer. No es que les exiga implementar la compatibilidad... solo que tengan el buen gusto de poner un cartelito que diga algo como &quot;Macho, con ese browser te vas a cansar de esperar, mejor proba con IE que ahi si funciona&quot;.&lt;br /&gt;&lt;br /&gt;Ahora, resulta que ni siquiera puedo iniciar sesión en la sección de autogestión. Ya hace semanas que trato de leer mi factura online y no puedo iniciar sesión. Esperé unas semanas para quejarme, porque quizás volvía alguno de vacaciones que tuviera una mínima idea de ASP.NET y solucionaba el problema, pero se ve que eso no existe en esa empresa.&lt;br /&gt;&lt;br /&gt;El error que recibo (de nuevo, solamente en Internet Explorer, porque en FF no veo que pase nada) es el siguiente:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Sys.WebForms.PageRequestManagerServerErrorException: An unknown error occurred while processing the request on the server. The status code returned from the server was: 0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En fin, ahora voy a enviar un reclamo (si es que tengo suerte y encuentro alguna forma de reportar errores en este sitio) a ver si alguien lo soluciona.&lt;br /&gt;&lt;br /&gt;Todavía me sorprende que empresas de la envergadura de Telecom tengan sitios web TAN MAL HECHOS como este.</content><link rel='replies' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/1552484783080413447/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33160121&amp;postID=1552484783080413447' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/1552484783080413447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/1552484783080413447'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/2009/08/el-producto-de-la-ignorancia.html' title='El producto de la ignorancia'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33160121.post-7734622844073181405</id><published>2009-07-31T11:13:00.003-03:00</published><updated>2009-07-31T11:18:13.453-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="html"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><category scheme="http://www.blogger.com/atom/ns#" term="xml"/><title type='text'>XHTML2 is dead, long live to XHTML!</title><content type='html'>Hoy leí en Smashing Magazine una muy buena historieta (en inglés) que aclara de forma breve y concisa, con un poco de humor, toda la confusión entre el freno del desarrollo de la especificación XHTML2, el énfasis sobre HTML5 y la creencia equivocada acerca de que la sintaxis XHTML va a desaparecer...&lt;br /&gt;&lt;br /&gt;Les dejo el link a la historieta.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.smashingmagazine.com/2009/07/29/misunderstanding-markup-xhtml-2-comic-strip/&quot;&gt;http://www.smashingmagazine.com/2009/07/29/misunderstanding-markup-xhtml-2-comic-strip/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ahora sí se entiende todo! =D</content><link rel='replies' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/7734622844073181405/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33160121&amp;postID=7734622844073181405' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/7734622844073181405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/7734622844073181405'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/2009/07/xhtml2-is-dead-long-live-to-xhtml.html' title='XHTML2 is dead, long live to XHTML!'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33160121.post-8956272946977205827</id><published>2009-07-29T16:45:00.003-03:00</published><updated>2009-07-29T16:46:27.592-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ocio"/><title type='text'>Tron Legacy</title><content type='html'>Solo eso, la secuela de Tron ya esta llegando y aca tenemos el primer trailer oficial... disfruten!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width=&quot;560&quot; height=&quot;340&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/YKHRLB_qzlo&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/YKHRLB_qzlo&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;560&quot; height=&quot;340&quot;&gt;&lt;/embed&gt;&lt;/object&gt;</content><link rel='replies' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/8956272946977205827/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33160121&amp;postID=8956272946977205827' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/8956272946977205827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/8956272946977205827'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/2009/07/tron-legacy.html' title='Tron Legacy'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33160121.post-3441823141172271000</id><published>2009-06-02T05:03:00.003-03:00</published><updated>2009-06-02T05:40:40.024-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="html"/><category scheme="http://www.blogger.com/atom/ns#" term="ie fix"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>IE6 PNG fix with background images support</title><content type='html'>... o cómo hacer funcionar las transparencias PNG en Internet Explorer 6 incluso cuando las usamos como imágenes de fondo.&lt;br /&gt;&lt;br /&gt;No voy a andar explicando todo, simplemente que tarde, pero seguro, encontré un fix en Javascript que renderea correctamente las imagenes de fondo:&lt;br /&gt;&lt;br /&gt;Link: &lt;a href=&quot;http://www.dillerdesign.com/experiment/DD_belatedPNG/&quot;&gt;http://www.dillerdesign.com/experiment/DD_belatedPNG/&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/3441823141172271000/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33160121&amp;postID=3441823141172271000' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/3441823141172271000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/3441823141172271000'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/2009/06/ie6-png-fix-with-background-images.html' title='IE6 PNG fix with background images support'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33160121.post-515770216162079093</id><published>2009-05-18T07:02:00.002-03:00</published><updated>2009-05-18T07:08:15.186-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="css"/><category scheme="http://www.blogger.com/atom/ns#" term="html"/><category scheme="http://www.blogger.com/atom/ns#" term="ie fix"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>Bordes de un TR</title><content type='html'>Hoy me encontré con que Internet Explorer (todas las versiones) no muestra los bordes de un TR a no ser que a la tabla que los contiene le asignemos un &lt;span style=&quot;font-style: italic;&quot;&gt;border-collapese: collapse&lt;/span&gt; en el CSS:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;table {&lt;br /&gt;   border-collapse:collapse;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Por suerte googleando apenas unos segundos encontré esta solución en &lt;a href=&quot;http://www.csarven.ca/tr-border-trick-for-ie&quot;&gt;este blog&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/515770216162079093/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33160121&amp;postID=515770216162079093' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/515770216162079093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/515770216162079093'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/2009/05/bordes-de-un-tr.html' title='Bordes de un TR'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33160121.post-947407471182014935</id><published>2009-05-03T09:48:00.002-03:00</published><updated>2009-05-03T10:03:29.877-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="zend framework"/><title type='text'>PHP gets RAD</title><content type='html'>Y si, llegó el día en el que PHP tiene, de una forma muy decente, soporte para RAD. Vino de la mano del &lt;a href=&quot;http://www.zend.com/en/company/news/press/new-zend-framework-delivers-rapid-application-development-rad-for-php&quot;&gt;lanzamiento&lt;/a&gt; de la versión 1.8 del Zend Framework que trae entre sus novedades a Zend_Application y Zend_Loader_Autoloader.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Con esto, el Zend Framework gana una gran ventaja sobre CakePHP y tambien sobre tecnologías hermanas como Ruby On Rails.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Y si a esto le sumamos que Zend acaba de lanzar su nuevo producto &lt;a href=&quot;http://www.zend.com/products/server/&quot;&gt;Zend Server&lt;/a&gt; al mercado, podemos decir ya que PHP esta compitiendo fuertemente en el mercado de las grandes plataformas, junto a tecnologías como J2EE o .NET., con un conjunto de productos, prácticamente estandarizados, ya que provienen todos de la misma empresa, que sigue el clásico modelo open source de ofrecer libre la plataforma y vender las herramientas empresariales y el soporte.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/947407471182014935/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33160121&amp;postID=947407471182014935' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/947407471182014935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/947407471182014935'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/2009/05/php-gets-rad.html' title='PHP gets RAD'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33160121.post-2216142080623000023</id><published>2009-04-27T06:53:00.003-03:00</published><updated>2009-04-27T07:09:01.442-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>La larga muerte del IE6</title><content type='html'>Sin un anuncio o fecha oficial, de a poco, nuestro muy odiado Internet Explorer 6 está perdiendo poco a poco su lugar en las &lt;a href=&quot;http://www.w3schools.com/browsers/browsers_stats.asp&quot;&gt;estadísticas de uso de browsers&lt;/a&gt; que andan dando vuelta por la web. De a poco vemos como cada vez son menos los usuarios de esta versión del browser, y cada vez más los usuarios de sus nuevas versiones, así como también los usuarios de los nuevos y modernos browsers disponibles como Firefox, Chrome o Safari.&lt;br /&gt;&lt;br /&gt;Cada vez son &lt;a href=&quot;http://idroppedie6.com/&quot;&gt;más&lt;/a&gt; los &lt;a href=&quot;http://37signals.blogs.com/products/2008/07/basecamp-phasin.html&quot;&gt;sitios&lt;/a&gt; que &lt;a href=&quot;http://derekperez.com/blog/2008/09/drop-ie6-support/&quot;&gt;hablan&lt;/a&gt; de &lt;a href=&quot;http://www.anieto2k.com/2009/02/24/noie6day-18-de-octubre-dia-sin-internet-explorer-6/&quot;&gt;dejar de soportar&lt;/a&gt; IE6 en sus aplicaciones web, a favor de la estandarización y de quitar todos esos horribles hacks en nuestros códigos, destinados a hacer que el IE6 se comporte como un browser decente. De hecho, si buscamos &quot;&lt;a href=&quot;http://www.google.com.ar/search?q=ie6+support&quot;&gt;ie6 support&lt;/a&gt;&quot; en google, en la primer página encontramos más resultados sobre dejar de soportar el browser, que resultados sobre el soporte a IE6.&lt;br /&gt;&lt;br /&gt;Pero claro, todavía tenemos clientes que usan este browser y no queremos fastidiarlos obligándolos a actualizar su software por razones que ellos no comprenden ni comprenderán...&lt;br /&gt;Entonces, cuando será el momento adecuado para dejar de soportar esta maldición?&lt;br /&gt;&lt;br /&gt;Uds. todavía siguen programando aplicaciones &quot;web IE6 compatibles&quot; ??</content><link rel='replies' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/2216142080623000023/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33160121&amp;postID=2216142080623000023' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/2216142080623000023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/2216142080623000023'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/2009/04/la-larga-agonia-del-ie6.html' title='La larga muerte del IE6'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33160121.post-2424889994147275926</id><published>2009-04-21T04:36:00.002-03:00</published><updated>2009-04-21T04:40:50.751-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="trabajo"/><title type='text'>Holanda</title><content type='html'>Hola, se que estoy posteando poco ultimamente, pasa que estoy en Holanda trabajando hace ya un mes y medio, en &lt;a href=&quot;http://www.transip.nl&quot;&gt;una empresa de hosting&lt;/a&gt;. Nos mandaron a un compañero y a mi por 3 meses... estamos implementando Internacionalización ( i18n ) en el sitio por ahora, para que puedan empezar a vender sus servicios en paises vecinos.&lt;br /&gt;&lt;br /&gt;Asi que por ahora, ando muy ocupado trabajando un poco y paseando otro tanto, por eso es que no posteo... en algún momento escribiré algún artículo, quizas les cuente sobre los coffee shops... o los quesos (?) jaja, veremos.&lt;br /&gt;Por el momento es hasta la próxima!</content><link rel='replies' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/2424889994147275926/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33160121&amp;postID=2424889994147275926' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/2424889994147275926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/2424889994147275926'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/2009/04/holanda.html' title='Holanda'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33160121.post-1735154904335356820</id><published>2009-03-23T07:58:00.004-03:00</published><updated>2009-03-23T08:16:25.382-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="eclipse"/><title type='text'>Eclipse Ctrl+D usability</title><content type='html'>Todavia no entiendo como es que la combinaci&amp;oacute;n de teclas Ctrl+D que sirve para eliminar la l&amp;iacute;nea entera sigue siendo esa, estando justo al lado del Ctrol+S que sirve para guardar el archivo actual y que uso constantemente...&lt;br /&gt;A mi solo me pasa que borro cantidades de l&amp;iacute;neas en vez de guardar el archivo?? No les pasa a uds. tambi&amp;eacute;n??&lt;br /&gt;No seria mejor buscar una alternativa a la combinaci&amp;oacute;n Ctrl+D(elete) ?? Quiz&amp;aacute;s Ctrl+R(emove)...&lt;br /&gt;Ya se que se puede configurar... pero se podria mejorar la configuraci&amp;oacute;n por defecto tambi&amp;eacute;n.&lt;br /&gt;&lt;br /&gt;De todas formas no se alarmen que no es tan grave, por suerte existe el Ctrl+Z para deshacer esa equivocaci&amp;oacute;n, pero es solo que estoy cansado de equivocarme xD.</content><link rel='replies' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/1735154904335356820/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33160121&amp;postID=1735154904335356820' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/1735154904335356820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/1735154904335356820'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/2009/03/eclipse-ctrld-usability.html' title='Eclipse Ctrl+D usability'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33160121.post-4551669631890089810</id><published>2009-03-04T16:47:00.003-02:00</published><updated>2009-03-05T13:31:16.612-02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="html"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>Thumbnails de un HTML</title><content type='html'>Hoy, buscando una solución para un cliente que me pedía ver thumbnails de unos templates HTML de su sitio, encontré este servicio llamado &lt;a href=&quot;http://www.thumbizy.com/&quot;&gt;Thumbizy&lt;/a&gt; que en su página principal nos deja ingresar una URL y al darle click al botón, nos genera un thumbnail instantáneo pudiendo modificar aspectos como el tamaño o agregarle algun efecto lindo al mismo.&lt;br /&gt;&lt;br /&gt;Pero eso no es todo, podemos generar thumbnails dinamicamente solicitando la URL que nos ofrece en las opciones de abajo. Es lo que necesito yo!&lt;br /&gt;&lt;br /&gt;En fin, como ejemplo aca abajo, dejo un thumbnail de este blog generado en vivo por este servicio:&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www.thumbizy.com/go_2.php?url=http://infectogroovalistic.blogspot.com&amp;amp;size=inter_m&amp;amp;full=YES&amp;amp;effect=CORNER&amp;amp;inter_size=YES&quot; /&gt;</content><link rel='replies' type='application/atom+xml' href='http://infectogroovalistic.blogspot.com/feeds/4551669631890089810/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33160121&amp;postID=4551669631890089810' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/4551669631890089810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33160121/posts/default/4551669631890089810'/><link rel='alternate' type='text/html' href='http://infectogroovalistic.blogspot.com/2009/03/thumbnails-de-un-html.html' title='Thumbnails de un HTML'/><author><name>Leo</name><uri>http://www.blogger.com/profile/02471332543396665252</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>