<?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>Ing. Andrés Canavesi &#187; programación</title>
	<atom:link href="http://andrescanavesi.com.uy/blog/category/programacion/feed/" rel="self" type="application/rss+xml" />
	<link>http://andrescanavesi.com.uy/blog</link>
	<description>Blog</description>
	<lastBuildDate>Sat, 05 May 2012 04:56:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Multilenguaje en Wordpress</title>
		<link>http://andrescanavesi.com.uy/blog/multilenguaje-en-wordpress/</link>
		<comments>http://andrescanavesi.com.uy/blog/multilenguaje-en-wordpress/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 00:36:10 +0000</pubDate>
		<dc:creator>andres</dc:creator>
				<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software libre]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[multilenguaje]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[qTranslate]]></category>

		<guid isPermaLink="false">http://andrescanavesi.com.uy/blog/?p=464</guid>
		<description><![CDATA[qTranslate hace lo que tiene que hacer y es muy sencillo de usar, recomendable.
Share on Facebook]]></description>
			<content:encoded><![CDATA[<p><a href="http://wordpress.org/extend/plugins/qtranslate/">qTranslate</a> hace lo que tiene que hacer y es muy sencillo de usar, recomendable.</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://andrescanavesi.com.uy/blog/multilenguaje-en-wordpress/" target="_blank"><img src="http://andrescanavesi.com.uy/blog/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a><a href="http://www.facebook.com/share.php?u=http://andrescanavesi.com.uy/blog/multilenguaje-en-wordpress/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://andrescanavesi.com.uy/blog/multilenguaje-en-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Selenium with SmartClient (SmartGwt)</title>
		<link>http://andrescanavesi.com.uy/blog/using-selenium-with-smartclient-smartgwt/</link>
		<comments>http://andrescanavesi.com.uy/blog/using-selenium-with-smartclient-smartgwt/#comments</comments>
		<pubDate>Wed, 20 Oct 2010 22:24:47 +0000</pubDate>
		<dc:creator>andres</dc:creator>
				<category><![CDATA[Configuración]]></category>
		<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Gwt]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[SmartClient]]></category>
		<category><![CDATA[SmartGwt]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[selenium]]></category>

		<guid isPermaLink="false">http://andrescanavesi.com.uy/blog/?p=461</guid>
		<description><![CDATA[
        Selenium is a powerful and popular tool which can be used to test your SmartClient applications.
        Selenium executes tests against your running application in a browser emulating user interaction and asserting various conditions.
        [...]]]></description>
			<content:encoded><![CDATA[<p>
        <a href="http://seleniumhq.org/">Selenium</a> is a powerful and popular tool which can be used to test your SmartClient applications.<br />
        Selenium executes tests against your running application in a browser emulating user interaction and asserting various conditions.<br />
        Selenium provides a record/playback tool for authoring tests without learning a test scripting language. You must be familiar with<br />
        <a href="http://seleniumhq.org/">Selenium</a> and use of <a href="http://seleniumhq.org/projects/ide/">Selenium IDE</a> before proceeding. Refer to the documentation on the <a href="http://seleniumhq.org/">Selenium</a></p>
<p>        site.
    </p>
<p>
        Use of Selenium with SmartClient applications is no different than using Selenium to write and run test cases with any other application with<br />
        the exception on on caveat. Selenium supports the concept of <a href="http://seleniumhq.org/docs/04_selenese_commands.html#locating-elements">Locators</a><br />
        in order to specify the element you&#8217;d like a given Selenium command to operate on. For example Selenium supports XPath based locators, and DOM ID based locators.<br />
        XPath based locators are extremely fragile due to complexity of certain highly nested DOM elements you need access to combined with the fact that<br />
        XPath support varies across browsers and so your tests might not work across different browsers.
    </p>
<p>
        SmartClient occasionally renders a different DOM structure depending on the browser for performance for rendering the UI such that it appears identical across various browsers.<br />
        As a result using DOM ID or DOM XPath based locators with SmartClient applications is not advisable. Instead SmartClient supports a new Selenium<br />
        locator which is an xpath-like string used by Selenium to robustly identify DOM elements within a SmartClient application. SmartClient locators for Selenium<br />
        are prefixed by &#8220;scLocator=&#8221; and have a readable XPath like value even for cells in ListGrid&#8217;s or TreeGrids. Typically these locators will not be hand-written and<br />
        are generated by <a href="http://seleniumhq.org/projects/ide/">Selenium IDE</a>, Selenium&#8217;s test recording tool.<br />
        One primary locator is based on the ID of the SmartClient widget and has the syntax <b>ID=&lt;Canvas ID&gt;</b>. This<br />
        simplifies the task of writing tests if you know the ID of the Canvas. For reference, the scLocator syntax for<br />
        ListGrid cells and DynamicForm FormItem&quot;s can be found at the end of this document.
    </p>
<h4>Setup Instructions</h4>
<ul>
<li>SmartClient ships with a Selenium user extension Javascript file : user-extensions.js. When running the Selenium tests make sure you place this file at the appropriate location.<br />
        Refer to the Selenium Documentation for mode details.
    </li>
<li>In order to create tests, we suggest you use Selenium IDE. By default, Selenium looks for a file called &#8220;user-extensions.js&#8221;, and loads the javascript code found in that file.<br />
        In the standard Selenium distribution, this file does not exist. You should place this file in this common location.<br />
        Refer to the Selenium documentation if you need additional information. Once you have<br />
        Selenium IDE installed, you will need to use the SmartClient user-extensions.js file with Selenium IDE. This is installed by<br />
        putting the pathname to its location on your computer in the Selenium Core extensions field of Selenium-IDEÕs Options=>Options=>General tab.<br />
        Additional Details on how this can be setup can be found <a href="http://seleniumhq.org/docs/08_user_extensions.html#using-user-extensions-with-selenium-ide">here</a>.
    </li>
<li>
        You will also need to configure Selenium IDE with a SmartClient provided Selenium IDE extensions javascript file : user-extensions-ide.js This is installed by<br />
        putting the pathname to its location on your computer in the Selenium IDE  extensions field of Selenium-IDEÕs Options=>Options=>General tab.
    </li>
</ul>
<p>That&#8217;s it, we&#8217;re done configuring the environment.</p>
<h4>Recording Selenium tests with Selenium IDE</h4>
<p>
        Once you have your application running in Firefox, open Selenium IDE from the Tools ==> Selenium IDE menu option. If the Selenium IDE is in record mode,<br />
        then clicking or carrying out other operations like typing in a text field with automatically record the appropriate Selenium commands with the SmartClient locator.<br />
        There&#8217;s no need for you to manually enter the locator, the recorder does this for you! Sometimes users many want finder grain control of what Selenium command<br />
        is created instead of having the Selenium IDE recorder do this automatically. For example if you want to verify the value of a particular cell in a ListGrid.<br />
        Instead on typing in the command &#8220;verifyTable&#8221; and manually enter the SmartClient Locator (scLocator), you can simply right click on the table cell or any other<br />
        SmartClient widget and the most suitable Selenium commands will appear in the context menu along with the scLocator path for the clicked element. See image below.
    </p>
<p>    <img src="selenium-ide-example.png"/></p>
<hr />
<p><h4><u>Common scLocator syntax</u></h4>
<h4><u>List Grid cells</u></h4>
<p>	<b>//ListGrid[ID="itemList"]/body/row[itemID=1996||itemName=Sugar White 1KG||SKU=85201400||1]/col[fieldName=SKU||1]</b></p>
<ul>
<li>This assumes the ListGrid has an explicit ID</li>
<li>the &#8216;body&#8217; part might be &#8216;frozenBody&#8217; if the field in question was frozen</li>
<li>row[......] identifies the row (record)
<li>itemID=<value> &#8211; that&#8217;s the primary key field from the dataSource the grid is bound to
<li>itemName=<value> &#8211; that&#8217;s the title field value for the record
<li>SKU=&#8230; &#8211; that&#8217;s the cell the user clicked&#8217;s value
<li>1 &#8211; that&#8217;s the index of the row (rowNum)
<li>col[.....] &#8211; identifies the column in the grid
<li>fieldName=&#8230; &#8211; field name for the field the user clicked
<li> 1 &#8211; that&#8217;s the index of the column
	</ul>
</p>
<p><h4><u>Form Items</u></h4>
<p>	<b>//DynamicForm[ID="autoTestForm"]/item[name=textField||title=textField||value=test||index=0||Class=TextItem]/element</b></p>
<p>This example is the data element (text entry box) for a text field </p>
<ul>
<li>this form has an explicit ID
<li>item[...] identifies the item
<li>name (field name, if set)
<li>title (title, if set)
<li>value (current value if set)
<li>index (index in the form items array)
<li>Class (SC class of the item &#8211; in this case TextItem) after the &#8220;/&#8221; we identify the part of the item in question options here include:
<li>&#8220;element&#8221; &#8211; the data element
<li>&#8220;canvas&#8221; &#8211; for CanvasItems &#8211; points to the canvas embedded in the item
<li>in this case the xpath might continue to contain, for example children of the canvas or elements within it (cells in a listGrid, etc)
<li>&#8220;textbox&#8221; &#8211; the &#8220;text box&#8221; &#8211; this is the area where content is written out for items without a &#8216;data element&#8217; &#8211; like header items
<li>&#8220;[icon=<...>]&#8221; &#8211; the icon element &#8212; &#8220;<...>&#8221; would contain the &#8220;name&#8221;<br />
	of the icon
	</ul>
</p>
<hr />
<p><h4><u>Known Limitations</u></h4>
<ul>
<li>Support for multi-select for SelectItems with selection mode &#8220;grid&#8221; (non-default)</li>
<li>Support for Drag &amp; Drop due to limitations in Selenium</li>
</ul>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://andrescanavesi.com.uy/blog/using-selenium-with-smartclient-smartgwt/" target="_blank"><img src="http://andrescanavesi.com.uy/blog/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a><a href="http://www.facebook.com/share.php?u=http://andrescanavesi.com.uy/blog/using-selenium-with-smartclient-smartgwt/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://andrescanavesi.com.uy/blog/using-selenium-with-smartclient-smartgwt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qué es un looping? (explicado por un mortal)</title>
		<link>http://andrescanavesi.com.uy/blog/que-es-un-looping-explicado-por-un-mortal/</link>
		<comments>http://andrescanavesi.com.uy/blog/que-es-un-looping-explicado-por-un-mortal/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 13:52:51 +0000</pubDate>
		<dc:creator>andres</dc:creator>
				<category><![CDATA[Humor]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[looping]]></category>

		<guid isPermaLink="false">http://andrescanavesi.com.uy/blog/?p=455</guid>
		<description><![CDATA[Para quien no conoce el concepto de looping, es un término que crearon los informáticos para definir un enredo de los tantos que han creado y para lo cual no tienen una explicación sencilla que resuelva el problema. Haciendo poco esfuerzo, trataré de explicarles en pocas palabras este famoso término. 

Se dice que un programa [...]]]></description>
			<content:encoded><![CDATA[<p>Para quien no conoce el concepto de looping, es un término que crearon los informáticos para definir un enredo de los tantos que han creado y para lo cual no tienen una explicación sencilla que resuelva el problema. Haciendo poco esfuerzo, trataré de explicarles en pocas palabras este famoso término. </p>
<p><img src="http://www.apuca.com.ar/NOTAS/Looping01.jpg" alt="looping" /></p>
<p>Se dice que un programa de computación &#8220;entró en un looping&#8221; cuando ocurre una situación como la siguiente: </p>
<p>El DIRECTOR llama a su secretaria y le dice:<br />
Señorita Vanessa: Tengo un seminario en Argentina por una semana y quiero que me acompañe para que conozca a mis socios. Haga los preparativos del viaje&#8230; </p>
<p>La secretaria llama al marido:<br />
Oye Juan &#8211; Voy a viajar al exterior con el director por una semana. Cuidate, querido. </p>
<p>El marido llama a la amante:<br />
Leonor, mi tesoro &#8211; La bruja va a viajar al exterior por una semana, vamos a pasarnos esta semana juntos, mi reina&#8230; </p>
<p>La amante llama al niño a quien le da clases particulares:<br />
Manuelito &#8211; Tengo mucho trabajo la próxima semana.. No tienes que venir a clases&#8230; </p>
<p>El niño llama a su abuelo:<br />
Tata &#8211; La próxima semana no tengo clases, mi profesora estará ocupada. Así que, por fin&#8230; ¡Vamos a poder pasar la semana juntos!! </p>
<p>El abuelo (que es el DIRECTOR en esta historia) llama a la secretaria:<br />
Señorita Vanessa venga rápido &#8211; Suspenda el viaje, voy a pasar la próxima semana con mi nieto que hace un año que no veo, así que no vamos a participar en el Seminario. Cancele el viaje y el hotel. </p>
<p>La secretaria llama al marido:<br />
Juan- El imbécil del director cambió de idea y acaba de cancelar el viaje, se me jodió el viaje. </p>
<p>El marido llama a la amante:<br />
Amorcito disculpa &#8211; No podremos pasar la próxima semana juntos, el viaje de la tetona de mi mujer fue cancelado. </p>
<p>La amante llama al niño de las clases particulares:<br />
Manuelito &#8211; Cambié de planes: esta semana le voy a dar clases como siempre. </p>
<p>El niño llama al abuelo:<br />
Abuelo, la vieja de mi profesora me dijo que esta semana tengo clases normales, discúlpame, no voy a poder hacerte compañía. </p>
<p>El abuelo llama a la secretaria:<br />
Señorita Vanessa &#8211; Mi nieto me acaba de decir que no va a poder estar conmigo esta semana porque tiene clases. Así que continúe con los preparativos del viaje al seminario&#8230; </p>
<p>¿Quedó claro lo que es un looping&#8230;???</p>
<p>Fuente: null</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://andrescanavesi.com.uy/blog/que-es-un-looping-explicado-por-un-mortal/" target="_blank"><img src="http://andrescanavesi.com.uy/blog/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a><a href="http://www.facebook.com/share.php?u=http://andrescanavesi.com.uy/blog/que-es-un-looping-explicado-por-un-mortal/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://andrescanavesi.com.uy/blog/que-es-un-looping-explicado-por-un-mortal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Antipatrones de diseño</title>
		<link>http://andrescanavesi.com.uy/blog/antipatrones-de-diseno/</link>
		<comments>http://andrescanavesi.com.uy/blog/antipatrones-de-diseno/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 12:04:33 +0000</pubDate>
		<dc:creator>andres</dc:creator>
				<category><![CDATA[Curiosidades]]></category>
		<category><![CDATA[Diseño]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[patrones]]></category>

		<guid isPermaLink="false">http://andrescanavesi.com.uy/blog/?p=437</guid>
		<description><![CDATA[Investigando en Wikipedia llegué a una categoría que no conocía: Antipatrón de diseño lo que en pocas palabras significa, una mala solución a un problema.
Está muy interesante recorrér algunos de los que allí se presentan y notar que no necesariamente se aplican a la informática.
Algunos de los que me parecieron mas interesantes:
http://es.wikipedia.org/wiki/Base_de_datos_como_comunicador_de_procesos
http://es.wikipedia.org/wiki/Par%C3%A1lisis_del_an%C3%A1lisis
http://es.wikipedia.org/wiki/Fear_of_success
http://es.wikipedia.org/wiki/C%C3%B3digo_ofuscado
http://es.wikipedia.org/wiki/Magic_pushbutton
http://es.wikipedia.org/wiki/Martillo_de_oro

Share on Facebook]]></description>
			<content:encoded><![CDATA[<p>Investigando en Wikipedia llegué a una categoría que no conocía: <a href="http://es.wikipedia.org/wiki/Categor%C3%ADa:Antipatr%C3%B3n_de_dise%C3%B1o">Antipatrón de diseño</a> lo que en pocas palabras significa, una mala solución a un problema.<br />
Está muy interesante recorrér algunos de los que allí se presentan y notar que no necesariamente se aplican a la informática.<br />
Algunos de los que me parecieron mas interesantes:</p>
<p><a href="http://es.wikipedia.org/wiki/Base_de_datos_como_comunicador_de_procesos">http://es.wikipedia.org/wiki/Base_de_datos_como_comunicador_de_procesos</a></p>
<p><a href="http://es.wikipedia.org/wiki/Par%C3%A1lisis_del_an%C3%A1lisis">http://es.wikipedia.org/wiki/Par%C3%A1lisis_del_an%C3%A1lisis</a></p>
<p><a href="http://es.wikipedia.org/wiki/Fear_of_success">http://es.wikipedia.org/wiki/Fear_of_success</a></p>
<p><a href="http://es.wikipedia.org/wiki/C%C3%B3digo_ofuscado">http://es.wikipedia.org/wiki/C%C3%B3digo_ofuscado</a></p>
<p><a href="http://es.wikipedia.org/wiki/Magic_pushbutton">http://es.wikipedia.org/wiki/Magic_pushbutton</a></p>
<p><a href="http://es.wikipedia.org/wiki/Martillo_de_oro">http://es.wikipedia.org/wiki/Martillo_de_oro</a></p>
<p><img src="http://otroblogmas.com/wp-content/uploads/2009/11/lego-piezas.jpg" alt="Antiapatron de diseño" /></p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://andrescanavesi.com.uy/blog/antipatrones-de-diseno/" target="_blank"><img src="http://andrescanavesi.com.uy/blog/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a><a href="http://www.facebook.com/share.php?u=http://andrescanavesi.com.uy/blog/antipatrones-de-diseno/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://andrescanavesi.com.uy/blog/antipatrones-de-diseno/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalar Netbeans para PHP en GNU/Linux</title>
		<link>http://andrescanavesi.com.uy/blog/instalar-netbeans-para-php-en-gnu-linux/</link>
		<comments>http://andrescanavesi.com.uy/blog/instalar-netbeans-para-php-en-gnu-linux/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 05:14:39 +0000</pubDate>
		<dc:creator>andres</dc:creator>
				<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[GNU-Linux]]></category>
		<category><![CDATA[Netbeans]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://andrescanavesi.com.uy/blog/?p=269</guid>
		<description><![CDATA[Instalación de PHP en GNU/Linux]]></description>
			<content:encoded><![CDATA[<p>En mi caso utilizo <strong>ubuntu</strong> pero debería ser muy similar en cualquier otra distribución, especialmente de la familia de<br />
<strong> Debian</strong></p>
<p>Previo a la instalación debemos tener instalado el JDK:</p>
<p><code>sudo apt-get install sun-java6-jdk</code></p>
<p>Vamos a la web de descargas de <strong>Netbeans</strong>:</p>
<p><a href="http://netbeans.org/downloads/index.html">http://netbeans.org/downloads/index.html</a></p>
<p>Descargamos la opción de <strong>PHP</strong>.</p>
<p>Supongamos que descargamos el archivo en el escritorio, abrimos una consola, escribimos:</p>
<p><code>cd Escritorio</code></p>
<p>Le damos permisos de ejecución al archivo descargado:</p>
<p><code>sudo chmod 644 netbeans-6.8-ml-php-linux.sh</code></p>
<p>Ejecutamos el archivo:</p>
<p><code>sudo sh netbeans-6.8-ml-php-linux.sh</code></p>
<p>Se nos abrirá el instalador  y seguimos los pasos que nos indica.</p>
<p><img src="http://nachxs.files.wordpress.com/2009/06/netbeans01.png" alt="Netbeans logo" /></p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://andrescanavesi.com.uy/blog/instalar-netbeans-para-php-en-gnu-linux/" target="_blank"><img src="http://andrescanavesi.com.uy/blog/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a><a href="http://www.facebook.com/share.php?u=http://andrescanavesi.com.uy/blog/instalar-netbeans-para-php-en-gnu-linux/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://andrescanavesi.com.uy/blog/instalar-netbeans-para-php-en-gnu-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chromeexperiments.com</title>
		<link>http://andrescanavesi.com.uy/blog/chromeexperiments-com/</link>
		<comments>http://andrescanavesi.com.uy/blog/chromeexperiments-com/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 21:13:20 +0000</pubDate>
		<dc:creator>andres</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://andrescanavesi.com.uy/blog/?p=248</guid>
		<description><![CDATA[Siempre me gustó mas javascript que flash, chromeexperiments.com es una gran prueba de que se pueden hacer las mismas cosas que con flash  

Uno de los ejemplos que mas me gustó:

http://www.chromeexperiments.com/detail/browser-ball/
Otra vez Matías tirando buena info.
Share on Facebook]]></description>
			<content:encoded><![CDATA[<p>Siempre me gustó mas javascript que flash, <a href="http://www.chromeexperiments.com/">chromeexperiments.com</a> es una gran prueba de que se pueden hacer las mismas cosas que con flash <img src='http://andrescanavesi.com.uy/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><img src="http://findmysoft.cachefly.net/img/news/Google-Experiments-with-V8-in-Chrome-2-0-Beta.jpg" alt="chrome experiments" /></p>
<p>Uno de los ejemplos que mas me gustó:</p>
<p><a href="http://www.chromeexperiments.com/detail/browser-ball/"></p>
<p>http://www.chromeexperiments.com/detail/browser-ball/</a></p>
<p>Otra vez <a href="http://www.mmenafra.info/">Matías</a> tirando buena info.</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://andrescanavesi.com.uy/blog/chromeexperiments-com/" target="_blank"><img src="http://andrescanavesi.com.uy/blog/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a><a href="http://www.facebook.com/share.php?u=http://andrescanavesi.com.uy/blog/chromeexperiments-com/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://andrescanavesi.com.uy/blog/chromeexperiments-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Librería javascript gráfica Processing</title>
		<link>http://andrescanavesi.com.uy/blog/libreria-javascript-grafica-processing/</link>
		<comments>http://andrescanavesi.com.uy/blog/libreria-javascript-grafica-processing/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 15:37:44 +0000</pubDate>
		<dc:creator>andres</dc:creator>
				<category><![CDATA[programación]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://andrescanavesi.com.uy/blog/?p=232</guid>
		<description><![CDATA[Processing es una librería javascript con una filisofía similar a los applets de Java.
Para aprender un poco acerca de la sintaxis es que hice un ejemplo muy básico, simplemente se pinta un círculo en donde hagas click.

Dentro del método setup() hay otro método llamado noLoop(), este es usado para que el método draw() no se [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://processingjs.org">Processing</a> es una librería javascript con una filisofía similar a los applets de Java.</p>
<p>Para aprender un poco acerca de la sintaxis es que hice un <a href="http://andrescanavesi.com.uy/examples/first-processing-example.html">ejemplo</a> muy básico, simplemente se pinta un círculo en donde hagas click.</p>
<p><img src="http://hyper-metrix.com/portfolio/processingjs-noref.png" alt="processingjs-image" /></p>
<p>Dentro del método <strong>setup()</strong> hay otro método llamado <strong>noLoop()</strong>, este es usado para que el método <strong>draw()</strong> no se refresque solo. Para lograr que el canvas se refresque hay que poner el método <strong>redraw()</strong> luego de nuestra acción, en este caso lo puse dentro del método <strong>mouseClicked()</strong>. Para probar, puedes comentar ambos métodos a la vez para ver que funciona de todos modos, también puedes probar comentar uno y otro para ver el comportamiento.</p>
<p><a href="http://andrescanavesi.com.uy/descargas/processing-example.zip">Descarga el ejemplo</a></p>
<p>Gracias <a href="http://mmenafra.info">Matias Menafra</a> por el aporte.</p>
<p> <iframe src="http://andrescanavesi.com.uy/examples/first-processing-example.html" width="100%" height="900px" align="center"><br />
Click <a href="http://andrescanavesi.com.uy/examples/first-processing-example.html">aquí</a> sino puedes ver el ejemplo<br />
 <iframe></p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://andrescanavesi.com.uy/blog/libreria-javascript-grafica-processing/" target="_blank"><img src="http://andrescanavesi.com.uy/blog/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a><a href="http://www.facebook.com/share.php?u=http://andrescanavesi.com.uy/blog/libreria-javascript-grafica-processing/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://andrescanavesi.com.uy/blog/libreria-javascript-grafica-processing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Herramientas para diseñar en UML en Linux</title>
		<link>http://andrescanavesi.com.uy/blog/herramientas-para-disenar-en-uml-en-linux/</link>
		<comments>http://andrescanavesi.com.uy/blog/herramientas-para-disenar-en-uml-en-linux/#comments</comments>
		<pubDate>Wed, 13 May 2009 14:07:42 +0000</pubDate>
		<dc:creator>andres</dc:creator>
				<category><![CDATA[programación]]></category>
		<category><![CDATA[UML]]></category>

		<guid isPermaLink="false">http://andrescanavesi.com.uy/blog/?p=122</guid>
		<description><![CDATA[Existe una gran variedad de este tipo de herramientas, dejo una lista de las que encontré y cómo instalarlas.
*Dia, además de UML  puedes diseñar otro tipo de diagramas como por ejemplo circuitos eléctricos
*BoUML, luego de realizar tu diseño puedes generar el código correspondiente en varios lenguajes como Java, PHP, etc.
*Gaphor, no le he probado [...]]]></description>
			<content:encoded><![CDATA[<p>Existe una gran variedad de este tipo de herramientas, dejo una lista de las que encontré y cómo instalarlas.</p>
<p>*<strong>Dia</strong>, además de UML  puedes diseñar otro tipo de diagramas como por ejemplo circuitos eléctricos<br />
*<strong>BoUML</strong>, luego de realizar tu diseño puedes <strong>generar el código</strong> correspondiente en varios lenguajes como Java, PHP, etc.<br />
*<strong>Gaphor</strong>, no le he probado mucho.<br />
*<strong>Umbrello</strong>, una herramienta hecha para KDE pero funciona lo mas bien con GNOME, muy completa.<br />
*<strong>ArgoUML</strong>, una herramienta hecha en Java que pinta muy bien</p>
<p>Quitando ArgoUML, si tienes alguna distrubución basada en Debian como por ejemplo Ubuntu, puedes instalar las herramientas facilmente buscando en tu gestor de paquetes o tecleando en la consola:</p>
<p>$ sudo apt-get install nombre_de_la_herramienta</p>
<p>ArgoUML lo puedes descargar de <a href="http://argouml.tigris.org/">aquí</a><br />
Una vez descargado, descomprimimos el tar.gz y buscamos el .jar que dice argouml, click derecho, abrir con java y ya está corriendo.</p>
<p>¿Conoces alguna otra que no haya nombrado?</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://andrescanavesi.com.uy/blog/herramientas-para-disenar-en-uml-en-linux/" target="_blank"><img src="http://andrescanavesi.com.uy/blog/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a><a href="http://www.facebook.com/share.php?u=http://andrescanavesi.com.uy/blog/herramientas-para-disenar-en-uml-en-linux/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://andrescanavesi.com.uy/blog/herramientas-para-disenar-en-uml-en-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalar visual editor en Eclipse Ganymede (3.4.2)</title>
		<link>http://andrescanavesi.com.uy/blog/instalar-visual-editor-en-eclipse-ganymede-342/</link>
		<comments>http://andrescanavesi.com.uy/blog/instalar-visual-editor-en-eclipse-ganymede-342/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 15:11:09 +0000</pubDate>
		<dc:creator>andres</dc:creator>
				<category><![CDATA[programación]]></category>

		<guid isPermaLink="false">http://andrescanavesi.com.uy/blog/?p=49</guid>
		<description><![CDATA[Simple y sencillo, estando en Eclipse vamos Help -> Software update y abrimos la pestaña Available software. Clic en Add site&#8230;
y pegamos la siguiente URL http://update.soyatec.org/Ganymede/ve/1.4
Posteriormente damos un tic al checkbox como se ve en la imágen. 

Apretamos el botón install&#8230; y le damos siguiente a los sucesivos pasos.
Una vez instalado el visual editor nos [...]]]></description>
			<content:encoded><![CDATA[<p>Simple y sencillo, estando en Eclipse vamos Help -> Software update y abrimos la pestaña Available software. Clic en Add site&#8230;<br />
y pegamos la siguiente URL http://update.soyatec.org/Ganymede/ve/1.4<br />
Posteriormente damos un tic al checkbox como se ve en la imágen. </p>
<p><a href="http://andrescanavesi.com.uy/blog/images/instalar_visual_editor.jpg"><img src="http://andrescanavesi.com.uy/blog/images/instalar_visual_editor.jpg" alt="instalar visual editor" /></a></p>
<p>Apretamos el botón install&#8230; y le damos siguiente a los sucesivos pasos.<br />
Una vez instalado el visual editor nos pide que reiniciemos Eclipse (si no nos pide, reiniciamos igual).</p>
<p>Listo, ya tenemos visual editor instalado <img src='http://andrescanavesi.com.uy/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://wiki.eclipse.org/VE/Update">Fuente</a></p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://andrescanavesi.com.uy/blog/instalar-visual-editor-en-eclipse-ganymede-342/" target="_blank"><img src="http://andrescanavesi.com.uy/blog/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a><a href="http://www.facebook.com/share.php?u=http://andrescanavesi.com.uy/blog/instalar-visual-editor-en-eclipse-ganymede-342/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://andrescanavesi.com.uy/blog/instalar-visual-editor-en-eclipse-ganymede-342/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Script en Perl para el envío masivo de mails</title>
		<link>http://andrescanavesi.com.uy/blog/script-en-perl-para-el-envio-masivo-de-mails/</link>
		<comments>http://andrescanavesi.com.uy/blog/script-en-perl-para-el-envio-masivo-de-mails/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 04:59:32 +0000</pubDate>
		<dc:creator>andres</dc:creator>
				<category><![CDATA[programación]]></category>

		<guid isPermaLink="false">http://andrescanavesi.com.uy/blog/?p=43</guid>
		<description><![CDATA[Les dejo un script hecho en Perl para el envío masivo de mails.
Es sencillo y bastante intuitivo.
Lo que debes hacer es copiar el código y guardarlo en un archivo por ejemplo mailing.pl
Luego para ejecutarlo, abre una consola y tipea:
$ perl mailing.pl
Logicamente, previo a hacer una ejecución de prueba debes modificar el script con los datos [...]]]></description>
			<content:encoded><![CDATA[<p>Les dejo un script hecho en Perl para el envío masivo de mails.<br />
Es sencillo y bastante intuitivo.<br />
Lo que debes hacer es copiar el código y guardarlo en un archivo por ejemplo mailing.pl<br />
Luego para ejecutarlo, abre una consola y tipea:</p>
<p>$ perl mailing.pl</p>
<p>Logicamente, previo a hacer una ejecución de prueba debes modificar el script con los datos que sean necesarios, esto es, conexión a base de datos, tablas a seleccionar, etc.</p>
<p><code><br />
#!/usr/bin/perl<br />
# Programa para el envio de mails</p>
<p>print "\n Comienzo.. \n";</p>
<p>use DBI();<br />
use strict;</p>
<p>my $opcion = $ARGV[0]; #en caso de pasarle parametros al script, los atrapo aqui (en este caso no se usa)</p>
<p>my $db = openConnection(); #conecto con la BD</p>
<p>my $asunto = "Mi asunto"; #asunto del mail que va a ser enviado<br />
my $remitente = "micorreo\@correo.com";<br />
my $mensaje = "mensaje.html"; #cuerpo del mail en html</p>
<p>	my @mails = getEmails($db);<br />
	my $i;<br />
	for ($i=0; $i<=$#mails; $i++) #para cada correo obtenido de la BD...<br />
	{<br />
		my($id, $email) = split(":", $mails[$i]);<br />
		enviarCorreo($email, $asunto, $remitente);</p>
<p>	}</p>
<p>	print "\n Se han enviado ".$i." correos \n";</p>
<p>	print "\n Fin. \n";</p>
<p>closeConnection($db); #cierro la conexion a BD</p>
<p>sub openConnection<br />
{<br />
	my $db = DBI->connect("DBI:mysql:database=nombre_BD;host=mi_host","mi_usuario","mi_password",{'RaiseError' => 1});<br />
	return $db;<br />
}</p>
<p>sub closeConnection {<br />
	my $db = $_[0];<br />
	$db->disconnect();<br />
}</p>
<p>sub getEmails()<br />
{<br />
	my ($db) = @_;       </p>
<p>	my $query =  " SELECT emails";<br />
     $query .= " FROM mi_tabla";<br />
	   $query .= " WHERE alguna_condicion";</p>
<p>	my $sth = $db->prepare($query);<br />
	$sth->execute();<br />
	my @data_array;<br />
	my $i = 0;<br />
	while(my $ref = $sth->fetchrow_hashref()) {<br />
		$data_array[$i] = $ref->{"id"}. ":" . $ref->{"email"};<br />
		$i++;<br />
	}<br />
	$sth->finish();<br />
	return @data_array;<br />
}</p>
<p>sub enviarCorreo<br />
{<br />
	my($email, $asunto, $remitente, $algo_a_sustituir) = @_; #atrapo los parametros pasados a la sub rutina<br />
	open(MAILING, "$mensaje") || die "No se encontro el archivo '$mensaje'\n";<br />
	my $buffer = "";</p>
<p>	my $line;<br />
	while (defined($line = <MAILING>)) {<br />
		$buffer .= $line;<br />
	}<br />
	close(MAILING) || die "Error cerrando '$mensaje'\n";</p>
<p>	$buffer =~ s/{{algo_a_sustituir}}/$algo_a_sustituir/;</p>
<p>	open (MAIL,"|/usr/sbin/sendmail -t")  or die "No se puede abrir sendmail\n";<br />
	print MAIL "To: $email\n";<br />
	print MAIL "From: Mi nombre <$remitente>\n";<br />
	print MAIL "Subject: $asunto\n";<br />
	print MAIL "Content-Type: text/html\n";<br />
	print MAIL "$buffer\n";<br />
	print MAIL "\n";<br />
	close(MAIL);<br />
}</p>
<p></code></p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://andrescanavesi.com.uy/blog/script-en-perl-para-el-envio-masivo-de-mails/" target="_blank"><img src="http://andrescanavesi.com.uy/blog/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a><a href="http://www.facebook.com/share.php?u=http://andrescanavesi.com.uy/blog/script-en-perl-para-el-envio-masivo-de-mails/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://andrescanavesi.com.uy/blog/script-en-perl-para-el-envio-masivo-de-mails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

