<?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>BLOG PUENTES DIAZ</title>
	<atom:link href="http://blog.puentesdiaz.com.ar/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.puentesdiaz.com.ar</link>
	<description>Otro sitio más de Puentes Diaz</description>
	<lastBuildDate>Thu, 04 Aug 2011 15:57:45 +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>Nuevo Area tecno.puentesdiaz.com.ar</title>
		<link>http://blog.puentesdiaz.com.ar/2011/08/04/nuevo-area-tecno-puentesdiaz-com-ar/</link>
		<comments>http://blog.puentesdiaz.com.ar/2011/08/04/nuevo-area-tecno-puentesdiaz-com-ar/#comments</comments>
		<pubDate>Thu, 04 Aug 2011 15:31:59 +0000</pubDate>
		<dc:creator>Puentes Diaz</dc:creator>
				<category><![CDATA[Sin categoría]]></category>

		<guid isPermaLink="false">http://blog.puentesdiaz.com.ar/?p=324</guid>
		<description><![CDATA[Desde hace unos días pueden visitar : tecno.puentesdiaz.com.ar Una nueva área donde desarrollaremos con mejor enfoque todos los temas eminentemente IT, como JAVA, OSGi, ECLIPSE, DB4O, Symfony, PHP, BPM, EMF, SaaS, etc&#8230; &#160;]]></description>
			<content:encoded><![CDATA[<p>Desde hace unos días pueden visitar : <a title="tecno.puentesdiaz.com.ar" href="http://tecno.puentesdiaz.com.ar/" target="_blank">tecno.puentesdiaz.com.ar</a></p>
<p>Una nueva área donde desarrollaremos con mejor enfoque todos los temas eminentemente IT, como JAVA, OSGi, ECLIPSE, DB4O, Symfony, PHP, BPM, EMF, SaaS, etc&#8230;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.puentesdiaz.com.ar/2011/08/04/nuevo-area-tecno-puentesdiaz-com-ar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySpace y los ecos de la burbuja de internet</title>
		<link>http://blog.puentesdiaz.com.ar/2011/07/13/myspace-y-los-ecos-de-la-burbuja-de-internet/</link>
		<comments>http://blog.puentesdiaz.com.ar/2011/07/13/myspace-y-los-ecos-de-la-burbuja-de-internet/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 15:37:21 +0000</pubDate>
		<dc:creator>Puentes Diaz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Sociedad]]></category>
		<category><![CDATA[Tecnología IT]]></category>
		<category><![CDATA[adquisiciones]]></category>

		<guid isPermaLink="false">http://blog.puentesdiaz.com.ar/?p=321</guid>
		<description><![CDATA[Escribir sobre como los proyectos de negocios en la web fracasan, no se aun si es agradable o no. No lo es porque es estimulante ver un emprendimiento crecer. Y puede que si, cuando parece ser solo una maniobra especulativa/financiera &#8230; <a href="http://blog.puentesdiaz.com.ar/2011/07/13/myspace-y-los-ecos-de-la-burbuja-de-internet/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Escribir sobre como los proyectos de negocios en la web fracasan, no se aun si es agradable o no. No lo es porque es estimulante ver un emprendimiento crecer. Y puede que si, cuando parece ser solo una maniobra especulativa/financiera de mentes con sobredosis de arrogancia.</p>
<p>Hace ya unos días, <a href="http://es.wikipedia.org/wiki/News_Corporation" target="_blank">Newscorp </a>vendió <a href="http://es.wikipedia.org/wiki/Myspace" target="_blank">Myspace </a>por 35 millones de dolares estadounidenses (2011), es decir, un 6% del valor original de compra. Como dato mediatico entre los compradores está <a href="http://es.wikipedia.org/wiki/Justin_Timberlake" target="_blank">Justin Timberlake</a>. Otro desastre que nos trae a la memoria lo que fue la venta de Lycos (Terra) en 100 millones de la misma moneda(2004), cuando su valor de compra fue de 12.500 millones.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.puentesdiaz.com.ar/2011/07/13/myspace-y-los-ecos-de-la-burbuja-de-internet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bootear Multiples OS con ISOs desde PENDRIVE</title>
		<link>http://blog.puentesdiaz.com.ar/2011/07/01/bootear-multiples-os-con-isos-desde-pendrive/</link>
		<comments>http://blog.puentesdiaz.com.ar/2011/07/01/bootear-multiples-os-con-isos-desde-pendrive/#comments</comments>
		<pubDate>Fri, 01 Jul 2011 15:47:57 +0000</pubDate>
		<dc:creator>Puentes Diaz</dc:creator>
				<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[Tecnología IT]]></category>

		<guid isPermaLink="false">http://blog.puentesdiaz.com.ar/?p=316</guid>
		<description><![CDATA[El título puede ser medio largo, pero es eso sin mas rodeos. Crear un Pendrive para bootear distintos Sistemas Operativos, usando solo las imagenes ISO, sin necesidad de instalar nada. Esta es una gran herramienta para aquellos que deseen probar &#8230; <a href="http://blog.puentesdiaz.com.ar/2011/07/01/bootear-multiples-os-con-isos-desde-pendrive/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>El título puede ser medio largo, pero es eso sin mas rodeos. Crear un Pendrive para bootear distintos Sistemas Operativos, usando solo las imagenes ISO, sin necesidad de instalar nada. Esta es una gran herramienta para aquellos que deseen probar los sabores de Linux por ejemplo, que siendo usuarios de Windows, aun no saben que elegir y son temerosos de instalar otro OS en sus discos duros.</p>
<p>Entonces para ellos, tenemos YUMI ( <a href="http://www.pendrivelinux.com/yumi-multiboot-usb-creator/">web</a> ) ( <a href="http://www.pendrivelinux.com/downloads/YUMI/YUMI-0.0.2.3.exe">Descarga</a> ) .</p>
<p><img title="YUMI - Multiboot USB Creator" src="http://www.pendrivelinux.com/wp-content/uploads/YUMI-Multiboot-USB-Creator.png" alt="YUMI - Multiboot USB Creator" width="450" height="350" /></p>
<p>Como podemos apreciar, solo hay que conectar el pendrive al puerto USB, lo que nos permitirá tener una Unidad de Disco, que debemos seleccionar, y luego elegir que sistema deseamos, para terminar un tercer paso en la búsqueda de la imagen ISO.</p>
<p>Ejecutando una segunda vez YUMI podremos cargar el otro sistema de nuestra preferencia.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.puentesdiaz.com.ar/2011/07/01/bootear-multiples-os-con-isos-desde-pendrive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAVA y la Aritmética de los Decimales</title>
		<link>http://blog.puentesdiaz.com.ar/2011/02/03/java-y-la-aritmetica-de-los-decimales/</link>
		<comments>http://blog.puentesdiaz.com.ar/2011/02/03/java-y-la-aritmetica-de-los-decimales/#comments</comments>
		<pubDate>Thu, 03 Feb 2011 13:25:37 +0000</pubDate>
		<dc:creator>puentesdiaz</dc:creator>
				<category><![CDATA[I & D]]></category>
		<category><![CDATA[JAVA]]></category>

		<guid isPermaLink="false">http://blog.puentesdiaz.com.ar/?p=298</guid>
		<description><![CDATA[Una de las cosas que siempre pasamos por alto, es realizar las típicas operaciones aritméticas sin pensar demasiado en como los compiladores o interpretadores lo realizan. Por ejemplo, podemos comprobar como correcta la siguiente ecuación: (int) ( (0.7 + 0.1) &#8230; <a href="http://blog.puentesdiaz.com.ar/2011/02/03/java-y-la-aritmetica-de-los-decimales/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Una de las cosas que siempre pasamos por alto, es realizar las típicas operaciones aritméticas sin pensar demasiado en como los compiladores o interpretadores lo realizan.</p>
<p>Por ejemplo, podemos comprobar como correcta la siguiente ecuación:</p>
<blockquote><p><strong>(int) ( (0.7 + 0.1) * 10 ) = (0.7 + 0.1) * 10 </strong></p></blockquote>
<p>Como bien sabemos todos, <em>(int), es una forma de obtener el Entero de un número. Otro aspecto interesante es su velocidad, ya que en muchos lenguajes, es un constructor de los mismos, es decir es un rasgo nativo del ellos y ahí radica la razón de su performance.<span id="more-298"></span><br />
<strong> </strong></em></p>
<p>Casi siempre, por no decir siempre, cuando hago esta pregunta a un idóneo-programador-desarrollador-analista-ingeniero-etc. me responde que SI es correcta la ecuación. Confieso ser de ellos &#8230; al ver la primera vez dicha ecuación dije <em>8 = 8</em>. Los aliento a probarla en cualquier lenguaje que utilicen.</p>
<p>Como todos sabemos, los decimales son en si fracciones:</p>
<blockquote><p>0.3333333333&#8230;3&#8230;3  =  1/3</p></blockquote>
<p>El sistema decimal, es decir el sistema con base 10, que utilizamos para los sistemas financieros/contables, nos dice esto último: &#8220;un tercio de Uno es un cero seguido por una coma y que termina en infinitos Tres. Si en cambio utilizamos un sistema base 3, un tercio de Uno sería 0.1 y ciertamente sería mucho mas preciso.</p>
<blockquote><p>En los sistemas binarios, base 2, así como lo es el base 10 y todos los demás, pueden existir sesgos en la exactitud.</p></blockquote>
<p>Y lo cierto es que nuestros equipos/sistemas/lenguajes no pueden manejar la idea de infinitos de forma tan natural como lo hace un alumno del primario. Tienen un límite. Los lenguajes que se usan desde hace casi una década y dominan los sistemas a nivel mundial, solo manejan hasta una cantidad determinada de decimales.</p>
<p>Una de las cosas que me interesan más, es hacer bien lo que se supone se debe hacer bien. Es decir, que si sabemos sumar, sepamos sumar.</p>
<p>En PHP4/5/x, y otro lenguajes no tipados, parece que no hay mucho problema al inicio ya que no nos piden declarar el tipo de variables a utilizar. Sin embargo en JAVA, desde un inicio, nos dan la idea de los límites de nuestra realidad; según el estándar internacional IEEE 754, <em>Double</em> junto a <em>Float</em>, son los tipos de punto flotante ( los que tienen comas <img src='http://blog.puentesdiaz.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ), siendo el primero de precisión doble (64bit) y el segundo simple (32bit). A primera vista <em>Double</em>, nos parece que nos basta y sobra.</p>
<p>Sin embargo, <em>Double</em>, puede traernos algunos dolores de cabeza con simples sistemas de reportes, contables, o de sumas. Por ejemplo, tomar un valor de una celda de una planilla de calculo como 1261.49, en Double puede representar:</p>
<blockquote><p><span style="font-size: 13px; line-height: 19px;">1261.490000000000009094947017729282379150390625</span></p></blockquote>
<div id="_mcePaste">O la ecuación anterior,</div>
<blockquote>
<div>new Double( ( (0.7) + (0.1) ) * 10 );</div>
</blockquote>
<div>Nos puede retornar:</div>
<blockquote>
<div>7.999999999999999</div>
</blockquote>
<div><span style="font-size: small;"><span style="line-height: 24px;"><br />
</span></span></div>
<div><span style="line-height: 24px; font-size: 16px;">Gracias a Java Standard API, tenemos :</span></div>
<ol>
<li><strong>BigDecimal</strong></li>
<li><strong>DecimalFormat</strong></li>
<li><strong>String.format()</strong></li>
</ol>
<p>Con BigDecimal, resolvemos este inconveniente.</p>
<blockquote><p>BigDecimal alfa = new BigDecimal(&#8220;0.5&#8243;);<br />
BigDecimal beta = new BigDecimal(&#8220;0.1&#8243;);<br />
BigDecimal resultado = alfa.add(beta); // retorna un 0.6 exacto</p></blockquote>
<p><span style="font-style: normal;">Con S</span>tring.format()<span style="font-style: normal;">, se puede ver de esta otra forma :</span></p>
<ol>
<li>String.format(&#8220;%.2f&#8221;, 3.1499) // retorna &#8220;3.14&#8243;</li>
<li>String.format(&#8220;%.3f&#8221;, 3.1499) // retorna &#8220;3.140&#8243;</li>
<li>String.format(&#8220;%.2f&#8221;, 3.1) // retorna &#8220;3.10&#8243;</li>
</ol>
<p style="font-family: Georgia, 'Bitstream Charter', serif; color: #444444; line-height: 1.5; font-size: 16px; margin-bottom: 24px;">
<p style="font-family: Georgia, 'Bitstream Charter', serif; color: #444444; line-height: 1.5; font-size: 16px; margin-bottom: 24px;">
<p style="font-family: Georgia, 'Bitstream Charter', serif; color: #444444; line-height: 1.5; font-size: 16px; margin-bottom: 24px;">
]]></content:encoded>
			<wfw:commentRss>http://blog.puentesdiaz.com.ar/2011/02/03/java-y-la-aritmetica-de-los-decimales/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Salve GNU/Linux</title>
		<link>http://blog.puentesdiaz.com.ar/2010/10/26/salve-gnulinux/</link>
		<comments>http://blog.puentesdiaz.com.ar/2010/10/26/salve-gnulinux/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 16:00:33 +0000</pubDate>
		<dc:creator>puentesdiaz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Software Libre]]></category>

		<guid isPermaLink="false">http://blog.puentesdiaz.com.ar/?p=291</guid>
		<description><![CDATA[¿Que título no? En realidad, debemos agradecer a GNU, Linux, EXT4, Ubuntu, y a un programita llamado TESTDISK. Creo que sería imposible explicar cuales fueron las razones. Lo cierto es que la notebook, mostraba que el disco rígido estaba vacío. &#8230; <a href="http://blog.puentesdiaz.com.ar/2010/10/26/salve-gnulinux/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>¿Que título no?</p>
<p>En realidad, debemos agradecer a GNU, Linux, EXT4, Ubuntu, y a un programita llamado TESTDISK.</p>
<p>Creo que sería imposible explicar cuales fueron las razones. Lo cierto es que la notebook, mostraba que el disco rígido estaba vacío. Ese es el momento es que uno pensaba porque no compre de una vez  &#8221;ese&#8221; disco externo de 1 o 2 TeraBytes&#8230; para luego pensar que no era para tanto los meses y meses de información guardada.</p>
<p>¿Como sigue esto?</p>
<p>Con la imagen de la última versión de Ubuntu (al día de hoy, la 10.10). Me hice de un PenDrive, (ese pendorcho usb que nadie sabe como se llama), y lo transformamos en un Pendrive de instalación.</p>
<blockquote><p>Recomiendo esta modalidad, pues he notado que tratar de hacerlo desde un CD o DVD, es mas lento, y a veces falla.</p></blockquote>
<p>Desde hace mucho, muchas distribuciones de GNU/Linux, y Ubuntu no es la excepción, se puede bootear y ejecutar el sistema sin necesidad de instalación. Y en este caso, detectó todo, inclusive esa placa de red wifi que no traía los drivers.</p>
<p>Empezamos a googlear, y la comunidad da un montón de buenos tutoriales. Donde se recomienda <a href="http://www.cgsecurity.org/wiki/TestDisk" target="_blank">TESTDISK</a>.</p>
<p>Cuando se descarga, nos damos cuenta que no es un .deb o .rpm, pero no debe importarnos. Solo debemos ejecutar desde consola el ejecutable y con 15 segundos y 4 pasos, se reestablecerá tu Tabla de Particiones, y con ello rebootear para darnos cuenta que la pesadilla pasó.</p>
<p>Todo pero Todo, esta como debería estar. En resumen, TESTDISK, funciona amigos!!!!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.puentesdiaz.com.ar/2010/10/26/salve-gnulinux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Teorema CAP</title>
		<link>http://blog.puentesdiaz.com.ar/2010/08/24/teorema-cap/</link>
		<comments>http://blog.puentesdiaz.com.ar/2010/08/24/teorema-cap/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 18:11:57 +0000</pubDate>
		<dc:creator>blog</dc:creator>
				<category><![CDATA[Tecnología IT]]></category>

		<guid isPermaLink="false">http://blog.puentesdiaz.com.ar/?p=287</guid>
		<description><![CDATA[Bueno, estas son de las cosas que a veces uno le gustaria haberse enterado hace algunas decadas&#8230; Damas y Caballeros EL TEOREMA CAP, también llamado Brewer&#8217;s theorem, establece que es imposible para un sistema de computo distribuído dar simultaneamente las &#8230; <a href="http://blog.puentesdiaz.com.ar/2010/08/24/teorema-cap/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Bueno, estas son de las cosas que a veces uno le gustaria haberse enterado hace algunas decadas&#8230;</p>
<p>Damas y Caballeros</p>
<p><a href="http://en.wikipedia.org/wiki/CAP_theorem">EL TEOREMA CAP</a>, también llamado <a href="http://www.julianbrowne.com/article/viewer/brewers-cap-theorem">Brewer&#8217;s theorem</a>, establece que es imposible para un sistema de computo distribuído dar simultaneamente las siguientes tres garantías:</p>
<p><strong>Consistency </strong>(Consistencia :todos los nodos ven la misma información al mismo tiempo)</p>
<p><strong>Availability </strong>(Disponibilidad: la falla de un nodo no impedirá al resto de los nodos seguir funcionando)</p>
<p><strong>Partition Tolerance</strong> (Tolerancia a Fallos: El sistema sigue funcionando a pesar de la pérdida de información)</p>
<p>Segun el teorema, solo se pueden satisfacer dos de estas tres carasterísticas al mismo tiempo, pero nunca las tres.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.puentesdiaz.com.ar/2010/08/24/teorema-cap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Desreferenciado</title>
		<link>http://blog.puentesdiaz.com.ar/2010/08/01/php-desreferenciado/</link>
		<comments>http://blog.puentesdiaz.com.ar/2010/08/01/php-desreferenciado/#comments</comments>
		<pubDate>Sun, 01 Aug 2010 03:11:15 +0000</pubDate>
		<dc:creator>puentesdiaz</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.puentesdiaz.com.ar/?p=284</guid>
		<description><![CDATA[En los artículos de Johnathan Wage y de Schlueters hay una excelente explicación sobre está característica de PHP.]]></description>
			<content:encoded><![CDATA[<p>En los artículos de  <a href="http://www.jwage.com/2010/07/31/array-dereferencing-in-php-trunk/">Johnathan Wage</a> y de <a href="http://schlueters.de/blog/archives/138-Features-in-PHP-trunk-Array-dereferencing.html">Schlueters</a> hay una excelente explicación sobre está característica de PHP.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.puentesdiaz.com.ar/2010/08/01/php-desreferenciado/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Scripts : Dando valor a un Rango de Celdas</title>
		<link>http://blog.puentesdiaz.com.ar/2010/05/11/google-scripts-dando-valor-a-un-rango-de-celdas/</link>
		<comments>http://blog.puentesdiaz.com.ar/2010/05/11/google-scripts-dando-valor-a-un-rango-de-celdas/#comments</comments>
		<pubDate>Wed, 12 May 2010 00:15:18 +0000</pubDate>
		<dc:creator>puentesdiaz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Tecnología IT]]></category>

		<guid isPermaLink="false">http://blog.puentesdiaz.com.ar/?p=270</guid>
		<description><![CDATA[Vamos a seguir con una forma muy practica de asignar un valor a una o rango de celdas. Para aclarar lo de Rango, lo podemos definir como una selección de 1 a n celdas, siendo esta selección siempre conjunta y &#8230; <a href="http://blog.puentesdiaz.com.ar/2010/05/11/google-scripts-dando-valor-a-un-rango-de-celdas/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Vamos a seguir con una forma muy practica de asignar un valor a una o rango de celdas. Para aclarar lo de Rango, lo podemos definir como una selección de 1 a n celdas, siendo esta selección siempre conjunta y consecutiva de manera de formar un rectángulo. Es decir podemos seleccionar las celdas b1, b2, b3,  c1, c2, y c3, pero no b1, b2, b3, y d8.</p>
<p>Aclarado lo que queremos entender por Rango, retomamos nuestra serie de códigos. En la función <em>onOpen()</em>, incluimos la siguiente linea :</p>
<pre> {name: "Rellenar Celdas", functionName: "rellenarCeldas"},</pre>
<p>La función quedaría así:</p>
<pre>function onOpen() {
 var planilla = SpreadsheetApp.getActiveSpreadsheet();
 var itemsDeAcciones = [
 {name: "Rellenar Celdas", functionName: "rellenarCeldas"},
 {name: "Recordar mi Email", functionName: "recordarEmail"},
 {name: "Pedir Nacionalidad", functionName: "pedirNacionalidad"}];
 planilla.addMenu(“Acciones”, itemsDeAcciones);
}
</pre>
<p>Ahora que ya tenemos nuestro nueva acción en el menú, vamos a establecer la funcionalidad propiamente dicha:</p>
<pre>function rellenarCeldas() {
  var rellenar = Browser.inputBox("Rellenar las Celdas con:");
  SpreadsheetApp.getActiveRange().setValue(rellenar);
}
</pre>
<p>Paso a explicar el código de las siguiente forma. Se define una nueva función como habíamos aprendido anteriormente, se establece una nueva variable <em>rellenar</em> con la información que suministre el usuario a través de un cuadro de diálogo con el método <em>inputBox()</em>. Luego para el documento actual, se obtiene el Rango de Celdas seleccionadas con el método <em>getActiveRange()</em>, y a las mismas se les asigna un valor dado <em>setValue()</em>.</p>
<p>Cabe recordar que para la prueba del ejemplo el usuario antes de elegir la acción del menú, debería hacer su selección de celdas.</p>
<p>Como siempre, para probar todo esto, guardamos el código en el editor, y recargamos la página en el navegador.</p>
<p>Antes de pensar que hoy hemos terminado, pensemos en que otras formas podemos asignar valores a una celda. Pensemos en poder indicar la celda y su valor. Reiniciamos entonces en la función <em>onOpen()</em>, incluimos la siguiente linea :</p>
<pre> {name: "Asignar Valor", functionName: "asignarValor"},</pre>
<p>La función quedaría así:</p>
<pre>function onOpen() {
 var planilla = SpreadsheetApp.getActiveSpreadsheet();
 var itemsDeAcciones = [
 {name: "Asignar Valor", functionName: "asignarValor"},
 {name: "Rellenar Celdas", functionName: "rellenarCeldas"},
 {name: "Recordar mi Email", functionName: "recordarEmail"},
 {name: "Pedir Nacionalidad", functionName: "pedirNacionalidad"}];
 planilla.addMenu(“Acciones”, itemsDeAcciones);
}
</pre>
<p>Ahora que ya tenemos nuestro nueva acción en el menú, vamos a  establecer la funcionalidad propiamente dicha:</p>
<pre>function asignarValor() {
  var planilla = SpreadsheetApp.getActiveSpreadsheet();
  var celda = Browser.inputBox("Indique la Celda:");
  var valor = Browser.inputBox("Indique el Valor:");
<pre>  if (typeof valor != "number") {
    // comprobamos que valor sea un número
    Browser.msgBox("El Valor ingresado, no es un número");
  } else {
    planilla.getRange(celda).setValue(valor);
    Browser.msgBox("Se ha asignado a la celda " + celda + ", el valor numérico " + valor );
  }

}</pre>
</pre>
<p>Paso a explicar el código de las siguiente forma. En realidad, salvo la última linea las demás ya son conocidas; lo único que introducimos en este ejemplo es el uso del método <em>getRange()</em>. Además hemos empleado un condicional <em>if</em> y de la palabra reservada <em>typeof</em> . Ambas se explican por sí mismas, pero sino, no se preocupen. Estas son las razones por las que Google eligió Javascript, existe un millón uno de tutoriales que explicarán mejor que este servidor su utilidad.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.puentesdiaz.com.ar/2010/05/11/google-scripts-dando-valor-a-un-rango-de-celdas/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google Scripts : Cuadros de Dialogos: Pidiendo e Informando</title>
		<link>http://blog.puentesdiaz.com.ar/2010/05/10/google-scripts-cuadros-de-dialogos-pidiendo-e-informando/</link>
		<comments>http://blog.puentesdiaz.com.ar/2010/05/10/google-scripts-cuadros-de-dialogos-pidiendo-e-informando/#comments</comments>
		<pubDate>Mon, 10 May 2010 21:19:25 +0000</pubDate>
		<dc:creator>puentesdiaz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Tecnología IT]]></category>

		<guid isPermaLink="false">http://blog.puentesdiaz.com.ar/2010/05/10/google-scripts-cuadros-de-dialogos-pidiendo-e-informando/</guid>
		<description><![CDATA[Para completar el tutorial anterior, lo mejor es asignar un sentido a cada acción del menu creado. Con el siguiente código, habíamos creamos una función que se ejecutará automáticamente cada vez que la planilla se recargue. function onOpen() { // &#8230; <a href="http://blog.puentesdiaz.com.ar/2010/05/10/google-scripts-cuadros-de-dialogos-pidiendo-e-informando/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><span class="js-keyword">Para completar el tutorial anterior, lo mejor es asignar un sentido a cada acción del menu creado.</span></p>
<p>Con el siguiente código, habíamos creamos una función que se ejecutará automáticamente cada vez que la planilla se recargue.</p>
<pre>function <span class="js-variable">onOpen</span><span class="js-punctuation">(</span><span class="js-punctuation">) </span><span class="js-punctuation">{</span>
// Esto es un comentario
}</pre>
<p>Lo que este entre &#8220;{&#8221; y &#8220;}&#8221;, será parte de esta función onOpen().</p>
<p><span class="js-keyword">Entonces editamos la función onOpen() para que quede de la siguiente forma. Las lineas que empiezan con &#8220;//&#8221; son lineas de comentarios que explican la linea de código debajo de ellas y por ende son ignoradas</span></p>
<pre>function onOpen() {
 var planilla = SpreadsheetApp.getActiveSpreadsheet();
 var itemsDeAcciones = [
 {name: "Recordar mi Email", functionName: "recordarEmail"},
 {name: "Pedir Nacionalidad", functionName: "pedirNacionalidad"}];
 planilla.addMenu(“Acciones”, itemsDeAcciones);
}</pre>
<p>Declaramos una variable  &#8220;planilla&#8221; que representará a la hoja activa de nuestro documento</p>
<pre>var planilla = SpreadsheetApp.getActiveSpreadsheet();</pre>
<p>Declaramos los items de nuevo menu a  crear, los mismo se contiene en una variable &#8220;acciones&#8221;</p>
<pre>var itemsDeAcciones  = [</pre>
<p>Declara cada item, con &#8220;name&#8221; establecemos que aparece,  con  &#8220;functionName&#8221;  establecemos que función debe ejecutarse</p>
<pre>{name: "Recordar mi Email", functionName: "recordarEmail"}</pre>
<p>A la planilla de nuestro documento ahora le agregamos un menu (  método addMenu() ), que se llame &#8220;Acciones&#8221;, que tendra como items lo  anteriormente declarado en &#8220;itemsDeAcciones&#8221;</p>
<pre>planilla.addMenu(“Acciones”, itemsDeAcciones);</pre>
<p>Note que revisando las dos lineas que más se parecen, la única diferencia es que la última no termina con una coma (,).</p>
<p>Ahora es turno de escribir las dos nuevas funciones :</p>
<pre>
<pre>function recordarEmail() {
 var email = Session.getUser().getEmail();
 Browser.msgBox("Tu dirección de email es : " + Session.getUser().getEmail() );
}<span class="js-punctuation"> </span></pre>
</pre>
<p><span class="js-punctuation">En la anterior función, solo reportamos un cuadro de diálogo con </span><span class="js-comment">Browser.msgBox()</span><span class="js-punctuation">, que muestre una leyenda mas tu dirección de correo electrónico<br />
</span></p>
<pre>
<pre>function pedirNacionalidad() {
 var nacion = Browser.inputBox("Indique su Nacionalidad:");
 Browser.msgBox("Gracias, la nacionalidad ingresada fue : " + nacion);
}</pre>
</pre>
<p>Aquí, un cuadro de diálogo con <span class="js-comment">Browser.inputBox() pide que el usuario ingrese un dato, el mismo se guarda en la variable nacion y luego se informa junto a una leyenda para darle sentido.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.puentesdiaz.com.ar/2010/05/10/google-scripts-cuadros-de-dialogos-pidiendo-e-informando/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google Scripts: Creando un Menu de Acciones Personalizado</title>
		<link>http://blog.puentesdiaz.com.ar/2010/05/10/google-scripts-creando-un-menu-de-acciones-personalizado/</link>
		<comments>http://blog.puentesdiaz.com.ar/2010/05/10/google-scripts-creando-un-menu-de-acciones-personalizado/#comments</comments>
		<pubDate>Mon, 10 May 2010 20:48:38 +0000</pubDate>
		<dc:creator>puentesdiaz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Tecnología IT]]></category>

		<guid isPermaLink="false">http://blog.puentesdiaz.com.ar/2010/05/10/google-scripts-creando-un-menu-de-acciones-personalizado/</guid>
		<description><![CDATA[Para empezar con un ejemplo simple, lo mejor es hacerlo también con uno que nos sirva para el resto de los ejemplos. En esta primera oportunidad, crearemos una opción más para el MENU. Vamos al editor, y en el cuerpo &#8230; <a href="http://blog.puentesdiaz.com.ar/2010/05/10/google-scripts-creando-un-menu-de-acciones-personalizado/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><span class="js-keyword">Para empezar con un ejemplo simple, lo mejor es hacerlo también con uno que nos sirva para el resto de los ejemplos.</span></p>
<p>En esta primera oportunidad, crearemos una opción más para el MENU.</p>
<p>Vamos al editor, y en el cuerpo del mismo pegamos este código:</p>
<pre>function <span class="js-variable">onOpen</span><span class="js-punctuation">(</span><span class="js-punctuation">) </span><span class="js-punctuation">{</span>
<span class="whitespace"> </span><span class="whitespace"> </span><span class="js-keyword">var </span><span class="js-variabledef">planilla </span><span class="js-operator">= </span><span class="js-variable">SpreadsheetApp</span><span class="js-punctuation">.</span><span class="js-property">getActiveSpreadsheet</span><span class="js-punctuation">(</span><span class="js-punctuation">)</span><span class="js-punctuation">;</span><span class="whitespace">
</span><span class="js-keyword">  var </span>itemsDeAcciones<span class="js-operator">= </span><span class="js-punctuation">[ </span><span class="js-punctuation">
    {</span><span class="js-property">name</span><span class="js-punctuation">: </span><span class="js-string">"Primera Accion"</span><span class="js-punctuation">, </span><span class="js-property">functionName</span><span class="js-punctuation">: </span><span class="js-string">"primerAccion"</span><span class="js-punctuation">}</span><span class="js-punctuation">,</span><span class="whitespace">
    </span><span class="js-punctuation">{</span><span class="js-property">name</span><span class="js-punctuation">: </span><span class="js-string">"Segunda Accion"</span><span class="js-punctuation">, </span><span class="js-property">functionName</span><span class="js-punctuation">: </span><span class="js-string">"</span><span class="js-string">segundaAccion</span><span class="js-string">"</span><span class="js-punctuation">}</span><span class="js-punctuation">,</span><span class="whitespace">
    </span><span class="js-punctuation">{</span><span class="js-property">name</span><span class="js-punctuation">: </span><span class="js-string">"Tercera Accion"</span><span class="js-punctuation">, </span><span class="js-property">functionName</span><span class="js-punctuation">: </span><span class="js-string">"</span><span class="js-string">terceraAccion</span><span class="js-string">"</span><span class="js-punctuation">}</span><span class="js-punctuation">
  ]</span><span class="js-punctuation">;</span>
<span class="whitespace">  </span>planilla<span class="js-punctuation">.</span><span class="js-property">addMenu</span><span class="js-punctuation">(</span><span class="js-string">"Acciones"</span><span class="js-punctuation">, </span>itemsDeAcciones<span class="js-punctuation">)</span><span class="js-punctuation">;</span><span class="whitespace"></span>
<span class="js-punctuation">}</span></pre>
<p>Guardamos el anterior script ( MENU ARCHIVO &gt; GUARDAR ), y seguramente nos preguntara que nombre le daremos al archivo. De ustedes depende.</p>
<p>Cerramos el editor, y recargamos nuestra planilla de calculo.</p>
<p>Notarán al cabo de unos segundo un MENU ACCIONES, al lado de AYUDA.</p>
<p>¡Felicitaciones! han logrado pasar el primer tutorial.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.puentesdiaz.com.ar/2010/05/10/google-scripts-creando-un-menu-de-acciones-personalizado/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

