<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2spanishfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Sentido Web</title><link>http://sentidoweb.com</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/sentidoweb" /><description>Publicación dirigida a los desarrolladores web e internautas apasionados por la programación, diseño, negocios y todo lo que ocurre en Internet.</description><language>en</language><lastBuildDate>Wed, 28 Jul 2010 02:01:27 PDT</lastBuildDate><generator>http://wordpress.org/?v=2.9.2</generator><sy:updatePeriod xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">hourly</sy:updatePeriod><sy:updateFrequency xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">1</sy:updateFrequency><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/sentidoweb" /><feedburner:info uri="sentidoweb" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.0/</creativeCommons:license><feedburner:emailServiceId>sentidoweb</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item><title>Boomerang: medición de rendimiento desde la perspectiva del usuario</title><link>http://feedproxy.google.com/~r/sentidoweb/~3/kRBghgWDqIk/boomerang-medicion-de-rendimiento-desde-la-perspectiva-del-usuario.php</link><category>Javascript</category><category>rendimiento</category><category>test</category><category>Yahoo</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">displaynone</dc:creator><pubDate>Wed, 28 Jul 2010 02:01:27 PDT</pubDate><guid isPermaLink="false">http://sentidoweb.com/?p=2387</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><strong>Boomerang</strong> es una librería desarrollada por Yahoo que permite medir diferentes aspectos de rendimiento de nuestra web desde la perspectiva del usuario final. Añadiendo un script y distintas funciones, podemos comprobar diversos aspectos de nuestra web como:</p>
<ul>
<li>El tiempo que el usuario cree que tarda en cargarse la web</li>
<li>El tiempo de carga de contenido dinámico</li>
<li>El ancho de banda durante la carga de la página</li>
<li>Tiempo de carga de diferentes módulos, por ejemplo módulos de Twitter o Facebook</li>
<li>Latencia HTTP</li>
<li>Latencia DNS</li>
</ul>
<pre><code><pre class="javascript">BOOMR.<span style="color: #006600;">init</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span>
  user_ip: <span style="color: #3366CC;">"&lt;user's ip address&gt;"</span>,
  beacon_url: <span style="color: #3366CC;">"http://yoursite.com/path/to/beacon.php"</span>,
  BW: <span style="color: #66cc66;">&#123;</span>
    base_url: <span style="color: #3366CC;">'http://yoursite.com/path/to/bandwidth/images/&quot;
  }
}); </span></pre></code></pre>
<p>Además permite etiquetar páginas para realizar distintos tests y poder compararlos, realizar tests a usuarios aleatorios y evitar abusos de uso</p>
<p><a href="http://yahoo.github.com/boomerang/doc/">Boomerang</a></p>
<p>Vía / <a href="http://www.webappers.com/2010/07/28/measures-performance-of-websites-from-end-users-view/">WebAppers</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/-KPMuVGDsL0mqSw5alLdlPiQfBA/0/da"><img src="http://feedads.g.doubleclick.net/~a/-KPMuVGDsL0mqSw5alLdlPiQfBA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/-KPMuVGDsL0mqSw5alLdlPiQfBA/1/da"><img src="http://feedads.g.doubleclick.net/~a/-KPMuVGDsL0mqSw5alLdlPiQfBA/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sentidoweb?a=kRBghgWDqIk:3NMPgU_R-Bw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=kRBghgWDqIk:3NMPgU_R-Bw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=kRBghgWDqIk:3NMPgU_R-Bw:tKBiNdHYW3c"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=tKBiNdHYW3c" border="0"></img></a>
</div>]]></content:encoded><description>Boomerang es una librería desarrollada por Yahoo que permite medir diferentes aspectos de rendimiento de nuestra web desde la perspectiva del usuario final. Añadiendo un script y distintas funciones, podemos comprobar diversos aspectos de nuestra web como:

El tiempo que el usuario cree que tarda en cargarse la web
El tiempo de carga de contenido dinámico
El ancho [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sentidoweb.com/2010/07/28/boomerang-medicion-de-rendimiento-desde-la-perspectiva-del-usuario.php/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://sentidoweb.com/2010/07/28/boomerang-medicion-de-rendimiento-desde-la-perspectiva-del-usuario.php</feedburner:origLink></item><item><title>Manejar y generar excepciones en Javascript</title><link>http://feedproxy.google.com/~r/sentidoweb/~3/EL2wgDpLtag/manejar-y-generar-excepciones-en-javascript.php</link><category>Javascript</category><category>catch</category><category>excepciones</category><category>throw</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">displaynone</dc:creator><pubDate>Fri, 23 Jul 2010 09:20:59 PDT</pubDate><guid isPermaLink="false">http://sentidoweb.com/?p=2385</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Los que hemos trabajado con Java estamos acostumbrados a tratar y lanzar excepciones para controlar los errores, algo que en Javascript no es muy común, pero en librerías algo elaboradas podría ser muy útil.</p>
<pre><code><pre class="javascript"><span style="color: #009900; font-style: italic;">// Clases de errores</span>
<span style="color: #003366; font-weight: bold;">function</span> DivisionByZeroError<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">name</span> = <span style="color: #3366CC;">"DivisionByZeroError"</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #003366; font-weight: bold;">function</span> DivisionByStringError<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">name</span> = <span style="color: #3366CC;">"DivisionByStringError"</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #009900; font-style: italic;">// Funcion que devuelve un error</span>
<span style="color: #003366; font-weight: bold;">function</span> divisionCanFail<span style="color: #66cc66;">&#40;</span>a, b<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span>b == <span style="color: #CC0000;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">throw</span> <span style="color: #003366; font-weight: bold;">new</span> DivisionByZeroError<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000066; font-weight: bold;">typeof</span> b == <span style="color: #3366CC;">"string"</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">throw</span> <span style="color: #003366; font-weight: bold;">new</span> DivisionByStringError<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
    <span style="color: #000066; font-weight: bold;">return</span> a / b;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #009900; font-style: italic;">// Funcion de test</span>
<span style="color: #003366; font-weight: bold;">function</span> decoratedDivision<span style="color: #66cc66;">&#40;</span>a, b<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">try</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #000066;">alert</span><span style="color: #66cc66;">&#40;</span>divisionCanFail<span style="color: #66cc66;">&#40;</span>a, b<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span> <span style="color: #000066; font-weight: bold;">catch</span> <span style="color: #66cc66;">&#40;</span>error <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span>error.<span style="color: #006600;">name</span> == <span style="color: #3366CC;">"DivisionByZeroError"</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #000066;">alert</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">"A division by zero..."</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #000066;">alert</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">"Exception class: "</span> + error.<span style="color: #006600;">name</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span> <span style="color: #000066; font-weight: bold;">catch</span> <span style="color: #66cc66;">&#40;</span>error <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span>error.<span style="color: #006600;">name</span> == <span style="color: #3366CC;">"DivisionByStringError"</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #000066;">alert</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">"Exception class: "</span> + error.<span style="color: #006600;">name</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
decoratedDivision<span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">5</span>, <span style="color: #3366CC;">"isThisANumber?!"</span><span style="color: #66cc66;">&#41;</span>;
decoratedDivision<span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">5</span>, <span style="color: #CC0000;">0</span><span style="color: #66cc66;">&#41;</span>;</pre></code></pre>
<p><a href="http://css.dzone.com/articles/exceptional-javascript">Exceptional JavaScript</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/yaS_BGGVpZcLqiwo60mMeTypxG4/0/da"><img src="http://feedads.g.doubleclick.net/~a/yaS_BGGVpZcLqiwo60mMeTypxG4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/yaS_BGGVpZcLqiwo60mMeTypxG4/1/da"><img src="http://feedads.g.doubleclick.net/~a/yaS_BGGVpZcLqiwo60mMeTypxG4/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sentidoweb?a=EL2wgDpLtag:HbSiB0yVBqk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=EL2wgDpLtag:HbSiB0yVBqk:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=EL2wgDpLtag:HbSiB0yVBqk:tKBiNdHYW3c"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=tKBiNdHYW3c" border="0"></img></a>
</div>]]></content:encoded><description>Los que hemos trabajado con Java estamos acostumbrados a tratar y lanzar excepciones para controlar los errores, algo que en Javascript no es muy común, pero en librerías algo elaboradas podría ser muy útil.
// Clases de errores
function DivisionByZeroError&amp;#40;&amp;#41; &amp;#123;
    this.name = "DivisionByZeroError";
&amp;#125;
function DivisionByStringError&amp;#40;&amp;#41; &amp;#123;
    this.name = "DivisionByStringError";
&amp;#125;
// Funcion que [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sentidoweb.com/2010/07/23/manejar-y-generar-excepciones-en-javascript.php/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://sentidoweb.com/2010/07/23/manejar-y-generar-excepciones-en-javascript.php</feedburner:origLink></item><item><title>Guía de estilos de Javascript de Google</title><link>http://feedproxy.google.com/~r/sentidoweb/~3/S-kblCSw2F0/guia-de-estilos-de-javascript-de-google.php</link><category>Javascript</category><category>Google</category><category>guia de estilo</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">displaynone</dc:creator><pubDate>Mon, 19 Jul 2010 03:56:36 PDT</pubDate><guid isPermaLink="false">http://sentidoweb.com/?p=2383</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Google tiene una guía de estilos para programar en Javascript. Yo no soy muy partidario de ello, ya que cada cual programe como quiera siempre que sea código legible, es decir, ¿por qué usar variables con nombres así: nombreVariable y no así: nombre_variable?. Está claro que en un proyecto o una empresa sí tiene sentido usar guías de estilo, pero que una guía de estilo sea generalizada, no le veo sentido.</p>
<p>De todas formas los consejos están bastante bien y ante la duda de cómo hacerlo, podemos echarle un vistazo a cómo lo hacen en Google. Claro, que luego lo ofuscan y no hay quién entienda sus librerías.</p>
<p><a href="http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml">Google JavaScript Style Guide</a></p>
<p>Vía / <a href="http://www.dzone.com/links/rss/google_javascript_style_guide.html">DZone</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/wPQxvXs8hvZb5Y27KfwXEiex9r8/0/da"><img src="http://feedads.g.doubleclick.net/~a/wPQxvXs8hvZb5Y27KfwXEiex9r8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/wPQxvXs8hvZb5Y27KfwXEiex9r8/1/da"><img src="http://feedads.g.doubleclick.net/~a/wPQxvXs8hvZb5Y27KfwXEiex9r8/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sentidoweb?a=S-kblCSw2F0:I0VA3yeRhNI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=S-kblCSw2F0:I0VA3yeRhNI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=S-kblCSw2F0:I0VA3yeRhNI:tKBiNdHYW3c"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=tKBiNdHYW3c" border="0"></img></a>
</div>]]></content:encoded><description>Google tiene una guía de estilos para programar en Javascript. Yo no soy muy partidario de ello, ya que cada cual programe como quiera siempre que sea código legible, es decir, ¿por qué usar variables con nombres así: nombreVariable y no así: nombre_variable?. Está claro que en un proyecto o una empresa sí tiene sentido [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sentidoweb.com/2010/07/19/guia-de-estilos-de-javascript-de-google.php/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><feedburner:origLink>http://sentidoweb.com/2010/07/19/guia-de-estilos-de-javascript-de-google.php</feedburner:origLink></item><item><title>DLayer: script jQuery que nos ayuda a maquetar diseños</title><link>http://feedproxy.google.com/~r/sentidoweb/~3/PA_Ry6DvW-A/dlayer-script-jquery-que-nos-ayuda-a-maquetar-disenos.php</link><category>Javascript</category><category>css</category><category>diseño</category><category>html</category><category>jquery</category><category>png</category><category>psd</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">displaynone</dc:creator><pubDate>Fri, 16 Jul 2010 14:12:44 PDT</pubDate><guid isPermaLink="false">http://sentidoweb.com/?p=2379</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Cuando nos pasan un diseño en PNG o PSD y tenemos que transformarlo a CSS y XHTML, una de las partes más tediosas es comprobar que el HTML se ajusta al diseño. Por ello, he creado un script rápido (y un tanto chapuzas) que permite añadir una imagen en el documento HTML y modificar su <em>top</em> y <em>left</em> así como el <em>opacity</em> para poder comprobar si vamos por buen camino.</p>
<p><img src="http://sentidoweb.com/wp-content/uploads/2010/07/jquery-dlayer.png" alt="" title="jquery-dlayer" width="580" height="291" class="center" /></p>
<p>La imagen la podemos indicar mediante una URL o haciendo drag&#038;drop del fichero (PNG, GIF o JPEG). El D&#038;D sólo funciona en Firefox y sinceramente, el resto del script solo lo he probado en Firefox. Luego solo nos falta cambiar el <em>opacity</em>, el <em>top</em> o el <em>left</em> y hacer pruebas.</p>
<p>Para instalarlo solo hay que añadir el script y añadir <a href="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js">jquery</a> si no está ya incluido.</p>
<p>Espero que os sea útil</p>
<p><a href='http://sentidoweb.com/wp-content/uploads/2010/07/jquery-dlayer.js'>jquery-dlayer</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/hHiKBy88DHQxDU_EzH28GRn2zvY/0/da"><img src="http://feedads.g.doubleclick.net/~a/hHiKBy88DHQxDU_EzH28GRn2zvY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/hHiKBy88DHQxDU_EzH28GRn2zvY/1/da"><img src="http://feedads.g.doubleclick.net/~a/hHiKBy88DHQxDU_EzH28GRn2zvY/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sentidoweb?a=PA_Ry6DvW-A:VS_EzG38ACg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=PA_Ry6DvW-A:VS_EzG38ACg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=PA_Ry6DvW-A:VS_EzG38ACg:tKBiNdHYW3c"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=tKBiNdHYW3c" border="0"></img></a>
</div>]]></content:encoded><description>Cuando nos pasan un diseño en PNG o PSD y tenemos que transformarlo a CSS y XHTML, una de las partes más tediosas es comprobar que el HTML se ajusta al diseño. Por ello, he creado un script rápido (y un tanto chapuzas) que permite añadir una imagen en el documento HTML y modificar su [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sentidoweb.com/2010/07/16/dlayer-script-jquery-que-nos-ayuda-a-maquetar-disenos.php/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">4</slash:comments><feedburner:origLink>http://sentidoweb.com/2010/07/16/dlayer-script-jquery-que-nos-ayuda-a-maquetar-disenos.php</feedburner:origLink></item><item><title>Generar documentos MS Word con phpdocx</title><link>http://feedproxy.google.com/~r/sentidoweb/~3/-imbeXyrwWc/generar-documentos-ms-word-con-phpdocx.php</link><category>PHP</category><category>docx</category><category>ms word</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">displaynone</dc:creator><pubDate>Thu, 15 Jul 2010 00:02:14 PDT</pubDate><guid isPermaLink="false">http://sentidoweb.com/?p=2376</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Me avisan los creadores de esta librería para la generación de ficheros docx de Microsoft, la cual dispone de una versión gratuita que ofrece bastantes características e incluso las más necesarias:</p>
<ul>
	<li>Formato de textos</li>
	<li>Formato de párrafos</li>
	<li>Enlaces externos</li>
	<li>Cabeceras y pies de página</li>
	<li>Imágenes</li>
	<li>Listas</li>
	<li>Tablas</li>
	<li>Imágenes</li>
	<li>&#8230;</li>
</ul>
<pre><code><pre class="php"><span style="color: #723b00;">require_once</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'../classes/cCreateDocx.inc'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$objDocx</span> = <span style="color: #000000; font-weight: bold;">new</span> cCreateDocx<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$arrParamsText</span> = <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">'b'</span> =&gt; <span style="color: #ff0000;">'single'</span>, <span style="color: #ff0000;">'jc'</span> =&gt; <span style="color: #ff0000;">'center&acirc;��); //b for bold and jc for alignment
$objDocx-&gt;fAddText('</span>Hello World.<span style="color: #ff0000;">', $arrParamsText);
$objDocx-&gt;fCreateDocx('</span>hello_world.docx<span style="color: #ff0000;">'); </span></pre></code></pre>
<p><a href="http://www.phpdocx.com">PHPDOCX</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/YzhjqJIeCjsfjjzDV2s_kDu8azk/0/da"><img src="http://feedads.g.doubleclick.net/~a/YzhjqJIeCjsfjjzDV2s_kDu8azk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/YzhjqJIeCjsfjjzDV2s_kDu8azk/1/da"><img src="http://feedads.g.doubleclick.net/~a/YzhjqJIeCjsfjjzDV2s_kDu8azk/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sentidoweb?a=-imbeXyrwWc:GadJzyTF5sw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=-imbeXyrwWc:GadJzyTF5sw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=-imbeXyrwWc:GadJzyTF5sw:tKBiNdHYW3c"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=tKBiNdHYW3c" border="0"></img></a>
</div>]]></content:encoded><description>Me avisan los creadores de esta librería para la generación de ficheros docx de Microsoft, la cual dispone de una versión gratuita que ofrece bastantes características e incluso las más necesarias:

	Formato de textos
	Formato de párrafos
	Enlaces externos
	Cabeceras y pies de página
	Imágenes
	Listas
	Tablas
	Imágenes
	&amp;#8230;

require_once&amp;#40;'../classes/cCreateDocx.inc'&amp;#41;;
$objDocx = new cCreateDocx&amp;#40;&amp;#41;;
$arrParamsText = array&amp;#40; 'b' =&amp;#62; 'single', 'jc' =&amp;#62; 'center&amp;#226;��); //b for bold and [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sentidoweb.com/2010/07/15/generar-documentos-ms-word-con-phpdocx.php/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments><feedburner:origLink>http://sentidoweb.com/2010/07/15/generar-documentos-ms-word-con-phpdocx.php</feedburner:origLink></item><item><title>HTML5 websockets con PHP</title><link>http://feedproxy.google.com/~r/sentidoweb/~3/bAM7Sc6yhXI/html5-websockets-con-php.php</link><category>PHP</category><category>html5</category><category>websockets</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">displaynone</dc:creator><pubDate>Tue, 13 Jul 2010 09:35:46 PDT</pubDate><guid isPermaLink="false">http://sentidoweb.com/?p=2374</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Ya hace tiempo hable lo de los <a href="http://sentidoweb.com/2010/03/16/websockets-en-html5-2.php">websockets con HTML</a>, los cuales solo se pueden usar en Safari, Chrome y la beta de Firefox 4, pero además el servidor necesita que los soporte. Para poder usarlos en nuestras aplicaciones PHP se puede hacer un apaño con la siguiente librería:</p>
<pre><code><pre class="php"><a href="http://www.php.net/log"><span style="color: #000066;">log</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"Handshaking..."</span><span style="color: #66cc66;">&#41;</span>;
list<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$resource</span>,<span style="color: #3E6D8F;">$host</span>,<span style="color: #3E6D8F;">$origin</span><span style="color: #66cc66;">&#41;</span> = getheaders<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$buffer</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$upgrade</span> = <span style="color: #ff0000;">"HTTP/1.1 101 Web Socket Protocol Handshake<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>"</span> .
           <span style="color: #ff0000;">"Upgrade: WebSocket<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>"</span> .
           <span style="color: #ff0000;">"Connection: Upgrade<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>"</span> .
           <span style="color: #ff0000;">"WebSocket-Origin: "</span> . <span style="color: #3E6D8F;">$origin</span> . <span style="color: #ff0000;">"<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>"</span> .
           <span style="color: #ff0000;">"WebSocket-Location: ws://"</span> . <span style="color: #3E6D8F;">$host</span> . <span style="color: #3E6D8F;">$resource</span> . <span style="color: #ff0000;">"<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>"</span> .
           <span style="color: #ff0000;">"<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>"</span>;
<span style="color: #3E6D8F;">$handshake</span> = <span style="color: #000000; font-weight: bold;">true</span>;
<a href="http://www.php.net/socket_write"><span style="color: #000066;">socket_write</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$socket</span>,<span style="color: #3E6D8F;">$upgrade</span>.chr<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>,<a href="http://www.php.net/strlen"><span style="color: #000066;">strlen</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$upgrade</span>.chr<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</pre></code></pre>
<p><a href="http://code.google.com/p/phpwebsocket/">phpwebsockets</a></p>
<p>Vía / <a href="http://bohuco.net/blog/2010/07/html5-websockets-example/">bo! hu? co.</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/iEamBssKaE_evrgo2mePicRfjfE/0/da"><img src="http://feedads.g.doubleclick.net/~a/iEamBssKaE_evrgo2mePicRfjfE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/iEamBssKaE_evrgo2mePicRfjfE/1/da"><img src="http://feedads.g.doubleclick.net/~a/iEamBssKaE_evrgo2mePicRfjfE/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sentidoweb?a=bAM7Sc6yhXI:vwF3WHOPkuU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=bAM7Sc6yhXI:vwF3WHOPkuU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=bAM7Sc6yhXI:vwF3WHOPkuU:tKBiNdHYW3c"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=tKBiNdHYW3c" border="0"></img></a>
</div>]]></content:encoded><description>Ya hace tiempo hable lo de los websockets con HTML, los cuales solo se pueden usar en Safari, Chrome y la beta de Firefox 4, pero además el servidor necesita que los soporte. Para poder usarlos en nuestras aplicaciones PHP se puede hacer un apaño con la siguiente librería:
log&amp;#40;"Handshaking..."&amp;#41;;
list&amp;#40;$resource,$host,$origin&amp;#41; = getheaders&amp;#40;$buffer&amp;#41;;
$upgrade = "HTTP/1.1 101 Web [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sentidoweb.com/2010/07/13/html5-websockets-con-php.php/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><feedburner:origLink>http://sentidoweb.com/2010/07/13/html5-websockets-con-php.php</feedburner:origLink></item><item><title>Filtra y recupera de forma segura $_GET y $_POST en PHP</title><link>http://feedproxy.google.com/~r/sentidoweb/~3/EuYSC28WMcw/filtra-y-recupera-de-forma-segura-_get-y-_post-en-php.php</link><category>PHP</category><category>$_GET</category><category>$_POST</category><category>filtro</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">displaynone</dc:creator><pubDate>Mon, 12 Jul 2010 01:22:43 PDT</pubDate><guid isPermaLink="false">http://sentidoweb.com/?p=2372</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Hace tiempo comentaba <a href="http://sentidoweb.com/2009/08/13/expresiones-regulares-con-filtros-en-php.php">cómo filtrar variables</a>, ahora, usando los mismos filtros, podremos filtrar y realizar sanitize de $_GET y $_POST y asegurarnos de que no nos metan valores peligrosos en las entradas de nuestras aplicaciones.</p>
<p>Para ello haremos uso de <a href="http://es2.php.net/manual/en/function.filter-input.php">filter_input</a> y <a href="http://es2.php.net/manual/en/function.filter-input-array.php">filter_input_array</a>, pudiendo usar una <a href="http://es2.php.net/manual/en/filter.filters.php">lista de filtros</a> bastante amplia.</p>
<pre><code><pre class="php"><span style="color: #3E6D8F;">$var</span> = filter_input<span style="color: #66cc66;">&#40;</span>INPUT_GET, <span style="color: #ff0000;">'parametro_entrada'</span>, FILTER_SANITIZE_STRING<span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$var</span> = filter_input<span style="color: #66cc66;">&#40;</span>FILTER_GET,<span style="color: #ff0000;">'paramentro_sin_filtrar'</span>, FILTER_UNSAFE_RAW<span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$args</span> = <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
  <span style="color: #ff0000;">'product_id'</span>   =&gt; FILTER_SANITIZE_ENCODED,
  <span style="color: #ff0000;">'component'</span>    =&gt; <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'filter'</span>    =&gt; FILTER_VALIDATE_INT,
    <span style="color: #ff0000;">'flags'</span>     =&gt; FILTER_REQUIRE_ARRAY, 
    <span style="color: #ff0000;">'options'</span>   =&gt; <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'min_range'</span> =&gt; <span style="color: #cc66cc;">1</span>, <span style="color: #ff0000;">'max_range'</span> =&gt; <span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#41;</span>,
  <span style="color: #ff0000;">'versions'</span>     =&gt; FILTER_SANITIZE_ENCODED,
  <span style="color: #ff0000;">'doesnotexist'</span> =&gt; FILTER_VALIDATE_INT,
  <span style="color: #ff0000;">'testscalar'</span>   =&gt; <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
    <span style="color: #ff0000;">'filter'</span> =&gt; FILTER_VALIDATE_INT,
    <span style="color: #ff0000;">'flags'</span>  =&gt; FILTER_REQUIRE_SCALAR,
    <span style="color: #66cc66;">&#41;</span>,
  <span style="color: #ff0000;">'testarray'</span>    =&gt; <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
  <span style="color: #ff0000;">'filter'</span> =&gt; FILTER_VALIDATE_INT,
  <span style="color: #ff0000;">'flags'</span>  =&gt; FILTER_REQUIRE_ARRAY,
  <span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$myinputs</span> = filter_input_array<span style="color: #66cc66;">&#40;</span>INPUT_POST, <span style="color: #3E6D8F;">$args</span><span style="color: #66cc66;">&#41;</span>;</pre></code></pre>
<p><a href="http://www.phpdeveloper.org/news/14769">Never Use $_GET Again</a></p>
<p>Vía / <a href="http://www.phpdeveloper.org/news/14769">PHPDeveloper.org</a></p>


<p><a href="http://feedads.g.doubleclick.net/~a/RWTKSe9-fGhkrH6TRjd0ttl48z0/0/da"><img src="http://feedads.g.doubleclick.net/~a/RWTKSe9-fGhkrH6TRjd0ttl48z0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/RWTKSe9-fGhkrH6TRjd0ttl48z0/1/da"><img src="http://feedads.g.doubleclick.net/~a/RWTKSe9-fGhkrH6TRjd0ttl48z0/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sentidoweb?a=EuYSC28WMcw:0Vq4nBrvOik:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=EuYSC28WMcw:0Vq4nBrvOik:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=EuYSC28WMcw:0Vq4nBrvOik:tKBiNdHYW3c"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=tKBiNdHYW3c" border="0"></img></a>
</div>]]></content:encoded><description>Hace tiempo comentaba cómo filtrar variables, ahora, usando los mismos filtros, podremos filtrar y realizar sanitize de $_GET y $_POST y asegurarnos de que no nos metan valores peligrosos en las entradas de nuestras aplicaciones.
Para ello haremos uso de filter_input y filter_input_array, pudiendo usar una lista de filtros bastante amplia.
$var = filter_input&amp;#40;INPUT_GET, 'parametro_entrada', FILTER_SANITIZE_STRING&amp;#41;;
$var = [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sentidoweb.com/2010/07/12/filtra-y-recupera-de-forma-segura-_get-y-_post-en-php.php/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><feedburner:origLink>http://sentidoweb.com/2010/07/12/filtra-y-recupera-de-forma-segura-_get-y-_post-en-php.php</feedburner:origLink></item><item><title>Mostrar la media semanal de lectores de Feedburner con PHP</title><link>http://feedproxy.google.com/~r/sentidoweb/~3/KRgFXT8wvXc/mostrar-la-media-semanal-de-lectores-de-feedburner-con-php.php</link><category>PHP</category><category>curl</category><category>feedburnerl</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">displaynone</dc:creator><pubDate>Wed, 07 Jul 2010 09:33:41 PDT</pubDate><guid isPermaLink="false">http://sentidoweb.com/?p=2370</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Parece que Feedburner está dando problemas, y ahora parece que te muestra los usuarios que leyeron tu blog el día anterior, y no el numero de suscritos como se mostraba anteriormente, por lo que a los que no escribimos posts a diarios, el número que muestra Feedburner puede variar muchísimo.</p>
<p>Por ello, puede ser interesante mostrar la media semanal o mensual, como queramos, de los usuarios que nos leen:</p>
<pre><code><pre class="php"><span style="color: #000000; font-weight: bold;">function</span> get_average_readers<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$feed_id</span>,<span style="color: #3E6D8F;">$interval</span> = <span style="color: #cc66cc;">7</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
	<span style="color: #3E6D8F;">$today</span> = <a href="http://www.php.net/date"><span style="color: #000066;">date</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Y-m-d'</span>, <a href="http://www.php.net/strtotime"><span style="color: #000066;">strtotime</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"now"</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #3E6D8F;">$ago</span> = <a href="http://www.php.net/date"><span style="color: #000066;">date</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Y-m-d'</span>, <a href="http://www.php.net/strtotime"><span style="color: #000066;">strtotime</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"-"</span>.<span style="color: #3E6D8F;">$interval</span>.<span style="color: #ff0000;">" days"</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #3E6D8F;">$feed_url</span>=<span style="color: #ff0000;">"https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri="</span>.<span style="color: #3E6D8F;">$feed_id</span>.<span style="color: #ff0000;">"&amp;dates="</span>.<span style="color: #3E6D8F;">$ago</span>.<span style="color: #ff0000;">","</span>.<span style="color: #3E6D8F;">$today</span>;
	<span style="color: #3E6D8F;">$ch</span> = curl_init<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_RETURNTRANSFER, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
	curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_URL, <span style="color: #3E6D8F;">$feed_url</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #3E6D8F;">$data</span> = curl_exec<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>;
	curl_close<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #3E6D8F;">$xml</span> = <span style="color: #000000; font-weight: bold;">new</span> SimpleXMLElement<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$data</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #3E6D8F;">$fb</span> = <span style="color: #3E6D8F;">$xml</span>-&gt;<span style="color: #006600;">feed</span>-&gt;<span style="color: #006600;">entry</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'circulation'</span><span style="color: #66cc66;">&#93;</span>;
&nbsp;
	<span style="color: #3E6D8F;">$nb</span> = <span style="color: #cc66cc;">0</span>;
	<span style="color: #723b00;">foreach</span><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$xml</span>-&gt;<span style="color: #006600;">feed</span>-&gt;<span style="color: #006600;">children</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #723b00;">as</span> <span style="color: #3E6D8F;">$circ</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
		<span style="color: #3E6D8F;">$nb</span> += <span style="color: #3E6D8F;">$circ</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'circulation'</span><span style="color: #66cc66;">&#93;</span>;
	<span style="color: #66cc66;">&#125;</span>
&nbsp;
	<span style="color: #723b00;">return</span> <a href="http://www.php.net/round"><span style="color: #000066;">round</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$nb</span>/<span style="color: #3E6D8F;">$interval</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #3E6D8F;">$nb</span> = get_average_readers<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'miusuario'</span><span style="color: #66cc66;">&#41;</span>;
<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">"tengo "</span>.<span style="color: #3E6D8F;">$nb</span>.<span style="color: #ff0000;">" suscriptores RSS"</span>;
<span style="color: #808080; font-style: italic;">// o</span>
<span style="color: #3E6D8F;">$nb</span> = get_average_readers<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'miusuario'</span>, <span style="color: #cc66cc;">30</span><span style="color: #66cc66;">&#41;</span>;
<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">"tengo "</span>.<span style="color: #3E6D8F;">$nb</span>.<span style="color: #ff0000;">" suscriptores RSS"</span>;</pre></code></pre>
<p><a href="http://www.catswhoblog.com/how-to-get-a-more-relevant-feedburner-count">How to get a more relevant Feedburner count</a></p>
<p>Vía / <a href="http://www.dzone.com/links/rss/feedburner_get_your_weekly_average_readers.html">DZone</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/rA4mVXQOnDkbGFDcybkbKb6Mroo/0/da"><img src="http://feedads.g.doubleclick.net/~a/rA4mVXQOnDkbGFDcybkbKb6Mroo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/rA4mVXQOnDkbGFDcybkbKb6Mroo/1/da"><img src="http://feedads.g.doubleclick.net/~a/rA4mVXQOnDkbGFDcybkbKb6Mroo/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sentidoweb?a=KRgFXT8wvXc:7GBP8ZGcWhA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=KRgFXT8wvXc:7GBP8ZGcWhA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=KRgFXT8wvXc:7GBP8ZGcWhA:tKBiNdHYW3c"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=tKBiNdHYW3c" border="0"></img></a>
</div>]]></content:encoded><description>Parece que Feedburner está dando problemas, y ahora parece que te muestra los usuarios que leyeron tu blog el día anterior, y no el numero de suscritos como se mostraba anteriormente, por lo que a los que no escribimos posts a diarios, el número que muestra Feedburner puede variar muchísimo.
Por ello, puede ser interesante mostrar [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sentidoweb.com/2010/07/07/mostrar-la-media-semanal-de-lectores-de-feedburner-con-php.php/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://sentidoweb.com/2010/07/07/mostrar-la-media-semanal-de-lectores-de-feedburner-con-php.php</feedburner:origLink></item><item><title>Conocer a quien le gusta tu post en Google Reader con PHP y CURL</title><link>http://feedproxy.google.com/~r/sentidoweb/~3/BUigYXYDCvw/conocer-a-quien-le-gusta-tu-post-en-google-reader-con-php-y-curl.php</link><category>PHP</category><category>curl</category><category>google reader</category><category>likers</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">displaynone</dc:creator><pubDate>Tue, 06 Jul 2010 11:33:13 PDT</pubDate><guid isPermaLink="false">http://sentidoweb.com/?p=2366</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>No es difícil ver en blogs los retweets que hace la gente de tus posts y que estos se muestren en los comentarios. ¿Por qué no hacer lo mismo con Google Reader?. En Google Reader, es posible ver a quienes les gustan tus posts (si tienes tu propio blog en el reader), lo cual te puede ayudar a saber si tus posts interesan o no, o encontrar usuarios con gustos parecidos y así seguir sus recomendaciones y poder leer posts interesantes.</p>
<p>Google suele dar complicaciones a la hora de hacer uso de sus webs, pero si usamos su API de <a href="http://code.google.com/intl/es-ES/apis/accounts/docs/AuthForInstalledApps.html#Using">ClientLogin</a> lo podemos hacer de forma sencilla.</p>
<p>Primero tendremos que loguearnos en Google, para lo cual tendremos que indicar nuestro usuario y contraseña y los datos posts que tendremos que pasarle:</p>
<pre><code><pre class="php"><span style="color: #3E6D8F;">$usuario</span> = <span style="color: #ff0000;">'micorreo@gmail.com'</span>;
<span style="color: #3E6D8F;">$password</span> = <span style="color: #ff0000;">'mipassword'</span>;
<span style="color: #3E6D8F;">$postdata</span> = <span style="color: #ff0000;">'service=reader&amp;Email='</span>.urlencode<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$usuario</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">'&amp;Passwd='</span>.urlencode<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$password</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">'&amp;continue=http://www.google.com/reader/&amp;service=reader'</span>;</pre></code></pre>
<p>Luego nos logueamos y obtenemos el valor de <em>Auth</em> para usarlo en el resto de peticiones usandolo en el header de la petición HTTP:</p>
<pre><code><pre class="php"><span style="color: #3E6D8F;">$ch</span> = crl_init<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$url</span><span style="color: #66cc66;">&#41;</span>;
crl_setopt<span style="color: #66cc66;">&#40;</span> <span style="color: #3E6D8F;">$ch</span>, CURLOPT_USERAGENT, <span style="color: #ff0000;">'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'</span><span style="color: #66cc66;">&#41;</span>;
crl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_RETURNTRANSFER, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
crl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_COOKIEJAR, <span style="color: #ff0000;">'./cookie'</span><span style="color: #66cc66;">&#41;</span>;
crl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_COOKIEFILE, <span style="color: #ff0000;">'./cookie'</span><span style="color: #66cc66;">&#41;</span>;
crl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_POSTFIELDS, <span style="color: #3E6D8F;">$postdata</span><span style="color: #66cc66;">&#41;</span>;
crl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_POST, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
crl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_SSL_VERIFYPEER, <span style="color: #000000; font-weight: bold;">false</span> <span style="color: #66cc66;">&#41;</span>;
crl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_SSL_VERIFYHOST, <span style="color: #000000; font-weight: bold;">false</span> <span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #3E6D8F;">$url</span> = <span style="color: #ff0000;">'https://www.google.com/accounts/ClientLogin'</span>;
crl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_URL, <span style="color: #3E6D8F;">$url</span><span style="color: #66cc66;">&#41;</span>;
crl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_FOLLOWLOCATION, <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$res</span> = crl_exec<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>;
<a href="http://www.php.net/preg_match"><span style="color: #000066;">preg_match</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'/Auth=(.*)/'</span>, <span style="color: #3E6D8F;">$res</span>, <span style="color: #3E6D8F;">$m</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$auth</span> = <span style="color: #3E6D8F;">$m</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span>;</pre></code></pre>

<p>Después realizo la búsqueda, para lo cual busco el título del post y le añado el nombre del blog (chapu a la espera de encontrar algo mejor), por ejemplo &#8220;<a href="http://sentidoweb.com/2010/07/01/stanford-javascript-crypto-library.php">Stanford%20Javascript%20Crypto%20Library%20sentidoweb</a>&#8221;
<pre><code><pre class="php"><span style="color: #3E6D8F;">$url</span> = <span style="color: #ff0000;">'https://www.google.com/reader/api/0/search/items/ids?q=Stanford%20Javascript%20Crypto%20Library%20sentidoweb&amp;output=json'</span>;
crl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>,CURLOPT_HTTPHEADER,<a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Authorization: GoogleLogin auth='</span>.<span style="color: #3E6D8F;">$auth</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>; 
crl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_POST, <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
crl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_URL, <span style="color: #3E6D8F;">$url</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$res</span> = crl_exec<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$datos</span> = json_decode<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$res</span><span style="color: #66cc66;">&#41;</span>;</pre></code></pre>

<p>De aquí obtengo el ID del post dentro de Google Reader, y con ese ID obtengo los <em>likers</em> y muestro sus fotos:</p>
<pre><code><pre class="php"><span style="color: #723b00;">if</span> <span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/isset"><span style="color: #000066;">isset</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$datos</span>-&gt;<span style="color: #006600;">results</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>-&gt;<span style="color: #006600;">id</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
  <span style="color: #3E6D8F;">$url</span> = <span style="color: #ff0000;">'https://www.google.com/reader/api/0/stream/items/contents?client=scroll'</span>;
  crl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_POST, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
  crl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_POSTFIELDS, <span style="color: #ff0000;">'i='</span>.<span style="color: #3E6D8F;">$datos</span>-&gt;<span style="color: #006600;">results</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>-&gt;<span style="color: #006600;">id</span><span style="color: #66cc66;">&#41;</span>;
  crl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_URL, <span style="color: #3E6D8F;">$url</span><span style="color: #66cc66;">&#41;</span>;
  <span style="color: #3E6D8F;">$res</span> = crl_exec<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>;
  
  <span style="color: #3E6D8F;">$datos</span> = json_decode<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$res</span><span style="color: #66cc66;">&#41;</span>;
  <span style="color: #723b00;">if</span> <span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/isset"><span style="color: #000066;">isset</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$datos</span>-&gt;<span style="color: #006600;">items</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>-&gt;<span style="color: #006600;">id</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #3E6D8F;">$id</span> = <span style="color: #3E6D8F;">$datos</span>-&gt;<span style="color: #006600;">items</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>-&gt;<span style="color: #006600;">id</span>;
    <span style="color: #3E6D8F;">$id</span> = <a href="http://www.php.net/end"><span style="color: #000066;">end</span></a><span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/explode"><span style="color: #000066;">explode</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'/'</span>, <span style="color: #3E6D8F;">$id</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #3E6D8F;">$url</span> = <span style="color: #ff0000;">'https://www.google.com/reader/api/0/item/likers?i=tag%3Agoogle.com%2C2005%3Areader%2Fitem%2F'</span>.<span style="color: #3E6D8F;">$id</span>.<span style="color: #ff0000;">'&amp;output=json&amp;client=scroll'</span>;
    crl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_POST, <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
    crl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_URL, <span style="color: #3E6D8F;">$url</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #3E6D8F;">$res</span> = crl_exec<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #3E6D8F;">$data</span> = json_decode<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$res</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #723b00;">if</span> <span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/isset"><span style="color: #000066;">isset</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$data</span>-&gt;<span style="color: #006600;">friends</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
      <span style="color: #723b00;">foreach</span><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$data</span>-&gt;<span style="color: #006600;">friends</span> <span style="color: #723b00;">as</span> <span style="color: #3E6D8F;">$friend</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #723b00;">if</span> <span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/isset"><span style="color: #000066;">isset</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$friend</span>-&gt;<span style="color: #006600;">photoUrl</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
          <a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">'&lt;img src=&quot;https://www.google.com'</span>.<span style="color: #3E6D8F;">$friend</span>-&gt;<span style="color: #006600;">photoUrl</span>.<span style="color: #ff0000;">'&quot; /&gt;'</span>;
        <span style="color: #66cc66;">&#125;</span>
      <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
  <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></code></pre>

<p>De los likers se pueden obtener más datos, y si se hace un <em>var_dump($data->friends)</em> se podrá ver cómo acceder a ellos.</p>
<p>Está claro que un plugin para Wordpress estaría bien, pero es algo más complejo si se quiere hacer bien, porque se debería obtener los ids segun URLs, entre otras cosas.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/6qgR0UppYGzJXUIXdUAHxVI6A0M/0/da"><img src="http://feedads.g.doubleclick.net/~a/6qgR0UppYGzJXUIXdUAHxVI6A0M/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/6qgR0UppYGzJXUIXdUAHxVI6A0M/1/da"><img src="http://feedads.g.doubleclick.net/~a/6qgR0UppYGzJXUIXdUAHxVI6A0M/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sentidoweb?a=BUigYXYDCvw:eQriqmM6q8g:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=BUigYXYDCvw:eQriqmM6q8g:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=BUigYXYDCvw:eQriqmM6q8g:tKBiNdHYW3c"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=tKBiNdHYW3c" border="0"></img></a>
</div>]]></content:encoded><description>No es difícil ver en blogs los retweets que hace la gente de tus posts y que estos se muestren en los comentarios. ¿Por qué no hacer lo mismo con Google Reader?. En Google Reader, es posible ver a quienes les gustan tus posts (si tienes tu propio blog en el reader), lo cual te [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sentidoweb.com/2010/07/06/conocer-a-quien-le-gusta-tu-post-en-google-reader-con-php-y-curl.php/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments><feedburner:origLink>http://sentidoweb.com/2010/07/06/conocer-a-quien-le-gusta-tu-post-en-google-reader-con-php-y-curl.php</feedburner:origLink></item><item><title>Stanford Javascript Crypto Library</title><link>http://feedproxy.google.com/~r/sentidoweb/~3/gfllRcL6IQA/stanford-javascript-crypto-library.php</link><category>Javascript</category><category>aes</category><category>encriptacion</category><category>hmac</category><category>sha256</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">displaynone</dc:creator><pubDate>Thu, 01 Jul 2010 11:52:24 PDT</pubDate><guid isPermaLink="false">http://sentidoweb.com/?p=2364</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><strong>Stanford Javascript Crypto Library</strong> es una librería Javascript que permite encriptar y desencriptar de forma muy segura, potente, rápida, sencilla, ligera y compatible con navegadores.</p>
<pre><code><pre class="javascript">sjcl.<span style="color: #006600;">encrypt</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">"password"</span>, <span style="color: #3366CC;">"data"</span><span style="color: #66cc66;">&#41;</span>
sjcl.<span style="color: #006600;">decrypt</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">"password"</span>, <span style="color: #3366CC;">"encrypted-data"</span><span style="color: #66cc66;">&#41;</span></pre></code></pre>
<p>Usa el algoritmo estándar AES de 128, 192 o 256 bits, la función hash SHA256, el código de autenticación HMAC, PBKDF2, y los modos CCM y OCB&#8230; vamos, todo muy seguro.</p>
<p><a href="http://bitwiseshiftleft.github.com/sjcl/">Stanford Javascript Crypto Library</a></p>
<p>Vía / <a href="http://www.dzone.com/links/rss/stanford_javascript_crypto_library.html">DZone</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/2vPi6cF2vz0D3DCP3GJPMvo0mT0/0/da"><img src="http://feedads.g.doubleclick.net/~a/2vPi6cF2vz0D3DCP3GJPMvo0mT0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/2vPi6cF2vz0D3DCP3GJPMvo0mT0/1/da"><img src="http://feedads.g.doubleclick.net/~a/2vPi6cF2vz0D3DCP3GJPMvo0mT0/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sentidoweb?a=gfllRcL6IQA:eRbTUOHVIbs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=gfllRcL6IQA:eRbTUOHVIbs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=gfllRcL6IQA:eRbTUOHVIbs:tKBiNdHYW3c"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=tKBiNdHYW3c" border="0"></img></a>
</div>]]></content:encoded><description>Stanford Javascript Crypto Library es una librería Javascript que permite encriptar y desencriptar de forma muy segura, potente, rápida, sencilla, ligera y compatible con navegadores.
sjcl.encrypt&amp;#40;"password", "data"&amp;#41;
sjcl.decrypt&amp;#40;"password", "encrypted-data"&amp;#41;
Usa el algoritmo estándar AES de 128, 192 o 256 bits, la función hash SHA256, el código de autenticación HMAC, PBKDF2, y los modos CCM y OCB&amp;#8230; vamos, todo [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sentidoweb.com/2010/07/01/stanford-javascript-crypto-library.php/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://sentidoweb.com/2010/07/01/stanford-javascript-crypto-library.php</feedburner:origLink></item></channel></rss>
