<?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-17156394</id><updated>2012-01-23T17:04:32.188-04:30</updated><category term='linux'/><category term='apache'/><category term='scanner'/><category term='plpgsql'/><category term='postgresql'/><category term='conocimiento libre'/><category term='flisol'/><category term='mysql'/><category term='software libre'/><category term='noticias en drupal'/><category term='sabiduría'/><category term='dbi-link'/><category term='estudios'/><category term='buscador en drupal'/><category term='instalando mapserver'/><category term='bash consola'/><category term='postgis'/><category term='calendario en drupal'/><category term='django'/><category term='apt-key'/><category term='editor visual en drupal'/><category term='error de llave pública'/><category term='xorg'/><category term='plone'/><category term='p4a'/><category term='vit'/><category term='cortesía en internet'/><category term='sigs'/><category term='sql'/><category term='epson'/><category term='multisitio web con drupal'/><category term='genbeta'/><category term='noticias'/><category term='migración mysql a postgresql'/><category term='debian'/><category term='drupal'/><category term='OpenOffice.org'/><category term='eventos'/><category term='módulos de drupal'/><category term='windows'/><category term='flashvideo'/><category term='compiz'/><category term='jw flv media player'/><category term='universidad'/><category term='encuestas en drupal'/><category term='editor WYSIWYG en drupal'/><category term='migración de datos sql'/><category term='subversion'/><title type='text'>Programación Libre</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>53</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-17156394.post-8401689146831288341</id><published>2010-11-01T21:41:00.004-04:30</published><updated>2010-11-01T21:57:30.426-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>Actualizar desde postgresql-8.1 a postgresql-8.3</title><content type='html'>Cosas de cosas... en la oficina tenemos un servidor que estaba en etch y bueno, luego de revisar que tanto tenía funcionando, tomar la decisión... lo más importante es el servidor Postgresql así que a actualizarlo!&lt;br /&gt;&lt;br /&gt;De dónde saqué cómo hacerlo? pues, el aptitude muy completo me lanzó:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_H4UNTSweUtM/TM90rHFXixI/AAAAAAAABqU/nlCouGgu4tM/s1600/Pantallazo-2.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 200px;" src="http://1.bp.blogspot.com/_H4UNTSweUtM/TM90rHFXixI/AAAAAAAABqU/nlCouGgu4tM/s320/Pantallazo-2.png" alt="" id="BLOGGER_PHOTO_ID_5534770751046388498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Con lo que le pregunté a Google y me devolvió, entre otras cosas[0]:&lt;br /&gt;&lt;br /&gt;Primeramente debe instalar las últimas versiones de los paquetes (postgresql-8.3 y postgresql-client-8.3)&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# aptitude install postgresql-8.3&lt;/span&gt;&lt;br /&gt;Tenga en cuenta que la instalación de postgresql-8.3 creará automáticamente un clúster por omisión 8.3/main. Tiene que borrar el clúster 8.3 existente&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# pg_dropcluster --stop 8.3 main&lt;/span&gt;&lt;br /&gt;Luego, necesita actualizar el clúster 8.1/main a 8.3&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# pg_upgradecluster 8.1 main&lt;/span&gt;&lt;br /&gt;Posteriormente, elimina el clúster 8.1/main después de actualizar los clústers que tenga.&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# pg_dropcluster 8.1 main&lt;/span&gt;&lt;br /&gt;Por último, elimina los paquetes postgresql-8.1 y postgresql-client-8.1&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# aptitude purge postgresql-8.1 postgresql-client-8.1&lt;br /&gt;&lt;br /&gt;Gracias gente!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[0]http://glosario-x.blogspot.com/2009/11/actualizar-desde-postgresql-81.html&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-8401689146831288341?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/8401689146831288341/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=8401689146831288341' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/8401689146831288341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/8401689146831288341'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2010/11/actualizar-desde-postgresql-81.html' title='Actualizar desde postgresql-8.1 a postgresql-8.3'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_H4UNTSweUtM/TM90rHFXixI/AAAAAAAABqU/nlCouGgu4tM/s72-c/Pantallazo-2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-5022208560793757192</id><published>2010-10-01T11:25:00.002-04:30</published><updated>2010-10-01T12:10:18.304-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='multisitio web con drupal'/><title type='text'>Montando un Multisitio web con Drupal</title><content type='html'>Montando un Multisitio web con Drupal - séptima parte&lt;br /&gt;&lt;br /&gt;Un multisitio es una características de algunos CMS que permiten crear varios sitios distintos utilizando código en forma compartida, y por ende, un mismo núcleo o base del CMS.[1]&lt;br /&gt;&lt;br /&gt;Es así como podemos tener varios sitios con una administración más cómoda y sencilla. Claro que cada sitio puede tener sus propios temas y módulos, compartir unos ya existentes en el sitio por defecto... sí lo hay.&lt;br /&gt;&lt;br /&gt;El proceso que describiremos será para un nuevo sitio, dentro de una instalación de drupal ya en funcionamiento, pero que podrá repetirse para sucesivos nuevos sitios.&lt;br /&gt;&lt;br /&gt;Vale decir que estos pasos llegan gracias al valeroso aporte de ilo a través del irc de drupal-es en freenode ;-) quien amablemente me pidió que nombre a documentadosDOTcom[2]&lt;br /&gt;&lt;br /&gt;Prerequesitos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Linux&lt;/li&gt;&lt;li&gt;un sitrio con Drupal funcionando&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;La receta:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;editar el /etc/hosts&lt;/span&gt; &lt;span style="font-size:100%;"&gt;y añadir: &lt;span style="font-weight: bold;"&gt;127.0.0.1 prueba&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;ir a: cd drupal/sites&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;crear el directorio: &lt;span style="font-weight: bold;"&gt;mkdir&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;prueba&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;copiar&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;default/default-settings.php prueba/&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;copiar prueba/default-settings.php prueba/settings.php&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;en el navegador, ir &lt;/span&gt;&lt;span style="font-size:100%;"&gt;a &lt;a href="http://prueba/drupal"&gt;http://prueba/drupal&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;[1]http://cuencodigital.com/articulos/multisitios_en_drupal.html&lt;br /&gt;[2]http://www.documentados.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-5022208560793757192?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/5022208560793757192/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=5022208560793757192' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/5022208560793757192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/5022208560793757192'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2010/10/montando-un-multisitio-web-con-drupal.html' title='Montando un Multisitio web con Drupal'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-330824747716980624</id><published>2010-07-02T09:42:00.003-04:30</published><updated>2010-07-02T09:51:24.391-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>crosstab para consultas de tablas cruzadas</title><content type='html'>Esta no le he necesitado aún, pero me puse a revisarla para ver qué tal funciona y ver sí luego se le puede sacar provecho.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;La documentación oficial[0] habla por sí sola, sobre lo que se quiere. hacerla funcionar no es complicado, pero tiene su engaño.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lo que se tiene:&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;br /&gt;SELECT est_002::text, agri02_002::text, count(*)::numeric&lt;br /&gt;FROM consulta_agri04 GROUP BY agri02_002, est_002 ORDER BY est_002, agri02_002;&lt;br /&gt;est_002  |       agri02_002       | count&lt;br /&gt;----------+------------------------+-------&lt;br /&gt;Mérida   | CACAO                  |    83&lt;br /&gt;Mérida   | CAFE                   |   169&lt;br /&gt;Mérida   | CAÑA                   |    68&lt;br /&gt;Mérida   | CEREALES Y LEGUMINOSAS |   421&lt;br /&gt;Mérida   | FRUTALES               |   746&lt;br /&gt;Mérida   | HORTALIZAS             |  1277&lt;br /&gt;Mérida   | ORNAMENTALES           |    41&lt;br /&gt;Mérida   | RAICES Y TUBERCULOS    |   484&lt;br /&gt;Táchira  | CACAO                  |    12&lt;br /&gt;Táchira  | CAFE                   |    29&lt;br /&gt;Táchira  | CAÑA                   |     1&lt;br /&gt;Táchira  | CEREALES Y LEGUMINOSAS |   310&lt;br /&gt;Táchira  | FRUTALES               |   209&lt;br /&gt;Táchira  | HORTALIZAS             |   451&lt;br /&gt;Táchira  | RAICES Y TUBERCULOS    |   222&lt;br /&gt;Trujillo | CAFE                   |    26&lt;br /&gt;Trujillo | CAÑA                   |    20&lt;br /&gt;Trujillo | CEREALES Y LEGUMINOSAS |    97&lt;br /&gt;Trujillo | FRUTALES               |   174&lt;br /&gt;Trujillo | HORTALIZAS             |   361&lt;br /&gt;Trujillo | RAICES Y TUBERCULOS    |   127&lt;br /&gt;&lt;/blockquote&gt;Lo que se quiere:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;est_002  |CACAO |CAFE |CAÑA&lt;br /&gt;Mérida   |83 |169 |68&lt;br /&gt;Táchira  |12 |29 |1&lt;br /&gt;Trujillo | |26 |20&lt;br /&gt;&lt;/blockquote&gt;con ésta consulta verifico cuántas columnas tendré:&lt;/div&gt;&lt;div&gt;SELECT DISTINCT agri02_002 FROM consulta_agri04 ORDER BY agri02_002, ya que luego voy a necesitar esa información para definir la salida.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;SELECT est_002, agri02_002, count(*)::numeric &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Acá defindo, como primer campo, la columna pivote, el segunda campo, serán las columnas, y el tercer campo, los valores a rellenar en la tabla.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Acá defino as columnas de salida en la tabla:&lt;/div&gt;&lt;div&gt;AS lista(estado text, renglon1 text, renglon2 text, renglon3 text, renglon4 text, renglon5 text, renglon6 text, renglon7 text, renglon8 text)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;primer campo, el pivot, los demás serán tantos como me devuelva la consulta con el DISTINCT.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;De esta amnera, la consulta completa queda:&lt;/div&gt;&lt;div&gt;&lt;div&gt;SELECT * FROM public.crosstab&lt;/div&gt;&lt;div&gt;(&lt;/div&gt;&lt;div&gt;    'SELECT est_002, agri02_002, count(*)::numeric FROM consulta_agri04 GROUP BY agri02_002, est_002 ORDER BY est_002, agri02_002',&lt;/div&gt;&lt;div&gt;    'SELECT DISTINCT agri02_002 FROM consulta_agri04 ORDER BY agri02_002'&lt;/div&gt;&lt;div&gt;) AS lista(estado text, renglon1 text, renglon2 text, renglon3 text, renglon4 text, renglon5 text, renglon6 text, renglon7 text, renglon8 text);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;y devuelve:&lt;/div&gt;&lt;div&gt;&lt;div&gt;estado  | renglon1 | renglon2 | renglon3 | renglon4 | renglon5 | renglon6 | renglon7 | renglon8&lt;/div&gt;&lt;div&gt;----------+----------+----------+----------+----------+----------+----------+----------+----------&lt;/div&gt;&lt;div&gt; Mérida   | 83       | 169      | 68       | 421      | 746      | 1277     | 41       | 484&lt;/div&gt;&lt;div&gt; Táchira  | 12       | 29       | 1        | 310      | 209      | 451      |          | 222&lt;/div&gt;&lt;div&gt; Trujillo |          | 26       | 20       | 97       | 174      | 361      |          | 127&lt;/div&gt;&lt;div&gt;(3 filas)&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[0]http://www.postgresql.org/docs/8.3/interactive/tablefunc.html&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-330824747716980624?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/330824747716980624/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=330824747716980624' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/330824747716980624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/330824747716980624'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2010/07/crosstab-para-consultas-de-tablas.html' title='crosstab para consultas de tablas cruzadas'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-1752624865183673002</id><published>2010-04-16T08:56:00.004-04:30</published><updated>2010-10-06T17:12:39.177-04:30</updated><title type='text'>Configuración y ejecución con PL / R (PLR) en PostgreSQL</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Algunos de los datos aquí provistos, provienen de [0], los cuales se encuentran en Inglés.&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;R es tanto un lenguaje como un medio para hacer el análisis estadístico. R está disponible como software libre bajo la GPL. Para aquellos familiarizados con entornos como S, MatLab, y SAS - R tiene el mismo propósito. Tiene poderosas construcciones para la manipulación de matrices, los paquetes para importar datos de fuentes de datos diversas como bases de datos relacionales, csv, hojas de cálculo, entre otras.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;PL / R es una extensión del lenguaje de PostgreSQL que le permite escribir funciones PostgreSQL y funciones de agregación en el lenguaje estadístico R.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Con el lenguaje R puede escribir cosas como funciones de agregación para calcular la mediana, que no existe de forma nativa en PostgreSQL y sólo existe en una pocas bases de datos relacionales de forma nativa (por ejemplo Oracle) se me ocurre. Incluso en la función de Oracle no aparece hasta la versión 10.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Otro uso popular de R es para hacer diagramas de Voronoi...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cuando se combina esto con PostGIS tiene un ambiente extremadamente poderoso para hacer cosas como &lt;i&gt;vecino más cercano&lt;/i&gt; y &lt;i&gt;búsquedas planeación de instalaciones&lt;/i&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Instalando R&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;En Debian Linux, aptitude install r-cran-base para obtener R. Sí a alguien se le ocurre hacer un search podrá encontrar un montón de cosas adicionales para R, como módulos por ejemplo, que cada quien instalará según necesite o quiera.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Instalando PL/R&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;En la lista de postgresql-es, cuando pregunté, Alvaro Herrera me respondió: "¿Probaste apt-get install postgresql-8.3-plr ?". ciertamente lo había buscado en los repos de Debian, pensando que quizás existía, y no lo había encontrado, asumí que sólo conseguiría el tar.gz de la página oficial de PL/R [1], pero, se me ocurrió preguntarle a google y zas! Ubuntu sí que lo tiene en un repos, así que me descargue el .deb a ver qué tal me iba, y bueno... dpkg -i y listo!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Por ahí leí que había que decirle a postgresql dónde está R, y la seña era agregar &lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;R_HOME = '/usr/lib/R/'&lt;/span&gt; a environment de postresql (en /etc). Reiniciar postgresql&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Agregando el lenguaje a la BD&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Luego, me di cuenta que un simple createlang plr no funcionaba, así que volví a google y... [2] psql -d mi_bd &lt; /usr/share/postgresql/8.3/plr.sql. Ojo, es posible que esté en otro lado&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Probando PL/R&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;SELECT * FROM plr_environ();&lt;/div&gt;&lt;div&gt;SELECT load_r_typenames();&lt;/div&gt;&lt;div&gt;SELECT * FROM r_typenames();&lt;/div&gt;&lt;div&gt;SELECT plr_array_accum('{23,35}', 42);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Next try to create a helper function (this was copied from (http://www.joeconway.com/plr/doc/plr-pgsql-support-funcs.html) - and test with the following&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); white-space: pre;font-size:medium;" &gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;CREATE OR REPLACE FUNCTION plr_array (text, text) RETURNS text[] AS '$libdir/plr','plr_array' LANGUAGE 'C' WITH (isstrict);&lt;br /&gt;select plr_array('hello','world');&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Creating Median Function in PostgreSQL using R&lt;/b&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);font-family:courier;font-size:medium;"  &gt;&lt;pre&gt;create or replace function r_median(_float8) returns float as 'median(arg1)' language 'plr';&lt;br /&gt;CREATE AGGREGATE median (sfunc = plr_array_accum, basetype = float8, stype = _float8, finalfunc = r_median );&lt;br /&gt;create table foo(f0 int, f1 text, f2 float8);&lt;br /&gt;insert into foo values(1,'cat1',1.21);&lt;br /&gt;insert into foo values(2,'cat1',1.24);&lt;br /&gt;insert into foo values(3,'cat1',1.18);&lt;br /&gt;insert into foo values(4,'cat1',1.26);&lt;br /&gt;insert into foo values(5,'cat1',1.15);&lt;br /&gt;insert into foo values(6,'cat2',1.15);&lt;br /&gt;insert into foo values(7,'cat2',1.26);&lt;br /&gt;insert into foo values(8,'cat2',1.32);&lt;br /&gt;insert into foo values(9,'cat2',1.30);&lt;br /&gt;select f1, median(f2) from foo group by f1 order by f1;&lt;/pre&gt;&lt;/span&gt;&lt;div&gt;[0]http://www.bostongis.com/PrinterFriendly.aspx?content_name=postgresql_plr_tut01&lt;/div&gt;&lt;div&gt;[1]http://www.joeconway.com/web/guest/pl/r&lt;/div&gt;&lt;div&gt;[2]http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg589297.html&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/17156394-1752624865183673002?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/1752624865183673002/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=1752624865183673002' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/1752624865183673002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/1752624865183673002'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2010/04/configuracion-y-ejecucion-con-pl-r-plr.html' title='Configuración y ejecución con PL / R (PLR) en PostgreSQL'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-7274575825364482761</id><published>2010-03-02T08:14:00.002-04:30</published><updated>2010-03-02T08:18:21.859-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='noticias'/><category scheme='http://www.blogger.com/atom/ns#' term='genbeta'/><category scheme='http://www.blogger.com/atom/ns#' term='universidad'/><category scheme='http://www.blogger.com/atom/ns#' term='software libre'/><title type='text'>Las universidades españolas acuerdan promover el software libre</title><content type='html'>Buenas noticias para el código libre: la Conferencia de Rectores de las Universidades Españolas o &lt;span class="caps"&gt;CRUE&lt;/span&gt;, una asociación de 74 universidades públicas y privadas, ha acordado en una reunión que &lt;strong&gt;las universidades impulsarán los programas de código libre&lt;/strong&gt; para situarse “en una posición de referencia en el ámbito de nuevas tecnologías”.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ciertamente, aún queda mucho camino que recorrer en el tema del uso de software libre como prioridad para el aprovechamiento de los recursos en la parte acedémica, pero puede ser un avance...&lt;br /&gt;&lt;br /&gt;La noticia completa &lt;a href="http://www.genbeta.com/actualidad/las-universidades-espanolas-acuerdan-promover-el-software-libre"&gt;aquí&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-7274575825364482761?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/7274575825364482761/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=7274575825364482761' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/7274575825364482761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/7274575825364482761'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2010/03/las-universidades-espanolas-acuerdan.html' title='Las universidades españolas acuerdan promover el software libre'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-80032588047738959</id><published>2010-01-15T20:03:00.002-04:30</published><updated>2010-01-15T20:06:56.761-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='epson'/><title type='text'>Instalando una impresora nueva: Epson Stylus T20</title><content type='html'>Agradecimientos públicos a otro blog [0]&lt;br /&gt;&lt;br /&gt;El primer paso es descargar el archivo desde la web:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;http://www.ircdshells.com.ar/linux/epson-pips.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Entramos al directorio donde sea que sea que hayamos descargado el archivo, en mi caso:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# cd /home/emmanuel/Desktop&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Descomprimimos el archivo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# tar zxvf epson-pips.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# cd epson-pips&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Instalamos los drivers:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# sudo dpkg -i *.deb&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Copiamos el archivo "ekpd":&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# sudo cp ekpd /etc/init.d/ekpd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Damos Permiso de Ejecucion:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# sudo chmod +x /etc/init.d/ekpd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Agregamos ekpd para que se ejecute al inicio:&lt;br /&gt;&lt;br /&gt;# &lt;span style="color: red;"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;sudo update-rc.d ekpd defaults&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Instalamos 2 librerias:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# sudo apt-get install libtiff4 libpng3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Creamos el siguiente enlace simbolico:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# sudo ln -s /usr/lib/libtiff.so.4.2.1 /usr/lib/libtiff.so.3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Copiamos el archivo de configuracion:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# sudo cp /usr/local/EPAva/printer/st20/ekpdrc_st20 /etc/ekpdrc&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Apartir de este punto, la impresora debe estar conectada!&lt;br /&gt;&lt;br /&gt;Ejecutamos la aplicacion "ekpd-tool":&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# sudo ekpd-tool&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En mi caso los valores que puse son los siguientes:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_MNTCkbIdJ-w/ShDxbdL-J7I/AAAAAAAAAGI/Y_nSCvm--mE/s1600-h/ekdp-tool.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 166px;" src="http://2.bp.blogspot.com/_MNTCkbIdJ-w/ShDxbdL-J7I/AAAAAAAAAGI/Y_nSCvm--mE/s320/ekdp-tool.png" alt="" id="BLOGGER_PHOTO_ID_5337031012427638706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ahora iniciamos el demonio ekpd:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# sudo /etc/init.d/ekpd start&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora abrimos el configurador de impresoras, y taran! ahí ta!&lt;br /&gt;&lt;br /&gt;[0]http://linuxapuntes.blogspot.com/2009/05/instalar-impresora-epson-stylus.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-80032588047738959?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/80032588047738959/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=80032588047738959' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/80032588047738959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/80032588047738959'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2010/01/instalando-una-impresora-nueva-epson.html' title='Instalando una impresora nueva: Epson Stylus T20'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_MNTCkbIdJ-w/ShDxbdL-J7I/AAAAAAAAAGI/Y_nSCvm--mE/s72-c/ekdp-tool.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-8320471669556230350</id><published>2010-01-04T12:33:00.003-04:30</published><updated>2010-01-04T12:37:39.356-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='flisol'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='software libre'/><title type='text'>FLISOL 2010</title><content type='html'>&lt;div&gt;El evento Latinoamericano más importante, en su edición 2010, será el próximo sábado 24 de abril, y Mérida no escapará a esta oportunidad.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Aún se está montando el evento, pero como todos los años, es un encuentro de experiencias que dejan emociones y satisfacciones.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://www.installfest.info/FLISOL2010/Venezuela/Merida"&gt;Festival Latinoamericano de Instalación de Software LIbre&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Pendientes!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-8320471669556230350?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/8320471669556230350/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=8320471669556230350' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/8320471669556230350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/8320471669556230350'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2010/01/flisol-2010.html' title='FLISOL 2010'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-3930483631449452645</id><published>2009-12-16T15:55:00.001-04:30</published><updated>2009-12-16T15:58:01.944-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='bash consola'/><title type='text'>Buscar y Reemplazar texto desde la cónsola</title><content type='html'>&lt;div&gt;Buscar y Reemplazar texto desde la cónsola en varios archivos y sus subdirectorios&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;http://www.guatewireless.org/buscar-y-reemplazar-texto-en-todos-los-archivos-dentro-de-un-directorio-y-todos-los-subdirectorios/&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;find ./ "*.php" | xargs perl -pi -e 's/user=yoyoyoyo/user=tambien/g'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-3930483631449452645?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/3930483631449452645/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=3930483631449452645' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/3930483631449452645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/3930483631449452645'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/12/buscar-y-reemplazar-texto-desde-la.html' title='Buscar y Reemplazar texto desde la cónsola'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-6322739225158930796</id><published>2009-10-27T17:15:00.003-04:30</published><updated>2009-10-27T17:19:59.940-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='sabiduría'/><title type='text'>Sabiduría para programar</title><content type='html'>Recientemente leí en el histórica de la lista de postgresql, en palabras de Alvaro Herrera, algo así como: &lt;blockquote&gt;No le digas como lo va a hacer, dile qué es lo que tiene que hacer&lt;/blockquote&gt;. Palabras que hoy en día me sonaron, por mucho, llenas de sabiduría... ¿a qué se refería? era parte de una respuesta a una programación del lado de la Base de Datos... mejorar la programación, el rendimiento del motor, etc...&lt;br /&gt;&lt;br /&gt;Haré el intento de conseguir las palabras exactas...&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-6322739225158930796?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/6322739225158930796/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=6322739225158930796' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/6322739225158930796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/6322739225158930796'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/10/sabiduria-para-programar.html' title='Sabiduría para programar'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-8458495332897796979</id><published>2009-10-16T13:13:00.005-04:30</published><updated>2009-10-19T17:53:14.343-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='plpgsql'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>Insertar varios registros sí no existe</title><content type='html'>Bueno... es posible que esta idea este extraña, pero así es como lo tenemos.&lt;br /&gt;&lt;br /&gt;Nuestro código político está más o menos así:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; \d region&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;              Tabla «public.region»&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; Columna |         Tipo          | Modificadores &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;---------+-----------------------+---------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; reg_001 | character varying(2)  | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; reg_002 | character varying(35) | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Índices:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    «region_pkey» PRIMARY KEY, btree (reg_001)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;\d estado&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;              Tabla «public.estado»&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; Columna |         Tipo          | Modificadores &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;---------+-----------------------+---------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; reg_001 | character varying(2)  | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; est_001 | character varying(2)  | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; est_002 | character varying(35) | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Índices:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    «estado_pkey» PRIMARY KEY, btree (est_001)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    «estado_ukey» UNIQUE, btree (reg_001, est_001)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Restricciones de llave foránea:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    «estado_fkey» FOREIGN KEY (reg_001) REFERENCES region(reg_001) ON UPDATE CASCADE ON DELETE RESTRICT&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; \d municipio&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            Tabla «public.municipio»&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; Columna |         Tipo          | Modificadores &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;---------+-----------------------+---------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; reg_001 | character varying(2)  | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; est_001 | character varying(2)  | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; mun_001 | character varying(2)  | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; mun_002 | character varying(35) | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Índices:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    «municipio_ukey» UNIQUE, btree (reg_001, est_001, mun_001)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Restricciones de llave foránea:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    «municipio_fkey» FOREIGN KEY (est_001) REFERENCES estado(est_001) ON UPDATE CASCADE ON DELETE RESTRICT&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; \d parroquia&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            Tabla «public.parroquia»&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; Columna |         Tipo          | Modificadores &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;---------+-----------------------+---------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; reg_001 | character varying(2)  | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; est_001 | character varying(2)  | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; mun_001 | character varying(2)  | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; par_001 | character varying(2)  | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; par_002 | character varying(35) | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Índices:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    «parroquia_ukey» UNIQUE, btree (reg_001, est_001, mun_001, par_001)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;\d centro_poblado&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                                 Tabla «public.centro_poblado»&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; Columna |         Tipo          |                        Modificadores                        &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;---------+-----------------------+-------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; reg_001 | character varying(2)  | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; est_001 | character varying(2)  | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; mun_001 | character varying(2)  | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; par_001 | character varying(2)  | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; cpo_001 | character varying(3)  | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; cpo_002 | character varying(50) | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; id      | integer               | not null default nextval('centro_poblado_id_seq'::regclass)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y para el registro de datos, existe la posibilidad de que el detalle no llegue sino hasta la parroquia, por ejemplo, por lo que habría que seleccionar un Centro Poblado del tipo 'No Aplica', pero, un 'No Aplica' por cada parroquia existente, son como... muchos! al menos para insertarlos manualmente y uno por uno, así que decidí estudiar un poquito y ver cómo lo hacía vía plpgsql, he aquí el resultado:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;CREATE OR REPLACE FUNCTION leer(out a varchar) RETURNS SETOF varchar LANGUAGE plpgsql AS $$&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;DECLARE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    r record;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    p varchar := '01';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    -- recorrer la tabla tantas veces como parroquias existan&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    FOR r IN SELECT par_001 FROM centro_poblado GROUP BY par_001 LOOP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        -- recorrer la tabla tantas veces como parroquias existan y centros poblados con código igual a '000' existan&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        FOR r IN SELECT COUNT(*) AS cuenta FROM centro_poblado WHERE par_001 = p AND cpo_001 = '000' LOOP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            -- inicializo 'a'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            a = r.cuenta;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            -- sí a leido como entero, es igual a cero, es porque no existe un centro poblado con código igual a '000'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            IF (a::int = 0) THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                -- insertar el registro&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                INSERT INTO centro_poblado (reg_001, est_001, mun_001, par_001, cpo_001, cpo_002) VALUES ('06', '14', '01', p, '000', 'No Aplica');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            END IF;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            -- incremento para pasar a la siguiente parroquia&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            p := '0'|| p::int + 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            -- paso a la siguiente parroquia&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            RETURN next;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        END LOOP;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    END LOOP;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;END;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$$;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Seguro, alguien consigue otra forma de hacerlo mejor, pero al menos sirve... También es posible ir lanzando algunas notificaciones para saber por dónde y cómo va, tal como &lt;span style="font-family:courier new;"&gt;RAISE NOTICE ' Parroquia tiene %',p;&lt;/span&gt; pero es a gusto de cada quien...&lt;br /&gt;&lt;br /&gt;Listo! yo mismo lo hice de otra forma:&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- funcion para insertar no aplica para parroquias&lt;br /&gt;--&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;CREATE OR REPLACE FUNCTION insertar_no_aplica_centro_poblado(e varchar, out a varchar) RETURNS SETOF varchar LANGUAGE plpgsql AS $$&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;DECLARE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    l record;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    r record;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    p record;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    create temp table audit_tmp (usuario integer, ip inet, ocurrencia timestamp default now());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    -- listar todas las parroquias y municipios agrupadas&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    FOR l IN SELECT mun_001 FROM centro_poblado WHERE est_001 = e GROUP BY mun_001 ORDER BY mun_001 LOOP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        FOR r IN SELECT par_001 FROM centro_poblado WHERE est_001 = e AND mun_001 = l.mun_001 GROUP BY par_001 ORDER BY par_001 LOOP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            FOR p IN SELECT cpo_001 FROM centro_poblado WHERE est_001 = e AND mun_001 = l.mun_001 AND par_001 = r.par_001 GROUP BY cpo_001 ORDER BY cpo_001 LOOP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                IF (p.cpo_001 = '000') THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                    RAISE NOTICE 'No Aplica para : %', r.par_001;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                    EXIT;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                ELSE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                    insert into audit_tmp values (1, '127.0.0.1');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                    RAISE NOTICE 'Insertando para la parroquia : %', r.par_001;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                    INSERT INTO centro_poblado (reg_001, est_001, mun_001, par_001, cpo_001, cpo_002) VALUES ('06', e, l.mun_001, r.par_001, '000', 'No Aplica');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                    EXIT;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                END IF;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            END LOOP;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        END LOOP;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    END LOOP;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;END;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;$$;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ya ven, es otra forma...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-8458495332897796979?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/8458495332897796979/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=8458495332897796979' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/8458495332897796979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/8458495332897796979'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/10/insertar-varios-registros-si-no-existe.html' title='Insertar varios registros sí no existe'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-2811896418253140770</id><published>2009-10-14T16:09:00.003-04:30</published><updated>2009-10-15T17:50:10.874-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>Eliminando registros duplicados, desde SQL</title><content type='html'>Zas! Por un error de programación, de repente aparecieron un montón de registros duplicados, y cuando digo un montón, son un montón!!!&lt;br /&gt;&lt;br /&gt;y ahora? pues, a pensar con cabeza fría... cuáles son las opciones?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;borrar todos los duplicados a través del mismo sistema&lt;/li&gt;&lt;li&gt;pensar en un script en cualquier lenguaje que haga todo de un sólo halón&lt;/li&gt;&lt;/ul&gt;Por razones de seguridad de los datos, me inclino por la segunda opción... lo primero que pensé es en cómo se podía hacer con SQL&lt;br /&gt;&lt;br /&gt;La tabla:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;\d centro_poblado&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                                Tabla «public.centro_poblado»&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Columna |         Tipo          |                        Modificadores                      &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;---------+-----------------------+-------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;reg_001 | character varying(2)  | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;est_001 | character varying(2)  | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;mun_001 | character varying(2)  | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;par_001 | character varying(2)  | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;cpo_001 | character varying(3)  | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;cpo_002 | character varying(50) | not null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;id      | integer               | not null default nextval('centro_poblado_id_seq'::regclass)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Como la tabla tiene un id de tipo serial, eso ayuda.&lt;br /&gt;&lt;br /&gt;Verficiar cuáles son los registros repetidos:&lt;br /&gt;&lt;span style="font-family:courier new;font-size:78%;"&gt;SELECT COUNT(*), reg_001, est_001, mun_001, par_001 FROM centro_poblado GROUP BY cpo_002, reg_001, est_001, mun_001, par_001 ORDER BY reg_001, est_001, mun_001, par_001;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Verificar los registros repetidos:&lt;br /&gt;&lt;span style="font-family:courier new;font-size:78%;"&gt;SELECT * FROM centro_poblado WHERE reg_001 = '06' AND est_001 = '14' AND mun_001 = '01' AND par_001 = '05';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Contar los registros repetidos, en detalle:&lt;br /&gt;&lt;span style="font-family:courier new;font-size:78%;"&gt;SELECT count(*) FROM centro_poblado WHERE reg_001 = '06' AND est_001 = '14' AND mun_001 = '01' AND par_001 = '05' AND cpo_001 = '018';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Verificar el id min y máx del detalle de los registros repetidos:&lt;br /&gt;&lt;span style="font-family:courier new;font-size:78%;"&gt;SELECT min(id), max(id) FROM centro_poblado WHERE reg_001 = '06' AND est_001 = '14' AND mun_001 = '01' AND par_001 = '05' AND cpo_001 = '018';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La verdad es que luego descubrí que se podía hacer así:&lt;br /&gt;&lt;span style="font-family:courier new;font-size:78%;"&gt;SELECT * FROM centro_poblado AS a&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;font-size:78%;"&gt;    WHERE EXISTS(&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;font-size:78%;"&gt;       SELECT cpo_001, COUNT(cpo_001)&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;font-size:78%;"&gt;       FROM centro_poblado&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;font-size:78%;"&gt;       WHERE a.cpo_001= cpo_001&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;font-size:78%;"&gt;       GROUP BY cpo_001&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;font-size:78%;"&gt;       HAVING COUNT(cpo_001)&gt;1)&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;font-size:78%;"&gt;    ORDER BY cpo_001&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Eliminar los registros repetidos, menos 1:&lt;br /&gt;&lt;span style="font-family:courier new;font-size:78%;"&gt;DELETE FROM centro_poblado WHERE reg_001 = '06' AND est_001 = '14' AND mun_001 = '01' AND par_001 = '05' AND cpo_001 = '018' AND id &gt; 1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Esto también se puede resolver con una tabla temporal, y metiendo la consulta en una función y todo eso, pero aun no lo he probado...&lt;br /&gt;&lt;br /&gt;Finalmente, y gracias a la lista de usuarios de postgres y su histórico, me encontré [1]:&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;DELETE FROM centro_poblado WHERE ctid NOT IN (SELECT min(ctid) &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;FROM centro_poblado GROUP BY cpo_002, reg_001, est_001, mun_001, par_001&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;[1]http://archives.postgresql.org/pgsql-es-ayuda/2007-01/msg00353.php&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-2811896418253140770?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/2811896418253140770/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=2811896418253140770' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/2811896418253140770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/2811896418253140770'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/10/eliminando-registros-duplicados-desde.html' title='Eliminando registros duplicados, desde SQL'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-6083781106525148486</id><published>2009-09-10T08:06:00.003-04:30</published><updated>2009-09-10T16:41:42.832-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>Jugando con los privilegios de accesos a Bases de Datos PostgreSQL</title><content type='html'>El escenario varias BDs con&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Un usuario diferente para cada BD con privilegios para insertar/modificar&lt;/li&gt;&lt;li&gt;Un usuario capaz de leer todas las BDs&lt;/li&gt;&lt;li&gt;Un usuario admin de todas las BDs&lt;/li&gt;&lt;li&gt;Un Rol, que agrupe todos los usuarios y no tenga ningún privilegio&lt;/li&gt;&lt;/ul&gt;CREATE ROLE dba NO LOGIN;&lt;br /&gt;CREATE USER user1 IN ROLE dba LOGIN ENCRYPTED PASSWORD '123456';&lt;br /&gt;CREATE USER user2 LOGIN ENCRYPTED PASSWORD '123456';&lt;br /&gt;CREATE USER admin1 IN ROLE dba LOGIN ENCRYPTED PASSWORD '123456';&lt;br /&gt;&lt;br /&gt;ALTER GROUP dba ADD USER user2;&lt;br /&gt;&lt;br /&gt;CREATE DATABASE db1 OWNER TO user1;&lt;br /&gt;CREATE TABLE tabla1 (id serial, nombre character varying(10));&lt;br /&gt;&lt;br /&gt;quitar todos los privilegios sobre la tabla: tabla1 para los usuarios user1 y user2&lt;br /&gt;REVOKE ALL ON tabla1 FROM user1;&lt;br /&gt;REVOKE ALL ON tabla1 FROM user2;&lt;br /&gt;&lt;br /&gt;otorgar privilegios de consulta sobre la tabla talba1 para el usuario user1&lt;br /&gt;GRANT SELECT ON tabla1 TO user1;&lt;br /&gt;&lt;br /&gt;otorgar privilegios para insertar datos sobre la tabla tabla1 para el usuario user2 (requiere privilegios sobre la secuencia de la tabla)&lt;br /&gt;GRANT INSERT ON tabla1 TO user2;&lt;br /&gt;GTANT UPDATE ON tabla1_id_seq TO user2;&lt;br /&gt;&lt;br /&gt;Para poder actualizar/eliminar un registro, se requiere tener privilegios de selección (requiere privilegios sobre la secuencias de la tabla)&lt;br /&gt;GRANT UPDATE ON tabla1 TO user2;&lt;br /&gt;GRANT DELETE ON tabla1 TO user2;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-6083781106525148486?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/6083781106525148486/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=6083781106525148486' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/6083781106525148486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/6083781106525148486'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/09/jugando-con-los-privilegios-de-accesos.html' title='Jugando con los privilegios de accesos a Bases de Datos PostgreSQL'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-7201148302182993956</id><published>2009-09-09T17:03:00.009-04:30</published><updated>2009-09-17T17:48:21.250-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='postgis'/><category scheme='http://www.blogger.com/atom/ns#' term='sigs'/><title type='text'>Migrando capas shape (.shp) a postgis</title><content type='html'>El tema de pasar capas .shp a postgis, no sé sí será una manía, pero el tema de acceso a bases de datos contra el acceso a archivos no lo creo...&lt;br /&gt;&lt;br /&gt;Resulta que en el trabajo, hay un poco de gente haciendo capas y capas de mapas en software propietario... alguna vez pregunté (en pasillo) sí se habían puesto de acuerdo sobre algunas normas para hacer esas capas y me miraron como sí gubiera hablado en húngaro! y pensé... coño!&lt;br /&gt;&lt;br /&gt;No me equivoqué... cuando me dieron la tarea de montar un servidor de mapas y empecé a pedir las capas, empezaron mis dolores de cabeza... ahora, me toca ver cómo hacer, y escribir (acá) para que la cosa funcione...&lt;br /&gt;&lt;br /&gt;Vale decir que no tengo conocimientos en el tema de cartografía... por ahora...&lt;br /&gt;&lt;br /&gt;Existen varias formas, una de ellas es con el comando shp2pgsql, otra con QGis y otra con gvSIG (esas son las que yo conozco)...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;shp2pgsql:&lt;/span&gt; debería funcionar con algo parecido a esto&lt;br /&gt;&lt;blockquote&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;shp2pgsql -W UTF-8 &lt;span style="font-weight: bold;"&gt;&lt;filename&gt;&lt;/filename&gt;&lt;/span&gt;.shp &lt;span style="font-weight: bold;"&gt;&lt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;schema&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&gt;&lt;/span&gt;.&lt;span style="font-weight: bold;"&gt;&lt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;tablename&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&gt;&lt;/span&gt; &gt;&lt;span style="font-weight: bold;"&gt;&lt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;filename&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&gt;&lt;/span&gt;.sql&lt;/span&gt;&lt;/blockquote&gt;pero yo obtuve un mensaje de error por la codificación en la que está hecha la capa, o la mala norma de los atributos&lt;br /&gt;&lt;br /&gt;Finalmente amprendí algo sobre el estándar a seleccionar para que la cosa funcione. No significa que haya entendido, pero lo aprendí. Existe algo que se llama &lt;span style="font-style: italic;"&gt;Sistema de Coordenadas Proyectadas&lt;/span&gt; y &lt;span style="font-style: italic;"&gt;Sistema de Coordenadas Geográficas&lt;/span&gt;, ambas tienen como &lt;span style="font-weight: bold;"&gt;Sistema de Coordenadas de Referencia WGS84&lt;/span&gt;, pero la primera utiliza UTM y al segunda no, de manera que para la región Los Andes (Venezuela) sería para el primer caso SRC: EPSG 32619 que tiene WGS84 / UTM 19N y para el segundo caso SRC: EPSG 4326. De manera que es importante recordar este detalle para las propiedades de los proyectos y capas...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;QGis:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;verifico en las propiedades del proyecto que el Sistema de Referencia de Coordenadas (SRC) esté en WGS 84 (EPSG 4326 o 32619 según sea el caso)&lt;/li&gt;&lt;li&gt;Añado la capa vectorial (.shp)&lt;/li&gt;&lt;li&gt;verifico las propiedades de la capa que tenga el datum WGS 84&lt;/li&gt;&lt;/ul&gt;Importando la capa (.shp) a PostGIS:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Deseleccionar la opción &lt;span style="font-style: italic;"&gt;Usar SRID por omisión  o especificar aquí&lt;/span&gt; (que trae por defecto -1)&lt;/li&gt;&lt;li&gt;cambiar el -1 por 4326 (o el que corresponda)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;añadir la capa&lt;/li&gt;&lt;li&gt;ok&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;gvSIG:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Agragar una vista nueva&lt;/li&gt;&lt;li&gt;Verificar en Propiedades la &lt;span style="font-style: italic;"&gt;Proyección Actual&lt;/span&gt;, que por defecto viene en 23030 (España), con lo cual seleccionamos 4326 o 32619 (u otra, según sea el caso)&lt;/li&gt;&lt;li&gt;Click al botón Abrir, para añadir una capa .shp&lt;/li&gt;&lt;li&gt;Al seleccionar la opción de añadir una capa, verificamos que tenga en &lt;span style="font-style: italic;"&gt;Proyección Actual&lt;/span&gt;, el mismo valor que hemos puesto a la vista. Añadios la capa&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Seleccionada la capa a exportar, menú -&gt; capa -&gt; exportar -&gt; postgis&lt;/li&gt;&lt;li&gt;llenamos los datos que nos solicitan (nombre de la tabla, datos para la conexión con la BD) y listo!&lt;/li&gt;&lt;/ul&gt;En todo esto, seguro hay algunas otras consideraciones a tomar en cuenta. Sí algiuen las sabe, paselas, sino, esperémos a descubrirlas...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-7201148302182993956?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/7201148302182993956/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=7201148302182993956' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/7201148302182993956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/7201148302182993956'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/09/migrando-capas-shape-shp-postgis.html' title='Migrando capas shape (.shp) a postgis'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-3006530739781481585</id><published>2009-09-09T15:27:00.002-04:30</published><updated>2009-09-09T17:02:50.592-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='cortesía en internet'/><category scheme='http://www.blogger.com/atom/ns#' term='migración de datos sql'/><title type='text'>Normas de cortesía para trabajar con Bases de Datos</title><content type='html'>Justo ahora que me encuentro tratando de montar un servidor de mapas, con un conjunto de capas .shp generadas por estudiantes, pasantes, tesistas y profesionales del área (no informáticos) me encuentro con algo que creo será todo un dolor de cabeza... la falta de cortesía!&lt;br /&gt;&lt;br /&gt;Claro! ellos no tienen la culpa, como siempre, la culpa es de la vaca (para los que no saben, ese es el título de un libro, sí alguien cree que le suena interesante, pues, búsquelo, y leálo)... ¿cuál vaca? la que sea, no importa! cuando les dije que por favor, no utilizaran en los nombres de atributos (atributos en SIGs son las tablas de BD para los informáticos) carácteres acentuados, ni especiales, ni mayúsculas, me respondieron: "Cómo vamos a irrespetar la ortografía! sí es un nombre propio, claro que irá en mayúscula!"&lt;br /&gt;&lt;br /&gt;A lo que pensé... coño!&lt;br /&gt;&lt;br /&gt;Para los que puedan, corran la voz!!! siempre que un producto informático, tenga como futuro una base de datos, aunque sea remoto, por favor, recordar:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;No utilizar caracteres especiales (vocales acentuadas, eñes, etc)&lt;/li&gt;&lt;li&gt;No utlizar combinaciones de mayúsculas/minúsculas&lt;/li&gt;&lt;li&gt;Utilizar nombres descriptibles&lt;/li&gt;&lt;li&gt;En caso de ser nombres muy largos, utilizar nemotécnicos y su respectivo diccionario&lt;/li&gt;&lt;/ul&gt;A medida que vaya recordando (o tropezando) agregaré a la lista... o sí algún lector se le ocurre colaborar...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-3006530739781481585?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/3006530739781481585/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=3006530739781481585' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/3006530739781481585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/3006530739781481585'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/09/normas-de-cortesia-para-trabajar-con.html' title='Normas de cortesía para trabajar con Bases de Datos'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-8239308444355269333</id><published>2009-09-08T14:40:00.004-04:30</published><updated>2009-09-08T17:19:02.943-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='sigs'/><category scheme='http://www.blogger.com/atom/ns#' term='instalando mapserver'/><title type='text'>Preparando un entorno SIG en Debian Lenny</title><content type='html'>Para la presentación de datos georeferenciados, a través de un servicio web, voy a instalar un servidor de mapas. Ahora no recuerdo los detalles porque ya lo tengo instalado, pero trataré de ir corrigiendo en caso de que haga falta.&lt;br /&gt;&lt;br /&gt;aptitude install cgi-mapserver mapserver-bin mapserver-doc gdal-bin proj proj-bin proj-data php5-mapscript&lt;br /&gt;&lt;br /&gt;Sí algo me falta, es probable que aptitude se los traiga. con esto ya quedaría instalado el servidor de mapas.&lt;br /&gt;&lt;br /&gt;Cómo accederlo todavía estoy revisando la doc, pero en un navegador al teclear http://localhost/cgi-bin/mapserv te debería devolver algo como &lt;span style="font-style: italic;"&gt;No query information to decode. QUERY_STRING is set, but empty&lt;/span&gt;.lo que dice que ya está funcionando. Una vez se tenga una capa para mostrar, también se puede cargar vía http://localhost/tu_path_al_template/&lt;br /&gt;&lt;br /&gt;El qué y cómo mostrar, vienen en la próxima entrega del blog... generar el mapfile y trabajar con la plantilla, que por ahora, me tiro a &lt;a href="http://openlayers.org"&gt;OpenLayers&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-8239308444355269333?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/8239308444355269333/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=8239308444355269333' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/8239308444355269333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/8239308444355269333'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/09/preparando-un-entorno-sig-en-debian.html' title='Preparando un entorno SIG en Debian Lenny'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-22989443498936518</id><published>2009-09-07T11:29:00.006-04:30</published><updated>2009-09-11T15:22:18.759-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='migración de datos sql'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><category scheme='http://www.blogger.com/atom/ns#' term='migración mysql a postgresql'/><category scheme='http://www.blogger.com/atom/ns#' term='dbi-link'/><title type='text'>Migrar BD de Mysql a PostGreSQL (parte 3)</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Conversión de tipos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Resulta, que cuando vemos lo que nos dice el espejo que hemos creado de mysql sobre postgresql con dbi-link, los campos son creados como tipo text, con un comentario en la vista que dice qué tipo de dato aproximado debería haber ahí...&lt;br /&gt;&lt;br /&gt;Esto es así, porque los tipos de datos entre diferentes gestores normalmente no son iguales, es decir, todos aplican los estándares, pero además, cada uno le da su toque, de manera que es posible que tenga más o menos, y que de paso, se llamen diferentes... o más bien, se le aplique aliases...&lt;br /&gt;&lt;br /&gt;El tema es que cuando trato de leer para insertar en otra tabla, en un proceso de migración, debo tener muy presente los tipos de datos, ocasionalmente, podría recibir un mensaje del tipo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Error de SQL:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ERROR:  la columna «id» es de tipo integer pero la expresión es de tipo text&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;LINE 1: INSERT INTO cultu03 (id, cultu02_001, cultu03_002) (SELECT c...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                             ^&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;HINT:  Necesitará reescribir la expresión o aplicarle una conversión de tipo.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;En la declaración:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;INSERT INTO cultu03 (id, cultu02_001, cultu03_002) (SELECT codcat, codedi, catedi FROM sir_cultura_catedi)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Con lo cual, cualquiera se asusta a la primera... y no hace falta... con leer el mensaje y fijarme en la frase "aplicarle una conversión de tipos" será más que suficiente para tener algo de calma nuevamente...&lt;br /&gt;&lt;br /&gt;¿qué es una conversión de tipos? digamos que tenemos un campo de un tipo de dato (p.e. text), pero queremos "interpretar" su contenido como sí fuera otro tipo de dato (p.e. int)... a eso se le conoce como conversión de tipos&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;INSERT INTO cultu03 (id, cultu02_001, cultu03_002) (SELECT codcat::int, codedi::int, catedi FROM sir_cultura_catedi)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;o&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;INSERT INTO cultu03 (id, cultu02_001, cultu03_002) (SELECT cast(codcat as int), cast (codedi as int), catedi FROM sir_cultura_catedi)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;y listo!!!&lt;br /&gt;&lt;br /&gt;Una consultica que tiene algo más:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;INSERT INTO cultu04 (reg_001, est_001, mun_001, par_001, cpo_001, cultu04_001, cultu04_002, cultu04_003, cultu04_004, cultu04_005, cultu04_006, cultu04_007, cultu02_001, cultu03_001) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;(SELECT codreg, codest, codmun, codpar, codcen, anno, nombre, direccion, telefono, correo, web, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  CASE WHEN area &lt;&gt; '' THEN &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    CAST(area AS numeric) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ELSE &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    0 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  END, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;codedi::int, codcat::int FROM sir_cultura_edif_det)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Creo que no hace falta explicar la estructura de las tablas, sólo entender que leo en una tabla e inserto lo que estoy leyendo, con algunas particularidades sencillas....&lt;br /&gt;&lt;br /&gt;Una más&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;INSERT INTO acu03 (reg_001, est_001, mun_001, par_001, cpo_001, acu03_001, acu01_001, acu03_003, acu03_004, acu03_005, acu02_001, acu03_006, acu03_007, acu03_008)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;(SELECT codreg, codest, codmun, CASE WHEN codpar = 'NA' THEN '00' ELSE codpar END, CASE WHEN codcen = 'NA' THEN '000' ELSE codcen END, EXTRACT(YEAR FROM agno)::int, tipo::int, nb_acueducto, fuentes, caudal, tratamiento::int, suscriptores, poblacion, produccion FROM servicios_acueducto)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-22989443498936518?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/22989443498936518/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=22989443498936518' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/22989443498936518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/22989443498936518'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/09/migrar-bd-de-mysql-postgresql-parte-3.html' title='Migrar BD de Mysql a PostGreSQL (parte 3)'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-5715792948840041156</id><published>2009-09-03T11:02:00.004-04:30</published><updated>2009-09-03T11:18:02.060-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><category scheme='http://www.blogger.com/atom/ns#' term='migración mysql a postgresql'/><category scheme='http://www.blogger.com/atom/ns#' term='dbi-link'/><title type='text'>Migrar BD de Mysql a PostGreSQL (parte 1 Versión 2)</title><content type='html'>Diciendo que soy usuario Debian, no digo mucho, pero les cuento que habiendo reinstalado mi equipo de la oficina, en el momento en que estoy devolviendo las cosas a la normalidad, se me ocurrió hacer un aptitude search dbi_link y vaya sorpresa, existe!&lt;br /&gt;&lt;br /&gt;Pues, se me ocurrió instalarlo, y probar luego, cómo sería el procedimiento para que funcione... de manera que está sería la versión 2 de &lt;a href="http://programacionlibre.blogspot.com/2008/01/migrar-bd-de-mysql-postgresql-parte-1.html"&gt;Migrar BD de Mysql a PostGreSQL (parte 1)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;instalarlo: &lt;ul&gt;&lt;li&gt;aptitude install dbi_link&lt;/li&gt;&lt;/ul&gt;buscar donde queda: &lt;ul&gt;&lt;li&gt;find /usr/ -iname dbi_link&lt;/li&gt;&lt;/ul&gt;crear la BD en postgresql: &lt;ul&gt;&lt;li&gt;createdb migracion&lt;/li&gt;&lt;/ul&gt;crear el lenguaje plperlu a la BD recien creada:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;createlang plperlu -d migracion&lt;/li&gt;&lt;/ul&gt;lanzar dbi_link.sql a la BD recien creada:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;psql -d migracion -f /path/completo/dbi_link.sql&lt;/li&gt;&lt;/ul&gt;crear la estructura que me permitirá _conectar_ con la otra BD, en este caso mysql (acá usamos el mysql.sql que viene en el example del dbi_link, que no viene con el aptitude install):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;psql -d migracion -f /path/completo/mysql.sql&lt;/li&gt;&lt;/ul&gt;y listo! ya está el esquema con la estructura y datos que necesito leer...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-5715792948840041156?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/5715792948840041156/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=5715792948840041156' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/5715792948840041156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/5715792948840041156'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/09/migrar-bd-de-mysql-postgresql-parte-1.html' title='Migrar BD de Mysql a PostGreSQL (parte 1 Versión 2)'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-4708024970025494098</id><published>2009-09-01T17:36:00.004-04:30</published><updated>2009-09-01T17:48:29.028-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='error de llave pública'/><category scheme='http://www.blogger.com/atom/ns#' term='apt-key'/><title type='text'>Solucionando el error de llave pública en Debian</title><content type='html'>&lt;span style="font-family:arial;"&gt;Hoy decidí reinstalar mi computador de la oficina, tenía Debian Etch, y me estoy halando Debian Lenny desde un netinstall de etch...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;¿Por qué reinstalar en vez de actualizar? vale, porque había instalado varias cosillas que no tienen uninstall (no son productos nativos para debian) y algunos quedaron mal instalados, con lo cual el sistema se fue poneindo "fastidioso" con el tiempo...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Lo que hice: instalar sólo el sistema base, esto es, que cuando llegó el tasksel, le dije que nada de eso, de manera que instaló algunos 8 paquetes más y listo. Luego, edité el sources.list para colocar uno que tengo cerca, y al darle aptitude update me saltaron 2 errores relacionados con las llaves, uno para el security y otro para el mirror que yo había agregado...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;La solución:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;gpg --keyserver subkeys.pgp.net --recv-keys 07DC563D1F41B907 &amp;amp;&amp;amp; gpg --export --armor 07DC563D1F41B907 | apt-key add -&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;donde el 07DC563D1F41B907 es la llave que devuelve el error, de manera que tuve que hacerlo 2 veces, primero para el mirror y luego para el security... y update!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-4708024970025494098?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/4708024970025494098/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=4708024970025494098' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/4708024970025494098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/4708024970025494098'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/09/hoy-decidi-reinstalar-mi-computador-de.html' title='Solucionando el error de llave pública en Debian'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-3323880394432357958</id><published>2009-09-01T09:19:00.002-04:30</published><updated>2009-09-01T09:27:13.037-04:30</updated><title type='text'>Apache como proxy reverse</title><content type='html'>Configurando Apache como Servidor de Páginas Web para Sistemas alojados en otro server dentro de la intranet&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;La situación:&lt;/span&gt; Un servidor A que tiene Apache2 (servidor de páginas web que aloja la página web institucional) y Bind9 (servidor de nombres de dominio: DNS), un servidor B que contiene otro Apache2 (para aplicaciones a la medida de la oficina, las cuales deben ser accedidas desde la intranet pero también desde otros lugares geográficos, de manera que son accedidos desde su propio subdominio, de la forma sistemas.misitio.tal)&lt;br /&gt;&lt;br /&gt;Siguiendo lo que dice en [1], en ele ejemplo básico, he agregado además del default modificado, una especie de vhost, que en realidad es un proxy reverse, el el servidor A:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;virtualhost&gt;&lt;/virtualhost&gt;&lt;/span&gt;&lt;virtualhost&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ServerName sistemas.misitio.tal&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   ProxyRequests Off&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;proxy&gt;&lt;/proxy&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        Order deny,allow&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        Allow from all&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ProxyPass / http://192.168.15.18/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ProxyPassReverse / http://192.168.15.18/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ErrorDocument 404 /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    TransferLog /var/log/apache2/sistemas.access&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ErrorLog    /var/log/apache2/sistemas.error&lt;/span&gt;&lt;br /&gt;&lt;/virtualhost&gt;&lt;br /&gt;&lt;br /&gt;En el servidor B, sólo basta que esté el site default.&lt;br /&gt;&lt;br /&gt;Luego, buscar los módulos para instalar y activar: proxy, proxy_connect y proxy_http&lt;br /&gt;&lt;br /&gt;reiniciar apache y listo!&lt;br /&gt;&lt;br /&gt;[1] &lt;a href="http://httpd.apache.org/docs/2.2/mod/mod_proxy.html"&gt;http://httpd.apache.org/docs/2.2/mod/mod_proxy.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-3323880394432357958?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/3323880394432357958/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=3323880394432357958' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/3323880394432357958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/3323880394432357958'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/09/apache-como-proxy-reverse.html' title='Apache como proxy reverse'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-6313913589500381764</id><published>2009-08-31T17:31:00.002-04:30</published><updated>2009-08-31T17:50:29.697-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Configurando Apache como Servidor de Páginas Web</title><content type='html'>Configurando Apache como Servidor de Páginas Web&lt;br /&gt;&lt;br /&gt;La situación: en la oficina tenemos nuestro propio hosting, de manera que nuestra página web y nuestras aplicaciones (de uso interno) están también alojadas por nuestros servidores... por ahora, sólo vamos con la página web institucional.&lt;br /&gt;&lt;br /&gt;Servidor corriendo Debian Lenny, instalado por la vía tradicional (aptitude) apache2 (como la página está en drupal, pues, todo lo demás, php5, mysql etc...)&lt;br /&gt;&lt;br /&gt;El sites activado por defecto nos sirve para la ocasión, editado, modifico el DocumentRoot y la directiva &lt;directory&gt; para que ambos apunten al directorio de drupal... y listo!&lt;br /&gt;&lt;br /&gt;Ahora no recuerdo que haya sido distinto, el asunto es que dedicamos más tiempo a configurar otras cositas que espero contar mañana...&lt;br /&gt;&lt;br /&gt;See you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-6313913589500381764?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/6313913589500381764/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=6313913589500381764' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/6313913589500381764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/6313913589500381764'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/08/configurando-apache-como-servidor-de.html' title='Configurando Apache como Servidor de Páginas Web'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-5283902061873268533</id><published>2009-08-28T13:15:00.005-04:30</published><updated>2009-08-31T09:46:39.536-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='flashvideo'/><category scheme='http://www.blogger.com/atom/ns#' term='módulos de drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='jw flv media player'/><title type='text'>Montando un sitio web con Drupal (Video)</title><content type='html'>Montando un sitio web con Drupal - sexta parte&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Instalar un módulo: Flashvideo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Crear un tipo de contenido exclusivo para videos institucionales&lt;br /&gt;&lt;br /&gt;Me he guiado por [1], pero con pequeñas variaciones, que describo desde el principio. Haré una mala traducción, ya que [1] por estar publicado en drupal.org le da carácter de oficial.&lt;br /&gt;&lt;br /&gt;Permite subir vídeos a su sitio web e incorporarlo a cualquier contenido existente en la misma&lt;br /&gt;&lt;br /&gt;Manual para el uso del módulo de FlashVideo para Drupal.&lt;br /&gt;&lt;br /&gt;Pasos a seguir:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Descargar del sitio de Drupal el módulo (&lt;a href="http://drupal.org/project/flashvideo"&gt;http://drupal.org/project/flashvideo&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Una vez descargado, instalelo normalmente copiando el módulo en la carpeta de módulos de su sitio&lt;/li&gt;&lt;li&gt;Luego, en el sitio debe activar el módulo&lt;/li&gt;&lt;li&gt;El módulo, una vez instalado, se verá en la lista de módulos en: Administrar -&gt; Configuración del sitio, c omo se muestra en la &lt;a href="http://drupal.org/node/496368"&gt;imagen 1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;La configuración del entorno del módulo, quedará más o menos como se ve en la &lt;a href="http://drupal.org/node/496370"&gt;imagen 2&lt;/a&gt; (muestra unas notas importantes sobre los parámetros a ser fijados en php.ini, los actuales de sus sistema y los recomendados) y la &lt;a href="http://drupal.org/node/496372"&gt;imagen 3&lt;/a&gt; (muestra los tipos de nodos existentes en su sistema, donde podrá ingresar a cada uno para ver el estado y opearción de cada uno. Esto es, que puede publicar videos en cualquier módulo, basta con configurar el tipo de contenido y habilitar el módulo, tal como se muestra en la &lt;a href="http://74.125.115.132/translate_c?hl=es&amp;amp;ie=UTF-8&amp;amp;sl=en&amp;amp;tl=es&amp;amp;u=http://drupal.org/node/496374&amp;amp;rurl=translate.google.co.ve&amp;amp;usg=ALkJrhh7qN6L_dPEZkz0AKWGDkRfQoeAew"&gt;imagen 4&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt; Si se desea incrustar el vídeo en un tipo de contenido, seleccione el tipo de contenido y sus operaciones estraán marcados para este tipo de nodo.&lt;/span&gt; El procedimiento será el mismo para cualquier tipo de contenido&lt;span style="" onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;.&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;En las imágenes se muestra como la configuración de estos campos y opciones:&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;Una vez configurado el módulo, guardar los cambios.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;Puede ocurrir un error semejante al mostrado en la&lt;a href="http://drupal.org/node/496392"&gt; imágen&lt;/a&gt;, que se resolverá descargando los controladores de S3 en [4]&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;Descargar y extraer la carpeta. Ésta se guarda en el directorio módulos -&gt; FlashVideo -&gt; drivers. Luego, volver a la página de configuración y verña como el error a desaparecido.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;Para este módulo se pueden utilizar varios tipos reproductores de medios swf. Dos de los más utilizados, son &lt;/span&gt;JW Player and the Dash Media Player los cuales puedes descargar en [2]. Ahí mismo hay unas instrucciones para su instalación, las cuales también  comentaré acá según mi experiencia.&lt;/li&gt;&lt;li&gt;En mi caso, he decidido el JW Player, así que será ese el que comentaré acá cómo me ha ido... Descargado y descomprimido, hay un archivo lamado player-viral.swf el cual he renombrado a Player.swf. Éste último y el swfobject.js los he copiado en el directorio raíz de mi instalación de drupal. En [2] sugiere que se copien en el directorio files, pero mirando los logs de apache me decía que no los encontraba en el directorio padre, así que los coloqué ahí. El resto de pasos sugeridos en [2] no me han sido útiles, así que los he obviado.&lt;/li&gt;&lt;li&gt;Finalmente, para poder verlo, he seguido lo que dice [3].&lt;span style="" onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="" onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;El último paso, tal como dice en [1], para poder ver el vídeo insertado en el sitio, es ejecutar el cron, esto se hace de la siguiente manera, vaya a Administrar / Informe de situación y tareas de mantenimiento de cron / ejecutar cron manualmente, lo que necesita saber que cada vez cree una página para integrar un video se necesita ejecutar el cron, una vez hecho esto se puede ver el vídeo incrustado.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;[1] &lt;a href="http://drupal.org/node/496410"&gt;http://drupal.org/node/496410&lt;/a&gt;&lt;br /&gt;[2] &lt;a href="http://www.travistidwell.com/node/177"&gt;http://www.travistidwell.com/node/177&lt;/a&gt;&lt;br /&gt;[3] &lt;a href="http://www.longtailvideo.com/players/jw-flv-player/"&gt;http://www.longtailvideo.com/players/jw-flv-player/&lt;/a&gt;&lt;br /&gt;[4] &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;a href="http://www.travistidwell.com/files/Storage3.tar.gz" title="http://www.travistidwell.com/files/Storage3.tar.gz" rel="nofollow"&gt;http://www.travistidwell.com/files/Storage3.tar.gz&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-5283902061873268533?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/5283902061873268533/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=5283902061873268533' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/5283902061873268533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/5283902061873268533'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/08/montando-un-sitio-web-con-drupal-video.html' title='Montando un sitio web con Drupal (Video)'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-6857898464644093810</id><published>2009-08-16T07:33:00.003-04:30</published><updated>2009-08-31T08:47:34.192-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='estudios'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Empezando a estudiar de nuevo... con django</title><content type='html'>Hora de cambiar de nivel: Django&lt;br /&gt;&lt;br /&gt;Bueno, yo aquí, haciéndome el valiente...&lt;br /&gt;&lt;br /&gt;Resulta que en el trabajo uso php, y por un tiempo, creo, que así seguirá siendo, pero, ahora que retomé mis estudios, pensé que aprender a programar soluciones web en python sería interesante... Ahora que lo pienso, me da susto, porque noto que tengo pocas horas "libres" al día, pero bueno, como dice un profesor amigo de la (otra) universidad, "Sí no fuera por lo uno, sería por lo otro", así que nada de tenerle miedo al cuero, después de haber matado al tigre!&lt;br /&gt;&lt;br /&gt;Soy profesional de carrera corta (3 años) y cotinúo 2 años más y obtengo el título de Ingeniero (carrera de 5 años), todavía no se para qué, pero ahi lo llevo. De paso, con todos los cambios que conlleva el siglo XXI, se plantea la nueva universidad, con nuevos paradigmas y todo ese cuento; de manera que los 2 años tienen una colección de materias, entre ellas, una que llaman el eje central de la carrera: &lt;span style="font-weight: bold;"&gt;Proyecto Socio Tecnológico&lt;/span&gt;, donde nos toca montarnos en un proyecto de alcance social con aporte tecnológico, que, de paso, pueda enmarcarse dentro de los planes de desarrollo del país.&lt;br /&gt;&lt;br /&gt;Eso suena a Desarrollo Endógeno y Sobreanía Tecnológica, así que suena bien. Siendo así, demósle! y de paso, con Software Libre!!! ja! demósle pero con ganas!!!&lt;br /&gt;&lt;br /&gt;Pues bueno, ah instalar django, plone y a hechar pa'lante... Por ahora, plone lo he instalado en mi portatil (con Debian Lenny) de dos formas, ya que es posible tener las dos instancias juntas sin estar resvueltas: vía apt-get[0] y vía tar-gz instalador unificado [1]... y funciona! Luego, django, para empezar lo he instalado vía apt-get [2] (aunque me falta revisar [3] ya que hasta el paso 4 perfecto, pero en el paso 5 hice los cambios para postgresql, se me ocurrió ejecutar &lt;code&gt;/manage.py startapp [appname]&lt;/code&gt; como sugiere la bienvenida de django, y zas! errores saltaron), ya veré que cosa...&lt;br /&gt;&lt;br /&gt;Por lo pronto, así voy, espero hoy mismo publicar otra entrada, de cómo voy...&lt;br /&gt;&lt;br /&gt;[0]http://plone.org/documentation/how-to/plone-on-debian-etch/&lt;br /&gt;[1]http://plone.org/countries/conosur/documentacion/instalando-plone-3-con-el-instalador-unificado&lt;br /&gt;[2]http://www.howtoforge.com/installing-django-on-debian-etch-apache2-mod_python&lt;br /&gt;[3]http://codespatter.com/2008/10/15/setting-up-apache2-mod_python-mysql-and-django-on-debian-lenny-or-ubuntu-hardy-heron/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-6857898464644093810?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/6857898464644093810/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=6857898464644093810' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/6857898464644093810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/6857898464644093810'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/08/empezando-estudiar-de-nuevo-con-django.html' title='Empezando a estudiar de nuevo... con django'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-6276288657937938636</id><published>2009-08-12T11:32:00.004-04:30</published><updated>2009-08-14T14:05:00.320-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='editor visual en drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='módulos de drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='editor WYSIWYG en drupal'/><title type='text'>Montando un sitio web con Drupal (Editor WYSIWYG)</title><content type='html'>Montando un sitio web con Drupal - quinta parte&lt;br /&gt;&lt;br /&gt;Instalar un Módulo: Editor WYSIWYG&lt;br /&gt;&lt;br /&gt;En la anterior instalación había mirado y probado un par, así que ahora me voy por el que tenía: FCKEditor&lt;br /&gt;&lt;br /&gt;Este módulo parecería ser más laborioso de dejar listo para usar, pero no será tanto...&lt;br /&gt;&lt;br /&gt;Tal y como dice el COPY_HERE.txt que viene en el módulo (fckeditor/fckeditor/) hay que descargarse de la página oficial el fckeditor.algo (tar.gz en mi caso), descomprimir, copiar todo su contendio y pegarlo dentro de la carpeta donde está el .txt ya mencionado... y listo! activar el módulo, configurarlo en el menú Configuración del Sitio y ya se puede empezar a utilizar el editor WYSIWYG.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-6276288657937938636?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/6276288657937938636/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=6276288657937938636' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/6276288657937938636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/6276288657937938636'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/08/montando-un-sitio-web-con-drupal-quinta.html' title='Montando un sitio web con Drupal (Editor WYSIWYG)'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-1347539641779154787</id><published>2009-08-12T11:11:00.005-04:30</published><updated>2009-08-14T14:05:36.859-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='buscador en drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='módulos de drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='encuestas en drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><title type='text'>Montando un sitio web con Drupal (Buscador, Encuesta y Formulario)</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Montando un sitio web con Drupal - cuarta parte&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Instalar un Módulo: Buscador&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Mirando la lista de módulos del Core Opcional, he encontrado que hay un &lt;span style="font-weight: bold;"&gt;Search&lt;/span&gt;, una vez activado, tiene algunas cositas de configurar, tal como la indexación del sitio, mínimos de palabras coincidentes, y otros... Luego, activo el Bloque que aparece como formulario de búsquedas, y ya se muestra en el sitio.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Instalar un Módulo: Encuesta&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;También en la lista de módulos del Core Opcional hay un módulo &lt;span style="font-weight: bold;"&gt;Poll&lt;/span&gt;, que permite encuestas sencillas. En la sección de Bloques, aparece como Encuesta más reciente, fijar donde se queire ver y listo! En agregar un contenido nuevo, aparece Encuestas, es tan sencillo como escribir la pregunta, y las opciones de respuesta, opcionalmente tiene la duración, sí está cerrada la encuenta, etc...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Instalar un Módulo: Formulario de Contacto&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una vez más, aparece un módulo en el Core Opcional Contact que habilita el uso de formularios de contacto personal y a nivel sitio. Activado! Luego lo configuro y comento...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-1347539641779154787?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/1347539641779154787/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=1347539641779154787' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/1347539641779154787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/1347539641779154787'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/08/montando-un-sitio-web-con-drupal-cuarta.html' title='Montando un sitio web con Drupal (Buscador, Encuesta y Formulario)'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-3719060831545786463</id><published>2009-08-11T16:36:00.010-04:30</published><updated>2009-08-14T14:06:12.279-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='calendario en drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='módulos de drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><title type='text'>Montando un sitio web con Drupal (Calendario)</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Montando un sitio web con Drupal - tercera parte&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Instalar un Módulo: Calendario&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Necesarios: Views, Date, Content (CKK)&lt;br /&gt;&lt;br /&gt;Lo primero que se debe hacer para instalar un módulo, es navegar por el enorme listado de módulos que existen, de manera que hay que armarse de paciencia y dedicar un buen rato a eso.&lt;br /&gt;&lt;br /&gt;El Módulo calendar dice que depende de los módulos views, date, adicionalmente el módulo date depende de content que está en CKK, de manera que los he descargado e instalado.  De manera que activo:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;CKK:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Content&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Date (Fecha / Hora)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Calendar&lt;/li&gt;&lt;li&gt;Date&lt;/li&gt;&lt;li&gt;Date API&lt;/li&gt;&lt;li&gt;Date Timezone&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Views&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Views&lt;/li&gt;&lt;li&gt;Views UI&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;Luego, en el menú Construcción del Sitio -&gt; Views, activo la vista del calendar, finalmente agrego el bloque Calendar. al darle guardar ya sale el Calendario... salvo por el siguiente mensaje, que tiene que ver con la configuración de fecha del manejador de la Base de Datos (ya tendré que chequearlo, pues desaparece al continuar con el trabajo):&lt;br /&gt;&lt;blockquote&gt;&lt;div class="messages error"&gt;  &lt;ul&gt;&lt;li&gt;warning: pg_query() [&lt;a href="http://localhost/drupal/function.pg-query"&gt;function.pg-query&lt;/a&gt;]: Query failed: ERROR: error de sintaxis en o cerca de «'2008-02-15 12:00:00 UTC'» at character 1 in /var/www/drupal/includes/database.pgsql.inc on line 139.&lt;/li&gt;&lt;li&gt;user warning:  query: '2008-02-15 12:00:00 UTC' AT TIME ZONE 'US/Central' in /var/www/drupal/modules/date/date_api_sql.inc on line 96.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-3719060831545786463?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/3719060831545786463/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=3719060831545786463' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/3719060831545786463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/3719060831545786463'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/08/montando-un-sitio-web-con-drupal_11.html' title='Montando un sitio web con Drupal (Calendario)'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-589226791806945293</id><published>2009-08-11T16:23:00.008-04:30</published><updated>2009-08-14T14:06:41.660-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='módulos de drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='noticias en drupal'/><title type='text'>Montando un sitio web con Drupal (Noticias)</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Montando un sitio web con Drupal - segunda parte&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Instalar un Módulo: Noticias&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Mirando la lista de módulos, he encontrado varios&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Innovation News&lt;/li&gt;&lt;li&gt;Google News (permite "inscrustar" noticias de Google en el sitio)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;News Page&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Éste último, require el módulo Aggregator que está en el Core Opcional. Este módulo aggregator es para          Integra contenido sindicado RSS, RDF y Atom. Adicionalmente, es el más sencillo de utilizar... por ahora, con ese me quedo... al rato probaré el Innovation News y les cuento&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-589226791806945293?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/589226791806945293/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=589226791806945293' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/589226791806945293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/589226791806945293'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/08/montando-un-sitio-web-con-drupal_6202.html' title='Montando un sitio web con Drupal (Noticias)'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-2829040724167108811</id><published>2009-08-11T14:32:00.004-04:30</published><updated>2009-08-11T15:24:20.137-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><title type='text'>Montando un sitio web con Drupal (primera parte)</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Montando un sitio web con Drupal - Primera parte&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Empezando: instalación inicial&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En mi trabajo tenemos nuestro propio hosting, así que muchos de los traspies nos llevamos nosotros mismos... En realidad ya tenía un sitio montado y funcionando con Drupal, pero ocurrió el desastre! se dañó el disco duro del servidor y no tenías más que unos respaldos de hace más de 6 meses... y yo, que fue quien montó el drupal, no tenía nada documentado, otro desastre!&lt;br /&gt;&lt;br /&gt;Pues bien, he decidido apuntar todo acá, esta vez voy a ir montando módulo por módulo, y a cada uno lo voy a escribir por acá, a efectos de que no se me olvidé y no tenga el desorden que tenía (al menso intentaré minimizarlo). De paso, al tiempo que sirva como recordatorio (como siempre, chuletario), pueda que alguien que necesite consiga informaicón, y por último, quizás alguien sepa cómo hacer mejor algo de lo que yo escribo y me tire una mano...&lt;br /&gt;&lt;br /&gt;Lo primero, una instalación tan normalita como la tira la página oficial, sobre postgresql, incluso con mi idioma por defecto. En la primera entrada, dice en inglés, que para cambiar el idioma simplemente hay que descargar el paquete, descomprimir  y copiar todo en la raiz de drupal. tuve mis dudas, pero como es local en mi computadora ¿qué podía perder? tan cierto como decía la instrucción.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-2829040724167108811?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/2829040724167108811/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=2829040724167108811' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/2829040724167108811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/2829040724167108811'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/08/montando-un-sitio-web-con-drupal.html' title='Montando un sitio web con Drupal (primera parte)'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-2439611002592025939</id><published>2009-07-20T16:03:00.002-04:30</published><updated>2009-07-20T16:40:21.185-04:30</updated><title type='text'>Auditoria para los registros de BD en Postgresql con tablelog (I parte)</title><content type='html'>&lt;div style="text-align: justify;"&gt;Es posible, que alguna vez haga falta realizar auditoría de los datos de algún sistema. Algo así como, quien hizo qué y cuándo. Dicho de otro modo, supongamos que existe el sistema de catastro de X institución, y que varios usuarios alimentan, de manera que varios usuarios podrían, ocasionalmente, insertar, modificar y/o eliminar registros... ¿pero cuál de ellos insertó/modificó/eliminó el registro X? de algo de eso se trata esto...&lt;br /&gt;&lt;br /&gt;Existen varias formas de realizar este tipo de auditorías, siempre va a depender de la necesidad, por lo que el más seguro será el que esté hecho a la medida. También, existen diferentes formas de hacerlo, revisando los logs del sistema, etc.&lt;br /&gt;&lt;br /&gt;En este post, sólo trataré de traducir lo que dice en el sitio oficial de &lt;a href="http://andreas.scherbaum.la/blog/archives/100-Log-Table-Changes-in-PostgreSQL-with-tablelog.html"&gt;tablelog&lt;/a&gt; y mis comentarios sobre el cómo lo estoy haciendo funcionar.&lt;br /&gt;&lt;br /&gt;Paso a paso:&lt;br /&gt;&lt;/div&gt;&lt;ol style="text-align: justify;"&gt;&lt;li&gt;Descargar los fuentes de: &lt;a href="http://pgfoundry.org/"&gt;pgfoundry&lt;/a&gt; &lt;a href="http://pgfoundry.org/projects/tablelog/"&gt;http://pgfoundry.org/projects/tablelog&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Desempaquetar el archivo, cambiarse la directorio donde acaba de descomprimirse, y ejecutar en la cónsola: &lt;span style="font-family: courier new;font-family:arial,helvetica,sans-serif;" &gt;make -f Makefile.nocontrib . &lt;span style="font-family: georgia;"&gt;Esto debería ejecutar sin problemas, sí obtiene algún error, es posible que necesite la versión de desarrollo de su versión  de Postgresql. Sí la compilación se realizó con éxito, la librería ya está instalada.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-family: georgia;"&gt;Como root, ejecutar: &lt;span style="" onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span style="font-family: courier new;"&gt;Makefile.nocontrib make-f install&lt;/span&gt; . &lt;/span&gt;&lt;span style="" onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;Esto instalará la biblioteca en el directorio de la biblioteca de PostgreSQL.&lt;/span&gt;&lt;/li&gt;&lt;li style="font-family: georgia;"&gt;&lt;span style="" onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;Ahora le decimos a la BD que queremos utilizar tablelog. Recordemos que tenemos que tener &lt;span style="font-family: arial; font-weight: bold;"&gt;plpgsql&lt;/span&gt; instalado para la BD a auditar. Conectados como superusuario (de la BD) ejecutamos para la BD que deseamos el script: &lt;span style="font-family: arial;"&gt;table_log.sql&lt;/span&gt; . Además de crear la estructura necesaria, le creará un par de tablas (&lt;span style="font-family: arial;"&gt;test&lt;/span&gt; y &lt;span style="font-family: arial;"&gt;test_log&lt;/span&gt;) para que pueda observar más o menos el funcionamiento de tablelog.&lt;/span&gt;&lt;/li&gt;&lt;li style="font-family: georgia;"&gt;&lt;span style="" onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt; Después de esto usted puede añadir algunas funciones de apoyo que harán la vida más fácil, usted puede encontrar en el archivo &lt;span style="font-family: arial;"&gt;table_log_init.sql&lt;/span&gt;.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="" onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;Y esto es todo, ahora puede utilizar tablelog en su base de datos.&lt;/span&gt; Con tablelog se pueden hacer algunas otras cosas algunas, de las que se habla en el sitio original... y en el código fuente jeje&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-2439611002592025939?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/2439611002592025939/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=2439611002592025939' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/2439611002592025939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/2439611002592025939'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/07/auditoria-para-los-registros-de-bd-en.html' title='Auditoria para los registros de BD en Postgresql con tablelog (I parte)'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-7394430709406074264</id><published>2009-06-23T14:24:00.004-04:30</published><updated>2009-06-23T14:31:38.935-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='software libre'/><category scheme='http://www.blogger.com/atom/ns#' term='conocimiento libre'/><category scheme='http://www.blogger.com/atom/ns#' term='eventos'/><title type='text'>VI Foro de Conocimiento Libre: Construyendo en Comunidad</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://viforo.solve.net.ve/"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 286px; height: 282px;" src="http://viforo.solve.net.ve/wp-content/uploads/2009/05/logo1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;El VI Foro Mundial de Conocimiento Libre se realizará en la ciudad de Mérida, Estado Mérida desde el 4 al 8 de Mayo de 2009. El Centro Cultural Tulio Febres es el recinto que acogerá este evento.&lt;/p&gt; &lt;p&gt;El VI Foro Mundial de Conocimiento Libre es un evento internacional, multitemático, abierto e incluyente organizado en conjunto con comunidades de investigadores, profesionales y usuarios, la empresa privada y el Gobierno Bolivariano.&lt;br /&gt;Ejes Temáticos&lt;/p&gt; &lt;p&gt;Este año, el Foro Mundial de Conocimiento Libre abarcará temas englobados en varias áreas de interés. Es importante resaltar que en esta edición se busca dar énfasis a la construcción de comunidades locales para la construcción de conocimiento libre.&lt;/p&gt;&lt;p&gt;Las actividades estarán entre charlas, talleres, juegos, demostraciones, plenarias y demás.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Visita: &lt;a href="http://viforo.solve.net.ve/"&gt;http://viforo.solve.net.ve/&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-7394430709406074264?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/7394430709406074264/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=7394430709406074264' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/7394430709406074264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/7394430709406074264'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/06/vi-foro-de-conocimiento-libre.html' title='VI Foro de Conocimiento Libre: Construyendo en Comunidad'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-4480741949190899050</id><published>2009-06-18T13:41:00.003-04:30</published><updated>2009-06-18T13:46:53.944-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>Campos calculados desde PostGreSQL (I)</title><content type='html'>Vale... He aquí la necesidad: Necesito una consulta que entre sus resultados, hay una columna que es calculada de la forma:&lt;br /&gt;&lt;br /&gt;r = ((a / b) * 1000)&lt;br /&gt;&lt;br /&gt;donde b debe ser mayor que cero, obviamente&lt;br /&gt;&lt;br /&gt;En SQL (para postgresql) va algo así:&lt;br /&gt;&lt;br /&gt;SELECT&lt;br /&gt;  CASE WHEN SUM(b) &gt; 0 THEN&lt;br /&gt;    round(((SUM(a) / SUM(b)) * 1000),2)&lt;br /&gt;  ELSE 0&lt;br /&gt;  END&lt;br /&gt;  AS rendimiento&lt;br /&gt;FROM miTabla&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-4480741949190899050?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/4480741949190899050/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=4480741949190899050' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/4480741949190899050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/4480741949190899050'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/06/campos-calculados-desde-postgresql-i.html' title='Campos calculados desde PostGreSQL (I)'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-8589590894477118100</id><published>2009-06-17T21:59:00.003-04:30</published><updated>2009-06-17T22:11:11.256-04:30</updated><title type='text'>Viveza Criolla</title><content type='html'>Viveza Criolla es el título de una presentación que me llegó a mi correo, de esos que llegan sin uno pedirlos, ya saben, cadenas creo que le dicen...&lt;br /&gt;&lt;br /&gt;Cosa que normalmente descarto rápidamente... Este, lo tiraría rápidamente, pues toca el tema político, tan álgido como la gerra santa entre Linux y M$, o entre Postgresql y Mysql, pero que he decidido colcarlo acá, un poco para no olvidar que tirar la basura donde no es, es una mala idea...&lt;br /&gt;&lt;br /&gt;Lamentablemente desconozco el autor intelectual de la obra, a quien tendría que agradecer por ser tan sincero por la descripción que da a mi país y su gente (entre los que entreo yo). Bue... ahí se los dejo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;“Se necesita materia prima para construir un país” &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Acabo de recibir este mensaje y es uno de los mejores que he visto en mucho tiempo... &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Así como empleamos el tiempo en mandar chistes a todos nuestros amigos, considero mucho más importante correr la voz con este tipo de contenidos. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Tomen de él lo que les sirva para pensar&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;La creencia general es que Lusinchi no servía, como así tampoco Pérez y Caldera. Hoy se dice que Chávez no sirve, pero, quienquiera que venga después de Chávez, tampoco  servirá para nada. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Por eso estoy empezando a sospechar que el problema no está en lo ladrón y corrupto que haya sido Carlos Andrés Pérez, o en lo autocrático que es Chávez.  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;El problema está en nosotros, nosotros como pueblo, nosotros como materia prima de un País. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Porque pertenecemos a un país donde la “viveza criolla" es moneda valorada tanto o más que el dólar. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Un país donde hacerse rico de la noche a la mañana es una  virtud más apreciada que formar una familia a largo plazo,  basada en valores morales y respeto por los demás. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Pertenecemos a un país donde, lamentablemente, los periódicos jamás podrán venderse como se venden en otros países, es decir, poniendo unas cajitas en las aceras donde uno paga por un solo periódico y saca un solo periódico dejando los demás donde están.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Pertenecemos un país donde los lugares de trabajo son, entre otras cosas, las papelerías particulares de sus empleados deshonestos que llevan a su casa, como propias, hojas de papel, lapiceros, bolígrafos, lápices, marcadores y todo lo que pueda hacer falta para la tarea de sus hijos.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Pertenecemos a un país donde la gente se siente triunfante si consigue colgarse del cable del vecino y donde la gente “inventa’’ a la hora de llenar sus declaraciones, para pagar   menos impuestos, o directamente para no pagarlos.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Pertenecemos a un país donde la impuntualidad es un hábito,  donde los directivos de las empresas no generan capital humano, donde las personas tiran basura en las calles y luego reclaman al gobierno porque las calles están sucias o se tapan las alcantarillas, donde no existe la cultura por la lectura y donde no hay conciencia ni memoria política, histórica o económica. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Donde nuestros diputados trabajan dos días al año (y cobran todos los demás como altos ejecutivos) para aprobar una reforma fiscal al vapor, que lo único que hace es hundir al que no tiene, joder al que tiene poco y beneficiar sólo a unos pocos. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Pertenecemos a un país donde las licencias de conducir y los certificados médicos se pueden "comprar", sin hacer ningún examen. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Un país donde puede subir una persona de edad avanzada, una mujer con un niño en brazos, o algún minusválido y la persona que viene sentada en el asiento especial para estas personas se hace la dormida para no dárselo y si alguien le reclama se levantará pero para dar un golpe o decir una mala palabra. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Un país en el cual la prioridad de paso es para los chóferes y no para el peatón. Un país donde su gente está llena de faltas, a las que ignora, pero que disfruta criticando a sus gobernantes. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Mientras más le diga rata a Pérez, mejor soy yo como persona, pese a que apenas ayer me consiguieron todas las preguntas del examen de matemáticas de mañana. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Mientras más le diga autócrata a Chávez, mejor soy yo como Venezolano, a pesar de que apenas esta mañana estafé a mi cliente a través de un fraude, lo que me ayudó a pagar algunas deudas. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;No, No, No. YA BASTA!!!. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Como “Materia Prima” para un país serio, tenemos muchas cosas   buenas, pero nos falta muchísimo para ser los hombres y  mujeres que nuestro País realmente necesita. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Esos defectos, esa alardeada “viveza criolla" congénita, esa deshonestidad en pequeña escala que después crece y evoluciona hasta convertirse en casos de escándalo, esa falta de calidad humana, más que Lusinchi, Pérez, Caldera  o Chávez, es lo que nos tiene real y francamente mal, porque éstos no han sido ni más ni menos que nuestros presidentes, óigase y entiéndase bien, nuestros presidentes, nacidos  aquí y no en otra parte.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Lo siento. Porque, aunque Chávez renunciara hoy mismo, el próximo presidente que lo suceda tendrá que seguir trabajando con la misma materia prima defectuosa que, como pueblo, somos nosotros mismos. Y no podrá hacer nada.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;No tengo ninguna garantía de que alguien lo pueda hacer mejor, pero mientras nadie señale un camino destinado a erradicar primero los vicios que tenemos como pueblo, nadie servirá. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;No sirvió Lusinchi, ni Pérez, ni Caldera, no sirve Chávez, ni servirá el que venga.  ¿O qué?... Es que necesitamos traer a un dictador, para que nos haga cumplir la ley por la fuerza y a los palos? &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Aquí hace falta otra cosa, algo más que “cacerolazos” o “marchas”. Y mientras esa "otra cosa" no empiece a surgir desde abajo hacia arriba, o desde arriba hacia abajo, o del centro para los lados, o como quieran, seguiremos igualmente condenados, igualmente estancados... igualmente sumergidos!!! &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Es muy bueno ser Venezolano. Pero cuando esa Venezolaneidad autóctona empieza a hacerle daño a nuestras posibilidades de desarrollo como Nación, ahí la cosa cambia... &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;No esperemos encenderle una velita a todos los Santos, a ver si nos manda un Mesías. Si nosotros tenemos que cambiar, un presidente diferente, con los mismos Venezolanos, no se podrá hacer nada. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Está muy claro... Somos nosotros los que tenemos que cambiar. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Ahora, después de este mensaje, francamente he decidido buscar al responsable, no para castigarlo, sino para exigirle (sí, exigirle) que mejore su comportamiento y que no se haga el que no oye, el que no entiende. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Sí, he decidido buscar al responsable! Estoy seguro que lo encontraré apenas me mire en el espejo Ahí estará, no necesito buscarlo en otro lado. y tu, ¿que piensas?...... &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;REFLEXIONA CARAJO!!!!!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-8589590894477118100?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/8589590894477118100/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=8589590894477118100' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/8589590894477118100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/8589590894477118100'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/06/viveza-criolla.html' title='Viveza Criolla'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-178152882647527137</id><published>2009-06-02T14:11:00.004-04:30</published><updated>2009-06-02T14:15:39.319-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='compiz'/><category scheme='http://www.blogger.com/atom/ns#' term='xorg'/><category scheme='http://www.blogger.com/atom/ns#' term='vit'/><title type='text'>VIT Serie D2000, configurar video y compiz</title><content type='html'>Un poco, para que no se me pierda de vista, un blog en el que hablan sobre la configuración del video a 1280 x 800 y la instalación de compiz en la VIT&lt;br /&gt;&lt;br /&gt;http://laptop-vit.blogspot.com/&lt;br /&gt;&lt;br /&gt;Vale decir que para mi portátil, el xorg.conf queda algo distinto, al rato lo copio por acá...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-178152882647527137?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/178152882647527137/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=178152882647527137' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/178152882647527137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/178152882647527137'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/06/vit-serie-d2000-configurar-video-y.html' title='VIT Serie D2000, configurar video y compiz'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-2976674773211285722</id><published>2009-05-28T17:53:00.005-04:30</published><updated>2009-09-03T16:13:02.229-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='migración de datos sql'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>Migrar Datos de una tabla a otra, con ligeras diferencias</title><content type='html'>Eu!&lt;br /&gt;&lt;br /&gt;Siguiendo el tema de las migraciones, recientemente me tocó que pasar unos datos, de una tabla a otra, que contenían ligeras diferencias, par de campos de tipo real y double precsion pasaban a ahora a numeric, más algunos campos menos que tenía la tabla destino.&lt;br /&gt;&lt;br /&gt;Sencillo, me hice una query que insertara según lo que leyera:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;INSERT INTO agri04 (id, reg_001, est_001, mun_001, par_001, cpo_001, agri04_001, agri03_001, agri04_003, agri04_004, agri04_005, agri04_006, agri04_007, agri04_008) (SELECT id, codreg, codest, codmun, codpar, codcen, EXTRACT(YEAR FROM fecha), id_det, fund, reno, ssem, scos, prod, valor FROM agricolav);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El tema de los tipos de datos, en vista de la fortuna de que ambos eran números con decimales, sólo tuve que seleccionar el tamaño de los numerics, que al final quedaron de (12,2) algunos, y otros de (10,2).&lt;br /&gt;&lt;br /&gt;Otro caso:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;INSERT INTO municipios&lt;br /&gt;(gid, id, municipio, estado, the_geom)&lt;br /&gt;(SELECT gid, id, municipio,&lt;br /&gt;  CASE&lt;br /&gt;    WHEN estado = 'Mrida' THEN 14&lt;br /&gt;    WHEN estado = 'Tchira' THEN 20&lt;br /&gt;    WHEN estado = 'Trujillo' THEN 21&lt;br /&gt;  END,&lt;br /&gt;the_geom FROM municipios_region);&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-2976674773211285722?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/2976674773211285722/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=2976674773211285722' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/2976674773211285722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/2976674773211285722'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/05/migrar-datos-de-una-tabla-otra-con.html' title='Migrar Datos de una tabla a otra, con ligeras diferencias'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-3367421029716155033</id><published>2009-04-17T08:34:00.003-04:30</published><updated>2009-09-08T10:27:34.718-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='postgis'/><category scheme='http://www.blogger.com/atom/ns#' term='sigs'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>Conectar Postgis a Postgresql</title><content type='html'>Hola... como siempre, esto es para yo tener dónde buscar cuando se me olviden las cosas... sí de paso le sirve a alguien, pues... quizás publique mi número de cuenta por sí quieren donar algo, jajajaja, es broma...&lt;br /&gt;&lt;br /&gt;Para que una BD (en Postgresql), pueda servir a efectos de un SIG, debemos trabajar con Postgis, de manera que, creamos la BD:&lt;br /&gt;   CREATE DATABASE mapas;&lt;br /&gt;   CREATE LANGUAGE plpgsql;&lt;br /&gt;&lt;br /&gt;Obviamente debemos tener instalado postgis, que en Debian es suficiente con aptitude install postgresql-tuversion-postgis (por si dudas, aptitude search postgis), con lo que en /usr/share/postgresql-miversion-postgis/ tengo los .sql necesarios.&lt;br /&gt;&lt;br /&gt;psql -d mapas -f lwpostgis.sql&lt;br /&gt;psql -d mapas -U carbonara -f spatial_ref_sys.sql&lt;br /&gt;&lt;br /&gt;y listo! ya la BD mapas se puede utilizar como almacen de un SIG&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-3367421029716155033?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/3367421029716155033/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=3367421029716155033' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/3367421029716155033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/3367421029716155033'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/04/conectar-postgis-postgresql.html' title='Conectar Postgis a Postgresql'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-4450911552767726454</id><published>2009-04-02T11:21:00.004-04:30</published><updated>2009-04-02T11:53:39.440-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><category scheme='http://www.blogger.com/atom/ns#' term='migración mysql a postgresql'/><category scheme='http://www.blogger.com/atom/ns#' term='dbi-link'/><title type='text'>Migrar BD de Mysql a PostGreSQL (parte 2)</title><content type='html'>Después de no sé cuánto tiempo me he decidido a migrar la BD que tengo en mysql a Postgresql. Las razones no son importantes, o más bien es justamente eso, son datos tan importantes que es un crímen tenerlos en mysql...&lt;br /&gt;&lt;br /&gt;Para esta demostración voy a utilizar unas tablas básicas que son similares a esto:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;CREATE TABLE `Region` (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  `codreg` char(2) NOT NULL default '',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  `nomreg` varchar(35) NOT NULL default '',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  PRIMARY KEY  (`codreg`)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Tabla de Region';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;CREATE TABLE `Estado` (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  `codreg` char(2) NOT NULL default '',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  `codest` char(2) NOT NULL default '',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  `nomest` varchar(35) NOT NULL default '',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  PRIMARY KEY  (`codreg`,`codest`)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;) ENGINE=MyISAM DEFAULT CHARSET=latin1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Con estas dos tablas se pueden observar ya varios detalles, la utilización de mayúsculas y minúsculas para el nombre de las tablas y la falta de integridad referencial, por otro lado la nueva BD está en utf8 (no es de mi agrado, pero es el acuerdo en que se llegó en la oficina).&lt;br /&gt;&lt;br /&gt;Una vez hecho lo escrito en la &lt;a href="http://programacionlibre.blogspot.com/2008/01/migrar-bd-de-mysql-postgresql-parte-1.html"&gt;primera parte de este post&lt;/a&gt; he creado un esquema dentro de la misma BD en Postgresql, de manera de leer y copiar en la misma BD, pero en diferentres esquemas. El esquema lo he llamado migracion, donde debo crear las tablas tal y como las necesito, de manera que:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;CREATE TABLE region (&lt;br /&gt;codreg character varying(2) NOT NULL,&lt;br /&gt;nomreg character varying(50) NOT NULL&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;ALTER TABLE migracion.region OWNER TO carbonara;&lt;br /&gt;&lt;br /&gt;ALTER TABLE ONLY region&lt;br /&gt;ADD CONSTRAINT region_pkey PRIMARY KEY (codreg);&lt;br /&gt;&lt;br /&gt;CREATE TABLE estado (&lt;br /&gt;codreg character varying(2) NOT NULL,&lt;br /&gt;codest character varying(2) NOT NULL,&lt;br /&gt;nomest character varying(50) NOT NULL&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;ALTER TABLE ONLY estado&lt;br /&gt;  ADD CONSTRAINT estado_pkey PRIMARY KEY (codreg, codest);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ALTER TABLE ONLY estado&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ADD CONSTRAINT estado_fkey FOREIGN KEY (codreg) REFERENCES region(codreg) ON UPDATE CASCADE ON DELETE RESTRICT;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Luego, el sql que lee de un lado y escribe del otro:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;INSERT INTO migracion.region (codreg, nomreg) SELECT codreg, nomreg FROM "Region";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;INSERT INTO migracion.estado (codreg, codest, nomest) SELECT codreg, codest, nomest FROM "Estado"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;y listo! Todavía no entiendo por qué me tardé tanto en escribir este post, pero bue...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-4450911552767726454?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/4450911552767726454/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=4450911552767726454' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/4450911552767726454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/4450911552767726454'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/04/migrar-bd-de-mysql-postgresql-parte-2.html' title='Migrar BD de Mysql a PostGreSQL (parte 2)'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-7327336256101582715</id><published>2009-01-06T10:23:00.007-04:30</published><updated>2009-01-06T11:36:24.976-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='p4a'/><title type='text'>P4A: el main de mis aplicaciones</title><content type='html'>Hace un par de meses que he tratado de mirar los frameworks de desarrollo para ganar tiempo, ya que en el trabajo, el tiempo no es lo que más sobra... finalmente, me decidí a probar uno, &lt;a href="http://p4a.crealabsfoundation.org/"&gt;P4A&lt;/a&gt; un RAD de PHP.&lt;br /&gt;&lt;br /&gt;La propaganda de lo bueno, se los dejo para que lo revisen en la propia página del proyecto.&lt;br /&gt;&lt;br /&gt;Como siempre, lo que necesito es tener donde buscar cuando no me cuerde de algo... de paso, como no soy programador avanzado, quizás a alguién más como yo, le pueda servir...&lt;br /&gt;&lt;br /&gt;Estoy tratando de que los sistemas hechos en el trabajo (y los míos propios) tengan una especie de información sobre la autoría del proyecto (donde, con qué, por qué con eso, etc... además del quién, claro está), de manera que una de las opciones del menú está siendo la página principal donde espero encontrar cómo explicar esos detallitos...&lt;br /&gt;&lt;br /&gt;Para empezar, no por el principio (index), tengo un main.php así:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;setTitle("lugar donde trabajo &lt;br /&gt;&lt;br /&gt;          oficina a la que pertenezco&lt;br /&gt;&lt;br /&gt;          nombre del sistema       &lt;br /&gt;&lt;br /&gt;          Bienvenidos");&lt;br /&gt;&lt;br /&gt;      $icono =&amp;amp; $this-&gt;build("p4a_image","icono");&lt;br /&gt;      $icono-&gt;setIcon("gnome-globe.png");&lt;br /&gt;&lt;br /&gt;      $this-&gt;build('P4A_Message',"mensaje")&lt;br /&gt;          -&gt;setIcon('status')&lt;br /&gt;          -&gt;setValue("contenido descriptivo");&lt;br /&gt;&lt;br /&gt;      $frm =&amp;amp; $this-&gt;build("p4a_frame","frame");&lt;br /&gt;      $frm-&gt;anchorCenter($icono);&lt;br /&gt;      $frm-&gt;anchorCenter($this-&gt;mensaje);&lt;br /&gt;&lt;br /&gt;      $p4a =&amp;amp; p4a::singleton();&lt;br /&gt;&lt;br /&gt;      $this-&gt;display("menu", $p4a-&gt;menu);&lt;br /&gt;      $this-&gt;display("main",$frm);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;?&gt;&lt;br /&gt;&lt;/span&gt;Se entiende? espero que sí, sino, pregunta...&lt;br /&gt;&lt;br /&gt;Entre lo poco que puedo decir:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;setTitle:&lt;/span&gt; que permite definir un título a la máscara. Talcual escribamos ahí, aparecerá&lt;br /&gt;El objeto &lt;span style="font-weight: bold;"&gt;P4A_Image&lt;/span&gt;: que permite definir una imágen para publicar en la máscara&lt;br /&gt;El objeto &lt;span style="font-weight: bold;"&gt;P4A_Message&lt;/span&gt;: que utilizo para tirar un texto cualquiera, que describa el sistema. Podría utilizarse para meter algunos tips de ayuda del sistema, por ejemplo.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-7327336256101582715?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/7327336256101582715/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=7327336256101582715' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/7327336256101582715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/7327336256101582715'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/01/p4a-el-main-de-mis-aplicaciones.html' title='P4A: el main de mis aplicaciones'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-1868299194589745134</id><published>2009-01-06T08:21:00.004-04:30</published><updated>2009-01-06T09:27:23.922-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><title type='text'>Subversion 1ra parte: Repositorio Local</title><content type='html'>Buscando un poco se encuentran muchos enlaces sobre qué es subversion, cómo instalarlo, configurarlo y usarlo, pero como cada quien tiene su manera de explicar, es posible que me resulte más fácil entender mis garabatos...&lt;br /&gt;&lt;br /&gt;Para esta parte, me ha ido bien:&lt;br /&gt;http://picandocodigo.net/2008/08/repositorio-subversion-local/&lt;br /&gt;http://sherekan.com.ar/2008/03/25/instalacion-configuracion-y-uso-de-subversion-en-linux/&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Instalación&lt;/span&gt;&lt;br /&gt;En mi caso, uso Debian Linux, así que:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;aptitude install subversion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Configuración&lt;/span&gt;&lt;br /&gt;Crear un grupo, donde se incluirán todos los usuarios que podrán acceder al servidor de control de versiones:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;groupadd subversion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Agregar el primer usuario, o sea, a mi, al grupo que acabamos de crear:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;addgroup cesar subversion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Tengo un directorio de desarrollo bajo /var/www con el nombre de sistemas, y uno para pruebas en mi home, llamado desarrollo, de manera que tengo /var/www/sistemas y /home/cesar/www/desarrollo, ahora bien, voy a crear el directorio donde estarán los repositorios de versiones en mi home, quedando: /home/cesar/www/svn donde creare mi primer repositorio&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;computacion06:/home/cesar/www/svn# svnadmin create viaticos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Como estoy en un máquina local, la importación de archivos al repositorio de versiones, sería algo así:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;svn import /var/www/sistemas/viaticos file:///home/cesar/www/svn/viaticos/&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;y listo! aún no se qué está listo, pero está! jeje&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-1868299194589745134?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/1868299194589745134/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=1868299194589745134' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/1868299194589745134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/1868299194589745134'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2009/01/subversion-1ra-parte-repositorio-local.html' title='Subversion 1ra parte: Repositorio Local'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-6839716795468684614</id><published>2008-11-25T10:17:00.003-04:30</published><updated>2009-01-06T09:28:08.582-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='software libre'/><title type='text'>Por qué Linux es mejor</title><content type='html'>Interesante artículo que dice "Creo que la gente no va a cambiar a Linux porque es libre (a ellos probablemente no les interese) o porque es gratis (ellos probablemente piensen que no pagaron por Windows), sino tal vez porque vean nuevas, buenas características que Windows no tiene. Entonces aqui hay algunas razones de porque Linux es lo máximo!"&lt;br /&gt;&lt;br /&gt;Aunque no concuerdo mucho con la parte donde listan cuatro razones únicas (también muy conocidas) por las cuales deberías seguir usando Windows, ya que el punto 3 me parece se lo lleva la gente de Mac, y con absoluta razón! y el punto 4, pues... puro mito hoy en día...&lt;br /&gt;&lt;br /&gt;El artículo lo pueden revisar en: http://www.whylinuxisbetter.net/index_es.php?lang=es&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-6839716795468684614?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/6839716795468684614/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=6839716795468684614' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/6839716795468684614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/6839716795468684614'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2008/11/por-qu-linux-es-mejor.html' title='Por qué Linux es mejor'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-6875018910878439501</id><published>2008-11-07T22:32:00.007-04:30</published><updated>2008-11-11T22:16:56.228-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='scanner'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='epson'/><title type='text'>scanner epson cx5600 en Debian Lenny</title><content type='html'>Tengo guardadas unas fotos viejas de cuando mi padre era niño, mi hermano,y bueno... llegó la hora de escanearlas...&lt;br /&gt;&lt;br /&gt;Tal resulta que mi suegra tiene una multifuncional Epson Stylus CX5600, así que la pedí prestada a ver que tanto era, sobre mi flamante Debian Lenny... he aquí el resultado:&lt;br /&gt;&lt;br /&gt;Al conectarla, tiré en la cónsola un lsusb:&lt;br /&gt;Bus 003 Device 002: ID 04b8:083f Seiko Epson Corp. Stylus DX4450&lt;br /&gt;&lt;br /&gt;Así que le pregunté a google:&lt;br /&gt;http://www.google.co.ve/search?source=ig&amp;hl=es&amp;rlz=1G1GGLQ_ESVE247&amp;=&amp;q=Seiko+Epson+Corp.+Stylus+DX4450&amp;btnG=Buscar+con+Google&amp;meta=&lt;br /&gt;&lt;br /&gt;donde seleccioné:&lt;br /&gt;http://forums.debian.net/viewtopic.php?p=184665&amp;sid=17531ff2fb037fecc036f9afa9f5f5f4&lt;br /&gt;&lt;br /&gt;visité:&lt;br /&gt;http://www.avasys.jp/lx-bin2/linux_e/spc/DL2.do y descargué lo referente al apartado:&lt;br /&gt;Scanner Driver&lt;br /&gt;Download for Epson Stylus CX4300/CX4400/CX4450/CX5500/CX5600/DX4400/DX4450 (for gcc 3.4 or later)&lt;br /&gt;&lt;br /&gt;Decidí ir probando hasta que fuera necesario, vi muchas cosas... hice un update a xsane y derivados, instalé sane y sane-utils, el alien...&lt;br /&gt;&lt;br /&gt;Convertí los rpm a deb:&lt;br /&gt;alien --scripts iscan-2.10.0-1.i386.rpm&lt;br /&gt;alien --script iscan-plugin-cx4400-2.0.0-0.c2.i386.rpm&lt;br /&gt;&lt;br /&gt;empecé a instalar los .deb&lt;br /&gt;dpkg -i iscan_2.10.0-2_i386.deb &lt;br /&gt;&lt;br /&gt;donde me tiró error, por lo que siguiendo las instrucciones:&lt;br /&gt;dpkg --force-overwrite --force-conflicts --install iscan_2.10.0-2_i386.deb&lt;br /&gt;&lt;br /&gt;luego&lt;br /&gt;dpkg -i iscan-plugin-cx4400_2.0.0-1_i386.deb&lt;br /&gt;&lt;br /&gt;lsusb: ya vimos qué me devolvió&lt;br /&gt;&lt;br /&gt;edité: /etc/sane.d/dll.conf donde comenté epson y epson2, y agregué epkowa&lt;br /&gt;&lt;br /&gt;comparé con la receta, tirando en la cónsola como root: &lt;br /&gt;sane-find-scanner -q&lt;br /&gt;y luego:&lt;br /&gt;scanimage -L&lt;br /&gt;&lt;br /&gt;agregué mi usuario al grupo escanner:&lt;br /&gt;adduser username scanner&lt;br /&gt;&lt;br /&gt;reinicié, y probé xsane.... y listo!!! ya pude escanear...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-6875018910878439501?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/6875018910878439501/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=6875018910878439501' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/6875018910878439501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/6875018910878439501'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2008/11/scanner-epso0n-cx5600-en-debian-lenny.html' title='scanner epson cx5600 en Debian Lenny'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-7208977273189452766</id><published>2008-08-10T00:25:00.006-04:30</published><updated>2010-10-05T10:14:33.564-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='vit'/><title type='text'>Hacer funcionar WebCam integrada en la portátil de fabricante Ali Corp</title><content type='html'>Bueno... Me había prometido pasar a Debian mi portátil nueva para mis vacaciones, y así estoy haciendo...&lt;br /&gt;&lt;br /&gt;Decir que la tenía con Ubuntu, funcionando chevere, pero ya que tengo una semana libre, me decidí, aprovechando también el mirror que tenemos en la oficina.&lt;br /&gt;&lt;br /&gt;Tenía ganas de aventurarme con 64bits, y Lenny, pero al final me quedé con 32 bits...&lt;br /&gt;&lt;br /&gt;Hasta ahora, sólo me he conseguido con 3 pequeños problemas, que estoy resolviendo, y a medida que las pegue, las iré comentando por acá...&lt;br /&gt;&lt;br /&gt;La portátil tiene webcam integrada, que al darle lsusb me arroja que el fabricante es Ali Corp. por lo que procedí a googlear un poco, y he aquí la solución para hacerla funcionar.&lt;br /&gt;&lt;br /&gt;instalar libpt-1.10.10-plugins-v4l2&lt;br /&gt;aptitude install module-assistant (http://www.esdebian.org/wiki/module-assistant)&lt;br /&gt;dejar listo el módulo linux-uvc con m-a&lt;br /&gt;cargarlo con modcon&lt;br /&gt;y listo!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-7208977273189452766?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/7208977273189452766/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=7208977273189452766' title='7 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/7208977273189452766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/7208977273189452766'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2008/08/hacer-funcionar-webcam-integrada-en-la.html' title='Hacer funcionar WebCam integrada en la portátil de fabricante Ali Corp'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-1914188726966854878</id><published>2008-05-29T22:44:00.001-04:30</published><updated>2008-05-29T22:46:31.514-04:30</updated><title type='text'>Queremos establecer un récord Guinness mundial</title><content type='html'>Por ahora, no voy a escribir nada en esta entrada del blog, y que el botón hable por sí sólo...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.spreadfirefox.com/es-ES/worldrecord"&gt;&lt;img alt="Download Day 2008" title="Download Day 2008" src="http://www.spreadfirefox.com/sites/all/themes/spreadfirefox_RCS/images/download-day/buttons/es-ES/468x60_dday.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;La noticia completa, y los datos de cómo vamos:&lt;br /&gt;http://www.spreadfirefox.com/es-ES/worldrecord/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-1914188726966854878?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/1914188726966854878/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=1914188726966854878' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/1914188726966854878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/1914188726966854878'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2008/05/queremos-establecer-un-rcord-guinness.html' title='Queremos establecer un récord Guinness mundial'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-7175659048638523821</id><published>2008-04-27T13:17:00.004-04:30</published><updated>2009-06-02T14:15:58.613-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='vit'/><title type='text'>Mi nueva Portátil VIT D2010</title><content type='html'>Desde hace tiempo estaba con ganas de comprarme un computadora portátil, pero por falta de dinero, pues... hasta que decidí prestar mayor atención y ver quién me la daba financiada y evaluar...&lt;br /&gt;&lt;br /&gt;Al final, decidí! y me compré una VIT D2010 con características nada despreciables!!! lo mejor de todo es que venía &lt;span style="font-weight: bold;"&gt;sin&lt;/span&gt; sistema operativo, lo que me permite instalarle lo que quiera cuantas veces quira, y como soy usuario linux, pues... jeje&lt;br /&gt;&lt;br /&gt;Algunos detalles de la maquinita:&lt;br /&gt;vendor_id    : GenuineIntel&lt;br /&gt;cpu family    : 6&lt;br /&gt;model name    : Intel(R) Core(TM)2 Duo CPU     T7300  @ 2.00GHz&lt;br /&gt;cpu MHz        : 800.000&lt;br /&gt;cache size    : 4096 KB&lt;br /&gt;&lt;br /&gt;VGA: Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller&lt;br /&gt;Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection&lt;br /&gt;Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller&lt;br /&gt;FLASH memory: ENE Technology Inc ENE PCI Memory Stick Card Reader Controller&lt;br /&gt;SD Host controller: ENE Technology Inc ENE PCI SmartMedia / xD Card Reader Controller&lt;br /&gt;FLASH memory: ENE Technology Inc ENE PCI Secure Digital / MMC Card Reader Controller&lt;br /&gt;FireWire (IEEE 1394): VIA Technologies, Inc. IEEE 1394&lt;br /&gt;-----&lt;br /&gt;1 GB de RAM, unidad quemadora de CD/DVD, sonido y microfono... y webcam integrada!!!&lt;br /&gt;&lt;br /&gt;Originalmente le instalé un Debian, pero la resolución del video quedaba cortada, y como tenía apuro de usarla (cosas que no vienen al caso) pues le metí un unbuntu 7.04 y funcinó sin problemas con el driver vesa.&lt;br /&gt;&lt;br /&gt;Aprovechando el FLISoL de ayer, entre los amis de la comunidad, y por sugerencia de Alberto, le cambié el ubuntu 7.04 por el 8.04, recien salidito del horno. Con confusion y todo!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-7175659048638523821?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/7175659048638523821/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=7175659048638523821' title='7 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/7175659048638523821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/7175659048638523821'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2008/04/mi-nueva-porttil-vit-d2010.html' title='Mi nueva Portátil VIT D2010'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-6252843863860163988</id><published>2008-02-27T10:48:00.007-04:30</published><updated>2008-02-27T11:15:17.448-04:30</updated><title type='text'>Preparándome para dar de baja la cuenta de Yahoo! sí es comprada por M$</title><content type='html'>Sí M$ compra Yahoo! algunos nos daremos de baja... tristemente, al menos para mi, mi primera cuenta creada por el año 1998, fue en Yahoo! la cual aún conservo... Por fortuna, existe &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;gmail&lt;/span&gt;, y todos lo que ofrece &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;google&lt;/span&gt; con sus servicios nuevos, como valor agregado y que están bastante bien!&lt;br /&gt;&lt;br /&gt;Parte de la noticia que asusta la leí en: http://www.todo-linux.com/modules.php?name=News&amp;amp;file=&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;article&lt;/span&gt;&amp;amp;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;sid&lt;/span&gt;=7633 con lo cual me fui a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;google&lt;/span&gt; a preguntar cómo dar de baja una cuenta en Yahoo!&lt;br /&gt;&lt;br /&gt;Hasta ahora, he encontrado 2 opciones, las cuales obviamente no he probado, pero las &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;voya&lt;/span&gt; ir describiendo por si acaso...&lt;br /&gt;&lt;br /&gt;Una, supuestamente: https://edit.yahoo.com/config/delete_user  con ingresar al ID que se desea dar de baja, se confirma y listo... &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;abrá&lt;/span&gt; que probarla&lt;br /&gt;&lt;br /&gt;Otra, tiene la opción de cancelar su cuenta de Correo Yahoo! o toda su cuenta de Yahoo! (incluyendo la de correo). Si sólo cancela su cuenta de Correo Yahoo!, podrá seguir utilizando su ID de Yahoo! para el resto de servicios como Pláticas, Clubes, Finanzas, Juegos, etc., pero ya no podrá ingresar a su cuenta de Correo Yahoo!, y cualquier mensaje que se envíe a ésta será devuelto al remitente. Para cancelar sólo su cuenta de Correo Yahoo!, envíe la información que detallamos más adelante a mx-mail@yahoo-inc.com, poniendo como Asunto: "Eliminen sólo mi cuenta de Correo Yahoo!". Ahora sí, estos son los datos que nos debe enviar: La ID de Yahoo! que utiliza para ingresar a la cuenta que eliminará. La dirección de correo-e alternativa que especificó al registrarse. Su fecha de nacimiento. Código postal y país. La pregunta secreta y su respuesta. Para eliminar toda* su cuenta de Yahoo!, incluyendo el servicio de Correo Yahoo!, envíe la misma información que se menciona arriba a mx-mail@yahoo-inc.com, pero en el Asunto de su mensaje escriba: "Eliminen toda mi cuenta de Yahoo!".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-6252843863860163988?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/6252843863860163988/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=6252843863860163988' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/6252843863860163988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/6252843863860163988'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2008/02/preparndome-para-dar-de-baja-la-cuenta.html' title='Preparándome para dar de baja la cuenta de Yahoo! sí es comprada por M$'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-4002954383722067788</id><published>2008-02-11T14:58:00.000-04:30</published><updated>2008-04-27T10:40:17.084-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenOffice.org'/><title type='text'>Estilos en OpenOffice.org Writer</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Cambiando la orientación de páginas en documentos hechos con OpenOffice.org Writer&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;Alguna vez dije que sólo hablaría de programación o bases de datos? Sí es así, me disculpo, pero de alguna forma tengo que recordar las cosas...&lt;br /&gt;&lt;br /&gt;Resulta que estamos migrando N cantidad de compuitadoras en el trabajo, del M$ a Ubuntu/Linux (las razones por las cuales escogimos Ubuntu, son variadas y discutibles, pero ahorita no importa, el asunto es hacerlo) y entre otras cosas, el personal técnico y administrativo, de vez en cuando hace cosas en alguna de las aplicaciones ofimáticas que los usuarios normales nunca haríamos, jeje...&lt;br /&gt;&lt;br /&gt;El tema en cuestión, en un documento con X páginas (lease X como muchas) quieren tener unas cuantas intercaladas en todo el documento con orientación del papel de forma horizontal...&lt;br /&gt;&lt;br /&gt;Fácil! (ni crean que me la inventé, tuve que googlear un rato) en el menú &lt;span style="font-style: italic;"&gt;Formato&lt;/span&gt; -&gt; &lt;span style="font-style: italic;"&gt;Estilo y formato&lt;/span&gt; (F11), click sobre el ícono de &lt;span style="font-style: italic;"&gt;estilo de página&lt;/span&gt;, click con el botón derecho del ratón sobre el fondo y seleccionar &lt;span style="font-style: italic;"&gt;Nuevo...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;En la ventana, colocar nombre y seleccionar las características requeridas, en nuestro caso, &lt;span style="font-style: italic;"&gt;página, Orientación: horizontal&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Luego, insertar una página (insertar -&gt; salto manual -&gt; salto de página) seleccionando el estilo deseado.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Listo!&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&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/17156394-4002954383722067788?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/4002954383722067788/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=4002954383722067788' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/4002954383722067788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/4002954383722067788'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2008/02/estilos-en-openofficeorg-writer.html' title='Estilos en OpenOffice.org Writer'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-1457319419792096111</id><published>2008-01-09T00:23:00.000-04:30</published><updated>2008-01-10T18:03:15.667-04:30</updated><title type='text'>Instalar impresora lexmark z816 en debian etch</title><content type='html'>Me fui de luces y compré una impresora lexmark Z816 sin verificar el soporte para linux, y bueno, empezó mi carma!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Confieso que estuve un tiempo sin poder imprimir, hasta que por fin, anoche, lo logré! He aquí cómo lo hice:&lt;br /&gt;&lt;br /&gt;Referencias:&lt;br /&gt;&lt;a href="https://wiki.ubuntu.com/HardwareSupportComponentsPrinters/LexmarkZ810"&gt;https://wiki.ubuntu.com/HardwareSupportComponentsPrinters/LexmarkZ810&lt;/a&gt;&lt;br /&gt;&lt;a href="http://ubuntuforums.org/archive/index.php/t-505886.html"&gt;http://ubuntuforums.org/archive/index.php/t-505886.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pasos:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;apt-get install alien&lt;/li&gt;&lt;li&gt;apt-get install build-essential&lt;/li&gt;&lt;li&gt;apt-get install libcupsys2-dev&lt;/li&gt;&lt;li&gt;apt-get install libcupsimage2-dev&lt;/li&gt;&lt;li&gt;apt-get install p7zip-full&lt;/li&gt;&lt;li&gt;descargar:&lt;/li&gt;&lt;ol&gt;&lt;li&gt;http://cerqueira.org/software/z810/Z810CUPS-0.7.1.tar.gz&lt;/li&gt;&lt;li&gt;http://www.downloaddelivery.com/webcontent/support/linux/z810llpddk-2.0-3.i386.rpm (hay que suscribirse, creo, como lo descargé hace un tiempo, ya no recuerdo)&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;alien z810llpddk-2.0-3.i386.rpm&lt;/li&gt;&lt;li&gt;dpkg -i z810llpddk_2.0-4_i386.deb&lt;/li&gt;&lt;li&gt; 7z e Z810CUPS-0.7.1.tar.gz&lt;/li&gt;&lt;li&gt;cd Z810CUPS-0.7.1&lt;/li&gt;&lt;li&gt;make rpm-compat&lt;/li&gt;&lt;li&gt;make&lt;/li&gt;&lt;li&gt;make install&lt;/li&gt;&lt;/ol&gt;Hasta aquí, todo fue una maravilla. Resultó un error tal, pero como dice en una de las referencias, lo ignoré.&lt;br /&gt;&lt;br /&gt;Cuando intenté mover el ppd, como dice el paso:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;now move this Lexmark-Z810-lxz810cje-cups.ppd.gz from the z810 cups/system directory to the z810 cups directory&lt;br /&gt;/usr/sbin/lpadmin -p Z810 -E -P Lexmark-Z810-lxz810cje-cups.ppd.gz -v z810:/dev/usblp0 &lt;/li&gt;&lt;/ol&gt;me dió otro error, de archivo no encontrado, así que me fui por:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;find / -iname Lexmark-Z810*&lt;/li&gt;&lt;/ol&gt;y obtuve la ruta donde se encontraba mi archivo ppd de la impresora en cuestión, sustituí la ruta en el comando anterior, y listo! impresora instalada!&lt;br /&gt;&lt;br /&gt;Vale el agradecimiento a: &lt;a href="http://cerqueira.org/software/z810/"&gt;http://cerqueira.org/software/z810/&lt;/a&gt; quien se tomó la molestia de desarrollar el módulo.&lt;br /&gt;&lt;br /&gt;Éxitos!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-1457319419792096111?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/1457319419792096111/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=1457319419792096111' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/1457319419792096111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/1457319419792096111'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2008/01/instalar-impresora-lexmark-z816-en.html' title='Instalar impresora lexmark z816 en debian etch'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-452636155167403072</id><published>2008-01-08T16:10:00.011-04:30</published><updated>2009-09-03T11:22:35.794-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><category scheme='http://www.blogger.com/atom/ns#' term='migración mysql a postgresql'/><category scheme='http://www.blogger.com/atom/ns#' term='dbi-link'/><title type='text'>Migrar BD de Mysql a PostGreSQL (parte 1)</title><content type='html'>&lt;div style="text-align: justify;"&gt;El escenario: una BD en mysql que hay que migrar a postgresql, tomando en cuenta que hay sistemas que están utilizando ambos motores al mismo tiempo.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Temporalmente, se estableció una conexión con dbi-link. La documentación es más o menos sencilla, sólo hay que retocar el escript que corresponda al motor a conectar, en mi caso, mysql. En la carpeta examples, consigimos para conectar entre otros,  oracle, mssql, mysql.&lt;br /&gt;&lt;br /&gt;Los pasos, son más o menos así:&lt;ol&gt;&lt;li&gt;crear el lenguaje plperl para la BD: create language plperlu;&lt;/li&gt;&lt;li&gt;lanzas dbi_link.sql ( te crea el esquema y las funciones necesarias), en mi caso, lo hice con psql &lt;&gt;&lt;/li&gt;&lt;li&gt;Conectar con la BD, igual, psql &lt;&gt;&lt;/li&gt;&lt;/ol&gt;Con esto me ha funcionado, de manera que ya puedo ver 2 esquemas adicionales en mi BD, uno creado por dbi_link.sql, y otro que le he puesto de nombre mysql (ya que estoy conectando con mysql) donde están todas las tablas con una estructura que me permite leer los datos, justo lo que necesitaba. Vale decir, que los datos no se están copiando, sino que se ven como en tiempo de replicación.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Esto lo logré con algo de ayuda, además de la documentación, de parte del amigo seyko, que se puede ver en http://www.forosdelweb.com/f21/reporte-almacen-con-datos-postgresql-mysql-536140/#post2201060.&lt;br /&gt;&lt;br /&gt;En los próximos minutos/horas/días/semanas/meses espero publicar la segunda parte, donde copiaremos datos de mysql a postgresql.&lt;br /&gt;&lt;br /&gt;Para los usuarios de Debian y derivados, que prefieren aptitude, &lt;a href="http://programacionlibre.blogspot.com/2009/09/migrar-bd-de-mysql-postgresql-parte-1.html"&gt;acá&lt;/a&gt; una forma muy parecida de hacerlo&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-452636155167403072?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/452636155167403072/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=452636155167403072' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/452636155167403072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/452636155167403072'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2008/01/migrar-bd-de-mysql-postgresql-parte-1.html' title='Migrar BD de Mysql a PostGreSQL (parte 1)'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-5286513771010439266</id><published>2008-01-07T16:47:00.000-04:30</published><updated>2008-01-21T15:19:15.400-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>Empezando a darle uso útil al blog... con PostGreSQL</title><content type='html'>&lt;div style="text-align: justify;"&gt;Normalmente tengo que pasar varios minutos o hasta horas buscando y leyendo en internet cómo hacer tal cual cosa, y que por lo general, ya lo he hecho antes... ¿olvidadizo? bueno, sólo a veces y con algunas cosas... Así que, es probable que a partir de ahora este blog empiece a verse más movido y con cositas más interesantes...&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;De entrada, será cosas de PostGreSQL, por sí alguien lee esto y quiere, de vez en cuando, darle alguna mirada.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Primer caso&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Crear una función en plpgsql, que guarde el valor de un campo de una tabla, en otra tabla, con un disparador&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;Tengo dos (2) tablas, la primera me registra una serie de actividades, y la segunda, registra los diferentes estatus por los que va a pasar en un momento determinado.&lt;br /&gt;&lt;br /&gt;actividad (id serial, nombre, fecha_inicio, fecha_culmina);&lt;br /&gt;actividad_estatus (id int CONSTRAINT fk_est FOREIGN KEY (id) REFERENCES actividad(id), estatus varchar(1));&lt;br /&gt;&lt;br /&gt;Obviamente, sólo coloca la información descriptiva para el problema.&lt;br /&gt;&lt;br /&gt;Al registrar una actividad, normalemente tiene estatus no iniciado, por lo que podría ser interesante dejar al motor que cuandos e inserte la actividad, se inserte el estatus con ciertos valores por iniciales.&lt;br /&gt;&lt;br /&gt;Creamos una función en lenguaje plpgsql, que devuelva un trigger, así:&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;pre class="data1"&gt;&lt;span class="keyword"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span class="keyword"&gt;insert&lt;/span&gt; &lt;span class="keyword"&gt;into&lt;/span&gt; ssc.actividad_estatus (id) &lt;span class="keyword"&gt;values&lt;/span&gt; (&lt;span class="keyword"&gt;NEW&lt;/span&gt;.id);&lt;br /&gt;&lt;span class="keyword"&gt;return&lt;/span&gt; &lt;span class="keyword"&gt;NEW&lt;/span&gt;;&lt;br /&gt;&lt;span class="keyword"&gt;end&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;Ahora no se me ocurre qué más escribir, así que... hasta otro momento!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-5286513771010439266?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/5286513771010439266/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=5286513771010439266' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/5286513771010439266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/5286513771010439266'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2008/01/empezando-darle-uso-til-al-blog-con.html' title='Empezando a darle uso útil al blog... con PostGreSQL'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-4371475568447321432</id><published>2007-08-15T14:53:00.000-04:00</published><updated>2008-12-10T02:11:44.944-04:30</updated><title type='text'>Foro Mundial del Conocimiento Libre</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_H4UNTSweUtM/RyHsGn6wU_I/AAAAAAAAAAg/u3NLSpUnEAk/s1600-h/botonVfmcl150x141b.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_H4UNTSweUtM/RyHsGn6wU_I/AAAAAAAAAAg/u3NLSpUnEAk/s320/botonVfmcl150x141b.png" alt="" id="BLOGGER_PHOTO_ID_5125637449463124978" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://foromundial.solve.net.ve/acerca"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px;" src="http://foromundial.solve.net.ve/acerca" alt="" border="0" /&gt;&lt;/a&gt;El &lt;strong&gt;V Foro Mundial de Conocimiento Libre&lt;/strong&gt; es un evento internacional, multitemático, abierto e incluyente organizado en conjunto con comunidades de investigadores, profesionales y usuarios, la empresa privada y el Gobierno Bolivariano.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Ejes Temáticos&lt;/h3&gt; &lt;p&gt;Este año, el &lt;strong&gt;Foro Mundial de Conocimiento Libre&lt;/strong&gt; abarcará temas englobados en varias áreas de interés, expuestas a continuación. Es importante resaltar que este año se diversifica enormemente la cantidad de temas abordados en atención a los avances mundiales en materia de difusión del conocimiento.&lt;/p&gt; &lt;dl&gt;&lt;dt&gt;Software Libre:&lt;/dt&gt;&lt;dd&gt;Uso, difusión y desarrollo del Software Libre. Son de especial interés las herramientas de trabajo colaborativo para desarrollo de software y como plataformas de información y comunicación.&lt;/dd&gt;&lt;dt&gt;Hardware Libre:&lt;/dt&gt;&lt;dd&gt;Opiniones y experiencias sobre la factibilidad y necesidad de trasladar los conceptos básicos del software libre al hardware.&lt;/dd&gt;&lt;dt&gt;Cultura Libre:&lt;/dt&gt;&lt;dd&gt;Manifestaciones del conocimiento libre en los modos de vida y en las costumbres que emergen en el marco de la sociedad del conocimiento.&lt;/dd&gt;&lt;dt&gt;Aspectos Económicos:&lt;/dt&gt;&lt;dd&gt;Modelos de negocios y mecanismos de intercambio necesarios para el acceso libre al conocimiento.&lt;/dd&gt;&lt;dt&gt;Aspectos Legales:&lt;/dt&gt;&lt;dd&gt;Modelos legales acorde con la nueva sociedad del conocimiento.&lt;/dd&gt;&lt;dt&gt;Arte Libre:&lt;/dt&gt;&lt;dd&gt;Manifestaciones artísticas en el marco del Conocimiento Libre.&lt;/dd&gt;&lt;dt&gt;Migración:&lt;/dt&gt;&lt;dd&gt;Experiencias en el proceso de migración al Software Libre.&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-4371475568447321432?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/4371475568447321432/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=4371475568447321432' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/4371475568447321432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/4371475568447321432'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2007/08/un-videito-sobre-php.html' title='Foro Mundial del Conocimiento Libre'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_H4UNTSweUtM/RyHsGn6wU_I/AAAAAAAAAAg/u3NLSpUnEAk/s72-c/botonVfmcl150x141b.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-5054428899380016826</id><published>2007-06-01T08:39:00.001-04:00</published><updated>2009-06-21T12:00:17.024-04:30</updated><title type='text'>¿Portarse bien en internet?</title><content type='html'>Quien no se ha tomado la molestia de leer este documento: &lt;a href="http://es.wikipedia.org/wiki/Netiquette"&gt;http://es.wikipedia.org/wiki/Netiquette&lt;/a&gt; , termina siendo rechazado por otros usuarios de internet...&lt;br /&gt;&lt;br /&gt;Luego hablamos por qué...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-5054428899380016826?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/5054428899380016826/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=5054428899380016826' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/5054428899380016826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/5054428899380016826'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2007/06/comportarse-en-internet.html' title='¿Portarse bien en internet?'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-4189818876714045541</id><published>2007-04-25T14:57:00.000-04:00</published><updated>2007-04-25T15:17:06.355-04:00</updated><title type='text'>¿No puedes abrir el nuevo formato .docx?</title><content type='html'>Vale, yo tampoco. Resulta que los archivos .docx son el nuevo formato de &lt;em&gt;Microsoft Office 2007&lt;/em&gt; y al no ser un estándar tiene sus problemas de incompatibilidad. Barajemos las opciones:  &lt;ul type="a"&gt;&lt;li&gt;Si estás en &lt;strong&gt;&lt;span class="hilite"&gt;Linux&lt;/span&gt;&lt;/strong&gt;: olvídate de abrirlo, seguro que tienes cosas mejores que hacer.&lt;/li&gt;&lt;li&gt;Si estás en &lt;strong&gt;Windows&lt;/strong&gt; y tienes el &lt;strong&gt;Microsoft Office&lt;/strong&gt; (2000, XP o 2003): tienes que solucionarte un problemita que te han dejado los de M$, instalando otro &lt;a href="http://es.wikipedia.org/wiki/Parche_inform%C3%A1tico"&gt;parche&lt;/a&gt; adicional&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Si estás en &lt;strong&gt;MacOS X&lt;/strong&gt;: deberás buscarte e instalar un &lt;a href="http://es.wikipedia.org/wiki/Widget"&gt;widget&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Pero... ¿para qué nos queremos hacer la vida cuadritos, trabajando con un programa que es incompatible con el resto del mundo? sobre todo sí tenemos OpenOffice que sí respeta los estándares.&lt;br /&gt;&lt;br /&gt;A partir de la versión 2.0 de &lt;a href="http://es.openoffice.org/"&gt;OpenOffice&lt;/a&gt;, éste ha incorporado de forma nativa el estándar &lt;a href="http://es.wikipedia.org/wiki/OpenDocument"&gt;OpenDocument&lt;/a&gt; para aplicaciones ofimáticas, que cumple con las normas ISO, lo cual demuestra su alto nivel de seguridad y confiabilidad. Además, lo puedes tener para casi cualquier sistema operativo (multiplataforma), en tu idioma, con diccionarios, y todo lo que puedas necesitar...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-4189818876714045541?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/4189818876714045541/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=4189818876714045541' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/4189818876714045541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/4189818876714045541'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2007/04/no-puedes-abrir-el-nuevo-formato-docx.html' title='¿No puedes abrir el nuevo formato .docx?'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-490761409923718411</id><published>2007-03-25T20:26:00.003-04:00</published><updated>2010-02-19T14:54:49.180-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='software libre'/><title type='text'>Pringao How To (o Windows-es-fácil-Howto)</title><content type='html'>En el siguiente enlace, encontraras un interesantísimo y largo documento, el cual recomiendo su lectura... te advierto que es largo, así que, o te tomas el tiempo para leerlo, o lo descargas y lo lees con calma luego...&lt;br /&gt;&lt;br /&gt;Advierto que, el objetivo no es herir susceptibilidades; cualquier semejanza con la realidad, es pura coincidencia...&lt;br /&gt;&lt;br /&gt;¿qué es un How To? es un documento que explica cómo hacer una tarea determinada, algo parecido a una receta...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sromero.org/wiki/doku.php/linux:sistema:pringao_howto"&gt;Para leer el documento, pincha aquí&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-490761409923718411?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/490761409923718411/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=490761409923718411' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/490761409923718411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/490761409923718411'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2007/03/pringao-how-to.html' title='Pringao How To (o Windows-es-fácil-Howto)'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-6153954171250980630</id><published>2007-03-20T10:25:00.001-04:00</published><updated>2009-06-25T16:52:31.712-04:30</updated><title type='text'>Dónde y Cómo podemos charlar...</title><content type='html'>Hola...&lt;br /&gt;&lt;br /&gt;Según la Real Academia Española[&lt;a href="http://www.rae.es/"&gt;1&lt;/a&gt;], la palabra chatear significa: &lt;span class="eOrdenAcepLema"&gt;&lt;b&gt; 1.     &lt;/b&gt;&lt;/span&gt;&lt;span class="eAbrv"&gt; &lt;span class="eAbrv" title="verbo intransitivo"&gt;intr.&lt;/span&gt;&lt;/span&gt;&lt;span class="eAcep"&gt; Beber &lt;a href="http://buscon.rae.es/draeI/SrvltObtenerHtml?origen=RAE&amp;amp;LEMA=chato&amp;amp;SUPIND=0&amp;amp;CAREXT=10000&amp;amp;NEDIC=No#0_7"&gt;&lt;span class="eReferencia"&gt;&lt;b&gt;chatos&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;      (&lt;span style="font-size:0;"&gt;‖ &lt;/span&gt;de vino). A lo que la palabra chat: &lt;/span&gt;&lt;span style="text-align: left;font-size:12;" &gt;&lt;span style="font-size:100%;"&gt;La palabra &lt;i&gt;&lt;b&gt;chat&lt;/b&gt;&lt;/i&gt; no está registrada en el Diccionario.&lt;br /&gt;&lt;br /&gt;Según la wikipedia[&lt;a href="http://es.wikipedia.org/"&gt;2&lt;/a&gt;], la palabra chatear, tampoco existe, y redirecciona a: &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Chat&lt;/b&gt;&lt;/span&gt; (&lt;a href="http://es.wikipedia.org/wiki/Idioma_espa%C3%B1ol" title="Idioma español"&gt;español&lt;/a&gt;: &lt;i&gt;charla&lt;/i&gt;), que también se le conoce como &lt;b&gt;cibercharla&lt;/b&gt;, es un &lt;a href="http://es.wikipedia.org/wiki/Anglicismo" title="Anglicismo"&gt;anglicismo&lt;/a&gt; que usualmente se refiere a una comunicación escrita a través de &lt;a href="http://es.wikipedia.org/wiki/Internet" title="Internet"&gt;internet&lt;/a&gt; entre dos o más personas que se realiza instantáneamente.&lt;br /&gt;&lt;span style="text-align: left;font-size:100%;" &gt;&lt;br /&gt;De donde fácilmente intuimos que la palabra &lt;span style="font-weight: bold;"&gt;chat&lt;/span&gt; es una palabra en el idioma ingles, y que traduce charla[3], por lo que, de ahora en adelante, usaré &lt;span style="font-weight: bold;"&gt;charlar&lt;/span&gt;, ya que es parte de mi hermoso idioma...&lt;br /&gt;&lt;br /&gt;Entrando en materia...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gaim.sourceforge.net/"&gt;&lt;span style="font-weight: bold;"&gt;Pidgin (antes Gaim&lt;/span&gt;&lt;/a&gt;) según la wikipedia &lt;/span&gt;&lt;span style="font-size:100%;"&gt;es un &lt;a href="http://es.wikipedia.org/wiki/Cliente_inform%C3%A1tico" title="Cliente informático"&gt;cliente&lt;/a&gt; &lt;a href="http://es.wikipedia.org/wiki/Multiplataforma" title="Multiplataforma"&gt;multiplataforma&lt;/a&gt; de &lt;a href="http://es.wikipedia.org/wiki/Mensajer%C3%ADa_instant%C3%A1nea" title="Mensajería instantánea"&gt;mensajería instantánea&lt;/a&gt; capaz de conectarse a múltiples redes (&lt;a href="http://es.wikipedia.org/w/index.php?title=Multiprotocolo&amp;amp;action=edit" class="new" title="Multiprotocolo"&gt;multiprotocolo&lt;/a&gt;) y cuentas (&lt;a href="http://es.wikipedia.org/w/index.php?title=Multicuenta&amp;amp;action=edit" class="new" title="Multicuenta"&gt;multicuenta&lt;/a&gt;) de manera simultánea.&lt;/span&gt;&lt;span style="text-align: left;font-size:100%;" &gt;"&lt;br /&gt;&lt;br /&gt;Un cliente, es un programa que se utiliza para trabajar con una herramienta determinada, esto es, si usas GTalk estás usando el cliente de Gmail para charlar con tus contactos de Gmail, si usas Yahoo! Messenger, entonces usa el cliente de Yahoo para charlar con tus contactos de Yahoo, si usas MSN Messenger, entonces, usas el cliente de MSN para charlar con tus contactos de MSN, y así... No pierdas de vista que es multiplataforma ;-)&lt;br /&gt;&lt;br /&gt;Entonces, ¿con quién me puedo conectar si uso Pidgin?, pues, te puedes conectar con, IRC, Gmail, Yahoo, jabber, ICQ, MSN, y otros más... Te invito a que lo descargues, lo instales, y lo pruebes, puede que de entrada te parezca feo, o que le faltan algunos periquitos que te ofrecen tus otros clientes, pero te ofrece otras bondades, que estoy seguro te gustarán.&lt;br /&gt;&lt;br /&gt;¿Te fijaste bien? ¿segur@? dije que podías conectarte con &lt;/span&gt;&lt;span style="text-align: left;font-size:100%;" &gt;IRC, Gmail, Yahoo, jabber, ICQ, MSN, y otros más, sí, lo dije, y lo puedes hacer con todos los quieras al mismo tiempo, los puedes tener a todos organizados, a tu gusto, juntos o separados... el sistema de charlas, puedes ser por ventanas o por pestañas, lo cual es mucho más ordenado&lt;br /&gt;&lt;br /&gt;Ahora, bien, alejandome un poquito, pero no tanto, te voy a hablar de IRC, que según la wikipedia "... &lt;/span&gt;permite debates en grupo o entre dos personas y que está clasificado dentro de la &lt;a href="http://es.wikipedia.org/wiki/Mensajer%C3%ADa_instant%C3%A1nea" title="Mensajería instantánea"&gt;Mensajería instantánea&lt;/a&gt;. Las conversaciones se desarrollan en los llamados &lt;b&gt;canales de IRC&lt;/b&gt;...&lt;span style="text-align: left;font-size:100%;" &gt;", a lo que yo agrego que los canales, generalmente, son creados con fines específicos, es decir, si creo un canal para hablar de futbol, se hablará de futbol y rara vez se hablará de otra cosa...&lt;br /&gt;&lt;br /&gt;Entonces, ¿qué sentido tiene? pues ese mismo, fortalecer un conocimiento determinado, donde todos los participantes de la sala, pueden preguntar y responder, se crea una comunidad que va creciendo de acuerdo a un interés en común... y te puedo asegurar que hay montones de canales ya creados!!!&lt;br /&gt;&lt;br /&gt;Pidgin, te permite además, buscar servidores para IRC, e inclusive te muestra listas de canales existentes en cada servidor... no se por qué no siempre se muestran todos, pero con los que lista se entretiene uno... y de acuerdo a dónde te desenvuelvas, seguro que vas a conseguir uno que te ayude...&lt;br /&gt;&lt;br /&gt;Es posible, que podamos interactuar en alguno que creemos para nuestro fin, sólo tenemos que ponernos de acuerdo, crearlo y listo!&lt;br /&gt;&lt;br /&gt;Por ahora, me puedes conseguir en el IRC irc.freenode.net canal #gulmer... sólo tienes que descargarte el pidgin, crear una cuenta IRC, agregar el canal, y listo! charlaremos...&lt;br /&gt;&lt;/span&gt;&lt;span style="text-align: left;font-size:100%;" &gt;&lt;br /&gt;[1] www.rae.es&lt;br /&gt;[2] es.wikipedia.org&lt;br /&gt;[3] lo podemos ver con la herramienta de idiomas de google&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-6153954171250980630?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/6153954171250980630/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=6153954171250980630' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/6153954171250980630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/6153954171250980630'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2007/03/dnde-y-cmo-podemos-charlar.html' title='Dónde y Cómo podemos charlar...'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17156394.post-112777133545711751</id><published>2005-09-26T17:39:00.000-04:00</published><updated>2007-03-06T09:00:37.549-04:00</updated><title type='text'>Empezando con mi blog...</title><content type='html'>Hola&lt;br /&gt;&lt;br /&gt;Si bien, mi centro de interés rodea la programación, acá  tendré algunas cosas más...  siempre, dentro del Software Libre... pero que tengan que ver básicamente con mi vida diaria en casa, trabajo y en la uni...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17156394-112777133545711751?l=programacionlibre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programacionlibre.blogspot.com/feeds/112777133545711751/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17156394&amp;postID=112777133545711751' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/112777133545711751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17156394/posts/default/112777133545711751'/><link rel='alternate' type='text/html' href='http://programacionlibre.blogspot.com/2005/09/aprendamos-programar.html' title='Empezando con mi blog...'/><author><name>Cesar Carbonara</name><uri>http://www.blogger.com/profile/03730653665446019753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
