<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>editablething</title>
	<atom:link href="http://www.editablething.com/news/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.editablething.com/news</link>
	<description></description>
	<lastBuildDate>Wed, 21 Sep 2011 18:52:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>I Like Simple Inheritance</title>
		<link>http://www.editablething.com/news/2011/09/21/i-like-simple-inheritance/</link>
		<comments>http://www.editablething.com/news/2011/09/21/i-like-simple-inheritance/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 18:52:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.editablething.com/news/?p=131</guid>
		<description><![CDATA[There are a lot of &#8220;ways&#8221; to implement inheritance in javascript thanks to the Constructors prototype property, and a lot of people has implemented amazing abstractions where is possible to call Parent Constructor methods etc. I&#8217;m not saying these abstractions are the best way to code in Javascript (just ask the Yahoo guys), since Javascript [...]]]></description>
			<content:encoded><![CDATA[<p>There are a lot of &#8220;ways&#8221; to implement inheritance in javascript thanks to the Constructors <em>prototype</em> property, and a lot of people has implemented amazing abstractions where is possible to call Parent Constructor methods etc. </p>
<p>I&#8217;m not saying these abstractions are the best way to code in Javascript (just ask the Yahoo guys), since Javascript object oriented nature was not thought to do it so. But sometimes it makes easier for not Javascript devs to work.</p>
<p>One of these abstractions is <a href="http://ejohn.org/blog/simple-javascript-inheritance/" title="Simple Inheritance by John Resig" target="_blank">Simple Inheritance</a> by John Resig.</p>
<p>I think is really cool because of its simplicity: a few lines of clean code that let you do things in Javascript you shouldn&#8217;t be doing :)</p>
<p>Let&#8217;s see it:</p>
<pre name="code" class="javascript">
/* Simple JavaScript Inheritance
 * By John Resig http://ejohn.org/
 * MIT Licensed.
 */
// Inspired by base2 and Prototype
(function(){
  var initializing = false, fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;
  // The base Class implementation (does nothing)
  this.Class = function(){};

  // Create a new Class that inherits from this class
  Class.extend = function(prop) {
    var _super = this.prototype;

    // Instantiate a base class (but only create the instance,
    // don't run the init constructor)
    initializing = true;
    var prototype = new this();
    initializing = false;

    // Copy the properties over onto the new prototype
    for (var name in prop) {
      // Check if we're overwriting an existing function
      prototype[name] = typeof prop[name] == "function" &#038;&#038;
        typeof _super[name] == "function" &#038;&#038; fnTest.test(prop[name]) ?
        (function(name, fn){
          return function() {
            var tmp = this._super;

            // Add a new ._super() method that is the same method
            // but on the super-class
            this._super = _super[name];

            // The method only need to be bound temporarily, so we
            // remove it when we're done executing
            var ret = fn.apply(this, arguments);
            this._super = tmp;

            return ret;
          };
        })(name, prop[name]) :
        prop[name];
    }

    // The dummy class constructor
    function Class() {
      // All construction is actually done in the init method
      if ( !initializing &#038;&#038; this.init )
        this.init.apply(this, arguments);
    }

    // Populate our constructed prototype object
    Class.prototype = prototype;

    // Enforce the constructor to be what we expect
    Class.prototype.constructor = Class;

    // And make this class extendable
    Class.extend = arguments.callee;

    return Class;
  };
})();
</pre>
<p>Ok, nothing extremely different from other implementations, what makes it easier to understand.</p>
<p>The 3 points I really like about it are:</p>
<pre name="code" class="javascript">
    /xyz/.test(function(){xyz;})
</pre>
<p>That&#8217;s the way it checks the environment supports functions decompilation, in case it does and the code this._super() is found in the current object property code (of course, has to be a callable object), then the same named method will be called in the Parent Constructor when calling this object property.</p>
<pre name="code" class="javascript">
    Class.prototype.constructor = Class;
</pre>
<p>That&#8217;s not needed from the functional point of view but it makes our Constructors more reliable.</p>
<pre name="code" class="javascript">
    if ( !initializing &#038;&#038; this.init )
        this.init.apply(this, arguments);
</pre>
<p>This condition makes possible the init method to be called just once on object creation via the new operator, since the way the Constructor prototype object is created consists in copying the object generated by new this() call (let&#8217;s say a &#8220;Parent Class&#8221; object).</p>
<p>One thing we could improve would be to name the Class.extend method like this:</p>
<pre name="code" class="javascript">
    "use strict";
    Class.extend = function extend(prop) {
        var _super = this.prototype;
</pre>
<p>so we could do this:</p>
<pre name="code" class="javascript">
    // And make this class extendable
        Class.extend = extend;
</pre>
<p>in order to avoid the deprecated arguments.callee property.</p>
<p>Another not JS nature improvement would be to clone every &#8220;[object Object]&#8221; or &#8220;[object Array]&#8221; property, instead of making objects to inherit shared references properties, so each instance would have an independent copy of these properties. In anycase I don&#8217;t think this makes a lot of sense&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.editablething.com/news/2011/09/21/i-like-simple-inheritance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Un Site &amp;zigrarr; un Frontend Developer</title>
		<link>http://www.editablething.com/news/2011/09/10/un-website-un-frontend-developer/</link>
		<comments>http://www.editablething.com/news/2011/09/10/un-website-un-frontend-developer/#comments</comments>
		<pubDate>Sat, 10 Sep 2011 13:45:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.editablething.com/news/?p=120</guid>
		<description><![CDATA[Ayer me encontré, visitando una página de un canal de televisión, el siguiente fragmento de código: var cintilloDirecto = jQuery('div[id=cintilloDirecto]'); if( cintilloDirecto ) { var isEmpty = jQuery(cintilloDirecto).find('a img').attr('src').match('empty.gif'); if(isEmpty == null){jQuery(cintilloDirecto).parent().removeClass('hidden')} } el cual, además de utilizar un nombre de variable bastante discutible &#8220;cintilloDirecto&#8221; (quién no esté de acuerdo que lea cualquier libro acerca [...]]]></description>
			<content:encoded><![CDATA[<p>Ayer me encontré, visitando una página de un canal de televisión, el siguiente fragmento de código:  </p>
<pre name="code" class="javascript">
        var cintilloDirecto = jQuery('div[id=cintilloDirecto]');
        if( cintilloDirecto )
        {
            var isEmpty = jQuery(cintilloDirecto).find('a img').attr('src').match('empty.gif');
            if(isEmpty == null){jQuery(cintilloDirecto).parent().removeClass('hidden')}
        }
</pre>
<p>el cual, además de utilizar un nombre de variable bastante discutible &#8220;cintilloDirecto&#8221; (quién no esté de acuerdo que lea cualquier libro acerca de código legible o técnicas de programación y exponga de manera clara su punto de vista) demuestra una terrible falta de &#8220;saber lo que se está haciendo&#8221;.</p>
<p>Para empezar la función global jQuery no tiene que ser aplicada una y otra vez sobre un objeto devuelto por la misma. Y lo peor de todo es la comprobación de la siguiente condición:</p>
<pre name="code" class="javascript">
        var cintilloDirecto = jQuery('div[id=cintilloDirecto]');
        if( cintilloDirecto ) // cintilloDirecto nunca va a ser un falsy value
</pre>
<p>Ya que jQuery siempre devolverá un &#8220;jQuery object&#8221; incluso cuando el css selector utilizado no concuerde (match) con ningún elemento presente en el DOM.</p>
<p>De modo que el código refactorizado quedaría algo así:</p>
<pre name="code" class="javascript">
        var directo = jQuery( '#cintilloDirecto' );

        if( !!directo.find( 'a img[src="empty.gif"]' ).length ) {
            directo.parent().removeClass( 'hidden' );
        }
</pre>
<p>Cómo decía por ahí un tweet que leí una vez: &#8220;Un bebé ballena muere cada vez que un backend developer programa frontend.&#8221; ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.editablething.com/news/2011/09/10/un-website-un-frontend-developer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Workers Use Case &#8211; Loading Data Files</title>
		<link>http://www.editablething.com/news/2010/10/17/web-workers-use-case-loading-big-data-files/</link>
		<comments>http://www.editablething.com/news/2010/10/17/web-workers-use-case-loading-big-data-files/#comments</comments>
		<pubDate>Sun, 17 Oct 2010 05:13:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.editablething.com/news/?p=105</guid>
		<description><![CDATA[I spent last week rebuilding the whole javascript framework we use at work (finally I had some time for it), because the current one is a little disaster (you know, every developer had written his own stuff in different files, too much DOM access etc.) The point is we wanted to have autocompletion for airport [...]]]></description>
			<content:encoded><![CDATA[<p>I spent last week rebuilding the whole javascript framework we use at work (finally I had some time for it), because the current one is a little disaster (you know, every developer had written his own stuff in different files, too much DOM access etc.)</p>
<p>The point is we wanted to have autocompletion for airport selection without using AJAX, but prefetching a huge file containing the whole airport list (why? ummm, not my decision). Of course the airport file is huge (around 400KB, not gzipped), so before I came to the company the guys decided to load this file via AJAX request after &#8220;dom:loaded&#8221; but still was delaying too much the first user interaction.</p>
<p>My second try consisted in taking advantage of Web Workers:</p>
<ul>
<li><a href="https://developer.mozilla.org/En/Using_web_workers">https://developer.mozilla.org/En/Using_web_workers</a></li>
<li><a href="http://dev.opera.com/articles/view/web-workers-rise-up">http://dev.opera.com/articles/view/web-workers-rise-up</a></li>
<li><a href="http://www.html5rocks.com/tutorials/workers/basics">http://www.html5rocks.com/tutorials/workers/basics</a></li>
</ul>
<p>And it worked really well! Of course using as well an AJAX request as the fallbak for IE mostly. <strong>The major advantage</strong> is not the file transfer itself (since this should be ~ the same using a Worker object instance or an AJAX request or whatever other file loading alternative) but the time the Javascript engine consumes to treat the huge variable literal first assigment (in my case a really big Array of strings), where with a Worker gets done without blocking the execution of the rest of your javascript code.</p>
<p>I just did something like this:</p>
<p><strong>Main javascript file</strong></p>
<pre name="code" class="javascript">if(!!window.Worker) {
    var worker = new Worker('myWorker.js');
    worker.onmessage = success;
}</pre>
<p><strong>Worker file</strong></p>
<pre name="code" class="javascript">if(!IE) {
    postMessage(hugeArray);
}</pre>
<p>So the success method gets executed just after the Worker loaded the file with the airport list and had ready the hugeArray variable to be treated by my autocompleter functionality. The performance got considerably increased (in my case something like 10 times faster in FF and 3 times faster in Chrome 6).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.editablething.com/news/2010/10/17/web-workers-use-case-loading-big-data-files/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Comprobar Propiedades de Objetos</title>
		<link>http://www.editablething.com/news/2010/10/06/propiedades-de-objetos-%c2%bfcomo-comprobarlas/</link>
		<comments>http://www.editablething.com/news/2010/10/06/propiedades-de-objetos-%c2%bfcomo-comprobarlas/#comments</comments>
		<pubDate>Wed, 06 Oct 2010 17:39:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.editablething.com/news/?p=101</guid>
		<description><![CDATA[Hace un par de días leí este interesante artículo acerca de la comprobación de la existencia de una propiedad en un objeto de Javascript. Y Nicholas claramente llegaba a la conclusión de que cuando se quiere comprobar la existencia de la propiedad independientemente de si se trata de un atributo propio o heredado del prototype [...]]]></description>
			<content:encoded><![CDATA[<p>Hace un par de días leí este <a href="http://www.nczonline.net/blog/2010/07/27/determining-if-an-object-property-exists/">interesante artículo</a> acerca de la comprobación de la existencia de una propiedad en un objeto de Javascript.</p>
<p>Y Nicholas claramente llegaba a la conclusión de que cuando se quiere comprobar la existencia de la propiedad independientemente de si se trata de un atributo propio o heredado del prototype del &#8220;objeto padre&#8221; (por llamar de alguna forma a la función a partir de la cual se construyó), la mejor opción es:</p>
<p><code>(<em>atributo</em> in <em>objeto</em>)</code></p>
<p>Y si lo que necesitas es comprobar un atributo propio del objeto (no heredado, es decir, definido sobre el objeto directamente y no existente en el &#8220;objeto padre&#8221;) puedes usar hasOwnProperty(). Pero por supuesto teniendo en cuenta una serie de restricciones como bien apuntaba Kangax:</p>
<p>- Cuidado con los Host Objects.<br />
- Cuidado con propiedades definidas en ambos objetos al mismo tiempo.<br />
- Y cuidado con algunas implementaciones del standard ECMAScript.</p>
<p>En definitiva, la cuestión es saber lo que estás haciendo y echarle un vistazo de vez en cuando al standard, además de comprobar resultados en los distintos navegadores antes de dar por cierta cualquier afirmación (eso es lo que tiene Javascript, nunca puedes estar seguro al 100% en el 99.9% de las situaciones).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.editablething.com/news/2010/10/06/propiedades-de-objetos-%c2%bfcomo-comprobarlas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ninja Techniques Starts!</title>
		<link>http://www.editablething.com/news/2010/10/04/advanced-javascript/</link>
		<comments>http://www.editablething.com/news/2010/10/04/advanced-javascript/#comments</comments>
		<pubDate>Mon, 04 Oct 2010 10:25:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ninja Techniques]]></category>

		<guid isPermaLink="false">http://www.editablething.com/news/?p=76</guid>
		<description><![CDATA[Hi there, I would like to start my Ninja Techniques posts making a general introduction of the main Javascript features I&#8217;ll talk about that are not tipically explained in most of the Javascript books, plus the concept of execution context. Note: Most of the info in Ninja Techniques posts are based on the wonderful posts [...]]]></description>
			<content:encoded><![CDATA[<p>Hi there, I would like to start my Ninja Techniques posts making a general introduction of the main Javascript features I&#8217;ll talk about that are not tipically explained in most of the Javascript books, plus the concept of execution context.</p>
<p>Note: Most of the info in Ninja Techniques posts are based on the wonderful posts these guys; </p>
<ul>
<li><a href="http://perfectionkills.com">http://perfectionkills.com</a></li>
<li><a href="http://www.nczonline.net">http://www.nczonline.net</a></li>
<li><a href="http://javascriptweblog.wordpress.com">http://javascriptweblog.wordpress.com</a></li>
<li><a href="http://allyoucanleet.com">http://allyoucanleet.com</a></li>
<li><a href="http://dmitrysoshnikov.com">http://dmitrysoshnikov.com</a></li>
</ul>
<p>had written, together with the <a href="http://www.ecma-international.org/publications/standards/Ecma-262.htm">Standard ECMA-262</a>.</p>
<p>First of all, Javascript is an implementation of the ECMAScript language.</p>
<blockquote><p>ECMAScript is an object-oriented programming language for performing computations and manipulating computational objects within a host environment. ECMAScript as defined here is not intended to be computationally self-sufficient; indeed, there are no provisions in this specification for input of external data or output of computed results. Instead, it is expected that the computational environment of an ECMAScript program will provide not only the objects and other facilities described in this specification but also certain environment-specific host objects, whose description and behaviour are beyond the scope of this specification except to indicate that they may provide certain properties that can be accessed and certain functions that can be called from an ECMAScript program.</p></blockquote>
<p>Let&#8217;s take a look at some definitions directly from the ECMAScript standard:</p>
<ul>
<li><strong>type</strong>: <br/><br />
<blockquote><p>An ECMAScript language type corresponds to values that are directly manipulated by an ECMAScript programmer using the ECMAScript language. The ECMAScript language types are Undefined, Null, Boolean, String, Number, and Object.</p></blockquote>
</li>
<li><strong>primitive value</strong>: <br/><br />
<blockquote><p>member of one of the types Undefined, Null, Boolean, Number, or String as defined in Clause 8 (types definition).</p></blockquote>
<p>e.g. <strong>&#8220;hola&#8221;</strong>, <strong>1</strong>, <strong>true</strong> etc.</p>
</li>
<li><strong>object</strong>: <br/><br />
<blockquote><p>member of the type Object.</p></blockquote>
<p>e.g. var <strong>a</strong> = new Array();</p>
</li>
<li><strong>constructor</strong>: <br/><br />
<blockquote><p>Function object that creates and initialises objects.</p></blockquote>
<p>e.g. <strong>Array</strong></p>
</li>
<li><strong>prototype</strong>: <br/><br />
<blockquote><p>object that provides shared properties for other objects.</p></blockquote>
<p>e.g. <strong>Array.prototype</strong></p>
</li>
<li><strong>native object</strong>: <br/><br />
<blockquote><p>object in an ECMAScript implementation whose semantics are fully defined by this specification rather than by the host environment.</p></blockquote>
<blockquote><p>Some native objects are built-in; others may be constructed during the course of execution of an ECMAScript program.</p></blockquote>
</li>
<li><strong>built-in object</strong>: <br/><br />
<blockquote><p>object supplied by an ECMAScript implementation, independent of the host environment, that is present at the start of the execution of an ECMAScript program.</p></blockquote>
<p>e.g. <strong>Math</strong></p>
<blockquote><p>One, the global object, is part of the lexical environment of the executing program. Others are accessible as initial properties of the global object. Every built-in object is a native object.</p></blockquote>
</li>
<li><strong>host object</strong>: <br/><br />
<blockquote><p>object supplied by the host environment to complete the execution environment of ECMAScript.</p></blockquote>
<p>e.g.  <strong>window</strong></p>
</li>
<li>etc. (See all definitions <a href="http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf">here</a>)</li>
</ul>
<p>Conclusion got from these definitions:</p>
<p>Javascript is an implementation of something more general and platform independent! Ok, this we knew it. And there are entities which behaviour and features are defined by the standard and other kind of objects that depend on the particular implementation.</p>
<p>These are the Javascript aspects I&#8217;ll treat in next posts:</p>
<p>- Objects and Functions.<br />
- Inheritance.<br />
- Scope chain.<br />
- Arrays.</p>
<p>And for each of then, I&#8217;ll try to give a Javascript framework example where it is clearly used the concept we&#8217;re treating in that moment. Ok, so let&#8217;s start with the first Javascript feature I&#8217;d like to face: </p>
<h4>Execution Context</h4>
<p>Definition:</p>
<blockquote><p>When control is transferred to ECMAScript executable code, control is entering an execution context. Active execution contexts logically form a stack. The top execution context on this logical stack is the running execution context. A new execution context is created whenever control is transferred from the executable code associated with the currently running execution context to executable code that is not associated with that execution context. The newly created execution context is pushed onto the stack and becomes the running execution context.</p></blockquote>
<p>Basically, the evaluation of a certain type of code creates an execution context which is set on the top of the &#8220;execution contexts stack&#8221;. On the other hand, there are 3 kind of executable code:</p>
<p>- Global code (Code defined in the main program block, so outside of any function(){} block).<br />
- Eval code (Code executed by eval()).<br />
- Function code (Code inside a function(){} block).</p>
<p>And each of them have their own features. In general, let&#8217;s say that each context created has associated a Variable Object where is kept some of the needed data for the specific context and related code to run. In the case of Function code, its Variable Object associated to the context created when the control is transferred to it, is called Activation Object. For Global Code the Variable Object is the same Global Object (in browsers &#8211; <em>window</em>).</p>
<p><strong>That&#8217;s all about Execution Contexts?</strong></p>
<p>Of course not, since an execution context has a <strong>Variable Object</strong> <strong>plus</strong> a <strong>Scope chain</strong> (there has to be a way to access variables defined in parent methods) and a <strong>Context Object</strong> (our well known friend <strong>this</strong>).</p>
<p>Which info holds the Variable Object?</p>
<p>In context associated to global code:</p>
<ul>
<li>variables</li>
<li>function declarations</li>
</ul>
<p>In context associated to function code (Activation Object):</p>
<ul>
<li>variables</li>
<li>function declarations</li>
<li>formal parameters</li>
<li>arguments object (which is a map of formal parameters but with index-properties)</li>
</ul>
<p>What is the Scope chain? And Eval code? &#8230;<br />
This is just the main structure of the article, I&#8217;m preparing the examples, extended explanations and frameworks code (&#8230;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.editablething.com/news/2010/10/04/advanced-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Funny Javascript (Nobody is Perfect!)</title>
		<link>http://www.editablething.com/news/2010/09/08/51/</link>
		<comments>http://www.editablething.com/news/2010/09/08/51/#comments</comments>
		<pubDate>Wed, 08 Sep 2010 18:38:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.editablething.com/news/?p=51</guid>
		<description><![CDATA[// 20) { alert('oops, what where you trying to find out? too much javascript for a simple check.'); } else { try { eval("var result = (" + value + ");"); document.getElementById('checker').innerHTML = (result) ? 'true' : 'false'; } catch(e) { document.getElementById('checker').innerHTML = ';) Exception'; } } } // ]]&#62; javascript as the rest of [...]]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript">// <![CDATA[
     function check(){         var value = document.getElementById('tester').value;         if(value.length > 20) {
            alert('oops, what where you trying to find out? too much javascript for a simple check.');
        } else {
            try {
                   eval("var result = (" + value + ");");
                   document.getElementById('checker').innerHTML = (result) ? 'true' : 'false';
                 }
            catch(e) { document.getElementById('checker').innerHTML = ';) Exception'; }
        }
    }
// ]]&gt;</script></p>
<p>javascript as the rest of the programming languages has good and <strong>bad parts</strong>.</p>
<p>Here it goes some funny conditions results that make us think about why didn&#8217;t we choose working as lawyers, doctors or whatever other time consuming occupation but <strong>programmer</strong>:</p>
<p>&quot;&quot; == &quot;0&quot;     // false</p>
<p>0 == &quot;&quot;      // true</p>
<p>0 == &quot;0&quot;    // true</p>
<p>null == undefined      // true</p>
<p>&quot; \t\r\n &quot; == 0      // true</p>
<p>You can play and check the previous expressions here:</p>
<input id="tester" name="tester" type="text" value="null == undefined" />
<input id="button" onclick="javascript: check();" name="button" type="button" value="Check it!" />
<h3>Result</h3>
<p><span id="checker">true</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.editablething.com/news/2010/09/08/51/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TIG And Other Git Goodies</title>
		<link>http://www.editablething.com/news/2010/05/07/tig-and-other-git-goodies/</link>
		<comments>http://www.editablething.com/news/2010/05/07/tig-and-other-git-goodies/#comments</comments>
		<pubDate>Fri, 07 May 2010 00:10:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.editablething.com/news/?p=46</guid>
		<description><![CDATA[There are a lot of website tutorials, videos etc about GIT (the files version control system). Surfing during a couple of hours I found a couple of very interesting git tools and goodies. TIG: you can get it in Ubuntu like this: sudo apt-get install tig Is a quite nice command tool that lets you [...]]]></description>
			<content:encoded><![CDATA[<p>There are a lot of website tutorials, videos etc about GIT (the files version control system). Surfing during a couple of hours I found a couple of very interesting git tools and goodies.</p>
<p>TIG: you can get it in Ubuntu like this: sudo apt-get install tig<br />
Is a quite nice command tool that lets you explore you&#8217;re git repositories in a more comfortable way than the plain git commands like git status, show etc.</p>
<p>and a git auto completion script: http://gist.github.com/58383</p>
<p>In Anycase, every day I Keep On learning more a more About GIT, and really love it.</p>
<p>Regards,<br />
Daniel </p>
]]></content:encoded>
			<wfw:commentRss>http://www.editablething.com/news/2010/05/07/tig-and-other-git-goodies/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails Bundle Problem</title>
		<link>http://www.editablething.com/news/2010/05/04/ruby-on-rails-bundle-problem/</link>
		<comments>http://www.editablething.com/news/2010/05/04/ruby-on-rails-bundle-problem/#comments</comments>
		<pubDate>Tue, 04 May 2010 19:12:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.editablething.com/news/?p=41</guid>
		<description><![CDATA[Today I was trying to install the ruby application dependencies manager Bundler http://gembundler.com/index.html in my Ubuntu like this: gem install bundler As you have noticed is a ruby gem. The installation guide was pretty accurated, the problem came with the actual mysql lib dependency that I had in my Fikket source code. The Bundler command [...]]]></description>
			<content:encoded><![CDATA[<p>Today I was trying to install the ruby application dependencies manager Bundler <a href="http://gembundler.com/index.html">http://gembundler.com/index.html</a> in my Ubuntu like this:</p>
<pre style="border-top-left-radius: 5px 5px; border-top-right-radius: 5px 5px; border-bottom-right-radius: 5px 5px; border-bottom-left-radius: 5px 5px; -webkit-box-flex: 1; font-size: 13px; font-family: Monaco, monospace; background-color: #000000; color: #f8f8f8; padding: 10px; margin: 0px;"> gem install bundler</pre>
<p><br/>As you have noticed is a ruby gem. The installation guide was pretty accurated, the problem came with the actual mysql lib dependency that I had in my Fikket source code.</p>
<p>The Bundler command &#8220;bundle install&#8221; could not get it working.</p>
<p>Solution: installing the libmysqlclient15-dev</p>
<p>And everything was ready to go. So if you have this problem when doing: gem install mysql &#8211;&gt; install first the mysql dev library!</p>
<p>Regards!</p>
<p>Daniel</p>
<p>PS: In dev env I was only using sqlite, that&#8217;s why before using Bundler I didn&#8217;t have to fight against the mysql lib installation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.editablething.com/news/2010/05/04/ruby-on-rails-bundle-problem/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Zend Vs Symfony</title>
		<link>http://www.editablething.com/news/2010/01/31/zend-vs-symfony/</link>
		<comments>http://www.editablething.com/news/2010/01/31/zend-vs-symfony/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 22:43:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.editablething.com/news/?p=32</guid>
		<description><![CDATA[He estado echando un vistazo al framework Zend de PHP. La documentación no está &#8220;mal del todo&#8221;. Ahora eso sí, nada que ver con Symfony (me refiero a para bien o para mal), y ahora explicaré por qué (conste que puede ser que la mitad de lo que digo sean barbaridades porque no conozco ni [...]]]></description>
			<content:encoded><![CDATA[<p>He estado echando un vistazo al framework <strong><a href="http://framework.zend.com" target="_blank">Zend</a> de PHP</strong>. La documentación no está &#8220;mal del todo&#8221;. Ahora eso sí, nada que ver con Symfony (me refiero a para bien o para mal), y ahora explicaré por qué (<em>conste que puede ser que la mitad de lo que digo sean barbaridades porque no conozco ni el 5% de Zend</em>).</p>
<ol>
<li><strong>Es un framework de PHP más que un framework de desarrollo genérico</strong>. ¿Por qué? Pues porque mayormente se trata de una librería de clases muy útiles y por lo visto bien desarrolladas, pero no está enfocado a facilitarte el resto de tareas repetitivas aparte de la implementación en sí de un proyecto. Como por ejemplo: el despliegue, la estructura del mismo etc.</li>
<li><strong>La documentación a mi entender deja que desear</strong> (aunque hay cosas mucho peores por supuesto). No es comparable a la que puedes encontrar en el sitio y la comunidad de <a href="http://www.symfony-project.org/" target="_blank">Symfony</a>.</li>
<li><strong>La configuración de un sitio con este framework me da a mí que te la tienes que trabajar tú solito</strong>. Otra gran diferencia respecto a Symfony o Ruby on Rails.</li>
</ol>
<p>Pero vamos, que tampoco soy yo nadie para echarle tierra encima al Framework. Seguro que en seis meses hablamos y os digo todo lo contrario.</p>
<p>Un saludo, y en seis meses hablamos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.editablething.com/news/2010/01/31/zend-vs-symfony/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Vncserver vs Dreamhost</title>
		<link>http://www.editablething.com/news/2010/01/29/vncserver-vs-dreamhost/</link>
		<comments>http://www.editablething.com/news/2010/01/29/vncserver-vs-dreamhost/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 23:22:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.editablething.com/news/?p=17</guid>
		<description><![CDATA[Durante los dos últimos días me he estado peleando con la instalación de vncserver en Dreamhost. La cual no tiene ningún problema y con un simple apt-get install vncserver, todo va rodado. El problema viene después. Por algún motivo que escapa a mi vago conocimiento de sistemas, la instalación es correcta pero los escritorios virtuales [...]]]></description>
			<content:encoded><![CDATA[<p>Durante los dos últimos días me he estado peleando con la instalación de <a href="http://www.realvnc.com/">vncserver</a> en <a href="http://www.dreamhost.com/">Dreamhost</a>. La cual no tiene ningún problema y con un simple <code>apt-get install vncserver</code>, todo va rodado. El problema viene después.</p>
<p>Por algún motivo que escapa a mi vago conocimiento de sistemas, la instalación es correcta pero los escritorios virtuales que obtengo no son accesibles desde el cliente xvncviewer. Todo esto me refiero mediante ssh en mi servidor ps de Dreamhost.</p>
<p>Tras comprobar que en mi portátil funciona sin problema, me estoy planteando que el problema viene de alguna configuración en el apache de Dreamhost que no me permite crear adecuadamente los escritorios.</p>
<p>Cualquier sugerencia es bienvenida. Para comenzar mi andanza en el maravilloso mundo de VNC leí un par de <a href="http://www.debian-administration.org/article/website_screenshot_server_on_debian_stable">artículos</a> y la documentación que aparece en la página de <em>realvnc.</em></p>
<p>Os animo a darme una pequeña lección acerca de este software y su configuración ;) ¡Bienvenida sea!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.editablething.com/news/2010/01/29/vncserver-vs-dreamhost/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

