Tengo que reconocer que no me gustaba nada Javascript. En uno de mis anteriores trabajos tenia que hacer web scraping de páginas web y me solían joder bastante las que generaban contenido dinámicamente por código. Aparte por aquellos tiempos el código se escribía pensando en Internet Explorer ya que Netscape, hay que decirlo, era un truño.
La película ha cambiado un poquito en los últimos 2 o 3 años, y ahora Javascript es lo más cool del universo conocido. Profundizando en el lenguaje se ve que tiene cosas muy interesantes como clausuras, herencia basada en prototipos, las funciones son tipos de primer orden y mil pijadas más. Lo cuenta mucho mejor Douglas Crowkford.
Parte de los problemas de Javascript vienen de las inconsistencias en la implementación de los intérpretes que hay dentro de los navegadores, así como el API que proporcionan para manejar eventos, el DOM, etc. Han salido recientemente muchas librerías para homogeneizar el acceso a la funcionalidad de los navegadores ocultando los posibles fallos o inconsistencias con un API común. Una presentación interesante sobre el tema:
Pues eso, aprendan Javascript que es una de las plataformas de desarollo más extendida del mundo (si no la que más).
Recojo el meme. No pongo el del usuario root porque casi no lo uso. Intento usar sudo y familares siempre que es posible.
103 v 97 sudo 88 cd 30 svn 14 less 12 vim 7 ls 7 ln 7 apt-cache 6 ps
Ultimamente algo de programación web y de administración de svn. Los sudo serán probablemente del apt-get.
213 cd 69 v 23 mv 19 sudo 16 chmod 15 df 14 ls 11 mkdir 9 ssh 9 find
El sobremesa lo uso para navegar y p2p. Mucho mv para estrujar los discos duros, que los pobreticos están siempre al límite.
25 sed 20 exit 20 cd 19 grep 19 for 18 find 15 egrep 10 ls 7 rsync 7 pwd
Los comandos que más uso son para filtrar ficheros de log de los clientes y para hacer copias de seguridad de los servidores.
115 sudo 49 cd 36 v 32 killall 28 mount 20 ls 16 cat 13 ps 10 less 10 find
Mucho mount porque a veces me falla el NFS sobre TCP por las desconexiones de un punto de acceso.
115 v 77 sudo 50 cd 28 ssh 21 ping 19 svn 19 ipython 15 ps 11 killall 11 ifconfig
En el portátil es donde hago mis pruebas con python y django, por eso ipython y svn.
En windows también uso mucho la línea de comandos, pero como no guarda histórico de comandos no puedo ponerlo por aquí.
Se ve que el año pasado no lo hicimos muy mal del todo y nos han dejado organizar la segunda edición del curso: Programación Web 2.0: Desarrollo Rapido de Aplicaciones con Python y Django
Si quieres hacer webs con python y django, aprender algo de ajax con dojo y pasar calor en las aulas de la ETSIIT, no lo dudes, este es tu curso :) En el curso vienen incluidas técnicas básicas para tus páginas luzcan super web2.0 de la muerte, como letras gordas, fondos claros y logos color pastel con muchos reflejos.
Como en la otra edición he colgado el tríptico en flickr (cubierta, interior).
El curso será entre los días 24 de Septiembre y 3 de Octubre. Sale por unos 190 leuros y es convalidable por 2.5 créditos, que siempre vienen estupendamente :-)
Fíjate tú que alguien se ha entretenido en hacer la web más alta del mundo solo con HTML y CSS. Se han quedado en unos 19 km (concretamente 18.939583 km).
Lo más curioso es que no pueden hacerla más "alta" por errores en los navegadores. (por cierto, ese enlace lo mismo no funciona en exploder)
Cosas veredes.
Actualización: jugando con Firebug he comprobado que la página más gorda también mediría de máximo eso mismo en Firefox. Podeis dormir tranquilos, que sé que todo el mundo estaba con la intriga.
Hoy me apetece contar una tonteriica que me rondaba la cabeza desde hace algunos años y no ha sido hasta hace un par de semanas que vi la solución con la ayuda de un foro de ciencia y matemáticas. Algunos pensarán que es como descubrir el agua tibia, pero a mi me ha hecho ilusión comprenderlo.
(ahora toca cara apretada de Hiro viajando en el tiempo)
Hace ya unos cuantos añicos, antes de ir a clase me pasaba por casa de malglam para recogerla e irnos juntos para la facultad. Cogía la línea 11 desde el Zaidín que dejaba un poco antes de la Caleta. Entonces empezaba la ascensión hasta la plaza de toros subiendo por Doctor Olóriz y luego girando a la izquierda hasta casi llegar a Beiro. Más o menos como pinto en el mapa:
La caminata no era larga ni mucho menos. Sin embargo, algo que haces más de 3 veces seguidas pide a voces ser optimizado. Lo más natural dado el trazado de las calles es intentar buscar la diagonal para ahorrar unos cuantos metros. Pero claro, a no ser que te vaya el parkour hay que ceñirse al trazado de las calles. El recorrido puede verse como 2 aristas de un cuadrado de lado L. En vez de recorrer esa distancia (2*L) se me ocurrió lo que a todo hijo de vecino: callejear algo más para intentar aproximarme a la diagonal, cuya longitud seria sqrt(L2+L2).
Al segundo o tercer día de seguir el nuevo trazado me di cuenta de lo obvio (yo es que muy avispao tampoco soy). Teníamos entonces 4 segmentos de recta, cada uno de ellos de longitud L/2, que sumándolos nos sigue dando 2*L. Joder. No le había recortado nada al trayecto. Pero lo peor no es eso. La cuestión es que aunque siguiera subdividiendo tramos para aproximar aún más el trazado al de la diagonal en realidad seguía andando los mismos metros. En cada división por la mitad de la longitud de los tramos se duplica su número, así que nos quedamos en las mismas. Incluso da igual que los tramos sean de longitudes distintas, ya que al ser ángulos de 90º la distancia final será la misma.
La cuestión que me tenía perplejo hasta hace poco es que podemos elegir un número arbitrariamente alto de subdivisiones (infinito si queremos), tantos como para que aparentemente tengamos una diagonal y aun así estaríamos andando una distancia de 2*L. ¿Cómo puede ser que teniendo una curva tan próxima a la diagonal nunca se consiga aproximarla? Curiosamente, antes de conocer la solución, me sugería un fractal, como la curva de Koch. Pero no, no van por ahi los tiros.
La respuesta es tan sencilla que me da vergüenza no haberla visto yo solico. La escalera que vamos dibujando con los tramos de recta forma una aproximación imperfecta de la diagonal, con un error de aproximación constante siempre igual a 2*L - sqrt(L2+L2) por muchas divisiones que hagamos. Aunque visualmente las dos curvas se parecen mucho, analíticamente no tienen nada que ver. Misterio resuelto. Más que una paradoja era un problema mal planteado. Cienmil millones de veces mejor explicado en los foros de 100cia.
¿Aplicaciones? Lo que podemos sacar de esto es que si tenemos que realizar un trayecto similar al que he expuesto arriba (calles formando una rejilla) y las calles son más bien estrechas, realmente no merece la pena callejear por el mero hecho de recortar. La longitud recorrida es igual e incluso puede ser que tardemos más al tener que dar más giros y cruzar más veces la calle. Vamos, lo que viene siendo una perogrullada.
Corolario de la perogrullada: Si las calles son anchas o hay parques cambian un poco las tornas dado que cruzando podemos aproximar mucho más la diagonal y el resultado final es que sí que podríamos ganar algo de tiempo.
Esto por supuesto hay que tomárselo con una pizca de sal :)
PD: los esquemas los he creado en Google Maps y luego los he integrado en la página con una utilidad para poner MyMaps en un blog.
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
| << < | Current | > >> | ||||
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 | |||