<?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>Luanatic with features &#187; Lua</title>
	<atom:link href="http://www.pplux.com/category/lua/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pplux.com</link>
	<description>PpluX &#039;s blog</description>
	<lastBuildDate>Mon, 11 May 2009 08:21:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>lua API, introducción</title>
		<link>http://www.pplux.com/2008/04/16/lua-api-introduccion/</link>
		<comments>http://www.pplux.com/2008/04/16/lua-api-introduccion/#comments</comments>
		<pubDate>Wed, 16 Apr 2008 09:19:38 +0000</pubDate>
		<dc:creator>PpluX</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Lua]]></category>
		<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://www.pplux.com/2008/04/16/lua-api-introduccion/</guid>
		<description><![CDATA[Haciendo honor al nombre del blog, y aprovechando que recientemente me han comentado que el API de lua es un poco rara, vamos a hincarle el diente directamente al problema. Este post es sólo para programadores, no trata del léxico/sintaxis de lua, sólo de una parte muy particular del API, concretamente, la que más problema [...]]]></description>
			<content:encoded><![CDATA[<p>Haciendo honor al nombre del blog, y aprovechando que recientemente me han comentado que el API de lua es un poco rara, vamos a hincarle el diente directamente al problema. Este post es sólo para programadores, no trata del léxico/sintaxis de lua, sólo de una parte muy particular del API, concretamente, la que más problema da al programador que se está iniciando en esto de lua.</p>
<p>Veamos en primer lugar que es eso de un <strong>lua_State*</strong>, es fácil crearlo (luaL_newstate), y destruirlo (lua_close) y representa un estado completo de lua. A efectos prácticos es como si con cada lua_State fuera una máquina virtual independiente, por lo que podemos tener tantos como queramos (uno por thread, uno por efecto, uno por agente, etc, etc&#8230;).</p>
<div class="alignCenter"><img src="/files/lua101_lua_State.png" alt="state basics" /></div>
<p><span id="more-163"></span><br />
En la imagen vemos que un estado de lua ofrece básicamente  un <strong>stack</strong>(pila) para trabajar con el estado. Esto es lo más complicado de entender del API, pero una vez se ve en el contexto, es una forma super eficiente de trabajar. No voy a explicar hoy qué razón se oculta tras la pila, asumamos que es así y que hay que aprender a usarla.</p>
<p>También está representado en la imagen los tipos básicos de lua: strings, números, booleanos, funciones, tablas&#8230; y poco más. La estructura clave aquí es la tabla que es el único contenedor que tiene lua y se trata de un map de pares clave-valor. La clave puede ser cualquier tipo de lua y el valor, por supuesto, también.</p>
<p>Las funciones en lua también son tipos de primer orden, esto quiere decir que las funciones son un valor más que se puede copiar, asignar, devolver como resultado de otra función, etc. Como hemos dicho antes, las tablas incluso pueden usar funciones como claves, nada lo impide.</p>
<p>La linea de puntos de la imagen que separa el stack de la tabla global es para resaltar que no accedemos directamente a la tabla de valores globales. Para poder manejar la tabla de valores globales, u otra tabla, usaremos operaciones que apilarán o consumirán valores del stack. En resumidas cuentas <strong>siempre trabajamos con el stack</strong></p>
<div class="alignCenter"><img src="/files/lua101_stack.png" alt="stak" /></div>
<p>El stack se accede por índice, en lua los índices numéricos empiezan siempre en 1, en contraposición con lo típico en C/C++ de empezar todo en 0. También hay razones tras este acto de maldad, pero como somos programadores serios y profesionales, esto no es más que un detalle, y nos da igual.</p>
<p>Los índices pueden ser positivos, o negativos. Si son positivos contamos desde la base del stack y si son negativos desde el <em>top</em> del stack. Para saber el top actual, usamos lua_gettop(L). La mayor parte de las funciones, por no decir todas ellas, utilizan los valores cercanos al top&#8230; y lo divertido de esto, si has cursado alguna asignatura de compiladores, es que se parece mucho a la forma de trabajar en ensamblador para llamar a funciones <img src='http://www.pplux.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Bueno, para ilustrar todo lo anterior, y explicar con detalle un ejemplo del manual, vamos a ver paso a paso la ejecución del código equivalente a esta expresión de lua:</p>
<p><code><br />
a = f("how", t.x, 14)<br />
</code></p>
<p>según el manual se traduce en las siguientes instrucciones del API de lua:</p>
<p><code><br />
     lua_getfield(L, LUA_GLOBALSINDEX, "f"); /* function to be called */<br />
     lua_pushstring(L, "how");                        /* 1st argument */<br />
     lua_getfield(L, LUA_GLOBALSINDEX, "t");   /* table to be indexed */<br />
     lua_getfield(L, -1, "x");        /* push result of t.x (2nd arg) */<br />
     lua_remove(L, -2);                  /* remove 't' from the stack */<br />
     lua_pushinteger(L, 14);                          /* 3rd argument */<br />
     lua_call(L, 3, 1);     /* call 'f' with 3 arguments and 1 result */<br />
     lua_setfield(L, LUA_GLOBALSINDEX, "a");        /* set global 'a' */<br />
</code></p>
<p>Las instrucciones del API del <a href="http://www.lua.org/manual/5.1/manual.html">manual</a> van acompañadas de una etiqueta de la forma  [<strong>-o</strong>, <strong>+p</strong>, x] :</p>
<ul>
<li> <strong>-o</strong>: número de elementos que consume del stack (pops from the stack) </li>
<li> <strong>+p</strong>: número de elementos que apila en el stack</li>
<li> x: tipos de errores que pueden saltar&#8230; esto es para otro día (así que como si no estuviera)</li>
</ul>
<p>Es fácil deducirlo pero las funciones de lua pueden devolver varios elementos, y por supuesto, consumir otros tantos. Las etiquetas vienen bien para saber de un vistazo de qué forma van a operar con el stack.</p>
<p>Volviendo al ejemplo anterior, supongamos que ahora mismo el stack está vacío, y veamos paso a paso cada una de las instrucciones. </p>
<div class="alignCenter"><img src="/files/lua101_a.png" alt="step_1" /></div>
<blockquote class="go"><p>
void <a href="http://www.lua.org/manual/5.1/manual.html#lua_getfield">lua_getfield</a> (lua_State *L, int index, const char *k) [-0, +1, e]
</p></blockquote>
<p>Por la etiqueta sabemos que esta función no va a consumir nada del stack y siempre va a hacer push de un elemento. Esta función concretamente busca el elemento <em>key</em> de la tabla que está en el índice <em>index</em> y lo devuelve en el stack. Si el elemento no existe hará un push de &#8220;nil&#8221; que es otro tipo de datos, usado para indicar, precisamente, la ausencia de tipo de datos <img src='http://www.pplux.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>LUA_GLOBALSINDEX es un pseudo-índice, en el stack no hay ninguna posición que permita acceder a la tabla de valores globales, así que hay una serie de pseudo-índices para acceder a ciertas tablas especiales (como la de los valores globales en concreto). Puedes imaginar ese índice de la forma que más te apetezca, a efectos prácticos es equivalente a poner un 1,2,&#8230; -1,-128, etc&#8230; en unos pasos veremos un getfield sobre una tabla en el stack para compensar. </p>
<div class="alignCenter"><img src="/files/lua101_b.png" alt="step_2" /></div>
<blockquote class="go"><p>
void <a href="http://www.lua.org/manual/5.1/manual.html#lua_pushstring">lua_pushstring</a> (lua_State *L, const char *s) [-0, +1, m]</p></blockquote>
<p>Lua tiene unas cuantas funciones para meter y sacar elementos del stack, esta es una de tantas, y sirve para apilar un string. [Nota mental: <em>hablar de los strings de lua en otro post...</em>]</p>
<div class="alignCenter"><img src="/files/lua101_c.png" alt="step_3" /></div>
<p>Otro acceso a la tabla global, en este caso tras el <em>key</em> &#8220;t&#8221; se esconde una tabla, por lo que se apila una tabla. Lo he dibujado con otro color como alarde de creatividad, pero no es más que otro valor [booleano, string, funcion, tabla, numero....] metido en la tabla. </p>
<div class="alignCenter"><img src="/files/lua101_d.png" alt="step_4" /></div>
<p>Esta es más interesante, aunque la función es conocida. Se trata de un getfield de un elemento en la propia tabla, por lo que usamos un índice numérico para indicar de qué tabla queremos buscar la clave. Como el índice es <strong>-1</strong>, estamos haciendo referencia al top actual del stack, donde <em>voilà</em> está justo la tabla que acabábamos de apilar. </p>
<blockquote class="exclamation"><p><strong><em>¿Podíamos haber usado 3 cómo índice para acceder a la tabla?</em></strong><br />
sí, &#8230; pero mejor no te acostumbres. El &#8220;3&#8243; depende de todas las acciones que hayamos hecho antes, mientras que el -1 depende sólo de las últimas acciones sobre la pila. Así que&#8230; en general, es mejor usar índices negativos para este tipo de acciones puntuales.</p>
<p>En este caso queremos acceder al elemento &#8220;t.x&#8221; para hacer ejecutar &#8220;a = f(&#8220;how&#8221;, t.x, 14)&#8221;, si por ejemplo fuese &#8220;a = f(1,2,3,&#8221;how&#8221;, t.x, 14) ya no podríamos usar el índice 3 (usaríamos 6, al haber 3 elementos más en la pila), pero sí que podríamos seguir usando el -1.
</p></blockquote>
<div class="alignCenter"><img src="/files/lua101_e.png" alt="step_5" /></div>
<blockquote class="go"><p>void <a href="http://www.lua.org/manual/5.1/manual.html#lua_remove">lua_remove</a> (lua_State *L, int index);         [-1, +0, -]</p></blockquote>
<p>Esta función, si miras la etiqueta, elimina un elemento del stack y no añade nada. Hay poco que explicar aquí, nos cargamos lo que esté en la posición apuntada por <em>index</em>. Al margen de la función, hemos conseguido obtener el elemento &#8220;t.x&#8221; para la llamada &#8220;a = f(&#8220;how&#8221;,<strong>t.x</strong>,14)&#8221; (bieeeen!)</p>
<div class="alignCenter"><img src="/files/lua101_f.png" alt="step_6" /></div>
<blockquote class="go"><p>
void <a href="http://www.lua.org/manual/5.1/manual.html#lua_pushinteger">lua_pushinteger</a> (lua_State *L, lua_Integer n)         [-0, +1, m]</p></blockquote>
<p>&#8230; No hace falta dar detalles, ¿no? otro &#8220;lua_pushxxxx&#8221;</p>
<div class="alignCenter"><img src="/files/lua101_g.png" alt="step_7" /></div>
<blockquote class="go"><p>
void <a href="http://www.lua.org/manual/5.1/manual.html#lua_call ">lua_call</a> (lua_State *L, int nargs, int nresults);          [-(nargs + 1), +nresults, e]
</p></blockquote>
<p>Ahora vamos a realizar una &#8220;llamada a función&#8221; (un <em>call</em>) de <em>nargs</em> argumentos de entrada y esperando obtener <em>nresults</em> elementos de salida. Si miráis la etiqueta de la función pone que se consumen del stack nargs+1 elementos: n argumentos + 1 función. </p>
<p>El órden es el que podéis ver en el stack, primero la función apilada, después cada argumento en orden y llamamos a lua_call. Con esto ejecutamos la función tal y como se ve en la figura.</p>
<p>No sabemos el tipo del resultado devuelto, pero por la forma de llamar a call sabemos que siempre tendremos un elemento en la pila. Aquí lua realiza un proceso de ajuste: si la función devolvió 600 elementos, al poner nosotros lua_call(&#8230;, 1);  se queda con el primero y descarta los otros 599, si la función no devolvía nada (0 elementos) y nosotros queríamos 1, rellenará el espacio con nil&#8217;s , finalmente si queremos que la función devuelva todos los elementos que quiera, en vez de poner un numero en <em>nresults</em>, usamos la constante LUA_MULTRET ( y con ello se evita el proceso de ajuste ).</p>
<div class="alignCenter"><img src="/files/lua101_h.png" alt="step_8" /></div>
<blockquote class="go"><p>
void <a href="http://www.lua.org/manual/5.1/manual.html#lua_setfield">lua_setfield</a> (lua_State *L,  int index, const char *k);          [-1, +0, e]
</p></blockquote>
<p>Para acabar, asignamos el resultado de la operación a la variable global &#8220;a&#8221;, usando lua_setfield (análogo a lua_getfield). La etiqueta nos dice que va a consumir un elemento y que no va a apilar nada. Con esto tenemos ejecutada toda la secuencia de &#8221; a = f(&#8220;how&#8221;, t.x, 14)&#8221;.</p>
<p>Nota:el call lo hicimos con lua_call(&#8230;,1) precisamente porque la intención era guardar el resultado en <strong>una</strong> variable ( gracias al ajuste nos da igual lo que haya devuelto la función ).</p>
<p>
Y hasta aquí el primer tutorial sobre el API de lua&#8230; para las dudas y aclaraciones, ahí tenéis los comentarios <img src='http://www.pplux.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pplux.com/2008/04/16/lua-api-introduccion/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Manual de Lua 5.1 en castellano</title>
		<link>http://www.pplux.com/2007/12/20/manual-de-lua-51-en-castellano/</link>
		<comments>http://www.pplux.com/2007/12/20/manual-de-lua-51-en-castellano/#comments</comments>
		<pubDate>Thu, 20 Dec 2007 10:15:16 +0000</pubDate>
		<dc:creator>PpluX</dc:creator>
				<category><![CDATA[Lua]]></category>

		<guid isPermaLink="false">http://www.pplux.com/2007/12/20/manual-de-lua-51-en-castellano/</guid>
		<description><![CDATA[Por fin una noticia de Lua ! Para los que usen el idioma como excusa, lua ya tiene el manual en castellano]]></description>
			<content:encoded><![CDATA[<p><img class="floatRight" src="/files/lua_logo.png" alt="lua logo" /><br />
Por fin una noticia de Lua ! Para los que usen el idioma como excusa, lua ya tiene el <a href="http://www.lua.org/manual/5.1/es/">manual en castellano</a> <img src='http://www.pplux.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.pplux.com/2007/12/20/manual-de-lua-51-en-castellano/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>El nuevo [Ing.] señor-L</title>
		<link>http://www.pplux.com/2007/07/11/el-nuevo-ing-senor-l/</link>
		<comments>http://www.pplux.com/2007/07/11/el-nuevo-ing-senor-l/#comments</comments>
		<pubDate>Wed, 11 Jul 2007 08:48:42 +0000</pubDate>
		<dc:creator>PpluX</dc:creator>
				<category><![CDATA[Crítica]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[Lua]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.pplux.com/2007/07/11/el-nuevo-ing-senor-l/</guid>
		<description><![CDATA[Hoy me ha llegado un correo que decía lo siguiente: Saludos, leí un comentario suyo en google y me preguntaba si podría usted ayudarme, tengo un problema, necesito un código usando Lua 5.1.2 u otra versión que me permita cargar las funciones de Lua usando c++ e imprimir el nombre de esas funciones&#8230; por favor [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy me ha llegado un correo que decía lo siguiente:</p>
<blockquote><p>
Saludos, leí un comentario suyo en google y me preguntaba si podría usted ayudarme, tengo un problema, necesito un código usando Lua 5.1.2 u otra versión que me permita cargar las funciones de Lua usando c++ e imprimir el nombre de esas funciones&#8230; por favor si pudiera usted ayudarme, si tiene un ejemplo o un manual envíenmelo&#8230; aún no me ha funcionado nada de lo que he encontrado en Internet..</p>
<p>Gracias de antemano&#8230;<br />
Saludos: Ing. Señor-L
</p></blockquote>
<p>Vamos por partes&#8230;. (Lo de Señor-L es para preservar el anonimato, y para hacer compañía a los señores K,X y Z )</p>
<blockquote><p>Saludos,</p></blockquote>
<p>Propicios días</p>
<blockquote><p>Leí un comentario suyo en google</p></blockquote>
<p>Suele pasar, google indexa de todo. En cualquier caso si ha llegado a mi por un comentario ( sin decir más referencia )&#8230; algo no pinta bien.</p>
<blockquote><p>y me preguntaba si podría usted ayudarme, tengo un problema</p></blockquote>
<p>El primer paso es reconocerlo ( cómo mola recortar fuera de contexto )</p>
<blockquote><p>Necesito un código usando Lua 5.1.2 u otra versión que me permita cargar las funciones de Lua usando c++ e imprimir el nombre de esas funciones&#8230;</p></blockquote>
<p>Esta es formalmente la petición, y aquí viene lo mejor, me he puesto a buscar (en google) y he encontrado lo siguiente:</p>
<ul>
<li> <a href="http://lua-users.org/lists/lua-l/2007-07/msg00052.html">Señor-L y la pregunta original.</a> </li>
<li> <a href="http://permalink.gmane.org/gmane.comp.lang.lua.general/40289">Señor-L preguntando en otro foro.</a></li>
<li> <a href="http://www.mail-archive.com/enigmail@mozdev.org/msg05811.html">&#8220;Helo me!&#8221; Señor-L preguntando en enigmail.</a> , a lo que le responden que estaba meando fuera del tiesto&#8230;</li>
<li> <a href="http://www.gamedev.net/community/forums/topic.asp?topic_id=455178">Señor-L preguntando en un foro de scripting</a> (bien) y diciendo que o le mandan un ejemplo completo o no lo pilla&#8230;</li>
<li><a href="http://www.gamedev.net/community/forums/topic.asp?topic_id=453757">Señor-L preguntando lo mismo en el foro de Inteligencia artificial<br />
</a> (meándose otra vez fuera del tiesto)</li>
<li><a href="http://www.gamedev.net/community/forums/topic.asp?topic_id=453759">Señor-L insistiendo</a></li>
</ul>
<p>No será por no intentarlo. Lo mejor es que al primer mensaje le respondieron, concretamente <a href="http://lua-users.org/lists/lua-l/2007-07/msg00054.html">aquí</a>.</p>
<blockquote><p>por favor si pudiera usted ayudarme, si tiene un ejemplo o un manual envíenmelo&#8230; aún no me ha funcionado nada de lo que he encontrado en Internet..
</p></blockquote>
<p>¿Manual? google-> Lua manual , lua.org -> documentation&#8230;  esto es lo que más me repatea, que la gente no se <strong>moleste en buscar </strong>y prefiera antes preguntar en 20 sitios lo mismo, o incluso que siga preguntando cuando ya le han <a href="http://lua-users.org/lists/lua-l/2007-07/msg00054.html">respondido</a>!!</p>
<blockquote><p>
Saludos: Ing. Señor-L</p></blockquote>
<p>¿ Ing. == Ingeniero ? </p>
<p><strong>Conclusión:</strong><br />
No puedo con quien tiene por costumbre preguntar antes de buscar ante cualquier problema , y menos aun con los que además para preguntar lo hacen en 20 sitios a la vez a ver quién cae primero ( casi sin mirar dónde estás preguntando ).</p>
<p>Tampoco puedo con quienes piden ejemplos completos (&#8220;con solución de visual studio si pudiera ser&#8230; no vaya a ser que tenga que pensar&#8221;), con quien no se mira mínimamente la documentación, ni con aquellos que te escriben con todo el morro re-preguntando algo genérico sin venir a cuento.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pplux.com/2007/07/11/el-nuevo-ing-senor-l/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>This is&#8230;</title>
		<link>http://www.pplux.com/2007/04/19/this-is/</link>
		<comments>http://www.pplux.com/2007/04/19/this-is/#comments</comments>
		<pubDate>Thu, 19 Apr 2007 09:15:06 +0000</pubDate>
		<dc:creator>PpluX</dc:creator>
				<category><![CDATA[humor]]></category>
		<category><![CDATA[Lua]]></category>

		<guid isPermaLink="false">http://www.pplux.com/2007/04/19/this-is/</guid>
		<description><![CDATA[En respuesta a esta imagen: A Kraptor se le ha ocurrido esta otra, con un servidor: No me puedo quejar , más imágenes siguiendo la historia de 300 aquí.]]></description>
			<content:encoded><![CDATA[<p>En respuesta a esta imagen:<br />
<center><a href="/files/sata.jpg"><img src="/files/sata_mini.jpg" alt="This is Sataaaaaa" /></a></center><br />
A <a href="http://biestado.kraptor.com">Kraptor</a> se le ha ocurrido esta otra, con un servidor:<br />
<center><a href="/files/this_is_L.png"><img src="/files/this_is_L_mini.png" alt="This is Luaaaaa" /></a></center></p>
<p>No me puedo quejar <img src='http://www.pplux.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ,  más imágenes siguiendo la historia de 300 <a href="http://community.livejournal.com/randompictures/2209617.html">aquí</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pplux.com/2007/04/19/this-is/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>luarefvim, referencia de lua en tu vim</title>
		<link>http://www.pplux.com/2006/11/26/luarefvim-referencia-de-lua-en-tu-vim/</link>
		<comments>http://www.pplux.com/2006/11/26/luarefvim-referencia-de-lua-en-tu-vim/#comments</comments>
		<pubDate>Sun, 26 Nov 2006 11:38:16 +0000</pubDate>
		<dc:creator>PpluX</dc:creator>
				<category><![CDATA[Lua]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://www.pplux.com/2006/11/26/luarefvim-referencia-de-lua-en-tu-vim/</guid>
		<description><![CDATA[luarefvim es un plugin de vim que integra el manual de lua (actualizado a 5.1) y atajos de teclado para buscar en él. +-- -- -- -- -- + -- -- -- -- -- -- + -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.vim.org/scripts/script.php?script_id=1291">luarefvim</a> es un plugin de vim que integra el manual de lua (actualizado a 5.1) y atajos de teclado para buscar en él. </p>
<pre style="background-color: #202020; color: #C5C5C5;">
<font color="#C5C5C5">+-- -- -- -- -- + -- -- --  -- -- -- + -- -- -- -- -- -- -- -- -- --  -- -- -- -- -- -- -- -- -- +</font>
|<font color="#000000">#</font><font color="#40ffff">  edit  </font><font color="#000000">#</font>|<font color="#000000">#</font><font color="#40ffff">    key     </font><font color="#000000">#</font>|                                        |
|<font color="#000000">#</font><font color="#40ffff">  mode  </font><font color="#000000">#</font>|<font color="#000000">#</font><font color="#40ffff">  sequence  </font><font color="#000000">#</font>|<font color="#000000">#</font><font color="#40ffff">             action                   </font><font color="#000000">#</font>|
<font color="#C5C5C5">+-- -- -- -- -- + -- -- --  -- -- -- + -- -- -- -- -- -- -- -- -- --  -- -- -- -- -- -- -- -- -- +</font>
|<font color="#000000">@</font><font color="#ffa500"> normal </font><font color="#000000">@</font>|  <font color="#ffa500">&lt;Leader&gt;</font>lr  |  reference for word under cursor       |
|<font color="#000000">@</font><font color="#ffa500"> visual </font><font color="#000000">@</font>|  <font color="#ffa500">&lt;Leader&gt;</font>lr  |  reference for visually selected text  |
|<font color="#000000">$</font><font color="#80a0ff"> any    </font><font color="#000000">$</font>|  <font color="#ffa500">&lt;Leader&gt;</font>lc  |  manual's table of contents            |
<font color="#C5C5C5">+-- -- -- -- -- + -- -- --  -- -- -- + -- -- -- -- -- -- -- -- -- --  -- -- -- -- -- -- -- -- -- +</font>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.pplux.com/2006/11/26/luarefvim-referencia-de-lua-en-tu-vim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lista de usuarios de Lua en castellano</title>
		<link>http://www.pplux.com/2006/11/15/lista-de-usuarios-de-lua-en-castellano/</link>
		<comments>http://www.pplux.com/2006/11/15/lista-de-usuarios-de-lua-en-castellano/#comments</comments>
		<pubDate>Wed, 15 Nov 2006 20:59:00 +0000</pubDate>
		<dc:creator>PpluX</dc:creator>
				<category><![CDATA[Lua]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.pplux.com/2006/11/15/lista-de-usuarios-de-lua-en-castellano/</guid>
		<description><![CDATA[Dado que no existía, hemos decidido crear una lista de lua en castellano. Se ha montado en google (ya total, con todo lo que saben de mi&#8230;) y se puede encontrar aquí: http://groups-beta.google.com/group/lua-es?hl=es Espero que todo aquel que quisiera preguntar, o bien que pueda ayudar y quiera hacerlo se apunte a dar soporte a la [...]]]></description>
			<content:encoded><![CDATA[<p>Dado que no existía, hemos decidido crear una lista de <a href="http://www.lua.org">lua</a> en castellano. Se ha montado en google (ya total, con todo lo que saben de mi&#8230;) y se puede encontrar aquí:</p>
<p><a href="http://groups-beta.google.com/group/lua-es?hl=es">http://groups-beta.google.com/group/lua-es?hl=es</a></p>
<p>Espero que todo aquel que quisiera preguntar, o bien que pueda ayudar y quiera hacerlo se apunte a dar soporte a la comunidad <img src='http://www.pplux.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.pplux.com/2006/11/15/lista-de-usuarios-de-lua-en-castellano/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Lua en Slashdot</title>
		<link>http://www.pplux.com/2006/10/26/lua-en-slashdot/</link>
		<comments>http://www.pplux.com/2006/10/26/lua-en-slashdot/#comments</comments>
		<pubDate>Thu, 26 Oct 2006 07:27:05 +0000</pubDate>
		<dc:creator>PpluX</dc:creator>
				<category><![CDATA[Lua]]></category>

		<guid isPermaLink="false">http://www.pplux.com/2006/10/26/lua-en-slashdot/</guid>
		<description><![CDATA[Hoy en slashdot leo Programming in Lua 2nd Edition un interesante review sobre el libro por excelencia para aprender a programar en LUA. Lo mejor como siempre los comentarios, hay de todos los sabores (en general pintando bien el lenguaje), pero solo destacaré uno que leí de casualidad: as a short introduction to the LUA [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy en slashdot leo <a href="http://books.slashdot.org/article.pl?sid=06/10/25/147203&#038;from=rss"> Programming in Lua 2nd Edition</a> un interesante review sobre el libro por excelencia para aprender a programar en <a href="http://www.lua.org">LUA</a>. Lo mejor como siempre los comentarios, hay de todos los sabores (en general pintando bien el lenguaje), pero solo destacaré uno que leí de casualidad:</p>
<blockquote><p>
as a short introduction to the LUA language I present here the code for a hello world app:</p>
<p>print &#8220;Hello world&#8221;</p>
<p>hope that helps&#8230;
</p></blockquote>
<p>Y la respuesta:</p>
<blockquote><p>
      Thanks, now with this newfound knowledge in mind, I can add on my resume &#8220;Intermediate LUA developer&#8221;
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.pplux.com/2006/10/26/lua-en-slashdot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>osgLua</title>
		<link>http://www.pplux.com/2006/08/31/osglua/</link>
		<comments>http://www.pplux.com/2006/08/31/osglua/#comments</comments>
		<pubDate>Thu, 31 Aug 2006 12:36:09 +0000</pubDate>
		<dc:creator>PpluX</dc:creator>
				<category><![CDATA[Lua]]></category>
		<category><![CDATA[OSG]]></category>
		<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://www.pplux.com/2006/08/31/osglua/</guid>
		<description><![CDATA[osgLua es un wrapper de Lua para osg usando introspección. Lo mejor es que todo se hace al vuelo, dinámicamente se consulta a osgIntrospection según las necesidades. De esta forma si algo cambia en osg no hay que tocar nada de código de osgLua para que funcione. No creo que a nadie le interese demasiado [...]]]></description>
			<content:encoded><![CDATA[<p>osgLua es un wrapper de Lua para osg usando introspección. Lo mejor es que todo se hace al vuelo, dinámicamente se consulta a osgIntrospection según las necesidades. De esta forma si algo cambia en osg no hay que tocar nada de código de osgLua para que funcione. No creo que a nadie le interese demasiado las interioridades&#8230; pero algún día se puede plantear cómo funciona. </p>
<p>Puedes bajarlo aquí: <a href="http://svn.pplux.com/lab/osgLua">http:://svn.pplux.com/lab/osgLua</a></p>
<p><b>Update</b> yo quería esperar a tenerlo algo más avanzado, pero <a href="http://openscenegraph.org/archiver/osg-users/2006-August/1244.html">ya se ha anunciado oficialmente</a> <img src='http://www.pplux.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.pplux.com/2006/08/31/osglua/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

