<?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-3683270025490382428</id><updated>2012-02-16T20:14:27.669-06:00</updated><category term='Windows XP'/><category term='processing'/><category term='control'/><category term='registro'/><category term='Desktop'/><category term='visual basic'/><category term='Lucid Lynx'/><category term='unam'/><category term='Cómo'/><category term='apt-get'/><category term='robot'/><category term='buscar'/><category term='mencoder'/><category term='poca memoria'/><category term='SQLite'/><category term='scribd'/><category term='Apple'/><category term='Galería'/><category term='psql'/><category term='Cómo ha sido'/><category term='Requery'/><category term='Virtual Host'/><category term='tablas'/><category term='convertir'/><category term='CrunchBang'/><category term='SELECT'/><category term='controles'/><category term='gem'/><category term='concurrencia'/><category term='rails'/><category term='Cuadro de lista'/><category term='documental'/><category term='video'/><category term='Eventos'/><category term='like'/><category term='Humor'/><category term='Apache'/><category term='Query'/><category term='Recordset'/><category term='Compilador'/><category term='opera'/><category term='java'/><category term='celebración'/><category term='collect'/><category term='descargar'/><category term='Interbase'/><category term='Recursion'/><category term='screensaver'/><category term='OpenForm'/><category term='Tips'/><category term='Fuente'/><category term='creación'/><category term='rubygems'/><category term='Predeterminado'/><category term='depurador'/><category term='pdf'/><category term='VBA'/><category term='NFS'/><category term='Bento'/><category term='Firefox'/><category term='proyectos'/><category term='vcl'/><category term='Django'/><category term='Soluciones'/><category term='Pilas'/><category term='patrones'/><category term='755'/><category term='framework'/><category term='Desde fuera'/><category term='ubuntu'/><category term='Orígen'/><category term='Psycopg'/><category term='FileMaker'/><category term='Telmex Hub'/><category term='RVM'/><category term='Congela'/><category term='.NET'/><category term='google'/><category term='Xfce'/><category term='Solucionar'/><category term='Python'/><category term='DBF'/><category term='activerecord'/><category term='red'/><category term='planeación'/><category term='la antigüedad'/><category term='Samba'/><category term='DZone'/><category term='Datos'/><category term='Couchrest'/><category term='Para usuarios de Access'/><category term='documento'/><category term='Oracle'/><category term='Base de datos'/><category term='Consulta'/><category term='sqlite3'/><category term='LAN'/><category term='portable'/><category term='Videos'/><category term='mexicano'/><category term='rad'/><category term='Cuadro combinado'/><category term='fuentes'/><category term='access'/><category term='iostream'/><category term='introducción'/><category term='ogv'/><category term='instalar'/><category term='Facebook'/><category term='Connection string'/><category term='reunión'/><category term='Zetes'/><category term='ADO.net'/><category term='Origen del control'/><category term='Create'/><category term='Bjarne Stroustrup'/><category term='Dinámicamente'/><category term='Respaldo'/><category term='Project'/><category term='pownce'/><category term='Open Source'/><category term='nuevo registro'/><category term='Open DataBase Conectivity'/><category term='PHP'/><category term='BusyBox'/><category term='OFFSET'/><category term='comunidad'/><category term='Crear'/><category term='Ruby'/><category term='Linux'/><category term='twitter'/><category term='xubuntu'/><category term='problema'/><category term='DateAdd()'/><category term='Cocoa'/><category term='gcc'/><category term='std'/><category term='Odio'/><category term='cómputo'/><category term='programar'/><category term='Porcentaje'/><category term='six apart'/><category term='consultas'/><category term='meetup'/><category term='SQL'/><category term='gestión'/><category term='seguridad'/><category term='desinstalar'/><category term='dBASE'/><category term='CodeIgniter'/><category term='Tiny Core Linux'/><category term='Date()'/><category term='XAMPP'/><category term='convertidor de video'/><category term='delphi'/><category term='Postgre SQL'/><category term='recurso'/><category term='Source'/><category term='css'/><category term='FLTK'/><category term='educación'/><category term='arreglos'/><category term='mpg'/><category term='File DSN'/><category term='Mac'/><category term='acFormAdd'/><category term='planner'/><category term='Modules'/><category term='Error'/><category term='Origen del contro'/><category term='diseño'/><category term='Campo'/><category term='Vincular'/><category term='dbNaut'/><category term='Flash. Mozilla'/><category term='Fecha'/><category term='MySQL'/><category term='Select Top'/><category term='Tipo de origen de la fila'/><category term='LIMIT'/><category term='bases de datos'/><category term='otros blogs'/><category term='DoCmd'/><category term='CouchDB'/><category term='robocup'/><category term='Lenguaje C'/><category term='Vim'/><category term='ADO DB'/><category term='torneo'/><category term='programación'/><category term='View'/><category term='PostgreSQL'/><category term='DateDiff()'/><category term='full circle magazine'/><category term='html'/><category term='la salle'/><category term='System DSN'/><category term='DLookup'/><category term='Aprender a programar en C'/><category term='ide'/><category term='pocos recursos'/><category term='dragonfly'/><category term='Asistente'/><category term='marco de trabajo'/><category term='recuperación'/><category term='Tabla'/><category term='Actualizar'/><category term='DESC'/><category term='en español'/><category term='Neptuno'/><category term='SQL Server'/><category term='web development'/><category term='evento'/><category term='Tabla vinculada'/><category term='David McCandless'/><category term='sqliteman'/><category term='línea de comando'/><category term='ODBC Drivers'/><category term='C++'/><category term='DBmx'/><category term='Blocks'/><category term='internet'/><category term='Preferente'/><category term='vox'/><category term='tecnología'/><category term='instalación'/><category term='chmod'/><category term='Lecturas'/><category term='noSQL'/><category term='revista'/><category term='ADO'/><category term='HTML5'/><category term='calcular'/><category term='User DSN'/><category term='Asistente para controles'/><category term='Social'/><category term='desgracia'/><category term='Procedimientos Almacenados'/><category term='10.04'/><category term='nombre para software'/><category term='Programas que voy agregando'/><category term='borland'/><category term='verde'/><category term='tutorial'/><category term='Autoincremento'/><category term='Stored Procedures'/><category term='Empty Trash'/><category term='blog'/><category term='herramientas'/><category term='pascal'/><category term='Valor'/><category term='Del qué'/><category term='Sun'/><category term='Data'/><category term='terminal'/><category term='formulario'/><category term='Microsoft Access'/><category term='Restaurar'/><category term='portátil'/><category term='Impresiones'/><category term='ODBC'/><category term='administrar'/><category term='g++'/><category term='Grupo'/><category term='cpp'/><category term='universidad'/><category term='Dart'/><category term='encontrar'/><category term='Microsoft Jet'/><category term='Objetive-C'/><category term='Provider'/><title type='text'>Código elusivo</title><subtitle type='html'>Exploratorio y colector de temas tomados de la máquina comunal para regocijo de un programador de software</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default?start-index=101&amp;max-results=100'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>139</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-8513342133975220969</id><published>2011-10-11T22:24:00.001-05:00</published><updated>2011-10-12T00:23:28.292-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dart'/><title type='text'>Dart y sus scripts aislados</title><content type='html'>&lt;br /&gt;Característica que en los breves textos disponibles del sitio oficial de Dart &lt;a href="http://www.dartlang.org/articles/embedding-in-html/" target="New"&gt;se hace notoria&lt;/a&gt;: Aislamiento entre etiquetas de scripts.&lt;br /&gt;&lt;br /&gt;Es decir, cuando un archivo html &amp;nbsp;contiene más de un script, entre estos no procede la comunicación, el código de uno no participa de la funcionalidad del código de otro. Las etiquetas de script son habitaciones separadas en un hotel llamado html. Los recursos entre entiquetas script deberán compartirse explicitamente con un&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;#import&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Se infiere que el mismo mecanismo va a aplicar para archivos ejecutados por la máquina virtual en un entorno distinto al navegador de Internet. No he encontrado una aclaración de si este aislamiento es forzosamente heredado al código que se compila de Dart a JavaScript.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://codigo-elusivo.blogspot.com/2011/10/un-lenguaje-de-programacion-llamado.html"&gt;&amp;lt;&amp;lt; Un lenguaje de programación llamado Dart&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-8513342133975220969?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/8513342133975220969/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=8513342133975220969' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/8513342133975220969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/8513342133975220969'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/10/dart-y-sus-scripts-aislados.html' title='Dart y sus scripts aislados'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-7050885999298857845</id><published>2011-10-10T16:59:00.003-05:00</published><updated>2011-10-12T00:22:19.640-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dart'/><title type='text'>Un lenguaje de programación llamado Dart</title><content type='html'>Por supuesto que en principio voy a jugar con él, es el lenguaje de programación nuevo que está asomando la cara desde los laboratorios de su papá grandote que se llama Google. &lt;br /&gt;&lt;br /&gt;El anuncio ha sido que Dart está pensado para invadir el territorio ocupado por JavaScript, pero aún no hay pasos avanzados en tal sentido. Se puede inferir que a mediano plazo se podría ver a Dart integrado a Chrome.  La plataforma instalada de Chrome tiene suficientes usuarios para que los programadores pensemos en darle una oportunidad al nuevo lenguaje sin temor a que los resultados pudieran quedar en el completo olvido. El anuncio en concreto se refiere a que estará disponible un compilador de Dart a JavaScript y también debe haber cierta expectativa en hacer experimentos del lado del servidor, porque Dart va a venir con su propia máquina virtual.El nuevo lenguaje luce más o menos así:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;main() {&lt;br /&gt;  //Hago una variable y le doy un valor&lt;br /&gt;  String nombre = 'Yo Soy Tu Infierno';&lt;br /&gt;  //Llamo a la función saluda, le paso mi variable e imprimo el resultado&lt;br /&gt;  print(saluda(nombre));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// La función saluda toma la cadena y devuelve un saludo&lt;br /&gt;String saluda(String quien) &lt;br /&gt;{ &lt;br /&gt;  return 'Hola, ${quien}, es un condenado gusto verte.'; &lt;br /&gt;} &lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Prácticamente es como no necesitar aprender otro lenguaje, si ya conoces uno en que los comentarios comienzan con // o con /* y las funciones se envuelven con { ... }, entonces vas a poder usar Dart sin robarle horas a tu vida para aprenderlo.&lt;br /&gt;&lt;br /&gt;Dart no impone que las variables se declaren con tipo, a esta característica se le ha llamado "tipado opcional", el siguiente ejemplo funciona igual:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;main() {&lt;br /&gt;  //Hago una variable y le doy un valor&lt;br /&gt;  var nombre = 'Yo Soy Tu Infierno';&lt;br /&gt;  //Llamo a la función saluda, le paso mi variable e imprimo el resultado&lt;br /&gt;  print(saluda(nombre));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// La función saluda toma la cadena y devuelve un saludo&lt;br /&gt;saluda(quien) &lt;br /&gt;{ &lt;br /&gt;  return 'Hola, ${quien}, es un condenado gusto verte.'; &lt;br /&gt;} &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Dart viene con clases, interfaces y todo un conjunto de características que no voy a cubrir ahora mismo; de haber oportunidad, iré tocando el tema en futuras entradas al tiempo que voy explorando el lenguaje, pero &lt;a href="http://www.dartlang.org/articles/idiomatic-dart/" target="New"&gt;la información pertinente está disponible desde ya&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-pXREitTu-l8/TpNuteQZjFI/AAAAAAAAAHI/VkZ26Ff4GyM/s1600/Screen+shot+2011-10-10+at+5.15.38+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="275" src="http://1.bp.blogspot.com/-pXREitTu-l8/TpNuteQZjFI/AAAAAAAAAHI/VkZ26Ff4GyM/s400/Screen+shot+2011-10-10+at+5.15.38+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Aún es muy temprano en la vida de Dart, no es posible aún bajar la máquina virtual o el compilador a JavaScript que se han mencionado en &lt;a href="http://www.dartlang.org/" target="New"&gt;dartlang.org&lt;/a&gt;. Hoy, el único modo de experimentar con el lenguaje es con el &lt;a href="http://try-dart-lang.appspot.com/s/g0YN" target="New"&gt;Dartboard&lt;/a&gt;, un intérprete en el sitio web. &lt;br /&gt;&lt;br /&gt;Estoy pensando que Google, al anunciar este lenguaje en una etapa tan temprana, más que hacerlo del conocimiento de la comunidad de desarrolladores de JavaScript, está mandando un mensaje estratégico a la industria. Creo que la palabra clave es VM, creo que el mensaje es: Los asuntos con la otra máquina virtual, eventualmente no tendrán por qué ser un problema.  &lt;br /&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://codigo-elusivo.blogspot.com/2011/10/dart-y-sus-scripts-aislados.html"&gt;Dart y sus scripts aislados &amp;gt;&amp;gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-7050885999298857845?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/7050885999298857845/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=7050885999298857845' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/7050885999298857845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/7050885999298857845'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/10/un-lenguaje-de-programacion-llamado.html' title='Un lenguaje de programación llamado Dart'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-pXREitTu-l8/TpNuteQZjFI/AAAAAAAAAHI/VkZ26Ff4GyM/s72-c/Screen+shot+2011-10-10+at+5.15.38+PM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-8610169215592262368</id><published>2011-09-19T12:24:00.000-05:00</published><updated>2011-09-19T12:24:29.859-05:00</updated><title type='text'>Minimized code</title><content type='html'>After following some links taken from&amp;nbsp;&lt;a href="http://raganwald.posterous.com/another-fine-interview-question"&gt;this&lt;/a&gt;, there's some things that I want to keep:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"[Code] is stuff lying around and it has substantial cost of ownership. It might do us good to consider what we can do to minimize it.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;I think that the future belongs to organizations that learn how to strategically delete code."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Michael Feathers&lt;br /&gt;&lt;a href="http://awe.sm/5VLY7"&gt;http://awe.sm/5VLY7&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"My minority opinion is that a mountain of code is the worst thing that can befall a person, a team, a company. I believe that code weight wrecks projects and companies, that it forces rewrites after a certain size, and that smart teams will do everything in their power to keep their code base from becoming a mountain."&amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Steve Yegge&lt;br /&gt;&lt;a href="http://steve-yegge.blogspot.com/2007/12/codes-worst-enemy.html"&gt;http://steve-yegge.blogspot.com/2007/12/codes-worst-enemy.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-8610169215592262368?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/8610169215592262368/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=8610169215592262368' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/8610169215592262368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/8610169215592262368'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/09/minimized-code.html' title='Minimized code'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-1048707643734418196</id><published>2011-09-17T19:17:00.000-05:00</published><updated>2011-09-17T19:17:42.165-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Humor'/><title type='text'>Esta no es la página que estás buscando</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: left;"&gt;Pues tiene su gracia no encontrar la liga correcta en Github:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="539" src="http://4.bp.blogspot.com/-FEqnHr8JAfw/TnU4MZZaKII/AAAAAAAAAG4/XH_jbbBEjaM/s640/Screenshot_404_github.png" width="640" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-1048707643734418196?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/1048707643734418196/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=1048707643734418196' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/1048707643734418196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/1048707643734418196'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/09/esta-no-es-la-pagina-que-estas-buscando.html' title='Esta no es la página que estás buscando'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-FEqnHr8JAfw/TnU4MZZaKII/AAAAAAAAAG4/XH_jbbBEjaM/s72-c/Screenshot_404_github.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-2857374469896004105</id><published>2011-08-30T14:17:00.000-05:00</published><updated>2011-09-17T17:00:00.583-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xubuntu'/><title type='text'>Encontrar y borrar archivos por tipo en Xubuntu</title><content type='html'>En Xubuntu y otros Linux. En el ejemplo, una línea de comando para buscar archivos del tipo txt y borrarlos:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;find -iname '*.txt' -exec rm {} \;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-2857374469896004105?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/2857374469896004105/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=2857374469896004105' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2857374469896004105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2857374469896004105'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/08/encontrar-y-borrar-archivos-por-tipo-en.html' title='Encontrar y borrar archivos por tipo en Xubuntu'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-2396073643232360603</id><published>2011-08-25T10:40:00.010-05:00</published><updated>2011-10-11T09:24:01.211-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>El señor que dejó la manzana mordida</title><content type='html'>&lt;br /&gt;&lt;i&gt;Actualización (Octubre 6, 2011):&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Esta entrada del blog la escribí cuando Jobs dejó su puesto en Apple. Ha pasado el último día de la vida de Jobs, no hay mucho que actualizar a este artículo, creo que mi enfoque sigue siendo tal como cuando lo escribí.&lt;/i&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;***&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;El comienzo de una era siempre siempre es emocionante y me gusta cuando hay oportunidad de presenciarlo.&lt;br /&gt;&lt;br /&gt;Me temo que Steve Jobs se va por necesidad y no por gusto, me gustaría equivocarme, pero debe ser que su metabolismo decae. Uso productos Mac, pero no me parecen los mejores, son buenos. Me encanta su minimalismo en el diseño y me gusta el material con que han construído la MacBook Pro (es el factor determinante en mi caso). Sus productos de entretenimiento no los uso. No me gustan sus políticas (soy un convencido de que el software que puedo instalar lo decido yo y no me gusta que un juez deba indicarle a la empresa que así debe ser). No me gusta el entorno de desarrollo de aplicaciones para OS X y para iOS, ni me agrada su lenguaje de programación, por seguir al mercado he elegido usarlos. Hay otros productos de otros fabricantes que me gustan más para hacer mi trabajo, y que me son más confortables. &lt;br /&gt;&lt;br /&gt;Admiro la capacidad de Jobs para ver la oportunidad y saber crear piezas tecnológicas preciadas, pero no creo que la palabra "revolución" ajuste con la palabra "tecnológica" en este caso. A muchos elementos tecnológicos de sus productos se les puede seguir la pista de muchos años atrás y desde otras fuentes. Jobs ha sabido conjuntar estos elementos y presentarlos al mundo genialmente, y ha generado una mística del todo efectiva, al grado que hay gente cuya admiración por la figura de la manzana no es razonable. Ha sido influyente, él ha creado su mercado, antes de Jobs, las otras empresas no intuyeron por dónde era el camino de los productos que no necesitamos pero que todo mundo querría tener, y él si lo ha sabido desde el principio. Las tabletas tienen un montón de características en contra, como ser opuestas a la ergonomía, pero los fabricantes se han lanzado a producirlas por seguir la senda de Apple.&lt;br /&gt;&lt;br /&gt;Si tienes un producto Apple en tu escritorio o en tu mochila, esa es una pieza de una época que ayer terminó. Ya estamos en la nueva época, si compras un producto Apple, es un producto Post-Steve-Jobs, de la otra Apple que queda por su cuenta sin su patriarca.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-XRpaXzjBNy4/TnVSzgqORRI/AAAAAAAAAG8/NDlhbz3okD4/s1600/PsychedelicSteveJobs.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/-XRpaXzjBNy4/TnVSzgqORRI/AAAAAAAAAG8/NDlhbz3okD4/s640/PsychedelicSteveJobs.jpg" width="563" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Me gustaría ver que la gente de Apple tiene la "magia" y que Jobs era el carisma. Me gustaría ver que los próximos productos de Apple sean igualmente frescos, tan deseables como sus predecesores. Apple se la juega en sus próximos productos. Apple es la cabeza visible del territorio ahora que los fabricantes de computo americanos van dejando el mercado a los eficientes asiáticos (pienso en IBM y en los pasos que está siguiendo HP, Dell pervive discretamente). Se pone emocionante, y me gusta cuando es así.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;***&lt;/div&gt;&lt;br /&gt;&lt;strike&gt;Puede ser del todo equivocado, puede ser que un día regrese el patriarca por sorpresa a presentar el siguiente producto. Sería excelente para él, su familia y sus admiradores.&lt;/strike&gt; Pero me agrada la idea de un grupo de personas que pueden seguir favorablemente con el legado.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;hr /&gt;&lt;a href="http://www.flickr.com/photos/tsevis/5060020127/in/photostream/" target="New"&gt;La imagen es de Charis Tsevis y viene de aquí &amp;gt;&amp;gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-2396073643232360603?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/2396073643232360603/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=2396073643232360603' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2396073643232360603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2396073643232360603'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/08/el-senor-que-dejo-la-manzana-mordida.html' title='El señor que dejó la manzana mordida'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-XRpaXzjBNy4/TnVSzgqORRI/AAAAAAAAAG8/NDlhbz3okD4/s72-c/PsychedelicSteveJobs.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-595544267072679087</id><published>2011-08-05T22:20:00.002-05:00</published><updated>2011-08-25T17:11:40.350-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bjarne Stroustrup'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>C++ por qué</title><content type='html'>&lt;a href="http://www.youtube.com/watch?v=JBjjnqG0BP8&amp;feature=youtube_gdata_player" target="New"&gt;Una serie de videos del creador del lenguaje C++ explicando sus motivaciones &gt;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-p9sTovOsE8w/TlbIk_aHEzI/AAAAAAAAAGw/L0Gx-GIrSsQ/s1600/Screen%2Bshot%2B2011-08-25%2Bat%2B5.10.47%2BPM.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-p9sTovOsE8w/TlbIk_aHEzI/AAAAAAAAAGw/L0Gx-GIrSsQ/s400/Screen%2Bshot%2B2011-08-25%2Bat%2B5.10.47%2BPM.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-595544267072679087?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/595544267072679087/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=595544267072679087' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/595544267072679087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/595544267072679087'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/08/c-por-que.html' title='C++ por qué'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-p9sTovOsE8w/TlbIk_aHEzI/AAAAAAAAAGw/L0Gx-GIrSsQ/s72-c/Screen%2Bshot%2B2011-08-25%2Bat%2B5.10.47%2BPM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-733045295301770966</id><published>2011-07-14T14:43:00.001-05:00</published><updated>2011-07-14T14:44:51.867-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Objetive-C'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Programando la Mac, sin tanto adorno</title><content type='html'>Lo que me gusta de &lt;a href="http://cocoadevcentral.com/" target="New"&gt;Cocoa Dev Central&lt;/a&gt; es que el contenido se presenta libre de polvo y paja. El novicio en la programación para Mac puede llegar de lleno a su objetivo de aprendizaje sin pasar los laberintos que, a veces, vienen en los libros sobre el tema:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a target="New" href="http://cocoadevcentral.com/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/-JhPZU7P-D2s/Th9GRzXpv7I/AAAAAAAAAFw/Q5IccTy028o/s640/CocoaDevCentral.png" width="339" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-733045295301770966?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/733045295301770966/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=733045295301770966' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/733045295301770966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/733045295301770966'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/07/programando-la-mac-sin-tanto-adorno.html' title='Programando la Mac, sin tanto adorno'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-JhPZU7P-D2s/Th9GRzXpv7I/AAAAAAAAAFw/Q5IccTy028o/s72-c/CocoaDevCentral.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-2840838466829222486</id><published>2011-07-14T14:00:00.004-05:00</published><updated>2011-07-14T14:47:15.409-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Compilador'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Escribiendo un compilador de juguete con Flex, Bison y LLVM</title><content type='html'>Más sobre producir compiladores. El artículo del que hago referencia en esta entrada es el de &lt;a href="http://gnuu.org/" target="New"&gt;Loren Segal&lt;/a&gt; (el creador de &lt;a href="http://yardoc.org/" target="New"&gt;YARD&lt;/a&gt;, una herramienta de documentación para el lenguaje Ruby). &lt;br /&gt;&lt;br /&gt;Segal ha publicado un muy conciso texto, a primera vista, pero no he puesto en práctica los pasos que contiene. Tan pronto me consiga la oportunidad para llevar a cabo esta tarea, haré la actualización a este espacio aportando las notas que considere pertinentes.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a target="New" href="http://gnuu.org/2009/09/18/writing-your-own-toy-compiler/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/-PPqJVgC7Bzs/Th9Hn_54icI/AAAAAAAAAF0/FhY975umE2Y/s640/WritingYourOwnToyCompilerUsingFlexBisonAndLLVM.png" width="292" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gnuu.org/2009/09/18/writing-your-own-toy-compiler/" target="New"&gt;Writing Your Own Toy Compiler Using Flex, Bison and LLVM by Loren Segal&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-2840838466829222486?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/2840838466829222486/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=2840838466829222486' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2840838466829222486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2840838466829222486'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/07/escribiendo-un-compilador-de-juguete.html' title='Escribiendo un compilador de juguete con Flex, Bison y LLVM'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-PPqJVgC7Bzs/Th9Hn_54icI/AAAAAAAAAF0/FhY975umE2Y/s72-c/WritingYourOwnToyCompilerUsingFlexBisonAndLLVM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-220315561140756356</id><published>2011-07-14T13:38:00.000-05:00</published><updated>2011-07-14T13:38:11.500-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Compilador'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>¿Construir un compilador?</title><content type='html'>Me he topado con la serie de documentos escritos entre 1988 y 1995, por Jack Crenshaw, quien los escribió con miras a dar un acercamiento, no tan técnico, sobre los aspectos fundamentales de la construcción de un compilador:&lt;br /&gt;&lt;br /&gt;&lt;a target="New" href="http://compilers.iecc.com/crenshaw/"&gt;http://compilers.iecc.com/crenshaw/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-220315561140756356?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/220315561140756356/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=220315561140756356' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/220315561140756356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/220315561140756356'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/07/construir-un-compilador.html' title='¿Construir un compilador?'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-2036224333364746993</id><published>2011-07-07T14:37:00.000-05:00</published><updated>2011-09-17T16:37:27.259-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sqlite3'/><category scheme='http://www.blogger.com/atom/ns#' term='View'/><category scheme='http://www.blogger.com/atom/ns#' term='Consulta'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='dbNaut'/><title type='text'>dbNaut: Crear una vista con columna calculada</title><content type='html'>Crear vistas en una base de datos es una de las maneras de no repetirse cuando se trabaja elaborando sentencias de consulta, un recurso que tiene mayor efecto en situaciones que se resuelven al definir cálculos, que bien pueden estar basados en los valores de una o varias columnas de una tabla o más tablas. &lt;br /&gt;&lt;br /&gt;En &lt;a target="New" href="http://dbnaut.com"&gt;dbNaut&lt;/a&gt;, &lt;a target="New" href="http://sqlite.org"&gt;SQLite3&lt;/a&gt; y otros gestionadores de bases de datos podría usarse un ejemplo como el que sigue: &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;CREATE VIEW calc_ventas AS&lt;br /&gt;    SELECT *, precio * cantidad AS monto &lt;br /&gt;    FROM ventas&lt;/pre&gt;&lt;br /&gt;Es con el texto &lt;i&gt;precio * cantidad AS monto&lt;/i&gt; que se define una columna llamada &lt;b&gt;monto&lt;/b&gt;, producto de multiplicar las columnas &lt;b&gt;cantidad&lt;/b&gt; por &lt;b&gt;precio&lt;/b&gt;. &lt;br /&gt;&lt;br /&gt;Eventualmente, el usuario podrá convocar la vista escribiendo una sentencia como:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;SELECT * FROM calc_ventas&lt;/pre&gt;&lt;br /&gt;... siendo que la columna calculada "ya vive" dentro de la vista.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-2036224333364746993?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/2036224333364746993/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=2036224333364746993' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2036224333364746993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2036224333364746993'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/07/dbnaut-crear-una-vista-con-columna.html' title='dbNaut: Crear una vista con columna calculada'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-8635942726276601284</id><published>2011-07-07T14:16:00.000-05:00</published><updated>2011-09-17T16:37:27.289-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Autoincremento'/><category scheme='http://www.blogger.com/atom/ns#' term='sqlite3'/><category scheme='http://www.blogger.com/atom/ns#' term='dbNaut'/><title type='text'>dbNaut: Campo clave con auto-incremento</title><content type='html'>La columna clave cuyo valor númerico entero se crea y se establece con cada nuevo registro en un tabla. En &lt;a target="New" href="http://dbnaut.com"&gt;dbNaut&lt;/a&gt; y &lt;a target="New"  href="http://www.sqlite.org/"&gt;SQLite3&lt;/a&gt;, durante la creación de una tabla, la columna, o campo, ha de declararse como columna clave, como en el siguiente ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;CREATE TABLE mytest&lt;br /&gt;   (&lt;br /&gt;      my_id INTEGER PRIMARY KEY AUTOINCREMENT,&lt;br /&gt;      my_name TEXT&lt;br /&gt;   );&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-8635942726276601284?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/8635942726276601284/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=8635942726276601284' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/8635942726276601284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/8635942726276601284'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/07/dbnaut-campo-clave-con-auto-incremento.html' title='dbNaut: Campo clave con auto-incremento'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-8367921329411374912</id><published>2011-07-05T21:55:00.001-05:00</published><updated>2011-07-05T22:13:02.783-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Galería'/><category scheme='http://www.blogger.com/atom/ns#' term='diseño'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>Galería: Seamco</title><content type='html'>Pieza frontal de un website con diseño fuertemente apoyado por la ilustración y la distribución despejada de espacios. La cara de &lt;a href="http://www.seamco.be/home" target="New"&gt;Seamco&lt;/a&gt; en la red hace patente la gran destreza de sus &lt;a href="http://www.amai.be/"&gt;creadores&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-quqVkN8bphQ/ThPNiC8cFoI/AAAAAAAAAFg/qanAPr4d87o/s1600/seamco.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="New"&gt;&lt;img border="0" height="250" src="http://1.bp.blogspot.com/-quqVkN8bphQ/ThPNiC8cFoI/AAAAAAAAAFg/qanAPr4d87o/s400/seamco.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-8367921329411374912?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/8367921329411374912/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=8367921329411374912' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/8367921329411374912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/8367921329411374912'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/07/galeria-seamco.html' title='Galería: Seamco'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-quqVkN8bphQ/ThPNiC8cFoI/AAAAAAAAAFg/qanAPr4d87o/s72-c/seamco.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-7066233809064294284</id><published>2011-07-04T12:32:00.000-05:00</published><updated>2011-07-05T22:51:44.094-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HTML5'/><title type='text'>HTML5 y el doc</title><content type='html'>Del grupo de los sitios referencia. Cierto, hay varios que se enfocan el HTML5, pero lo que cuenta es el modo y el estilo, y me parece que en ambos aspectos, &lt;a href="http://html5doctor.com/" target="New"&gt;HTML5 Doctor&lt;/a&gt; tiene sus favores:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Sa53ybsOI-c/ThNKffyXVeI/AAAAAAAAAFc/I5MRCMKWkSQ/s1600/HTML5Doctor.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-Sa53ybsOI-c/ThNKffyXVeI/AAAAAAAAAFc/I5MRCMKWkSQ/s1600/HTML5Doctor.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-7066233809064294284?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/7066233809064294284/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=7066233809064294284' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/7066233809064294284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/7066233809064294284'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/07/html5-y-el-doc.html' title='HTML5 y el doc'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Sa53ybsOI-c/ThNKffyXVeI/AAAAAAAAAFc/I5MRCMKWkSQ/s72-c/HTML5Doctor.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-2962736100568735117</id><published>2011-06-19T15:45:00.000-05:00</published><updated>2011-09-17T16:37:27.306-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Zetes'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='dbNaut'/><title type='text'>dbNaut Zetes un entorno SQL personal</title><content type='html'>El 8 de septiembre de 2010 comence un proyecto de desarrollo de software, al que he llamado &lt;a href="http://dbnaut.com/"&gt;dbNaut&lt;/a&gt;. Mi perspectiva es producir un conjunto de programas enfocados en la gestión de datos para usuarios aislados, es decir, fuera del modelo Cliente-Servidor, y con miras a minimizar la complejidad que otras herramientas de control de datos han adquirido, si es que es posible. Si algo de lo anterior se logra, voy a emprender los trabajos de investigación y desarrollo para hacer posible que los usuarios implementen entornos distribuidos de pequeños nodos de datos dentro de las redes.&lt;br /&gt;&lt;br /&gt;Al primero de estos programas lo he llamado dbNaut Zetes, que es un entorno visual sencillo para trabajar con SQL. Es un producto casi logrado, el día 17 de Junio de 2011 he podido liberar una primera versión temprana, la v0.25.1, no hablo de Alfa o Beta, este grado es antes que eso. &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-UssjiGDsWZY/Tf5feRSUVaI/AAAAAAAAAFU/2Eg0ZcYtt7w/s1600/dbNautZetesMainWindow.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-UssjiGDsWZY/Tf5feRSUVaI/AAAAAAAAAFU/2Eg0ZcYtt7w/s400/dbNautZetesMainWindow.png" width="295" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;El desarrollo de dbNaut Zetes no ha tomado tantos meses en realidad, porque es resultado de las pocas horas de programación que se le pueden robar a las noches sin quedar extenuado, la principal actividad de este programador son los proyectos para los clientes y no hubiera sido ético invadir sus tiempos con un proyecto propio.&lt;br /&gt;&lt;br /&gt;Me ha parecido que dbNaut Zetes ya puede cumplir con sus tareas más básicas: &lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Crear archivos de bases de datos&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Soporte para la creación de tablas, vistas, y triggers&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Una colección de ventanas de datos en las que el usuario puede modificar la sentencia SQL que define las columnas que vienen de una o más tablas, así como la facilidad de incluir columnas calculadas.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div&gt;Ya alcanzadas estas características, considero oportuno liberar a Zetes, esperando cierta retroalimentación por parte de la comunidad informática. Está liberación que yo llamo "temprana" se ejecuta en Snow Leopard con procesador Intel. Futuras adaptaciones para Windows e incluso para Linux no están fuera de los planes de desarrollo y no quedan tan lejanas como se podría pensar.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Amigos, si son curiosos, como yo, por esta clase de programas, les invito a bajar e instalar &lt;a href="http://dbnaut.com/"&gt;dbNaut Zetes&lt;/a&gt;. A falta de un documento para instruir a los usuarios sobre el uso de dbNaut Zetes, he ido colocando &lt;a href="http://www.screenr.com/user/dbnaut"&gt;videos&lt;/a&gt; que muestran en breve tiempo cómo trabajar con el programa.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-2962736100568735117?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/2962736100568735117/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=2962736100568735117' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2962736100568735117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2962736100568735117'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/06/dbnaut-zetes-un-entorno-sql-personal.html' title='dbNaut Zetes un entorno SQL personal'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-UssjiGDsWZY/Tf5feRSUVaI/AAAAAAAAAFU/2Eg0ZcYtt7w/s72-c/dbNautZetesMainWindow.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-4728571017702756718</id><published>2011-05-26T19:08:00.000-05:00</published><updated>2011-09-17T16:37:27.327-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Respaldo'/><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Restaurar'/><category scheme='http://www.blogger.com/atom/ns#' term='psql'/><title type='text'>Cómo restaurar un respaldo de base de datos PostgreSQL en Windows</title><content type='html'>Si se ha creado un respaldo de una base de datos PostgreSQL usando el comando &lt;i&gt;pg_dump&lt;/i&gt;, aparentemente, el archivo producido no puede ser leído por el comando de restauración de PgAdmin III en Windows, pero desde una terminal, una simple línea de comando puede completar la tarea:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;\"Program Files"\PostgreSQL\8.4\bin\psql &lt;br /&gt;-U postgres -d mydb &lt; mydb.data.out&lt;/pre&gt;He escrito la ruta completa del programa &lt;i&gt;psql&lt;/i&gt;, porque no ha sido agregado a la variable &lt;i&gt;Path&lt;/i&gt; de Windows. Consiste en convocar a &lt;i&gt;psql&lt;/i&gt;, indicar con &lt;i&gt;-U&lt;/i&gt; que la cuenta de usuario es &lt;i&gt;postgres&lt;/i&gt;, &lt;i&gt;-d&lt;/i&gt; para señalar la base de datos de destino y &lt;i&gt;&lt; nombre.archivo.respaldo&lt;/i&gt; para enviar las instrucciones del archivo de respaldo a reconstruír estructura y contenido. La base de datos de destino debe haber sido creada previamente, ya que esta acción no la construye en automático.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-4728571017702756718?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/4728571017702756718/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=4728571017702756718' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/4728571017702756718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/4728571017702756718'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/05/como-restaurar-un-respaldo-de-base-de.html' title='Cómo restaurar un respaldo de base de datos PostgreSQL en Windows'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-4040099808292548679</id><published>2011-05-19T00:20:00.000-05:00</published><updated>2011-09-17T16:37:27.364-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='Psycopg'/><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Instalación de Psycopg en Ubuntu 10.10 y 11.04</title><content type='html'>Y ya que he mencionado &lt;a href="http://apuntes-db.blogspot.com/2011/05/error-de-autentificacion-con-psycopg2.html"&gt;algo respecto a Psycopg&lt;/a&gt;, para instalarlo, si bien se pueden seguir los pasos indicados en su sitio web, es más sencillo integrarlo al Python local con:&lt;br /&gt;&lt;pre&gt;sudo apt-get install python-psycopg2&lt;/pre&gt;He preferido indicar las versiones de Ubuntu en las que me consta que funciona esta instalación, aunque en versiones previas este simple paso debe surtir el mismo efecto.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-4040099808292548679?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/4040099808292548679/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=4040099808292548679' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/4040099808292548679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/4040099808292548679'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/05/instalacion-de-psycopg-en-ubuntu-1010-y.html' title='Instalación de Psycopg en Ubuntu 10.10 y 11.04'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-2354274180413555570</id><published>2011-05-19T00:06:00.000-05:00</published><updated>2011-09-17T16:37:27.383-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Psycopg'/><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Error de autentificación con Psycopg2</title><content type='html'>Haciendo pruebas con &lt;a target="New" href="http://initd.org/psycopg/docs/usage.html"&gt;Psycopg&lt;/a&gt; en Python 2.7, durante el intento de conexión a PostgreSQL 8.4, sobre Xubuntu 11.04, me ha devuelto el siguiente error:&lt;br /&gt;&lt;pre&gt;psycopg2.OperationalError: FATAL:  &lt;br /&gt;Ident authentication failed for user "postgres"&lt;/pre&gt;La solución ha sido alterar el archivo pg_hba.conf con mi editor de texto gedit, puedes usar también el nano o alguno otro de tu preferencia:&lt;br /&gt;&lt;pre&gt;sudo gedit /etc/postgresql/8.4/main/pg_hba.conf&lt;/pre&gt;Localiza la línea que dice:&lt;br /&gt;&lt;pre&gt;local   all         postgres                          ident&lt;/pre&gt;Y cambia a:&lt;br /&gt;&lt;pre&gt;local   all         postgres                          password&lt;/pre&gt;Guarda y cierra el editor.&lt;br /&gt;Luego, se debe reiniciar PostgreSQL:&lt;br /&gt;&lt;pre&gt;sudo /etc/init.d/postgresql restart&lt;/pre&gt;A partir de aquí, la típica rutina de conexión debe funcionar bien:&lt;br /&gt;&lt;pre&gt;&gt;&gt;&gt; import psycopg2&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; conn = psycopg2.connect("dbname=test user=postgres password=123")&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-2354274180413555570?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/2354274180413555570/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=2354274180413555570' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2354274180413555570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2354274180413555570'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/05/error-de-autentificacion-con-psycopg2.html' title='Error de autentificación con Psycopg2'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-6947633221270670107</id><published>2011-05-18T23:57:00.000-05:00</published><updated>2011-09-17T16:37:27.404-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><title type='text'>Cómo reiniciar PostgreSQL 8.4 en Ubuntu 10.10 y 11.04</title><content type='html'>Usa la instrucción:&lt;br /&gt;&lt;pre&gt;sudo /etc/init.d/postgresql restart&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-6947633221270670107?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/6947633221270670107/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=6947633221270670107' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/6947633221270670107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/6947633221270670107'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/05/como-reiniciar-postgresql-84-en-ubuntu.html' title='Cómo reiniciar PostgreSQL 8.4 en Ubuntu 10.10 y 11.04'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-2358939422536189011</id><published>2011-03-27T22:20:00.000-06:00</published><updated>2011-09-17T22:04:56.911-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='apt-get'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Si ansías tener Firefox 4 en Xubuntu 10.10 o Ubuntu 10.10</title><content type='html'>Firefox no es mi navegador preferido, pero lo tengo que instalar para evaluar las aplicaciones web que he estado programando. Hasta este día, la actualización a Firefox 4 no llega por actualización automática, pero con tres líneas de texto se puede conseguir que apt-get vaya y traíga la nueva versión del navegador Open Source.&lt;br /&gt;&lt;br /&gt;&lt;a href="" name="more"&gt;&lt;/a&gt;&lt;br /&gt;Como yo sé que mis dos lectores no temen a la terminal, aqui les va:&lt;br /&gt;&lt;pre&gt;sudo add-apt-repository ppa:mozillateam/firefox-stable&lt;br /&gt;sudo apt-get update&lt;br /&gt;sudo apt-get install firefox ubufox&lt;/pre&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-xZeW5cCDV7g/TZARKQoKHKI/AAAAAAAAAEk/xDdqRiT9TN8/s1600/mromtz_usoos_firefox4_27mar2011.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="273" src="http://2.bp.blogspot.com/-xZeW5cCDV7g/TZARKQoKHKI/AAAAAAAAAEk/xDdqRiT9TN8/s400/mromtz_usoos_firefox4_27mar2011.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-2358939422536189011?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/2358939422536189011/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=2358939422536189011' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2358939422536189011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2358939422536189011'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/03/si-ansias-tener-firefox-4-en-xubuntu.html' title='Si ansías tener Firefox 4 en Xubuntu 10.10 o Ubuntu 10.10'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-xZeW5cCDV7g/TZARKQoKHKI/AAAAAAAAAEk/xDdqRiT9TN8/s72-c/mromtz_usoos_firefox4_27mar2011.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-9024982877140683085</id><published>2011-03-25T11:56:00.000-06:00</published><updated>2011-09-17T16:37:27.433-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='DZone'/><title type='text'>PostgreSQL tarjeta de referencia de DZone</title><content type='html'>Un recurso que me ha parecido valioso para enfrentar las tareas que vienen con PosgreSQL, cortesía de la gente de DZone:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;embed src="http://static.issuu.com/webembed/viewers/style1/v1/IssuuViewer.swf" type="application/x-shockwave-flash" allowfullscreen="true" menu="false" quality="high" scale="noscale" salign="l" flashvars="mode=embed&amp;amp;layout=http%3A%2F%2Fskin.issuu.com%2Fv%2Flight%2Flayout.xml&amp;amp;showFlipBtn=true&amp;amp;documentId=090929190312-ffde02a84798444293a538cd38dc2f2e&amp;amp;docName=essential_postgresql_-_ref_card&amp;amp;username=madman1969&amp;amp;loadingInfoText=Essential%20PostgreSQL%20-%20Ref%20Card&amp;amp;et=1301075608546&amp;amp;er=5" style="width:420px;height:272px" name="flashticker" align="middle"&gt;&lt;/embed&gt;&lt;div style="width:420px;text-align:left;"&gt;&lt;a href="http://issuu.com/madman1969/docs/essential_postgresql_-_ref_card?mode=embed&amp;amp;layout=http%3A%2F%2Fskin.issuu.com%2Fv%2Flight%2Flayout.xml&amp;amp;showFlipBtn=true" target="_blank"&gt;Open publication&lt;/a&gt; - Free &lt;a href="http://issuu.com" target="_blank"&gt;publishing&lt;/a&gt; - &lt;a href="http://issuu.com/search?q=reference" target="_blank"&gt;More reference&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-9024982877140683085?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/9024982877140683085/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=9024982877140683085' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/9024982877140683085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/9024982877140683085'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/03/postgresql-tarjeta-de-referencia-de.html' title='PostgreSQL tarjeta de referencia de DZone'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-9000464197977809898</id><published>2011-03-24T15:11:00.000-06:00</published><updated>2011-09-17T16:37:27.450-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='David McCandless'/><title type='text'>Datos bellos</title><content type='html'>Un rato libre y lo he aprovechado para explorar algunos conceptos de David McCandless (&lt;a target="New" href="http://twitter.com/infobeautiful"&gt;@infobeautiful&lt;/a&gt;). Recomiendo pensar acerca de su enfoque sobre los datos. McCandless tiene un hermoso &lt;a target="New" href="http://www.informationisbeautiful.net/"&gt;website&lt;/a&gt;, y tengo antojo por conseguir su libro. En México no aparece en nuestras librerías conocidas, en España lo pueden conseguir en línea con toda facilidad.&lt;br /&gt;&lt;br /&gt;&lt;object width="446" height="326"&gt;&lt;param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;param name="bgColor" value="#ffffff"&gt;&lt;/param&gt;&lt;param name="flashvars" value="vu=http://video.ted.com/talks/dynamic/DavidMcCandless_2010G-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/DavidMcCandless-2010G.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=937&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=david_mccandless_the_beauty_of_data_visualization;year=2010;theme=new_on_ted_com;theme=a_taste_of_tedglobal_2010;theme=the_creative_spark;theme=presentation_innovation;theme=design_like_you_give_a_damn;event=TEDGlobal+2010;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /&gt;&lt;embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgColor="#ffffff" width="446" height="326" allowFullScreen="true" allowScriptAccess="always" flashvars="vu=http://video.ted.com/talks/dynamic/DavidMcCandless_2010G-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/DavidMcCandless-2010G.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=937&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=david_mccandless_the_beauty_of_data_visualization;year=2010;theme=new_on_ted_com;theme=a_taste_of_tedglobal_2010;theme=the_creative_spark;theme=presentation_innovation;theme=design_like_you_give_a_damn;event=TEDGlobal+2010;"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-9000464197977809898?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/9000464197977809898/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=9000464197977809898' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/9000464197977809898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/9000464197977809898'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/03/datos-bellos.html' title='Datos bellos'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-2452807273543251546</id><published>2011-03-22T20:55:00.000-06:00</published><updated>2011-09-17T17:36:45.231-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='xubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeIgniter'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Ambiente de programación PHP en Xubuntu 10.10</title><content type='html'>Estoy llevando a cabo un desarrollo PHP con el framework CodeIgniter 2.0 sobre Xubuntu 10.10.&lt;br /&gt;&lt;br /&gt;Me gusta cuando no hay esa sensación de que se revuelven cosas al instalar un servidor web Apache, o el que sea. Con el cometido de desarrollar sitios web dinámicos, no me parece necesario invocar las rutinas de instalación de paquetes de un servidor definitivo que mantiene vivos a tiempo completo los servicios. Por eso prefiero instalar un conjunto de programas en un ambiente más confinado. Me he adaptado a XAMPP para Linux, actualmente va en la versión 1.7.4, viene con Apache, PHP y MySQL ... ah, PERL, también, y un conjunto de otras diversas herramientas.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/--RUnXD2YV2A/TYliWnP3IgI/AAAAAAAAAEQ/fQDBjN1HZZY/s1600/mromtz_usoos_xampp_22mar2011.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="https://lh3.googleusercontent.com/--RUnXD2YV2A/TYliWnP3IgI/AAAAAAAAAEQ/fQDBjN1HZZY/s400/mromtz_usoos_xampp_22mar2011.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="" name="more"&gt;&lt;/a&gt;La instalación de XAMPP no es trivial ni una proeza de hacker, hay que usar la terminal luego de &lt;a href="http://www.apachefriends.org/en/xampp-linux.html" target="New"&gt;bajar el paquete&lt;/a&gt;. Para instalar no hay que hacer mucho, suponiendo que has &lt;a href="http://www.apachefriends.org/en/xampp-linux.html" target="New"&gt;bajado el paquete&lt;/a&gt; a tu carpeta Descargas o Downloads, en la terminal se escribe:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;sudo tar xvfz /Descargas/xampp-linux-1.7.4.tar.gz -C /opt&lt;/pre&gt;&lt;br /&gt;XAMPP va a vivir en /opt/lampp.&lt;br /&gt;&lt;br /&gt;Hay que memorizar dos comandos. El primero para iniciar los servidores:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;sudo /opt/lampp/lampp start&lt;/pre&gt;&lt;br /&gt;El segundo, para detenerlos:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;sudo /opt/lampp/lampp stop&lt;/pre&gt;&lt;br /&gt;A veces conviene reiniciarlos en un único paso:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;sudo /opt/lampp/lampp restart&lt;/pre&gt;&lt;br /&gt;Los archivos html o php que se van a publicar en el servidor web deben vivir en:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;/opt/lampp/htdocs&lt;/pre&gt;&lt;br /&gt;Hay que tener en cuenta algo que en principio puede ser muy frustrante, respecto a los archivos que deben ponerse en htdocs: toda creación, edición, copiado y borrado de archivos en la carpeta htdocs se debe hacer acudiendo a los permisos de &lt;i&gt;sudo&lt;/i&gt;, el &lt;i&gt;File Manager&lt;/i&gt; de Xubuntu no concede por sí mismo estos privilegios cuando se seleccionan archivos dentro de la carpeta htdocs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-2452807273543251546?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/2452807273543251546/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=2452807273543251546' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2452807273543251546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2452807273543251546'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/03/ambiente-de-programacion-php-en-xubuntu.html' title='Ambiente de programación PHP en Xubuntu 10.10'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh3.googleusercontent.com/--RUnXD2YV2A/TYliWnP3IgI/AAAAAAAAAEQ/fQDBjN1HZZY/s72-c/mromtz_usoos_xampp_22mar2011.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-3830627399547290416</id><published>2011-03-22T20:42:00.000-06:00</published><updated>2011-09-17T21:21:37.041-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DBmx'/><category scheme='http://www.blogger.com/atom/ns#' term='Grupo'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='noSQL'/><title type='text'>DBmx</title><content type='html'>El grupo que fundé en Noviembre de 2010, con el nombre de SQL/NoSQL Ciudad de México, ha pasado por cambios desde entonces. Ahora se llama DBmx, no se usa más Meetup.com, tiene su sitio web en &lt;a href="http://dbmx.org"&gt;dbmx.org&lt;/a&gt; y se expresa con textos breves en &lt;a href="http://twitter.com/dbmxorg"&gt;Twitter&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Las reuniones son en &lt;a target="New" href="http://telmexhub.mx"&gt;Telmex Hub&lt;/a&gt;. Pero no se descarta que algún día puedan ser en Cancún o en Los Cabos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-3830627399547290416?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/3830627399547290416/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=3830627399547290416' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/3830627399547290416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/3830627399547290416'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/03/dbmx.html' title='DBmx'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-1458870438794722444</id><published>2011-01-17T15:04:00.000-06:00</published><updated>2011-09-17T17:37:13.806-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RVM'/><category scheme='http://www.blogger.com/atom/ns#' term='xubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>Xubuntu 10.10 y RVM</title><content type='html'>Ha sido la guía de Ezequiel la que mejor me ha funcionado a la hora de instalar RVM sobre Xubuntu 10.10:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.linuxinicio.com.ar/2010/10/instalar-rvm-ruby-y-rails-3-ubuntu.html"&gt;http://www.linuxinicio.com.ar/2010/10/instalar-rvm-ruby-y-rails-3-ubuntu.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Los pasos para instalar RVM sobre Xubuntu 10.10, con mínimas modificaciones, van como sigue.&lt;br /&gt;&lt;br /&gt;Los requisitos que se han de instalar al inicio, me refiero a librerías para compilar códigos fuente y para traer recursos del mundo exterior:&lt;br /&gt;&lt;pre&gt;sudo apt-get install build-essential libssl-dev libreadline5 libreadline5-dev zlib1g zlib1g-dev curl git&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="" name="more"&gt;&lt;/a&gt;RVM ven para acá, la rutina que nos trae lo que queremos&lt;br /&gt;&lt;pre&gt;bash &amp;lt; &amp;lt;( curl http://rvm.beginrescueend.com/releases/rvm-install-head )&lt;/pre&gt;Abre el archivo .bashrc para edición, yo uso gedit&lt;br /&gt;&lt;pre&gt;gedit ~/.bashrc&lt;/pre&gt;¡.bashrc toma esto! agrega el siguiente texto al final del archivo:&lt;br /&gt;&lt;pre&gt;[[ -s "$HOME/.rvm/scripts/rvm" ]] &amp;amp;&amp;amp; . "$HOME/.rvm/scripts/rvm"  # Carga RVM en la sesión del shell.&lt;/pre&gt;Cierra la terminal. Ábrela otra vez. &lt;br /&gt;Verifica que RVM es una función&lt;br /&gt;&lt;pre&gt;type rvm | head -n1&lt;/pre&gt;Si todo ha ido bien, la respuesta será que RVM es una función   &lt;br /&gt;El último paso de la instalación de RVM&lt;br /&gt;&lt;pre&gt;source ~/.rvm/scripts/rvm&lt;/pre&gt;Ahora si ya se pueden hacer instalaciones de diversas versiones de Ruby&lt;br /&gt;&lt;pre&gt;rvm install ruby-1.9.2&lt;/pre&gt;Para activar alguna versión de Ruby es de lo más sencillo:&lt;br /&gt;&lt;pre&gt;rvm ruby-1.9.2&lt;/pre&gt;Para saber cuál es la versión de Ruby activa:&lt;br /&gt;&lt;pre&gt;ruby -v&lt;/pre&gt;Gem ya viene puesto. Luego de haber activado con RVM una versión de Ruby, se pueden instalar librerías, como en este ejemplo:&lt;br /&gt;&lt;pre&gt;gem install sinatra&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-1458870438794722444?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/1458870438794722444/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=1458870438794722444' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/1458870438794722444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/1458870438794722444'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/01/xubuntu-1010-y-rvm.html' title='Xubuntu 10.10 y RVM'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-225406179371196368</id><published>2011-01-14T08:49:00.000-06:00</published><updated>2011-09-17T17:00:00.706-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='Desktop'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Pythonic Xubuntu Desktop</title><content type='html'>&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://2.bp.blogspot.com/_Pt7jONZ8cpw/TTBjc1wD16I/AAAAAAAAADk/YpJmnc8L1To/s1600/mromtz-usoos-python-desktop.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/_Pt7jONZ8cpw/TTBjc1wD16I/AAAAAAAAADk/YpJmnc8L1To/s400/mromtz-usoos-python-desktop.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This one is from my Xubuntu virtual machine for playing with Python. The window shows some code from&amp;nbsp;&lt;a href="https://github.com/moraes/webapp-improved"&gt;https://github.com/moraes/webapp-improved&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-225406179371196368?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/225406179371196368/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=225406179371196368' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/225406179371196368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/225406179371196368'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/01/pythonic-xubuntu-desktop.html' title='Pythonic Xubuntu Desktop'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Pt7jONZ8cpw/TTBjc1wD16I/AAAAAAAAADk/YpJmnc8L1To/s72-c/mromtz-usoos-python-desktop.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-4912563910368333062</id><published>2011-01-03T14:44:00.000-06:00</published><updated>2011-09-17T17:37:35.137-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='ogv'/><category scheme='http://www.blogger.com/atom/ns#' term='mencoder'/><category scheme='http://www.blogger.com/atom/ns#' term='xubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='convertir'/><category scheme='http://www.blogger.com/atom/ns#' term='mpg'/><category scheme='http://www.blogger.com/atom/ns#' term='convertidor de video'/><title type='text'>De ogv a mpg en Xubuntu</title><content type='html'>Mientras trataba de publicar un &lt;a href="http://www.youtube.com/watch?v=dxP32Nuvhr0" target="new"&gt;video en Youtube&lt;/a&gt; (sobre &lt;a href="http://www.ubicador.com/" target="new"&gt;un proyecto que tengo acerca de localización geográfica&lt;/a&gt;), encontré que el servicio de Google no es amigable con el formato ogv.&amp;nbsp;Hay que seguir unos pocos pasos para que esto no sea un impedimento.&lt;br /&gt;&lt;a href="" name="more"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;La solución consiste en pasar el video de ogv a mpg usando &lt;a href="http://es.wikipedia.org/wiki/MEncoder" target="new"&gt;MEncoder&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Para instalar el programa:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;sudo apt-get install mencoder&lt;/pre&gt;&lt;br /&gt;Para ejecutarlo desde la terminal:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;mencoder -idx mi_archivo.ogv -ovc lavc -oac lavc -lavcopts vcodec=mpeg2video -of mpeg -o mi_archivo.mpg&lt;/pre&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-4912563910368333062?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/4912563910368333062/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=4912563910368333062' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/4912563910368333062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/4912563910368333062'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2011/01/de-ogv-mpg-en-xubuntu.html' title='De ogv a mpg en Xubuntu'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-6211475155039723885</id><published>2010-12-24T12:29:00.000-06:00</published><updated>2011-09-17T16:37:27.483-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CouchDB'/><category scheme='http://www.blogger.com/atom/ns#' term='noSQL'/><title type='text'>NoSQL con CouchDB muy básico - Presentación</title><content type='html'>El 21 de Diciembre de 2010, &amp;nbsp;en el Telmex Hub, hice una breve introducción sobre CouchDB para el grupo &lt;a target="New" href="http://dbmx.tumblr.com/"&gt;DBmx&lt;/a&gt;, en aquel entonces se llamaba&amp;nbsp;SQL/NoSQL Cd. de Mx,&amp;nbsp;(por cierto, la invitación a unirse al grupo siempre está abierta y no tiene costo). Este es el documento para el caso:&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="342" src="https://docs.google.com/present/embed?id=ddbqvz6v_31gd3m48gm" width="410"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-6211475155039723885?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/6211475155039723885/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=6211475155039723885' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/6211475155039723885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/6211475155039723885'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2010/12/nosql-con-couchdb-muy-basico.html' title='NoSQL con CouchDB muy básico - Presentación'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-2390871635340919318</id><published>2010-12-24T12:24:00.000-06:00</published><updated>2011-09-17T16:37:27.509-05:00</updated><title type='text'>NoSQL en Twitter</title><content type='html'>Una presentación de Kevin Well: &lt;div style="width:425px" id="__ss_3806196"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/kevinweil/nosql-at-twitter-nosql-eu-2010" title="NoSQL at Twitter (NoSQL EU 2010)"&gt;NoSQL at Twitter (NoSQL EU 2010)&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse3806196" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=nosqlattwitter-nosqleu2010-100421124212-phpapp02&amp;stripped_title=nosql-at-twitter-nosql-eu-2010&amp;userName=kevinweil" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse3806196" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=nosqlattwitter-nosqleu2010-100421124212-phpapp02&amp;stripped_title=nosql-at-twitter-nosql-eu-2010&amp;userName=kevinweil" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/kevinweil"&gt;Kevin Weil&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-2390871635340919318?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/2390871635340919318/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=2390871635340919318' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2390871635340919318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2390871635340919318'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2010/12/nosql-en-twitter.html' title='NoSQL en Twitter'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-4258929920079087974</id><published>2010-12-19T06:49:00.000-06:00</published><updated>2011-09-17T16:37:27.527-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Couchrest'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='CouchDB'/><title type='text'>Rails, CouchDB, y Couchrest</title><content type='html'>Un ejemplo muy claro de cómo aplicar el consumo de datos en CouchDB desde una aplicación Rails. Aunque el video es en portugués, no me parece difícil de seguir.&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://player.vimeo.com/video/6566694" width="501" height="313" frameborder="0"&gt;&lt;/iframe&gt;&lt;p&gt;&lt;a href="http://vimeo.com/6566694"&gt;Ruby on Rails com CouchDB usando Couchrest&lt;/a&gt; from &lt;a href="http://vimeo.com/user2298384"&gt;Improve It&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-4258929920079087974?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/4258929920079087974/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=4258929920079087974' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/4258929920079087974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/4258929920079087974'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2010/12/rails-couchdb-y-couchrest.html' title='Rails, CouchDB, y Couchrest'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-6094236949799584537</id><published>2010-12-17T15:11:00.000-06:00</published><updated>2011-09-17T16:37:27.545-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='meetup'/><category scheme='http://www.blogger.com/atom/ns#' term='Eventos'/><category scheme='http://www.blogger.com/atom/ns#' term='Telmex Hub'/><category scheme='http://www.blogger.com/atom/ns#' term='CouchDB'/><category scheme='http://www.blogger.com/atom/ns#' term='noSQL'/><title type='text'>NoSQL con CouchDB muy básico</title><content type='html'>Va de nuevo. El evento anterior salió bien. Y ahí nos entusiasmámos por apurar el meetup que sigue:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.meetup.com/sql-nosql-mx/calendar/15679617/"&gt;NoSQL con CouchDB muy básico&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;A iniciárnos en la práctica con una herramienta NoSQL. Todo mundo está invitado. La sugerencia es que te registres en &lt;a href="http://www.meetup.com/sql-nosql-mx/"&gt;nuestra página Meetup&lt;/a&gt; para que siempre estés al corriente de los eventos que vienen.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;La sede:&lt;/b&gt;&lt;br /&gt;Telmex Hub [Isabel la Católica 51, Colonia Centro, Ciudad de México]&lt;br /&gt;&lt;b&gt;Cuando:&lt;/b&gt;&lt;br /&gt;Martes 21 de Diciembre de 2010 a las 17:15 Hrs, con la esperanza de no tomar más de dos horas de nuestras vidas.&lt;br /&gt;&lt;br /&gt;Si vas a necesitar que el Telmex Hub te preste una compu, conviene estar registrado en su sitio web: http://www.telmexhub.org&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-6094236949799584537?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/6094236949799584537/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=6094236949799584537' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/6094236949799584537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/6094236949799584537'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2010/12/nosql-con-couchdb-muy-basico_17.html' title='NoSQL con CouchDB muy básico'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-8240004795853446679</id><published>2010-12-15T08:38:00.000-06:00</published><updated>2011-09-17T16:37:27.563-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='noSQL'/><title type='text'>Presentación NoSQL para Principiantes</title><content type='html'>&lt;iframe src="https://docs.google.com/present/embed?id=ddbqvz6v_4c7hvdt6p" frameborder="0" width="410" height="342"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Más vendrá sobre el tema en http://www.meetup.com/sql-nosql-mx/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-8240004795853446679?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/8240004795853446679/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=8240004795853446679' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/8240004795853446679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/8240004795853446679'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2010/12/presentacion-nosql-para-principiantes.html' title='Presentación NoSQL para Principiantes'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-9208642185332936131</id><published>2010-11-30T10:36:00.000-06:00</published><updated>2011-09-17T17:00:00.756-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='BusyBox'/><category scheme='http://www.blogger.com/atom/ns#' term='FLTK'/><category scheme='http://www.blogger.com/atom/ns#' term='Tiny Core Linux'/><title type='text'>Un Linux muy pequeño</title><content type='html'>Para distraerme un poco de la presión de los proyectos actuales, dediqué un rato a conocer una implementación de Linux particularmente reducida. Me refiero a &lt;a target="New" href="http://www.tinycorelinux.com/"&gt;Tiny Core Linux&lt;/a&gt;, cuya talla no excede los 10 MB pero se las ingenia para contener los recursos típicos de un sistema moderno, con la versión 2.6 del Kernel por principio, aprovechando &amp;nbsp;&lt;a target="New" href="http://www.busybox.net/"&gt;BusyBox&lt;/a&gt;&amp;nbsp;para suplir frugalmente las utilidades de un Unix, y que con todo y eso lleva su propio entorno gráfico (&lt;a target="New" href="http://www.fltk.org/"&gt;FLTK&lt;/a&gt;), que no se exige mucho a sí mismo, pero que es suficiente para usuarios con ánimos exploradores.&lt;br /&gt;&lt;br /&gt;He encontrado de lo más entretenido hacer la instalación a la vieja usanza. Hay que particionar y formatear el disco duro, a mano, por decirlo de algún modo. Y luego copiar los archivos del sistema usando la terminal. No hay un asistente de instalación que lo lleve a uno de la mano.&lt;br /&gt;&lt;br /&gt;En ejecución, el núcleo del sistema vive del todo en RAM. Incluye un gestor de paquetes, me he podido instalar sin complicación alguna, &lt;a target="New" href="http://www.abisource.com/"&gt;Abiword&lt;/a&gt; y &lt;a target="New" href="http://www.chromium.org/"&gt;Chromium&lt;/a&gt;. Pero se me terminó el tiempo de entretenimiento, por lo que no he podido investigar más de esta versión de Linux.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_Pt7jONZ8cpw/TPUk2E_83MI/AAAAAAAAADY/sEvrQoa_RSk/s1600/mromtz-tinycorelinux-nov2010.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/_Pt7jONZ8cpw/TPUk2E_83MI/AAAAAAAAADY/sEvrQoa_RSk/s400/mromtz-tinycorelinux-nov2010.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-9208642185332936131?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/9208642185332936131/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=9208642185332936131' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/9208642185332936131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/9208642185332936131'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2010/11/un-linux-muy-pequeno.html' title='Un Linux muy pequeño'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Pt7jONZ8cpw/TPUk2E_83MI/AAAAAAAAADY/sEvrQoa_RSk/s72-c/mromtz-tinycorelinux-nov2010.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-3164962151317000287</id><published>2010-11-16T08:47:00.000-06:00</published><updated>2011-09-17T17:00:00.787-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='Empty Trash'/><title type='text'>Sin permiso para vaciar el basurero en Xubuntu</title><content type='html'>Luego de jugar un rato con Git, decidí borrar una carpeta que cloné desde GitHub, pero no la podía eliminar del cesto o basurero o Trash. Lo he tenido que hacer desde la terminal:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;cd ~/.local/share/Trash/files&lt;br /&gt;&lt;br /&gt;sudo rm -rf *&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-3164962151317000287?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/3164962151317000287/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=3164962151317000287' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/3164962151317000287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/3164962151317000287'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2010/11/sin-permiso-para-vaciar-el-basurero-en.html' title='Sin permiso para vaciar el basurero en Xubuntu'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-8450599930546223255</id><published>2010-11-08T15:15:00.000-06:00</published><updated>2011-09-17T17:37:54.975-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='Xfce'/><title type='text'>Xubuntu sin paneles</title><content type='html'>Al iniciar una sesión de Xubuntu, las barras o paneles de Xfce no estaban, superior e inferior, &amp;nbsp;nunca aparecieron por su cuenta.&lt;br /&gt;&lt;br /&gt;Hacer que regresen no es complicado, vamos a explicar cómo lo he hecho:&lt;br /&gt;&lt;a href="" name="more"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para que regresarán seguí los siguientes pasos:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Presionar Alt + F2 para cargar la ventana de comandos.&lt;/li&gt;&lt;li&gt;Escribir &lt;i&gt;xfce4-panel&lt;/i&gt;&lt;/li&gt;&lt;li&gt;[Enter].&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Los paneles regresaron.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-8450599930546223255?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/8450599930546223255/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=8450599930546223255' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/8450599930546223255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/8450599930546223255'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2010/11/xubuntu-sin-paneles.html' title='Xubuntu sin paneles'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-583733232445245261</id><published>2010-10-27T14:34:00.000-05:00</published><updated>2011-09-17T17:38:23.486-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='Virtual Host'/><category scheme='http://www.blogger.com/atom/ns#' term='XAMPP'/><title type='text'>Xubuntu + XAMPP con Virtual Hosts</title><content type='html'>He estado haciendo desarrollos PHP sobre &lt;a href="http://www.apachefriends.org/es/xampp.html" target="New"&gt;XAMPP 1.7.3&lt;/a&gt;, así que me ha convenido aprender a dar de alta virtual hosts. Como no soy ni he de ser un conocedor de la gestión del servidor web Apache, mejor tomo nota de las modificaciones que hago cada vez que agrego un virtual host en mi máquina de desarrollo, con Xubuntu 10.04, para hacer pruebas de mis websites:&lt;br /&gt;&lt;br /&gt;&lt;a href="" name="more"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Edito el archivo &lt;i&gt;hosts&lt;/i&gt;, invocando desde la línea de comandos a un editor de texto:&lt;br /&gt;&lt;pre&gt;sudo gedit /etc/hosts&lt;/pre&gt;Mi editor es &lt;i&gt;gedit&lt;/i&gt;, no lo invoco desde la interfaz gráfica porque no sé cómo hacerlo para editar archivos que requieren permiso.&lt;br /&gt;Al archivo &lt;i&gt;hosts&lt;/i&gt; le agrego la línea:&lt;br /&gt;&lt;pre&gt;127.0.0.1 nombre_virtual_host&lt;/pre&gt;Donde &lt;i&gt;nombre_virtual_host&lt;/i&gt; corresponde al nombre que me parezca adecuado para el proyecto.&lt;br /&gt;Guardo el archivo y lo cierro.&lt;br /&gt;&lt;br /&gt;Ahora, a editar el archivo &lt;i&gt;httpd-vhosts.conf&lt;/i&gt; que viene con XAMPP. También, desde la terminal invoco al editor:&lt;br /&gt;&lt;pre&gt;sudo gedit /opt/lampp/etc/extra/httpd-vhosts.conf&lt;/pre&gt;Otra vez estoy llamando a &lt;i&gt;gedit&lt;/i&gt; y le indico la ubicación del archivo &lt;i&gt;httpd-vhosts.conf&lt;/i&gt;.&lt;br /&gt;Dentro del archivo, tengo la línea &lt;i&gt;NameVirtualHost *:80&lt;/i&gt; sin el signo de comentarios, es decir, sin &lt;i&gt;#&lt;/i&gt;.&lt;br /&gt;También tengo declarado el localhost como virtual host:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;    ServerAdmin you@localhost&lt;br /&gt;    DocumentRoot /opt/lampp/htdocs&lt;br /&gt;    ServerName localhost:80&lt;br /&gt;    ErrorLog logs/localhost-error_log&lt;br /&gt;    CustomLog logs/localhost-access_log common&lt;br /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/pre&gt;&lt;br /&gt;Asunto que queda hecho desde la primera vez y no requiere repetición, lo que si se hace tantas veces como virtual hosts voy necesitando es lo que sigue:&lt;br /&gt;Voy agregando cada nuevo virtual host aumentando al archivo algo como:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;    ServerAdmin you@nombre_virtual_host&lt;br /&gt;    DocumentRoot /home/nombre_usuario/proyectos/nombre_virtual_host&lt;br /&gt;    ServerName nombre_virtual_host&lt;br /&gt;    ErrorLog logs/localhost-error_log&lt;br /&gt;    CustomLog logs/localhost-access_log common&lt;br /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/pre&gt;Donde &lt;i&gt;nombre_usuario&lt;/i&gt; ha de variar según el nombre de usuario de la máquina, y &lt;i&gt;nombre_virtual_hos&lt;/i&gt;t se cambia por el nombre que va a tener el virtual host que se está declarando, que ha de ser el mismo que se ha manifestado en el archivo &lt;i&gt;hosts&lt;/i&gt;.&lt;br /&gt;A partir de este punto, reinicio los servicios de XAMPP. Previa copia de una archivo html o php valido en el directorio correspondiente, ya puedo solicitar al navegador que me muestre mi website escribiendo algo como: &lt;br /&gt;&lt;pre&gt;http://nombre_virtual_host/&lt;/pre&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-583733232445245261?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/583733232445245261/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=583733232445245261' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/583733232445245261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/583733232445245261'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2010/10/xubuntu-xampp-con-virtual-hosts.html' title='Xubuntu + XAMPP con Virtual Hosts'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-6627422271519432493</id><published>2010-10-11T09:45:00.000-05:00</published><updated>2011-09-17T17:00:00.848-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='chmod'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='755'/><title type='text'>Permisos a un directorio y sus archivos en Xubuntu</title><content type='html'>Como lo he tenido que usar hace un momento, mejor lo apunto acá por si más adelante no tengo ocasión de darle uso recurrentemente y lo olvido.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;sudo chmod -R 755 midirectorio/*&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-6627422271519432493?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/6627422271519432493/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=6627422271519432493' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/6627422271519432493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/6627422271519432493'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2010/10/permisos-un-directorio-y-sus-archivos.html' title='Permisos a un directorio y sus archivos en Xubuntu'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-7713328498172679483</id><published>2010-07-20T17:49:00.000-05:00</published><updated>2011-09-17T17:00:00.873-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cómo ha sido'/><title type='text'>Ya tengo acentos o tildes en Xubuntu 10.04 con teclado en inglés</title><content type='html'>Me he tomado un tiempo para escribir un poco, pero mi laptop tiene el teclado sin acentos y sin ñ. Asi que, o me la pasaba usando códigos, o copiando y pegando desde el Character Map, o ya de una vez, configuraba el Xubuntu para alternar teclados. &lt;br /&gt;&lt;br /&gt;Cuestión de hacer una pregunta en Google, descartar, descartar, descartar ... y por fin, una solución entendible. &lt;br /&gt;&lt;br /&gt;Solamente he seguido las intrucciones de:&lt;br /&gt;&lt;br /&gt;http://www.confusion.com.mx/blog/2009/03/acentos-ortograficos-y-n-en-ubuntu/&lt;br /&gt;&lt;br /&gt;Ha sido tan simple como establecer la distribución del teclado a Inglés Alternativo Internacional (us-altgr-intl).&lt;br /&gt;&lt;br /&gt;Gracias a Confusion.com.mx.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-7713328498172679483?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/7713328498172679483/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=7713328498172679483' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/7713328498172679483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/7713328498172679483'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2010/07/ya-tengo-acentos-o-tildes-en-xubuntu.html' title='Ya tengo acentos o tildes en Xubuntu 10.04 con teclado en inglés'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-7974919387923130268</id><published>2010-06-25T10:56:00.000-05:00</published><updated>2011-09-17T17:00:00.907-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cómo ha sido'/><category scheme='http://www.blogger.com/atom/ns#' term='Del qué'/><title type='text'>El asunto del password del usuario root</title><content type='html'>Siempre lo olvido, las veces que he instalado Xubuntu ya no las cuento, pero siempre olvido algo tan sencillo como establecer el password del usuario root:&lt;br/&gt;&lt;pre&gt;sudo passwd root&lt;/pre&gt;&lt;br/&gt;Enlace: http://www.ubuntu-es.org/index.php?q=node/177&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-7974919387923130268?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/7974919387923130268/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=7974919387923130268' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/7974919387923130268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/7974919387923130268'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2010/06/el-asunto-del-password-del-usuario-root.html' title='El asunto del password del usuario root'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-5949350357052699159</id><published>2010-06-21T14:42:00.000-05:00</published><updated>2011-09-17T17:00:00.929-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programas que voy agregando'/><category scheme='http://www.blogger.com/atom/ns#' term='Cómo ha sido'/><title type='text'>Sqlite3 no viene en Xubuntu 10.04, pero se instala en un paso</title><content type='html'>Sqlite3 No viene incluido en la instalacion de Xubuntu 10.04, asunto que se me hace raro de cualquier Linux que se precie:&lt;br /&gt;&lt;br /&gt;Con la terminal se le trae a vivir a la PC escribiendo:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;sudo apt-get install sqlite3 libsqlite3-dev&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-5949350357052699159?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/5949350357052699159/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=5949350357052699159' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/5949350357052699159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/5949350357052699159'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2010/06/sqlite3-no-viene-en-xubuntu-1004-pero.html' title='Sqlite3 no viene en Xubuntu 10.04, pero se instala en un paso'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-4186433946033444640</id><published>2010-06-19T18:03:00.000-05:00</published><updated>2011-09-17T17:00:00.950-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programas que voy agregando'/><category scheme='http://www.blogger.com/atom/ns#' term='Solucionar'/><title type='text'>Reproducir DVDs comerciales en Xubuntu 10.04</title><content type='html'>Llegando del BlockBuster, yo queria (sigo sin acentos) reproducir &lt;em&gt;Up in the Air&lt;/em&gt; con &lt;em&gt;George Clooney&lt;/em&gt;, en mi lap con Xubuntu 10.04, pero no, el Movie Player dijo no, no tengo los paquetes que se necesitan para el caso.&lt;br/&gt;&lt;br/&gt;Asi que, a instalar.&lt;br/&gt;&lt;br/&gt;Mi referencia actual:&lt;br/&gt;https://help.ubuntu.com/community/RestrictedFormats/PlayingDVDs&lt;br/&gt;&lt;br/&gt;A ver si funciona.&lt;br/&gt;&lt;p style="text-align:center;"&gt;***&lt;/p&gt;&lt;br/&gt;Funciona, esto fue lo que he hecho:&lt;br/&gt;&lt;ol&gt;&lt;br/&gt;	&lt;li&gt;Con el Ubuntu Software Center, he instalado el paquete &lt;strong&gt;Xubuntu restricted extras&lt;/strong&gt;&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;En una terminal he escrito:&lt;br/&gt;&lt;pre&gt;sudo /usr/share/doc/libdvdread4/install-css.sh&lt;/pre&gt;&lt;br/&gt;&lt;/li&gt;&lt;br/&gt;&lt;/ol&gt;&lt;br/&gt;Y ya, la peli ya funciona. Luego de la experiencia de instalacion con el Virtualbox, ya esperaba que esto se pusiera mas complicado. inercias que agarra uno.&lt;br/&gt;&lt;br/&gt;&lt;a href="http://xubuso.files.wordpress.com/2010/06/xubuso-movie-player-xubuntu-10.png"&gt;&lt;img class="aligncenter size-full wp-image-103" title="xubuso movie player xubuntu 10" src="http://xubuso.files.wordpress.com/2010/06/xubuso-movie-player-xubuntu-10.png" alt="" width="632" height="395" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-4186433946033444640?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/4186433946033444640/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=4186433946033444640' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/4186433946033444640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/4186433946033444640'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2010/06/reproducir-dvds-comerciales-en-xubuntu.html' title='Reproducir DVDs comerciales en Xubuntu 10.04'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-3287849975871186282</id><published>2010-06-19T12:34:00.000-05:00</published><updated>2011-09-17T17:00:00.971-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programas que voy agregando'/><category scheme='http://www.blogger.com/atom/ns#' term='Solucionar'/><category scheme='http://www.blogger.com/atom/ns#' term='Cómo ha sido'/><title type='text'>VirtualBox 3.2 en Xubuntu 10.04</title><content type='html'>&lt;em&gt;(Sigo sin acentos, no creas que soy tan burro) &lt;/em&gt;&lt;br/&gt;&lt;br/&gt;Habiendo practicado dos procesos para instalar VirtualBox 3.2 en Xubuntu 10.04, este es el que me funciona. He optado por seguir las intrucciones al pie de la letra como vienen en la seccion "Debian-based Linux distributions", del &lt;a href="http://www.virtualbox.org/wiki/Linux_Downloads" target="_blank"&gt;sitio web de VirtualBox&lt;/a&gt;. Consiste en trabajar un rato en la terminal:&lt;br/&gt;&lt;ol&gt;&lt;br/&gt;	&lt;li&gt;Para que Xubuntu "sepa" de donde bajar los archivos de VirtualBox, he agregado a&lt;br/&gt;&lt;pre&gt;/etc/apt/sources.list&lt;/pre&gt;&lt;br/&gt;la siguiente direccion:&lt;br/&gt;&lt;pre&gt;deb http://download.virtualbox.org/virtualbox/debian lucid non-free&lt;/pre&gt;&lt;br/&gt;&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;He incluido la llave publica de Oracle con la instruccion:&lt;br/&gt;&lt;pre&gt;wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -&lt;/pre&gt;&lt;br/&gt;&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Actualizacion e instalacion, las que hacen el trabajo duro:&lt;br/&gt;&lt;pre&gt;sudo apt-get update&lt;br/&gt;sudo apt-get install virtualbox-3.2&lt;/pre&gt;&lt;br/&gt;&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Por si acaso, para que los modulos &lt;em&gt;vboxdrv&lt;/em&gt;, &lt;em&gt;vboxnetflt&lt;/em&gt; y &lt;em&gt;vboxnetadp&lt;/em&gt; se actualicen adecuadamente si la version del kernel cambia tras un &lt;em&gt;apt-get upgrade&lt;/em&gt;:&lt;br/&gt;&lt;pre&gt;sudo apt-get install dkms&lt;/pre&gt;&lt;br/&gt;&lt;/li&gt;&lt;br/&gt;&lt;/ol&gt;&lt;br/&gt;&lt;p style="text-align:center;"&gt;***&lt;/p&gt;&lt;br/&gt;Mi primer intento, que no me funciona, consistio en seguir las &lt;a href="http://sliceoflinux.com/2010/05/19/instalar-oracle-vm-virtualbox-en-ubuntu/" target="_blank"&gt;instrucciones&lt;/a&gt; que encontre en Slice of Linux con una sentencia compuesta en la terminal, por supuesto es una variacion del proceso anterior, pero hay diferencias significativas:&lt;br/&gt;&lt;pre&gt;echo deb http://download.virtualbox.org/virtualbox/debian&lt;br/&gt;$(lsb_release -cs) non-free |&lt;br/&gt;sudo tee /etc/apt/sources.list.d/virtualbox.list &amp;amp;&amp;amp;&lt;br/&gt;wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- |&lt;br/&gt;sudo apt-key add - &amp;amp;&amp;amp; sudo aptitude update &amp;amp;&amp;amp;&lt;br/&gt;sudo aptitude -y install virtualbox-3.2 &amp;amp;&amp;amp;&lt;br/&gt;sudo adduser $(whoami) vboxusers&lt;/pre&gt;&lt;br/&gt;Y ha corrido muy bien, pero luego me ha dado un problema, cuando he querido ejecutar una maquina virtual creada previamente. VirtualBox me ha recomendado ejecutar, como usuario root, la siguiente instruccion:&lt;br/&gt;&lt;pre&gt;sudo /etc/init.d/vboxdrv setup&lt;/pre&gt;&lt;br/&gt;Pues no, no habia &lt;em&gt;vboxdrv&lt;/em&gt;. &lt;a href="http://www.ubuntu-es.org/?q=node/106741" target="_blank"&gt;Encontre&lt;/a&gt; que debo cambiar la instruccion por:&lt;br/&gt;&lt;pre&gt;/etc/init.d/vboxdrv.dpkg-bak setup&lt;/pre&gt;&lt;br/&gt;Hasta ahi ha funcionado bien, pero al reiniciar la PC, debo realizar este ultimo paso otra vez para que corra una maquina virtual que ya habia corrido en la sesion anterior.&lt;br/&gt;&lt;p style="text-align:center;"&gt;***&lt;/p&gt;&lt;br/&gt;Ha final de cuentas, ya tengo mi VirtualBox funcionado:&lt;br/&gt;&lt;br/&gt;&lt;a href="http://xubuso.files.wordpress.com/2010/06/virtualxp.png"&gt;&lt;img class="aligncenter size-full wp-image-105" title="virtualxp" src="http://xubuso.files.wordpress.com/2010/06/virtualxp.png" alt="" width="632" height="395" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-3287849975871186282?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/3287849975871186282/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=3287849975871186282' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/3287849975871186282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/3287849975871186282'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2010/06/virtualbox-32-en-xubuntu-1004.html' title='VirtualBox 3.2 en Xubuntu 10.04'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-2888697694164241409</id><published>2010-06-16T12:15:00.000-05:00</published><updated>2011-09-17T16:37:27.582-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBA'/><category scheme='http://www.blogger.com/atom/ns#' term='ADO'/><category scheme='http://www.blogger.com/atom/ns#' term='Recordset'/><title type='text'>Todavía con ADO: Recordset, del primero al último registro</title><content type='html'>Habiendo la necesidad de trabajar con Microsoft Access, la colección de objetos ADO es un recurso, añejo pero vigente, que se debe usar.&lt;br /&gt;&lt;br /&gt;Aquí un Recorset que pasa por todos los registros:&lt;br /&gt;&lt;br /&gt;&lt;pre lang="VB"&gt;Sub doSomething()&lt;br /&gt;  Dim rs As New ADODB.Recordset&lt;br /&gt;&lt;br /&gt;  rs.Open "SELECT * FROM myTable;", CurrentProject.Connection&lt;br /&gt;&lt;br /&gt;  Do While Not rs.EOF&lt;br /&gt;    Debug.Print rs!MyFieldName&lt;br /&gt;    rs.MoveNext&lt;br /&gt;  Loop&lt;br /&gt;&lt;br /&gt;  rs.Close&lt;br /&gt;  Set rs = Nothing&lt;br /&gt;End Sub&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-2888697694164241409?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/2888697694164241409/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=2888697694164241409' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2888697694164241409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2888697694164241409'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2010/06/todavia-con-ado-recordset-del-primero.html' title='Todavía con ADO: Recordset, del primero al último registro'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-1975046170777998674</id><published>2010-05-27T11:42:00.000-05:00</published><updated>2011-09-17T17:00:00.991-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='instalar'/><category scheme='http://www.blogger.com/atom/ns#' term='Lucid Lynx'/><category scheme='http://www.blogger.com/atom/ns#' term='10.04'/><title type='text'>Encontré un buen tutorial de instalación de Ubuntu 10.04</title><content type='html'>Del blog Slice of Linux, un esmerado texto en español sobre cómo instalar la versión 10.04 de Ubuntu. Por lo que veo, es lo mismo para Xubuntu 10.04, que ya he estado instalando en algunas de mis máquinas. Recomendado.&lt;br/&gt;&lt;br/&gt;Acá el enlace: http://sliceoflinux.com/2010/04/29/instalar-ubuntu-10-04-paso-a-paso/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-1975046170777998674?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/1975046170777998674/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=1975046170777998674' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/1975046170777998674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/1975046170777998674'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2010/05/encontre-un-buen-tutorial-de.html' title='Encontré un buen tutorial de instalación de Ubuntu 10.04'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-3010993894666157342</id><published>2010-02-15T08:40:00.000-06:00</published><updated>2011-09-17T16:37:27.624-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='SQLite'/><category scheme='http://www.blogger.com/atom/ns#' term='sqlite3'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Jay Godse y sus videos sobre SQLite3</title><content type='html'>Me he encontrado en Youtube los videos sobre SQLite3 que Jay Godse ha preparado.&lt;br/&gt;&lt;br/&gt;Jay está metido de lleno en promover la herramienta. Un muy buen recurso, en inglés, para ir entrando a la práctica de ejercicios con SQLite3.&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;En sus videos, Jay explora las operaciones básicas para comenzar con SQLite3, y llega a mostrar una par de ejercicios con Ruby y Lua.&lt;br/&gt;&lt;br/&gt;Merece la recomendación.&lt;br/&gt;&lt;br/&gt;&lt;a title="Jay Godse y los videos SQLite3" href="http://www.youtube.com/user/Jaynonymous1" target="_blank"&gt;Click para ir a los videos &amp;gt;&amp;gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Además, Jay mantiene algunos espacios de publicación en Squidoo, de estos espacios, llamados &lt;em&gt;lenses&lt;/em&gt;, hay varios enfocados en la programación y explotación del pequeño sistema de bases de datos: &lt;a href="http://www.squidoo.com/lensmasters/JayGodse" target="_blank"&gt;http://www.squidoo.com/lensmasters/JayGodse&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-3010993894666157342?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/3010993894666157342/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=3010993894666157342' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/3010993894666157342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/3010993894666157342'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2010/02/jay-godse-y-sus-videos-sobre-sqlite3.html' title='Jay Godse y sus videos sobre SQLite3'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-5290185042003550371</id><published>2009-12-16T11:42:00.000-06:00</published><updated>2011-09-18T12:39:58.868-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Porcentaje'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Access'/><category scheme='http://www.blogger.com/atom/ns#' term='Campo'/><title type='text'>Definir un campo para porcentajes en Access</title><content type='html'>Como siempre, cuando diseño una tabla en Microsoft Access,&amp;nbsp;se me olvida cómo definir el campo para porcentajes - o de tanto por ciento -,&amp;nbsp;creo que escribirlo aquí me puede ser práctico para más adelante, y de paso, le va a convenir a&amp;nbsp;la concurrencia&amp;nbsp;de este blog que apenas va comenzando con la creación de tablas.&lt;a href="" name="more"&gt;&lt;/a&gt;En la vista de diseño de una tabla, al campo que va a almacenar valores de porcentaje se le aplican los siguientes atributos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Data Type (Tipo de dato): Number (Número)&lt;/li&gt;&lt;li&gt;Field Size (Tamaño del campo): Single (Sencillo)&lt;/li&gt;&lt;li&gt;Format (Formato): Percent (Porcentaje)&lt;/li&gt;&lt;li&gt;Decimal Places (Lugares decimales): 0&lt;/li&gt;&lt;li&gt;Validation Rule (Regla de Validación): Between 0 And 1 (Entre 0 y 1)&lt;/li&gt;&lt;li&gt;El Default Value (Valor Predeterminado) puede ser una cantidad entre 0 y 1, por ejemplo el IVA, sería .16&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-5290185042003550371?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/5290185042003550371/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=5290185042003550371' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/5290185042003550371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/5290185042003550371'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/12/definir-un-campo-para-porcentajes-en.html' title='Definir un campo para porcentajes en Access'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-4345271617429597271</id><published>2009-12-15T02:59:00.000-06:00</published><updated>2011-09-17T16:37:27.678-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FileMaker'/><category scheme='http://www.blogger.com/atom/ns#' term='Bento'/><category scheme='http://www.blogger.com/atom/ns#' term='Desde fuera'/><title type='text'>Bento de FileMaker anunciado muy dinámicamente</title><content type='html'>Explorando en &lt;a title="Vimeo.com" href="http://vimeo.com/" target="_blank"&gt;Vimeo&lt;/a&gt;, me encontré los videos de &lt;a href="http://www.tretbootmotor.de/videos" target="New"&gt;Stephan Müller&lt;/a&gt;, un creativo videoasta con un estilo bien definido. No me resisto a incluirlo en dbNaut.com aunque se refiera un producto de bases de datos personales que nunca he abordado (más adelante viene algo, por cierto). Vale la pena dedicarle unos minutos al video:&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="375" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=6412630&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" /&gt;&lt;embed type="application/x-shockwave-flash" width="500" height="375" src="http://vimeo.com/moogaloop.swf?clip_id=6412630&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" allowfullscreen="true" allowscriptaccess="always"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://vimeo.com/6412630"&gt;BENTO (2008)&lt;/a&gt; from &lt;a href="http://vimeo.com/tretbootmotor"&gt;Stephan Müller&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-4345271617429597271?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/4345271617429597271/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=4345271617429597271' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/4345271617429597271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/4345271617429597271'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/12/bento-de-filemaker-anunciado-muy.html' title='Bento de FileMaker anunciado muy dinámicamente'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-5386605476149882899</id><published>2009-12-14T21:21:00.000-06:00</published><updated>2011-09-18T12:40:38.185-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Procedimientos Almacenados'/><category scheme='http://www.blogger.com/atom/ns#' term='Stored Procedures'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Un sencillo procedimiento almacenado en SQL Server</title><content type='html'>Usando la base de datos de ejemplo &lt;strong&gt;Northwind&lt;/strong&gt;, requiero un sencillo procedimiento almacenado (para el caso es más apropiada una vista, pero a modo de introducción mantiene el contexto sencillo). El procedimiento va a devolver algunas columnas de todos los registros de la tabla &lt;em&gt;employees&lt;/em&gt;.&lt;br /&gt;&lt;a href="" name="more"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Escribo la instrucción en una nueva ventana de consulta en el &lt;strong&gt;SQL Server Management Studio&lt;/strong&gt;:&lt;br /&gt;&lt;pre lang="sql"&gt;create procedure sp_SeleccionarEmpleados&lt;br /&gt;as&lt;br /&gt;select&lt;br /&gt;employeeid,&lt;br /&gt;firstname,&lt;br /&gt;lastname&lt;br /&gt;from&lt;br /&gt;employees&lt;/pre&gt;&lt;br /&gt;Luego de crearse, el procedimiento almacenado puede invocarse con &lt;em&gt;execute&lt;/em&gt; desde otra ventana de consulta:&lt;br /&gt;&lt;pre lang="sql"&gt;execute sp_SeleccionarEmpleados&lt;/pre&gt;&lt;br /&gt;Como ya he comentado, si lo que se requiere es una sencilla consulta de selección, viene mejor crear una simple vista, en cambio, los procedimientos almacenados tienen más provecho cuando se elaboran enfocados en el uso de parámetros y la combinación de consultas muy elaboradas.&lt;br /&gt;&lt;br /&gt;En el siguiente ejemplo, tampoco muy elaborado, estoy proponiendo un procedimiento almacenado que recibe un valor entero, se trata del id del empleado, y lo que espero devolver al usuario es la cantidad de ordenes de compra&amp;nbsp;relacionadas con&amp;nbsp;un&amp;nbsp;empleado determinado:&lt;br /&gt;&lt;pre lang="sql"&gt;create procedure sp_CuentaOrdenesPorEmpleado&lt;br /&gt;@id_empleado int&lt;br /&gt;as&lt;br /&gt;select count(*) as Ordenes&lt;br /&gt;from orders&lt;br /&gt;where employeeid = @id_empleado&lt;/pre&gt;&lt;br /&gt;Revisando tripas, es apropiado señalar que:&lt;br /&gt;&lt;pre&gt;@id_empleado int&lt;/pre&gt;&lt;br /&gt;Es la línea que declara un parámetro llamado &lt;em&gt;@id_empleado&lt;/em&gt; de tipo entero (si, los parámetros van con @). El parámetro hace lo suyo cuando se le aplica como filtro sobre el campo &lt;em&gt;employeeid&lt;/em&gt; de la tabla &lt;em&gt;orders&lt;/em&gt;, que a final de cuentas es una sencilla consulta para contar registros (de ahí que se usa &lt;em&gt;count&lt;/em&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-5386605476149882899?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/5386605476149882899/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=5386605476149882899' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/5386605476149882899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/5386605476149882899'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/12/un-sencillo-procedimiento-almacenado-en.html' title='Un sencillo procedimiento almacenado en SQL Server'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-3767216236448849282</id><published>2009-08-06T09:02:00.000-05:00</published><updated>2011-09-17T16:37:27.725-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Access'/><category scheme='http://www.blogger.com/atom/ns#' term='access'/><category scheme='http://www.blogger.com/atom/ns#' term='consultas'/><category scheme='http://www.blogger.com/atom/ns#' term='Consulta'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Consultar varias columnas de texto combinadas en una, en Access</title><content type='html'>Uno de mis clientes me ha preguntado sobre este requerimiento básico en una consulta de Access. Se trata de que en una columna se muestren los valores de dos o más columnas de texto combinadas. Un nombre más apropiado de la solución es "concatenar dos o más campos en uno en una consulta". &lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;El caso típico es combinar apellidos y nombres de contactos en una columna. Si se tienen, por ejemplo, la columna LastName y la columna FirstName, se pueden combinar del siguiente modo:&lt;br /&gt;&lt;pre lang="sql"&gt;Contact: [LastName]+', '+[FirstName]&lt;/pre&gt;&lt;br /&gt;Explico por partes:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;em&gt;Contact&lt;/em&gt;: es el nombre que va a tener la columna en la consulta&lt;/li&gt;&lt;li&gt;&lt;em&gt;[LastName]&lt;/em&gt; y &lt;em&gt;[FirstName]&lt;/em&gt;: las dos columnas que se van a combinar.&lt;/li&gt;&lt;li&gt;&lt;em&gt;+&lt;/em&gt;: el signo + indica a Access que debe concatenar los valores.&lt;/li&gt;&lt;li&gt;&lt;em&gt;', '&lt;/em&gt;: es una cadena de texto envuelta en comillas simples, una coma y un espacio, que se van a insertar entre los dos campos (como si fuera otro campo con un valor fijo, en realidad).&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;En SQL, de Access, la sentencia de consulta queda así:&lt;br /&gt;&lt;pre lang="sql"&gt;SELECT Accounts.Company, [LastName]+', '+[FirstName] AS Contact&lt;br /&gt;FROM Accounts;&lt;/pre&gt;&lt;br /&gt;La siguiente  ilustración muestra este ejemplo en el diseñador de consultas de Access.&lt;br /&gt;&lt;br /&gt;&lt;img class="alignnone size-full wp-image-533" title="Columnas concatenadas en una consulta de Access 2007" src="http://dbnaut.com/wp-content/uploads/2009/08/dbNaut1.Png" alt="Columnas concatenadas en una consulta de Access 2007" width="488" height="338" /&gt;&lt;br /&gt;&lt;br /&gt;Hay que tomar en cuenta que este ejemplo se refiere al uso de varias columnas de la misma tabla. El asunto cambia si se van a concatenar las cadenas de texto de campos de diversas tablas relacionadas. Sin ser demasiado complicado, prefiero dejar el ejemplo de este caso para la entrada siguiente.&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;br /&gt;                        &lt;a href="http://click.linksynergy.com/fs-bin/click?id=/LtHQEeAv1Q&amp;offerid=145238&amp;subid=0"&gt;&lt;IMG alt="Pearson Education (InformIT)" border="0"  width="468" height="60" src="http://ad.linksynergy.com/fs-bin/show?id=/LtHQEeAv1Q&amp;bids=145238&amp;gridnum=1&amp;catid=-1&amp;subid=0"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-3767216236448849282?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/3767216236448849282/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=3767216236448849282' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/3767216236448849282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/3767216236448849282'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/08/consultar-varias-columnas-de-texto.html' title='Consultar varias columnas de texto combinadas en una, en Access'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-4955395528176940301</id><published>2009-05-28T07:51:00.000-05:00</published><updated>2011-09-17T16:37:27.747-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Access'/><category scheme='http://www.blogger.com/atom/ns#' term='Vincular'/><category scheme='http://www.blogger.com/atom/ns#' term='access'/><category scheme='http://www.blogger.com/atom/ns#' term='dBASE'/><title type='text'>Vincular datos de dBASE en Access 2007</title><content type='html'>Entre las diferencias que se pueden apreciar entre Access 2007 y las versiones predecesoras, la vinculación de datos es una de las tareas afectadas.&lt;br/&gt;&lt;br/&gt;En la versión 2007, la importación y vinculación de datos de otras fuentes (otros sistemas de bases de datos), ha ocupado un sitio más visible en el conjunto de herramientas "a la mano" del entorno de Access. No es nada nuevo, pero en virtud del enfoque orientado a datos que corresponde a Access, los diseñadores de la versión 2007 cayeron en la cuenta de que es una funcionalidad que si debe estar más a la vista.&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Por ejemplo, si se requiere vincular o importar los datos de una archivo de dBASE, solamente hay que activar &lt;em&gt;External Data&lt;/em&gt; (supongo que es &lt;em&gt;Datos Externos&lt;/em&gt; en la versión en español), luego, desplegar con un clic &lt;em&gt;More&lt;/em&gt; o &lt;em&gt;Más&lt;/em&gt; y seleccionar el item &lt;em&gt;dBASE File&lt;/em&gt;, Access va a mostrar un cuadro de diálogo que permite seleccionar el archivo de dBASE de alguna carpeta del sistema, ahí mismo se elige si el archivo va a estar vinculado o si los datos se van a importar en una nueva tabla.&lt;br/&gt;&lt;br/&gt;Luego de la vinculación, a la tabla de dBASE se le puede tratar casi del mismo modo que a las tablas nativas de Access, ya sea en consultas o como fuente de datos para formularios y reportes.&lt;br/&gt;&lt;br/&gt;Cuando una tabla vinculada ya no se va a usar, se le puede eliminar al seleccionarla con el botón alterno del ratón y elegir &lt;em&gt;Eliminar&lt;/em&gt; o &lt;em&gt;Borrar.&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-4955395528176940301?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/4955395528176940301/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=4955395528176940301' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/4955395528176940301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/4955395528176940301'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/05/vincular-datos-de-dbase-en-access-2007.html' title='Vincular datos de dBASE en Access 2007'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-5967923636384497075</id><published>2009-05-16T05:16:00.000-05:00</published><updated>2009-05-16T05:19:20.056-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Sonido matemático</title><content type='html'>Otra excelente obra realizada con Processing:&lt;br /&gt;&lt;br /&gt;&lt;object width="550" height="309"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=1593564&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1"&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=1593564&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="550" height="309"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/1593564"&gt;Music Is Math&lt;/a&gt; from &lt;a href="http://vimeo.com/user656427"&gt;Glenn Marshall&lt;/a&gt; on &lt;a href="http://vimeo.com/"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Valen la pena todos los trabajos de Glenn.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-5967923636384497075?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/5967923636384497075/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=5967923636384497075' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/5967923636384497075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/5967923636384497075'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/05/sonido-matematico.html' title='Sonido matemático'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-2908135913623350261</id><published>2009-03-31T03:34:00.000-06:00</published><updated>2011-09-17T20:45:36.488-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rubygems'/><category scheme='http://www.blogger.com/atom/ns#' term='SQLite'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='línea de comando'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Ejemplo de una rutina de captura de datos con Ruby y SQLite3</title><content type='html'>Me encontré en mi PC con Xubuntu unos viejos ejercicios de Ruby con SQLite3.&lt;br /&gt;&lt;br /&gt;Este ejemplo muestra el código de una sencilla rutina de captura de datos, en la línea de comando.&lt;br /&gt;&lt;br /&gt;&lt;a href="" name="more"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;La base de datos &lt;em&gt;d.db&lt;/em&gt; y la tabla &lt;em&gt;sitios&lt;/em&gt; fueron creadas desde la línea de comando con SQLite3.&lt;br /&gt;&lt;br /&gt;Se trata de capturar dos datos, nombre de un website y su URL:&lt;br /&gt;&lt;pre lang="ruby"&gt;#Archivo: captura.rb&lt;br /&gt;require 'rubygems'&lt;br /&gt;require 'sqlite3'&lt;br /&gt;&lt;br /&gt;# Solicitar el nombre del website&lt;br /&gt;print "Nombre del web site: "&lt;br /&gt;wb = gets.chomp&lt;br /&gt;&lt;br /&gt;# Solicitar URL&lt;br /&gt;print "URL del website: "&lt;br /&gt;url = gets.chomp&lt;br /&gt;&lt;br /&gt;# Si las dos variables tiene valores ...&lt;br /&gt;if wb != "" and   url != ""&lt;br /&gt;# ... insertar datos&lt;br /&gt;db = SQLite3::Database.new( "d.db" )&lt;br /&gt;db.execute( "insert into sitios (nombre, url) values ('#{wb}','#{url}')" )&lt;br /&gt;db.close&lt;br /&gt;puts "El sitio #{wb} (#{url}) ha sido guardado.\n\n"&lt;br /&gt;else&lt;br /&gt;# ... solicitar los dos valores&lt;br /&gt;puts "Se necesitan los dos valores.\n"&lt;br /&gt;end&lt;/pre&gt;&lt;br /&gt;Una consulta general de las filas de la tabla &lt;em&gt;sitios&lt;/em&gt; se puede realizar con Ruby como sigue:&lt;br /&gt;&lt;pre lang="ruby"&gt;# Archivo: consulta.rb&lt;br /&gt;require 'rubygems'&lt;br /&gt;require 'sqlite3'&lt;br /&gt;&lt;br /&gt;# Conexión y consulta&lt;br /&gt;db = SQLite3::Database.new( "d.db" )&lt;br /&gt;sql = "select * from sitios"&lt;br /&gt;&lt;br /&gt;# Iteración por todos los registros&lt;br /&gt;db.execute(sql) do |row|&lt;br /&gt;# presentar la fila o registro&lt;br /&gt;p row&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;# Cerrar la conexión&lt;br /&gt;db.close&lt;/pre&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-2908135913623350261?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/2908135913623350261/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=2908135913623350261' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2908135913623350261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2908135913623350261'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/03/ejemplo-de-una-rutina-de-captura-de.html' title='Ejemplo de una rutina de captura de datos con Ruby y SQLite3'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-5204044166369036253</id><published>2009-03-25T17:29:00.000-06:00</published><updated>2011-09-17T16:37:27.786-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SELECT'/><category scheme='http://www.blogger.com/atom/ns#' term='SQLite'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='OFFSET'/><category scheme='http://www.blogger.com/atom/ns#' term='LIMIT'/><title type='text'>Limitando la cantidad de resultados en una consulta de SQLite</title><content type='html'>SQLite tiene las palabras clave LIMIT y OFFSET para limitar la cantidad de resultados que una consulta devuelve:&lt;br/&gt;&lt;pre lang="sql&amp;quot;"&gt;SELECT * FROM sitios_web LIMIT 2;&lt;/pre&gt;&lt;br/&gt;Este es un ejemplo que regresa dos resultados:&lt;br/&gt;&lt;pre&gt;1|dbNaut|http://dbnaut.com&lt;br/&gt;2|uBitKua|http://ubitkua.com&lt;/pre&gt;&lt;br/&gt;&lt;a name='more'&gt;&lt;/a&gt;También se puede solicitar cierta cantidad de resultados, a partir de una determinada posición:&lt;br/&gt;&lt;pre lang="sql&amp;quot;"&gt;SELECT * FROM sitios_web LIMIT 1 OFFSET 1;&lt;/pre&gt;&lt;br/&gt;El resultado es el registro que sigue al omitir la primera posición:&lt;br/&gt;&lt;pre&gt;2|uBitKua|http://ubitkua.com&lt;/pre&gt;&lt;br/&gt;Otro ejemplo, tres resultados, omitiendo las primeras dos posiciones:&lt;br/&gt;&lt;pre lang="sql&amp;quot;"&gt;SELECT * FROM sitios_web LIMIT 3 OFFSET 2;&lt;/pre&gt;&lt;br/&gt;&lt;pre&gt;3|Identimatica|http://identimatica.com&lt;br/&gt;4|ParaServirle.com|http://paraservirle.com&lt;br/&gt;5|RecyPlastic.com|http://recyplastic.com&lt;/pre&gt;&lt;br/&gt;Sencillo, ¿no?.&lt;br/&gt;&lt;p style="text-align: center;"&gt;***&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;LIMIT y OFFSET no forman parte del estándar SQL, aunque se pueden encontrar palabras clave con la misma funcionalidad en otros sistemas de gestión de bases de datos.&lt;br/&gt;&lt;p style="text-align: center;"&gt;***&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;El ejemplo de la base de datos viene de &lt;a href="http://dbnaut.com/sqlite/sqlite-3-creando-una-sencilla-base-de-datos-desde-la-linea-de-comando/"&gt;otra entrada del blog&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-5204044166369036253?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/5204044166369036253/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=5204044166369036253' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/5204044166369036253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/5204044166369036253'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/03/limitando-la-cantidad-de-resultados-en.html' title='Limitando la cantidad de resultados en una consulta de SQLite'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-2404557212703045980</id><published>2009-03-25T15:16:00.000-06:00</published><updated>2011-09-17T16:37:27.811-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Access'/><category scheme='http://www.blogger.com/atom/ns#' term='access'/><category scheme='http://www.blogger.com/atom/ns#' term='Select Top'/><category scheme='http://www.blogger.com/atom/ns#' term='Query'/><category scheme='http://www.blogger.com/atom/ns#' term='DESC'/><category scheme='http://www.blogger.com/atom/ns#' term='Consulta'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='LIMIT'/><title type='text'>Consulta de un conjunto limitado de valores mayores o menores con SQL
en Access</title><content type='html'>Pueden ser los diez ítems de mayor o menor valor, o los cinco, o los cincuenta. Es la clase de consulta de rigor en todo sistema de gestión de datos comercial o de negocios. Por ejemplo, cada año, muchos de mis clientes deben obtener el listado de los cincuenta clientes que más compraron durante el año.&lt;br/&gt;&lt;br/&gt;&lt;a name='more'&gt;&lt;/a&gt;La base de datos Neptuno, que viene con Access, tiene una consulta que pone en práctica un criterio similar, "&lt;em&gt;Los diez productos más caros&lt;/em&gt;", que en una vista SQL se ve así:&lt;br/&gt;&lt;pre lang="sql"&gt;SELECT TOP 10 Productos.NombreProducto AS DiezProductosMasCaros, Productos.PrecioUnidad&lt;br/&gt;FROM Productos&lt;br/&gt;ORDER BY Productos.PrecioUnidad DESC;&lt;/pre&gt;&lt;br/&gt;La consulta ordena descendentemente los registros según los valores del campo &lt;em&gt;PrecioUnidad&lt;/em&gt; y muestra solamente los primeros diez. Las claves para que la consulta haga lo que hace son:&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;El predicado TOP, después de SELECT.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;La cantidad, en el ejemplo es 10.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Y el ordenamiento de mayor a menor valor (DESC) sobre el campo que contiene la cantidad significativa.&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;Otro ejercicio, para aclarar la idea, que podrías hacer en Neptuno o en una base de datos semejante, sería obtener los cinco productos más baratos, cambiando la cantidad y el orden, con ASC, de menor a mayor:&lt;br/&gt;&lt;pre lang="sql"&gt;SELECT TOP 5 Productos.NombreProducto AS CincoProductosMasBaratos, Productos.PrecioUnidad&lt;br/&gt;FROM Productos&lt;br/&gt;ORDER BY Productos.PrecioUnidad ASC;&lt;/pre&gt;&lt;br/&gt;&lt;p style="text-align: center;"&gt;***&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;Hay otros motores de bases de datos que no entienden el predicado TOP, por ejemplo, SQLite no lo usa, en su lugar tiene LIMIT. Conviene consultar la referencia del SQL de cada herramienta de gestión de datos.&lt;br/&gt;&lt;p style="text-align: center;"&gt;***&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;pre lang="sql"&gt;... Productos.NombreProducto AS DiezProductosMasCaros ...&lt;/pre&gt;&lt;br/&gt;Significa que el campo &lt;em&gt;NombreProducto&lt;/em&gt; cambia de nombre a &lt;em&gt;DiezProductosMasCaros&lt;/em&gt;, solamente en la consulta, en la tabla sigue siendo &lt;em&gt;NombreProducto&lt;/em&gt;, es un mecanismo de SQL para que los valores lleven nombres significativos de acuerdo al cometido de cada consulta.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-2404557212703045980?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/2404557212703045980/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=2404557212703045980' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2404557212703045980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2404557212703045980'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/03/consulta-de-un-conjunto-limitado-de.html' title='Consulta de un conjunto limitado de valores mayores o menores con SQL&#xA;en Access'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-605340131360108101</id><published>2009-03-19T16:53:00.000-06:00</published><updated>2011-09-17T16:37:27.847-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite'/><category scheme='http://www.blogger.com/atom/ns#' term='Tabla vinculada'/><category scheme='http://www.blogger.com/atom/ns#' term='ODBC'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Access'/><category scheme='http://www.blogger.com/atom/ns#' term='access'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Jet'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Mi primer experimento con Access y SQLite usando ODBC</title><content type='html'>He bajado e instalado en Windows XP el &lt;a href="http://www.ch-werner.de/sqliteodbc/" target="_blank"&gt;controlador ODBC para SQLite de Ch-Werner&lt;/a&gt;, con el objetivo de usar a Access 2003 como cliente de datos para SQLite. Nada más para experimentar.&lt;br/&gt;&lt;br/&gt;La instalación fue sencilla, consistió en ejecutar el archivo descargado, todo muy tradicional.&lt;br/&gt;&lt;br/&gt;Después, preparé un origen de datos ODBC apuntando al archivo que elaboré cuando escribí la entrada del blog titulada "&lt;a title="Permanent Link to SQLite 3, creando una sencilla base de datos desde la línea de comando" rel="bookmark" href="http://dbnaut.com/sqlite/sqlite-3-creando-una-sencilla-base-de-datos-desde-la-linea-de-comando/"&gt;SQLite 3, creando una sencilla base de datos desde la línea de comando&lt;/a&gt;".&lt;br/&gt;&lt;p style="text-align: center;"&gt;&lt;img class="size-full wp-image-464 aligncenter" title="dbnaut-admin-odbc-sqlite" src="http://dbnaut.com/wp-content/uploads/2009/03/dbnaut-admin-odbc-sqlite.png" alt="" width="462" height="403" /&gt;&lt;/p&gt;&lt;br/&gt;&lt;p style="text-align: center;"&gt;&lt;img class="size-full wp-image-465 aligncenter" title="dbnaut-admin-odbc-sqlite-detalle" src="http://dbnaut.com/wp-content/uploads/2009/03/dbnaut-admin-odbc-sqlite-detalle.png" alt="" width="424" height="317" /&gt;&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;En un archivo &lt;em&gt;.mdb&lt;/em&gt; en blanco, vinculé la única tabla, &lt;em&gt;sitios_web&lt;/em&gt;, de mi archivo SQLite sin problemas. Se puede abrir, usar en consultas y como fuente para reportes.&lt;br/&gt;&lt;p style="text-align: center;"&gt;&lt;img class="size-full wp-image-463 aligncenter" title="dbnaut-odbc-sqlite-tabla-sitios-web" src="http://dbnaut.com/wp-content/uploads/2009/03/dbnaut-odbc-sqlite-tabla-sitios-web.png" alt="" width="483" height="346" /&gt;&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;Luego, hice un formulario con el asistente para formularios de Access, usando como origen de datos la tabla vinculada de SQLite.&lt;br/&gt;&lt;br/&gt;Pude capturar datos, pero hay un incoveniente, igual que con MySQL + ODBC, cuando se guarda un registro nuevo, aparece el temible texto &lt;em&gt;#Eliminado&lt;/em&gt; en los controles del formulario.&lt;br/&gt;&lt;p style="text-align: center;"&gt;&lt;img class="size-full wp-image-459 aligncenter" title="dbnaut-admin-odbc-sqlite-error-eliminado" src="http://dbnaut.com/wp-content/uploads/2009/03/dbnaut-admin-odbc-sqlite-error-eliminado.png" alt="" width="469" height="210" /&gt;&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;El nuevo registro se guarda bien, pero Access no consigue regresar los datos recién guardados hasta después de que el formulario se cierra y se abre de nuevo. Según la información que he podido encontrar en la red, es una anomalía de Access con ODBC que viene desde la versión 2.0 y que es motivada por el diseño propio del motor de base de datos Microsoft Jet. &lt;br/&gt;&lt;br/&gt;Se me ocurren modos de darle la vuelta al incómodo mensaje &lt;em&gt;#Eliminado&lt;/em&gt;, pero requieren su buena labor. Sigo buscando en la red por si hay soluciones más rápidas que las que se me ocurren. Ya lo comentaré más adelante.&lt;br/&gt;&lt;h4&gt;Referencias:&lt;/h4&gt;&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/128809/en-us/" target="_blank"&gt;"#Deleted" errors with linked ODBC tables&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;&lt;a href="http://www.ch-werner.de/sqliteodbc/html/index.html" target="_blank"&gt;SQLite ODBC Documentation&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;&lt;a title="Permanent Link to ODBC, Creación de orígenes de datos" rel="bookmark" href="http://dbnaut.com/odbc/odbc-creacion-de-origenes-de-datos/"&gt;ODBC, Creación de orígenes de datos&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-605340131360108101?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/605340131360108101/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=605340131360108101' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/605340131360108101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/605340131360108101'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/03/mi-primer-experimento-con-access-y.html' title='Mi primer experimento con Access y SQLite usando ODBC'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-8901792948435662284</id><published>2009-03-18T07:31:00.000-06:00</published><updated>2011-09-17T16:37:27.871-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBA'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Access'/><category scheme='http://www.blogger.com/atom/ns#' term='access'/><category scheme='http://www.blogger.com/atom/ns#' term='encontrar'/><category scheme='http://www.blogger.com/atom/ns#' term='buscar'/><category scheme='http://www.blogger.com/atom/ns#' term='Asistente'/><category scheme='http://www.blogger.com/atom/ns#' term='Actualizar'/><category scheme='http://www.blogger.com/atom/ns#' term='Cuadro combinado'/><category scheme='http://www.blogger.com/atom/ns#' term='registro'/><category scheme='http://www.blogger.com/atom/ns#' term='formulario'/><title type='text'>Implementar un cuadro combinado para buscar registros en un formulario de Access</title><content type='html'>Llegó la duda de un lector, que no consigue que al seleccionar un valor en un cuadro combinado, Access le regrese todos los valores del registro que corresponde al valor seleccionado. &lt;br /&gt;&lt;br /&gt;Hay varios modos de solucionar el requerimiento, se me ocurren dos, uno sencillo, con el asistente de cuadros combinados y otro por pura fuerza bruta con código VBA. Dejo la fuerza bruta para otra entrada del blog y explico rápidamente cómo se hace con el asistente.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Voy a trabajar con la base de datos de ejemplo &lt;strong&gt;Neptuno.mdb&lt;/strong&gt; (*), con una copia del formulario &lt;em&gt;Clientes&lt;/em&gt; en Access 2003 (soy más pobre que Pepe el Toro y todavía no me alcanza para una versión más nueva).&lt;br /&gt;&lt;br /&gt;1. Abro en modo de diseño el formulario que he copiado de &lt;em&gt;Clientes&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;2. Me aseguro que en el cuadro de herramientas esté activa la herramienta &lt;em&gt;Asistentes para controles&lt;/em&gt; (la que tiene una varita mágica con tres puntos suspensivos).&lt;br /&gt;&lt;p style="text-align: center;"&gt;&lt;img class="size-full wp-image-446 aligncenter" title="dbnaut-cuadro-herramientas-access" src="http://dbnaut.com/wp-content/uploads/2009/03/dbnaut-cuadro-herramientas-access.png" alt="" width="209" height="86" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;3. Coloco un nuevo cuadro combinado en la parte superior del formulario, junto al título que dice &lt;em&gt;Clientes&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;4. Cuando se abre el asistente para cuadros combinados selecciono la tercera opción que dice así: &lt;em&gt;Buscar un registro en el formulario según el valor que he seleccionado en el cuadro combinado&lt;/em&gt;.&lt;br /&gt;&lt;p style="text-align: center;"&gt;&lt;a href="http://dbnaut.com/wp-content/uploads/2009/03/dbnaut-asistente-cuadros-lista.png"&gt;&lt;img class="size-medium wp-image-447 aligncenter" title="dbnaut-asistente-cuadros-lista" src="http://dbnaut.com/wp-content/uploads/2009/03/dbnaut-asistente-cuadros-lista-300x210.png" alt="" width="300" height="210" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;5. Presiono el botón &lt;em&gt;Siguiente&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;El asistente me ofrece dos listas, &lt;em&gt;Campos disponibles&lt;/em&gt; y &lt;em&gt;Campos seleccionados&lt;/em&gt;. &lt;br /&gt;&lt;br /&gt;6. Selecciono el campo &lt;em&gt;NombreContacto&lt;/em&gt; o &lt;em&gt;NombreCliente&lt;/em&gt; (si lo hay) y presiono el botón con el signo &lt;strong&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/strong&gt; para pasar el campo a la lista de &lt;em&gt;Campos seleccionados&lt;/em&gt;. He seleccionado el campo que se le va a mostrar al usuario para elegir clientes.&lt;br /&gt;&lt;br /&gt;7. Presiono el botón &lt;em&gt;Siguiente&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;8. Ajusto el ancho de la columna para que los valores no queden recortados. Dejo marcada la casilla &lt;em&gt;Ocultar la columna clave&lt;/em&gt; (la columna clave, en este caso, es &lt;em&gt;IdCliente&lt;/em&gt;, un campo de texto que es la clave principal de la tabla &lt;em&gt;Clientes&lt;/em&gt;).&lt;br /&gt;&lt;br /&gt;9. Presiono el botón &lt;em&gt;Siguiente&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;El asistente me pregunta por la etiqueta que va a acompañar al cuadro combinado, yo escribo: "&lt;em&gt;Selecciona un cliente&lt;/em&gt;".&lt;br /&gt;&lt;br /&gt;10. Presiono el botón &lt;em&gt;Finalizar&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;Así termina el asistente. Seguramente hay que organizar los elementos en la parte superior del formulario para que no se encimen.&lt;br /&gt;&lt;br /&gt;Cuando pongo el formulario en la vista normal, ya puedo seleccionar un cliente de la lista y me trae los valores que corresponden a su registro. Podría ponerme a salta de gusto, pero yo soy muy serio. Queda para una segunda entrada cómo se implementa un cuadro combinado que usa la &lt;em&gt;fuerza bruta&lt;/em&gt; de VBA.&lt;br /&gt;&lt;p style="text-align: center;"&gt;&lt;a href="http://dbnaut.com/wp-content/uploads/2009/03/dbnaut-neptuno-busca-cliente.png"&gt;&lt;img class="size-medium wp-image-448 aligncenter" title="dbnaut-neptuno-busca-cliente" src="http://dbnaut.com/wp-content/uploads/2009/03/dbnaut-neptuno-busca-cliente-300x187.png" alt="" width="300" height="187" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Notas&lt;/h4&gt;&lt;br /&gt;Si se usa el asistente para cuadros combinados con tablas que no tienen un campo clave o llave, como el &lt;em&gt;IdCliente&lt;/em&gt;, puede que no resulte, ¡hay que crear un campo que sea la clave principal en las tablas!.&lt;br /&gt;&lt;p style="text-align: center;"&gt;***&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Lo bueno: no he tenido que escribir una sola letra de código de programación.&lt;br /&gt;&lt;br /&gt;Lo malo: cuando se corre el formulario en el Runtime de Access 2007, no funciona el cuadro combinado para encontrar el registro asociado. Por lo menos, a mí me ha estado pasando.&lt;br /&gt;&lt;p style="text-align: center;"&gt;***&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;* El archivo de ejemplo &lt;strong&gt;Neptuno.mdb&lt;/strong&gt; se instala con Access si se hace la instalación completa o personalizada.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-8901792948435662284?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/8901792948435662284/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=8901792948435662284' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/8901792948435662284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/8901792948435662284'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/03/implementar-un-cuadro-combinado-para.html' title='Implementar un cuadro combinado para buscar registros en un formulario de Access'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-7978918439340258226</id><published>2009-03-17T22:11:00.000-06:00</published><updated>2011-09-17T16:37:27.893-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Origen del contro'/><category scheme='http://www.blogger.com/atom/ns#' term='like'/><category scheme='http://www.blogger.com/atom/ns#' term='VBA'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Access'/><category scheme='http://www.blogger.com/atom/ns#' term='Para usuarios de Access'/><category scheme='http://www.blogger.com/atom/ns#' term='access'/><category scheme='http://www.blogger.com/atom/ns#' term='Cuadro de lista'/><category scheme='http://www.blogger.com/atom/ns#' term='Tipo de origen de la fila'/><category scheme='http://www.blogger.com/atom/ns#' term='Cuadro combinado'/><category scheme='http://www.blogger.com/atom/ns#' term='Dinámicamente'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Origen del control'/><title type='text'>Cómo agregar dinámicamente los datos de una tabla o consulta a un
cuadro de lista o combinado en Access</title><content type='html'>Hace unas pocas entradas expliqué cómo agregar valores a un cuadro combinado o cuadro de lista, pero se trataba de valores independientes, ajenos a un origen de datos, es decir, que no eran tomados de una tabla o de una consulta. En esta entrada explico cómo se puede llenar dinámicamente un cuadro combinado o de lista con los valores de una tabla o consulta.&lt;br/&gt;&lt;br/&gt;Para seguirle la pista a la lectura hay que saber cómo entrar a la vista diseño de un formulario, cómo alterar las propiedades de controles. También un poco de SQL y VBA.&lt;br/&gt;&lt;br/&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;En la mini-aplicación &lt;a href="http://dbnaut.com/software/artist-follower-for-access/"&gt;Artist Follower&lt;/a&gt; que publiqué hace pocos días (&lt;a title="Descarga de Artist Follower" href="http://artistfollower.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24712#ReleaseFiles" target="_blank"&gt;descarga&lt;/a&gt;), se incluye un ejemplo de llenado dinámico de datos en un cuadro de lista, que funciona igual para un cuadro combinado.&lt;br/&gt;&lt;p style="text-align: center;"&gt;&lt;img class="size-full wp-image-339 aligncenter" title="dbnaut-artist-follower-01" src="http://dbnaut.com/wp-content/uploads/2009/03/dbnaut-artist-follower-01.png" alt="" width="301" height="400" /&gt;&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;El formulario que se abre al iniciar la aplicación, llamado &lt;em&gt;ArtistCatalog&lt;/em&gt;, tiene un cuadro de texto para escribir el nombre parcial de un artista que el usuario busca, un botón de comando para disparar la búsqueda, y un cuadro de lista para mostrar los resultados. Los datos son tomados de una tabla llamada &lt;em&gt;Artists&lt;/em&gt;, los campos que se toman de la tabla son dos: &lt;em&gt;IdArtist&lt;/em&gt; y &lt;em&gt;ArtistName&lt;/em&gt;, el primero es el valor clave de la tabla y se mantiene oculto en una primera columna del cuadro de lista, el segundo es el nombre completo del artista que va en la segunda columna que ocupa todo lo ancho del cuadro de lista.&lt;br/&gt;&lt;br/&gt;El efecto de ocultar una columna se logra alterando dos propiedades del cuadro de lista:&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;Número de columnas: 2&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Ancho de columnas: 0 cm; 7 cm&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;He requerido las dos columnas porque el primer campo me sirve más adelante para otra tarea (de hecho, la &lt;em&gt;Columna dependiente&lt;/em&gt; del cuadro de lista es el de la primera columna, no el nombre del artista), pero para los usuarios es más descriptivo ver el nombre del artista.&lt;br/&gt;&lt;br/&gt;Para que Access sepa que los datos que se van a agregar al cuadro combinado provienen de una tabla o una consulta, he dejado la propiedad &lt;em&gt;Tipo de origen de la fila&lt;/em&gt; con la opción &lt;em&gt;Tabla/Consulta&lt;/em&gt; seleccionada.&lt;br/&gt;&lt;br/&gt;El meollo del llenado del cuadro de lista viene en la propiedad &lt;em&gt;Origen de la fila&lt;/em&gt;:&lt;br/&gt;&lt;pre lang="sql"&gt;SELECT Artists.IdArtist, Artists.ArtistName FROM Artists&lt;br/&gt;WHERE (((Artists.ArtistName)&lt;br/&gt;Like "*" &amp; Forms!ArtistCatalog!ArtistSearch &amp; "*"))&lt;br/&gt;ORDER BY Artists.ArtistName;&lt;/pre&gt;&lt;br/&gt;¡¡Qué, qué, qué!!.&lt;br/&gt;&lt;br/&gt;Resulta que es una sentencia de consulta de datos que se complica un poco porque toma un valor de un control de texto para buscar resultados, se explica así:&lt;br/&gt;&lt;pre lang="sql"&gt;SELECT Artists.IdArtist, Artists.ArtistName FROM Artists&lt;/pre&gt;&lt;br/&gt;La primera línea es la más sencilla de la sentencia, traer los campos &lt;em&gt;IdArtist&lt;/em&gt; y &lt;em&gt;ArtistName&lt;/em&gt; de la tabla &lt;em&gt;Artists&lt;/em&gt;. Luego viene:&lt;br/&gt;&lt;pre lang="sql"&gt;WHERE (((Artists.ArtistName)&lt;/pre&gt;&lt;br/&gt;Donde el campo &lt;em&gt;ArtistName&lt;/em&gt; ...&lt;br/&gt;&lt;pre lang="sql"&gt;Like "*" &amp; Forms!ArtistCatalog!ArtistSearch &amp; "*"))&lt;/pre&gt;&lt;br/&gt;... sea como el valor dentro del control de texto llamado &lt;em&gt;ArtistSearch&lt;/em&gt; en el formulario &lt;em&gt;ArtistCatalog&lt;/em&gt;.&lt;br/&gt;&lt;br/&gt;Los asteriscos concatenados antes y después del nombre del control ayudan a que Access trate de comparar el texto del control &lt;em&gt;ArtistSearch&lt;/em&gt; con lo que contenga el campo &lt;em&gt;ArtistName&lt;/em&gt; de la tabla de artistas sin importar si está al principio, en medio o al final del valor del campo (&lt;a title="Operador LIKE de SQL, cómo consultar con texto parcial" href="http://dbnaut.com/sql/operador-like-de-sql-como-consultar-con-texto-parcial/" target="_self"&gt;hay un entrada en el blog sobre el operador Like de SQL&lt;/a&gt;). La sentencia termina con: &lt;br/&gt;&lt;pre lang="sql"&gt;ORDER BYArtists.ArtistName;&lt;/pre&gt;&lt;br/&gt;Al final solamente se están ordenando los resultados alfabéticamente.&lt;br/&gt;&lt;br/&gt;La verdad es que la sentencia SQL puede lucir complicada, no lo hace tanto si se le mira en el diseñador de consultas de Access:&lt;br/&gt;&lt;p style="text-align: center;"&gt;&lt;img class="size-full wp-image-421 aligncenter" title="dbnaut-consulta-buscar-artistname" src="http://dbnaut.com/wp-content/uploads/2009/03/dbnaut-consulta-buscar-artistname.png" alt="" width="500" height="266" /&gt;&lt;/p&gt;&lt;br/&gt;&lt;p style="text-align: center;"&gt; &lt;/p&gt;&lt;br/&gt;&lt;br/&gt;En el diseñador de consultas, lo único que luce complicado es el criterio de selección, pero no toma mucho tiempo entenderle.&lt;br/&gt;&lt;br/&gt;Ya con las propiedades del cuadro de lista definidas, solamente falta un poco para lograr que la lista se actualice dinámicamente, de hecho, lo que falta es un evento controlado con un poco de VBA, el clic que el usuario hace en el botón llamado &lt;em&gt;cmdSearch&lt;/em&gt;:&lt;br/&gt;&lt;pre lang="VB"&gt;Private Sub cmdSearch_Click()&lt;br/&gt;&lt;br/&gt;' update artist list with results of the search criteria&lt;br/&gt;  Me.ArtistList.Requery&lt;br/&gt;&lt;br/&gt;End Sub&lt;/pre&gt;&lt;br/&gt;Se está llamando al método &lt;em&gt;Requery&lt;/em&gt; del cuadro de lista (la palabra &lt;em&gt;Me&lt;/em&gt; no se requiere, se refiere a "&lt;em&gt;Mí, el formulario&lt;/em&gt;", pero a veces se me va en el código porque VB me recuerda cómo se llaman mis controles en una lista desplegable al momento de escribir el código). Cuando el usuario hace clic en el botón &lt;em&gt;cmdSearch&lt;/em&gt;, Access vuelve a ejecutar la consulta, usando como criterio el valor que contenga el cuadro de texto &lt;em&gt;ArtistSearch&lt;/em&gt; (si no contiene texto devuelve todos los artistas).&lt;br/&gt;&lt;p style="text-align: center;"&gt;***&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;Hay otras situaciones que conducen a actualizar dinámicamente el contenido de un cuadro combinado o un cuadro de texto, y puede que no sean tan exigentes. A veces solamente se requiere cambiar de origen de datos sin usar consultas tan complicadas:&lt;br/&gt;&lt;pre lang="VB"&gt;Sub OtroOrigen()&lt;br/&gt;    ' Definir tipo de origen de fila&lt;br/&gt;    ArtistList.RowSourceType = "Table/Query"&lt;br/&gt;    ' Origen de fila&lt;br/&gt;    ArtistList.RowSource = "SELECT * FROM Artists"&lt;br/&gt;    ' Cuántas columnas&lt;br/&gt;    ArtistList.ColumnCount = 2&lt;br/&gt;    ' Columna dependiente&lt;br/&gt;    ArtistList.BoundColumn = 1&lt;br/&gt;    ' Ancho de columnas&lt;br/&gt;    ArtistList.ColumnWidths = "0 cm; 7 cm"&lt;br/&gt;    ' Actualizar lista&lt;br/&gt;    ArtistList.Requery&lt;br/&gt;End Sub&lt;/pre&gt;&lt;br/&gt;El código del ejemplo hace mucho de lo que ya he explicado, lo que cambia es que aquí todas las propiedades del cuadro de lista se establecen con código de programación, y la consulta es mucho más sencilla, de hecho pudo haber sido aún más sencilla:&lt;br/&gt;&lt;pre lang="VB"&gt;' Origen de fila&lt;br/&gt;ArtistList.RowSource = "Artists"&lt;/pre&gt;&lt;br/&gt;Porque es suficiente para la propiedad &lt;em&gt;Origen de fila&lt;/em&gt; con el nombre de una tabla o una consulta.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-7978918439340258226?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/7978918439340258226/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=7978918439340258226' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/7978918439340258226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/7978918439340258226'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/03/como-agregar-dinamicamente-los-datos-de.html' title='Cómo agregar dinámicamente los datos de una tabla o consulta a un&#xA;cuadro de lista o combinado en Access'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-5818269028877620504</id><published>2009-03-16T12:03:00.000-06:00</published><updated>2011-09-17T16:37:27.917-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBA'/><category scheme='http://www.blogger.com/atom/ns#' term='Campo'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Access'/><category scheme='http://www.blogger.com/atom/ns#' term='access'/><category scheme='http://www.blogger.com/atom/ns#' term='Para usuarios de Access'/><category scheme='http://www.blogger.com/atom/ns#' term='DateAdd()'/><category scheme='http://www.blogger.com/atom/ns#' term='Fecha'/><category scheme='http://www.blogger.com/atom/ns#' term='Date()'/><category scheme='http://www.blogger.com/atom/ns#' term='calcular'/><category scheme='http://www.blogger.com/atom/ns#' term='Predeterminado'/><category scheme='http://www.blogger.com/atom/ns#' term='Tabla'/><category scheme='http://www.blogger.com/atom/ns#' term='Valor'/><category scheme='http://www.blogger.com/atom/ns#' term='DateDiff()'/><title type='text'>Definir la fecha predeterminada de un campo en una tabla de Microsoft
Access, Parte 3</title><content type='html'>Conviene haber leído &lt;a href="http://dbnaut.com/microsoft-access/definir-la-fecha-predeterminada-de-un-campo-en-una-tabla-de-microsoft-access-parte-1/" target="_self"&gt;la primera parte&lt;/a&gt; y &lt;a title="Definir la fecha predeterminada de un campo en una tabla de Microsoft Access, Parte 2" href="http://dbnaut.com/microsoft-access/definir-la-fecha-predeterminada-de-un-campo-en-una-tabla-de-microsoft-access-parte-2/" target="_self"&gt;la segunda parte&lt;/a&gt;.&lt;br/&gt;&lt;p style="text-align: center;"&gt;***&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;Ya escribí sobre las funciones VBA que incluye Access para operar con fechas: &lt;em&gt;Date()&lt;/em&gt;, &lt;em&gt;DateDiff()&lt;/em&gt; y &lt;em&gt;DateAdd&lt;/em&gt;.&lt;br/&gt;&lt;br/&gt;¿Qué tal cuando se requiere que el valor predeterminado de un campo sea el primer día del mes que corre del año actual?.&lt;br/&gt;&lt;br/&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Bueno, la pregunta se contesta con una combinación de funciones de Visual Basic:&lt;br/&gt;&lt;pre&gt;=DateSerial(Year(Date()), Month(Date()), 1)&lt;/pre&gt;&lt;br/&gt;Si se coloca esta expresión en la propiedad &lt;em&gt;Valor predeterminado&lt;/em&gt; de un campo, o en un criterio de una consulta, lo que Access va a devolver es la fecha del día primero del mes en curso del año que corre. ¿Por qué?:&lt;br/&gt;&lt;br/&gt;1. La función &lt;em&gt;DateSerial()&lt;/em&gt; devuelve un valor de tipo fecha si se le facilitan los siguientes datos en el mismo orden que los escribo: Año, Mes y Día. Se usan valores enteros para cada uno de estos datos. Su sintaxis es:&lt;br/&gt;&lt;pre&gt;DateSerial(Year, Month, Day)&lt;/pre&gt;&lt;br/&gt;Pero, en el ejemplo, en lugar de escribir valores enteros, he usado un par de funciones: &lt;em&gt;Year()&lt;/em&gt; y &lt;em&gt;Month()&lt;/em&gt;.&lt;br/&gt;&lt;br/&gt;2. La función &lt;em&gt;Year()&lt;/em&gt; devuelve un valor de tipo entero, es el valor del año de la fecha que se le pase como argumento o parámetro (si, lo que se escribe entre los paréntesis). Y ¿qué fue lo que escribí entre los paréntesis?, la conocida función &lt;em&gt;Date()&lt;/em&gt;, que es lo mismo que escribir la fecha actual.&lt;br/&gt;&lt;br/&gt;3. La función &lt;em&gt;Month()&lt;/em&gt; devuelve un valor de tipo entero que corresponde al número de mes de la fecha que se le incluya dentro de los paréntesis.&lt;br/&gt;&lt;br/&gt;4. En cambio, el valor que corresponde al día ha sido un simple y llano 1. Igual pudo haber sido el día 14 o el 15, el valor lo he determinado como fijo, mientras que el resto se obtiene de manera dinámica.&lt;br/&gt;&lt;br/&gt;Cuando se incluye la expresión&lt;br/&gt;&lt;pre&gt;=DateSerial(Year(Date()), Month(Date()), 1)&lt;/pre&gt;&lt;br/&gt;en la propiedad &lt;em&gt;Valor predeterminado&lt;/em&gt; de un campo o de un control y se está usando la versión en español de Access, se transforma en algo como:&lt;br/&gt;&lt;pre&gt;=SerieFecha(Año(Fecha()),Mes(Fecha()),1)&lt;/pre&gt;&lt;br/&gt;Si se omite el paréntesis de alguna de las funciones interiores, Access va a colocar un conjunto de comillas, hay que corregir o la expresión se considera incorrecta y devueve un error.&lt;br/&gt;&lt;p style="text-align: center;"&gt;&lt;img class="size-full wp-image-395 aligncenter" title="dbnaut-valor-predeterminado-campo-dia-primero" src="http://dbnaut.com/wp-content/uploads/2009/03/dbnaut-valor-predeterminado-campo-dia-primero.png" alt="" width="500" height="366" /&gt;&lt;/p&gt;&lt;br/&gt;&lt;p style="text-align: center;"&gt;***&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;En una siguiente entrega voy a proponer un método para fijar el &lt;em&gt;Valor predeterminado&lt;/em&gt; en el último día del mes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-5818269028877620504?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/5818269028877620504/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=5818269028877620504' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/5818269028877620504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/5818269028877620504'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/03/definir-la-fecha-predeterminada-de-un.html' title='Definir la fecha predeterminada de un campo en una tabla de Microsoft&#xA;Access, Parte 3'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-807927559396118705</id><published>2009-03-16T06:09:00.000-06:00</published><updated>2011-09-17T16:37:27.942-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBA'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Access'/><category scheme='http://www.blogger.com/atom/ns#' term='Para usuarios de Access'/><title type='text'>Cómo agregar valores a un cuadro de lista o cuadro combinado con código
VBA en Access</title><content type='html'>No sé con precisión por qué, pero Google ha estado remitiendo para acá a la gente que está buscando cómo agregar valores a un cuadro combinado o un cuadro de lista con Visual Basic for Applications. Quizá por una combinación oportuna de etiquetas en el conjunto de los temas del blog.&lt;br/&gt;&lt;br/&gt;Es un tema, entre un montón más, que le hacía falta a mi blog. Presento una versión rápida de la solución para los avezados y una versión un poco más larga para usuarios novatos.&lt;br/&gt;&lt;br/&gt;Hay que saber cómo entrar en el modo de diseño de un formulario, agregar controles y alterar sus propiedades.&lt;br/&gt;&lt;br/&gt;Voy a explicar cómo agregar valores independientes de un origen de datos (tabla o consulta) a un cuadro de lista o un combinado. En una entrada siguiente voy a explicar cómo agregar dinámicamente los datos de una tabla o consulta a un cuadro de lista o un combinado.&lt;br/&gt;&lt;br/&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;h4&gt;Versión rápida&lt;/h4&gt;&lt;br/&gt;Establece la propiedad de tu cuadro combinado o cuadro de lista &lt;em&gt;Tipo de origen de la fila&lt;/em&gt; a &lt;em&gt;Lista de valores&lt;/em&gt;.&lt;br/&gt;Al evento de un control, por ejemplo, un botón de comando, agrégale la siguiente instrucción de VBA:&lt;br/&gt;&lt;pre lang="VB"&gt;listaResultados.AddItem valor1&lt;/pre&gt;&lt;br/&gt;Donde &lt;em&gt;listaResultados&lt;/em&gt; es tu cuadro combinado o cuadro de lista, &lt;em&gt;AddItem&lt;/em&gt; es el método para agregar valores a la lista y &lt;em&gt;valor1&lt;/em&gt; es el valor que vas a agregar a la lista, puede ser una variable, el valor de otro control o el resultado de una función. Listo.&lt;br/&gt;&lt;h4&gt;Versión larga&lt;/h4&gt;&lt;br/&gt;Teniendo un cuadro combinado o un cuadro de lista en un formulario, establece su propiedad &lt;em&gt;Tipo de origen de la fila&lt;/em&gt; a &lt;em&gt;Lista de valores&lt;/em&gt; *.&lt;br/&gt;&lt;br/&gt;Ahora, conviene tener un mecánismo que permita agregar un valor nuevo al cuadro combinado o al cuadro de lista, la práctica más sencilla para ésto consiste en agregar un cuadro de texto y un botón de comando al formulario. Al cuadro de texto le voy a llamar &lt;em&gt;valor1&lt;/em&gt; y al botón de comando le voy a llamar &lt;em&gt;cmdAgregarValor&lt;/em&gt;.&lt;br/&gt;&lt;br/&gt;La idea es que al presionar el botón &lt;em&gt;cmdAgregarValor&lt;/em&gt;, Access tome el valor de &lt;em&gt;valor1&lt;/em&gt; y lo agregue al combo o lista que voy a llamar &lt;em&gt;listaResultados&lt;/em&gt;.&lt;br/&gt;&lt;p style="text-align: center;"&gt;&lt;img class="size-full wp-image-378 aligncenter" title="dbnaut-agregar-valor-combo-vba" src="http://dbnaut.com/wp-content/uploads/2009/03/dbnaut-agregar-valor-combo-vba.png" alt="" width="371" height="251" /&gt;&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;Sobre el formulario, en vista de diseño, selecciona el botón de comando. En el evento &lt;em&gt;Al hacer clic&lt;/em&gt; del botón de comando, activa el &lt;em&gt;generador de código&lt;/em&gt; (se activa con un clic en el pequeño botón con tres puntos suspensivos, si no lo ves, necesitas hacer clic sobre la celda del evento &lt;em&gt;Al hacer clic&lt;/em&gt; de la Ventana de propiedades). &lt;br/&gt;&lt;br/&gt;Dentro del procedimiento del evento Clic del botón va el siguiente código:&lt;br/&gt;&lt;pre lang="VB"&gt;listaResultados.AddItem valor1&lt;/pre&gt;&lt;br/&gt;El ejemplo del código completo queda parecido a esto:&lt;br/&gt;&lt;pre lang="VB"&gt;Private Sub cmdAgregarValor_Click()&lt;br/&gt;&lt;br/&gt;    listaResultados.AddItem valor1&lt;br/&gt;&lt;br/&gt;End Sub&lt;/pre&gt;&lt;br/&gt;Al cambiar el formulario a la vista normal, puedes escribir un valor en el cuadro de texto y al presionar el botón, el valor se agrega a la lista o al combo.&lt;br/&gt;&lt;br/&gt;Si prefieres que los valores se agreguen al inicio de la lista, usa:&lt;br/&gt;&lt;pre lang="VB"&gt;listaResultados.AddItem valor1, 0&lt;/pre&gt;&lt;br/&gt;El parámetro cero le dice a &lt;em&gt;AddItem&lt;/em&gt; que el valor se debe colocar al inicio de la lista, es decir, en la posición cero.&lt;br/&gt;&lt;br/&gt;Los valores almacenados en la lista o combo son volátiles, tan pronto se cierra el formulario, los valores se pierden, se requiere un poco más de código VBA para que los valores se guarden en una tabla al mismo tiempo que se van mostrando en la lista o combo.&lt;br/&gt;&lt;p style="text-align: center;"&gt;***&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;Hay &lt;a title="Cómo agregar dinámicamente los datos de una tabla o consulta a un cuadro de lista o combinado en Access" href="http://dbnaut.com/microsoft-access/como-agregar-dinamicamente-los-datos-de-una-tabla-o-consulta-a-un-cuadro-de-lista-o-combinado-en-access/" target="_self"&gt;otra entrada&lt;/a&gt; en este blog que explica cómo agregar dinámicamente valores de una tabla o consulta a un cuadro de lista o combinado usando código VBA.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-807927559396118705?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/807927559396118705/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=807927559396118705' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/807927559396118705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/807927559396118705'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/03/como-agregar-valores-un-cuadro-de-lista.html' title='Cómo agregar valores a un cuadro de lista o cuadro combinado con código&#xA;VBA en Access'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-5595658829186155875</id><published>2009-03-11T18:40:00.000-06:00</published><updated>2011-09-17T16:37:27.961-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADO DB'/><category scheme='http://www.blogger.com/atom/ns#' term='SQLite'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Soluciones'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Access'/><category scheme='http://www.blogger.com/atom/ns#' term='access'/><category scheme='http://www.blogger.com/atom/ns#' term='Para usuarios de Access'/><category scheme='http://www.blogger.com/atom/ns#' term='Connection string'/><category scheme='http://www.blogger.com/atom/ns#' term='ADO.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Interbase'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='visual basic'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='DBF'/><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Provider'/><category scheme='http://www.blogger.com/atom/ns#' term='ADO'/><category scheme='http://www.blogger.com/atom/ns#' term='Postgre SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Cuando tu aplicación ADO o ADO.net va a conectarse a la base de datos,
ConnectionStrings.com explica cómo escribir la cadena de conexión</title><content type='html'>El recurso que voy a comentar es para programadores de .NET y lenguajes de programación compatibles con OLE DB.&lt;br/&gt;&lt;br/&gt;&lt;a title="http://www.connectionstrings.com" href="http://www.connectionstrings.com" target="_blank"&gt;ConnectionStrings.com&lt;/a&gt; es un recurso en línea que descubrí al leer "&lt;em&gt;Beginning ASP.NET 2.0 Databases&lt;/em&gt;" de Damien Foggon, Apress.&lt;br/&gt;&lt;br/&gt;El sitio web es una colección de ejemplos de cadenas de conexión para ADO y ADO.net, que trata de abarcar la mayoría de los sistemas de bases de datos o archivos de datos, como MySQL, SQL Server, Interbase, Oracle, Postgre SQL SQLite, Access, DBF, etc.&lt;br/&gt;&lt;br/&gt;Ante la abrumadora variedad de &lt;em&gt;providers&lt;/em&gt; que se han creado, un solo sistema, como MySQL, puede tener diversos &lt;em&gt;providers&lt;/em&gt; y&lt;em&gt;&lt;span style="font-style: normal;"&gt; c&lt;/span&gt;&lt;span style="font-style: normal;"&gt;omo las cadenas de conexión pueden variar según el &lt;em&gt;provider&lt;/em&gt;, no siempre es sencillo establecer cómo deben escribirse. Por lo que este website a veces ofrece una rápida referencia.&lt;/span&gt;&lt;/em&gt;&lt;br/&gt;&lt;br/&gt;&lt;a title="http://www.connectionstrings.com" href="http://www.connectionstrings.com" target="_blank"&gt;ConnectionStrings.com&lt;/a&gt; ha estado agregando ejemplos poco a poco y ahora cuenta con un catálogo nutrido. También, hay que decirlo, ha cedido mucho de su espacio a la publicidad, pero mantiene en el centro de la pantalla su atractivo conjunto de ejemplos de &lt;em&gt;connection strings&lt;/em&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-5595658829186155875?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/5595658829186155875/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=5595658829186155875' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/5595658829186155875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/5595658829186155875'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/03/cuando-tu-aplicacion-ado-o-adonet-va.html' title='Cuando tu aplicación ADO o ADO.net va a conectarse a la base de datos,&#xA;ConnectionStrings.com explica cómo escribir la cadena de conexión'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-2076642254129436064</id><published>2009-03-10T04:30:00.000-06:00</published><updated>2011-09-17T16:37:27.980-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBA'/><category scheme='http://www.blogger.com/atom/ns#' term='Campo'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Access'/><category scheme='http://www.blogger.com/atom/ns#' term='access'/><category scheme='http://www.blogger.com/atom/ns#' term='Para usuarios de Access'/><category scheme='http://www.blogger.com/atom/ns#' term='DateAdd()'/><category scheme='http://www.blogger.com/atom/ns#' term='Fecha'/><category scheme='http://www.blogger.com/atom/ns#' term='Date()'/><category scheme='http://www.blogger.com/atom/ns#' term='calcular'/><category scheme='http://www.blogger.com/atom/ns#' term='Predeterminado'/><category scheme='http://www.blogger.com/atom/ns#' term='Tabla'/><category scheme='http://www.blogger.com/atom/ns#' term='Valor'/><category scheme='http://www.blogger.com/atom/ns#' term='DateDiff()'/><title type='text'>Definir la fecha predeterminada de un campo en una tabla de Microsoft
Access, Parte 2</title><content type='html'>Conviene haber leído &lt;a href="http://dbnaut.com/microsoft-access/definir-la-fecha-predeterminada-de-un-campo-en-una-tabla-de-microsoft-access-parte-1/" target="_self"&gt;la primera parte&lt;/a&gt;.&lt;br/&gt;&lt;p style="text-align: center;"&gt;***&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;Ya que se ha visto cómo definir el &lt;em&gt;Valor predeterminado&lt;/em&gt; de un campo tipo &lt;em&gt;Fecha/Hora&lt;/em&gt;, con una función que devuelve el valor de la fecha que corre o actual, en una tabla de Microsoft Access, se abre la oportunidad de conocer otras posibilidades semejantes.&lt;br/&gt;&lt;br/&gt;Con la misma función &lt;em&gt;Date()&lt;/em&gt;, que devuelve la fecha actual, es posible crear una operación de suma o resta de días. Qué tal si vemos cómo es cuando se usa la fecha del día anterior:&lt;br/&gt;&lt;pre&gt;=Date() - 1&lt;/pre&gt;&lt;br/&gt;O con una suma para obtener la fecha del día siguiente:&lt;br/&gt;&lt;pre&gt;=Date() + 2&lt;/pre&gt;&lt;br/&gt;Simple, ¿no?. Es la función &lt;em&gt;Date()&lt;/em&gt; más - menos la cantidad de días.&lt;br/&gt;&lt;br/&gt;El asunto cambia cuando se van a calcular lapsos de tiempo distintos, como semanas, meses, trimestres o años.&lt;br/&gt;&lt;br/&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Hay otras dos funciones de Access que vienen al caso: &lt;em&gt;DateAdd()&lt;/em&gt; y &lt;em&gt;DateDiff()&lt;/em&gt;. La primera sirve para agregar lapsos de tiempo a una fecha, la segunda para restar.&lt;br/&gt;&lt;br/&gt;Ejemplo, sumar tres meses al 1 de Febrero de 2009:&lt;br/&gt;&lt;pre&gt;=DateAdd("m", 3, #2/1/2009#)&lt;br/&gt;Resultado: 01/05/2009&lt;/pre&gt;&lt;br/&gt;No, no es grosería.&lt;br/&gt;&lt;br/&gt;La función se explica así:&lt;br/&gt;&lt;pre&gt;=DateAdd( intervalo, cantidad, fecha)&lt;/pre&gt;&lt;br/&gt;Lo mismo para la función DateDiff: &lt;br/&gt;&lt;pre&gt;=DateDiff( intervalo, cantidad, fecha)&lt;/pre&gt;&lt;br/&gt;&lt;strong&gt;Qué es intervalo&lt;/strong&gt;: es una etiqueta de texto que le dice a Access qué es lo que el usuario quiere sumar, por ejemplo, si la etiqueta es "&lt;em&gt;m&lt;/em&gt;", Access entiende que se trata de meses, si se usa la etiqueta "&lt;em&gt;yyyy&lt;/em&gt;" se refiere a años, si la etiqueta es "&lt;em&gt;q&lt;/em&gt;", se calculan trimestres, para las semanas está la etiqueta "&lt;em&gt;ww&lt;/em&gt;". También está "&lt;em&gt;d&lt;/em&gt;", para operar con días.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Qué es cantidad&lt;/strong&gt;: este concepto es más sencillo, se refiere a cuantos intervalos se van a sumar o restar.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Qué es Fecha&lt;/strong&gt;: es la fecha base para realizar la suma o resta de tiempo, en las expresiones de Access, las fechas deben escribirse entre signos #, por ejemplo: &lt;em&gt;#2/1/2009#&lt;/em&gt;, el mes va ¡¡¡PRIMERO!!!, luego el día y finalmente el año (aunque las funciones que devuelven fechas lo hacen usando el formato definido por la configuración regional del sistema operativo).&lt;br/&gt;&lt;br/&gt;También se puede usar otra función que devuelva un valor de tipo fecha, como la función Date(), es decir, una función que opera dentro de otra función:&lt;br/&gt;&lt;pre&gt;=DateAdd("ww", 2, Date())&lt;/pre&gt;&lt;br/&gt;Que devuelve la fecha que será dentro de dos semanas a partir de hoy. Una función dentro otra función se resuelve antes que la función que la contiene.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Más ejemplos&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;La fecha un trimestre antes...&lt;br/&gt;&lt;pre&gt;=DateDiff("q", 1, Date())&lt;/pre&gt;&lt;br/&gt;La fecha hace dos años...&lt;br/&gt;&lt;pre&gt;=DateDiff("yyyy", 2, Date())&lt;/pre&gt;&lt;br/&gt;La fecha dentro seis meses...&lt;br/&gt;&lt;pre&gt;=DateAdd("m", 6, Date())&lt;/pre&gt;&lt;br/&gt;Recuerda, para sumar usa &lt;em&gt;DateAdd()&lt;/em&gt;, para restar &lt;em&gt;DateDiff()&lt;/em&gt;.&lt;br/&gt;&lt;br/&gt;Estas funciones tienen aplicación más allá de los valores predeterminados de los campos en las tablas, también se pueden usar en formularios, consultas, reportes y, por supuesto, en el lenguaje de programación VBA de Access.&lt;br/&gt;&lt;br/&gt;A este tema aún le falta otra parte, que explica cómo establecer fechas parcialmente dinámicas. No te lo pierdas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-2076642254129436064?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/2076642254129436064/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=2076642254129436064' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2076642254129436064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2076642254129436064'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/03/definir-la-fecha-predeterminada-de-un_10.html' title='Definir la fecha predeterminada de un campo en una tabla de Microsoft&#xA;Access, Parte 2'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-2432240232905620214</id><published>2009-03-08T08:10:00.000-06:00</published><updated>2011-09-17T16:37:27.998-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Predeterminado'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Access'/><category scheme='http://www.blogger.com/atom/ns#' term='Para usuarios de Access'/><category scheme='http://www.blogger.com/atom/ns#' term='Fecha'/><category scheme='http://www.blogger.com/atom/ns#' term='Valor'/><category scheme='http://www.blogger.com/atom/ns#' term='Date()'/><title type='text'>Definir la fecha predeterminada de un campo en una tabla de Microsoft
Access, Parte 1</title><content type='html'>Me pidió un amigo que le explique cómo hacer que ciertos campos de una tabla tengan valores predeterminados, es un buen tema para usuarios muy nuevos de Microsoft Access, y es algo muy sencillo.&lt;br/&gt;&lt;br/&gt;En esta entrada voy a mostrar un ejemplo orientado a los campos de tipo fecha. Voy a mostrar cómo establecer que el valor de un campo sea el del día que corre, y en entradas siguientes, el del día que sigue y otros casos más haciendo operaciones de suma y resta de tiempo a las fechas.&lt;br/&gt;&lt;br/&gt;&lt;a name='more'&gt;&lt;/a&gt;De las varias clases de objetos que el archivo de Access puede contener, hay dos en donde es factible implementar valores predeterminados para los campos: tablas y formularios. Se trata de los dos objetos que típicamente  están más involucrados en las tareas de captación de datos (además de los procesos de importación de datos).&lt;br/&gt;&lt;br/&gt;Los campos de tablas tiene un propiedad llamada &lt;em&gt;Valor predeterminado&lt;/em&gt;, que el usuario puede alterar con un valor, una expresión o el resultado de las diversas funciones de la librería que tiene el Visual Basic que viene con Access. Pero no hay que sudar frío, no hay que ser programador para saber sacar provecho de estas funciones (y conviene venir de vez en cuando al blog a leer estos consejos).&lt;br/&gt;&lt;br/&gt;Las propiedades del campo de una tabla se pueden alterar en la vista diseño (le decimos &lt;em&gt;propiedad&lt;/em&gt; a cada característica de un objeto que se puede alterar, por el usuario o por Access. El color de un formulario, el tipo de fuente de una etiqueta, y el valor predeterminado de un campo son buenos ejemplos de propiedades).&lt;br/&gt;&lt;br/&gt;Hay diversas formas de llegar a la &lt;em&gt;Vista diseño&lt;/em&gt; de una tabla para modificar las propiedades de sus elementos, va un ejemplo: en la ventana &lt;em&gt;Base de Datos&lt;/em&gt; (si, la que tiene todos los iconitos de todos los objetos de una base de datos), hay que tocar un objeto tabla usando el botón secundario del ratón (el contrario del que siempre se usa para tocar todo) para desplegar su menú de tareas, que le decimos &lt;em&gt;menú contextual&lt;/em&gt;, y que nos ofrece varias de las tareas que se pueden realizar sobre un objeto de clase &lt;em&gt;tabla&lt;/em&gt;. En Access 2003, la segunda opción disponible es &lt;em&gt;Vista Diseño&lt;/em&gt;, ésa es la que tiene que recibir un clic, ahora si, con el botón primario del ratón (no digo botón derecho o izquierdo porque puede variar con usuarios zurdos).&lt;br/&gt;&lt;br/&gt;En la sección superior de la ventana de la tabla en vista diseño, están los campos de una tabla, en la sección inferior están las propiedades del campo que esté seleccionado. Hay que seleccionar en la sección superior el campo con el que se va a trabajar.&lt;br/&gt;&lt;br/&gt;En la sección inferior aparecen las propiedades del campo, si tenemos seleccionado un campo, se puede predeterminar el valor que va a tener en caso de que un usuario no lo escriba, por ejemplo, cuando el campo es de tipo &lt;em&gt;Fecha/Hora&lt;/em&gt; se puede predeterminar el valor de una fecha fija, o el resultado de una función, como la que devuelve la fecha actual o alguna otra.&lt;br/&gt;&lt;br/&gt;Access tiene en su librería de funciones una que devuelve el valor de la fecha actual: &lt;em&gt;Date()&lt;/em&gt;. Al escribir &lt;em&gt;=Date()&lt;/em&gt; en la celda para &lt;em&gt;Valor predeterminado&lt;/em&gt;, se le indica a Access que escriba la fecha actual en ese campo.&lt;br/&gt;&lt;p style="text-align: center;"&gt;&lt;img class="size-full wp-image-305 aligncenter" title="dbnaut-valor-predeterminado-fecha" src="http://dbnaut.com/wp-content/uploads/2009/03/dbnaut-valor-predeterminado-fecha.png" alt="" width="500" height="384" /&gt;&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;En la imagen se muestra la propiedad &lt;em&gt;Valor predeterminado&lt;/em&gt; alterada con la función &lt;em&gt;Date()&lt;/em&gt;, Access la cambia a español en el caso de que sea su propio idioma, pero no hay que olvidar que su nombre real es &lt;em&gt;Date()&lt;/em&gt;.&lt;br/&gt;&lt;br/&gt;La próxima vez que un usuario capture datos en esta tabla, el valor predeterminado de este campo será el de la fecha del día, en caso de que no se use uno distinto. &lt;br/&gt;&lt;br/&gt;Hasta aquí por ahora, en &lt;a title="Definir la fecha predeterminada de un campo en una tabla de Microsoft Access, Parte 2" href="http://dbnaut.com/microsoft-access/definir-la-fecha-predeterminada-de-un-campo-en-una-tabla-de-microsoft-access-parte-2/" target="_self"&gt;la siguiente entrada&lt;/a&gt; voy a escribir cómo sumar y restar tiempo a la fecha para que el resultado sea el valor predeterminado de un campo de tipo &lt;em&gt;Fecha/Hora,&lt;/em&gt; y otros casos, aparte, en que se pueden aprovechar estas funciones de fecha.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-2432240232905620214?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/2432240232905620214/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=2432240232905620214' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2432240232905620214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2432240232905620214'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/03/definir-la-fecha-predeterminada-de-un_08.html' title='Definir la fecha predeterminada de un campo en una tabla de Microsoft&#xA;Access, Parte 1'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-4832948880550382760</id><published>2009-03-04T19:11:00.000-06:00</published><updated>2011-09-17T16:37:28.019-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Access'/><category scheme='http://www.blogger.com/atom/ns#' term='access'/><category scheme='http://www.blogger.com/atom/ns#' term='Grupo'/><category scheme='http://www.blogger.com/atom/ns#' term='Social'/><category scheme='http://www.blogger.com/atom/ns#' term='Odio'/><title type='text'>El grupo de usuarios que odian Microsoft Access en Facebook</title><content type='html'>Hay pocas cosas en el universo que se puedan merecer puras apreciaciones positivas (a mí no se me ocurre, de momento, alguna). Sobre todo en el contexto del software. Si alguien se ha conseguido el menosprecio en el ámbito del software propietario (o creo que ahora se dice "privativo") es Gates, su compañía Microsoft y sus productos que son muchos, costosos e invasivos.&lt;br/&gt;&lt;p style="text-align: center;"&gt;&lt;img class="size-full wp-image-270 aligncenter" title="dbnaut-hate-access" src="http://dbnaut.com/wp-content/uploads/2009/03/dbnaut-hate-access.jpg" alt="" width="181" height="236" /&gt;&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;Estaba re-visitando Facebook, en uno de esos momentos de escrutinio, a ver si le podía encontrar algo a la red social que pueda ser mutuamente benéfico, y encontré el grupo &lt;em&gt;&lt;a href="http://www.facebook.com/group.php?sid=1c85fcb4fa446a811b6f22976f0c511a&amp;amp;gid=2218156016" target="_blank"&gt;I hate Microsoft Access!&lt;/a&gt;&lt;/em&gt;. Así que he dejado para después lo del mutuamente benéfico y procedo a comentar sobre el grupo.&lt;br/&gt;&lt;br/&gt;Se trata de un grupo cuya existencia está del todo justificada. Access tiene su buena cuota de bugs, anti-usabilidad e incógnitas que pueden ser un jalón de pelos tras otro para las personas que no tienen el tiempo ni la paciencia para lidiar con una herramienta que se supone, debería ser sencilla. A mí me gusta, de ahí que le dedique en parte un blog, pero también me ha costado trabajar con la herramienta, y mucho.&lt;br/&gt;&lt;br/&gt;En el muro de mensajes del grupo se pueden encontrar enunciados como: "Positively the least intuitive and the most buggy database I have ever used", "I HATE ACCESS at the moment!", "help me!! I am need to know how to copy an old query and report, and update the year without the old report relying on the new query. I hate Access. Its wank!" ... y así por el estilo.&lt;br/&gt;&lt;br/&gt;Un caso más de &lt;em&gt;hablen mal, pero hablen de mí&lt;/em&gt;.&lt;br/&gt;&lt;br/&gt;¿Qué me queda por decir?, ¿recomendar unirse al grupo?.&lt;br/&gt;&lt;br/&gt;:p&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-4832948880550382760?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/4832948880550382760/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=4832948880550382760' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/4832948880550382760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/4832948880550382760'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/03/el-grupo-de-usuarios-que-odian.html' title='El grupo de usuarios que odian Microsoft Access en Facebook'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-8330952654736172371</id><published>2009-03-03T21:51:00.000-06:00</published><updated>2011-09-17T16:37:28.042-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite'/><category scheme='http://www.blogger.com/atom/ns#' term='Base de datos'/><category scheme='http://www.blogger.com/atom/ns#' term='Create'/><category scheme='http://www.blogger.com/atom/ns#' term='Crear'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>SQLite 3, creando una sencilla base de datos desde la línea de comando</title><content type='html'>Aquí va el breve ejercicio de introducción a SQLite 3 que le hacía falta a este blog. Por fin. Es un ejercicio pensado para los usuarios que apenas comienzan con SQLite y no implica muchos requisitos, solamente se necesita el programa de línea de comando o &lt;em&gt;command-line program&lt;/em&gt; que se puede &lt;a href="http://www.sqlite.org/download.html" target="New"&gt;bajar desde la página de descargas de SQLite.org&lt;/a&gt; (al momento de escribir esta entrada son: sqlite-3_6_11.zip para Windows, sqlite3-3.6.11-osx-x86.bin.gz en Mac, sqlite3-3.6.11.bin.gz en Linux -puede que ya lo incluya-, al paso del tiempo los valores de las versiones van a cambiar). Hay que descomprimir el programa en una carpeta o directorio, el usuario elige.&lt;br/&gt;&lt;br/&gt;Va a ser importante saber cómo convocar una ventana de terminal o de símbolo del sistema (en Windows XP solamente hay que presionar el botón &lt;em&gt;Inicio&lt;/em&gt; &amp;gt; &lt;em&gt;Ejecutar...&lt;/em&gt;, escribir &lt;em&gt;cmd&lt;/em&gt; y presionar el botón &lt;em&gt;Aceptar&lt;/em&gt;).&lt;br/&gt;&lt;br/&gt;Lo que resta es cambiar de carpetas o directorios con el comando &lt;em&gt;cd&lt;/em&gt; hasta estar en en el directorio que contiene el programa de línea de comando de SQLite 3 (o saber cómo ejecutarlo escribiendo toda la ruta de su ubicación en la máquina).&lt;br/&gt;&lt;p style="text-align: center;"&gt;***&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;El ejercicio consiste en crear un archivo de base de datos para almacenar direcciones electrónicas de sitios web favoritos. Dentro del archivo voy a crear una tabla con tres columnas o campos: id, título del website y la dirección electrónica del website. Después voy a agregar registros a la tabla. Sigo con un par de consultas a los datos y termino el ejercicio al salir del programa de línea de comando de SQLite 3.&lt;br/&gt;&lt;br/&gt;Al final se incluyen enlaces a más contenido de este mismo blog relacionado con SQLite, también a documentación oficial de SQLite y, finalmente, a otro blog dedicado a SQLite.&lt;br/&gt;&lt;br/&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Voy por pasos:&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Paso 1&lt;/strong&gt;. Iniciar la sesión indicando el nombre del archivo de base de datos desde la terminal o ventana de símbolo del sistema:&lt;br/&gt;&lt;pre&gt;sqlite3 mis_favoritos.db&lt;/pre&gt;&lt;br/&gt;Cuando el programa de línea de comando de SQLite va bien, devuelve algo como:&lt;br/&gt;&lt;pre&gt;SQLite version 3.6.11&lt;br/&gt;Enter ".help" for instructions&lt;br/&gt;Enter SQL statements terminated with a ";"&lt;/pre&gt;&lt;br/&gt;&lt;strong&gt;Paso 2&lt;/strong&gt;.  Crear la tabla de sitios web con la declaración &lt;em&gt;CREATE TABLE ... &lt;/em&gt;:&lt;br/&gt;&lt;pre lang="sql"&gt;create table sitios_web (id integer primary key, titulo text, url text);&lt;/pre&gt;&lt;br/&gt;La declaración &lt;em&gt;CREATE TABLE&lt;/em&gt; debe cerrar con punto y coma. Se trata de una tabla de tres campos, el primero, id es el campo clave, de tipo entero. SQLite se va a encargar de usar este campo como un numerador automático para cada uno de los registros que se le vayan agregando, por lo que el usuario no va a necesitar determinar los valores de este campo.&lt;br/&gt;&lt;br/&gt;Los siguientes dos campos o columnas serán para dos cadenas de texto: el título de cada sitio web y su respectiva dirección electrónica o URL.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Paso 3&lt;/strong&gt;. Agregar registros de sitios web a la tabla con la declaración &lt;em&gt;INSERT INTO ...&lt;/em&gt;:&lt;br/&gt;&lt;pre lang="sql"&gt;insert into sitios_web (titulo, url)&lt;br/&gt;values ('dbNaut', 'http://dbnaut.com');&lt;br/&gt;insert into sitios_web (titulo, url)&lt;br/&gt;values ('uBitKua', 'http://ubitkua.com');&lt;br/&gt;insert into sitios_web (titulo, url)&lt;br/&gt;values ('Identimática', 'http://identimatica.com');&lt;/pre&gt;&lt;br/&gt;Lectora, lector, claro que tú puedes cambiar los títulos y las direcciones de los sitios web. También, tú decides la cantidad de sitios web que vas a agregar.&lt;br/&gt;&lt;br/&gt;La declaración &lt;em&gt;INSERT INTO&lt;/em&gt; va seguida del nombre de la tabla, los nombres de  los campos entre paréntesis, separados por coma, la palabra &lt;em&gt;VALUES&lt;/em&gt;, es decir, valores, y le siguen los valores para cada campo, separados por coma, entre paréntesis. Los valores de tipo texto se envuelven entre comillas sencillas (los valores numéricos, que aquí no tenemos, no llevan comillas). Como ya mencioné antes, del valor del campo &lt;em&gt;id&lt;/em&gt; se encarga SQLite. Igual que con la declaración &lt;em&gt;CREATE TABLE&lt;/em&gt;, hay que cerrar con punto y coma.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Paso 4&lt;/strong&gt;. Consultar los valores de la tabla sitios_web con la declaración &lt;em&gt;SELECT ...&lt;/em&gt; :&lt;br/&gt;&lt;pre lang="sql"&gt;SELECT * FROM sitios_web;&lt;/pre&gt;&lt;br/&gt;SQLite devuelte algo como:&lt;br/&gt;&lt;pre lang="sql"&gt;1|dbNaut|http://dbnaut.com&lt;br/&gt;2|uBitKua|http://ubitkua.com&lt;br/&gt;3|Identimática|http://identimatica.com&lt;/pre&gt;&lt;br/&gt;La declaración &lt;em&gt;SELECT&lt;/em&gt; también debe cerrarse con punto y coma. Esta declaración se puede interpretar como &lt;em&gt;"Selecciona todas los campos de la tabla sitios_web"&lt;/em&gt;, siendo el asterisco (*) el que indica que se requieren todos los campos.&lt;br/&gt;&lt;br/&gt;En caso de no requerir todos los campos de la tabla, hay que escribir una lista de los campos que si se van a mostrar, como en el ejemplo que sigue, que pide con una declaración &lt;em&gt;SELECT&lt;/em&gt; los campos &lt;em&gt;id&lt;/em&gt; y &lt;em&gt;url&lt;/em&gt;:&lt;br/&gt;&lt;pre lang="sql"&gt;SELECT id, url FROM sitios_web;&lt;/pre&gt;&lt;br/&gt;Que devuelve algo como lo que sigue:&lt;br/&gt;&lt;pre lang="sql"&gt;1|http://dbnaut.com&lt;br/&gt;2|http://ubitkua.com&lt;br/&gt;3|http://identimatica.com&lt;/pre&gt;&lt;br/&gt;&lt;strong&gt;Paso 5&lt;/strong&gt;. Salir del programa de línea de comando de SQLite 3:&lt;br/&gt;&lt;pre lang="sql"&gt;.q&lt;/pre&gt;&lt;br/&gt;O puede ser:&lt;br/&gt;&lt;pre lang="sql"&gt;.e&lt;/pre&gt;&lt;br/&gt;O:&lt;br/&gt;&lt;pre lang="sql"&gt;.quit&lt;/pre&gt;&lt;br/&gt;O:&lt;br/&gt;&lt;pre lang="sql"&gt;.exit&lt;/pre&gt;&lt;br/&gt;La siguiente sesión con la base de datos se puede iniciar del mismo modo que comenzó ésta:&lt;br/&gt;&lt;pre&gt;sqlite3 mis_favoritos.db&lt;/pre&gt;&lt;br/&gt;&lt;p style="text-align: center;"&gt;***&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;Hasta aquí con el ejercicio. Va a dar pauta a otros en las siguientes entradas del blog.&lt;br/&gt;&lt;br/&gt;Por ahora, me parece conveniente compartir los siguientes enlaces:&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;&lt;a href="http://dbnaut.com/sqlite/nota-muy-simple-sobre-la-concurrencia-en-sqlite-3/"&gt;Nota muy simple sobre la concurrencia en SQLite 3&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;&lt;a href="http://dbnaut.com/sqlite/python-y-sqlite3-ejemplo-1/"&gt;Python y SQLite3, ejemplo 1&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;&lt;a href="http://dbnaut.com/sqlite/python-y-sqlite3-ejemplo-2/" target="_self"&gt;Python y SQLite3, ejemplo 2&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;&lt;a href="http://dbnaut.com/category/sqlite/"&gt;Entradas de la categoría "SQLite" en este blog&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;&lt;a href="http://dbnaut.com/sql/bases-de-datos-y-tablas-creacion-con-sql/"&gt;Bases de datos y tablas, creación con SQL&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;De la documentación oficial de SQLite: &lt;a href="http://www.sqlite.org/sqlite.html" target="_blank"&gt;A command-line access program for SQLite databases&lt;/a&gt; (en inglés)&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;&lt;a href="http://sqlite-latino.blogspot.com" target="_blank"&gt;El blog SQLite Latinoamérica&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-8330952654736172371?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/8330952654736172371/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=8330952654736172371' title='7 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/8330952654736172371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/8330952654736172371'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/03/sqlite-3-creando-una-sencilla-base-de.html' title='SQLite 3, creando una sencilla base de datos desde la línea de comando'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-9212879407127938794</id><published>2009-03-02T18:16:00.000-06:00</published><updated>2011-09-17T16:37:28.062-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBA'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Access'/><category scheme='http://www.blogger.com/atom/ns#' term='access'/><category scheme='http://www.blogger.com/atom/ns#' term='DLookup'/><category scheme='http://www.blogger.com/atom/ns#' term='visual basic'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Cómo obtener un valor de manera rápida en Microsoft Access con la
función DLookup y VBA</title><content type='html'>&lt;em&gt;Otro de los textos viejos que no han perdido vigencia, creado en Enero de 2001, es buen tema para los desarrolladores de Access y VBA de nivel básico, el título de aquel entonces era "DLookup en Microsoft Access, Obtener un valor de manera rápida en Microsoft Access".&lt;/em&gt;&lt;br/&gt;&lt;p style="text-align: center;"&gt;***&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;A veces necesitamos obtener rápidamente un determinado valor para pasarlo a un control o a una variable. Para ahorrarse el proceso de crear nuevas instancias de objetos de acceso a datos o llamar el resultado de una consulta se usa la función incorporada &lt;em&gt;DLookup&lt;/em&gt;.&lt;br/&gt;&lt;br/&gt;&lt;a name='more'&gt;&lt;/a&gt;Esta función devuelve un valor de una determinada tabla o consulta usando un criterio, su modelo es como sigue:&lt;br/&gt;&lt;pre lang="vb.net"&gt;DLookup(Campo, Tabla o consulta, [Filtro])&lt;/pre&gt;&lt;br/&gt;Que así lo muestro yo, pero que en lenguaje formal de bases de datos debería ser:&lt;br/&gt;&lt;pre lang="vb.net"&gt;DLookup(Expresión, Dominio, [Criterios])&lt;/pre&gt;&lt;br/&gt;Espero que la primera forma te sea más clara para empezar a entender la función.&lt;br/&gt;&lt;br/&gt;Por ejemplo, habiendo una tabla llamada &lt;em&gt;tCuentasContables&lt;/em&gt;, con los campos &lt;em&gt;NUMERO&lt;/em&gt; y &lt;em&gt;NOMBRE_CUENTA&lt;/em&gt;, puede darse el caso de requerir el valor del campo &lt;em&gt;NUMERO&lt;/em&gt; donde &lt;em&gt;NOMBRE_CUENTA&lt;/em&gt; sea igual a "CLIENTES", la función se usa del siguiente modo (los siguientes códigos de ejemplo se muestran divididos en líneas para ajustarse al formato de la página, en realidad deben ir continuos):&lt;br/&gt;&lt;pre lang="vb.net"&gt;CuentaClientes = DLookup("[NUMERO]", _&lt;br/&gt;&lt;br/&gt;"tCuentasContables", _&lt;br/&gt;&lt;br/&gt;"[NOMBRE_CUENTA] = 'CLIENTES'"&lt;/pre&gt;&lt;br/&gt;Es decir, la variable &lt;em&gt;CuentaClientes&lt;/em&gt; recibe el valor del campo &lt;em&gt;NUMERO&lt;/em&gt; de la tabla &lt;em&gt;tCuentasContables&lt;/em&gt; del campo &lt;em&gt;NOMBRE_CUENTA&lt;/em&gt; con un valor igual a "CLIENTES".&lt;br/&gt;&lt;br/&gt;La palabra  &lt;em&gt;CLIENTES&lt;/em&gt; aparece entre signos apóstrofes porque es una cadena dentro de otra cadena, me refiero a la cadena que forma el criterio completo, que está envuelta entre comillas, el valor que corresponde al campo &lt;em&gt;NOMBRE_CUENTA&lt;/em&gt; también es una cadena, pero VBA no soporta algo así:&lt;br/&gt;&lt;pre lang="vb.net"&gt;"[NOMBRE_CUENTA] = "CLIENTES""&lt;/pre&gt;&lt;br/&gt;Se usan entonces los apóstrofes para envolver cadenas dentro de cadenas, o también puede usarse:&lt;br/&gt;&lt;pre lang="vb.net"&gt;"[NOMBRECUENTA] = ""CLIENTES""&lt;/pre&gt;&lt;br/&gt;Dobles comillas, que le indican a Access que las comillas forman parte de la cadena a manera de texto, no de delimitador. Creo que esto quedo complejo, pero espero que el lector me indique si me expliqué mal.&lt;br/&gt;&lt;br/&gt;Cuando el criterio corresponde a un valor numérico no se usan apóstrofes:&lt;br/&gt;&lt;pre lang="vb.net"&gt;"[CANTIDAD]= 23"&lt;/pre&gt;&lt;br/&gt;Cuando son fechas se usa:&lt;br/&gt;&lt;pre lang="vb.net"&gt;"[FECHA] = #1/01/2001#"&lt;/pre&gt;&lt;br/&gt;También pueden usarse valores de controles en un formulario a manera de criterio:&lt;br/&gt;&lt;pre lang="vb.net"&gt;Dim varX As Variant&lt;br/&gt;varX = DLookup("[NombreCompañía]", _&lt;br/&gt;&lt;br/&gt;"CompañíasEnvíos", _&lt;br/&gt;&lt;br/&gt;"[IdCompañíaEnvíos] = " &amp; _&lt;br/&gt;&lt;br/&gt;Forms!CompañíasEnvíos!IdCompañíaEnvíos)&lt;/pre&gt;&lt;br/&gt;Este último ejemplo lo copié de la ayuda de Access, no se diga que todo me lo atribuyo.&lt;br/&gt;&lt;br/&gt;Hay que notar que el criterio cierra las comillas después del signo de igual:&lt;br/&gt;&lt;pre lang="vb.net"&gt;"[IdCompañíaEnvíos] = " &amp;&lt;/pre&gt;&lt;br/&gt;Luego se especifica el signo &amp;amp; cuya finalidad es unir valores de cadena, pero el nombre del control no se encierra entre comillas, porque Access asume por omisión que el valor contenido por el control &lt;em&gt;IdCompañíaEnvíos&lt;/em&gt; es una cadena. Es decir, Access "sabe" el tipo de dato mostrado en los controles de un formulario o un informe. Si se usasen comillas para envolver el nombre de un control de formulario o informe, Access buscaría ese nombre dentro de los campos de una tabla o consulta, tal como cuando busca cadenas.&lt;br/&gt;&lt;br/&gt;Otro aspecto importante es el uso de los corchetes [], que se aplican en el parámetro que corresponde al nombre del campo o expresión y el criterio o filtro mientras que el nombre de la tabla o consulta solamente se envuelven en comillas.&lt;br/&gt;&lt;br/&gt;Si comienzas a desarrollar aplicaciones en Access vas a aprovechar mucho esta función que te simplifica la forma de buscar un valor para pasarlo a una variable o control.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-9212879407127938794?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/9212879407127938794/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=9212879407127938794' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/9212879407127938794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/9212879407127938794'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/03/como-obtener-un-valor-de-manera-rapida.html' title='Cómo obtener un valor de manera rápida en Microsoft Access con la&#xA;función DLookup y VBA'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-3533860522144211338</id><published>2009-03-02T16:58:00.000-06:00</published><updated>2011-09-17T16:37:28.087-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='User DSN'/><category scheme='http://www.blogger.com/atom/ns#' term='File DSN'/><category scheme='http://www.blogger.com/atom/ns#' term='ODBC'/><category scheme='http://www.blogger.com/atom/ns#' term='Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Fuente'/><category scheme='http://www.blogger.com/atom/ns#' term='System DSN'/><category scheme='http://www.blogger.com/atom/ns#' term='Orígen'/><category scheme='http://www.blogger.com/atom/ns#' term='Open DataBase Conectivity'/><category scheme='http://www.blogger.com/atom/ns#' term='ODBC Drivers'/><category scheme='http://www.blogger.com/atom/ns#' term='Data'/><category scheme='http://www.blogger.com/atom/ns#' term='Datos'/><title type='text'>ODBC, Creación de orígenes de datos</title><content type='html'>&lt;em&gt;No me lo termino de creer, el siguiente texto tiene ya 10 años, originalmente lo había publicado en un website lleno de anuncios en &lt;a title="Viejo domicilio de este artículo" href="http://skyscraper.fortunecity.com/rofl/434/articulos/odbc/odbc.htm" target="_blank"&gt;FortuneCity&lt;/a&gt; y luego lo mudé a mi sección personal del finado website isatid.net (ahora sé que el nombre de dominio lo usa con oportunidad otra compañía más dada a la publicidad web). &lt;/em&gt;&lt;br/&gt;&lt;br/&gt;&lt;em&gt;Por lo que parece, el contenido de este viejo artículo todavía provoca interés. &lt;/em&gt;&lt;br/&gt;&lt;br/&gt;&lt;em&gt;El tono del texto es mucho más holgado que el que actualmente uso, y no me queda claro si algo favorable se ha perdido con los años.&lt;/em&gt;&lt;br/&gt;&lt;br/&gt;&lt;em&gt;Mi primera intención fue "tocarlo" tanto como conviniera para adaptarlo al contexto actual, pero lo reflexioné, me parece justo que siga siendo como siempre. Así que, lector, vas a ver cómo era mi contenido cuando Access 97 y Windows 98 estaban en sus tiempos (¿o será Windows NT ... 2000?). Además, en lo esencial, ODBC no ha cambiado gran cosa.&lt;/em&gt;&lt;br/&gt;&lt;br/&gt;&lt;em&gt;Retomar el tema de ODBC, que sigue muy vigente,  bien ha de servir&lt;/em&gt;&lt;em&gt; como puente entre el contenido del viejo isatid.net, ya a la deriva y este nuevo emprendimiento, dbNaut.com.&lt;/em&gt;&lt;br/&gt;&lt;br/&gt;&lt;em&gt;Bueno, aquí va.&lt;/em&gt;&lt;br/&gt;&lt;p style="text-align: center;"&gt;***&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;ODBC es un intermediario entre bases de datos y aplicaciones, cuya tarea es sostener una conversación de preguntas y respuestas entre dos "sujetos" que no hablan el mismo idioma y que gestionan sus recursos de forma diferente. Bueno, estoy abstrayendo un tanto un concepto muy tecnificado, pero cuento con que habrá usuarios finales leyendo esto, que no necesitan envolverse en la jerga de los programadores y sus semejantes. Concretando, tu puedes tener un CAD, una hoja de calculo, un editor de texto, etc..., cuyas finalidades son las que tu quieras menos gestionar datos en la forma que lo hace un sistema de base de datos; estas aplicaciones no saben como se obtienen y se guardan datos en, por ejemplo, un archivo MDB de Microsoft Access, o en un DBF, o en SQL Server, o en algún otro. Por otra parte, pero en lo mismo, que tal si un usuario de Paradox quiere extraer información de SQL Pato, un nuevo sistema de lo más avanzado que nadie conoce pero que alguien uso para guardar información que resulta necesaria (no sabes cuántas veces sucede), ambos son sistemas de bases de datos, Paradox conoce la forma de leer los archivos de los sistemas conocidos, pero no los de SQL Pato.&lt;br/&gt;&lt;br/&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;En el ambiente Windows, Microsoft creó la tecnología ODBC pensando en este problema. No es una solución de la comunidad informática del orbe, es de Microsoft, y por eso se basa en los impulsos estomacales del corazón de Microsoft; quiero decir que no estoy recomendando esta tecnología, sino que digo que mientras sea en Windows, hay que usarla cuando no hay algo mejor, punto. ODBC es un armatoste que alberga controladores. El armatoste sirve para gestionar los controladores, y los controladores son los que saben "hablar" con las bases de datos. Entonces el "acuerdo" entre Microsoft y los fabricantes de software para Windows fue: "Ustedes, que hacen software no específico para bases de datos, enseñen, si quieren, a sus aplicaciones a comunicarse con el armatoste llamado ODBC; y ustedes, fabricantes de bases de datos, hagan controladores de sus sistemas para ponerlos en el armatoste, si quieren que otras aplicaciones puedan accesar su información".&lt;br/&gt;&lt;br/&gt;Listo, mas o menos. Es así que Excel puede leer una base de datos en Access o SQL Server, incluso SQL Pato (si es que alguien fabricó un controlador de ODBC). Pero te voy a ser sincero, esas no son todas las razones ni los intereses por los que ODBC fue implementado, hay cierta oscuridad por ahí, por lo menos para los que no andan en el negocio del desarrollo de software; el asunto es que para la finalidad de este articulo, hasta ahí voy a dejar la narración de los antecedentes de ODBC y voy a pasar a lo nuestro, ¿cómo se usa?.&lt;br/&gt;&lt;br/&gt;En ODBC no se tiene que hacer gran cosa, es una simple tarea, se llama crear un origen de datos, otros le denominan fuente en vez de origen, pero ya lo sabes ahora. Un origen o fuente de datos consiste en el nombre, el controlador y la base de datos. Por ejemplo, si un usuario quiere tener acceso a una base de datos de Access, digamos que se llama Negocio.mdb,   desde una hoja de cálculo de Excel para consultar su volumen de ventas por país, este usuario crea un nuevo origen de datos en ODBC llamado Volumen_Ventas (este es, pues, el nombre), después  selecciona un controlador para Microsoft Access e indica el archivo de base de datos está en "c:\LaEmpresa\Administración\Negocio.mdb". Eso es básicamente de lo que se trata.&lt;br/&gt;&lt;br/&gt;Ahora vamos a verlo gráficamente. Soy usuario de una aplicación que se llama MicroStation Geographics que usa bases de datos externas para crear mapas, esta aplicación trabaja directamente con Oracle, Informix, Dbase y algún otro, pero mi intención es tener una conexión con una base de datos de Microsoft Access, porque es fácil para hacer prototipos e incluso aplicaciones terminadas que no son muy grandes; MicroStation Geographics no trabaja directamente con Access, pero puede entenderse con él usando ODBC de por medio. Necesito crear un origen de datos en ODBC para que MicroStation Geographics sepa a qué base de datos me refiero cuando le solicite información.&lt;br/&gt;&lt;br/&gt;Primero vamos a buscar a ODBC, que está en el Panel de Control.&lt;br/&gt;&lt;p style="text-align: center;"&gt;&lt;img class="size-full wp-image-192 aligncenter" title="ODBC invocado desde el botón Inicio de Windows" src="http://dbnaut.com/wp-content/uploads/2009/03/panel.gif" alt="" width="355" height="187" /&gt;&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;Las aplicaciones creadas específicamente para Windows 95, 98 y NT usan el ODBC de 32 bits; pero algunos sistemas conservan un ODBC de 16 bits para las aplicaciones de legado que corrían o corren en Windows 3.11.&lt;br/&gt;&lt;p style="text-align: center;"&gt;&lt;img class="size-full wp-image-194 aligncenter" title="Icono de ODBC de 32 bits" src="http://dbnaut.com/wp-content/uploads/2009/03/icono.gif" alt="" width="256" height="59" /&gt;&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;Bueno, y ahora, ante tí, ¡el armatoste!. ¡El famoso &lt;em&gt;Data Source Administrator&lt;/em&gt; del &lt;em&gt;Open DataBase Conectivity&lt;/em&gt;, u ODBC. Lo que sigue es crear una fuente u origen de datos, pero antes unas explicaciones:&lt;br/&gt;&lt;p style="text-align: center;"&gt;&lt;img class="size-full wp-image-195 aligncenter" title="Data Source Administrator" src="http://dbnaut.com/wp-content/uploads/2009/03/armatos.gif" alt="" width="241" height="200" /&gt;&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;Vas a notar que las primeras tres solapas se refieren a &lt;em&gt;User DSN&lt;/em&gt;, &lt;em&gt;System DSN&lt;/em&gt; y &lt;em&gt;File DSN&lt;/em&gt;. Perdón, pero tengo la versión en inglés, voy a traducir un poco:&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;User DSN&lt;/strong&gt;, nombre del origen de datos para el usuario. A veces, una máquina es utilizada por más de un usuario (espero que a ti no te pase que compartes tu computadora porque la empresa donde trabajas es tan espléndida que gratifica a sus computadoras con más de un usuario), los orígenes de datos declarados aquí son exclusivos del usuario.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;System DSN&lt;/strong&gt;, nombre del origen de datos para el sistema. Todos los usuarios de la máquina tienen acceso a estos orígenes de datos.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;User DSN&lt;/strong&gt;, nombre del origen de datos en archivo. Se crea un archivo con la extensión DSN, que sirve como origen de datos y puede ser distribuido a otros usuarios. Este origen es el que usa Excel por omisión cuando hace consultas, cuidado con eso.&lt;br/&gt;&lt;br/&gt;Está otra solapa importante que es &lt;em&gt;ODBC Drivers&lt;/em&gt; o &lt;em&gt;Controladores ODBC&lt;/em&gt;. Aquí se ven todos los controladores disponibles en la máquina. De está forma puedes consultar si dispones del controlador que necesitas y si es la versión conveniente. Regularmente los controladores de bases de datos vienen con un programa SETUP que los instala y quedan dados de alta en esta lista.&lt;br/&gt;&lt;br/&gt;Las otras solapas merecen artículos aparte pues sirven más a los administradores y desarrolladores de sistemas. Para el fin de crear un origen de datos, con lo que hemos visto tenemos. Lo siguiente:&lt;br/&gt;&lt;br/&gt;Seleccionar la solapa de DSN, nombre de origen de datos, que mejor se ajuste a mis requerimientos. MicroStation Geographics no da muestras de trabajar con archivos DSN, pero si con orígenes de usuario y de sistema, no seamos envidiosos así que, seleccionamos la solapa &lt;em&gt;System DSN&lt;/em&gt;, nombre de origen de datos del sistema y presionamos el botón &lt;em&gt;Add&lt;/em&gt;..., o &lt;em&gt;Agregar:&lt;/em&gt;&lt;br/&gt;&lt;p style="text-align: center;"&gt;&lt;img class="size-full wp-image-197 aligncenter" title="ODBC Add" src="http://dbnaut.com/wp-content/uploads/2009/03/solap.gif" alt="" width="201" height="72" /&gt;&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;Luego señalamos el controlador o driver del tipo de base de datos que queremos accesar: &lt;em&gt;Microsoft Access Driver&lt;/em&gt; (o controlador, en la versión en español) y presionamos &lt;em&gt;Finalizar&lt;/em&gt;; pero fíjate que todavía no acabamos, eso de Finalizar es algo que.. ni hablar.&lt;br/&gt;&lt;p style="text-align: center;"&gt;&lt;img class="alignnone size-full wp-image-200" title="ODBC Driver" src="http://dbnaut.com/wp-content/uploads/2009/03/driver.gif" alt="" width="428" height="153" /&gt;&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;Lo que tenemos ahora bautizar al nuevo origen de datos con un nombre peculiar y distintivo, como estamos creando un origen de datos para una base de datos que se llama &lt;em&gt;MyTown.mdb&lt;/em&gt; pues le llamo &lt;em&gt;MiPueblo&lt;/em&gt; y le damos una descripción (que en realidad no es necesaria).&lt;br/&gt;&lt;p style="text-align: center;"&gt;&lt;img class="size-full wp-image-199 aligncenter" title="Seleccionar mdb" src="http://dbnaut.com/wp-content/uploads/2009/03/buscar.gif" alt="" width="360" height="306" /&gt;&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;Eso es todo, ahora solamente se debe cerrar el administrador de ODBC presionado el botón Aceptar. Tenemos un origen de datos nuevo que le será útil a aplicaciones que de otra forma no podrían leer una base de datos Access.&lt;br/&gt;&lt;br/&gt;Una recomendación, cuando quieras un origen de datos ODBC para usarlo con Excel, créalo en la solapa de &lt;em&gt;File DSN&lt;/em&gt; o &lt;em&gt;Archivo DSN&lt;/em&gt;. También puedes contar con que Excel tiene un asistente que te ayuda a crear el origen de datos dentro de Excel (te requiere el programa &lt;em&gt;Microsoft Query&lt;/em&gt; instalado en tu máquina).&lt;br/&gt;&lt;br/&gt;El controlador de ODBC de Microsoft Access se puede instalar, si es que no lo tienes, desde el CD de Office o de Access sí lo tienes como versión independiente.&lt;br/&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;Actualización: &lt;/strong&gt;También lo puedes &lt;a title="Microsoft Data Access Components (MDAC) 2.8" href="http://www.microsoft.com/downloadS/details.aspx?displaylang=es&amp;amp;FamilyID=6c050fe3-c795-4b7d-b037-185d0506396c" target="_blank"&gt;descargar&lt;/a&gt; con el conjunto de Microsoft Data Access Components (MDAC) 2.8, la única condición es que tu Windows sea legítimo.&lt;/em&gt;&lt;br/&gt;&lt;p style="text-align: center;"&gt;***&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;Para más información y recursos respecto a ODBC puedes visitar la documentación oficial de Microsoft siguiendo &lt;a title="ODBC en MSDN" href="http://msdn.microsoft.com/en-us/library/ms710252(VS.85).aspx" target="_blank"&gt;esta liga &amp;gt;&amp;gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Es un sitio útil cuando tienes paciencia, sabes inglés y si de verdad lo necesitas. Para serte sincero, Microsoft ha estado sacando tantas especificaciones para accesar datos, que los desarrolladores nos la pasamos más tiempo aprendiendo a migrar programas de una especificación a otra que aprendiendo las especificaciones en sí. Un día nos van a perder (&lt;em&gt;ingenuo de mí, esto lo escribí hace diez años&lt;/em&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-3533860522144211338?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/3533860522144211338/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=3533860522144211338' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/3533860522144211338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/3533860522144211338'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/03/odbc-creacion-de-origenes-de-datos.html' title='ODBC, Creación de orígenes de datos'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-8793197948146845944</id><published>2009-03-02T12:32:00.000-06:00</published><updated>2011-09-17T16:37:28.127-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='controles'/><category scheme='http://www.blogger.com/atom/ns#' term='VBA'/><category scheme='http://www.blogger.com/atom/ns#' term='Requery'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Access'/><category scheme='http://www.blogger.com/atom/ns#' term='Cómo'/><category scheme='http://www.blogger.com/atom/ns#' term='control'/><category scheme='http://www.blogger.com/atom/ns#' term='access'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Actualizar'/><category scheme='http://www.blogger.com/atom/ns#' term='Cuadro combinado'/><category scheme='http://www.blogger.com/atom/ns#' term='formulario'/><title type='text'>Cómo actualizar los valores de un control de lista o cuadro combinado
en Access con VBA</title><content type='html'>&lt;em&gt;Un buen tip, pero se requiere que el lector esté familiarizado con la creación de formularios, entrar al modo diseño de un formulario y agregar un poco de código VBA a cualquiera de los eventos de los controles sobre el formulario.&lt;/em&gt;&lt;br/&gt;&lt;br/&gt;Los cuadros de lista o los cuadros combinados se usan, con mucha frecuencia, para mostrar valores provenientes de otras tablas, por ejemplo, en un sistema comercial, es común encontrar en un formulario de productos un cuadro combinado para asignar la categoría a un producto, como en la ilustración siguiente:&lt;br/&gt;&lt;p style="text-align: center;"&gt;&lt;img class="size-full wp-image-177 aligncenter" title="dbnaut-como-actualizar-los-valores-de-un-control-de-lista-o-cuadro-combinado-en-access-con-vba" src="http://dbnaut.com/wp-content/uploads/2009/03/dbnaut-como-actualizar-los-valores-de-un-control-de-lista-o-cuadro-combinado-en-access-con-vba.jpg" alt="" width="493" height="269" /&gt;&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Cuando la categoría que se requiere aún no existe en el catálogo, se debe proveer al usuario un mecanismo para agregarla sobre la marcha.&lt;br/&gt;&lt;br/&gt;Una solución que se ajusta al ejemplo que he comentado se compone de al menos cuatro elementos: la tabla de &lt;em&gt;Productos&lt;/em&gt;, la tabla de &lt;em&gt;Categorías&lt;/em&gt;, y sus formularios respectivos. Lo habitual es que ambas tablas se relacionen con un campo de tipo numérico entero largo, cuando se le deja a Access crear las tablas con asistentes, el nombre común para tal campo es &lt;em&gt;IdCategoría&lt;/em&gt;.&lt;br/&gt;&lt;br/&gt;Cuando el usuario encuentra que la categoría del producto que está agregando aún no existe, lo típico es que el usuario haga doble clic sobre el cuadro combinado para invocar al formulario de categorías, ahí el usuario escribe la nueva categoría, la guarda y regresa al formulario de productos para asociar la categoría con el producto. En soluciones creadas sin el asistente de Access es recurrente que se presente el problema de que el cuadro combinado aún no muestra la categoría recientemente agregada.&lt;br/&gt;&lt;br/&gt;Una buena opción para resolverlo es agregando un poco de código VBA, como el que sigue, al evento &lt;em&gt;Al hacer doble clic&lt;/em&gt; del cuadro combinado &lt;em&gt;idCategoría&lt;/em&gt; en el formulario de &lt;em&gt;Productos&lt;/em&gt;:&lt;br/&gt;&lt;pre lang="vb.net"&gt;Private Sub IdCategoría_DblClick(Cancel As Integer)&lt;br/&gt;    ' Abrir el formulario Categorías&lt;br/&gt;    ' cuando el usuario hace doble clic en IdCategoría&lt;br/&gt;    DoCmd.OpenForm "Categorías", , , , acFormAdd, acDialog&lt;br/&gt;&lt;br/&gt;    ' Luego, se actualizan los valores del cuadro combinado&lt;br/&gt;    ' para reflejar todas las categorías agregadas por el usuario&lt;br/&gt;    Me![IdCategoría].Requery&lt;br/&gt;&lt;br/&gt;End Sub&lt;/pre&gt;&lt;br/&gt;EL método &lt;em&gt;Requery&lt;/em&gt; se encarga de que los valores mostrados por el cuadro combinado &lt;em&gt;IdCategoría&lt;/em&gt; sean todos los que hay en la tabla &lt;em&gt;Categorías&lt;/em&gt;.&lt;br/&gt;&lt;br/&gt;Hay dos líneas de códigos que hacen el trabajo (4 y 8), y son transportables a otros proyectos, solamente hay que cambiar los nombres del formulario &lt;em&gt;Categorías&lt;/em&gt; y del cuadro combinado &lt;em&gt;IdCategoría&lt;/em&gt;.&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.dbnaut.com/examples/dbnaut-cuadro-combinado-actualizado.zip"&gt;&lt;img class="alignnone size-full wp-image-186" title="dbnaut-descarga" src="http://dbnaut.com/wp-content/uploads/2009/03/dbnaut-descarga.png" alt="Descarga el ejemplo para Microsoft Access" width="115" height="85" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-8793197948146845944?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/8793197948146845944/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=8793197948146845944' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/8793197948146845944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/8793197948146845944'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/03/como-actualizar-los-valores-de-un.html' title='Cómo actualizar los valores de un control de lista o cuadro combinado&#xA;en Access con VBA'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-4726764421703962863</id><published>2009-02-27T10:21:00.000-06:00</published><updated>2011-03-31T00:45:13.301-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='la antigüedad'/><category scheme='http://www.blogger.com/atom/ns#' term='tecnología'/><title type='text'>Yo estuve ahí, en aquel entonces, cuando Digital hacía sus últimas PCs, Borland vendía una suite de oficina y AltaVista era el buscador</title><content type='html'>&lt;div&gt;Yo tenía una PC fabricada por Digital, la compañía que luego fue comprada por Compaq y ésta a su vez por HP. Era la segunda PC que me había comprado en la vida, me gustaba mucho y hasta la fecha no le tomé tanto cariño a otra.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Venía con MS DOS y Windows 3, me parecía una belleza de diseño delgado, muy estable. Era una Venturis, tal como la más reducida de tamaño en la foto:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_7_VQOtarKUI/SagpQmUfnkI/AAAAAAAAAJk/EM_Onq-39tQ/s1600-h/codigo-elusivo-digital-venturis.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5307537525997280834" src="http://4.bp.blogspot.com/_7_VQOtarKUI/SagpQmUfnkI/AAAAAAAAAJk/EM_Onq-39tQ/s400/codigo-elusivo-digital-venturis.jpg" style="cursor: hand; cursor: pointer; display: block; height: 135px; margin: 0px auto 10px; text-align: center; width: 150px;" /&gt;&lt;/a&gt;&lt;br /&gt;Así como algunos chavos de entonces gustaban de marcas de ropa como Nike, Fila, Aca (si, no miento), yo decidí darle mi fidelidad al logo de DEC. En aquel entonces el logo de la compañía era este:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_7_VQOtarKUI/SagXA5kZQyI/AAAAAAAAAJU/RfHDK4_lyF0/s1600-h/codigo-elusivo-Digital_Equipment_Corporation_1993_logo.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5307517465077039906" src="http://3.bp.blogspot.com/_7_VQOtarKUI/SagXA5kZQyI/AAAAAAAAAJU/RfHDK4_lyF0/s400/codigo-elusivo-Digital_Equipment_Corporation_1993_logo.png" style="cursor: hand; cursor: pointer; display: block; height: 60px; margin: 0px auto 10px; text-align: center; width: 191px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;La Venturis no tenía lector de CD ROM, y se lo agregué en una de mis primeras intervenciones mecánicas a una computadora (digo, nunca había instalado algo dentro de una máquina aparte de memoria RAM).&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Me encontré una foto en la red de una Venturis igual:&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_7_VQOtarKUI/Sagopa7r-ZI/AAAAAAAAAJc/yxJSGOi-jhs/s1600-h/codigo-elusivo-digital-venturis-frente.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5307536852925544850" src="http://3.bp.blogspot.com/_7_VQOtarKUI/Sagopa7r-ZI/AAAAAAAAAJc/yxJSGOi-jhs/s320/codigo-elusivo-digital-venturis-frente.jpg" style="cursor: hand; cursor: pointer; display: block; height: 166px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Usaba la PC para diseño asistido con MicroStation y para programar con Visual Basic... también para abandonar el viejo dBASE que instalaba por costumbre pero nunca lo usaba.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Debí vender la Venturis alrededor del año 2000 cuando comenzó a presentar una falla en la conexión del monitor y yo necesitaba más espacio para los equipos que vinieron después. Te sugiero que no vendas tus computadoras preciadas, ahora la estaría usando con algún Linux leve y yo no estaría sintiendo que la desperdicié. Todos los demás objetos de la vida conviene que no se acumulen y que se vayan, pero no las PCs preciadas.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Mi suite de oficina era de Borland. Si, Borland liberó una suite de oficina para Windows, consistía de Paradox, Quattro Pro, y WordPerfect, no tenía software para presentaciones. Eran tres cajas enormes repletas de libros y unos sobres con diskettes de instalación, que compré aparte, antes de la Venturis.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Años después de comprar la Venturis, sabiendo que la tecnología de Digital estaba apoyando al buscador AltaVista, lo prefería antes que Yahoo. El logo de AltaVista lucía así:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_7_VQOtarKUI/SagUwcc-UkI/AAAAAAAAAJM/BjlIGdZV-nM/s1600-h/codigo-elusivo-Altavista-logo.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5307514983360123458" src="http://2.bp.blogspot.com/_7_VQOtarKUI/SagUwcc-UkI/AAAAAAAAAJM/BjlIGdZV-nM/s400/codigo-elusivo-Altavista-logo.png" style="cursor: hand; cursor: pointer; display: block; height: 54px; margin: 0px auto 10px; text-align: center; width: 150px;" /&gt;&lt;/a&gt;&lt;/div&gt;Así que aprovecho ahora, para dejar constancia de que yo estuve ahi, cuando AltaVista era el bueno, Digital hacía sus últimas buenas PCs y Borland vendía una suite de oficina.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Referencias:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.decitaly.org/museo/docs/dechistory.htm" target="New"&gt;Encontré la historia de Digital muy breve&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/AltaVista" target="New"&gt;La Wikipedia tiene lo suyo respecto a AltaVista&lt;/a&gt;, conviene más la versión en inglés.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-4726764421703962863?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/4726764421703962863/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=4726764421703962863' title='6 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/4726764421703962863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/4726764421703962863'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/02/yo-estuve-ahi-en-aquel-entonces-cuando.html' title='Yo estuve ahí, en aquel entonces, cuando Digital hacía sus últimas PCs, Borland vendía una suite de oficina y AltaVista era el buscador'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7_VQOtarKUI/SagpQmUfnkI/AAAAAAAAAJk/EM_Onq-39tQ/s72-c/codigo-elusivo-digital-venturis.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-9142056947349800828</id><published>2009-02-13T12:01:00.000-06:00</published><updated>2009-02-27T09:38:44.754-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pilas'/><title type='text'>Ya que usamos tantas pilas, un lectura pertinente, de Mundo Geek, recomendada por Obsoletos</title><content type='html'>Precisamente ayer, mi esposa estaba preguntando el costo de pilas recargables en RadioShack y en otra tienda, no son baratas, pero parece que valen el precio según se puede leer:&lt;br /&gt;&lt;br /&gt;Hago eco a &lt;a target="New" href="http://www.obsoletos.org/2009/02/cargadores-y-pilas-recargables/"&gt;Obsoletos.org&lt;/a&gt;, que ha encontrado un interesante &lt;a target="New" href="http://mundogeek.net/archivos/2009/01/28/pilas-y-cargadores/"&gt;artículo sobre pilas en Mundo Geek&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-9142056947349800828?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/9142056947349800828/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=9142056947349800828' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/9142056947349800828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/9142056947349800828'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/02/ya-que-usamos-tantas-pilas-un-lectura.html' title='Ya que usamos tantas pilas, un lectura pertinente, de Mundo Geek, recomendada por Obsoletos'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-3669440952537359751</id><published>2009-02-08T08:07:00.000-06:00</published><updated>2009-02-08T08:13:45.739-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>La guía de Poromenos para aprender Python en 10 minutos</title><content type='html'>En Poromenos.org, el autor del blog ha publicado una guía para &lt;a target="New" href="http://www.poromenos.org/tutorials/python"&gt;aprender Python&lt;/a&gt;, el gancho, dice, es que se lleva unos 10 minutos. Pero, hay que tener cierta noción sobre programación de software para que sea sencillo de leer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-3669440952537359751?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/3669440952537359751/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=3669440952537359751' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/3669440952537359751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/3669440952537359751'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/02/la-guia-de-poromeno-para-aprender.html' title='La guía de Poromenos para aprender Python en 10 minutos'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-5821671849433311505</id><published>2009-02-02T14:21:00.000-06:00</published><updated>2009-02-02T15:17:31.719-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='verde'/><category scheme='http://www.blogger.com/atom/ns#' term='pocos recursos'/><title type='text'>Me encontré la Ecofont que es una fuente para ahorrar un 20% de tinta en cada impresión</title><content type='html'>&lt;p&gt;Encontré &lt;a target="New" href="http://www.sostenible.cat/sostenible/web/noticies/sos_noticies_web.php?cod_idioma=2&amp;amp;seccio=9&amp;amp;num_noticia=23"&gt;una nota&lt;/a&gt; que habla sobre la fuente &lt;a target="New" href="http://www.ecofont.eu/"&gt;Ecofont&lt;/a&gt;, una aportación  de &lt;a target="New" href="http://www.spranq.nl/en/"&gt;Sprant&lt;/a&gt;, cuya meta es el ahorro de tinta. Hay para Windows, Linux y Mac. &lt;/p&gt;&lt;p&gt;Econfont es de código abierto  (¿éso se puede?).&lt;/p&gt;&lt;p&gt;Oohh, ¿será verdad?. Yo siempre evito imprimir, pero la voy a instalar en Xubuntu y en Windows XP y voy a aprovecharla como fuente predeterminada en algunos documentos para ver cómo va el asunto.&lt;/p&gt;&lt;p&gt;Parece que el truco consiste en "perforar" a lo largo de los carácteres de una Vera Sans, por supuesto, las perforaciones son espacios que no van a ocupar tinta. A mí se me antoja una fuente con el efecto contrario, basada en puntos, pero con carácteres más cuadrados, lo malo es que no sé cómo crear fuentes, aún.&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ecofont.eu/assets/templates/spranq/img/splash_engels.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 350px; height: 300px;" src="http://www.ecofont.eu/assets/templates/spranq/img/splash_engels.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;El color del logo muy ad hoc, pero parecen unos labios verdes (¿será intencional?). Según yo,  con un poco de inclinación, la figura podría transmitir mejor la idea de una pluma antigua de escritura, ¿no?.&lt;/p&gt;&lt;p&gt;Bueno, ya le hice eco a la nota sobre la fuente ahorradora de tinta, espero que sea cierto. De cualquier modo, imprimir lo menos es mejor.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-5821671849433311505?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/5821671849433311505/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=5821671849433311505' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/5821671849433311505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/5821671849433311505'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/02/me-encontre-la-ecofont-que-es-una.html' title='Me encontré la Ecofont que es una fuente para ahorrar un 20% de tinta en cada impresión'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-1633171692353689407</id><published>2009-01-29T21:19:00.000-06:00</published><updated>2009-01-29T22:35:51.364-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>Chris Coyier comenta que detectar el navegador es malo</title><content type='html'>&lt;p&gt;Ya que va en contra del espíritu de los estándares web, entre otras cosas.&lt;/p&gt;&lt;p&gt;Estoy tentado a estar de acuerdo con él. Sugiero &lt;a target="New" href="http://css-tricks.com/browser-detection-is-bad/"&gt;la lectura.&lt;/a&gt;&lt;/p&gt;&lt;p align="center"&gt;***&lt;/p&gt;&lt;p&gt;Aparte de &lt;a target="New" href="http://css-tricks.com"&gt;CSS Tricks&lt;/a&gt;, Chris Coyier también tiene &lt;a target="New" href="http://chriscoyier.net/"&gt;un blog&lt;/a&gt; personal.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-1633171692353689407?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/1633171692353689407/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=1633171692353689407' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/1633171692353689407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/1633171692353689407'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/01/chris-coyier-comenta-que-detectar-el.html' title='Chris Coyier comenta que detectar el navegador es malo'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-2114527189885363438</id><published>2009-01-28T08:29:00.000-06:00</published><updated>2009-01-28T09:55:56.518-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='universidad'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><category scheme='http://www.blogger.com/atom/ns#' term='educación'/><title type='text'>De los lenguajes de programación que se enseñan en la educación superior</title><content type='html'>&lt;p&gt;Soy lector frecuente del &lt;a target="New" href="http://thinkingdigitally.com/"&gt;blog de Rob Olson&lt;/a&gt;. Ayer ha tocado un tema que está bueno para encontrarle pros y contras (aunque yo no voy a hacer polémica, principalmente porque coincido en parte con él). &lt;/p&gt;&lt;p&gt;Dice Rob que en las universidades norteamericanas, en Computer Science, como consecuencia de que cuando se aprendía C o C++ los alumnos batallaban más con aspectos difíciles del lenguaje, como los apuntadores, que con conceptos fundamentales de programación, fue que se adoptó a Java en las academias porque no tiene tantas complicaciones (falta saber si esto es general o solamente ciertas universidades lo hacen).&lt;/p&gt;&lt;p&gt;Pero para Rob Olson, Java no es el bueno, en cambio propone a Python para enseñar en universidades. Dice que vale la pena sacrificar cosas como tipos estáticos, la compilación y el desempeño en favor de la ejecución por intérprete, tipos dinámicos y más que nada, la simplicidad. Olson argumenta que la consecuencia de cambiar a un lenguaje interpretado dinámicamente sería que más estudiantes se sentirían más motivados a producir código para algo más que sus tareas escolares.&lt;/p&gt;&lt;p&gt;Olson &lt;a target="New" href="http://thinkingdigitally.com/archive/the-case-for-replacing-java-with-python-in-education/"&gt;comenta en su blog&lt;/a&gt; por qué piensa que Python es mejor opción que Java. El tema me provoca interés y me da lugar a hacer un contraste recordando que en la UNAM, acá en México, si bien Java se a colado para el trabajo cotidiano en &lt;a target="New" href="http://www.dgsca.unam.mx/"&gt;DGSCA&lt;/a&gt; casi desde que el lenguaje nació, en la licenciatura en Informática (que no es lo mismo que Computer Science) todavía se empieza con Pascal y C en la asignatura de introducción a la programación. En lo personal, me gustaría que el lenguaje de introducción fuera Python o Ruby, y de ahí pasar a C o C++ en asignaturas más avanzadas, no me parece que deban descartarse, sino atender los aspectos y casos de uso en los que estos lenguajes son más apropiados. Coincido un tanto con Olson, me parece que el bloqueo que muchos alumnos presentan ante la programación puede aminorarse yendo desde "suave" a "duro". Voy a indagar con los amigos de ingeniería a ver cómo pintan las cosas en sus rumbos.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-2114527189885363438?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/2114527189885363438/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=2114527189885363438' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2114527189885363438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2114527189885363438'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/01/de-los-lenguajes-de-programacion-que-se.html' title='De los lenguajes de programación que se enseñan en la educación superior'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-8273181260202807464</id><published>2009-01-28T05:46:00.000-06:00</published><updated>2009-01-28T06:06:26.495-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='otros blogs'/><category scheme='http://www.blogger.com/atom/ns#' term='Vim'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>El buen website de Swaroop C H, tiene un libro sobre Python y otro sobre Vim</title><content type='html'>&lt;p&gt;Encontré el &lt;a target="New" href="http://www.swaroopch.com/"&gt;website de Swaroop C H&lt;/a&gt;, de la India, quien tiene dos libros (en inglés):&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a target="New" href="http://www.swaroopch.com/notes/Python"&gt;A Byte of Python&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="New" href="http://www.swaroopch.com/notes/Vim"&gt;A Byte of Vim&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;El &lt;a target="New" href="http://www.swaroopch.com/"&gt;website de Swaroop&lt;/a&gt; me ha parecido de lo más agradable y aporta buen contenido, por lo que me resulta pertinente incluirlo en esta bitácora.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7_VQOtarKUI/SYBJCPZhJoI/AAAAAAAAAHw/Ekex64dqAFY/s1600-h/codigo-elusivo-swaroop-c-h-28ene2009.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 294px;" src="http://4.bp.blogspot.com/_7_VQOtarKUI/SYBJCPZhJoI/AAAAAAAAAHw/Ekex64dqAFY/s320/codigo-elusivo-swaroop-c-h-28ene2009.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5296313464629831298" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-8273181260202807464?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/8273181260202807464/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=8273181260202807464' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/8273181260202807464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/8273181260202807464'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/01/el-buen-website-de-swaroop-c-h-tiene-un.html' title='El buen website de Swaroop C H, tiene un libro sobre Python y otro sobre Vim'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7_VQOtarKUI/SYBJCPZhJoI/AAAAAAAAAHw/Ekex64dqAFY/s72-c/codigo-elusivo-swaroop-c-h-28ene2009.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-8233569687952164265</id><published>2009-01-28T04:43:00.000-06:00</published><updated>2009-01-28T05:41:50.539-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aprender a programar en C'/><category scheme='http://www.blogger.com/atom/ns#' term='Lenguaje C'/><title type='text'>Algunos recursos sin costo en línea sobre C según ISO-9899</title><content type='html'>&lt;p&gt;Me encontré el sitio web ISO-9899 que tiene enlaces a algunos libros y otros recursos (en inglés) sin costo para aprender a programar en C:&lt;/p&gt;&lt;p&gt;&lt;a target="New" href="http://www.iso-9899.info/wiki/Books"&gt;Enlace a ISO-9899 &gt;&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Es curioso, recomiendan evitar los contenidos creados por Herb Schildt, cuya &lt;em&gt;"prosa es sencilla de leer pero su conocimiento de C es limitado e inexacto".&lt;/em&gt;&lt;/p&gt; &lt;p&gt;He revisado algunos de los enlaces de ISO-9899 y parecen apuntar a contenido viejo, pero algo todavía se puede aprovechar.&lt;/p&gt;&lt;p&gt;Aquí va algo de lo que he revisado:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a target="New" href="http://publications.gbdirect.co.uk/c_book/"&gt;The C Book&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="New" href="http://www2.its.strath.ac.uk/courses/c/"&gt;C programming&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Creo que la lista se podría mejorar si aportamos:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a target="New" href="http://www.network-theory.co.uk/docs/gccintro/"&gt;An Introduction to GCC&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="New" href="http://www.nongnu.org/c-prog-book/online/index.html"&gt;Learning GNU C&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="New" href="http://www.elrincondelc.com/nuevorincon/index.php?pag=cursos"&gt;El rincón de C&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="New" href="http://webpages.ull.es/users/fsande/talf/cursoc/"&gt;Curso de introducción al lenguaje C&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-8233569687952164265?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/8233569687952164265/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=8233569687952164265' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/8233569687952164265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/8233569687952164265'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/01/algunos-libros-de-c-sin-costo-en-linea.html' title='Algunos recursos sin costo en línea sobre C según ISO-9899'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-2823493783319796037</id><published>2009-01-27T14:20:00.000-06:00</published><updated>2009-01-27T14:48:59.909-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fuentes'/><category scheme='http://www.blogger.com/atom/ns#' term='xubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='CrunchBang'/><title type='text'>Instalé las fuentes Aenigma en Xubuntu</title><content type='html'>&lt;p&gt;Ya lo comenté en la entrada anterior, estaba buscando unas fuentes tipográficas adicionales para instalarlas en mi Xubuntu, me encontré unas fuentes creadas y liberadas por &lt;a target="New" href="http://www.aenigmafonts.com/"&gt;Brian Kent&lt;/a&gt;, llamadas Aenigma, me parecen ideales para crear logotipos, no tanto para editar documentos sencillos de leer. &lt;/p&gt;&lt;p&gt;Las fuentes Aenigma fueron preparadas como paquete por &lt;a target="New" href="http://crunchbang.org/"&gt;Philip Newborough (CrunchBang)&lt;/a&gt; para instalarse en Ubuntu y CrunchBang Linux. El paquete incluye algo más de cuatrocientas fuentes. &lt;/p&gt;&lt;p&gt;En el blog de CrunchBang se explica &lt;a target="New" href="http://crunchbang.org/archives/2008/06/14/aenigma-fonts-for-ubuntu/"&gt;cómo instalarlas usando una terminal&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;Va el resumen de los pasos, pero variado en un paso para Xubuntu (el editor de texto cambia de gedit a nano): &lt;/p&gt;&lt;p&gt;Para editar el archivo sources.list y agregar el repositorio:&lt;/p&gt;&lt;pre&gt;sudo nano /etc/apt/sources.list&lt;/pre&gt;&lt;p&gt;Se agrega al final del archivo:&lt;/p&gt;&lt;pre&gt;deb http://ppa.launchpad.net/corenominal/ubuntu hardy main&lt;/pre&gt;&lt;p&gt;Actualizar e instalar:&lt;/p&gt;&lt;pre&gt;sudo apt-get update&lt;p&gt;&lt;/p&gt;&lt;p&gt;sudo apt-get install ttf-aenigma&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://crunchbang.org/uploads/061408204028-stagnation.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 450px; height: 100px;" src="http://crunchbang.org/uploads/061408204028-stagnation.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://crunchbang.org/uploads/061408204230-unlearned.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 450px; height: 100px;" src="http://crunchbang.org/uploads/061408204230-unlearned.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://crunchbang.org/uploads/061408202058-embossing-tape.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 450px; height: 100px;" src="http://crunchbang.org/uploads/061408202058-embossing-tape.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-2823493783319796037?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/2823493783319796037/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=2823493783319796037' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2823493783319796037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2823493783319796037'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/01/instale-las-fuentes-aenigma-en-xubuntu.html' title='Instalé las fuentes Aenigma en Xubuntu'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-5778708793581776150</id><published>2009-01-15T18:04:00.000-06:00</published><updated>2009-01-15T18:31:21.678-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Python, van Rossum emprende la narración de la historia de su lenguaje de programación</title><content type='html'>&lt;p&gt;El creador de Python, viendo que su creación comienza a ganar edad, ha decidido crear un segundo blog en Blogger: &lt;a target="New" href="http://python-history.blogspot.com/"&gt;The History of Python&lt;/a&gt;. El plan de van Rossum es contar la historia de su aventura desde el inicio, y describir poco a poco cómo ha sido el camino hasta Python 3000, pasando por los aspectos técnicos y sociales.&lt;/p&gt;&lt;p&gt;Guido anticipa, en &lt;a target="New" href="http://neopythonic.blogspot.com/2009/01/history-of-python-introduction.html"&gt;un post de su blog Neopythonic&lt;/a&gt;, la participación de terceros, de los implicados, quienes han estado ahí durante la evolución del célebre lenguaje de programación que ha ocupado importantes espacios en el entorno de la creación de software.&lt;/p&gt;&lt;p&gt;Se antoja interesante y voy a seguirle la pista. De paso, agregó el &lt;a target="New" href="http://python-history.blogspot.com/"&gt;enlace del nuevo blog&lt;/a&gt;, a un lado, en la sección de la Máquina Comunal.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-5778708793581776150?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/5778708793581776150/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=5778708793581776150' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/5778708793581776150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/5778708793581776150'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/01/python-van-rossum-emprende-la-narracin.html' title='Python, van Rossum emprende la narración de la historia de su lenguaje de programación'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-5446059826574179563</id><published>2009-01-15T12:44:00.000-06:00</published><updated>2009-01-15T12:58:10.108-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='recuperación'/><category scheme='http://www.blogger.com/atom/ns#' term='poca memoria'/><category scheme='http://www.blogger.com/atom/ns#' term='pocos recursos'/><title type='text'>Excelente referencia de Obsoletos.org sobre cómo revivir una vieja Toshiba de 32 MB de RAM</title><content type='html'>&lt;p&gt;Soy un entusiasta de re-aprovechar las viejas máquinas, aquellas que nacieron con Windows 98. Un Linux pequeño puede darles nueva vida (a máquinas más viejas, les viene bien &lt;a target="New" href="http://www.freedos.org/"&gt;FreeDOS&lt;/a&gt;). Como Microsoft ya no da soporte a sus viejos Windows, es bueno saber que las máquinas antiguas todavía se pueden usar con Linux y se cuenta con un montón de recursos y aplicaciones libres para sacarles provecho.&lt;/p&gt;&lt;p&gt;En &lt;a target="New" href="http://www.obsoletos.org/"&gt;Obsoletos.org&lt;/a&gt;, explican &lt;a target="New" href="http://www.obsoletos.org/2009/01/al-final-triunfa-debian/"&gt;cómo dieron nueva vida a una portátil Toshiba&lt;/a&gt;, con Pentium II y 32 megas de RAM metiendo un Linux Debian con el entorno gráfico &lt;a target="New" href="http://www.fluxbox.org/"&gt;Fluxbox&lt;/a&gt;. Recomiendo mucho la visita a &lt;a target="New" href="http://www.obsoletos.org/"&gt;Obsoletos.org&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-5446059826574179563?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/5446059826574179563/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=5446059826574179563' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/5446059826574179563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/5446059826574179563'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/01/excelente-referencia-de-obsoletosorg.html' title='Excelente referencia de Obsoletos.org sobre cómo revivir una vieja Toshiba de 32 MB de RAM'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-7246699753231531825</id><published>2009-01-12T09:33:00.000-06:00</published><updated>2009-01-12T13:46:27.743-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='Django'/><category scheme='http://www.blogger.com/atom/ns#' term='en español'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Felicitaciones a quienes participaron en el Sprint de Traducción de Documentación de Django</title><content type='html'>&lt;p&gt;&lt;a target="New" href="http://www.django.es/"&gt;Django.es&lt;/a&gt;, impulsado por Antonio Melé, terminó su sprint de traducción de documentación de Django. Alcanzaron a traducir 22 documentos, según da cuenta Antonio en &lt;a target="New" href="http://django.es/blog/sprint-de-traduccion-terminado/"&gt;el blog&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Como yo no pude participar, al menos puedo correr la voz. Quedan pendientes otros documentos y la invitación está abierta para continuar.&lt;/p&gt;&lt;p&gt;¡Felicitaciones a los traductores del sprint y a Django.es!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-7246699753231531825?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/7246699753231531825/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=7246699753231531825' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/7246699753231531825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/7246699753231531825'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/01/felicidades-quienes-participaron-en-el.html' title='Felicitaciones a quienes participaron en el Sprint de Traducción de Documentación de Django'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-1346580129133393552</id><published>2009-01-12T00:25:00.000-06:00</published><updated>2009-01-12T00:35:09.470-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Sun'/><title type='text'>Gracias al espíritu libertador de Richard Stallman</title><content type='html'>&lt;p&gt;Me vas a tener que disculpar, pero se me ocurrió algo bien mamila y lo tengo que sacar de mi mente:&lt;/p&gt;&lt;p&gt;- Señor, ¿qué opina de que Sun ha comenzado la liberación de Java?.&lt;/p&gt;&lt;p&gt;- Mmm ... pues me parece de lo más correcto, a ver si así, China sigue el ejemplo y deja en paz al Tíbet.&lt;/p&gt;&lt;p align="center"&gt;***&lt;/p&gt;&lt;p&gt;Prometo que este tipo de cosas se me ocurren muy de vez en cuando ... en serio.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-1346580129133393552?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/1346580129133393552/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=1346580129133393552' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/1346580129133393552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/1346580129133393552'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/01/gracias-al-espritu-libertador-de.html' title='Gracias al espíritu libertador de Richard Stallman'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-4225431490783907060</id><published>2009-01-07T13:01:00.000-06:00</published><updated>2009-01-07T13:01:00.653-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ide'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='vcl'/><category scheme='http://www.blogger.com/atom/ns#' term='rad'/><title type='text'>Los creadores de Delphi se arriman un poco más a Ruby</title><content type='html'>Al principio, cuando leí la noticia, pensé que una inquietud que he &lt;a target="New" href="http://codigo-elusivo.blogspot.com/2008/09/nostalgia-por-el-borland-que-fue-lo.html"&gt;manifestado&lt;/a&gt; en este blog parecía asomar la cabeza. No era difícil anticiparlo: Ruby ha ganado suficiente atención, la justa para merecer la creación de entornos de desarrollo, o al menos la integración del lenguaje en otros ya existentes.&lt;br /&gt;&lt;br /&gt;Me ha pasado que habiendo perdido el interés en Object Pascal, o pensándolo mejor, habiendo encontrado apabullantes y pesadas las recientes versiones del RAD de Delphi, ya demasiado emparentado con .Net (a mi me gustaba la autosuficiencia del IDE de las versiones anteriores), y poniendo mi atención en Python y Ruby, por supuesto que me parece deseable un entorno de desarrollo para Ruby como el de Delphi, aclaro, el entorno RAD que fue hasta la versión 7. Y seguramente muchos más sienten al menos inquietud por una herramienta así.&lt;br /&gt;Bueno, los fabricantes de Delphi habían lanzado un entorno de desarrollo para Rails, 3rdRail, ya en segunda versión, y hace pocos días agregaron un producto a su catálogo, enfocado en Ruby, cómo no, se llama &lt;a target="New" href="http://www.codegear.com/products/turboruby"&gt;TurboRuby&lt;/a&gt;. Pensé que era el anhelado entorno RAD tipo Delphi para Ruby, pero no.&lt;br /&gt;&lt;br /&gt;La primera versión de TurboRuby tiene la meta de facilitar la escritura de código, la gestión de proyectos y la detección de errores, nada de arrastrar y soltar componentes sobre formularios o páginas web, nada de VCL para Ruby o cosa semejante.&lt;br /&gt;&lt;br /&gt;La gente de Embarcadero ha agregado un cierto número de gemas y herramientas, además de una licencia para desarrollador de InterBase. Por supuesto se pueden crear aplicaciones Rails con este entorno, pero importantes características respecto a Rails han sido restadas si se le compara con 3rdRail.&lt;br /&gt;&lt;br /&gt;Este entorno está disponible para Mac y Linux (Ubuntu), además de Windows.&lt;br /&gt;&lt;br /&gt;Yo no sé si Embarcadero tiene planes para integrar el desarrollo de aplicaciones gráficas, con ventanas, lienzos HTML y componentes visuales a las futuras versiones de TurboRuby y 3rdRail, pero encuentro mucho sentido en considerarlo.&lt;br /&gt;&lt;br /&gt;Ya se puede bajar la versión de evaluación que tiene una vigencia de 30 días. Voy a dejar pasar esta primera versión sin evaluar, no dispongo del tiempo y me da la impresión de que se trata de un lanzamiento de producto precipitado, la información del website es escueta, y no han publicado demostraciones del IDE haciendo lo suyo, hay que asumir que es algo menos que 3rdRail. Se informa que el precio que va a tener es de  $49.00 USD por cada licencia en suscripción anual, luego del año va a bloquearse si no se renueva. Un modelo de licenciamiento que me provoca la duda: ¿será que les funcione?, cuando no se trata de un servicio web. Puedo aceptar que me dejen de otorgar actualizaciones luego del año, pero creo que la suspensión de la funcionalidad le resta mucho atractivo en un mundo de desarrolladores que han podido sacar provecho de Ruby usando solamente herramientas Open Source.&lt;br /&gt;&lt;br /&gt;Pero voy a seguir atento al siguiente movimiento de Embarcadero respecto a Ruby, a ver si se hace realidad el entorno RAD para Ruby que me gustaría ver.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-4225431490783907060?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/4225431490783907060/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=4225431490783907060' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/4225431490783907060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/4225431490783907060'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/01/los-creadores-de-delphi-se-arriman-un.html' title='Los creadores de Delphi se arriman un poco más a Ruby'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-7857546402512305483</id><published>2009-01-06T23:58:00.001-06:00</published><updated>2009-01-07T05:02:12.183-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tecnología'/><category scheme='http://www.blogger.com/atom/ns#' term='desgracia'/><title type='text'>El costo de los teléfonos móviles y otros juguetes tecnológicos</title><content type='html'>Temible información la que se encuentra en Google si uno busca "&lt;a href="http://www.google.com.mx/search?hl=es&amp;amp;client=firefox-a&amp;amp;rls=com.ubuntu%3Aes-AR%3Aunofficial&amp;amp;hs=Vxn&amp;amp;q=tantalio+guerra&amp;amp;btnG=Buscar&amp;amp;meta="&gt;tantalio guerra&lt;/a&gt;". No,  no es el nombre de un personaje,  se trata de un material que se usa en el desarrollo de productos tecnológicos y que aviva la codicia con consecuencias funestas.&lt;br /&gt;&lt;br /&gt;Se consigue mayor referencia si se busca "&lt;a href="http://www.google.com.mx/search?hl=es&amp;amp;client=firefox-a&amp;amp;rls=com.ubuntu%3Aes-AR%3Aunofficial&amp;amp;q=empresas+que+compran+tantalio+del+congo&amp;amp;btnG=Buscar&amp;amp;meta="&gt;empresas que compran tantalio del congo&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;¿Estos eventos no tienen la relevancia que corresponde en los medios por mero accidente?.&lt;br /&gt;&lt;br /&gt;¿Es atinado indignarse con un teléfono móvil en la bolsa y escribiendo ante un teclado electrónico?.&lt;br /&gt;&lt;br /&gt;De momento no se me ocurre nada mejor que buscar medios de presión social para garantizar el origen "limpio" de los materiales. ¿Habrá?.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-7857546402512305483?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/7857546402512305483/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=7857546402512305483' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/7857546402512305483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/7857546402512305483'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/01/el-costo-de-los-telfonos-mviles-y-otros.html' title='El costo de los teléfonos móviles y otros juguetes tecnológicos'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-7239826803117866442</id><published>2009-01-06T06:19:00.000-06:00</published><updated>2011-09-17T16:37:28.149-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite'/><category scheme='http://www.blogger.com/atom/ns#' term='concurrencia'/><category scheme='http://www.blogger.com/atom/ns#' term='sqlite3'/><category scheme='http://www.blogger.com/atom/ns#' term='NFS'/><title type='text'>Nota muy simple sobre la concurrencia en SQLite 3</title><content type='html'>La concurrencia de SQLite, es el concepto que se refiere a la capacidad de SQLite para permitir que diversos usuarios hagan uso de la misma base de datos con poca o ninguna diferencia de tiempo. SQLite es un sistema que se considera de baja concurrencia.&lt;br/&gt;&lt;br/&gt;&lt;a name='more'&gt;&lt;/a&gt;Pueden haber múltiples usuarios leyendo una base de datos, pero solamente un usuario que escriba datos a la vez. SQLite bloquea la base de datos durante la escritura y nadie tiene permitido el acceso durante el tiempo que dura la operación. Por lo general, SQLite mantiene el bloqueo durante unos pocos milisegundos. Como consecuencia, si una aplicación va a necesitar una alta concurrencia de escritura de datos siendo el tiempo un factor crítico, debe considerarse otro sistema de gestión de datos más robusto cuyo diseño sea expresamente para múltiples usuarios o de alta concurrencia. Esto no quiere decir que SQLite debe ser descartado toda vez que se sabe van a existir diversos usuarios escribiendo datos, Michale Owens, en su libro "The Definitive Guide to SQLite" (ISBN-13: 978-1-59059-673-9, Apress, pág. 12) manifiesta que SQLite puede controlar más de quinientas transacciones por segundo con cien conexiones concurrentes en aplicaciones web.&lt;br/&gt;&lt;br/&gt;El asunto no es tan optimista si la base de datos habita un entorno de particiones de red. SQLite usa el bloqueo de archivo nativo del sistema operativo para controlar la concurrencia de transacciones, esto conduce a lo que se llama problema de NFS, muchas implementaciones de NFS tienen bugs (Unix y Windows) en su lógica de bloqueo de archivos. Es posible que dos o más aplicaciones, en un entorno de red, tratando de modificar la misma parte de una base de datos al mismo tiempo provoquen su corrupción. SQLite no puede prevenir el daño, porque se deriva de los bugs en la implementación del sistema de archivos.&lt;br/&gt;&lt;br/&gt;Además, la latencia asociada con los sistemas de archivo en red provocan un desempeño pobre, si no hay una aplicación web que se encargue de intermediar entre los usuarios y la base de datos, es mejor usar un DBMS tipo cliente-servidor. Aunque no hay que descartar que es posible desarrollar un programa servidor que controle la base de datos localmente y gestione las peticiones de los usuarios en la red, un ejemplo de esta solución es el programa &lt;a href="http://www.realsoftware.com/realsqlserver/" target="_blank"&gt;Real SQL Server&lt;/a&gt;, que usa SQLite en su núcleo, el asunto implica su dedicación, por supuesto.&lt;br/&gt;&lt;br/&gt;Lecturas recomendadas:&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;Michale Owens, "The Definitive Guide to SQLite", ISBN-10: 1-59059-673-0, ISBN-13: 978-1-59059-673-9, Apress.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Sibsankar Haldar, "Inside SQLite", ISBN-10: 0-596-55006-5, ISBN-13: 978-0-596-55006-6, O'Reilly, (http://my.safaribooksonline.com/9780596550066).&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;"File Locking And Concurrency In SQLite Version 3", http://www.sqlite.org/lockingv3.html.&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-7239826803117866442?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/7239826803117866442/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=7239826803117866442' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/7239826803117866442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/7239826803117866442'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2009/01/nota-muy-simple-sobre-la-concurrencia.html' title='Nota muy simple sobre la concurrencia en SQLite 3'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-7414806102696020614</id><published>2008-12-17T16:44:00.000-06:00</published><updated>2011-09-17T16:37:28.171-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite'/><category scheme='http://www.blogger.com/atom/ns#' term='documento'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='pdf'/><category scheme='http://www.blogger.com/atom/ns#' term='scribd'/><title type='text'>Documento de introducción a SQLite en Linux desde Scribd</title><content type='html'>&lt;a title="Scribd" href="http://www.scribd.com" target="_blank"&gt;Scribd&lt;/a&gt;, ese compendio social de documentos en línea, tiene un poco de contenido en español pertinente para los novatos de SQLite.&lt;br/&gt;&lt;br/&gt;Bajo la letra firmada de Edwin Aguiar se encuentra un documento de Introducción a SQLite, fechado en Diciembre de 2006 con el título de "Pruebas de SQLite en un sistema Linux, guía para iniciarse".&lt;br/&gt;&lt;br/&gt;&lt;a name='more'&gt;&lt;/a&gt;Me parece oportuno que se incluya aquí:&lt;br/&gt;&lt;br/&gt;&lt;a style="margin: 12px auto 6px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block; text-decoration: underline;" title="View Sqlite Introduccion document on Scribd" href="http://www.scribd.com/doc/7253619/Sqlite-Introduccion"&gt;Sqlite Introduccion&lt;/a&gt; &lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100%" height="500" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="id" value="doc_430096671503811" /&gt;&lt;param name="name" value="doc_430096671503811" /&gt;&lt;param name="align" value="middle" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="play" value="true" /&gt;&lt;param name="loop" value="true" /&gt;&lt;param name="scale" value="showall" /&gt;&lt;param name="wmode" value="opaque" /&gt;&lt;param name="devicefont" value="false" /&gt;&lt;param name="bgcolor" value="#ffffff" /&gt;&lt;param name="menu" value="true" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;param name="salign" /&gt;&lt;param name="src" value="http://documents.scribd.com/ScribdViewer.swf?document_id=7253619&amp;amp;access_key=key-1vndnt4laep49ocorxn9&amp;amp;page=1&amp;amp;version=1&amp;amp;viewMode=" /&gt;&lt;embed id="doc_430096671503811" type="application/x-shockwave-flash" width="100%" height="500" src="http://documents.scribd.com/ScribdViewer.swf?document_id=7253619&amp;amp;access_key=key-1vndnt4laep49ocorxn9&amp;amp;page=1&amp;amp;version=1&amp;amp;viewMode=" allowscriptaccess="always" allowfullscreen="true" menu="true" bgcolor="#ffffff" devicefont="false" wmode="opaque" scale="showall" loop="true" play="true" quality="high" align="middle" name="doc_430096671503811"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br/&gt;&lt;div style="margin: 6px auto 3px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block;"&gt;&lt;a style="text-decoration: underline;" href="http://www.scribd.com/upload"&gt;Publish at Scribd&lt;/a&gt; or &lt;a style="text-decoration: underline;" href="http://www.scribd.com/browse"&gt;explore&lt;/a&gt; others:            &lt;a style="text-decoration: underline;" href="http://www.scribd.com/browse?c=114-technology"&gt;Technology&lt;/a&gt; &lt;a style="text-decoration: underline;" href="http://www.scribd.com/browse?c=35-christianity"&gt;Christianity&lt;/a&gt; &lt;a style="text-decoration: underline;" href="http://www.scribd.com/tag/biblia"&gt;biblia&lt;/a&gt; &lt;a style="text-decoration: underline;" href="http://www.scribd.com/tag/sqlite"&gt;sqlite&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-7414806102696020614?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/7414806102696020614/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=7414806102696020614' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/7414806102696020614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/7414806102696020614'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2008/12/documento-de-introduccion-sqlite-en.html' title='Documento de introducción a SQLite en Linux desde Scribd'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-3841702342659933448</id><published>2008-12-15T20:27:00.001-06:00</published><updated>2008-12-26T22:27:24.593-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pownce'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Aviso de Leah</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7_VQOtarKUI/SUcSM0R8igI/AAAAAAAAAGY/CBvuA3ACcFY/s1600-h/pownce_bye.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 261px;" src="http://1.bp.blogspot.com/_7_VQOtarKUI/SUcSM0R8igI/AAAAAAAAAGY/CBvuA3ACcFY/s400/pownce_bye.jpg" alt="" id="BLOGGER_PHOTO_ID_5280209099516840450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pownce, una creación Django está off. ¿Qué vendrá en su lugar?.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-3841702342659933448?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/3841702342659933448/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=3841702342659933448' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/3841702342659933448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/3841702342659933448'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2008/12/aviso-de-leah.html' title='Aviso de Leah'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_7_VQOtarKUI/SUcSM0R8igI/AAAAAAAAAGY/CBvuA3ACcFY/s72-c/pownce_bye.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-6609372106625096303</id><published>2008-12-02T01:57:00.000-06:00</published><updated>2008-12-02T02:06:14.517-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Django'/><category scheme='http://www.blogger.com/atom/ns#' term='pownce'/><category scheme='http://www.blogger.com/atom/ns#' term='six apart'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><category scheme='http://www.blogger.com/atom/ns#' term='vox'/><title type='text'>Pownce se va</title><content type='html'>&lt;p&gt;Hace poco comenté que Pownce me gustaba más que Twitter. Pues Pownce se va, o mejor dicho, se cierra, o aún mejor mejor dicho, lo apagan.&lt;/p&gt;&lt;p&gt;La compañía Six Apart compró Pownce para asimilar a sus creadores, y para apagarlo, ellos traen otro sevicio llamado Vox.com. Leah, fundadora de Pownce &lt;a target="New" href="http://blog.pownce.com/2008/12/01/goodbye-pownce-hello-six-apart/"&gt;ha dicho&lt;/a&gt; que dentro de Six Apart va a estar trabajando en algo nuevo, mucho mejor, sin mayor referencia, que espera poder mostrar en 2009.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-6609372106625096303?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/6609372106625096303/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=6609372106625096303' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/6609372106625096303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/6609372106625096303'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2008/12/pownce-se-va.html' title='Pownce se va'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-2303523993851323480</id><published>2008-11-29T12:36:00.000-06:00</published><updated>2008-11-29T16:10:33.964-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='celebración'/><category scheme='http://www.blogger.com/atom/ns#' term='cómputo'/><category scheme='http://www.blogger.com/atom/ns#' term='unam'/><category scheme='http://www.blogger.com/atom/ns#' term='seguridad'/><title type='text'>30 de Noviembre, la UNAM celebra el Día Internacional de la Seguridad en Cómputo</title><content type='html'>&lt;p&gt;En la gaceta de la UNAM, leo, (mientras los Pumas tienen sometidas a las Águilas Blancas por 14 puntos, espero que así siga la cosa), que se anuncia que mañana es el Día Internacional de la Seguridad en Cómputo, por lo que la UNAM va a publicar una serie de artículos  con recomendaciones para proteger la información dentro del entorno de trabajo, el hogar, sitios públicos o redes empresariales. &lt;/p&gt;&lt;p&gt;El website sobre el tema es &lt;a target="New" href="http://www.disc.unam.mx/"&gt;http://www.disc.unam.mx/&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Al momento de escribir ésto, la información en el website aún corresponde a la edición 2007, estarán viendo el partido antes de actualizarlo, quizá.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-2303523993851323480?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/2303523993851323480/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=2303523993851323480' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2303523993851323480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2303523993851323480'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2008/11/30-de-noviembre-da-internacional-de-la.html' title='30 de Noviembre, la UNAM celebra el Día Internacional de la Seguridad en Cómputo'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-2151022134279005984</id><published>2008-11-22T09:57:00.000-06:00</published><updated>2008-11-22T10:01:30.565-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>No es lo mismo Python.org que Python.com</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://python.org/images/python-logo.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 211px; height: 71px;" src="http://python.org/images/python-logo.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;Intentando entrar a la página de &lt;a target="New" href="http://www.python.org/"&gt;Python&lt;/a&gt;, el lenguaje de programación, por error escribí python.com. La cosa se puede poner divertida ... y escandalosa, según el criterio de cada quien.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-2151022134279005984?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/2151022134279005984/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=2151022134279005984' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2151022134279005984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2151022134279005984'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2008/11/no-es-lo-mismo-pythonorg-que-pythoncom.html' title='No es lo mismo Python.org que Python.com'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-5983238143047029420</id><published>2008-11-20T20:01:00.000-06:00</published><updated>2008-11-20T20:25:57.172-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual basic'/><title type='text'>Regresando a Visual Basic 6 y VBA</title><content type='html'>Ya había pasado un montón de tiempo desde el último proyecto con Visual Basic 6 y VBA. Hace un mes un amigo llamó pidiendo una extensión para un poderoso y viejo sistema de diseño.&lt;br /&gt;&lt;br /&gt;He reinstalado el viejo VB 6, un poco con resistencia, pero luego de un rato, la experiencia de varios años con la herramienta, el hecho de no tener que documentarse sobre la marcha, lo van haciendo un trabajo divertido, lo contrario de cuando hace tiempo parecía que VB 6 siempre se quedaba corto en algo.&lt;br /&gt;&lt;br /&gt;La conveniencia de trabajar con un viejo conocido. Está resultando ser un buen rato antes de regresar a la dinámica de aprender, experimentar y trabajar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-5983238143047029420?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/5983238143047029420/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=5983238143047029420' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/5983238143047029420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/5983238143047029420'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2008/11/regresando-visual-basic-6-y-vba.html' title='Regresando a Visual Basic 6 y VBA'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-4642284385763418682</id><published>2008-11-10T22:29:00.000-06:00</published><updated>2011-09-17T16:37:28.193-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Access'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Mini SQL Query, una herramienta de consulta para MSSQL, SQLite, Oracle,
OLEDB y MS Access</title><content type='html'>Se pueden encontrar proyectos interesantes y de buen provecho en la zona de código abierto bajo el manto de Microsoft: &lt;a title="CodePlex" href="http://www.codeplex.com" target="_blank"&gt;CodePlex&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;El proyecto que ahora quiero comentar se llama &lt;a title="Mini SQL Query" href="http://www.codeplex.com/MiniSqlQuery" target="_blank"&gt;Mini SQL Query&lt;/a&gt;, una herramienta de consulta para MSSQL, SQLite, Oracle, OLEDB, MS Access y otros sistemas.&lt;br/&gt;&lt;br/&gt;Mini SQL Query se enfoca intencionalmente en satisfacer tareas muy frecuentes manteniendo el tamaño y la complejidad de la aplicación al mínimo.&lt;br/&gt;&lt;br/&gt;Características principales:&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;Soporte para múltiples bases de datos.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Resaltado de la sintaxis de código, con soporte para impresión.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Cargado y guardado de archivos SQL.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Visualización de datos de tabla.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Búsqueda básica de texto.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Modelo de programación ampliable, se pueden crear módulos a manera de plugins.&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;[caption id="attachment_88" align="alignnone" width="500" caption="Mini SQL Query"]&lt;a href="http://dbnaut.com/wp-content/uploads/2008/11/dbnaut-msq-select-from-cust.png"&gt;&lt;img class="size-full wp-image-88" title="dbnaut-msq-select-from-cust" src="http://dbnaut.com/wp-content/uploads/2008/11/dbnaut-msq-select-from-cust.png" alt="Mini SQL Query" width="500" height="300" /&gt;&lt;/a&gt;[/caption]&lt;br/&gt;&lt;br/&gt;&lt;a title="Mini SQL Query" href="http://www.codeplex.com/MiniSqlQuery" target="_blank"&gt;Mini SQL Query&lt;/a&gt; aún no ha llegado a su primera versión estable, pero ya está cerca, al momento de escribir esta nota, la versión disponible es la 1 Preview Release.&lt;br/&gt;&lt;br/&gt;El código fuente debe ser interesante para quienes desarrollan aplicaciones basadas en la consulta de datos, y el programa ejecutable podrá tener alguna aplicación práctica para personas que necesitan crear scripts de consulta en SQL.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-4642284385763418682?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/4642284385763418682/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=4642284385763418682' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/4642284385763418682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/4642284385763418682'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2008/11/mini-sql-query-una-herramienta-de.html' title='Mini SQL Query, una herramienta de consulta para MSSQL, SQLite, Oracle,&#xA;OLEDB y MS Access'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-6161641798251330414</id><published>2008-11-10T21:48:00.000-06:00</published><updated>2008-11-10T22:33:24.325-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Django'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='pownce'/><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Pownce-Twitter, Python-Django, Ruby-Rails, lo bonito jalonea</title><content type='html'>Me está gustando más el Pownce que el Twitter, pero parece que no puedo encontrar personas afines usando palabras claves, eso no está tan bueno.&lt;br /&gt;&lt;br /&gt;Bueno, ya coloqué los anuncios de enlace a mi perfil en Pownce en mis tres blogs. Supongo que en la medida que alimente este blog de temas asociados con Django y Python, la fauna similar se hará presente, tengo la impresión de que los Djangueros se agrupan de manera más eficiente que los Raileros, yo estaba probando Rails, pero algo de Django me está atrayendo más, y ahora estoy usando este blog para hacer conexiones con todo lo que voy encontrando que me resulta interesante de Django y Python. &lt;br /&gt;&lt;br /&gt;Ruby es hermoso, mucho, pero Python, igual de productivo, tiene un contexto humano que lo hace más cálido y atrayente, llegué a Pownce visitando a los entusiastas de Django. &lt;br /&gt;&lt;br /&gt;Voy a seguir explorando el mundo Python-Django, pero no estoy descartando para nada a Ruby, seguirá siendo objeto de estudio.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-6161641798251330414?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/6161641798251330414/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=6161641798251330414' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/6161641798251330414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/6161641798251330414'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2008/11/pownce-twitter-python-django-ruby-rails.html' title='Pownce-Twitter, Python-Django, Ruby-Rails, lo bonito jalonea'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-2495798934212573427</id><published>2008-11-10T15:15:00.000-06:00</published><updated>2008-11-10T15:49:31.615-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dragonfly'/><category scheme='http://www.blogger.com/atom/ns#' term='opera'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>Para ver cómo están construidas las páginas web, Opera Dragonfly</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_7_VQOtarKUI/SRimnFgevHI/AAAAAAAAAFw/-jckeMFXHok/s1600-h/codigo-elusivo-dragon-fly.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 298px; height: 320px;" src="http://1.bp.blogspot.com/_7_VQOtarKUI/SRimnFgevHI/AAAAAAAAAFw/-jckeMFXHok/s320/codigo-elusivo-dragon-fly.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5267142954633313394" /&gt;&lt;/a&gt;&lt;br /&gt;Me gusta usar Opera, de los navegadores web es el que prefiero, lo uso en Xubuntu y en Windows. Tiene estilo, presenta muy bien las páginas web, parece no ser un devorador de memoria y tengo entendido que ha estado aportando algunas de las características que han adoptado otros navegadores. Lo cierto es que también es una cuestión, frívola si se quiere, de sentirse parte de un movimiento alterno. Además, la gente de Opera ha estado desarrollando funcionalidades pensadas para los desarrolladores web, parece que se trata de los primeros pasos de un plan a mediano plazo para lograr herramientas de desarrollo. El producto del que estoy hablando, que me ha resultado de lo más conveniente se llama Dragonfly.&lt;br /&gt;&lt;br /&gt;Con Dragonfly puedo analizar el modelo de objetos de cada página web que me interesa mostrando un árbol de objetos HTML y puedo encontrar la relación y los detalles que cada objeto del documento tiene con la hoja de estilo CSS. Esto me permite conocer cómo es que han trabajado otros programadores y diseñadores de sitios web.&lt;br /&gt;&lt;br /&gt;Me ha gustado mucho la característica interactiva que permite seleccionar un objeto en la página para encontrarlo descrito en el código fuente HTML y en la hoja de estilo CSS.&lt;br /&gt;&lt;br /&gt;Opera Dragonfly incluye un depurador de JavaScript, yo no lo he usado, me estaba dando por bien servido con inspeccionar los objetos HTML y CSS, así que será en otra entrada que comente al respecto.&lt;br /&gt;&lt;br /&gt;Ahí está, una buena excusa para revisar o adoptar Opera (Opera Dragonfly viene con el navegador) o al menos estar al pendiente de sus próximos pasos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-2495798934212573427?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/2495798934212573427/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=2495798934212573427' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2495798934212573427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2495798934212573427'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2008/11/explorando-cmo-estn-construidas-las.html' title='Para ver cómo están construidas las páginas web, Opera Dragonfly'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_7_VQOtarKUI/SRimnFgevHI/AAAAAAAAAFw/-jckeMFXHok/s72-c/codigo-elusivo-dragon-fly.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-6804628245083962720</id><published>2008-11-10T04:20:00.000-06:00</published><updated>2011-09-20T09:37:01.326-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite'/><category scheme='http://www.blogger.com/atom/ns#' term='portátil'/><category scheme='http://www.blogger.com/atom/ns#' term='Django'/><category scheme='http://www.blogger.com/atom/ns#' term='framework'/><category scheme='http://www.blogger.com/atom/ns#' term='marco de trabajo'/><category scheme='http://www.blogger.com/atom/ns#' term='portable'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>SQLite, Python y Django para llevar</title><content type='html'>&lt;b&gt;Actualización, 2011:&lt;/b&gt;&lt;br /&gt;&lt;i&gt;Parece que el objeto de atención de esta entrada no va más. Los hipervínculos al sitio web están rotos y no he encontrado en la red si hay un seguimiento de Instant Django. En cambio, la liga de descarga aún funciona. De cualquier modo, el texto original es como sigue.&lt;/i&gt;&lt;br /&gt;&lt;hr /&gt;Alguien ha tenido la excelente idea de crear una implementación portable de Django. Esto implica que SQLite y Python vienen como parte del conjunto.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.instantdjango.com/" target="New"&gt;Instant Django&lt;/a&gt; es para Windows. No tiene que instalarse,&amp;nbsp; se descomprime en una carpeta de la computadora o de una memoria portátil, se configura ejecutando el archivo start.bat &amp;nbsp;y listo, ya se cuenta con SQLite, Python y Django para desarrollar aplicaciones. Evidentemente, el principal objetivo de este conjunto de herramientas es el desarrollo de aplicaciones para Internet con el marco de trabajo Django, que por cierto, vale mucho la pena dedicar un tiempo a conocerlo, pero eso no hace forzoso que SQLIte o Python deban tener una aplicación práctica exclusivamente con Django, se les puede usar de modo independiente.&lt;br /&gt;&lt;br /&gt;Actualmente, &lt;a href="http://www.instantdjango.com/" target="New"&gt;Instant Django&lt;/a&gt; incluye Python 2.5.2, Django 1.0, Notepad++ 5.0.3, Python Imaging Library 1.1.6, Docutils 0.5, y Sqlite 3.5.6, viene muy actualizado.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://s3.amazonaws.com/instant.django/django.exe"&gt;Descarga directa: django.exe 17MB&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-6804628245083962720?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/6804628245083962720/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=6804628245083962720' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/6804628245083962720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/6804628245083962720'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2008/11/sqlite-python-y-django-para-llevar.html' title='SQLite, Python y Django para llevar'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-272965373139838046</id><published>2008-11-07T23:08:00.000-06:00</published><updated>2008-11-07T23:13:08.378-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='Django'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Videos de Django por Eric Florenzano</title><content type='html'>&lt;object width="500" height="333"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=1764288&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=1764288&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="333"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/1764288"&gt;Django From the Ground Up: Setting Up Version Control&lt;/a&gt; from &lt;a href="http://vimeo.com/user763961"&gt;Eric Florenzano&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;object width="500" height="333"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=1764363&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=1764363&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="333"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/1764363"&gt;Django From the Ground Up: Settings and Models&lt;/a&gt; from &lt;a href="http://vimeo.com/user763961"&gt;Eric Florenzano&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-272965373139838046?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/272965373139838046/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=272965373139838046' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/272965373139838046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/272965373139838046'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2008/11/videos-de-django-por-eric-florenzano.html' title='Videos de Django por Eric Florenzano'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-3153112489371195482</id><published>2008-11-07T21:26:00.000-06:00</published><updated>2008-11-07T22:42:46.122-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Django'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Encontrando gente Django en el mundo</title><content type='html'>&lt;p&gt;&lt;a target="New" href="http://djangopeople.net/"&gt;Django People&lt;/a&gt; es un servicio para descubrir a la gente del mundo que se identifica con este framework basado en Python. Un buen recurso si quieres hacer vínculos con otros djangueros.&lt;/p&gt;&lt;p&gt;Es notable la integración de este servicio con Google Maps.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-3153112489371195482?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/3153112489371195482/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=3153112489371195482' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/3153112489371195482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/3153112489371195482'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2008/11/encontrando-gente-django-en-el-mundo.html' title='Encontrando gente Django en el mundo'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-362596159219561225</id><published>2008-11-07T20:09:00.000-06:00</published><updated>2011-09-17T16:37:28.245-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite'/><category scheme='http://www.blogger.com/atom/ns#' term='sqlite3'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Python y SQLite3, ejemplo 2</title><content type='html'>Partiendo del &lt;a href="http://dbnaut.com/sqlite/python-y-sqlite3-ejemplo-1/"&gt;ejemplo anterior&lt;/a&gt;, ahora se consultan todos los registros de la tabla "productos":&lt;br/&gt;&lt;pre lang="python"&gt;import sqlite3&lt;br/&gt;&lt;br/&gt;# conexión y cursor&lt;br/&gt;conexion = sqlite3.connect('data')&lt;br/&gt;consulta = conexion.cursor()&lt;br/&gt;&lt;br/&gt;# ejecuta la consulta&lt;br/&gt;consulta.execute('select * from productos')&lt;br/&gt;for fila in consulta:&lt;br/&gt;	print fila&lt;br/&gt;&lt;br/&gt;consulta.close()&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;&lt;a target="New" href="http://oss.itsystementwicklung.de/download/pysqlite/doc/sqlite3.html"&gt;Documentación oficial de pysqlite &gt;&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-362596159219561225?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/362596159219561225/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=362596159219561225' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/362596159219561225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/362596159219561225'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2008/11/python-y-sqlite3-ejemplo-2.html' title='Python y SQLite3, ejemplo 2'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-7235664337123135391</id><published>2008-11-07T20:06:00.000-06:00</published><updated>2011-09-17T16:37:28.269-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite'/><category scheme='http://www.blogger.com/atom/ns#' term='sqlite3'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Python y SQLite3, ejemplo 1</title><content type='html'>El siguiente ejemplo crea un archivo de datos ("data"), crea una tabla ("productos"), e inserta tres registros:&lt;br/&gt;&lt;pre lang="python"&gt;import sqlite3&lt;br/&gt;&lt;br/&gt;conexion = sqlite3.connect('data')&lt;br/&gt;tabla = conexion.cursor()&lt;br/&gt;&lt;br/&gt;# crear tabla&lt;br/&gt;tabla.execute('''create table productos&lt;br/&gt;(clave text, descripcion text, precio real)''')&lt;br/&gt;&lt;br/&gt;# insertar datos&lt;br/&gt;for t in (('aa101', 'PRODUCTO 101', 445.00),&lt;br/&gt;('bb202', 'PRODUCTO 202', 742.00),&lt;br/&gt;('cc303', 'PRODUCTO 303', 457.00),&lt;br/&gt;):&lt;br/&gt;          tabla.execute('insert into productos values (?,?,?)', t)&lt;br/&gt;&lt;br/&gt;conexion.commit()&lt;br/&gt;tabla.close()&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;&lt;a target="New" href="http://oss.itsystementwicklung.de/download/pysqlite/doc/sqlite3.html"&gt;Documentación oficial de pysqlite &gt;&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-7235664337123135391?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/7235664337123135391/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=7235664337123135391' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/7235664337123135391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/7235664337123135391'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2008/11/python-y-sqlite3-ejemplo-1.html' title='Python y SQLite3, ejemplo 1'/><author><name>mromtz</name><uri>http://www.blogger.com/profile/07621462362453937188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_Pt7jONZ8cpw/TCswjduN9rI/AAAAAAAAABE/EC3cg_F0vso/S220/197876-88-20100617061047.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-6295473182583713195</id><published>2008-11-06T01:02:00.000-06:00</published><updated>2009-01-28T09:48:13.157-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Django'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Este mensaje se auto-destruirá, PrivNote</title><content type='html'>&lt;p&gt;Más de las aplicaciones creadas con Django. Ahora se trata de una idea curiosa: &lt;a target="New" href="https://privnote.com/"&gt;PrivNote&lt;/a&gt;. Haces una nota en línea, te dan un link a la nota, envías el link a una persona, quizá en mensajería instantánea, la persona lee la nota y se destruye.&lt;/p&gt;&lt;p&gt;Algunos pensarán, y por qué no evitar tantos pasos y sencillamente envíar la nota directamente por el mensajero, bueno, se supone que aporta cierta seguridad, se trata de notas cifradas que ni siquiera los creadores de &lt;a target="New" href="https://privnote.com/"&gt;PrivNote&lt;/a&gt; pueden leer.&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://media.djangosites.org/screenshots/2078.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://media.djangosites.org/screenshots/2078.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-6295473182583713195?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/6295473182583713195/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=6295473182583713195' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/6295473182583713195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/6295473182583713195'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2008/11/este-mensaje-se-auto-destruira-privnote.html' title='Este mensaje se auto-destruirá, PrivNote'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-5752857517244186587</id><published>2008-11-06T00:40:00.000-06:00</published><updated>2008-11-06T00:54:35.923-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Django'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Un buscador específico para temas relacionados con Django</title><content type='html'>&lt;p&gt;Los desarrolladores que usan Django tienen las pilas bien puestas y están creando aplicaciones interesantes. &lt;/p&gt;&lt;p&gt;Y siendo Django un framework que arrebata el corazón, no podía faltar un &lt;a target="New" href="http://djangosearch.com/articles/es/"&gt;buscador de temas relacionados con Django&lt;/a&gt;, creado con Django.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://media.djangosites.org/screenshots/341.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://media.djangosites.org/screenshots/341.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-5752857517244186587?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/5752857517244186587/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=5752857517244186587' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/5752857517244186587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/5752857517244186587'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2008/11/un-buscador-especfico-para-temas.html' title='Un buscador específico para temas relacionados con Django'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3683270025490382428.post-2325756722826877833</id><published>2008-11-03T18:58:00.000-06:00</published><updated>2008-11-03T19:05:30.786-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Django'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Enlace a un alivianado de Python</title><content type='html'>Me encontré el blog de &lt;a target="New" href="http://urkonn.blogspot.com/"&gt;Julio Acuña&lt;/a&gt;, un pythoniso y djanguero, &lt;a target="New" href="http://pownce.com/"&gt;pro-Pownce&lt;/a&gt;, lo recomiendo, tiene una manera muy alivianada de tratar los temas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3683270025490382428-2325756722826877833?l=codigo-elusivo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codigo-elusivo.blogspot.com/feeds/2325756722826877833/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3683270025490382428&amp;postID=2325756722826877833' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2325756722826877833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3683270025490382428/posts/default/2325756722826877833'/><link rel='alternate' type='text/html' href='http://codigo-elusivo.blogspot.com/2008/11/alivianado-en-python.html' title='Enlace a un alivianado de Python'/><author><name>Ahora Que Hice</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://2.bp.blogspot.com/_7_VQOtarKUI/SLDjUAcH8UI/AAAAAAAAADs/VYL_BK9kM8I/S220/2001moon-watcher.jpg'/></author><thr:total>0</thr:total></entry></feed>
