Mostrando entradas con la etiqueta Informática. Mostrar todas las entradas
Mostrando entradas con la etiqueta Informática. Mostrar todas las entradas

14 de septiembre de 2009

Direcciones de registro

Vamos a ver. No es que yo tenga una dirección de correo sencillita, de esas que son una palabra del diccionario arroba yahoo punto es (quien dice yahoo dice hotmail, gmail y similares). No, no tengo una dirección fácil de adivinar de forma intuitiva: no es ningún personaje de ninguna serie ni ninguna cosa graciosa. Entonces, ¿por qué narices ya son varios los que han utilizado mi dirección de correo para registrarse en distintos y variados sitios web?

Para empezar, la mayor parte de sitios mandan un correo de activación a la cuenta proporcionada, así que la persona en cuestión que ha introducido una dirección que no es la suya (o al menos una recién inventada y activada por él, en el caso de que la página web en la que se quiera registrar sea de dudosas intenciones) jamás podrá acceder como miembro. También hay casos en los que el sitio no comprueba la dirección, por lo que me pregunto... ¿Para qué la piden entonces? ¿Para hacer más largo el ya de por sí cansino formulario de rigor? Aparte luego está la consabida publicidad que de vez en cuando te ataca sin que tú quieras saber nada del tema y de la cual a veces es bastante difícil deshacerse.

En fin, sé que nadie me va a hacer caso, pero me gustaría decirles a todas esas personas que no cuesta nada crearse una dirección de correo propia (sí, una nueva) sólo para toda la basura que puedan llegar a generar. Así nadie más tendrá que soportar ese SPAM que ellos no ellos quieren y que al resto tampoco nos gusta.

8 de septiembre de 2009

Hola mundo

El primer programa que hicimos en nuestra vida la inmensa mayoría de los que estudiamos informática fue el famosísimo "hola mundo", normalmente en uno de esos lenguajes que se suelen enseñar a los principiantes: Python, C, C++, Java... Sin embargo, es curioso ver cómo se escribe este programa, muy sencillo en los lenguajes "normales", en los llamados lenguajes esotéricos. Aquí se puede encontrar cómo hacer el famoso "hola mundo" en la mayor parte de los lenguajes existentes, incluidos los esotéricos.

Algunos de los que más me han gustado son:

Vatical
LITURGY:
PRAY "Hello World!"
AMEN.

HQ9+
H

Argh!
j       world
lppppppPPPPPPsrfj
hello, * j
qPh

Fjölnir
"hello" < main
{
main ->
stef(;)
stofn
skrifastreng(;"Halló Veröld!"),
stofnlok
}
*
"GRUNNUR"
;

3 de agosto de 2009

Rotativas y transistores

Como es sabido, el ser humano siempre ha tenido la necesidad de comunicarse. Al principio, sólo entre los individuos de un mismo grupo, después fue expandiéndose para facilitar el comercio, las guerras y conquistas, en definitiva las relaciones entre pueblos. La gente se dio cuenta de que era útil enterarse de lo que pasaba más allá de lo que abarcaban sus propios ojos y empezaron a poner en marcha mecanismos para ello.

Dando un salto histórico muy grande para empezar a hablar de lo que quiero ocuparme, hace ya bastantes años, en 1622, el público tuvo acceso al primer periódico impreso, el Weekly News of London. Poco a poco y aprovechándose de diversos avances tecnológicos la prensa fue evolucionando: se fueron enviando corresponsales a diferentes ciudades del país y del mundo y fueron apareciendo los diferentes géneros periodísticos. La tecnología era útil para la prensa y colaboraba con ella ya que los distintos corresponsales podían transmitir su información usando el telégrafo y luego el teléfono. El periódico era la única forma de enterarse de lo que pasaba donde el boca a boca no podía llegar.

Pasaba el tiempo y la prensa jugaba importantes papeles en la política y la sociedad de los países. Para los políticos y la gente de la alta alcurnia era importante que la prensa diera una buena imagen de ellos, ya que se jugaban, de uno u otro modo, su prestigio. Y, como era inevitable, las diversas tendencias se hicieron patentes en la prensa, y la opinión, en su sentido más amplio, era lo que acababa marcando el signo político de un periódico.

Llegó el siglo XX y primero la radio y luego la televisión empezaron a hacerse fuertes. Estos dos medios de comunicación aportaban inmediatez a la información, cosa que la prensa, dada su periodicidad (al menos diaria) no conseguía. La tecnología (a veces amiga a veces traidora) estaba atacando a quien antes había ayudado. Sin embargo, la prensa escrita sobrevivió porque, en mi opinión, en este formato se podían permitir licencias que en los otros dos no era posible. La opinión y la subjetividad, en cualquiera de sus formas, en especial el artículo de opinión, era uno de los rasgos que más diferenciaba a los periódicos del resto de mass media.

Como viene pasando a lo largo de toda la Historia la comunicación siguió evolucionando y a principios del siglo XXI apareció la web 2.0, donde empezaron a aparecer los periódicos digitales (y no me refiero sólo a las ediciones digitales de los "periódicos convencionales") y, en especial, los blogs. Si la televisión y la radio ganaban en inmediatez a los periódicos éstos dos medios son claramente vapuleados por internet. Es asombrosa la velocidad a la la información es actualizada en la Red. Y, si la opinión era un rasgo distintivo de la prensa escrita, hoy en día en internet se puede encontrar opinión casi en cualquier rincón (lo que no quiere decir que eso sea una opinión "de calidad", con la argumentación que una de estas debería llevar detrás).

Si a los periódicos les despojan de casi lo único que les quedaba, ¿de qué van a vivir entonces? Es preocupante observar como desde hace unos años muchos periódicos con una larga tradición han ido desapareciendo paulatinamente, en especial en Estados Unidos. ¿Está la prensa tradicional acabada con el auge del llamado Internet 2.0 (y lo que venga detrás)? Sinceramente, espero que no. La magia de comprar el periódico y abrirlo, leer las noticias del mundo, las viñetas y a mis columnistas favoritos espero que no desaparezca. No me imagino leyendo El País Semanal (por poner un ejemplo) vía web, lo siento. El periódico tiene una magia que internet no podrá igualar jamás.

Es posible que a estas alturas alguien ya me esté tratando de "romanticón sin visión de negocio". Si publicar en internet es más barato, al posible consumidor no le cuesta dinero y el editor puede seguir teniendo ingresos igualmente, ¿qué sentido tiene seguir manteniendo la prensa escrita? Realmente me es difícil encontrar una explicación que pueda sonarle convincente incluso al lector más escéptico, por lo que abandonaré esa vía; me conformaré con decir que creo que la razón por la que internet no sustituirá a la prensa tradicional es la misma por la el libro tradicional no morirá a manos de su homólogo electrónico. Seguimos habiendo demasiados románticos aficionados a la magia.

28 de julio de 2009

Cálculo de la raíz cuadrada de un número módulo n

Ayer por la tarde, intentando resolver un problema de programación, me encontré que tenía que resolver la raíz cuadrada de un número módulo n. Recordé que eso lo había estudiado en Criptografía, pero, como me suele suceder, no me sé de memoria el algoritmo. Cuando llegué a casa revisé mis apuntes y allí lo encontré, y me pareció tan curioso que me gustaría exponerlo aquí por si a alguien puede serle de utilidad.

0. Supongamos que queremos calcular las raíces cuadradas de una cantidad c módulo n. En primer lugar, debemos encontrar dos factores positivos, p y q, tales que n = p*q. Estos dos factores deben cumplir además que deben ser primos entre sí y congruentes con 3 módulo 4 (es decir, que su resto al dividirlos entre 4 debe ser 3). Si no conseguimos hacer esto, no podremos aplicar el método que viene a continuación.

1. Seguidamente, aplicaremos el algoritmo de Euclides extendido para obtener dos números a y b tales que a*p+b*q=1. Podemos hacer esto ya que el algoritmo de Euclides extendido nos proporciona los números a y b que cumplen a*p+b*q=mcd(p,q), y al ser p y q primos entre sí por cómo los hemos elegido, su máximo común divisor es 1.

2. Recordemos que c es la cantidad cuya raíz cuadrada módulo n queremos calcular. Llamaremos: r = c^((p+1)/4) mód p; s = c^((q+1)/4) mód q.

3. Llamaremos ahora m1 = (a*p*s + b*q*r) mód n; m2 = (a*p*s - b*q*r) mód n

4. Las cuatro raíces de c módulo n son m1, -m1 mód n (es decir, n-m1), m2 y -m2 mód n (n-m2, igual que antes).

Como el algoritmo anterior igual es un poco denso voy a dar un ejemplo en el que se aplique. Supongamos que queremos calcular las raíces cuadradas de 16 módulo 21.

0. En este caso n = 21 = 3 * 7. Es fácil que comprobar que tanto 3 como 7 son congruentes con 3 módulo 4. Por tanto, p = 3 y q = 7.

1. Aplicando el algoritmo de Euclides extendido obtenemos que a = -2 y b = 1 (podemos usar, por ejemplo, el applet del link anterior).

2. r = 16^((3+1)/4) mód 3 = 16^1 mód 3 = 16 mód 3 = 1;
s = 16^((7+1)/4) mód 7 = 16^2 mód 7 = 256 mód 7 = 4

3. m1 = (-2*3*4 + 1*7*1) mód 21 = -17 mód 21 = 4;
m2 = (-2*3*4 - 1*7*1) mód 21 = -31 mód 21 = 11

4. Las cuatro raíces cuadradas de 16 módulo 21 son: 4, 17 (-4 mód 21), 11 y 10 (-11 mód 21).

24 de julio de 2009

Entendiendo código ajeno

Supongo que a todos los que estudiamos o han estudiado informática les habrá tocado alguna vez intentar entender un código no escrito por ellos. Normalmente si es un código escrito por profesores suele estar bien escrito e indentado, con sus correspondientes comentarios, etc. Todo lo necesario para que el alumno pueda entenderlo más o menos bien. Sin embargo, si es un código con propósito no docente entenderlo suele costar bastante más, normalmente por la falta de documentación (comentarios y/u otros documentos auxiliares) y porque no todos tenemos el mismo estilo de programación. No incluyo aquí otros factores como la diferencia de lenguajes de programación y similares porque ya estaríamos entrando en otro orden de cosas.

El problema viene cuando intentas entender un código tal que dada su dimensión ha tenido que ser descompuesto en nueve (9) directorios diferentes, sobre algo que todavía no manejas del todo bien y además sin un maldito comentario en todo el código. Bueno, corrijo, a veces me encuentro algún comentario de explicación de los parámetros de entrada y salida de algunas funciones concebido para una posterior generación de documentación con el Doxygen, pero totalmente incompletos. Obviamente no diré quién ha programado este código, y si algún lector lo sabe porque se lo he dicho personalmente agradeceré que no lo diga en los comentarios, pero sí es cierto que en los últimos días me estoy acordando bastante de esa persona.

A todo esto, yo propongo una solución (modo irónico ON). Que si el compilador detecta que el código sobrepasa un cierto umbral de líneas de código no genere el ejecutable si un cierto porcentaje de las líneas (bastante bajo, tampoco es cuestión de forzar al personal) no son comentarios. No es tan difícil comentar qué significa cada uno de los atributos de una clase, qué hace una función o el por qué de sus parámetros. Y luego ya los profanos en el código agradeceríamos muchísimo comentarios un poco más profundos sobre las partes no evidentes del código, pero eso ya a gusto del programador, que parece que para algunos esto ya sería desviarse demasiado de la programación del algoritmo o lo que sea que estén programando (tal vez el "hola mundo" en Visual Basic) y ser demasiado condescendientes para con los posibles lectores del código (modo irónico OFF).

En mi opinión, un buen programador no es sólo el que hace código eficiente, que funcione de la hostia y que aplique propiedades como la reusabilidad y similares, sino aquel que es capaz de escribir algo que pueda entenderse fácilmente, obviamente sin renunciar a lo anterior. Estoy seguro de que esto podría aumentar la eficiencia en el desarrollo de código y evitar a los programadores que vengan detrás horas (y palabrotas varias) innecesarias a la hora de entenderlo. He dicho.

21 de julio de 2009

Google Code Jam 2009: por fin noticias suyas

Hace unos pocos días escribí este post diciendo que no había noticias sobre el Google Code Jam de este año. Pues bien, acabo de recibir un correo de un amigo informándome de que definitivamente Google sí tiene intención de organizar el concurso este año, pero que será algo diferente al de años anteriores tanto en fechas como en formato. Para más información, podéis pinchar aquí, que es la página de google groups donde se ha anunciado "oficialmente" lo que acabo de contar.

16 de julio de 2009

Google Code Jam 2009: ni rastro de él

El Google Code Jam es una competición de programación anual organizada por Google. El único requisito para inscribirse es tener una cuenta de gmail, que hoy en día la puede tener cualquiera, y tener 13 años cumplidos (y eso muchos los sobrepasamos con creces).

Pues bien, hace no mucho entré a la página del concurso para registrarme y la primera sorpresa que me llevé fue que el sistema recordaba todos los datos que le puse para la edición anterior del concurso. "Bueno, cosas de google", pensé. Total, que no tuve que tocar nada y cuando le di a "aceptar" el sistema me dijo que estaba inscrito correctamente. A continuación consulté el horario y vi que el día 15 de julio a las 23:00 CMT empezaba la fase previa, con una duración de un día. Hasta ahora, todo bien.

Lo siguiente que ocurrió fue que ayer un amigo se dio cuenta de que las fechas de la página del concurso se correspndían al año 2008. Bueno, pues seguro que las del 2009 tienen que estar por alguna parte... Ni rastro de ellas. Se puede consultar todo lo referente al 2008, pero no al 2009. El siguiente paso que di fue el obvio, intentar buscar en google información sobre el concurso organizado por el susodicho buscador. Todas las páginas que encontré asumían que las fechas publicadas en la página oficial eran las de 2009 y hacían publicidad de la competición animando a la gente a apuntarse. Vamos, que habían caído en el mismo error que yo. Sólo en un foro encontré a una persona que decía que las fechas del 2009 todavía no habían sido publicadas, pero parecía que el resto de personas no le hacían mucho caso. Entonces, dado todo este caos, decidí enviar un mail a la organización del concurso preguntándoles sobre las fechas del Google Code Jam 2009. Aún estoy esperando respuesta, aunque también es verdad que se lo envié ayer a estas horas.

La última pieza que parece aclarar todo esto la he encontrado esta mañana. Obviamente, si el concurso empezaba el día 15 a las 23:00 CMT y duraba un día, el día 16 por la mañana debían estar los problemas disponibles. Pues bien, no lo estaban; es decir, la página no había cambiado desde ayer por la tarde. Desde mi punto de vista, esa es la última prueba de que de momento no hay ni rastro del Google Code Jam 2009.

Sin embargo, lo que me parece más lamentable de todo, es que una gran compañía como google no haya colgado en la página del concurso ninguna información aludiendo a que en 2009 las fechas aún no están establecidas o que, si es el caso, no va a celebrarse el concurso. Otra opción mucho menos probable es que la página principal del concurso haya cambiado, pero entonces deberían haber colgado un link de la página vieja a la nueva y, por supuesto, al buscar "Google Code Jam 2009" en google, éste lo habría detectado (y más perteneciendo todo a la misma compañía...). En fin, desde mi punto de vista todo esto es una falta de información grandísima por parte de google. Curioso cuando toda la estrategia de negocio de esta compañía se basa en la información...

7 de julio de 2009

Rockola.fm

De todos es sabido que en internet hay muchísimos sitios para escuchar música online, desde youtube hasta lastfm pasando por muchos más. También últimamente se han puesto de moda programas que los tenemos instalados en local pero nos permiten escuchar música en streaming, como spotify.

Personalmente, yo siempre he preferido el estilo de lastfm, pero hace algún tiempo este sitio se volvió "de pago", es decir, te dejan escuchar 30 canciones gratis y luego debes abonar 3$ al mes si quieres seguir usando el servicio. Fue entonces cuando decidí buscar algún sitio parecido por la red y encontré, tras buscar un poco, rockola.fm.

Rockola.fm es una página web española para escuchar música en streaming al estilo de las "radios personales" de lastfm. Sin embargo, aquí encontramos cuatro formas diferentes de hacer que la página nos dé canciones del estilo de las que queremos escuchar:

a) Escribiendo el nombre de un cantante, compositor, etc. y el sistema nos pondrá canciones suyas y de otros similares.

b) Utilizando alguna de las emisoras predeterminadas de la página o escuchando emisoras ya creadas por otros usuarios. (En mi caso, una de mis favoritas es la emisora "Clásica de Primaria").

c) Seleccionando alguno de los tags en la pestaña "tags".

d) Haciendo clic en el círculo de estados de ánimo según cómo estemos en ese momento; así la página nos dará canciones acordes a nuestro estado.



Por otra parte, no es necesario registrarse para empezar a escuchar música, pero hacerlo está bastante bien ya que el sistema almacena nuestros gustos y al final acaba "aprendiendo" sobre ellos. Además, podemos almacenar nuestras emisoras favoritas para tenerlas más a mano la próxima vez.

En mi opinión, la página está bastante bien y, en mi caso, ha sustituido muy satisfactoriamente a lastfm. Por ponerle algún "pero" diría que algunas emisoras (sobre todo algunas de música clásica) tienen una lista de reproducción algo reducida y que al final se acaban repitiendo canciones. En definitiva, creo que es una página altamente recomendable para todos aquellos a los que nos gusta escuchar música.