generate_timedivisions() para PostgreSQL

En PostgreSQL, supongamos que queremos generar todos los períodos mensuales entre ‘2015-09-12 23:50:00′ y ‘2015-11-22 00:20:00′ con corte al inicio del día 8.

Se puede crear la siguiente función:


CREATE OR REPLACE FUNCTION generate_timedivisions(ts_start timestamp, ts_end timestamp, period varchar, period_offset interval = '0') RETURNS TABLE(tr_start timestamp, tr_end timestamp) AS $$
DECLARE
    end_of_test_interval timestamp;
BEGIN
    SELECT date_trunc(period, ts_start) + ('1 ' || period)::interval + period_offset INTO end_of_test_interval;
    WHILE end_of_test_interval < ts_end LOOP
        RETURN QUERY SELECT ts_start, end_of_test_interval;
        ts_start = end_of_test_interval;
        end_of_test_interval := ts_start + ('1 ' || period)::interval;
    END LOOP;
    RETURN QUERY SELECT ts_start, ts_end;
END;
$$ LANGUAGE plpgsql;

Y usarla de esta manera:


-- Obsérvese que se usa '7 day' y no '8 day' por las siguientes razones:
-- 1. los días comienzan a contarse con 1.
-- 2. el último parámetro es 'interval'
-- 3. Se pide el corte al *inicio* del día 8.
SELECT * from generate_timedivisions('2015-09-12 23:50:00', '2015-11-22 00:20:00', 'month', '7 day');

      tr_start       |       tr_end        
---------------------+---------------------
 2015-09-12 23:50:00 | 2015-10-08 00:00:00
 2015-10-08 00:00:00 | 2015-11-08 00:00:00
 2015-11-08 00:00:00 | 2015-11-22 00:20:00

Asiste al Software Freedom Day Tijuana 2015

¡Nos vemos el sábado 19 de septiembre de 2015 en el Software Freedom Day Tijuana 2015!

En este evento tendremos por primera vez dos salas con actividades simultáneas. ¡Será como un minicongreso! Tendremos los talleres mencionados y un área de demostraciones donde podrás interactuar de primera mano con los programas de Software Libre.

Conoce todos los detalles y regístrate en http://sfd.gultij.org/

Como siempre, te pido que nos ayudes a pasar la voz:

Infinitas gracias a nuestros expositores, voluntarios y patrocinadores.

sfd-flyer-50

Crecimiento y declive de la comunidad

En el grupo de Facebook Gultij – Grupo de Usuarios de GNU/Linux de Tijuana, Gustavo pregunta lo siguiente. He traducido las citas que originalmente estaban en inglés.

Momentum de las comunidades del software libre:

Veo un post en los grupos de OpenSuSE que dice algo así como:

«Googleé grupos de usuarios de Linux en mi región y encontré que la mayoría de los sitios no han sido actualizados en años. ¿Comenzó a morir Linux mientras estuve ausente?»

Y una de las respuestas, que me pareció acertada:

«Sí, la comunidad es una sombra de lo que alguna vez fue. El Código Abierto y la tecnología ya no es tan padre y la nube es un enorme parásito adjuntado a la comunidad Open Source.»

Me parece acertada la última línea. ¿Se ha vuelto la comunidad FLOSS simplemente un producto / mercancía para los intereses de otras compañías o proyectos, mas allá de la temática filosófica? ¿Qué opinan?

Primero hay que detectar las falacias, y en la pregunta original hay una grave. No es lógico implicar “sitios de los GUL sin actualizar →  Linux comienza a morir”, esa es una conclusión un tanto melodramática.

Lo que sí es cierto es que la comunidad se ha transformado. No es que la comunidad venga a menos sino que se ha transformado gracias al surgimiento de otras fuentes de información centralizadas en la nube. Al tener un alcance mayor, es más fácil encontrar respuestas de mayor calidad en estos foros; es natural. En otras palabras, la comunidad global se ha fortalecido y algunas comunidades locales presentan declives.

El beneficio de los GUL locales es menor en apariencia pero sólo lo es en cuanto al GUL como fuente de información. Hay otros beneficios más difíciles de apreciar y Mario H. Cornejo los describe muy bien en la publicación Presentar en un grupo de usuarios de su blog Developeando.

Sin embargo, a pesar de este surgimiento de información centralizada, modificar nuestro consumo hacia la nube nos hace dependientes de la misma (y en consecuencia de E. U. A. y el dólar), en lugar de ejercer la libertad de nuestro propio cómputo. No estoy lanzando culpas: los costos y el mercado dirigen parte de este movimiento, pero la disculpa no elimina la realidad.

Hay que diferenciar audiencia de comunidad. Hay que diferenciar a quienes buscan en el grupo de usuarios como mera fuente de información (la audiencia, que consume el valor del grupo) de quienes aportan con trabajo, participación, código y contenido original (la comunidad, que genera el valor del grupo).

El perfil de la gente que genera valor es diferente del perfil de la gente que lo consume. No resulta sorpresivo que —salvo algunas excepciones— la mayoría de la gente que genera valor también está presente en el canal de IRC #gultij en la red Freenode.

He visto —en otros lugares— que la gente dice “¿cuándo es la siguiente presentación?” pero nadie dice “yo ofrezco este tema”. Eso no es comunidad, eso es audiencia. Con esto me refiero a que los sitios Web de los LUG no se actualizan solos; algún humano debe generar el contenido (de preferencia original, no sólo enlaces a blogs).

Al final del día, el éxito de los GUL depende únicamente de la gente. Si la gente no aporta con trabajo a un GUL, éste automáticamente se desvanece. Es muy fácil:

  • Si pocos trabajan para el GUL, la densidad de trabajo es muy alta y los frutos de la comunidad son bajos; los voluntarios se desmotivan y se van.
  • Aunque haya actividad, si no se da la apariencia de dicha actividad, los externos no la perciben (como ocurre en la pregunta original) y no participan; entonces el trabajo se mantiene concentrado en unos cuantos… y ver punto anterior.

En resumen, a la pregunta original —la que fue citada por Gustavo— yo contestaría: los grupos de usuarios de tu área comenzaron a morir debido a que estuviste ausente.

Software Freedom Day, Tijuana 2015

La fecha para el Software Freedom Day Tijuana 2015 está establecida. Será el sábado 19 de septiembre de 2015.

¡Bienvenidos presentadores! Envía tu propuesta antes del 31 de julio a http://sfd.gultij.org/

Regístrate en http://sfd.gultij.org/

¡Comparte tus conocimientos! Regístrate en http://sfd.gultij.org/ y presenta en el Software Freedom Day, Tijuana 2015

A veces un “if” es más barato

En una interesante discusión en el grupo de Facebook de la Comunidad .NET Tijuana surgió el tema de las microoptimizaciones, en particular el uso de evaluación en corto circuito y el ahorro de ifs “que son muy costosos al CPU”.

Mi último argumento:

A lo que iba es que el short-circuit, si bien te puede ahorrar ifs, también puede darte sorpresas como brincarse validaciones de seguridad. Ha ocurrido en otros lenguajes. Yo prefiero un if explicito, que en realidad no es nada caro al CPU, a menos que no diseñes bien tus condiciones.

Entonces el autor original hace un planteamiento: ¿Cuál de los dos siguientes programas es más rápido?

Sigue leyendo