<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>jocdz</title>
	<atom:link href="http://j053d.net/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://j053d.net/blog</link>
	<description>algoritmicamente leible</description>
	<lastBuildDate>Sat, 04 Sep 2010 19:20:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>WTF!! con tus Traducciones Google</title>
		<link>http://j053d.net/blog/wtf-con-tus-traducciones-google/</link>
		<comments>http://j053d.net/blog/wtf-con-tus-traducciones-google/#comments</comments>
		<pubDate>Sat, 04 Sep 2010 19:19:06 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Off Topic]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=1385</guid>
		<description><![CDATA[Todo un Off-Topic a comentar sobre que le ocurre a la gente de Google con sus traducciones de un idioma a otro. Del idioma Malayo al Frances al escribir en la web de traducciones de Google lady gaga en minuscula lo traduce a Britney Spears. Al recibir un DM (Direct Menssage) a Gmail y este [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fwtf-con-tus-traducciones-google%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fwtf-con-tus-traducciones-google%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Todo un Off-Topic a comentar sobre que le ocurre a la gente de Google con sus traducciones de un idioma a otro.</p>
<p>Del idioma <strong>Malayo</strong> al <strong>Frances</strong> al escribir en la web de traducciones de Google <strong>lady gaga</strong> en minuscula lo traduce a <strong>Britney Spears</strong>.</p>
<p>Al recibir un DM (Direct Menssage) a Gmail y este posee activo lo de traducir los correos de un idioma a otro, el boton de enviarle a ese contacto un DM aparece de esta forma:</p>

<a href='http://j053d.net/blog/wtf-con-tus-traducciones-google/img1-2/' title='img1'><img width="150" height="150" src="http://j053d.net/blog/wp-content/uploads/img14-150x150.jpg" class="attachment-thumbnail" alt="img1" title="img1" /></a>
<a href='http://j053d.net/blog/wtf-con-tus-traducciones-google/img2/' title='img2'><img width="150" height="150" src="http://j053d.net/blog/wp-content/uploads/img2-150x150.jpg" class="attachment-thumbnail" alt="img2" title="img2" /></a>

]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/wtf-con-tus-traducciones-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Separar el UI de OpenOffice del Theme del SistOp</title>
		<link>http://j053d.net/blog/separar-el-ui-de-openoffice-del-theme-del-sistop/</link>
		<comments>http://j053d.net/blog/separar-el-ui-de-openoffice-del-theme-del-sistop/#comments</comments>
		<pubDate>Fri, 03 Sep 2010 23:11:12 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=1382</guid>
		<description><![CDATA[Este podria ser el post mas corto que escriba en mi blog, el cual existe precisamente para poner algunas notas/apuntes que me ayudaran a repasar en caso de presentarse nuevamente la necesidad y al ser un blog publico como muchos, que posiblemente pueda servirle a otros. OpenOffice presenta una vista algo engorrosa cuando el Tema(theme) [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fseparar-el-ui-de-openoffice-del-theme-del-sistop%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fseparar-el-ui-de-openoffice-del-theme-del-sistop%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Este podria ser el post mas corto que escriba en mi blog, el cual existe precisamente para poner algunas notas/apuntes que me ayudaran a repasar en caso de presentarse nuevamente la necesidad y al ser un blog publico como muchos, que posiblemente pueda servirle a otros.</p>
<p>OpenOffice presenta una vista algo engorrosa cuando el Tema(theme) del Sistema Operativo es algo oscuro/dark haciendo que el menu y hasta posiblemente la barra de herramientas (toolbar) se vea de color muy oscuro y de iconos feos.</p>
<p>Para mejorar la vision del OpenOffice, la solucion es remover sus entornos GTK y Gnome, esto hace que el OpenOffice separe su Interfaz de Usuario (UI) de la del sistema.</p>
<pre class="brush: bash;">
sudo apt-get remove openoffice.org-gnome
</pre>
<p>Y eso es todo. Algo simple pero que no recordaba la instruccion y donde la habia visto (otro blog) simplemente habia desaparecido, asi que por eso, hago una copia del dato en el mio.</p>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/separar-el-ui-de-openoffice-del-theme-del-sistop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Logstalgia &#8211; Ver el Log de Apache graficamente al momento</title>
		<link>http://j053d.net/blog/logstalgia-ver-el-log-de-apache-graficamente-al-momento/</link>
		<comments>http://j053d.net/blog/logstalgia-ver-el-log-de-apache-graficamente-al-momento/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 02:52:53 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=1374</guid>
		<description><![CDATA[Gracias a un Tweet de fr33co sobre un post de Mundo Geek me entero de Logstalgia para ver de forma gráfica y en vivo el Log de Apache. Logstalgia se encuentra en los repositorios y para ver un ejemplo de lo que ofrece, solo indicar en la terminal el comando y la ruta de alguno [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Flogstalgia-ver-el-log-de-apache-graficamente-al-momento%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Flogstalgia-ver-el-log-de-apache-graficamente-al-momento%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Gracias a <a href="http://twitter.com/fr33co/status/22761551436">un Tweet de fr33co sobre un post de Mundo Geek</a> me entero de Logstalgia para ver de forma gráfica y en vivo el Log de Apache. Logstalgia se encuentra en los repositorios y para ver un ejemplo de lo que ofrece, solo indicar en la terminal el comando y la ruta de alguno de los archivos logs de Apache. Por ejemplo en mi caso tengo un link de la carpeta logs de Apache en mi escritorio, por lo que una vista de mi localhost.</p>
<pre class="brush: bash;">
logstalgia ./Escritorio/logs/access.log
logstalgia ./Escritorio/logs/access.log.1
</pre>
<p><a href="http://j053d.net/blog/wp-content/uploads/mi_logstalgia_localhost.png"></a></p>
<p style="text-align: center;"><a href="http://dl.dropbox.com/u/2807704/img/mi_logstalgia_localhost.png"><img class="size-medium wp-image-1375" title="mi_logstalgia_localhost" src="http://j053d.net/blog/wp-content/uploads/mi_logstalgia_localhost-300x221.png" alt="" width="300" height="221" /></a></p>
<p style="text-align: left;">Claro, fuera de un localhost, es mas interactivo y gráficamente interesante ver los logs de un Apache de un Servidor en Producción.</p>
<p style="text-align: left;"><a href="http://www.youtube.com/watch?v=HeWfkPeDQbY&amp;feature=player_embedded">Logs de Apache con Logstalgia en un Servidor de Produccion</a></p>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/logstalgia-ver-el-log-de-apache-graficamente-al-momento/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows XP y Ubuntu en Red</title>
		<link>http://j053d.net/blog/windows-xp-y-ubuntu-en-red/</link>
		<comments>http://j053d.net/blog/windows-xp-y-ubuntu-en-red/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 01:26:46 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[mat.didactico]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=1345</guid>
		<description><![CDATA[Debido a que mi pendrive de 8GB murio y en vista de que en mercadolibre.com los que hay son pocos y muy feos, tenia el problema de como pasar archivos desde mi laptop con Ubuntu a otros equipos con Windows XP.  Para no pedirle un pendrive de 4GB (que yo le regale) a mi hermana [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fwindows-xp-y-ubuntu-en-red%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fwindows-xp-y-ubuntu-en-red%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Debido a que mi pendrive de 8GB murio y en vista de que en mercadolibre.com los que hay son pocos y muy feos, tenia el problema de como pasar archivos desde mi laptop con Ubuntu a otros equipos con Windows XP.  Para no pedirle un pendrive de 4GB (que yo le regale) a mi hermana en caso de que unos clientes me llamaran. Obviamente me fui por la solucion mas ideal para el caso, cablearme con la PC de mis clientes y pasar los archivos, adios idea del pendrive, la cual veo mas engorrosa. Si el PC con Windows tiene virus, no importa, es dificil que un virus de Windows logre infectar como lo tiene programado, un sistema Linux.</p>
<p><span id="more-1345"></span></p>
<p>No le prestes atencion a otras imagenes o iconos de los screenshot que esas son otras cosas mias que casualmente o tiene relacion con unos clientes o son cosas de pruebas mias.</p>
<h3>En Windows XP:</h3>
<div id="attachment_1346" class="wp-caption aligncenter" style="width: 310px"><a href="http://j053d.net/blog/wp-content/uploads/img1.jpg"><img class="size-medium wp-image-1346" title="img1" src="http://j053d.net/blog/wp-content/uploads/img1-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">Configuramos una Red domestica en WinXP</p></div>
<div id="attachment_1348" class="wp-caption aligncenter" style="width: 310px"><a href="http://j053d.net/blog/wp-content/uploads/img4.jpg"><img class="size-medium wp-image-1348" title="img4" src="http://j053d.net/blog/wp-content/uploads/img4-300x221.jpg" alt="" width="300" height="221" /></a><p class="wp-caption-text">Dale &quot;Siguiente&quot; siempre y que esta esta opcion.</p></div>
<div id="attachment_1349" class="wp-caption aligncenter" style="width: 310px"><a href="http://j053d.net/blog/wp-content/uploads/img5.jpg"><img class="size-medium wp-image-1349" title="img5" src="http://j053d.net/blog/wp-content/uploads/img5-300x221.jpg" alt="" width="300" height="221" /></a><p class="wp-caption-text">Lo que necesitamos, carpetas e impresora compartidas</p></div>
<div id="attachment_1350" class="wp-caption aligncenter" style="width: 310px"><a href="http://j053d.net/blog/wp-content/uploads/img7.jpg"><img class="size-medium wp-image-1350" title="img7" src="http://j053d.net/blog/wp-content/uploads/img7-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">Configurando la tarjeta de Red</p></div>
<div id="attachment_1351" class="wp-caption aligncenter" style="width: 254px"><a href="http://j053d.net/blog/wp-content/uploads/img8.jpg"><img class="size-medium wp-image-1351" title="img8" src="http://j053d.net/blog/wp-content/uploads/img8-244x300.jpg" alt="" width="244" height="300" /></a><p class="wp-caption-text">Click a Propiedades</p></div>
<div id="attachment_1352" class="wp-caption aligncenter" style="width: 270px"><a href="http://j053d.net/blog/wp-content/uploads/img9.jpg"><img class="size-medium wp-image-1352 " title="img9" src="http://j053d.net/blog/wp-content/uploads/img9-260x300.jpg" alt="" width="260" height="300" /></a><br />
<p class="wp-caption-text">Click a Propiedades</p></div>
<div id="attachment_1353" class="wp-caption aligncenter" style="width: 276px"><a href="http://j053d.net/blog/wp-content/uploads/img10.jpg"><img class="size-medium wp-image-1353" title="img10" src="http://j053d.net/blog/wp-content/uploads/img10-266x300.jpg" alt="" width="266" height="300" /></a><p class="wp-caption-text">Pones una IP, subred, Gateway (Pueden ser estos mismos)</p></div>
<div id="attachment_1355" class="wp-caption aligncenter" style="width: 310px"><a href="http://j053d.net/blog/wp-content/uploads/img12.jpg"><img class="size-medium wp-image-1355" title="img12" src="http://j053d.net/blog/wp-content/uploads/img12-300x151.jpg" alt="" width="300" height="151" /></a><p class="wp-caption-text">Hazle un ping a esa IP (la tarjeta debe responder)</p></div>
<div id="attachment_1354" class="wp-caption aligncenter" style="width: 292px"><a href="http://j053d.net/blog/wp-content/uploads/img11.jpg"><img class="size-medium wp-image-1354" title="img11" src="http://j053d.net/blog/wp-content/uploads/img11-282x300.jpg" alt="" width="282" height="300" /></a><p class="wp-caption-text">Crea una carpeta y Compartela (la mia se llamo JD)</p></div>
<h3>En Linux (Ubuntu Lucid Lynx):</h3>
<div id="attachment_1356" class="wp-caption aligncenter" style="width: 310px"><a href="http://j053d.net/blog/wp-content/uploads/img13.jpg"><img class="size-medium wp-image-1356" title="img13" src="http://j053d.net/blog/wp-content/uploads/img13-300x88.jpg" alt="" width="300" height="88" /></a><p class="wp-caption-text">Desconectate de tu Red actual</p></div>
<p><a href="http://j053d.net/blog/wp-content/uploads/img14.png"><img class="aligncenter size-medium wp-image-1357" title="img14" src="http://j053d.net/blog/wp-content/uploads/img14-300x181.png" alt="Boton derecho &gt;&gt; Editar las conexiones..." width="300" height="181" /></a></p>
<p>Recordando que en el Windows le indicamos que su IP seria 192.168.0.1, para el otro PC (el de Linux) sera la misma IP pero cambiando el ultimo octeto de la IP, es decir, 192.168.0.2, y obviamente misma submascara de red y misma Puerta de enlace, desde luego. Olvidate de las otras pestanas de la ventana, deja en blanco la pestana de Cableado, ve a la de Ajustes de IPv4 y solo le das al boton Aplicar y cierras la ventana.</p>
<div id="attachment_1358" class="wp-caption aligncenter" style="width: 304px"><a href="http://j053d.net/blog/wp-content/uploads/img15.png"><img class="size-medium wp-image-1358" title="img15" src="http://j053d.net/blog/wp-content/uploads/img15-294x300.png" alt="" width="294" height="300" /></a><p class="wp-caption-text">Crea un enlace como este</p></div>
<div id="attachment_1359" class="wp-caption aligncenter" style="width: 310px"><a href="http://j053d.net/blog/wp-content/uploads/img16.png"><img class="size-medium wp-image-1359" title="img16" src="http://j053d.net/blog/wp-content/uploads/img16-300x181.png" alt="" width="300" height="181" /></a><p class="wp-caption-text">Asi nos queda, con la conexion nueva anexada a la lista</p></div>
<p>Ahora asi como te conectas y desconectas de una red a otra en tu Ubuntu, procedes a conectarte a esta nueva que en este caso llamamos WinXP_Desktop. Si vas a la terminal de linux y haces ping 192.168.0.1 deberias recibir respuesta del PC de WinXP el cual tiene esta IP y te deberia de responder.</p>
<p>En tu sistema Ubuntu/Linux en el Menu Lugares &gt; Red &gt; (Icono) Red de Windows.</p>
<p>Deberia aparecer un icono con el nombre del Grupo_Trabajo del WinXP que le hayas puesto (o ese si no lo cambiaste) y dentro de este deberian verse toda carpeta que hayas puesto como Compartida en WinXP, para esta practica en el WinXP se creo en C:\ una carpeta llamada JD que se indico Compartir en Red, para esta practica esa carpeta se ve en red y otra que luego comparti en red y pase informacion bidireccionalmente y editadamente sin problemas entre WinXP y Ubuntu.</p>
<h3>Teniendo un Router como puente:</h3>
<p>Como tengo el modem con un router y asi tener wifi para la laptop y el telefono, para tener la PC con WinXP igual de enlazada en red con el equipo con Ubuntu (en mi caso una laptop y por wifi). Con estar el PC con WinXP conectado al router y el otro equipo tambien cableado o por wifi, ya estan en red. Si se hace ping desde la terminal de Ubuntu a la IP del PC con WinXP y si se hace ping desde la terminal DOS de WinXP a la IP del equipo con Ubuntu, deberian responder sin problemas.</p>
<p>Pero al tener como puente el router, ya no se accede al grupo_trabajo y por ende a sus Carpetas Compartidas por el menu de:</p>
<p>Lugares &gt; Red &gt; Red de Windows &#8212;&gt; aqui ya no aparecen el grupo_Trabajo (y obviamente tampoco sus carpetas compartidas). Para este caso, la via de conexion es por:</p>
<p>Lugares &gt; Conectar con el Servidor&#8230;</p>
<p>En la ventana solo llenamos los siguientes datos y todo lo demas lo dejamos en blanco (para este caso).</p>
<p>Tipo de Servidor: Compartido por Windows</p>
<p>Servidor: La IP del PC con WinXP o el nombre de red de dicho equipo.</p>
<p>Recuerda que la IP del PC con WinXP es una IP dinamica que el router le ha dado por su DHCP de su rango de IPs disponibles, con un ipconfig en la terminal DOS de WinXP sabremos su IP, o sino, colocar el nombre de red del equipo.</p>
<p>E inmediatamente una vez ingresado esto y al pulsar el boton Conectar, se abrira la ventana mostrando las carpetas compartidas del grupo_trabajo de este Windows. De esa forma, los otros PCs con Windows XP tendran su acceso a internet gracias al router y podremos seguir teniendo acceso en red entre un Windows XP y un Ubuntu Linux.</p>
<p>No he podido instalar un Vista o preferiblemente un Win7 para realizar pruebas iguales o parecidas para anexar a este contenido, cuando pueda o si alguien que lea esto puede confirmar que funciona igual en estas versiones posteriores, enriqueceria muy bien este contenido.</p>
<div class="mceIEcenter">
<dl id="attachment_1358" class="aligncenter">
<div>
<dl id="attachment_1348">
<dt style="text-align: left;">enjoy! </dt>
</dl>
</div>
<div>
<dl id="attachment_1349">
<dt></dt>
</dl>
</div>
</dl>
</div>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/windows-xp-y-ubuntu-en-red/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cuando el Cache de APT sufre un desbordamiento</title>
		<link>http://j053d.net/blog/dynamic-mmap-ran-out-of-room/</link>
		<comments>http://j053d.net/blog/dynamic-mmap-ran-out-of-room/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 14:33:15 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[mat.didactico]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=1325</guid>
		<description><![CDATA[Cuando el Cache de APT (si el apt-get que usamos de vez en cuando) ha sufrido un overflow por alguna enorme cantidad de paquetes en su lista de repositorios que al hacer un update indique la sobrecarga en algun punto de su update y es entonces cuando debemos aumentar el espacio de esta memoria cache [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fdynamic-mmap-ran-out-of-room%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fdynamic-mmap-ran-out-of-room%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Cuando el Cache de <a href="http://es.wikipedia.org/wiki/Advanced_Packaging_Tool">APT</a> (si el <strong>apt-get</strong> que usamos de vez en cuando) ha sufrido un overflow por alguna enorme cantidad de paquetes en su lista de repositorios que al hacer un update indique la sobrecarga en algun punto de su update y es entonces cuando debemos aumentar el espacio de esta memoria cache del APT.</p>
<p>Bien sea en spanish: <em>Dynamic MMap corrió fuera de la sala</em><br />
O bien sea en English: <em>Dynamic MMap ran out of room</em></p>
<p><span id="more-1325"></span></p>
<p>El día de hoy me ocurrieron unos errores (precisamente al purgar la versión 1.3.3 de <a href="http://turpial.org.ve/">Turpial</a> para instalar la version 1.3.4). Al realizar un update por la terminal, el proceso termino con las siguientes ultimas lineas:</p>
<pre class="brush: bash;">
E: Dynamic MMap corrió fuera de la sala. Incremente el tamaño de APT::Cache-Limit. Valor actual: 25165824. (man 5 apt.conf)
E: Ocurrió un error mientras se procesaba language-pack-kde-he (NewVersion1)
E: Problem with MergeList /var/lib/apt/lists/ve.archive.ubuntu.com_ubuntu_dists_karmic-updates_main_binary-i386_Packages
W: Unable to munmap
E: No se pudieron analizar o abrir las listas de paquetes o el archivo de estado.
</pre>
<p>Lo cual indica que la memoria caché apt está fuera del espacio, suponiendo que es por muchos paquetes cargados de los repos y ha sobre-excedido el cache de apt.</p>
<p>Bien sea si intentase hacer un apt-get install -f o un apt-get clean o un apt-get autoclean o un autoremove el resultado era el mismo. Al abrir el Synaptic, este sacaba un aviso que informaba sobre el mismo fallo y se cerraba luego de informar esto:</p>
<pre class="brush: bash;">
E: Dynamic MMap corrió fuera de la sala. Incremente el tamaño de APT::Cache-Limit. Valor actual: 25165824. (man 5 apt.conf)
E: Ocurrió un error mientras se procesaba language-pack-kde-it (NewVersion1)
E: Problem with MergeList /var/lib/apt/lists/ve.archive.ubuntu.com_ubuntu_dists_karmic-updates_main_binary-i386_Packages
E: Las listas de paquetes o el archivo de estado no se pueden analizar sintácticamente o abrir.
E: _cache-&gt;open() failed, please report.
</pre>
<p>De esta informacion sobre el fallo, resaltaba a la vista la sugerencia indicada:</p>
<pre class="brush: bash;">
Incremente el tamaño de APT::Cache-Limit. Valor actual: 25165824. (man 5 apt.conf)
</pre>
<p>Preferí pasar por el IRC de ubuntu-es para preguntar como podría incrementar este cache indicando en un <a href="http://paste.ubuntu.com/">paste</a> la información de todo este fallo. El buen Geek <strong>erUSUL</strong> el cual en muchas ocasiones esta en el IRC de ubuntu-es tomando como referencia <a href="http://www.ithowto.ro/2008/10/howto-increase-apt-gets-cache-limit/">esta información</a> me ayudo a resolver dicho problema.</p>
<p>Entonces, desde la terminal:</p>
<pre class="brush: bash;">
echo 'APT::Cache-Limit &quot;100000000&quot;;' | sudo tee -a /etc/apt/apt.conf.d/70debconf
</pre>
<p>Y con esto el update correrá normalmente sin problemas como debe ser e igual al abrir el Synaptic por ser una extensión gráfica de este.</p>
<p>Es de recordar que si gustas puedes borrar la linea agregada: <strong>APT::Cache-Limit “100000000″;</strong><br />
Pero volverás a caer en el mismo fallo del desbordamiento del Cache del APT por lo que mejor es dejarlo y recordar hacer de vez en cuando un clean cuando sea por la terminal.</p>
<p>El Cache-Limit puede ser cualquier valor que se necesite, pero para estar con un buen rango, lo ajustamos a un valor bien alto (10MB) que es bastante.</p>
<pre class="brush: bash;">
sudo gedit /etc/apt/apt.conf.d/70debconf
</pre>
<p>Y finalmente se debe hacer un clean y el update correra sin problemas nuevamente</p>
<pre class="brush: bash;">
sudo apt-get clean
sudo apt-get update
</pre>
<p>PD: Escribe en la terminal <strong>apt-get moo</strong> si quieres ver una vaca, algo que no puede hacer <a href="http://es.wikipedia.org/wiki/Aptitude">aptitude</a> otra interfaz para <a href="http://es.wikipedia.org/wiki/Advanced_Packaging_Tool">apt</a> pero por terminal, no grafica como <a href="http://es.wikipedia.org/wiki/Synaptic">synaptic</a>. El mismo <strong>aptitude</strong> asi lo indica al pedir su informacion de ayuda <strong>aptitude help</strong> la cual cierra con la linea: <strong>Este aptitude no tiene poderes de Super Vaca</strong>, pero <strong>apt-get</strong> si las tiene <img src='http://j053d.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <strong><br />
</strong></p>
<p>enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/dynamic-mmap-ran-out-of-room/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enviar a la Papelera lo borrado por la Terminal</title>
		<link>http://j053d.net/blog/enviar-a-la-papelera-lo-borrado-por-la-terminal/</link>
		<comments>http://j053d.net/blog/enviar-a-la-papelera-lo-borrado-por-la-terminal/#comments</comments>
		<pubDate>Sun, 22 Aug 2010 14:39:58 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[mat.didactico]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=1306</guid>
		<description><![CDATA[Siempre he tenido la preocupación de proceder a borrar algo por la terminal y por error antes de terminar de escribir la ruta, accidentalmente pulse la tecla Enter. En vista de que la terminal no preguntara si realmente se desea ejecutar dicha acción, como si sucede por el entorno gráfico (todo esto es la razón [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fenviar-a-la-papelera-lo-borrado-por-la-terminal%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fenviar-a-la-papelera-lo-borrado-por-la-terminal%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Siempre he tenido la preocupación de proceder a borrar algo por la terminal y por error antes de terminar de escribir la ruta, accidentalmente pulse la tecla Enter. En vista de que la terminal no preguntara si realmente se desea ejecutar dicha acción, como si sucede por el entorno gráfico (todo esto es la razón real y primordial de no hacer todo por la terminal) aunque también hay otros riesgos además del borrado accidental. Decidi buscar algo con lo que pudiese sostener un respaldo de dicha accion (enviar el borrado a la papelera).</p>
<p><span id="more-1306"></span></p>
<p>Con el buen amigo de todos (Google) encontre algo que serviria para dicha situacion, del blog de <a href="http://defcrypt.ixde.net/">Defcrypt</a> encontré <a href="http://defcrypt.ixde.net/index.php/2009/01/borrar-archivos-desde-el-terminal-y-enviarlos-a-la-papelera/">este post</a> donde simplemente metemos en un alias toda una instruccion que en vez de enviar a /null lo borrado, lo enviara a nuestro /Trash/files (nuestra papelera) lo cual esta muy bien, ya que al menos en mi caso, gracias a la papelera he podido recuperar cosas que aun luego de haberlo tirado, me ha servido sacarlo y volverme a ser util, nunca se sabe, por eso existe la papelera en los sistemas operativos.</p>
<p>Abrimos la terminal y escribimos (yo le puse al alias &#8220;papelera&#8221;) el alias que queramos para el caso:</p>
<pre class="brush: bash;">
alias papelera='mv -t ~/.local/share/Trash/files --backup=t'
</pre>
<p>Para borrar (mover realmente a la papelera) alguna carpeta o archivo desde la terminal, seria por ejemplo:</p>
<pre class="brush: bash;">
papelera /home/mi_usuario/Escritorio/la_carpeta_o_el_archivo
</pre>
<p>Como realmente no estamos haciendo un borrado sino que realmente estamos moviendo el archivo a la papelera, nos aseguramos de ante cualquier situacion (uno nunca sabe) se pueda recuperar lo que hemos indicado como un &#8220;supuesto&#8221; borrado de alguna carpeta o archivo desde la terminal.</p>
<p>Tengo pendiente el mostrar una pregunta de S/n como cuando se procede a descargar de los repos. Algun tipo de front-end de bash que pregunte siempre ante cualquier instrucción indicada en la terminal al pulsar Enter. Eso también ayudaría a evitar el pulsar accidentalmente la tecla Enter y terminemos agregándole privilegios indebidos, cambios de usuario o de grupo a carpetas y archivos no planificados.</p>
<p>enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/enviar-a-la-papelera-lo-borrado-por-la-terminal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Validando Formulario con jQuery basado en Switch y sentencias If</title>
		<link>http://j053d.net/blog/validando-formulario-con-jquery-con-sentencias-if/</link>
		<comments>http://j053d.net/blog/validando-formulario-con-jquery-con-sentencias-if/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 02:10:15 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mat.didactico]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=1280</guid>
		<description><![CDATA[En la nube existen validadores basados en jQuery y otros no tanto en jQuery, tales ejemplos son el jQuery plugin Validation (que es el que mas he probado), el livevalidation (que tambien lo he probado) y el jQuery.Validaty (que no lo he probado y no se que tan diferente sea con el primero). No se [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fvalidando-formulario-con-jquery-con-sentencias-if%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fvalidando-formulario-con-jquery-con-sentencias-if%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>En la nube existen validadores basados en jQuery y otros no tanto en jQuery, tales ejemplos son el <a href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/">jQuery plugin Validation</a> (que es el que mas he probado), el <a href="http://livevalidation.com/">livevalidation</a> (que tambien lo he probado) y el <a href="http://validity.thatscaptaintoyou.com/">jQuery.Validaty</a> (que no lo he probado y no se que tan diferente sea con el primero). No se si existan otros, pero con estos que menciono existe un problema que me llevo a buscar otras alternativas de validacion que comento en este post a continuacion.</p>
<p><span id="more-1280"></span></p>
<p>Los validadores de formulario mencionados tienen una limitación, al indicar que vigilen todos los campos, terminan ofreciendo la utilidad de <strong>validar todo o validar nada por igual</strong>. Para un formulario donde como requisito deben llenarse todos los campos funciona muy bien. Pero que ocurre cuando tenemos un formulario donde la necesidad va un poco mas alla.</p>
<p>Mi caso consta de un formulario de registro que debe ser llenado por 3 tipos de usuario (Medico, Secretaria y Paciente). Inicialmente muchos campos son llenados por igual por los 3 tipos de usuario, pero luego se presentan otros campos que deben ser llenados dependiendo del tipo de usuario que se haya indicado en una lista &lt;select&gt; previamente a estos campos.</p>
<p>Los validadores jQuery ya comentados tal cual como vienen default ya no son practicos para el caso. Como obviamente 3 tipos de formularios no es la opcion a tomar, debia buscar un codigo que me permitiese validar los campos mediante una sentencia de decision If, donde podria decidir que dato se selecciono en el &lt;select&gt; y en base a ello validar o no esos campos.</p>
<p>La solución la encontré en un articulo del 2008 el cual es este <a href="http://www.ribosomatic.com/articulos/validando-formulario-con-jquery/">Validando Formulario con jQuery</a> en el que se aprecia claramente la validación de los campos por medio de sentencias If. Simplemente con agregar otras sentencias If para mi caso, podía expandir a una validación algo mas selectiva a sus funciones.</p>
<p>Aun veo que los validadores tienen el problema de no vincular el que los avisos &#8220;se quiten&#8221; asociado a un botón reset, debe refrescarse la pagina entera para ello.</p>
<p>El siguiente código valida los campos de un formulario mediante sentencias If dando un mejor control sobre la &#8220;vigilancia&#8221; de los campos de manera un poco mas inteligente a la necesidad. Aun le falta validar que el campo de correo sea realmente un correo (con @ y terminación .domino) al igual que validar que los campos números y de tipo fecha sean tal cual. Pero buscando un poco mas, puede anexarse lo faltante para que esto este presente de igual forma, eso es algo que tengo pendiente y conforme lo tenga, actualizare el código y el ejemplo.</p>
<p>Para ver un ejemplo de todo lo comentado, puedes verlo en <a href="http://j053d.net/practicas/val_form/formulario.html">este formulario</a> y también puedes <a href="http://dl.dropbox.com/u/2807704/test/val_form.zip">descargarlo</a>.</p>
<p>Código del archivo javascript llamado: <strong>validando.js</strong></p>
<pre class="brush: jscript;">
var demo_mode = true; // se establece en false para permitir el envio del formulario

function TareaVerificarCampos(CampoNombre){
    /*
        1. Hacer un nuevo &quot;case&quot; por cada campo que deseas validar.
        2. Coloca tu validacion dentro de la sentencia &quot;if&quot;
        3. Llama la funcion &quot;failField&quot; cuando la validacion falla, muestra un mensaje de error.
        4. Configurar la variable &quot;vacio=false&quot; cuando la validacion falló.
        5. Llama la funcion &quot;passField&quot; cuando la validacion fue correcta.
    */

    var vacio = true;

    switch (CampoNombre){
        case &quot;nombre&quot;:
            if ($(&quot;#&quot;+CampoNombre).val()==&quot;&quot;){
                failField(CampoNombre,&quot;Este campo no puede estar vacio&quot;);
                vacio = false;
            }else if ($(&quot;#&quot;+CampoNombre).val().length &lt; 6) {
                failField(CampoNombre,&quot;Este campo debe ser mayor a 6 caracteres&quot;);
                vacio = false;
            }else if ($(&quot;#&quot;+CampoNombre).val().length &gt; 40) {
                failField(CampoNombre,&quot;Este campo debe ser menor a 40 caracteres&quot;);
                vacio = false;
            }else{
                passField(CampoNombre);
            }
        break;

        case &quot;cedula&quot;:
            if ($(&quot;#&quot;+CampoNombre).val()==&quot;&quot;){
                failField(CampoNombre,&quot;Este campo no puede estar vacio&quot;);
                vacio = false;
            } else if ($(&quot;#&quot;+CampoNombre).val().length &lt; 7){
                failField(CampoNombre,&quot;Este campo debe tener una longitud mayor a 6&quot;);
                vacio = false;
            }else{
                passField(CampoNombre);
            }
        break;

        case &quot;confirmar_cedula&quot;:
            if ($(&quot;#&quot;+CampoNombre).val()==&quot;&quot;){
                failField(CampoNombre,&quot;Este campo no puede estar vacio&quot;);
                vacio = false;
            } else if ($(&quot;#&quot;+CampoNombre).val().length &lt; 7){
                failField(CampoNombre,&quot;Este campo debe tener una longitud mayor a 6&quot;);
                vacio = false;
            } else if ($(&quot;#&quot;+CampoNombre).val()!=$(&quot;#cedula&quot;).val()){
                failField(CampoNombre,&quot;No coincide con la cedula, verifica&quot;);
                vacio = false;
            } else {
                passField(CampoNombre);
            }
        break;

        case &quot;usuario&quot;:
            if ($(&quot;#&quot;+CampoNombre).val()==&quot;&quot;){
                failField(CampoNombre,&quot;Este campo no puede estar vacio&quot;);
                vacio = false;
            }else if ($(&quot;#&quot;+CampoNombre).val().length &lt; 5) {
                failField(CampoNombre,&quot;Este campo debe ser mayor a 4 caracteres&quot;);
                vacio = false;
            }else if ($(&quot;#&quot;+CampoNombre).val().length &gt; 20) {
                failField(CampoNombre,&quot;Este campo debe ser menor a 20 caracteres&quot;);
                vacio = false;
            } else {
                passField(CampoNombre);
            }
        break;

        case &quot;clave&quot;:
            if ($(&quot;#&quot;+CampoNombre).val()==&quot;&quot;){
                failField(CampoNombre,&quot;Este campo no puede estar vacio&quot;);
                vacio = false;
            }else if ($(&quot;#&quot;+CampoNombre).val().length &lt; 7) {
                failField(CampoNombre,&quot;Este campo debe ser mayor a 6 caracteres&quot;);
                vacio = false;
            }else if ($(&quot;#&quot;+CampoNombre).val().length &gt; 30) {
                failField(CampoNombre,&quot;Este campo debe ser menor a 30 caracteres&quot;);
                vacio = false;
            } else {
                passField(CampoNombre);
            }
        break;

        case &quot;confirmarpass&quot;:
            if ($(&quot;#&quot;+CampoNombre).val()==&quot;&quot;){
                failField(CampoNombre,&quot;Este campo no puede estar vacio&quot;);
                vacio = false;
            }else if ($(&quot;#&quot;+CampoNombre).val().length &lt; 7) {
                failField(CampoNombre,&quot;Este campo debe ser mayor a 6 caracteres&quot;);
                vacio = false;
            }else if ($(&quot;#&quot;+CampoNombre).val().length &gt; 30) {
                failField(CampoNombre,&quot;Este campo debe ser menor a 30 caracteres&quot;);
                vacio = false;
            } else if ($(&quot;#&quot;+CampoNombre).val()!=$(&quot;#clave&quot;).val()){
                failField(CampoNombre,&quot;No coincide con la clave, verifica&quot;);
                vacio = false;
            } else {
                passField(CampoNombre);
            }
        break;

        case &quot;correo&quot;:
            if ($(&quot;#&quot;+CampoNombre).val()==&quot;&quot;){
                failField(CampoNombre,&quot;Este campo no puede estar vacio&quot;);
                vacio = false;
            } else {
                passField(CampoNombre);
            }
        break;

        case &quot;confirmarcorreo&quot;:
            if ($(&quot;#&quot;+CampoNombre).val()==&quot;&quot;){
                failField(CampoNombre,&quot;Este campo no puede estar vacio&quot;);
                vacio = false;
            } else if ($(&quot;#&quot;+CampoNombre).val()!=$(&quot;#correo&quot;).val()){
                failField(CampoNombre,&quot;No coincide con el correo, verifica&quot;);
                vacio = false;
            } else {
                passField(CampoNombre);
            }
        break;

        // MEDICO:
        case &quot;rif_med&quot;:
            if ($(&quot;#soy&quot;).val()==&quot;med&quot;){
                if ($(&quot;#&quot;+CampoNombre).val()==&quot;&quot;){
                    failField(CampoNombre,&quot;Este campo no puede estar vacio&quot;);
                    vacio = false;
                } else if ($(&quot;#&quot;+CampoNombre).val().length &lt; 7){
                    failField(CampoNombre,&quot;Este campo debe tener una longitud mayor a 6&quot;);
                    vacio = false;
                 } else if ($(&quot;#&quot;+CampoNombre).val().length &gt; 15){
                    failField(CampoNombre,&quot;Este campo debe tener una longitud menor a 15&quot;);
                    vacio = false;
                }else{
                    passField(CampoNombre);
                }
            }
        break;

        case &quot;mat_colegio&quot;:
            if ($(&quot;#soy&quot;).val()==&quot;med&quot;){
                if ($(&quot;#&quot;+CampoNombre).val()==&quot;&quot;){
                    failField(CampoNombre,&quot;Este campo no puede estar vacio&quot;);
                    vacio = false;
                } else if ($(&quot;#&quot;+CampoNombre).val().length &lt; 4){
                    failField(CampoNombre,&quot;Debe ser tener una longitud mayor a 3&quot;);
                    vacio = false;
                } else if ($(&quot;#&quot;+CampoNombre).val().length &gt; 6){
                    failField(CampoNombre,&quot;Debe ser tener una longitud menor a 6&quot;);
                    vacio = false;
                }else{
                    passField(CampoNombre);
                }
            }
        break;

        case &quot;mat_sanidad&quot;:
            if ($(&quot;#soy&quot;).val()==&quot;med&quot;){
                if ($(&quot;#&quot;+CampoNombre).val()==&quot;&quot;){
                    failField(CampoNombre,&quot;Este campo no puede estar vacio&quot;);
                    vacio = false;
                } else if ($(&quot;#&quot;+CampoNombre).val().length &lt; 4){
                    failField(CampoNombre,&quot;Debe ser tener una longitud mayor a 3&quot;);
                    vacio = false;
                } else if ($(&quot;#&quot;+CampoNombre).val().length &gt; 6){
                    failField(CampoNombre,&quot;Debe ser tener una longitud menor a 6&quot;);
                    vacio = false;
                }else{
                    passField(CampoNombre);
                }
            }
        break;

        // SECRETARIA:
        case &quot;nombre_medico&quot;:
            if ($(&quot;#soy&quot;).val()==&quot;secre&quot;){
                if ($(&quot;#&quot;+CampoNombre).val()==&quot;&quot;){
                    failField(CampoNombre,&quot;Este campo no puede estar vacio&quot;);
                    vacio = false;
                } else if ($(&quot;#&quot;+CampoNombre).val().length &lt; 7){
                    failField(CampoNombre,&quot;Este campo no puede ser menor a 6 caracteres&quot;);
                    vacio = false;
                } else if ($(&quot;#&quot;+CampoNombre).val().length &gt; 40){
                    failField(CampoNombre,&quot;Este campo no puede ser mayor a 40 caracteres&quot;);
                    vacio = false;
                }else{
                    passField(CampoNombre);
                }
            }
        break;

        case &quot;clave_secretaria&quot;:
            if ($(&quot;#soy&quot;).val()==&quot;secre&quot;){
                if ($(&quot;#&quot;+CampoNombre).val()==&quot;&quot;){
                    failField(CampoNombre,&quot;Este campo no puede estar vacio&quot;);
                    vacio = false;
                } else if ($(&quot;#&quot;+CampoNombre).val().length &lt; 7){
                    failField(CampoNombre,&quot;Este campo no puede ser menor a 6 caracteres&quot;);
                    vacio = false;
                } else if ($(&quot;#&quot;+CampoNombre).val().length &gt; 30){
                    failField(CampoNombre,&quot;Este campo no puede ser mayor a 30 caracteres&quot;);
                    vacio = false;
                }else{
                    passField(CampoNombre);
                }
            }
        break;

        case &quot;confirmar_clave_secretaria&quot;:
            if ($(&quot;#soy&quot;).val()==&quot;secre&quot;){
                if ($(&quot;#&quot;+CampoNombre).val()==&quot;&quot;){
                    failField(CampoNombre,&quot;Este campo no puede estar vacio&quot;);
                    vacio = false;
                } else if ($(&quot;#&quot;+CampoNombre).val().length &lt; 7){
                    failField(CampoNombre,&quot;Este campo no puede ser menor a 6 caracteres&quot;);
                    vacio = false;
                } else if ($(&quot;#&quot;+CampoNombre).val().length &gt; 30){
                    failField(CampoNombre,&quot;Este campo no puede ser mayor a 30 caracteres&quot;);
                    vacio = false;
                 } else if ($(&quot;#&quot;+CampoNombre).val()!=$(&quot;#clave_secretaria&quot;).val()){
                    failField(CampoNombre,&quot;No coincide con la clave, verifica&quot;);
                    vacio = false;
                }else{
                    passField(CampoNombre);
                }
            }
        break;

        // PACIENTE:
        case &quot;nombre_medico_paciente&quot;:
            if ($(&quot;#soy&quot;).val()==&quot;pac&quot;){
                if ($(&quot;#&quot;+CampoNombre).val()==&quot;&quot;){
                    failField(CampoNombre,&quot;Este campo no puede estar vacio&quot;);
                    vacio = false;
                } else if ($(&quot;#&quot;+CampoNombre).val().length &lt; 7){
                    failField(CampoNombre,&quot;Este campo no puede ser menor a 6 caracteres&quot;);
                    vacio = false;
                } else if ($(&quot;#&quot;+CampoNombre).val().length &gt; 40){
                    failField(CampoNombre,&quot;Este campo no puede ser mayor a 40 caracteres&quot;);
                    vacio = false;
                }else{
                    passField(CampoNombre);
                }
            }
        break;

        case &quot;clave_paciente&quot;:
            if ($(&quot;#soy&quot;).val()==&quot;pac&quot;){
                if ($(&quot;#&quot;+CampoNombre).val()==&quot;&quot;){
                    failField(CampoNombre,&quot;Este campo no puede estar vacio&quot;);
                    vacio = false;
                } else if ($(&quot;#&quot;+CampoNombre).val().length &lt; 7){
                    failField(CampoNombre,&quot;Este campo no puede ser menor a 6 caracteres&quot;);
                    vacio = false;
                } else if ($(&quot;#&quot;+CampoNombre).val().length &gt; 30){
                    failField(CampoNombre,&quot;Este campo no puede ser mayor a 30 caracteres&quot;);
                    vacio = false;
                }else{
                    passField(CampoNombre);
                }
            }
        break;

        case &quot;confirmar_clave_paciente&quot;:
            if ($(&quot;#soy&quot;).val()==&quot;pac&quot;){
                if ($(&quot;#&quot;+CampoNombre).val()==&quot;&quot;){
                    failField(CampoNombre,&quot;Este campo no puede estar vacio&quot;);
                    vacio = false;
                } else if ($(&quot;#&quot;+CampoNombre).val().length &lt; 7){
                    failField(CampoNombre,&quot;Este campo no puede ser menor a 6 caracteres&quot;);
                    vacio = false;
                } else if ($(&quot;#&quot;+CampoNombre).val().length &gt; 30){
                    failField(CampoNombre,&quot;Este campo no puede ser mayor a 30 caracteres&quot;);
                    vacio = false;
                 } else if ($(&quot;#&quot;+CampoNombre).val()!=$(&quot;#clave_paciente&quot;).val()){
                    failField(CampoNombre,&quot;No coincide con la clave, verifica&quot;);
                    vacio = false;
                }else{
                    passField(CampoNombre);
                }
            }
        break;
    }
    return vacio;
}

function VerificarCampo (campo) {
        return TareaVerificarCampos(campo.name);
}

function ChequearFormulario(frm){
    var vacio = true;
    for (var i=0; i&lt;frm.length; i++){
        if(!TareaVerificarCampos(frm.elements[i].name)){
            vacio = false;
        }
    }
    if(vacio){
        passField(&quot;subbtn&quot;);
        if(demo_mode){
            $(&quot;#formulario&quot;).hide(25);
            $(&quot;#instrucciones&quot;).html('Te haz registrado Exitosamente, gracias &lt;a href=&quot;#&quot; onclick=&quot;demoShowForm();return false;&quot;&gt;Mostrar formulario nuevamente&lt;/a&gt;');
            return false;
        }
    }else{
        failField(&quot;subbtn&quot;,&quot;Por favor llena los campos con notificaciones para terminar con tu registro.&quot;);
    }
    return vacio;
}
function passField(CampoNombre){
    $(&quot;#form_alert_&quot;+CampoNombre+&quot;_msg&quot;).remove();
}
function failField (CampoNombre,msg){
    $(&quot;#form_alert_&quot;+CampoNombre+&quot;_msg&quot;).remove();
    $(&quot;#&quot;+CampoNombre).after(alertMsgHTML(CampoNombre,msg));
}
function alertMsgHTML (CampoNombre,msg){
    return '&lt;div id=&quot;form_alert_'+CampoNombre+'_msg&quot; class=&quot;form_alert_msg&quot;&gt;'+msg+'&lt;/div&gt;';
}
function onSelectChange(){
    $(&quot;#soy&quot;).change(function(){
        if ($(&quot;#soy&quot;).val()==&quot;med&quot;){
            $(&quot;#seccion_medico&quot;).css(&quot;display&quot;, &quot;block&quot;);
        }else{
            $(&quot;#seccion_medico&quot;).css(&quot;display&quot;, &quot;none&quot;);
        }
        if ($(&quot;#soy&quot;).val()==&quot;secre&quot;){
            $(&quot;#seccion_secretaria&quot;).css(&quot;display&quot;, &quot;block&quot;);
        }else{
            $(&quot;#seccion_secretaria&quot;).css(&quot;display&quot;, &quot;none&quot;);
        }
        if ($(&quot;#soy&quot;).val()==&quot;pac&quot;){
            $(&quot;#seccion_paciente&quot;).css(&quot;display&quot;, &quot;block&quot;);
        }else{
            $(&quot;#seccion_paciente&quot;).css(&quot;display&quot;, &quot;none&quot;);
        }
    })
}
function Limpiar(){
    $(&quot;#seccion_medico&quot;).css(&quot;display&quot;, &quot;none&quot;);
    $(&quot;#seccion_secretaria&quot;).css(&quot;display&quot;, &quot;none&quot;);
    $(&quot;#seccion_paciente&quot;).css(&quot;display&quot;, &quot;none&quot;);
    $(&quot;#form_alert_nombre_msg&quot;).remove();
    $(&quot;#form_alert_cedula_msg&quot;).remove();
    $(&quot;#form_alert_confirmar_cedula_msg&quot;).remove();
    $(&quot;#form_alert_usuario_msg&quot;).remove();
    $(&quot;#form_alert_clave_msg&quot;).remove();
    $(&quot;#form_alert_confirmarpass_msg&quot;).remove();
    $(&quot;#form_alert_correo_msg&quot;).remove();
    $(&quot;#form_alert_confirmarcorreo_msg&quot;).remove();
    $(&quot;#form_alert_rif_med_clave_msg&quot;).remove();
    $(&quot;#form_alert_mat_colegio_clave_msg&quot;).remove();
    $(&quot;#form_alert_mat_sanidad_clave_msg&quot;).remove();
    $(&quot;#form_alert_nombre_medico_clave_msg&quot;).remove();
    $(&quot;#form_alert_clave_secretaria_clave_msg&quot;).remove();
    $(&quot;#form_alert_confirmar_clave_secretaria_msg&quot;).remove();
    $(&quot;#form_alert_confirmar_clave_secretaria_msg&quot;).remove();
    $(&quot;#form_alert_nombre_medico_paciente_msg&quot;).remove();
    $(&quot;#form_alert_clave_paciente_msg&quot;).remove();
    $(&quot;#form_alert_confirmar_clave_paciente_msg&quot;).remove();
    $(&quot;#form_alert_subbtn_msg&quot;).remove();
}
$(document).ready(function(){
   document.formulario.nombre.focus();
});
</pre>
<p>Código del HTML llamado: <strong>formulario.html</strong></p>
<pre class="brush: xml;">
&lt;html&gt;
    &lt;head&gt;
        &lt;title&gt;Validaciones&lt;/title&gt;
        &lt;meta http-equiv=&quot;Content-type&quot; content=&quot;text/html; charset=UTF-8&quot; /&gt;
        &lt;link type=&quot;text/css&quot; rel=&quot;stylesheet&quot; href=&quot;css/style.css&quot; /&gt;
        &lt;script src=&quot;js/jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
        &lt;script src=&quot;js/validando.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
    &lt;/head&gt;

    &lt;body&gt;
        &lt;div id=&quot;contenedor&quot;&gt;
            &lt;form id=&quot;formulario&quot; method=&quot;post&quot; action=&quot;#&quot; onSubmit=&quot;return ChequearFormulario(this);&quot; &gt;
                &lt;div class=&quot;titulos&quot;&gt;
                    &lt;p id=&quot;instrucciones&quot;&gt;Llena todos los campos y los &lt;strong&gt;acorde a tu tipo de usuario&lt;/strong&gt;.&lt;/p&gt;
                    &lt;p&gt; Los campos con &lt;span class=&quot;comodin&quot;&gt;*&lt;/span&gt;son requeridos.&lt;/p&gt;
                    &lt;h3&gt;Datos Estandar:&lt;/h3&gt;
                &lt;/div&gt;
                &lt;div class=&quot;fila&quot;&gt;
                    &lt;div class=&quot;etiquetas&quot;&gt;
                        &lt;label for=&quot;nombre&quot;&gt;Nombre:&lt;/label&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;textos&quot;&gt;
                        &lt;span class=&quot;comodin&quot;&gt;*&lt;/span&gt;&lt;input type=&quot;text&quot; id=&quot;nombre&quot; name=&quot;nombre&quot; class=&quot;texto&quot; onblur=&quot;VerificarCampo(this);&quot; /&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;fila&quot;&gt;
                    &lt;div class=&quot;etiquetas&quot;&gt;
                        &lt;label for=&quot;cedula&quot;&gt;Cedula:&lt;/label&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;textos&quot;&gt;
                        &lt;span class=&quot;comodin&quot;&gt;*&lt;/span&gt;&lt;input type=&quot;text&quot; id=&quot;cedula&quot; name=&quot;cedula&quot; class=&quot;texto&quot; onblur=&quot;VerificarCampo(this);&quot; /&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;fila&quot;&gt;
                    &lt;div class=&quot;etiquetas&quot;&gt;
                        &lt;label for=&quot;confirmacedula&quot;&gt;Otra vez:&lt;/label&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;textos&quot;&gt;
                        &lt;span class=&quot;comodin&quot;&gt;*&lt;/span&gt;&lt;input type=&quot;text&quot; id=&quot;confirmar_cedula&quot; name=&quot;confirmar_cedula&quot; class=&quot;texto&quot; onblur=&quot;VerificarCampo(this);&quot; /&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;fila&quot;&gt;
                    &lt;div class=&quot;etiquetas&quot;&gt;
                        &lt;label for=&quot;telef&quot;&gt;Telefono:&lt;/label&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;textos&quot;&gt;
                        &lt;input type=&quot;text&quot; id=&quot;telef&quot; name=&quot;telef&quot; class=&quot;texto&quot; onblur=&quot;VerificarCampo(this);&quot; /&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;fila&quot;&gt;
                    &lt;div class=&quot;etiquetas&quot;&gt;
                        &lt;label for=&quot;profesion&quot;&gt;Profesion:&lt;/label&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;textos&quot;&gt;
                        &lt;input type=&quot;text&quot; id=&quot;profesion&quot; name=&quot;profesion&quot; class=&quot;texto&quot; onblur=&quot;VerificarCampo(this);&quot; /&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;titulos&quot;&gt;
                    &lt;h3&gt;Datos de Usuario:&lt;/h3&gt;
                &lt;/div&gt;
                &lt;div class=&quot;fila&quot;&gt;
                    &lt;div class=&quot;etiquetas&quot;&gt;
                        &lt;label for=&quot;usuario&quot;&gt;Usuario:&lt;/label&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;textos&quot;&gt;
                        &lt;span class=&quot;comodin&quot;&gt;*&lt;/span&gt;&lt;input type=&quot;text&quot; id=&quot;usuario&quot; name=&quot;usuario&quot; class=&quot;texto&quot; onblur=&quot;VerificarCampo(this);&quot; /&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;fila&quot;&gt;
                    &lt;div class=&quot;etiquetas&quot;&gt;
                        &lt;label for=&quot;password&quot;&gt;Password:&lt;/label&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;textos&quot;&gt;
                        &lt;span class=&quot;comodin&quot;&gt;*&lt;/span&gt;&lt;input type=&quot;password&quot; id=&quot;clave&quot; name=&quot;clave&quot; class=&quot;texto&quot; onblur=&quot;VerificarCampo(this);&quot; /&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;fila&quot;&gt;
                    &lt;div class=&quot;etiquetas&quot;&gt;
                        &lt;label for=&quot;confirmapass&quot;&gt;Otra vez:&lt;/label&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;textos&quot;&gt;
                        &lt;span class=&quot;comodin&quot;&gt;*&lt;/span&gt;&lt;input type=&quot;password&quot; id=&quot;confirmarpass&quot; name=&quot;confirmarpass&quot; class=&quot;texto&quot; onblur=&quot;VerificarCampo(this);&quot; /&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;fila&quot;&gt;
                    &lt;div class=&quot;etiquetas&quot;&gt;
                        &lt;label for=&quot;correo&quot;&gt;Correo:&lt;/label&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;textos&quot;&gt;
                        &lt;span class=&quot;comodin&quot;&gt;*&lt;/span&gt;&lt;input type=&quot;text&quot; id=&quot;correo&quot; name=&quot;correo&quot; class=&quot;texto&quot; onblur=&quot;VerificarCampo(this);&quot; /&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;fila&quot;&gt;
                    &lt;div class=&quot;etiquetas&quot;&gt;
                        &lt;label for=&quot;confirmacorreo&quot;&gt;Otra vez:&lt;/label&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;textos&quot;&gt;
                        &lt;span class=&quot;comodin&quot;&gt;*&lt;/span&gt;&lt;input type=&quot;text&quot; id=&quot;confirmarcorreo&quot; name=&quot;confirmarcorreo&quot; class=&quot;texto&quot; onblur=&quot;VerificarCampo(this);&quot; /&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;fila&quot;&gt;
                    &lt;div class=&quot;etiquetas&quot;&gt;
                        &lt;label for=&quot;soy&quot;&gt;Soy:&lt;/label&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;textos&quot;&gt;
                        &lt;span class=&quot;comodin&quot;&gt;*&lt;/span&gt;
                        &lt;select id=&quot;soy&quot; name=&quot;soy&quot; onchange=&quot;onSelectChange();&quot;&gt;
                            &lt;option selected value=&quot;cual&quot;&gt;Seleccione...&lt;/option&gt;
                            &lt;option value=&quot;med&quot;&gt;Medico&lt;/option&gt;
                            &lt;option value=&quot;secre&quot;&gt;Secretaria&lt;/option&gt;
                            &lt;option value=&quot;pac&quot;&gt;Paciente&lt;/option&gt;
                        &lt;/select&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;!--
                &lt;div class=&quot;titulos&quot;&gt;
                    &lt;h3&gt;Llenar acorde al tipo de usuario seleccionado&lt;/h3&gt;
                    &lt;p&gt;Los siguientes campos son requeridos en base al tipo de usuario indicado previamente.&lt;/p&gt;
                &lt;/div&gt;
                --&gt;
                &lt;div id=&quot;seccion_medico&quot; style=&quot;display: none;&quot;&gt;
                    &lt;div class=&quot;fila&quot; id=&quot;med&quot;&gt;
                        &lt;strong&gt;Medico:&lt;/strong&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;fila&quot;&gt;
                        &lt;div class=&quot;etiquetas&quot;&gt;
                            &lt;label for=&quot;rifmed&quot;&gt;Rif:&lt;/label&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;textos&quot;&gt;
                            &lt;input type=&quot;text&quot; id=&quot;rif_med&quot; name=&quot;rif_med&quot; class=&quot;texto&quot; onblur=&quot;VerificarCampo(this);&quot; /&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;fila&quot;&gt;
                        &lt;div class=&quot;etiquetas&quot;&gt;
                            &lt;label for=&quot;matcolegio&quot;&gt;Matricula Colegio:&lt;/label&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;textos&quot;&gt;
                            &lt;input type=&quot;text&quot; id=&quot;mat_colegio&quot; name=&quot;mat_colegio&quot; class=&quot;texto&quot; onblur=&quot;VerificarCampo(this);&quot; /&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;fila&quot;&gt;
                        &lt;div class=&quot;etiquetas&quot;&gt;
                            &lt;label for=&quot;matsanidad&quot;&gt;Matricula Sanidad:&lt;/label&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;textos&quot;&gt;
                            &lt;input type=&quot;text&quot; id=&quot;mat_sanidad&quot; name=&quot;mat_sanidad&quot; class=&quot;texto&quot; onblur=&quot;VerificarCampo(this);&quot; /&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;div id=&quot;seccion_secretaria&quot; style=&quot;display: none;&quot;&gt;
                    &lt;div class=&quot;fila&quot; id=&quot;secre&quot;&gt;
                        &lt;strong&gt;Secretaria:&lt;/strong&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;fila&quot;&gt;
                        &lt;div class=&quot;etiquetas&quot;&gt;
                            &lt;label for=&quot;nombremedico&quot;&gt;Nombre Medico:&lt;/label&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;textos&quot;&gt;
                            &lt;input type=&quot;text&quot; id=&quot;nombre_medico&quot; name=&quot;nombre_medico&quot; class=&quot;texto&quot; onblur=&quot;VerificarCampo(this);&quot; /&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;fila&quot;&gt;
                        &lt;div class=&quot;etiquetas&quot;&gt;
                            &lt;label for=&quot;clavesecretaria&quot;&gt;Clave:&lt;/label&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;textos&quot;&gt;
                            &lt;input type=&quot;text&quot; id=&quot;clave_secretaria&quot; name=&quot;clave_secretaria&quot; class=&quot;texto&quot; onblur=&quot;VerificarCampo(this);&quot; /&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;fila&quot;&gt;
                        &lt;div class=&quot;etiquetas&quot;&gt;
                            &lt;label for=&quot;confirmaclavesecretaria&quot;&gt;Otra vez:&lt;/label&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;textos&quot;&gt;
                            &lt;input type=&quot;text&quot; id=&quot;confirmar_clave_secretaria&quot; name=&quot;confirmar_clave_secretaria&quot; class=&quot;texto&quot; onblur=&quot;VerificarCampo(this);&quot; /&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;div id=&quot;seccion_paciente&quot; style=&quot;display: none;&quot;&gt;
                    &lt;div class=&quot;fila&quot; id=&quot;pac&quot;&gt;
                        &lt;strong&gt;Paciente:&lt;/strong&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;fila&quot;&gt;
                        &lt;div class=&quot;etiquetas&quot;&gt;
                            &lt;label for=&quot;nombremedicopaciente&quot;&gt;Nombre Medico:&lt;/label&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;textos&quot;&gt;
                            &lt;input type=&quot;text&quot; id=&quot;nombre_medico_paciente&quot; name=&quot;nombre_medico_paciente&quot; class=&quot;texto&quot; onblur=&quot;VerificarCampo(this);&quot; /&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;fila&quot;&gt;
                        &lt;div class=&quot;etiquetas&quot;&gt;
                            &lt;label for=&quot;clavepaciente&quot;&gt;Clave:&lt;/label&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;textos&quot;&gt;
                            &lt;input type=&quot;text&quot; id=&quot;clave_paciente&quot; name=&quot;clave_paciente&quot; class=&quot;texto&quot; onblur=&quot;VerificarCampo(this);&quot; /&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;fila&quot;&gt;
                        &lt;div class=&quot;etiquetas&quot;&gt;
                            &lt;label for=&quot;confirmaclavepaciente&quot;&gt;Otra vez:&lt;/label&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;textos&quot;&gt;
                            &lt;input type=&quot;text&quot; id=&quot;confirmar_clave_paciente&quot; name=&quot;confirmar_clave_paciente&quot; class=&quot;texto&quot; onblur=&quot;VerificarCampo(this);&quot; /&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;fila&quot;&gt;
                    &lt;input type=&quot;reset&quot; value=&quot;Limpiar&quot; id=&quot;boton_limpiar&quot; onClick=&quot;Limpiar()&quot;/&gt;
                    &lt;input name=&quot;subbtn&quot; id=&quot;subbtn&quot; type=&quot;submit&quot; value=&quot;Enviar&quot; /&gt;
                &lt;/div&gt;
            &lt;/form&gt;
        &lt;/div&gt;
    &lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Código del CSS para el Formulario llamado: <strong>style.css</strong></p>
<pre class="brush: css;">
.titulos
{
    margin          : 10px 0 0 0;
    float           : left;
}

.fila
{
    float           : left;
    width           : 100%;
    margin          : 5px 0 0 10px;
}

.etiquetas
{
    width           : 160px;
    float           : left;
}

.textos
{
    width           : 800px;
    float           : left;
}

label.error
{
    color	    : red;
    margin-left	    : 0.5em;
    width	    : 20em;
}

#boton_limpiar
{
    margin          : 10px 0 20px 280px;
}

#secre, #pac
{
    margin          : 20px 0 0 0;
}

#med
{
    margin          : 0;
}

#profesion, #telef
{
    margin          : 0 0 0 13px;
}

.comodin
{
    color           : red;
    margin          : 0 5px 0 0;
}

.form_alert_msg {
    font-size       : 14px;
    font-weight     : bold;
    color             : #990000;
    display         :inline;
    background-color: #FFFFCC;
    padding         : 2px 5px;
    margin-left     : 5px;
    border-top      : 1px solid #990000;
    border-right    : 2px solid #990000;
    border-bottom   : 1px solid #990000;
    border-left     : 2px solid #990000;
}

#seccion_medico, #seccion_secretaria, #seccion_paciente
{
    border          : dotted;
    float             : left;
}
</pre>
<p>Como se ve, es una codificación sencilla basada en sentencias If. Como decía, tengo pendiente el que valide bien los correos (que tengan @ y terminación .dominio) y validación de campos numéricos y fechas, pero inicialmente resolver el validar algunos campos en base a una decisión previa era el caso y practica de este ejemplo.</p>
<p>enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/validando-formulario-con-jquery-con-sentencias-if/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Tecnologías Inadecuadas en Producción</title>
		<link>http://j053d.net/blog/tecnologias-inadecuadas-en-produccion/</link>
		<comments>http://j053d.net/blog/tecnologias-inadecuadas-en-produccion/#comments</comments>
		<pubDate>Sun, 11 Jul 2010 13:37:38 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[Copyright]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Estupideces]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[database]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=1255</guid>
		<description><![CDATA[El dia de ayer recibi este tweet tarde en la noche que advertia sobre no usar SQL Server Express en hosting con plataforma Windows por su limitación de 10GB. Oswaldo Alvarez (ozalvarez) Especialista en Desarrollo Web ,SEO-SEM, E-Commerce, Social Media, Web Marketing, BI. Director de Tecnología de @Silverexe y Creador del #Webve al parecer dio [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Ftecnologias-inadecuadas-en-produccion%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Ftecnologias-inadecuadas-en-produccion%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p style="text-align: center;"><a id="add_image" class="thickbox" title="Add an Image" href="media-upload.php?post_id=1255&amp;type=image&amp;TB_iframe=1&amp;width=640&amp;height=523"></a><a href="http://j053d.net/blog/wp-content/uploads/microsoftsqlserver2008lpz3.jpg"></a><a href="http://j053d.net/blog/wp-content/uploads/microsoftsqlserver2008lexpress.jpg"><img class="size-full wp-image-1262  aligncenter" title="microsoftsqlserver2008lexpress" src="http://j053d.net/blog/wp-content/uploads/microsoftsqlserver2008lexpress.jpg" alt="" width="320" height="216" /></a></p>
<p style="text-align: left;">El dia de ayer recibi <a href="http://twitter.com/ozalvarez/status/18243545906">este tweet</a> tarde en la noche que advertia sobre no usar <a href="http://en.wikipedia.org/wiki/SQL_Server_Express">SQL Server Express</a> en hosting con plataforma Windows por su limitación de 10GB. Oswaldo Alvarez (<a href="http://twitter.com/ozalvarez">ozalvarez</a>) Especialista en Desarrollo Web ,SEO-SEM, E-Commerce,  Social Media, Web Marketing, BI. Director de Tecnología de @Silverexe y  Creador del <a href="http://www.silverexe.com/Blog.aspx/Post/4/">#Webve</a> al parecer dio el aviso debido a (conocimiento propio) de saber que hay personas que al parecer usan SQL Server Express en Producción y también que hay Empresas de Hosting ofreciendo en sus paquetes la versión Express de SQL Server a los Resellers (revendedores).</p>
<p><span id="more-1255"></span></p>
<blockquote><p>Luego de leer el tweet de Oswaldo, me decia pensando&#8230; Express&#8230; Express???&#8230; Express!!! que no es esa la versión de Juguete que ofrece Microsoft de descarga gratuita y limitada de sus paquetes .Net, y hay gente que las usa en Produccion???</p></blockquote>
<p>Es increíble la ignorancia que tienen esas personas que ofrecen la versión Express de SQL Server sabiéndose bien <a href="http://www.microsoft.com/sqlserver/2008/en/us/editions.aspx">las limitaciones que tiene en comparación con sus otras versiones</a> y aun así haber gente que planee usarlo en ambientes de Producción. He probado las versiones Express de Visual Basic .Net y SQL Server 2005/2008 pero no paso mas de uno o dos días para buscar una versión mas madura y acorde al tamaño de las necesidades de cualquier base de datos. Incluso en un Blog que ya no atiendo deje 2 post sobre SQL Server, para esas fechas <a href="http://enterx.wordpress.com/2009/07/18/instalacion-sql-server-2005/">Instalacion de SQL Server 2005</a> (Developer Edition obviamente) y <a href="http://enterx.wordpress.com/2009/07/22/respaldo-base-de-datos-sql-server/">Respaldos de Bases de Datos en SQL Server</a> (uso del SQL Agent que no viene en la versión Express) donde hago una comparación de esto entre la versión 2000 y 2005 de SQL Server para esas fechas.</p>
<p>SQL Server Express sea 2005/2008 y seguramente el 2010, la versión Express no trae el Servicio del <a href="http://technet.microsoft.com/en-us/library/ms189237.aspx">SQL Server Agent</a>. El Agente de SQL Server es con el que se puede programar tareas (job) para realizar respaldos de bases de datos a determinadas horas y días, es decir, que las personas que usan SQL Server Express en Producción no pueden hacer Backups directamente en SQL Server Express, por lo que queda a suposición que lo hacen por otras aplicaciones.</p>
<p>Entonces, tenemos como principal golpe, la <strong>limitación de capacidad de base de datos de 10GB</strong> y el que <strong>no puede hacerse Backups programados</strong> (algo que es muy necesario en cualquier motor database) y con eso y otras limitantes que pueden leerse en los links de referencia entre lineas&#8230; hay gente que usa SQL Server Express en Producción??? como Hospedaje Web por ejemplo.</p>
<p>Es triste enterarse de cosas como estas, muchos tenemos la costumbre de buscar las mejores versiones de una casa de software. Estas personas con esto de usar SQL Server Express en Producción por ahorrarse pagos de licencia simplemente no les da la cabeza para pensar que sin problemas pueden buscar copias &#8220;piratas&#8221; de internet o en la calle de estos Software en versiones Especiales como la Workgroup, Web y Developer o de las versiones Core Edition como Enterprise y Standar, pero no&#8230; se fueron por la Edicion Gratis Express.</p>
<p>En las empresas existe y seguirá existiendo software pirata instalado y en uso, realmente (al menos no en mi país) no existe un Ente Gubernamental que bajo una Ley caza y castigue a las Organizaciones/Empresas que hagan uso ilícito del Software Propietario, tristemente (porque vivo en un país donde lo ilógico es lógico). Bajar el torrent de SQL Server 2005 o 2008 versión Developer de lugares como ThePirateBay puede hacerse sin problemas y viene con su Key para instalación. Lo único lógico en esto es que efectivamente estas empresas están obligadas por Ley para no caer en multas o demandas, el que deben usar Software No pirata, es en este punto cuando se sabe que <strong>deben de pagar la licencia de uso de dicho producto si quieren usarlo</strong>, si no quieren, <strong>para eso esta el Software Libre</strong>, las cosas que se necesitan si están al alcance, pero hay personas en esta vida que no les da la cabeza para pensar y saberlo bien.</p>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/tecnologias-inadecuadas-en-produccion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ventanas Centradas al cargar en el Escritorio</title>
		<link>http://j053d.net/blog/ventanas-centradas-al-cargar-en-el-escritorio/</link>
		<comments>http://j053d.net/blog/ventanas-centradas-al-cargar-en-el-escritorio/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 23:27:45 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=1229</guid>
		<description><![CDATA[Practicamente hoy en dia ya nada me sorprende lo que se puede hacer, editar, etc en el Software Libre. Cada vez que abro una ventana, o especificamente la terminal, siempre se abre en el borde superior izquierdo de la ventana, si abrimos otra en el borde inferior izquierdo, luego en el superior derecho y finalmente [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fventanas-centradas-al-cargar-en-el-escritorio%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fventanas-centradas-al-cargar-en-el-escritorio%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p style="text-align: center;"><a href="http://j053d.net/blog/wp-content/uploads/Pantallazo.png"><br />
</a><a href="http://j053d.net/blog/wp-content/uploads/centrada.png"><img class="aligncenter size-medium wp-image-1296" title="centrada" src="http://j053d.net/blog/wp-content/uploads/centrada-300x187.png" alt="" width="300" height="187" /></a></p>
<p>Practicamente hoy en dia ya nada me sorprende lo que se puede hacer, editar, etc en el Software Libre. Cada vez que abro una ventana, o especificamente la terminal, siempre se abre en el borde superior izquierdo de la ventana, si abrimos otra en el borde inferior izquierdo, luego en el superior derecho y finalmente en el inferior derecho, pero nunca en el centro.</p>
<p><span id="more-1229"></span></p>
<p>Me preguntaba, si era posible que al cargar cualquier ventana de cualquier tipo, siempre se abra centrada en el Escritorio, y resulta que si se puede.</p>
<p>Uso Ubuntu Lucid Lynx 10.04 pero supongo que debe ser igual en otras versiones como Karmic Koala 9.10 y posiblemente igual o varia un poco en otras distribuciones.</p>
<p>Para que tus ventanas se abran centradas en el Escritorio solo debes hacer lo siguiente:</p>
<p>Alt+F2 y escribe:</p>
<pre class="brush: bash;">
gconf-editor
</pre>
<p>Ve a esta ruta en el TreeFolder:</p>
<pre class="brush: bash;">
apps/compiz/plugins/place/screen0/options/mode Value: 4
</pre>
<p>Cambia el Value <strong>4</strong> por un <strong>1</strong>.</p>
<p>Eso es todo, carga una terminal o cualquier otra cosa y veras que se abrira en todo el centro del Escritorio.</p>
<p>Como decia, ya nada me sorprende en el Software Libre, en el SL muchas cosas son posibles.</p>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/ventanas-centradas-al-cargar-en-el-escritorio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sobre el Congreso de Software Libre 2010</title>
		<link>http://j053d.net/blog/sobre-el-congreso-de-software-libre-2010/</link>
		<comments>http://j053d.net/blog/sobre-el-congreso-de-software-libre-2010/#comments</comments>
		<pubDate>Sun, 20 Jun 2010 15:57:58 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[Comunidad]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=1200</guid>
		<description><![CDATA[Este pequenio articulo trata sobre el Congreso Nacional de Software Libre 2010 sede Maracaibo. Mi experiencia donde comento los exitos y los fallos de este. Realmente no me fije donde se indicaba en la web de registro el que se me enviaria al correo la informacion de registro, algo para imprimir, etc, tampoco el que [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fsobre-el-congreso-de-software-libre-2010%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fsobre-el-congreso-de-software-libre-2010%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p style="text-align: center;"><a href="http://j053d.net/blog/wp-content/uploads/logo_cnsl.png"><img class="size-full wp-image-1275  aligncenter" title="logo_cnsl" src="http://j053d.net/blog/wp-content/uploads/logo_cnsl.png" alt="" width="290" height="75" /></a></p>
<p style="text-align: left;">Este pequenio articulo trata sobre el Congreso Nacional de Software Libre 2010 sede Maracaibo. Mi experiencia donde comento los exitos y los fallos de este.</p>
<p>Realmente no me fije donde se indicaba en la web de registro el que se me enviaria al correo la informacion de registro, algo para imprimir, etc, tampoco el que debia de pagar algo, por ejmplo, el certificado. Confieso que <strong>el certificado</strong> no me importa ya que <strong>realmente no ayuda al curriculum</strong> tenerlo, para entender bien lo marcado en negrita indico a continuacion el porque de ello.</p>
<p><span id="more-1200"></span></p>
<p>Son charlas, personas que conocen del tema, vivien dia a dia y durante buen tiempo lo que exponen, pero no te hace experto, a duras penas indicarte como conocedor el que otra persona te explique que es algo y para que sirve, pero mientras tu no lo uses, no lo vivas tu mismo y lo conozcas por ti mismo y lleves tiempo usandolo, no puedes indicar que conoces Linux solo porque escuchaste a alguien hablar del software libre. Yo uso Linux desde Septiembre del 2009 hasta la fecha, aunque he tocado otras distribuciones anios atras, realmente es ahora que lo tengo fijo sin cambiarlo y siempre en uso, pero no conozco los rincones mas profundos del sistema, es decir, soy novato en conocerlo como muchos otros y solo puedo decir que en mi equipo tratare en todo lo posible el que no vuelva a tener instalado como sistema primario, un sistema Windows, a duras penas uno virtualizado, no mas de eso.</p>
<h3>Sobre el Certificado</h3>
<p>Bueno, el ceritificado realmente solo significa que estuviste ahi, que escuchaste las charlas, que conoces ahora nuevas cosas que no sabias o que ya habias escuchado antes hasta oirlas nuevamente el dia de hoy. Pero escuchar a alguien hablar de software libre no te hace conocer del mismo, es igual que lo leas en internet o que esa persona te hable en persona y en privado que ante un publico. El certificado si tendria peso si fuese un curso, con material didactico, con practicas, con evaluaciones, pero el certificado del congreso, peso curricular no tiene ralmente, nadie te va a contratar a trabajar con software libre o administrar un servidor bajo plataforma Linux solo porque fuiste a unas charlas, nadie te va a dar trabajo en el area de software libre solo porque fuiste a ver/escuchar unas charlas de dos dias que tocaban diferentes temas bajo software libre.  Al menos yo, si me tocara evaluar a personas para un perfil de trabajo en software libre, no tomaria a nadie por haber estado presente en un congreso como este u otro porque solo son charlas, asi de simple, si la persona no pone interes real en instalar y usar el software, el esfuerzo no sirve de nada, pero esos son factores externos que no se pueden controlar, es ya cuestion de cada quien.</p>
<p>Pero entiendase algo, aunque el pago de 100 BsF por el certificado suena costoso aun por el gasto de papel y tinta, realmente ahi esta incluido lo que el equipo pueda retornar de los gastos que logran que el Congreso exista, aunque el Congreso es de entrada gratuita, obviamente hay gastos de dinero incluidos, recordando que es un evento gratis y estas personas deben gastar pasaje, gasolina, estadia, comida, etc a nivel nacional (y no hablando tanto del lugar) sino de que puedan ir a tu ciudad y entregar toda la bonita experiencia de conocer al Software Libre.</p>
<h3>Viendo caras nuevas y/o caras viejas</h3>
<p>No sabia si me encontraria a personas conocidas en el lugar, vi caras que ya habia visto antes, personas que vi en mi epoca de estudios, pero no las conocia, realmente nunca vi a nadie conocido. Sin embargo, pude hablar con algunas que otras personas en esos dos dias del congreso, vivir la perspectiva del publico, conocer opiniones del congreso de otras personas. Pensaba que al menos el 90% de todas las personas que asistieron al congreso eran estudiantes de la Institucion, pero no, si habia mucha gente que no era del Instituto, ni siquiera de la ciudad, asi que yo no era el unico no estudiante del lugar que tenia interes en el congreso. Aunque le mande unos correos a un par de conocidos, y otro se entero por otra persona, sabia que era casi seguro que no fuesen, al menos no los vi (bien, habia mucha gente por todas partes) pero estoy seguro que si les pregunto, tendre como respuesta que no fueron.</p>
<p>Asi que bien, revisando que mejor ruta tomar en Google Earth de ida y vuelta, con algo de preocupacion ante la delinciencia desboradada que reina en mi ciudad, me dispuse a ir al congreso con mi laptop, estar en el ambiente, escuchar las charlas, aprovechar el wifi del lugar, etc.</p>
<h3>Mi Sorpresa</h3>
<p>Para una ciudad en la que tecnologicamente muy dificilmente pasa algo como esto, eventos de tecnologia y menos gratis, pensaba que no habria &#8220;tanta&#8221; gente, pero que gran sorpresa la mia cuando veo una cola que le daba la vuelta a la esquina. La institucion tuvo que abrir otros espacios (eso ya estaba planificado) y todos estos espacios se llenaron, la transmision del congreso estaba siendo filmada en circuito cerrado. Ironicamente uno de los espacios era del doble de tamanio que el aula magna el cual era un espacio muy pequenio, humoristicamente algunas personas que estaban en un lugar viendo la charla por pantalla garnade levantaban la mano cuando el exponente se lo solicitaba al publico, &#8220;supongo&#8221; que en gesto de broma.</p>
<p>Obviamente como nunca podia dejar de faltar en ningun evento, <strong>la gente pedante</strong>, tanto principalmente de la Institucion, unos porteros que al parecer, de alguna forma, odian su vida, sus caras y sus conductas al publico asi lo demuestra. Pero hay que entenderlos, ellos tambien ven estudiantes pedantes que de seguro los envenenan.</p>
<h3>Sobre algunas ponencias</h3>
<p>Las charlas de Cloud Computing (Computacion en la Nube), me sorprendio que en ninguna se mencionara al maravilloso <a href="https://www.dropbox.com/">Dropbox</a> que espero que el sistema operativo que Google sacara de Cloud Computing sea por ese perfil para la web 4.0, al menos mencionaron a la web semantica (web 3.0), un poco del social media, etc.</p>
<p>Hay una charla de la cual deseo hablar en especial interes, por las siguientes razones:</p>
<ul>
<li>Porque era la charla de mas interes para mi y de seguro para otros</li>
<li>Porque resulto ser la peor de todas las charlas (y la unica, todas las demas fueron lo que si se esperaba que fuesen), y no solo porque lo diga yo que la vi, sino por otras personas de las cuales escuche y comparti opiniones sobre ella y por la cantidad de gente que vi como se retiraban de sus puestos y como se dormian.</li>
<li>Por la inexperiencia bien sea en dar charlas en publico o no saber estrucutrar y explicar esa charla en particular.</li>
</ul>
<h3>Sobre la charla de Carlos Escobar &#8211; Herramientas Forenses en Software Libre</h3>
<p>Si la charla de Carlos Escobar sobre Herramientas Forenses en software libre era dar a conocer esas herramientas y mostrar algunas ejemplos de ello, lamentablemente comento que el mensaje no llego y <strong>ni se dio</strong> como el penso que seria para el publico presente. Vuelvo a indicar, esto no solo por mi propia opinion sobre su charla, sino por lo que escuche y vi de otras personas en el lugar, en la cola, en un lugar de comida, es decir, opiniones de distintas personas que no conozco en distintos espacios del lugar, concordaban en que su ponencia fue todo un desastre y fracaso con respecto al mensaje y conocimiento que Carlos Escobar intento dar al publico.  Es lamentable pero asi fue, simplemente cometio muchos errores en su charla, y realmente no supo darla, y muchos estamos de acuerdo en eso.</p>
<p>En resumen, mucha gente, demasiada diria yo, no dio abasto el lugar para tanta demanda de personas que asistieron al congreso, habia gente de algunas misiones del gobierno (siempre han estado presentes en los congresos), estudiantes de otras partes, profesionales ya graduados, gente que no conocia lo que es el software libre, y que nunca han instalado un sistema Linux (lo cual le pregunte a algunas personas). En el receso de 12pm-2pm luego o antes de un almuerzo por las cercanias, me distraje con el wifi, aunque los muy desgraciados de la institucion luego lo quitaban en ese tiempo, asi que trabajaba localmente viendo algo de cosas pendientes o viendo alguna serie descargada perfecto para la ocasion.</p>
<p>No tome muchas fotos, y desde luego, son desde el angulo o punto de vista de alguien entre el publico, las cuales muestro al final de toda esta experiencia ya comentada sobre el congreso, no asistia a uno desde el 2007, cuando Octavio aun tenia barba y el pelo largo. Octavio no tiene titulo tecnico o Universitario, el siempre lo comenta, pero fijense, eso no es necesario, no hace falta, no es un titulo el que te dice lo que eres, sino lo que haces, <strong>Octavio Roessell</strong> es todo un conocedor y experto del software libre, sabe tomar algo complejo y explicarlo de forma facil, sabe atrapar al publico, hacerlo reir, hacerles llegar el mensaje que quiera dar (le aconsejo a <strong>Carlos Escobar</strong> que tome nota de como Octavio da sus charlas, de verdad, le hace falta practicar y mejorar, porque su charla fue muy aplaudida cuando termino, porque la gente queria que se acabara lamentablemente), <strong>Jesus Lara</strong> es otro que igual que Octavio sabe como atrapar la atencion del publico y tambien sabe dar el mensaje que desea transmitir.</p>
<p>El material POP lamentablemente fue poco y no muy bueno, no pude comprar nada tristemente, las cosas que se rifaron, solo digo que el material POP traido al congreso fue muy poco y lo que esperaba que fuese el material POP ofrecido no fue lo que esperaba lamentablemente, pensaba que volveria con alguna gorra, franela o chapas y calcomanias, pero no fue asi. Me gusto mucho ver tanta gente para el congreso, raelmente pense que veria puestos vacios, resulto ser todo lo contrario, se tuvo que abrir y preparar nuevos espacios para distribuir a las personas que ya no podian estar en el Aula Magna que ya estaba full, la gente se amontonaba en las colas para entrar desde una hora antes.</p>
<p>Para tener una idea de la agenda de ponencias de este congreso, eso puede verse en <a href="http://cnsl.org.ve/maracaibo.html/">aqui</a>.</p>
<p>Congreso Nacional de Software Libre 2010 ciudad Maracaibo, Venezuela:</p>

<a href='http://j053d.net/blog/sobre-el-congreso-de-software-libre-2010/cola_2/' title='cola_2'><img width="150" height="150" src="http://j053d.net/blog/wp-content/uploads/cola_2-150x150.jpg" class="attachment-thumbnail" alt="cola_2" title="cola_2" /></a>
<a href='http://j053d.net/blog/sobre-el-congreso-de-software-libre-2010/cloud_computing/' title='cloud_computing'><img width="150" height="150" src="http://j053d.net/blog/wp-content/uploads/cloud_computing-150x150.jpg" class="attachment-thumbnail" alt="Charla Cloud Computing" title="cloud_computing" /></a>
<a href='http://j053d.net/blog/sobre-el-congreso-de-software-libre-2010/inicio/' title='inicio'><img width="150" height="150" src="http://j053d.net/blog/wp-content/uploads/inicio-150x150.jpg" class="attachment-thumbnail" alt="inicio" title="inicio" /></a>
<a href='http://j053d.net/blog/sobre-el-congreso-de-software-libre-2010/montar_radio/' title='montar_radio'><img width="150" height="150" src="http://j053d.net/blog/wp-content/uploads/montar_radio-150x150.jpg" class="attachment-thumbnail" alt="Montar una radio OnLine en Software Libre" title="montar_radio" /></a>
<a href='http://j053d.net/blog/sobre-el-congreso-de-software-libre-2010/soft_forense/' title='soft_forense'><img width="150" height="150" src="http://j053d.net/blog/wp-content/uploads/soft_forense-150x150.jpg" class="attachment-thumbnail" alt="La charla de Carlos Escobar, fue todo un desastre, la unica" title="soft_forense" /></a>
<a href='http://j053d.net/blog/sobre-el-congreso-de-software-libre-2010/img_0476/' title='img_0476'><img width="150" height="150" src="http://j053d.net/blog/wp-content/uploads/img_0476-150x150.jpg" class="attachment-thumbnail" alt="img_0476" title="img_0476" /></a>
<a href='http://j053d.net/blog/sobre-el-congreso-de-software-libre-2010/img_0477/' title='img_0477'><img width="150" height="150" src="http://j053d.net/blog/wp-content/uploads/img_0477-150x150.jpg" class="attachment-thumbnail" alt="Rifandose algunas cosas" title="img_0477" /></a>
<a href='http://j053d.net/blog/sobre-el-congreso-de-software-libre-2010/img_0478/' title='img_0478'><img width="150" height="150" src="http://j053d.net/blog/wp-content/uploads/img_0478-150x150.jpg" class="attachment-thumbnail" alt="img_0478" title="img_0478" /></a>
<a href='http://j053d.net/blog/sobre-el-congreso-de-software-libre-2010/img_0479/' title='img_0479'><img width="150" height="150" src="http://j053d.net/blog/wp-content/uploads/img_0479-150x150.jpg" class="attachment-thumbnail" alt="img_0479" title="img_0479" /></a>
<a href='http://j053d.net/blog/sobre-el-congreso-de-software-libre-2010/img_0480/' title='img_0480'><img width="150" height="150" src="http://j053d.net/blog/wp-content/uploads/img_0480-150x150.jpg" class="attachment-thumbnail" alt="img_0480" title="img_0480" /></a>
<a href='http://j053d.net/blog/sobre-el-congreso-de-software-libre-2010/img_0481/' title='img_0481'><img width="150" height="150" src="http://j053d.net/blog/wp-content/uploads/img_0481-150x150.jpg" class="attachment-thumbnail" alt="Charla Mitos y Leyendas del Software Libre con Jesus Lara" title="img_0481" /></a>
<a href='http://j053d.net/blog/sobre-el-congreso-de-software-libre-2010/img_0482/' title='img_0482'><img width="150" height="150" src="http://j053d.net/blog/wp-content/uploads/img_0482-150x150.jpg" class="attachment-thumbnail" alt="img_0482" title="img_0482" /></a>
<a href='http://j053d.net/blog/sobre-el-congreso-de-software-libre-2010/img_0483/' title='img_0483'><img width="150" height="150" src="http://j053d.net/blog/wp-content/uploads/img_0483-150x150.jpg" class="attachment-thumbnail" alt="img_0483" title="img_0483" /></a>
<a href='http://j053d.net/blog/sobre-el-congreso-de-software-libre-2010/img_0484/' title='img_0484'><img width="150" height="150" src="http://j053d.net/blog/wp-content/uploads/img_0484-150x150.jpg" class="attachment-thumbnail" alt="img_0484" title="img_0484" /></a>
<a href='http://j053d.net/blog/sobre-el-congreso-de-software-libre-2010/img_0486/' title='img_0486'><img width="150" height="150" src="http://j053d.net/blog/wp-content/uploads/img_0486-150x150.jpg" class="attachment-thumbnail" alt="Antenas caseras hechas con material de reciclaje" title="img_0486" /></a>
<a href='http://j053d.net/blog/sobre-el-congreso-de-software-libre-2010/img_0487/' title='img_0487'><img width="150" height="150" src="http://j053d.net/blog/wp-content/uploads/img_0487-150x150.jpg" class="attachment-thumbnail" alt="img_0487" title="img_0487" /></a>
<a href='http://j053d.net/blog/sobre-el-congreso-de-software-libre-2010/img_0488/' title='img_0488'><img width="150" height="150" src="http://j053d.net/blog/wp-content/uploads/img_0488-150x150.jpg" class="attachment-thumbnail" alt="img_0488" title="img_0488" /></a>
<a href='http://j053d.net/blog/sobre-el-congreso-de-software-libre-2010/img_0489/' title='img_0489'><img width="150" height="150" src="http://j053d.net/blog/wp-content/uploads/img_0489-150x150.jpg" class="attachment-thumbnail" alt="img_0489" title="img_0489" /></a>
<a href='http://j053d.net/blog/sobre-el-congreso-de-software-libre-2010/img_0491/' title='img_0491'><img width="150" height="150" src="http://j053d.net/blog/wp-content/uploads/img_0491-150x150.jpg" class="attachment-thumbnail" alt="img_0491" title="img_0491" /></a>
<a href='http://j053d.net/blog/sobre-el-congreso-de-software-libre-2010/lacola/' title='lacola'><img width="150" height="150" src="http://j053d.net/blog/wp-content/uploads/lacola-150x150.jpg" class="attachment-thumbnail" alt="Una de tantas colas para entrar" title="lacola" /></a>
<a href='http://j053d.net/blog/sobre-el-congreso-de-software-libre-2010/logo_cnsl/' title='logo_cnsl'><img width="150" height="75" src="http://j053d.net/blog/wp-content/uploads/logo_cnsl-150x75.png" class="attachment-thumbnail" alt="logo_cnsl" title="logo_cnsl" /></a>

]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/sobre-el-congreso-de-software-libre-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como volver al PHP5.2.X</title>
		<link>http://j053d.net/blog/como-volver-al-php5-2-x/</link>
		<comments>http://j053d.net/blog/como-volver-al-php5-2-x/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 20:39:44 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=1192</guid>
		<description><![CDATA[Actualmente la descarga de los repositorios que nos ofrece Ubuntu Lucid Lynx referente a PHP, es la version mas reciente, la PHP5.3.X, esto es un problema para quienes tienen cosas que aun dependen y estan sujetas a PHP5.2.X como es mi caso. Gracias al dato de un amigo -&#62; Onizuka llegue al post de un [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fcomo-volver-al-php5-2-x%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fcomo-volver-al-php5-2-x%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Actualmente la descarga de los repositorios que nos ofrece Ubuntu Lucid Lynx referente a PHP, es la version mas reciente, la PHP5.3.X, esto es un problema para quienes tienen cosas que aun dependen y estan sujetas a PHP5.2.X como es mi caso.</p>
<p><span id="more-1192"></span></p>
<p>Gracias al dato de un amigo -&gt; <a href="http://twitter.com/Onizukar">Onizuka</a> llegue al post de un blog donde su autor nos ofrece <a href="http://mrkandy.wordpress.com/2010/04/16/install-php-5-2-x-in-ubuntu-10-04-lucid/">este buen script</a> para bajar de los repos de karmic koala el php 5.2.10 y no de los repos default de Lucid Lynx (en mi caso) el cual me descarga el php5.3.2 que no me sirve aun debido a estar realizando algo a lo cual no le cae muy bien aun el php5.3, sino el php5.2.X.</p>
<pre class="brush: bash;">
# remove all php packge
sudo aptitude purge `dpkg -l | grep php| awk '{print $2}' |tr &quot;\n&quot; &quot; &quot;`
# use karmiс for php pakage
# pin-params:  a (archive), c (components), v (version), o (origin) and l (label).
echo -e &quot;Package: php5\nPin: release a=karmic\nPin-Priority: 991\n&quot;  | sudo tee /etc/apt/preferences.d/php &gt; /dev/null
apt-cache search php5-|grep php5-|awk '{print &quot;Package:&quot;, $1,&quot;\nPin: release a=karmic\nPin-Priority: 991\n&quot;}'|sudo tee -a /etc/apt/preferences.d/php &gt; /dev/null
apt-cache search -n libapache2-mod-php5 |awk '{print &quot;Package:&quot;, $1,&quot;\nPin: release a=karmic\nPin-Priority: 991\n&quot;}'| sudo tee -a /etc/apt/preferences.d/php &gt; /dev/null
echo -e &quot;Package: php-pear\nPin: release a=karmic\nPin-Priority: 991\n&quot;  | sudo tee -a /etc/apt/preferences.d/php &gt; /dev/null
# add karmic to source list
grep 'main restricted' /etc/apt/sources.list|grep -v &quot;#&quot;| sed s/lucid/karmic/g | sudo tee /etc/apt/sources.list.d/karmic.list &gt; /dev/null
# update package database (use apt-get if aptitude crash)
sudo apt-get update
# install php
sudo aptitude install -t karmic php5-cli php5-cgi
# or (and) sudo apt-get install -t karmic  libapache2-mod-php5
sudo aptitude hold `dpkg -l | grep php5| awk '{print $2}' |tr &quot;\n&quot; &quot; &quot;`
#done
</pre>
<p>Ya sabes, abres el block de notas gedit copias esto, lo guardas, por ejemplo, php5.2.X.sh en donde gustes y lo mandas a ejecutar por la terminal con:</p>
<pre class="brush: bash;">
sudo sh /ruta_carpeta_del_archivo/php5.2.X.sh
</pre>
<p>Luego del proceso, intente instalar Apache y MySQL, me dio un error, algo sobre cabeceros de paquetes, sobre este archivo, debia instalar primero (o eso es lo acostumbrado) Apache y luego php y mysql, con el descuido de este orden, luego de instalar php5.2.10 cai en un error que apuntaba a este archivo:</p>
<pre class="brush: bash;">
sudo gedit /etc/apt/preferences.d/php
</pre>
<p>Este archivo estaba lleno, le pedi a Onizuka que me indicara que tenia el, en este archivo, me indico que lo tenia vacio, asi que procedi a borrar su contenido (copiandolo en otra parte por si acaso), volvi a ejecutar por terminal la instalacion de Apache y todo perfecto.</p>
<p>Tambien de tomar en cuenta que para el caso de instalar cualquier otro paquete proveniente de los repos de karmic y no de lucid lynx seria:</p>
<pre class="brush: bash;">
sudo aptitude install -t karmic nombrPaquete
</pre>
<p>Esto ultimo refiriendonos a instalar algo asociado a este PHP5.2.X proveniente del repositorio de Karmic Koala, y no de los repositorios de Lucid Lynx.</p>
<p>enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/como-volver-al-php5-2-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cambiando la fachada</title>
		<link>http://j053d.net/blog/cambiando-la-fachada/</link>
		<comments>http://j053d.net/blog/cambiando-la-fachada/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 21:07:42 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=1182</guid>
		<description><![CDATA[Pues bien, luego de un buen tiempo con un Theme GTK en Ubuntu 9.04 al 9.10 Karmic Koala al mejor estilo Dark a mi parecer y gusto, gracias a Ultimate-Edition: Ahora paso a un aspecto no tan Dark (que es mi preferido) a cambiarlo quien sabe por cuanto tiempo por uno tipo mas &#8220;plateado&#8221; y [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fcambiando-la-fachada%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fcambiando-la-fachada%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Pues bien, luego de un buen tiempo con un Theme GTK en Ubuntu 9.04 al 9.10 Karmic Koala al mejor estilo Dark a mi parecer y gusto, gracias a Ultimate-Edition:</p>
<p style="text-align: center;"><a href="http://j053d.net/blog/wp-content/uploads/karmic_koala.png"><img class="size-medium wp-image-1226  aligncenter" title="karmic_koala" src="http://j053d.net/blog/wp-content/uploads/karmic_koala-300x187.png" alt="" width="300" height="187" /></a></p>
<p style="text-align: center;"><span id="more-1182"></span></p>
<p style="text-align: center;">
<p style="text-align: left;">Ahora paso a un aspecto no tan Dark (que es mi preferido) a cambiarlo quien sabe por cuanto tiempo por uno tipo mas &#8220;plateado&#8221; y en vista de que el tan querido paquete Ultimate-Edition no es compatible con Lucid Lynx:</p>
<p style="text-align: center;"><a href="http://j053d.net/blog/wp-content/uploads/lucid_lynx2.png"><img class="aligncenter size-medium wp-image-1235" title="lucid_lynx2" src="http://j053d.net/blog/wp-content/uploads/lucid_lynx2-300x187.png" alt="" width="300" height="187" /></a></p>
<p style="text-align: center;"><a href="http://j053d.net/blog/wp-content/uploads/lucid_lynx3.png"><img class="aligncenter size-medium wp-image-1238" title="lucid_lynx3" src="http://j053d.net/blog/wp-content/uploads/lucid_lynx3-300x187.png" alt="" width="300" height="187" /></a></p>
<p style="text-align: left;">Finalmente asi quedo, con una mezcla de cosas, un Theme, un Wallpaper, unos Icons Theme y conky:</p>
<p style="text-align: center;"><a href="http://j053d.net/blog/wp-content/uploads/Ubuntu_10.4_Lucid_Lynx.png"><img class="aligncenter size-medium wp-image-1241" title="Ubuntu_10.4_Lucid_Lynx" src="http://j053d.net/blog/wp-content/uploads/Ubuntu_10.4_Lucid_Lynx-300x187.png" alt="" width="300" height="187" /></a></p>
<p style="text-align: center;"><a href="http://j053d.net/blog/wp-content/uploads/escritorio_paz.png"><img class="aligncenter size-medium wp-image-1294" title="escritorio_paz" src="http://j053d.net/blog/wp-content/uploads/escritorio_paz-300x187.png" alt="" width="300" height="187" /></a></p>
<p>Y algo que incluso <a href="http://twitter.com/j053d/status/16242445130">comente en Twitter</a> (se pronuncia Twirer para quienes no lo sepan, que alguien me confirme) era sobre lo curioso de ver lo desordenado y amontonado que normalmente tengo mi Escritorio fisico (mesa) en comparacion con el ordenado, simple/sencillo y minimalista Escritorio virtual (sistop) con solo lo necesario a la vista. Para mi es ilogico tener muchos iconos en el Escritorio porque sino, tendria que estar minimizando ventana por ventana o Ctrl+M (en mi caso) para minizarlas todas juntas de una, todo eso solo para darle un click a un icono en el Escritorio!!?&#8230; prefiero que esten en la barra superior y asi omito minimizar ventanas para eso.</p>
<p style="text-align: left;">Que de tiempo que no escribia algo en el blog, lo tengo olvidado y desatendido, a ver si lo miro y atiendo algo mas, comenzando por cambiarle el Tema wordpress que ya le hace falta.</p>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/cambiando-la-fachada/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>#FFL en Twitter (Follow Friday Linuxero)</title>
		<link>http://j053d.net/blog/ffl-en-twitter-follow-friday-linuxero/</link>
		<comments>http://j053d.net/blog/ffl-en-twitter-follow-friday-linuxero/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 14:26:31 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=1170</guid>
		<description><![CDATA[Desde el pasado fin de semana comenzo en las Redes Sociales, especificamente hablando de Twitter, un nuevo Follow Friday #FF, el Follow Friday Linuxero #FFL agregandole al clasico #FF una L (Linux/Linuxero). Esto fue una idea tomada por parte de un grupo de usuarios de Linux, para dar una mejor referencia de esto indico este [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fffl-en-twitter-follow-friday-linuxero%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fffl-en-twitter-follow-friday-linuxero%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://j053d.net/blog/wp-content/uploads/twitter.jpg"><img class="alignleft size-full wp-image-1172" title="twitter" src="http://j053d.net/blog/wp-content/uploads/twitter.jpg" alt="" width="150" height="100" /></a>Desde el pasado fin de semana comenzo en las Redes Sociales, especificamente hablando de Twitter, un nuevo Follow Friday #FF, el Follow Friday Linuxero #FFL agregandole al clasico #FF una L (Linux/Linuxero). Esto fue una idea tomada por parte de un grupo de usuarios de Linux, para dar una mejor referencia de esto indico este <a href="http://paraisolinux.com/ffl-follow-friday-linuxero-la-historia-continua/">link</a> de uno de los participantes que difunde la palabra de esto.</p>
<p>El #FFL ofrece  hacer notar mas en Twitter a los usuarios que usamos Linux en cualquiera de sus distribuciones, un #FFL es mejor que un #FF porque por medio de este puede filtrarse mas a personas que usan Linux y Twitter como medio de comunicacion de mensajes de texto de 140 caracteres por internet. De esa forma si deseas conectarte/seguir (Follow) a otras personas que comparten tus mismos intereses del Software Libre, saber que escriben, sus opiniones, sus noticias y eventos de otros sitios sobre el tema, sus blogs, etc. Cada Viernes, un #FFL bien podria hacerte llegar a ellos, y ellos a ti, esto hace que los Linuxeros puedan encontrarse unos con otros filtrado por esto del #FFL cada viernes y verse en una red social tan grande como Twitter el peso que los Linuxeros estan teniendo.</p>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/ffl-en-twitter-follow-friday-linuxero/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Script para saber sobre tus IPs y Puertos</title>
		<link>http://j053d.net/blog/script-para-saber-sobre-tus-ips-y-puertos/</link>
		<comments>http://j053d.net/blog/script-para-saber-sobre-tus-ips-y-puertos/#comments</comments>
		<pubDate>Sat, 17 Apr 2010 23:50:07 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=1157</guid>
		<description><![CDATA[En el blog de Be Linux my friend tenemos este script para obtener la IP privada y publica al igual que puertos abiertos/cerrados que considero un buen script para tener a mano. #!/bin/sh PrivateIP=`ifconfig &#124; grep 'inet:' &#124; grep -v '127.0.0.1' &#124; cut -d: -f2 &#124; awk '{print $1}'` PrivatePorts=`nmap -PA21,22,80,443 $PrivateIP` echo &#34;IP Privada:&#34;$PrivateIP [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fscript-para-saber-sobre-tus-ips-y-puertos%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fscript-para-saber-sobre-tus-ips-y-puertos%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://j053d.net/blog/wp-content/uploads/utilities_terminal.png"><img class="alignleft size-full wp-image-1168" title="utilities_terminal" src="http://j053d.net/blog/wp-content/uploads/utilities_terminal.png" alt="" width="128" height="128" /></a> En el blog de <a href="http://belinuxmyfriend.blogspot.com">Be Linux my friend</a> tenemos <a href="http://belinuxmyfriend.blogspot.com/2010/04/script-de-escaneo-de-ips-y-puertos.html">este script</a> para obtener la IP privada y publica al igual que puertos abiertos/cerrados que considero un buen script para tener a mano.</p>
<p><span id="more-1157"></span></p>
<pre class="brush: bash;">
#!/bin/sh
PrivateIP=`ifconfig | grep 'inet:' | grep -v '127.0.0.1' | cut -d: -f2 | awk '{print $1}'`
PrivatePorts=`nmap -PA21,22,80,443 $PrivateIP`
echo &quot;IP Privada:&quot;$PrivateIP
echo &quot; Estado de Puertos:&quot;
if [ -n &quot;`echo $PrivatePorts | grep -i 21/tcp`&quot; ]
then
echo &quot; * FTP [Abierto]&quot;
else
echo &quot; * FTP [Cerrado]&quot;
fi
if [ -n &quot;`echo $PrivatePorts | grep -i 22/tcp`&quot; ]
then
echo &quot; * SSH [Abierto]&quot;
else
echo &quot; * SSH [Cerrado]&quot;
fi
if [ -n &quot;`echo $PrivatePorts | grep -i 80/tcp`&quot; ]
then
echo &quot; * HTTP [Abierto]&quot;
else
echo &quot; * HTTP [Cerrado]&quot;
fi
if [ -n &quot;`echo $PrivatePorts | grep -i 443/tcp`&quot; ]
then
echo &quot; * HTTPS [Abierto]&quot;
else
echo &quot; * HTTPS [Cerrado]&quot;
fi
PublicIP=`wget -q -O - checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/&lt;.*$//'`
PublicPorts=`nmap -PA21,22,80,443 $PublicIP`
echo &quot;IP Pública:&quot;$PublicIP
echo &quot; Estado de Puertos:&quot;
if [ -n &quot;`echo $PublicPorts | grep -i 21/tcp`&quot; ]
then
echo &quot; * FTP [Abierto]&quot;
else
echo &quot; * FTP [Cerrado]&quot;
fi
if [ -n &quot;`echo $PublicPorts | grep -i 22/tcp`&quot; ]
then
echo &quot; * SSH [Abierto]&quot;
else
echo &quot; * SSH [Cerrado]&quot;
fi
if [ -n &quot;`echo $PublicPorts | grep -i 80/tcp`&quot; ]
then
echo &quot; * HTTP [Abierto]&quot;
else
echo &quot; * HTTP [Cerrado]&quot;
fi
if [ -n &quot;`echo $PublicPorts | grep -i 443/tcp`&quot; ]
then
echo &quot; * HTTPS [Abierto]&quot;
else
echo &quot; * HTTPS [Cerrado]&quot;
fi
</pre>
<p>Cualquier comentario, hacerselo a su autor, bien sea en el blog de <a href="http://belinuxmyfriend.blogspot.com">Be Linux my friend</a> o (en caso de que google me haya direccionado bien) tenemos un sitio perteneciente a <a href="http://www.lucianolagassa.com.ar/">Luciano Lagassa</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/script-para-saber-sobre-tus-ips-y-puertos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Obtener el codigo de Pais por la IP (en PHP)</title>
		<link>http://j053d.net/blog/obtener-el-codigo-de-pais-por-la-ip-en-php/</link>
		<comments>http://j053d.net/blog/obtener-el-codigo-de-pais-por-la-ip-en-php/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 16:06:41 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=1154</guid>
		<description><![CDATA[Desde un tweet de PHP de Venezuela leo sobre este interesante codigo para determinar (y asi saber que icono ponerle) al visitante de tu sitio, obtener la IP, hacer un Whois desde PHP bajo Linux. Este codigo como comenta su autor, lo que hace es obtener la IP del visitante, hace un Whois, actualiza nuestra [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fobtener-el-codigo-de-pais-por-la-ip-en-php%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fobtener-el-codigo-de-pais-por-la-ip-en-php%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Desde un <a href="http://twitter.com/PHPdeVenezuela/status/12287117962">tweet</a> de PHP de Venezuela leo sobre <a href="http://www.hauntednipple.co.uk/?p=21">este interesante codigo</a> para determinar (y asi saber que icono ponerle) al visitante de tu sitio, obtener la IP, hacer un Whois desde PHP bajo Linux.</p>
<p>Este codigo como comenta su autor, lo que hace es obtener la IP del visitante, hace un Whois, actualiza nuestra BD con esa informacion y de esa forma tendremos y sabremos que <a href="http://famfamfam.com/lab/icons/flags/">banderita</a> de pais usar para marcar la visita.</p>
<p><span id="more-1154"></span></p>
<pre class="brush: php;">
&lt;?php
// PHP file.
// Created By: hauntednipple.co.uk
$ip = $_SERVER['REMOTE_ADDR'];

$country = exec(&quot;whois $ip  | grep -i country&quot;); // Run a local whois and get the result back
$country = strtolower($country); // Make all text lower case so we can use str_replace happily
// Clean up the results as some whois results come back with odd results, this should cater for most issues
$country = str_replace(&quot;country:&quot;, &quot;&quot;, &quot;$country&quot;);
$country = str_replace(&quot;Country:&quot;, &quot;&quot;, &quot;$country&quot;);
$country = str_replace(&quot;Country :&quot;, &quot;&quot;, &quot;$country&quot;);
$country = str_replace(&quot;country :&quot;, &quot;&quot;, &quot;$country&quot;);
$country = str_replace(&quot;network:country-code:&quot;, &quot;&quot;, &quot;$country&quot;);
$country = str_replace(&quot;network:Country-Code:&quot;, &quot;&quot;, &quot;$country&quot;);
$country = str_replace(&quot;Network:Country-Code:&quot;, &quot;&quot;, &quot;$country&quot;);
$country = str_replace(&quot;network:organization-&quot;, &quot;&quot;, &quot;$country&quot;);
$country = str_replace(&quot;network:organization-usa&quot;, &quot;us&quot;, &quot;$country&quot;);
$country = str_replace(&quot;network:country-code;i:us&quot;, &quot;us&quot;, &quot;$country&quot;);
$country = str_replace(&quot;eu#countryisreallysomewhereinafricanregion&quot;, &quot;af&quot;, &quot;$country&quot;);
$country = str_replace(&quot;&quot;, &quot;&quot;, &quot;$country&quot;);
$country = str_replace(&quot;countryunderunadministration&quot;, &quot;&quot;, &quot;$country&quot;);
$country = str_replace(&quot; &quot;, &quot;&quot;, &quot;$country&quot;);
?&gt;
</pre>
<p>Algo bueno para tener anotado por aqui y que seguro me servira, asi que tomo nota de la fuente. Cualquier comentario, por favor, realizarlo al articulo original a su autor.</p>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/obtener-el-codigo-de-pais-por-la-ip-en-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mi vision del futuro inmediato</title>
		<link>http://j053d.net/blog/mi-vision-del-futuro-inmediato/</link>
		<comments>http://j053d.net/blog/mi-vision-del-futuro-inmediato/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 18:13:58 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Off Topic]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=1136</guid>
		<description><![CDATA[Mientras aun esperamos los autos que vuelan (como en los supersonicos) los alemanes nazi hubiesen sacrificado lo que fuese por ver una laptop de hoy en dia, vemos que desde aquel entonces hasta ahora han pasado no mas de 60 anios. No se si falten 50 o 100 anios y mas para tener la vida [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fmi-vision-del-futuro-inmediato%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fmi-vision-del-futuro-inmediato%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Mientras aun esperamos los autos que vuelan (como en los supersonicos) los alemanes nazi hubiesen sacrificado lo que fuese por ver una laptop de hoy en dia, vemos que desde aquel entonces hasta ahora han pasado no mas de 60 anios. No se si falten 50 o 100 anios y mas para tener la vida de los supersonicos o de star-wars. El futuro mas proximo a tocar bien sea aun para nosotros, o mas para nuestros hijos y los hijos de estos seria lo siguiente.</p>
<p><span id="more-1136"></span></p>
<p>La tecnologia Touch es el futuro, aun hay personas que no gustan de esto, lo cual hara que exista dos ramas de desarrollo tecnologico, la clasica evolucion tecnologica de tacto, y la touch (y la hibrida) y despues quien sabe que mas salga. Desde el iPhone pasando ahora al iPad considero que son la siguiente evolucion de las laptops (hablando principalmente por tomar como ejemplo el iPad), que veremos en las aulas de clase dentro de algunos anios (no se cuantos) las pizarras touch.</p>
<p>Espero vivir lo suficiente para llegar a ese dia, entrar a un aula de clase y encontrarnos con una enorme pizarra touch, que bien sabemos sera la eliminacion de muchas cosas de hoy en dia, como lo siguiente:</p>
<p>Ventajas de una Pizarra Touch en un Aula de clase:</p>
<ul>
<li>Adios tiza de pizarra.</li>
<li>Adios marcadores de pizarra acrilica (falta del material, resequedad del material, manchado).</li>
<li>Adios borrador de pizarra (bien sea pizarra de tiza o de marcador toxico/no-toxico).</li>
<li>Conexion a internet.</li>
<li>Visualizacion de documentos (de diversos formatos), al igual que audio, video.</li>
<li>Adios Video-beam.</li>
<li>Sesiones de Skype o cualquier software de Social Media permitiendo enriquecer la informacion expuesta en la gran pantalla por docentes/expertos de otras universidades y/o paises.</li>
<li>Presentaciones directa de disenios graficos, programas desarrollados por estudiantes de dichas carreras directamente en la pizarra.</li>
</ul>
<p>Tu tiza/marcador sera tu propio dedo, no tendras que estar pendiente si tienes o no para escribir ni para borrar. Presentaciones PowerPoint o bajo la aplicacion que se preste, busqueda de ejemplos del tema en internet al momento (en tiempo real). Historial de clases (logs) directamente almacenado en la pizarra o servidor de la institucion al que este conectada, esta y todas las pizarras de cada aula. Finalmente, entradas de distintos perifericos, donde el alumno le entregue al docente un pendrive para copiar toda la informacion presente en la gran pantalla tactil, de esa forma el alumno dedica todo el tiempo de la clase a prestar atencion sin preocupacion de perder apuntes. Podria haber iPads integrados a los pupitres, la matricula de un instituto asi debe ser bien costosa no! <img src='http://j053d.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Con esto se prestan unas ideas, el docente podra dirigirse a otra aula a dar la misma clase a otros alumnos, solo tendra que acceder a su cuenta de docente en la pantalla de esa aula y descargar toda la clase del aula previa ahorrandose escribir todo nuevamente y editarlo. Uno pensaria, para que asistir al aula, que tus companeros te pasen luego la clase, que el docente se las envia a todos por correo, asi nadie iria pero tendriamos las clases en nuestra bandeja de e-mail.</p>
<p>Antes de llegar este futuro, ya desde hace mucho el alumno puede no asistir a clase y pedirle luego los apuntes a un companero, ya en nuestro presente hay clases con video-beam donde podemos pasarle un pendrive a quien asistio para que nos copie lo expuesto de ese dia. La razon de estar presente es porque puedes preguntar ante alguna duda en base a una charla de la cual no haz entendido bien algo y deseas que te lo aclaren, porque ayer, hoy y manana, la participacion en clase tambien es un evaluativo.  Muchas cosas se pueden hacer por skype, escritorio remoto, vpn, etc.. pero aun se necesita de una cierta interaccion en vivo con las personas. A no ser que el docente si acceda a dar asistencia por correo o chat luego de las clases, creo que la presencia fisica en el lugar aun seguira viendose, solo para los estudios a distancia es que se prestaria el caso de todo de forma remota, en vista de las circunstancias del alumno.</p>
<p>Desventajas de una Pizarra Touch: Cosas que pueden interrumpir la clase</p>
<ul>
<li>Se colgo la pizarra.</li>
<li>Tiene un virus.</li>
<li>Programas desactualizados para recibir archivos de versiones posteriores o de formato desconocido.</li>
<li>Archivos corruptos (danados) que imposibiliten su adecuada presentacion.</li>
<li>Se rompio la pizarra (lo peor que puede llegarle a suceder), al director le dara algo.</li>
<li>La formatearon.</li>
<li>El servidor al cual dependia esa y todas las pizarras presenta problemas, a los del dpto de IT le dara algo, pero se supone que deben haber servidores espejos para eso.</li>
<li>La pizarra no funcionara por hackeo.. no habra clase.</li>
</ul>
<p>La tecnologia tiene sus pro y sus contra pero aun asi no deja de ser la revolucion de una mejor calidad de vida para todos. Habra un dia en donde los estudiantes ya no necesitaran cuadernos ni libros o morrales (solo para llevar sus laptops/ipad y lo que aparezca). En tu bolsillo, colgando de tu cuello o de tu llavero tendras todo lo que necesitas para ir a clases, un muy pequeno pendrive (incluso con diversas funcionalidades) pero con un enorme tamanio de capacidad de datos, puede ser tu propio telefono tambien, tu dispositivo de almacenamiento lo tendras encima, en tu ropa, sera tu &#8220;todo en uno&#8221;, los apuntes los tendras en tu correo, o copiados por cable, wifi o bluetooth, ya no sera mas fotocopiar o escribir apuntes en papel y lapiz, solo imprimirlo si gustas. Pero gastarias papel y toner, nada mejor que un zoom en un ipad, ya ni los lentes necesitaras para una buena lectura.</p>
<p>Obviamente, la era touch no elimina los lapices, boligrafos u otros medios de escritura, no se si la era touch en unos 150 o 200 anios eliminara la tecnologia de teclado tactil, no pienso indicar si o no a eso, no sabemos, cualquier cosa a imaginar solo son suposiciones en base a como vemos avanzar las cosas.</p>
<p>Asi como vemos avances de empresas como Microsoft y otras para anexar mas las tecnologias en el hogar y oficina. Pantallas en la puerta de tu nevera con acceso a internet, cuadros de pared y retratos de mesa con acceso directo a tu Facebook con randon de imagen o fija sera el futuro (ya existe), hay retratos de mesa digitales que pasan secuencia de imagenes, asi como las pizarras tactil (touch).  Espero vivir lo suficiente para ver ese dia o al menos estar seguro que nuestros hijos y los suyos, disfrutaran de eso. Una vision de la vida en unos 50 anios. Pienso que la radio y la TV no desapareceran, simplemente evolucionaran a unirse en un todo en la gran nube (internet) lo cual ya esta sucediendo. No estaremos sujetos a horarios televisivos, perdiendo el momento de ver algun programa a su momento, toda pelicula, serie, documental, novela y programas de TV en general podran verse cuando el espectador asi lo desee y volverlo a ver cuando lo desee y descargarlo si gusta. Ver la TV, tu correo y hablar por videoconferencia o hacer una llamada y escuchar musica online sera todo desde un mismo hardware. Todo esto sucedera antes de que el primer vehiculo terrestre personal, vuele.</p>
<p>Ante un futuro asi, ademas de las bombas nucleares, tambien seran muy amenazantes las de pulso electromagnetico (EMP), ya hoy en dia lo son, lo sera mas en el futuro.</p>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/mi-vision-del-futuro-inmediato/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GIMP 2.7.1</title>
		<link>http://j053d.net/blog/gimp-2-7-1/</link>
		<comments>http://j053d.net/blog/gimp-2-7-1/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 21:08:58 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=1112</guid>
		<description><![CDATA[Normalmente un usuario Linux prefiere que las aplicaciones que coexisten con el sistema vengan de los repositorios, ya que esto garantiza la seguridad que no perjudicara otras partes del sistema y que dicho programa es estable para su uso.  Mientras se espera del GIMP 2.8, en la web de GIMP ya esta el 2.7.0 y [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fgimp-2-7-1%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fgimp-2-7-1%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://j053d.net/blog/wp-content/uploads/gimp.png"><img class="alignleft size-full wp-image-1166" title="gimp" src="http://j053d.net/blog/wp-content/uploads/gimp.png" alt="" width="128" height="128" /></a> Normalmente un usuario Linux prefiere que las aplicaciones que coexisten con el sistema vengan de los repositorios, ya que esto garantiza la seguridad que no perjudicara otras partes del sistema y que dicho programa es estable para su uso.  Mientras se espera del GIMP 2.8, en <a href="http://www.gimp.org/">la web de GIMP</a> ya esta el 2.7.0 y 2.7.1 pero en los repositorios aun sigue estando el 2.6.7. Aqui indico un script que encontre y lo cual nos permitira darle una ojeada a la evolucion actual del Gimp camino a su version 2.8 y futuras.</p>
<p><span id="more-1112"></span></p>
<p><a href="http://j053d.net/blog/wp-content/uploads/Pantallazo-Acerca-de-GIMP.png"><img class="aligncenter size-full wp-image-1113" title="Pantallazo-Acerca de GIMP" src="http://j053d.net/blog/wp-content/uploads/Pantallazo-Acerca-de-GIMP.png" alt="" width="345" height="412" /></a></p>
<p>El Gimp 2.6.7 me ha dado un problema que cuelga incluso, todo mi sistema, no parece ser un bug, ya que en un ubuntu kk 9.10 virtualizado parece no suceder esto. Este mal percance me hizo probar el Gimp 2.7.1 el cual no se recomienda para desarrollo.</p>
<p>Sin tener que desintalar el Gimp-2.6.7, en paralelo a este bien podemos instalarse el Gimp-2.7.1 por si se desea manejar un poco el Gimp mas acercado al esperado Gimp-2.8 que desde hace ya un buen tiempo se menciona.</p>
<p>Buscando, encontre <a href="http://www.gimpusers.com/news/2009-10-14/compiling-gimp-27-git-ubuntu-904-910.html">este articulo sobre un buen script que nos instala de una, el Gimp-2.7.1</a>, que funciona muy bien para Ubuntu 9.04 y 9.10 (no se que tal con otras distribuciones), tarda su buen y largo rato pero al final, lo tendremos en <strong>/opt/gimp-2.7/bin/gimp-2.7</strong> para colocarlo (si se prefiere) en el menu donde tenemos las demas aplicaciones graficas, incluyendo al Gimp-2.6.7 que es el que viene instalado con el sistema Ubuntu Karmic Koala 9.10 mientras se espera al <a href="http://j053d.net/blog/el-disenio-grafico-en-linux/">10.4 retocado en su UI al estilo Mac</a>.</p>
<p>Este es el script del sitio que ya he comentado en el parrafo anterior, en caso de quien no maneje bien esto de los script, copia y pega esto en el block de notas gedit o el que uses, guardalo con extension .sh (por ejemplo gimp27.sh) y desde la terminal puedes ejecutarlo de la siguiente forma: <strong>sudo sh gimp27.sh</strong></p>
<pre class="brush: bash;">
# (as non-root user)

cd ~
mkdir -p tmp
cd tmp

# Important! These variables have to be set and
# are required for all further commands. If you close the
# terminal window, you have to give the 3 export commands
# again.
export PATH=$PATH:/opt/gimp-2.7/bin
export PKG_CONFIG_PATH=/opt/gimp-2.7/lib/pkgconfig
export LD_LIBRARY_PATH=/opt/gimp-2.7/lib

# Fetch the most important packages
sudo apt-get build-dep gimp

# Additional packages
sudo aptitude install checkinstall git-core libtool libopenexr-dev libopenraw-dev libspiro-dev

### BEGIN: ONLY NEEDED FOR UBUNTU 9.04 ###
# Fetch, compile, install Glib (needed for Gtk)
wget http://ftp.gnome.org/pub/gnome/sources/glib/2.22/glib-2.22.2.tar.bz2
tar -xjf glib-2.22.2.tar.bz2
cd glib-2.22.2
./configure --prefix=/opt/gimp-2.7
make -j3
sudo make install -j3
cd ..

# Fetch, compile, install Gtk
wget http://ftp.gnome.org/pub/gnome/sources/gtk+/2.18/gtk+-2.18.2.tar.bz2
tar -xjf gtk+-2.18.2.tar.bz2
cd gtk+-2.18.2
./configure --prefix=/opt/gimp-2.7
make -j3
sudo make install -j3
cd ..
### END: ONLY NEEDED FOR UBUNTU 9.04 ###

# Fetch, compile, install BABL
git clone --depth 1 git://git.gnome.org/babl
cd babl
./autogen.sh --prefix=/opt/gimp-2.7
make -j3
sudo make install -j3
cd ..

# Fetch, compile, install GEGL
git clone --depth 1 git://git.gnome.org/gegl
cd gegl
./autogen.sh --prefix=/opt/gimp-2.7 --disable-gtk-doc
make -j3
sudo make install -j3
cd ..

# Fetch, compile, install GIMP
git clone --depth 1 git://git.gnome.org/gimp
cd gimp
./autogen.sh --prefix=/opt/gimp-2.7 --disable-gtk-doc
make -j3
sudo make install -j3
cd ..
</pre>
<p>Como decia, eso se llevara un buen y largo rato haciendo lo suyo, y a la final tendremos al Gimp 2.7.1 listo para probar y asi ver como van las cosas con su evolucion. Al menos el Gimp 2.7.1 no me cuelga todo el sistema como el Gimp 2.6.7, razon por la cual lo he instalado.</p>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/gimp-2-7-1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Frameworks CSS</title>
		<link>http://j053d.net/blog/frameworks-css/</link>
		<comments>http://j053d.net/blog/frameworks-css/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 02:35:52 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Frameworks CSS]]></category>
		<category><![CDATA[HTML/XHTML]]></category>
		<category><![CDATA[Maquetacion]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=1059</guid>
		<description><![CDATA[He estado viendo el uso de Framework de CSS de lo cual escribire sobre dos, los cuales son: 960 Grid System Blueprint La organizacion de capas &#60;div&#62; que brindan estos Frameworks para aplicarles luego su respectivo CSS agiliza un poco la labor de pensar y cuadrar dichos elementos en nuestro lienzo de pintar (pagina web [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fframeworks-css%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fframeworks-css%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<div class="wp-caption aligncenter" style="width: 610px"><img title="maquetado web" src="http://www.treeweb.es/__archivo__/codigo/articulos/tres_columnas/diseno_tres_columnas.png" alt="" width="600" height="203" /><p class="wp-caption-text">ejemplo de maquetado web</p></div>
<p>He estado viendo el uso de Framework de CSS de lo cual escribire  sobre dos, los cuales son:</p>
<ul>
<li>960 Grid System</li>
<li>Blueprint</li>
</ul>
<p>La organizacion de capas &lt;div&gt; que brindan estos Frameworks para aplicarles luego su respectivo CSS agiliza un poco la labor de pensar y cuadrar dichos elementos en nuestro lienzo de pintar (pagina web en blanco inicial) ayudando a maquetar mas rapidamente la presentacion de la misma. Su uso y practica es sencillo (no es como hablar de Frameworks de PHP), con unas cuantas explicaciones y codigo a mostrar de estos, se puede apreciar que ni vale la pena hablar de una curva de aprendizaje, simplemente es algo de estudiar un rato y aplicar en cuestion anexandolo al proyecto web en marcha.</p>
<p><span id="more-1059"></span></p>
<p>La imagen que encabeza este articulo es tomada del post de <a href="http://www.treeweb.es/">TreeWeb</a> referente a un ejemplo de maquetado titulado <a href="http://www.treeweb.es/plantilla-de-tres-columnas">plantilla de tres columnas</a>, lo cual no entra en temas de Frameworks CSS, por lo que si no te importa mucho leer sobre esto de Frameworks de CSS, el ejemplo de TreeWeb sobre un maquetado de web te puede servir y nos olvidamos de este post. Con los frameworks a mencionar puede hacerse un maquetado igual a la imagen que encabeza este post del blog. Pero voy a darle distintos colores a cada capa &lt;div&gt; para verse bien cada una en el maquetado con estas herramientas web.</p>
<p><span style="color: #ff0000;">Antes que todo, por respeto y agredecimiento a los fuentes originales</span>, el contenido sobre <strong>960 Grid System</strong> esta basado en el resumen del tutorial de <a href="http://www.desarrolloweb.com/">desarrolloweb</a> titulado <a href="http://www.desarrolloweb.com/manuales/maquetacion-css-960-grid-system.html">Maquetacion   CSS con 960 Grid System</a>, muy recomendable ver los videotutoriales   que acompanan a este tutorial de la web. De igual forma el contenido de <strong>Blueprint</strong> esta basado en los post de <a href="http://xandrusoft.blogspot.com/2010/01/manualtutorial-blueprint-css-framework.html">xandrusoft</a> y <a href="http://pixelco.us/blog/tutorial-blueprint/">pixelco.us</a>. La idea no es duplicar la informacion, hago un resumen de una o varias partes en un solo contenido y principalmente por experiencia de recordar que no tenemos control sobre factores externos, como bien lo es el material de otros autores. En ocasiones, por borrado, edicion o caida o suspension de algunos sitios perdemos contacto con algunos temas de interes, y en donde en ocasiones ni el cache de google lo logra salvar, aprendemos de otros y debe agradecerse su informacion, siempre indica los fuentes originales (suponiendo que esos mismos sean) y si es posible, escribirles un comentario para que sepan que su informacion es de ayuda o guia para otros.</p>
<h2>960 Grid System</h2>
<p><a href="http://j053d.net/blog/wp-content/uploads/960gs1.jpg"><img class="aligncenter size-full wp-image-1063" title="960gs" src="http://j053d.net/blog/wp-content/uploads/960gs1.jpg" alt="" width="400" height="250" /></a></p>
<p>El Framework para CSS <a href="http://960.gs/">960 Grid System</a> agiliza la maquetacion/maquetizacion del armado de los &lt;div&gt; de  una pagina permitiendo un aplique mas rapido de CSS a estos sin perder  mucho tiempo en irlos ajustando manualmente gracias a su esquema de 12,  16 y 24 columnas. En la web hay muy buenos ejemplos basados en este  esquema de columnas.</p>
<p>Su estrucutra esta basada de la siguiente forma:</p>
<ul>
<li>carpeta <strong>code</strong> (contiene el framework, lo que realmente necesitamos). Una carpeta<strong> css</strong>, una <strong>img</strong> y dos html de demo.</li>
<li>carpeta <strong>licences</strong> (eso mismo, las licencias)</li>
<li>carpeta <strong>sketch_sheets</strong> (contiene un pdf para imprimir su numeracion de cuadriculas, algo que me parece bien).</li>
<li>carpeta <strong>templates</strong> (posee muchas cuadriculas de sus 12,16 y 24 columnas para muchas aplicaciones de diseno). Tales como photoshop, firework, visio, illustrator, y otras.</li>
</ul>
<p>Sobre sus CSS:<img title="More..." src="http://j053d.net/blog/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" /></p>
<ul>
<li><strong>960.css</strong> (contiene todo lo necesario para los grid, las capas &lt;div&gt; identificadas por su class)</li>
<li><strong>reset.css</strong> (elimina cualquier CSS defaulto impuesto por el navegador)</li>
<li><strong>text.css</strong> (le indica tipo de letra, tamanio, etc a los escritos, referente a la tipografia)</li>
<li><strong>960_24_col.css</strong> (este framework trabaja con 960.css la cuadricula de 12 y 16 columnas, pero la de 24 lo tiene a parte)</li>
</ul>
<p>Tomado de <a href="http://es.wikipedia.org/wiki/960_Grid_System">Wikipedia: <strong>960  Grid System</strong></a> es una biblioteca de <a title="CSS" href="http://es.wikipedia.org/wiki/CSS">CSS</a> disenada por <a href="http://sonspring.com/">Nathan  Smit</a> enfocada a la maquetación de una página web. La biblioteca  utiliza un contenedor (<a title="HTML" href="http://es.wikipedia.org/wiki/HTML">div</a>) principal  de un  tamaño fijo de <strong>960 pixels</strong>, <em>de ahí su nombre</em>. Se eligió  este  tamaño por ser fácilmente divisible entre 2, 3, 4, 5, 6, 8, 10,  12, 15,  16, 20, 24, 30, 32, 40, 48, 60, 64, 80, 96, 120, 160, 192, 240,  320 y  480, como lo indica su autor:</p>
<blockquote><p><em>Todos  los monitores modernos soportan por lo menos  1024 × 768 píxeles de  resolución. 960 es divisible entre 2, 3, 4, 5, 6,  8, 10, 12,  15, 16, 20, 24, 30, 32, 40, 48, 60, 64, 80, 96, 120, 160,  192, 240, 320 y 480. Esto hace  que sea un número base de gran  flexibilidad para trabajar.</em></p></blockquote>
<p>La maquetizacion de las web con 960 Grid System agiliza el aplique de  CSS, una referencia de tamanos puede verse en <a href="http://960.gs/demo.html">este  ejemplo</a> el de 12 y 16 columnas y en <a href="http://960.gs/demo_24_col.html">este ejemplo</a> el de 24  columnas lo cual esta apegado a unas referencias:</p>
<table>
<tbody>
<tr>
<td><strong>Anchura  de grillas/rejillas en 960 Grid System</strong></td>
</tr>
<tr>
<td>
<table style="height: 254px;" width="269">
<tbody>
<tr>
<td><strong>12  Columnas</strong></td>
<td><strong>16  Columnas</strong></td>
<td><strong>24  Columnas</strong></td>
</tr>
<tr>
<td><strong>1</strong>:  60px<br />
<strong>2</strong>: 140px<br />
<strong>3</strong>: 220px<br />
<strong>4</strong>: 300px<br />
<strong>5</strong>: 380px<br />
<strong>6</strong>: 460px<br />
<strong>7</strong>: 540px<br />
<strong>8</strong>: 620px<br />
<strong>9</strong>: 700px<br />
<strong>10</strong>: 780px<br />
<strong>11</strong>: 860px<br />
<strong>12</strong>: 940px</td>
<td><strong>1</strong>:  40px<br />
<strong>2</strong>: 100px<br />
<strong>3</strong>: 160px<br />
<strong>4</strong>: 220px<br />
<strong>5</strong>: 280px<br />
<strong>6</strong>: 340px<br />
<strong>7</strong>: 400px<br />
<strong>8</strong>: 460px<br />
<strong>9</strong>: 520px<br />
<strong>10</strong>: 580px<br />
<strong>11</strong>: 640px<br />
<strong>12</strong>: 700px<br />
<strong>13</strong>: 760px<br />
<strong>14</strong>: 820px<br />
<strong>15</strong>: 880px<br />
<strong>16</strong>: 940px</td>
<td><strong>1</strong>:  30px<br />
<strong>2</strong>: 70px<br />
<strong>3</strong>: 110px<br />
<strong>4</strong>: 150px<br />
<strong>5</strong>: 190px<br />
<strong>6</strong>: 230px<br />
<strong>7</strong>: 270px<br />
<strong>8</strong>: 310px<br />
<strong>9</strong>: 350px<br />
<strong>10</strong>: 390px<br />
<strong>11</strong>: 430px<br />
<strong>12</strong>: 470px<br />
<strong>13</strong>: 510px<br />
<strong>14</strong>: 550px<br />
<strong>15</strong>: 590px<br />
<strong>16</strong>: 630px<br />
<strong>17</strong>: 670px<br />
<strong>18</strong>: 710px<br />
<strong>19</strong>: 750px<br />
<strong>20</strong>: 790px<br />
<strong>21</strong>: 830px<br />
<strong>22</strong>: 870px<br />
<strong>23</strong>: 910px<br />
<strong>24</strong>: 950px</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p style="text-align: center;">
<div id="attachment_1128" class="wp-caption aligncenter" style="width: 568px"><a href="http://j053d.net/blog/wp-content/uploads/columnas960.gif"><img class="size-full wp-image-1128   " title="columnas960" src="http://j053d.net/blog/wp-content/uploads/columnas960.gif" alt="" width="558" height="486" /></a><p class="wp-caption-text">Esquema de 960 Grid System a 12 columnas</p></div>
<p>Con la descarga de este Framework se encuentran unas hojas ( <a href="http://j053d.net/blog/wp-content/uploads/960_sketch.pdf">960_sketch</a>)  que pueden imprimirse para plasmar en ellas la maquetizacion de la  pagina, siendo cada recuadro contenedor los &lt;div&gt; a los cuales le  aplicaremos nuestro CSS. Esta organiacion de &lt;div&gt; acorta el  tiempo de estarlos armando mas a mano (esto se aprecia mas si son  muchos) y es mas sencillo y mejor pensado a esta organizacion de  etiquetas &lt;div&gt; aplicarles su respectivo CSS a cada uno.</p>
<p>El ejemplo mas sencillo se podria dar con una maquetizacion de una  web a 12 columnas mediante este Framework para CSS, lo primero a agregar  en el html de dicha pagina seria el llamado a dos archivos CSS de 960  Grid System:</p>
<pre class="brush: xml;">
&lt;link rel=stylesheet type=&quot;text/css&quot; href=&quot;ruta/reset.css&quot;&gt;
&lt;link rel=stylesheet type=&quot;text/css&quot; href=&quot;ruta/960.css&quot;&gt;
</pre>
<p><em>reset.cs</em> limpia o libera de cualquier css aplicado a la pagina  por default inpuesto por el navegador, de ahi que debe de estar de  primero y luego <em>960.css</em>, si no se llama a este archivo no se  podra implementar el Framework.</p>
<p>Como se usa este Framework para CSS?, el ancho es indicado en  <strong>class=&#8221;nombre_xx&#8221;</strong>, se crea un &lt;div&gt; contenedor inicial el cual  llamaremos <strong>container_xx</strong> donde <strong>xx</strong> es la numeracion de la  tabla expuesta anteriormente. Como este es el &lt;div&gt; principal (el  contenedor) sera de 12 (940px) abarcando todo el ancho. <strong>Estos ejemplos seran basados a 12 columnas, es a preferencia de la persona si desea aplicarlo a 12, 16 o 24 columnas.</strong></p>
<pre class="brush: xml;">
&lt;div&gt;
....
&lt;/div&gt;
</pre>
<p>Todos los elementos que van dentro de este &lt;div&gt; (que tambien  son otros &lt;div&gt;) tendran como nombre de clase (<strong>class</strong>) el siguiente  <strong>grid_xx</strong> donde <strong>xx</strong> seria la numeracion de ancho de pixel basandonos en la  referencia de a 12 columnas indicada mas arriba en el recuadro.</p>
<pre class="brush: xml;">
&lt;div class=&quot;container_12&quot; id=&quot;contenedor&quot;&gt;
    &lt;div class=&quot;grid_12&quot; id=&quot;cabecera&quot;&gt;Cabecera (940px)&lt;/div&gt;
    &lt;div class=&quot;grid_4&quot; id=&quot;menu&quot;&gt;Menú (300px)&lt;/div&gt;
    &lt;div class=&quot;grid_8&quot; id=&quot;contenido&quot;&gt;Contenido (620px)&lt;/div&gt;
    &lt;div class=&quot;grid_12&quot; id=&quot;pie&quot;&gt;Pie de página(940px)&lt;/div&gt;
&lt;/div&gt;
</pre>
<p>Como se aprecia en el codigo previo, el &lt;div&gt; contenedor abarca  todo el ancho 940px, la cabera y el pie de pagina igual, pero en el  centro (entre cabecera y pie) la columna &lt;div&gt; de menu posee un  ancho de 300px y el &lt;div&gt; de contenido de 620px de ancho. Si es  960px porque el ancho total de 12 es de 940, esto es porque se le resta  10px de cada lado, de ahi que en vez de 960px sea 940px, incluso todos  los objetos siempre se le restaran 10 de cada lado al estar dentro de  otro para el caso de 960 grid system.</p>
<p>Volviendo al tema de la separacion de 10 de cada lado de la capa, asi  como tenemos las <strong>clases</strong> <em><strong>container_xx</strong></em> y <em><strong>grid_xx</strong></em> tambien tenemos a las clases <em><strong>alpha</strong></em> (elimina el marge de  10px a la izquierda) y <em><strong>omega</strong></em> (elimina el margen de 10px a la derecha). Estas dos clases solo se usarian para el caso de grids  anidados (grids que esten dentro de otro), ya que si llegase a ver  muchos &lt;div&gt; dentro de otros llegaria un momento en el que casi no  habria espacio para el contenido de estos debido a la reduccion de  estos 10px de lado y lado.</p>
<p>Tambien estan las clases <strong>prefix_xx</strong> (crea un espacio  vacio a la izquierda del &lt;div&gt;) y <strong>suffix_xx</strong> (crea un  espacio vacio a la derecha del &lt;div&gt;) donde <strong>xx</strong> seria la  numeracion de ancho acorde a la regla de numeraciones de ancho de  pixeles del formato de N# columnas impuesta a trabajar en dicha pagina.  Pero estos espacios no indican que dicho espacio esta vacio, esos  espacios siguen siendo de esos &lt;div&gt;, eso se observa si se  colocase un color de fondo a la capa &lt;div&gt; que posea dicho espacio  vacio.</p>
<pre class="brush: xml;">
&lt;div &gt;&lt;/div&gt;
   &lt;div&gt;
      .....
   &lt;/div&gt;
&lt;div class=&quot;grid_12&quot; id=&quot;pie&quot;&gt;Pie de página(940px)&lt;/div&gt;
</pre>
<p>El codido anterior de los 960 pixel de ancho (recordando que hay 10  menos de cada lado, 940px) tenemos a los &lt;div&gt; de cabecera y pie  de pagina abarcando todo el ancho (940px) mientras que entre estos esta  un &lt;div&gt; siendo grid_8 que seria 8  columnas (620px) y con un prefix_1 de 1 columna (60px) apegado al patron  de trabajo a columna de 12. Este &lt;div&gt; tendra un espacio vacio a  su derecha de 60px (prefix_1). Si se hubiese querido el espacio en  blanco a la izquierda, hubiese sido con un &lt;div&gt;, en total esta capa &lt;div&gt; abarcaria 9 columnas (8  del grid y 1 del sufflix o prefix) quedando en esa misma linea 3  columnas libres. Es importante no salirse de las 12 columnas o del N# de  columnas total del patron de columnas que se este usando, sea el de 12,  16 o 24 columnas.</p>
<p>Otra cosa a tenerse muy en cuenta, todos estos &lt;div&gt; propios  del framework 960 son para maquetar mejor o mas rapidamente la  presentacion (la web) organizarla, pero estos &lt;div&gt; no son los  &lt;div&gt; a los cuales les vamos a aplicar nuestro CSS, ya estos  &lt;div&gt; con nombres de clase container_xx, grid_xx, etc.. tendran su  CSS del archivo 960.css por lo que de aplicarle a estas capas nuestro  CSS estariamos sobreescribiendolo. Es dentro de estos &lt;div&gt; de  maquetacion donde meteremos lo nuestro  (&lt;img&gt;,&lt;p&gt;,&lt;div&gt; propios,etc) todas nuestras  etiquetas/tags y es a estos a los que obviamente le aplicariamos nuestro  archivo CSS pero no a los &lt;div&gt; propios del framework.</p>
<p>Los &lt;div&gt; de que son del framework 960 poseen un float:left  (esto se puede ver en el archivo 960.css) por lo que se recomienda  aplicar al final de un &lt;div&gt;&lt;/div&gt; pero este  &lt;div&gt; no iria al final de cada &lt;div&gt; del framework, sino al  final de cada linea, por lo que si varios &lt;div&gt; del framework  estan en la misma linea, por ejemplo un &lt;div&gt; y un  &lt;div&gt; siendo asi 8+4=12 columnas (el total de  anchos 940px) al final la linea iria el &lt;div  class=&#8221;clear&#8221;&gt;&lt;/div&gt;.</p>
<pre class="brush: xml;">
&lt;div&gt;
   &lt;div class=&quot;grid_12&quot; id=&quot;cabecera&quot;&gt;....&lt;/div&gt;
   &lt;div class=&quot;grid_8&quot; id=&quot;menu&quot;&gt;
    ......
   &lt;/div&gt;
   &lt;div class=&quot;grid_8&quot; id=&quot;cuerpo_contenido&quot;&gt;
    ......
   &lt;/div&gt;
   &lt;div&gt;&lt;/div&gt; &lt;!-- div clear al final de la linea --&gt;
   &lt;div class=&quot;grid_12&quot; id=&quot;pie&quot;&gt;....&lt;/div&gt;
&lt;/div&gt;
</pre>
<p>960 Grid System trae una carpeta de templates (plantillas) para  photoshop, fireworks, illustrator, visio y otros lo cual no es mas que  la referencia de columnas de 12, 16 y 24 en la que se basa toda la  maquetacion de este framework lo cual se sobrepone sobre la imagen que  se tenga en photoshop u otros y en base a ello tener la referencia de  columnas para las capas (div).</p>
<p>Un ejemplo final sobre el uso de este Framework 960GS podria ser algo como este, donde se le ha aplicado un background-color a las capas mediante un &lt;style&gt; CSS que en esta ocasion esta en el mismo archivo html pero que bien (y el deber ser) seria colocarlo en un archivo CSS y llamarlo como los del framework.</p>
<pre class="brush: xml;">
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
    &lt;link rel=&quot;STYLESHEET&quot; type=&quot;text/css&quot; href=&quot;code/css/960.css&quot;&gt;
    &lt;link rel=&quot;STYLESHEET&quot; type=&quot;text/css&quot; href=&quot;code/css/reset.css&quot;&gt;
    &lt;link rel=&quot;STYLESHEET&quot; type=&quot;text/css&quot; href=&quot;code/css/text.css&quot;&gt;
    &lt;head&gt;
        &lt;meta http-equiv='Content-type' content='text/html; charset=UTF-8' /&gt;
        &lt;title&gt;Practica 960&lt;/title&gt;
        &lt;style&gt;
            #cabecera, #pie { background-color: #2f309d; }
            /* #buscador { background-color: #3e1414; } */
            #menu { background-color: #143e14; }
            #contenido1 { background-color: #ddc3af; }
            #contenido2 { background-color: #464544; }
            #banner1, #banner2, #banner3 { background-color: #cc7b24; }
        &lt;/style&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;div class=&quot;container_12&quot;&gt;
            &lt;div class=&quot;grid_12&quot; id=&quot;cabecera&quot;&gt;
                Cabecera de Pagina (column12 = 940px)
                &lt;div class=&quot;grid_3 prefix_9&quot; id=&quot;buscador&quot;&gt;
                    &lt;p&gt;
                        Buscar: (column3 = 220px)
                        &lt;input type=&quot;text&quot; id=&quot;buscar&quot; name=&quot;buscar&quot; /&gt;
                        &lt;input type=&quot;submit&quot; id=&quot;busq&quot; name=&quot;busq&quot; value=&quot;Buscar&quot; /&gt;
                    &lt;/p&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
            &lt;div class=&quot;grid_12&quot; id=&quot;menu&quot;&gt;
               &lt;p&gt;Menu Horizontal (column12 = 940px)&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
            &lt;div class=&quot;grid_12&quot; id=&quot;contenido1&quot;&gt;
                &lt;div class=&quot;grid_12 alpha&quot; id=&quot;contenido2&quot;&gt;
                    &lt;p&gt;Contenido Presentacion Gif/Flash?etc (column12 = 940px)&lt;/p&gt;
                &lt;/div&gt;
                &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
                &lt;div class=&quot;grid_4 alpha&quot; id=&quot;banner1&quot;&gt;
                    &lt;p&gt;imagen y texto 1 (column8 = 620px)&lt;/p&gt;
                &lt;/div&gt;
                &lt;div class=&quot;grid_4&quot; id=&quot;banner2&quot;&gt;
                    &lt;p&gt;imagen y texto 2 (column4 = 300px)&lt;/p&gt;
                &lt;/div&gt;
                &lt;div class=&quot;grid_4 omega&quot; id=&quot;banner3&quot;&gt;
                    &lt;p&gt;imagen y texto 3 (column4 = 300px)&lt;/p&gt;
                &lt;/div&gt;
                &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
            &lt;div class=&quot;grid_12&quot; id=&quot;pie&quot;&gt;
                &lt;p&gt;Pie de Pagina (column12 = 940px)&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
        &lt;/div&gt;
    &lt;/body&gt;
&lt;/html&gt;
</pre>
<p>El codigo anterior mostrara un layout o maquetado como este: <a href="http://j053d.net/practicas/practica960.html">ejemplo del 960 Grid System</a></p>
<p>Como se aprecia, es un framework de CSS muy sencillo y con el cual se  puede tener en mente como estara conformada las capas del diseno de  pagina e ingresar dentro de estas organizacion de capas nuestro  contenido.</p>
<h2>Blueprint</h2>
<p><a href="http://j053d.net/blog/wp-content/uploads/blueprint_header_clean.png"><img class="aligncenter size-full wp-image-1064" title="blueprint_header_clean" src="http://j053d.net/blog/wp-content/uploads/blueprint_header_clean.png" alt="" width="412" height="100" /></a></p>
<p>Otro Framework para CSS que tocare en esta entrada es <a href="http://www.blueprintcss.org/">Blueprint</a> que cumple a mi parecer de igual manera como el 960 Grid System ya comentado anteriormente.</p>
<p>Para empezar a usar este framework, igual como el anterior, se descarga y se coloca su carpeta dentro de nuestro proyecto, realmente la unica carpeta de Blueprint que nos interesa anexar a nuestra estructura de proyecto es la carpeta blueprint dentro de nuestra carpeta css. Blueprint posee las siguientes carpetas:</p>
<ul>
<li>carpeta <strong>blueprint</strong> (el framework, la carpeta que anexaremos a nuestro proyecto, contiene dos carpetas y unos archivos css, la carpeta <strong>plugins</strong> y <strong>src</strong>.)</li>
<li>carpeta <strong>blueprint/plugins</strong> (contiene unos css y carpetas de iconos)</li>
<li>carpeta <strong>blueprint/plugins/fancy-type</strong> (posee un <em>screen.css</em> con formatos de texto a incorporar, tipografia adicional)</li>
<li>carpeta <strong>blueprint/plugins/buttons</strong> (una carpeta icons con 3 iconos y el archivo css para usarlos con el framework)</li>
<li>carpeta <strong>blueprint/plugins/link-icons</strong> (eso mismo, iconos para enlazar/linkear a direcciones o descargas de archivos en dicho formato, con ver los iconos se aprecia la idea)</li>
<li>carpeta <strong>blueprint/src</strong> (contiene todos los css de blueprint)</li>
<li>carpeta <strong>lib</strong> (las librerias en ruby para validaciones)</li>
<li>carpeta <strong>test </strong>(eso mismo, contiene pruebas, un index y una carpeta <strong>parts</strong> con otros ejemplos)</li>
<li>carpeta <strong>templates</strong> (solo tiene una carpeta <strong>psd</strong> con una plantilla la cuadricula de 24 columnas para photoshop)</li>
<li>unos cuantos archivos por fuera, licencia, cambios, sobre el autor, Readme, etc.</li>
</ul>
<pre class="brush: xml;">
&lt;head&gt;
  &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; media=&quot;print&quot; href=&quot;css/blueprint/reset.css&quot;&gt;
  &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css﻿&quot; media=&quot;screen, projection&quot; href=&quot;css/blueprint/screen.css&quot;&gt;
  &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; media=&quot;print&quot; href=&quot;css/blueprint/print.css&quot;&gt;
  &lt;!--[if IE]&gt;
  &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; media=&quot;screen, projection&quot; href=&quot;css/blueprint/ie.css&quot;&gt;
  &lt;![endif]--&gt;
&lt;/head&gt;
</pre>
<p>Blueprint tiene varios archivos css que tiene en comun 960 y otros que 960 no tiene. Igual que el framework anterior reset.css elimina regla css que por default el navegador tenga para nuestra pagina, print.css</p>
<ul>
<li><strong>reset.css</strong> (elimina toda regla css aplicada por default del navegador a nuestra pagina)</li>
<li><strong>print.css</strong> (obvio, formato css para impresiones)</li>
<li><strong>grid.css</strong> (el que contiene todo lo referente a los grid de 24 columnas, seria el 960.css del otro framework)</li>
<li><strong>ie.css</strong> (un css especifico para el caso del navegador Internet Explorer)</li>
<li><strong>typography.css</strong> (nos ofrece distintas tipografias, de las cuales se indica en breve, el 960 tiene uno llamado text.css pero el de blueprint es mas extenso.)</li>
<li><strong>forms.css</strong> (aplique del css para formularios, algo interesante, esto no lo tiene el 960GS)</li>
</ul>
<p>Los tipos de tipografias:</p>
<blockquote><p><strong>.small</strong>: Hace el elemento más pequeño.<br />
<strong>.large</strong>: Hace el elemento más grande.<br />
<strong>.hide</strong>: Oculta el elemento.<br />
<strong>.quiet</strong>: Atenua el color de la fuente.<br />
<strong>.loud</strong>: Hace que el texto tenga color negro.<br />
<strong>.highlight</strong>: Añade un fondo amarillo al tezto.<br />
<strong>.added</strong>: Añade un fondo verde al tezto.<br />
<strong>.removed</strong>: Añade un fondo rojo al tezto.<br />
<strong>.first</strong>: Elimina el margin/padding del lado izquierdo del elemento.<br />
<strong>.last</strong>: Elimina el margin/padding del lado derecho del elemento.<br />
<strong>.top</strong>: Elimina cualquier margin/padding superior del elemento.<br />
<strong>.bottom</strong>: Elimina cualquier margin/padding inferior del elemento.</p></blockquote>
<p>Sobre <em>forms.css</em> el cual esta para darle su estilo CSS a los elementos de un formulario los class de estos elementos deben tener .text (tamanio normal) o .title (tamanio grande) para que forms.css le aplique un CSS a estos. Para mostrar mensajes de error, seria:</p>
<blockquote><p><strong>div.error</strong>: Crear un cuadro de error (rojo).<br />
<strong>div.notice</strong>: Crear un cuadro de noticias (amarillo).<br />
<strong>div.success</strong>: Crear un cuadro de mensajes correctos (verde).</p></blockquote>
<p>La estructura de capas &lt;div&gt; no es muy diferente a la de 960GS, principalmente un container y dentro de este los <strong>span-xx</strong> donde <strong>xx</strong> es el numero de columnas en pixel (px), como los grid_xx del 960GS.</p>
<pre class="brush: xml;">
&lt;div class=&quot;container&quot;&gt;
   &lt;div class=&quot;span-24&quot;&gt;
      &lt;h1&gt;Cabecera&lt;/h1&gt;
   &lt;/div&gt;
   &lt;div class=&quot;span-4&quot;&gt;
      &lt;h2&gt;Menu&lt;/h2&gt;
   &lt;/div&gt;
   &lt;div class=&quot;span-16 last&quot;&gt;
      &lt;h3&gt;Contenido&lt;/h3&gt;
   &lt;/div&gt;
   &lt;div class=&quot;span-24&quot;&gt;
     &lt;p&gt;Pie de pagina&lt;/p&gt;
   &lt;/div&gt;
&lt;/div&gt;
</pre>
<p>Cuando en una misma linea se aplican varias capas, dentro del nombre de clase del ultimo</p>
<div>
<p>(de derecha a izquierda, el ultimo) debe colocarsele last</p>
<div class="span-xx last">
<p>esto es para eliminarle un borde un borde izquierdo que posee, los span-24 no lo necesitan porque abarcan todo el ancho de los 940px.</p>
<p>Igual como con 960GS, Blueprint tiene otras clases para ayudar a indicar en otras cosas la maquetacion de las capas&lt;div&gt;.</p>
<div>
<blockquote><p><strong>.append-x</strong>: Añade <strong>x</strong> número de columnas vacías despues de la columna.<br />
<strong>.prepend-x</strong>: Añade <strong>x</strong> número de columnas vacías antes de la columna.<br />
<strong>.push-x</strong>: Empuja una columna <strong>x</strong> columnas a la izquierda. Puede ser usada para intercambiar columnas.<br />
<strong>.pull-x</strong>: Tira una columna <strong>x</strong> columnas a la derecha. Puede ser usada para intercambiar columnas.<br />
<strong>.border</strong>: Aplica un borde en el lado derecho de la columna.<br />
<strong>.colborder</strong>: Añade una columna vacía, con un borde en el medio.<br />
<strong>.clear</strong>: Crea una columna debajo de una fila, sin importar el espacio.<br />
<strong>.showgrid</strong>: Añade un contendor o columna para ver la tabla.</p></blockquote>
<p>Donde <strong>x</strong> es un valor de 1 a 23 para <strong>append-x</strong> y <strong>prepend-x</strong> y de 1 a 24 para <strong>push-x</strong> y <strong>pull-x</strong>.</p>
<p>Nuevamente un ejemplo de maquetacion, quedara igual que el ejemplo del 960GS pero hacia Blueprint, icon los mismos colores para las capas, misma estructura pero apegado a su sintaxis:</p>
<pre class="brush: xml;">
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
    &lt;head&gt;
        &lt;meta http-equiv='Content-type' content='text/html; charset=UTF-8' /&gt;
        &lt;title&gt;Practica Blueprint&lt;/title&gt;
        &lt;link rel=&quot;STYLESHEET&quot; type=&quot;text/css&quot; href=&quot;css/blueprint/src/reset.css&quot;&gt;
        &lt;link rel=&quot;STYLESHEET&quot; type=&quot;text/css&quot; href=&quot;css/blueprint/src/grid.css&quot;&gt;
        &lt;style&gt;
            #cabecera, #pie { background-color: #2f309d; }
            /* #buscador { background-color: #3e1414; } */
            #menu { background-color: #143e14; }
            #contenido1 { background-color: #ddc3af; }
            #contenido2 { background-color: #464544; }
            #banner1, #banner2, #banner3 { background-color: #cc7b24; }
        &lt;/style&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;div class=&quot;container&quot;&gt;
            &lt;div class=&quot;span-24&quot; id=&quot;cabecera&quot;&gt;
                cabecera
                &lt;div class=&quot;span-4 prepend-18&quot; id=&quot;buscador&quot;&gt;
                    Buscar: &lt;input type=&quot;text&quot; id=&quot;buscar&quot; /&gt;
                    &lt;input type=&quot;submit&quot; id=&quot;busq&quot; value=&quot;Buscar&quot; /&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;span-24&quot; id=&quot;menu&quot;&gt;Menu&lt;/div&gt;
            &lt;div class=&quot;span-24&quot; id=&quot;contenido1&quot;&gt;
                &lt;div class=&quot;span-24&quot; id=&quot;contenido2&quot;&gt;
                    &lt;p&gt;Presentacion&lt;/p&gt;
                &lt;/div&gt;
                &lt;div class=&quot;span-8&quot; id=&quot;banner1&quot;&gt;
                    &lt;p&gt;imagen y texto 1&lt;/p&gt;
                &lt;/div&gt;
                &lt;div class=&quot;span-8&quot; id=&quot;banner2&quot;&gt;
                    &lt;p&gt;imagen y texto 2&lt;/p&gt;
                &lt;/div&gt;
                &lt;div class=&quot;span-8 last&quot; id=&quot;banner3&quot;&gt;
                    &lt;p&gt;imagen y texto 3&lt;/p&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;span-24&quot; id=&quot;pie&quot;&gt;
                Pie de pagina
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/body&gt;
&lt;/html&gt;
</pre>
<p>El codigo anterior mostrara un ejemplo como este: <a href="../../practicas/practica_Blueprint.html">ejemplo del Blueprint</a> (igual que el 960gs pero basado en blueprint).</p>
<p>Cuanto es el ancho en pixel de cada columna de esta cuadricula de 24 columnas?, esto seria 960/24=40 c/u. Cada columna es de 40px igual como el caso del 960GS.</p>
<h3>Conclusiones</h3>
<p>Cuando se habla de Frameworks sin importar de que tipo de Framework se hable, es de conocerse bien que hay personas que no los aprueban y otras si, los que los aprueban aprecian mas unos que otros. No voy a decir que 960GS es mejor que Blueprint o viceversa, cada uno tiene lo suyo y a cada cual le gusta o se inclinara mas por el que hayan escogido por sus validas razones.</p>
<p>Mis comparaciones sobre estos dos Frameworks de CSS:</p>
<table>
<tbody>
<tr>
<td><strong>960 Grid System</strong></td>
<td><strong>Blueprint</strong></td>
</tr>
<tr>
<td>
<ul>
<li> Tiene varios Templates para distintas aplicaciones de diseno grafico (photoshop, firework, illustrator, visio, etc.)</li>
<li>Tiene comprimido y no comprimido sus CSS.</li>
<li>Posee un sistema de cuadriculas de 12, 16 y 24 columnas.</li>
<li>Tiene un PDF para imprimir su cuadricula de 12, 16 y 24 columnas.</li>
<li>Tiene clases para crear espacios vacios a las capas &lt;div&gt;, restarle el margen derecho o izquierdo de 10px.</li>
<li>No tiene un CSS para Internet Explorer.</li>
<li>No tiene un CSS para printer ni formulario como Blueprint.</li>
</ul>
</td>
<td>
<ul>
<li> Tiene solo un Template para una sola aplicacion de diseno grafico (para photoshop unicamente).</li>
<li>Solo posee un sistema de cuadriculas de 24 columnas.</li>
<li>No trae documento para imprimir basado en su cuadricula de 24 columnas.</li>
<li>Su estructura de carpetas y archivos es mas amplia, iconos, archivos CSS para tipografia adicional y disenio para formulario para aplicar con el Framework.</li>
<li>Si tiene un CSS exclusivo para tratar al Internet Explorer.</li>
<li>Ademas de las clases para crear espacios vacios y restarle la sangria de derecha o izquierda, tiene tambien para aplicar bordes y agregar o mover <strong>X</strong> columnas a la capa.</li>
<li>Posee una validacion de los CSS que 960GS no posee.</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p>Podria decir que Blueprint posee mas tamanio en comparacion con 960 Grid System, aunque 960GS tiene mas templates y uno para imprimir y opcion de 3 cuadriculas de columnas (12, 16 y 24), Blueprint posee mas archivos CSS (printer.css, ie.css, forms.css, tipography.css) ademas de mas clases con respecto al posicionamiento de las capas &lt;div&gt;. Queda a gusto del usuario usar el Framework que mas le guste, en mi caso, necesitaba conocer y comparar entre los mas sonados en la gran nube para dar mi preferencia a uno de estos.</p>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/frameworks-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Buenas Charlas</title>
		<link>http://j053d.net/blog/buenas-charlas/</link>
		<comments>http://j053d.net/blog/buenas-charlas/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 13:47:11 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=1026</guid>
		<description><![CDATA[Habia escrito antes un post sobre buenas lecturas, ahora uno sobre buenas charlas, unas sobre del grupo PHPero Argentino, un grupo de personas que desde una lista de correo empezaron a planificar el reunirse, el verse las caras, un pequenio grupo de programadores de php que comparten cada de vez en cuando en esta lista [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fbuenas-charlas%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fbuenas-charlas%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://j053d.net/blog/wp-content/uploads/68442195.png"><img class="aligncenter size-full wp-image-1102" title="68442195" src="http://j053d.net/blog/wp-content/uploads/68442195.png" alt="" width="600" height="74" /></a></p>
<p>Habia escrito antes un post sobre <a href="http://j053d.net/blog/buenas-lecturas/">buenas lecturas</a>, ahora uno sobre buenas charlas, unas sobre del <a href="http://grupophp.com.ar/">grupo PHPero Argentino</a>, un grupo de personas que desde una lista de correo empezaron a planificar el reunirse, el verse las caras, un pequenio grupo de programadores de php que comparten cada de vez en cuando en <a href="http://groups.google.com/group/php-arg">esta lista de correo</a>. Luego de un par de reuniones en persona, decidieron dar un dia de charlas, algo informal nada extravagante, posiblemente buscando mas algo tipo desconferencias al estilo <a href="http://es.wikipedia.org/wiki/BarCamp">BarCamp</a> ademas de haber sido la 1era charla de otras que habran en el futuro.</p>
<p>El Sabado 6/3/10 se llevo a cabo la 1era charla al publico de este grupo de PHPeros argentinos, las fotos de ese dia pueden verse en su pagina de Facebook (<a href="http://www.facebook.com/event.php?eid=322731701122&amp;index=1#!/photo_search.php?oid=322731701122&amp;view=all">fotos de las charlas del 6/3/10</a>) y desde la web del grupo pueden verse los <a href="http://grupophp.com.ar/eventos/view/primeras-charlas">videos de cada una de las charlas</a>. Asistio mas gente de la que ellos mismos pensaban que iria, por lo que obviamente fue todo un exito rotundo.</p>
<p>Se rifaron unas remeras/camisetas/franelas o como le digan en tu pais del grupo PHP Argentina por medio de un sorteo basado en un randon que indicaba el nombre de alguno de los presentes, elaborado con el Framework Lithium, el mismo usado para la web del grupo. Luego de ver los videos, indico que todas las charlas estuvieron estupendas y que particularmente me interesaron principalmente 2 de estas. Ojala que prontamente pueda darse otra charla ya que quedo algo de material por fuera debido al tiempo y otros factores externos que lo imposibilitaron un poco, por lo que material hay sin lugar a duda para otra mas.</p>
<p>Es estupendo ver como este grupo de personas desean conocerse y reunirse e intentar armar algo para quienes deseen unirseles, lamentablemente este sentimiento de union no existe casi en otras partes, las comunidades phperas en muchas partes esta dispersa y no se tiene interes alguno en establecer reuniones como estas, lamentablemente.</p>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/buenas-charlas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>El disenio grafico en Linux</title>
		<link>http://j053d.net/blog/el-disenio-grafico-en-linux/</link>
		<comments>http://j053d.net/blog/el-disenio-grafico-en-linux/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 01:49:13 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[Copyleft]]></category>
		<category><![CDATA[Copyright]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Noticia]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=1007</guid>
		<description><![CDATA[Es de conocerse bien que el area del diseno grafico bajo Linux sigue crudo, quienes necesitan trabajar en esta area, mas hacia web, aunque si puede usarse Flash con Wine, es dificil que este pueda soportar las versiones mas recientes y con nuevas funcionalidades bajo Linux, ya que Adobe aun sigue sin mucho interes en [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fel-disenio-grafico-en-linux%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fel-disenio-grafico-en-linux%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Es de conocerse bien que el area del diseno grafico bajo Linux sigue crudo, quienes necesitan trabajar en esta area, mas hacia web, aunque si puede usarse Flash con Wine, es dificil que este pueda soportar las versiones mas recientes y con nuevas funcionalidades bajo Linux, ya que Adobe aun sigue sin mucho interes en sacar su combo de aplicaciones graficas algo mas nativas para los entornos GNU/Linux y las aplicaciones de diseno grafico actuales aun no estan a la altura de sus equivalentes bajo software propietario.</p>
<p><span id="more-1007"></span></p>
<p>Viendo un articulo sobre <a href="http://www.linuxuser.co.uk/news/redesigning-ubuntu-behind-the-scenes-on-10-04/">el rediseno de Ubuntu 10.04</a> que la interfaz grafica de este, esta creandose bajo sistemas Mac, disenadores graficos de Apple son los que bajo software propietario de esta plataforma estan armando la interfaz grafica de un sistema de software libre como lo es Ubuntu, todo debido a lo expuesto en el primer parrafo de este post.</p>
<p>Al menos yo nunca pensaria que se llegaria a ver que parte del desarrollo de Ubuntu (UI: interfaz de usuario) este siendo tratada bajo Apple por la gente de Canonical en el Reino Unido, solo falta que Microsoft tambien meta mano lo cual veria dificil pero uno nunca sabe, ya tenemos a Apple en ello.</p>
<p>Pero debe aceptarse, no creo que Stallman este de acuerdo obviamente, y no se que tan bajo licencias privativas estara sujeta la UI de Ubunu v10.04, preguntas sobre el porque de esto no hay, la respuesta es con lo que se comience este post, si existen herramientas graficas que de software libre que podrian servir pero sabemos bien que el mejor diseno grafico del mundo lo tienen los sistemas de Apple y parece que por el bien y en pos de mejorar al sistema visualmente en lo mejor posible, se ha dado el brazo a torcer en esta ocasion.</p>
<p><a href="http://j053d.net/blog/wp-content/uploads/Ubuntu-boot.png"><img class="aligncenter size-medium wp-image-1012" title="Ubuntu-boot" src="http://j053d.net/blog/wp-content/uploads/Ubuntu-boot-300x175.png" alt="" width="300" height="175" /></a></p>
<p><a href="http://j053d.net/blog/wp-content/uploads/Ubuntu-darktheme.png"><img class="aligncenter size-medium wp-image-1013" title="Ubuntu-darktheme" src="http://j053d.net/blog/wp-content/uploads/Ubuntu-darktheme-300x240.png" alt="" width="300" height="240" /></a></p>
<p>Sera una muy bonita interfaz de usuario, recordatorio a agradecer a Apple. Podria decirse <em>&#8220;miren las vueltas que da la vida&#8221;</em> pero pensandolo un poco en base a las herramientas existentes, era algo que podria verse venir, y aqui esta, ya es un hecho. Los que rechazan de lleno el software propietario posiblemente rechacen aun mas a Ubuntu 10.04.</p>
<p>Por otro lado y sin separarse mucho de esta problematica, es una lastima que Adobe haya entregado al mundo sus excelentes aplicaciones de disenio web para las plataformas Windows y Mac y excluya al entorno Linux lo cual hace que el area de disenio grafico tenga mas auge y campo en las plataformas de Microsoft y Apple.</p>
<p>Pero no todo es mal tiempo, nubes negras, lluvia y truenos, con <a href="http://www.gimp.org/">Gimp</a> y otros como <a href="http://www.inkscape.org">Inkscape</a> los equivalentes mas cerca de la altura de otros, bien puede sacarse buenos trabajos de disenio grafico. Asi como se toma/invierte el tiempo en tutoriales de photoshop, corel, etc, tambien igual para los mencionados bajo software libre.</p>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/el-disenio-grafico-en-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Charla de Computacion Forense</title>
		<link>http://j053d.net/blog/charla-de-computacion-forense/</link>
		<comments>http://j053d.net/blog/charla-de-computacion-forense/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 20:34:56 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[seguridad]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=944</guid>
		<description><![CDATA[El sabado 27.02.10 (ayer), se realizo la charla de Computacion Forense en ISEIT de lo cual hay algunas pocas fotos donde asistieron al rededor de unas 100 personas. Lamentablemente no hay Podcast ni streaming de ningun tipo, una charla presencial en el lugar, charla llevada por el Ing en computacion Juan Moreno. En el material [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fcharla-de-computacion-forense%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fcharla-de-computacion-forense%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><img class="alignleft size-full wp-image-947" title="huella" src="http://j053d.net/blog/wp-content/uploads/huella.jpg" alt="" width="99" height="114" />El sabado 27.02.10 (ayer), se realizo la charla de <a href="http://apostols.net/charlas/ComputacionForense/">Computacion Forense</a> en <a href="http://ve.iseit.net/Noticias/2010/ComputacionForense/">ISEIT</a> de lo cual hay <a href="http://www.flickr.com/photos/tatadbb/4394627501/">algunas pocas fotos</a> donde asistieron al rededor de unas 100 personas. Lamentablemente no hay Podcast ni streaming de ningun tipo, una charla presencial en el lugar, charla llevada por el Ing en computacion Juan Moreno. En el material de presentacion se indican algunos software sobre recuperacion de datos en software libre y algunos links de material de lectura sobre computacion forense. Hoy en dia no solo en recuperacion de datos sino en evitar la adquisicion ilicita de informacion, existen medios tan sencillos como <a href="http://j053d.net/img/jpg/image001.jpg">este</a> que son un problema.</p>
<p><span id="more-944"></span></p>
<p>El rastro depende de que tan especializada sea la persona, siendo dificil ingresar y ya adentro esa persona tiene como siguiente paso borrar los logs que informen de las operaciones hechas, ademas claro que no establecen conexion directa desde su ip, sino por medio de la conexion entre redes que ayuden a no identificar la ip de origen, mediante el enlace por medio de equipos de confianza de la red perimetral. Algunos accesos indebidos son debido a pereza por parte del administrador de no estar al dia con los parches de seguridad y los que no han sido detectados de conocimiento publico, ademas de mala configuracion de firewall dejando puertos abiertos o permitiendo el uso de software de terceros no autentificados que pudiesen abrir algun puerto o uso de uno de uso comun.</p>
<p>Sobre la recuperacion de datos, no solo por siniestros planificados por algun empleado despedido o algun curioso con exito en su curiosidad, sino por cualquier problema que haga caer a un servidor (problema electrico, etc). Por eso tan importante los backups ya que de lo contrario, es necesario recurrir a softwares mas especializados y en ocasiones el danio es tan grabe (a nivel de hardware y no logico), que ningun software de recuperacion de data lo puede recuperar, pero salvar un X% es mejor que nada. Es por eso tan importante hacer los backups e imagenes de disco y chequeos de los logs del sistema periodicamente para estar tranquilos.</p>
<p>Todo esto me recuerda a un viejo articulo del <a href="http://www.washingtonpost.com/wp-dyn/content/article/2006/01/26/AR2006012601990.html">The Washington Post </a>a comienzos del 2006 donde en ese entonces (administracion de Bush), visitaba las instalaciones de la <a href="http://www.nsa.gov/">NSA</a> (Agencia de Seguridad Nacional) de los EEUU en Fort Meade en donde en la toma de foto para el articulo puede verse al fondo en la gran pantalla algunas de las herramientas usadas por hackers y (obviamente como se aprecia en dicha foto) tambien por la NSA.</p>
<p><a href="http://j053d.net/blog/wp-content/uploads/washpostnsaqh7.jpg"></a><a href="http://j053d.net/blog/wp-content/uploads/washpostnsaqh7.jpg"><img class="aligncenter size-full wp-image-961" title="BUSH DOMESTIC SPYING" src="http://j053d.net/blog/wp-content/uploads/washpostnsaqh7.jpg" alt="" width="600" height="320" /></a><br />
<a href="http://es.wikipedia.org/wiki/Nessus">Nessus</a>, <a href="http://blog.metasploit.com/">Metasploit</a>, <a href="http://es.wikipedia.org/wiki/Nmap">Nmap</a> este ultimo usado incluso en la ultima pelicula de Matrix. En la foto tenemos al General Alexander Keith, Director de la NSA y al lado del Presidente y  quien lo acompania, William Marshall Director del Centro de Operaciones  de la NSA, y no se perdio tiempo con esta foto para darle <a href="http://nmap.org/images/nsadware.jpg">un toque de humor</a>.</p>
<p>Como decia, hasta en la ultima pelicula de Matrix (Matrix Reload) puede verse a Trinity desactivando el suministro electrico de varias manzanas de la ciudad mediante Nmap.</p>
<p style="text-align: center;"><a href="http://j053d.net/blog/wp-content/uploads/trinity-nmapscreen-hd-crop-1200x728.jpg"><img class="aligncenter size-full wp-image-962" title="trinity-nmapscreen-hd-crop-1200x728" src="http://j053d.net/blog/wp-content/uploads/trinity-nmapscreen-hd-crop-1200x728.jpg" alt="" width="504" height="306" /></a></p>
<p style="text-align: center;"><a href="http://j053d.net/blog/wp-content/uploads/reloadnmapfdy5.jpg"></a><a href="http://j053d.net/blog/wp-content/uploads/reloadnmapfdy5.jpg"><img class="aligncenter size-full wp-image-963" title="reloadnmapfdy5" src="http://j053d.net/blog/wp-content/uploads/reloadnmapfdy5.jpg" alt="" width="614" height="260" /></a></p>
<p style="text-align: center;"><a href="http://j053d.net/blog/wp-content/uploads/reloadnmapfdy51.jpg"><img class="aligncenter size-full wp-image-964" title="reloadnmapfdy5" src="http://j053d.net/blog/wp-content/uploads/reloadnmapfdy51.jpg" alt="" width="614" height="260" /></a></p>
<p style="text-align: left;"><a href="http://j053d.net/blog/wp-content/uploads/dvdrip1cur2.png"><img class="aligncenter size-full wp-image-965" title="dvdrip1cur2" src="http://j053d.net/blog/wp-content/uploads/dvdrip1cur2.png" alt="" width="570" height="258" /></a></p>
<p style="text-align: left;">Mucha ciencia ficcion, pero Nmap si existe, no se documentaron tan mal los creadores de Matrix Reload. Particularmente fuera de actividades hacktivistas, lo cual no me llama mucho la atencion como aplique o dedique a dichas actividades, los administradores de servidores deben conocer un poco o de lleno de ser posible estas actividades para saberse defender de las mismas, asi como un detective debe pensar como el asesino y un medico debe estudiar bien el cancer para una posible cura, creo que los buenos administradores deben ser tan buenos hackers como estos para anticiparse, porque solo un clavo saca a otro clavo, muchos especialistas en seguridad informatica han pasado por ese sucio camino para llegar a donde se encuentran ahora, con una reputacion a cuestas.</p>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/charla-de-computacion-forense/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Control de Versiones del Software</title>
		<link>http://j053d.net/blog/control-de-versiones-del-software/</link>
		<comments>http://j053d.net/blog/control-de-versiones-del-software/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 00:04:12 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=789</guid>
		<description><![CDATA[Si trabajas en desarrollo de software sea tu proyecto o eres participe de uno, bien sabes que tanto todo el proyecto como los paquetes que lo conforman estan sujetos a la referencia por algun nombre o numeracion que indica si es o no estable, e incluso estar etiquetado por una numeracion que indica sus anexos [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fcontrol-de-versiones-del-software%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fcontrol-de-versiones-del-software%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Si trabajas en desarrollo de software sea tu proyecto o eres participe de uno, bien sabes que tanto todo el proyecto como los paquetes que lo conforman estan sujetos a la referencia por algun nombre o numeracion que indica si es o no estable, e incluso estar etiquetado por una numeracion que indica sus anexos (paquetes, caracteristicas funcionales y correccion de errores).</p>
<p>Yo en lo particular he llegado a indicar la version de cualquier cosa que he creado para algunos clientes &#8220;al ojo&#8221; a como yo he considerado que ha avanzado/evolucionado y que tan madurado/preparado esta. Esto me ha llevado a volver a los origenes que me ayude a confirmarme que tan mal o bien lo he aplicado, por lo que esto trata de las busqueda y conversaciones que he tenido con algunos desarrolladores de software para indagar un poco mas, sobre el control de las versiones de software.</p>
<p><span id="more-789"></span>En muchos software veremos que en su descripcion (about/acerca de&#8230;) nos indicara su version, bien sea bajo un nombre, una numeracion-etiqueta que hace referencia a ser un paquete de determinado status o apuntado a determinada plataforma y en mas detalle a su lado, posiblemente entre parentesis ( ) la numeracion que indica que tanto ha crecido y ha mejorado y que tan estable es.</p>
<p><a href="http://j053d.net/blog/wp-content/uploads/MozillaFirefoxVersion.png"><img class="aligncenter size-full wp-image-790" title="MozillaFirefoxVersion" src="http://j053d.net/blog/wp-content/uploads/MozillaFirefoxVersion.png" alt="" width="300" height="455" /></a></p>
<p style="text-align: center;"><a href="http://j053d.net/blog/wp-content/uploads/versiones.png"><img class="aligncenter size-large wp-image-791" title="versiones" src="http://j053d.net/blog/wp-content/uploads/versiones-1024x600.png" alt="" width="574" height="336" /></a></p>
<p>Las versiones de software nos informan mucho sobre su contexto, como comentaba, que tan empaquetado esta, anexos de funciones y correcciones, si es <em>release</em> o no e incluso idioma del paquete (es-AR, es-ES, es-VE, es-CO), para que plataforma esta hecho (solo algunos casos) y en otros casos, quienes son sus mantenedores por medio de una firma digital que confirma que es de una casa de software, organizacion o grupo de desarrolladores garantizando que no es una version de terceros que se haga pasar por la original. Los sistemas operativos pueden advertir ante la instalacion si la firma del software ha pasado o no su legitimidad como tal.</p>
<p><a href="http://www.wikipedia.org/">Wikipedia</a> nos ofrece una documentacion muy bien explicada sobre <a href="http://es.wikipedia.org/wiki/Fases_del_desarrollo_de_software">las fases del desarrollo de software</a> que expone lo que todos conocemos bien (versiones Alfa y Beta) y en algunos casos Gamma, Delta y Omega.  Una fase inicial del proyecto podria comenzarse como Alfa y al evolucionar un poco mas pasar a Beta, para sus momentos de vida aun inestable pero funcional.</p>
<p>Cuando hacemos un programa (aplicacion o servicio) siempre lo probamos, tratamos de explotarlo, de hacerlo fallar, de ser ocurrentes <em>&#8216;como si realmente quisiecemos que falle&#8217;</em> tratando de agregar campos o manipulaciones no tan acorde a como deberia ser, esto porque <em>-cada cabeza es un mundo-</em> y porque muchas personas <em>son muy ocurrentes</em>. Incluso el que sea un sistema <em>anti-idiotas</em>, <em>anti-tercos</em> o <em>anti-saboteadores</em>, ofrecerle mas de una via/camino a llegar a un modulo, tips! de ayuda para guiarlo y sepa para que es ese link, boton o ventana en la que se encuentra. Validar los campos necesarios bien sea por descuido o intencion del usuario final de no haberlo hecho correctamente, confirmaciones de operaciones contra la base de datos, ya que si el usuario sin querer toca la tecla incorrecta (boton borrar, por ejemplo) podria borrar accidentalmente el registro de cliente que tiene en frente o desear crear un registro ya existente (un addnew, no un update), por lo que como sabemos bien, tenemos muchos procesos y gestiones delicadas que deben validarse bien y confirmacion por parte del usuario que es eso lo que desea hacer realmente.</p>
<p>Tambien tenemos la vivencia de ofrecer esa version Beta para que nos las prueben, en mi caso, directamente el cliente, esperando que esa(s) persona(s) detecte algo que hayamos pasado por alto, alguna ocurrencia de manejo &#8220;incluso como debe ser&#8221; que se nos olvido validar, todos sin excepcion, hemos corregido cosas que nos ha avisado algun cliente, no solo errores, sino cosas que funcionamente no dan error a nivel de codigo pero si a nivel de salida/respuesta de los datos. Uno de mis programas mas recientes, calcula la edad en base a la fecha (antes no lo hacia), pero miraba el anio y el mes pero no el dia, haciendo que la persona por ejemplo se indicara como edad 33 cuando aun tenia 32, algo que ya esta corregido y fue detectado por el usuario que lo usa, mas no por mi en su momento.</p>
<p>Como habia comentado anteriormente, algunos developer tambien identifican la version del paquete bajo un nombre, por ejemplo<em> 2.6.1+lenny5</em> y <em>2.6.1+hardy5</em> siendo <em>Lenny</em> para <a href="http://www.debian.org/index.es.html">Debian</a> y <em>Hardy</em> para <a href="http://www.ubuntu.com/">Ubuntu</a> y mas nomenclaturas para estos u otras distribuciones <a href="http://es.wikipedia.org/wiki/GNU/Linux">GNU/Linux</a> identifica al paquete y a que sistema va dirigido/desarrollado (empaquetado).</p>
<p>De todo esto, esta la siguiente pregunta&#8230; el como saber cuando a un software le toca ascender de version y que tanto, como saber que estando en la v1.2 la siguiente sera v1.3 o inmediatamente 2.0, conocer el significado de la numeracion (v2.8.3 -&gt; xx.yy.zz) ofrece una idea mas amplia que una unica palabra como <em>Beta</em> o <em>nombresoftware version Gold</em>.</p>
<p>Para tener la opinion de desarrolladores de grandes proyectos, decidi pasar por los canalres IRC de #canaima, irc sobre el desarrollo de la <a href="http://canaima.softwarelibre.gob.ve">distribucion GNU/Linux Venezolana de nombre &#8220;Canaima&#8221;</a> donde hable con <strong>j0n4th4N</strong> y el irc #kumbiaphp (<a href="http://www.kumbiaphp.com">Framework para PHP</a>) donde converse con <strong>joanhey</strong> uno de sus desarrolladores.</p>
<p>Que significa exactamente la numeracion de una version de software version xx.yy.zz (algunos proyectos incluso tienen mas de 3 secciones de numeraciones). La primera &#8220;xx&#8221; se incrementa cuando es un nuevo paquete, si las modificaciones de la version del software es alta, un software de v1.0 podria saltar a v2.0 sin problemas. La segunda &#8220;yy&#8221; se incrementa cuando se agregan nuevas caracteristicas, y la tercera &#8220;zz&#8221; es referente a correcion de errores.</p>
<p>El significado de estos tres pares en la numeracion de un software o paquete es aceptable, se considera que es correcto. Luego caigo en saber -exactamente- cuando saber, cuanto va a subir la numeracion (creo que nunca ha pasado que disminuya) al menos yo jamas lo he visto. Como saber que de la v1.0 vendria la v1.5 o v2.1 (viendo aqui que nos hemos saltado varias numeraciones). Las versiones no siempre pasan a la siguiente numeracion consecutiva, vemos que pueden saltar inmediatamente a otra numeracion posterior mas alta.</p>
<p>Pensar que por ejemplo que decir la v3.5.37 seria 3 nuevos paquetes, 5 nuevas caracteristicas y 37 errores corregidos, podria no ser realmente cierto, porque en un software (sobre todo de gran tamanio, un proyecto grande de desarrollo) podrian corregirse 230 errores, pero no por eso la version sera v3.5.230, como pensar que 53 nuevas caracteristicas no indica que el paquete tendra como numeracion v3.53.230 y todavia quedaria ver exactamente que entendemos como &#8220;nuevos paquetes&#8221;, esto no es una numeracion decimal que redondea del 0 al 9 para subir al siguiente numero la numeracion que se antepone a esta.</p>
<p>Se considera que realmente no hay una regla que determine exactamente cual es la siguiente numeracion; como esta numeracion la inicia y la evoluciona una persona o un grupo de personas (desarrolladores) ya que no creo que exista una formula matematica que sea la que lo determine <strong><em>-que de haber, por favor que se me indique en un comentario-</em></strong> el incremento de estas numeraciones basado en el significado de cada una, podria incrementarse <em>-al ojo-</em> del desarrollador.  No es que el programador parado en su v1.0 piense que ahora sera v5.0 solo por gusto, algunos desarrolladores consideran que una version de su software v0.4.37 que luego paso a v0.5 ya podia ser v1.0 estando aun en v0.4.37, asi lo indico <em>joanhey</em> al ejemplificarse en kumbiaphp-framework, del cual el es desarrollador.</p>
<p>Tambien tenemos el tema de que las versiones <em>impares</em> son las de desarrollo (no terminadas) y las versiones <em>pares</em> son las estables (ya probadas).</p>
<p>Sobre que tan evolucionado esta un software o un paquete que lo complementa, es una tematica interesante que podria profundiarse un poco mas, con la ayuda de quien desee dar su comentario para confirmar o corregir este tema que he expuesto, ya que ayudaria a enriquecerlo y depurarlo para que lo que quede, dar por asentado que es asi.</p>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/control-de-versiones-del-software/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Buenas lecturas</title>
		<link>http://j053d.net/blog/buenas-lecturas/</link>
		<comments>http://j053d.net/blog/buenas-lecturas/#comments</comments>
		<pubDate>Sat, 20 Feb 2010 01:34:49 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[POO]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[mat.didactico]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=775</guid>
		<description><![CDATA[Para quienes buscan un buen material de lectura apuntado a la programacion PHP &#8211; POO el libro POO para PHP5 de Enrique Place del cual puede leerse los primeros capitulos, ofrece buena informacion del tema. El costo (para la fecha de este post) es de 60 USD de todo el libro lo cual incluye el [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fbuenas-lecturas%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fbuenas-lecturas%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://surforce.com/#"><img class="alignleft" title="libro" src="http://surforce.com/img/libro.gif" alt="" width="178" height="200" /></a>Para quienes buscan un buen material de lectura apuntado a la programacion PHP &#8211; POO <a href="http://surforce.com/productos.php">el libro POO para PHP5</a> de <a href="http://phpsenior.blogspot.com/">Enrique Place </a>del cual puede leerse los primeros capitulos, ofrece buena informacion del tema. El costo (para la fecha de este post) es de 60 USD de todo el libro lo cual incluye el valor agregado de asistencia/soporte/ayuda de este material por unos foros y correos hacia el autor para aclarar dudas y cualquier otra situacion a solventar, es decir, es un curso con su material didactico.</p>
<p>En su lectura se explica muy bien y de una forma sencilla lo que son los objetos y su programacion, principios como el &#8220;leer el manual&#8221;, &#8220;no repetirse (codigo)&#8221;, el &#8220;mantenerlo simple&#8221;, haciendo el recordatorio de que lo importante no es el codigo principalmente, sino detectar los objetos dentro del contexto, donde una vez que se tenga claro el diseno conceptual es que se pasara a la codificacion.</p>
<p>Marca las diferencias de la Programacion Estructurada vs Programacion Orientada a Objetos (POO), comprension detallada del diseno <a href="http://es.wikipedia.org/wiki/UML">UML</a>, fortaleciendo la etapa de diseno para evitar a futuro lamentarnos de una mala base del proyecto, evitar el sobre-diseno y la sobre-ingenieria, evitar lo complejo, apegarse a lo sencillo lo cual es mas escalable y de mejor mantenimiento para cuando cresca, entendimiento de clases, sobre lo que son, lo que deberian ver y conocer y lo que no deberian hacer y alcance de accesos publicos y privados de esta de una forma correcta.</p>
<p>Sencillamente una lectura que no deberia dejarse pasar, si alguna vez compras un libro (pdf) por internet, este material es una buena eleccion de compra, su contenido y su valor agregado, asi lo indican. Yo por mi parte, en lo que pueda me apunto.</p>
<p><span id="more-775"></span></p>
<p>De los dos primeros capitulos no esta mal el ejemplo de CalcularEdad en base a la fecha, segui la practica pero no tan exacta al comparar, paginas 60-61 del libro.</p>
<pre class="brush: php;">
    class Persona
    {
        private $fechaNac;

        public function __construct($fechaNac)
        {
            $this-&gt;_fechaNac = $fechaNac;
        }
        public function decirEdad()
        {
            return $this-&gt;_calcularEdad();
        }
        private function _calcularEdad()
        {
            $diaActual = date(j);
            $mesActual = date(n);
            $anioActual = date(Y);

            list($dia, $mes, $anio) = explode(&quot;/&quot;, $this-&gt;_fechaNac);

            // si el mes es el mismo pero el dia inferior aun
            // no ha cumplido anios, le quitamos un anio al actual

            if (($mes == $mesActual) &amp;&amp; ($dia &gt; $diaActual)) {
                $anioActual = $anioActual - 1;
            }

            // si el mes es superior al actual tampoco habra
            // cumplido el anios, por eso le quitamos aun anio al actual
            if ($mes &gt; $mesActual){
                $anioActual = $anioActual - 1;
            }

            // ya no habria mas condiciones, ahora simplemente
            // restamos los anios y mostramos el resultado como su edad
            $edad = $anioActual - $anio;

            return $edad;
        }
    }

     // la salida:
    $persona = new Persona('8/3/1977');
    echo $persona-&gt;decirEdad();
</pre>
<p>Sobre otras muy interesantes lecturas se encuentra recopilado en la seccion <a href="../de-interes/">de.interes</a> de este  sitio, si alguna de esas otras lecturas te parece interesante, no olvides agradecerselo a su autor con algun comentario en su sitio, cada articulo esta referenciado a la web de su autor.</p>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/buenas-lecturas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>KumbiaPHP Framework</title>
		<link>http://j053d.net/blog/kumbiaphp-framework/</link>
		<comments>http://j053d.net/blog/kumbiaphp-framework/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 20:27:42 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Frameworks PHP]]></category>
		<category><![CDATA[KumbiaPHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=658</guid>
		<description><![CDATA[Hace un tiempo que estoy viendo que Framework usar, donde llegue a un punto que tenia en la mira a Symfony y a KumbiaPHP, en vista de que muchos otros Framework tienen una curva de aprendizaje mucho mas empinada. Anticipo que me he direccionado a conocer a Kumbia ya que me ha gustado su perfil [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fkumbiaphp-framework%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fkumbiaphp-framework%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p style="text-align: center;"><a href="http://j053d.net/blog/wp-content/uploads/logokumbiaphpfw.jpg"></a><a href="http://j053d.net/blog/wp-content/uploads/grandekumbiaphp.png"><img class="size-full wp-image-1300  aligncenter" title="grandekumbiaphp" src="http://j053d.net/blog/wp-content/uploads/grandekumbiaphp.png" alt="" width="400" height="109" /></a></p>
<p style="text-align: center;">Hace un tiempo que estoy viendo que Framework usar, donde llegue a un punto que tenia en la mira a <a href="http://www.symfony-project.org/">Symfony</a> y a <a href="http://www.kumbiaphp.com/blog/">KumbiaPHP</a>, en vista de que muchos otros Framework tienen una curva de aprendizaje mucho mas empinada. Anticipo que me he direccionado a conocer a Kumbia ya que me ha gustado su perfil (que no es muy distinto a otros FW pero que realmente existen cosas que los diferencian) y siempre entre gustos y colores cada quien se inclinara por el que mas le resulte a sus necesidades.</p>
<p><span id="more-658"></span></p>
<p>Cito parte de la documentacion de <a href="http://www.kumbiaphp.com/blog/">Kumbia PHP Framework</a>, (en este post) documentacion en PDF que puede descargarse de <a href="http://sourceforge.net/projects/kumbia/files/Documentaci_n/Libro%20Kumbia%20versi_n%200.5/Manual_Kumbia_PHP_Framework_v0-5.pdf/download?use_mirror=hivelocity">aqui</a>, ya existe la <a href="http://wiki.kumbiaphp.com/KumbiaPHP_Framework_Versi%C3%B3n_1.0_Spirit">version 1.0 spirit</a>, pero la documentacion de la v0.5 posee mucha mas informacion que no esta presente en el <a href="http://wiki.kumbiaphp.com/Principal">wiki oficial</a>.</p>
<div id="__ss_951259" style="width: 425px; text-align: left;"><a style="font: 14px Helvetica,Arial,Sans-serif; display: block; margin: 12px 0 3px 0; text-decoration: underline;" title="Capacitacion Kumbia PHP Framework" href="http://www.slideshare.net/cachi/capacitacion-kumbia-php-frameworl-presentation">Capacitacion Kumbia PHP Framework</a><object style="margin: 0px;" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=capacitacion-1232899199224093-2&amp;rel=0&amp;stripped_title=capacitacion-kumbia-php-frameworl-presentation" /><param name="allowfullscreen" value="true" /><embed style="margin: 0px;" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=capacitacion-1232899199224093-2&amp;rel=0&amp;stripped_title=capacitacion-kumbia-php-frameworl-presentation" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration: underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration: underline;" href="http://www.slideshare.net/cachi">cachi</a>.</div>
</div>
<p>Citado del Libro de Kumbia:</p>
<blockquote><p>Anteriormente las aplicaciones eran bolas de código, mezclaban SQL, CSS, HTML, PHP, JavaScript, etc. Al menos los que buscábamos un orden mínimo conseguíamos separar algunas cosas; pero el SQL y el PHP siempre iban ligados así que hacer cambios en el modelo relacional podría ser fatal ya que dañaba muchas partes de la aplicación que ya estaban probadas.</p></blockquote>
<p>Antes que nada, la necesidad de un Framework para aplicaciones bajo ambiente web ofrecen:</p>
<ul>
<li>El definir una filosofia de trabajo.</li>
<li>El que proporciona librerias y funciones, lo cual le hacen la vida mas facil al programador.</li>
<li>Ahorra trabajo/tiempo.</li>
<li>El que produce aplicaciones mas faciles de mantener.</li>
<li>Evita el que exista codigo duplicado (en cambio se reutiliza).</li>
<li>Permiten crear aplicaciones Multi-Capa. (separar el modelo de negocio, la logica de negocio y la vista del mismo).</li>
</ul>
<p>Kumbia ofrece:</p>
<ul>
<li>Implementacion de los mejores patrones de programacion (Singlenton, MVC) orientados a ambiente web.</li>
<li>Fomenta la utilizacion de caracteristicas web 2.0</li>
<li>Hace la mayor parte del trabajo y se ocupa de los &#8220;detalles&#8221; de forma interna.</li>
<li>El mantenimiento de la aplicacion es mas facil.</li>
<li>Es software libre.</li>
<li>Es facil de instalar/configurar y de aprender y su documentacion esta &#8216;nativamente&#8217; en espanol.</li>
<li>Sistema de Layout, Plantillas, Partials.</li>
<li>Administracion de cache.</li>
<li>Scaffolding avanzado.</li>
<li>ORM, Modelo de Objeto-Relacional y separacion MVC.</li>
<li>Soporte para AJAX/JQuery.</li>
<li>Generacion de Formularios (y validacion de estos) de forma rapida y muy completos en su funcionalidad.</li>
<li>Componentes Graficos.</li>
<li>Seguridad</li>
</ul>
<p>Exceptuando paginas web sencillas de pocas paginas donde a duras penas existe una base de datos de por medio y en donde una representacion de una empresa u organizacion solo desean tener un espacio en la nube que muestre su catalogo de productos, mision, vision, contactos, sucursales, etc.. no es necesario el uso de un framework, seria invertir una enorme herramienta para algo que no la requiere realmente (a no ser que esa web evolucione en algo mas mabicioso).  Pero para el caso de aplicaciones (no web, sino aplicaciones web) el uso de un framework ayuda bastante, es algo acertadamente a la medida para ese tipo de proyectos.</p>
<p>Kumbia posee un modelo de objetos el cual esta basado en 3 diferentes aspectos:</p>
<ul>
<li>Abstraccion de la base de datos</li>
<li>Mapeo Objeto-Relacion (ORM)</li>
<li>Patron MVC (Modelo, Vista, Controlador)</li>
</ul>
<p>Gracias a los Helpers y patrones como <a href="http://es.wikipedia.org/wiki/ActiveRecord">ActiveRecord</a>, Kumbia evita el uso de lenguajes SQL o HTML lo menor posible ya que internamente hace esto por nosotros, logrando asi codigo mas claro, natural y con menores errores, al igual que mas seguro. Tambien por ser un Framework en espanol, su documentacion, mensajes de error, archivos de configuracion y su comunidad, todo bajo el habla castellana, por lo que no se presenta el caso de entender a medias otros framework o no poder pedir ayuda bajo otro idioma.</p>
<p>Ventajas del Active Record:</p>
<ul>
<li> Se trabajan las entidades del Modelo más naturalmente como objetos.</li>
<li>Las acciones como Insertar, Consultar, Actualizar, Borrar, etc. de una  entidad del<br />
Modelo están encapsuladas así que se reduce el código y se hace más  fácil de<br />
mantener.</li>
<li>Código más fácil de entender y mantener.</li>
<li>Reducción del uso del SQL en un 80%, con lo que se logra un alto  porcentaje de<br />
independencia del motor de base de datos.</li>
<li>Menos “detalles” más practicidad y utilidad</li>
<li>ActiveRecord protege en un gran porcentaje de ataques de SQL inyection  que<br />
puedan llegar a sufrir tus aplicaciones, escapando caracteres que  puedan facilitar<br />
estos ataques.</li>
</ul>
<p>Todo Framework hoy en dia se basa en el patron MVC debido a que ofrece:</p>
<ul>
<li>Identificar mas facilmente en que capa se esta produciendo un problema con solo saber su naturaleza.</li>
<li>El poder crear varias presentaciones sin necesidad de escribir varias veces la misma logica de aplicacion. Puede tenerse una presentacion para web, otra para disposivitos moviles o de impresion, etc.</li>
<li>Cada capa funciona independientemente y cualquier cambio centraliza el efecto sobre las demas, lo cual hace que una modificacion en un componente realizara bien las tareas en cualquier parte de la aplicacion.</li>
</ul>
<p>Kumbia posee una doble capa de abstraccion de BD, la 1era mantiene un acceso uniforme que evita reescribir codigo en el caso de cambiar el motor de BD, cursores y streams de conexion son encapsulados en objetos evitando escribir codigo repetitivo. La 2da es el ActiveRecord el cual permite mapear las relaciones de la BD a objetos (ORM), mapeo que permite el facil acceso y modificacion de las relaciones de la BD.</p>
<p>En lo que a mi concierne vale la pena probarlo, ya que he sabido de personas que han usado symfony y posteriormente han preferido kumbia, su estructura organizacional lo muestra como un framework apuntado a ser liviano, rapido y potente.. y sobre todo muy entendible, su curva de aprendizaje es menos pronunciada que las de otros framework.</p>
<p>Tambien es maravilloso ver como este Framework ha evolucionado siendo propiamente de habla hispana, un framework del cual no esta detras una compania, es netamente algo de la comunidad, todo el que desee sumarse al uso y su desarrollo tiene las puertas abiertas.</p>
<p>Esta el <a href="http://wiki.kumbiaphp.com/P%C3%A1gina_Principal">Wiki</a> aunque ya tienen otro que es <a href="http://wiki.kumbiaphp.com/Principal">este</a>, el <a href="http://www.kumbiaphp.com/blog/">blog</a>, el <a href="http://www.kumbiaphp.com/foro/">foro</a>, la <a href="http://groups.google.com/group/kumbia/">listmail</a> y el <a href="http://www.kumbiaphp.com/blog/irc/">irc</a>.</p>
<div id="__ss_1500947" style="width: 425px; text-align: left;"><a style="font: 14px Helvetica,Arial,Sans-serif; display: block; margin: 12px 0 3px 0; text-decoration: underline;" title="Estructura de Directorio de KumbiaPHP Framework versión 1.0 Spirit" href="http://www.slideshare.net/cachi/estructura-de-directorio-de-kumbiaphp-framework-versin-10-spirit">Estructura de Directorio de KumbiaPHP Framework versión 1.0 Spirit</a><object style="margin: 0px;" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=estructuradirectoriokumbiaphpframeworkspirit-090528085437-phpapp02&amp;rel=0&amp;stripped_title=estructura-de-directorio-de-kumbiaphp-framework-versin-10-spirit" /><param name="allowfullscreen" value="true" /><embed style="margin: 0px;" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=estructuradirectoriokumbiaphpframeworkspirit-090528085437-phpapp02&amp;rel=0&amp;stripped_title=estructura-de-directorio-de-kumbiaphp-framework-versin-10-spirit" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration: underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration: underline;" href="http://www.slideshare.net/cachi">cachi</a>.</div>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;"><a href="http://www.kumbiaphp.com/blog/2010/02/28/kumbiaphp-podcast-01-caracteristicas-y-experiencias/">Podcast</a> de KumbiaPHP Framework.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/kumbiaphp-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Entendiendo un poco mas las SQL con el Delfin</title>
		<link>http://j053d.net/blog/entendiendo-un-poco-mas-las-sql-en-el-delfin/</link>
		<comments>http://j053d.net/blog/entendiendo-un-poco-mas-las-sql-en-el-delfin/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 16:11:22 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[BBDD]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=649</guid>
		<description><![CDATA[Existen muchas funciones y demas palabras reservadas por la sintaxis del lenguaje, en este caso SQL, donde estaba haciendo unas tablas hasta el punto en el que me tranque por unos minutos en una.  Una tabla sin mucha variedad de tipos de campo pero si con muchos campos (e incluso, la tabla mas importante de [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fentendiendo-un-poco-mas-las-sql-en-el-delfin%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fentendiendo-un-poco-mas-las-sql-en-el-delfin%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Existen muchas funciones y demas palabras reservadas por la sintaxis del lenguaje, en este caso SQL, donde estaba haciendo unas tablas hasta el punto en el que me tranque por unos minutos en una.  Una tabla sin mucha variedad de tipos de campo pero si con muchos campos (e incluso, la tabla mas importante de toda la base de datos).  Surgia un ERROR 1064 (42000) que indicaba un problema con mi sintaxis de CREATE TABLE, revisando, todo parecia estar bien con respecto a la escritura de la SQL, pero MySQL seguia indicando que algo andaba mal.</p>
<p style="text-align: left;"><span id="more-649"></span>Decidi pasar por el IRC de mysql-es donde converse con un compatriota que ya he visto en otros canales como ubuntu-ve, aunque me asistio en ver el problema, en esta ocasion me solvente partiendo del mismo aviso de error de MySQL.<a href="http://j053d.net/blog/wp-content/uploads/terminal_mysl.png"></a></p>
<p><a href="http://j053d.net/blog/wp-content/uploads/terminal_mysl.png"><img class="aligncenter size-full wp-image-651" title="terminal_mysl" src="http://j053d.net/blog/wp-content/uploads/terminal_mysl.png" alt="" width="656" height="410" /></a></p>
<p>Hice la prueba por el phpMyAdmin y tambien obtuve un error en el intento de crear la tabla:</p>
<p style="text-align: center;"><a href="http://j053d.net/blog/wp-content/uploads/phpmyadmin.jpg"><img class="size-full wp-image-652 aligncenter" title="phpmyadmin" src="http://j053d.net/blog/wp-content/uploads/phpmyadmin.jpg" alt="" width="679" height="303" /></a></p>
<p style="text-align: left;">Referenciandome del error de MySQL el cual comenzaba su error desde un campo y de esa forma no continuaba con el resto, decidi cambiar el nombre de un campo llamado <em><strong>natural</strong></em> por <em>natural1</em> o <em>naturals</em>, sin cambiar mas nada, efectivamente la tabla se creo sin problemas.  Esto es un ejemplo aislado del problema, inicialmente el problema lo presentaba una tabla con mas de 50 campos, por lo que al ver el caso del campo <em><strong>natural</strong></em>, decidi probar a lo cual ya deducia lo que google y un pdf descargado de MySQL me confirmo.</p>
<p style="text-align: left;">Efectivamente era lo que pensaba, que la palabra <em><strong>natural</strong></em> es una palabra reservada asi como un INSERT o un WHERE propias del lenguaje, siendo casualmente el nombre de mi campo igual a una palabra propia de SQL ocasiona el error, existen <strong>NATURAL LEFT JOIN</strong>, <strong>NATURAL LEFT OUTER</strong>, <strong>NATURAL RIGTH JOIN</strong> y <strong>NATURAL RIGTH OUTER JOIN</strong>, por lo que al intentar crear la tabla para el motor de MySQL esta SQL tenia tanto ilogica como si quiese crear una tabla llamada INSERT o un campo llamado INSERT o WHERE o JOIN, por lo que obviamente arrojaba el error.  Asi que tuve que cambiar el campo <em><strong>natural</strong></em> por <em>naturals</em> para asi evitar este tipo de conflictos de la SQL. Existen muchas palabras propias del lenguaje que no conocemos porque no las usamos, por ejemplo, <strong>NATURAL</strong> es algo que nunca he usado por lo que con el pensar de &#8220;mmm&#8230; sera una palabra reservada de SQL&#8221; con lo que se parte de buscar y conocer que efectivamente asi es, igual como en muchos otros lenguajes no se puede coincidir casualmente algo con lo que es propio del lenguaje, asi que deducir la causa de este error no era dificil de pensarlo un poco para cualquiera.</p>
<p style="text-align: left;">Simplemente son cosas que pasan, sobre todo cuando se sabe que no es error de sintaxis (SQL mal escrita) al revisarla varias veces y saber que esta bien, inmediatamente sabemos entonces que el problema es otro, fue interesante detectar esto.</p>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/entendiendo-un-poco-mas-las-sql-en-el-delfin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Goodbye IE6</title>
		<link>http://j053d.net/blog/goodbye-ie6/</link>
		<comments>http://j053d.net/blog/goodbye-ie6/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 18:08:58 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Navegador Web]]></category>
		<category><![CDATA[Noticia]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=643</guid>
		<description><![CDATA[Son muy buenas noticias para este 2010 el que Google indique en su blog oficial que no dara mas soporte, indicando que gradualmente dejaran de darle soporte a navegadores viejos, tales como IE6 y otros, lo cual comenzara a verse en Google Docs y Google Sites a partir de 1 de Marzo 2010.  Google tambien [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fgoodbye-ie6%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fgoodbye-ie6%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://j053d.net/blog/wp-content/uploads/fin_ie6.jpg"><img class="alignleft size-full wp-image-644" title="fin_ie6" src="http://j053d.net/blog/wp-content/uploads/fin_ie6.jpg" alt="" width="180" height="180" /></a>Son muy buenas noticias para este 2010 el que Google indique en su blog oficial que no dara mas soporte, indicando que gradualmente dejaran de darle soporte a navegadores viejos, tales como IE6 y otros, lo cual comenzara a verse en <a href="http://docs.google.com">Google Docs</a> y  <a href="http://sites.google.com">Google Sites</a> a partir de 1 de Marzo 2010.  Google tambien indica en <a href="http://googleenterprise.blogspot.com/2010/01/modern-browsers-for-modern-applications.html">su blog</a> que el 2010 sera un gran anio y desean que todos los usuarios puedan sacarle el mejor provecho de sus desarrollos, basandose en las razones de como ha evolucionado los desarrollos de tecnologia web, graficos, animaciones, video y audio, en vista de que los viejos navegadores no pueden soportar muchas de estas virtudes que hoy en dia existen en internet, cae la excelente noticia esperada por tanto tiempo. La noticia de Google sera el inicio y empujon que hara que este Navegador por fin muera.</p>
<p><span id="more-643"></span></p>
<p>Microsoft indica que la razon por la cual aun a estas fechas sigue dando soporte a este navegador es por ser la version del navegador que viene con Windows XP el cual aun es usado por muchos.</p>
<p>De todo esto a mi propia opinion indico que seguir usando Windows XP no es la escusa para seguir con IEv6, puede actualizarse a la version 7 y 8 sin problemas sin necesitar cambiar el sistema operativo completo. No vemos muchas noticias sobre problemas con versiones viejas de Firefox u Opera, porque tiene que seguir siendo un obstaculo para el diseno y la correcta presentacion web este ya mas que obsoleto navegador en su v6. No solo por sus problemas con las nuevas versiones de CSS y posiblemente XHTML, que ocasionan problemas de presentacion, sino por las vulnerabilidades que pueden ser mas perjudiciales en la v6 del IE que en versiones posteriores.</p>
<p>El mensaje es igual para todo usuario que use cualquier browser previo a versiones actuales. Internet evoluciona y cambia constantemente, navegar en un viejo bote ya no es una opcion inteligente a seguir y ya no se le dara mas apoyo a esto en el futuro, obviamente tarde o temprano IE6 tenia que morir, lo cual alegra mucho a todo persona que trabaje en el ambito de disenio web. Ademas, hay navegadores de sobra para usar, por lo que sera mas un favor a si mismo y con lleve a un favor para otros el que el usuario actualice su navegador, lo agradecera.</p>
<p>Puede leerse una informacion mas completa de esto en las siguientes referencias:</p>
<p><a href="http://www.corbax.com/blog/internet-explorer-6-abandono-caida/">Dcorbaxeo</a><br />
<a href="http://googleenterprise.blogspot.com/2010/01/modern-browsers-for-modern-applications.html">Google blog</a><br />
<a href="http://blog.seattlepi.com/microsoft/archives/191540.asp">Seattlepi blog</a></p>
<p>Tambien existen grupos que fomentan el desuso del IE6 tales como <a href="http://ie6funeral.com/">IE6 Funeral</a> y <a href="http://www.ie6nomore.com/">IE6 No More</a> este ultimo ofrece <a href="http://www.ie6nomore.com/code-samples.html">un codigo html</a> que ayuda a detectar si el usuario navega con IE6 y le adviernte al usuario el que esta usando una version obsoleta del navegador con links de las webs oficinales de descarga para actualizarlo, el codigo seria este:</p>
<pre class="brush: xml;">
&lt;!--[if lt IE 7]&gt;
  &lt;div style='border: 1px solid #F7941D; background: #FEEFDA; text-align: center; clear: both; height: 75px; position: relative;'&gt;
    &lt;div style='position: absolute; right: 3px; top: 3px; font-family: courier new; font-weight: bold;'&gt;&lt;a href='#' onclick='javascript:this.parentNode.parentNode.style.display=&quot;none&quot;; return false;'&gt;&lt;img src='http://www.ie6nomore.com/files/theme/ie6nomore-cornerx.jpg' style='border: none;' alt='Cierra este aviso'/&gt;&lt;/a&gt;&lt;/div&gt;
    &lt;div style='width: 640px; margin: 0 auto; text-align: left; padding: 0; overflow: hidden; color: black;'&gt;
      &lt;div style='width: 75px; float: left;'&gt;&lt;img src='http://www.ie6nomore.com/files/theme/ie6nomore-warning.jpg' alt='¡Aviso!'/&gt;&lt;/div&gt;
      &lt;div style='width: 275px; float: left; font-family: Arial, sans-serif;'&gt;
        &lt;div style='font-size: 14px; font-weight: bold; margin-top: 12px;'&gt;Usted está usando un navegador obsoleto.&lt;/div&gt;
        &lt;div style='font-size: 12px; margin-top: 6px; line-height: 12px;'&gt;Para navegar mejor por este sitio, por favor, actualice su navegador.&lt;/div&gt;
      &lt;/div&gt;
      &lt;div style='width: 75px; float: left;'&gt;&lt;a href='http://www.mozilla-europe.org/es/firefox/' target='_blank'&gt;&lt;img src='http://www.ie6nomore.com/files/theme/ie6nomore-firefox.jpg' style='border: none;' alt='Get Firefox 3.5'/&gt;&lt;/a&gt;&lt;/div&gt;
      &lt;div style='width: 75px; float: left;'&gt;&lt;a href='http://www.microsoft.com/downloads/details.aspx?FamilyID=341c2ad5-8c3d-4347-8c03-08cdecd8852b&amp;DisplayLang=es' target='_blank'&gt;&lt;img src='http://www.ie6nomore.com/files/theme/ie6nomore-ie8.jpg' style='border: none;' alt='Get Internet Explorer 8'/&gt;&lt;/a&gt;&lt;/div&gt;
      &lt;div style='width: 73px; float: left;'&gt;&lt;a href='http://www.apple.com/es/safari/download/' target='_blank'&gt;&lt;img src='http://www.ie6nomore.com/files/theme/ie6nomore-safari.jpg' style='border: none;' alt='Get Safari 4'/&gt;&lt;/a&gt;&lt;/div&gt;
      &lt;div style='float: left;'&gt;&lt;a href='http://www.google.com/chrome?hl=es' target='_blank'&gt;&lt;img src='http://www.ie6nomore.com/files/theme/ie6nomore-chrome.jpg' style='border: none;' alt='Get Google Chrome'/&gt;&lt;/a&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;![endif]--&gt;
</pre>
<p>Lo cual le mostrara el siguiente aviso al usuario:</p>
<p><a href="http://j053d.net/blog/wp-content/uploads/aviso_ie6_nomore.jpg"><img class="aligncenter size-full wp-image-972" title="aviso_ie6_nomore" src="http://j053d.net/blog/wp-content/uploads/aviso_ie6_nomore.jpg" alt="" width="647" height="82" /></a></p>
<p>Este es un screenshot pero el codigo html previo ofrece en cada logo de cada navegador un link a su web para su respectiva y debida actualizacion. Un codigo que todo webmaster/desarrollador a estas fechas de la vida debe colocar en sus webs. La campania para eliminar al IE6 debio de haber comenzado hace mucho. Cualquier navegador obsoleto, pero es increible que hoy en dia para quienes trabajan con CSS el IE6 aun sea su principal dolor de cabeza, ya eso debe quedar en el pasado.</p>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/goodbye-ie6/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>freaklances &#8216;la serie&#8217;</title>
		<link>http://j053d.net/blog/freaklances-la-serie/</link>
		<comments>http://j053d.net/blog/freaklances-la-serie/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 02:42:30 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Off Topic]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=629</guid>
		<description><![CDATA[freaklances &#8216;la serie&#8217; es un short anime  que trata sobre la vida de un sujeto que trabaja en el ambito publicitario como disenador grafico el cual es un freelance (trabajador independiente por cuenta propia), muchos lo hemos sido, aunque en esta ocasion se indica como freak (fenomeno), una seria de la cual es seguro que [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Ffreaklances-la-serie%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Ffreaklances-la-serie%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p style="text-align: center;"><a href="http://j053d.net/blog/wp-content/uploads/cabecera_freak_03_BLOG.jpg"><br />
</a><a href="http://j053d.net/blog/wp-content/uploads/cabecera_freak_03_BLOG.jpg"><img class="aligncenter size-full wp-image-631" title="cabecera_freak_03_BLOG" src="http://j053d.net/blog/wp-content/uploads/cabecera_freak_03_BLOG.jpg" alt="" width="592" height="444" /></a></p>
<p><a href="http://vimeo.com/freaklances/">freaklances &#8216;la serie&#8217;</a> es un short anime  que trata sobre la vida de un sujeto que trabaja en el ambito publicitario como disenador grafico el cual es un <a href="http://es.wikipedia.org/wiki/Freelance">freelance</a> (trabajador independiente por cuenta propia), muchos lo hemos sido, aunque en esta ocasion se indica como <em>freak</em> (fenomeno), una seria de la cual es seguro que mas de uno se sentira identificado con su dia a dia. Esto me recuerda al anime de <a href="http://www.calicoelectronico.com/">calico electronico</a> el cual trata de un pequenio y barrigon super-heroe vigilante nocturno que combate al crimen y al cual tambien se le unen sus super-amigos de vez en cuando cuando es necesario.</p>
<p><span id="more-629"></span></p>
<p>Este tipo de cosas son de las que se puede disfrutar mucho, ademas de ver el enorme talento en flash que tiene mucha gente, en lo particular gusta mas los flash anime que traten de la vida de un informatico, programador, disenador web, etc, pero sin dejar a un lado muchos otros que igual entretienen.</p>
<p>Puede seguirse a esta seria desde <a href="http://vimeo.com/freaklances/">su web</a> e igual haciendole seguimiento desde <a href="http://www.freaklances.blogspot.com/">su blog</a>, en <a href="http://www.facebook.com/pages/Freaklances/166438759404">su facebook</a> y en <a href="http://twitter.com/freaklances">su twitter</a> esperando que sea muchos los capitulos por venir (actualmente hay 2) y seguro por como se ven los dos primeros y previas imagenes del 3er capitulo, se espera con ansias el resto de la serie.</p>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/freaklances-la-serie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DevCamp</title>
		<link>http://j053d.net/blog/devcamp/</link>
		<comments>http://j053d.net/blog/devcamp/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 19:38:47 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[Comunidad]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Noticia]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=575</guid>
		<description><![CDATA[El 18 de Febrero se llevara a cabo el DevCamp el cual ya dispone de una buena lista de ponentes para este dia de desconferencias, tanto ponentes como participantes ya han indicado su asistencia (es un evento totalmente gratis) el cual se llevara a cabo en las instalaciones de softtrain con 3 espaciosas salas que [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fdevcamp%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fdevcamp%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://j053d.net/blog/wp-content/uploads/devcamp.png"><img class="aligncenter size-full wp-image-579" title="devcamp" src="http://j053d.net/blog/wp-content/uploads/devcamp.png" alt="" width="499" height="124" /></a></p>
<p>El 18 de Febrero se llevara a cabo el <a href="http://www.devcamp.org.ve/">DevCamp</a> el cual ya dispone de una buena lista de ponentes para este dia de <a href="http://es.wikipedia.org/wiki/Desconferencia">desconferencias</a>, tanto ponentes como participantes ya han indicado su asistencia (es un evento totalmente gratis) el cual se llevara a cabo en las instalaciones de softtrain con 3 espaciosas salas que ofrece comodamente cupo para 27 exposiciones (aunque se han registrado mas de este numero) asignandose una hora para cada ponencia.</p>
<p>Fecha: 18 de Febrero 2010. (Jueves)<br />
Lugar: Torre Exa Piso 2 Oficina 213, Av.Libertador con Calle Alameda,       El Rosal, Chacao, Caracas, Venezuela (a 3 cuadras del Sambil).<br />
Hora: 9am &#8211; 7pm.</p>
<p>No estaria mal un <a href="http://es.wikipedia.org/wiki/Streaming">Streaming</a> para quienes no se encuentran en la capital (y ni en el mismo pais).</p>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/devcamp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HipHop for PHP</title>
		<link>http://j053d.net/blog/hiphop-for-php/</link>
		<comments>http://j053d.net/blog/hiphop-for-php/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 23:06:18 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[Noticia]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=556</guid>
		<description><![CDATA[El genio ha salio de la lampara, Haiping Zhao uno de los principales Ingenieros de desarrollo de Facebook revela la noticia, ya existian rumores de que la gente de Facebook estuviese desarrollando un PHP compilado o una forma de compilar el codigo PHP para optimizar y ganar en rendimiento y velocidad (realmente encontrar nuevas formas [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fhiphop-for-php%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fhiphop-for-php%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://j053d.net/blog/wp-content/uploads/hiphop_for_php.png"><img class="aligncenter size-full wp-image-584" title="hiphop_for_php" src="http://j053d.net/blog/wp-content/uploads/hiphop_for_php.png" alt="" width="415" height="112" /></a></p>
<p>El genio ha salio de la lampara, <a href="http://www.facebook.com/hzhao">Haiping Zhao</a> uno de los principales Ingenieros de desarrollo de <a href="http://www.facebook.com/">Facebook</a> revela la noticia, ya existian rumores de que la gente de Facebook estuviese desarrollando un <a href="http://j053d.net/blog/?p=456">PHP compilado</a> o una forma de compilar el codigo PHP para optimizar y ganar en rendimiento y velocidad (realmente encontrar nuevas formas de mejorar el rendimiento de PHP no es un  concepto nuevo). Recordemos que Facebook es un servicio usado por millones de personas y  que al momento de cargar tu web debe cargar la actualizacion mas relevantes de todos  tus amigos, todo esto en menos de 1 segundo para lo cual usan un servicio personalizado que han creado y al cual han llamado &#8220;alimentacion multiple&#8221;, el cual consiste en filtrar los resultados basándose en la configuración de privacidad, y  luego rellenar las historias con los comentarios, fotos y demas etc que vemos en nuestro pagina de Facebook. Zhao hace publica la noticia del <a href="http://www.facebook.com/note.php?note_id=280583813919&amp;id=9445547199&amp;ref=nf">HipHop for PHP</a> del cual habra un streaming a las 7:30pm (hora del Pacifico) explicandolo mas a fondo, en el mismo link donde se indica la noticia para revelar mas informacion sobre ello.</p>
<p><span id="more-556"></span>Pero que es exactamente este &#8220;HipHop for PHP&#8221;, Zhao indica que tecnicamente no es un compilador para PHP, es un transformador de codigo fuente PHP optimizado a C++ que luego usa g++ para compilarlo. HipHop incluye un transformador de código, una reimplementación del  sistema de ejecución de PHP, y una reescritura de las extensiones de PHP  muchos puntos en común para tomar ventaja de estas optimizaciones de  rendimiento.  Zhao indica que con <em>HipHop for PHP</em> han reducido mucho el uso del CPU en los servidores de Facebook (en un 50% dependiendo tambien de la pagina) lo cual significa, menos servidores y menos gastos.</p>
<p>Volviendo a hacer un repaso breve y rapido y para quienes no sepan, <a href="http://www.facebook.com/">Facebook</a> esta hecho en PHP el cual es un lenguaje de escript, los <a href="http://es.wikipedia.org/wiki/Lenguaje_interpretado">lenguajes interpretados</a> (no compilados) como lo es PHP no tienen su fuerte en el rendimiento del CPU (uso de la CPU y memoria).  Con el proposito de buscar el ser mas rapidos (muy logico buscar esto para la gente del servicio facebook), los ingenieros de Facebook han implementado (para abordar esta deficiencia como sostiene Zhao) el de volver a reescribir las partes mas complejas de la aplicacion basada en PHP directamente en C++ con extensiones PHP.  Recordemos tambien que PHP esta hecho en C por lo que para solventar esto, han iniciado atacarlo desde la raiz u origines.  Zhao indica que tecnicamente esto les ha funcionado muy bien pero reduce drasticamente el numero de ingenieros que son capaces de trabajar en su aplicacion de forma mas completa (comparando lo tradicional a como seria ahora con esta implementacion lo cual es algo nuevo).  Aprender C++ solo es el 1er paso para escribir extensiones PHP, el 2do paso seria entender la <a href="http://theserverpages.com/php/manual/en/zend.php">API de Zend</a>, en vista de que el equipo de trabajo del cual tambien pertenece Zhao es pequeno, es comprensible que se tengan en mente el que este proyecto este direccionado hacia el Open Source lo cual aportaria mas apoyo por parte de comunidades de desarrolladores en todo el mundo.</p>
<p>Zhao:</p>
<blockquote><p>Estamos muy emocionados  de evolucionar HipHop en un proyecto de código  abierto próspero junto  con todos ustedes.</p></blockquote>
<p>Zhao escribe que HipHop les ofrece una mejor lógica que hace el montaje final de la página  en PHP  para luego modificarla rápidamente. Zhao comenta que desde el 2007 han evaluado el como atacar estos problemas del lenguaje vs optimizacion del servicio basado en este, incluso el pensar cambiar el lenguaje de programacion de Facebook, pero dado el tiempo y la complejidad de un nuevo desarrollo desde cero (0) aun teniendo toda la estructura de este enorme sistema (estamos hablando de quien sabe cuantos paginas bajo las cuales se sostiene Facebook), en vez de iniciar todo con otro lenguaje, prefirieron reescribir al mismo motor de zend interno de PHP y parchar al Facebook de esa forma, aunque no han visto el aumento de rendimiento que necesitan.</p>
<p>Zhao indica:</p>
<blockquote><p>Proyectos de fuente abierta tales como <a title="http://pecl.php.net/package/APC" href="http://www.facebook.com/note_redirect.php?note_id=280583813919&amp;h=eaadf8ec69374fec9d977f9823eeb2f1&amp;url=http%3A%2F%2Fpecl.php.net%2Fpackage%2FAPC" target="_blank">APC</a> y caché  <a title="http://eaccelerator.net/" href="http://www.facebook.com/note_redirect.php?note_id=280583813919&amp;h=61bbbfa8e2e2a35dde4f2a2ae4db5e4a&amp;url=http%3A%2F%2Feaccelerator.net%2F" target="_blank">eAccelerator</a> son utilizados por la mayoría de los sitios web de PHP powered.  También hay <a title="http://en.wikipedia.org/wiki/Zend_Server" href="http://www.facebook.com/note_redirect.php?note_id=280583813919&amp;h=1c9eb77c0a66ba29fc4daed64071e2b9&amp;url=http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FZend_Server" target="_blank">Zend  servidor,</a> un producto comercial que hace más rápido de PHP a través  de la optimización de código de operación y almacenamiento en caché. En  cambio, estábamos pensando en la transformación del codigo fuente de PHP  directamente en C + +, que luego se puede convertir en código de máquina  nativo. Incluso la compilación de PHP no es una idea nueva, los  proyectos de código abierto como <a title="http://www.roadsend.com/" href="http://www.facebook.com/note_redirect.php?note_id=280583813919&amp;h=12d1c141cd673a049a3b1f2916de3267&amp;url=http%3A%2F%2Fwww.roadsend.com%2F" target="_blank">Roadsend</a> y <a title="http://www.phpcompiler.org/" href="http://www.facebook.com/note_redirect.php?note_id=280583813919&amp;h=793a07b1d3e93a959bdc6dfec1a964be&amp;url=http%3A%2F%2Fwww.phpcompiler.org%2F" target="_blank">APS</a> compilan  PHP a C, <a title="http://www.caucho.com/resin-3.0/quercus/" href="http://www.facebook.com/note_redirect.php?note_id=280583813919&amp;h=c1ca51502efdbebee99d52d8324805cc&amp;url=http%3A%2F%2Fwww.caucho.com%2Fresin-3.0%2Fquercus%2F" target="_blank">Quercus</a> compila PHP a Java, y <a title="http://www.php-compiler.net/" href="http://www.facebook.com/note_redirect.php?note_id=280583813919&amp;h=0ac45bcbb75547fe3f660d89cce45861&amp;url=http%3A%2F%2Fwww.php-compiler.net%2F" target="_blank">Phalanger</a> compila PHP para .Net.</p>
<p>Ocho meses más tarde, tuve el código suficiente para demostrar que  efectivamente es posible correr más rápido con el código compilado. Rápidamente se unieron Iain Proctor y Yang Minghui al equipo para acelerar  el ritmo del proyecto. Pasamos los próximos diez meses de terminar todo  el código y los siguientes seis meses de prueba en los servidores de  producción. Estamos orgullosos de decir que en este momento, estamos  sirviendo a más del 90% de nuestro tráfico Web usando HipHop, todos sólo  seis meses después de la implementación.</p></blockquote>
<h3>Como funciona HipHop?</h3>
<p>Siendo como principal objetio reducir las diferencias entre PHP y C++ (siendo PHP de tipeado dinamico pero debil) y (C++ con tipos estaticos compilado).  <em>Zhao: Es más probable que usted vea <code>if (...) {...} else {..}</code> de  lo que es ver a <code>function foo($x) { include $x; }</code> Aquí es  donde se gana en rendimiento</em>.</p>
<p>El proceso de transformación incluye tres pasos principales:</p>
<ol>
<li> Análisis estático, donde recopilar información sobre lo que declara y  dependencias,</li>
<li> Inferencia de tipos en los que elegir el tipo  más específico entre C + + escalares, String, Array, clases, objetos, y  la variante, y</li>
<li> La generación de código que en su mayor parte  es una correspondencia directa de las declaraciones de PHP y expresiones  para C + + y expresiones.</li>
</ol>
<p style="text-align: left;"><a href="http://j053d.net/blog/wp-content/uploads/funcion_hiphop_php.png"></a><a href="http://j053d.net/blog/wp-content/uploads/funcion_hiphop_php1.png"><img class="aligncenter size-full wp-image-558" title="funcion_hiphop_php" src="http://j053d.net/blog/wp-content/uploads/funcion_hiphop_php1.png" alt="" width="430" height="269" /></a><br />
Tambien desarrollaron HPHPi, que es un intérprete experimentales  para el desarrollo. Cuando se utiliza HPHPi no es necesario  compilar el código fuente de PHP antes de ejecutarlo, ayudando a  detectar los errores en HipHop.</p>
<p style="text-align: left;">Zhao:</p>
<blockquote>
<p style="text-align: left;">En general HipHop nos permite mantener los mejores aspectos de PHP y se  aprovecha de las ventajas de rendimiento de C + +. En total, hemos  escrito más de 300.000 líneas de código y más de 5.000 pruebas de  unidad. Todo esto se dará a conocer esta tarde en GitHub de código  abierto bajo la licencia PHP.</p>
</blockquote>
<h3>Más información esta noche (02.02.2010)</h3>
<p>Zhao informa que esta noche organizaran un pequeno grupo de desarrolladores para explicar este HipHip para PHP por medio de un <a href="http://es.wikipedia.org/wiki/Streaming">Streaming</a> en vivo, pidiendo volver  a esta noticia a las 7:30pm hora del Pacifico para quienes les interese saber mas sobre esto. Seguros de que habra muchas preguntas, indica el link de la <a title="http://github.com/facebook/hiphop-php/wikis" href="http://www.facebook.com/note_redirect.php?note_id=280583813919&amp;h=168bf02cfbee1ad0e665db3539b46aa1&amp;url=http%3A%2F%2Fgithub.com%2Ffacebook%2Fhiphop-php%2Fwikis" target="_blank">wiki  HipHop</a> o el unirse a la <a title="http://groups.google.com/group/hiphop-php-dev" href="http://www.facebook.com/note_redirect.php?note_id=280583813919&amp;h=da44532bf8d50924fd5ef53964af1f98&amp;url=http%3A%2F%2Fgroups.google.com%2Fgroup%2Fhiphop-php-dev" target="_blank">lista  de correo de desarrolladores HipHop.</a>, y otros links como son <a title="http://www.fosdem.org/2010/schedule/events/scalingfacebook" href="http://www.facebook.com/note_redirect.php?note_id=280583813919&amp;h=0c312eac65cc2cffdcad9b231356c2e6&amp;url=http%3A%2F%2Fwww.fosdem.org%2F2010%2Fschedule%2Fevents%2Fscalingfacebook" target="_blank">FOSDEM,</a> <a title="http://www.socallinuxexpo.org/scale8x/" href="http://www.facebook.com/note_redirect.php?note_id=280583813919&amp;h=fee69c3a840a82470b50d3e4696f7966&amp;url=http%3A%2F%2Fwww.socallinuxexpo.org%2Fscale8x%2F" target="_blank">ESCALA,</a> <a title="http://www.phpconference.co.uk/" href="http://www.facebook.com/note_redirect.php?note_id=280583813919&amp;h=1dce365c90d3a37041353fa8923932b4&amp;url=http%3A%2F%2Fwww.phpconference.co.uk%2F" target="_blank">PHP Reino  Unido,</a> <a title="http://www.confoo.ca/" href="http://www.facebook.com/note_redirect.php?note_id=280583813919&amp;h=6e58d5e1282c18d3e94e0b1ad25c8f6f&amp;url=http%3A%2F%2Fwww.confoo.ca%2F" target="_blank">ConFoo,,</a> CTMA X y <a title="http://en.oreilly.com/oscon2010" href="http://www.facebook.com/note_redirect.php?note_id=280583813919&amp;h=39d7d6a733479bb94e25acf3d98c75c2&amp;url=http%3A%2F%2Fen.oreilly.com%2Foscon2010" target="_blank">OSCON</a> en los proximos meses, donde estaran hablando sobre HipHop para PHP.</p>
<p><a href="http://www.ustream.tv/recorded/4409735">Streaming de HipHop for PHP</a></p>
<p>Entonces el H<strong>PHP</strong> del cual habian rumores no seria tanto como decir <span style="color: #333399;">H</span>yper<span style="color: #333399;">PHP</span> sino conocido como la tecnologia <span style="color: #333399;">H</span>i<span style="color: #333399;">pH</span>o<span style="color: #333399;">p</span> (HPHP) para PHP bajo su interprete experimental HPHPi (que a mi entender seria <em><span style="color: #333399;">H</span>i<span style="color: #333399;">pH</span>o<span style="color: #333399;">p</span> <span style="color: #333399;">I</span>nterpreter</em>), siendo HipHop lo mas cercano hasta la fecha de la compilacion de los script de PHP a C++.</p>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/hiphop-for-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La Mujer (el mejor Firewall)</title>
		<link>http://j053d.net/blog/mujer-firewall-biologico/</link>
		<comments>http://j053d.net/blog/mujer-firewall-biologico/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 21:14:39 +0000</pubDate>
		<dc:creator>jocdz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Off Topic]]></category>

		<guid isPermaLink="false">http://j053d.net/blog/?p=549</guid>
		<description><![CDATA[Leo en twitter de ubuntumexico un interesante post titulado La Mujer: El mejor Firewall del Mundo, un analisis algo curioso pero interesante que se que me dara gusto anexarlo al blog. Una célula humana contiene 75MB de información genetica. Un espermatozoide contine la mitad; eso significa 37.5MB Un ml de semen contiene 100 millones de [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj053d.net%2Fblog%2Fmujer-firewall-biologico%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj053d.net%2Fblog%2Fmujer-firewall-biologico%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://j053d.net/blog/wp-content/uploads/mujer_firewall.jpg"><img class="alignleft size-medium wp-image-588" title="mujer_firewall" src="http://j053d.net/blog/wp-content/uploads/mujer_firewall-300x213.jpg" alt="" width="180" height="128" /></a>Leo en twitter de <a href="http://twitter.com/ubuntumexico">ubuntumexico</a> un interesante post titulado <a href="http://ubuntumexico.com/2010/01/la-mujer-el-mejor-firewall-del-mundo/">La Mujer: El mejor Firewall del Mundo</a>, un analisis algo curioso pero interesante que se que me dara gusto anexarlo al blog.</p>
<ol>
<li>Una célula humana contiene 75MB de información genetica.</li>
<li>Un espermatozoide contine la mitad; eso significa 37.5MB</li>
<li>Un ml de semen contiene 100 millones de espermatozoides.</li>
<li>En promedio la eyaculación dura 5 segundos y contiene 2.24 ml de  semen</li>
<li>Esto significa que la producción del miembre de un hombre equivale  37.5MB x 100,000,000 x 2.25)/5 = 1,687,500,000,000,000 bytes/segundo =  1,6875 Terabytes/seg</li>
</ol>
<p>Esto quiere decir que el óvulo femenino soporta este ataque DDoS a  1,5 terabytes por segundo, y solo permite que pase <strong>un solo  paquete de información</strong> lo que la hace el mejor hardware  firewall del mundo.<br />
La mala noticia de esto, es que ese paquete de información que deja  pasar, cuelga el sistema por aproximadamente nueve meses.</p>
]]></content:encoded>
			<wfw:commentRss>http://j053d.net/blog/mujer-firewall-biologico/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
