viernes, 13 de diciembre de 2013

Una de calculadoras....

Muchos las dejaron de lado, pero las calculadoras de bolsillo o de mesa siguen siendo de uso frecuente. Cuando tengo que hacer muchas cálculos las prefiero frente a la calculadora en mi PC o tablet.

Solemos dar por buenos los resultados de una calculadora, sin cuestionarnos mucho. La experiencia, y alguna mala pasada, me han llevado a no confiar a ciegas en la calculadora. Si el resultado no me parece razonable, lo verifico. De seguir obteniendo resultados poco razonables, cuestiono la calculadora. 
Es bien sabido que las calculadoras usan una representación interna de los números reales. Esa representación tiene limitaciones, que puede llevar a que los cálculos no den resultados correctos. Cuando estaba en el liceo recuerdo varias pruebas para las calculadoras. Es  interesante la que publica este sitio:
arcsin (arccos (arctan (tan (cos (sin (9) ) ) ) ) ) 
La idea es poner la calculadora en modo grados sexagesimales, y ejecutar sucesivamente varias operaciones trigonométricas y sus inversas. El resultado esperado es el numero desde el que partimos.  Esta disponible una discusion detallada de la prueba propuesta. Y una tabla con los resultados obtenidos por distintas calculadoras. Me sorprendieron algunos resultados, con calculadoras de alta gama. Cuando encuentre mi calculadora, voy a probar que resultados da.

jueves, 12 de diciembre de 2013

NTP ... mantener los relojes sincronizados

NTP es un servicio del que no se ve mucho ruido. No es difícil sincronizar la hora de un servidor o red contra un servidor maestro, local a nuestra red. Los servidores maestros pueden servirse de otro servidor, que consideremos fiable; o alguno del pool.  Y funciona bastante bien.
Un reloj Atómico

Hace un par de años atrás puse un script que controlaba mi PC, sincronizado vía NTP, comparándolo contra otro reloj maestro.  Luego de varios meses corriendo el script todos los días me puse a hacer unas estadísticas rápidas. La mayoría de las mediciones, más de un 90 %, daban diferencias menores a 1x10-3 segundos. Unas pocas medidas, menos de 1%, andaban en 1x10-1 segundos. Lamentablemente, con un cambio de trabajo no guarde el script ni los datos. Voy a repetir el experimento.

Lo concreto es que hace poco me pidieron que diera una mano con unos relojes que no estaban funcionando bien. Me vino bien para repasar cosas que utilizo poco.NTP es un protocolo realmente complejo, la tarea a llevar a cabo lo exige. Las condiciones de trabajo no son las más favorables, la latencia de la red afecta mucho esta tarea.

Algunos recursos utiles para trabajar con NTP:
  • Sitio oficial:  De donde se puede bajar la documentación del protocola e implementaciones.
  • NTP Pool Project: Un listado de servidores que dan acceso publico. En sudamerica tenemos pocos, puede ser un proyecto interesante agregar algunos más.
  • Un Newsgroup: El grupo comp.protocols.time.ntp esta disponible por google groups, para quienes no tenemos acceso a un servidor de news. 
  • Recomendaciones para servidores publicos: Como deberian estar configurados aquellos servidores disponibles al publico.
  • Como interpretar la salida de ntpq -p: Este comnado nos ayuda a conocer el estado de un servidor.
Con este repaso me enteré de la existencia de PTP, un protocolo para sincronizar relojes que lo hace adecuado para sistemas de control y adquisición de datos.


jueves, 5 de diciembre de 2013

Editando la configuracion de Oracle

Estoy haciendo mis primeras armas como DBA en ORACLE. Aplicando unos cambios en la configuración de un servidor me enfrenté al error ORA-00838, que resolví con esta receta. Para resolverlo tuve que hacer cambios en la configuración, pero la configuración está en un archivo binario.

Lo primero es exportar la configuración a un archivo de texto:
create pfile='/tmp/pfile.backup' from spfile;
Esto genera un archivo de texto, /tmp/pfile.backup, que podemos editar con un archivo de texto. Luego de editar el archivo de texto, generamos el archivo binario para arrancar el motor:
create spfile from pfile='/tmp/pfile.backup';
Luego de eso, podemos arrancar el motor, con el comando startup.

miércoles, 20 de noviembre de 2013

Mejorar el rendimiento de un PC con Windows

Ocasionalmente tengo que trabajar en equipos de escritorio con Windows, los que adicionalmente tengo que "arreglar". Trabajar en Windows puede ser una experiencia bastante frustrarte, por la lentitud del arranque y el escritorio en general. Esta entrada la escribí después de estar trabajando sobre un netbook, que estaba imposible de usar.

Dejo algunas ideas  de tareas que pueden ayudar a mejorar equipos de escritorio.

Instalar más memoria RAM

Muchos PCs vienen de fabrica con poca memoria. Iniciando el administrador de tareas se puede ver cuanta memoria esta disponible. La ampliación de memoria es una forma sencilla de mejorar el rendimiento del PC.

Hay que estudiar si en el equipo afectado esto es posible y ver los costos de esa ampliación. Me ha pasado de evaluar la ampliación de memoria en equipos viejos, donde por el costo de la ampliación es posible comprar un equipo algo más nuevo con mas memoria y un procesador más rápido. Otro punto a tener en cuenta es que las versiones 32 bits de Windows pueden direccionar algo más de 3 GB de RAM.


Desinstalar Programas

Los Notebooks y PCs que vienen con windows pre instalado suelen traer software de terceras partes. Mucho de este software no aporta valor o tiene funcionalidades recortadas. Es bueno desinstalar aquel software que no vamos a utilizar o no aporta valor al uso del equipo. Con la ayuda del administrador de tareas puede ser útil chequear el uso de recursos de un software y sustituirlo por paquetes que utilicen mejor los recursos del equipo.

Muchos equipos que traen windows preinstalado por un fabricante, complementan los navegadores con "barras de tareas" y otros plugins . La mayoría aportan poco, son buenos candidatos a ser desinstalados.

Configurar el escritorio para Rendimiento

El escritorio de Windows, en las versiones XP o superiores; es muy vistoso. Toda esa decoración y recreo para la vista  consumen procesador y memoria. Es buena idea configurar el escritorio de modo que se priorice rendimiento.El aspecto del escritorio quedara similar a versiones más viejas de windows, pero significativamente mas ágil .Entrando por "Propiedades del Sistema", hacemos click en el botón "Rendimiento", allí seleccionamos las opciones más adecuada..En lo personal prefiero "ajustar para obtener mejor rendimiento".

Configurar los programas a arrancar en el inicio

En el arranque de Windows se inician muchos programas, que enlentecen el arranque. Ademas de quedar consumiendo memoria y procesador. Buena parte de esos programas aportan poca cosa, por lo que podemos sacarlos del arranque y quizas desinstalarlos.

¿Y si no es suficiente?

Si todo lo anterior no alcanza, hay que considerar otras alternativas. Una puede ser reinstalar el sistema operativo desde cero, siguiendo las directivas que publique arriba. Otra posibilidad es adquirir un equipo con más recursos. Y por ultimo, pero no menos importante, evaluar cambiar el sistema operativo. En el mismo hardware un PC con Linux presenta ventajas frente a utilizarlo con Windows.


martes, 5 de noviembre de 2013

Tutorial de GIMP

En el grupo de Fotos y Fotografos de Uruguay, de Facebook, descubrí este completo tutorial.

Su autor, Patrick David, escribe en base a su experiencia retocando sus fotos; esta orientado al trabajo de post producción. El tutorial esta disponible aqui. Otro tutorial recomendado por este autor es Meet The GIMP, de Rolf Steinor

En particular me gustó la porcion dedicada a Fotografia Blanco y Negro, con ejemplos de emulación de distintas variedades de pelicula (NeoPAN, HP-5, T-MAX ...) 

viernes, 25 de octubre de 2013

NET USE al rescate

Actualicé el SAMBA y el hardware de un equipo con AIX. Luego de la actualización, unos pocos PC, con Windows XP y 7, no podían montar los recursos compartidos desde el explorador de Windows.

Buscando una solución, habrí un simbolo del sistema, ejecuté desde alli el comando para montar unidades. ¡¡Problema resuelto!!!. La sintaxis del comando:

NET USE UNIDAD \\Servidor\Recurso

Luego de ejecutar el comando, pide usuario y clave. No he encontrado mucha referencia a este tipo de situaciones, pero me dice un colega que son habituales. Son el tipo de problemas que hacen acordar por que no me encuentro cómodo trabajando en Windows.

miércoles, 16 de octubre de 2013

Advanced Linux Programming

El titulo de este libro, publicado por New Riders,  lo describe completamente. Tratando de resolver un problema en el trabajo, tuve que repasar el funcionamiento de la memoria compartida. Es un libro orientado a programadores con conocimiento de C. Buscando recursos en linea, encontré que los autores del libro lo dejaron en linea para descarga.
El libro cubre temas clásicos en libros de esta temática, como los de Richard Stevens. Es interesante que trata temas como hilos o utilizar Assembler en linea en programas en C.

En lo personal me sigue gustando más Advanced UNIX Programming, de Richard Stevens. Eso no desmerece a este libro que es muy recomendable. Cuenta con el valor agregado adicional de estar disponible para descarga y consulta en linea.

sábado, 28 de septiembre de 2013

Otra solucion para problemas de Collation en Moodle con MySQL

Hace algunos meses comentaba sobre algunos problemas que tuve con el collation de MySQL en un upgrade de Moodle.

En otra actualizacion, revisando las herramientas CLI me encontré con este script:

 mysql_collation.php

Aparentemente el problema era frecuente, la gente de Moodle creo una herramienta.

viernes, 27 de septiembre de 2013

Filtrado de SPAM por listas negras en ZIMBRA

Me pidieron revisar un servidor de correo, donde los correos de un cierto dominio eran rechazados. En el syslog encontré entradas del estilo:

NOQUEUE: reject: RCPT from X.Y.Z.C [X.Y.Z.C]: 554 5.7.1 Service unavailable; Client host [X.Y.Z.C] blocked using all.spamrats.com=127.0.0.36; SPAMRATS IP Addresses See: http://www.spamrats.com/bl?X.Y.Z.C

Decidí cambiar la configuracion de listas de SPAM. Trabajando desde el usuario zimbra, corri zmprov:

zmprov gacf | grep zimbraMtaRestriction

Que me dio la siguiente salida:

zimbraMtaRestriction: reject_non_fqdn_sender
zimbraMtaRestriction: reject_unknown_sender_domain
zimbraMtaRestriction: reject_rbl_client list.dsbl.org
zimbraMtaRestriction: reject_rbl_client sbl.spamhaus.org
zimbraMtaRestriction: reject_rbl_client cbl.abuseat.org
zimbraMtaRestriction: reject_rbl_client dul.dnsbl.sorbs.net
zimbraMtaRestriction: reject_rbl_client all.spamrats.com=127.0.0.36
zimbraMtaRestriction: reject_rbl_client all.spamrats.com=127.0.0.38


Decidi sacar las listas de spamrats, por lo que volvi a correr zmprov

zmprov mcf zimbraMtaRestriction reject_non_fqdn_sender \
zimbraMtaRestriction reject_unknown_sender_domain \
zimbraMtaRestriction "reject_rbl_client list.dsbl.org" \

zimbraMtaRestriction "reject_rbl_client sbl.spamhaus.org" \
zimbraMtaRestriction "reject_rbl_client cbl.abuseat.org" \

zimbraMtaRestriction "reject_rbl_client dul.dnsbl.sorbs.net"

Otro posible enfoque es utilizar listas blancas, para explicitamente autorizar el correo proveniente de un dominio. Lo probe y no funciono correctamente, mientras investigo esa solucion retiré las listas negras que me dan problemas. Todos los dominios afectados son correo licito.

miércoles, 25 de septiembre de 2013

Control parental desde el DNS

Por una discusión en una lista de correo, llegué a OpenDNS. Esta organización ofrece DNS con capacidad de filtrado. Es un enfoque que no había considerado, utilizar el DNS para filtrar el direcciones. Acostumbrado a soluciones de filtrado en ambientes corporativos basadas en Proxys y firewalls con filtrado de contenido.

Para un ambiente domestico la configuración sugerida es utilizar los servidores de OpenDNS en el router. De esta forma los DNS se propagan a toda la red domestica por DHCP. En el caso de conexiones a Internet con IP dinámica,  usuales en mi proveedor para usuarios residenciales, es necesario que el router tenga configurado un cliente de DNS dinamico.

Con esta organización es necesario registrarse para utilizar sus servicios, hay servicios gratuitos y pagos con mayores prestaciones. No tengo intenciones de utilizar filtrado parental en casa en el futuro próximo; pero es bueno conocer alternativas.  Esta en particular es muy atractiva para ambiente domestico.

lunes, 9 de septiembre de 2013

Into the Wild / Hacia Rutas Salvajes

Leí este libro varios años atrás. Me impactó profundamente. Días atrás leía en prensa que Raúl Gómez Cincunegui fue encontrado vivo en un refugio de montaña. Intentó cruzar a pie los Andes, desde Chile. La búsqueda se interrumpió por el estado del clima. Lo encontraron con vida un grupo de técnicos de la provincia de San Juan.


Encontré un paralelismo con la historia de Christopher McCandless, que reconstruye el libro Hacia Rutas Salvajes. El periodista Jon Krakauer reconstruye los últimos tiempos de la vida de Christopher, a partir de entrevistas a su familia y testigos de su derrotero por USA y Norte de México, que termina en Alaska.
Autorretrato de Christopher McCandless
Como Christopher, esta persona entro en una aventura sin la debida preparación.Corrió con mejor suerte al quedar parado un refugio de montaña con provisiones. Y la llegada providencial de quienes lo rescataron.

Hacia Rutas Salvajes deja una gran lección, sobre el valor de preparar debidamente un viaje. Sea una salida familiar o una aventura mas exigente.

ENERO/2014: Días atrás, en El Observador publicaron una nota, que pueden leer aqui. Sobre Raúl Gómez Cincunegui, fue extraditado a Chile o esta por serlo. El motivo de su aventura fue una huida desesperada,  a instancias de un problema con la justicia.

martes, 27 de agosto de 2013

Upgrade de Firmware en ROUTER Linksys WRT-54GL

Quise hacer un upgrade al firmware de un Router Linksys WRT-54GL. El Upgrade anterior me costó encontrar el sitio de descarga. 

Buscando en los foros de linksys, encontré varias quejas al respecto. El enlace esta correcto en el sitio para el mercado de estados Unidos, los sitios para los restantes mercados no traen el link para descarga.


El link de descarga del firmware que funciona esta aqui. En un futuro no muy lejano tendré que encarar un upgrade a firmware de terceras partes como dd-wrt, tomato o OpenWrt.

lunes, 26 de agosto de 2013

Configuracion condicional de sshd

El sshd de openssh cuenta con la posibilidad de acatar ciertas condiciones de la configuración, tomando en cuenta configuraciones dadas.

Con la directiva Match, podemos aplicar ciertas configuraciones a aquellos clientes que se correspondan con una expresion regular. Las expresiones regulares pueden utilizar los caracteres comodín * y ?, y designan:
  • redes: con una expresion tipo 1.2.3.*, donde nos referimos a todos los equipos de una red. O *.com.uy para paradesignar todos los equipos de un dominio
  • equipos individuales: poniendo la IP del host afectado. Para aceder a un grupo de hosts podemos armar algo como 12.3.4?
Un ejemplo cortito, para permitir loguearse como root en equipos alojados en una DMZ.

# Acceso SSH como root desde la LAN
Match Host 192.168.9.*
     PermitRootLogin yes

En un equipo donde tenemos la directiva PermitRootLogin No, permite a los usuarios de la red 192.168.9.* acceder como root. No se puede aplicar Match a toda la configuracion, solo a un grupo de opciones. 

jueves, 22 de agosto de 2013

Hacker Epico: ¿Novela o Libro técnico?

Me enteré de la existencia de este libro por un post en google+, que me llevó al blog  de alguien que lo compró. Llegue al sitio de OxWORD (ex Informatica64), la editorial que lo publica. La oferta de esta editorial merece al menos una ojeada. Se abona por PAYPAL, el envió es a través del correo; llegó en menos de 15 días.

El formato y la diagramación me hacen acordar a los libros publicados por el CEI, cuando estudiaba en facultad de ingenieria. Los autores afirman que es un libro con el doble propósito de entretener y educar. A lo largo de la trama, cuando el personaje principal trabaja con su computadora, hay descripciones exhaustivas de lo que hace e incluso capturas de pantalla. En algunos pasajes los detalles técnicos distraen de la trama, no aportando a la historia. La seguridad informática no es mi campo principal de trabajo; tengo familiaridad con la terminología, metodología de trabajo y herramientas utilizadas. Con ese bagaje la lectura del libro se me hizo ágil y entretenida. Los detalles técnicos pueden abrumar o hacer perder el interés al lector no familiarizado con seguridad informática. El que tome este libro con la idea de encontrar algo similar a la saga Millenium de Stieg Larsson, seguramente salga decepcionado.



No voy a entrar en detalles de la trama; solo diré que si el final te deja esperando por más, hay una segunda parte en proceso. No hay fecha de publicación estimada, esta disponible para descarga el primer capitulo.

La pregunta que titula a este post, no tiene a mi entender una respuesta contundente. Mi impresión es haber leído un libro técnico, en clave de novela. 

lunes, 19 de agosto de 2013

Dia Mundial de la fotografia

Se conmemora el 19 de Agosto. Ese día, de 1839 el gobierno francés comunico que el invento de Daguerre, la fotografía, era un regalo al mundo.

El gobierno francés compró los derechos, a cambio de una pensión vitalicia para Daguerre y para el hijo de Niepce. Esto posibilitó que el daguerrotipo se popularizara mas allá de Francia.

Desde aquellos daguerrotipos con tiempos de exposición de hasta 40 minutos, hay mucho camino recorrido. Tiempos de exposición en el orden de 1/10000 de segundo, películas de alta sensibilidad. Cámaras livianas, con objetivos de calidad, que permiten llevarlas a todos lados. Cámaras en teléfonos celulares, con la posibilidad de compartir una imagen al instante.
Por encima de todo, la posibilidad de contar con un registro de acontecimientos y personas. De reproducir y compartir esas imágenes.

Programacion defensiva en los respaldos ....

En un servidor moodle que monitoreo, hacemos respaldos a un disco USB externo. Ha pasado varias veces, que el disco es desmontado. Decidí aplicar algunas ideas de programación defensiva al script de respaldos.

Antes de empezar con el respaldo ejecuto lo siguiente:

DISK_AVAILIABLE=$(mount |grep PATH|wc -l)

PATH se sustituye por el camino al punto de montaje del disco USB. Con esto determino si el disco esta montado. Una posible mejora a esta parte del script es que PATH esté en una variable y sustituir los comandos (mount, grep y wc) por variables, chequeando que sean ejecutables. Con esos cambios agregaríamos algo asi:

MONTAJE="PATH A MONTAR"
test -d ${MONTAJE}|| exit 1

MOUNT=$(which mount)
test -x ${MOUNT} || exit 1
GREP=$(which grep)
test -x ${GREP} || exit 1
WC=$(which wc)
test -x ${WC} || exit 1

La linea a ejecutar queda entonces:

DISK_AVAILIABLE=$(${MOUNT} |${GREP} ${MONTAJE}|${WC} -l)

Consultamos a la variable para decidir si hacemos el respaldo

if [ ${DISK_AVAILIABLE} == 1 ]; then
# Respaldar
else
# Manejo de errores
fi

No es una idea muy original, pero para el contexto es mas que adecuado.

viernes, 16 de agosto de 2013

primer contacto con LEGO

Hace algunas semanas tomé contacto de primera mano con LEGO, los ladrillos de encastrar más conocidos. En mi infancia utilice los ladrillos rasti, de origen argentino. Compré un paquete de la linea duplo, orientada a niños de hasta 5 años. Esta linea se compone de cubos cuyas dimensiones son el doble de los cubos estándar. De esta forma se le facilita la manipulación a los pequeños y se evitan accidentes.

Cubos LEGO DUPLO comparados con un cubo estandar

Sobre lego hay escrito mucho, como ha ido evolucionando a con el tiempo.  Sin duda, en tiempos recientes, la incorporación de la interfaz mindstorms ha sido el punto más alto de esta evolución. Esta interfaz orientada a robótica, ha trascendido el propósito original.

Lo que me sorprendió y me motivo a escribir esta entrada en el blog es la existencia de productos compatibles con Lego. Estaba haciendo compras para el día del niño, cuando vi una caja con una estética y tipografía similar a Lego.  Encontré este blog, que ademas cuenta con un glosario y un ranking de calidad de los diferentes fabricantes de compatibles.

Más Vivian Maier

Cuando escribi el post sobre esta fotógrafa, me quedé con ganas de saber de los restantes negativos. Hay un documental  que es estrenará próximamente. Buscando saber mas llegué a la colección Jeffrey Goldstein.

Esta coleccion se forma a partir de compras en mercados de pulgas. Se compone de unos 19.000 negativos, 1000 impresiones y algunas peliculas caseras.


¿Que más nos depara Vivian Meyer?

viernes, 26 de julio de 2013

Día del Administrador de Sistemas

Hoy se celebra el día del administrador de sistemas. Esta festividad se celebra desde el año 2000, todos los últimos viernes del mes de Julio. Es una festividad para reconocer el trabajo de los administradores de sistemas informáticos. Estos profesionales mantienen funcionando sistemas informáticos, cubriendo aspectos tanto de hardware como de software. En organizaciones pequeñas pueden tener a su cargo tareas de soporte a usuarios y programación.
Racks de Cableado
Feliz día a todos los que desempeñan tareas de administración de sistemas.

martes, 23 de julio de 2013

Chequear listas negras de correo

Las listas negras basadas en DNS son una herramienta popular para filtrar SPAM en servidores de correo. Eficientes, consumen pocos  recursos y son fáciles de implementar en los MTA más populares.

Existen decenas de servidores que proveen este servicio, algunos muy populares como SPAMHAUS o UCEPROTECT. Elegir que lista negra utilizar no es complicado. 

Chequear si un servidor está en lista negra puede ser una tarea tediosa, por la cantidad de listas negras existentes. Utilizo las siguientes:
Adicionalmente utilizo MultiRBL, chequea listas negras y revisa como la configuración del DNS para un dominio o IP. El informe de este sitio es muy claro, da una valoración acertada del estado de situación.

lunes, 22 de julio de 2013

La camara no miente .....

Muchas veces escuché esa frase. No conozco sus orígenes, quizás venga del papel que desempeña la fotografía en las ciencias; documentando hechos y procesos.

Buscando software e información sobre gestión de archivos fotográficos, vine a dar con el American Museum of photography. Este museo virtual tiene una exhibición dedicada a las fotografías trucadas. Dicho es sus propias palabras: "Como la cámara aprendió a mentir". 

Exposición Multiple
Poco puede sorprender hoy estas manipulaciones, estamos habituados a verlas en frecuentemente en fotografías tratadas por medios digitales. En esta exhibición vemos imágenes alteradas desde los daguerrotipos.

En la Unión Soviética el recurso de alterar fotografías se utilizó con frecuencia, para sacar de las mismas a lideres caídos en desgracia. 
Lenin,con trosky
¡No está trosky !

lunes, 15 de julio de 2013

Versiones de Java en equipos Windows

A fines del año pasado, estaba colaborando con un colega en actualizar equipos viejos con Windows. Los  equipos tenían versiones viejas de windows, 9x y 2000; ya sin soporte ni actualizaciones. 

Buscando cual era la ultima versión de Java soportada para esos equipos, llegué a esta pagina. Orientada fundamentalmente a desarrolladores, describe los cambios de las distintas versiones de Java.  

Yendo específicamente a lo que necesitaba mi colega, llega al sitio OldApps. Este sitio, tiene versiones viejas de software y tablas de compatibilidad para distintos sistemas operativos. En particular para java, tiene las ultimas versiones soportadas por windows. Para el que da soporte a PCs, eventualmente servidores, es un sitio para tener a mano. 

sábado, 22 de junio de 2013

OpenShot

Descubrí este editor de video por casualidad, mirando la grilla de charlas del FISL. Parece una buena opción para editar videos caseros. Algunas características destacables:
  • soporta multiples formatos de video, con asistencia de ffmpeg
  • multiples pistas
  • permite cortar y rescalar clips
  • transiciones
  • titulos
  • edicion y mezcal de audio
De lo que se ve en el sitio, la interfase de grafica es clara, bien terminada.Hay paquetes armados para varias distribuciones. Otro paquete que me anoto para probar. 

Una actualizacion de Moodle que se complicó

Unos meses atrás, encaré actualizar un servidor Moodle 1.9 con MySQL 5.1 a la versión 2.0. Seguí el procedimiento que postee en el blog.

Terminé la instalación procedi a configurar Moodle. Encuentro con un error de base de datos:
El mensaje de error hacia referencia al collation de dos tablas. Desde la consola, corrí un show table status. Había tablas con distintos collation. Decidí convertir las tablas a UTF-8, con collate utf8_unicode_ci. Utilice el siguiente alter table:

ALTER TABLE database.table CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; 

Como tenia que cambiar mas de 250 tablas, generé un script ad-hoc, partiendo de la salida del show tables, generando las sentencias SQL con AWK. Yo elegí como charset UTF-8, pero la receta aplica para cualquier combinación razonable de charset y collate.

sábado, 15 de junio de 2013

Lentes Radioactivos

Tengo unos cuantos lentes "Rosca pentax", que utilizo con mis reflex. Hace un tiempo escribí sobre las características de esta montura.

En foros donde se comenta sobre estos lentes, y otros producidos en los años 40 y 80 del siglo XX,  es frecuente encontrar referencias a "lentes radioactivos". Hacen referencia a que muchos de esos lentes cuentan con ópticas que contienen óxido de torio. Esta formulación mejora la transmisión de la luz. Como contrapartida, los lentes emiten radiación.

Esas emisiones pueden ser peligrosas, en un uso continuado de los lentes. No suele ser el caso de los fotógrafos aficionados.  Hay artículos que hablan de hasta una hora diaria de uso, sin riesgos para la salud.

En camerapedia hay un buen articulo (en ingles) que lista muchos lentes reportados como "radioactivos".  De los que tengo yo, el mas destacado es mi Pentax Super Takumar 50mm f/1.4.
Pentax Spotmatic con Lente 50 mm f/1.4
Pentax Spotmatic con Lente 50 mm f/1.4


martes, 11 de junio de 2013

Un año del BLOG

En el pasado mes de Mayo el blog cumplió su primer año de vida. Nace como una inquietud de incursionar en algo que no había hecho con anterioridad. Con el propósito adicional de ser un repositorio de conocimiento que he adquirido, o desarrollado, en mi trabajo. Con la esperanza de que este conocimiento le allane el camino a otros. También hay lugar para mis otros intereses, por ahora solo he publicado de fotografía.

He visto crecer el trafico a lo largo de los meses. Es un tráfico modesto, me hace acordar a Sanchez Padilla  y sus ocho espectadores. Algunas entrada me a sorprendido, por la cantidad de trafico generado, como la de Eloy Yerle.

No le dedico al blog lo que me gustaría, pero no quería pasar por alto esta fecha.


sábado, 8 de junio de 2013

ImapCreate - Administracion de casillas en Cyrus IMAP

Este script facilita el alta de casillas en servidores IMAP, basados en Cyrus  IMAP. Hace varios años le hice alguna modificación, esta funcionando en varios sitios. 

No existe un repositorio central para el mismo, lo dejo acá. La ventaja de usar este script, frente a cyradm, para crear casillas esta en que fue pensado para ser utilizado desde scripts. Esta programado en PERL, utilizando las APIs de Cyrus. Crea la casilla, carpetas adicionales y fija la cuota de disco del usuario.

#!/usr/bin/perl -w
#
# imapcreate: create IMAP mailboxes with quotas
#            Reads user names from standard input.
# Originally found on http://cyrus-utils.sourceforge.net
# ©2001 Garry Mills
#
# Enhanced by Clement "nodens" Hermann <clement.hermann@free.fr>
# Minor enhacements by Andres Tarallo <atarallo@gmail.com>
#
# I'd like to consider this as GPL'd (cf www.gnu.org), but won't add any
# copyright without the original author's consent.
# last modification : 2005/11/03
# Changes :
# 2005/11/03 - Added the posibility to create specific folders.
# 2005/04/19 - Added non-0 exit code on error or warning.
# 2005/03/31 - Finally found out the original author's name.
# 2004/11/23 - removed LOGIN as a default mech, now use cyrus' default
# - Added --auth option to specify mech
#
# TODO : fix STDIN collision when reading password AND mailboxes name from STDIN
#
use Getopt::Long;
use Cyrus::IMAP::Admin;
#use strict;

# CLI options
my ($debug, $user, $pass, $quota, @part, $useunixhierarchy, @mailboxes, @folders, $delete, $cyrus, $authmech);

sub usage {
    print "imapcreate - create IMAP mailboxes with quotas\n";
   print " usage:\n";
    print " imapcreate [-d] [-u user] [--auth mechanism] [-p pass] [-m     mailbox1[,mailbox2] />[,mailbox]] [-q quota] [-t partition:list]\n";
    print " [-f folder1[,folder2][,folder][-s] [-v] \n";
    print "\n";
    print "if -s is set, we'll use the unix hierarchy separator (see imapd.conf(1))\n";
    print "if -d is set, we'll delete mailboxes instead of creating them\n";
   print "You can use M or ,m to specify quotas. e.g. 10M. By default,\n";
    print "the quota is expressed in Kbytes.\n";
   print "If no password is submitted with -p, we'll prompt for one.\n";
   print "if no mailbox name is specified with -m, read user names from standard input\n";
   print "if -v is set, we'll run in debug mode, and print information on stdout\n";
    print "\n";
    print "The default mechanism is used for authentication. If you need another\nmechanism, (try LOGIN), use --auth option\n";
    print "\n";
    print " example: \n";
    print " imapcreate -u cyradm -m foo,bar,joe -q 50000 -t p1:p2  mail.testing.umanitoba.ca\n";
   print "\n";
   exit 0;
}

# Create a mailbox... usage : &CreateMailBox(user,partition[,quota]).
# You have to be authentified already. We use "$cyrus" as the connection name.
# partition can be 'default'
sub CreateMailBox {
   my $mbuser = $_[0];
   my $mbpart = $_[1];
   my $mbquota = $_[2];
   my $retval = 0;

   print "Creating $mbuser on $mbpart\n" if $debug;
   if ($mbpart eq 'default') {
      $cyrus->createmailbox($mbuser);
   } else {
      $cyrus->createmailbox($mbuser, $mbpart);
   }
   if ($cyrus->error) {
      warn $cyrus->error;
      $retval = 1;
   }

# Set the quota
   if ($mbquota){
      print "Setting quota for $mbuser to $mbquota\n" if $debug
      $cyrus->setquota($mbuser, 'STORAGE', $mbquota);
      if ($cyrus->error) {
         warn $cyrus->error;
         $retval = 1;
      }
   }
   return $retval;
}

# Create a Folder. Usage: &CreateFolder($folder, $part)
sub CreateFolder {
   my $folder = $_[0];
   my $mbpart = $_[1];
   my $retval = 0;

   print "Creating $folder on $mbpart\n" if $debug;
   if ($folder eq 'default') {
      $cyrus->createmailbox($folder);
   } else {
      $cyrus->createmailbox($folder, $mbpart);
   }
   if ($cyrus->error) {
      warn $cyrus->error;
      $retval = 1;
   }
   return $retval;
}

# Delete a mailbox. Usage: &DeleteMailBox($user)
# Assuming we use $user as the admin.
sub DeleteMailbox {
    my $mbuser = $_[0];
    my $delacl = "c";
    my $retval = 0;

    print "Deleting $mbuser\n" if $debug;
    $cyrus->setaclmailbox($mbuser, $user, $delacl);
    $cyrus->deletemailbox($mbuser);
    if ($cyrus->error) {
       warn $cyrus->error;
       $retval = 1;
    }
    return $retval;
}

GetOptions( "d|delete" => \$delete,
    "u|user=s" => \$user,
    "auth=s" => \$authmech,
    "p|pass=s" => \$pass,
    "f|folders=s" => \@folders,
    "m|mailboxes=s" => \@mailboxes,
    "q|quota=s" => \$quota,
    "s|UnixHierarchy" => \$useunixhierarchy,
    "t|part=s" => \@part,
    "v|verbose" => \$debug );

@part = split(/:/, join(':', @part));
push @part, 'default' unless @part;
my $pn = 0;
@mailboxes = split(/,/, join(',', @mailboxes));
@folders = split(/,/, join(',', @folders));
my $server = shift(@ARGV) if (@ARGV);

usage unless $server;

# quotas formatting:
if ($quota) {
   if ($quota =~ /^(\d+)([mk]?)$/i) {
      my $numb = $1;
      my $letter = $2;
      if ($letter =~ /^m$/i) {
         $quota = $numb * 1024;
         print "debug: quota=$quota\n" if $debug;
      } elsif ($letter =~ /^k$/i) {
         $quota = $numb;
         print "debug: quota=$quota\n" if $debug;
      } else {
         die "malformed quota: $quota (must be at least one digit eventually followed by m, M, k or K\n";
      }
  } else {
      die "malformed quota: $quota (must be at least one digit eventually followed by m, M, k or K\n";
  }
}

# Authenticate
$cyrus = Cyrus::IMAP::Admin->new($server);
die "Can't connect to $server\n" if ( ! (defined $cyrus) );
if ($authmech) {
    $cyrus->authenticate(-mechanism => $authmech,
       -user => $user,
       -password => $pass);
} else {
    $cyrus->authenticate(
       -user => $user,
       -password => $pass);
}
die $cyrus->error if $cyrus->error;
# if there isn't any mailbox defined yet, get them from standard input
if (! (defined $mailboxes[0])) {
# For all users
   while (<>) {
      chomp;
      my $mbox = $_;
      push @mailboxes, $mbox;
   }
}
# create/delete mailboxes for each user
my $return = 0;
foreach my $mailbox (@mailboxes) {
   my $username = $mailbox;
   if ($useunixhierarchy) {
      $mailbox = 'user/' . $mailbox;
   } else {
        $mailbox = 'user.' . $mailbox;
   }
   if ($delete) {
       my $retval = 0;
      # We should delete childrens
      if (defined $folders[0]) {
         foreach my $folder (@folders) {
            my $f;
            if ($useunixhierarchy) {
               $f = $mailbox.'/'.$folder;
            } else {
              $f = $mailbox.'.'.$folder;
            }
            $retval = &DeleteMailbox($f);
         }
      }
# Finally we delete the Mailbox
     $retval = &DeleteMailbox($mailbox);
     $return = $retval if ($retval != 0);
   } else {
# Select the partition
     my $pt = $part[$pn];
     $pn += 1;
     $pn = 0 unless $pn < @part;
     my $retval = &CreateMailBox($mailbox,$pt,$quota);
     # Creation of aditional Folders.
     if ($retval == 0 && (defined $folders[0]) ) {
        foreach my $folder (@folders) {
           my $f;
           if ($useunixhierarchy) {
              $f = $mailbox.'/'.$folder;
           } else {
              $f = $mailbox.'.'.$folder;
           }
           $retval = &CreateFolder($f,$pt);
           last if $retval;
        }
     }
# We've created the mailbox and eventually aditional folders.
    if ($retval == 0 ) {
       my @acl;
       $cyrus->setacl($mailbox, 'cyrus' => "all");
       $cyrus->setacl($mailbox, $username => "all");
    }
    $return = $retval if ($retval != 0);
  }
}
exit $return;

martes, 28 de mayo de 2013

Darktable, una mesa de luz digital libre ...

De casualidad, mirando un álbum en Picassa, descubrí Darkatable. Un paquete que facilita trabajar con fotografías digitales.

A diferencia de editores de imágenes, como Photoshop o GIMP,  está orientado al flujo de trabajo posterior a la captura de las imágenes. Facilitando la tarea de clasificar, editar y modificar colecciones de imágenes. Trabaja con imágenes RAW y JPEG. Hay paquetes binarios para instalarlo en las distribuciones mas populares. No esta aun disponible para usarlo en windows, si es posible compilarlo para esa plataforma.
Hay un manual, que aparenta ser bastante completo. Por lo que veo, un  paquete para empezar a usar y recomendar.

sábado, 18 de mayo de 2013

Script para correr sqlplus

Estoy ejecutando consultas a una base de datos Oracle desde shellscripts. Ejecuto las consultas invocando a sqlplus, la interfase de linea de comando de Oracle. Para poder reutilizar código, cree este script:

#!/bin/sh
PATH="/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin"
umask 022
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=${ORACLE_BASE}/product/11.2.0/dbhome_1
export ORACLE_SID=DBSID
export PATH=${ORACLE_HOME}/bin:${PATH}
export LD_LIBRARY_PATH=${ORACLE_HOME}/lib

USER="DBUSER"
PASSWORD="DBPASSWORD"
if [ ${#} -eq 1 ]; then
        if [ -f ${1} ];then
                sqlplus ${USER}/${PASSWORD} @${1}
       fi
else
       # Solo ejecutamos el SQLPLUS
       sqlplus ${USER}/${PASSWORD}
fi

Ejecutando el script solo, entramos a la linea de comando de sqlplus. Para ejecutar una consulta se pasa por parámetro el archivo con la consulta a ejecutar.

viernes, 10 de mayo de 2013

URL Filter en IPCOP 2.0.x

URLFilter es un modulo para IPCOP y Smoothwall. Lamentablemente,  no ha sido actualizado para utilizarlo en las versiones más nuevas de IPCOP.

Investigando encuentro que IPCOP incorpora un filtro con prestaciones similares al URLFilter. Sin embargo, no esta disponible en los menues en las versiones 2.0.x.  Debemos entrar en el navegador la siguiente URL: https://<ipcopIP:8443/cgi-bin/urlfilter.cgi

No hay muchos comentarios sobre esto, espero sea de utilidad.

jueves, 9 de mayo de 2013

Ultimas versiones de SAMBA para RHEL o SLES

Necesito instalar la ultima versión estable de SAMBA en un servidor SLES 11 SP2. Esta versión no esta disponible para SLES 11. En aras de la estabilidad, los desarrolladores de esta y otras distribuciones empresariales entregan versiones, a su criterio, estables.

SerNet mantiene un repositorio en el sitio Enterprise Samba.  Allí hay paquetes para las ultimas versiones de SLES, RHEL o CENTOS, Debian y Ubuntu.  Generan paquetes para distribuciones muy viejas como RHEL 4 o SLES 8.

Actualizacion Enero/2016: SerNet proporciona los paquetes exclusivamente a suscriptores, en un servicio pago. Para los usuarios de SuSE ver esta entrada del blog.

domingo, 28 de abril de 2013

Actualizar certificados SSL de Zimbra

En un servidor Zimbra, donde se venció el certificado SSL, al ejecutar zmcontrol start, veo el siguiente mensaje de error:

system failure: ZimbraLdapContext) (cause: javax.net.ssl.SSLHandshakeException sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: timestamp check failed

Buscando resolver esto, en la wiki de zimbra encontré una pagina referida a administración de certificados: Administration Console and CLI Certificate Tools.Para el caso que me afectaba, basto con seguir el ejemplo Single-Node Self-Signed Certificate, luego reiniciar zimbra. 

viernes, 26 de abril de 2013

Actualizar Versiones Viejas de SuSE

Una máquina virtual que corre SuSE 8.0, con un software de terceros. No se puede actualizar el equipo, ni correr el software en una máquina con una versión más nueva del sistema operativo.

Buscando alternativas para instalar software en una versión tan vieja de SuSE, llegué a un sitio FTP con versiones viejas de esta distribucion. Puede ser una ayuda, al que se encuentre en mi caso. Periódicamente se sacan distribuciones viejas, puede ser bueno respaldar este repositorio.

lunes, 22 de abril de 2013

Forzar Unity 2D en Ubuntu 12.04 (y posteriores)

En un equipo donde instalé Unity, quiero usar la versión 2D de este escritorio, un poco más performante.

Para esto, tengo que editar el archivo /etc/lightdm/lightdm.conf, buscar la entrada user-session. Si no esta agregarla, como sigue: user-session=ubuntu-2d.

Si quisieramos forzar unity, pondremos solamente ubuntu.

Otra de CUPS

Sigo con las colas de impresión. Algunas de mis impresoras de red utilizan colas LPD. Vemos que periódicamente, al mandar grandes cantidades de trabajos quedan algunos sin imprimir. A pesar de haber configurado el manejo de errores.

Buscando en foros y listas de correo, encuentro otros con el mismo problema, que resolvieron agregando un parámetro en la URI de la impresora afectada: ?timeout=XX. Donde XX es la cantidad de segundos que debe esperar antes de entrar en timeout.

viernes, 5 de abril de 2013

Manejo de errores en una cola de impresion CUPS

En el trabajo tenemos varias colas de impresión basadas en CUPS. En varias de esas colas se envían trabajos en lote, de un día para el otro. varias veces uno de esos lotes de trabajos ha quedado detenido, necesitando una intervención para corregir el problema.

La política de errores por defecto en las colas de cups es detener la impresión, frente a un error. Esto se cambia editando el parámetro ErrorPolicy. Este parámetro tiene los siguientes valores posibles:
  • abort-job abortar el trabajo actual, continuar con el siguiente
  • retry-job reintentar el trabajo actual. Esta accion esta afectada por los parametros JobRetryInterval y JobRetryLimit, definidos en el cupsd.conf.
  • retry-this-job reintentar el trabajo actual, ad eternium.
  • stop-printer Detener la cola de impresion, conservar los trabajos para imprimirlos con posterioridad.
Mi problema lo resolví con la opción retry-this-job.

lunes, 25 de marzo de 2013

Script para bajar y subir TeamViewer

Por un tema puntual necesito acceso a un equipo remoto, via TeamViewer. No soy fanático de esta herramienta, reconozco su utilidad en determinados contextos. Para sacar el trabajo, sin comprometer la seguridad, decidí activar el teamviewer solo cuando se necesita.

Para esto me hice un script, que lo inicia y lo baja desde una consola, sin necesidad de estar logueado en la consola gráfica. Cuando surge la necesidad, te logueas al equipo por SSH y levantas teamviewer. Cuando termina lo bajas.

El listado del script:

#!/bin/sh
PATH="/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/usr/lib/mit/bin:/usr/lib/mit/sbin"
# Display Variable might need customization.
DISPLAY=":0.0"

export PATH DISPLAY
# DAEMON location might change, depending on Linux distro.
TV_DAEMON='/etc/init.d/teamviewerd'
test -x ${TV_DAEMON} || exit 1
#
TV_EXE=$(which teamviewer)

case $(basename ${0}) in
    start-tvr)
        ${TV_DAEMON} start
        sleep 2
        ${TV_EXE} &
        ;;
    stop-tvr)
        for i in $(ps xa|grep -i -E '(teamviewer|services\.exe)'|grep -v grep |awk '{print $1}' ); do  kill $i; done
        ;;
    *)
        echo "USAGE (start-tvr|stop-tvr)" 

        exit 1 
        ;;
   esac
exit

Para instalar el script, copiarlo al servidor donde tenemos instalado teamviwer. Es necesario hacer dos symlinks al mismo, uno a start-tvr y el otro a stop-tvr . El script fue probado en SuSE Enterprise 11, puede necesitar cambios para otras distribuciones.

domingo, 17 de marzo de 2013

Actualizar Moodle en pocos pasos

He llevado adelante un par de actualizaciones en sistemas Moodle que administro. Una de las cosas que mas me gusta de moodle es su extensa y completa documentación. Su comunidad de usuarios tambien es de destacar, muy atenta y dispuesta a ayudar.
Trabajo Previo....
Previo a la actualización debemos evaluar el estado del sistema donde esta corriendo Moodle. Es importante tener claro donde está instalado, la versión de PHP que tenemos y la base de datos. 

La base de datos merece un capitulo aparte, a partir de la versión 1.9 moodle soporta PostgresSQL, MSSQL y Oracle, ademas de MySQL

Una vez hecho esto, podemos evaluar el camino a seguir en la actualización. Si tenemos una instalación muy vieja, seguramente necesitemos actualizar la versión de PHP y base de datos. Puede ser bueno actualizar todo el sistema operativo.
Respaldar
Previo a la actualización, se recomienda respaldar. Ese respaldo nos debería permitir volver a atrás, si algo sale mal. Tendríamos que respaldar el directorio moodle, el moodledata y la base de datos.
Actualizar
Actualizar el software consiste en remplazar el directorio Moodle actual, por la nueva versión. Para terminar la actualizacion, seguimos desde la web. 

Si estamos actualizando desde una versión muy vieja, anterior a la 1.9, se recomienda actualizar a la versión inmediatamente siguiente. hasta llegar a la ultima versión estable de la serie 1.9. Desde una versión 1.9  se puede actualizar a cualquier version de la serie 2, teniendo en cuenta la version de PHP requerida y las bases de datos soportadas.

martes, 26 de febrero de 2013

UltraVNC: Cliente/Servidor VNC Libre en Windows

Para algunas situaciones de soporte remoto, utilizo VNC. En equipos de escritorio tienen la ventaja de que podemos interactuar con la sesión actual del usuario; a diferencia del Escritorio Remoto de Windows o una X-Terminal  en Linux.

En algunos equipos viejos utilizo RealVNC, una de las implementaciones más antiguas de este servicio. Quise instalar en Windows 7 la versión que veníamos instalando en equipos viejos. Y no funciona bien. Baje una versión mas nueva, que funciona correctamente. Esa versión es paga para uso empresarial

Buscando una implementación libre de VNC, encontré UltraVNC. En la página de descarga, hay instaladores para Windows 32 y 64 bits. Si se quiere utilizar en versiones muy viejas de windows (anteriores a Windows 2K) utilizar una versión vieja.


jueves, 14 de febrero de 2013

Fotografia con el Celular

Hace algún tiempo que los celulares traen cámaras. Mi primer celular con cámara sacaba fotos en resolución VGA. No esta mal para ver en linea,  no es adecuado para otros usos. Sumado a la baja calidad de la óptica del celular, los resultados están a la vista.

Desde hace unos meses tengo un smartphone con sistema operativo Android. El teléfono esta equipado con una cámara de 5 megapixeles, y mejores ópticas.
Las posibilidades que abren estos celulares son enormes. Contar con una cámara compacta, que saca fotos de razonable calidad; poderlas subir a una red social o enviarlas por correo. He visto algún medio de prensa que, priorizando la inmediatez,  ha sacado varias de sus fotos de tapa con las cámaras de los celulares de sus periodistas. Mas datos aqui y en este otro articulo.

jueves, 31 de enero de 2013

Shell de Administrador Windows Vista/7

La Shell de Administrador permite ejecutar tareas como un administrador, sin necesidad de cambiar de usuario. Es un mecanismo análogo a sudo(8) o su(1) de UNIX/Linux.

Para ejecutarla ir a INICIOluego TODOS LOS PROGRAMAS y finalmente entrar a ACCESORIOS. Allí, elejimos Simbolo del Sistema y con el botón de la derecha del ratón abrimos un menú.
Hacemos click en la opción Ejecutar como Administrador, tenemos una shell con privilegios.


viernes, 25 de enero de 2013

Fotografia Instantanea

La fotografía instantánea tuvo su auge en los años 60 y 70. De la mano de Edwin Land, a través de la empresa Polaroid, llega a manos de los consumidores una cámara que permitía sacar una foto y verla en pocos minutos. Kodak y Fuji desarrollaron sus variantes en fotografía instantánea.

Estas cámaras encontraron aplicación por parte de profesionales de fotografía y en instrumentos científicos (microscopios, osciloscopios). Para los profesionales proporcionó un método para validar una escena, iluminación, etc. los artistas tambien fueron usuarios entusiastas de estas tecnologías. Andy Warhol produjo una serie de fotografías de celebridades.

Camara HP para Osciloscopios

Con la aparición de la fotografía digital, y avances en informática, la fotografía instantánea pierde popularidad, amen de que los principales fabricantes discontinuan la producción de películas para estas cámaras.

En particular las cámaras producidas por Polaroid, son muy simples y robustas. Continúan siendo muy populares entre artistas. Viendo esta oportunidad, Los fundadores del impossible project compran una fabrica en Europa, que fuera propiedad de polaroid. Y comienzan el viaje que da nombre al proyecto: reconstruir desde cero el proceso de producción de películas polaroid.

Actualmente producen películas para unas cuantas cámaras Polaroid. Para los que utilizan cámaras con pelicula tipo 100, pueden utilizar las películas producidas por fuji.
Polaroid 100 Automatic

martes, 22 de enero de 2013

PHP 5.3 en SLES 11

Necesito PHP 5.3 en un servidor SLES11.  A partir del Service Pack1, vienen los paquetes de PHP 5.3. Estos paquetes estan pensados para correr en paralelo con el PHP 5.2, que viene por defecto.

Encontré una discusión, que me llevó a un repositorio. Agregando este repositorio desde el YaST, pude actualizar la instalación a PHP 5.3.17

viernes, 18 de enero de 2013

Interoperabilidad con Linux/UNIX en escritorio Windows

Por trabajo, necesito frecuentemente utilizar notebooks y equipos de escritorio bajo Windows. Y necesito conectarme a equipos Linux y UNIX, poder subir y bajar archivos. Abrir archivos comprimidos con tar o gzip.
Algunos de los paquetes que me dejan realizar estas tareas:
  • PuTTY: Es un completo paquete de emulación de terminal. Soporta SSH (version 2 y 1), Telnet y RSH.
  • WINSCP: Facilita la trasnferencia de archivos mediante SFTP,SCP o FTP.
  • 7ZIP: Comprime y descomprime archivos. Tiene una herramienta de linea de comando, util para integrar en scripts.
  •  XMing - XServer: Un servidor X, que integrado con el PuTTY nos permite correr aplicaciones X directamente en el escritorio Windows.
  • Notepad++: Un completo editor de texto para Windows. 
Esta lista no es completa, ni definitiva. 

miércoles, 16 de enero de 2013

Configurar Zona Horaria de Uruguay en Windows XP y anteriores

Algunas veces tengo que dar soporte a equipos de escritorio, con Windows. Todavia andan en la vuelta equipos con Windows XP, 2000 y 9x, que no traen la zona horaria de Uruguay con el cambio de hora de verano. Esta disponible en linea el decreto de presidencia, donde se detalla el funcionamiento del horario de verano en Uruguay.

Hace unos cuantos años encontré una receta en Microsoft para agregar la zona horaria de Uruguay, en la versiones que no la traen. La receta esta aca. Y una version mas general se puede ver aqui.

Si optamos por editar la registry de Windows, debemos crear dos archivos. Timezones.reg y Tzinfo.reg, que se pueden ver a continuacion.

Timezones.reg

Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Montevideo Uruguay]
"Display"="(GMT-03:00) Montevideo"
"Dlt" = "Horario de Verano"

"Index"=dword:00000047 "TZI"=hex:b4,00,00,00,00,00,00,00,c4,ff,ff,ff,00,00,03,00,00,00,02,00,02,00,00,\ 00,00,00,00,00,00,00,09,00,00,00,03,00,02,00,00,00,00,00,00,00
Tzinfo.reg

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
"Bias"=dword:000000b4
"StandardName"="Montevideo Uruguay"
"StandardBias"=dword:00000000
"StandardStart"=hex:00,00,03,00,02,00,02,00,00,00,00,00,00,00,00,00
"DaylightName"="Montevideo Uruguay"
"DaylightBias"=dword:00000000
"DaylightStart"=hex:00,00,03,00,02,00,02,00,00,00,00,00,00,00,00,00
"ActiveTimeBias"=dword:000000b4
"DisableAutoDaylightTimeSet"=dword:0000000

Luego de creados lso archivos, cargarlos en el equipo a actualizar. Como corresponde a sistemas operativos viejos (sin mantenimiento), esta informacion puede ser difícil de encontrar.