<?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>Fri, 12 Mar 2010 01:01:08 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>INSERT IGNORE en MySQL</title><link>http://feedproxy.google.com/~r/sentidoweb/~3/k-B0QuFCcPg/insert-ignore-en-mysql.php</link><category>MYSQL</category><category>Quicklinks</category><category>ignore</category><category>insert</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">displaynone</dc:creator><pubDate>Fri, 12 Mar 2010 01:01:08 PST</pubDate><guid isPermaLink="false">http://sentidoweb.com/?p=2222</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Muchas veces realizamos inserts y nuestras comprobaciones son erróneas e intentamos insertar registros duplicados, dándonos un error gordo en MySQL. Para evitar esto, normalmente se usa un REPLACE cuando la situación permite reemplazar los valores nuevos por los actuales, pero cuando esto no es posible, nos tenemos que pegar con el código buscando la comprobación que no hacemos correctamente. Para evitar esto: insertar algo ya existente, MySQL ofrece la posibilidad de ignorar el insert cuando no se puede insertar:</p>
<pre><code><pre class="sql"><span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">IGNORE</span> 
  <span style="color: #993333; font-weight: bold;">INTO</span> tabla 
    <span style="color: #66cc66;">&#40;</span>id, valor, ...<span style="color: #66cc66;">&#41;</span> 
  <span style="color: #993333; font-weight: bold;">VALUES</span> 
    <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">25</span>, <span style="color: #ff0000;">'valor, ...) </span></pre></code></pre>
<p>Cada día aprendo algo nuevo, aunque a veces deberían darme con la Biblia de MySQL (775 páginas) en la cabeza por no conocer antes esto.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/q9QfFH5vAyTq03mD88dxCgGESQM/0/da"><img src="http://feedads.g.doubleclick.net/~a/q9QfFH5vAyTq03mD88dxCgGESQM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/q9QfFH5vAyTq03mD88dxCgGESQM/1/da"><img src="http://feedads.g.doubleclick.net/~a/q9QfFH5vAyTq03mD88dxCgGESQM/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sentidoweb?a=k-B0QuFCcPg:cLpVd3p4Hi4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=k-B0QuFCcPg:cLpVd3p4Hi4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sentidoweb?a=k-B0QuFCcPg:cLpVd3p4Hi4:tKBiNdHYW3c"><img src="http://feeds.feedburner.com/~ff/sentidoweb?d=tKBiNdHYW3c" border="0"></img></a>
</div>]]></content:encoded><description>Muchas veces realizamos inserts y nuestras comprobaciones son erróneas e intentamos insertar registros duplicados, dándonos un error gordo en MySQL. Para evitar esto, normalmente se usa un REPLACE cuando la situación permite reemplazar los valores nuevos por los actuales, pero cuando esto no es posible, nos tenemos que pegar con el código buscando la comprobación [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sentidoweb.com/2010/03/12/insert-ignore-en-mysql.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/12/insert-ignore-en-mysql.php</feedburner:origLink></item><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/">4</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></channel></rss>
