<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3218090322474253065</id><updated>2012-01-20T09:40:36.694-05:00</updated><category term='J2ME'/><category term='Fedora'/><category term='SQL'/><category term='favoritos'/><category term='HowTo'/><category term='maven'/><category term='Palm'/><category term='api'/><category term='robotica'/><category term='presentacion'/><category term='salesforce'/><category term='Google Sync'/><category term='ecsl'/><category term='ubucon'/><category term='extention'/><category term='pam_usb'/><category term='documental'/><category term='d4x'/><category term='pam'/><category term='diseño'/><category term='archiva'/><category term='laptop'/><category term='Comic_Viewer'/><category term='Sony_Ericsson'/><category term='JPilot'/><category term='xml'/><category term='i18n'/><category term='Brother'/><category term='sincronizar'/><category term='Programacion'/><category term='pam_face'/><category term='authentication'/><category term='IoC'/><category term='U1'/><category term='rock'/><category term='ajaxpro'/><category term='NetBeans'/><category term='Centroamerica'/><category term='DI'/><category term='Juegos'/><category term='Evolution'/><category term='Dragones'/><category term='numpad'/><category term='shutdown'/><category term='sl'/><category term='asp.net'/><category term='Bluetooth'/><category term='Ubuntu One'/><category term='framework'/><category term='Satio'/><category term='crisis crediticia'/><category term='nautilus'/><category term='Software Libre'/><category term='Wireless'/><category term='Twitter'/><category term='wiki'/><category term='LGPL'/><category term='manga'/><category term='Películas'/><category term='acer5534'/><category term='.Net'/><category term='maverick'/><category term='coding-dojo'/><category term='github'/><category term='tomcat'/><category term='youtube'/><category term='Tutorial'/><category term='command'/><category term='MFC-240C'/><category term='jetty'/><category term='sesion'/><category term='gettext'/><category term='Empathy'/><category term='musica'/><category term='enum'/><category term='FUDCon 2011 Panamá'/><category term='usb'/><category term='Code_Templates'/><category term='GNU/Linux'/><category term='Configuracion'/><category term='Icaro'/><category term='automatizar'/><category term='Java'/><category term='Publican'/><category term='Web Service'/><category term='impresora'/><category term='C#'/><category term='PHP'/><category term='regex'/><category term='jquery'/><category term='blogger'/><category term='Linq'/><category term='Ubuntu'/><category term='Celebración'/><category term='administrar'/><category term='mito'/><category term='Encuentro'/><category term='xstream'/><title type='text'>¡El mundo es mejor cuando eres libre de elegir!</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>83</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-921947791575631158</id><published>2012-01-19T15:22:00.000-05:00</published><updated>2012-01-19T15:22:16.761-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Configuracion'/><category scheme='http://www.blogger.com/atom/ns#' term='ajaxpro'/><title type='text'>Como usar AjaxPro con JQuery</title><content type='html'>En uno de mis proyectos tengo configurado AjaPro con ASP.Net, ya es tiempo de actualizar dicho código, pues tiene más de tres años, así que me dí a la tarea de configurar la versión más reciente que pudiera encontrar de AjaxPro y JQuery.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Requerimientos:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;AjaxPro: el proyecto está un poco descuidado y en su &lt;a href="http://ajaxpro.codeplex.com/" target="_blank"&gt;sitio en codeplex&lt;/a&gt;, el autor no ha hecho actualizaciones desde el 2009. La última versión estable es la 9.2.17.1 al momento de redactar este post.&lt;/li&gt;&lt;li&gt;JQuery: la versión más reciente al momento es la 1.7.1&lt;/li&gt;&lt;li&gt;ASP.Net (.Net Framework): Estoy usando la versión 3.5 del .net framework para este proyecto.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Pasos para usar AjaxPro con JQuery en ASP.Net:&lt;/b&gt;&lt;br /&gt;1. Descargamos AjaxPro desde &lt;a href="http://ajaxpro.codeplex.com/releases/view/23363" target="_blank"&gt;aquí&lt;/a&gt;, los descomprimimos y lo agregamos al proyecto ASP.Net.&lt;br /&gt;&lt;br /&gt;2. Creamos una clase sensilla para probar por ejemplo las siguiente:&lt;br /&gt;&lt;iframe src="http://pastebin.com/embed_iframe.php?i=uUSbdnG1" style="border: none; height: 355px; width: 100%;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. Creamos una pagina aspx para probar que lo anterior funciona bien, a continuación un ejemplo:&lt;br /&gt;&lt;iframe src="http://pastebin.com/embed_iframe.php?i=LYSjY2j2" style="border: none; height: 500px; width: 100%;"&gt;&lt;/iframe&gt;&lt;br /&gt;&amp;nbsp;&lt;i&gt;&lt;b&gt;Nota&lt;/b&gt;: estoy usando &lt;a href="http://headjs.com/" target="_blank"&gt;head.js&lt;/a&gt; para cargar jquery.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Si todo está bien, deberemos ver una alerta mostrando el mensaje "Hello World!".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Algunas páginas que consulté y me ayudaron a hacer funcionar todo son &lt;a href="http://weblogs.asp.net/mschwarz/archive/2007/04/15/download-ajaxpro-beta-with-jquery-support.aspx" target="_blank"&gt;esta &lt;/a&gt;y &lt;a href="http://weblogs.asp.net/mschwarz/archive/2007/04/10/jquery-and-ajax-net-professional-ajaxpro.aspx" target="_blank"&gt;esta otra&lt;/a&gt;.&lt;br /&gt;Les recomiendo también el siguiente &lt;a href="http://sdt.sumida.com.cn:8080/cs/blogs/jawance/archive/2006/12/22/ajax-net-professional-a-free-library-for-the-microsoft-net-framework.aspx" target="_blank"&gt;enlace&lt;/a&gt;, donde pueden ver las características principales de AjaxPro y por supuesto el sitio de &lt;a href="http://jquery.com/" target="_blank"&gt;jquery&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Hasta la próxima.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-921947791575631158?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/921947791575631158/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2012/01/como-usar-ajaxpro-con-jquery.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/921947791575631158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/921947791575631158'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2012/01/como-usar-ajaxpro-con-jquery.html' title='Como usar AjaxPro con JQuery'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-3589246017587417282</id><published>2012-01-11T20:00:00.000-05:00</published><updated>2012-01-11T20:00:01.973-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='enum'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Linq'/><category scheme='http://www.blogger.com/atom/ns#' term='extention'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Metodos de extension en C#</title><content type='html'>Hace algún tiempo que vengo trabajando con C# y he visto algo que en mi opinión es bastante útil y se llama métodos de extensión. Por medio de estos métodos podemos hacer algo como lo que ofrece Ruby y extender las interfaces de las clases que vienen incluidas como parte del .Net framework.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Veamos algunos ejemplos donde esto puede ser útil.&lt;/b&gt;&lt;br /&gt;1. Extendiendo linq, supongamos que queremos calcular el hash de una cadena, podemos definir un método de la siguiente forma para obtener el hash md5&lt;br /&gt;&lt;iframe src="http://pastebin.com/embed_iframe.php?i=vMU2hf2v" style="border: none; width: 100%;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;2.&amp;nbsp; Leer los &lt;a href="http://msdn.microsoft.com/es-es/library/ms228154%28v=vs.80%29.aspx"&gt;AppSettings &lt;/a&gt;(xml) de una aplicación.&lt;br /&gt;&lt;iframe src="http://pastebin.com/embed_iframe.php?i=eEckvS0R" style="border: none; width: 100%;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;¿Qué hay de malo con los ejemplos?&lt;/b&gt;&lt;br /&gt; Como estos son ejemplos simples no mucho en realidad, pero en ejemplo 1 se podría reusar la lógica de conversión de byte a hexadecimal y en el ejemplo 2 en todos lados donde se use la función GetAppSetting debemos saber exactamente que cadena hay que pasar como parámetro para obtener el setting deseado y si por si acaso alguien escribe mal la llave (key) la aplicación fallará pues la función GetAppSetting retornará null.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Pues bien mejoremos el código&lt;/b&gt;&lt;br /&gt;Voy a crear una sola clase con mis métodos de extensión, sin embargo ustedes pueden separar todo en varias clases según sea necesario.&lt;br /&gt;&lt;iframe src="http://pastebin.com/embed_iframe.php?i=HkMfmg9T" style="border: none; width: 100%;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Nota: &lt;/b&gt;Del ejemplo anterior pueden ver que tengo una clase y un enum definidos. La clase define los métodos de extensión mientras que el enum es usado para simplificar el código de acceso a las configuraciones, veamos como quedan las las funciones que vimos antes:&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ejemplo 1:&lt;/b&gt;&lt;br /&gt;&lt;iframe src="http://pastebin.com/embed_iframe.php?i=FiGDHmUb" style="border: none; width: 100%;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Nota:&lt;/b&gt; Como pueden ver aquí, la función en si misma se hace más simple y de ahora en adelante donde sea que tengamos una instancia de IEnumerable&lt;byte&gt; podemos llamar al método ToHexString &lt;/byte&gt;&lt;/i&gt;&lt;i&gt;.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Muchas cosas puede usarse como instancias de IEnumerable, un arreglo, una lista, una colección (&lt;/i&gt;ICollection&lt;i&gt;), etc.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt; &lt;b&gt;Ejemplo 2:&lt;/b&gt;&lt;br /&gt;&lt;iframe src="http://pastebin.com/embed_iframe.php?i=eZLBJsNM" style="border: none; width: 100%;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Nota:&lt;/b&gt;&amp;nbsp; Ahora en la función delegamos el acceso a los AppSettings a nuestro enum, de esta forma existe un solo lugar donde se leen los mismo y eliminamos la necesidad de mantener una cadena o una constante&amp;nbsp; aparte solo para el nombre de una configuración. Ademas con esta solución podemos usar el autocompletado de nuestro IDE favorito.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-3589246017587417282?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/3589246017587417282/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2012/01/metodos-de-extension-en-c.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3589246017587417282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3589246017587417282'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2012/01/metodos-de-extension-en-c.html' title='Metodos de extension en C#'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-3965127755329389910</id><published>2012-01-11T11:21:00.000-05:00</published><updated>2012-01-11T11:52:11.685-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='administrar'/><category scheme='http://www.blogger.com/atom/ns#' term='U1'/><category scheme='http://www.blogger.com/atom/ns#' term='sincronizar'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu One'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Administrando e investigando problemas en ubuntu one</title><content type='html'>Tratando de hacer que una pc sincronice varios archivos con Ubuntu One (U1) me topé con problemas, los archivos no se estaban cargando, por lo que decidí buscar una forma de vigilar el trabajo de sincronización y ver la causa del problema.&lt;br /&gt;&lt;br /&gt;Despues de buscar un rato encontré en askubuntu un par páginas con información muy útil:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;http://askubuntu.com/questions/16592/how-can-i-tell-whether-ubuntu-one-file-sync-is-working-and-what-progress-it-is&lt;/li&gt;&lt;li&gt;http://askubuntu.com/questions/61471/ubuntu-one-state-still-processing-process-sleeping-not-transfer-uploads-downlo &lt;/li&gt;&lt;/ol&gt;De lo anterior me parece muy interesante que existe una herramienta para manejar U1 desde la consola llamada u1sdtool&amp;nbsp; y que los archivos de log de&amp;nbsp; U1 están en la carpeta&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;~/.cache/ubuntuone/log/&lt;/blockquote&gt;Para más detalles sobre como usar u1sdtool pueden consultar el manual:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;man u1sdtool&lt;/blockquote&gt;&lt;br /&gt;Revisando el log ~/.cache/ubuntuone/log/status.log vi varios mensajes indicando que la conexión era adquirida y luego perdida. Sospecho que algo no se cargó bien, quizás como actualicé la pc el servicio de&amp;nbsp; U1 necesita reiniciarse:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;u1sdtool --quit&lt;br /&gt;u1sdtool --start&lt;/blockquote&gt;&lt;br /&gt;Luego ejecuté el siguiente comando para ver el estatus de U1:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;u1sdtool --status&lt;/blockquote&gt;Del comando anterior veo una respuesta parecida a los siguiente,&amp;nbsp; que indica que todo funciona correctamente : &lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;State: QUEUE_MANAGER&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection: With User With Network&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; description: processing the commands pool&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; is_connected: True&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; is_error: False&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; is_online: True&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; queues: WORKING&lt;/span&gt;&lt;/i&gt;&lt;/blockquote&gt;Y revisando el archivo ~/.cache/ubuntuone/log/status.log veo el siguiente mensaje:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;2012-01-11 10:48:21,814 - ubuntuone.status - DEBUG - notification shown: «PICT0127.JPG» y 3513 archivos más se se están subiendo a su nube personal.&lt;/blockquote&gt;En ell archivo ~/.cache/ubuntuone/log/syncdaemon.log podemos ver con más detalle el progreso de la sincronización&lt;br /&gt; &lt;br /&gt;Ahora sí todo funciona como debería.&lt;br /&gt;&lt;br /&gt;Espero que esto les sirva de algo si tienen problemas con su U1 en algún momento.&lt;br /&gt;&lt;br /&gt;Hasta la próxima.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-3965127755329389910?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/3965127755329389910/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2012/01/administrando-e-investigando-problemas.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3965127755329389910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3965127755329389910'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2012/01/administrando-e-investigando-problemas.html' title='Administrando e investigando problemas en ubuntu one'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-5313970625847288184</id><published>2012-01-10T12:18:00.000-05:00</published><updated>2012-01-10T13:24:29.252-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='jetty'/><category scheme='http://www.blogger.com/atom/ns#' term='archiva'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Instalar apache archiva en Jetty 7</title><content type='html'>Ya que logré &lt;a href="http://emont01.blogspot.com/2012/01/como-instalar-jetty-7x-en-ubuntu.html"&gt;instalar Jetty 7 en Ubuntu&lt;/a&gt; y que me gusta mucho &lt;a href="http://emont01.blogspot.com/2011/05/maven-por-consola-de-comandos-en-ubuntu.html"&gt;trabajar con maven&lt;/a&gt;, es el momento de actualizar mi guía de como &lt;a href="http://emont01.blogspot.com/2011/05/como-instalar-apache-archiva-en-ubuntu.html"&gt;instalar archiva en Ubuntu&lt;/a&gt;, pero está vez, dentro de un Jetty 7 que ya está funcionando.&lt;br /&gt;&lt;br /&gt;Antes de seguir debemos aclarar que [jetty.home] se refiere a el sitio donde está instalado el servidor o lo que sea que tengan configurado en la variable de entornor JETTY_HOME (generalemente definida en el archivo /etc/default/jetty), pueden consultar mi &lt;a href="http://emont01.blogspot.com/2012/01/como-instalar-jetty-7x-en-ubuntu.html"&gt;post anterior sobre instalar jetty&lt;/a&gt; para más detalles.&lt;br /&gt;&lt;br /&gt;Lo pasos a seguir:&lt;br /&gt;1. Configuramos jetty, sino lo está ya, para hacer la instalación en caliente usando &lt;a href="http://wiki.eclipse.org/Jetty/Feature/ContextDeployer"&gt;ContextProvider&lt;/a&gt;, para esto necesitamos editar el archivo jetty.xml&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;sudo nano [jetty.home]/etc/jetty.xml&lt;/blockquote&gt;El siguiente ejemplo lo armé usando los distintos xml que vienen incluidos en la carpeta etc de jetty&lt;br /&gt;&lt;iframe src="http://pastebin.com/embed_iframe.php?i=cDJHE6gN" style="border: none; width: 100%;"&gt;&lt;/iframe&gt;&lt;br /&gt;Hay que detener y reiniciar jetty para que los cambios sean efectivos, usaré el modo de supervisión para monitorear que todo está bien con la configuración nueva. &lt;br /&gt;&lt;blockquote class="tr_bq"&gt;sudo /etc/init.d/jetty stop&lt;br /&gt;sudo /etc/init.d/jetty supervise&lt;/blockquote&gt;&lt;br /&gt;2. Descargamos el archivo war de apache archiva (&lt;a href="http://archiva.apache.org/download.html"&gt;sitio de descargas&lt;/a&gt;).&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;cd ~/Downloads&lt;br /&gt;wget -c http://mirrors.sonic.net/apache//archiva/binaries/apache-archiva-1.3.5.war&lt;/blockquote&gt;&lt;i&gt;&lt;b&gt;Nota:&lt;/b&gt; al descargar recuerden comprobar el md5 del archivo war de archiva http://www.apache.org/dist/archiva/binaries/apache-archiva-1.3.5.war.md5, es una buena práctica y además por errores de la red tuve que volver a bajar el archivo de otro mirror.&amp;nbsp; &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;3. Creamos un "deployment descriptor" en formato xml, pueden tomar como ejemplo el siguiente texto y ajustar lo que crean conveniente.&lt;br /&gt;&lt;iframe src="http://pastebin.com/embed_iframe.php?i=ahEbh4eQ" style="border: none; width: 100%;"&gt;&lt;/iframe&gt; &lt;br /&gt;&lt;i&gt;Pueden comparar este descriptor con el que se crea para tomcat 5.5 y 6, según la documentación de archiva: http://archiva.apache.org/docs/1.3.5/adminguide/webapp.html&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. Colocamos el archivo war en la carpeta [jetty.home]/webapps&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;sudo cp ~/Downloads/apache-archiva-1.3.5.war&amp;nbsp; [jetty.home]/webapps&lt;/blockquote&gt;&lt;br /&gt;5. Colocamos el "deployment descriptor" en la carpeta [jetty.home]/contexts&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&amp;nbsp;sudo cp archiva-context.xml [jetty.home]/contexts&lt;/blockquote&gt;&lt;br /&gt;Usando la capacidad de jetty de hacer instalaciones en caliente (hot deployment), configurada en el primer paso, veremos nuestra aplicación funcionando de inmediato, si todo va bien.&lt;br /&gt;&lt;br /&gt;Si modificamos el archivos de contexto jetty removerá y reinstalará la aplicación y si lo borramos jetty eliminará el contexto desinstalando la aplicación.&lt;br /&gt;&lt;br /&gt;Solo nos queda probar que funciona ingresando en el navegador web a http://localhost/archiva&lt;br /&gt;&lt;br /&gt;Finalmente les dejo este &lt;a href="https://cwiki.apache.org/confluence/display/ARCHIVA/Archiva+on+Jetty"&gt;enlace&lt;/a&gt;, donde dan algunos detalles de lo que hace falta para que archiva funcione en jetty, puede que les resulte de ayuda.&lt;br /&gt;&lt;br /&gt;Hasta la proxima.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-5313970625847288184?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/5313970625847288184/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2012/01/instalar-apache-archiva-en-jetty-7.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/5313970625847288184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/5313970625847288184'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2012/01/instalar-apache-archiva-en-jetty-7.html' title='Instalar apache archiva en Jetty 7'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-5839336948993699411</id><published>2012-01-08T11:45:00.000-05:00</published><updated>2012-01-08T11:45:04.849-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='jetty'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Cómo instalar jetty 7.x en Ubuntu</title><content type='html'>Después de mucho buscar por la red, logré encontrar por fin referencias sobre como instalar jetty 7 en Ubuntu, es bastante simple pero me parece que es buena idea dejar aquí guardados los pasos para el fúturo cuando me hagan falta y de paso si le son de ayuda a alguien más pues mejor.&lt;br /&gt;&lt;br /&gt;Estoy basando me en &lt;a href="http://jawher.net/2009/12/18/manually-installing-a-recent-version-of-jetty-as-a-service-in-linux/"&gt;este post&lt;/a&gt;, aunque voy a tocar algunos temas que Jawher no menciona. &lt;br /&gt;&lt;br /&gt;Esta guía está hecha y probada en Ubuntu 11.10 (oneiric); en teoría debería funcionar también para la versión 11.04, tan pronto pueda lo verifico.&lt;br /&gt;&lt;br /&gt;Si bien jetty (&lt;a href="http://jetty.codehaus.org/jetty/"&gt;mas aquí&lt;/a&gt;) está disponible en los repositorios de oneiric la versión disponible es la 6 considerada madura y es algo vieja, por otra parte jetty 7 es considerado estable y jetty 8 beta (en desarrollo).&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;$ aptitude show jetty&lt;br /&gt;Paquete: jetty&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;Estado: sin instalar&lt;br /&gt;Versión: 6.1.24-6&lt;br /&gt;...&lt;/blockquote&gt;&lt;br /&gt;Los pasos a seguir para instalar son:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Descargar la versión que queremos usar:&lt;br /&gt;&lt;blockquote&gt;cd /usr/local/&lt;br /&gt;sudo wget -c http://dist.codehaus.org/jetty/jetty-hightide-7.5.4/jetty-hightide-7.5.4.v20111024.tar.gz&lt;br /&gt;sudo tar -xzvf jetty-hightide-7.5.4.v20111024.tar.gz&lt;br /&gt;sudo ln -s jetty-hightide-7.5.4.v20111024 jetty&lt;/blockquote&gt;&lt;i&gt;actualmente existe dos tipos de&amp;nbsp; distribuciones de jetty, la de eclipse y la de codehaus, pueden ver &lt;a href="http://wiki.eclipse.org/Jetty/Howto/Install_Jetty"&gt;aquí&lt;/a&gt; para más detalles, yo usé la de codehaus versión &lt;b&gt;7.5.4.v20111024.&lt;/b&gt;&lt;br /&gt;Por comodidad descomprimí el tar.gz y cree un enlace a la carpeta llamado jetty, que es fácil de recordar.&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Configuración:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;sudo touch /etc/default/jetty&lt;/blockquote&gt;&lt;i&gt;Según la documentación de jetty, si el archivo que acabamos de crear existe, es leído para determinar la configuración que el servidor va a usar. Entonces con nuestro editor preferido abrimos dicho archivo y agregamos cómo mínimo lo siguiente (por favor ajustar los valores a su gusto)&lt;/i&gt;&lt;blockquote&gt;NO_START=0&lt;br /&gt;#maquina virtual de java&lt;br /&gt;JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386&lt;br /&gt;#instalación de jetty&lt;br /&gt;JETTY_HOME=/usr/local/jetty&lt;br /&gt;#para escuchar a todas las interfaces (redes)&lt;br /&gt;JETTY_HOST=0.0.0.0 &lt;br /&gt;#puerto a usar por jetty&lt;br /&gt;JETTY_PORT=80&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;Jetty como servicio:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;sudo cp /usr/local/jetty/bin/jetty.sh /etc/init.d/jetty&lt;br /&gt;sudo update-rc.d jetty defaults&lt;/blockquote&gt;&lt;i&gt;como mencioné en un &lt;a href="http://emont01.blogspot.com/2011/05/como-instalar-apache-archiva-en-ubuntu.html"&gt;post anterior&lt;/a&gt; el comando update-rc.d se puede usar para configurar un programa para que se ejecute de forma automática al inicio, justo lo que debe hacer un servicio.&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;Todo listo, ya solo nos queda ejecutar el servidor y lo podemos hacer de la siguiente forma:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;sudo /etc/init.d/jetty start&lt;/blockquote&gt;Pueden ejecutar el comando sin ningún parámetro para que les muestre las opciones posibles, merece la pena resaltar supervise, que ejecuta jetty y muestra todos los mensajes en la consola, así podemos ver en pantalla si algo falla.&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;sudo /etc/init.d/jetty supervise&lt;/blockquote&gt;&lt;u&gt;Consideraciones adicionales:&lt;/u&gt;&lt;br /&gt;De acuerdo a los expertos, debemos tratar de tener java actualizado a la versión estable más reciente y eliminar las antiguas que no necesitamos, en general esto aplica para muchos programas, para instalar la openjdk 7 usamos el comando&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;sudo aptitude install openjdk-7-jdk openjdk-7-jre&lt;/blockquote&gt;Jetty es capaz de servir tanto contenido estático como aplicaciones, por lo que no necesitamos otro servidor extra, de ahí que lo puse directamente en el puerto 80, pero deben recordad de adiconal a establecer el valor de JETTY_HOST a 0.0.0.0 en el archivo /etc/default/jetty hay que asignar los permisos al firewall, por ejemplo usando ufw sería algo como lo siguiente:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;sudo ufw allow 80&lt;/blockquote&gt;Saludos y será hasta la proxima.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-5839336948993699411?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/5839336948993699411/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2012/01/como-instalar-jetty-7x-en-ubuntu.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/5839336948993699411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/5839336948993699411'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2012/01/como-instalar-jetty-7x-en-ubuntu.html' title='Cómo instalar jetty 7.x en Ubuntu'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-3759698009456134614</id><published>2011-12-31T13:57:00.000-05:00</published><updated>2011-12-31T13:57:24.501-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='Satio'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='J2ME'/><category scheme='http://www.blogger.com/atom/ns#' term='Sony_Ericsson'/><category scheme='http://www.blogger.com/atom/ns#' term='Comic_Viewer'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>Lector de comics para mobiles (java j2me)</title><content type='html'>El día de hoy voy a hablar de un pequeño proyecto que inicié. &lt;br /&gt;&lt;br /&gt;La idea es simple: Poder ver el cómic diario de Garfield desde mi celular. Me gusta mucho leer dicha tira cómica y me resulta más simple y cómodo cargarla diariamente en mi celular ya que es una imagen pequeña por lo general.&lt;br /&gt;&lt;br /&gt;El proyecto está en sus inicios y un poco abandonado pues he tenido mucho trabajo estos últimos meses pero pueden verlo en el repositorio público &lt;a href="https://bitbucket.org/emont01/comicviewer"&gt;aquí (BitBucket.org)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Lo desarrollé usando NetBeans y J2ME. Para ejecutarlo necesitamos un dispositivo movil con soporte para MIDP 2.0. Yo lo probé en un Sony Ericsson Satio que tengo.&lt;br /&gt;&lt;br /&gt;En un futuro planeo arreglar varias cosas entre ellas:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Soporte para varios dispositivos, posiblemente migrarlo a &lt;a href="http://phonegap.com/"&gt;PhoneGap&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Actualizar el código fuente para que esté bajo GPL.&lt;/li&gt;&lt;li&gt;Mejorar la interfaz de usuario. &lt;/li&gt;&lt;/ul&gt;Hasta la próxima.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-3759698009456134614?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/3759698009456134614/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/01/lector-de-comics-para-mobiles-java-j2me.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3759698009456134614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3759698009456134614'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/01/lector-de-comics-para-mobiles-java-j2me.html' title='Lector de comics para mobiles (java j2me)'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-751454039904120796</id><published>2011-12-31T11:19:00.002-05:00</published><updated>2011-12-31T13:30:19.317-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Linq'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Convertir de SQL a Linq</title><content type='html'>&lt;br /&gt;Recientemente he estado trabajando mucho con .Net y aunque ya lo he dicho antes lo vuelvo a repetir ¡La gran mayoría de las cosas no me gustan! sin embargo eh estado encontrando buenas técnologias que valen la pena aprenderlas, entre ellas el muy conocido Linq.&lt;br /&gt;&lt;br /&gt;Una de las principales razones para usar Linq es el hecho de que es independiente de la tecnología de almacenamiento de datos que está debajo, por ejemplo les dejo una lista de los Proveedores que actualmente existen para linq &lt;a href="http://www.sheltonblog.com/archive/2008/07/11/list-of-linq-providers.aspx"&gt;aquí&lt;/a&gt; y &lt;a href="http://www.linqpad.net/WhyLINQBeatsSQL.aspx"&gt;aquí &lt;/a&gt;una página donde explican en más detalle porque linq es mejor que usar SQL directamente.&lt;br /&gt;&lt;br /&gt;Hoy escribo este post para dejar una pequeña documentación de como transformar consultas SQL a Linq usando Linqer.&lt;br /&gt;&lt;br /&gt;Linqer me ayudó mucho con la conversión de SQL a Linq y la recomiendo en especial cuando quieren hacer el trabajo rápidamente además que es muy buena para aprender linq aunque lastimosamente no es libre: http://www.sqltolinq.com/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para los efectos de mis ejemplos crearé una base de datos llamada &lt;u&gt;&lt;b&gt;sample1&lt;/b&gt;&lt;/u&gt; con las siguientes tablas: &lt;b&gt;table_1&lt;/b&gt;, &lt;b&gt;table_2&lt;/b&gt; y &lt;b&gt;table_3&lt;/b&gt; y a continuación el script sql, más simple que me es posible crear con lo que tengo a mano, es muy probable que si lo desean usar tengan que hacer algunos cambios para que funcione en su DBMS (MySQL, MS SQL Server, Oracle, etc)&lt;br /&gt;&lt;script src="http://pastebin.com/embed_js.php?i=B6LpNhcz"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;Bueno manos a la obra:&lt;br /&gt;1. Select simple&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SQL: &lt;b&gt;SELECT * FROM table_1&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Linq: &lt;i style="color: #f1c232;"&gt;from table_1 in context.Table_1&lt;br /&gt;select new {&lt;br /&gt;&amp;nbsp; table_1.Col_1,&lt;br /&gt;&amp;nbsp; table_1.Col_2,&lt;br /&gt;&amp;nbsp; table_1.Col_3&lt;br /&gt;}&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;2. Select con condicional:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SQL: &lt;b&gt;SELECT * FROM table_2 WHERE col_1 &amp;lt;= 10 and col_2 = 'something'&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Linq: &lt;i style="color: #f1c232;"&gt;from table_2 in context.Table_2&lt;br /&gt;where&lt;br /&gt;&amp;nbsp; table_2.Col_1 &amp;lt;= 10 &amp;amp;&amp;amp;&lt;br /&gt;&amp;nbsp; table_2.Col_2 == "something"&lt;br /&gt;select new {&lt;br /&gt;&amp;nbsp; table_2.Col_1,&lt;br /&gt;&amp;nbsp; table_2.Table_1_col_1,&lt;br /&gt;&amp;nbsp; table_2.Col_2,&lt;br /&gt;&amp;nbsp; table_2.Col_3&lt;br /&gt;}&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;3. Select con un group by simple: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;SQL: &lt;b&gt;SELECT SUM(col_3) sumatory, col_2  FROM Table_1 GROUP BY col_2&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Linq: &lt;i style="color: #f1c232;"&gt;from table_1 in context.Table_1&lt;br /&gt;group table_1 by new {&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; table_1.Col_2&lt;br /&gt;} into g&lt;br /&gt;select new {&lt;br /&gt;&amp;nbsp; sumatory = (System.Decimal?)g.Sum(p =&amp;gt; p.Col_3),&lt;br /&gt;&amp;nbsp; g.Key.Col_2&lt;br /&gt;}&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;En este punto es donde Linq se pone algo complicado por la sintaxis del group by&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. Join (old style):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SQL: &lt;b&gt;SELECT  t1.col_2,   t1.col_3,   t2.col_3,   t3.col_1 &lt;br /&gt;FROM   Table_1 t1,   Table_2 t2,   Table_3 t3 &lt;br /&gt;WHERE   t1.col_1 = t2.table_1_col_1 and t2.col_1 = t3.table_2_col_1&lt;/b&gt;&lt;b&gt; &lt;br /&gt;and t1.col_1 = t3.table_1_col_1&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Linq:&amp;nbsp;&lt;span style="color: #f1c232;"&gt;from t1 in context.Table_1 &lt;br /&gt;from t2 in context.Table_2 &lt;/span&gt;&lt;br style="color: #f1c232;" /&gt;&lt;span style="color: #f1c232;"&gt;from t3 in context.Table_3&lt;/span&gt;&lt;br style="color: #f1c232;" /&gt;&lt;span style="color: #f1c232;"&gt;where&lt;/span&gt;&lt;br style="color: #f1c232;" /&gt;&lt;span style="color: #f1c232;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   t1.Col_1 == t2.Table_1_col_1 &amp;amp;&amp;amp;&lt;/span&gt;&lt;br style="color: #f1c232;" /&gt;&lt;span style="color: #f1c232;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t2.Col_1 == t3.Table_2_col_1 &amp;amp;&amp;amp; &lt;/span&gt;&lt;br style="color: #f1c232;" /&gt;&lt;span style="color: #f1c232;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   t1.Col_1 == t3.Table_1_col_1&lt;/span&gt;&lt;br style="color: #f1c232;" /&gt;&lt;span style="color: #f1c232;"&gt;select new {&lt;/span&gt;&lt;br style="color: #f1c232;" /&gt;&lt;span style="color: #f1c232;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  t1.Col_2,&lt;/span&gt;&lt;br style="color: #f1c232;" /&gt;&lt;span style="color: #f1c232;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  t1.Col_3,&lt;/span&gt;&lt;br style="color: #f1c232;" /&gt;&lt;span style="color: #f1c232;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  Column1 = t2.Col_3,&lt;/span&gt;&lt;br style="color: #f1c232;" /&gt;&lt;span style="color: #f1c232;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  t3.Col_1&lt;/span&gt;&lt;br style="color: #f1c232;" /&gt;&lt;span style="color: #f1c232;"&gt;}&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;5. Inner Join (ansi join), alternativa al ejemplo anterior&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SQL: &lt;b&gt;SELECT  t1.col_2,   t1.col_3,   t2.col_3,  t3.col_1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM&amp;nbsp; Table_1 t1 inner join Table_2 t2 on t1.col_1 = t2.table_1_col_1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inner join Table_3 t3 on  t2.col_1 = t3.table_2_col_1&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and  t1.col_1 = t3.table_1_col_1&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Linq: &lt;i style="color: #f1c232;"&gt;from t1 in context.Table_1&lt;br /&gt;join t2 in context.Table_2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; on new { Col_1 = t1.Col_1 } equals new { Col_1 = t2.Table_1_col_1 }&lt;br /&gt;join t3 in context.Table_3&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; on new { t2.Col_1, Column1 = t1.Col_1 } equals new { Col_1 = t3.Table_2_col_1, Column1 = t3.Table_1_col_1 }&lt;br /&gt;select new {&lt;br /&gt;&amp;nbsp; t1.Col_2,&lt;br /&gt;&amp;nbsp; t1.Col_3,&lt;br /&gt;&amp;nbsp; Column1 = t2.Col_3,&lt;br /&gt;&amp;nbsp; t3.Col_1&lt;br /&gt;}&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;6. Como ultimo ejemplo un join old style que además tiene un group by&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SQL: &lt;b&gt;SELECT  t1.col_2,   t3.col_1,  SUM(t1.col_3) sumatory&lt;br /&gt;          FROM Table_1 t1, Table_2 t2, Table_3 t3&lt;br /&gt;          WHERE  t1.col_1 = t2.table_1_col_1  &lt;br /&gt;                and t2.col_1 = t3.table_2_col_1&lt;br /&gt;                and t1.col_1 = t3.table_1_col_1&lt;br /&gt;           GROUP BY&lt;br /&gt;                t1.col_2, t3.col_1&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Linq: &lt;i style="color: #f1c232;"&gt;from t1 in context.Table_1&lt;br /&gt;from t2 in context.Table_2&lt;br /&gt;from t3 in context.Table_3&lt;br /&gt;where&lt;br /&gt;&amp;nbsp; t1.Col_1 == t2.Table_1_col_1 &amp;amp;&amp;amp;&lt;br /&gt;&amp;nbsp; t2.Col_1 == t3.Table_2_col_1 &amp;amp;&amp;amp;&lt;br /&gt;&amp;nbsp; t1.Col_1 == t3.Table_1_col_1&lt;br /&gt;group new {t1, t3} by new { t1.Col_2, t3.Col_1 } into g&lt;br /&gt;select new {&lt;br /&gt;&amp;nbsp; g.Key.Col_2,&lt;br /&gt;&amp;nbsp; Col_1 = (System.Int32?)g.Key.Col_1,&lt;br /&gt;&amp;nbsp; sumatory = (System.Decimal?)g.Sum(p =&amp;gt; p.t1.Col_3)&lt;br /&gt;}&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Hay muchas otras combinaciones que podría poner pero haría este post demasiado extenso, creo que con esto tenemos suficiente para hacernos una idea de como convertir de SQL a Linq.&lt;br /&gt;&lt;br /&gt;No puedo dejar de mencionar LinqPad que es una buena herramienta para practicar Linq y mejorar nuestro conocimiento del mismo.&lt;br /&gt;&lt;br /&gt;Hasta la próxima.&lt;br /&gt;&lt;ol&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-751454039904120796?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/751454039904120796/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/12/convertir-de-sql-linq.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/751454039904120796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/751454039904120796'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/12/convertir-de-sql-linq.html' title='Convertir de SQL a Linq'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-6743695450903622123</id><published>2011-12-07T16:47:00.000-05:00</published><updated>2011-12-07T17:42:33.601-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='gettext'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='i18n'/><title type='text'>Internacionalizacion en asp.net con gettext</title><content type='html'>Desde hace algún tiempo que estoy buscando una forma de usar gettext en mis proyectos asp.net para soportar internacionalización también abreviada como &lt;b&gt;i18n &lt;/b&gt;¿por qué?, hay muchas razones pero las principales para mi son:&lt;br /&gt;1. Es software libre.&lt;br /&gt;2. Hay muy buenas herramientas tanto para GNU/Linux como para otros OS.&lt;br /&gt;3. Es muy popular y muchos proyectos lo usan, lo cual hace más simple que los traductores puedan ayudar con los muchos lenguajes que yo no domino. &lt;br /&gt;4. Es mucho más simple que la forma soportada por asp.net.&lt;br /&gt;&lt;br /&gt;Ya tengo un &lt;a href="http://emont01.blogspot.com/2011/11/seguridad-flexible-en-aspnet-usando.html"&gt;proyecto asp.net creado en github&lt;/a&gt;, así que lo usaré para los ejemplos.&lt;br /&gt;&lt;br /&gt;Estoy basandome en este &lt;a href="http://www.fairtutor.com/fairlylocal/"&gt;artículo&lt;/a&gt; publicado por Jason Kester.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;A continuación los pasos a seguir: &lt;/u&gt;&lt;br /&gt;&lt;br /&gt;1. Agregar gettext al proyecto. Para esto descargamos la librería FairlyLocal y colocamos los dll en algún lugar accesible para nuestra aplicación y copiamos las clases de ejemplo &lt;b&gt;&lt;i&gt;Internationalization&lt;/i&gt;&lt;/b&gt;, &lt;b&gt;&lt;i&gt;Localization &lt;/i&gt;&lt;/b&gt;y &lt;b&gt;&lt;i&gt;Message&lt;/i&gt;&lt;/b&gt; dentro del proyecto.&lt;br /&gt;&lt;br /&gt;2. Creamos una interfaz que define el helper para soportar i18n (esta interfaz y su implementación están basadas en los ejemplos de la librería FairyLocal):&lt;br /&gt;&lt;iframe src="http://pastebin.com/embed_iframe.php?i=uVeFeLax" style="border: none; width: 100%;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;3. Ahora modificamos la interfaz IPage, &lt;a href="http://emont01.blogspot.com/2011/12/dependency-injection-sencillo-en-aspnet.html"&gt;de mi post anterior&lt;/a&gt;, para poder insertar el recurso de i18n:&lt;br /&gt;&lt;iframe src="http://pastebin.com/embed_iframe.php?i=nSgyqU57" style="border: none; width: 100%;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;4.Mediante inyección de dependencias (DI por sus siglas en ingles) proveemos un helper que manejará la lógica de acceso gettext. La forma como implementé la DI la explico en un &lt;a href="http://emont01.blogspot.com/2011/12/dependency-injection-sencillo-en-aspnet.html"&gt;post anterior&lt;/a&gt;. Esto significa que debemos modificar la clase &lt;a href="http://emont01.blogspot.com/2011/12/dependency-injection-sencillo-en-aspnet.html"&gt;&lt;b&gt;SimpleInjectorPageHandlerFactory.&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;5. Modificamos nuestra aplicación para que use la función "_" donde haga falta.&lt;a href="http://emont01.blogspot.com/2011/12/dependency-injection-sencillo-en-aspnet.html"&gt;&lt;b&gt;&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6. Y el ultimo paso es agregar un script de post construcción (post-build) para que gestione la creación de los archivos .po (a menos claro que prefieran hacerlo manualmente). &lt;br /&gt;Aqui cabe señalar que existen dos tipos de aplicación web en asp.net, a saber: WSP (web site project) y WAP (web application project); &lt;a href="http://msdn.microsoft.com/en-us/library/dd547590.aspx"&gt;más aquí.&lt;/a&gt; Esto es importante porque solo en los WAP existe la posibilidad de crear post-build scripts, pero si tenemos una aplicación WSP lo que debemos hacer es crear un proyecto extra y agregarlo a la solución, por simplicidad recomiendo que sea una librería pero cualquier tipo de proyecto que soporte este tipo de scripts funciona.&lt;br /&gt;A continuación les dejo mi script&lt;br /&gt;&lt;iframe src="http://pastebin.com/embed_iframe.php?i=e5mTfzj6" style="border: none; width: 100%;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Cabe señalar que este post-build script tiene que incluir todos los tipos de archivos fuente que nuestro proyecto tiene para que pueda crear correctamente todas las cadenas que requieren una traducción.&lt;br /&gt;&lt;br /&gt;Lo que sigue es traducir o solicitar a nuestros amigos, colegas, traductores pagados, etc que nos den una mano.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Hasta la próxima.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-6743695450903622123?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/6743695450903622123/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/12/internacionalizacion-en-aspnet-con.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/6743695450903622123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/6743695450903622123'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/12/internacionalizacion-en-aspnet-con.html' title='Internacionalizacion en asp.net con gettext'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-1775935155351082121</id><published>2011-12-06T16:00:00.001-05:00</published><updated>2011-12-08T00:25:41.643-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='IoC'/><category scheme='http://www.blogger.com/atom/ns#' term='DI'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Dependency Injection sencillo en asp.net</title><content type='html'>Siguiendo un poco el hilo de mi post anterior &lt;a href="http://emont01.blogspot.com/2011/11/seguridad-flexible-en-aspnet-usando.html"&gt;Seguridad Flexible en asp.net usando módulos&lt;/a&gt; hago este donde veremos como implementar nuestro propia y muy simple Inyección de Dependencias (&lt;a href="http://en.wikipedia.org/wiki/Dependency_injection"&gt;Dependency Injection, DI&lt;/a&gt;) que es una forma de inversión de control.&lt;br /&gt;&lt;br /&gt;Antes de seguir es bueno comentar que si alguna vez necesitan hacer algo como esto, pueden considerar usar &lt;a href="http://www.springframework.net/"&gt;SpringNet&lt;/a&gt; el cual no sólo ofrece DI sino muchas otras funcionalidades, aunque no lo he probado en .Net sí lo he usado mucho la versión en Java y me ha sido de gran utilidad.&lt;br /&gt;&lt;br /&gt;Bueno manos a la obra:&lt;br /&gt;Primero que nada vamos&amp;nbsp; necesitar definir la forma como se injectaran las dependencias y quien será el responsable:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;La forma, haré que todas mis páginas implementen una interfaz la cual el objeto responsable de inyectar las dependencias reconocerá, recuerden que esta es una versión simplificada de un DI&lt;br /&gt;&lt;iframe src="http://pastebin.com/embed_iframe.php?i=Sph63BW4" style="border: none; width: 100%;"&gt;&lt;/iframe&gt;&lt;/li&gt;&lt;li&gt;El responsable de inyectar las dependencias  necesarias a las páginas será una clase que implemente la interfaz &lt;b&gt;IHttpHandlerFactory &lt;/b&gt;llamada &lt;b&gt;SimpleInjectorPageHandlerFactory&lt;/b&gt;, en dicha clase extenderemos al &lt;b&gt;PageHandlerFactory &lt;/b&gt;que define asp.net para que la implementación sea más simple.&lt;br /&gt;&lt;iframe src="http://pastebin.com/embed_iframe.php?i=sKYvhCLx" style="border: none; width: 100%;"&gt;&lt;/iframe&gt;&lt;b&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ol&gt;Para que la inyección funcione necesitamos configurar que los requests que soliciten páginas aspx sean procesados por nuestra clase, en la sección httpHandlers creamos una entrada nueva de la siguiente forma:&amp;nbsp; &lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&amp;lt;add verb="*" path="*.aspx" type="lib.ioc.di.SimpleInjectorPageHandlerFactory"/&amp;gt;&lt;/blockquote&gt;a continuación un ejemplo de como luce el web.config:&lt;br /&gt;&lt;iframe src="http://pastebin.com/embed_iframe.php?i=itH7yrmS" style="border: none; width: 100%;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Aquí solo demostraré como hacer funcionar todo el mecanismo de inyección y en un post siguiente hablaré de como usar este mecanismo para soportar internacionalización en asp.net usando gettext.&lt;br /&gt;&lt;br /&gt;Todo el código está en la misma aplicación de ejemplo del post anterior y la pueden encontrar &lt;a href="https://github.com/emont01/secModule"&gt;aquí&lt;/a&gt;. Allí puse una interfaz IResource con una implementación sencilla solo para demostrar que funciona.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hasta la próxima.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-1775935155351082121?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/1775935155351082121/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/12/dependency-injection-sencillo-en-aspnet.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/1775935155351082121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/1775935155351082121'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/12/dependency-injection-sencillo-en-aspnet.html' title='Dependency Injection sencillo en asp.net'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-8093127439395930416</id><published>2011-11-22T14:12:00.001-05:00</published><updated>2011-12-06T16:28:36.895-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='authentication'/><title type='text'>Seguridad flexible en asp.net usando Modulos</title><content type='html'>Hace poco, mientras trabajaba en un proyecto para un cliente en ASP.Net, no precisamente mi fuerte ni mucho menos mi favorito, tuve que trabajar en una implementación de seguridad.&lt;br /&gt;&lt;br /&gt;Mi conversación con el cliente fue más o menos como sigue:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Cliente: "Queremos tener una forma flexible de crear roles en el sistema y asignar dichos roles a los usuarios y páginas del sitio de forma que el administrador tenga control de quien puede ver que en la aplicación"&lt;br /&gt;&lt;br /&gt;Yo: "Es decir que quieren cargar los usuarios y sus roles desde la base de datos (algo que ya hacemos) y además los roles de las páginas desde la base de datos ¿correcto?"&lt;br /&gt;&lt;br /&gt;Cliente: "Sí, es correcto"&lt;/blockquote&gt;&lt;br /&gt;Después de un poco de investigación me vino a la mente implementar esto usando un IHttpModule que interceptara los request a la aplicación y allí hacer las validaciones correspondientes.&lt;br /&gt;&lt;br /&gt;Todo el código de este proyecto de ejemplo lo subí a GitHub &lt;a href="https://github.com/emont01/secModule"&gt;aquí&lt;/a&gt; y está bajo licencia apache, así que adentale si desean bajarlo y usarlo y/o mejorarlo, cualquier comentario es bienvenido.&lt;br /&gt;Por cierto casi se me olvida mencionar que estoy usando &lt;a href="http://bltoolkit.net/"&gt;BLToolkit&lt;/a&gt;&amp;nbsp; para la capa de acceso a datos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A continuación cómo resolví el problema:&lt;br /&gt;&lt;br /&gt;1. Diseñemos las tablas y sus relaciones y las creamos en la base de datos&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-62FrCagOZHs/Tsv4ZL-TurI/AAAAAAAABOA/QJW9stochg8/s1600/unnamed0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-62FrCagOZHs/Tsv4ZL-TurI/AAAAAAAABOA/QJW9stochg8/s1600/unnamed0.png" /&gt;&lt;/a&gt;&lt;/div&gt;2. Implementamos la interfaz IHttpModule:&lt;br /&gt;&lt;iframe src="http://pastebin.com/embed_iframe.php?i=6mWmbLvH" style="border: none; width: 100%; height:200px;"&gt;&lt;/iframe&gt;&lt;br /&gt;3. Para poder probar nuestra aplicación decidí configurar un MembershipProvider para validar los usuarios y un RoleProvider para cargar los roles de usuarios. Para más detalles de la forma como implementé estos providers pueden ver el proyecto de ejemplo &lt;a href="https://github.com/emont01/secModule"&gt;aquí&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;4. Y por supuesto debemos configurar los providers y el modulo antes mencionados en el Web.config&lt;br /&gt;&lt;iframe src="http://pastebin.com/embed_iframe.php?i=rAdkwmVu" style="border:none;width:100%"&gt;&lt;/iframe&gt;&lt;br /&gt;Y todo listo para probar, solo necesitamos ejecutar el proyecto si estas usando VisualStudio o instalarlo en el servidor por ejemplo IIS.&lt;br /&gt;&lt;br /&gt;Más sobre como implementar providers para asp.net &lt;a href="http://www.codeproject.com/KB/aspnet/WSSecurityProvider.aspx"&gt;aquí&lt;/a&gt; y &lt;a href="http://www.4guysfromrolla.com/articles/120705-1.aspx%20"&gt;aquí&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Hasta la próxima.&lt;br /&gt;&lt;span id="goog_1040587382"&gt;&lt;/span&gt;&lt;span id="goog_1040587383"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-8093127439395930416?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/8093127439395930416/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/11/seguridad-flexible-en-aspnet-usando.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/8093127439395930416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/8093127439395930416'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/11/seguridad-flexible-en-aspnet-usando.html' title='Seguridad flexible en asp.net usando Modulos'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-62FrCagOZHs/Tsv4ZL-TurI/AAAAAAAABOA/QJW9stochg8/s72-c/unnamed0.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-906343931643115025</id><published>2011-09-02T19:37:00.000-05:00</published><updated>2011-09-02T19:37:55.670-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='authentication'/><category scheme='http://www.blogger.com/atom/ns#' term='sesion'/><category scheme='http://www.blogger.com/atom/ns#' term='pam_usb'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='pam'/><category scheme='http://www.blogger.com/atom/ns#' term='pam_face'/><title type='text'>Como usar tu rostro para iniciar sesión en ubuntu</title><content type='html'>Aprovechando que hoy configuré pam_usb para &lt;a href="http://emont01.blogspot.com/2011/09/como-usar-la-usb-para-iniciar-sesion-en.html"&gt;iniciar sesión usando una usb&lt;/a&gt;, me decidí a documentar algo que hace rato tengo en mi laptop: el modulo pam_face_authentication por medio del cual podemos iniciar sesión usando nuestro rostro.Inspirado por un post de mi amigo &lt;a href="http://ahioros.net/index.php?option=com_content&amp;task=view&amp;id=61"&gt;ahioros (Reconocimiento Facial Arch Linux)&lt;/a&gt;, busqué y encontré como instalar dicho modulo en ubuntu, &lt;a href="http://www.pam-face-authentication.org/downloads.php"&gt;aquí dejo el tutorial oficial en el sitio del proyecto&lt;/a&gt;.&lt;b&gt;Los pasos que yo seguí son los siguientes:&lt;/b&gt;&lt;p&gt;1. En una terminal ejecutamos los siguientes comandos:&lt;pre class="brush:bash"&gt;&lt;br /&gt;sudo add-apt-repository ppa:antonio.chiurazzi&lt;br /&gt;sudo apt-get update&lt;br /&gt;sudo apt-get install pam-face-authentication&lt;br /&gt;&lt;/pre&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;2. editamos el archivo /etc/pam.d/common-auth&lt;pre class="brush:bash"&gt;&lt;br /&gt;# nano /etc/pam.d/common-auth&lt;br /&gt;&lt;/pre&gt;Y añandimos la linea &lt;i&gt;"auth    sufficient      pam_face_authentication.so enableX"&lt;/i&gt; entre la línea que define el pam_usb.so y &lt;i&gt;"auth    [success=2 default=ignore]      pam_unix.so nullok_secure"&lt;/i&gt; Para que nos quede como se muestra a continuación:&lt;pre class="brush:bash"&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;# here are the per-package modules (the "Primary" block)&lt;br /&gt;auth    sufficient      pam_usb.so&lt;br /&gt;auth    sufficient      pam_face_authentication.so enableX&lt;br /&gt;auth    [success=2 default=ignore]      pam_unix.so nullok_secure&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;Como pueden notar tengo colocado el modulo pam_usb arriba, luego pam_face_authentication y luego los que por defecto vinieron en ubuntu.De este modo primero se intenta la validación por usb, si esta es exitosa se inicia la sesión sino se intenta con el reconocimiento facial y finalmente el sistema solicita la contraseña si todo lo demás falla.&lt;/p&gt;Es todo por el momento.Hasta la proxima.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-906343931643115025?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/906343931643115025/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/09/como-usar-tu-rostro-para-iniciar-sesion.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/906343931643115025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/906343931643115025'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/09/como-usar-tu-rostro-para-iniciar-sesion.html' title='Como usar tu rostro para iniciar sesión en ubuntu'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-5391368179720466790</id><published>2011-09-02T14:11:00.003-05:00</published><updated>2012-01-07T13:09:57.900-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='authentication'/><category scheme='http://www.blogger.com/atom/ns#' term='sesion'/><category scheme='http://www.blogger.com/atom/ns#' term='pam_usb'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='pam'/><title type='text'>Como usar la usb para iniciar sesion en ubuntu</title><content type='html'>Como ya es costumbre mía estaba leyendo en internet sobre consejos de seguridad y encontré una lista de 20 consejos para mejorar la seguridad del openssh en un servidor, el consejo que más me llamó la atención fue habilitar el "two-factor authentication", que es básicamente crear una llave RSA y mover la llave privada a un usb, entonces cuando llamas al comando ssh con la opción -i para decirle cual llave privada usar.  Después de pensarlo un rato me pregunté ¿podré configurar esto del two-factor authentication en mi Ubuntu de uso personal (en este caso mi laptop)? Investigué un poco y para mi sorpresa no solo es posible sino bastante fácil, así que aquí dejo los pasos y las referencias:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Pasos a seguir:&lt;/b&gt;&lt;br /&gt;1. Instalamos los programas necesarios: &lt;br /&gt;&lt;pre class="brush:bash"&gt;sudo apt-get install pamusb-tools libpam-usb&lt;/pre&gt;&lt;pre class="brush:bash"&gt;&lt;/pre&gt;2. Conectamos una USB a la computadora3. Agregamos el USB a la configuración del &lt;a href="p://en.wikipedia.org/wiki/Linux_PAM"&gt;PAM&lt;/a&gt;:&lt;br /&gt;&lt;pre class="brush:bash"&gt;$ sudo pamusb-conf --verbose --add-device=my-usb&lt;br /&gt;Inspecting /org/freedesktop/Hal/devices/storage_serial_*******************************&lt;br /&gt; Invalid: Device does not contain any volume&lt;br /&gt;Inspecting /org/freedesktop/Hal/devices/storage_serial_SanDisk_Cruzer_Blade_*************************&lt;br /&gt; Valid&lt;br /&gt;Please select the device you wish to add.&lt;br /&gt;* Using "SanDisk Cruzer Blade (*****************************************)" (only option)&lt;br /&gt;&lt;br /&gt;Which volume would you like to use for storing data ?&lt;br /&gt;* Using "/dev/sdb1 (UUID: AAAA-9999)" (only option)&lt;br /&gt;&lt;br /&gt;Name  : my-usb&lt;br /&gt;Vendor  : SanDisk&lt;br /&gt;Model  : Cruzer Blade&lt;br /&gt;Serial  : *****************************************&lt;br /&gt;UUID  : AAAA-9999&lt;br /&gt;&lt;br /&gt;Save to /etc/pamusb.conf ?&lt;br /&gt;[Y/n] y&lt;br /&gt;Done.&lt;br /&gt;&lt;/pre&gt;&lt;pre class="brush:bash"&gt;&lt;/pre&gt;4. Agregamos el usuario que podrá usar el usb (my-usb) para ingresar.&lt;br /&gt;&lt;pre class="brush:bash"&gt;$ sudo pamusb-conf --add-user myuser --verbose&lt;br /&gt;Which device would you like to use for authentication ?&lt;br /&gt;* Using "my-usb" (only option)&lt;br /&gt;&lt;br /&gt;User  : myuser&lt;br /&gt;Device  : my-usb&lt;br /&gt;&lt;br /&gt;Save to /etc/pamusb.conf ?&lt;br /&gt;[Y/n] y&lt;br /&gt;Done.&lt;br /&gt;&lt;/pre&gt;&lt;pre class="brush:bash"&gt;&lt;/pre&gt;5. Configuramos el sistema para que permita el inicio de sesión usando el modulo pam_usb:Tenemos que editar el archivo common-auth&lt;br /&gt;&lt;pre class="brush:bash"&gt;sudo nano /etc/pam.d/common-auth &lt;br /&gt;&lt;/pre&gt;Buscamos la línea que dice &lt;i&gt;auth    required        pam_unix.so nullok_secure&lt;/i&gt;y agregamos la siguiente línea: &lt;i&gt;auth    sufficient      pam_usb.so&lt;/i&gt;.Aquí dejo un ejemplo de como quedó mi archivo /etc/pam.d/common-auth&lt;br /&gt;&lt;pre class="brush:bash"&gt;auth    sufficient      pam_usb.so&lt;br /&gt;auth    required        pam_unix.so nullok_secure&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;Nota: &lt;/b&gt;&lt;i&gt;realmente importante, por favor tener mucho cuidado al editar este archivo pues si lo dejan mal terminaran con un sistema al que no podrá ingresar, el post original recomiendan dejar una consola con permisos de administrador y el archivo abierto pues en caso de que algo salga mal puedan arreglarlo.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Probar que funciona:&lt;/b&gt;Al momento de redactar este tutorial no he verificado cerrar mi sesión e ingresar otra vez usando la usb, pero si ejecute la siguiente prueba indicada en el post original y me funcionó bien:&lt;br /&gt;&lt;pre class="brush:bash"&gt;$ su myuser&lt;br /&gt;* pam_usb v0.4.2&lt;br /&gt;* Authentication request for user "myuser" (su)&lt;br /&gt;* Device "my-usb" is connected (good).&lt;br /&gt;* Performing one time pad verification...&lt;br /&gt;* Regenerating new pads...&lt;br /&gt;* Access granted.&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Alternativa, Requerir tanto el usb como una contraseña:&lt;/b&gt;De acuerdo con el post original si deseamos que ambos, la contraseña y el usb sean requeridos para ingresar debemos modificar el archivo /ect/pam.d/common-auth para que quede de la siguiente forma:&lt;br /&gt;&lt;pre class="brush:bash"&gt;auth    required      pam_usb.so&lt;br /&gt;auth    required        pam_unix.so nullok_secure&lt;br /&gt;&lt;/pre&gt;Y al probarlo de la misma forma antes mencionada debemos ver algo como lo siguiente:&lt;br /&gt;&lt;pre class="brush:bash"&gt;$ su ubuntu-user&lt;br /&gt;* pam_usb v0.4.2&lt;br /&gt;* Authentication request for user "ubuntu-user" (su)&lt;br /&gt;* Device "my-usb" is connected (good).&lt;br /&gt;* Performing one time pad verification...&lt;br /&gt;* Access granted.&lt;br /&gt;Password:&lt;br /&gt;&lt;/pre&gt;Donde como pueden ver se valida la presencia del usb y luego se solicita la contraseña.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Alternativa,&amp;nbsp;&lt;/b&gt;&lt;b&gt;Bloquear/Desbloquear el equipo cuando se remueve/reconecta la usb:&amp;nbsp;&lt;/b&gt;Modificamos el archivo /etc/pamusb.conf, específicamente la sección user, en dicha sección debe estar ya creada y con una entrada indicando el dispositivo que el usuario requiere para ingresar, solo debemos agrergar dos entradas más de modo que quede más o menos como el siguiente ejemplo:&lt;br /&gt;&lt;pre class="brush:xml"&gt;&lt;user id="ubuntu-user"&gt; &lt;br /&gt;          &lt;device&gt; &lt;br /&gt;                  my-usb&lt;br /&gt;          &lt;/device&gt; &lt;br /&gt;          &lt;agent event="lock"&gt;gnome-screensaver-command -l&lt;/agent&gt; &lt;br /&gt;          &lt;agent event="unlock"&gt;gnome-screensaver-command -d&lt;/agent&gt; &lt;br /&gt; &lt;/user&gt;&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;Nota:&lt;/b&gt;&lt;i&gt; si no usas gnome reemplaza el comando gnome-screensaver-command por algo que si te funcione.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conclusión&lt;/b&gt;Esta forma de ingresar me trae algunas ideas sobre como se podría en una empresa o institución eliminar la necesidad de usar contraseñas o agregar una capa más de seguridad.Se imaginan llegando a su puesto de trabajo y colocando una usb en la pc y luego empezar a trabajar sin tener que hacer más nada.Hasta la próxima.Referencias:http://askubuntu.com/questions/10524/usb-drive-login-token-systemhttp://linuxconfig.org/linux-authentication-login-with-usb-device&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Actualización 3-sep-2011&lt;/b&gt;: &amp;nbsp;después&amp;nbsp;de salir y volver a ingresar pude comprobar que la validación por usb funciona bien en el inicio de sesión.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Actualización 7-ene-2012:&lt;/b&gt; tristemente el proyecto pamusb parece estar muerto, incluso ya eliminaron el paquete de Debían y&amp;nbsp; Ubuntu :(&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-5391368179720466790?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/5391368179720466790/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/09/como-usar-la-usb-para-iniciar-sesion-en.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/5391368179720466790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/5391368179720466790'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/09/como-usar-la-usb-para-iniciar-sesion-en.html' title='Como usar la usb para iniciar sesion en ubuntu'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-6185916009650696077</id><published>2011-06-02T09:08:00.001-05:00</published><updated>2011-06-02T09:09:33.845-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FUDCon 2011 Panamá'/><category scheme='http://www.blogger.com/atom/ns#' term='Fedora'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='github'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='coding-dojo'/><title type='text'>Coding dojo durante el FUDCon Panamá 2011</title><content type='html'>Mecánica de trabajo del coding dojo(Para los que no saben como funciona):&lt;br /&gt;En un coding dojo se promueve la práctica de Test Driven Development (TDD).&lt;br /&gt;Todos los participantes usan una misma computadora y toman turnos de 7 minutos para intentar resolver el problema presentado, entre tanto que otro miembro del &lt;br /&gt;equipo se sienta a su lado haciendo las veces de couch y ayudando al que se encuentra tratando de resolver el problema; Cuando el tiempo se acaba el couch &lt;br /&gt;se convierte en quien trata de resolver el problema y el siguiente que está esperando en la cola se convierte en el couch mientras que el que estaba antes programando pasa al final de la cola.&lt;br /&gt;Todo este proceso se repite hasta resolver el problema o se termine el tiempo designado para el coding dojo.&lt;br /&gt;&lt;br /&gt;La principal meta del coding dojo es que los participantes se diviertan resolviendo los problemas.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cree un repositorio en github para guardar el código creado durante el coding dojo: https://github.com/emont01/FUDCon2011-pa-coding-dojo&lt;br /&gt;&lt;br /&gt;En este coding dojo se resolvieron dos problemas&lt;br /&gt;1. Tomar un arreglo de números como parámetro, extraer los números no repetidos y ordenar los mismos. Lo resolvimos en aproximadamente 40 minutos.&lt;br /&gt;&lt;br /&gt;2. Convertir de números romanos a entero y viceversa. Este problema quedó pendiente en el coding dojo pero pueden encontrar mi solución en el repositorio github.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-6185916009650696077?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/6185916009650696077/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/06/coding-dojo-durante-el-fudcon-panama.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/6185916009650696077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/6185916009650696077'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/06/coding-dojo-durante-el-fudcon-panama.html' title='Coding dojo durante el FUDCon Panamá 2011'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-404242593099883345</id><published>2011-06-02T08:12:00.001-05:00</published><updated>2011-06-02T08:12:59.600-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='Publican'/><category scheme='http://www.blogger.com/atom/ns#' term='FUDCon 2011 Panamá'/><category scheme='http://www.blogger.com/atom/ns#' term='Fedora'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><title type='text'>Documentation usando herramientas libres</title><content type='html'>Una conferencia dictada por Jared Smith (Lider del proyecto Fedora).&lt;br /&gt;&lt;br /&gt;En esta conferencia Jared nos habló sobre como crear documentación usando &lt;a href="http://www.docbook.org/tdg5/en/html/ch00.html#pref-whyread"&gt;DocBook&lt;/a&gt;, un sistema para escribir documentos estructurados usando XML, el cual es excelente para escribir libros y artículos acerca de cualquier tema. Es un formato amplio y robusto y debido a su estructura refleja muy bien la nocion de lo que constituye un libro, DocBook ha sido adoptado por una larga y creciente comunidad de autores.&lt;br /&gt;&lt;br /&gt;Entre sus principales características y ventajas tenemos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;usa XML&lt;/li&gt;&lt;li&gt;permite una separación del contenido y la presentación&lt;/li&gt;&lt;li&gt;se puede convertir fácilmente en otros formatos como LaTex, HTML, pdf entre otros.&lt;/li&gt;&lt;li&gt;un autor solo precisa escribir su libro una vez y usando la capacidad de conversión del XML con DocBook se pueden generar prácticamente de inmediato muchos libros en distintos formatos (epub, HTML, LaTex, pdf, etc)&lt;/li&gt;&lt;li&gt;existe soporte en varios editores&lt;/li&gt;&lt;li&gt;existe la posibilidad de dividir un libro en varias partes más pequeñas usando Xincludes&lt;/li&gt;&lt;li&gt;es posible hacer algunas versiones para objetivos específicos.&lt;/li&gt;&lt;li&gt;soporta la creación de entidades que pueden ser usadas para evitar repeter ciertos textos una y otra vez.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;¿ejemplos y tags soportados?&lt;br /&gt;La documentación de DocBook es muy completa y extensa por lo que recomiendo &lt;a href="http://www.docbook.org/tdg5/en/html/part1.html"&gt;leerla y también mirar algunos ejemplos&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;¿Herramientas recomendadas?&lt;br /&gt;&lt;br /&gt;Publican es un sistema de publicación para DocBook, además de una herramienta de procesamiento. Además de validar que nuestro XML (DocBook) es válido, publica, se asegura de que cumple con los estandares de un documento "publicable"&lt;br /&gt;&lt;br /&gt;Publican permite crear documentos en formato DocBook así como convertirlos en muchos otros formatos de forma muy simple.&lt;br /&gt;&lt;br /&gt;Aunque admito que tengo que leer un poco más sobre publican, en su presentación Jared demostró que es muy simple crear documentos y convertir los a otros formatos usando esta herramienta.&lt;br /&gt;&lt;br /&gt;Saludos.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-404242593099883345?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/404242593099883345/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/06/documentation-usando-herramientas.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/404242593099883345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/404242593099883345'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/06/documentation-usando-herramientas.html' title='Documentation usando herramientas libres'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-7180013802341590295</id><published>2011-06-01T20:39:00.000-05:00</published><updated>2011-06-01T20:39:40.318-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FUDCon 2011 Panamá'/><category scheme='http://www.blogger.com/atom/ns#' term='Fedora'/><category scheme='http://www.blogger.com/atom/ns#' term='presentacion'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><title type='text'>De qué vive la gente que trabaja en software libre</title><content type='html'>Presentado por  Edwind Contreras (Venezuela)&lt;br /&gt;&lt;br /&gt;Como parte de las presentaciones dadas el primer día del FUDCon y de las que aun no había podido escribir se encuentra la dictada por richzendy titulada: "De qué vive la gente que trabaja en software libre".&lt;br /&gt;&lt;br /&gt;Para empezar richzendy nos explicó las diferentes ventajas de representa el uso de software libre en distintos entornos por ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;en las escuelas:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ahorra costos,&lt;/li&gt;&lt;li&gt;satisface la curiosidad,&lt;/li&gt;&lt;li&gt;tesis que realmente ayudan a la sociedad,&lt;/li&gt;&lt;li&gt;permite aprender haciendo,&lt;/li&gt;&lt;li&gt;permite evitar que en las universidades se "reinvente la rueda" haciendo que los estudiantes hagan una y otra ves los mismos programas, resolviendo una y otra vez los mismos problemas. Es mejor pedir a los estudiantes que mejoren software libre ya existente.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;en la sociedad:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;libertad, libertad, libertad desde siempre la sociedad ya tomado los inventos creados por un hombre, los ha mejorado y les ha dado nuevos usos y para eso necesitamos saber como funcionan&lt;/li&gt;&lt;li&gt;como mencionamos antes 'reinventar la rueda es de tontos' y en una sociedad donde se puede reutilizar los programas, entre todos podemos trabajar para hacer mejor software cada día&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Nos comentó richzendy, que El ha vivido del software libre durante 10 años, trabajando como capacitador, funcionario public y consultor, personalmente lo felicito y me parece un ejemplo a seguir.&lt;br /&gt;&lt;br /&gt;Pueden encontrar la presentación completa en el siguiente &lt;a href="http://richzendy.org/docs/DeQueViveLaGentedelSoftwareLibre/"&gt;enlace&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-7180013802341590295?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/7180013802341590295/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/06/de-que-vive-la-gente-que-trabaja-en.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/7180013802341590295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/7180013802341590295'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/06/de-que-vive-la-gente-que-trabaja-en.html' title='De qué vive la gente que trabaja en software libre'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-4085618200356237182</id><published>2011-05-27T15:20:00.000-05:00</published><updated>2011-05-27T15:20:41.080-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diseño'/><category scheme='http://www.blogger.com/atom/ns#' term='FUDCon 2011 Panamá'/><category scheme='http://www.blogger.com/atom/ns#' term='Fedora'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><title type='text'>Taller: Diseño usando herramientas libres</title><content type='html'>Dictado por María "tatica" Leandro,&lt;br /&gt;&lt;br /&gt;En este taller tatica nos explicó como ella usa principalmente Inkscape para hacer diseños para banners, afiches o wallpapers.&lt;br /&gt;&lt;br /&gt;Básicamente nos dió varios consejos para trabajar de forma más sencilla y rápida:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Usar atajos de teclado: casi todos los atajos que más se usan, nos comenta tatica, tienen la siguiente forma: Ctrl+Shift+[Letra]. En especial el atajo Ctrl+Shift+F (fill) para definir el color de relleno (fill en ingles).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Colocar archivos, como imágenes, de uso común en un sitio web accesible, de este modo los tenemos a la mano donde sea que estemos y además podemos consultar información importante tal como colores. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Al trabajar con imprentas o medios de comunicación impresos considerar lo siguiente:&lt;br /&gt;* para afiches usar entre 150 a 300 dpi y enviar a la imprenta, en alguno de estos formatos: psd, pdf o tif.&lt;br /&gt;* para banners usar entre 120 a 170 dpi y enviar a la imprenta en formato: tif o tiff.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Nota:&lt;/b&gt;Siempre es recomendable preguntar a la persona a la que enviaras el archivo cuales formatos le funcionan mejor&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Siempre hay que considerar los costos de impresión y por ejemplo para imprimir un t-shirt es buena idea usar el color del mismo para el diseño. La regla es buscar la opción más económica pero por supuesto esto depende del presupuesto de cada quien.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Cuando estamos diseñando un wallpaper se debe considerar los siguientes aspectos:&lt;br /&gt;usabilidad, accesibilidad y apreciación.&lt;br /&gt;Cabe destacar que los iconos del escritorio, al menos en los escritorios tradicionales, aparecen a la izquierda por lo que un buen wallpaper tiene sus imágenes más grandes en el centro o a la derecha.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;finalmente todas los artes que hagamos y coloquemos en el repositorio publico de Fedora, aunque no sea de inmediato, es muy probable que se use en el futuro, tal como nos contó tatica que le sucedió a ella con algunos afiches que creó hace unos años.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Muy interesante esta presentación tatica, gracias!&lt;br /&gt;&lt;br /&gt;Saludos a todos.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-4085618200356237182?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/4085618200356237182/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/05/taller-diseno-usando-herramientas.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/4085618200356237182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/4085618200356237182'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/05/taller-diseno-usando-herramientas.html' title='Taller: Diseño usando herramientas libres'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-6847580166124129443</id><published>2011-05-27T11:55:00.002-05:00</published><updated>2011-05-27T12:07:24.701-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='robotica'/><category scheme='http://www.blogger.com/atom/ns#' term='FUDCon 2011 Panamá'/><category scheme='http://www.blogger.com/atom/ns#' term='Fedora'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Icaro'/><title type='text'>Icaro: Robotica educativa.</title><content type='html'>Presentado por Valentín Basel (Argentina)&lt;br /&gt;&lt;br /&gt;Icaro es el nombre del gato de Valentín :D y es también un proyecto iniciado por El para enseñar a los niños sobre las diferentes &lt;br /&gt;disciplinas de la robótica, tales como: mecánica, electrónica, informática e inteligencia artificial.&lt;br /&gt;&lt;br /&gt;Con Icaro Valentín busca: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;usar componentes o hardware de especificaciones libres&lt;/li&gt;&lt;li&gt;usar piezas de equipos reciclados (las impresoras son buenas fuentes de partes en especial motores)&lt;/li&gt;&lt;li&gt;usar hardware lo más simple y barato posible.&lt;/li&gt;&lt;li&gt;enseñar por medio del constructivismo o enseñar haciendo.&lt;/li&gt;&lt;li&gt;desarrollar software libre.&lt;/li&gt;&lt;/ul&gt;Valentín nos comentó, durante la conferencia, que ha tenido experiencia en algunos colegios como El los denomina "urbanos-rurales" es decir: &lt;br /&gt;colegios mayormente publicos para personas de escasos recursos que de otro modo no tendría acceso a este tipo de tecnología.&lt;br /&gt;&lt;br /&gt;Para que este proyecto funcione Valentín programó un interprete que le permite a los niños, a quienes va dirigido este proyecto mayormente &lt;br /&gt;aunque sin excluir a nadie, programar sus robots casi sin conocer nada de programación.&lt;br /&gt;&lt;br /&gt;El interprete de icaro, nos cuenta su creador, está hecho en C++ y funciona con librerías estándar y muy básicas de modo que, en teoría, si&lt;br /&gt;tienes un equipo capas de correr un GNU/Linux eres capas de usar Icaro. &lt;br /&gt;&lt;br /&gt;Para más información por favor visitar el &lt;a href="http://sistema-icaro.blogspot.com"&gt;blog del proyecto.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-6847580166124129443?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/6847580166124129443/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/05/icaro-robotica-educativa.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/6847580166124129443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/6847580166124129443'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/05/icaro-robotica-educativa.html' title='Icaro: Robotica educativa.'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-3837717899174767381</id><published>2011-05-26T16:33:00.001-05:00</published><updated>2011-05-26T16:34:03.883-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FUDCon 2011 Panamá'/><category scheme='http://www.blogger.com/atom/ns#' term='Fedora'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><title type='text'>FUDCon 2011 Panamá</title><content type='html'>Un comienzo interesante tubo para mi este FUDCon, ayer pasé a buscar a &lt;a href="https://fedoraproject.org/wiki/User:Tatica"&gt;Tatica&lt;/a&gt;, &lt;a href="https://fedoraproject.org/wiki/User:Richzendy"&gt;Richzendy&lt;/a&gt; y &lt;a href="https://fedoraproject.org/wiki/User:Gomix"&gt;Gomix&lt;/a&gt; al &lt;a href="http://en.wikipedia.org/wiki/Tocumen_International_Airport"&gt;aeropuerto de Tocumén&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;El primer día de conferencias ha estado bastante interesante con temas tales como: python, seguridad de red (iptables), robotica educativa (&lt;a href="http://sistema-icaro.blogspot.com"&gt;icaro&lt;/a&gt;), virtualización usando KVM y Documentación técnica. &lt;br /&gt;&lt;br /&gt;Pronto espero poder escribir un poco más en detalles sobre esas presentaciones.&lt;br /&gt;&lt;br /&gt;Saludos.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-3837717899174767381?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/3837717899174767381/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/05/fudcon-2011-panama.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3837717899174767381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3837717899174767381'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/05/fudcon-2011-panama.html' title='FUDCon 2011 Panamá'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-3622801406258338355</id><published>2011-05-23T08:00:00.013-05:00</published><updated>2011-05-23T08:00:07.946-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='archiva'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Configuracion'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Como instalar Apache Archiva en Ubuntu</title><content type='html'>Hoy estoy configurando en mi laptop &lt;a href="http://archiva.apache.org/"&gt;Apache Archiva&lt;/a&gt; un administrador de repositorio para maven; Y bueno me pareció buena idea documentar el proceso en caso de que le sea de ayuda a alguien más o si me hace falta en el futuro.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Instalación:&lt;/b&gt;&lt;br /&gt;1.) &lt;a href="http://archiva.apache.org/download.html"&gt;descargamos archiva stand alone&lt;/a&gt;, estoy usando la versión 1.3.4&lt;br /&gt;2.) Descomprimimos el archivo recientemente descargado.&lt;br /&gt;3.) Movemos la carpeta de archiva hacia donde será instalado finalmente, en mi caso en la carpeta opt.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:bash"&gt;#1&lt;br /&gt;wget -c http://www.reverse.net/pub/apache//archiva/binaries/apache-archiva-1.3.4-bin.tar.gz&lt;br /&gt;#2&lt;br /&gt;tar xfv apache-archiva-1.3.4-bin.tar.gz&lt;br /&gt;#3&lt;br /&gt;sudo mv apache-archiva-1.3.4 /opt/&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Comprobamos que todo ha salido bien ejecutando en el siguiente comando:&lt;br /&gt;&lt;pre class="brush:bash"&gt;/opt/apache-archiva-1.3.4/bin/archiva console&lt;/pre&gt;Abrimos el navegador web e ingresamos la dirección http://localhost:8080/archiva y deberíamos ver una pagina de configuración de la cuenta del administrador, si desean pueden rellenar los datos sino lo pueden hacer luego.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Nota: &lt;/b&gt;Antes de continuar con la configuración debemos terminar el proceso presionando Ctrl+C en la consola donde lanzamos archiva.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Configuración&lt;/b&gt;&lt;br /&gt;Ahora que ya esta instalado y funcionando lo siguiente es configurarlo.&lt;br /&gt;Para una mejor administración y actualización vamos a separar los datos y las configuraciones de la instalación de archiva:&lt;br /&gt;1.) creamos las carpetas necesarias.&lt;br /&gt;2.) copiamos los datos de la instalación actual de archiva a la carpeta de configuración.&lt;br /&gt;&lt;pre class="brush:bash"&gt;#1&lt;br /&gt;sudo mkdir -p /var/archiva/data&lt;br /&gt;sudo mkdir -p /var/archiva/conf&lt;br /&gt;sudo mkdir -p /var/archiva/logs&lt;br /&gt;&lt;br /&gt;#2&lt;br /&gt;cd /opt/apache-archiva-1.3.4/&lt;br /&gt;cp -v conf/* /var/archiva/conf/&lt;br /&gt;cp -vr data/* /var/archiva/data/&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Configurar Archiva como un demonio (daemon)&lt;/b&gt;&lt;br /&gt;1.) creamos un &lt;b&gt;"start/stop"&lt;/b&gt; script en /etc/init.d/&lt;br /&gt;2.) modificamos el nuevo script para que lance archiva&lt;br /&gt;&lt;pre class="brush:bash"&gt;#1&lt;br /&gt;sudo touch /etc/init.d/archiva&lt;br /&gt;sudo chmod +x /etc/init.d/archiva&lt;br /&gt;#2&lt;br /&gt;sudo nano /etc/init.d/archiva&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://pastebin.com/SjDsGDJd"&gt;Aquí&lt;/a&gt; les dejo mi script /etc/init.d/archiva como ejemplo.&lt;br /&gt;&lt;script src="http://pastebin.com/embed_js.php?i=SjDsGDJd"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Nota:&lt;/b&gt; la variable de entorno ARCHIVA_BASE es necesaria para que archiva sepa de donde debe cargar los datos y las configuraciones&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Básicamente lo que hice fue:&lt;br /&gt;Definir o exportar la variable de entorno ARCHIVA_BASE igual a "/var/archiva".&lt;br /&gt;Pasar el primer parámetro al script en incluido en archiva con el que se puede lanzar el servidor muy fácilmente.&lt;br /&gt;&lt;br /&gt;Con esto podemos ejecutar los siguientes comando para lanzar o detener archiva.&lt;br /&gt;&lt;pre class="brush:bash"&gt;sudo /etc/init.d/archiva start&lt;br /&gt;sudo /etc/init.d/archiva stop&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Si deseamos que archiva se lance automáticamente al iniciar el sistema podemos ejecutar el siguiente comando:&lt;br /&gt;&lt;pre class="brush:bash"&gt;sudo update-rc.d archiva defaults&lt;br /&gt;&lt;/pre&gt;&lt;a href="http://embraceubuntu.com/2005/09/07/adding-a-startup-script-to-be-run-at-bootup/"&gt;Aquí&lt;/a&gt; pueden encontrar más información sobre el comando update-rc.d&lt;br /&gt;&lt;br /&gt;Algunos enlaces interesantes:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;* Apache Archiva:&lt;/b&gt; http://archiva.apache.org/&lt;br /&gt;&lt;b&gt;* Archiva, guía de administradores:&lt;/b&gt; http://archiva.apache.org/docs/1.3.4/adminguide/index.html&lt;br /&gt;&lt;b&gt;* Archiva 1.3.4 quick start:&lt;/b&gt; http://archiva.apache.org/docs/1.3.4/quick-start.html&lt;br /&gt;&lt;br /&gt;Saludos y será hasta la próxima.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-3622801406258338355?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/3622801406258338355/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/05/como-instalar-apache-archiva-en-ubuntu.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3622801406258338355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3622801406258338355'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/05/como-instalar-apache-archiva-en-ubuntu.html' title='Como instalar Apache Archiva en Ubuntu'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-2394997860393546436</id><published>2011-05-22T21:13:00.001-05:00</published><updated>2011-05-22T21:16:23.290-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='jetty'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><category scheme='http://www.blogger.com/atom/ns#' term='Configuracion'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Maven por consola de comandos en Ubuntu</title><content type='html'>El otro día le explicaba a un amigo como usar maven y por cosas de la universidad donde estudia, me dijo que debía crear su proyecto sin la ayuda de ningún IDE; Por eso decidí hacer este tutorial para explicar la forma de crear aplicaciones en java usando maven desde la consola de comandos.&lt;br /&gt;&lt;br /&gt;Primero lo primero, hay que tener maven instalado, sino lo está ya la forma más simple es usando el siguiente comando:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:bash"&gt;sudo aptitude install maven2&lt;/pre&gt;Verificamos que este todo bien&lt;br /&gt;&lt;pre class="brush:bash"&gt;mvn --version&lt;/pre&gt;&lt;br /&gt;Ahora que ya esta instalado maven, creamos nuestro proyecto, para este ejemplo crearé una aplicación Web usando el siguiente comando.&lt;br /&gt;&lt;pre class="brush:bash"&gt;mvn archetype:generate -DgroupId=net.ejemplos -DartifactId=ejemplo -DarchetypeArtifactId=maven-archetype-webapp -Dversion=1.0-SNAPSHOT -DinteractiveMode=false&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Deberiamos ver una salida similar a la siguiente en la consola:&lt;br /&gt;&lt;pre class="brush:bash"&gt;[INFO] Scanning for projects...&lt;br /&gt;[INFO] Searching repository for plugin with prefix: 'archetype'.&lt;br /&gt;[INFO] ------------------------------------------------------------------------&lt;br /&gt;[INFO] Building Maven Default Project&lt;br /&gt;[INFO]    task-segment: [archetype:generate] (aggregator-style)&lt;br /&gt;[INFO] ------------------------------------------------------------------------&lt;br /&gt;[INFO] Preparing archetype:generate&lt;br /&gt;[INFO] No goals needed for project - skipping&lt;br /&gt;[INFO] [archetype:generate {execution: default-cli}]&lt;br /&gt;[INFO] Generating project in Batch mode&lt;br /&gt;[INFO] ----------------------------------------------------------------------------&lt;br /&gt;[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-webapp:1.0&lt;br /&gt;[INFO] ----------------------------------------------------------------------------&lt;br /&gt;[INFO] Parameter: groupId, Value: net.ejemplos&lt;br /&gt;[INFO] Parameter: packageName, Value: net.ejemplos&lt;br /&gt;[INFO] Parameter: package, Value: net.ejemplos&lt;br /&gt;[INFO] Parameter: artifactId, Value: ejemplo&lt;br /&gt;[INFO] Parameter: basedir, Value: /home/[usuario]/Desarrollo&lt;br /&gt;[INFO] Parameter: version, Value: 1.0-SNAPSHOT&lt;br /&gt;[INFO] ********************* End of debug info from resources from generated POM ***********************&lt;br /&gt;[INFO] project created from Old (1.x) Archetype in dir: /home/[usuario]/Desarrollo/ejemplo&lt;br /&gt;[INFO] ------------------------------------------------------------------------&lt;br /&gt;[INFO] BUILD SUCCESSFUL&lt;br /&gt;[INFO] ------------------------------------------------------------------------&lt;br /&gt;[INFO] Total time: 11 seconds&lt;br /&gt;[INFO] Finished at: Sun May 01 19:44:31 EST 2011&lt;br /&gt;[INFO] Final Memory: 11M/27M&lt;br /&gt;[INFO] ------------------------------------------------------------------------&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Luego creamos la carpeta donde ira nuestro código fuente y una primera clase simple:&lt;br /&gt;&lt;pre class="brush:bash"&gt;cd ejemeplo1&lt;br /&gt;mkdir -p src/main/java/net/ejemplos/&lt;br /&gt;touch src/main/java/net/ejemplos/DateTime.java&lt;br /&gt;gedit src/main/java/net/ejemplos/DateTime.java&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Dentro de la clase ponemos un código simple como por ejemplo el siguiente:&lt;br /&gt;&lt;pre class="brush:java"&gt;package net.ejemplos;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; *&lt;br /&gt; * @author eivar&lt;br /&gt; */&lt;br /&gt;public class DateTime {&lt;br /&gt;  public long getCurrentDate(){&lt;br /&gt;    return System.currentTimeMillis();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;i&gt;Nota: por favor reemplacen el autor con su nombre o eliminen el comentario :P&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Ahora podemos compilar o empaquetar el proyecto o cualquiera de las otras &lt;a href="http://maven.apache.org/guides/getting-started/index.html"&gt;opciones que nos ofrece maven&lt;/a&gt;, por ejemeplo para compilar:&lt;br /&gt;&lt;pre class="brush:bash"&gt;mvn compile&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ahora para probar nuestra clase modificamos el archivo index.jsp que debió haber sido creado automáticamente por maven:&lt;br /&gt;&lt;script src="http://pastebin.com/embed_js.php?i=ShiMpARs"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;Ya que estamos trabajando con una aplicación web yo recomiendo usar jetty sobre todo porque se integra muy bien con maven mediante un plugin, a continuación dejo un ejemplo de mi pom.xml donde tengo configurado jetty:&lt;br /&gt;&lt;script src="http://pastebin.com/embed_js.php?i=AcVLTBnc"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;Ahora que tenemos integrado jetty y maven podemos usar el comando siguiente para compilar, empaquetar y ejecutar la aplicación desde la consola de comandos:&lt;br /&gt;&lt;pre class="brush:bash"&gt;#Presionamos ctrl+C para terminar la ejecution de jetty.&lt;br /&gt;mvn compile package jetty:run&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Recomiendo leer la &lt;a href="http://maven.apache.org/guides/getting-started/index.html"&gt;documentación de maven aquí&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Saludos.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-2394997860393546436?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/2394997860393546436/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/05/maven-por-consola-de-comandos-en-ubuntu.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/2394997860393546436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/2394997860393546436'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/05/maven-por-consola-de-comandos-en-ubuntu.html' title='Maven por consola de comandos en Ubuntu'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-749613777102369088</id><published>2011-04-19T14:19:00.001-05:00</published><updated>2011-04-19T14:27:54.423-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='Evolution'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='Configuracion'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Como sincronizar evolution con google</title><content type='html'>Siguiendo un poco con el tema de &lt;a href="http://emont01.blogspot.com/2011/01/como-sincronizar-gmail-con-un.html"&gt;conectar mis equipos&lt;/a&gt; a mi cuenta en google y sincronizar varios de los servicios de este último (por ejemplo gmail y google calendar), ahora escribo este post sobre como sincronizar evolution y google.&lt;br /&gt;&lt;br /&gt;Como referencia pueden leer &lt;a href="http://www.ubuntugeek.com/use-ubuntus-evolution-mail-to-manage-gmail.html"&gt;aquí&lt;/a&gt; y &lt;a href="http://www.ehow.com/how_4488736_sync-evolution-calendar-google-calendar.html"&gt;aquí&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Estoy usando para esta configuración Ubuntu 10.10 con Gnome 2.32.0&lt;br /&gt;&lt;br /&gt;Pues bien manos a la obra:&lt;br /&gt;&lt;b&gt;1. &lt;/b&gt;Suponiendo que es la primera vez que usamos Evolution, Vamos al menú &lt;b&gt;Applicaciones-&amp;gt;Oficina-&amp;gt;Correo y calendario de Evolution&lt;/b&gt; automaticamente se iniciará el asistente de configuración de evolution, para que podamos agregar una nueva cuenta.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&amp;nbsp;&lt;a href="http://2.bp.blogspot.com/-_t51Or8WGgc/Ta3NYZ7CwnI/AAAAAAAABCY/l9bHavGoDig/s1600/config-evolution.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="185" src="http://2.bp.blogspot.com/-_t51Or8WGgc/Ta3NYZ7CwnI/AAAAAAAABCY/l9bHavGoDig/s200/config-evolution.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;2.&lt;/b&gt; El siguiente paso es rellenar los datos de la identidad de la cuenta: nombre, dirección de correo electrónico, etc. Por ejemplo la siguiente captura de pantalla:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-LAHwxv0INC8/Ta3NZDuqDkI/AAAAAAAABCc/Snv-NqLED14/s1600/identity-evolution.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="186" src="http://1.bp.blogspot.com/-LAHwxv0INC8/Ta3NZDuqDkI/AAAAAAAABCc/Snv-NqLED14/s200/identity-evolution.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;3. &lt;/b&gt;A continuación definimos los parámetros del servidor para la recepción de correo, el asistente detectó que estoy ingresando una cuenta de gmail y autocompletó los dos primeros campos, solo definí la encriptación como SSL y&amp;nbsp; "contraseña" como metodo de autenticación, queda en cada uno si desea que evolution recuerde su contraseña:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Zx-SpkwlVeo/Ta3NZTfGQpI/AAAAAAAABCg/NqKodU7ySAg/s1600/input-mail.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="185" src="http://3.bp.blogspot.com/-Zx-SpkwlVeo/Ta3NZTfGQpI/AAAAAAAABCg/NqKodU7ySAg/s200/input-mail.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;4. &lt;/b&gt;Algunas opciones interesantes para activar o no según el criterio de cada uno se presentan en el siguiente paso, les dejo una captura de pantalla de mi configuración:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-oqF5yddTVRQ/Ta3NZ_jGx8I/AAAAAAAABCk/IPCEjnemsfQ/s1600/input-options.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="186" src="http://3.bp.blogspot.com/-oqF5yddTVRQ/Ta3NZ_jGx8I/AAAAAAAABCk/IPCEjnemsfQ/s200/input-options.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;5. &lt;/b&gt;De la misma forma que en el paso 3, en los parámetros de envío de correo solo tuve que elegir TLS como encriptación e "iniciar sesión" (login) como authenticación:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-FSwEm5mkDpY/Ta3ZmLT0v3I/AAAAAAAABDA/KeRwHQtEVr8/s1600/output-mail.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="186" src="http://4.bp.blogspot.com/-FSwEm5mkDpY/Ta3ZmLT0v3I/AAAAAAAABDA/KeRwHQtEVr8/s200/output-mail.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;6.&lt;/b&gt; Finalmente le damos un nombre a la cuenta, por ejemplo "Personal"&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-q1GNwXTIcHo/Ta3NX4La06I/AAAAAAAABCU/6HLI227hM4c/s1600/account-name.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="185" src="http://3.bp.blogspot.com/-q1GNwXTIcHo/Ta3NX4La06I/AAAAAAAABCU/6HLI227hM4c/s200/account-name.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;Y listo, ya deberíamos ver los correos que llegan al gmail desde Evolution.&lt;br /&gt;&lt;br /&gt;En el próximo post hablaré sobre como sincronizar el Calendario y los Contactos de Evolution.&lt;br /&gt;&lt;br /&gt;Saludos.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-749613777102369088?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/749613777102369088/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/04/como-sincronizar-evolution-con-google.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/749613777102369088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/749613777102369088'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/04/como-sincronizar-evolution-con-google.html' title='Como sincronizar evolution con google'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-_t51Or8WGgc/Ta3NYZ7CwnI/AAAAAAAABCY/l9bHavGoDig/s72-c/config-evolution.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-4574426460159881745</id><published>2011-04-15T16:32:00.000-05:00</published><updated>2011-04-15T16:32:47.514-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='laptop'/><category scheme='http://www.blogger.com/atom/ns#' term='maverick'/><category scheme='http://www.blogger.com/atom/ns#' term='acer5534'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='numpad'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Problema con el teclado numerico Acer 5534</title><content type='html'>Este es un pequeño problema que he tenido un par de veces en mi latop, una Acer 5534-1430 que tiene un teclado numérico (numpad) completo, algo poco común de acuerdo a mi experiencia.&lt;br /&gt;&lt;br /&gt;Cabe aclarar que estoy usando &lt;b&gt;Ubuntu 10.10&lt;/b&gt; y &lt;b&gt;Gnome 2.32.0 &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;El problema&lt;/b&gt;&lt;br /&gt;Básicamente el teclado deja de funcionar y no importa que presiones muchas veces la tecla "Blog Num" para activarlo, no responde. Lo que pasa es que por alguna razón que el sistema usa este teclado para controlar el puntero del mouse y pues cuando presionas alguna tecla se traduce en un pequeño movimiento del puntero.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;La solución&lt;/b&gt;&lt;br /&gt;Aunque es un poco viejo, este &lt;a href="http://ubuntuforums.org/showpost.php?p=4961655&amp;postcount=4"&gt;enlace&lt;/a&gt; contiene la respuesta, lo que debemos hacer es:&lt;br /&gt;1) Ir a la preferencias del teclado en el menú Sistema-&gt;Preferencias-&gt;Teclado &lt;br /&gt;2) Seleccionamos el tab "Teclas del Ratón"&lt;br /&gt;3) Y desmarcamos la opción "Permitir controlar el puntero usando el teclado numérico".&lt;br /&gt;&lt;br /&gt;Listo!&lt;br /&gt;Con lo anterior su teclado numérico debería funcionar bien.&lt;br /&gt;&lt;br /&gt;Saludos.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-4574426460159881745?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/4574426460159881745/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/04/problema-con-el-teclado-numerico-acer.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/4574426460159881745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/4574426460159881745'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/04/problema-con-el-teclado-numerico-acer.html' title='Problema con el teclado numerico Acer 5534'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-7419625960260034344</id><published>2011-04-08T13:13:00.000-05:00</published><updated>2011-04-08T13:13:01.243-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='command'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Como obtener especificaciones del computador por consola</title><content type='html'>Esto empezó con una simple duda ¿cómo obtengo las especificaciones técnicas de mi pc?&lt;br /&gt;Tengo mala memoria así que no recuerdo en detalle si tengo pci express, ¿cuáles son los detalles de mi tarjeta gráfica? etc.&lt;br /&gt;&lt;br /&gt;Buscando un poco en internet encontré un &lt;a href="http://embraceubuntu.com/2007/02/18/find-hardware-specs-details-on-your-computer/"&gt;post&lt;/a&gt;, en el que explican como usar el comando lshw.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;para obtener todos los detalles técnicos:&lt;/i&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;sudo lshw&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;i&gt;podemos usar la opción -C para filtrar el resultado, por ejemplo para listar solo los discos duros:&lt;/i&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;sudo lshw -C disk &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;i&gt;algo que me parece muy interesante es la opción -html para exportar el resultado en formato html:&lt;/i&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;sudo lshw -html &gt; your-file-name.html&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-7419625960260034344?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/7419625960260034344/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/04/como-obtener-especificaciones-del.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/7419625960260034344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/7419625960260034344'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/04/como-obtener-especificaciones-del.html' title='Como obtener especificaciones del computador por consola'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-3204571746651759284</id><published>2011-03-27T18:19:00.000-05:00</published><updated>2011-03-27T18:19:26.333-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='nautilus'/><title type='text'>Nautilus Elementary en Ubuntu.</title><content type='html'>Por recomendación de mi amigo Di3go me decidía a probar esta versión "parcheada" de nautilus en mi Ubuntu y aunque me falta mucho por aprender realmente me parece GENIAL por que se los recomiendo.&lt;br /&gt;&lt;br /&gt;Pueden encontrar más información acerca de nautilus-elementary aquí.&lt;br /&gt;&lt;br /&gt;A continuación los pasos para instalarlo en un bash script que pueden copiar y pegar en una terminal:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;#&lt;br /&gt;#1. agregamos el repositorio ppa.&lt;br /&gt;sudo add-apt-repository ppa:am-monkeyd/nautilus-elementary-ppa&lt;br /&gt;&lt;br /&gt;#2. actualizamos&lt;br /&gt;sudo apt-get update &amp;&amp; sudo apt-get dist-upgrade&lt;br /&gt;&lt;br /&gt;#3. reiniciamos nautilus&lt;br /&gt;nautilus -q&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Adicionalmente pueden agregar "gloobus preview" el cual hace una perfecta combinación con nautilus-elementary (tomado de este &lt;a href="http://www.techdrivein.com/2010/08/gloobus-preview-nautilus-elementary.html"&gt;post&lt;/a&gt;): &lt;br /&gt;&lt;pre class="brush:bash"&gt;#&lt;br /&gt;#1. agregamos el repositorio ppa.&lt;br /&gt;sudo add-apt-repository ppa:gloobus-dev/gloobus-preview&lt;br /&gt;&lt;br /&gt;#2. actualizamos en instalamos gloobus preview&lt;br /&gt;sudo apt-get update &amp;&amp; sudo apt-get install gloobus-preview&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;El post original, en ingles, en el cual me basé lo pueden encontrar &lt;a href="http://www.webupd8.org/2010/01/nautilus-elementary-simplified-nautilus.html"&gt;aquí&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Gracias a &lt;a href="http://ammonkey.posterous.com/"&gt;ammonkey&lt;/a&gt; por su trabajo :D &lt;br /&gt;&lt;br /&gt;Saludos y mucha suerte! :D&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-3204571746651759284?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/3204571746651759284/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/03/nautilus-elementary-en-ubuntu.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3204571746651759284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3204571746651759284'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/03/nautilus-elementary-en-ubuntu.html' title='Nautilus Elementary en Ubuntu.'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-7378199105904129575</id><published>2011-02-09T12:35:00.001-05:00</published><updated>2011-02-09T12:37:14.843-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='favoritos'/><category scheme='http://www.blogger.com/atom/ns#' term='documental'/><category scheme='http://www.blogger.com/atom/ns#' term='crisis crediticia'/><category scheme='http://www.blogger.com/atom/ns#' term='youtube'/><title type='text'>La Crisis Crediticia Visualizada</title><content type='html'>Es probable que ya sepan muy buen todo lo relacionado con la crisis crediticia que nos afectó a nivel mundial no hace mucho tiempo... ¿o no?&lt;br /&gt;&lt;br /&gt;Bueno espero que estos dos vídeos que les dejo a continuación les ayuden a entender, tal como me ayudaron a mi, porque es que se dio esta crisis...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;La Crisis Crediticia Visualizada - Parte 1&lt;/i&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/YAKG8jmx6C0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;La Crisis Crediticia Visualizada - Parte 2 &lt;/i&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/hBiiZQNmbc4" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Mi conclusión esto pasó porque el ser humano es demasiado avaricioso :S :(&lt;br /&gt;&lt;br /&gt;Hasta la próxima.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-7378199105904129575?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/7378199105904129575/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/02/la-crisis-crediticia-visualizada.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/7378199105904129575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/7378199105904129575'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/02/la-crisis-crediticia-visualizada.html' title='La Crisis Crediticia Visualizada'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/YAKG8jmx6C0/default.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-1163319496277366997</id><published>2011-02-02T12:59:00.002-05:00</published><updated>2011-02-09T12:34:04.618-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='regex'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><title type='text'>El poder de las expresiones regulares!</title><content type='html'>En el trabajo se presentó una excelente oportunidad de comprobar el poder de las expresiones regulares o &lt;a href="http://en.wikipedia.org/wiki/Regular_expression"&gt;RegEx&lt;/a&gt; cuando un compañero estaba buscando una forma de formatear números en javascript. Básicamente lo que se quería era poder separar con una coma "," los miles, por poner un ejemplo:&lt;br /&gt;Dado el siguiente número:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;ejemplo 1 - número a formatear&lt;/i&gt;&lt;br /&gt;&lt;pre class="brush: js"&gt;1000000.00&lt;/pre&gt;transformarlo en la siguiente cadena:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;ejemplo 1 - número formateado&lt;/i&gt;&lt;br /&gt;&lt;pre class="brush: js"&gt;"1,000,000.00"&lt;/pre&gt;&lt;br /&gt;Encontramos las siguiente &lt;a href="http://stackoverflow.com/questions/2901102/how-to-print-number-with-commas-as-thousands-separators-in-javascript"&gt;solución en StackOverflow&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;ejemplo 2 - solución usando regex en javascript&lt;/i&gt;&lt;br /&gt;&lt;pre class="brush: js"&gt;//fomat number using string.replace and regex&lt;br /&gt;function numberWithCommas(x) {&lt;br /&gt;    return x.toString().replace(/\B(?=(?:\d{3})+(?!\d))/g, ",");&lt;br /&gt;} &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Esta sencilla y elegante solución me desconcertó e intrigó ¡no se me habría ocurrido! por lo que decidí investigar como funciona y aquí les dejo mi análisis y un port de ésto código a Java.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;El análisis.&lt;/b&gt;&lt;br /&gt;Primero veamos la definición de la función &lt;i&gt;replace&lt;/i&gt;; pueden consultar &lt;a href="http://www.javascriptkit.com/javatutors/redev3.shtml"&gt;otras funciones útiles que aceptan una regex como parámetro en javascript&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;ejemplo 3 - definición de la función String.replace&lt;/i&gt;&lt;br /&gt;&lt;pre class="brush: js"&gt;/**&lt;br /&gt;* Replaces matches with the given string, &lt;br /&gt;* and returns the edited string.&lt;br /&gt;*/&lt;br /&gt;String.replace(pattern, string)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Veamos el significado de la regex usada, como solía decir Fredcpp "vamos por partes":&lt;br /&gt;&lt;style type="text/css"&gt;table.mytable{    border-width: 1px;    border-spacing: 1px;    border-style: groove;    border-color: black;    border-collapse: collapse;    background-color: white;}table.mytable th {    border-width: thin;    padding: 2px;    border-style: groove;    border-color: gray;    background-color: white;}table.mytable td {    border-width: thin;    padding: 2px;    border-style: groove;    border-color: gray;    background-color: white;    min-width:150px;    text-align: left;}&lt;/style&gt;&lt;br /&gt;&lt;table class="mytable"&gt;&lt;tr&gt;&lt;th&gt;expresión&lt;/th&gt;&lt;th&gt;significado&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;/&lt;/td&gt;&lt;td&gt;marca el inicio y el fin de la expresión regular en javascript&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;()&lt;/td&gt;&lt;td&gt;los paréntesis marcan el inicio y el fin de una supexpresión.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\B&lt;/td&gt;&lt;td&gt;"non-word boundary" selecciona una palabra es decir un conjunto de caracteres rodeado por espacios en blanco.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;(?=patrón), (?!patrón)&lt;/td&gt;&lt;td&gt;"lookahead" prosigue solo si la expresión precedente es seguida por el &lt;b&gt;patrón&lt;/b&gt; indicado&lt;br /&gt;&lt;br /&gt;(?=patrón) captura solo si existe un patrón a continuación.&lt;br /&gt;(?!patrón) captura solo si no existe un patrón a continuación.&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;(?:patrón)&lt;/td&gt;&lt;td&gt;busca el &lt;b&gt;patrón&lt;/b&gt; completo pero no lo captura.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\d{3}&lt;/td&gt;&lt;td&gt;captura un patrón de 3 números seguidos, por ejemplo: 681&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;patrón+&lt;/td&gt;&lt;td&gt;indica que el patrón se puede repetir una o muchas veces.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;(?:\d{3})+&lt;/td&gt;&lt;td&gt;captura un o varios grupos de 3 digitos&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;(?!\d)&lt;/td&gt;&lt;td&gt;captura si el siguiente elemento NO es un número&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;&lt;br /&gt;Basándome en la tabla anterior, la expresión &lt;b&gt;\B(?=(?:\d{3})+(?!\d))&lt;/b&gt; captura todos los caracteres delante de uno o varios grupos de tres dígitos que no vienen seguidos de un número [1].&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;b&gt;La solución&lt;/b&gt;&lt;br /&gt;Antes de procesar el número debemos convertirlo en una cadena ("1000000.00"). &lt;br /&gt;Entonces se usa la expresión para romper el número en un arreglo que consta de los siguientes elementos: ["1", "000", "000.00"]. Luego es solo cuestión de unir las partes usando una coma y obtenemos: "1,000,000.00" (asumo que esto último es lo que hace internamente &lt;i&gt;replace&lt;/i&gt;)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Potando el código a Java&lt;/b&gt;}&lt;br /&gt;Java soporta las mismas expresiones usadas en javascript por lo que esta función se puede escribir en java con algunos pequeños ajustes, quedando de la siguiente forma:&lt;br /&gt;&lt;pre class="brush: java"&gt;//fomat number using String.replaceAll and regex&lt;br /&gt;public String numberWithCommas(Number number) {&lt;br /&gt;    return number.toString().replaceAll("\\B(?=(?:\\d{3})+(?!\\d))", ",");&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Hasta la próxima&lt;br /&gt;&lt;i&gt; &lt;b&gt;Notas:&lt;/b&gt;&lt;br /&gt;1. Si alguien tiene una mejor interpretación por favor compartirla. &lt;br /&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-1163319496277366997?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/1163319496277366997/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/02/el-poder-de-las-expresiones-regulares.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/1163319496277366997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/1163319496277366997'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/02/el-poder-de-las-expresiones-regulares.html' title='El poder de las expresiones regulares!'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-591086637464103678</id><published>2011-02-01T08:00:00.051-05:00</published><updated>2011-02-01T11:00:57.586-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='framework'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><title type='text'>Anotaciones en XStream</title><content type='html'>&lt;span style="font-size: x-normal;"&gt;&lt;br /&gt;En un &lt;a href="http://emont01.blogspot.com/2011/01/como-usar-xstream-en-java.html"&gt;post anterior&lt;/a&gt; hablé sobre XStream. En este veremos como se pueden usar anotaciones en dicha librería.&lt;br /&gt;&lt;br /&gt;XStream soporta anotaciones que hacen las cosas un poco más simples, pueden encontrar más información &lt;a href="http://xstream.codehaus.org/annotations-tutorial.html"&gt;aquí&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Vamos a serguir trabajando con los POJOs del &lt;a href="http://emont01.blogspot.com/2011/01/como-usar-xstream-en-java.html"&gt;post anterior&lt;/a&gt; Person y PhoneNumber, pero ahora supongamos que el xml que debemos escribir tiene ciertas reglas, a saber:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;las etiquetas del xml para clase Person, cuando el nombre es una combinación de varias palabras, deben llevar separadas las palabras el caracter "_" sin las comillas.&lt;/li&gt;&lt;li&gt;cuando un campo de tipo PhoneNumber sea serializado deberá llevar el atributo type con el valor "phone_number"&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Vamos a usar la anotación &lt;a href="http://xstream.codehaus.org/javadoc/com/thoughtworks/xstream/annotations/XStreamAlias.html"&gt;XStreamAlias&lt;/a&gt; que se puede aplicar tanto a clases como a campos dentro de una clase y elimina la necesidad de crear los alias individualmente para cada clase y cada campo dentro de ellas.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;ejemplo 1 - pojos usando anotaciones &lt;/i&gt;&lt;br /&gt;&lt;pre class="brush: java; html-script: false; auto-links:false"&gt;public class PhoneNumber {&lt;br /&gt;  private int code;&lt;br /&gt;  private String number;&lt;br /&gt;  // ... constructores y métodos&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@XStreamAlias("person")&lt;br /&gt;public class Person {&lt;br /&gt;  @XStreamAlias("first_name") private String firstname;&lt;br /&gt;  @XStreamAlias("last_name") private String lastname;&lt;br /&gt;  private PhoneNumber phone;&lt;br /&gt;  private PhoneNumber fax;&lt;br /&gt;  // ... constructores y métodos&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Por alguna razón que aun no termino de entender XStream reemplaza todos los "_" por "__" por lo cual debemos crear un nuevo &lt;a href="http://xstream.codehaus.org/javadoc/com/thoughtworks/xstream/io/xml/XmlFriendlyReplacer.html"&gt;XmlFriendlyReplacer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;ejemplo 2 - creando un nuevo XmlFriendlyReplacer&lt;/i&gt;&lt;br /&gt;&lt;pre class="brush: java; html-script: false; auto-links:false"&gt;new XmlFriendlyReplacer("__", "_")&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;La mejor forma que encontré para agregar el atributo type de acuerdo a las reglas dadas es crear una implementación de &lt;a href="http://xstream.codehaus.org/javadoc/com/thoughtworks/xstream/io/xml/XppDriver.html"&gt;XppDriver&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;IMPORTANTE: debemos usar XStream con la librería &lt;a href="http://www.extreme.indiana.edu/xgws/xsoap/xpp/mxp1/index.html"&gt;XPP3&lt;/a&gt;.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt; ejemplo 3 - creando una implementación de XppDriver &lt;/i&gt;&lt;br /&gt;&lt;pre class="brush: java; html-script: false; auto-links:false"&gt;new XppDriver(new XmlFriendlyReplacer("__", "_"))&lt;br /&gt;{&lt;br /&gt;  @Override&lt;br /&gt;  public HierarchicalStreamWriter createWriter(Writer out) &lt;br /&gt;  {&lt;br /&gt;    return new PrettyPrintWriter(out, this.xmlFriendlyReplacer())&lt;br /&gt;    {&lt;br /&gt;      &lt;br /&gt;      @Override&lt;br /&gt;      public void startNode(String name, Class type) &lt;br /&gt;      {&lt;br /&gt;        super.startNode(name, type);&lt;br /&gt;        if (PhoneNumber.class.isAssignableFrom(type)) {&lt;br /&gt;          addAttribute("type", "phone_number");&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;    };&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ahora ponemos todo junto y obtenemos lo siguiente.&lt;br /&gt;&lt;br /&gt;&lt;i&gt; ejemplo 4 - usando XStream con anotaciones y un nuevo XppDriver&lt;/i&gt;&lt;br /&gt;&lt;pre class="brush: java; html-script: false; auto-links:false"&gt;XStream xstream = new XStream(new XppDriver(new XmlFriendlyReplacer("__", "_"))&lt;br /&gt;{&lt;br /&gt;  @Override&lt;br /&gt;  public HierarchicalStreamWriter createWriter(Writer out) &lt;br /&gt;  {&lt;br /&gt;    return new PrettyPrintWriter(out, this.xmlFriendlyReplacer())&lt;br /&gt;    {&lt;br /&gt;      &lt;br /&gt;      @Override&lt;br /&gt;      public void startNode(String name, Class type) &lt;br /&gt;      {&lt;br /&gt;        super.startNode(name, type);&lt;br /&gt;        if (PhoneNumber.class.isAssignableFrom(type)) {&lt;br /&gt;          addAttribute("type", "phone_number");&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;    };&lt;br /&gt;  }&lt;br /&gt;});&lt;br /&gt;xstream.processAnnotations(new Class[]{Person.class});//[1] procesa todas las anotaciones&lt;br /&gt;xstream.autodetectAnnotations(true);//[2] habilita autodeteción de clases anotadas.&lt;br /&gt;&lt;br /&gt;Person joe = new Person("Joe", "Walnes");&lt;br /&gt;joe.setPhone(new PhoneNumber(123, "1234-456"));&lt;br /&gt;joe.setFax(new PhoneNumber(123, "9999-999"));&lt;br /&gt;String xml = xstream.toXML(joe);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Si revisamos el contenido de la variable xml veremos que se ha generado un xml con las condiciones indicadas al inicio de este post.&lt;br /&gt;&lt;br /&gt;&lt;i&gt; ejemplo 5 - contenido de la variable xml &lt;/i&gt;&lt;br /&gt;&lt;pre class="brush: xml; html-script:"&gt;&lt;person&gt;&lt;br /&gt;  &lt;first_name&gt;Joe&lt;/first_name&gt;&lt;br /&gt;  &lt;last_name&gt;Walnes&lt;/last_name&gt;&lt;br /&gt;  &lt;phone type="phone_number"&gt;&lt;br /&gt;    &lt;code&gt;123&lt;/code&gt;&lt;br /&gt;    &lt;number&gt;1234-456&lt;/number&gt;&lt;br /&gt;  &lt;/phone&gt;&lt;br /&gt;  &lt;fax type="phone_number"&gt;&lt;br /&gt;    &lt;code&gt;123&lt;/code&gt;&lt;br /&gt;    &lt;number&gt;9999-999&lt;/number&gt;&lt;br /&gt;  &lt;/fax&gt;&lt;br /&gt;&lt;/person&gt;&lt;br /&gt;&lt;/pre&gt;&lt;i&gt;&lt;br /&gt;&lt;br /&gt;Hasta la próxima. :D &lt;br /&gt;&lt;br /&gt;&lt;b&gt;[Notas]&lt;/b&gt;&lt;br /&gt;&lt;b&gt;1&lt;/b&gt; Las anotaciones tienen la desventaja de que es necesario procesarlas antes de poder leer un archivo XML; Con processAnnotations nos aseguramos las clases pasadas como parámetro están listas para usarse tanto para leer como para escribir xml.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2&lt;/b&gt; autodetectAnnotations le permite a XStream autodetectar clases anotadas y automatizar su procesamiento pero debemos recordar que llamar al método processAnnotations desactiva esta funcionalidad.&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-591086637464103678?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/591086637464103678/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/02/anotaciones-en-xstream.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/591086637464103678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/591086637464103678'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/02/anotaciones-en-xstream.html' title='Anotaciones en XStream'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-3108363650034387755</id><published>2011-01-31T17:38:00.002-05:00</published><updated>2011-01-31T17:59:04.906-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='framework'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='xstream'/><title type='text'>Como usar XStream en Java</title><content type='html'>&lt;span style="font-size: small; line-height: 1.3em;"&gt;&lt;br /&gt;&lt;a href="http://xstream.codehaus.org/"&gt;XStream &lt;/a&gt;es una interesante y simple libreria para serializar objetos a &lt;b&gt;XML &lt;/b&gt;y viceversa.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Caracteristicas de XStream&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Fácil de usar.&lt;/b&gt; Cuenta una  fachada de alto nivel que simplifica los casos más comunes de uso.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;No requiere homologaciones “mappings”.&lt;/b&gt; La mayoría de los objetos se puede serilizar  sin necesidad de crear archivos de homologación o “mapping”.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Rendimiento.&lt;/b&gt; Velocidad y bajo consumo de memoria son parte esencial del diseño, lo que hace que XStream sea adecuada sistemas con grandes objetos o alta demanda  de envío de mensajes. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;XML Limpio.&lt;/b&gt; XStream usa “reflection” y crea archivos XML facilmente entendibles por humanos y más compactos que usando la serialización nativa de  Java.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;No requiere modificar los objetos.&lt;/b&gt; Se serializan los campos internos, incluyendo privados  y finales.  Las clases internas y no publicas son soportadas. No se requiere que las clases tengan un constructor por defecto (sin parametros).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Soporte completo para objetos complejos.&lt;/b&gt; Las referencias duplicadas (duplicate references) encontradas en el objeto se mantienen. Soporta referencias duplicadas (circular references).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Integración con otras API de XML.&lt;/b&gt; Implementado un interfaz, Xstream puede serializar directamente hacia/desde cualquier estructura de arbol (tree  structure) no sólo XML.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Estratégias de conversión personalizables.&lt;/b&gt; Las estrategias de conversión se pueden registrar permitiendo personalizar como los tipos son representados en XML.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Mensajes de error.&lt;/b&gt; Cuando una excepción, por XML mal formado, es encontrada se provee un diagnostico detallado para ayudar a encontrar y solucionar el problema.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Formato se salida alterno.&lt;/b&gt; El diseño modular permite otros formatos de salida. Xstream tiene actualmente soporte para JSON.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Manos a la obra:&lt;/b&gt;&lt;br /&gt;Pueden consultar el &lt;a href="http://xstream.codehaus.org/tutorial.html"&gt;tutorial de dos minutos&lt;/a&gt; en el cual me estoy basando para este post, con algunos detalles adicionales.&lt;br /&gt;&lt;br /&gt;Estoy omitiendo los constructores y métodos para ahorrar espacio ;-)&lt;br /&gt;Supongamos que tenemos los siguientes POJOs (&lt;a href="http://en.wikipedia.org/wiki/Plain_Old_Java_Object"&gt;Plain Old Java Object&lt;/a&gt;) :&lt;br /&gt;&lt;br /&gt;&lt;i&gt;ejemplo 1 - pojos&lt;/i&gt;&lt;br /&gt;&lt;pre class="brush: java; light:true"&gt;public class PhoneNumber {&lt;br /&gt;  private int code;&lt;br /&gt;  private String number;&lt;br /&gt;  // ... constructores y métodos &lt;br /&gt;}&lt;br /&gt;public class Person {&lt;br /&gt;  private String firstname;&lt;br /&gt;  private String lastname;&lt;br /&gt;  private PhoneNumber phone;&lt;br /&gt;  private PhoneNumber fax;&lt;br /&gt;  // ... constructores y métodos&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;El siguiente es un ejemplo de como serializar un objeto tipo Person:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;ejemplo 2 - usando XStream&lt;/i&gt;&lt;br /&gt;&lt;pre class="brush: java; light:true"&gt;XStream xstream = new XStream();&lt;br /&gt;//[1] alias opcionales&lt;br /&gt;xstream.alias("person", Person.class);&lt;br /&gt;&lt;br /&gt;Person joe = new Person("Joe", "Walnes");&lt;br /&gt;joe.setPhone(new PhoneNumber(123, "1234-456"));&lt;br /&gt;joe.setFax(new PhoneNumber(123, "9999-999"));&lt;br /&gt;String xml = xstream.toXML(joe);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;i&gt;ejemplo 2.1 - contenido de la variable xml&lt;/i&gt;&lt;br /&gt;&lt;pre class="brush: xml; light:true"&gt;&lt;person&gt;&lt;br /&gt;    &lt;firstname&gt;Joe&lt;/firstname&gt;&lt;br /&gt;    &lt;lastname&gt;Walnes&lt;/lastname&gt;&lt;br /&gt;    &lt;phone&gt;&lt;br /&gt;      &lt;code&gt;123&lt;/code&gt;&lt;br /&gt;      &lt;number&gt;1234-456&lt;/number&gt;&lt;br /&gt;    &lt;/phone&gt;&lt;br /&gt;    &lt;fax&gt;&lt;br /&gt;      &lt;code&gt;123&lt;/code&gt;&lt;br /&gt;      &lt;number&gt;9999-999&lt;/number&gt;&lt;br /&gt;    &lt;/fax&gt;&lt;br /&gt;  &lt;/person&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Para convertir de XML a un objeto java:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;ejemplo 2.2 - xml a java.&lt;/i&gt;&lt;br /&gt;&lt;pre class="brush: java; light:true"&gt;//usamos la variable xml del ejemplo 2&lt;br /&gt;Person newJoe = (Person)xstream.fromXML(xml);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;En el siguiente post hablaré sobre las Anotaciones en XStream.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;b&gt;[Notas]&lt;/b&gt;&lt;br /&gt;&lt;b&gt;1&lt;/b&gt; Sino agregamos los alias opcionales el código aun funcionará pero los etiquetas de los elementos contendrán el nombre completo de cada clase (fully qualified name).&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-3108363650034387755?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/3108363650034387755/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/01/como-usar-xstream-en-java.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3108363650034387755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3108363650034387755'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/01/como-usar-xstream-en-java.html' title='Como usar XStream en Java'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-2509308371529712620</id><published>2011-01-31T11:24:00.002-05:00</published><updated>2011-01-31T11:27:17.058-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='jetty'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='tomcat'/><title type='text'>Jetty Vs Tomcat</title><content type='html'>Una interesante comparación entre Tomcat y Jetty&lt;br /&gt;&lt;div id="__ss_3101518" style="width: 477px;"&gt;&lt;b style="display: block; margin: 12px 0pt 4px;"&gt;&lt;a href="http://www.slideshare.net/noriaki/jetty-vs-tomcat" title="Jetty Vs Tomcat"&gt;Jetty Vs Tomcat&lt;/a&gt;&lt;/b&gt;&lt;object height="510" id="__sse3101518" width="477"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/doc_player.swf?doc=jettyvstomcat-100208010754-phpapp01&amp;stripped_title=jetty-vs-tomcat&amp;userName=noriaki" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse3101518" src="http://static.slidesharecdn.com/swf/doc_player.swf?doc=jettyvstomcat-100208010754-phpapp01&amp;stripped_title=jetty-vs-tomcat&amp;userName=noriaki" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="477" height="510"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;div style="padding: 5px 0pt 12px;"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;documents&lt;/a&gt; from &lt;a href="http://www.slideshare.net/noriaki"&gt;Tomoaki Sawada&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-2509308371529712620?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/2509308371529712620/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/01/jetty-vs-tomcat.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/2509308371529712620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/2509308371529712620'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/01/jetty-vs-tomcat.html' title='Jetty Vs Tomcat'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-3032785135689297304</id><published>2011-01-28T13:35:00.000-05:00</published><updated>2011-01-28T13:35:03.497-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Sync'/><title type='text'>Como sincronizar gmail con un smartphone</title><content type='html'>El otro día estaba pensando sobre como sincronizar mi celular con mi cuenta de google, para tener un respaldo de mis contactos, tener mi agenda al día con google calendar y leer mis correos desde el celular, es decir estar en línea aun cuando estoy lejos de la oficina o la casa.&lt;br /&gt;&lt;br /&gt;Buscando un poco en Internet encontré &lt;a href="http://www.google.com/support/mobile/bin/answer.py?hl=en&amp;amp;answer=54843"&gt;varias alternativas&lt;/a&gt; para acceder desde el celular y me llamó la atención google sync el cual es bastante simple de configurar siguiendo estas &lt;a href="http://www.google.com/support/mobile/bin/answer.py?hl=en&amp;amp;answer=147951"&gt;instrucciones&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Esta guía funciona con un Sory Ericsson Satio (Idou) pero si alguien tiene otro dispositivo de diferente y/o de otro fabricante puede consulta el siguiente &lt;a href="http://www.google.com/support/mobile/bin/answer.py?hl=en&amp;amp;answer=139195"&gt;enlace&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Requerimientos:&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Celular con plan de datos (conexión a Internet), en mi caso un SE Satio.&lt;/li&gt;&lt;li&gt;Una aplicación con soporte para el protocolo Microsoft® Exchange ActiveSync® ya que es el que usa Google Sync. En mi caso la usaré la aplicación RoadSync pre-instalada en el celular.&lt;/li&gt;&lt;li&gt;Una cuenta en gmail.&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;Procedimiento:&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&amp;nbsp;Iniciamos RoadSync y configuramos los parámetros de acuerdo a las siguientes &lt;a href="http://www.google.com/support/mobile/bin/answer.py?hl=en&amp;amp;answer=147951"&gt;instrucciones&lt;/a&gt;&lt;b&gt;.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;En RoadSync tenemos la opción de sincronizar: correo electrónico, calendario, contactos y tareas, lastimosamente de acuerdo a la documentación de Google sync actualmente no está soportado sincronizar las tareas así que solo puedo activar las otras tres opciones.&lt;/li&gt;&lt;li&gt;Tenemos la opción de programar la sincronización en un horario fijo (por ejemplo el horario de oficina), cada cierto tiempo o dejarla manual. Aquí cada quien elige lo que más le convenga.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-3032785135689297304?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/3032785135689297304/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/01/como-sincronizar-gmail-con-un.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3032785135689297304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3032785135689297304'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/01/como-sincronizar-gmail-con-un.html' title='Como sincronizar gmail con un smartphone'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-3724526824274771445</id><published>2011-01-26T17:20:00.000-05:00</published><updated>2011-01-26T17:20:57.098-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Centroamerica'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='Twitter'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><title type='text'>Aplicación para twitter Beispanama</title><content type='html'>Recientemente me enteré que un colega y amigo creó y liberó el código e una pequeña aplicación para Twitter para que los fanáticos del béisbol en Panamá podamos mostrar nuestro apoyo a nuestro equipo favorito.&lt;br /&gt;&lt;br /&gt;Felicito a @demogar por su trabajo e iniciativa de liberar el código para que otros podamos aprender de El.&lt;br /&gt;&lt;br /&gt;Vale la pena mencionar que la aplicación fue publicada en un sitio de noticias local, más información &lt;a href="http://quepasapanama.com/2011/01/esto-es-beispanama/"&gt;aquí&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.beispanama.com/"&gt;Beispanama&lt;/a&gt; fue diseñada y desarrollada por @demogar.&lt;br /&gt;Código liberado en &lt;a href="http://github.com/demogar/beispanama"&gt;GitHub&lt;/a&gt; y &lt;a href="https://bitbucket.org/demogar/beispanama"&gt;Bitbucket &lt;/a&gt;bajo licencia WTFPL. &lt;br /&gt;Made in Panama, ¡carajo!.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-3724526824274771445?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/3724526824274771445/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/01/aplicacion-para-twitter-beispanama.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3724526824274771445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3724526824274771445'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/01/aplicacion-para-twitter-beispanama.html' title='Aplicación para twitter Beispanama'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-9166923458220963376</id><published>2011-01-21T18:18:00.000-05:00</published><updated>2011-09-22T21:41:12.818-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='api'/><category scheme='http://www.blogger.com/atom/ns#' term='salesforce'/><title type='text'>http://admios.blogspot.com/2011/01/18-digit-case-safe-id-on-salesforcecom.html</title><content type='html'>Today while doing a small test to check a Salesforce's API client I noticed that several objects returned by the API, has IDs of 18 characters which I found strange since they are supposed to be 15 letters and numbers, according to the API's documentation.&lt;br /&gt;&lt;br /&gt;For reference, an excerpt of the official &lt;a href="http://www.salesforce.com/us/developer/docs/api/Content/field_types.htm#i1435616"&gt;documentation of salesforce&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;ID Field Type&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;With rare exceptions, all objects in the API have a field of type ID that is named Id and contains a unique identifier for each record in the object. It is analogous to a primary key in relational databases...&lt;br /&gt;&lt;br /&gt;ID fields in the Salesforce.com user interface contain 15-character, base-62, case-sensitive strings. Each of the 15 characters can be a numeric digit (0-9), a lowercase letter (a-z), or an uppercase letter (A-Z). Two unique IDs may only be different by a change in case.&lt;/blockquote&gt;&lt;br /&gt;With the aim of understanding why the ID returned by the API contain more than 15 characters did a little research and found the following:&lt;br /&gt;&lt;blockquote&gt;Because there are applications like Access which do not recognize that 50130000000014c is a different ID from 50130000000014C, an 18-digit, case-safe version of the ID is returned by all API calls. The 18 character IDs have been formed by adding a suffix to each ID in the Force.com API. 18-character IDs can be safely compared for uniqueness by case-insensitive applications, and can be used in all API calls when creating, editing, or deleting data.&lt;br /&gt;&lt;br /&gt;If you need to convert the 18-character ID to a 15-character version, truncate the last three characters. Salesforce.com recommends that you use the 18-character ID.&lt;/blockquote&gt;&lt;br /&gt;&lt;b&gt;Conclusion.&lt;/b&gt;&lt;br /&gt;So in essence, to prevent problems for those situations when case sensitive differences are not detected the API is returning 18-digits case-safe version of the ID.&lt;br /&gt;&lt;br /&gt;Hope this is useful to any of you.&lt;br /&gt;&lt;a href="http://admios.blogspot.com/2011/01/18-digit-case-safe-id-on-salesforcecom.html"&gt;My original post &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-9166923458220963376?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/9166923458220963376/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2011/01/httpadmiosblogspotcom20110118-digit.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/9166923458220963376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/9166923458220963376'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2011/01/httpadmiosblogspotcom20110118-digit.html' title='http://admios.blogspot.com/2011/01/18-digit-case-safe-id-on-salesforcecom.html'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-4688487536050293412</id><published>2010-12-17T11:15:00.000-05:00</published><updated>2010-12-17T11:15:49.206-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='mito'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Ubuntu NO es sólo para n00bs.</title><content type='html'>Este interesante post que encontré en &lt;a href="http://planet.ubuntu.com/"&gt;Planet Ubuntu&lt;/a&gt; analiza un mito con el que me he topado personalmente, está muy bueno y en cuanto tenga tiempo lo traduciré, pero por ahora solo dejo aquí el enlace al post original: http://blog.pault.ag/post/2338202559/myth-busted-6-ubuntu-is-only-for-n00bs-and-not-for&lt;br /&gt;&lt;br /&gt;Saludos.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-4688487536050293412?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/4688487536050293412/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2010/12/ubuntu-no-es-solo-para-n00bs.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/4688487536050293412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/4688487536050293412'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2010/12/ubuntu-no-es-solo-para-n00bs.html' title='Ubuntu NO es sólo para n00bs.'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-6533350051715634260</id><published>2010-12-10T15:30:00.003-05:00</published><updated>2010-12-10T15:42:04.422-05:00</updated><title type='text'>Reconstrucción de computadora Griega de 2000 años</title><content type='html'>&lt;iframe src="http://player.vimeo.com/video/17648733" width="400" height="225" frameborder="0"&gt;&lt;/iframe&gt;&lt;p&gt;&lt;a href="http://vimeo.com/17648733"&gt;The Antikythera Mechanism in Lego&lt;/a&gt; from &lt;a href="http://vimeo.com/smallmammal"&gt;Small Mammal&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;Simplemente sorprendente, una computadora usada para predecir eclipses creada hace 2000 años Wow.&lt;br /&gt;&lt;br /&gt;Lo mejor de todo es ver la replica en miniatura hecha con lego, funcionando XD.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fayerwayer.com/2010/12/reconstruyen-computadora-griega-de-2-000-anos-con-lego/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed:+fayerwayer+(FayerWayer)"&gt;Aquí&lt;/a&gt; el enlace.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-6533350051715634260?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='' href='http://www.fayerwayer.com/2010/12/reconstruyen-computadora-griega-de-2-000-anos-con-lego/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed:+fayerwayer+(FayerWayer)' length='0'/><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/6533350051715634260/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2010/12/reconstruccion-de-computadora-griega-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/6533350051715634260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/6533350051715634260'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2010/12/reconstruccion-de-computadora-griega-de.html' title='Reconstrucción de computadora Griega de 2000 años'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-3103312641418714886</id><published>2010-12-08T22:29:00.011-05:00</published><updated>2011-01-07T19:10:48.580-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='command'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='automatizar'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><title type='text'>Como eliminar caracteres de texto por consola de comandos</title><content type='html'>Desde siempre cuando he tenido que modificar un archivo de texto, simplemente uso un editor como gedit, nano u algún otro y hago todo manualmente, sin embargo en ocasiones esa tarea puede ser muy tediosa o repetitiva para hacerlo uno mismo.&lt;br /&gt;&lt;br /&gt;Por eso me puse a investigar un poco y logre encontrar un muy buen post que explica de forma simple como eliminar el carácter de nueva linea usando: tr, awk, perl, sed, c/c++ entre otros Yo voy a referirme únicamente a los comandos de consola.&lt;br /&gt;&lt;br /&gt;Pueden encontrar el post original &lt;a href="http://linux.dsplabs.com.au/rmnl-remove-new-line-characters-tr-awk-perl-sed-c-cpp-bash-python-xargs-ghc-ghci-haskell-sam-ssam-p65/"&gt;aquí&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Pues bien manos a la obra. &lt;br /&gt;¿Cómo remover los saltos de línea en archivos o pipe streams en linux? A continuación enumeraré varios ejemplos sencillos usando comando del shell de GNU/Linux como tr, awk/gawk, perl, sed entre otros. Para este ejemplo supongamos que tenemos un archivo llamado dias.txt. Con el siguiente comando podemos ve el contenido de dicho archivo:&lt;br /&gt;&lt;pre class="brush: bash; html-script: false; light:true"&gt;cat dias.txt&lt;br /&gt;&lt;/pre&gt;El resultado se muestra a continuación.&lt;br /&gt;&lt;pre class="brush: bash; html-script: false; light:true"&gt;Lun&lt;br /&gt;Mar&lt;br /&gt;Mie&lt;br /&gt;Jue&lt;br /&gt;Vie&lt;br /&gt;Sab&lt;br /&gt;Dom&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Si removiéramos los saltos de linea del archivo dias.txt se vería como sigue:&lt;br /&gt;&lt;pre class="brush: bash; html-script: false; light:true"&gt;LunMarMieJueVieSabDom&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Si en lugar de remover los saltos de linea los reemplazamos por espacios el contenido de dias.txt quedaría como sigue:&lt;br /&gt;&lt;pre class="brush: bash; html-script: false; light:true"&gt;Lun Mar Mie Jue Vie Sab Dom&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;A continuación tenemos ejemplos de como reemplazar y eliminar el carácter de salto de línea para obtener los resultados mostras en los ejemplos antes mencionados.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;usando tr (mi recomendación).&lt;/b&gt;Cualquiera de los siguiente comandos funciona para eliminar los saltos de línea del archivo dias.txt usando tr:&lt;br /&gt;&lt;pre class="brush: js; light:true; html-script: true;"&gt;tr -d '\n'&amp;lt; dias.txt&lt;br /&gt;cat dias.txt | tr -d '\n'&lt;br /&gt;&lt;/pre&gt;mientras que los dos ejemplos siguientes reemplazan el salto de línea por un espacio en blanco.  &lt;br /&gt;&lt;pre class="brush: js; html-script: true; light:true"&gt;tr '\n' ' ' &amp;lt; dias.txt&lt;br /&gt;cat dias.txt | tr '\n' ' '&amp;nbsp;&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;usando awk (awk or gawk)&lt;/b&gt; Usando awk* para eliminar los saltos de línea, se puede usar alguno de los dos ejemplos siguientes:  &lt;br /&gt;&lt;pre class="brush: bash; html-script: false; light:true"&gt;awk '{ printf "%s", $0 }' dias.txt&lt;br /&gt;cat dias.txt | awk '{ printf "%s", $0 }'&lt;br /&gt;&lt;/pre&gt;En tanto que para reemplazar por un espacio en blanco tenemos:  &lt;br /&gt;&lt;pre class="brush: bash; html-script: false; light:true"&gt;awk '{ printf "%s ", $0 }' dias.txt&lt;br /&gt;cat dias.txt | awk '{ printf "%s ", $0 }' &lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size: x-small;"&gt;*Vale la pena resaltar que no se debe nunca una cadena no validada previamente al comando printf puesto que es una vulnerabilidad o riesgo de seguridad. Por lo tanto debemos usar &lt;b&gt;{ printf "%s ", $0 }&lt;/b&gt; y nunca usar &lt;b&gt;{ printf $0 }&lt;/b&gt;  &lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;  &lt;b&gt;usando perl&lt;/b&gt; En el caso de perl, tenemos las siguientes alternativas para eliminar los saltos de línea.  &lt;br /&gt;&lt;pre class="brush: js; html-script: false; light:true"&gt;perl -e 'while (&amp;lt;&amp;gt;) { chomp; print; }; exit;' dias.txt&lt;br /&gt;cat dias.txt | perl -e 'while (&amp;lt;&amp;gt;) { chomp; print; }; exit;' &lt;br /&gt;&lt;/pre&gt;y las siguientes dos para reemplazar por un espacio en blanco.  &lt;br /&gt;&lt;pre class="brush: js; html-script: false; light:true"&gt;perl -e 'while (&amp;lt;&amp;gt;) { chomp; print; print " "; }; exit;' dias.txt&lt;br /&gt;cat dias.txt | perl -e 'while (&amp;lt;&amp;gt;) { chomp; print; print " "; }; exit;'&lt;/pre&gt;Aquí dejo algunos ejemplos adicionales en perl usando expresiones regulares, el cual es bastante más simple y limpio:  &lt;br /&gt;&lt;pre class="brush: bash; html-script: false; light:true"&gt;perl -p -e 's/\s+$/ /g' dias.txt&lt;br /&gt;cat dias.txt | perl -p -e 's/\s+$/ /g'&amp;nbsp;&lt;/pre&gt;&lt;b&gt;usando sed&lt;/b&gt; También se puede usar sed para eliminar los saltos de línea. La solución usando sed no es muy legible pero funciona.  &lt;br /&gt;&lt;pre class="brush: bash; html-script: false; light:true"&gt;sed ':a;N;$!ba;s/\n//g' dias.txt&lt;br /&gt;cat dias.txt | sed ':a;N;$!ba;s/\n//g' &lt;br /&gt;sed '{:q;N;s/\n//g;t q}' dias.txt&lt;br /&gt;&lt;/pre&gt;Para reemplazar por un espacio en blanco podemos usar uno de los siguientes comandos.  &lt;br /&gt;&lt;pre class="brush: bash; html-script: false; light:true"&gt;sed ':a;N;$!ba;s/\n/ /g' dias.txt&lt;br /&gt;cat dias.txt | sed ':a;N;$!ba;s/\n/ /g' &lt;br /&gt;sed '{:q;N;s/\n//g;t q}' dias.txt&lt;br /&gt;&lt;/pre&gt;La tercera alternativa fue sugerida por James the crypto.dsplabs.com.au en Linux Blog Forums.  Otras alternativas posibles son: &lt;b&gt;&amp;nbsp;&lt;/b&gt; &lt;b&gt;xargs:&lt;/b&gt;  &lt;br /&gt;&lt;pre class="brush: js; light:true; html-script: true;"&gt;xargs echo &lt; dias.txt&lt;br /&gt;cat dias.txt | xargs echo&lt;br /&gt;cat dias.txt | xargs echo -n&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;GNU Bash:&lt;/b&gt;  &lt;pre class="brush: js; light:true; html-script: true;"&gt;while read; do echo -n "$REPLY "; done &lt; dias.txt&lt;br /&gt;&lt;/pre&gt;o esta otra más simple   &lt;pre class="brush: bash; html-script: false; light:true"&gt;echo -n `cat dias.txt`&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;Python&lt;/b&gt; &lt;pre class="brush: js; light:true; html-script: true;"&gt;python -c 'import sys; print sys.stdin.read().replace("\n", " ")' &lt; dias.txt&lt;br /&gt;&lt;/pre&gt;UPDATE 07-01-2011: Corregí algunos ejemplos que no se desplegaban correctamente el simbolo de menor que (&lt;).&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-3103312641418714886?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://linux.dsplabs.com.au/rmnl-remove-new-line-characters-tr-awk-perl-sed-c-cpp-bash-python-xargs-ghc-ghci-haskell-sam-ssam-p65/' title='Como eliminar caracteres de texto por consola de comandos'/><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/3103312641418714886/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2010/12/como-eliminar-caracteres-de-texto-por.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3103312641418714886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3103312641418714886'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2010/12/como-eliminar-caracteres-de-texto-por.html' title='Como eliminar caracteres de texto por consola de comandos'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-9084506527645693869</id><published>2010-11-14T12:19:00.004-05:00</published><updated>2011-03-27T15:48:53.169-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='Empathy'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Como cambiar el tema de Empathy</title><content type='html'>Investigando un poco sobre como cambiar el tema al Empathy me econtré  con estos posts  http://www.socialblogr.com/2010/05/how-to-install-empathy-themes.html&lt;br /&gt;http://www.socialblogr.com/2010/05/how-to-change-empathy-chatmessage-theme.html  y basandome en ellos aqui dejo un resumen de lo que demos hacer:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Primero:&lt;/b&gt; cescargar e instalar el siguiente &lt;a href="http://tecnicoslinux.com.ar/livecd/empathy-chat-themes_1_all.deb"&gt;paquete de temas&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Segundo:&lt;/b&gt; creamos, sino existe ya, la ruta donde deben estar los temas para Empathy con el siguiente comando:&lt;br /&gt;&lt;pre class="brush:bash"&gt;mkdir -p ~/.local/share/adium/message-styles&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Tercero:&lt;/b&gt; copiamos los temas en el directorio que acabamos de crear&lt;br /&gt;&lt;pre class="brush:bash" &gt;cp -rv /usr/share/empathy-chat-themes/* ~/.local/share/adium/message-styles&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Finalmente abrimos Empathy y vamos al menú Editar-&amp;gt;Preferencias y en la solapa Temas seleccionamos el que queramos.&lt;br /&gt;&lt;br /&gt;Les dejo un pantallazo de mi Empathy con el tema "NoteBoard!"&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_Xph0zkPcUSA/TOAYg53qWxI/AAAAAAAAAs0/bRdKIxDiN_k/s1600/Pantallazo-empathy.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="280" src="http://2.bp.blogspot.com/_Xph0zkPcUSA/TOAYg53qWxI/AAAAAAAAAs0/bRdKIxDiN_k/s320/Pantallazo-empathy.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Salu2.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-9084506527645693869?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/9084506527645693869/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2010/11/como-cambiar-el-tema-de-empathy.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/9084506527645693869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/9084506527645693869'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2010/11/como-cambiar-el-tema-de-empathy.html' title='Como cambiar el tema de Empathy'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Xph0zkPcUSA/TOAYg53qWxI/AAAAAAAAAs0/bRdKIxDiN_k/s72-c/Pantallazo-empathy.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-3912038464894571132</id><published>2010-11-14T02:04:00.002-05:00</published><updated>2010-11-14T02:09:45.539-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='favoritos'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Configuracion'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Avant, Docky o Cairo-dock</title><content type='html'>Mucho me han hablado sobre &lt;a href="http://wiki.go-docky.com/"&gt;docky&lt;/a&gt; y c&lt;a href="http://www.glx-dock.org/"&gt;airo-dock&lt;/a&gt;, pero ya hace desde mucho tiempo estoy usando &lt;a href="http://wiki.awn-project.org/"&gt;avant&lt;/a&gt; y me va muy bien con dicho dock (pueden la definición de un dock: &lt;a href="http://en.wikipedia.org/wiki/Dock_%28computing%29"&gt;en ingles&lt;/a&gt; y &lt;a href="http://es.wikipedia.org/wiki/Dock"&gt;en español&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Por eso decidí hacer una prueba entre los tres a ver como me va con cada uno de ellos. Para hacer eso lo más objetivo posible voy a evaluar 2 puntos, a saber:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;fácil de personalizar, es decir cuan simple es agregar o quitar lanzadores para mis aplicaciones más usadas&lt;/li&gt;&lt;li&gt;extras, que funcionalidades adicionales tiene.&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;adicionalmente es un bono si tiene soporte para temas y cuan fácil es personalizar su apariencia&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Primero veamos docky: &lt;/u&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_Xph0zkPcUSA/TN96Ua3MuiI/AAAAAAAAAsU/yJzSxlYosps/s1600/Pantallazo-docky.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="26" src="http://4.bp.blogspot.com/_Xph0zkPcUSA/TN96Ua3MuiI/AAAAAAAAAsU/yJzSxlYosps/s320/Pantallazo-docky.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;1. fácil de personalizar: soporta dos formas de crear lanzadores: arrastrando un lanzador hasta el dock y "anclando" una aplicación que ya está en ejecución, mas no permite cambiarlo una vez agregado.&lt;br /&gt;&lt;br /&gt;2. extras: veo que docky tiene un número pequeño de funcionalidades extra.&lt;br /&gt;&lt;br /&gt;Docky se combina con mi entorno gnome&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Segundo hablemos de cairo-dock:&lt;/u&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_Xph0zkPcUSA/TN-CoHy25xI/AAAAAAAAAsk/OsYNJo2W6Dw/s1600/Pantallazo-cairo-dock0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="45" src="http://1.bp.blogspot.com/_Xph0zkPcUSA/TN-CoHy25xI/AAAAAAAAAsk/OsYNJo2W6Dw/s320/Pantallazo-cairo-dock0.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;1. fácil de personalizar: soporta dos métodos de crear lanzadores de forma similar a docky. Una vez creado el lanzador es posible editarlo a nuestro gusto :)&lt;br /&gt;&lt;br /&gt;2. extras: es posible configurar muchas alternativas y además ofrece un sitio web (http://extras.glx-dock.org/2.2.0) desde el cual se pueden bajar aún más, sin embargo al momento de crear este post dicho sitio parece no estar funcionando.&lt;br /&gt;&lt;br /&gt;Al igual que docky, cairo-dock se combina bien con gnome, pero me gustó mucho el menú contextual (click derecho) desde el cual se pueden configurar todos los detalles del dock&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&amp;nbsp;Por último hablemos de&lt;span class="mw-headline"&gt; Avant Window Navigator:&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_Xph0zkPcUSA/TN-FhSCdFUI/AAAAAAAAAss/QOvujj5IDMk/s1600/Pantallazo-awn.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="27" src="http://3.bp.blogspot.com/_Xph0zkPcUSA/TN-FhSCdFUI/AAAAAAAAAss/QOvujj5IDMk/s320/Pantallazo-awn.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;1. fácil de personalizar: al igual que los anteriores soporta dos formas de crear lanzadores: arrastrando un lanzador hasta el dock y "anclando" una aplicación que ya está en ejecución.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. extras: es posible configurar muchos extras e instalar alguna otra que hayamos descargado nosotros mismos.&lt;br /&gt;&lt;br /&gt;Al igual que docky y cairo-dock se combina bien con gnome, soporta temas y tiene un asistente de personalización simple.&lt;br /&gt;&lt;br /&gt;En conclusión de los tres proyectos el más completo y personalizable es cairo-dock y debo resaltar que tiene unos efectos especiales muy interesantes, por lo que yo lo recomiendo y de ahora en adelante será el que use.&lt;br /&gt;&lt;br /&gt;&lt;span class="mw-headline"&gt; &lt;/span&gt;&lt;br /&gt;Espero que esto sea de ayuda para todo aquel que esté interesado en el tema.&lt;br /&gt;&lt;br /&gt;Si tienen algo que agregar, corregir, etc dejen su comentario.&lt;br /&gt;&lt;br /&gt;Saludos.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-3912038464894571132?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/3912038464894571132/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2010/11/avant-docky-o-cairo-dock.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3912038464894571132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3912038464894571132'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2010/11/avant-docky-o-cairo-dock.html' title='Avant, Docky o Cairo-dock'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Xph0zkPcUSA/TN96Ua3MuiI/AAAAAAAAAsU/yJzSxlYosps/s72-c/Pantallazo-docky.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-2795987599890208628</id><published>2010-11-13T21:36:00.000-05:00</published><updated>2010-11-13T21:36:13.826-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='presentacion'/><category scheme='http://www.blogger.com/atom/ns#' term='Celebración'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Fedora &amp; Ubuntu Release Party</title><content type='html'>Las comunidades de Ubuntu y Fedora de Panamá, celebramos juntos el lanzamiento de Ubuntu 10.10 y Fedora 14.&lt;br /&gt;&lt;br /&gt;Contamos con varias charlas interesantes y a los participantes disfrutaron de un pequeño brindis al final además de tener la oportunidad de conversar y preguntar sobre varios temas de interes.&lt;br /&gt;&lt;br /&gt;Les dejo el enlace en el sitio de floss-pa, donde podrán ver algunas fotos: http://floss-pa.org/node/19&lt;br /&gt;&lt;br /&gt;Saludos.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-2795987599890208628?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://floss-pa.org/node/19' title='Fedora &amp; Ubuntu Release Party'/><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/2795987599890208628/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2010/11/fedora-ubuntu-release-party.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/2795987599890208628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/2795987599890208628'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2010/11/fedora-ubuntu-release-party.html' title='Fedora &amp; Ubuntu Release Party'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-7589598963193943311</id><published>2010-10-03T09:31:00.002-05:00</published><updated>2010-10-30T21:09:02.815-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Como determinar la versión de Ubuntu instalada en una PC</title><content type='html'>Algunas veces me ha pasado que alguien me pide ayuda con una computadora, pero siempre es de ayuda saber con cual versión de Ubuntu estamos lidiando, por eso me decidí a investigar un poco sobre como obtener de forma rápida la versión que actualmente tiene configurada una PC.&lt;br /&gt;&lt;br /&gt;Sin lugar a dudas que tenemos la opción de ir al menú de &lt;b&gt;Sistema-&gt;Acerca de Ubuntu&lt;/b&gt; pero ¿qué pasa si el entorno gráfico no está disponible? por ejemplo, y si simplemente ya estamos en una consola de comandos y queremos obtener la versión de Ubuntu de forma rápida y simple; pues bien hay dos opciones:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Primera:&lt;/b&gt; usando el contenido del archivo issue&lt;br /&gt;&lt;pre class="brush:bash"&gt;cat /etc/issue&lt;br /&gt;&lt;/pre&gt;que nos mostrará un resultado similar al siguiente:&lt;br /&gt;&lt;pre class="brush:bash"&gt;Ubuntu 10.04.1 LTS \n \l&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Segunda:&lt;/b&gt; usando el comando lsb_release (mi favorito):&lt;br /&gt;&lt;pre class="brush:bash"&gt;lsb_release -a &lt;br /&gt;&lt;/pre&gt;que nos dará un resultado similar al siguiente:&lt;br /&gt;&lt;pre class="brush:bash"&gt;No LSB modules are available.&lt;br /&gt;Distributor ID: Ubuntu&lt;br /&gt;Description: Ubuntu 10.04.1 LTS&lt;br /&gt;Release: 10.04&lt;br /&gt;Codename: lucid&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Como se puede ver la segunda opción nos da mucho más información.&lt;br /&gt;&lt;br /&gt;Bueno eso es todo por el momento, espero que sea de utilidad en algún momento.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-7589598963193943311?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/7589598963193943311/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2010/10/como-determinar-la-version-de-ubuntu.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/7589598963193943311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/7589598963193943311'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2010/10/como-determinar-la-version-de-ubuntu.html' title='Como determinar la versión de Ubuntu instalada en una PC'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-6801653456356325424</id><published>2010-05-30T21:27:00.009-05:00</published><updated>2010-08-16T09:54:16.415-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='laptop'/><category scheme='http://www.blogger.com/atom/ns#' term='Wireless'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Configuracion'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Como hacer funcionar la tarjeta Wireless en un Acer Aspire 5534</title><content type='html'>Los pasos para configurar esta tarjeta son bastante simples, los encontré en el foro de Ubuntu en el siguiente hilo: http://ubuntuforums.org/showthread.php?t=882003&amp;amp;page=10.&lt;br /&gt;&lt;br /&gt;Vamos a recompilar el driver:&lt;br /&gt;descargamos desde &lt;a href="http://linuxwireless.org/download/compat-wireless-2.6" target="_blank"&gt;http://linuxwireless.org/download/compat-wireless-2.6&lt;/a&gt; el archivo llamado compat-wireless-2.6.tar.bz2, lo guardamos en algún lugar fácil de encontrar, en mi caso la carpeta ~/Escritorio&lt;br /&gt;y luego ejecutamos los siguientes comandos.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: plain; light:true"&gt;cd ~/Escritorio&lt;br /&gt;sudo apt-get install build-essential&lt;br /&gt;tar -xjvf compat-wireless-2.6.tar.bz2&lt;br /&gt;cd compat-wireless*&lt;br /&gt;make&lt;br /&gt;sudo make unload&lt;br /&gt;sudo make load&lt;br /&gt;sudo make install&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Reiniciamos la PC y todo debería funcionar ahora. Debemos asegurarnos, si nuestra laptop tiene un boton para apagar la tarjeta wireless, que esta esté encendida :P.&lt;br /&gt;&lt;br /&gt;¡Todo listo! ahora a navegar... :D&lt;br /&gt;&lt;br /&gt;Para el siguiente post les contaré como configuré los efectos del escritorio.&lt;br /&gt;Saludos.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-6801653456356325424?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/6801653456356325424/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2010/05/como-hacer-funcionar-la-tarjeta.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/6801653456356325424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/6801653456356325424'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2010/05/como-hacer-funcionar-la-tarjeta.html' title='Como hacer funcionar la tarjeta Wireless en un Acer Aspire 5534'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-2041708670961101247</id><published>2010-05-23T23:08:00.001-05:00</published><updated>2010-05-23T23:10:18.375-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Primer pizza bash en Panamá</title><content type='html'>El pasado sábado 22 de Mayo, celebramos en las instalaciones de la Universidad Interamericana de Panamá nuestro primer pizza bash, una idea que nos copiamos de los compañeros centroamericanos http://www.linuxtour.org/Pizza-Bash&lt;br /&gt;&lt;br /&gt;Dentro los puntos más interesantes del primer pizza bash, cabe resaltar:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;se presentó un grupo estudiantes de la Universidad Nacional de Panamá quienes desean formar una comunidad de usuarios que abarque varias facultades de su universidad.&lt;/li&gt;&lt;li&gt;Danilo, un desarrollador en Drupal está organizando un workshop con miras a formar más desarrolladores y finalmente crear una comunidad, lo cual me parece una buena oportunidad para aprender sobre Drupal :).&lt;/li&gt;&lt;li&gt;Un empresario de la localidad presentó su proyecto en que está trabajando para crear una herramienta que simplifique el desarrollo de aplicaciones web y en python.&lt;/li&gt;&lt;li&gt;por ultimo pero no menos importante se dió la oportunidad que conversar con muchos miembros de la comunidad de software libre de Panamá, usuarios de distintas distros e intercambiar ideas y conocimientos.&lt;/li&gt;&lt;/ul&gt;Espero que el próximo pizza bash sea aún mejor. &lt;br /&gt;&lt;br /&gt;Saludos y gracias a todos los participantes y quienes ayudaron en la organización.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-2041708670961101247?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/2041708670961101247/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2010/05/primer-pizza-bash-en-panama.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/2041708670961101247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/2041708670961101247'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2010/05/primer-pizza-bash-en-panama.html' title='Primer pizza bash en Panamá'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-7248014905419022096</id><published>2010-04-21T16:12:00.000-05:00</published><updated>2010-04-21T16:12:39.931-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Centroamerica'/><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Recta final rumbo hacia el FLISOL 2010 en Panamá</title><content type='html'>Ya está todo preparado para celebrar dentro de pocos días en Panamá, como en muchos países, el Festival Latinoamericano de Instalación de Software Libre FLISOL, que este año cuenta con la participación de muchos miembros de diferentes comunidades a lo largo del territorio nacional.&lt;br /&gt;&lt;br /&gt;Para aquellos que estén interesados en participar pueden buscar la sede más cercana en el wiki del &lt;a href="http://www.flisol.info/FLISOL2010"&gt;FLISOL2010.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;En Panamá se realizarán eventos simultaneos en las siguientes localidades:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.flisol.info/FLISOL2010/Panama/Panama"&gt;Panama&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.flisol.info/FLISOL2010/Panama/Santiago"&gt;Santiago&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.flisol.info/FLISOL2010/Panama/Azuero"&gt;Azuero&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.flisol.info/FLISOL2010/Panama/Chiriqui"&gt;Chiriquí&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.flisol.info/FLISOL2010/Panama/Aguadulce"&gt;Aguadulce&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;¡Están todos invitados a celebrar! &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Nos vemos en el FLISOL...&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-7248014905419022096?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/7248014905419022096/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2010/04/recta-final-rumbo-hacia-el-flisol-2010.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/7248014905419022096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/7248014905419022096'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2010/04/recta-final-rumbo-hacia-el-flisol-2010.html' title='Recta final rumbo hacia el FLISOL 2010 en Panamá'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-6630434447893742175</id><published>2010-04-18T21:22:00.002-05:00</published><updated>2011-06-03T21:27:24.062-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='Brother'/><category scheme='http://www.blogger.com/atom/ns#' term='impresora'/><category scheme='http://www.blogger.com/atom/ns#' term='MFC-240C'/><category scheme='http://www.blogger.com/atom/ns#' term='Configuracion'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Como instalar Brother MFC 240c en Ubuntu 9.04</title><content type='html'>Buscando un poco sobre como usar mi impresora multifuncional Brother MFC-240C, encontré este muy completo manual en ingles.&lt;br /&gt;Aquí lo dejo por si alguien lo necesita:&lt;br /&gt;&lt;a href="http://www.commonitman.com/2009/09/brother-mfc-240c-on-ubunto-904.html"&gt;Brother MFC 240c on Ubuntu 9.04 | A Common IT Man's Blog&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Saludos.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Actualización 25 de Mayo de 2010: &lt;/i&gt;&lt;/b&gt;Después de actualizar a Lucid Lynx y revisar, la impresora sigue funcionando correctamente como era de esperarse más no el scanner, pero se puede solucionar fácilmente siguiendo la instrucciones del siguiente enlace: http://welcome.solutions.brother.com/bsc/public_s/id/linux/en/instruction_scn1c.html#u9.10&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-6630434447893742175?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.commonitman.com/2009/09/brother-mfc-240c-on-ubunto-904.html' title='Como instalar Brother MFC 240c en Ubuntu 9.04'/><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/6630434447893742175/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2010/04/como-instalar-brother-mfc-240c-en.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/6630434447893742175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/6630434447893742175'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2010/04/como-instalar-brother-mfc-240c-en.html' title='Como instalar Brother MFC 240c en Ubuntu 9.04'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-3164409557619422784</id><published>2010-04-08T19:22:00.001-05:00</published><updated>2010-04-08T19:25:32.499-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><title type='text'>Como personalizar tus feeds en blogger</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Como bien dicen la necesidad es la madre de la creatividad :D, gracias a un correo de jmaslibre me percaté de que necesitaba parametrizar mi feed del blog. El problema surgió cuando descubrimos que por actualizar varios post viejos el mismo día, en blogger, todos esos post aparecián en el feed como si hubieran sido creados en la misma fecha ¡raro pero cierto! :S esto se volvió un problema porque al tener demasiados post "recientes" no estaban visibles las contribuciones realmente recientes de otros miembros del planet &lt;a href="http://planet.sl-centroamerica.org/" target="_blank"&gt;planet.sl-centroamerica.org&lt;/a&gt;  &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Bueno la pregunta era simple ¿Como filtro mis feeds?, despues de una breve investigación descubrí que blogger tiene una muy completa &lt;a href="http://code.google.com/apis/blogger/docs/2.0/reference.html"&gt;API&lt;/a&gt;, la cual tiene unos &lt;a href="http://code.google.com/apis/gdata/docs/2.0/reference.html#Queries"&gt;parametros&lt;/a&gt; para filtrar los feeds.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;De acuerdo a la documentación el parametro &lt;code&gt;&lt;span style="color: #38761d;"&gt;category&amp;nbsp;&lt;/span&gt;&lt;/code&gt;se usa para filtrar por categorías, mientras que&lt;code&gt; &lt;/code&gt;&lt;code&gt;&lt;span style="color: #38761d;"&gt;max-results&lt;/span&gt;&amp;nbsp;&lt;/code&gt;permite restringir el número máximo de resultados.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;La url por defecto de los feeds de mi blog es:&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;code&gt; &lt;span style="color: #38761d;"&gt;http://emont01.blogspot.com/feeds/posts/default&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;y con usando los parametros antes mencionados quedaría así:&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;code&gt;&lt;span style="color: #38761d;"&gt;http://emont01.blogspot.com/feeds/posts/default?category=sl&amp;amp;max-results=2&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;code&gt; &lt;/code&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;De este modo al planet de &lt;/span&gt;&lt;a href="http://planet.sl-centroamerica.org/" style="font-family: Arial,Helvetica,sans-serif;"&gt;planet.sl-centroamerica.org&lt;/a&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; solo llegaran mis post relacionados con software libre y como máximo 2 por día.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Opcionalmente podemos poner nuestro feed filtrado en &lt;/span&gt;&lt;a href="http://feeds.feedburner.com/" style="font-family: Arial,Helvetica,sans-serif;"&gt;feedburner&lt;/a&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; y tener una url más simple de recordar, por ejemplo:&lt;/span&gt;&lt;code&gt;&amp;nbsp;&lt;span style="color: #38761d;"&gt;http://feeds.feedburner.com/emontSL&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Hasta la proxima.&lt;/span&gt;&lt;code&gt;&lt;span style="color: #38761d;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-3164409557619422784?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/3164409557619422784/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2010/04/como-personalizar-tus-feeds-en-blogger.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3164409557619422784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3164409557619422784'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2010/04/como-personalizar-tus-feeds-en-blogger.html' title='Como personalizar tus feeds en blogger'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-7522456721296315292</id><published>2010-01-05T09:12:00.006-05:00</published><updated>2010-04-08T18:50:24.225-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><title type='text'>Cinco cosas que el software libre me ha enseñado</title><content type='html'>Una interesante reflexión sobre lo que uno descubre participando de la comunidad de software libre.&lt;br /&gt;Es increíble como aprendes  y valoras cada día más tu libertad.&lt;br /&gt;&lt;br /&gt;Fuente: http://www.rebelion.org/noticia.php?id=98026&lt;br /&gt;Saludos.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-7522456721296315292?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.rebelion.org/noticia.php?id=98026' title='Cinco cosas que el software libre me ha enseñado'/><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/7522456721296315292/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2010/01/cinco-cosas-que-el-software-libre-me-ha.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/7522456721296315292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/7522456721296315292'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2010/01/cinco-cosas-que-el-software-libre-me-ha.html' title='Cinco cosas que el software libre me ha enseñado'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-4282488862527780629</id><published>2009-10-08T10:30:00.004-05:00</published><updated>2010-04-05T15:22:08.985-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><title type='text'>Cómo hacer preguntas de manera inteligente</title><content type='html'>Webiando por la red me encontré con  una interesante guía que nos explica como hacer correctamente una pregunta técnica por correo, en un grupo de noticias o en el foro de un sitio web: http://www.sindominio.net/ayuda/preguntas-inteligentes.html&lt;br /&gt;&lt;br /&gt;Desearía que todos los que participan en listas, foros y otros medios similares leyeran esto antes de preguntar algo :P.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Se me queda en la memoria la siguiente frase:&lt;br /&gt;Exageradamente "amigable" (de esa manera) o útil: Elige uno.&lt;br /&gt;&lt;br /&gt;Hasta la proxima.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-4282488862527780629?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/4282488862527780629/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2009/10/como-hacer-preguntas-de-manera.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/4282488862527780629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/4282488862527780629'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2009/10/como-hacer-preguntas-de-manera.html' title='Cómo hacer preguntas de manera inteligente'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-2681137380146376868</id><published>2009-09-18T13:04:00.006-05:00</published><updated>2010-04-05T15:22:17.307-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><title type='text'>Todo listo para el Software Freedom Day</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ubuntu-pa.org/sfdpng.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 516px; height: 730px;" src="http://www.ubuntu-pa.org/sfdpng.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Por segundo año se celebrará el &lt;a href="http://softwarefreedomday.org/teams/centralandsouthamerica/Panama/Panama2009"&gt;Software Freedom Day en Panamá&lt;/a&gt;, este año contamos con participación de varias comunidades además del team ubuntu-pa que son: Fedora Panama, Open Source Panama - Revolution y Lin Open Software.&lt;br /&gt;&lt;br /&gt;Gracias a la colaboración de muchos hemos logrado armar un buen evento este año y pese al &lt;a href="http://dtejera.blogspot.com/2009/09/cambio-de-sede-para-el-sofware-freedom.html"&gt;problema  con la sede original&lt;/a&gt; que logramos solucionar con el apoyo de nuestros amigos de la ULACIT y otros inconvenientes menores vamos a celebrar este evento en la fecha planeada.&lt;br /&gt;&lt;br /&gt;Solo me resta desearles a todos un feliz Sotware Freedom Day.&lt;br /&gt;&lt;br /&gt;Hasta pronto.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-2681137380146376868?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/2681137380146376868/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2009/09/todo-listo-para-el-software-freedom-day.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/2681137380146376868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/2681137380146376868'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2009/09/todo-listo-para-el-software-freedom-day.html' title='Todo listo para el Software Freedom Day'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-3022940647445597650</id><published>2009-08-20T22:28:00.025-05:00</published><updated>2010-04-05T15:22:23.427-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='J2ME'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Service'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><title type='text'>Integrando PHP5 y J2ME por medio de Web Services</title><content type='html'>&lt;p style="margin-bottom: 0cm;"&gt;Es algo difícil encontrar buena documentación sobre como crear una aplicación para móviles usando J2ME.&lt;br /&gt;Por lo general todas asumen que ya tienes tu web service funcionando y listo para usarse, pero hay un problema, el soporte en dispositivos móviles que implementan la JSR-172 es limitado por lo que aunque tengas un archivo WSDL bien definido puedes toparte con que no es posible crear el cliente por que el WSDL tiene elementos no soportados.&lt;br /&gt;&lt;br /&gt;Después de un rato de buscar encontré &lt;a href="http://www.devarticles.com/c/a/Java/PHP-Interacting-with-J2ME/1/"&gt;este sitio&lt;/a&gt;  que tiene una documentación algo obsoleta pero  me mostró dos herramientas claves NuSOAP para PHP y kSOAP para J2ME, además este &lt;a href="http://secangkirkopipanas.wordpress.com/2008/07/18/integrasi-php-dan-j2me-menggunakan-ksoap2/"&gt;otro sitio&lt;/a&gt; del que solo entiendo el código de ejemplo :-D&lt;/p&gt;  &lt;p style="margin-bottom: 0cm; font-weight: bold;"&gt;Manos a la obra:&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;Primero creamos nuestro web service en PHP para tal fin usaré la librería &lt;a href="http://sourceforge.net/projects/nusoap/"&gt;NuSOAP&lt;/a&gt; la versión 0.7.3.&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;La forma más simple de instalar  NuSOAP es descargando el archivo comprimido desde el sitio del  proyecto y extraerlo en la carpeta publica de nuestro sitio de  pruebas, en mi caso quedó de la siguiente forma:&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-weight: bold;"&gt;/var/www/ws/&lt;/span&gt;&lt;span style="text-decoration: none;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;|_nusoap-0.7.3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;|_lib&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;|    |_ &lt;/span&gt;&lt;span style="font-style: italic;"&gt;nusoap.php&lt;span style="color: rgb(102, 102, 102);"&gt; y otros archivos&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;|_samples&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;       |  |_&lt;/span&gt; &lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;varios ejemplos de como usar NuSOAP&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="text-decoration: none;"&gt;creamos el archivo &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;server.php&lt;/span&gt; con el siguiente contenido:&lt;/span&gt;&lt;/p&gt; &lt;pre class="brush: php; html-script: true; light:true"&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;// include NuSOAP library&lt;br /&gt;require_once('nusoap-0.7.3/lib/nusoap.php');&lt;br /&gt;&lt;br /&gt;// Create Web Service Server&lt;br /&gt;$server = new soap_server;&lt;br /&gt;&lt;br /&gt;$server-&gt;configureWSDL('hello', 'urn:hello');&lt;br /&gt;// Register Services&lt;br /&gt;// (Add) $server-&gt;register('add');&lt;br /&gt;$server-&gt;register('add',          // method name&lt;br /&gt;array('num1' =&gt; 'xsd:string', 'num2' =&gt; 'xsd:string'),// input parameters&lt;br /&gt;array('result' =&gt; 'xsd:string'),  // output parameters&lt;br /&gt;'urn:hello',                      // namespace&lt;br /&gt;'urn:hello#add',                  // soapaction&lt;br /&gt;'document',                       // style&lt;br /&gt;'literal',                        // use&lt;br /&gt;'Add num1 and num2'               // documentation&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;// (Substract)&lt;br /&gt;$server-&gt;register('substract',      // method name&lt;br /&gt;array('num1' =&gt; 'xsd:string', 'num2' =&gt; 'xsd:string'),// input parameters&lt;br /&gt;array('result' =&gt; 'xsd:string'),    // output parameters&lt;br /&gt;'urn:aritmatikawsdl',               // namespace&lt;br /&gt;'urn:aritmatikawsdl#substract',     // soapaction&lt;br /&gt;'rpc',                              // style&lt;br /&gt;'encoded',                          // use&lt;br /&gt;'Substract num1 and num2'           // documentation&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;// (Hello) $server-&gt;register('hello');&lt;br /&gt;$server-&gt;register('hello', //method name&lt;br /&gt;array('name' =&gt; 'xsd:string'), // input parameters&lt;br /&gt;array('return' =&gt; 'xsd:string'), // output parameters&lt;br /&gt;'urn:hello', // namespace&lt;br /&gt;'urn:hello#hello', // soapaction&lt;br /&gt;'rpc', // style&lt;br /&gt;'encoded', // use&lt;br /&gt;'Says hello to the caller' // documentation&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;// Define functions&lt;br /&gt;function hello ($name){&lt;br /&gt;return "Hello $name";&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function add ($num1, $num2){&lt;br /&gt;return $num1 + $num2;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function substract ($num1, $num2) {&lt;br /&gt;return $num1 - $num2;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;$server-&gt;service($HTTP_RAW_POST_DATA);&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Para  el cliente J2ME necesitamos la librería kSOAP2 2.1.2  (&lt;a href="http://sourceforge.net/projects/ksoap2/"&gt;http://sourceforge.net/projects/ksoap2/&lt;/a&gt;),  que pesa aproximadamente unos 41 KiB, la descargamos y la incluimos  en el proyecto.&lt;span style="text-decoration: none;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="text-decoration: none;"&gt;Creamos un MIDLet llamado NuSOAPClient con el  siguiente contenido:&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;  &lt;pre class="brush: java; html-script: false; light:true"&gt;package midlet;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import javax.microedition.lcdui.Display;&lt;br /&gt;import javax.microedition.lcdui.TextBox;&lt;br /&gt;import javax.microedition.midlet.MIDlet;&lt;br /&gt;import org.ksoap2.SoapEnvelope;&lt;br /&gt;import org.ksoap2.serialization.SoapObject;&lt;br /&gt;import org.ksoap2.serialization.SoapSerializationEnvelope;&lt;br /&gt;import org.ksoap2.transport.HttpTransport;&lt;br /&gt;import org.xmlpull.v1.XmlPullParserException;&lt;br /&gt;/**&lt;br /&gt;* @author eivar&lt;br /&gt;*/&lt;br /&gt;public class NuSOAPClient extends MIDlet {&lt;br /&gt;private Display display;&lt;br /&gt;//private String url = "http://0.0.0.1/ws/service.php";&lt;br /&gt;private String url = "http://localhost:80/ws/service.php";&lt;br /&gt;private TextBox textbox = null;&lt;br /&gt;&lt;br /&gt;public NuSOAPClient() {&lt;br /&gt;display = Display.getDisplay(this);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void startApp() {&lt;br /&gt;try {&lt;br /&gt;testWebService();&lt;br /&gt;} catch (Exception ex) {&lt;br /&gt;System.out.println(ex);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void pauseApp() {&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void destroyApp(boolean unconditional) {&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void testWebService() throws Exception {&lt;br /&gt;StringBuffer stringBuffer = new StringBuffer();&lt;br /&gt;TextBox textBox = null;&lt;br /&gt;&lt;br /&gt;// add service call&lt;br /&gt;String method = "add";&lt;br /&gt;SoapObject client = new SoapObject(url, method);&lt;br /&gt;client.addProperty("num1", "5");&lt;br /&gt;client.addProperty("num2", "5");&lt;br /&gt;HttpTransport transport = new HttpTransport(url);&lt;br /&gt;&lt;br /&gt;// creating the Soap Envelope&lt;br /&gt;SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);&lt;br /&gt;envelope.bodyOut = client;&lt;br /&gt;&lt;br /&gt;// call the WebService&lt;br /&gt;try {&lt;br /&gt;transport.call(method, envelope);&lt;br /&gt;} catch(XmlPullParserException io) {&lt;br /&gt;System.err.println(io);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// format the Result&lt;br /&gt;String result = envelope.getResponse().toString();&lt;br /&gt;stringBuffer.append(result);&lt;br /&gt;&lt;br /&gt;// display results in textbox&lt;br /&gt;textBox = new TextBox("call to add(5, 5) returns ", stringBuffer.toString(), 1024, 0);&lt;br /&gt;display.setCurrent(textBox);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="text-decoration: none;"&gt;Ahora solo nos queda ejecutar la aplicación y ver los resultados.&lt;/span&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;br /&gt;Para desarrollar este proyecto se usó NetBeans 6.5 y Java Wireless Toolkit 2.5.2.&lt;/span&gt;&lt;/span&gt; &lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="text-decoration: none;"&gt;Les dejo algunas capturas de pantalla:&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style="text-decoration: none;"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Xph0zkPcUSA/So6fHWOuTTI/AAAAAAAAAd4/Ns_oaGelyXc/s1600-h/nusoap_client1.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 144px; height: 320px;" src="http://4.bp.blogspot.com/_Xph0zkPcUSA/So6fHWOuTTI/AAAAAAAAAd4/Ns_oaGelyXc/s320/nusoap_client1.png" alt="" id="BLOGGER_PHOTO_ID_5372406354074815794" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Xph0zkPcUSA/So6fHo2el0I/AAAAAAAAAeA/lpYkuL1PON8/s1600-h/nusoap_client2.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 144px; height: 320px;" src="http://1.bp.blogspot.com/_Xph0zkPcUSA/So6fHo2el0I/AAAAAAAAAeA/lpYkuL1PON8/s320/nusoap_client2.png" alt="" id="BLOGGER_PHOTO_ID_5372406359073396546" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Xph0zkPcUSA/So6fHxiQ8HI/AAAAAAAAAeI/5URZkwJX2ZM/s1600-h/nusoap_client3.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 144px; height: 320px;" src="http://4.bp.blogspot.com/_Xph0zkPcUSA/So6fHxiQ8HI/AAAAAAAAAeI/5URZkwJX2ZM/s320/nusoap_client3.png" alt="" id="BLOGGER_PHOTO_ID_5372406361404534898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-3022940647445597650?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/3022940647445597650/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2009/08/integrando-php5-y-j2me-por-medio-de-web.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3022940647445597650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3022940647445597650'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2009/08/integrando-php5-y-j2me-por-medio-de-web.html' title='Integrando PHP5 y J2ME por medio de Web Services'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Xph0zkPcUSA/So6fHWOuTTI/AAAAAAAAAd4/Ns_oaGelyXc/s72-c/nusoap_client1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-3312446708927988069</id><published>2009-07-30T16:03:00.004-05:00</published><updated>2010-04-05T15:22:28.887-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><title type='text'>Semana de la Ingeniería en la ULACIT</title><content type='html'>&lt;p style="margin-bottom: 0cm;"&gt;El pasado 28 de Julio de 2009 El &lt;a href="http://www.ubuntu-pa.org/"&gt;Ubuntu Loco-Team&lt;/a&gt; de Panamá fue invitado a participar de la semana de ingeniería de la &lt;a href="http://www.ulacit.ac.pa/"&gt;ULACIT&lt;/a&gt;.&lt;/p&gt;  &lt;p style="margin-bottom: 0cm;"&gt;El evento comenzó aproximadamente a las 6:30pm con la presentación del profesor de la &lt;a href="http://www.ulacit.ac.pa/"&gt;ULACIT&lt;/a&gt;, el Ing. Geinier Miranda con el tema “&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;Seguridad Informática en la empresa&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;”. &lt;/strong&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;La verdad que al igual que comenta &lt;a href="http://dtejera.blogspot.com/2009/07/semana-de-la-ingenieria-ulacit.html"&gt;Di3go&lt;/a&gt; fue muy decepcionante que confundiera las  definiciones de &lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;i&gt;&lt;span style="font-weight: normal;"&gt;&lt;a href="http://es.wikipedia.org/wiki/Hacker"&gt;Hacker&lt;/a&gt; &lt;/span&gt;&lt;/i&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;y&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;i&gt;&lt;span style="font-weight: normal;"&gt; &lt;a href="http://es.wikipedia.org/wiki/Cracker"&gt;Cracker&lt;/a&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0cm;"&gt;&lt;strong&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;Seguido a esto &lt;a href="http://www.linkedin.com/pub/ramy-deeb/6/100/485"&gt;Ramy Deeb&lt;/a&gt; dictó una conferencia que me gustó mucho en verdad: “Cómo Economizar dinero en el gobierno con &lt;a href="http://es.wikipedia.org/wiki/Virtualizacion"&gt;virtualización&lt;/a&gt; y software Open Source “&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm4.static.flickr.com/3439/3772963254_e92471e81c.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 500px; height: 375px;" src="http://farm4.static.flickr.com/3439/3772963254_e92471e81c.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;   &lt;p style="margin-bottom: 0cm;"&gt;&lt;strong&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;Al final hablé yo sobre el tema “&lt;a href="http://es.wikipedia.org/wiki/Software_libre"&gt;Software Libre&lt;/a&gt; en la Educación” admito que&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt; pudo ser mejor&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt; mejor de hecho estoy muy de acuerdo con los comentarios de &lt;a href="http://dmaggot.wordpress.com/2009/07/30/free-software-and-education/"&gt;d&lt;/a&gt;&lt;a href="http://dmaggot.wordpress.com/2009/07/30/free-software-and-education/"&gt;Maggot&lt;/a&gt;  sobre esto.&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;style type="text/css"&gt;  &lt;!--   @page { margin: 2cm }   P { margin-bottom: 0.21cm }  --&gt;  &lt;/style&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;strong&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;Cuando el Evento terminó nos reunimos para&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt; hablar sobre la organización del Software Freedom Day en la cafetería de la &lt;a href="http://www.ulacit.ac.pa/"&gt;ULACIT&lt;/a&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm3.static.flickr.com/2594/3772156385_2281cfb160.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 500px; height: 375px;" src="http://farm3.static.flickr.com/2594/3772156385_2281cfb160.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;style type="text/css"&gt;  &lt;!--   @page { margin: 2cm }   P { margin-bottom: 0.21cm }  --&gt;  &lt;/style&gt; &lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;Buscaremos un lugar diferente con el propósito de llegarle a otras personas.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;Los temas de este año serán:&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;Libertad de Software (ya que es el día de la libertad de software)&lt;/li&gt;&lt;li&gt;El proyecto Ubuntu y su participación en la idea de la libertad de Software  &lt;/li&gt;&lt;li&gt;1 o 2 charlas demostrativas de alguna herramienta.  &lt;/li&gt;&lt;li&gt;Stands de exhibición (Computadoras de los Ubunteros para que las gente las use y se muestren proyectos, etc)&lt;/li&gt;&lt;/ul&gt;Espero que este año la celebración de FSD sea mucho mejor a la del año pasado.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-3312446708927988069?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/3312446708927988069/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2009/07/semana-de-la-ingenieria-en-la-ulacit.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3312446708927988069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3312446708927988069'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2009/07/semana-de-la-ingenieria-en-la-ulacit.html' title='Semana de la Ingeniería en la ULACIT'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3439/3772963254_e92471e81c_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-6315832491836750297</id><published>2009-07-28T11:31:00.006-05:00</published><updated>2010-04-05T15:22:32.923-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><title type='text'>Proyectos de EHealth</title><content type='html'>Durante mi viaje a &lt;a href="http://es.wikipedia.org/wiki/Nicaragua"&gt;Nicaragua&lt;/a&gt; para participar en el &lt;a href="http://encuentro.sl-centroamerica.org/"&gt;ECSL&lt;/a&gt;, conocí sobre una iniciativa, que busca desarrollar proyectos de &lt;a href="http://en.wikipedia.org/wiki/EHealth"&gt;ehealth&lt;/a&gt; usando &lt;a href="http://es.wikipedia.org/wiki/Software_libre"&gt;Sotware Libre&lt;/a&gt; en dicho país.&lt;br /&gt;&lt;br /&gt;Apenas estoy empezando a involucrarme en el proyecto pero me parece algo muy interesate.&lt;br /&gt;&lt;br /&gt;Hay mucho por aprender, con la ayuda de los que participan en el proyecto (lastima que aun no tengan sitio web) he estado leyendo sobre el tema.&lt;br /&gt;&lt;br /&gt;Algunos terminos interesantes que puedo resaltar son:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Electronic_Medical_Record"&gt;Electronic Medical Record System&lt;/a&gt; y el framework &lt;a href="http://openmrs.org/wiki/OpenMRS"&gt;OpenMRS&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/MHealth"&gt;MHealth&lt;/a&gt; y &lt;a href="http://www.openrosa.org/"&gt;OpenROSA&lt;/a&gt; (actualmente están moviendo sus servidores, por lo que el sitio no esta disponible  :-/ )&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-6315832491836750297?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/6315832491836750297/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2009/07/proyectos-de-ehealth.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/6315832491836750297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/6315832491836750297'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2009/07/proyectos-de-ehealth.html' title='Proyectos de EHealth'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-3606241489915023559</id><published>2009-07-01T18:28:00.007-05:00</published><updated>2010-04-05T15:22:37.287-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><title type='text'>Cifrando conversaciones en Pidgin</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.pidgin.im/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 100px; height: 169px;" src="http://cjenkins.files.wordpress.com/2009/07/pidgin-pajaro.png?w=100&amp;amp;h=169" alt="" border="0" /&gt;&lt;/a&gt;&lt;p&gt;&lt;strong&gt;Pidgin-Encryption&lt;/strong&gt;&lt;span style="font-weight: bold;"&gt;, &lt;/span&gt;es un complemento para el pidgin que nos permite tener comunicarnos de una forma más segura. Pueden encontrar más información en su página oficial:&lt;/p&gt; &lt;p style="text-align: center;"&gt;&lt;a href="http://pidgin-encrypt.sourceforge.net/"&gt;http://pidgin-encrypt.sourceforge.net/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Este complemento permite cifrar de forma transparente los mensajes instantáneos de punto a punto con el algoritmo RSA. Es muy fácil de usar y muy seguro. Automáticamente crea un par de llaves, pública y privada, cuando se carga el plugin. De la misma forma, transmite la llave pública automáticamente a los usuarios con los que deseas hablar.&lt;/p&gt;&lt;p&gt;Los pasos para instalarlo en Ubuntu son:&lt;/p&gt; &lt;p&gt;1&lt;span style="font-weight: bold;"&gt;. &lt;/span&gt;Instalar el paquete usando apt-get, aptitude o synaptic, por ejemplo con apt-get ejecutamos en una consola el siguiente comando:&lt;br /&gt;&lt;/p&gt;&lt;pre class="brush:bash"&gt;sudo apt-get install pidgin-encryption&lt;/pre&gt;&lt;br /&gt;2. Activamos el complemento en pidgin&lt;strong&gt; &lt;/strong&gt;usando el menú&lt;strong&gt;&lt;br /&gt;Herramientas-&gt;Com&lt;/strong&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cjenkins.files.wordpress.com/2009/07/complementos.png?w=409&amp;amp;h=282"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 409px; height: 282px;" src="http://cjenkins.files.wordpress.com/2009/07/complementos.png?w=409&amp;amp;h=282" alt="" border="0" /&gt;&lt;/a&gt;&lt;strong&gt;plementos.&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;Buscamos ya activamos el plugin&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cjenkins.files.wordpress.com/2009/07/activacion-del-complemento.png?w=509&amp;amp;h=416"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 509px; height: 415px;" src="http://cjenkins.files.wordpress.com/2009/07/activacion-del-complemento.png?w=509&amp;amp;h=416" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;Ahora solo nos falta abrir una ventana de conversación con la persona a la que deseamos mandar mensajes cifrados y presionamos en el candado que aparece en la parte superior de dicha ventana. Nos deben aparecer una serie de dialogos a los que les damos OK y listo.  Está de más decir que es necesario que ambos tengan el plugin instalado y funcionando.&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cjenkins.files.wordpress.com/2009/07/activacion-de-la-conversacion.png?w=303&amp;amp;h=105"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 303px; height: 105px;" src="http://cjenkins.files.wordpress.com/2009/07/activacion-de-la-conversacion.png?w=303&amp;amp;h=105" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;Activación de la conversación&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;span style="font-weight: bold;"&gt;Gracias a Cjenkins por el post original: &lt;/span&gt;&lt;a href="http://cjenkins.wordpress.com/2009/07/01/habla-encriptado-con-pidgin/"&gt;Habla Encriptado con Pidgin&lt;/a&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-3606241489915023559?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/3606241489915023559/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2009/07/cifrando-conversaciones-en-pidgin.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3606241489915023559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3606241489915023559'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2009/07/cifrando-conversaciones-en-pidgin.html' title='Cifrando conversaciones en Pidgin'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-2819799984323326188</id><published>2009-07-01T15:02:00.003-05:00</published><updated>2010-04-05T15:22:40.569-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><title type='text'>La Declaración de Estelí.</title><content type='html'>Firmada por los asistentes al I Encuentro Centroamericano de Software Libre 2009.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Declaración de Estelí&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;-I-&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Definiciones: Software Libre: Programa de computación cuya licencia&lt;br /&gt;garantiza al usuario acceso al código fuente del programa y lo&lt;br /&gt;autoriza a ejecutarlo con cualquier propósito, modificarlo y&lt;br /&gt;redistribuir tanto el programa original como sus modificaciones, sin&lt;br /&gt;tener que pagar regalías adicionales a los desarrolladores previos.&lt;br /&gt;&lt;br /&gt;Estándares Abiertos: Especificaciones técnicas, publicadas y&lt;br /&gt;controladas por alguna organización que se encarga de su desarrollo,&lt;br /&gt;las cuales han sido aceptadas por la industria, estando a disposición&lt;br /&gt;de cualquier usuario para ser implementadas en un software libre u&lt;br /&gt;otro, promoviendo la competitividad, interoperatividad o flexibilidad.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;- II -&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Preámbulo: Nosotros y nosotras, integrantes de la comunidad&lt;br /&gt;centroamericana de personas usuarias, desarrolladoras y activistas de&lt;br /&gt;Software Libre nos hemos reunido en la ciudad de Estelí, Nicaragua,&lt;br /&gt;con los siguientes objetivos: reunir experiencias de organización por&lt;br /&gt;parte de las comunidades, compartir conocimiento técnico, crear lazos&lt;br /&gt;sociales y cohesión de ideas en la región y fijar objetivos comunes&lt;br /&gt;para el impulso del Software Libre en Centroamérica.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;- III -&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Tomando en cuenta que todos los gobiernos de nuestros países han&lt;br /&gt;firmado y ratificado la Carta Iberoamericana de Gobierno Electrónico[1],&lt;br /&gt;enfatizamos en la importancia de recordar las afirmaciones de dicha&lt;br /&gt;Carta en términos de recomendar: "el uso de Estándares Abiertos y de&lt;br /&gt;Software Libre en razón de la seguridad, sostenibilidad a largo plazo&lt;br /&gt;y para prevenir que el conocimiento público no sea privatizado."&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;- IV -&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Considerando también que el uso del Software Libre y Estándares&lt;br /&gt;Abiertos&lt;br /&gt;&lt;br /&gt;1. Contribuye a fortalecer a la industria nacional de software.&lt;br /&gt;&lt;br /&gt;2. Contribuye efectivamente con la reducción de la brecha social y&lt;br /&gt;tecnológica.&lt;br /&gt;&lt;br /&gt;3. Permite la interoperabilidad de los sistemas de información del&lt;br /&gt;Estado para dar respuestas rápidas y oportunas a los ciudadanos y&lt;br /&gt;ciudadanas, mejorando la gobernabilidad y la autonomía.&lt;br /&gt;&lt;br /&gt;4. Permite mejorar los niveles de seguridad de los sistemas.&lt;br /&gt;&lt;br /&gt;5. Es un instrumento para alcanzar la soberanía y autonomía&lt;br /&gt;tecnológica, con una mejor inverisón de los recursos públicos.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;- V -&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Acordamos instar a los gobiernos, instituciones educativas, centros de&lt;br /&gt;investigación, sociedad civil y a todas las instancias relacionadas de&lt;br /&gt;Belice, Costa Rica, El Salvador, Guatemala, Honduras, Nicaragua, y&lt;br /&gt;Panamá a que:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 0);"&gt;1. &lt;/span&gt;Se establezca como política de Estado, el uso de Estándares Abiertos&lt;br /&gt;y de Software Libre en la Administración Pública.&lt;br /&gt;&lt;br /&gt;2. Se fomente la investigación y el desarrollo de software desde un&lt;br /&gt;modelo de licenciamiento, construcción y acceso libres, desarrollado&lt;br /&gt;con Estándares Abiertos, procurando incentivos especiales para esos&lt;br /&gt;fines.&lt;br /&gt;&lt;br /&gt;3. Se promueva el uso generalizado del Software Libre y Estándares&lt;br /&gt;Abiertos en la sociedad, capacitando e instruyendo a los usuarios y&lt;br /&gt;usuarias.&lt;br /&gt;&lt;br /&gt;4. Se establezcan políticas para incluir el Software Libre desarrollado&lt;br /&gt;con Estándares Abiertos, en los programas de educación básica y&lt;br /&gt;diversificada, bajo los principios de una Educación Tecnológica&lt;br /&gt;inclusiva, creativa y solidaria.&lt;br /&gt;&lt;br /&gt;5. Se establezcan dentro de los planes y programas de fomento e&lt;br /&gt;implementación de Software Libre y de Estándares Abiertos, mecanismos&lt;br /&gt;que respeten la identidad, diversidad de contextos, culturas, etnias y&lt;br /&gt;géneros.&lt;br /&gt;&lt;br /&gt;6. Se procure el desarrollo de sistemas operativos y aplicaciones&lt;br /&gt;adecuadas para poblaciones específicas según sus características&lt;br /&gt;étnicas, culturales y socioeconómicas.&lt;br /&gt;&lt;br /&gt;7. Que las inequidades sociales en el acceso a la educación y la&lt;br /&gt;tecnología pueden reproducir los modelos patriarcales y que el&lt;br /&gt;Software Libre puede ser una herramienta que aporte a la&lt;br /&gt;participación, autonomía y empoderamiento de las mujeres en la&lt;br /&gt;sociedad.&lt;br /&gt;&lt;br /&gt;8. Que no se permita el patentamiento de software y de algoritmos, pues&lt;br /&gt;atenta contra el desarrollo tecnológico de nuestros países y las&lt;br /&gt;oportunidades de nuestra población para convertirse en sujetos activos&lt;br /&gt;en la construcción del conocimiento.&lt;br /&gt;&lt;br /&gt;9. Que las instituciones públicas deben compartir la información&lt;br /&gt;referente a solicitudes de patentamiento y modificaciones a las leyes&lt;br /&gt;de derechos de autor, para que esos datos sean accesibles de manera&lt;br /&gt;gratuita y estén disponibles a través de medios digitales, utilizando&lt;br /&gt;Estándares Abiertos.&lt;br /&gt;&lt;br /&gt;10. Que la información y los estudios realizados en universidades e&lt;br /&gt;instituciones públicas deben estar disponibles para su uso,&lt;br /&gt;aprendizaje y mejoramiento por ser de interés público.&lt;br /&gt;&lt;br /&gt;11. Que los currículums universitarios deben incorporar dentro de sus&lt;br /&gt;asignaturas, los esquemas de licenciamiento libres.&lt;br /&gt;&lt;br /&gt;12. Que las universidades deben incluir dentro de las carreras afines&lt;br /&gt;al desarrollo de sistemas, los conocimientos básicos acerca de las&lt;br /&gt;nociones generales de derechos de autor y esquemas de licenciamiento.&lt;br /&gt;&lt;br /&gt;Dado en la ciudad de Estelí, Nicaragua, a los veinte días del mes de&lt;br /&gt;junio de dos mil nueve.&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;&lt;span style="color: rgb(102, 51, 0);"&gt;[1] &lt;/span&gt;&lt;span style="font-style: italic;"&gt;Aprobada por la IX Conferencia Iberoamericana de Ministros de&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Administración Pública y Reforma del Estado y ratificada en la la XVII&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Cumbre Iberoamericana de Jefes de Estado y de Gobierno en Santiago,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Chile, el 10 de noviembre de 2007&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-2819799984323326188?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/2819799984323326188/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2009/07/la-declaracion-de-esteli.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/2819799984323326188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/2819799984323326188'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2009/07/la-declaracion-de-esteli.html' title='La Declaración de Estelí.'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-7358190837678133521</id><published>2009-07-01T14:31:00.005-05:00</published><updated>2010-04-05T15:22:43.547-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><title type='text'>Lo que otros tienen que decir del ECSL</title><content type='html'>Es imposible para una sola persona cubrir todo que pasó en el ECSL, por eso es importante ver lo que otros tienen que comentar, bueno aquí coloco un grupo de enlaces hacia blogs de otros centroamericanos que participaron en el encuentro:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://adario21.wordpress.com/2009/06/20/ecsl-nicaragua-dia-0/"&gt;Dia cero por Adario&lt;/a&gt;&lt;br /&gt;Resumen por Luis Alvarado: &lt;a href="http://luisalvarado.blogspot.com/2009/06/ecsl-dia-0-viaje-en-el-bus-libre-de.html"&gt;día 0&lt;/a&gt;, &lt;a href="http://luisalvarado.blogspot.com/2009/06/ecsl-dia-1-estado-del-sl-en.html"&gt;día 1&lt;/a&gt;, &lt;a href="http://luisalvarado.blogspot.com/2009/06/ecsl-dia-2-mesas-de-trabajo.html"&gt;día 2&lt;/a&gt;, &lt;a href="http://luisalvarado.blogspot.com/2009/06/ecsl-dia-3-clausura-y-bar-sin-camp.html"&gt;día 3&lt;/a&gt;, &lt;a href="http://luisalvarado.blogspot.com/2009/06/escl-dia-4-de-regreso-casa.html"&gt;día 4&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://fitoria.net/2009/06/20/ecsl-fotos-y-mas/"&gt;Recopilación de Fitoria&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Videos del ECSL:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.archive.org/search.php?query=ecsl"&gt;Videos en www.archive.org&lt;/a&gt;&lt;br /&gt;&lt;a href="http://gwolf.org/blog/ogg-stream-ecsl"&gt;Videos en el blog de Gunnar Wolf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Algunas fotos del ECSL:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/15593136@N07/"&gt;http://www.flickr.com/photos/15593136@N07/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/jimbodoors94/ECSL#"&gt;http://picasaweb.google.com/jimbodoors94/ECSL#&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-7358190837678133521?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/7358190837678133521/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2009/07/lo-que-otros-tienes-que-decir-del-ecsl.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/7358190837678133521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/7358190837678133521'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2009/07/lo-que-otros-tienes-que-decir-del-ecsl.html' title='Lo que otros tienen que decir del ECSL'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-1014183214688268576</id><published>2009-07-01T13:35:00.008-05:00</published><updated>2010-04-05T15:22:50.019-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Centroamerica'/><category scheme='http://www.blogger.com/atom/ns#' term='ecsl'/><category scheme='http://www.blogger.com/atom/ns#' term='ubucon'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='Encuentro'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Primer Ubucon Centro Americano en el ECSL</title><content type='html'>Durante el primer Encuentro Centroamericano de Software Libre (ECSL) nos reunimos los lideres de las comunidades locales de ubuntu en centroamerica para discutir varios temas relacionas con nuestras comunidades, metas para este año 2009 y los problemas que enfrentamos.&lt;br /&gt;&lt;br /&gt;Producto de dicho ubucon surgieron varias iniciativas que planeamos desarrollar:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Dado que actualmente, solo existen dos LoCo Teams aprovados en la región de centroamerica Ubuntu Nicaragua y El Salvador, estos ayudaran a los demas teams para que sean oficialmente aprovados.&lt;/li&gt;&lt;li&gt;Se creará un único foro Centro Americano de soporte en lugar de seis y redirecionaremos a todos los usuarios hacia el, de modo que podamos beneficiarnos de los conocimientos de una comunidad mucho mayor.&lt;/li&gt;&lt;li&gt;Se creará un único canal irc de soporte #ubuntu-centroamerica y los canales locales será conservados para reuniones y temas internos de cada LoCo Team.&lt;/li&gt;&lt;li&gt;Se modificará los diferentes web sites de los teams en centro america, creando una única plantilla para Drupal para los seis países.&lt;/li&gt;&lt;li&gt;Participaremos en el Ubuntu Global Bug Jam como Ubuntu Centro America en un esfuerzo conjunto.&lt;/li&gt;&lt;/ul&gt;Bueno principalmente lo que buscamos es colaborar entre los paices de la región y aprender mutuamente.&lt;br /&gt;&lt;br /&gt;Pueden ver más detalles en:&lt;br /&gt;&lt;a href="http://leogg.wordpress.com/2009/06/19/results-of-the-i-ubucon-central-america/"&gt;Resultados del Primer Ubucon Centroamerica (en ingles)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://josernestodavila.blogspot.com/2009/06/ubuconf-centroamericano-en-el-ecsl.html"&gt;Resumen de José E. Dávila del Ubucon&lt;/a&gt;&lt;br /&gt;&lt;a href="http://diegoturcios.wordpress.com/2009/06/19/100/"&gt;Resumen de Diego Trucios&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-1014183214688268576?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/1014183214688268576/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2009/07/primer-ubucon-centro-americano-en-el.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/1014183214688268576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/1014183214688268576'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2009/07/primer-ubucon-centro-americano-en-el.html' title='Primer Ubucon Centro Americano en el ECSL'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-6551518921916699230</id><published>2009-06-28T17:44:00.008-05:00</published><updated>2010-01-07T10:46:14.943-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Juegos'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Le gané al GNU Chess :)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Xph0zkPcUSA/Skfyvu6fl7I/AAAAAAAAAbo/Jvfbdu5I6IY/s1600-h/Pantallazo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 144px;" src="http://3.bp.blogspot.com/_Xph0zkPcUSA/Skfyvu6fl7I/AAAAAAAAAbo/Jvfbdu5I6IY/s200/Pantallazo.png" alt="" id="BLOGGER_PHOTO_ID_5352513584014268338" border="0" /&gt;&lt;/a&gt;Bueno hace algún tiempo ya empecé a jugar ajedrez contra el &lt;span style="font-weight: bold;"&gt;GNU Chess&lt;/span&gt; en mis ratos libres, aprendiendo y practicando este interesante juego.&lt;br /&gt;&lt;br /&gt;Me costó bastante al inicio y perdía de forma muy humillante :P pero... hoy por fin gané! Lo admito no fue la mejor partida y además estaba en modo fácil pero gracias a que el glChess me permite guardar las partidas podré revisar que fue lo que hice, a continuación el contenido del juego guardado &lt;span style="font-weight: bold;"&gt;~/ajedrez_partidas/versus_gnuchess_easy.pgn&lt;/span&gt; :&lt;br /&gt;&lt;pre class="brush: bash; light:true"&gt;&lt;br /&gt;[Event "Humano contra GNU Chess"]&lt;br /&gt;[Site "?"]&lt;br /&gt;[Date "2009.06.28"]&lt;br /&gt;[Round "?"]&lt;br /&gt;[White "Blancas"]&lt;br /&gt;[Black "Negras"]&lt;br /&gt;[Result "1-0"]&lt;br /&gt;[BlackAI "GNU Chess"]&lt;br /&gt;[BlackLevel "easy"]&lt;br /&gt;&lt;br /&gt;1. Nf3 Nf6 2. g3 d5 3. d4 Nc6 4. c3 Bf5 5. Na3 Be4 6. Nb5 e6 7. h4 Be7 8. e3&lt;br /&gt;O-O 9. Bd3 Bxd3 10. Qxd3 Re8 11. Bd2 Rc8 12. O-O-O Ne4 13. Rhf1 a6 14. Na3 Bxa3&lt;br /&gt;15. bxa3 Rb8 16. a4 Rc8 17. a3 Rb8 18. g4 Rc8 19. Ng5 Nxg5 20. hxg5 Qxg5 21.&lt;br /&gt;Rg1 Rcd8 22. f4 Qe7 23. c4 dxc4 24. Qxc4 Qxa3+ 25. Kc2 Rd5 26. Qd3 Qa2+ 27. Kc1&lt;br /&gt;Qxa4 28. g5 b5 29. Bc3 b4 30. Bb2 Qa5 31. Rd2 Kh8 32. Kc2 Qa2 33. Ra1 Nxd4+ 34.&lt;br /&gt;Kd1 Qb3+ 35. Qxb3 Nxb3 36. Rxd5 exd5 37. Rxa6 Rxe3 38. Bc1 Nxc1 39. Kxc1 c5 40.&lt;br /&gt;Ra8+ Re8 41. Rxe8# 1-0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Hasta la próxima.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-6551518921916699230?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/6551518921916699230/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2009/06/le-gane-el-gnu-chess.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/6551518921916699230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/6551518921916699230'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2009/06/le-gane-el-gnu-chess.html' title='Le gané al GNU Chess :)'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Xph0zkPcUSA/Skfyvu6fl7I/AAAAAAAAAbo/Jvfbdu5I6IY/s72-c/Pantallazo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-5726872080938919426</id><published>2009-06-26T17:17:00.006-05:00</published><updated>2010-04-05T15:22:53.829-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Centroamerica'/><category scheme='http://www.blogger.com/atom/ns#' term='ecsl'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='Encuentro'/><title type='text'>Resumen del primer ECSL</title><content type='html'>Bueno por fin tengo algo de tiempo para escribir sobre los gratos momentos compartidos junto a la comunidad centroamericana en el ECSL.&lt;br /&gt;Gracias a Mauro Rosero por escribir un muy completo resumen sobre lo acontecido en dicho encuentro y por dejarme publicarlo en mi blog.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;1. Ver como las universidades de Costa Rica apoyan a las comunidades de software libre del país, a tal punto que asumieron el patrocinio de la delegación costaricense cuyo número de asistentes fue aproximadamente de 20, de las diferentes comunidades ticas. También expusieron los voceros de Costa Rica como las universidades le brindan espacio e infraestructura para que operen y de paso desarrollan proyectos en conjunto.&lt;br /&gt;&lt;br /&gt;2. Otra iniciativa interesante es la Revista Centroamericana de Software Libre desarrollada por la Comunidad de Honduras, muy completa e interesante. Tal vez su única crítica sería el bajo contenido en temas de filosofía, pero igual es un proyecto a emular o colaborar. Traje algunos pocos ejemplares para los interesados y creamos el canal de comunicación para cooperar con artículos, así para cuando salga una nueva edición se nos envíe un número plural.&lt;br /&gt;&lt;br /&gt;3. Se desarrollaron diferentes mesas temáticas de la cual salió un documento denominado la "Declaración de Estelí" donde resume los acuerdos y compromisos asumidos en este evento.&lt;br /&gt;&lt;br /&gt;4. Se dio una mesa improvisada de proyectos generales, donde se trazaron acuerdos de colaboración técnica entre representantes de varias ONG's que asistieron y formaron parte de esta mesa de trabajo en el área de salud, educación, análisis de riesgos e inclusión de discapacitados.  En el área de salud quedamos en colaborar con una ONG basada en Nicaragua para un programa de intercambio de ayuda en programación en sistemas libres de atención como OpenMRS y ellos nos colaborarían en lo que pudieramos conseguir el espacio para que nos hablen sus experiencias en el uso de OpenMRS y otras alternativas de software libre en la salud.   De hecho se puede crear un plan de implementación con su asesoría para nuestros hospitales.&lt;br /&gt;&lt;br /&gt;En el área de educación hicimos contactos para traer a Panamá especialistas en Sugar, que es la plataforma donde opera la OLPC y desarrollar proyectos encaminados a crear una plataforma educativa basa en software libre con herramientas como SCRATCH, SUGAR, MOODLE orientado a la enseñanza básica.  Logramos contactos técnicos y de gestión con los que en los próximos días estaremos trabajando para el desarrollo de una propuesta y plan de acción para los países que nos involucramos en esta temática.&lt;br /&gt;&lt;br /&gt;Colaboraremos e interactuaremos con la Universidad de Costa Rica y los grupos de usuarios de Costa Rica y México para participar en proyectos como  EDUSOL, donde ya nos inscribimos para participar.&lt;br /&gt;&lt;br /&gt;Espero que en la próxima reunión nacional que hagamos podamos comentar más al respecto de estos temas  y ver los proyectos de interés donde los que no asistieron puedan involucrarse.  Hemos articulado como región centroamericana un conjunto de proyectos interesantes que ahora pretendemos ejecutar como comunidad centroamericana y ha sido un mandato de este encuentro hacer el lobbie respectivo para convertirlos en realidad con los actores interesados en cada país.&lt;br /&gt;&lt;br /&gt;5. Lo más importante de este encuentro fue la camaradería, fue bastante diferente a otros encuentros a que se socializó muchísimo y fue muy proactivo, el lugar geográfico del encuentro fue en un Centro Turístico, de aprendizaje tecnológico para niños y promoción natural, entre otras cosas. Un lugar campestre con un clima muy bueno, un paisaje espectacular y gente muy amable.&lt;br /&gt;&lt;br /&gt;Aquí les dejo el enlace a las fotos:&lt;br /&gt;&lt;br /&gt;6. Eivar Montenegro y mi persona quedamos como los representantes por Panamá para el Comité Organizador del próximo año, ya que se decidió que debían incorporarse por lo menos 2 representantes por país.  Aún no se ha seleccionado el país sede para el próximo año, pero existen propuestas de Costa Rica  y Salvador. Tentativamente, los que asistimos por Panamá consideramos no hacer una propuesta hasta conversar con todos ustedes, pero pensamos que un mejor momento sería el 2011 y apoyar la propuesta de sede de Costa Rica.&lt;br /&gt;&lt;br /&gt;Bueno hay mucho más que contar, creo que fue una experiencia que no tiene precio, y los que asistimos hemos regresado con un claro concepto y objetivo de trabajar en el desarrollo y para el desarrollo de nuestra comunidad con quiénes quieran realmente apoyar sin imposiciones y agendas preestablecidas. Encontramos que hay otras fuentes de recursos y apoyo  que tienen un compromiso más claro del movimiento y que estuvieron allí con nosotros de verdad, si las organizaciones que están en nuestro país siguen actuando a espalda de nuestras organizaciones.&lt;br /&gt;&lt;br /&gt;7. Me siento muy feliz de haber regresado a Panamá, toda vez que nos quedá afrontar la visita de Richard Stallman, como uno de los compromisos más cercanos, pero triste porque el evento terminó y por algún tiempo solo compartiré virtualmente el espacio de aquellos amigos que conocimos en Estelí.&lt;br /&gt;&lt;br /&gt;Mauro Rosero.&lt;br /&gt;&lt;/blockquote&gt;Por allí estaré escribiendo más acerca del ECSL y las diferentes iniciativas que surgieron del mismo.&lt;br /&gt;&lt;br /&gt;Saludos.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-5726872080938919426?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/5726872080938919426/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2009/06/resumen-del-primer-ecsl.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/5726872080938919426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/5726872080938919426'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2009/06/resumen-del-primer-ecsl.html' title='Resumen del primer ECSL'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-521129346137634213</id><published>2009-06-11T16:52:00.005-05:00</published><updated>2010-04-05T15:22:58.586-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Centroamerica'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='Encuentro'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><title type='text'>Encuentro Centroamericano de Software Libre</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://sl-centroamerica.org/images/3/3f/Bannerhori.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 101px;" src="http://sl-centroamerica.org/images/3/3f/Bannerhori.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;El primer encuentro centroamericano de software libre se está acercando, después de muchos meses de espera ya solo faltan solo 6 días. Este evento promete mucho, con charlas técnicas, mesas de trabajo y tiempo de intercambio cultural en especial el "BarCamp sin Camp".&lt;br /&gt;&lt;br /&gt;Ya tengo casi todo preparado: mi pasaporte, permiso del trabajo, etc para el viaje y hoy paso a comprar mi boleto :), estoy aún más emocionado porque es mi primer viaje fuera del país.&lt;br /&gt;&lt;br /&gt;Recuerdo cuando surgió la famosa &lt;a href="http://es.wikipedia.org/wiki/Brote_de_gripe_A_%28H1N1%29_de_2009"&gt;Gripe Porcina&lt;/a&gt; tenía mis dudas si se cancelaría el ECSL.&lt;br /&gt;&lt;br /&gt;Bueno lo importante ahora es que pronto estaremos por allá muchos amigos de las distintas comunidades de centro y sur américa compartiendo anécdotas y discutiendo sobre el futuro del Software Libre a nivel regional.&lt;br /&gt;&lt;br /&gt;Gracias al Grupo de usuarios GNU/Linux Nicaragua por organizar todo.&lt;br /&gt;&lt;br /&gt;Para más información sobre el encuentro pueden visitar el &lt;a href="http://encuentro.sl-centroamerica.org/"&gt;sitio oficial&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-521129346137634213?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='text' href='http://encuentro.sl-centroamerica.org/' length='0'/><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/521129346137634213/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2009/06/encuentro-centroamericano-de-software.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/521129346137634213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/521129346137634213'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2009/06/encuentro-centroamericano-de-software.html' title='Encuentro Centroamericano de Software Libre'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-2156243686183910196</id><published>2009-04-20T00:03:00.005-05:00</published><updated>2010-04-05T15:23:02.151-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><title type='text'>FLISOL 2009</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_fWhXbpnpdnc/SeNM9zW3WRI/AAAAAAAAB-8/7esG-FEuSVE/s320/Afiche-FLISOL.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 231px; height: 320px;" src="http://4.bp.blogspot.com/_fWhXbpnpdnc/SeNM9zW3WRI/AAAAAAAAB-8/7esG-FEuSVE/s320/Afiche-FLISOL.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;El 25 de Abril del presente año se celebrará el Festival Latinoamericano de Instalación de Software Libre, con el lema "¿Tu crees que eres libre si tu software no lo es?"&lt;br /&gt;que se realizara en varias ciudades de la República de Panamá y latinoamérica,.&lt;br /&gt;Muchas comunidades se han reunido para coordinar y celebrar este evento, al cual invitamos a todos a participar desde su localidad más cercana.&lt;br /&gt;&lt;br /&gt;Los detalles del FLISOL en Panamá: http://www.installfest.net/FLISOL2009/Panama&lt;br /&gt;&lt;br /&gt;El wiki del FLISOL con información de todos los países participantes: http://www.installfest.net/FLISOL2009&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-2156243686183910196?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/2156243686183910196/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2009/04/flisol-2009.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/2156243686183910196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/2156243686183910196'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2009/04/flisol-2009.html' title='FLISOL 2009'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_fWhXbpnpdnc/SeNM9zW3WRI/AAAAAAAAB-8/7esG-FEuSVE/s72-c/Afiche-FLISOL.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-3557451742356488522</id><published>2009-02-13T14:21:00.028-05:00</published><updated>2011-02-01T10:44:55.658-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><title type='text'>Cómo usar SyntaxHighlighter 2.0 en Blogger</title><content type='html'>&lt;a style="font-weight: bold;" href="http://alexgorbatchev.com/wiki/SyntaxHighlighter"&gt;SyntaxHighlighter:&lt;/a&gt; es una librería completa para resaltar código (syntax highlight) desarrollada en JavaScript que permite dar una aspecto visual mucho más agradable a un fragmento de código incrustado en un sitio web, blog, wiki, etc.&lt;br /&gt;&lt;br /&gt;Este proyecto iniciado en 2004 a ganado ya mucha aceptación y recientemente, a inicios de este mes (Feb. 2009) a lanzado su nueva versión: &lt;a style="font-weight: bold;" href="http://alexgorbatchev.com/wiki/SyntaxHighlighter#News"&gt;SyntaxHighlighter 2.0.&lt;/a&gt; De acuerdo al sitio oficial del proyecto la versión 2.0 representa una renovación casi completa (código reescrito, limpieza, optimización, estandarización y nuevas características).&lt;br /&gt;&lt;br /&gt;Existe un post (en ingles) sobre como usar dicha librería javascript en blogger, aunque este post data de Agosto de 2007 es una buena referencia, aquellos que lo deseen lo pueden revisar en el siguiente enlace: &lt;span style="font-style: italic;"&gt;http://developertips.blogspot.com/2007/08/syntaxhighlighter-on-blogger.html&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A continuación los pasos necesarios:&lt;br /&gt;1. Descargamos SyntaxHighlighter &lt;a href="http://alexgorbatchev.com/wiki/SyntaxHighlighter:Download"&gt;aquí &lt;/a&gt;y buscamos un buen servidor donde guardar los archivos incluidos en la librería.&lt;br /&gt;2. Ingresamos en &lt;a href="http://www.blogger.com/"&gt;BLOGGER&lt;/a&gt;, y editamos nuestra plantilla: &lt;span style="font-weight: bold; font-style: italic;"&gt;"Personalizar &gt; Diseño &gt; Edición de HTML"&lt;/span&gt;, yo de paso aproveché para dar una nueva imagen a mi blog.  :-)&lt;br /&gt;Modificamos el header de la plantilla como sigue:&lt;br /&gt;&lt;pre class="brush: php; html-script: true; highlight: [13];auto-links:false"&gt;&amp;lt;!--syntaxHishlighter begin--&amp;gt;&lt;br /&gt;&amp;lt;link href="http://[HOST_SITE]/shCore.css" rel="stylesheet" type="text/css"&amp;gt;&lt;br /&gt;&amp;lt;link href="http://[HOST_SITE]/shThemeDefault.css" rel="stylesheet" type="text/css"&amp;gt;&lt;br /&gt;&amp;lt;script src="http://[HOST_SITE]/shCore.js" type="text/javascript"&amp;gt;&lt;br /&gt;&amp;lt;script src="http://[HOST_SITE]/shBrushCpp.js" type="text/javascript"&amp;gt;&lt;br /&gt;&amp;lt;script src="http://[HOST_SITE]/shBrushCSharp.js" type="text/javascript"&amp;gt;&lt;br /&gt;&amp;lt;script src="http://[HOST_SITE]/shBrushCss.js" type="text/javascript"&amp;gt;&lt;br /&gt;&amp;lt;script src="http://[HOST_SITE]/shBrushJava.js" type="text/javascript"&amp;gt;&lt;br /&gt;&amp;lt;script src="http://[HOST_SITE]/shBrushJScript.js" type="text/javascript"&amp;gt;&lt;br /&gt;&amp;lt;script src="http://[HOST_SITE]/shBrushSql.js" type="text/javascript"&amp;gt;&lt;br /&gt;&amp;lt;script src="http://[HOST_SITE]/shBrushXml.js" type="text/javascript"&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;SyntaxHighlighter.config.bloggerMode=true;&lt;br /&gt;SyntaxHighlighter.config.ClipboardSwf = "http://[HOST_SITE]/clipboard.swf"; SyntaxHighlighter.all();&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;!--syntaxHishlighter end--&amp;gt;&lt;br /&gt;&lt;/pre&gt;Aquí es importante resaltar que la configuración &lt;span style="font-weight: bold;"&gt;SyntaxHighlighter.config.bloggerMode&lt;/span&gt; es necesario para que todo funcione correctamente en Blogger.&lt;br /&gt;&lt;br /&gt;3. Ahora cada fragmento de código que deseemos resaltar lo colocamos dentro un tag &amp;lt;pre&amp;gt;, por ejemplo:&lt;br /&gt;&lt;pre class="brush: js; html-script: true; auto-links: false"&gt;&amp;lt;pre class="brush: js; html-script: true;  auto-links: false"&amp;gt;&lt;br /&gt;alert("hola mundo!");&lt;br /&gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;&lt;/pre&gt;Con esta está ya todo listo.&lt;br /&gt;&lt;br /&gt;Saludos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Actualización:&lt;/span&gt; Google Page Creator será reemplazado por Google Site y ya no es una buena opción para guardar los archivos necesarios para usar el &lt;span style="font-weight: bold;"&gt;SyntaxHighlighter&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Actualización 02/01/2011:&lt;/span&gt; Al parecer la opción light:true hacía que no se cargaran los controles para copiar el código de ejemplo por lo que la quité :).&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-3557451742356488522?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/3557451742356488522/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2009/02/como-usar-syntaxhighlighter-20-en.html#comment-form' title='9 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3557451742356488522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3557451742356488522'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2009/02/como-usar-syntaxhighlighter-20-en.html' title='Cómo usar SyntaxHighlighter 2.0 en Blogger'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-9105251559214991167</id><published>2009-02-12T16:33:00.029-05:00</published><updated>2010-04-05T15:23:17.177-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='Code_Templates'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>Code templates en NetBeans</title><content type='html'>Los Code Templates o Plantillas de código son una característica muy útil para cualquier  programador, yo he usado esta funcionalidad en gedit y en NetBeans.&lt;br /&gt;¿Cómo funcionan los &lt;b&gt;Code Templates&lt;/b&gt;?&lt;br /&gt;&lt;p&gt;Básicamente escribes una palabra, presionas una tecla que hace las veces de disparador y el editor automáticamente ingresa una o varias líneas de texto que de otro modo habrías tenido que escribir.&lt;/p&gt;Pueden ver esta y otras características de NetBeans &lt;a href="http://wiki.netbeans.org/Java_EditorUsersGuide"&gt;aquí&lt;/a&gt;.&lt;br /&gt;&lt;p&gt;&lt;i&gt;&lt;span style="font-weight: bold;"&gt;nota:&lt;/span&gt; &lt;span style="color: rgb(102, 102, 0);"&gt;al escribir este post estoy utilizando NetBeans 6.1&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Antes de proseguir debemos definir algo sobre las plantillas:&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold; color: rgb(102, 102, 0);"&gt;Los Parámetros:&lt;/span&gt; cada plantilla puede contener varios de estos, los cuales constan de un nombre y varios hints (sugerencias) opcionales, ejemplo: &lt;/p&gt;&lt;blockquote&gt;${param_name default="p1"}&lt;/blockquote&gt;Para una lista completa de las opciones consultar &lt;a href="http://wiki.netbeans.org/Java_EditorUsersGuide"&gt;aquí&lt;/a&gt;.&lt;br /&gt;&lt;p&gt;¿Cómo se usan &lt;b&gt;Code Templates&lt;/b&gt; en NetBeans?&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Xph0zkPcUSA/SZS6kexpvQI/AAAAAAAAAZI/rULVv5D7RKc/s1600-h/code_templates.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px; height: 184px;" src="http://1.bp.blogspot.com/_Xph0zkPcUSA/SZS6kexpvQI/AAAAAAAAAZI/rULVv5D7RKc/s200/code_templates.jpg" alt="" id="BLOGGER_PHOTO_ID_5302067797221293314" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;Primero hay que conocer las plantillas ya existentes, para ello en &lt;a style="color: rgb(51, 102, 102); font-weight: bold;" href="http://www.netbeans.org/"&gt;NetBeans&lt;/a&gt; ingresamos a las opciones, en el menú &lt;b&gt;Tools-&amp;gt;Options&lt;/b&gt; y escogemos la categoría &lt;b&gt;Editor&lt;/b&gt; y la solapa (tab) &lt;span style="font-weight: bold;"&gt;Code Templates&lt;/span&gt;.&lt;br /&gt;Podemos probar revisar los detalles de las plantillas existentes, eliminarlas y crear otras nuevas.&lt;br /&gt;Se puede observar que existe una lista con los diferentes&lt;br /&gt;lenguages para los cuales se podemos crear Plantillas, en mi caso usaré &lt;span style="color: rgb(0, 0, 153);"&gt;Java&lt;/span&gt;.&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Xph0zkPcUSA/SZTD7k6VQUI/AAAAAAAAAZQ/x2fMd7IbObo/s1600-h/new_template.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px; height: 54px;" src="http://2.bp.blogspot.com/_Xph0zkPcUSA/SZTD7k6VQUI/AAAAAAAAAZQ/x2fMd7IbObo/s200/new_template.jpg" alt="" id="BLOGGER_PHOTO_ID_5302078089609953602" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Vamos a definir dos plantillas nuevas así que presionamos el botón &lt;b&gt;New,&lt;/b&gt; se nos muestra un dialogo donde debemos ingresar la abreviatura que será usada para identificar la nueva plantilla, luego hacemos clic en &lt;b&gt;OK&lt;/b&gt;, la plantilla es creada y queda seleccionada para que ingresemos el texto expandido por el cual será reemplazada la abreviatura&lt;br /&gt;en el editor, opcionalmente podemos definir una descripción si lo deseamos (repetiremos estos pasos para crear la segunta plantilla).&lt;br /&gt;Definiremos las plantillas de la siguiente forma:&lt;br /&gt;&lt;span style="color: rgb(102, 102, 0);"&gt;Abreviatura:&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;gpl&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 102, 0);"&gt;Texto Expandido:&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;pre class="brush: java; font-size: 11px"&gt;&lt;br /&gt;/*&lt;br /&gt;* ${programName default="miAplicacion" } ${briefIdea default="Mi gran primera aplicacion"}.&lt;br /&gt;* Copyright (C) ${year} ${author}&lt;br /&gt;*&lt;br /&gt;* This program is free software: you can redistribute it and/or modify&lt;br /&gt;* it under the terms of the GNU General Public License as published by&lt;br /&gt;* the Free Software Foundation, either version 3 of the License, or&lt;br /&gt;* (at your option) any later version.&lt;br /&gt;*&lt;br /&gt;* This program is distributed in the hope that it will be useful,&lt;br /&gt;* but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the&lt;br /&gt;* GNU General Public License for more details.&lt;br /&gt;*&lt;br /&gt;* You should have received a copy of the GNU General Public License&lt;br /&gt;* along with this program. If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;*/&lt;/pre&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 0);"&gt;&lt;br /&gt;&lt;br /&gt;Abrevitura:&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;getset&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 0);"&gt;Text Expandido:&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre class="brush: java; font-size: 11px"&gt;&lt;br /&gt;${methodType default="String"}get${methodName default="Value"}();&lt;br /&gt;voidset${methodName}(${methodType} ${paramName default="value"});&lt;br /&gt;&lt;/pre&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Cerramos la ventana de opciones presionando &lt;b&gt;OK&lt;/b&gt;.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Debemos tener algún archivo donde aplicar los templates, trabajaremos con una interfaz, no voy a explicar en este post como crear proyectos o archivos en &lt;a href="http://www.netbeans.org/"&gt;&lt;span style="color: rgb(51, 102, 102); font-weight: bold;"&gt;NetBeans&lt;/span&gt;&lt;/a&gt; pero se puede encontrar más sobre ese tema &lt;a href="http://www.netbeans.org/kb/docs/java/quickstart.html"&gt;aquí&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Ya que estemos editando nuestra recién creada interfaz podemos usar las plantillas que acabamos de crear:&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;La primer plantilla permite agregar al archivo actual la licencia &lt;span style="font-style: italic; font-weight: bold;"&gt;gpl&lt;/span&gt;, nos desplazamos al inicio del documento y escribimos "gpl" (sin las comillas) e inmediatamente presionamos tab (el disparador para los code templates), el editor reemplazará la palabra gpl por el contenido del &lt;span style="color: rgb(102, 102, 0);"&gt;Texto Expandido&lt;/span&gt; que definimos anteriormente y colocará el cursor en donde hemos colocado el parámetro &lt;span style="font-weight: bold;"&gt;programName&lt;/span&gt;,  presionando tab podemos pasar al siguiente parámetro.&lt;br /&gt;Al llegar al ultimo parámetro, presionado tab se regresa al primero, para terminar la edición presionamos &lt;span style="font-weight: bold;"&gt;ENTER&lt;/span&gt;.&lt;br /&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;La segunda plantilla permite definir un par de métodos para trabajar con un campo siguiendo el estándar en Java (set para establecer y get para obtener), en nuestra plantilla las funciones carecen de código encerrado entre corchetes (&lt;span style="color: rgb(102, 102, 102);"&gt;{}&lt;/span&gt;) porque tiene como objetivo ser usada en una interfaz, si deseamos adaptar esta plantilla para usarla en una clase normal se deben agregar los corchetes, dejaré esto al lector a  modo de ejercicio.&lt;br /&gt;Lo interesante de esta plantilla es que los parámetro &lt;span style="font-weight: bold;"&gt;methodType&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;methodName&lt;/span&gt; aparecen en más de una ocasión y al editarlo en el lugar donde aparecen primero su valor será cambiado en todos los lugares donde se encuentre en la plantilla de esa forma lo escribimos una única vez.&lt;br /&gt;Es importante señalar, también, que incluso se puede escribir algo dentro de la función por ejemplo definiendo el código por defecto para el método get: &lt;/p&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(51, 51, 51); font-weight: bold;"&gt;this&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;.${&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;methodName&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;};&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Con esto concluimos, cada quien puede crear las plantillas que mejor se adapten a su estilo y necesidades, como ya he mostrados se puede reducir el tiempo de escribir una gran cantidad de&lt;br /&gt;líneas de código a una simple abreviatura y cambiar unos cuantos parámetros.&lt;/p&gt;Saludos.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-9105251559214991167?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/9105251559214991167/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2009/02/code-templates-en-netbeans.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/9105251559214991167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/9105251559214991167'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2009/02/code-templates-en-netbeans.html' title='Code templates en NetBeans'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Xph0zkPcUSA/SZS6kexpvQI/AAAAAAAAAZI/rULVv5D7RKc/s72-c/code_templates.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-1185843977933972900</id><published>2009-01-26T12:46:00.004-05:00</published><updated>2010-01-07T10:57:55.541-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='favoritos'/><category scheme='http://www.blogger.com/atom/ns#' term='manga'/><title type='text'>Las tramas en los mangas</title><content type='html'>Soy un fanático del dibujo, es una de las cosas que más me gusta, hace ya algunos años que me he vuelto fanático también de los mangas japoneses y la forma como te transportan a traves de aventuras interesantes con: acción, romance, conflictos de todo tipo, etc.&lt;br /&gt;Recientemente me encontré con un post donde se hace una clasificación minusiosa de las "tramas" usadas por los mangaka (artísta que dibujan mangas) para transmitir emociones hacia los lectores.&lt;br /&gt;&lt;br /&gt;Espero que sea del agrado de todo aquel que lo lea, les dejo el artículo en el siguiente enlace: http://www.nishibu.es/2007/07/las-tramas-desconocidas-e.html&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-1185843977933972900?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.nishibu.es/2007/07/las-tramas-desconocidas-e.html' title='Las tramas en los mangas'/><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/1185843977933972900/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2009/01/las-tramas-en-los-mangas.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/1185843977933972900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/1185843977933972900'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2009/01/las-tramas-en-los-mangas.html' title='Las tramas en los mangas'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-1968940625753504748</id><published>2008-11-24T00:09:00.019-05:00</published><updated>2010-04-05T15:23:30.952-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='automatizar'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Como hacer un demonio en Linux usando Java</title><content type='html'>En ocasiones es necesario, por la razón que sea, crear aplicaciones capaces de funcionar como demonios en linux (también conocidos como servicios en win2)...&lt;br /&gt;&lt;br /&gt;El problema en java, para desarrollar un demonio, es el hecho de que la ejecución de los programas inicia siempre por el &lt;b&gt;main&lt;/b&gt;, esto está bien para una aplicación cliente, donde una persona inicia y detiene la ejecución, pero ya que un demonio es manejado directamente por el sistema sin necesidad de intervención por parte del usuario esto se convierte en un problema, para solucionar esta situación existe una utilidad en linux llamada jsvc, &lt;a href="http://commons.apache.org/daemon/index.html"&gt;más información&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Usando jsvc solamente hace falta crear una clase que implemente los métodos o funciones necesarios para responder a cuatro eventos importantes durante la vida de un demonio, los cuales son:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;init&lt;/b&gt;: inicializar todos los recursos. (en la documentación oficial dice que el método se llama load pero esto es incorrecto)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;start&lt;/b&gt;: inicia el proceso y espera por peticiones.&lt;/li&gt;&lt;li&gt;&lt;b&gt;stop&lt;/b&gt;: indica un cierre inminente al demonio para que pueda liberar recursos adquiridos durante el init por ejemplo cerrar sockets abiertos.&lt;/li&gt;&lt;li&gt;&lt;b&gt;destroy&lt;/b&gt;: elimina cualquier objeto creado durante el init.&lt;/li&gt;&lt;/ol&gt;Para ejecutar &lt;span style="font-weight: bold;"&gt;jsvc&lt;/span&gt; se necesitan privilegios de administrador, de cualquier forma la utilidad acepta una opción para especificar el usuario con el cual ejecutar el demonio después de terminado los pasos que requieren privilegios de root.&lt;br /&gt;&lt;br /&gt;Bueno manos a la obra, para trabajar estoy usando Ubuntu 8.04 y Java 1.6.0_07:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Primero:&lt;/span&gt; hay que definir una clase en java que implemente apropiadamente las funciones antes descritas en nuestro editor de preferencia:&lt;br /&gt;&lt;pre class="brush: java; light:true"&gt;&lt;br /&gt;package daemon;&lt;br /&gt;&lt;br /&gt;public class JavaDaemon&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Here open the configuration files, create the trace file,&lt;br /&gt;* create the ServerSockets, the Threads, etc.&lt;br /&gt;* @param parameters&lt;br /&gt;*/&lt;br /&gt;public void init(String []parameters){&lt;br /&gt;System.out.printf("Init params %s", parameters.toString());&lt;br /&gt;}&lt;br /&gt;/**&lt;br /&gt;* Start the Thread, accept incoming connections.&lt;br /&gt;*/&lt;br /&gt;public void start(){&lt;br /&gt;System.out.println("start server life...");&lt;br /&gt;}&lt;br /&gt;/**&lt;br /&gt;* Inform the Thread to stop, close the ServerSockets.&lt;br /&gt;*/&lt;br /&gt;public void stop(){&lt;br /&gt;System.out.println("stop signal recieved...");&lt;br /&gt;}&lt;br /&gt;/**&lt;br /&gt;* Destroy any object created in init()&lt;br /&gt;*/&lt;br /&gt;public void destroy(){&lt;br /&gt;System.out.println("destoying all objects...");&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Segundo: instalar, sino lo está ya, la utilidad jsvc con el siguiente comando:&lt;br /&gt;&lt;pre class="brush:bash"&gt;&lt;br /&gt;sudo aptitude install jsvc&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Tercero: descargar la librería commons-daemon.jar desde la siguiente dirección: http://commons.apache.org/downloads/download_daemon.cgi descomprimimos el archivo descargado y copiamos la librería commons-daemon.jar en donde tenemos nuestra clase compilada. Opcionalmente pueden empaquetar su clase en un archivo jar ya sea a mano o usando alguna herramienta o IDE, yo he creado un jar y lo he nombrado myDameon.jar.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para ejecutar el demonio en una consola escribimos el siguiente comando:&lt;br /&gt;&lt;pre class="brush: bash; light:true"&gt;&lt;br /&gt;sudo jsvc -user @user -home /usr/lib/jvm/java-6-sun/jre -debug -pidfile /var/run/myDaemon.pid -cp commons-daemon.jar:myDaemon.jar daemon.JavaDaemon&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;Nota: reemplazar &lt;span style="font-weight: bold;"&gt;@user&lt;/span&gt; con algún usuario válido, por ejemplo el que estemos usando.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(102, 102, 102); font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(102, 102, 102); font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;Y para detener el demonio podemos usar el siguiente comando:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: bash; light:true"&gt;&lt;br /&gt;sudo jsvc -stop -pidfile /var/run/myDaemon.pid -cp commons-daemon.jar:myDaemon.jar daemon.JavaDaemon&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Listo con esto tenemos listo nuestro primer demonio implementado en java.&lt;br /&gt;Saludos.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-1968940625753504748?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/1968940625753504748/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2008/11/como-hacer-un-demonio-en-linux-usando.html#comment-form' title='6 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/1968940625753504748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/1968940625753504748'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2008/11/como-hacer-un-demonio-en-linux-usando.html' title='Como hacer un demonio en Linux usando Java'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-4902492850297058140</id><published>2008-11-10T17:08:00.005-05:00</published><updated>2010-04-05T15:23:35.309-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><title type='text'>Distro Cubana basada en Gentoo</title><content type='html'>Así como lo leen es una distro cubana basada en Gentoo de la que me enteré hace poco tiempo, más detalles en &lt;a href="http://albertjh.cymaho.com/?p=53"&gt;&lt;span style="font-size:85%;"&gt;Nova LNX, la desconocida Distro Cubana.&lt;/span&gt;&lt;/a&gt;&lt;h1 style="font-family: arial;" class="posttitle"&gt;&lt;/h1&gt;Es agradable ver como poco a poco la comunidad latina se va integrando al movimiento de software libre.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-4902492850297058140?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://albertjh.cymaho.com/?p=53' title='Distro Cubana basada en Gentoo'/><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/4902492850297058140/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2008/11/distro-cubana-basada-en-gentoo.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/4902492850297058140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/4902492850297058140'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2008/11/distro-cubana-basada-en-gentoo.html' title='Distro Cubana basada en Gentoo'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-8315318075682130012</id><published>2008-11-09T22:35:00.005-05:00</published><updated>2011-02-16T09:34:43.246-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><title type='text'>Syntax Highlighting en Nano</title><content type='html'>Nano es uno de los editores de texto mas ligeros y amigables que podemos encontrar para la consola de comandos en GNU/Linux. Para aquellos que gustan de editar archivos de código fuente o shell scripts o cualquier otro archivo de texto usando Nano en lugar de Emacs o Vim, habilitar el resaltado de sintaxis o &lt;span style="font-weight: bold;"&gt;syntax highlighting&lt;/span&gt; es probablemente algo necesario.&lt;br /&gt;&lt;br /&gt;A continuación dejo los pasos que he seguido para habilitar el resaltado de sintaxis en mi Ubuntu:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Editar el archivo &lt;span style="font-weight: bold;"&gt;.nanorc&lt;/span&gt; que se encuentra en la carpeta del usuario, por ejemplo usando el propio nano:&lt;br /&gt;&lt;pre class="brush:bash" &gt;nano ~/.nanorc&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;añadir lo siguiente al archivo &lt;span style="font-weight: bold;"&gt;.nanorc&lt;/span&gt; al inicio:&lt;br /&gt;&lt;pre class="brush:bash"&gt;include "/usr/share/nano/c.nanorc"&lt;br /&gt;include "/usr/share/nano/python.nanorc"&lt;br /&gt;include "/usr/share/nano/sh.nanorc"&lt;br /&gt;&lt;/pre&gt;lo anterior habilita a nano para reconer y resaltar la sintaxis para C (c.nanorc), Python (python.nanorc) y Bash (sh.nanorc).&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Se puede ver todas las opciones de resaltado posibles ejecutando el siguiente comando en una terminal:&lt;br /&gt;&lt;pre class="brush:bash"&gt;ls /usr/share/nano/&lt;/pre&gt;dicho comando regresará una lista similar a la siguiente, la cual representa la lista de reglas de resaltado que vienen por defecto con el editor:&lt;br /&gt;&lt;pre class="brush:bash"&gt;asm.nanorc    java.nanorc    nanorc.nanorc  python.nanorc&lt;br /&gt;c.nanorc      man.nanorc     patch.nanorc   ruby.nanorc&lt;br /&gt;groff.nanorc  mutt.nanorc    perl.nanorc    sh.nanorc&lt;br /&gt;html.nanorc   nano-menu.xpm  pov.nanorc     tex.nanorc&lt;br /&gt;&lt;/pre&gt;Es posible encontrar en internet muchas otras reglas adicionales que pueden ser incluidas de la misma forma o bien copiando el texto directamente dentro del archivo .nanorc&lt;br /&gt;&lt;br /&gt;Fuente: http://tux.50webs.org/tip_nano_highlighting.html&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-8315318075682130012?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/8315318075682130012/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2008/11/syntax-highlighting-en-nano.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/8315318075682130012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/8315318075682130012'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2008/11/syntax-highlighting-en-nano.html' title='Syntax Highlighting en Nano'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-2060252192106568998</id><published>2008-09-22T15:41:00.005-05:00</published><updated>2010-04-05T15:23:41.595-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><title type='text'>Celebración del día del programador</title><content type='html'>La gente del IEEE de la Universidad Tecnólogica de Panamá, Sede Panamá organizó en día pasados la celebración del día del programador a la cual pude asistir para hablar de linux como una excelente opción para plataforma de desarrollo.&lt;br /&gt;&lt;br /&gt;Este evento fue realizado en la Facultad de Ingeniería en Sistemas Computacionales de la U.T.P. en la ciudad capital, de Panamá.&lt;br /&gt;&lt;br /&gt;El evento contó con la presencia de varios expositores como David Narvaez quien hablo de programación orientada a objetos, Gerardo Nuñez (PanamaJUG), quien dio una conferencia sobre Grails, Stephan Schwab hablo sobre "Metodos Agiles", Aristides Villarreal Bravo quien participó con un taller de "NETBEANS PLATFORM" y yo representando la comunidad Ubuntu de Panamá.&lt;br /&gt;&lt;br /&gt;Un evento orientado a estudiantes y una gran iniciativa, felicitaciones a Diego Tejera , David Narvaez, que estuvieron organizando el evento y a los participantes del mismo así como a la IEEE.&lt;br /&gt;&lt;br /&gt;Espero que existan más iniciativas de este tipo en todas las universidades.&lt;br /&gt;&lt;br /&gt;Otros blogs comentando el evento:&lt;br /&gt;&lt;a href="http://www.stephan-schwab.com/2008/09/15/1221499578685.html"&gt;&lt;span&gt;Stephan Schwab&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.donderis.net/dia-del-programador/"&gt;Carlos Donderis&lt;/a&gt;&lt;br /&gt;&lt;a href="http://avbravo.blogspot.com/2008/09/dia-del-programador-en-ciudad-de-panam.html"&gt;Aristides Villareal&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-2060252192106568998?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/2060252192106568998/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2008/09/celebracin-del-da-del-programador.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/2060252192106568998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/2060252192106568998'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2008/09/celebracin-del-da-del-programador.html' title='Celebración del día del programador'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-7755168457394173754</id><published>2008-09-17T12:37:00.006-05:00</published><updated>2010-04-05T15:23:48.759-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><title type='text'>Linux y Virus: no sólo cuestión de popularidad</title><content type='html'>Recientemente alguien envió un artículo muy interesante que encontró acerca del tema de los virus en Linux a la lista del LoCo Team de Panamá, en verdad es un excelente artículo con varias cosas que todo usuario de cualquier distro basada en GNU/Linux debería saber, les dejo el enlace hacia la fuente &lt;a href="http://www.kriptopolis.org/linux-virus-popularidad"&gt;Kriptopolis&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;Autor Anónimo&lt;span style="text-decoration: underline;"&gt;.&lt;/span&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;La poca difusión de Linux es obviamente un motivo de que no haya virus, pero no es el único motivo.&lt;/p&gt; &lt;p&gt;Supongamos que alguien hace un virus para Linux, que no pretende obtener privilegios de root y se conforma con los del usuario: podría hacer lo que quisiera excepto infectar programas. Hasta aquí bien. Inconvenientes...&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Hay muchas distribuciones diferentes y costaría un poco que el virus funcionara en todas pero digamos que se centan en las principales, sobre todo Ubuntu, viene el segundo problema:&lt;/li&gt;&lt;li&gt;Eliminar un virus de windows puede ser una pesadilla. El virus toma el control en tal forma que los antivirus y eliminadores no funcionan. Hay que arrancar desde un diskette o CD pero en ese caso el virus puede aprovechar las "características de protección" de windows para dificultar la tarea. Incluso lograr eliminarlo no es ninguna garantía porque podría quedar algún disparador que lo reinstale al volver a arrancar. Y para colmo, los eliminadores de virus sólo eliminan virus conocidos. Contra un virus nuevo no hay NINGUNA solución. Lo más práctico suele ser formatear y reinstalar. &lt;p&gt;En cambio en Linux el virus sólo puede estar en un lugar: el home del usuario. Ante cualquier problema basta con crear un usuario nuevo para tener en segundos un sistema totalmente funcional y libre de virus. No importa qué virus sea o si es conocida su manera de actuar o no. Un usuario diferente no puede estar infectado, se crea uno o se cambia a otro existente y problema solucionado en 10 segundos. Después se puede recuperar los documentos que sean necesarios. Una diferencia muy grande comparado con las horas o hasta dias que puede tomar solucionar un problema de virus en windows... pero igual quien sabe lo que podrían inventar los atacantes en el futuro, podría ser que el usuario fuera tan tonto lograra volver a infectarse pronto, así que: &lt;/p&gt;&lt;/li&gt;&lt;li&gt;La seguridad que estamos usando en Linux actualmente es bastante relajada. No estamos, ni de lejos, ajustando la seguridad al máximo. Lo primero que se podría hacer es quitar el permiso de ejecución al home de los usuarios. Bastaría con que el /home estuviera en una partición diferente para poder montarla con el flag "noexec" y listo. Pueden traer lo que quieran en una memoria USB que no podrán ejecutar nada. El único riesgo serían javascripts en navegadores y scripts en documentos. Implementar eso nos tomaría minutos y con seguridad nos daría unos cuantos años más de tranquilidad respecto de los virus. Pero imaginemos un mundo donde casi todo el mundo usara Linux y los que hacen virus, ahora flacos y hambrientos, decidieran dar lo mejor de sí para atacarnos. Bien podrían hacer un javascript que mandara spam, por ejemplo. Entonces:&lt;/li&gt;&lt;li&gt;Siempre nos queda el recurso de irnos a seguridades mucho más avanzadas, ya presentes en el núcleo de Linux desde hace años pero casi siempre innecesarias. Podríamos activar SELinux. Eso dejaría fuera de combate hasta a los javascripts, ya que podríamos fácilmente prohibir al browser cualquier conexión que no sea http o https. Esto no es comparable a los "seudo-firewalls" para windows ya que en el caso de Linux la seguridad está embebida en el mismo núcleo, y no sólo controla paquetes tcp/ip sino todo tipo de actividades de los programas, incluso cosas tan inofensivas como listar el contenido el disco. Es más, el activar SELinux nos protegería incluso ante fallos de seguridad en los programas, ya que en este punto se vuelve irrelevantes los permisos del usuario. Podríamos publicar en internet la clave del root y aún así seguir tranquilos.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Como se ve, Linux nos resultará seguro por muchos años más, y a diferencia de windows, la carrera de la seguridad en Linux la tenemos ganada antes de empezar porque partimos desde una posición mucho más ventajosa que los atacantes. Les llevamos de lejos la delantera y aún si no progresáramos NADA en muchos años, la seguridad nos serviría perfectamente.&lt;/p&gt; &lt;p&gt;Obviamente se progresa y mucho, así que la gran ventaja que llevamos se mantendrá y hasta podría aumentarse si viéramos que la situación es preocupante. Para el día que tengamos que preocuparnos porque no nos alcance SELinux, seguro que tendremos alternativas suficientes.&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-7755168457394173754?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.kriptopolis.org/linux-virus-popularidad' title='Linux y Virus: no sólo cuestión de popularidad'/><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/7755168457394173754/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2008/09/linux-y-virus-no-slo-cuestin-de.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/7755168457394173754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/7755168457394173754'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2008/09/linux-y-virus-no-slo-cuestin-de.html' title='Linux y Virus: no sólo cuestión de popularidad'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-8918357709779049130</id><published>2008-09-12T12:28:00.006-05:00</published><updated>2010-04-05T15:25:11.627-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Celebración'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Software Freedom Day en Panamá</title><content type='html'>En los próximos días se llevará a cabo la celebración internacional del Software Freedom Day (sep. 20 de 2008) y la comunidad local de Ubuntu ha organizado un evento para conmemorar tal fecha.&lt;br /&gt;&lt;br /&gt;Como parte de las actividades, se realizaran conferencias, demostraciones y un install fest, es la primera vez que participo en esta celebración y el evento más importante hasta ahora organizado por el LoCo Team pero tengo mucha fe en que todo irá muy bien.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://softwarefreedomday.org/teams/centralandsouthamerica/Panama/PanamaCity"&gt;Aquí se puede ver el afiche promociona&lt;/a&gt;&lt;a href="http://softwarefreedomday.org/teams/centralandsouthamerica/Panama/PanamaCity"&gt;l&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;De antemano deseo que todo el mundo pase un muy feliz día del software libre.&lt;br /&gt;¡Viva la libertad!&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-8918357709779049130?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/8918357709779049130/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2008/09/software-freedom-day-en-panam.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/8918357709779049130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/8918357709779049130'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2008/09/software-freedom-day-en-panam.html' title='Software Freedom Day en Panamá'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-2399145158962703720</id><published>2008-09-07T17:40:00.002-05:00</published><updated>2009-06-11T16:44:31.100-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Películas'/><category scheme='http://www.blogger.com/atom/ns#' term='Dragones'/><title type='text'>Dragon War la película</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/YnQXvQ1R4gg&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/YnQXvQ1R4gg&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-2399145158962703720?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.blogdecine.com/2007/11/01-poster-y-trailer-de-dragon-wars-d-war' title='Dragon War la película'/><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/2399145158962703720/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2008/09/dragon-war-la-pelcula.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/2399145158962703720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/2399145158962703720'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2008/09/dragon-war-la-pelcula.html' title='Dragon War la película'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-534543389445203262</id><published>2008-07-20T16:19:00.014-05:00</published><updated>2010-04-05T15:25:20.501-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='favoritos'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='shutdown'/><category scheme='http://www.blogger.com/atom/ns#' term='automatizar'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='d4x'/><title type='text'>Apagando Ubuntu automaticamente al finalizar las descargas.</title><content type='html'>&lt;style type="text/css"&gt;!--   @page { size: 21cm 29.7cm; margin: 2cm }   P { margin-bottom: 0.21cm }  --&gt;  &lt;/style&gt;  &lt;p style="margin-bottom: 0cm;"&gt;Bueno para explicar un poco el ¿por qué? de este mini howto, me pasa con frecuencia que tengo que dejar la computadora descargando algo, una serie, un anime, etc y es un problema saber cuanto tiempo exacto tomarán todas las descargas porque como tengo una conexión de red compartida a veces los otros usuarios pueden congestionar la red, también porque es tedioso tener que hacer esto manualmente cada vez.&lt;br /&gt;&lt;br /&gt;Tampoco me agrada la idea de dejar mi computadora encendida todo el día hasta que yo regrese, por eso aquí dejo una forma sencilla de como programar la PC para que se apague por si sola al terminar todas las descargas.&lt;/p&gt;   &lt;p style="margin-bottom: 0cm;"&gt;Primero necesitamos instalar &lt;a href="http://en.wikipedia.org/wiki/Downloader_for_X"&gt;Downloader for X&lt;/a&gt; (d4x para abreviar) en la consola ejecutamos el siguiente comando: &lt;/p&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;sudo aptitude install d4x d4x-common&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;  &lt;p style="margin-bottom: 0cm;"&gt;Abrimos del d4x y en el menú elegimos Options-&gt;General.&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Xph0zkPcUSA/SIO-UAWfkxI/AAAAAAAAARo/CyD4sV95rHI/s1600-h/d4x1.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; clear: both; cursor: pointer;" src="http://1.bp.blogspot.com/_Xph0zkPcUSA/SIO-UAWfkxI/AAAAAAAAARo/CyD4sV95rHI/s200/d4x1.png" alt="" id="BLOGGER_PHOTO_ID_5225229243580912402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Se abrirá una ventana donde podemos configurar varias opciones del d4x, en dicha ventana, de la lista de la izquierda elegimos la opción Integration, marcamos la casilla que dice:&lt;/p&gt; &lt;blockquote style="font-weight: bold;"&gt;Exit if nothing todo after&lt;/blockquote&gt;podemos establecer el tiempo de espera antes de apagar o bien dejarlo con el tiempo por defecto (5 minutos).&lt;br /&gt;En el comando que se debe ejecutar al cerrar el programa colocamos lo siguiente: sudo &lt;blockquote style="font-style: italic;"&gt;shutdown now&lt;/blockquote&gt;para apagar inmediatamente o&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;sudo shutdown -h +&lt;span style="font-weight: bold;"&gt;[tiempo]&lt;/span&gt;&lt;/blockquote&gt;para apagar luego de unos minutos, reemplazar&lt;span style="font-weight: bold;"&gt; &lt;span style="font-style: italic;"&gt;[tiempo]&lt;/span&gt;&lt;/span&gt; por el número de minutos antes de iniciar el apagado.&lt;br /&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;  &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Xph0zkPcUSA/SIO9QEQ4QAI/AAAAAAAAARg/Iwek39dcBAo/s1600-h/d4x2.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; clear: both; cursor: pointer;" src="http://2.bp.blogspot.com/_Xph0zkPcUSA/SIO9QEQ4QAI/AAAAAAAAARg/Iwek39dcBAo/s200/d4x2.png" alt="" id="BLOGGER_PHOTO_ID_5225228076400001026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0cm;"&gt;Queda solamente una cosa más por configurar, necesitamos editar el archivo sudoers, una forma de hacerlo es ejecutando en una consola:  &lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote style="font-style: italic;"&gt;sudo nano /etc/sudoers&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;y al final adicionamos una línea parecida a la siguiente:&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;[myuser]&lt;/span&gt; ALL=NOPASSWD:/sbin/shutdown  &lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0cm;"&gt;Reemplazar&lt;span style="font-style: italic; font-weight: bold;"&gt; [myuser]&lt;/span&gt; por nuestro nombre de usuario.&lt;/p&gt;  &lt;p style="margin-bottom: 0cm;"&gt;Si todo fue bien, ahora solo resta adicionar descargas al d4x y al terminar este apagará la computadora.&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;Para una mejor integración con firefox recomiendo instalar el add-on &lt;a href="http://flashgot.net/getit"&gt;flashgot&lt;/a&gt;.  &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-534543389445203262?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/534543389445203262/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2008/07/apagando-automaticamente-ubuntu-al.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/534543389445203262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/534543389445203262'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2008/07/apagando-automaticamente-ubuntu-al.html' title='Apagando Ubuntu automaticamente al finalizar las descargas.'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Xph0zkPcUSA/SIO-UAWfkxI/AAAAAAAAARo/CyD4sV95rHI/s72-c/d4x1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-3643390350736484913</id><published>2008-07-20T16:15:00.003-05:00</published><updated>2010-01-07T11:16:31.074-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><title type='text'>Como Dibujar!</title><content type='html'>Un interesante manual acerca que debes hacer para desarrollar tus habilidades de dibujo, algo que me gusta mucho hacer aunque sea unicamente un pasatiempo, me gustaría poder convertir me en un buen dibujante.&lt;br /&gt;&lt;br /&gt;Pueden ver el tutorial &lt;a href="http://www.wikihow.com/Draw"&gt;aquí&lt;/a&gt;&lt;br /&gt;Saludos.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-3643390350736484913?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.wikihow.com/Draw' title='Como Dibujar!'/><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/3643390350736484913/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2008/07/como-dibujar.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3643390350736484913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3643390350736484913'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2008/07/como-dibujar.html' title='Como Dibujar!'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-1324200563615240658</id><published>2008-07-03T16:01:00.010-05:00</published><updated>2010-04-05T15:25:36.323-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JPilot'/><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='Palm'/><category scheme='http://www.blogger.com/atom/ns#' term='sincronizar'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='Bluetooth'/><title type='text'>Como sincronizar una Palm y Ubuntu usando JPilot  II</title><content type='html'>Este es la segunda parte de otro Howto: &lt;a href="http://emont01.blogspot.com/2008/07/como-sincronizar-una-palm-y-ubuntu.html"&gt;Como sincronizar una Palm y Ubuntu usando JPilot  I&lt;/a&gt;&lt;br /&gt;Para más detalles consultar el Manual: &lt;a href="http://howto.pilot-link.org/bluesync/eb.html"&gt;Synchronize your PalmOS® Handheld over Bluetooth in Linux&lt;/a&gt;&lt;br /&gt;Pasos a seguir:&lt;br /&gt;1. Instalar pilot-link &lt;blockquote&gt;sudo aptitude install pilot-link&lt;/blockquote&gt;&lt;br /&gt;2. Activar y configurar el Bluetooth en la Palm en modo «detectable» o «visible»&lt;br /&gt;3. Adicionar la Palm a los dispositivos de Confianza del SO (a.k.a. Trusted Devices)&lt;br /&gt;4. En el HotSync de la Palm Selectionar &lt;span style="font-weight: bold;"&gt;Opciones-&gt;Config. de conexión...&lt;/span&gt;&lt;br /&gt;Crear una Nueva Conexión a la cual le colocamos un nombre, por ejemplo: &lt;span style="font-style: italic;"&gt;Bluetooth PC&lt;/span&gt;; en este punto el manual de referencia Recomiendan llenar los datos como sigue:&lt;br /&gt;  &lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;* Nombre:&lt;/span&gt; &lt;span style="font-style: italic;"&gt;Bluetooth PC&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-weight: bold;"&gt;* Conectar a:&lt;/span&gt; PC (en mi caso funciona mejor elegir aquí: Red Local)&lt;br /&gt;  &lt;span style="font-weight: bold;"&gt;* Por:&lt;/span&gt; Bluetooth&lt;br /&gt;  &lt;span style="font-weight: bold;"&gt;* Dispositivo:&lt;/span&gt; "Elegir la PC"&lt;/blockquote&gt;&lt;br /&gt;En los detalles se puede seleccionar la velocidad, yo lo he probado con 57600 pero pueden probar cambiarla sin embargo recuerden este valor pues será necesario más adelante.&lt;br /&gt;5. Ahora creamos una Conexion de Red en la Palm, en las Preferencias elegimos la opción Red y llenamos los datos como sigue:&lt;br /&gt;  &lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;* Servicio:&lt;/span&gt; BTNetwork (asignamos un nombre de nuestra preferencia).&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;          * Usuario:&lt;/span&gt; myUser (este campo es opcional)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;          * Contraseña:&lt;/span&gt; (este campo se puede quedar en blanco)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;          * Conexión:&lt;/span&gt; "Bluetooth PC"(La conexión creada anteriormente)&lt;/blockquote&gt;&lt;br /&gt;6. Para configurar el sistema creamos un archivo de configuración para la conexión ppp sobre Bluetooth, este archivo será usado por el proceso dund: &lt;blockquote&gt;sudo nano /etc/ppp/peers/dun &lt;/blockquote&gt;dentro de dicho archivo escribimos algo similar a lo siguiente, recordar que se deben actualizar de acuerdo a nuestro sistema las direcciones IP y el ms-dns:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;#este valor corresponde con el definido en&lt;br /&gt;#la velocidad de conexión en la Palm&lt;br /&gt;57600&lt;br /&gt;# la dirección antes de los : es nuestra IP en la computadora,&lt;br /&gt;# la siguiente IP es la dirección asignada a la Palm&lt;br /&gt;10.0.1.39:10.0.1.40&lt;br /&gt;local&lt;br /&gt;#puerta de enlace&lt;br /&gt;ms-dns 128.100.100.128&lt;br /&gt;noauth&lt;br /&gt;debug&lt;/blockquote&gt;&lt;br /&gt;Ahora para simplificar podemos crear un script para ejecutar los comandos que siguen de forma más sencilla: &lt;blockquote&gt;sudo nano /usr/local/bin/palmBTsync.sh&lt;/blockquote&gt;      &lt;blockquote&gt;#!/bin/bash&lt;br /&gt;echo 1 &gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;&lt;br /&gt;hcid&lt;br /&gt;#En ubuntu sdpd ha sido reemplazado por&lt;br /&gt;hcid -s&lt;br /&gt;#esta linea se hace necesesaria&lt;br /&gt;sdptool add DUN&lt;br /&gt;&lt;br /&gt;#ejecuta el proceso en primer plano, imprime en pantalla.&lt;br /&gt;#dund --nodetach --listen --persist --msdun call dun&lt;br /&gt;#ejecuta el proceso en segundo plano&lt;br /&gt;dund --listen --persist --msdun call dun&lt;/blockquote&gt;      Asignamos permisos de ejecución al script.&lt;br /&gt;Nota: &lt;span style="font-style: italic;"&gt;recomiendo probar los comando uno a uno en una terminal para verificar que está todo bien y usar la opción --nodetach al ejecutar dund para ver todos los mensajes.&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;sudo chmod +x /usr/local/bin/palmBTsync.sh&lt;/blockquote&gt;   7. Ahora abrimos JPilot y en el menú &lt;span style="font-weight: bold;"&gt;Fichero-&gt;Preferencias&lt;/span&gt; escogemos la segunda solapa "Opciones" y en el campo que dice "&lt;span style="font-style: italic;"&gt;Puerto Serial (/dev/ttyS0, /dev/pilot)&lt;/span&gt;" escribimos: &lt;blockquote&gt;net:any -l&lt;/blockquote&gt;, para que el JPilot realize la sincronización por Red, luego presionamos aceptar.&lt;br /&gt;Ahora podemos realizar la sincronización de la forma acostumbrada solo recordar antes de sincronizar es necesario ejecutar nuestro script &lt;blockquote&gt;palmBTsync.sh&lt;/blockquote&gt;Nota: &lt;span style="font-style: italic;"&gt;Tal vez el firewall les cause algunos problemas, si es así prueben desactivarlo y verificar, también pueden mirar en el log del sistema para saber que puerto deben habilitar.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-1324200563615240658?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/1324200563615240658/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2008/07/como-sincronizar-una-palm-y-ubuntu_03.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/1324200563615240658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/1324200563615240658'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2008/07/como-sincronizar-una-palm-y-ubuntu_03.html' title='Como sincronizar una Palm y Ubuntu usando JPilot  II'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-4165954696635412030</id><published>2008-07-03T15:37:00.010-05:00</published><updated>2010-04-05T15:25:47.334-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JPilot'/><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='Palm'/><category scheme='http://www.blogger.com/atom/ns#' term='sincronizar'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='usb'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Como sincronizar una Palm y Ubuntu usando JPilot  I</title><content type='html'>Pasos sencillos para sincronizar una Palm en Ubuntu, conectada por el puerto USB usando JPilot.&lt;br /&gt;En teoría esto debería funcionar para cualquier versión de Ubuntu, de no ser así favor de indicarlo en los comentarios.&lt;br /&gt;&lt;br /&gt;Paso 1. Instalar JPilot usando el comando&lt;br /&gt;&lt;blockquote&gt;sudo aptitude install jpilot&lt;/blockquote&gt;también se puede instalar usando synaptic o apt-get según el gusto de cada cual.&lt;br /&gt;&lt;br /&gt;Paso 2. Ejecutar JPilot, en gnome se le puede encontrar en el menú &lt;span style="font-weight: bold;"&gt;Aplicaciones-&gt;Oficina-&gt;J-Pilot&lt;/span&gt;, una vez en el programa abrir las preferencias, menú &lt;span style="font-weight: bold;"&gt;Fichero-&gt;Prefencias&lt;/span&gt; o bien usar el método abreviado &lt;span style="font-style: italic;"&gt;Ctrl + S&lt;/span&gt;.&lt;br /&gt;Ya en las preferencias ir a la segunda solapa "Opciones" y en el campo que dice &lt;span style="font-style: italic;"&gt;"Puerto Serial (/dev/ttyS0, /dev/pilot)"&lt;/span&gt; escribir: &lt;blockquote&gt;usb:&lt;/blockquote&gt; (lleva los dos puntos) y presionar aceptar; esto es para que podamos sincronizar más adelante con la Palm conectada al puerto USB.&lt;br /&gt;&lt;br /&gt;Paso 3. Es muy posible, si es la primera vez que sincronizas, que se requiera instalar el usuario en la Palm esto lo puedes hacer fácilmente desde el JPilot en el menú &lt;span style="font-weight: bold;"&gt;Fichero-&gt;Instalar Usuario&lt;/span&gt; (Nota: Observa el área de texto en la parte inferior del jpilot que te indicará cuando presionar el botón de sincronización en la Palm). Una vez listo la configuración del usuario y presiona el botón de sincronizar de la Palm.&lt;br /&gt;&lt;br /&gt;Con esto queda todo listo ahora puedes trabajar con tu Palm crear contactos, notas, eventos, tareas y regresar y sincronizar sin ningún problema.&lt;br /&gt;&lt;br /&gt;Para hacer respaldos de los datos en la Palm podemos instalar un plugin al JPilot &lt;blockquote&gt;sudo aptitude install jpilot-backup&lt;/blockquote&gt; luego reiniciar el jpilot, ahora en el menú &lt;span style="font-weight: bold;"&gt;Plugins&lt;/span&gt; encontraras una nueva opción Backup desde donde configurar y visualizar que ha sido respaldado de tu Palm.&lt;br /&gt;&lt;br /&gt;Nota: &lt;span style="font-style: italic;"&gt;Para eliminar jpilot se puede usar aptitude, apt-get o synaptic por ejemplo:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo aptitude remove jpilot&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-4165954696635412030?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/4165954696635412030/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2008/07/como-sincronizar-una-palm-y-ubuntu.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/4165954696635412030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/4165954696635412030'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2008/07/como-sincronizar-una-palm-y-ubuntu.html' title='Como sincronizar una Palm y Ubuntu usando JPilot  I'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-7525699842051119596</id><published>2008-06-04T00:09:00.004-05:00</published><updated>2008-06-04T00:30:43.742-05:00</updated><title type='text'>Una alternativa a la Gasolina</title><content type='html'>Leyendo en el blog de mi amigo &lt;a href="http://ahioros.net/index.php?option=com_content&amp;amp;task=view&amp;amp;id=45&amp;amp;Itemid=1"&gt;Ahioros&lt;/a&gt; pude encontrar una muy buena noticia que deseo compartir. Buenas noticias para nuestros bolsillos, que ya han sido muy golpeados por el alto precio de la gasolina.&lt;br /&gt;&lt;br /&gt;El combustible M4, desarrollado en Panamá por Porfirio Ellis Bonilla y Gonzalo Córdoba Candadeno y que promete ser una alternativa ecológica y económica a la gasolina, con la ventaja de que no es necesario hacer ningún tipo de modificación al motor para usarlo.&lt;br /&gt;&lt;br /&gt;En los siguientes vídeos la entrevista al Ing Porfirio Ellis&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/P0qFcDPS_n0&amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/P0qFcDPS_n0&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/qVdr0crhyyw&amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/qVdr0crhyyw&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-7525699842051119596?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://ahioros.net/index.php?option=com_content&amp;task=view&amp;id=45&amp;Itemid=1' title='Una alternativa a la Gasolina'/><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/7525699842051119596/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2008/06/una-alternativa-la-gasolina.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/7525699842051119596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/7525699842051119596'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2008/06/una-alternativa-la-gasolina.html' title='Una alternativa a la Gasolina'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-903967078353779295</id><published>2008-05-28T23:57:00.007-05:00</published><updated>2010-04-05T15:25:57.430-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><title type='text'>Mejorando Gmail</title><content type='html'>Existen para firefox muchos complementos (Addons) que permiten adicionar una increíble cantidad de funcionalidades adicionales al navegador convirtiéndolo casi en el único programa que necesitas para hacer tu trabajo diario.&lt;br /&gt;&lt;br /&gt;El día de hoy voy a comentar acerca de un addon que mejora mucho la apariencia y la forma de utilizar gmail en firefox:&lt;span style="font-weight: bold;"&gt; &lt;span style="font-style: italic;"&gt;Better Gmail 2&lt;/span&gt;&lt;/span&gt;, se puede encontrar más información &lt;a href="http://lifehacker.com/software/exclusive-lifehacker-download/better-gmail-2-firefox-extension-for-new-gmail-320618.php"&gt;aquí&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Personalmente me gusta la capacidad de cambiarle el skin al gmail...&lt;br /&gt;&lt;br /&gt;La instalación es bastante simple, en &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/6076"&gt;este enlace&lt;/a&gt; se encuentra un botón  con la etiqueta: "Add to firefox", que permite iniciar la instalación, una vez terminado este proceso es necesario reiniciar el Firefox.&lt;br /&gt;&lt;br /&gt;Una vez el navegador ha reiniciado, en el menú &lt;span style="font-weight: bold;"&gt;Herramientas-&gt;Better Gmail 2...&lt;/span&gt; se encuentra la ventana de configuración para activar/desactivar las características del addon de acuerdo al gusto de cada uno.&lt;br /&gt;&lt;br /&gt;Algunas capturas de pantalla:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Xph0zkPcUSA/SD6lAGMRjyI/AAAAAAAAARQ/UNA7R0E54tU/s1600-h/gmail-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_Xph0zkPcUSA/SD6lAGMRjyI/AAAAAAAAARQ/UNA7R0E54tU/s320/gmail-1.png" alt="" id="BLOGGER_PHOTO_ID_5205779640367550242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Xph0zkPcUSA/SD6lTGMRjzI/AAAAAAAAARY/62VHsHMtlCs/s1600-h/gmail-3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_Xph0zkPcUSA/SD6lTGMRjzI/AAAAAAAAARY/62VHsHMtlCs/s320/gmail-3.png" alt="" id="BLOGGER_PHOTO_ID_5205779966785064754" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-903967078353779295?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/903967078353779295/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2008/05/mejorando-gmail.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/903967078353779295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/903967078353779295'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2008/05/mejorando-gmail.html' title='Mejorando Gmail'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Xph0zkPcUSA/SD6lAGMRjyI/AAAAAAAAARQ/UNA7R0E54tU/s72-c/gmail-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-111350994175673442</id><published>2008-05-21T02:27:00.005-05:00</published><updated>2010-04-05T15:26:05.250-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JPilot'/><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Como sincronizar una Palm con Ubuntu usando JPilot</title><content type='html'>Pasos sencillos para sincronizar una Palm en Ubuntu, conectada por el puerto USB usando JPilot.&lt;br /&gt;En teoría esto debería funcionar para cualquier versión de Ubuntu, de no ser así favor de indicarlo en los comentarios.&lt;br /&gt;¡porque uno nunca sabe cuando le puede hacer falta! :)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;Paso 1.&lt;/span&gt;&lt;/span&gt; Instalar JPilot usando el comando&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;sudo aptitude install jpilot&lt;/span&gt;&lt;br /&gt;también se puede instalar usando synaptic o apt-get según el gusto de cada cual.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;Paso 2.&lt;/span&gt;&lt;/span&gt; Ejecutar JPilot, en gnome se le puede encontrar en el menú &lt;span style="font-weight: bold;"&gt;Aplicaciones-&gt;Oficina-&gt;J-Pilot&lt;/span&gt;,  una vez en el programa abrir las preferencias, menú &lt;span style="font-weight: bold;"&gt;Fichero-&gt;Prefencias&lt;/span&gt; o bien usar el método abreviado Ctrl + S.&lt;br /&gt;Ya en las preferencias ir a la segunda solapa "Opciones" y en el campo que dice "Puerto Serial (/dev/ttyS0, /dev/pilot) escribir: &lt;span style="font-weight: bold;"&gt;usb:&lt;/span&gt; y presionar aceptar; esto es para que podamos sincronizar más adelante con la Palm conectada al puerto USB.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;Paso 3.&lt;/span&gt;&lt;/span&gt; Es muy posible, si es la primera vez que sincronizas, que se requiera instalar el usuario en la Palm esto lo puedes hacer fácilmente desde el JPilot en el menú &lt;span style="font-weight: bold;"&gt;Fichero-&gt;Instalar Usuario&lt;/span&gt; (Nota: Observa el área de texto en la parte inferior del jpilot que te indicará cuando presionar el botón de sincronización en la Palm). Una vez listo la configuración del usuario presiona el botón de sincronización del jpilot y espera que te indique hacer lo mismo en la palm  y presiona el botón de sincronizar de la Palm.&lt;br /&gt;&lt;br /&gt;Con esto queda todo listo ahora puedes trabajar con tu Palm crear contactos, notas, eventos, tareas y regresar y sincronizar sin ningún problema.&lt;br /&gt;&lt;br /&gt;Hasta pronto&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-111350994175673442?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/111350994175673442/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2008/05/como-sincronizar-una-palm-con-ubuntu.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/111350994175673442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/111350994175673442'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2008/05/como-sincronizar-una-palm-con-ubuntu.html' title='Como sincronizar una Palm con Ubuntu usando JPilot'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-4239523974624720139</id><published>2008-04-27T01:20:00.004-05:00</published><updated>2010-04-05T15:26:12.849-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='favoritos'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='Bluetooth'/><title type='text'>FLISOL 2008 en Panamá</title><content type='html'>El día 26 de Abril del 2008 se celebró el FLISOL con una participación de un buen número de personas, me siento contento con los resultados, mucha gente quedó muy interesada con el evento y se llevaron CD's de Ubuntu para instalar en sus casas.&lt;br /&gt;&lt;br /&gt;Se contó con la participación de la Ciudad del Saber, un representate del proyecto &lt;span style="font-style: italic;"&gt;&lt;a href="http://www.conectate.gob.pa/"&gt;Conectate&lt;/a&gt; al Conocimiento&lt;/span&gt; (en mi opinión la charla más interesante), una representante de la Universidad Nacional y varios miembros de la &lt;a href="http://www.fslpma.org/"&gt;FSL&lt;/a&gt; que expusieron temas de interés relacionados son el Software Libre.&lt;br /&gt;&lt;br /&gt;Como novedad este año transmitimos en vivo el evento por Internet (&lt;a href="http://www.installfest.net/FLISOL2008/flisoltv?highlight=%28tv%29%7C%28flisol%29"&gt;FLISOL TV&lt;/a&gt;) y se utilizó el &lt;a href="http://www.cdspanama.org/index.php?set_language=es&amp;amp;cccpage=servicios_ccialt"&gt;Centro de Convenciones de la Ciudad del Saber&lt;/a&gt; que es perfecto para todo tipo de presentaciones y cuenta con salones muy cómodos y bien equipados :D&lt;br /&gt;&lt;br /&gt;Se realizó una mini expo en la que tuve la oportunidad de participar como expositor y demostrar varias herramientas de software libre (*), y otros compañeros hicieron una demostración de cómo instalar Ubuntu y Mandriva.&lt;br /&gt;&lt;br /&gt;*Herramientas de las que trató mi presentación: &lt;a href="https://marge.dev.java.net/"&gt;Marge&lt;/a&gt;, &lt;a href="http://amarok.kde.org/"&gt;Amarok,&lt;/a&gt; &lt;a href="http://es.wikipedia.org/wiki/Compiz_Fusion"&gt;Compiz-fusion&lt;/a&gt;&lt;br /&gt;Hasta la proxima.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-4239523974624720139?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/4239523974624720139/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2008/04/flisol-2008-en-panam.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/4239523974624720139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/4239523974624720139'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2008/04/flisol-2008-en-panam.html' title='FLISOL 2008 en Panamá'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-3186511759704074266</id><published>2008-03-22T15:43:00.007-05:00</published><updated>2010-04-05T15:26:40.331-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='Configuracion'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Configurar la version por defecto de Java en Ubuntu</title><content type='html'>Extraído de https://help.ubuntu.com/community/Java, especificamente de la sección:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Selecting the default Java version...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Asumiendo que ya tenemos instalado java, es posible también instalar varias versiones del entorno de java, entre las que podemos destacar:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt; Free Java: que aparece en los repositorios como GCJ, GNU y que viene incluido en Ubuntu desde la verision 5.10.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt; Sun Java: La implementación de java por Sun Microsystems (creadores de java) tomada como referencia para las demas implementaciones. En Ubuntu 6.06, esta incluida en los repositorios multiverse.&lt;/li&gt;&lt;br /&gt;&lt;li&gt; Blackdown Java: otra implementación "Blackdown Java", esta incluida en los repositorios multiverse desde la version Ubuntu 5.10 y posteriores.&lt;/li&gt;&lt;br /&gt;&lt;li&gt; IBM Java: IBM Java es una reimplementación con un "Just-In-Time Compiler" (no se que es esto con exactitud por ello no lo tradusco pero entiendo que es un compilador en tiempo real o algo asi corrijan me para arreglar lo). Solo disponible desde el sitio Web de IBM. Es la opción preferida para PowerPC, aunque también esta disponible para arquitecturas i386 y AMD64.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Tenemos dos formas de proseguir, en una terminal ejecutamos:&lt;br /&gt;&lt;br /&gt;1. &lt;span style="background-color: rgb(244, 218, 162); font-weight: bold;"&gt;update-java-alternatives -l&lt;/span&gt; para visualizar una lista de las opciones disponibles, por ejemplo:&lt;br /&gt;&lt;span style="background-color: rgb(244, 218, 162); font-weight: bold;"&gt;java-6-sun 63 /usr/lib/jvm/java-6-sun&lt;/span&gt; y  con el comando siguiente, por ejemplo, seleccionamos alguna de las opciones mostradas antes: &lt;span style="background-color: rgb(244, 218, 162); font-weight: bold;"&gt;sudo update-java-alternatives -s java-6-sun&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;2. &lt;span style="background-color: rgb(244, 218, 162); font-weight: bold;"&gt;sudo update-alternatives --config java&lt;/span&gt; y escogemos de las opciones ofrecidas la que más nos guste. Es necesario configurar también &lt;span style="font-weight: bold;"&gt;jar, javac, javadoc, javah, javap y javaws&lt;/span&gt; simplemente reemplazando la palabra java en el comando anterior por jar, javac, etc; esto permite personalizar al máximo nuestro sistema, sin embargo el método anterior cambia todas las opciones de una sola vez.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para que todas las aplicaciones que tenemos instaladas se ejecuten con la versión de la Maquina Virtual de Java «JVM» por sus siglas en ingles debemos editar el archivo jvm, ejecutando en una terminal el comando:&lt;br /&gt;&lt;span style="background-color: rgb(244, 218, 162); font-weight: bold;"&gt;sudo gedit /etc/jvm&lt;/span&gt;&lt;br /&gt;y movemos la dirección de la instalación de nuestra opción preferida hacia el principio del archivo, las aplicaciones en java se ejecutan con la primera JVM que encuentran en el archivo antes mencionado.&lt;br /&gt;&lt;br /&gt;Nota: cabe destacar que en la dirección /usr/lib/jvm/ se instalan el Free Java y Sun Java que describo arriba,&lt;br /&gt;Blackdown Java se instala, si no me equivoco en /usr/lib/j2se.&lt;br /&gt;&lt;br /&gt;¡Hasta pronto!&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-3186511759704074266?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/3186511759704074266/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2008/03/configurar-la-version-por-defecto-de.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3186511759704074266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/3186511759704074266'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2008/03/configurar-la-version-por-defecto-de.html' title='Configurar la version por defecto de Java en Ubuntu'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-8234244738183253229</id><published>2008-03-17T11:36:00.063-05:00</published><updated>2010-04-05T15:26:53.276-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='LGPL'/><category scheme='http://www.blogger.com/atom/ns#' term='Bluetooth'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>How to use Marge(Java Bluetooth Framework) in Netbeans 6 IDE</title><content type='html'>&lt;p&gt;&lt;a href="http://www.rococosoft.com/weblog/archives/2007/05/cool_projects_using_jsr82_1_ma.html"&gt;Marge&lt;/a&gt; is a framework created by Bruno Ghisi and Lucas Torri under the &lt;a href="http://www.gnu.org/copyleft/lesser.html"&gt;LGPL&lt;/a&gt; license.&lt;br /&gt;&lt;br /&gt;See also:&lt;br /&gt;&lt;a href="https://marge.dev.java.net/"&gt;Marge Home&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.netbeans.org/kb/60/mobility/quickstart.html"&gt;&lt;span style="font-weight: bold;"&gt;NetBeans 6.0 CLDC/MIDP Development Quick Start Guide&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Contents&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=3218090322474253065&amp;amp;postID=8234244738183253229#00"&gt;Requirements&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=3218090322474253065&amp;amp;postID=8234244738183253229#01"&gt;Downloading Marge&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=3218090322474253065&amp;amp;postID=8234244738183253229#02"&gt;Creating a new project&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=3218090322474253065&amp;amp;postID=8234244738183253229#03"&gt;Including Marge Jar&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;a name="00"&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;What you need?&lt;/span&gt;&lt;br /&gt;&lt;li&gt;Java Development Kit (http://www.java.com/)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;NetBeans 6 IDE with Mobility plugins (http://download.netbeans.org/netbeans/6.0/final/)&lt;br /&gt; *Choose the full version to ensure that nothing is missing&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Marge Framework (http://marge.dev.java.net)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name="01"&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Downloading Marge&lt;/span&gt;&lt;br /&gt;&lt;p&gt;Download the marge v 0.4.0 or higher: http://wiki.java.net/bin/view/Mobileandembedded/Marge&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name="02"&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Creating a new project&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Xph0zkPcUSA/R97mWtCBXVI/AAAAAAAAAQo/O0Pzgiilvew/s1600-h/newProject.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_Xph0zkPcUSA/R97mWtCBXVI/AAAAAAAAAQo/O0Pzgiilvew/s200/newProject.png" alt="" id="BLOGGER_PHOTO_ID_5178829899242233170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;*Open &lt;span style="font-weight: bold;"&gt;NetBeans IDE&lt;/span&gt;, create a new project then select File-&gt;New Project... and select category "Mobility" and MIDP Application. Click Next.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Xph0zkPcUSA/R97lCNCBXUI/AAAAAAAAAQg/Z7SAKeTQ85k/s1600-h/nombreUbicacion.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_Xph0zkPcUSA/R97lCNCBXUI/AAAAAAAAAQg/Z7SAKeTQ85k/s200/nombreUbicacion.png" alt="" id="BLOGGER_PHOTO_ID_5178828447543287106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;*Set your project name and location for example,&lt;br /&gt;Name: Marge-Test&lt;br /&gt;Location: /home/&lt;b&gt;$YOUR_USER&lt;/b&gt;/NetBeansProjects&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Xph0zkPcUSA/R97r7dCBXWI/AAAAAAAAAQw/AKSGf7iaFgU/s1600-h/platform.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_Xph0zkPcUSA/R97r7dCBXWI/AAAAAAAAAQw/AKSGf7iaFgU/s200/platform.png" alt="" id="BLOGGER_PHOTO_ID_5178836028160564578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;*Select the Sun Java Wireless Toolkit 2.52 for CLDC as the Emulator Platform and use the remaining defaults. Click Next.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Xph0zkPcUSA/R97tfNCBXXI/AAAAAAAAAQ4/og4XWAVtyXU/s1600-h/DevConfigurations.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_Xph0zkPcUSA/R97tfNCBXXI/AAAAAAAAAQ4/og4XWAVtyXU/s200/DevConfigurations.png" alt="" id="BLOGGER_PHOTO_ID_5178837741852515698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;*Expand "Configuration templates provided by installed CLDC platforms" and "Sun Java Wireless Toolkit 2.52 for CLDC" folders. Check at least one of the configurations. The IDE automatically creates a new project configuration for each template listed. Feel free to check all avail configurations.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Xph0zkPcUSA/R97zbdCBXYI/AAAAAAAAARA/VMGT3rrMMZA/s1600-h/MIDletView.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_Xph0zkPcUSA/R97zbdCBXYI/AAAAAAAAARA/VMGT3rrMMZA/s200/MIDletView.png" alt="" id="BLOGGER_PHOTO_ID_5178844274497772930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;*Click Finish. The IDE creates the project folder. You can see your MIDlet in the Visual Mobile Designer.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name="03"&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Including Marge Jar&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;*Once the project is created we need to put Marge as project Library. Right click in the project's name (in our case, Marge-Test) and select Properties. Select Libraries and Resources under Build node on the left panel. Click in Add Jar/Zip, select Marge jar and click Ok.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Xph0zkPcUSA/R974ANCBXZI/AAAAAAAAARI/7eQB9lIkTsU/s1600-h/AddJar.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; display: block; cursor: pointer;" src="http://2.bp.blogspot.com/_Xph0zkPcUSA/R974ANCBXZI/AAAAAAAAARI/7eQB9lIkTsU/s200/AddJar.png" alt="" id="BLOGGER_PHOTO_ID_5178849303904476562" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;If everything went correct, you will be able to see Marge package being displayed in the project structure and you are ready to use!&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;Greetings.&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-8234244738183253229?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/8234244738183253229/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2008/03/how-to-use-margejava-bluetooth.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/8234244738183253229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/8234244738183253229'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2008/03/how-to-use-margejava-bluetooth.html' title='How to use Marge(Java Bluetooth Framework) in Netbeans 6 IDE'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Xph0zkPcUSA/R97mWtCBXVI/AAAAAAAAAQo/O0Pzgiilvew/s72-c/newProject.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-4109073537010542137</id><published>2008-02-21T10:17:00.004-05:00</published><updated>2010-04-05T15:27:34.590-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>Sun Mircosystems ofrece premios por contribuir con NetBeans</title><content type='html'>Hoy he recibido un corre muy interesant, Sun Mircosystems, los creadores de Java y la compañia que está detras de grandes proyectos como OpenOffice y NetBeans está ofreciendo premios para aquellos que sugieran ideas para el proyecto NetBeans.&lt;br /&gt;&lt;br /&gt;Así que si alguno tiene una buena idea puede sugerirla.&lt;br /&gt;&lt;br /&gt;Pueden ver más información &lt;a href="http://ubuntuforums.org/showthread.php?t=703392"&gt;aquí&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-4109073537010542137?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://ubuntuforums.org/showthread.php?t=703392' title='Sun Mircosystems ofrece premios por contribuir con NetBeans'/><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/4109073537010542137/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2008/02/sun-mircosystems-ofrece-premios-por.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/4109073537010542137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/4109073537010542137'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2008/02/sun-mircosystems-ofrece-premios-por.html' title='Sun Mircosystems ofrece premios por contribuir con NetBeans'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-2020256127126909989</id><published>2008-01-22T13:33:00.002-05:00</published><updated>2010-04-05T15:27:45.066-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='favoritos'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='Juegos'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Mi Ubuntu como consola de Juegos</title><content type='html'>Después de mucho leer y probar varias cosas tengo ya una cantidad pequeña de juegos corriendo en mi Ubuntu, pero aunque no son muchos es interesante ver como no necesito de wintendo ya ni siquiera para los juegos.&lt;br /&gt;&lt;br /&gt;Bueno vale decir que gracias al esfuerzo de muchas personas, que tal vez nunca conozca ahora puedo jugar:&lt;br /&gt;&lt;br /&gt; &lt;span style="font-weight: bold;"&gt;1. Unreal Tournament 2004 (demo porque no he comprado aun el juego)&lt;br /&gt; 2. Enemy Territory&lt;br /&gt; 3. Cube&lt;br /&gt; 4. ActionCube&lt;br /&gt; 5. OpenArena (Basado en el motor de Quake III)&lt;br /&gt; 6. Scorched 3D (juego 3D donde tienes que destruir a los tanques enemigos, me recuerda a worm)&lt;br /&gt; 7. Warzone 2100 (juego donde construyes tu ejercito y destruyes las bases enemigas)&lt;br /&gt; 8. Planet Penguin Racer (tratar de terminar la carrera contra el reloj mientras recoges los peces)&lt;br /&gt; 9. Super Tux Kart (clon de Mario Kart)&lt;br /&gt;10. Super Tux (simila al Mario Bros)&lt;br /&gt;11. Pingus&lt;br /&gt;12. Globulation 2 (!!! este es uno de mis favoritos XD, me recuerda a starcraft pero tiene características muy diferentes)&lt;br /&gt;13. Wormux (Al estilo Worm)&lt;br /&gt;14. Starcraft (usando wine)&lt;br /&gt;15. Barrage (en este juego le disparas a unos soldados y tanques desde una posición estática, debo decir que no me gusta mucho)&lt;br /&gt;16. Solarwolf (un juego muy entretenido)&lt;br /&gt;17. Tremulous (aún no lo he jugado solo lo instalé)&lt;br /&gt;18. Super Mario War (un tributo a Super Mario War creado por Samuele Poletto)&lt;br /&gt;19. Regnum Online (Un MMORPG con gráficos en 3D al que me he hecho adicto)&lt;br /&gt;20. America's Army (funciona muy bien)&lt;br /&gt;21. Quake4&lt;br /&gt;22. Vendetta Online (Mmorpg de pago)&lt;br /&gt;23. Neve Winter Nights&lt;br /&gt;24. Savage2&lt;br /&gt;25. WoW (Mmorpg de pago o gratuito si encuentras server)&lt;br /&gt;26. PlaneShift (Otro Mmorpg, gratuito)&lt;br /&gt;27. Arkanoidsb (De los mejores Arkanoid que he juegado, por no decir el mejor)&lt;br /&gt;28. Nexuiz (Tipo UT, ambientado en naves, humanos contra aliens)&lt;br /&gt;29. Lineage2 (Otro Mmorpg)&lt;br /&gt;30. Privateer (Simulador espacial)&lt;br /&gt;31. Sauerbraten&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para tener más información consultar:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ubuntugames.org/"&gt;http://www.ubuntugames.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.regnummmorpg.com/"&gt;http://www.regnummmorpg.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://wormux.org/wiki/es/download.php"&gt;http://wormux.org/wiki/es/download.php&lt;/a&gt;&lt;br /&gt;&lt;a href="http://browse.files.filefront.com/Unreal+Tournament+2004+Official+Demos/;671519;/browsefiles.html"&gt;Unreal Tournament Demo&lt;/a&gt;&lt;br /&gt;&lt;a href="http://smw.72dpiarmy.com/"&gt;http://smw.72dpiarmy.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Tengo TransGaming Cedega Versión 6.0 pero parece no correr bien si tienes instalado Wine...&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Hasta la próxima y sigan jugando X-D&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-2020256127126909989?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/2020256127126909989/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2008/01/mi-ubuntu-como-consola-de-juegos.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/2020256127126909989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/2020256127126909989'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2008/01/mi-ubuntu-como-consola-de-juegos.html' title='Mi Ubuntu como consola de Juegos'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-7484881826789852359</id><published>2007-12-10T11:27:00.002-05:00</published><updated>2010-04-05T15:28:21.192-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Libre'/><category scheme='http://www.blogger.com/atom/ns#' term='sl'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Lanzado el proyecto de documentación de Ubuntu</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_Xph0zkPcUSA/R11rmI4iuWI/AAAAAAAAAM4/ZALIEXpP1LU/s1600-h/Banner_Ubuntu_navidad_by_meis0k.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5142384652490815842" style="margin: 0px 10px 10px 0px; float: left;" alt="" src="http://2.bp.blogspot.com/_Xph0zkPcUSA/R11rmI4iuWI/AAAAAAAAAM4/ZALIEXpP1LU/s320/Banner_Ubuntu_navidad_by_meis0k.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Después de muchos meses trabajando, por fin se ha anunciado en la pagina de www.ubuntu-es.org que ya está activo el nuevo wiki de documentación &lt;a href="http://doc.ubuntu-es.org/"&gt;doc.ubuntu-es.org&lt;/a&gt; en el cual toda la Comunidad hispana podrá colaborar e introducir documentación, así como participar en varios proyectos en marcha.&lt;br /&gt;&lt;br /&gt;También se hace una invitación a todos los que deseen colaborar en el proyecto a pasarse por la sección de &lt;a href="http://doc.ubuntu-es.org/Project:Ayuda"&gt;Ayuda&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Este proyecto tiene los siguientes objetivos:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Crear un lugar común y albergar toda la documentación "Oficial" de Ubuntu en español y mantenerla actualizada. &lt;/li&gt;&lt;li&gt;&lt;br /&gt;Ofrecer a los usuarios de Ubuntu que se inician en esta distro: documentación técnica, una visión amplia sobre lo que es el movimiento, la filosofía del Software Libre, importancia de estándares y temas de actualidad.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Servir como guía, apoyo y ayuda a las Comunidades Locales hispanas (LoCos).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Tener un sitio en español donde albergar proyectos hispanos en marcha, como C.U.P.I.E, o la distrohispana entre otros. &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-7484881826789852359?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://doc.ubuntu-es.org/Sitios_de_descarga' title='Lanzado el proyecto de documentación de Ubuntu'/><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/7484881826789852359/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2007/12/lanzado-el-proyecto-de-documentacin-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/7484881826789852359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/7484881826789852359'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2007/12/lanzado-el-proyecto-de-documentacin-de.html' title='Lanzado el proyecto de documentación de Ubuntu'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Xph0zkPcUSA/R11rmI4iuWI/AAAAAAAAAM4/ZALIEXpP1LU/s72-c/Banner_Ubuntu_navidad_by_meis0k.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-8372919070548452334</id><published>2007-10-26T20:23:00.001-05:00</published><updated>2010-01-07T11:33:59.533-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='favoritos'/><category scheme='http://www.blogger.com/atom/ns#' term='rock'/><category scheme='http://www.blogger.com/atom/ns#' term='musica'/><category scheme='http://www.blogger.com/atom/ns#' term='youtube'/><title type='text'>Version modernizada del "Canon en Re mayor de Pachelbel"</title><content type='html'>Navegando por youtube me topé con este vídeo, que es una versión muy moderna del &lt;a href="http://es.wikipedia.org/wiki/Canon_en_Re_mayor_de_Pachelbel"&gt;&lt;span style="font-size:100%;"&gt;Canon en Re mayor de Pachelbel&lt;/span&gt;&lt;/a&gt;, vale la pena verlo...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://es.wikipedia.org/wiki/Canon_en_Re_mayor_de_Pachelbel"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="366" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/QjA5faZF1A8&amp;amp;rel=1&amp;amp;border=0"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/QjA5faZF1A8&amp;amp;rel=1&amp;amp;border=0" type="application/x-shockwave-flash" wmode="transparent" height="366" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-8372919070548452334?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/8372919070548452334/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2007/10/version-modernizada-de-canon.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/8372919070548452334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/8372919070548452334'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2007/10/version-modernizada-de-canon.html' title='Version modernizada del &quot;Canon en Re mayor de Pachelbel&quot;'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3218090322474253065.post-6790415841324390133</id><published>2007-09-11T10:39:00.001-05:00</published><updated>2009-06-11T16:45:17.252-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='presentacion'/><title type='text'>Bienvenida</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Xph0zkPcUSA/RuZYlwFwTGI/AAAAAAAAAAM/Tr3Ow_-_LRI/s1600-h/panax.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 188px; height: 206px;" src="http://4.bp.blogspot.com/_Xph0zkPcUSA/RuZYlwFwTGI/AAAAAAAAAAM/Tr3Ow_-_LRI/s320/panax.png" alt="" id="BLOGGER_PHOTO_ID_5108868232885849186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;¡Saludos!&lt;/span&gt;&lt;br /&gt;Ahora inicio este pequeño proyecto de llevar una bitácora, más que nada para compartir experiencias en cuanto a varios temas de mí interés, principalmente programación, Linux y software libre.&lt;br /&gt;&lt;br /&gt;Espero que la información aquí les sea útil y de interés para muchos de ustedes, ojalá  algún día pueda llegar a tener un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;blogg&lt;/span&gt; tan visitado como en su tiempo, fue el de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;frecpp&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;En agradecimiento por todo lo que hacen todas las personas que han creado y compartido datos, manuales y todo tipo de información con migo hasta ahora, intento continuar su legado...&lt;br /&gt;&lt;br /&gt;Disfruten todos de la libertad pues como dice mi lema:&lt;br /&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;div class="blogger-post-footer"&gt;¡El mundo es mejor cuando eres libre de elegir!&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3218090322474253065-6790415841324390133?l=emont01.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emont01.blogspot.com/feeds/6790415841324390133/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emont01.blogspot.com/2007/09/bienvenida.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/6790415841324390133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3218090322474253065/posts/default/6790415841324390133'/><link rel='alternate' type='text/html' href='http://emont01.blogspot.com/2007/09/bienvenida.html' title='Bienvenida'/><author><name>Eivar Montenegro</name><uri>https://profiles.google.com/103197089485128258320</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-W-zn1xrN2Ts/AAAAAAAAAAI/AAAAAAAAAAA/z2AXnQ_BMoc/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Xph0zkPcUSA/RuZYlwFwTGI/AAAAAAAAAAM/Tr3Ow_-_LRI/s72-c/panax.png' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
