getWeekNumber: Función para obtener el número de la semana en Javascript

Posted 17 Diciembre 2009 by Rubén Gómez
Categories: Programación

Tags: , , ,

Hace un tiempo estuve buscando la manera de conseguir sacar el número de la semana en Javascript, por desgracia la librería estándar no hace esto. Al final adapté el código de la librería fuente de PHP, extendiendo además la capacidad de establecer el primer día de la semana. Espero que lo encuentres útil si lo necesitas.

Some time ago I was looking to find the way of getting the week number in Javascript, sadly the standard library doesn’t handle this. I’ve adapted a function in the source code library of PHP, also adding the posibility of setting the first day of week. Hope you find it useful if you need it.

// selectedDate: Date type object with the time of the week we're requesting
// fdow: First day of week, 0:Sunday, 1:Monday, etc
// returns: object with year and week number properties
function getWeekNumber(selectedDate, fdow)
    {
        var y = selectedDate.getFullYear(), m = selectedDate.getMonth()+1,
            d = selectedDate.getDay() + 1 - fdow;
        if(d == 0) d = 7;
        var y_leap, prev_y_leap, doy, jan1weekday, weekday;
        var iy, iw, i, j, NYD, res;

        NYD = new Date(y, 0, 1);
        jan1weekday = NYD.getDay() + 1 - fdow;
        if(jan1weekday == 0) jan1weekday = 7;
        y_leap = new Date(y,1,29).getDate() == 29;
        prev_y_leap = new Date(y-1,1,29).getDate() == 29;
        doy = (selectedDate - NYD) / 86400000 + 1;

        if(y_leap && m > 2) {
            doy++;
        }
        weekday = selectedDate.getDay() + 1 - fdow; // day of week
        if(weekday == 0) weekday = 7;
        if (jan1weekday == 0) jan1weekday = 7;
        // Find if Y M D falls in YearNumber Y-1, WeekNumber 52 or 53
        if (doy  4) {
            iy = y - 1;
            if (jan1weekday == 5 || (jan1weekday == 6 && prev_y_leap)) {
                iw = 53;
            } else {
                iw = 52;
            }
        } else {
            iy = y;
        }
        // Find if Y M D falls in YearNumber Y+1, WeekNumber 1
        if (iy == y) {
            i = y_leap ? 366 : 365;
            if ((i - (doy - y_leap))  4) {
                iw -= 1;
            }
        }
        res = { week:Math.round(iw), year:iy };
        return res;
}

Manifiesto en defensa de los derechos fundamentales en internet

Posted 3 Diciembre 2009 by Rubén Gómez
Categories: Derechos

Tags: , , ,
Ante la inclusión en el Anteproyecto de Ley de Economía sostenible de modificaciones legislativas que afectan al libre ejercicio de las libertades de expresión, información y el derecho de acceso a la cultura a través de Internet, los periodistas, bloggers, usuarios, profesionales y creadores de internet manifestamos nuestra firme oposición al proyecto, y declaramos que…

1.- Los derechos de autor no pueden situarse por encima de los derechos fundamentales de los ciudadanos, como el derecho a la privacidad, a la seguridad, a la presunción de inocencia, a la tutela judicial efectiva y a la libertad de expresión.

2.- La suspensión de derechos fundamentales es y debe seguir siendo competencia exclusiva del poder judicial. Ni un cierre sin sentencia. Este anteproyecto, en contra de lo establecido en el artículo 20.5 de la Constitución, pone en manos de un órgano no judicial -un organismo dependiente del ministerio de Cultura-, la potestad de impedir a los ciudadanos españoles el acceso a cualquier página web.

3.- La nueva legislación creará inseguridad jurídica en todo el sector tecnológico español, perjudicando uno de los pocos campos de desarrollo y futuro de nuestra economía, entorpeciendo la creación de empresas, introduciendo trabas a la libre competencia y ralentizando su proyección internacional.

4.- La nueva legislación propuesta amenaza a los nuevos creadores y entorpece la creación cultural. Con Internet y los sucesivos avances tecnológicos se ha democratizado extraordinariamente la creación y emisión de contenidos de todo tipo, que ya no provienen prevalentemente de las industrias culturales tradicionales, sino de multitud de fuentes diferentes.

5.- Los autores, como todos los trabajadores, tienen derecho a vivir de su trabajo con nuevas ideas creativas, modelos de negocio y actividades asociadas a sus creaciones. Intentar sostener con cambios legislativos a una industria obsoleta que no sabe adaptarse a este nuevo entorno no es ni justo ni realista. Si su modelo de negocio se basaba en el control de las copias de las obras y en Internet no es posible sin vulnerar derechos fundamentales, deberían buscar otro modelo.

6.- Consideramos que las industrias culturales necesitan para sobrevivir alternativas modernas, eficaces, creíbles y asequibles y que se adecuen a los nuevos usos sociales, en lugar de limitaciones tan desproporcionadas como ineficaces para el fin que dicen perseguir.

7.- Internet debe funcionar de forma libre y sin interferencias políticas auspiciadas por sectores que pretenden perpetuar obsoletos modelos de negocio e imposibilitar que el saber humano siga siendo libre.

8.- Exigimos que el Gobierno garantice por ley la neutralidad de la Red en España, ante cualquier presión que pueda producirse, como marco para el desarrollo de una economía sostenible y realista de cara al futuro.

9.- Proponemos una verdadera reforma del derecho de propiedad intelectual orientada a su fin: devolver a la sociedad el conocimiento, promover el dominio público y limitar los abusos de las entidades gestoras.

10.- En democracia las leyes y sus modificaciones deben aprobarse tras el oportuno debate público y habiendo consultado previamente a todas las partes implicadas. No es de recibo que se realicen cambios legislativos que afectan a derechos fundamentales en una ley no orgánica y que versa sobre otra materia.

Vía Barrapunto

Yo estoy de acuerdo que cada cual obtenga el beneficio que le quiera pedir a los demás por su trabajo (si es que los demás se lo quieren dar) pero dar autoridad ilimitada a un ministerio para censurar y multar contenidos a golpe de decretazo se me antoja peligroso, que es un poder muy goloso. Me recuerda a un sistema de gobierno ya pasado en España. Ya veremos a qué nos lleva esto.

¿Qué es la programación?

Posted 8 Agosto 2009 by Rubén Gómez
Categories: Ciencia, Mi opinión, Programación

Tags: , ,

¿Es una ingeniería? ¿dejó de serlo o siempre fue una labor artesanal? ¿O es una labor artística, poética?

Yo creo que en ese sentido los democoders y programadores de videojuegos (cuando no lo hacen víctimas de la “explotación” de un proyecto comercial) llevan (¿llevamos?) una ventaja al resto de la especie humana en esto de comprender la verdadera naturaleza de la programación.

La programación siempre ha sido, es y será una sola cosa:

Enseñar a una máquina a soñar con una oveja eléctrica.


Script para interfaz común a sistemas de administración de paquetes

Posted 6 Mayo 2009 by Rubén Gómez
Categories: Programación, Sistemas

Tags: , , , , ,

Hace tiempo me rondaba la idea de compilar en un script una interfaz sencilla y unificada a los distintos comandos que empleo cada día para administrar los sistemas de paquetes, hoy me he animado y he escrito uno que crea un modo bastante sencillo de administrarlos en Ubuntu y FreeBSD… es una primera idea, he buscado a ver si había algo así ya hecho, no he visto nada (me extraña) pero bueno por si acaso aquí está, la herramienta se llama pkt y acepta los siguientes comandos:

  • d{elete}: borrado (suave), no borra datos de configuración en Ubuntu y no borra dependencias en FreeBSD
  • D{elete}: borrado (duro), lo contrario de lo anterior
  • f{iles}: muestra los archivos en un paquete
  • p{acket}: busca paquete por nombre entre los instalados
  • i{nstall}: instala paquete (Ubuntu: ligero, sin recomendaciones, FreeBSD sin variación)
  • I{nstall}: instala paquete (Ubuntu: completo, con recomendaciones, FreeBSD sin variación)
  • u{pgrade}: Actualizar paquetes instalados
  • U{pdate}: Actualizar repositorio de paquetes/ports
  • v{iew}: Ver información completa de paquete
  • V{iew}: Ver todos los paquetes instalados

Además valida que las herramientas necesarias estén instaladas, ejecuta adecuadamente sudo donde corresponde, y en cada acción muestra el comando ejecutado con lo que supongo que también tiene un cierto efecto “pedagógico”. Con una pequeña adaptación también valdría para OpenBSD, y supongo que para sistemas tipo Fedora…

Usa arrays de datos por lo que requiere una versión más o menos moderna de Bash, en mi Ubuntu estoy usando la 3.2.48.

Actualización 29/05/2009: Enlace de descarga (v0.7) desde su repositorio en Google Code

Procesando los típicos mensajes ‘ociosos’ con anexos laaargos con procmail

Posted 15 Marzo 2009 by Rubén Gómez
Categories: Sistemas

Tags:

Creo que rara será la persona que lleve un tiempo usando el correo electrónico de manera profesional y no se sienta algo incómodo cuando algún bienintencionado familiar/amiguete le envíe a su correo de trabajo esa bonita presentación/animación de 25 megabytes para ver paisajes, las piruetas de un lindo gatito, etc… mediante este código en el directorio personal (home) en .procmailrc podemos reenviarlos sin guardarlos en el buzón de trabajo a otra dirección de correo más conveniente (más indicaciones mediante man procmailrc), las dos primeras líneas comentadas son útiles, opcionalmente, para el depurado del functionamiento del fichero de reglas:

# VERBOSE=YES
# LOGFILE='procmail.log'
:0w
* ^Content-Type: multipart
{
:0B
* ^Content-(Type|Disposition):(.|$[ ])*(\.|-)(pps|ppt|mpg|wmv|m4v|avi|flv)
! {direccion@email.alternativo}
}