En las garras del mal: Windows Phone

Estos días pasados me he hecho, by my beautiful face™, con un móvil nuevo con Windows Phone 7. Hace un tiempo comenté que pensaba hacerme de uno, pero que su falta de sincronización directa me hizo descartarlo. Con el tiempo, este descarte quedaba aún más obligado al no poder ver en directo un cacharro con el nuevo sistema de los de Redmond: está muy maltratado por las operadoras y las tiendas de telefonía. Supongo que cuando lleguen los modelos de Nokia lo veremos más, que los hierros finlandeses gozan de gran predicamento por estos lares.

Tengo móvil nuevo, decía. Un poco triste el sacarlo de la caja: el anterior que tuve, un Touch del mismo fabricante, venía en una caja negra de cartón duro y cierre magnético que aún conservo, con protector de pantalla, manual tocho, una buena funda y puntero de reserva. El nuevo, más grande y más caro, viene constreñido en una caja barata, con guía rápida y poco más. Tristes nuevos tiempos.

El cacharro es un señor cacharro, aunque no le pueda colgar la llave del Lancelot que llevo en el Touch. Mueve con soltura lo que le han metido, el nuevo invento de Spectra para dominar los móviles, después de que la malvada cool Apple cambiara las reglas hace ya su buen tiempo con el ay!fon. El mal aprende del mal y nos hace firmar un pacto con la manzana (iba a decir con el diablo, pero aquél se conformaba con el alma) limitando muy mucho lo que podemos meter en el sistema y cómo. En la semana que llevo con el cacharro ya hay algunas cosas que echo de menos del viejo, venerable y obsoleto Windows Mobile/CE.

Pero los sistemas como Mobile o el mismísimo Symbian se han quedado viejos. Ahora que vivimos (o vamos camino de vivir) en la nube (siempre que no nos preguntemos dónde están nuestros datos, no sea que nos dé un soponcio) y consumimos servicios en la nube y, en general, es moda no tener los pies en el suelo, estos viejos sistemas que nos daban el control sobre lo que sucedía en nuestro móvil se extinguen, apartados a puntapiés de la carrera evolutiva. Pasamos a darle el control de nuestro móvil a la operadora si nos daba un buen cacharro y un servicio medio decente. El siguiente paso ¿lógico? era dar el control total al fabricante. Así, leo en multitud de sitios que a Windows Phone le hace falta una buena tienda de aplicaciones, no el poder instalar esas aplicaciones sin tener que pasar por la dichosa tienda, y cosas así. Horror de los horrores. ¿Adónde hemos llegado?

En fin, podía hacer oídos sordos a los cantos de sirena de los tres diablos (el cool, el malomalo y el buenobueno) y seguir con mi viejo cacharro (SCUMMVM al poder), o pasarme a un Symbian. Pero el problema es que, aunque fui fuerte y resisit la tentación cool y la buenrollista, he terminado probando la opción maligna der tó. Y resulta que la maldita es buena de narices. Y las preocupaciones y quejas que tenía de antes (no sincroniza con Outlook, no deja instalar aplicaciones si no es a través de su tienda de aplicaciones, ¿qué pasa con mis datos?…) han pasado a un discreto segundo plano.

El infierno de los códigos de barras

Con motivo del día de Satán, también conocido como nuestro arranque con SAP B1, hemos tenido un fin de semana horroroso de preparativos que se alargó un día más de lo previsto, como colofón a una semana horrorosa y preludio a otra igual de terrible. Una de las cosas que más guerra nos ha dado la impresión de etiquetas de códigos de barra que antes las hacíamos con un programa y ahora teníamos pensado emplear informes de Crystal Reports. No había manera de conseguir imprimir un EAN14 válido. El problema añadido es que en Internet no encontrábamos mucha ayuda.

Al final, la solución vino de un foro del venerable Visual FoxPro, solución que resumo aquí como aviso para navegantes:

El EAN/DUN14 es un churro de números. Información sobre cómo componer un número válido es fácil de encontrar: que debe tener un número par de cifras, cómo se calcula el dígito de control, la norma para su composición… Pero averiguar cómo imprimir eso en un código de barras es harina de otro costal.

Para el código de barras se usa una codificación Interleaved 2 of 5, que representa dos números como un grupo de cinco líneas y espacios. Aquí viene nuestro problema, porque con una fuente de texto sola no hacemos nada: cada carácter de nuestro código de barras se corresponde con dos números de nuestro DUN14. O sea, nuestro código de barras tendrá la mitad de caracteres que nuestro DUN14. Esto nos obliga a usar un algoritmo que nos convierta nuestro chorro de números en esa cadena. Esta cadena, con un tipo de letra Interleaved 2 of 5, será nuestro código de barras.

Y aquí es donde se nos presenta el problema, porque el algoritmo depende de la fuente empleada (o al revés, vamos). De nada nos vale una fuente I2o5 si no tenemos el algoritmo. ¿Por qué? Porque los casos que he visto funcionan del siguiente modo:

Vamos recorriendo nuestro DUN14, cogiendo cada par de números. Al número que representan (por ejemplo, 58) se le suma un valor dado (digamos 52). Se obtiene el carácter correspondiente a ese código numérico (110) y ése, en nuestra fuente I2o5, se corresponderá con las cinco barras-espacios que necesitamos. Como se ve, si nuestra fuente no es la correspondiente a nuestro algoritmo, el carácter representado no tiene por qué coincidir (y no lo hará) con el buscado.

Al final, debemos tener una cadena de caracteres formada por un carácter de apertura, la cadena tratada y un carácter de fin, que nuestro lector será capaz de entender.

En el artículo que menciono antes encontramos código para generar una representación de nuestro DUN14 para una fuente I2o5 y, además, nos da la fuente. El código, pese a los nombres de las variables, es muy simple: la mayor parte de la función se dedica en calcular el dígito de control y en asegurarse que la longitud sea correcta. Si ya tenemos nuestro código válido, todo se reduce a lo siguiente:

1) Tomamos cada par de números de nuestro código (para 14 cifras tendremos, pues, 7 pares).

2) Si el número de dos cifras que componen es menor de 50, le sumamos 48. Si es mayor, 142.

3) Sacamos el carácter correspondiente a ese código.

4) Formamos una nueva cadena de caracteres con los que hemos obtenido, en orden.

5) Como cabecera le añadimos el carácter 40 y como cierre, el 41 (los paréntesis)

6) Aplicamos la fuente I2o5 que acompaña al ejemplo y listo.

La primera aplicación de esto la hice a mano, en Excel, para un código dado y la alegría de ver cómo el lector entendía el puñetero código después de tan horroroso y desesperante fin de semana es difícil de explicar.

Restaurar Menú Inicio Todos los programas en Windows 7

Si a raíz de una infección vírica se han borrado los accesos directos de Menú Inicio\Todos los programas en Windows 7/Vista y/o los iconos de acceso directo del escritorio de todos los usuarios (antiguo All Users, ahora Public), probar lo siguiente:

1) Que la carpeta AppData\Local\Temp\smtmp\1\ dentro de la cuenta de nuestro usuario (C:\Users\Usuario\AppData\Local\Temp\smtmp\1\) existe y tiene todas las carpetas y accesos directos del Todos los programas

2) Que la carpeta AppData\Local\Temp\smtmp\4\ dentro de la cuenta de nuestro usuario (C:\Users\<Usuario>\AppData\Local\Temp\smtmp\4\) existe y tiene los elementos del escritorio público.

Si es así, sólo queda restaurarlos. La forma más rápida es abrir una ventana de comando con permisos de Administrador (ojo con esto) y tirar de Xcopy:

xcopy %Temp%\smtmp\1 «C:\ProgramData\Microsoft\Windows\Start Menu» /H /I /S /Y /C

xcopy %Temp%\smtmp\4 «C:\Users\Public\Desktop» /H /I /S /Y /C

El bicho en cuestión también había hecho desaparecer todo lo existente en Users. En casos como ese es importante no dejarse llevar por el pánico. Puede haberlos ocultado o convertido en archivos de sistema. El comando Attrib es de gran ayuda en estos casos. Como antes, siempre ejecutando la consola en modo administrador.