<?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-5931960151906815083</id><updated>2011-12-15T17:38:15.470-08:00</updated><title type='text'>Ismael Diaz's Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ismael.unix.cl/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5931960151906815083/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ismael.unix.cl/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ismael Diaz</name><uri>http://www.blogger.com/profile/00498592908108796304</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>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5931960151906815083.post-3646701615843394620</id><published>2010-07-15T16:02:00.000-07:00</published><updated>2010-07-15T16:33:55.132-07:00</updated><title type='text'>Page up/down en aplicaciones de terminal con buffer propio</title><content type='html'>Por razones de tiempo cada vez me conecto menos a IRC, aunque creo firmemente que sigue siendo el sistema de chat con el cual me siento más cómodo. Hace algún tiempo note que al conectarme desde irssi sobre Mac OS X, no me funcionaba el bendito Page up/down como con el resto de las aplicaciones!!!. Esto sucede porque irssi maneja un buffer de manera independiente a Terminal, por lo cual las combinaciones clásicas no funcionaban. Probando combinaciones casi al azar, logré encontrar una que me permitió desplazar a través del buffer de irssi:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;(shift + fn) + (flecha arriba)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;(shift + fn) + (flecha abajo)&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Con eso queda resuelto el problema del desplazamiento en irssi y probablemente otras aplicaciones que utilizan el mismo sistema. Aunque queda muy poca gente que usa clientes de IRC por terminal espero que el tip sea de utilidad.&lt;/div&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/5931960151906815083-3646701615843394620?l=ismael.unix.cl' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ismael.unix.cl/feeds/3646701615843394620/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://ismael.unix.cl/2010/07/page-updown-en-aplicaciones-de-terminal.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5931960151906815083/posts/default/3646701615843394620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5931960151906815083/posts/default/3646701615843394620'/><link rel='alternate' type='text/html' href='http://ismael.unix.cl/2010/07/page-updown-en-aplicaciones-de-terminal.html' title='Page up/down en aplicaciones de terminal con buffer propio'/><author><name>Ismael Diaz</name><uri>http://www.blogger.com/profile/00498592908108796304</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-5931960151906815083.post-16402614177018244</id><published>2010-04-28T07:48:00.000-07:00</published><updated>2010-11-26T06:34:08.350-08:00</updated><title type='text'>Symfony/Doctrine: Clave Primaria Compuesta</title><content type='html'>Debo reconocer que soy bastante crítico al momento de modelar datos, ya que me gusta que todo quede lo mejor optimizado posible. En estos días he estado trabajando junto a mi equipo, en un proyecto el cual tienen como base tecnológica: &lt;a href="http://www.postgresql.org/"&gt;PostgreSQL&lt;/a&gt;, &lt;a href="http://www.symfony-project.org/"&gt;Symfony&lt;/a&gt; y &lt;a href="http://www.doctrine-project.org/"&gt;Doctrine&lt;/a&gt;; todo iba viento en popa hasta que llego el momento de intervenir el mantenedor de una entidad cuya &lt;span style="font-weight: bold;"&gt;clave primaria era compuesta&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;y además los campos eran foráneos&lt;/span&gt;, lo cual gatilló en los siguientes problemas:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Hubo que crear a mano los elementos del formulario correspondientes a los campos foraneos correspondientes a la clave primaria.&lt;/li&gt;&lt;li&gt;Una vez creados, se logra ingresar un dato... hasta aquí todo parecía ir bien, sin embargo, la sorpresa apareció al momento de intentar desplegar la grilla, en la cual aparecío un flamante error en el routing (routing.yml) del backend, especificamente en la opción &lt;span style="font-weight: bold;"&gt;column&lt;/span&gt; que tenía como valor &lt;span style="font-weight: bold;"&gt;Array&lt;/span&gt;. Se intento solucionar de variadas formas propuestas como pseudo-soluciones en algunos sitios web, para nuestro infortúnio sin conseguir el exito esperado.&lt;/li&gt;&lt;li&gt;Cuando casi perdiamos la esperanza y ya estabamos casi dispuestos a darle toda la responsabilidad a la capa del modelo de Symfony, nos iluminamos, pensamos y compartiendo experiencias de amigos externos (Gracias &lt;a href="http://www.niedbalski.org/"&gt;Jorge&lt;/a&gt; por tu infiníto tiempo libre para los amigos),  en que quizás si creabamos un  &lt;span style="font-weight: bold;"&gt;índice compuesto y que además sea único&lt;/span&gt;, con eso en teoría podíamos garantizar que no hubiesen registros duplicados (que era lo importante), y dejar como &lt;span style="font-weight: bold;"&gt;clave primaria un simple id autoincrementa&lt;/span&gt;l&lt;span style="font-weight: bold;"&gt;, &lt;/span&gt;y gotcha! funcionó perfecto.&lt;/li&gt;&lt;/ol&gt;A continuación dejaré una entidad de ejemplo para &lt;span style="font-weight: bold;"&gt;config/doctrine/schema.yml&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;backend/config/routing.yml&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;&lt;br /&gt;schema.yml&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;MiEntidad:&lt;br /&gt;columns:&lt;br /&gt;id_mi_entidad:&lt;br /&gt;type: integer&lt;br /&gt;primary: true&lt;br /&gt;notnull: true&lt;br /&gt;autoincrement: true&lt;br /&gt;id_foranea_uno:&lt;br /&gt;type: integer&lt;br /&gt;notnull: true&lt;br /&gt;id_foranea_dos:&lt;br /&gt;type: integer&lt;br /&gt;notnull: true&lt;br /&gt;relations:&lt;br /&gt;ForaneaUno:&lt;br /&gt;foreignAlias: MisEntidadesForaneaUno&lt;br /&gt;local: id_foranea_uno&lt;br /&gt;foreign: id_foranea_uno&lt;br /&gt;type: one&lt;br /&gt;foreignType: many&lt;br /&gt;ForaneaDos:&lt;br /&gt;foreignAlias: MisEntidadesForaneaDos&lt;br /&gt;local: id_foranea_dos&lt;br /&gt;foreign: id_foranea_dos&lt;br /&gt;type: one&lt;br /&gt;foreignType: many&lt;br /&gt;indexes:&lt;br /&gt;mi_entidad_index_unq:&lt;br /&gt;fields: [id_foranea_uno, id_foranea_dos]&lt;br /&gt;type: unique&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;routing.yml&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;mi_entidad:&lt;br /&gt;class: sfDoctrineRouteCollection&lt;br /&gt;options:&lt;br /&gt;model:                 MiEntidad&lt;br /&gt;module:               mi_entidad&lt;br /&gt;prefix_path:       /mi_entidad&lt;br /&gt;column:               id_mi_entidad&lt;br /&gt;with_wildcard_routes: true&lt;/blockquote&gt;&lt;br /&gt;Espero que este post, les sea de todo su gusto y les permita optimizar de mejor forma su tiempo que a mi :P.&lt;br /&gt;&lt;br /&gt;Pd, Disculpen la indentación y recuerden que en &lt;span style="font-weight: bold;"&gt;yamel&lt;/span&gt; la indentación es de &lt;span style="font-weight: bold;"&gt;dos espacios&lt;/span&gt; y no de una &lt;span style="font-weight: bold;"&gt;tabulación tradicional (cuatro espacios)&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5931960151906815083-16402614177018244?l=ismael.unix.cl' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ismael.unix.cl/feeds/16402614177018244/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://ismael.unix.cl/2010/04/symfonydoctrine-clave-primaria.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5931960151906815083/posts/default/16402614177018244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5931960151906815083/posts/default/16402614177018244'/><link rel='alternate' type='text/html' href='http://ismael.unix.cl/2010/04/symfonydoctrine-clave-primaria.html' title='Symfony/Doctrine: Clave Primaria Compuesta'/><author><name>Ismael Diaz</name><uri>http://www.blogger.com/profile/00498592908108796304</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-5931960151906815083.post-907718199897844120</id><published>2010-01-23T17:01:00.000-08:00</published><updated>2010-01-23T18:53:49.619-08:00</updated><title type='text'>Seducido por la Manzana Prohibida</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ThY0YL0_nPA/S1u1CQiSaSI/AAAAAAAAADA/RJBzksvF4VI/s1600-h/mario_apple.png"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 175px; height: 200px;" src="http://1.bp.blogspot.com/_ThY0YL0_nPA/S1u1CQiSaSI/AAAAAAAAADA/RJBzksvF4VI/s200/mario_apple.png" alt="" id="BLOGGER_PHOTO_ID_5430132826128410914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Después de mas de una decada codeando sobre Sistemas Operativos Unix BSD y UnixLike Libres, debo asumir que me he dejado seducir por el encanto e inigualable belleza entregada por una manzana, que aunque está mordida en sus principios, me dejo encantado por la forma en la cual logra integrar lo mejor del mundo Unix BSD con el principio KISS. Si bien es una relación que recien comienza, tengo la esperanza que será una larga y comprometida relación (espero no estar escupiendo al cielo).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5931960151906815083-907718199897844120?l=ismael.unix.cl' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ismael.unix.cl/feeds/907718199897844120/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://ismael.unix.cl/2010/01/seducido-por-la-manzana-prohibida.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5931960151906815083/posts/default/907718199897844120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5931960151906815083/posts/default/907718199897844120'/><link rel='alternate' type='text/html' href='http://ismael.unix.cl/2010/01/seducido-por-la-manzana-prohibida.html' title='Seducido por la Manzana Prohibida'/><author><name>Ismael Diaz</name><uri>http://www.blogger.com/profile/00498592908108796304</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/_ThY0YL0_nPA/S1u1CQiSaSI/AAAAAAAAADA/RJBzksvF4VI/s72-c/mario_apple.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5931960151906815083.post-8068069669924707084</id><published>2009-08-12T11:09:00.000-07:00</published><updated>2009-08-12T11:35:19.641-07:00</updated><title type='text'>PostgreSQL: Actualizar nulidades en columnas</title><content type='html'>Algo que se podría pensar como trivial en un motor de bases de datos, como lo es el actualizar/modificar las nulidades de una columna, en &lt;a href="http://www.postgresql.org/"&gt;PostgreSQL&lt;/a&gt; resulta ser un poco mas complejo que un simple &lt;span style="font-weight: bold;"&gt;alter&lt;/span&gt;. He decidido compartir esto, ya que es algo que resulta bastante normal cuando se trabaja con bases de datos y por lo demás una problemática mas común de lo que se puede pensar.&lt;br /&gt;&lt;br /&gt;A continuación un ejemplo en donde se define &lt;span style="font-weight: bold;"&gt;attnotnull&lt;/span&gt; como &lt;span style="font-weight: bold;"&gt;FALSE&lt;/span&gt; (Se permite &lt;span style="font-weight: bold;"&gt;NULL&lt;/span&gt;)&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-weight: bold;"&gt;BEGIN;&lt;br /&gt;UPDATE&lt;br /&gt;  pg_attribute&lt;br /&gt;SET&lt;br /&gt;  attnotnull = FALSE&lt;br /&gt;WHERE&lt;br /&gt;  attname = 'nombre_columna'&lt;br /&gt;AND&lt;br /&gt;  attrelid = ( SELECT oid FROM pg_class WHERE relname = 'nombre_tabla') ;&lt;br /&gt;COMMIT;&lt;/blockquote&gt;Para el caso contrario basta con dejar &lt;span style="font-weight: bold;"&gt;attnotnull&lt;/span&gt; como &lt;span style="font-weight: bold;"&gt;TRUE&lt;/span&gt; (No Se permite &lt;span style="font-weight: bold;"&gt;NULL&lt;/span&gt;)&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;, ya que este es de tipo &lt;span style="font-weight: bold;"&gt;boolean&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;blockquote&gt;test=# \d pg_attribute&lt;br /&gt;   Tabla «pg_catalog.pg_attribute»&lt;br /&gt;  Columna    |   Tipo   | Modificadores&lt;br /&gt;---------------+------------+---------------&lt;br /&gt;attrelid        | oid            | not null&lt;br /&gt;attname       | name        | not null&lt;br /&gt;[...]&lt;br /&gt;attalign        | "char"      | not null&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;attnotnull | boolean | not null&lt;/span&gt;&lt;br /&gt;atthasdef     | boolean   | not null&lt;br /&gt;[...]&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/blockquote&gt;Una de las cosas que creo que es importante acotar, es que la columna &lt;span style="font-weight: bold;"&gt;relname&lt;/span&gt; de la tabla &lt;span style="font-weight: bold;"&gt;pg_class&lt;/span&gt; almacena el nombre de las tablas sin determinar el &lt;span style="font-weight: bold;"&gt;SCHEMA&lt;/span&gt;, esto lo pueden averiguar de manera sencilla haciendo la consulta por separado:&lt;br /&gt;&lt;blockquote style="font-weight: bold;"&gt;SELECT oid FROM pg_class WHERE relname = 'nombre_tabla'&lt;/blockquote&gt;Si retorna el &lt;span style="font-weight: bold;"&gt;oid&lt;/span&gt; es que esta bien, en caso contrario, algo estan haciendo mal.&lt;br /&gt;&lt;br /&gt;Con todo esto la columna ya debería contar con el nuevo atributo, permitiendo continuar con la música...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5931960151906815083-8068069669924707084?l=ismael.unix.cl' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ismael.unix.cl/feeds/8068069669924707084/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://ismael.unix.cl/2009/08/postgresql-actualizar-nulidades-en.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5931960151906815083/posts/default/8068069669924707084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5931960151906815083/posts/default/8068069669924707084'/><link rel='alternate' type='text/html' href='http://ismael.unix.cl/2009/08/postgresql-actualizar-nulidades-en.html' title='PostgreSQL: Actualizar nulidades en columnas'/><author><name>Ismael Diaz</name><uri>http://www.blogger.com/profile/00498592908108796304</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-5931960151906815083.post-4251978908560994601</id><published>2009-08-05T07:03:00.000-07:00</published><updated>2009-08-05T09:17:25.038-07:00</updated><title type='text'>PL/PgSQL: Obtener días hábiles de un rango de fechas</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ThY0YL0_nPA/SnmZ_p2TW3I/AAAAAAAAAC4/y-YoTD4N32w/s1600-h/elephant.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 150px; height: 150px;" src="http://1.bp.blogspot.com/_ThY0YL0_nPA/SnmZ_p2TW3I/AAAAAAAAAC4/y-YoTD4N32w/s200/elephant.png" alt="" id="BLOGGER_PHOTO_ID_5366489749833079666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;En mi trabajo nos surgió la necesidad de desarrollar un algoritmo que nos permitiese calcular y generar los días hábiles de un determinado rango de fechas. Este debía ser capaz de excluir de manera automática los días Sábado, Domingo y Festivos y retornar solo el resto de los días de lunes a viernes. El planteamiento a seguir fue el siguiente:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Elegir la tecnología para implementar el algoritmo:&lt;/li&gt;&lt;/ul&gt;         &lt;blockquote&gt;Como la base de datos institucional está en PostgreSQL, pensamos que lo mejor era apegarnos a esto y utilizar como lenguaje PL/PgSQL, el cual sin duda satisfacía cada una de nuestras necesidades para el caso y mucho mas.&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;Crear una tabla que contenga los días festivos:&lt;/li&gt;&lt;/ul&gt;         &lt;blockquote&gt;CREATE TABLE public.dia_festivo (&lt;br /&gt;     cod_dia_festivo CHARACTER(5) NOT NULL,&lt;br /&gt;     desc_dia_festivo CHARACTER VARYING(250) NOT NULL,&lt;br /&gt;     PRIMARY KEY (cod_dia_festivo)&lt;br /&gt;);&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;Poblar la tabla public.dia_festivo&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Crear la función&lt;/li&gt;&lt;/ul&gt;      &lt;blockquote&gt;CREATE OR REPLACE FUNCTION public.get_dias_habiles(date, date) RETURNS SETOF RECORD AS&lt;br /&gt;$BODY$&lt;br /&gt;DECLARE&lt;br /&gt;     fecha_ini ALIAS FOR $1;         -- Fecha Inicio&lt;br /&gt;     fecha_ter ALIAS FOR $2;        -- Fecha Termino&lt;br /&gt;     sabado integer := 6;                   -- Dia sabado&lt;br /&gt;     domingo integer := 0;               -- Dia domingo&lt;br /&gt;BEGIN&lt;br /&gt;RETURN QUERY&lt;br /&gt; SELECT&lt;br /&gt;             CAST(to_char(fecha_ini + dias, 'DD-MM-YYYY') AS character(10)) AS fecha&lt;br /&gt; FROM&lt;br /&gt;    generate_series(0, fecha_ter - fecha_ini) AS dias&lt;br /&gt; WHERE&lt;br /&gt;         extract (dow FROM fecha_ini + dias) NOT IN (sabado, domingo)&lt;br /&gt; AND&lt;br /&gt;         CAST(to_char(fecha_ini + dias, 'DD-MM') AS character(5))&lt;br /&gt; NOT IN&lt;br /&gt;         (SELECT cod_dia_festivo FROM public.dia_festivo);&lt;br /&gt;END;&lt;br /&gt;$BODY$&lt;br /&gt;LANGUAGE 'plpgsql';&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;Llamar la función:&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;SELECT&lt;br /&gt;     fecha&lt;br /&gt;FROM&lt;br /&gt;     public.get_dias_habiles('2009-01-01', '2009-12-31')&lt;br /&gt;AS&lt;br /&gt;     dias_habiles(fecha character);&lt;/blockquote&gt;Creo que todo el código es practicamente autoexplicable para alguien con conocimientos de SQL, PostgreSQL y PL/PgSQL, y la idea principal de compartirlo es obtener algún feedback con algún enfoque distinto, correcciones, y por supuesto que le pueda ser de utilidad y mejore el día a quien lo necesite.&lt;br /&gt;&lt;br /&gt;PS, Perdón por la falta de indentación pero el blog se la comió. :P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5931960151906815083-4251978908560994601?l=ismael.unix.cl' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ismael.unix.cl/feeds/4251978908560994601/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://ismael.unix.cl/2009/08/plpgsql-obtener-dias-habiles-de-un.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5931960151906815083/posts/default/4251978908560994601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5931960151906815083/posts/default/4251978908560994601'/><link rel='alternate' type='text/html' href='http://ismael.unix.cl/2009/08/plpgsql-obtener-dias-habiles-de-un.html' title='PL/PgSQL: Obtener días hábiles de un rango de fechas'/><author><name>Ismael Diaz</name><uri>http://www.blogger.com/profile/00498592908108796304</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/_ThY0YL0_nPA/SnmZ_p2TW3I/AAAAAAAAAC4/y-YoTD4N32w/s72-c/elephant.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5931960151906815083.post-9159900788832703935</id><published>2008-10-28T12:58:00.000-07:00</published><updated>2008-10-28T13:08:06.344-07:00</updated><title type='text'>Nueva visión</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ThY0YL0_nPA/SQdvXKpHoMI/AAAAAAAAACo/G9t0kBu1Kio/s1600-h/inerd.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 180px; height: 320px;" src="http://1.bp.blogspot.com/_ThY0YL0_nPA/SQdvXKpHoMI/AAAAAAAAACo/G9t0kBu1Kio/s320/inerd.png" alt="" id="BLOGGER_PHOTO_ID_5262297133390209218" border="0" /&gt;&lt;/a&gt;Después de bastante tiempo fuera de la blogosfera he sentido la necesidad de volver a contar con un espacio en donde poder dar rienda suelta a mi &lt;a href="http://es.wikipedia.org/wiki/Nerd"&gt;Nerd&lt;/a&gt; interior he ir haciendo un manifiesto de mi cotidianidad aunque esta vez con una visión mucho mas clara y objetiva, digo esto de manera literal ya que desde hoy soy un &lt;a href="http://es.wikipedia.org/wiki/Usuario"&gt;usuario&lt;/a&gt; de lentes ópticos factor de un descarado astigmatismo miópico.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Lo mas difícil de todo esto, es poder adaptarme a mis "nuevos ojos", ya que aún no domino mi motricidad fina, además de ver el monitor de mi laptop como un pseudo trapecio, pero bueno... como dicen mis amigos usuarios: "es cosa de costumbre", espero que desde esta nueva perspectiva pueda dejar atrás los desagradables dolores de cabeza y llevar una mejor calidad de vida.&lt;br /&gt;&lt;/div&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/5931960151906815083-9159900788832703935?l=ismael.unix.cl' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ismael.unix.cl/feeds/9159900788832703935/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://ismael.unix.cl/2008/10/despus-de-bastante-tiempo-fuera-de-la.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5931960151906815083/posts/default/9159900788832703935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5931960151906815083/posts/default/9159900788832703935'/><link rel='alternate' type='text/html' href='http://ismael.unix.cl/2008/10/despus-de-bastante-tiempo-fuera-de-la.html' title='Nueva visión'/><author><name>Ismael Diaz</name><uri>http://www.blogger.com/profile/00498592908108796304</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/_ThY0YL0_nPA/SQdvXKpHoMI/AAAAAAAAACo/G9t0kBu1Kio/s72-c/inerd.png' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
