Vim: explicación de ventanas, pestañas y buffers

[Pincha aquí para ver otros artículos sobre Vim]

Cuando uno empieza a usar el potentísimo editor de texto Vim y consigue pasar de esa primera fase en la que nos horrorizamos de que todo sea tan distinto y poco intuitivo a la segunda fase en la que entendemos la filosofía de trabajo del editor (y es resto de editores nos empiezan a parecer poco intuitivos), es aún posible que nos líemos un poco con los conceptos de Vim de vista, ventana, buffer y pestaña.

Vamos a ver que es cada cosa y cómo suelen usarlas los usuarios avanzados de Vim, pero antes de explicarlo pongo un dibujito muy mono (pincha para ampliarlo mucho, es grande pero ocupa poco):

  • Vista: La vista en Vim es lo que vemos en el monitor. Una vista estará siempre dentro de una pestaña (si sólo tenemos una pestaña abierta la vista estará en la única pestaña) y a su vez puede contener una o más ventanas dentro.

  • Ventanas: En Vim una ventana es una subdivisión de la pantalla total que el programa puede usar. Es decir, si estás editando un fichero entero y éste ocupa toda la pantalla que ocupe el Vim, tienes una ventana. Si haces :split o :vsplit, tendrás ahora dos ventanas, viendo el mismo fichero (buffer). Si ahora en una de ellas haces de nuevo :split, tendrás tres ventanas. La utilidad de las ventanas es que nos permiten ver varios buffers o varias partes de un mismo buffer simultáneamente, lo cual en ocasiones es muy útil para programar. Como mínimo vas a tener siempre una ventana porque si cierras la última se cierra el programa y en cualquier momento estamos trabajando a través de una (o varias) ventanas. Incluso cuando estamos en una pestaña, realmente estamos en una ventana que está dentro de una pestaña.

  • Buffers: Los buffers son el concepto más importante de los de esta lista porque son los que contienen realmente los ficheros que abrimos, por lo que podemos pensar en los buffers como los ficheros cargados en memoria; si cerramos un buffer se cierra realmente el fichero y si abrimos un buffer se abre otro fichero. Esto no sucede con ventanas y pestañas porque cuando cerramos una pestaña a través de la cual estamos viendo un buffer el buffer sigue existiendo porque sólo hemos cerrado la ventana. Podemos hacer una metáfora diciendo que las ventanas son las ventanas de una casa y los buffers son las personas; si cierras la ventana la persona sigue estando detrás. La única excepción es cuando cerramos la última ventana abierta en la única pestaña que queda; en ese caso Vim considera que ya no vamos a trabajar más, dado que siempre trabajamos a través de una ventana, y por lo tanto cierra también todos los buffers que hubiera abiertos.

  • Pestañas: Las pestañas, una funcionalidad relativamente reciente de Vim permiten mantener simultaneamente varias vistas, cada una de las cuales puede contener una o más ventanas, y en esa única o múltiples pestañas podemos estar viendo uno o más buffers.

Compartir/Guardar/Bookmark

Mini visión general y opinión sobre Django

Django es un en entorno de programación web que lleva varios años funcionando aunque ha sido ahora (2009) cuando ha visto un auge importante en su uso debido a la salida de la primera versión estable, la 1.0. En este artículo quiero dar una visión general y resumida de como está estructurado y como funciona, así como mi opinión personal-profesional. Es importante destacar que este artículo no es un curso ni un tutorial de Django, aunque sin duda tener unas nociones de como funciona Django en conjunto ayudará al que a continuación quiera aprenderlo a fondo.

[El artículo sigue en el interior]

Continua dentro; pincha para leerlo completo (2745 palabras)

Re-Estrenando web: Juanjoalvarez.net 3.0

¡Hay parto!

Hoy estreno la tercera versión de mi web juanjoalvarez.net. Aunque todo parezca igual estéticamente (la plantilla existente me gustaba así que la he conservado) por debajo absolutamente todo es nuevo.

La primera versión de esta página, allá por los años 90, eran todo contenidos estáticos cargados usando una plantilla base que hacía $includes con PHP de cada página. Probablemente tuviera gif animados...

La segunda versión, a mediados de 2000, estaba en el gestor de contenidos drupal y cumplió su función durante unos cuantos años. Pero tenía el problema de que cada vez que quería cambiar algo en el código para incluír una nueva funcionalidad, tenía que estar un par de horas sólo para ver por donde empezar porque no soy experto en el código de Drupal, así que como últimamente he estado aprendiendo bastante bien el framework web Django y usándolo en dos proyectos personales y uno profesional, decidí migrar todo.

Hay que decir que Django no es exactamente lo mismo que Drupal pues el primero es un framework web (de más bajo nivel) mientras que el segundo es un gestor de contenidos. Sin embargo la migración completa me ha llevado sólo dos días, usando módulos que ya estaban hechos por terceros o hechos en alguno de los otros proyectos Django en los que participo (por mi o por mis compañeros). Y ésto no sólo conservando toda la funcionalidad que usaba de Drupal sino añadiendo además funcionalidad adicional como la página y la caja con los tweets de mis dos cuentas de Twitter o la página con la lista de noticias y chorradas que voy compartiendo en el Google Reader.

Aparte de las funcionalidades nuevas la página debería ser mucho más rápida (y lo es, según el Google Page Speed y el YSlow) debido en parte al nuevo hosting y en parte a que ya no cargo contenidos externos como la caja de compartidos de Google (que no hace falta con la nueva caja) o la de LibraryThing. Para suplir la funcionalidad que me daba la cajita de LibraryThing (mostrar los últimos libros leídos y reviews) planeo escribir una aplicación Django para hacer reviews de contenidos culturales (libros, películas, música).

Además las entradas del gestor del contenido soportan entradas escritas en varios idiomas, dos formatos de edición (HTML puro o Markdown) y otras cosas que con Drupal no tenía, o no podía tener sin mucho dolor.

Lo que no he podido migrar de momento son los comentarios. Es una pena porque había algunos interesantes y que aportaban cosas (sobre todo en las páginas de programas) veré si más adelante puedo migrarlos de alguna forma aunque sea metiéndo aquellos que considere interesantes a manopla.

Más adelante escribiré un comentario con una revisión general de Django con mi opinión, pero de momento se puede resumir en que estoy feliz como una perdiz con el descubrimiento.

Compartir/Guardar/Bookmark

Chrome on Linux will use the Gtk toolkit

It seems Google has started working on the Linux GUI of the Chrome version because on my today update of their Subversion repository I got (among other files):

webkit/tools/test_shell/test_shell_gtk.cc

It seem Gtk is the toolkit of choice, then. Bad choice if you ask me, but then nowadays Linux seems to be mostly Ubuntu and Ubuntu is mainly Gnome (thus, ugly Gtk for everybody.)

Compartir/Guardar/Bookmark

RapidSucker: Grab rapidshare and megaupload links under your Unix, Linux or Mac OS X

First things first: The download link
(scroll down for the changelog)

Info:

Rapidsucker is a rapidshare and megaupload premium links downloader/grabber/collector. Please note that this only works if you have premium accounts on those services, it will not work with the free accounts. The current version is written in Python and runs from the shell console, which is perfect to leave it running on those mostly idle company servers ;-)

Continua dentro; pincha para leerlo completo (545 palabras)