<?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>Thu, 11 Mar 2010 09:50:14 PST</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>Procesos concurrentes en PHP</title><link>http://feedproxy.google.com/~r/sentidoweb/~3/9oOZ8HPNebQ/procesos-concurrentes-en-php.php</link><category>PHP</category><category>concurrencia</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">displaynone</dc:creator><pubDate>Thu, 11 Mar 2010 09:50:14 PST</pubDate><guid isPermaLink="false">http://sentidoweb.com/?p=2219</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Buen script que nos puede ser muy útil cuando tenemos que ejecutar varios procesos concurrentes, por ejemplo realizar tareas de administración simultáneas. Para ello es necesario utilizar la función <em>pcntl_fork()</em>. El ejemplo es bastante sencillo, pero podemos personalizar el número de procesos que queremos que se ejecuten concurrentemente:</p>
<pre><code><pre class="php"><span style="color: #3E6D8F;">$maxChildren</span> = <span style="color: #cc66cc;">4</span>;
<span style="color: #3E6D8F;">$numChildren</span> = <span style="color: #cc66cc;">0</span>;
<span style="color: #723b00;">foreach</span><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$unitsOfWork</span> <span style="color: #723b00;">as</span> <span style="color: #3E6D8F;">$unit</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
  <span style="color: #3E6D8F;">$pids</span><span style="color: #66cc66;">&#91;</span><span style="color: #3E6D8F;">$numChildren</span><span style="color: #66cc66;">&#93;</span> = pcntl_fork<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
  <span style="color: #723b00;">if</span><span style="color: #66cc66;">&#40;</span>!<span style="color: #3E6D8F;">$pids</span><span style="color: #66cc66;">&#91;</span><span style="color: #3E6D8F;">$numChildren</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #808080; font-style: italic;">// do work</span>
    doWork<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$unit</span><span style="color: #66cc66;">&#41;</span>;
      <a href="http://www.php.net/posix_kill"><span style="color: #000066;">posix_kill</span></a><span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/getmypid"><span style="color: #000066;">getmypid</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #cc66cc;">9</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span> <span style="color: #723b00;">else</span> <span style="color: #66cc66;">&#123;</span>
      <span style="color: #3E6D8F;">$numChildren</span>++;
      <span style="color: #723b00;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$numChildren</span> == <span style="color: #3E6D8F;">$maxChildren</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        pcntl_wait<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$status</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #3E6D8F;">$numChildren</span>--;
      <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></code></pre>
<p><a href="http://blog.perplexedlabs.com/2010/03/02/php-forking-to-concurrency/">PHP Forking to Concurrency with pcntl_fork()</a></p>
<p>Via / <a href="http://www.phpdeveloper.org/news/14164">PHPDeveloper.org</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/THfEcfAX3tpfBHrxo3UkejiDoow/0/da"><img src="http://feedads.g.doubleclick.net/~a/THfEcfAX3tpfBHrxo3UkejiDoow/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/THfEcfAX3tpfBHrxo3UkejiDoow/1/da"><img src="http://feedads.g.doubleclick.net/~a/THfEcfAX3tpfBHrxo3UkejiDoow/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sentidoweb?a=9oOZ8HPNebQ:N9WS_6bjK_c:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=9oOZ8HPNebQ:N9WS_6bjK_c:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=9oOZ8HPNebQ:N9WS_6bjK_c:tKBiNdHYW3c"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=tKBiNdHYW3c" border="0"></img></a>
</div>]]></content:encoded><description>Buen script que nos puede ser muy útil cuando tenemos que ejecutar varios procesos concurrentes, por ejemplo realizar tareas de administración simultáneas. Para ello es necesario utilizar la función pcntl_fork(). El ejemplo es bastante sencillo, pero podemos personalizar el número de procesos que queremos que se ejecuten concurrentemente:
$maxChildren = 4;
$numChildren = 0;
foreach&amp;#40;$unitsOfWork as $unit&amp;#41; &amp;#123;
 [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sentidoweb.com/2010/03/11/procesos-concurrentes-en-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/03/11/procesos-concurrentes-en-php.php</feedburner:origLink></item><item><title>Lawnchair: ‘base de datos’ clave-valor en Javascript</title><link>http://feedproxy.google.com/~r/sentidoweb/~3/gSlF_iP5p4o/lawnchair-base-de-datos-clave-valor-en-javascript.php</link><category>Javascript</category><category>base de datos</category><category>json</category><category>nosql</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">displaynone</dc:creator><pubDate>Tue, 09 Mar 2010 09:11:20 PST</pubDate><guid isPermaLink="false">http://sentidoweb.com/?p=2217</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><strong>Lawnchair</strong> es una base de datos documental basada en JSON y que funciona en el cliente (Javascript). Puede venir muy bien para desarrollo de aplicaciones para móviles. Es muy fácl de usar y permite operaciones de escritura, lectura, búsqueda y eliminación.</p>
<pre><code><pre class="javascript"><span style="color: #003366; font-weight: bold;">var</span> people = <span style="color: #003366; font-weight: bold;">new</span> Lawnchair<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'people'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #009900; font-style: italic;">// Saving a document async</span>
people.<span style="color: #006600;">save</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span><span style="color: #000066;">name</span>:<span style="color: #3366CC;">'frank'</span><span style="color: #66cc66;">&#125;</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>r<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    console.<span style="color: #006600;">log</span><span style="color: #66cc66;">&#40;</span>r<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #009900; font-style: italic;">// Specifying your own key</span>
people.<span style="color: #006600;">save</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span>key:<span style="color: #3366CC;">'whatever'</span>, <span style="color: #000066;">name</span>:<span style="color: #3366CC;">'dracula'</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</pre></code></pre>
<p><a href="http://brianleroux.github.com/lawnchair/">Lawnchair</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/hFxUBuHeM__5XBtGylpU2Lqvjz4/0/da"><img src="http://feedads.g.doubleclick.net/~a/hFxUBuHeM__5XBtGylpU2Lqvjz4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/hFxUBuHeM__5XBtGylpU2Lqvjz4/1/da"><img src="http://feedads.g.doubleclick.net/~a/hFxUBuHeM__5XBtGylpU2Lqvjz4/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sentidoweb?a=gSlF_iP5p4o:bZugeeNXZW8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=gSlF_iP5p4o:bZugeeNXZW8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=gSlF_iP5p4o:bZugeeNXZW8:tKBiNdHYW3c"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=tKBiNdHYW3c" border="0"></img></a>
</div>]]></content:encoded><description>Lawnchair es una base de datos documental basada en JSON y que funciona en el cliente (Javascript). Puede venir muy bien para desarrollo de aplicaciones para móviles. Es muy fácl de usar y permite operaciones de escritura, lectura, búsqueda y eliminación.
var people = new Lawnchair&amp;#40;'people'&amp;#41;;
// Saving a document async
people.save&amp;#40;&amp;#123;name:'frank'&amp;#125;, function&amp;#40;r&amp;#41; &amp;#123;
    console.log&amp;#40;r&amp;#41;;
&amp;#125;&amp;#41;;
// [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sentidoweb.com/2010/03/09/lawnchair-base-de-datos-clave-valor-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/03/09/lawnchair-base-de-datos-clave-valor-en-javascript.php</feedburner:origLink></item><item><title>PHPillow: librería PHP para CouchDB</title><link>http://feedproxy.google.com/~r/sentidoweb/~3/kz06dAbnPDQ/phpillow-libreria-php-para-couchdb.php</link><category>Bases de datos</category><category>PHP</category><category>couchdb</category><category>nosql</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">displaynone</dc:creator><pubDate>Sat, 06 Mar 2010 17:30:38 PST</pubDate><guid isPermaLink="false">http://sentidoweb.com/?p=2214</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><strong>PHPillow</strong> es una librería PHP que nos permite interactuar con CouchDB (base de datos documental de Apache basada en JSON).</p>
<p>Ahora que el NoSQL es una alternativa a las bases de datos relacionales, esta librería nos ayudará bastante a la hora de realizar nuestra aplicación, ya que el código es bastante sencillo.</p>
<pre><code><pre class="php"><span style="color: #000000; font-weight: bold;">class</span> myBlogDocument extends phpillowDocument <span style="color: #66cc66;">&#123;</span> 
  protected <a href="http://www.php.net/static"><span style="color: #000066;">static</span></a> <span style="color: #3E6D8F;">$type</span> = <span style="color: #ff0000;">'blog_entry'</span>; 
  protected <span style="color: #3E6D8F;">$requiredProperties</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;">'title'</span>, <span style="color: #ff0000;">'text'</span>, <span style="color: #66cc66;">&#41;</span>; 
  public <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span> 
    <span style="color: #3E6D8F;">$this</span>-&gt;<span style="color: #006600;">properties</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;">'title'</span> =&gt; <span style="color: #000000; font-weight: bold;">new</span> phpillowStringValidator<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>, 
      <span style="color: #ff0000;">'text'</span> =&gt; <span style="color: #000000; font-weight: bold;">new</span> phpillowTextValidator<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>, 
      <span style="color: #ff0000;">'comments'</span> =&gt; <span style="color: #000000; font-weight: bold;">new</span> phpillowDocumentArrayValidator<span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">'myBlogComments'</span> <span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#41;</span>; 
    parent::__construct<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; 
  <span style="color: #66cc66;">&#125;</span> 
  protected <span style="color: #000000; font-weight: bold;">function</span> generateId<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span> 
    <span style="color: #723b00;">return</span> <span style="color: #3E6D8F;">$this</span>-&gt;<span style="color: #006600;">stringToId</span><span style="color: #66cc66;">&#40;</span> <span style="color: #3E6D8F;">$this</span>-&gt;<span style="color: #006600;">storage</span>-&gt;<span style="color: #006600;">title</span> <span style="color: #66cc66;">&#41;</span>; 
  <span style="color: #66cc66;">&#125;</span> 
  protected <span style="color: #000000; font-weight: bold;">function</span> <a href="http://www.php.net/gettype"><span style="color: #000066;">getType</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span> 
    <span style="color: #723b00;">return</span> self::<span style="color: #3E6D8F;">$type</span>; 
  <span style="color: #66cc66;">&#125;</span> 
<span style="color: #66cc66;">&#125;</span></pre></code></pre>
<p><a href="http://arbitracker.org/phpillow.html">PHPillow</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/GCkdqO4sy2DuqJQ13K5SizQ3OdI/0/da"><img src="http://feedads.g.doubleclick.net/~a/GCkdqO4sy2DuqJQ13K5SizQ3OdI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/GCkdqO4sy2DuqJQ13K5SizQ3OdI/1/da"><img src="http://feedads.g.doubleclick.net/~a/GCkdqO4sy2DuqJQ13K5SizQ3OdI/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sentidoweb?a=kz06dAbnPDQ:8BVHq3ORCaw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=kz06dAbnPDQ:8BVHq3ORCaw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=kz06dAbnPDQ:8BVHq3ORCaw:tKBiNdHYW3c"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=tKBiNdHYW3c" border="0"></img></a>
</div>]]></content:encoded><description>PHPillow es una librería PHP que nos permite interactuar con CouchDB (base de datos documental de Apache basada en JSON).
Ahora que el NoSQL es una alternativa a las bases de datos relacionales, esta librería nos ayudará bastante a la hora de realizar nuestra aplicación, ya que el código es bastante sencillo.
class myBlogDocument extends phpillowDocument &amp;#123; [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sentidoweb.com/2010/03/07/phpillow-libreria-php-para-couchdb.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/03/07/phpillow-libreria-php-para-couchdb.php</feedburner:origLink></item><item><title>Enlaces rápidos (05-03-2010)</title><link>http://feedproxy.google.com/~r/sentidoweb/~3/VZqv9VHkHGA/enlaces-rapidos-05-03-2010.php</link><category>Quicklinks</category><category>cassandra</category><category>mongodb</category><category>nosql</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">displaynone</dc:creator><pubDate>Fri, 05 Mar 2010 00:39:54 PST</pubDate><guid isPermaLink="false">http://sentidoweb.com/?p=2212</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Voy a tener que cambiar el título de estos posts por &#8220;Enlaces rápidos sobre NoSQL&#8221;, porque al final es sobre lo que más enlazo.</p>
<ul>
	<li><a href="http://engineering.twitter.com/2010/02/anatomy-of-whale.html">The Anatomy of a Whale</a> &#8220;Twitter is over capacity&#8221;</li>
	<li><a href="http://www.phpclasses.org/blog/post/117-PHP-compiler-performance.html">PHP Compiler Performance</a></li>
	<li><a href="http://css.dzone.com/articles/cassandra-nosql-database">Cassandra NoSQL Database an Apache Top Level Project</a></li>
	<li><a href="http://blog.oridoki.com/2009/01/20/php-mi-estado-en-skype/">PHP – Mi estado en Skype</a></li>
	<li><a href="http://nosql.mypopescu.com/post/407159447/cassandra-twitter-an-interview-with-ryan-king">Cassandra @ Twitter: An Interview with Ryan King</a></li>
	<li><a href="http://josephscott.org/archives/2010/02/database-indexes-on-domain-names/">Database Indexes on Domain Names</a></li>
	<li><a href="http://www.michaelwales.com/2010/02/what-does-hiphop-php-mean-for-codeigniter/">Qué puede significar HipHop para CodeIgniter</a></li>
	<li><a href="http://zenmachine.wordpress.com/2010/03/01/mongodb-and-redis-for-an-url-shortener/">MongoDB and Redis for an URL shortener</a></li>
	<li><a href="http://nosql.mypopescu.com/post/392418792/translate-sql-to-mongodb-mapreduce">Translate SQL to MongoDB MapReduce</a></li>
	<li><a href="http://www.netconcepts.com/google-keyword-tool-annualizer/">Google Keyword Tool Analizer</a></li>
	<li><a href="http://www.blackhatfun.com/?p=25">How to crack a CAPTCHA</a></li>
	<li><a href="http://nosql.mypopescu.com/post/420820637/cassandra-usecases-survey-results">Cassandra Usecases: Survey Results</a></li>
	<li><a href="http://nosql.mypopescu.com/post/422286341/6-valid-questions-for-every-nosql-project">6 Valid Questions for Every (NoSQL) Project</a></li>
	<li><a href="http://www.yafla.com/dforbes/Getting_Real_about_NoSQL_and_the_SQL_Isnt_Scalable_Lie/">Getting Real about NoSQL and the SQL-Isn&#8217;t-Scalable Lie</a></li>
	<li><a href="http://nosql.mypopescu.com/post/424164220/sql-is-scalable-sql-scalability-isnt-for-everyone">SQL is scalable. SQL scalability isn&#8217;t for everyone. NoSQL isn&#8217;t for  everyone either</a></li>
	<li><a href="http://www.umiacs.umd.edu/~jimmylin/MapReduce-book-20100219.pdf">MapReduce Book</a> (PDF)</li>
</ul>
<p><a href="http://feedads.g.doubleclick.net/~a/0S2f3kj7uTEq_OS3WuKXSSWFUbU/0/da"><img src="http://feedads.g.doubleclick.net/~a/0S2f3kj7uTEq_OS3WuKXSSWFUbU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/0S2f3kj7uTEq_OS3WuKXSSWFUbU/1/da"><img src="http://feedads.g.doubleclick.net/~a/0S2f3kj7uTEq_OS3WuKXSSWFUbU/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sentidoweb?a=VZqv9VHkHGA:xc9VJ4rLyxQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=VZqv9VHkHGA:xc9VJ4rLyxQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=VZqv9VHkHGA:xc9VJ4rLyxQ:tKBiNdHYW3c"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=tKBiNdHYW3c" border="0"></img></a>
</div>]]></content:encoded><description>Voy a tener que cambiar el título de estos posts por &amp;#8220;Enlaces rápidos sobre NoSQL&amp;#8221;, porque al final es sobre lo que más enlazo.

	The Anatomy of a Whale &amp;#8220;Twitter is over capacity&amp;#8221;
	PHP Compiler Performance
	Cassandra NoSQL Database an Apache Top Level Project
	PHP – Mi estado en Skype
	Cassandra @ Twitter: An Interview with Ryan King
	Database Indexes on [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sentidoweb.com/2010/03/05/enlaces-rapidos-05-03-2010.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/03/05/enlaces-rapidos-05-03-2010.php</feedburner:origLink></item><item><title>Traduce usando Google y PHP</title><link>http://feedproxy.google.com/~r/sentidoweb/~3/4J3nfZVaoGU/traduce-usando-google-y-php.php</link><category>PHP</category><category>Google</category><category>translator</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">displaynone</dc:creator><pubDate>Wed, 03 Mar 2010 09:12:45 PST</pubDate><guid isPermaLink="false">http://sentidoweb.com/?p=2210</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Interesante librería que hace uso de Google Translator para traducir un texto en un idioma a otro. Aunque el API de Google está solo en Java o Javascript, el autor de la librería ha creado un wrapper para que esté disponible desde PHP.</p>
<pre><code><pre class="php"><span style="color: #723b00;">require_once</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'googleTranslate.class.php'</span><span style="color: #66cc66;">&#41;</span>;
 
<span style="color: #808080; font-style: italic;">/* Initialize the class translate class */</span>
<span style="color: #3E6D8F;">$gt</span> = <span style="color: #000000; font-weight: bold;">new</span> GoogleTranslateWrapper<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$sampleText</span> = <span style="color: #ff0000;">"Bonjour de cette partie du monde"</span>;
 
<span style="color: #808080; font-style: italic;">/* translate(string, to_language, from_language) */</span>
<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #3E6D8F;">$gt</span>-&gt;<span style="color: #006600;">translate</span><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$sampleText</span> , <span style="color: #ff0000;">"en"</span>, <span style="color: #ff0000;">"fr"</span><span style="color: #66cc66;">&#41;</span>;</pre></code></pre>
<p><a href="http://www.codediesel.com/php/google-translation-php-wrapper/">Google Translation PHP wrapper</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/7MQr2XWQFTVzbHgC4WFHbZzMXjA/0/da"><img src="http://feedads.g.doubleclick.net/~a/7MQr2XWQFTVzbHgC4WFHbZzMXjA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/7MQr2XWQFTVzbHgC4WFHbZzMXjA/1/da"><img src="http://feedads.g.doubleclick.net/~a/7MQr2XWQFTVzbHgC4WFHbZzMXjA/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sentidoweb?a=4J3nfZVaoGU:_aiVUJQV0i0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=4J3nfZVaoGU:_aiVUJQV0i0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=4J3nfZVaoGU:_aiVUJQV0i0:tKBiNdHYW3c"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=tKBiNdHYW3c" border="0"></img></a>
</div>]]></content:encoded><description>Interesante librería que hace uso de Google Translator para traducir un texto en un idioma a otro. Aunque el API de Google está solo en Java o Javascript, el autor de la librería ha creado un wrapper para que esté disponible desde PHP.
require_once&amp;#40;'googleTranslate.class.php'&amp;#41;;
 
/* Initialize the class translate class */
$gt = new GoogleTranslateWrapper&amp;#40;&amp;#41;;
$sampleText = "Bonjour [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sentidoweb.com/2010/03/03/traduce-usando-google-y-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/03/03/traduce-usando-google-y-php.php</feedburner:origLink></item><item><title>Mostrar tu posición en Alexa mediante PHP</title><link>http://feedproxy.google.com/~r/sentidoweb/~3/owJB19nQIdM/mostrar-tu-posicion-en-alexa-mediante-php.php</link><category>PHP</category><category>alexa</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">displaynone</dc:creator><pubDate>Tue, 02 Mar 2010 06:12:48 PST</pubDate><guid isPermaLink="false">http://sentidoweb.com/?p=2206</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>El ranking de Alexa es uno de los más famosos que hay, y es bastante utilizado a la hora de vender publicidad u otros aspectos comerciales. Dispone de un API que permite obtener el ranking de una web, por lo que podemos hacer una llamada y obtener los datos para poder mostrarlos en nuestra web.</p>
<p>La clase es muy sencilla:</p>
<pre><code><pre class="php"><span style="color: #000000; font-weight: bold;">class</span> AlexaRank <span style="color: #66cc66;">&#123;</span>
  public <span style="color: #000000; font-weight: bold;">function</span> getRequestUri<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$domain</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #723b00;">return</span> <span style="color: #ff0000;">'http://data.alexa.com/data?cli=10&amp;dat=s&amp;url='</span> . <span style="color: #3E6D8F;">$domain</span>;
  <span style="color: #66cc66;">&#125;</span>
&nbsp;
  public <span style="color: #000000; font-weight: bold;">function</span> parse<span style="color: #66cc66;">&#40;</span> <span style="color: #3E6D8F;">$httpResponse</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</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;">'#&amp;lt;popularity url=&quot;(.*?)&quot; text=&quot;([0-9]+){1,}&quot;&amp;gt;#si'</span>, <span style="color: #3E6D8F;">$httpResponse</span>, <span style="color: #3E6D8F;">$p</span> <span style="color: #66cc66;">&#41;</span>;
    <span style="color: #3E6D8F;">$res</span> = <span style="color: #66cc66;">&#40;</span> <span style="color: #3E6D8F;">$p</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#41;</span> ? <a href="http://www.php.net/number_format"><span style="color: #000066;">number_format</span></a><span style="color: #66cc66;">&#40;</span> <a href="http://www.php.net/intval"><span style="color: #000066;">intval</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$p</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>:<span style="color: #cc66cc;">0</span>;
    <span style="color: #723b00;">return</span> <a href="http://www.php.net/str_replace"><span style="color: #000066;">str_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">','</span>, <span style="color: #ff0000;">''</span>, <span style="color: #3E6D8F;">$res</span><span style="color: #66cc66;">&#41;</span>;
  <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></code></pre>
<p><a href="http://php-html.net/tutorials/php-class-to-retrieve-alexa-rank/">Php Class to Retrieve Alexa Rank</a></p>
<p>Vía / <a href="http://www.dzone.com/links/php_class_to_retrieve_alexa_rank.html">DZone</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/EImU-fblYoh4GyvaY4ATmGh3eh0/0/da"><img src="http://feedads.g.doubleclick.net/~a/EImU-fblYoh4GyvaY4ATmGh3eh0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/EImU-fblYoh4GyvaY4ATmGh3eh0/1/da"><img src="http://feedads.g.doubleclick.net/~a/EImU-fblYoh4GyvaY4ATmGh3eh0/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sentidoweb?a=owJB19nQIdM:fio6n7zzJHI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=owJB19nQIdM:fio6n7zzJHI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=owJB19nQIdM:fio6n7zzJHI:tKBiNdHYW3c"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=tKBiNdHYW3c" border="0"></img></a>
</div>]]></content:encoded><description>El ranking de Alexa es uno de los más famosos que hay, y es bastante utilizado a la hora de vender publicidad u otros aspectos comerciales. Dispone de un API que permite obtener el ranking de una web, por lo que podemos hacer una llamada y obtener los datos para poder mostrarlos en nuestra web.
La [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sentidoweb.com/2010/03/02/mostrar-tu-posicion-en-alexa-mediante-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/03/02/mostrar-tu-posicion-en-alexa-mediante-php.php</feedburner:origLink></item><item><title>Krumo: alternativa a var_dump</title><link>http://feedproxy.google.com/~r/sentidoweb/~3/cjYSd5tGalw/krumo-alternativa-a-var_dump.php</link><category>PHP</category><category>debug</category><category>krumo</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">displaynone</dc:creator><pubDate>Mon, 01 Mar 2010 13:55:12 PST</pubDate><guid isPermaLink="false">http://sentidoweb.com/?p=2201</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><strong>Krumo</strong> es una librería que realiza lo mismo que var_dump, pero dándole un formato más amigable. Permite cambiarle el formato mediante skins.</p>
<p><img src="http://sentidoweb.com/wp-content/uploads/2010/03/krumo-300x205.png" alt="krumo" width="300" height="205" class="center" /></p>
<p>Una alternativa a tener en cuenta, yo personalmente uso bastante <em>var_dump</em> y a veces es un poco lío seguir en debug de objetos grandes.</p>
<p><a href="http://krumo.sourceforge.net/">Krumo</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/c3zA5L4H2nmRw8EGyC8sL-UZ0BI/0/da"><img src="http://feedads.g.doubleclick.net/~a/c3zA5L4H2nmRw8EGyC8sL-UZ0BI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/c3zA5L4H2nmRw8EGyC8sL-UZ0BI/1/da"><img src="http://feedads.g.doubleclick.net/~a/c3zA5L4H2nmRw8EGyC8sL-UZ0BI/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sentidoweb?a=cjYSd5tGalw:q6A756AktM0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=cjYSd5tGalw:q6A756AktM0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=cjYSd5tGalw:q6A756AktM0:tKBiNdHYW3c"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=tKBiNdHYW3c" border="0"></img></a>
</div>]]></content:encoded><description>Krumo es una librería que realiza lo mismo que var_dump, pero dándole un formato más amigable. Permite cambiarle el formato mediante skins.

Una alternativa a tener en cuenta, yo personalmente uso bastante var_dump y a veces es un poco lío seguir en debug de objetos grandes.
Krumo</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sentidoweb.com/2010/03/01/krumo-alternativa-a-var_dump.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/03/01/krumo-alternativa-a-var_dump.php</feedburner:origLink></item><item><title>Comparativa de Data Stores</title><link>http://feedproxy.google.com/~r/sentidoweb/~3/QTjYHkZmVuw/comparativa-de-data-stores.php</link><category>Bases de datos</category><category>cassandra</category><category>database</category><category>nosql</category><category>rendimiento</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">displaynone</dc:creator><pubDate>Wed, 24 Feb 2010 05:55:45 PST</pubDate><guid isPermaLink="false">http://sentidoweb.com/?p=2199</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Entendiendo por Data Stores los sistemas de almacenamiento tanto RDBMS o NoSQL, el PDF que referencio compara los distintos tipos de data stores que hay:</p>
<ul>
<li>Almacenamientos clave-valor</li>
<li>Almacenamiento de documentos</li>
<li>Similares al BigTable de Google</li>
<li>BD relacionales escalables</li>
</ul>
<p>De cada tipo de data store explica cuales son y que características tiene, y por último hace comparativa entre ellos. También nos dice posibles ejemplos de uso:</p>
<ul>
<li><strong>Sistemas clave-valor</strong>: útil cuando los datos almacenados se basan en el acceso de información mediante un ID (sin joins) y que se actualiza pocas veces o se actualiza siempre de la misma manera.</li>
<li><strong>Almacenamiento de documentos</strong>: cuando la información almacenada depende de varios campos (por ejemplo un stock de vehículos).</li>
<li><strong>Sistemas basados en BigTable</strong>: se puede tratar de aplicaciones similares a los almacenamientos documentales, pero con la diferencia de que es necesario un elevado número de registros.</li>
<li><strong>RDBMS escalables</strong>: cuando nuestra aplicación necesita de relaciones entre distintos datos y nuestro servidor se queda corto para aguantar el volumen de datos o de transacciones.</li>
</ul>
<p>Me gustaría destacar que entre estos data store, se encuentra Cassandra, proyecto open source de Facebook, que ahora es un <a href="http://incubator.apache.org/cassandra/">proyecto de Apache</a> y que <a href="http://nosql.mypopescu.com/post/407159447/cassandra-twitter-an-interview-with-ryan-king">Twitter va a usar para sustituir MySQL</a>.</p>
<p><a href="http://cattell.net/datastores/Datastores.pdf">High Performance Scalable Data Stores</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/ukEPQwOESGTsuHPyz2-jSn7kXUs/0/da"><img src="http://feedads.g.doubleclick.net/~a/ukEPQwOESGTsuHPyz2-jSn7kXUs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ukEPQwOESGTsuHPyz2-jSn7kXUs/1/da"><img src="http://feedads.g.doubleclick.net/~a/ukEPQwOESGTsuHPyz2-jSn7kXUs/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sentidoweb?a=QTjYHkZmVuw:OMNwKEy6Zx8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=QTjYHkZmVuw:OMNwKEy6Zx8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=QTjYHkZmVuw:OMNwKEy6Zx8:tKBiNdHYW3c"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=tKBiNdHYW3c" border="0"></img></a>
</div>]]></content:encoded><description>Entendiendo por Data Stores los sistemas de almacenamiento tanto RDBMS o NoSQL, el PDF que referencio compara los distintos tipos de data stores que hay:

Almacenamientos clave-valor
Almacenamiento de documentos
Similares al BigTable de Google
BD relacionales escalables

De cada tipo de data store explica cuales son y que características tiene, y por último hace comparativa entre ellos. También nos [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sentidoweb.com/2010/02/24/comparativa-de-data-stores.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/02/24/comparativa-de-data-stores.php</feedburner:origLink></item><item><title>Escalar aplicaciones web usando HMVC</title><link>http://feedproxy.google.com/~r/sentidoweb/~3/DWGWy8_kV1g/escalar-aplicaciones-web-usando-hmvc.php</link><category>Desarrollo web</category><category>PHP</category><category>escalabilidad</category><category>hmvc</category><category>rendimiento</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">displaynone</dc:creator><pubDate>Mon, 22 Feb 2010 13:39:59 PST</pubDate><guid isPermaLink="false">http://sentidoweb.com/?p=2195</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Hierarchical-Model-View-Controller (HMVC) es una variante del MVC que se forma mediante una colección de estos, siendo cada MVC independiente de los otros, y siendo un aspecto importante la reutilización de código, por lo que la localización física de los MVC no es importante. El HMVC es muy efectivo a la hora de testear módulos de la aplicación independientes, y una buena opción para escalar nuestra aplicación.</p>
<p><img alt="" src="http://techportal.ibuildings.com/wp-content/uploads/2010/02/MVC-HMVC.png" title="HMVC" class="alignnone" width="500" class="center"/></p>
<p>El tutorial nos muestra cómo usar Kohana para llevar a cabo una aplicación que implemente HMVC. Está claro que una aplicación así puede ser algo más difícil de diseñar y que no siempre puede que necesitemos este grado de escalabilidad.</p>
<p><a href="http://techportal.ibuildings.com/2010/02/22/scaling-web-applications-with-hmvc/">Scaling Web Applications with HMVC</a></p>


<p><a href="http://feedads.g.doubleclick.net/~a/n6jiZvnevqmJqAsuTrjvHeGgWSQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/n6jiZvnevqmJqAsuTrjvHeGgWSQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/n6jiZvnevqmJqAsuTrjvHeGgWSQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/n6jiZvnevqmJqAsuTrjvHeGgWSQ/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sentidoweb?a=DWGWy8_kV1g:vBeHRCqsiw4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=DWGWy8_kV1g:vBeHRCqsiw4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=DWGWy8_kV1g:vBeHRCqsiw4:tKBiNdHYW3c"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=tKBiNdHYW3c" border="0"></img></a>
</div>]]></content:encoded><description>Hierarchical-Model-View-Controller (HMVC) es una variante del MVC que se forma mediante una colección de estos, siendo cada MVC independiente de los otros, y siendo un aspecto importante la reutilización de código, por lo que la localización física de los MVC no es importante. El HMVC es muy efectivo a la hora de testear módulos de [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sentidoweb.com/2010/02/22/escalar-aplicaciones-web-usando-hmvc.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/02/22/escalar-aplicaciones-web-usando-hmvc.php</feedburner:origLink></item><item><title>Drag &amp; Drop de ficheros en Firefox</title><link>http://feedproxy.google.com/~r/sentidoweb/~3/llZeKU5JRso/drag-drop-de-ficheros-en-firefox.php</link><category>Javascript</category><category>drag</category><category>drop</category><category>ficheros</category><category>Firefox</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">displaynone</dc:creator><pubDate>Thu, 18 Feb 2010 01:46:22 PST</pubDate><guid isPermaLink="false">http://sentidoweb.com/?p=2192</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Esto puede dar mucho juego, pero tan solo funciona en Firefox 3.6+, por lo que no podemos depender de este script en nuestras aplicaciones. A partir de la versión 3.6, Firefox permite realizar drag&#038;drop de ficheros en nuestra web y mediante Javascript poder obtener los ficheros o textos que se arrastren contra un elemento específico.</p>
<p>Su uso es muy sencillo:</p>
<pre><code><pre class="javascript">dropzone.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">"drop"</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>event<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
  event.<span style="color: #006600;">preventDefault</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
  <span style="color: #009900; font-style: italic;">// Ready to do something with the dropped object</span>
  <span style="color: #003366; font-weight: bold;">var</span> allTheFiles = event.<span style="color: #006600;">dataTransfer</span>.<span style="color: #006600;">files</span>;
  <span style="color: #000066;">alert</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">"You've just dropped "</span> + allTheFiles.<span style="color: #006600;">length</span> + <span style="color: #3366CC;">" files"</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>, <span style="color: #003366; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;</pre></code></pre>
<p>Y dispone de una API tanto para el <a href="https://developer.mozilla.org/En/DragDrop/DataTransfer">drag&#038;drop</a> como para los <a href="https://developer.mozilla.org/en/DOM/FileReader">ficheros</a>.</p>
<p>Recomiendo ver el código fuente de <a href="http://demos.hacks.mozilla.org/openweb/DnD/">este ejemplo</a> para tener una librería que te hace todo el trabajo.</p>
<p><a href="http://hacks.mozilla.org/2009/12/file-drag-and-drop-in-firefox-3-6/">file drag and drop in Firefox 3.6</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/iZ12G1GQNVWnxctPj19FE9mcEOY/0/da"><img src="http://feedads.g.doubleclick.net/~a/iZ12G1GQNVWnxctPj19FE9mcEOY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/iZ12G1GQNVWnxctPj19FE9mcEOY/1/da"><img src="http://feedads.g.doubleclick.net/~a/iZ12G1GQNVWnxctPj19FE9mcEOY/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sentidoweb?a=llZeKU5JRso:Wr1hyojNPBI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=llZeKU5JRso:Wr1hyojNPBI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=llZeKU5JRso:Wr1hyojNPBI:tKBiNdHYW3c"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=tKBiNdHYW3c" border="0"></img></a>
</div>]]></content:encoded><description>Esto puede dar mucho juego, pero tan solo funciona en Firefox 3.6+, por lo que no podemos depender de este script en nuestras aplicaciones. A partir de la versión 3.6, Firefox permite realizar drag&amp;#038;drop de ficheros en nuestra web y mediante Javascript poder obtener los ficheros o textos que se arrastren contra un elemento específico.
Su [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sentidoweb.com/2010/02/18/drag-drop-de-ficheros-en-firefox.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/02/18/drag-drop-de-ficheros-en-firefox.php</feedburner:origLink></item></channel></rss>
