En respuesta a esta imagen:

A Kraptor se le ha ocurrido esta otra, con un servidor:

No me puedo quejar
, más imágenes siguiendo la historia de 300 aquí.
Hola!
Después de mucho tiempo siendo “Sopa de Ganso” me he decidido por cambiarle el nombre al blog, supongo que a muchos les hará más gracia así. Lo de sopa de ganso era una historia medio larga que quería contar, pero aun contándola no me acababa de convencer.
Por eso ahora el blog se llama “Luanatic con features”, si alguien necesita explicación es que no me ha leído lo suficiente o no me conoce como buen geek que soy. Para los que pese a todo no lo pillen, lo de luanatic viene de lua y lo de features porque resulta que es una coletilla que suelto sin ton ni son.
Lo único que necesito de los cuatro gatos que se pasean de vez en cuando por aquí es que cambien los links de sus respectivos blogrolls, por lo demás ahora sólo queda esperar que google me vuelva a encontrar bajo este nuevo nombre XD.
Vim es mi editor favorito, pero ajustarlo para que nos sea cómodo es un proceso que lleva su tiempo. Concretamente para editar texto siempre uso la opción “wrap” que lo que hace es romper las líneas en pantalla, por lo que cada párrafo es una línea, así si cambio el ancho del editor los párrafos siguen siendo párrafos.
El problema es que los movimientos <Up>(k) <Down>(j) por la pantalla mueven de línea en línea, o lo que es lo mismo para mi usando wrap, de párrafo en párrafo lo que resulta muy incómodo para moverse ya que si quieres ir a una palabra de en medio tienes que ir desplazándote a la derecha o izquierda hasta llegar. Así que me puse a buscar cómo podría solucionar esto, y como siempre, alguien lo había pensado ya.
Se trata del vim-tip #38, el tip es importante pero más aun los comentarios, en particular mi solución (modificando ligeramente un comentario) ha resultado ser esta:
" tip #38
function! ScreenMovement(movement)
if &wrap
return "g" . a:movement
else
return a:movement
endif
endfunction
onoremap <silent> <expr> j ScreenMovement("j")
onoremap <silent> <expr> <Down> ScreenMovement("j")
onoremap <silent> <expr> k ScreenMovement("k")
onoremap <silent> <expr> <Up> ScreenMovement("k")
onoremap <silent> <expr> 0 ScreenMovement("0")
onoremap <silent> <expr> ^ ScreenMovement("^")
onoremap <silent> <expr> $ ScreenMovement("$")
nnoremap <silent> <expr> j ScreenMovement("j")
nnoremap <silent> <expr> <Down> ScreenMovement("j")
nnoremap <silent> <expr> k ScreenMovement("k")
nnoremap <silent> <expr> <Up> ScreenMovement("k")
nnoremap <silent> <expr> 0 ScreenMovement("0")
nnoremap <silent> <expr> ^ ScreenMovement("^")
nnoremap <silent> <expr> $ ScreenMovement("$")
vnoremap <silent> <expr> j ScreenMovement("j")
vnoremap <silent> <expr> <Down> ScreenMovement("j")
vnoremap <silent> <expr> k ScreenMovement("k")
vnoremap <silent> <expr> <Up> ScreenMovement("k")
vnoremap <silent> <expr> 0 ScreenMovement("0")
vnoremap <silent> <expr> ^ ScreenMovement("^")
vnoremap <silent> <expr> $ ScreenMovement("$")
Esto va en el ~/.vimrc es un poco largo pero funciona, con esto ya nos podemos mover por el texto correctamente si usamos wrap.

Hace poco me dieron la buena noticia de que voy a ser tío por ósmosis, realmente voy a ser tío político porque no tengo hermanos, pero como lo de político suena muy mal prefiero ser lo por ósmosis. Es decir, seré tío en función de la concentración tí-i-tica de Diana (mi novia). Por cierto no se si habéis curioseado las definiciones de tío, tiene un par de acepciones curiosas…

De mi sobrino os puedo decir una cosa, no conozco su sexo pero seguro que será informático. Su padre es informático, así como su madre, su tía, su tío, y su tío por ósmosis (un servidor), sin contar con la otra mitad de su familia donde también hay informáticos. Como algún día mi sobri aprenderá, el que el sea informático es debido a un mero proceso de inducción sobre la familia.
Le gustarán las consolas, porque le gustan a su padre, y no he podido evitar pensar lo que dirá cuando hable de las consolas de su infancia. “Pues yo jugaba con una PS3 cuando tenía 3 años, bufff… menuda birria , ¿qué cosas eh?” vaya infancia si empezamos ya con consolas de ese calibre, nada comparable con los ya potentes Spectrum de nuestra generación.

Para él/ella (yo apuesto que será niño) los procesadores de 16 núcleos serán cosa del pasado, digo 16 porque para cuando nazca ya estarán en el mercado los de 8… ¿ Qué pensará cuando le digamos que en el pasado algunos ordenadores tenían un botón de “turbo” ? Igual que para nosotros es raro pensar en tarjetas perforadas, para ellos lo que hoy es cotidiano será prehistoria.
No tendrá que limpiar nunca un ratón con bolita, y cuando sea mayor no se acordará de que en casa de sus abuelos, cuando aún era muy pequeño, tenían una tele grande y de poca resolución que ocupaba una barbaridad… como para nosotros las viejas teles en blanco y negro del pueblo.
No sabrá lo que es no-tener-internet, ni se imaginará conectarse con un modem de 36.6K o 56k si eras afortunado, y a saber en qué se ha convertido Google para entonces.
Pero lo más duro de todo será que toda su familia, menos sus primos, son del mil novecientos algo… uff del siglo pasado!
Hoy inauguro nueva sección, los ” WTF!? ” ( What de F*ck !?, o en spanish ¿ Pero qué c*·!ñ*%& ?! ) … Los WTF son cachos de código que merecen ser inmortalizados por ser obras maestras de la ingeniería del software. Todo aquel que conozca los WTFs, es porque le ha tocado lidiar con código ajeno de gente que no sabía lo que era un WTF, por esa razón aunque preservemos el anonimato, es importante aprender de los WTF de los demás.
Personalmente creo que los WTF es en realidad una función matemática que proyecta un espacio de posibles ejecuciones de una cierta rutina de código en el espacio de soluciones definido por “/dev/null”, pero es sólo una opinión personal. Este WTF viene de las altas esferas de la programación gráfica de un departamento que algunos llaman “The Sick”, no puedo garantizar quién es el autor del cacho de código, sólo puedo jurar por lo más sagrado que yo *no* he sido:
menu2 (int value)
{
switch (value) {
case 0: c = 0;
glutPostRedisplay();
break;
case 1: c = 1;
glutPostRedisplay();
break;
case 2: c = 2;
glutPostRedisplay();
break;
case 3: c = 3;
glutPostRedisplay();
break;
case 4: c = 4;
glutPostRedisplay();
break;
case 5: c = 5;
glutPostRedisplay();
break;
case 6: c = 6;
glutPostRedisplay();
break;
case 7: c = 7;
glutPostRedisplay();
break;
}
}
Este código pertenece a parte de la *SOLUCIÓN* de un determinado ejercicio de prácticas de gráficos, y es lo que mis alumnos han recibido como tal. Menos mal que son chavales de 2º, que acaban de ver C por primera vez en su vida. Sólo espero que las secuelas curen algún día.
Gestionado con WordPress