10 feb 2009

Eñes y vocales tildadas en Ubuntu

Cuando instalé Ubuntu en mi computadora portátil lo hice eligiendo como idioma el inglés, por dos razones, una, me da casi lo mismo si los menúes estan en inglés o en castellano, y dos, que para teclear líneas de comando y sentencias en un entorno de desarrollo me son suficientes los caracteres del inglés.

Hoy he tenido que reconsiderar esa decisión ya que de un tiempo a esta parte también estoy utilizando la portátil para responder correos y, desde este instante, escribir posts. Bueno, en este punto vale aclarar que en el teclado de la portátil no tengo los caracteres latinos, es un teclado en inglés. Tener que poner tíldes a las vocales y escribir las eñes mayúsculas y minúsculas es un legado de nuestros antepasados peninsulares del que no puedo escapar, así que no queda otra que buscar la forma más cómoda de mostrar virgulillas y acentos.

Recuerdo que hace un tiempo, bastante tiempo, me vi obligado a tener que escribir en castellano sobre un teclado de "doble golpe" en inglés, era una IBM PC traida de los "yunaites" y no quedaba otra, de aquella experiencia me quedó la costumbre de utilizar Alt + para mostrar las vocales acentuadas y demás. Esto no es una opción, ya que esas combinaciones no son tan fácilmente accesibles en Ubuntu y menos en el teclado de una portátil.

Una opción más viable podría ser configurar dos distribuciones de teclado y una combinación de teclas para cambiar entre una y otra. Es una buena alternativa, sin embargo, a mí me "lleva el chanfle" cuando tengo que cambiar repetidamente de distribución, especialmente cuando edito páginas web.
La opción que finalmente he elegido es la de buscar la mejor distribución de teclado posible y acostumbrarme a ella. Felizmente, no ha sido tan arduo, esa distribución es muy común y lleva por nombre:

EEUU Alternativa internacional(antigua us_intl)

Coloco el nombre tal y como aparece en Ubuntu por si desean probarla. He leído por ahí que muchos prefieren otras soluciones a este problemilla de tener el teclado en inglés, pero esta es mi elección.

Si tienes Ubuntu Intrepid Ibex, puedes revisar tus distribuciones de teclado accediendo a SISTEMA -> Preferencias -> Teclado, pestaña Distribuciones.
En mi caso, para mostrar una vocal tildada debo presionar la tecla que esta dos posiciones a la derecha de la l y luego la vocal. La ñ aparece luego de presionar la tecla ~ seguida de la n, ya sea esta mayúscula o minúscula. Si te animas, cuéntanos en los comentarios qué teclado físico y qué distribución utilizas.

6 nov 2008

Oracle 10g... a leer

Este es un breve artículo para dirigirlos al conjunto oficial de recursos de Oracle, en formato HTML o PDF, conocido como la Oracle Database Documentation Library con tan solo hacer click aquí.

Bueno, no demores más y empieza a descargar... Por cierto, todo este material se refiere a la versión 10g, si estas interesado en la versión 11g pregúntale al buen Google :).

11 sept 2008

Google Chrome

Google Chrome

Los días pasados ha tenido mucho eco la noticia del lanzamiento (dicen que accidental) del navegador de Google, así como lo han tenido también sus vulnerabilidades. Como siempre sucede en este tipo de lanzamientos hay voces a favor y voces en contra, entre las últimas el argumento más reclamado es que ya existen suficientes navegadores y no necesitamos otro navegador más.

Mi experiencia diaria en cuanto al uso de los navegadores me ha dejado la sensación de que no funcionan tan rápido como debieran en algunos casos, tampoco son tan confiables como debieran ser y que tal vez podrían tomar menos memoria para ejecutarse. Si bien es cierto, mi elección para navegar es por ahora Firefox 3.0 sobre Ubuntu me parece interesante que Google ofrezca una alternativa que pueda hacer más interesante la competencia que hasta ahora ha tenido solamente dos protagonistas y varios actores secundarios intentando ganarse un papel principal, aún sin lograrlo. Veremos si el recién llegado logra un papel estelar o queda relegado a ser un extra.

Para conocer la propuesta de Google Chrome pueden revisar esta explicación en forma de comics, es muy interesante, clara y sobre todo sencilla incluso si no dominamos perfectamente el inglés. Bon Apetit.

14 ago 2008

Dynamic Programming Day - Lima, 16AGO08

Dynamic Programming Day 2008

El Grupo de Usuarios de Linux en Perú, más conocido como el PLUG ha organizado una serie de charlas a lo largo de todo un día a la que han denominado Dynamic Programming Day, obviamente el tema central serán los lenguajes de programación dinámicos. Lástima que este fin de semana en Ica sea tan movido, la falta de transporte y un compromiso el domingo me hacen pensar en que es muy difícil que pueda asistir, sin embargo, espero que algunos de ustedes puedan estar por ahí y beneficiarse de este esfuerzo de la gente del PLUG.

Justamente en esta semana se esta llevando a cabo un congreso de estudiantes de Ingeniería de Sistemas en Lima y sé, que Ica ha llevado una muy numerosa delegación, a ellos les sugiero a la distancia que asuman con algo de moderación el fin de fiesta del congreso (el viernes) para que puedan asistir a este evento y sacarle más provecho aún a estos días en Lima. La calidad del evento esta asegurada por el nivel de los ponentes y las personas comprometidas en la organización.

7 ago 2008

Mensaje de Texto

Una vez más tenemos un problema del Google Code Jam traducido y listo para ser resuelto. En esta ocasión se trata de encontrar la distribución más óptima para un teclado de un hipotético teléfono celular. La premisa es que la distribución habitual no toma en cuenta la frecuencia con que se utilizan las teclas limitándose a ubicarlas de forma consecutiva lo cual nos lleva a tener que realizar un número de pulsaciones mayor que si se hubiera tomado en cuenta la frecuencia mencionada. Si lograramos ubicar las letras del alfabeto de modo tal que, dado un mensaje, se necesitara la menor cantidad posible de pulsaciones entonces la escritura del mensaje sería óptima.

De hecho, la respuesta al problema debe ser el mínimo número de pulsaciones que tendríamos que realizar si encontramos la distribución óptima para nuestro hipotético teclado. El texto completo del problema, que viene con una introducción a modo de relato, puede ser descargado aquí.

Espero que sigan animándose a resolver estos problemas y, que sean más quienes dejen sus comentarios que serán de mucha ayuda para quienes recién estan empezando.

29 jul 2008

Producto Escalar Mínimo

Nuevamente comparto con ustedes un problema del Google Code Jam 2008, esta vez corresponde al primer problema (Problema A) de la ronda de clasificación 1A. Se trata de calcular el Producto Escalar Mínimo entre dos vectores considerando todas sus permutaciones. Si no quedó claro, me disculpo y les ofrezco la traducción del problema que pueden descargar aquí.

Como ya sabrán quienes pasaron por el sitio del Google Code Jam el problema planteado debe ser resuelto para dos conjuntos de soluciones un conjunto pequeño y un conjunto grande, el tiempo entre la descarga del conjunto de prueba y la remisión de la solución es de 4 y 8 minutos respectivamente.

La idea detrás de este mecanismo es que un algoritmo que resuelva el problema pueda ser probado sin mayores optimizaciones con el conjunto de prueba pequeño que, usualmente, tiene restricciones en el rango de los datos de entrada no solamente en el número de casos. Y luego, en un segundo paso se pueda optimizar el mismo algoritmo para procesar el conjunto de prueba grande que contendrá un número mayor de casos y estará compuesto por valores también mucho más grandes. Para descargar los conjuntos de prueba y remitir sus soluciones pueden acceder a la página de la competencia.

Nuevamente, espero que se animen a resolver este problemita. Utilizando fuerza bruta se puede resolver para el caso de prueba pequeño y para el caso grande se puede utilizar alguna heurística o una estructura como un árbol. En cualquier caso, no se olviden de comentar como les fue.

19 jul 2008

Salvando el universo

Salvando el universo, es el título del primer problema propuesto en la ronda de calificación del Google Code Jam de este año, esta ronda culminó el día jueves 18 a las 06:00 p.m. con un total de 6773 clasificados (25 puntos como mínimo). El número total de participantes que remitieron al menos una respuesta correcta (5 puntos) fue de 7154.

El primer lugar lo obtuvo el participante cuyo nick es rem al totalizar 75 puntos en una hora con 18 minutos, la respuesta más rápida también fue de rem y fue remitida en tan solo 9 minutos con 16 segundos... increíble!!

Bueno, bueno.... basta ya de tantas estadísticas, el problema en cuestión se encuentra traducido líneas abajo, si eres un entusiasta de la programación seguramente intentarás resolverlo (obviamente, para salvar el universo) en tal caso espero un comentario tuyo en el que me cuentes como te fué.

EL PROBLEMA


Una leyenda urbana cuenta que si accedes a la página principal de Google y realizas la búsqueda de la palabra "Google", el universo se autodestruirá. Tenemos un secreto que compartir contigo... es cierto!. Por favor no lo intentes y no le digas a nadie. Muy bien, tal vez no. Solamente estamos bromeando.

Lo mismo no es muy cierto para un universo muy pero muy lejano. En aquel universo, si realizas una búsqueda en un motor de búsqueda por su propio nombre, aquel universo se autodestruirá.

Para evitar esto, se ha ideado una solución interesante. Todas las consultas realizadas en aquel universo serán combinadas y transmitidas a un sistema central que decidirá cual de las consultas se realizarán en cual motor de búsqueda. El sistema central enviará una serie de consultas a un motor de búsqueda, y puede cambiar de motor de búsqueda cuando sea necesario. Las consultas serán procesdas en el orden que son recibidas. El sistema central nunca deberá enviar una consulta a un motor de búsqueda que coincida con su nombres. Para reducir los costos el número de cambios de motor de búsqueda debe ser minimizado.

Tu tarea es indicarnos cuántas veces deberá cambiar de motor de búsqueda el sistema central, asumiendo que lo programamos de manera óptima.

ENTRADA
La primera línea del archivo de entrada contiene el número de casos, N. N casos siguientes.
Cada caso inicia con un número S -- el número de motores de búsqueda. Cada una de las siguientes S líneas contienen el nombre de un motor de búsqueda. El nombre cada motor de búsqueda no puede ser mayor a cien caracteres y contendrá solamente letras mayúsculas, minúsculas, espacios y números. No habrán dos motores de búsqueda con el mismo nombre.
La siguiente línea contiene un número Q -- el número de consultas de entrada. Las siguientes Q líneas contendrá cada una una consulta. Cada consulta será el nombre de un motor de búsqueda en el caso actual.

SALIDA

Para cada caso de entrada, la salida debe ser:

Case #X: Y

donde X es el número de casos de prueba e Y es el número de cambios de motor de búsqueda. No cuente la elección inicial de un motor de búsqueda como un cambio.

EJEMPLO:
Entrada
2
5
Yeehaw
NSM
Dont Ask
B9
Googol
10
Yeehaw
Yeehaw
Googol
B9
Googol
NSM
B9
NSM
Dont Ask
Googol
5
Yeehaw
NSM
Dont Ask
B9
Googol
7
Googol
Dont Ask
NSM
NSM
Yeehaw
Yeehaw
Googol

Salida
Case #1: 1
Case #2: 0

En el primer caso, una posible solución es iniciar utilizando el motor Dont Ask, y cambiar a NSM luego de la consulta número 8.
Para el segundo caso, se puede utilizar B9, y no se requiere realizar ningún cambio.

9 jul 2008

Google Code Jam

El Google Code Jam, es un concurso de programación en el que cualquiera que tenga conocimientos de programación puede participar. Este año la primera ronda inicia el 16de julio y tendrá una duración de 24 horas durante las cuales será posible remitir la solución de los problemas que serán publicados, el cronograma detallado se encuentra aquí. Para participar debes inscribirte en la página del concurso con tu cuenta de GMail, si no tienes una cuenta de GMail, mmm... no, no creo que no tengas una cuenta de GMail.

Para ir calentando el ambiente, se han publicado algunos problemas para tomarlos como referencia, obviamente, la página del concurso, los problemas, las instrucciones y demás se encuentran en inglés. Por si no te va muy bien con el inglés (mmm... digamos mejor que estoy seguro que puedes traducir pero no tan rápido...), me tomé unos minutos para traducir uno de los problemas el cual puedes encontrar aquí.

Dale una mirada, plantéalo e intenta resolverlo para ello puedes utilizar el lenguaje de programación o herramienta de tu preferencia. Finalmente, animarte a que te inscribas en este concurso y demuéstres tus habilidades de programador, el primer premio es de US$10,000 y la experiencia será de hecho muy interesante.