<?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>unijimpe</title>
	<atom:link href="https://blog.unijimpe.net/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.unijimpe.net</link>
	<description>Desarrollo Web: PHP, MySQL, jQuery, SEO</description>
	<lastBuildDate>Sun, 26 May 2024 20:47:36 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>
	<item>
		<title>Configura tus páginas para compartir en Facebook</title>
		<link>https://blog.unijimpe.net/configura-tus-paginas-para-compartir-en-facebook/</link>
					<comments>https://blog.unijimpe.net/configura-tus-paginas-para-compartir-en-facebook/#comments</comments>
		
		<dc:creator><![CDATA[unijimpe]]></dc:creator>
		<pubDate>Thu, 26 Feb 2015 04:24:33 +0000</pubDate>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[compartir]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[metatags]]></category>
		<category><![CDATA[og:tags]]></category>
		<guid isPermaLink="false">http://blog.unijimpe.net/?p=1403</guid>

					<description><![CDATA[<p>Con el uso extendido de las redes sociales es muy común que los visitantes a una web compartan el contenido en Facebook, pero si no tenemos cuidado en la configuración de nuestra página el resultado puede &#8230;</p>]]></description>
										<content:encoded><![CDATA[<p>Con el uso extendido de las redes sociales es muy común que los visitantes a una web compartan el contenido en Facebook, pero si no tenemos cuidado en la configuración de nuestra página el resultado puede no ser el mejor.</p>
<p>Primera veamos el código de una página que no ha tenido en cuenta la configuración adecuada para ser compartida en Facebook:</p>
<pre class="highlight html">
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot; /&gt;
&lt;title&gt;SEO Parser | Search Engine analysis tool&lt;/title&gt;
</pre>
<p>Se puede ver que sólo se ha utiliza el tag para el título de la página, si esta se comparte en Facebook se obtiene el siguiente resultado el cual no muestra la imagen de nuestra página y un resumen del contenido.</p>
<p><img decoding="async" src="http://blog.unijimpe.net/wp-content/uploads/2015/02/share-ogtags-not.png" alt="share-ogtags-not" width="470" height="158" class="alignnone size-full wp-image-1404" srcset="https://blog.unijimpe.net/wp-content/uploads/2015/02/share-ogtags-not.png 470w, https://blog.unijimpe.net/wp-content/uploads/2015/02/share-ogtags-not-300x101.png 300w" sizes="(max-width: 470px) 100vw, 470px" /></p>
<p><strong>Utilizando og:tags</strong></p>
<p>Para personalizar el contenido que se desea compartir, Facebook pone a disposición una seria de metatags HTML llamados <strong>og:tags</strong>, los mas importantes para compartir son los siguientes:</p>
<ul>
<li><strong>og:url</strong> es el url absoluto de la página que se esta compartiendo.</li>
<li><strong>og:title</strong> es el título que se mostrará al compartir en Facebook.</li>
<li><strong>og:description</strong> es un resumen del contenido que se comparte.</li>
<li><strong>og:image</strong> contiene la ruta de la imagen que se mostrará.</li>
</ul>
<p>Luego si tenemos en cuenta estas metatags, podemos personalizar el contenido que deseamos compartir para nuestra página.</p>
<pre class="highlight html">
&lt;meta http-equiv=&quot;Content-Type&quot; content&quot;text/html; charset=UTF-8&quot; /&gt;
&lt;title&gt;SEO Parser | Search Engine analysis tool&lt;/title&gt;
&lt;meta property=&quot;og:url&quot; content=&quot;http://seoparser.com&quot; /&gt;
&lt;meta property=&quot;og:title&quot; content=&quot;SEO Parser&quot; /&gt;
&lt;meta property=&quot;og:description&quot; content=&quot;SEO Parser is a SEO analysis tool that can examine and understand how to view a Web page on Search Engines.&quot; /&gt;
&lt;meta property=&quot;og:image&quot; content=&quot;http://seoparser.com/img/seo-parser.png&quot; &gt;
</pre>
<p>Con lo cual obtenemos el siguiente resultado, el cual obviamente es muestra de manera correcta el contenido de nuestra web.</p>
<p><img loading="lazy" decoding="async" src="http://blog.unijimpe.net/wp-content/uploads/2015/02/share-ogtags-yes.png" alt="share-ogtags-yes" width="470" height="158" class="alignnone size-full wp-image-1405" srcset="https://blog.unijimpe.net/wp-content/uploads/2015/02/share-ogtags-yes.png 470w, https://blog.unijimpe.net/wp-content/uploads/2015/02/share-ogtags-yes-300x101.png 300w" sizes="auto, (max-width: 470px) 100vw, 470px" /></p>
<p><strong>Depuración de los og:tags</strong></p>
<p>Finalmente hay que saber que Facebook hace una copia temporal de contenido que se esta intentando compartir, por lo que una vez que se ha intentado compartir este contenido se utilizará posteriormente compartir en Facebook y se actualizará es las siguientes horas.</p>
<p>Entonces para visualizar el contenido final que estamos compartiendo Facebook ha creado una herramienta llamada: <a href="https://developers.facebook.com/tools/debug/og/object/">Open Graph Object Debugger</a> que muestra: el contenido actual de nuestra página, un resumen de los tags utilizados y alertas en caso falten o esten errados alguns tags.</p>
<p><strong>Mas Información</strong></p>
<ul>
<li><a href="https://developers.facebook.com/docs/web/webmasters/">Facebook: Basics for Webmasters</a></li>
<li><a href="https://developers.facebook.com/tools/debug/og/object/">Facebook: Open Graph Object Debugger</a></li>
<li><a href="http://davidwalsh.name/facebook-meta-tags">Facebook Open Graph META Tags</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.unijimpe.net/configura-tus-paginas-para-compartir-en-facebook/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Precarga tu página con jQuery y CSS</title>
		<link>https://blog.unijimpe.net/precargar-tu-pagina-con-jquery-y-css/</link>
					<comments>https://blog.unijimpe.net/precargar-tu-pagina-con-jquery-y-css/#comments</comments>
		
		<dc:creator><![CDATA[unijimpe]]></dc:creator>
		<pubDate>Sun, 11 May 2014 23:36:56 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[load]]></category>
		<category><![CDATA[precargador]]></category>
		<category><![CDATA[ready]]></category>
		<guid isPermaLink="false">http://blog.unijimpe.net/?p=1378</guid>

					<description><![CDATA[<blockquote><p>Este artículo es antiguo, puedes leer una versión actualizada en: <br /><a href="https://www.kodetop.com/como-agregar-un-precargador-a-tu-pagina-web/">Cómo agregar un Precargador a tu Página Web</a></p></blockquote>
<p>Precargar una página es importante para mejorar la experiencia del usuario, esto en caso nuestra página sea muy &#8230;</p>]]></description>
										<content:encoded><![CDATA[<blockquote><p>Este artículo es antiguo, puedes leer una versión actualizada en: <br /><a href="https://www.kodetop.com/como-agregar-un-precargador-a-tu-pagina-web/">Cómo agregar un Precargador a tu Página Web</a></p></blockquote>
<p>Precargar una página es importante para mejorar la experiencia del usuario, esto en caso nuestra página sea muy pesada o por que cuando la página no se ha cargado completamente se puede ver desordenada o incompleta.</p>
<p><a href="http://samples.unijimpe.net/html-preloader/" target="_blank" rel="noopener"><img loading="lazy" decoding="async" src="http://blog.unijimpe.net/wp-content/uploads/2014/05/preloader.png" alt="preloader" width="500" height="358" class="alignnone size-full wp-image-1379" srcset="https://blog.unijimpe.net/wp-content/uploads/2014/05/preloader.png 500w, https://blog.unijimpe.net/wp-content/uploads/2014/05/preloader-300x214.png 300w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></p>
<p><strong>Un poco de teoría</strong></p>
<p>Para inicializar una página se realiza con el evento <code>ready</code> es decir cuando se cargado el DOM o HTML, además de ello existe el evento <code>load</code> el cual se ejecuta cuando ademas del HTML se ha cargado todo el contenido (imágenes, css, etc). </p>
<pre class="highlight">
$(document).ready(function(e) {
   // html loaded
});
$(document).load(function(e) {
   // html + images + css loaded
});
</pre>
<p>Entonces lo que haremos es agregar un <code>div</code> que cubra toda la página y una vez que todo el contenido se haya cargado ocultar este <code>div</code> para develar el contenido de nuestra web.</p>
<p><strong>Implementado en Precargador</strong></p>
<p>Lo primero es editar nuestro HTML y crear un <code>div</code> que contendrá la imagen de un precargador.</p>
<pre class="highlight html">
&lt;div id=&quot;preloader&quot;&gt;
    &lt;div id=&quot;loader&quot;&gt;&amp;nbsp;&lt;/div&gt;;
&lt;/div&gt;;
</pre>
<p>Luego agregamos código CSS para hacer que este <code>div</code> recién creado se muestre cubriendo completamente nuestra página:</p>
<pre class="highlight">
body {
    overflow: hidden;
}
/* preloader */
#preloader {
    position: fixed;
    top:0; left:0;
    right:0; bottom:0;
    background: #000;
    z-index: 100;
}
#loader {
    width: 100px;
    height: 100px;
    position: absolute;
    left:50%; top:50%;
    background: url(../img/loader.gif) no-repeat center 0;
    margin:-50px 0 0 -50px;
}
</pre>
<p>Finalmente agregamos el código javascript, para ello detectamos que se ha completado la carga de  todo el contenido del HTML utilizando el método ready y utilizamos una transición para ocultar el div creado previamente con lo cual se devela nuestra página.</p>
<pre class="highlight">
$(window).load(function() {
	$('#preloader').fadeOut('slow');
	$('body').css({'overflow':'visible'});
})
</pre>
<p><strong>Finalizando</strong></p>
<p>Ahora que tenemos todo el proceso lo vamos a unir en un solo archivo html para hacer las pruebas respectivas:</p>
<pre class="highlight html">
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Preloader Demo&lt;/title&gt;
&lt;style type=&quot;text/css&quot;&gt;
body {
    overflow: hidden;
}
/* preloader */
#preloader {
    position: fixed;
    top:0; left:0;
    right:0; bottom:0;
    background: #000;
    z-index: 100;
}
#loader {
    width: 100px;
    height: 100px;
    position: absolute;
    left:50%; top:50%;
    background: url(img/loader.gif) no-repeat center 0;
    margin:-50px 0 0 -50px;
}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id=&quot;preloader&quot;&gt;
   &lt;div id=&quot;loade&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;main&quot;&gt;
   ...
&lt;/div&gt;
&lt;script src=&quot;jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
$(window).load(function() {
	$(&#039;#preloader&#039;).fadeOut(&#039;slow&#039;);
	$(&#039;body&#039;).css({&#039;overflow&#039;:&#039;visible&#039;});
})
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Pueden ver el ejemplo funcionando en: <a href="http://samples.unijimpe.net/html-preloader/">http://samples.unijimpe.net/html-preloader/</a>. Obviamente este es un precargador básico pero que cumple con lo necesario para mostrar al usuario una precarga. </p>
<p>Les dejo los archivos para que puedan hacer sus pruebas: cambiando el color de fondo  o cambiando la imágen de precarga, todo depende de su creatividad y de  gráfica que desean utilzar.</p>
<p>[download id=»62&#8243; format=»2&#8243;]</p>
<p><strong>Mas Información</strong></p>
<ul>
<li><a href="http://niklausgerber.com/blog/preloadme-a-lightweight-jquery-website-preloader/">PreLoadMe, a lightweight jQuery website preloader</a></li>
<li><a href="http://www.gayadesign.com/scripts/queryLoader2/">QueryLoader v2 demo page</a></li>
<li><a href="http://www.alessioatzeni.com/blog/css3-preloader-animation-for-only-user-agent-supports-it/">CSS3 Preloader Animation for only User Agent supports it</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.unijimpe.net/precargar-tu-pagina-con-jquery-y-css/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Detectar si un usuario ha hecho Like en Facebook</title>
		<link>https://blog.unijimpe.net/detectar-si-un-usuario-ha-hecho-like-en-facebook/</link>
					<comments>https://blog.unijimpe.net/detectar-si-un-usuario-ha-hecho-like-en-facebook/#comments</comments>
		
		<dc:creator><![CDATA[unijimpe]]></dc:creator>
		<pubDate>Tue, 06 May 2014 05:23:26 +0000</pubDate>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[like]]></category>
		<category><![CDATA[page tab]]></category>
		<category><![CDATA[tip]]></category>
		<guid isPermaLink="false">http://blog.unijimpe.net/?p=1376</guid>

					<description><![CDATA[<p>En este artículo explicamos como detectar con PHP si un usuario ha hecho «Like» o «Me Gusta» en una página en Facebook, esto sirve para mostrar información diferente a los visitantes si es que son seguidores &#8230;</p>]]></description>
										<content:encoded><![CDATA[<p>En este artículo explicamos como detectar con PHP si un usuario ha hecho «Like» o «Me Gusta» en una página en Facebook, esto sirve para mostrar información diferente a los visitantes si es que son seguidores de nuestra página en Facebook.</p>
<p>Cada vez que uno carga un «Page Tab» este carga el contenido de nuestra página en un iframe y para mantener la comunicación Facebook le pasa el parámetro <code>signed_request</code>, veamos que contiene utilizando código PHP:</p>
<pre class="highlight">
print_r($_REQUEST[&quot;signed_request&quot;]);
</pre>
<p>El cual devuelve el siguiente resultado:</p>
<pre class="highlight">
iP42q6CeqojKjTV8XSWFcbaShHFtqqreb93rPz2Byew.eyJhbGdvcml0aG0iOiJITUFDLVNI
QTI1NiIsImlzc3VlZF9hdCI6MTM5OTM1MjE0OSwicGFnZSI6eyJpZCI6IjU3MjY5NzYyNDYw
IiwibGlrZWQiOnRydWUsImFkbWluIjp0cnVlfSwidXNlciI6eyJjb3VudHJ5IjoicGUiLCJs
b2NhbGUiOiJlbl9VUyIsImFnZSI6eyJtaW4iOjIxfX19
</pre>
<p>Como podemos el resultado está codificado y no se puede entender a simple vista. Pero gracias a las multiples contribuciones de los desarrolladores en internet, tenemos la función <code>parse_signed_request</code> que sirve para decodificar esta información.</p>
<pre class="highlight">
function parse_signed_request($request) {
	list($sig, $pay) = explode('.', $request, 2); 
	$data = json_decode(base64_decode(strtr($pay, '-_', '+/')), true);
	return $data;
}
</pre>
<p>Utilizando esta función para decodificar la información que viene de Facebook:</p>
<pre class="highlight">
$fbdata = parse_signed_request($_REQUEST[&quot;signed_request&quot;]);
print_r($fbdata);
</pre>
<p>Este código devuelve el siguiente resultado:</p>
<pre class="highlight">
Array
(
    [algorithm] =&gt; HMAC-SHA256
    [issued_at] =&gt; 1399352590
    [page] =&gt; Array
        (
            [id] =&gt; 57269762460
            [liked] =&gt; 1
            [admin] =&gt; 1
        )
    [user] =&gt; Array
        (
            [country] =&gt; pe
            [locale] =&gt; en_US
            [age] =&gt; Array
                (
                    [min] =&gt; 21
                )
        )
)
</pre>
<p>Ahora si podemos identificar que el resultado devuelto es un array el cual contiene un parámetro llamado <code>liked</code> que contiene el valor de «1» cuando se ha dado like a la página o vacío cuando no se ha dado like a la página. </p>
<p>Finalmente en base a toda la información podemos detectar si un usuario le ha dato like a una página:</p>
<pre class="highlight">
function parse_signed_request($request) {
	list($sig, $pay) = explode('.', $request, 2); 
	$data = json_decode(base64_decode(strtr($pay, '-_', '+/')), true);
	return $data;
}

$fbdata = parse_signed_request($_REQUEST[&quot;signed_request&quot;]);

if ($fbdata[&quot;page&quot;][&quot;liked&quot;] == 1) {
	echo &quot;LIKED&quot;;
} else {
	echo &quot;NO LIKED&quot;;	
}
</pre>
<p>Para los usuarios que necesitan todo terminado les dejo el archivo con el ejemplo básico para descarga.</p>
<p>[download id=»61&#8243; format=»2&#8243;]</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.unijimpe.net/detectar-si-un-usuario-ha-hecho-like-en-facebook/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Seguimiento de enlaces externos con Google Analytics</title>
		<link>https://blog.unijimpe.net/seguimiento-de-enlaces-externos-con-google-analytics/</link>
					<comments>https://blog.unijimpe.net/seguimiento-de-enlaces-externos-con-google-analytics/#comments</comments>
		
		<dc:creator><![CDATA[unijimpe]]></dc:creator>
		<pubDate>Mon, 16 Jul 2012 04:06:24 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[google analytics]]></category>
		<category><![CDATA[tips]]></category>
		<guid isPermaLink="false">http://blog.unijimpe.net/?p=1321</guid>

					<description><![CDATA[<p>Al implementar una página es importante conocer el comportamiento de los usuarios al visitar nuestra web, cuales son las páginas mas visitadas, cuantas veces se ha completado un formulario, entre otros. Ello nos permitirá detectar y &#8230;</p>]]></description>
										<content:encoded><![CDATA[<p>Al implementar una página es importante conocer el comportamiento de los usuarios al visitar nuestra web, cuales son las páginas mas visitadas, cuantas veces se ha completado un formulario, entre otros. Ello nos permitirá detectar y hacer los ajustes necesarios para mejorar la experiencia del usuario en nuestra página.</p>
<p><strong>Seguimiento de Enlaces salientes</strong></p>
<p>Los enlaces externos o salientes son los enlaces a webs externas, conocer a que páginas se van los usuarios nos permitirá detectar que buscan los usuarios así como las páginas de salida.</p>
<p>Para hacer el seguimiento necesitamos incluir el código de seguimiento de <a href="http://www.google.com.pe/analytics/">Google Analytics</a>, si aún no lo han hecho pueden leer <a href="http://blog.unijimpe.net/tips-para-incluir-el-codigo-de-google-analytics/">Tips para incluir el código de Google Analytics</a>.  </p>
<p><strong>Seguimiento de Enlaces salientes con Javascript</strong></p>
<p>Si tenemos enlaces salientes, podríamos agregar una función que registre estos enlaces como un evento de Google Analytics. Creamos una función que registra un evento sobre la categoría &#8216;Outbound&#8217;.</p>
<pre class="highlight">
function trackLink(link) {
	_gaq.push(['_trackEvent', 'Outbound', 'Click', link.href]);
}
</pre>
<p>Luego cuando coloquemos algún enlace externo, utilizaremos la función recién declarada:</p>
<pre class="highlight html">&lt;a href=&quot;http://www.google.com&quot; onclick=&quot;trackLink(this);&quot;&gt;Google&lt;/a&gt;</pre>
<p><strong>Seguimiento de Enlaces salientes con jQuery</strong></p>
<p>Si estamos utilizando jQuery, podemos aprovechar la potencia de los selectores, entonces podemos crear  una rutina para detectar automáticamente todos los enlaces externos, le agregamos la propiedad <em>target</em> para que el enlace abra en ventana nueva y posteriormente registrarlo como un evento de Google Analytics.</p>
<pre class="highlight">
$('a').each(function(e) {
	var _this = this;
 	if (_this.hostname && _this.hostname !== location.hostname) {
		$(_this).attr('target', '_blank').bind('click keypress', function(event) {
			var code = event.charCode || event.keyCode;
			if (!code || (code && code == 13)) {
				var fixLink = _this.href;
				fixLink = fixLink.replace(/https?:\/\/(.*)/, "$1");
				_gaq.push(['_trackEvent', 'Outbound', 'Click', fixLink]);
			};
		});
	};
});
</pre>
<p>Este código lo agregamos a todas las páginas y con ello registraremos todos las veces que los usuarios han salido de nuestra página hacia un enlace externo.</p>
<p><strong>Mas Información</strong></p>
<ul>
<li><a href="https://developers.google.com/analytics/devguides/collection/gajs/eventTrackerGuide?hl=es-419">Event Tracking Guide</a></li>
<li><a href="https://seogadget.co.uk/how-to-count-your-outbound-click-stats-with-onclick-in-google-analytics/">How to Count Your Outbound Click Stats with Onclick in Google Analytics</a></li>
<li><a href="http://davidwalsh.name/mootools-google-analytics-track-outbound-links">Using MooTools to Instruct Google Analytics to Track Outbound Links</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.unijimpe.net/seguimiento-de-enlaces-externos-con-google-analytics/feed/</wfw:commentRss>
			<slash:comments>18</slash:comments>
		
		
			</item>
		<item>
		<title>Tips para incluir el código de Google Analytics</title>
		<link>https://blog.unijimpe.net/tips-para-incluir-el-codigo-de-google-analytics/</link>
					<comments>https://blog.unijimpe.net/tips-para-incluir-el-codigo-de-google-analytics/#comments</comments>
		
		<dc:creator><![CDATA[unijimpe]]></dc:creator>
		<pubDate>Mon, 07 May 2012 01:16:18 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[descargas]]></category>
		<category><![CDATA[google analytics]]></category>
		<guid isPermaLink="false">http://blog.unijimpe.net/?p=1318</guid>

					<description><![CDATA[<p>Incluir el código de Google Analytics para registrar las visitas de nuestras páginas es una de las tareas mas comunes para todo desarrollador web, veamos algunos tips embeber el código de Google Analytics.</p>
<p><strong>Código básico de </strong>&#8230;</p>]]></description>
										<content:encoded><![CDATA[<p>Incluir el código de Google Analytics para registrar las visitas de nuestras páginas es una de las tareas mas comunes para todo desarrollador web, veamos algunos tips embeber el código de Google Analytics.</p>
<p><strong>Código básico de Google Analytics</strong></p>
<p>Actualmente se recomienda el uso de la versión asíncrona de Google Analytics, esto hace que la carga del archivo javascript se haga sin afectar la carga de nuestra pagina. Para ello colocamos el siguiente código justo antes de cerrar el tag <code>&lt;head&gt;</code>, en donde <em>UA-XXXXX-Y</em> es el identificador de la pagina que vamos a seguir.</p>
<pre class="highlight html">
&lt;script type=&quot;text/javascript&quot;&gt;
var _gaq = _gaq || [];
_gaq.push([&#039;_setAccount&#039;, &#039;UA-XXXXX-Y&#039;]);
_gaq.push([&#039;_trackPageview&#039;]);
(function() {
  var ga = document.createElement(&#039;script&#039;); ga.type = &#039;text/javascript&#039;; ga.async = true;
  ga.src = (&#039;https:&#039; == document.location.protocol ? &#039;https://ssl&#039; : &#039;http://www&#039;) + &#039;.google-analytics.com/ga.js&#039;;
  var s = document.getElementsByTagName(&#039;script&#039;)[0]; s.parentNode.insertBefore(ga, s);
})();
&lt;/script&gt;
</pre>
<p>Este código también se puede colocar antes de cerrar la etiqueta <code>&lt;body&gt;</code>, pero si el usuario cierra la pagina antes que se haya completado la carga, entonces es probable que no se registre la visita.</p>
<p><strong>Dos identificadores de seguimiento en una página</strong></p>
<p>Si por algún motivo necesitamos que una pagina tenga dos identificadores diferentes, no se puede duplicar el código anterior pues Google Analytics solo permite un código de seguimiento por pagina. Entonces para utilizar dos identificadores podemos utilizar el método <code>_gaq.push</code> el cual permite enviar múltiples instrucciones, luego tendríamos:</p>
<pre class="highlight">
_gaq.push(['_setAccount', 'UA-XXXXX-1']);
_gaq.push(['_trackPageview']);
_gaq.push(['b._setAccount', 'UA-XXXXX-2']);
_gaq.push(['b._trackPageview']);
</pre>
<p>Donde hemos colocado los dos identificadores que deseamos seguir. Ademas se observa recibe como parámetros un serie a arrays, por lo que también podríamos utilizar:</p>
<pre class="highlight">
_gaq.push(
  ['_setAccount', 'UA-XXXXX-1'],
  ['_trackPageview'],
  ['b._setAccount', 'UA-XXXXX-2'],
  ['b._trackPageview']
);
</pre>
<p><strong>Un identificador de seguimiento para varios Dominios</strong></p>
<p>Si queremos utilizar un mismo identificador para diferentes dominios (Por ejemplo si tenemos una pagina y la tienda esta alojada en otro servidor), podemos emplear el siguiente método donde <em>your-domain.com</em> el el dominio donde estas insertando el código:</p>
<pre class="highlight">
_gaq.push(['_setAccount', 'UA-XXXXX-Y']);
_gaq.push(['_setDomainName', 'your-domain.com']);
_gaq.push(['_setAllowLinker', true]);
_gaq.push(['b._trackPageview']);
</pre>
<p>Adicionalmente para hacer el seguimiento de los enlaces es necesario agregar a cada enlace una llamada para registrar las llamadas a los enlaces. </p>
<pre class="highlight html">
&lt;a href=&quot;http://other-site.com/intro&quot;
onclick=&quot;_gaq.push(&amp;#91;&#039;_link&#039;, &#039;http://other-site.com/intro.html&#039;&amp;#93;); return false;&quot;&gt;Intro&lt;/a&gt;
</pre>
<p><strong>Seguimiento de Descargas</strong></p>
<p>Si deseamos registrar las descargas de archivos que se hacen en nuestro site (.zip, .pdf, .avi, etc) es necesario agregar un codigo javascript a cada enlace que apunte a este tipo de archivos.</p>
<p>Podemos utilizar la función <code>_trackPageview</code> el cual crea una estructura de directorio virtual en los reportes de Google Analytics.</p>
<pre class="highlight">_gaq.push(['_trackPageview', '/virtual-path-to-file']);</pre>
<p>Entonces para registrar las descargas, modificamos los enlaces de la siguiente forma:</p>
<pre class="highlight html">&lt;a href=&quot;report.pdf&quot; 
onclick=&quot;_gaq.push(&amp;#91;&#039;_trackPageview&#039;, &#039;/downloads/report.pdf&#039;&amp;#93;); return false;&quot;&gt;Reporte&lt;/a&gt;</pre>
<p><strong>Mas Información</strong></p>
<ul>
<li><a href="https://support.google.com/analytics/bin/answer.py?hl=en&#038;answer=1009686&#038;topic=1009685&#038;parent=1726910&#038;rd=1">Set Up the Tracking Code &#8211; Analytics Help</a></li>
<li><a href="https://developers.google.com/analytics/devguides/collection/gajs/gaTrackingSite">Tracking Multiple Domains &#8211; Google Analytics</a></li>
<li><a href="https://support.google.com/analytics/bin/answer.py?hl=es&#038;answer=1136922&#038;topic=1136919&#038;ctx=topic">Enlaces de descarga &#8211; Analytics Help</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.unijimpe.net/tips-para-incluir-el-codigo-de-google-analytics/feed/</wfw:commentRss>
			<slash:comments>11</slash:comments>
		
		
			</item>
		<item>
		<title>SEO Parser: Analizar contenido SEO</title>
		<link>https://blog.unijimpe.net/seo-parser-analizar-contenido-seo/</link>
					<comments>https://blog.unijimpe.net/seo-parser-analizar-contenido-seo/#comments</comments>
		
		<dc:creator><![CDATA[unijimpe]]></dc:creator>
		<pubDate>Fri, 25 Nov 2011 02:50:18 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Servicios Web]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[alt]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[metatags]]></category>
		<category><![CDATA[nofollow]]></category>
		<category><![CDATA[seo parser]]></category>
		<guid isPermaLink="false">http://blog.unijimpe.net/?p=1307</guid>

					<description><![CDATA[<p><a href="http://seoparser.com">SEO Parser</a> es una herramienta que permite analizar como interpretan los buscadores el contenido de una web, para ello elimina los bloques que no son interpretados por los buscadores (Javascript, Flash, Vídeos, Applets, etc) mostrando solo &#8230;</p>]]></description>
										<content:encoded><![CDATA[<p><a href="http://seoparser.com">SEO Parser</a> es una herramienta que permite analizar como interpretan los buscadores el contenido de una web, para ello elimina los bloques que no son interpretados por los buscadores (Javascript, Flash, Vídeos, Applets, etc) mostrando solo el contenido basado en texto HTML, además de ello hace un análisis de los enlaces y una previsualización de la página en los resultados de Google.</p>
<p><a href="http://seoparser.com"><img loading="lazy" decoding="async" src="http://blog.unijimpe.net/wp-content/uploads/2011/11/seo-parser.png" alt="" title="seo-parser" width="350" height="202" /></a></p>
<p><em>SEO Parser</em> esta basado en las diferentes reglas que aplican los buscadores al contenido y a los enlaces, estas reglas están detalladas en el libro <a href="http://www.amazon.com/gp/product/0596518862/ref=as_li_qf_sp_asin_tl?ie=UTF8&#038;tag=sepa0c-20&#038;linkCode=as2&#038;camp=217145&#038;creative=399369&#038;creativeASIN=0596518862">The Art of SEO: Mastering Search Engine Optimization (Theory in Practice)</a><img loading="lazy" decoding="async" src="http://www.assoc-amazon.com/e/ir?t=sepa0c-20&#038;l=as2&#038;o=1&#038;a=0596518862&#038;camp=217145&#038;creative=399369" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important; padding: 0;" />.</p>
<p>Para utilizar <em>SEO Parser</em> solo hace falta ingresar el URL del enlace que se desea analizar y devolverá como resultado una página con los resultados de: análisis de contenido, análisis de enlaces, análisis de imágenes y una previsualización en los resultados de Google.</p>
<p><strong>Análisis de Contenido</strong></p>
<p><em>SEO Parser</em> elimina los bloques que no son visibles a los buscadores (Javascript, Flash, Vídeos, Applets, etc) por lo cual solo muestra el contenido basado en texto HTML.</p>
<p>Adicionalmente muestra las etiquetas de cabecera (<em>h1</em>, <em>h2</em>, <em>h3</em>, <em>h4</em>, <em>h5</em>, <em>h6</em>) que permiten definir el nivel de importancia del contenido. Por ejemplo el titulo de todo el contenido (h1), el titulo de cada sección (h2) y así sucesivamente.</p>
<p><img loading="lazy" decoding="async" src="http://blog.unijimpe.net/wp-content/uploads/2011/11/seo-parser-content-analysis.png" alt="" title="seo-parser-content-analysis" width="400" height="713" /></p>
<p><strong>Análisis de Enlaces</strong></p>
<p>Todos los enlaces dentro de la página se analizan y muestran en diferentes colores para diferenciarlos. Para ello se agrupan en cuatro tipo de enlaces.</p>
<ul>
<li><strong>Enlaces Internos</strong>, son enlaces naturales y permiten posicionar secciones internas de un web.</li>
<li><strong>Enlaces Externos</strong>, son enlaces a otros dominios y mejoran el posicionamiento del dominio de destino.</li>
<li><strong>Enlaces No Follow</strong>, son enlaces que no pasan ningún beneficio de posicionamiento.</li>
<li><strong>Enlaces Javascript</strong>, son enlaces creados con javascript o anchors los cuales son invisibles para los buscadores.</li>
</ul>
<p><strong>Análisis de Imágenes</strong></p>
<p>Los buscadores no pueden interpretar el contenido de las imágenes, pero tienen una señal de lo que contienen gracias a la propiedad <em>alt</em> o en su defecto por el nombre del archivo de la imagen. <em>SEO Parser</em> reemplaza las imágenes por el texto <em>Alt</em> y si no existe por el nombre del archivo. Esto permite distinguir rápidamente si hace falta la propiedad <em>alt</em> a nuestras imágenes.</p>
<p><strong>Previsualizar en Google</strong></p>
<p>SEO Parser toma los datos del <em>title</em> y <em>description</em> o en su defecto el contenido filtrado de la página para simular como se mostrará la página en los resultados de Google. De esta forma identificaremos rápidamente como se verá nuestra página en Google.</p>
<p>Adicionalmente se muestra en detalle todos los metatags que contiene la página así como un resumen de las cantidades de enlaces, imágenes e incluso el tamaño del archivo leído. </p>
<p>Finalmente ofrece <a href="http://seoparser.com/help/">documentación</a> acerca de las reglas que aplica al contenido, también tiene un formulario de <a href="http://seoparser.com/feedback/">feedback</a> donde pueden enviar sus sugerencias, errores y comentarios para mejorar esta herramienta.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.unijimpe.net/seo-parser-analizar-contenido-seo/feed/</wfw:commentRss>
			<slash:comments>20</slash:comments>
		
		
			</item>
		<item>
		<title>Como utilizar Transiciones con CSS</title>
		<link>https://blog.unijimpe.net/como-utilizar-transiciones-con-css/</link>
					<comments>https://blog.unijimpe.net/como-utilizar-transiciones-con-css/#comments</comments>
		
		<dc:creator><![CDATA[unijimpe]]></dc:creator>
		<pubDate>Sun, 06 Nov 2011 22:15:53 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Safari]]></category>
		<category><![CDATA[transitions]]></category>
		<guid isPermaLink="false">http://blog.unijimpe.net/?p=1303</guid>

					<description><![CDATA[<p>Las Transiciones con CSS o <em>CSS Transitions</em> permiten realizar cambios en los valores de una propiedad durante un determinado tiempo de manera progresiva, esto permite realizar transiciones en las propiedades de un elemento eliminando la necesidad &#8230;</p>]]></description>
										<content:encoded><![CDATA[<p>Las Transiciones con CSS o <em>CSS Transitions</em> permiten realizar cambios en los valores de una propiedad durante un determinado tiempo de manera progresiva, esto permite realizar transiciones en las propiedades de un elemento eliminando la necesidad de utilizar Javascript y obteniendo efectos interesantes.</p>
<p><a href="http://samples.unijimpe.net/css-transitions.html"><img loading="lazy" decoding="async" src="http://blog.unijimpe.net/wp-content/uploads/2011/11/css-transitions.gif" alt="" title="css-transitions" width="250" height="175" class="alignnone size-full wp-image-1304" /></a></p>
<p><strong>Sintaxis de las Transiciones con CSS</strong></p>
<p>En la especificación del CSS3 se introduce la nueva propiedad <code>transition</code> la cual permite especificar las transiciones con CSS, la sintaxis básica es:</p>
<pre class="highlight">
.style {
   transition: property time easing;
}
</pre>
<p>Donde se tiene:</p>
<ul>
<li><strong>property</strong>: propiedad a aplicar la transición (<em>color</em>, <em>width</em>, etc).</li>
<li><strong>time</strong>: tiempo de duración expresado en segundos de la transición.</li>
<li><strong>easing</strong>: tipo de aceleración de la animación (<em>ease</em>, <em>linear</em>, <em>ease-in</em>, <em>ease-out</em>, <em>ease-in-out</em>).</li>
</ul>
<p>Obviamente este código solo funciona en navegadores que tienen implementada la especificación CSS3, entonces para que los navegadores actuales puedan interpretarlo hace falta agregar líneas especificas de acuerdo a cada navegador.</p>
<pre class="highlight">
.style {
   	-webkit-transition: property time easing; /* Safari 3.2+, Chrome */
	-moz-transition: property time easing;    /* Firefox 4.0+ */  
	-o-transition: property time easing;      /* Opera 10.5+ */
	transition: property time easing;
}
</pre>
<p>Esto garantiza que las transiciones se verán correctamente en Chrome, Safari 3.2+, Firefox 4.0+ y Opera 10.5+. En los otros casos (incluyendo Internet Explorer) no se verá la transición solo se verá un cambio brusco entre uno y otro estado.</p>
<p><strong>Ejemplo básico de Uso</strong></p>
<p>Una vez que conocemos la sintaxis, veamos un ejemplo en el cual al pasar el mouse sobre un enlace cambiaremos el color del enlace pero con una pequeña transición del color. </p>
<p>Para comenzar el rollover de un enlace se hace mediante:</p>
<pre class="highlight">
a {
	color: #06C;
}
a:hover {
	color: #C00;
}
</pre>
<p>Luego aplicamos la transición al color durante 0.35 segundos, con lo cual tendríamos:</p>
<pre class="highlight">
a {
	color: #06C;	
	-webkit-transition: color .35s ease-out;  
	-moz-transition: color .35s ease-out;  
	-o-transition: color .35s ease-out; 
	transition: color .35s ease-out;
}
a:hover {
	color: #C00;
	-webkit-transition: color .35s ease-in;  
	-moz-transition: color .35s ease-in;  
	-o-transition: color .35s ease-in; 
	transition: color .35s ease-in;
}
</pre>
<p>Como se aprecia hemos aplicado la transición sobre la propiedad <em>color</em> el cual durará 0.35 segundos, además hemos aplicado la transición cuando el mouse pasa sobre el enlace y cuando sale del mismo.</p>
<p><strong>Ejemplo de Menú con CSS Transitions</strong></p>
<p>Como segundo ejemplo crearemos un menú de navegación, en el cual cuando el cursor pasa sobre el elemento cambiaremos el color y el ancho del fondo con lo cual obtendremos un resultado interesante. Para ello primero creamos el código HTML para los elementos del menú.</p>
<pre class="highlight html">
&lt;ul class=&quot;menu&quot;&gt;
	&lt;li&gt;Home&lt;/li&gt;
    &lt;li&gt;Productos&lt;/li&gt;
    &lt;li&gt;Ofertas&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;Contactenos&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>Luego, creamos la hoja de estilos en el cual definimos primero las propiedades del elemento de menú y también las propiedades del elemento esta en rollover.</p>
<pre class="highlight">
.menu li {
	list-style: none;
	padding: 0 0 0 10px;
	width: 200px;
	color: #fff;
	background: #6CF;
	
	-webkit-transition: all .35s ease-in;  
	-moz-transition: all .35s ease-in;  
	-o-transition: all .35s ease-in; 
	transition: all .35s ease-in;
}
.menu li:hover {
	background: #06F;
	width: 220px;
	
	-webkit-transition: all .35s ease-out;  
	-moz-transition: all .35s ease-out;  
	-o-transition: all .35s ease-out; 
	transition: all .35s ease-out;
}
</pre>
<p>Notese que hemos utilizado <code>all</code> como propiedad, lo cual indica que se debe hacer la transición sobre todos las propiedades del elemento. Pueden ver el ejemplo funcionando en <a href="http://samples.unijimpe.net/css-transitions.html">CSS Transitions Demo</a>.</p>
<p>Ahora solo queda a la creatividad para lograr efectos destacables, por ejemplo en <a href="http://tympanus.net/codrops/2011/11/02/original-hover-effects-with-css3/">Original Hover Effects with CSS3</a> pueden ver una lista de ejemplos muy vistosos de rollover utilizando CSS Transitions.</p>
<p>[download id=»60&#8243; autop=»false»]</p>
<p><strong>Mas Información</strong></p>
<ul>
<li><a href="http://www.w3.org/TR/css3-transitions/">CSS Transitions Module Level 3</a></li>
<li><a href="https://developer.mozilla.org/en/CSS/CSS_transitions">MDN: CSS transitions</a></li>
<li><a href="http://developer.apple.com/library/safari/#documentation/InternetWeb/Conceptual/SafariVisualEffectsProgGuide/Transitions/Transitions.html">Safari CSS Visual Effects Guide: Automatic Animation</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.unijimpe.net/como-utilizar-transiciones-con-css/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title>Inserta cualquier tipografía en tu web con @font-face</title>
		<link>https://blog.unijimpe.net/inserta-cualquier-tipografia-en-tu-web-con-font-face/</link>
					<comments>https://blog.unijimpe.net/inserta-cualquier-tipografia-en-tu-web-con-font-face/#comments</comments>
		
		<dc:creator><![CDATA[unijimpe]]></dc:creator>
		<pubDate>Wed, 02 Nov 2011 04:10:34 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[font-face]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Safari]]></category>
		<guid isPermaLink="false">http://blog.unijimpe.net/?p=1300</guid>

					<description><![CDATA[<blockquote><p>Este artículo ya se encuentra obsoleto.<br />Para una referencia actual leer: <a href="https://www.kodetop.com/incluir-fuentes-en-css-con-font-face/">Incluir fuentes en CSS con @font-face<br />
</a></p></blockquote>
<p><strong>@font-face</strong> es un propiedad de CSS disponible desde CSS2 y que la han incorporado los navegadores actuales (<em>Firefox </em>&#8230;</p>]]></description>
										<content:encoded><![CDATA[<blockquote><p>Este artículo ya se encuentra obsoleto.<br />Para una referencia actual leer: <a href="https://www.kodetop.com/incluir-fuentes-en-css-con-font-face/">Incluir fuentes en CSS con @font-face<br />
</a></p></blockquote>
<p><strong>@font-face</strong> es un propiedad de CSS disponible desde CSS2 y que la han incorporado los navegadores actuales (<em>Firefox 3.5</em>, <em>Firefox 3.5</em>, <em>Chrome 4.0</em>, <em>Internet Explorer 5</em>, <em>Safari 3.1</em>, <em>Opera 10</em>). De esta forma ya no estaremos restringidos a utilizar las fuentes clásicas en nuestras páginas y tampoco hace falta utilizar librerías javascript, flash o imágenes para obtener los mismos resultados.</p>
<p><a href="http://samples.unijimpe.net/font-face/"><img loading="lazy" decoding="async" src="http://blog.unijimpe.net/wp-content/uploads/2011/11/font-face.gif" alt="" title="font-face" width="500" height="235" /></a></p>
<p><strong>Sintaxis Básica</strong></p>
<p>El uso de esta propiedad es sencilla, para ello hay que definir un nombre y la ruta donde se encuentra el archivo de la fuente. Por ejemplo en el siguiente código vamos a utilizar la fuente <code>helveticaneue_light.ttf</code> la cual está ubicada en la carpeta <em>fonts</em> y que la nombramos como «HelveticaNeueLight» para utilizarlo posteriormente.</p>
<pre class="highlight">
@font-face {
    font-family: 'HelveticaNeueLight';
    src: url('fonts/helveticaneue_light.ttf') format("truetype");
    font-style: normal;
    font-weight: normal;
}
</pre>
<p>Luego para utilizar esta fuente recién declarado lo hacemos mediante la propiedad <code>font-family</code> en donde le pasamos el nombre que hemos definido anteriormente.</p>
<pre class="highlight">
h3 {
    font-family: 'HelveticaNeueLight';
    font-size: 18px;
    color: #F36;
}
</pre>
<p><strong>Sintaxis Completa</strong></p>
<p>Lamentablemente no todos los navegadores aceptan el mismo formato de archivo para las fuentes, por ello existe una sintaxis mas compleja la cual asegura mayor compatibilidad con los navegadores. En donde se requiere tener las fuentes en diferentes formatos: <em>.eot</em>, <em>.woff</em>, <em>.ttf</em> y <em>.svg</em>.</p>
<pre class="highlight">
@font-face {
    font-family: 'HelveticaNeueLight';
    src: url('../fonts/helveticaneue_light.eot');
    src: url('../fonts/helveticaneue_light.eot?#iefix') format('embedded-opentype'),
         url('../fonts/helveticaneue_light.woff') format('woff'),
         url('../fonts/helveticaneue_light.ttf') format('truetype'),
         url('../fonts/helveticaneue_light.svg#HelveticaNeueLight') format('svg');
    font-weight: normal;
    font-style: normal;
}
</pre>
<p><strong>Como convertir las fuentes</strong></p>
<p>Si no tenemos las fuentes en todos los formatos antes mencionados, existe un servicio gratuito <a href="http://www.fontsquirrel.com/fontface/generator">@font-face Generator</a> que permite hacer la conversión a todos los formatos necesarios para la máxima compatibilidad.</p>
<p><a href="http://www.fontsquirrel.com/fontface/generator"><img loading="lazy" decoding="async" src="http://blog.unijimpe.net/wp-content/uploads/2011/11/fontface-generator.jpg" alt="" title="fontface-generator" width="350" height="197" /></a></p>
<p>Seleccionan la fuente y esta devolverá un archivo zip que contiene las fuentes en los formatos necesarios así como el código  CSS necesario para colocarlo en nuestra hoja de estilos.</p>
<p><strong>Como obtener las fuentes</strong></p>
<p>La mayoría de las fuentes tienes derechos de autor asi que no las podremos utilizar a menos que tengamos la licencia de uso. Pero también existen fuentes gratuitas, para descargar estas fuentes existen dos páginas con gran variedad de tipografías.</p>
<ul>
<li><a href="http://www.fontsquirrel.com/">Font Squirrel: FREE fonts for graphic designers</a></li>
<li><a href="http://www.google.com/webfonts">Google Web Fonts</a></li>
</ul>
<p>Para finalizar les dejo los archivos fuente con un ejemplo de uso de fuentes utilizando @font-face.</p>
<p>[download id=»59&#8243; autop=»false»]</p>
<p><strong>Mas Información</strong></p>
<ul>
<li><a href="http://www.fontspring.com/blog/the-new-bulletproof-font-face-syntax">The New Bulletproof @Font-Face Syntax</a></li>
<li><a href="http://www.fontsquirrel.com/fontface/generator">@font-face Generator</a></li>
<li><a href="https://developer.mozilla.org/en/CSS/@font-face">MDN: @font-face</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.unijimpe.net/inserta-cualquier-tipografia-en-tu-web-con-font-face/feed/</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
			</item>
		<item>
		<title>Seguimiento de descargas con Google Analytics</title>
		<link>https://blog.unijimpe.net/seguimiento-de-descargas-con-google-analytics/</link>
					<comments>https://blog.unijimpe.net/seguimiento-de-descargas-con-google-analytics/#comments</comments>
		
		<dc:creator><![CDATA[unijimpe]]></dc:creator>
		<pubDate>Mon, 31 Oct 2011 02:48:19 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Servicios Web]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[Google]]></category>
		<guid isPermaLink="false">http://blog.unijimpe.net/?p=1299</guid>

					<description><![CDATA[<p>Google Analytics el popular servicio de estadísticas de visitas ofrece muchas características que permiten conocer al detalle la interacción que tiene el usuario con nuestra web. Una de ellas es hacer el seguimiento de todos los &#8230;</p>]]></description>
										<content:encoded><![CDATA[<p>Google Analytics el popular servicio de estadísticas de visitas ofrece muchas características que permiten conocer al detalle la interacción que tiene el usuario con nuestra web. Una de ellas es hacer el seguimiento de todos los archivos de descargas, esto no se hace de forma automática por lo que hay que agregar un código adicional.</p>
<p><strong>Utilizando Google Analytics</strong></p>
<p>El primer paso es utilizar el código de seguimiento en nuestra página, actualmente se utiliza la versión asincrona la cual se debe colocar justo antes de la etiqueta <code>&lt;/head&gt;</code></p>
<pre class="highlight">
<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXX-X']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
</script>
</pre>
<p>En donde <em>UA-XXXXX-X</em> es el código de seguimiento del sitio web el cual lo podemos obtener al registrar un sitio web en nuestra cuenta de Google Analytics.</p>
<p><strong>Seguimiento de descargas con Google Analytics</strong></p>
<p>Si en nuestra página tenemos archivos de descarga, en enlace de descarga es:</p>
<pre class="highlight html">
&lt;a href=&quot;/files/map.pdf&quot;&gt;map&lt;/a&gt; 
</pre>
<p>Para que Google Analytics pueda registrar las descargas es necesario agregar una llamada al método <em>_gaq.push</em> en donde el segundo parámetro es un nombre con el cual se identificará la descarga.</p>
<pre class="highlight html">
&lt;a href=&quot;/files/map.pdf&quot; onClick=&quot;_gaq.push(&amp;#91;&#039;_trackPageview&#039;,&#039;/files/map.pdf&#039;&amp;#93;);&quot;&gt;map&lt;/a&gt; 
</pre>
<p>El código es muy sencillo y hay que colocarlo en cada enlace de descarga que se tenga. </p>
<p><strong>Seguimiento de descargas con Google Analytics y Mootools</strong></p>
<p>Si utilizas Mootools en tu página, entonces puedes utilizarlo para agregar el código de seguimiento de manera sencilla. Para ello a todos los enlaces de descarga le agregaremos un estilo llamado <em>download</em>.</p>
<pre class="highlight html">
&lt;a href=&quot;/files/map.pdf&quot; class=&quot;download&quot;&gt;map&lt;/a&gt; 
</pre>
<p>Luego podemos agregar el siguiente código con el cual se busca todos los enlaces con el estilo <em>download</em> y le agrega la llamada al método <em>_gaq.push</em>.</p>
<pre class="highlight">
window.addEvent('load', function() {
   $$('.download').addEvent('click',function() {
      _gaq.push(['_trackPageview', this.get('href').replace('http://','')]);
   });
});
</pre>
<p><strong>Seguimiento de descargas con Google Analytics y jQuery</strong></p>
<p>Si utilizamos jQuery podríamos modificar el código anterior el cual se convertiría en:</p>
<pre class="highlight">
$(document).ready(function () {
   $('a.download').click(function() {
      _gaq.push(['_trackPageview', $(this).attr('href').replace('http://','')]);
   });
});
</pre>
<p><strong>Seguimiento de descargas automático</strong></p>
<p>Si todas estas formas te parecen complicadas o ya tienes un sitio con muchas páginas y resulta complejo agregar el código de seguimiento, existe una solución llamada <a href="http://techoctave.com/c7/posts/58-entourage-js-automatic-download-tracking-for-asynchronous-google-analytics">Entourage.js</a> el cual agregará de forma automática el código de seguimiento a todos los enlaces que contengan archivos: .pdf, .zip, .doc, .xls, .ppt, .exe, .dmg, .mov, .avi y .mp3. </p>
<p>Para utilizar este método descargan los archivos y copian el archivo <em>entourage.min.js</em> y lo adjuntan a la página donde desean hacer el seguimiento, esto justo antes de colocar el código de Google Analytics.</p>
<pre class="highlight html">&lt;script src=&quot;js/entourage.min.js&quot;&gt;&lt;/script&gt;</pre>
<p>Esta pequeña librería con un tamaño de solo 579 bytes y que nos facilita de manera muy sencilla el trabajo de hacer el seguimiento de descargas en nuestra página.</p>
<p><strong>Mas Información</strong></p>
<ul>
<li><a href="http://code.google.com/apis/analytics/docs/tracking/asyncTracking.html">Google Analytics: Tracking Site Activity</a></li>
<li><a href="http://davidwalsh.name/track-file-downloads-google-analytics-mootools">Track File Downloads in Google Analytics Using MooTools</a></li>
<li><a href="http://techoctave.com/c7/posts/58-entourage-js-automatic-download-tracking-for-asynchronous-google-analytics">Entourage.js &#8211; Automatic Download Tracking for Asynchronous Google Analytics</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.unijimpe.net/seguimiento-de-descargas-con-google-analytics/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>Manejo de sesiones en PHP</title>
		<link>https://blog.unijimpe.net/manejo-de-sesiones-en-php/</link>
					<comments>https://blog.unijimpe.net/manejo-de-sesiones-en-php/#comments</comments>
		
		<dc:creator><![CDATA[unijimpe]]></dc:creator>
		<pubDate>Sun, 30 Oct 2011 03:42:50 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[depurar]]></category>
		<category><![CDATA[sesiones]]></category>
		<category><![CDATA[session]]></category>
		<guid isPermaLink="false">http://blog.unijimpe.net/?p=1297</guid>

					<description><![CDATA[<p>Las sesiones en PHP son una forma de mantener ciertos datos de un visitante entre los diversos accesos una web. De esta forma se pueden crear aplicaciones donde se le muestra al usuarios datos personalizados de &#8230;</p>]]></description>
										<content:encoded><![CDATA[<p>Las sesiones en PHP son una forma de mantener ciertos datos de un visitante entre los diversos accesos una web. De esta forma se pueden crear aplicaciones donde se le muestra al usuarios datos personalizados de acuerdo a las preferencias o acciones del usuario. </p>
<p>Las sesiones se manejan internamente por un identificador llamado SID (Session ID) el cual esta asociado a una única sesión y que ayuda a identificar el contenido de la sesión actual. Esta variable se propaga automaticamente a traves de Cookies o mediante URL.</p>
<p><strong>Manejo de sesiones en PHP</strong></p>
<p>Todas la variables de sesión son accesibles mediante arrays en la variable global $_SESSION. Adicionalmente ofrece una serie de funciones que permiten manejar detalladamente las sesiones de manera sencilla:</p>
<ul>
<li><strong>session_start</strong> inicializa una sesión y crea el identificador de sesión.</li>
<li><strong>session_id</strong> devuelve el identificador de la sesión actual.</li>
<li><strong>session_regenerate_id</strong> genera un nuevo identificador para la sesión actual.</li>
<li><strong>session_unset</strong> limpia todas la variables de sesión registradas.</li>
<li><strong>session_destroy</strong> elimina todas la variables de sesión registradas.</li>
</ul>
<p><strong>Crear variables de Sesión</strong></p>
<p>Si deseamos crear variables de sesión para que se puedan utilizar a través de diferentes páginas inicializamos el manejo de sesiones con al función <code>session_start</code> y luego guardamos el dato deseado como variable de sesión utilizando la variable global <code>$_SESSION</code>.</p>
<pre class="highlight">
// home.php
session_start();
$_SESSION["country"] = "Peru";
</pre>
<p>Podríamos mejorar el código si verificamos la existencia de la variable de sesión, si no existe entonces le asignamos un valor.</p>
<pre class="highlight">
// home.php
session_start();
if (!isset($_SESSION["country"])) {
	$_SESSION["country"] = "Peru";	
}
</pre>
<p><strong>Recuperar variables de Sesión</strong></p>
<p>En las páginas siguientes podríamos acceder a las variables de sesión utilizando:</p>
<pre class="highlight">
// user.php
session_start();
echo $_SESSION["country"];
</pre>
<p>Podríamos utilizar las variables de sesión para verificar si se han hecho acciones previas por parte del usuario, como haber seleccionado tu país por ejemplo si aún no lo ha hecho lo redireccionamos a la página inicial.</p>
<pre class="highlight">
// user.php
session_start();
if (!isset($_SESSION["country"])) {
	header("Location: home.php");	
}
echo $_SESSION["country"];
</pre>
<p><strong>Eliminando datos de sesión</strong></p>
<p>Si deseamos eliminar una determinada variable de sesión le asignamos un valor vacío.</p>
<pre class="highlight">
// clear.php
session_start();
$_SESSION["country"] = "";
</pre>
<p>Ahora si deseamos eliminar todas las variables de sesión lo hacemos de la siguiente forma:</p>
<pre class="highlight">
// clear.php
session_start();

session_unset();
session_destroy();
</pre>
<p><strong>Depurando Sesiones</strong></p>
<p>Si se desea depurar las variables de sesión con sus respectivos valores se puede utilizar la función <em>print_r</em>.</p>
<pre class="highlight">
// debug.php
session_start();
print_r($_SESSION);
</pre>
<p>Para mas información acerca del manejo y de las funciones disponibles para el manejo de sesiones pueden leer <a href="http://www.php.net/manual/en/ref.session.php">PHP: Session Functions</a>. Para concluir les dejo los archivos fuente de este artículo para que puedan hacer sus pruebas.</p>
<p>[download id=»58&#8243; autop=»false»]</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.unijimpe.net/manejo-de-sesiones-en-php/feed/</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
			</item>
	</channel>
</rss>
