<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/1.5.1-alpha" -->
<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/"
>

<channel>
	<title>55 4E 42 4C 4F 47</title>
	<link>http://grunch.blogsome.com</link>
	<description>Al mundo le hacia falta otro blog ;)</description>
	<pubDate>Wed, 21 Jun 2006 15:08:26 +0000</pubDate>
	<generator>http://wordpress.org/?v=1.5.1-alpha</generator>
	<language>en</language>

		<item>
		<title>Me mudo de servidor</title>
		<link>http://grunch.blogsome.com/2006/06/21/me-mudo-de-servidor/</link>
		<comments>http://grunch.blogsome.com/2006/06/21/me-mudo-de-servidor/#comments</comments>
		<pubDate>Wed, 21 Jun 2006 15:08:26 +0000</pubDate>
		<dc:creator>grunch</dc:creator>
		
	<category>Software Libre</category>
		<guid>http://grunch.blogsome.com/2006/06/21/me-mudo-de-servidor/</guid>
		<description><![CDATA[	Saludos lectores, me acabo de mudar para un nuevo servidor y estreno dominio tambien  
	http://grunch.com.ve
	Los espero por allá, saludetes

]]></description>
			<content:encoded><![CDATA[	<p>Saludos lectores, me acabo de mudar para un nuevo servidor y estreno dominio tambien <img src='http://grunch.blogsome.com/wp-images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
	<p><strong><a href="http://grunch.blogsome.com/go.php?http://grunch.com.ve">http://grunch.com.ve</a></strong></p>
	<p>Los espero por allá, saludetes
</p>
]]></content:encoded>
			<wfw:commentRss>http://grunch.blogsome.com/2006/06/21/me-mudo-de-servidor/feed/</wfw:commentRss>
	</item>
		<item>
		<title>Google libera API de búsqueda AJAX</title>
		<link>http://grunch.blogsome.com/2006/06/13/google-libera-api-de-busqueda-ajax/</link>
		<comments>http://grunch.blogsome.com/2006/06/13/google-libera-api-de-busqueda-ajax/#comments</comments>
		<pubDate>Tue, 13 Jun 2006 17:07:39 +0000</pubDate>
		<dc:creator>grunch</dc:creator>
		
	<category>Ajax</category>
		<guid>http://grunch.blogsome.com/2006/06/13/google-libera-api-de-busqueda-ajax/</guid>
		<description><![CDATA[	Google ha liberado una nueva API que permite agregar en tu sitio una versión AJAX de búsqueda en Google.com mucho más dinámica que la manera antigua, aca coloco un pantallazo

]]></description>
			<content:encoded><![CDATA[	<p>Google ha liberado una nueva <a href="http://grunch.blogsome.com/go.php?http://code.google.com/apis/ajaxsearch/">API</a> que permite agregar en tu sitio una versión AJAX de búsqueda en Google.com mucho más dinámica que la manera antigua, aca coloco un pantallazo<br />
<img src='/images/apigoogleajax.png' alt='API AJAX de google' /></p>
]]></content:encoded>
			<wfw:commentRss>http://grunch.blogsome.com/2006/06/13/google-libera-api-de-busqueda-ajax/feed/</wfw:commentRss>
	</item>
		<item>
		<title>Introducción a Prototype</title>
		<link>http://grunch.blogsome.com/2006/06/13/4/</link>
		<comments>http://grunch.blogsome.com/2006/06/13/4/#comments</comments>
		<pubDate>Tue, 13 Jun 2006 12:09:20 +0000</pubDate>
		<dc:creator>grunch</dc:creator>
		
	<category>Software Libre</category>
	<category>Ajax</category>
		<guid>http://grunch.blogsome.com/2006/06/13/4/</guid>
		<description><![CDATA[	Hace algunos meses conversando con un amigo sobre tecnologías web como AJAX, me enteré de la existencia de prototype y decicí echarle un vistazo, al principio me pareció un tanto abstracto ya que nunca habia visto una programación de esa manera, funciones y clases anónimas, JSON, y muchos otros nuevos conceptos que un programador acostumbrado [...]]]></description>
			<content:encoded><![CDATA[	<p>Hace algunos meses conversando con un amigo sobre tecnologías web como <a href="http://grunch.blogsome.com/go.php?http://es.wikipedia.org/wiki/AJAX">AJAX</a>, me enteré de la existencia de <a href="http://grunch.blogsome.com/go.php?http://prototype.conio.net/">prototype</a> y decicí echarle un vistazo, al principio me pareció un tanto abstracto ya que nunca habia visto una programación de esa manera, funciones y clases anónimas, <a href="http://grunch.blogsome.com/go.php?http://www.json.org">JSON</a>, y muchos otros nuevos conceptos que un programador acostumbrado mayoritariamente a ver código <a href="http://grunch.blogsome.com/go.php?http://www.php.net">PHP</a>, a primera vista no les ve ni pies ni cabeza.</p>
	<p>Ahondando un poco en lo que es para mi una nueva manera de programar llegué a entenderla y mejor aún, me vi envuelto en ella hasta el punto de la adicción <img src='http://grunch.blogsome.com/wp-images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  que comencé a hacer sitios web mas interactivos para el <img style="float:right" src="http://prototype.conio.net/images/prototype.png" title="Prototype" />  usuario aumentando el número de tareas del lado del cliente, anteriormente llevaba a cabo casi en su totalidad la acciones del lado del servidor, aceptando finalmente que en mis desarrollos anteriores hacia falta un equilibrio, equilibrio al que nunca le di importancia ya que evitaba tener que lidiar con javascript, realmente esto se acabó para mi, pq el desarrollo javascript con prototype es realmente divertido.</p>
	<p>Creo que tu, estimado lector estarás ansioso por conocer más sobre las muy famosas pero no tan bien documentadas bondades de prototype, obviamente este artículo no cubre todos los aspectos de prototype pero si los que a mi juicio son los más importantes para comenzar, la idea es que despues de leer esto no te sea tan dificil utilizar la libreria, bueno ya dejo de hablar tanto gamelote y entonces veamos un poco de acción:<br />
<a id="more-4"></a><br />
Antes de comenzar a echar código debes agregar el JavaScript con el framework al head de la página así:<br />
<code><br />
&lt;script src="prototype.js" type="text/javascript"&gt;&lt;/script&gt;<br />
</code></p>
	<p>Funciones $</p>
	<p>La función $() es bastante útil, al principio puede parecer un poco abstracta pero cuando la utilizas la primera vez no puedes dejar de usarla, esta función es un atajo a la función del DOM document.getElementById(), que mejor explicación que un ejemplo verdad? toncs vamos a verlo&#8230;</p>
	<p><code><br />
&lt;div id="lisa"&gt;hola mundo!&lt;/div&gt;<br />
&lt;button onclick="duh();"<br />
id="homero"&gt;clic&lt;/button&gt;<br />
&lt;script&gt;<br />
function duh(){<br />
&nbsp;&nbsp; &nbsp;var elemento = $('lisa');<br />
&nbsp;&nbsp; &nbsp;elemento.innerHTML = 'chao mundo!';<br />
&nbsp;&nbsp; &nbsp;elemento.style.color = 'blue';<br />
}<br />
&lt;/script&gt;<br />
</code></p>
	<p>Tambien puede ser pasado como argumento el elemento como tal, veamos otro ejemplo</p>
	<p><code><br />
&lt;div id="lisa"&gt;hola mundo!&lt;/div&gt;<br />
&lt;div id="maggie"&gt;otro divider&lt;/div&gt;<br />
&lt;button onclick="duh();" id="homero"&gt;clic&lt;/button&gt;<br />
&lt;script&gt;<br />
function duh(){<br />
&nbsp;&nbsp; &nbsp;var elemento = $('lisa');<br />
&nbsp;&nbsp; &nbsp;var arrayElem = $('maggie', elemento); //paso dos tipos de par&aacute;metros<br />
&nbsp;&nbsp; &nbsp;for(var i=0; i&lt;arrayElem.length;i++){<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;arrayElem[i].innerHTML = 'divider ' + elemento[i].id;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;arrayElem[i].style.color = 'blue';<br />
&nbsp;&nbsp; &nbsp;}<br />
}<br />
&lt;/script&gt;<br />
</code></p>
	<p>en el ejemplo anterior vemos las otras dos características de la función $(), que puede recibir ademas del id de un elemento, puede recibir el propio elemento, y que si recibe mas de un elemento devuelve un array de elementos.</p>
	<p>Función $A()</p>
	<p>Esta función convierte a cualquier parámetro en un objeto Array, pero el objeto array de prototype no es exactamente como el array de javascript, ya que posee una extensión llamada Enumerable, la cual es una copia del lenguaje de programación Ruby, dándole mucha más versatilidad a JavaScript, veamos de que estamos hablando</p>
	<p><code><br />
&lt;div id="lisa"&gt;hola mundo!&lt;/div&gt;<br />
&lt;div id="maggie"&gt;otro divider&lt;/div&gt;<br />
&lt;button onclick="duh();"<br />
id="homero"&gt;clic&lt;/button&gt;<br />
&lt;script&gt;<br />
function duh(){<br />
&nbsp;&nbsp;&nbsp; var listaNodos = document.getElementsByTagName('div');<br />
&nbsp;&nbsp;&nbsp; var arrayElem = $A(listaNodos);<br />
&nbsp;&nbsp;&nbsp; arrayElem.each( function(el, indice){<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; el.innerHTML = indice + ':' + 'divider ' + el.id;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; el.style.color = 'blue';<br />
&nbsp;&nbsp;&nbsp; });<br />
}<br />
</code></p>
	<p>mas claro imposible.</p>
	<p>Función $H()</p>
	<p>Convierte un objeto en un hash enumerable</p>
	<p><code><br />
&lt;div id="lisa"&gt;hola mundo!&lt;/div&gt;<br />
&lt;button onclick="duh();"<br />
id="homero"&gt;clic&lt;/button&gt;<br />
&lt;script&gt;<br />
function duh(){<br />
&nbsp;&nbsp; &nbsp;var objetoUsuario = {id: 1, login: "grunch", email: "fjcalderon@gmail.com"};<br />
&nbsp;&nbsp; &nbsp;// convertimos el objeto a un hash<br />
&nbsp;&nbsp; &nbsp;var hash = $H(objetoUsuario);<br />
&nbsp;&nbsp; &nbsp;$('lisa').innerHTML = hash.toQueryString();<br />
}<br />
&lt;/script&gt;<br />
</code></p>
	<p>Función $F()</p>
	<p>Esta función es muy básica, solo recibe como parámetro el id o elemento de un formulario y devuelve el valor del mismo, no merece ni un ejemplo <img src='http://grunch.blogsome.com/wp-images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
	<p>Función Try.these()</p>
	<p>Una función realmente útil, irá probando diferentes funciones hasta conseguir alguna que, valga la redundancia &#8220;funcione&#8221; correctamente, aca les muestro el ejemplo clásico de esta función.</p>
	<p><code><br />
&lt;script&gt;<br />
function ajax() {<br />
&nbsp;&nbsp;&nbsp; return Try.these(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function() {return new XMLHttpRequest()},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function() {return new ActiveXObject('Msxml2.XMLHTTP')},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function() {return new ActiveXObject('Microsoft.XMLHTTP')}<br />
&nbsp;&nbsp;&nbsp; );<br />
}<br />
&lt;/script&gt;<br />
</code></p>
	<p>Función document.getElementsByClassName()</p>
	<p>Recibe como parámetro una clase CSS y devuelve un array con los elementos que tienen como atributo className la clase CSS pasada como parámetro, vamos al ejemplo</p>
	<p>&lt;div class=&#8221;simpson&#8221; id=&#8221;lisa&#8221;&gt;hola mundo!&lt;/div&gt;<br />
&lt;div class=&#8221;simpson&#8221; id=&#8221;maggie&#8221;&gt;otro divider&lt;/div&gt;<br />
&lt;div class=&#8221;flanders&#8221; id=&#8221;ned&#8221;&gt;uno mas&lt;/div&gt;<br />
&lt;button onclick=&#8221;duh();&#8221; id=&#8221;homero&#8221;&gt;clic&lt;/button&gt;<br />
&lt;script&gt;<br />
function duh(){<br />
&nbsp;&nbsp;&nbsp; var arrayNodosSimpson = document.getElementsByClassName(&#8217;simpson&#8217;);<br />
&nbsp;&nbsp;&nbsp; arrayNodosSimpson.each( function(el, indice){<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; el.innerHTML = indice + &#8216;:&#8217; + &#8216;divider &#8216; + el.id;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; el.style.color = &#8216;blue&#8217;;<br />
&nbsp;&nbsp;&nbsp; });<br />
}<br />
&lt;/script&gt;</p>
	<p>muy util verdad? bueno, esta función era una de mis preferidas pero hace unos meses apareció una función que la destronó y ya saben lo que dicen por ahi, cuando hay santo nuevo, los viejos no hacen milagros <img src='http://grunch.blogsome.com/wp-images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
	<p>Función $$()</p>
	<p>Es la vedette de las funciones de prototype actualmente, su creación es simplemente una obra de arte, gracias a ella casi no uso la función anterior, recibe como parámetro un selector CSS y devuelve un array con cada elemento que cumpla con el criterio del selector dado, veamos unos ejemplos para mayor claridad</p>
	<p><code><br />
&lt;div id="springfield"&gt; &lt;div class="simpson" id="lisa"&gt;&lt;p&gt;hola mundo!&lt;/p&gt;&lt;/div&gt;<br />
&lt;div class="simpson" id="maggie"&gt;&lt;p&gt;otro divider&lt;/p&gt;&lt;/div&gt;<br />
&lt;div class="flanders" id="ned"&gt;uno mas&lt;/div&gt; &lt;/div&gt;<br />
&lt;button onclick="duh();" id="homero"&gt;clic&lt;/button&gt;<br />
&lt;div class="simpson" id="bart"&gt;&lt;p&gt;ay caramba!&lt;/p&gt;&lt;/div&gt;<br />
&lt;script&gt;<br />
function duh(){<br />
&nbsp;&nbsp; &nbsp;var arrayNodosSimpson = $$('div#springfield div.simpson p');<br />
&nbsp;&nbsp; &nbsp;arrayNodosSimpson.each( function(el, indice){<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;el.innerHTML = indice + ':' + 'divider ' + el.id;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;el.style.color = 'blue';<br />
&nbsp;&nbsp; &nbsp;});<br />
}<br />
&lt;/script&gt;<br />
</code></p>
	<p>impresionante, no? algo muy interesante es que podemos escribir nuestro código con menos lineas aun, por ejemplo</p>
	<p><code><br />
&lt;script&gt;<br />
function duh(){<br />
&nbsp;&nbsp; &nbsp;$$('div#springfield div.simpson p').each( function(el, indice){<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;el.innerHTML = indice + ':' + 'divider ' + el.id;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;el.style.color = 'blue';<br />
&nbsp;&nbsp; &nbsp;});<br />
}<br />
&lt;/script&gt;<br />
</code></p>
	<p>Todo esto se puede hacer con JavaScript sin prototype pero, en cuantas lineas? seguramente mas de 5 <img src='http://grunch.blogsome.com/wp-images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  </p>
	<p>Creo que con esto ya tenemos una idea mas clara sobre prototype y como comenzar a programar utilizando sus bondades, hay muchas mas características de prototype pero eso te lo dejo a ti, a lo mejor en el futuro me decido a escribir otro artículo sobre este excelente framework de JavaScript, quien sabe, saludos y nos vemos por ahi.
</p>
]]></content:encoded>
			<wfw:commentRss>http://grunch.blogsome.com/2006/06/13/4/feed/</wfw:commentRss>
	</item>
		<item>
		<title>CNSL Aragua</title>
		<link>http://grunch.blogsome.com/2006/06/11/cnsl-aragua/</link>
		<comments>http://grunch.blogsome.com/2006/06/11/cnsl-aragua/#comments</comments>
		<pubDate>Sun, 11 Jun 2006 22:28:56 +0000</pubDate>
		<dc:creator>grunch</dc:creator>
		
	<category>Software Libre</category>
		<guid>http://grunch.blogsome.com/2006/06/11/cnsl-aragua/</guid>
		<description><![CDATA[	Este viernes y sábado pasados (09 y 10 de junio) fui por primera vez al Congreso Nacional de Software Libre, capítulo Aragua, mi ponencia fue sobre programación web, más específicamente sobre las librerias prototype y script.aculo.us, si me preguntan como describir lo que ocurrió este fin de semana no tengo otra palabra que genial , [...]]]></description>
			<content:encoded><![CDATA[	<p>Este viernes y sábado pasados (09 y 10 de junio) fui por primera vez al <a href="http://grunch.blogsome.com/go.php?http://www.cnsl.org.ve">Congreso Nacional de Software Libre</a>, capítulo Aragua, mi ponencia fue sobre programación web, más específicamente sobre las librerias <a href="http://grunch.blogsome.com/go.php?http://prototype.conio.net/">prototype</a> y <a href="http://grunch.blogsome.com/go.php?http://script.aculo.us">script.aculo.us</a>, si me preguntan como describir lo que ocurrió este fin de semana no tengo otra palabra que <strong>genial</strong> , es bastante gratificante para mi ver como estamos recogiendo los frutos que hemos sembrado cientos de miles de activistas del <a href="http://grunch.blogsome.com/go.php?http://www.gnu.org/home.es.html">Software Libre</a> (SL) alrededor del mundo desde hace varios años al ver como hay tanto interés en el SL y estoy seguro que no es una moda como algunos piensan, ya que si vamos al pasado y recordamos como era el SL en el cual habían muy pocas aplicaciones comparado con el SW comercial nos damos cuenta de la gran evolución del SL y que llegó para quedarse, es importante acotar que el viernes fue la inauguración del mundial y aunque parezca mentira la gente no se fue a ver los juegos en ningún momento, prefirió vernos a nosotros <img src='http://grunch.blogsome.com/wp-images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
	<p><img style="float:left; width:200px; margin:5px; border: 1px solid #888" src="http://static.flickr.com/44/165967338_0cceb78c7e_o.jpg" title="Patruya Troll" /><br />
Realmente el evento superó mis expectativas porque se pudo minimizar los inconvenientes de una manera tan rápida que dio la impresión de no hubo ni un pequeño percance, en esto <a href="http://grunch.blogsome.com/go.php?http://dvst.blogspot.com/">Javier Pérez (A.K.A. Dvst)</a>, tiene todo el mérito, buen trabajo pana, en el CNSL hubo diferentes ponentes en diferentes áreas, todos muy buenos en su área específica, los cuales le dieron realce al evento. </p>
	<p>El viernes después de la primera jornada decidimos por solicitud del pana Héctor ir a cenar comida china y nos lanzamos para un restaurante chino donde no había chinos atendiendo y habían mariachis cantando, un poco bizarro la comida era buena, compartimos un momento bastante agradable, creo que lo más importante para mi fue el reencuentro con viejos amigos de la red, especialmente con los panas <a href="http://grunch.blogsome.com/go.php?http://0x29.com.ve/blog/index.php">Juan Moreno (A.K.A. Apostols)</a> y <a href="http://grunch.blogsome.com/go.php?http://octavio.unplug.org.ve">Octavio Rossell (A.K.A Tr0n)</a>, panas que conozco hace casi 10 años de manera virtual y nunca me había tomado una cerveza con ellos, bueno con tr0n todavía no me la tomo porque el no quería tomar esa noche, además conocí otro pocotón de trolls nacionales y un troll internacional (franco-argelino) bastante amistoso llamado djamel.</p>
	<p>Habrán muchos mas CNSL por este año y por los próximos 500 años, y sin duda saben que pueden contar conmigo incondicionalmente cuerda de trolls, un abrazo y nos vemos en la red.
</p>
]]></content:encoded>
			<wfw:commentRss>http://grunch.blogsome.com/2006/06/11/cnsl-aragua/feed/</wfw:commentRss>
	</item>
		<item>
		<title>Shalom Mochilero</title>
		<link>http://grunch.blogsome.com/2005/09/24/shalom-mochilero/</link>
		<comments>http://grunch.blogsome.com/2005/09/24/shalom-mochilero/#comments</comments>
		<pubDate>Sat, 24 Sep 2005 21:51:08 +0000</pubDate>
		<dc:creator>grunch</dc:creator>
		
	<category>Personal</category>
		<guid>http://grunch.blogsome.com/2005/09/24/shalom-mochilero/</guid>
		<description><![CDATA[	Recientemente tuve mi primera experiencia de (casi) mochilero, en realidad, fue un experimento, hice una platica y me lancé a la aventura con un amigo, desde maracay, venezuela hasta colombia, sin saber nada, absolutamente nada de a donde llegar no que hacer en colombia tomamos la decision de ir, aqui cuento que pasó&#8230;
	Cuando tomamos la [...]]]></description>
			<content:encoded><![CDATA[	<p>Recientemente tuve mi primera experiencia de (casi) mochilero, en realidad, fue un experimento, hice una platica y me lancé a la aventura con un amigo, desde maracay, venezuela hasta colombia, sin saber nada, absolutamente nada de a donde llegar no que hacer en colombia tomamos la decision de ir, aqui cuento que pasó&#8230;</p>
	<p>Cuando tomamos la decision, lo unico que teniamos seguro era el dinero, pensamos q con $800 para los dos era suficientes pasar unos dias en colombia, no nos equivocamos, tomamos un bus de valencia a maracaibo, estuvimos 1 dia en maracaibo ya que tengo familia ahi y luego salimos rumbo a cartagena de indias, sin saber q nos esperaba en aquella fascinante ciudad.</p>
	<p>Mientras ibamos llegando a nuestro destino comenzó a invadirme la ansiedad y le pregunté a uno de los señores del bus en el que veniamos si sabia donde podia hospedarme esa noche, y me dijo que en <strong>Boca Grande</strong> era muy bonito pero muy caro, que los hoteles se conseguian desde 50 mil pesos en adelante, eso es mucho para un pichón de mochilero como yo, pero me dio una opcion, que me quedara en unas residencias en el terminal de Cartagena por 30 mil, que no era peligroso ni mucho menos, pero esa idea no me gustó en lo absoluto, no voy a viajar a una ciudad como Cartagena para quedarme en su terminal, asi que decidimos mi pana y yo seguir hasta Boca Grande, que segun se conseguian hoteles en 50 mil, pensamos, sera solo una noche y luego buscamos algo mas economico&#8230;<br />
<a id="more-2"></a><br />
Tomamos un bus hasta Boca Grande, nuestro destino, no sabiamos que podriamos encontrar alla pero seguro que era espectacular, una vez en el bus vimos subir una chica pelirroja, con una mochila mas grande que ella, casualmente se sentó atras de nosotros y el pana con el que andaba le dice &#8220;hola&#8221;, ella respondio muy amablemente y establecimos una conversacion, gracias a dios siempre le presté atención a las clases de inglés, creo que ese dia me salvaron la vida <img src='http://grunch.blogsome.com/wp-images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
	<p>Ella nos dijo que era israelita, que venia en bus desde Santa Marta y que se iba a encontrar con sus amigos en el hotel, aunque ella no conocia la ciudad tenia un papel con la dirección y dominaba bastante bien el español, le dijimos que eramos mochileros venezolanos y no teniamos idea de nada de nada, le preguntamos que si podiamos ir con ella y nos dijo que claro, nos fuimos con ella y en ese momento olvidamos todo aquello de boca grande, no nos importaba, estabamos seguro que ella sabia lo que hacia y estaba muy claro que sabia que iba a dormir en una cama esa noche, por eso ni lo pensamos, necesitabamos de ella, ademas ella era muy amistosa y agradable.</p>
	<p>Nos albergamos en el Hotel Familiar, asi se llama, en ese hotel habian otros israelies esperando a Adí (la israelí q conocimos en el bus), ellos habian dicho en el hotel que venia su amiga y que como eran varios les hicieran un descuento, como nosotros llegamos con ella agarramos ese descuento, malo no es <img src='http://grunch.blogsome.com/wp-images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  en venezuela le decimos a esa situación <em>agarramos mango bajito</em> <img src='http://grunch.blogsome.com/wp-images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
	<p>El hotel nos costó 8 mil pesos (aprox 4$) por dia, bastante económico, sin aire acondicionado pero no nos importaba, solo queriamos seguir adelante.</p>
	<p>El hotel se encuentra en la antigua cartagena, en el barrio de getsemaní, hay muchos muchos hoteles de ese tipo muy económicos, uno muy frecuentado es el Viena, es muy importante el dominio del inglés si quieres relacionarte con otros mochileros ya que hay muy pocos mochileros hispanoparlantes, siendo sincero no vi a ninguno, pero nos relacionamos con gente de holanda, israel, inglaterra y colombia por supuesto.</p>
	<p>En cartagena hay mucho que ver pero lo que considero mas importante es:<br />
* Playa blanca, un destino obligatorio, segun comentan es la mejor playa de colombia, yo no soy nadie para contradecirlos<br />
* El volcan de totumo<br />
* Las islas rosario, para hacer snorkeling<br />
* El castillo de San Felipe de Barajas<br />
* Las rumbas, aunque son muy caras son buenas<br />
* Toda la ciudad antigua es impresionante, no dejes de pasearte por toda</p>
	<p>Lo mas importante creo que fue las amistades que hicimos con gente que viven a milles de kilometros de mi casa pero alla fuimos como hermanos, no importa la nacionalidad ni el color de la piel, lo importante era lo que cada uno tenia por aportar.</p>
	<p>Aca comparto una foto de la mas pana de todos los mochileros, se llama Naama (N-A-A-M-A), y es israelita, estuvimos con ella solo un dia pero fué como si  tuvieramos 10 años conociendola.<br />
<img src="http://grunch.blogsome.com/images/con_naama.jpg" alt="Con Naama" /><br />
Nos enseñaron muchas cosas en hebreo, pero no se puede traducir jeje &#8220;<strong>Kusit kusit roza batusik</strong>&#8221; </p>
	<p>No pudimos ir mas alla de cartagena ya que tuvimos problemas con el cambio de moneda ya que en venezuela tenemos un control cambiario y tuvimos que regresar, los israelies nos dijeron que el parque tayrona es buenisimo, y taganga tambien.</p>
	<p>Como dije anteriormente, esto fue un experimento para nosotros pero ya sabemos como actuar cuando estes de mochilero, ahora lo que me queda es trabajar como un burro y hacer dinero para empreder un viaje de 5 meses por toda suramerica, será mi graduacion de mochilero.</p>
	<p>un saludo..</p>
	<p>Shalom Ben Zoná</p>
]]></content:encoded>
			<wfw:commentRss>http://grunch.blogsome.com/2005/09/24/shalom-mochilero/feed/</wfw:commentRss>
	</item>
		<item>
		<title>PHP y Oracle</title>
		<link>http://grunch.blogsome.com/2005/09/07/hello-world/</link>
		<comments>http://grunch.blogsome.com/2005/09/07/hello-world/#comments</comments>
		<pubDate>Wed, 07 Sep 2005 13:24:22 +0000</pubDate>
		<dc:creator>grunch</dc:creator>
		
	<category>PHP</category>
		<guid>http://grunch.blogsome.com/2005/09/07/hello-world/</guid>
		<description><![CDATA[	Epales, aca pongo mi experiencia programando con un sistema con PHP pero con bd Oracle, algo poco comun pero posible  
	Se me ocurrió escribir aca todo sobre la instalación del servidor Oracle en Linux pero he estado un poco corto de tiempo y se me hace un poco cuesta arriba escribir un artículo de [...]]]></description>
			<content:encoded><![CDATA[	<p>Epales, aca pongo mi experiencia programando con un sistema con PHP pero con bd Oracle, algo poco comun pero posible <img src='http://grunch.blogsome.com/wp-images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
	<p>Se me ocurrió escribir aca todo sobre la instalación del servidor Oracle en Linux pero he estado un poco corto de tiempo y se me hace un poco cuesta arriba escribir un artículo de esa magnitud, por ello solo me dedicaré en estas lineas a explicar como compilar e instalar PHP con soporte para la extensión oci8 que es la necesaria para conectarnos con una bd Oracle.</p>
	<p>Para comenzar incluyo este link que pueden ayudar, en caso de que necesites instalar el servidor Oracle, y está muy bien escrito, si hacemos todo al pie de la letra funcionará todo ok.</p>
	<p>http://www.oracle.com/technology/pub/articles/smiley_10gdb_install.html</p>
	<p>Despues de instalar el Servidor Oracle en linux, necesitamos que el php esté compilado con la extensión oci8 </p>
	<p>Esto se va a llevar a cabo en un RHEL 4, el cliente Oracle se instalará en la misma máquina donde está instalado el servidor Oracle, para que el cliente Oracle nos funcione con php, es necesario tener compilado el php con soporte para la extensión oci8, normalmente esto se podría hacer con herramientas como yum o apt, que se descargan los binarios empaquetados en RPMs, pero no conseguí el RPM de php con soporte oci8, es por ello que decidí compilarlo el php para que soporte la extensión que vamos a utilizar.</p>
	<p><a id="more-1"></a><br />
1.- Lo primero es entrar en el sistema como un usuario sin privilegios, en nuestro caso se llamara &#8220;oracle&#8221;, debemos compilar el apache desde sus fuentes, en este caso vamos a instalarlo en su versión 2.0.54, descargamos desde http://www.apache.org el archivo httpd-2.0.54.tar.bz2.</p>
	<p>$ mkdir $HOME/apache  < < creamos el directorio donde vamos a instalar el apache<br />
$ tar jxvf httpd-2.0.54.tar.bz2  << descomprimios el archivo de fuentes<br />
$ cd httpd-2.0.54  << para entrar al directorio donde están las fuentes<br />
$./configure --enable-module=so --prefix=$HOME/apache --with-port=9999  << con esto configuramos, mas info con ./configure --help<br />
$ make   << compilamos<br />
$ make install  << instalamos </p>
	<p>con esto ya tenemos instalado el servidor apache</p>
	<p>2.- Editamos $HOME/apache/conf/httpd.conf y agrega al final:</p>
	<p>AddType application/x-httpd-php        .php<br />
AddType application/x-httpd-php-source .phps</p>
	<p>3.- Chequea que en $HOME/apache/conf/httpd.conf esté descomentada esta linea:</p>
	<p>ServerName localhost</p>
	<p>levanta el servidor apache:</p>
	<p>$HOME/apache/bin/httpd</p>
	<p>Chequea que esté funcionando bien poniendo en el navegador http://localhost:9999 si no hay error tu servidor apache está funcionando bien.</p>
	<p>4.- Ahora descarga las fuentes de php desde http://www.php.net, en este caso utilizaremos la versión 4.4.0.</p>
	<p>5.- Antes de compilar el php debemos instalar el instantclient, descargamos los RPMs necesarios de esta dirección:</p>
	<p>http://download.oracle.com/otn/linux/instantclient/oracle-instantclient-basic-10.1.0.3-1.i386.rpm<br />
http://download.oracle.com/otn/linux/instantclient/oracle-instantclient-devel-10.1.0.3-1.i386.rpm</p>
	<p>y los instalamos como root:</p>
	<p># rpm -Uvh oracle-instantclient-basic-10.1.0.3-1.i386.rpm<br />
# rpm -Uvh oracle-instantclient-devel-10.1.0.3-1.i386.rpm</p>
	<p>6.- Instalamos php</p>
	<p>$ mkdir $HOME/php  << creamos el directorio donde vamos a instalar el php<br />
$ tar jxvf php-4.4.0.tar.bz2  << descomprimios el archivo de fuentes<br />
$ cd php-4.4.0  << para entrar al directorio donde están las fuentes<br />
$./configure \ << con esto configuramos, mas info con ./configure --help<br />
 					--with-oci8-instant-client \<br />
					--prefix=$HOME/php --with-apxs2=$HOME/apache/bin/apxs \<br />
					--enable-sigchild --with-config-file-path=$HOME/apache/conf<br />
$ make   << compilamos<br />
$ make install  << instalamos </p>
	<p>7.- Copiamos el archivo de configuracion PHP al directorio que le dimos con el parametro --with-config-file-path</p>
	<p>cp php.ini-recommended $HOME/apache/conf/php.ini</p>
	<p>8.- Seteamos la variable LD_LIBRARY_PATH a /usr/lib/oracle/10.1.0.3/client/lib y reiniciamos Apache.</p>
	<p>Si se utiliza un archivo tnsnames.ora para definir los nombres de servicios de Oracle Net, asignamos a la variable TNS_ADMIN el directorio que contiene el archivo. Es muy importante setear todas las variables de ambiente necesarias antes de iniciar el apache, yo uso este script para iniciar el apache.</p>
	<p>-+-+-+-+-+-+-+-+-+-+-+-+-+-<br />
#!/bin/sh</p>
	<p>APACHEHOME=$HOME/apache</p>
	<p>LD_LIBRARY_PATH=/usr/lib/oracle/10.1.0.3/client/lib:${LD_LIBRARY_PATH}<br />
TNS_ADMIN=$ORACLE_HOME/network/admin</p>
	<p>export LD_LIBRARY_PATH TNS_ADMIN</p>
	<p>echo "Starting Apache..."<br />
$APACHEHOME/bin/httpd<br />
-+-+-+-+-+-+-+-+-+-+-+-+-+-</p>
	<p>9.- Para confirmar que la extensión está configurada creamos un archivo info.php y lo colocamos en $HOME/apache/htdocs/:<br />
-+-+-+-+-+-+-+-+-+-+-+-+-+-<br />
&lt;?php<br />
  phpinfo();<br />
?&gt;<br />
-+-+-+-+-+-+-+-+-+-+-+-+-+-</p>
	<p>lo podemos ver en esta dirección http://localhost:9999/info.php</p>
	<p>La página debe contener una sección llamada oci8, en la cual debe decir "OCI8 Support enabled".</p>
	<p>10.- Ahora vamos a conectarnos a la bd oracle por medio de php,<br />
para ello corremos este script de php</p>
	<p><code><br />
-+-+-+-+-+-+-+-+-+-+-+-+-+-<br />
&lt;?<br />
$connect_str = "demo1";<br />
$username = 'system'; // username de la bd<br />
$pass = 'oracle'; // password de la bd<br />
$db_conn = OCILogon($username, $pass, $connect_str );</p>
	<p>$cmdstr = "select * from tablita";</p>
	<p>$parsed = ociparse($db_conn, $cmdstr);<br />
ociexecute($parsed);</p>
	<p>$nrows = ocifetchstatement($parsed, $results);</p>
	<p>echo "&lt;html&gt;&lt;head&gt;&lt;title&gt;Oracle PHP Test&lt;/title&gt;&lt;/head&gt;&lt;body&gt;";<br />
echo "&lt;center&gt;&lt;h2&gt;Oracle PHP Test&lt;/h2&gt;&lt;br&gt;";<br />
echo "&lt;table border=1 cellspacing='0' width='50%'&gt;\n\&lt;tr&gt;\n";<br />
echo "&lt;td&gt;&lt;b&gt;Id&lt;/b&gt;&lt;/td&gt;\n";<br />
echo "&lt;td&gt;&lt;b&gt;Nombre&lt;/b&gt;&lt;/td&gt;\n";<br />
echo "&lt;td&gt;&lt;b&gt;Monto&lt;/b&gt;&lt;/td&gt;\n";<br />
echo "&lt;/tr&gt;\n";</p>
	<p>for ($i = 0; $i &lt; $nrows; $i++ )<br />
{<br />
    echo "&lt;tr&gt;\n";<br />
    echo "&lt;td&gt;" . $results["ID"][$i] . "&lt;/td&gt;";<br />
    echo "&lt;td&gt; " . $results["NOMBRE"][$i]. "&lt;/td&gt;";<br />
    echo "&lt;td&gt;$ " . number_format($results["MONTO"][$i],   2). "&lt;/td&gt;";<br />
    echo "&lt;/tr&gt;\n";</p>
	<p>}</p>
	<p>echo "&lt;tr&gt;&lt;td colspan='2'&gt; Number of Rows: $nrows&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;";<br />
echo "&lt;br&gt;&lt;em&gt;If you see data, then it works!&lt;/em&gt;&lt;br&gt;&lt;/center&gt;&lt;/body&gt;&lt;/html&gt;\n";<br />
?&gt;<br />
-+-+-+-+-+-+-+-+-+-+-+-+-+-</p>
	<p>Para que este script funcione debes crear un tu servidor Oracle una bd llamada demo1, tu password del sistema es oracle, y una tabla llamada tablita con los campos que ves en el script, todo eso se explica bastante bien en el manual que coloqué en el link de arriba.</p>
	<p>Saludetes
</p>
]]></content:encoded>
			<wfw:commentRss>http://grunch.blogsome.com/2005/09/07/hello-world/feed/</wfw:commentRss>
	</item>
	</channel>
</rss>
