<?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>Salvador G. Mendez &#187; Webmasters</title>
	<atom:link href="http://www.sgmendez.com/category/webmasters/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sgmendez.com</link>
	<description>Blog de un webmaster</description>
	<lastBuildDate>Mon, 06 Feb 2012 20:45:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Proteger el acceso por SSH</title>
		<link>http://www.sgmendez.com/2011/12/30/proteger-acceso-ssh/</link>
		<comments>http://www.sgmendez.com/2011/12/30/proteger-acceso-ssh/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 18:44:18 +0000</pubDate>
		<dc:creator>Salvador Mendez</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[Webmasters]]></category>
		<category><![CDATA[acceso]]></category>
		<category><![CDATA[fail2ban]]></category>
		<category><![CDATA[seguridad]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://www.sgmendez.com/?p=513</guid>
		<description><![CDATA[SSH (Secure SHell) es a un tiempo el nombre del protocolo y el programa que nos permite acceder a maquinas remotas de forma segura y gestionarlas por completo mediante un intérprete de comandos.
Hechas las presentaciones, vaya por delante lo de siempre: un servidor completamente seguro es el que está encerrado entre muros de hormigón sin [...]]]></description>
			<content:encoded><![CDATA[<p>SSH (<a href="http://es.wikipedia.org/wiki/Secure_Shell"><strong>S</strong>ecure <strong>SH</strong>ell</a>) es a un tiempo el nombre del protocolo y el programa que nos permite acceder a maquinas remotas de forma segura y gestionarlas por completo mediante un intérprete de comandos.</p>
<p>Hechas las presentaciones, vaya por delante lo de siempre: un servidor completamente seguro es el que está encerrado entre muros de hormigón sin ningún tipo de conexión. Obviamente, así no sirve para nada, entonces tendremos que buscar el correcto equilibrio entre conectividad y seguridad. Como me toca acabar el año configurando nuevos servidores, os dejo una pequeña guía para asegurar el acceso por SSH.</p>
<p>Lo primero, modificar el fichero de configuración de SSH que encontrareis en <em>/etc/ssh/sshd_config</em> y agregamos las siguientes líneas (en muchos casos las encontrareis comentadas).</p>
<p>Protocol 2<br />
LoginGraceTime 20<br />
PermitRootLogin no<br />
MaxAuthTries 2<br />
MaxStartups 3<br />
AllowUsers pepito</p>
<p>La primera línea le indica que unicamente se puede hacer uso de la versión 2 del protocolo de comunicación. La primera versión tiene algunas <a href="http://es.wikipedia.org/wiki/Secure_Shell#Versiones">vulnerabilidades conocidas</a> y está obsoleta por lo que lo recomendable es no usarla si no se necesita.</p>
<p>El <strong>LoginGraceTime</strong> hace referencia al tiempo en segundos que la pantalla de login permanecerá abierta, en el ejemplo hemos dejado 20 segundos, un tiempo más que suficiente para indicar usuario y contraseña.</p>
<p>Con <strong>PermitRootLogin</strong> establecido a no evitaremos que el usuario root pueda autenticarse a través de SSH para acceder al servidor. El problema es que los sistemas Linux y Unix crean al usuario root, lo que garantiza a un atacante que ya conoce el usuario, sólo queda la contraseña. De esta forma será mucho más complicado, obviamente no uses nombres conocidos o estarás en el mismo caso.</p>
<p>Otro de los límites que podemos imponer es definir la cantidad de veces que podemos fallar al autenticarnos. Con <strong>MaxAuthTries</strong> definimos el número de intentos, con 1 sería más que suficiente, pero a los que nos toca andar con varios servidores a la larga terminas equivocándote la primera vez de ahí que lo defina con 2 intentos. Lo que ocurrirá después del segundo fallo es que se cerrará la conexión.</p>
<p>Con <strong>MaxStartups</strong> se indican la cantidad de conexiones simultaneas que se permiten, en este caso hemos optado por 3, un número razonable para aquellos servidores a los que se accede por SSH únicamente para su administración. Con esto evitaremos que un ataque por fuerza bruta pueda realizar miles de conexiones simultaneas para atacar.</p>
<p>Y por último, pero no menos importante, <strong>AllowUsers</strong>. Con esta directiva le indicamos al SSH que usuarios exclusivamente se pueden identificar en el sistema. También podemos aumentar la seguridad definiendo desde que redes puede acceder un determinado usuario. Basta con poner los nombres de los usuarios separados por espacios, si se quiere indicar un host podemos hacerlo poniendo el usuario seguido del símbolo @ y el host (Ej: pepito@127.0.0.1).</p>
<p>Con esto ya tenemos nuestro SSH un poco más seguro. Guardamos el fichero y reiniciamos el servicio.</p>
<p>Lo segundo que haremos para evitar que nos ataquen será instalar <a href="http://www.fail2ban.org/wiki/index.php/FAQ_spanish">Fail2ban</a>, un programa controla los logs y que nos permite vetar todas aquellas IP&#8217;s que fallan un determinado número de veces. El baneo se realizará usando el firewall, así que lo que hace realmente Fail2ban es crear y borrar reglas en función de la información que se registra en los logs.</p>
<p>El requisito para instalar Fail2ban es tener <a href="http://www.fail2ban.org/wiki/index.php/Requirements">Python</a>, tenéis disponibles <a href="http://www.fail2ban.org/wiki/index.php/Downloads">paquetes compilados</a> para instalar o podeis tirar de repositorios. Una vez instalado tan solo es necesario configurar las reglas que queremos tener activas, tenéis bastante <a href="http://www.fail2ban.org/wiki/index.php/HOWTO_fail2ban_spanish">información en su web</a> y un archivo de configuración de prueba en /etc/fail2ban/jail.conf</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sgmendez.com/2011/12/30/proteger-acceso-ssh/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ESET Internet Meeting Point 2011</title>
		<link>http://www.sgmendez.com/2011/10/07/eset-internet-meeting-point-2011/</link>
		<comments>http://www.sgmendez.com/2011/10/07/eset-internet-meeting-point-2011/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 10:57:39 +0000</pubDate>
		<dc:creator>Salvador Mendez</dc:creator>
				<category><![CDATA[Webmasters]]></category>
		<category><![CDATA[cursos]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Internet]]></category>

		<guid isPermaLink="false">http://www.sgmendez.com/?p=504</guid>
		<description><![CDATA[Los próximos 7 y 8 de octubre, se desarrollará en el Hotel Sylken de Gijón ESET Internet Meetint Point 2011, un evento que evoluciona sobre la experiencia de años anteriores para ofrecer casi todo lo que nos habéis pedido a lo largo de este último año, y que tiene como premisas principales, la cercanía y [...]]]></description>
			<content:encoded><![CDATA[<p>Los próximos 7 y 8 de octubre, se desarrollará en el Hotel Sylken de Gijón <a href="http://www.internetmeetingpoint.net/">ESET Internet Meetint Point 2011</a>, un evento que evoluciona sobre la experiencia de años anteriores para ofrecer casi todo lo que nos habéis pedido a lo largo de este último año, y que tiene como premisas principales, la cercanía y su carácter abierto a todos los públicos. </p>
<p>Ese es el objetivo hoy en día, abrir la red a todo el mundo, abrir un evento de internet a todo aquel que quiera participar, indistintamente de sus conocimientos sobre ella. Hablaremos de política, de homeopatía, de seguridad en el hogar, de emprendedores, de sectores industriales en dificultades, de cambios en la sociedad vinculados a las redes sociales, de la realidad sobre el asesinato de Jonh Fitzgerald Kennedy, de fotografía… haremos monólogos, tendremos humor, habrá conciertos, famosos, tweets, internet &amp; Sidras. </p>
<p>El evento ha sido diseñado para que encuentres tu forma de participar, sea la que sea y tengas las aficiones que tengas. Creemos que ESET Internet Meeting Point 2011 conseguirá interesarte en su conjunto o en alguna parte en individual, estamos convencidos de ello porque allí se hablará, se mostrará y se transmitirá cultura.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sgmendez.com/2011/10/07/eset-internet-meeting-point-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Frameworks PHP: Zend vs Symfony</title>
		<link>http://www.sgmendez.com/2009/05/09/frameworks-php-zend-vs-symfony/</link>
		<comments>http://www.sgmendez.com/2009/05/09/frameworks-php-zend-vs-symfony/#comments</comments>
		<pubDate>Sat, 09 May 2009 05:38:03 +0000</pubDate>
		<dc:creator>Salvador Mendez</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[Webmasters]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP5]]></category>
		<category><![CDATA[Symfony]]></category>
		<category><![CDATA[Zend]]></category>

		<guid isPermaLink="false">http://www.sgmendez.com/?p=185</guid>
		<description><![CDATA[Cuando uno se plantea por primera vez el uso de un framework en PHP comienza a darle vueltas a las posibilidades que ofrecen unos y otros. Aunque la curva de aprendizaje en el uso de un framework es dura, todo el tiempo que le dediquemos a conocer a fondo aquel por el que nos decidamos [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando uno se plantea por primera vez el uso de un framework en PHP comienza a darle vueltas a las posibilidades que ofrecen unos y otros. Aunque la curva de aprendizaje en el uso de un framework es dura, todo el tiempo que le dediquemos a conocer a fondo aquel por el que nos decidamos será el tiempo mejor invertido en formarnos como desarrolladores.</p>
<p>En este caso quiero plantear una comparación entre dos de los frameworks más extendidos <a href="http://framework.zend.com/" target="_blank">Zend</a> y <a href="http://www.symfony-project.org/" target="_blank">Symfony</a>.</p>
<p><strong>Documentación y aprendizaje</strong>. Com he dicho la curva de aprendizaje para poder usar correctamente y con soltura un framework necesita de un esfuerzo, mucho más si llevamos años programando sin usarlo. Symfony dispone de guias y <a href="http://www.librosweb.es/symfony/index.html" target="_blank">manuales</a> en abundancia, y además cuenta con numerosos foros en varios idiomas donde la comundad va resolviendo dudas. En el caso de Zend, a pesar de ser el framework de la empresa que está detrás de PHP, la comunidad es algo escasa, por tanto su documentación también.</p>
<p><strong>Pruebas unitarias</strong>. Symfony dispone de tareas por linea de comandos para realizar testing, y además genera una clase vacia con cada nuevo controdalor desde el que poder realizar las pruebas. Zend no dispone de esta funcionalidad, algo que me parece muy importante a la hora de lanzar una aplicación a un entorno de producción.</p>
<p><strong>Plantillas y plugins</strong>. Al sistema de plantillas de Zend le queda todavía un largo camino que recorer, mientras que en Symfony el sistema está ya muy avanzado, con la posibilidad de agragar módulos. Y otro tanto ocurre con los plugins, en Symfony es posible aumentar sus funcionalidades a base de plugins, mientras que Zend carece de esta característica.</p>
<p><strong>Bases de datos</strong>. El trabajo con base de datos en Zend se limita a usar ActiveRecord (que no digo que esté mal), pero en Symfony tienes la posibilidad de usar el motor de base de datos que quieras, incluyendo el propio Zend_Db, algo que aporta una enorme flexibilidad al desarrollador que puede elegir en cada proyecto cual es la mejor opción.</p>
<p>Como conclusión a lo dicho quiero añadir, para todos aquellos que quieran dar el salto a hacer desarrollos basados en un framework, que a pesar de que al principio pueda resultar un poco engorroso con el tiempo os ayudará a mantener una limpieza de código y un mantenimiento de aplicaciones mucho más sencillo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sgmendez.com/2009/05/09/frameworks-php-zend-vs-symfony/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Utilidad y uso de EXPLAIN en MySQL</title>
		<link>http://www.sgmendez.com/2009/05/07/utilidad-y-uso-de-explain-en-mysql/</link>
		<comments>http://www.sgmendez.com/2009/05/07/utilidad-y-uso-de-explain-en-mysql/#comments</comments>
		<pubDate>Thu, 07 May 2009 16:21:50 +0000</pubDate>
		<dc:creator>Salvador Mendez</dc:creator>
				<category><![CDATA[BBDD]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Webmasters]]></category>
		<category><![CDATA[bases de datos]]></category>
		<category><![CDATA[informatica]]></category>
		<category><![CDATA[manual]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[optimizacion]]></category>

		<guid isPermaLink="false">http://www.sgmendez.com/?p=197</guid>
		<description><![CDATA[
A la hora de realizar una buena optimización de las consultas de MySQL habrá que prestar mucha atención a lo que dice la cláusula EXPLAIN. Su sintaxis es muy sencilla, basta anteponerlo a la consulta que queremos realizar para obtener toda la información.
EXPLAIN SELECT columna1, columna2 FROM tabla1 WHERE columna3 = &#8216;2&#8242;\G
El resultado que obtendremos [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-321" title="logo_mysql" src="http://www.sgmendez.com/wp-content/upload/2009/03/logo_mysql.gif" alt="logo_mysql" width="114" height="68" /></p>
<p>A la hora de realizar una buena optimización de las consultas de MySQL habrá que prestar mucha atención a lo que dice la cláusula EXPLAIN. Su sintaxis es muy sencilla, basta anteponerlo a la consulta que queremos realizar para obtener toda la información.</p>
<p>EXPLAIN SELECT columna1, columna2 FROM tabla1 WHERE columna3 = &#8216;2&#8242;\G</p>
<p>El resultado que obtendremos será el plan de ejecución de la consulta a la base de datos. Una explicación de como accederá MySQL a las diferentes columnas involucradas en la consulta. EXPLAIN devolverá:</p>
<ul>
<li>id: Es el identificador que EXPLAIN asignará a la consulta.</li>
<li>select_type: Tipo de consulta a analizar. Por ejemplo, si se trata de una consulta sencilla su valor será SIMPLE.</li>
<li>table: Nombre de la tabla a la que hacen referencia el resto de datos en la fila. Hay que tener en cuenta que el orden de las filas será el que utilizará MySQL para acceder a los datos.</li>
<li>type: Indica como MySQL combinará los datos de esa tabla.</li>
<li>possible_keys: Lista de los indices que se podrían utilizar, aunque podría no usarse ninguno.</li>
<li>key: Índice que finalmente se usará, si no se usa ninguno el valor del campo será NULL.</li>
<li>key_len: Tamaño del indice utilizado, si no se usó ninguno contendrá NULL.</li>
<li>ref: Muestra con que campo está relacionado el índice seleccionado.</li>
<li>rows: Número de registros que se tendrán que recuperar para ejecutar la consulta.</li>
<li>extra: Información adicional sobre la forma en que se obtendrán los datos.</li>
</ul>
<p>Con esta información es posible encontrar donde se producen los cuellos de botella en las consultas que realizamos a la base de datos, y nos permitirá optimizarlas para evitar que una consulta lenta provoque un retraso injustificado en la devolución de resultados a los usuarios. En el <a title="Optimizar consultas en MySQL" href="http://dev.mysql.com/doc/refman/5.0/en/using-explain.html" target="_blank">manual de MySQL</a> puedes encontrar más información.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sgmendez.com/2009/05/07/utilidad-y-uso-de-explain-en-mysql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Galite organiza unha xornada de Software Libre en Foz</title>
		<link>http://www.sgmendez.com/2009/03/12/galite-organiza-unha-xornada-de-software-libre-en-foz/</link>
		<comments>http://www.sgmendez.com/2009/03/12/galite-organiza-unha-xornada-de-software-libre-en-foz/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 04:43:31 +0000</pubDate>
		<dc:creator>Salvador Mendez</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Webmasters]]></category>
		<category><![CDATA[Webs]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Foz]]></category>
		<category><![CDATA[Galinux]]></category>
		<category><![CDATA[Galite]]></category>
		<category><![CDATA[taller]]></category>

		<guid isPermaLink="false">http://www.sgmendez.com/?p=311</guid>
		<description><![CDATA[Galite, o Grupo Asociado pola Libre Información e a Tecnoloxía, organiza o vindeiro 21 de marzo unha xornada sobre software libre no Concello de Foz. O encontro terá lugar na Casa da Xuventude da vila e estará aberta á participación de calquera persoa interesada en iniciarse ou afondar no coñecemento das tecnoloxías e os estándares [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sgmendez.com/wp-content/upload/2009/03/cartelcursodrupal.png"><img class="alignright size-medium wp-image-312" title="cartelcursodrupal" src="http://www.sgmendez.com/wp-content/upload/2009/03/cartelcursodrupal-106x300.png" alt="cartelcursodrupal" width="106" height="300" /></a>Galite, o <a href="http://www.galite.org/" target="_blank">Gr</a><a href="http://www.galite.org/" target="_blank">upo Asociado pola Libre Información e a Tecnoloxía</a>, organiza o vindeiro 21 de marzo unha xornada sobre software libre no Concello de Foz. O encontro terá lugar na Casa da Xuventude da vila e estará aberta á participación de calquera persoa interesada en iniciarse ou afondar no coñecemento das tecnoloxías e os estándares abertos.</p>
<p>A xornada iniciarase ás 12:00 horas coa presentación do Galinux, o sistema operativo libre e en galego promovido pola <a href="http://www.conselleriaiei.org/ga/dxpisi/index.php" target="_blank">Dirección Xeral de Promoción Industrial e da Sociedade da Información</a> e enmarcada no Plano Estratéxico Galego da Sociedade da Información (PEGSI 2007-2010).</p>
<p>A continuación impartirase un obradoiro titulado &#8220;Introdución a Drupal&#8221;, no que se abordará a instalación deste sistema de xestión de contidos (CMS), así como a súa configuración para a creación dunha web particular, empresarial ou unha comunidade online.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sgmendez.com/2009/03/12/galite-organiza-unha-xornada-de-software-libre-en-foz/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Herramientas para Wordpress</title>
		<link>http://www.sgmendez.com/2008/12/30/herramientas-para-wordpress/</link>
		<comments>http://www.sgmendez.com/2008/12/30/herramientas-para-wordpress/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 07:18:31 +0000</pubDate>
		<dc:creator>Salvador Mendez</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[Webmasters]]></category>
		<category><![CDATA[Webs]]></category>
		<category><![CDATA[Adsense]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[herramientas]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Wikipedia]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.sgmendez.com/?p=294</guid>
		<description><![CDATA[A través del blog de Andrés Nieto me entero de una recopilación de herramientas que han hecho en SixRevisions. Algunas de ellas ya las conocia, pero otras no y me han parecido de utilidad, así que aquí dejo el listado:

ScribeFire. Convierte a Firefox en un editor enriquecido conectado a tu blog.
Wordpress Helper. La documentación de [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-thumbnail wp-image-295 alignright" style="border: 0pt none; margin: 5px;" title="wordpress-logo" src="http://www.sgmendez.com/wp-content/upload/2008/12/wordpress-logo-150x150.png" alt="wordpress-logo" width="150" height="150" />A través del blog de <a href="http://www.anieto2k.com/2008/12/29/15-utiles-herramientas-para-usuarios-de-wordpress/" target="_blank">Andrés Nieto</a> me entero de una recopilación de herramientas que han hecho en <a href="http://sixrevisions.com/wordpress/15-useful-tools-for-wordpress-bloggers/" target="_blank">SixRevisions</a>. Algunas de ellas ya las conocia, pero otras no y me han parecido de utilidad, así que aquí dejo el listado:</p>
<ul>
<li><strong><a href="http://www.scribefire.com/" target="_blank">ScribeFire</a></strong>. Convierte a Firefox en un editor enriquecido conectado a tu blog.</li>
<li><a href="http://www.schloebe.de/firefox-extensions/wordpress-helper/#english" target="_blank"><strong>Wordpress Helper</strong></a>. La documentación de Wordpress disponible en Firefox, muy recomendable para poder echar un vistazo en cuanto lo necesites.</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/8204" target="_blank"><strong>Screen Grab to Wordpress</strong></a>. Permite hacer capturas de pantalla y enviarlas directamente a Wordpress.</li>
<li><a href="http://blogsecurity.net/wordpress/tools/wp-scanner/" target="_blank"><strong>Wordpress Scanner</strong></a>. Revisa la seguiridad de tu blog, nunca se sabe cuando puedes recibir un ataque que destroce todo el trabajo realizado.</li>
<li><a href="http://wordpress.org/extend/plugins/broken-link-checker/" target="_blank"><strong>Broken Link Checker</strong></a>. Con este plugin puedes revisar los enlaces que tengas en tu blog y saber cuales ya no están diponibles. Muy útil cuando tienes muchos enlaces.</li>
<li><a href="http://wordpress.org/extend/plugins/google-syntax-highlighter/" target="_blank"><strong>Google Syntactic Hichlighter</strong></a>. Mejora la visiulización de tus artículos.</li>
<li><a href="http://www.prelovac.com/vladimir/wordpress-plugins/insights" target="_blank"><strong>Insights</strong></a>. Abre tu blog a los nuevos servicios disponibles en la red como Flickr, Youtube o la Wikipedia.</li>
<li><a href="http://download.live.com/writer" target="_blank"><strong>Windows Live Writer</strong></a>. Con la aplicación de Microsoft podemos crear nuestros artículos offline. Aunque yo no le veo mucha utilidad, ¿será porque soy usuario de Linux?</li>
<li><a href="http://wordpress.org/extend/plugins/revision-control/" target="_blank"><strong>Revision Control</strong></a>. Este plugin nos permitirá llevar un control de las revisiones que se realizan de cada artículo, muy útil en blogs con varios autores.</li>
<li><strong><a href="http://unfoldingneurons.com/neurotic-plugins/organize-series-wordpress-plugin" target="_blank">Organize Series</a></strong>. Si estabas pensando en crear un tutorial que va a llevar muchos artículos, este es el complento ideal, te permite hacer una serie de artículos relacionados entre si.</li>
<li><a href="http://www.howtogeek.com/howto/the-geek-blog/how-to-geek-software-wordpress-comment-moderation-notifier/" target="_blank"><strong>Wordpress Comment Moderation Notifiers</strong></a>. Herramienta que te ayudará a controlar los comentarios.</li>
<li><a href="http://userscripts.org/scripts/show/12239" target="_blank"><strong>Wordpress Comment Ninja</strong></a>. Si quieres extender las posibilidades de control sobre los comentarios.</li>
<li><a href="http://wordpress.org/extend/plugins/adserve/" target="_blank"><strong>Adserve</strong></a>. Controla la publicidad de tu wordpress.</li>
<li><a href="http://wordpress.org/extend/plugins/simple-tags/" target="_blank"><strong>Simple Tags</strong></a>. Si cuando escribes un artículo no sabes que tags lo describen, esta herramienta de hará algunas sugerencias.</li>
<li><strong><a href="http://wordpress.org/extend/plugins/twitter-tools/" target="_blank">Twitter Tools</a></strong>. Este herramienta te permitirá lanzar a Twitter un micropost cada vez que escribas un artículo.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.sgmendez.com/2008/12/30/herramientas-para-wordpress/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Replicación en MySQL 5.0</title>
		<link>http://www.sgmendez.com/2008/12/24/replicacion-maestro-esclavo-mysql/</link>
		<comments>http://www.sgmendez.com/2008/12/24/replicacion-maestro-esclavo-mysql/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 10:31:08 +0000</pubDate>
		<dc:creator>Salvador Mendez</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[Webmasters]]></category>
		<category><![CDATA[bases de datos]]></category>
		<category><![CDATA[configuracion]]></category>
		<category><![CDATA[Esclavo]]></category>
		<category><![CDATA[Maestro]]></category>
		<category><![CDATA[manual]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[replicacion]]></category>

		<guid isPermaLink="false">http://www.sgmendez.com/?p=283</guid>
		<description><![CDATA[La replicación en MySQL se realiza entre un servidor Maestro (el que contine los datos originales) y uno o varios servidores Esclavos (los que replican los datos). Se realiza utilizando el log binario de MySQL, cuando se realiza un cambio en la base de datos del servidor Maestro, esto cambios son enviados al Esclavo para [...]]]></description>
			<content:encoded><![CDATA[<p>La replicación en MySQL se realiza entre un servidor Maestro (el que contine los datos originales) y uno o varios servidores Esclavos (los que replican los datos). Se realiza utilizando el log binario de MySQL, cuando se realiza un cambio en la base de datos del servidor Maestro, esto cambios son enviados al Esclavo para que los actualice. Hay que tener en cuenta que la replicación sólo se puede realizar en una dirección, del Maestro hacia el Esclavo, y no bidireccinalmente.</p>
<p>El servidor Esclavo mantiene una conexión permanentemente abierta con el Maestro y se comprueba la ultima posición escrita en el log binario del Maestro, cuando se detectan cambios estos se replican el las tablas del servidor Esclavo.</p>
<p>Antes de ponerse a configurar MySQL con una replicación, hay que tener en cuenta la compatibilidad entre versiones. Como norma general debería de intentarse que la versión de MySQL del Maestro y del Esclavo fuesen la misma, y lo más actualizada posible. De todos modos, un Esclavo con una versión más actualizada que el Maestro suele funcionar, pero no al contrario.</p>
<p>Una vez que conocemos como funciona, y realizadas las comprobaciones de versiones podemos configurar Maestro y Esclavo para que ejecuten la replicación. Comenzaremos por la configuración del Maestro. Debemos editar el fichero <em>my.cnf</em> que encontraremos normalmente en <em>/etc/my.cnf</em> o en <em>/etc/mysql/my.cnf</em> dependiendo del sistema que usemos.</p>
<p><span id="more-283"></span></p>
<p>Debemos buscar y editar, o crear en caso de que no existan, dentro de la sección [<em>mysql</em>] las siguientes líneas:</p>
<p><em>[mysql]<br />
log-bin = mysql-bin<br />
server-id = 1<br />
binlog_do_db = base_de_datos_a_replicar, db2, db3<br />
binlog_ignore_db = bases_de_datos_a_ignorar, db4, db5<br />
</em></p>
<p>La opción <em>log-bin</em> activa el log binario de mysql, y <em>server-id</em> sirve para indicar el id del servidor maestro, debe ser un número entero positivo entre 1 y 2³². Con <em>binlog_do_db</em> le indicamos las bases de datos que queremos copiar (separadas por comas) y con <em>binlog_ignore_db</em> aquellas que no queremos replicar. Una vez realizados los cambios debemos reiniciar el servidor mysql.</p>
<p>Ahora necesitamos crear un usuario en el Maestro (se recomienda que se use un usuario de MySQL exclusivamente para hacer la replicación) y asignarle los permisos de replicación con el siguiente comando:</p>
<p><em>mysql&gt; GRANT REPLICATION SLAVE ON *.* </em><br />
<em> -&gt; TO &#8216;usuario_replicacion&#8217;@'%&#8217; </em><br />
<em> -&gt; IDENTIFIED BY &#8216;pass_usuario&#8217;;</em><br />
<em>mysql&gt; FLUSH PRIVILEGES;</em><br />
<em>mysql&gt; LOCK ALL TABLES READ ONLY;</em></p>
<p>Debemos sustituir <em>usuario_replicacion</em> por el nombre de usuario que hemos creado para hacer la repicación y <em>pass_usuario</em> por la contraseña de ese usuario. El valor <em>&#8216;%&#8217;</em> indica que ese usuario puede acceder desde cualquier host remoto, si queremos indicarle que pueda acceder desde un determinado nombre de dominio o IP debemos cambiar <em>%</em> por la IP o nombre de dominio que queramos que acceda a la replicación.</p>
<p>En el fichero de configuración del Esclavo debemos indicarle un server-id distinto del servidor Maestro, también un número entero positivo entre 1 y 2³². Por ejemplo:</p>
<p><em>[mysql]<br />
server-id = 2<br />
</em></p>
<p>Si se están configurando varios esclavos cada uno de ellos debe de tener un server-id único, y diferentes del server-id del maestro. Una vez guardados los cambios reinicia el servidor MySQL.</p>
<p>Ahora ya tenemos listos Maestro y Esclavo para realizar la conexión. Ahora debemos hacer un volcado de la base de datos del servidor Maestro que queremos replicar:</p>
<p><em>[root@servidor-maestro]:~$ mysqldump -u usuario -p nombre_db &gt; nombre_db.sql</em></p>
<p>Con este comando haremos un volcado de la base de datos a un fichero. Debemos sustituir <em>nombre_db</em> por el nombre de la base de datos que vamos a replicar y <em>usuario</em> por el nombre del usuario con privilegios de administracion. Si no tenemos contraseña para ese usuario no incluiremos la opción <em>-p</em>, en caso contrario nos pedirá la contraseña antes de realizar el volcado.</p>
<p>Ya solo nos queda un paso en el Maestro, conocer el nombre del log binario que se está utiliando y la posición del mismo, accedemos a la línea de comandos de MySQL y ejecutamos:</p>
<p><em>mysql&gt; SHOW MASTER STATUS;<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+<br />
| File                         | Position | Binlog_Do_DB | Binlog_Ignore_DB  |<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+<br />
| mysql-bin.0005 |           98  |                                 |                                        |<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+</em></p>
<p>Guardamos esos datos y desbloqueamos las tablas del maestro con:</p>
<p><em>mysql&gt; UNLOCK ALL TABLES;</em></p>
<p>Ahora volvemos al esclavo y cargamos el volvado de la base de datos del maestro que realizamos antes:</p>
<p><em>[root@servidor-esclavo]:~$ mysql -u usuario -p nombre_db &lt; nombre_db.sql</em></p>
<p>Cuando se temine la carga de la base de datos, accedemos a la línea de comandos de MySQL del esclado para indicarle los datos del maestro e iniciar el esclavo:</p>
<p><em>mysql&gt; CHAGE MASTER TO MASTER_HOST = &#8216;ip_del_servidor_maestro&#8217;;</em><br />
<em>mysql&gt; CHAGE MASTER TO MASTER_USER = &#8216;usuario_replicacion&#8217;;</em><br />
<em>mysql&gt; CHAGE MASTER TO MASTER_PASSWORD = &#8216;pass_usuario&#8217;;</em><br />
<em>mysql&gt; CHAGE MASTER TO MASTER_LOG_FILE = &#8216;mysql-bin.0005&#8242;;</em><br />
<em>mysql&gt; CHAGE MASTER TO MASTER_LOG_POS = 98;</em><br />
<em>mysql&gt; START SLAVE;</em></p>
<p>Después de esto el servidor Esclavo iniciará la replicación copiando todo lo sucedido desde la posición del log binario indicada hasta ese instante. Para confirmar que todo es correcto podemos ejecutar el siguiente comando en la consola de MySQL:</p>
<p><em>mysql&gt; SHOW SLAVE STATUS \G</em><br />
<em>****************** 1. Row ***********************</em><br />
<em>Slave_IO_State: Waiting for master to send event</em><br />
<em>Master_Host: 192.168.1.54</em><br />
<em>Master_User: usuario_replica</em><br />
<em>Master_Port: 3306</em><br />
<em>Connect_Retry: 60</em><br />
<em>Master_Log_File: mysql-bin.0005</em><br />
<em>Read_Master_Log_Pos: 98</em><br />
<em>Relay_Log_File: esclavo-rely-bin.0001</em><br />
<em>Relay_Log_Pos: 105</em><br />
<em>Slave_IO_Running: Yes</em><br />
<em>Slave_SQL_Running: Yes</em><br />
<em>Seconds_Behind_Master: 0</em></p>
<p>Aunque apareceran más cosas, las he omitido, lo que debeis tener en cuenta es <em>Seconds_Behind_Master</em> pues indica el tiempo en segundos que el Esclavo tiene con respecto al Maestro. Creo que no me queda nada, teneis más información en el <a href="http://dev.mysql.com/doc/refman/5.0/es/replication.html" target="_blank">manual de MySQL</a>, y si teneis alguna duda dejadla en los comentarios.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sgmendez.com/2008/12/24/replicacion-maestro-esclavo-mysql/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Wordpress 2.7 disponible</title>
		<link>http://www.sgmendez.com/2008/12/11/wordpress-27-disponible/</link>
		<comments>http://www.sgmendez.com/2008/12/11/wordpress-27-disponible/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 21:35:40 +0000</pubDate>
		<dc:creator>Salvador Mendez</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[Webmasters]]></category>
		<category><![CDATA[Webs]]></category>
		<category><![CDATA[actualizacion]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.sgmendez.com/?p=264</guid>
		<description><![CDATA[Aunque este blog ya venía usando las versiones preliminares de la versión 2.7 de Wordpress, no he querido hablar de ella hasta que fuese lanzada definitivamente, y a pesar de llegar 1 día tarde, ya esta diponible. La nueva versión ha realizado un profundo cambio en la interface del panel de administración, por lo que [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-265" style="border: 0pt none; margin-left: 5px; margin-right: 5px;" title="wordpress" src="http://www.sgmendez.com/wp-content/upload/2008/12/wordpress-300x195.png" alt="wordpress" width="300" height="195" />Aunque este blog ya venía usando las versiones preliminares de la versión 2.7 de Wordpress, no he querido hablar de ella hasta que fuese lanzada definitivamente, y a pesar de <a href="http://www.sgmendez.com/2008/10/06/wordpress-27-lanzamiento-el-10-de-noviembre/">llegar 1 día tarde</a>, ya esta diponible. La nueva versión ha realizado un profundo cambio en la interface del panel de administración, por lo que al principio puede llevar un poco de tiempo descubrir donde estan las cosas. Pero en mi humilde opinión el cambio ha sido magnífico.</p>
<p>Entre las nuevas caracterísiticas de Wordpress 2.7, llamada Coltrane, cabe destacar:</p>
<ul>
<li>mayor uso de javascript</li>
<li>cambio del menu superior por uno lateral a la izquierda</li>
<li>acceso más rapido a todas las secciones</li>
<li>posibilidad de minimizar el área de menu, aumentado el área de trabajo</li>
<li>personalización del area de trabajo, pudiendo arrastrar los modulos para colocarlos</li>
</ul>
<p>Pero esto no es todo lo que podrás encontrar en la versión 2.7 de Wordpress, si no lo has hecho ya, te recomiendo que actualices tu blog, seguro que después no querrás volver a las versiones anteriores.</p>
<p>[<a href="http://wordpress.org/latest.zip" target="_blank">Descargar Wordpress 2.7</a>] [<a href="http://es.wordpress.org/wordpress-2.7-es_ES.zip" target="_blank">Versión en español Worpress 2.7</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sgmendez.com/2008/12/11/wordpress-27-disponible/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fisgoneando las visitas de una web</title>
		<link>http://www.sgmendez.com/2008/11/20/fisgoneando-las-visitas-de-una-web/</link>
		<comments>http://www.sgmendez.com/2008/11/20/fisgoneando-las-visitas-de-una-web/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 16:58:46 +0000</pubDate>
		<dc:creator>Salvador Mendez</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Webmasters]]></category>
		<category><![CDATA[Webs]]></category>
		<category><![CDATA[2.0]]></category>
		<category><![CDATA[Estadisticas]]></category>
		<category><![CDATA[servicios]]></category>

		<guid isPermaLink="false">http://www.sgmendez.com/?p=234</guid>
		<description><![CDATA[StatBrain es un servicio que nos permite conocer una aproximación de las visitas diarias que recibe una web, así como un pequeño informe de en donde está localizado el servidor que la aloja, el ranking de Alexa y los enlaces que tiene desde Google, Yahoo, Altavista y AllTheWeb.
Entre las utilidades que le encuentro a primera [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.statbrain.com/" target="_blank">StatBrain </a>es un servicio que nos permite conocer una aproximación de las visitas diarias que recibe una web, así como un pequeño informe de en donde está localizado el servidor que la aloja, el ranking de Alexa y los enlaces que tiene desde Google, Yahoo, Altavista y AllTheWeb.</p>
<p>Entre las utilidades que le encuentro a primera vista a este servicio están el de conocer una aproximación de webs de la competencia o el de decidir si una web es rentable para insertar tu publicidad en ella. No quiero decir con esto que sea una buena herramienta para decidir lo mejor para una campaña publicitaria y su rendimiento, sino que es un factor a tener en cuenta.</p>
<p>Después de probar la herramienta con algunas de mis webs, puedo sacar algunas conclusiones. La primera sería sobre la estadística de visitas, es solo una aproximación pero bastante realista. La segunda es sobre el apartado de la localización del pais de la pagina. Si esta está alojada en Estados Unidos, aunque sea una pagina destinada al mercado español, será comparada con sitios en Estados Unidos y no sitios de España.</p>
<p>Vía: <a href="http://www.elwebmaster.com/articulos/statbrain-conoce-las-visitas-diarias-de-cualquier-web" target="_blank">elWebmaster</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sgmendez.com/2008/11/20/fisgoneando-las-visitas-de-una-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agrega funcionalidad a tu Wordpress</title>
		<link>http://www.sgmendez.com/2008/11/17/agrega-funcionalidad-a-tu-wordpress/</link>
		<comments>http://www.sgmendez.com/2008/11/17/agrega-funcionalidad-a-tu-wordpress/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 10:47:49 +0000</pubDate>
		<dc:creator>Salvador Mendez</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Webmasters]]></category>
		<category><![CDATA[funciones]]></category>
		<category><![CDATA[personalizacion]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.sgmendez.com/?p=205</guid>
		<description><![CDATA[Dentro de cada theme de Wordpress podemos encontrar un fichero llamado functions.php, su función es poder ampliar la funcionalidad de nuestra copia de Wordpress desde el propio theme, lo que implica que cuando actualicemos a una nueva versión no tengamos que volver a definir nuestas funciones. A través de aNieto2K descubro que Matt Varone muestra [...]]]></description>
			<content:encoded><![CDATA[<p>Dentro de cada theme de Wordpress podemos encontrar un fichero llamado functions.php, su función es poder ampliar la funcionalidad de nuestra copia de Wordpress desde el propio theme, lo que implica que cuando actualicemos a una nueva versión no tengamos que volver a definir nuestas funciones. A través de <a href="http://www.anieto2k.com/2008/11/12/funciones-personalizadas-en-tu-wordpress/" target="_blank">aNieto2K</a> descubro que <a href="http://www.mattvarone.com/" target="_blank">Matt Varone</a> muestra dos recopilaciones de funciones para añadir a nuestro functions.php y ayudarnos a ampliar su funcionalidad.</p>
<p><a href="http://www.mattvarone.com/wordpress/functionsphp-wordpress-themes/" target="_blank">Descargar funciones 1</a> | <a href="http://www.mattvarone.com/wordpress/useful-functions-for-wordpress/" target="_blank">Descargar funciones 2</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sgmendez.com/2008/11/17/agrega-funcionalidad-a-tu-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

