Android y ActiveSync calendar

Síntoma

Calendario no sincroniza con Exchange mediante Activesync.

Descripción

Para quienes hayan actualizado de Froyo a Gingerbread hace poco es probable que se encuentren con este problema.

Los teléfonos con android son capaces de sincronizar calendarios con servidores Exchange por medio de Activesync. El problema ocurre al subir de versión en Android, ya que deja de funcionar el calendario.

En el caso que pude ver, es posible seguir utilizando el correo, sin embargo, el calendario se queda estático y no recibe nuevas citas.

Solución

La solución que pudimos comprobar consiste en:

1-. Eliminar la cuenta ActiveSync

2-. Eliminar los datos del calendario. Esto se hace desde la configuración: Config> Aplicaciones> Administrar aplicaciones> Almacenamiento de calendario> Eliminar datos

3-. Reiniciar el teléfono

4-. Volver a crear la cuenta ActiveSync

5-. Es posible que en algunos casos se deba activar todo el historial del calendario para que funcione la sincronización. Esto se hace en la configuración de la cuenta Active Sync: Configuración> Cuentas y sincronización> (Seleccionar cuenta deseada)> Configuración de cuenta> Sincronizar historial de Calendario >(Seleccionar “todo”)

IPv6, nuevo integrante en el home network

– “Hoy es una noche especial, tenemos churros, papas fritas… “, decía Guaripolo en una presentación especial con Buddy Richard.

En fin, este post es sólo para marcar en el calendario el inicio de IPv6 en la red de casa. Hoy los equipos conectados a la red obtienen una dirección ip pública de 128 bit de longitud y con acceso a un gran numero de redes que ya cuentan con este direccionamiento habilitado.

Como nota dejo esto que costó un poco lograr ya que no hay muchos ejemplos por ahi. Los equipos descubren el prefijo de red mediande Routing Advertisement. Aún faltan las opciones de DNS y otras que en IPv4 se hacían usualmente con DHCP. Existe en la actualidad dhcpv6, que aún no he revisado. Por ahora la nota de configuración de radvd en el host linux que hace de router:

interface eth1 { 
        AdvSendAdvert on;
        MinRtrAdvInterval 3; 
        MaxRtrAdvInterval 10;
        prefix 2001:1291:671::/64 { 
                AdvOnLink on; 
                AdvAutonomous on; 
                AdvRouterAddr on; 
        };
	route ::/0 {
		AdvRouteLifetime infinity;
	};
        RDNSS 2001:1291:671::1 {  
        # no funciona aun
        };
};

En este momento los clientes conectados a la red (Windows y Linux) estan con doble pila (IPv4 e IPv6). Dado que aún no resuelvo lo de la auto-configuración de los resolvers, la resolución se hace por IPv4.

Es el principio. Todo esto basado en un tunel con el cual obtuve una ip v6 y luego la asignación de una subred pública /48 que es la que utilizo en la red interna.

Dentro del tiempo que dispongo estaré agregando algunos datos sobre esta implementación que podría ser de utilidad para algunos.

Acá un pantallazo desde un cliente Linux:

Lightning calendar: Cambio de horario invierno

Usar agendas electrónicas y calendarios compartidos hoy es problemático. A quien no le ha pasado que ha llegado tarde o temprano con una hora o mas de desfase a una reunión?

Es un volador de luces? Para que se vea que están tomando medidas (de efectividad discutible) con el objeto de resolver o mitigar el problema energético? No veo otra razón, porque ni hablar de que es una medida “contra la delincuencia”.

En fin, a lo que nos convoca. Luego de la frase celebre del bi-ministro:

@cvillaroe: Se pospone el cambio de hora para Mayo!?! @golborne te odio yo y todos los informaáticos de #chile!

@lgolborne: @cvillaroe vamos! No es para tanto… yo trabajé años en informática así que algo conozco el tema. No están parametrizados los sistemas?

procederemos a “parametrizar” lightning en thunderbird.

Timezone

La extensión Lightning viene con las zonas horarias en un archivo de base de datos SQLite. Por lo tanto, no hay forma de que funcione correctamente aunque tengamos el sistema operativo parchado y los servicios de calendario funcionando bien sin tocar este archivo y que sea sostenible durante este año al menos.

El archivo timezones.sqlite se encuentra en:

En Linux

*[user_home]/*.thunderbird/*[id_thunderbird]*.default/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/ 
En Windows

*:Documents and Settings*[nombre_usuario]*Datos de
programaThunderbirdProfiles*[id_thunderbird]*.defaultextensions{e2fda1a4-762b-4020-b5ad-a41df1933103} 

Es una base de datos SQLite. Se puede editar con algunas herramientas como SQLite database browser.

Cambiar el “daylight saving time”

Hay que cambiar el inicio del horario de invierno y el horario normal (verano) en la tabla tzdata para el registro cuyo tzid = "America/Santiago". Se debe editar el campo component y dejar la siguiente información marcada con rojo:

BEGIN:VTIMEZONE
TZID:America/Santiago
X-LIC-LOCATION:America/Santiago
BEGIN:DAYLIGHT
TZOFFSETFROM:-0400
TZOFFSETTO:-0300
TZNAME:CLST
DTSTART:19701011T000000
RRULE:FREQ=YEARLY;BYDAY=3SU;BYMONTH=8
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0400
TZNAME:CLT
DTSTART:19700315T000000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=5
END:STANDARD
END:VTIMEZONE

Este cambio es para que lightning entienda la “decisión final oficial” que nuestro gobierno ha tomado respecto de este “parametro”. Es como aterrizar el “cambio del no cambio del cambio de hora”.
BYDAY=3SU;BYMONTH=8 sería el tercer domingo del mes 8. Aprobación pendiente.
BDAY=1SU;BYMONTH=5se entiende como el primer domingo del mes 5. Decreto aprobado.

Si no puedes editarlo, entonces puedes descargar el archivo ya modificado e instalarlo en las rutas mencionadas antes:

Descargar Lightning timezones.sqlite.

Utilidades diversas de ffmpeg y mencoder


Finalmente este artículo será mas bien una hoja de apuntes para conversión de diversos formatos y codecs.

ffmpeg

Extraer audio en mp3 desde un video flv (youtube)

Hace unos minutos tuve que extraer el audio de un video descargado de youtube a mp3.

He probado con mpeg, mp4, avi y funciona sin problemas.

Probablemente funcionará con cualquier formato de video que ffmpeg pueda reproducir.

Es posible copiar sólo el audio de un video. Esto se puede hacer con el comando ffmpeg:

ffmpeg -i video_prueba.flv output.mp3

Pasar WMA a MP3

Luego tuve que cambiar varios archivos WMA a MP3. El problema era que al pasarlos, quedaban con un bitrate de 64k, siendo que el original venía en 128k. Por lo tanto se agrega el parámetro -ab:

ls *.wma | awk '{a=$0 ;gsub(/.wma/,".mp3",a);system("ffmpeg -i ""$0"" -ab 131072 ""a""")}'

mencoder

Pasar FLV a AVI para reproducir con SmartMovie

mencoder  -srate 16000 -o  -oac mp3lame -lameopts vbr=0:br=32:mode=3 -ovc xvid -xvidencopts bitrate=112 -ofps 24 -sws 2 -delay 0.0

WordPress problema con acentos y tildes


Luego de actualizar a la última versión una instalación de wordpress con contenido en español que usualmente lleva acentos y tildes, empiezan aparecer caracteres no esperados. O al menos no deseados.

Revisando es posible observar que el contenido queda almacenado con acentos en la DB codificado.

Luego de bastante buscar, encontré un parámetro del archivo wp-config.php que no tenía antes: DB_CHARSET:

define('DB_CHARSET', 'utf8');

En el caso que vi se logra reparar el error tan sólo modificando la línea a lo siguiente:

define('DB_CHARSET', 'utf-8');

Asi es, pensé que era una broma pero no. Sin guión no toma el valor correcto.

GNU Linux:

Tux Teacher
Hace un tiempo tuve que preparar un curso sobre GNU/Linux. Lamentablemente no tengo “vocación” para la academia y tengo mucho respecto por aquellos que han estudiado para la pedagogía. Ahora, tampoco estaría educando niños de 5 años como para marcar el destino de sus vidas. Pero en fin, me metí en esto con mucho respeto.

El gran retorno que obtuve fue un repaso “forzoso” de conocimientos que tuve que recuperar del rincón de un cajón. Ese rincón donde están los papeles que si no te das cuenta terminas botándolos a la basura. Preparar este curso me sirvió para recuperar esos “papeles”.

Ha pasado harto tiempo y hoy decidí publicar este trabajo para aportar con un grano de arena a aquellos que quieren aprender.

Voy a ir publicando de a una cada presentación de este curso que ahora supongo que debe llamarse “tutorial”…

Incluiré la reseña histórica y la presentación porque nunca está demás.

tips: copia con tar y ssh

Es posible copiar un directorio de forma recursiva con muchos archivos a traves de la red usando ssh y tar para mantener los permisos y modos de cada archivo y directorio. La primera opción sería generar un tar primero en la maquina de origen y luego transferirlo a la maquina de destino para finalmente desempaquetar el archivo. Sin embargo, todo esto se puede hacer en una linea:

ssh usuario@origen "tar -cvf - /usr/share/request-tracker3.4/" |tar -xvf -

Consiste básicamente en empaquetar con tar (mediante ssh un comando remoto en el servidor origen) y enviar los datos al standar output en ves de a un archivo .tar, luego generar un pipe al comando tar en el equipo local que desempaquetará lo que le llega por el standar input
Nota: El comando es ejecutado en la máquina destino con $PWD en el directorio destinado.

root@destino:/usr/data/request_tracker# pwd
/usr/data/request_tracker

Cambio de password manual en mediawiki

Hace un tiempo comencé a usar MediaWiki para consolidar algo de información. Por distintas circunstancias debí ingresar como admin. Lamentablemente el admin que instaló el sistema ya no estaba y no había documentos ni historia del tema.

Lo primero que se me ocurrió fue hacer un update directamente a la tabla de usuarios cambiando el valor del campo user_password por el mismo texto (codificado) que tenía en mi password. No funcionó, ya que Mediawiki utiliza una combinación de operaciones y la función hash MD5 para generar un string. Al momento de login, utilizando el password que ingresa el usuario y esta función, se genera un string que debe coincidir con el almacenado en la tabla.

La función incluye el ID del usuario por lo tanto dicho string es válido sólo para ese usuario, o para algún otro valor de password que genere colisión con el valor original en el dominio de la función MD5, lo cual es poco probable.

En MySQL esto debiese funcionar así:

update user set user_password =  md5(concat('24-',md5('otrapassword'))) where user_id=24;

En este caso 24 es el user_id del usuario en cuestión. Esto es lo que hace dependiente del usuario la password y la función.