martes, 10 de agosto de 2010

.: Emacs :.

:: Buffers y Archivos ::



Materia: Lab de Lenguajes de Programación

Hora: Jueves V1

Que tal compañeros, encontre un dato interesante sobre la operación de Emacs, no se que piensen ustedes: Con Emacs no se editan archivos.

Cuando hemos abierto Emacs, éste encuentra un archivo (por decirlo de alguna manera). Emacs lo copia en un buffer temporal y es ahi donde trabajamos con dicha copia.

Quizás algunos no tengan la idea exacta de lo que es un buffer. Un buffer es sólo una ubicación reservada en la memoria para el almacenamiento temporal de datos. ¿Que significa esto? Significa que si no se guarda en una unidad de disco, la información de buffer se perdera.

Retomando el tema, al momento que tenemos Emacs abierto, tendremos dos estatus del archivo "encontrado" por Emacs:
  1. El archivo original que se encuentra en el disco.
  2. La copia del mismo archivo situada en el buffer.
Primeramente hay que reconocer una cosa: los cambios que hagamos en la copia del archivo situada en el buffer, no se veran reflejados en el archivo original hasta el momento en que Guardemos los cambios. Como cuando trabajamos normalmente con documentos, presentaciones u hojas de cálculo nuevos.

Los buffer también tienen nombres como los archivos. En ocasiones esos nombres resultan ser iguales a los de los archivos originales que se encuentra, copiados en dicho buffer. En este caso puede decirse que nos encontramos trabajando en un sistema buffer-archivo asociado. Sin embargom a veces no es asi.

¿A que se debe dicha situación? Muy sencillo... al hecho de que no hay ningún archivo asociado, o en otras palabras, no "encontro" un archivo original para copiarlo en el buffer.

En determinada situación podemos tener el caso del buffer "scratch". Cuando se abre Emacs, y no se abre un archivo existente, se nos proporciona el buffer ya mencionado anteriormente. Scratch es un buffer vacio, en el cual tenemos la opción de guardar el archivo con algún otro nombre.

Una vez que guardamos, el nombre Scratch es sustituido por el nombre del archivo que le indicamos al guardar.

Otro ejemplo de buffer temporal es el buffer "Help". Dicho buffer, sólo nos muestra los mensajes de ayuda.

Quizás se pregunten cómo podemos saber si estamos trabajando con la copia de un archivo o con un archivo temporal de algún buffer... o si trabajamos con un archivo original.

Es muy fácil saberlo. Cuando estamos trabajando en el buffer con un archivo temporal, el nombre se encuentra entre dos asteriscos (*-----*). Si gustan observar en una ocasión el Emacs, podrán comprobar lo que digo.

Espero que les sea de útilidad esta información sobre el Emacs al momento de trabajar con los archivos.

En lo personal, considero que es preferible trabajar con un archivo original, creado por nosotros mismos, ya que si sólo hacemos en el buffer, corremos el riesgo de perder lo ya elaborado.

Aqui les dejo el link donde localice los datos. También en el mismo sitio se encuentra más información de Emacs que puede ser de utilidad.

Saludos.

Bibliografía:

3 comentarios:

  1. Interesante tu punto de vista.

    Pero esta un poco confuso, que yo sepa cualquier aplicacion trabaja con un buffer, solo que en windows son tipo archivos temporales (no Scratch), cuando ese buffer se llena por asi decirlo windows realiza un autoguardado al archivo temporal (que por lo general esta oculto en el disco) para vaciar el buffer y que este se vuelva a llenar (en nuevas versiones de office el autoguardado se realiza cada que se tiene oportunidad para poder autorecuperar el archivo a traves del archivo temporal sin perderlo en caso de un cierre repentino de la aplicacion como sucedia en versiones anteriores de office). Yo he visto que en aplicaciones como PHOTOSHOP y Google Earth e inclusive los navegadores WEB, se incrementa el tamaño de memoria requerida dependiendo de lo que estes haciendo por lo que me recuerda lo que dices de los buffers.
    Como sea, tambien pienso que se debe de hacer algo con ese buffer asociado porque imagina que se cierre EMACS y adios codigo, porque la verdad a veces se olvida presionar "guardar" y ya valio

    Ciudese

    ResponderEliminar
  2. Es muy cierto compañero lo que has argumentado. En sí cualquier programa se maneja a través de un buffer; sin embargo, ¿cuántos de nosotros estamos consientes de eso, aun sabiendo que toda aplicación por lo general trabaja con un buffer? A lo que quiero llegar con esta publicación, además de demostrar el comportamiento particualar de los buffer en EMACS, es dar consiencia a los demás de la importancia que tiene el hecho de guardar los cambios realizados.

    Muchas gracias por el comentario, creeme que me has ayudado en lo que necesito. Saludos.

    ResponderEliminar
  3. Buenas observaciones de parte de los dos. Es útil saber que emacs también guarda información tipo "autosave" que se puede usar para recuperar cambios no guardados después de cierre accidental del programa (por ejemplo por pérdida de conexión al editar a distancia). Le pongo 3 puntos por la primera semana de lab para Roberto.

    ResponderEliminar