Publi

  • Abbrev mode para EMACS (utiliza abreviaturas)

    perritoCuando estamos programando, normalmente hay palabras o bloques de texto que tenemos que repetir varias veces. Por ejemplo:

    • Cuando creo una función, tengo un bloque grande de comentarios para Doxygen. Crear esos comentarios, cuando lo haces 20 ó 30 veces ya resulta pesado.
    • Cuando creo una clase, pasa exactamente lo mismo que antes.
    • Suelo escribir los nombres y los mails de las personas que intervienen en el proyecto, uso atajos: «Gaspar@» devolverá mi nombre y mi mail.
    Leer artículo completo
  • Documentando el código con Doxygen

    librosssTanto o más importante que tirarse horas programando una aplicación es su documentación, y debemos hacerlo aunque nosotros seamos los únicos que intervengamos en su desarrollo.
    Algo que siempre digo en mis clases de programación es que a poco que compliquemos el código si no comentamos lo que estamos haciendo, en séis meses cuando toque hacer una siguiente versión no tendremos ni idea de lo que hace; y esto conlleva pasar más tiempo para hacer las modificaciones que necesitamos, que al final se traducen en dinero.… Leer artículo completo

  • Plantillas en EMACS

    pie-grandeEs la primera entrada de mi editor de texto favorito.

    Cuando pasas gran parte del día editando archivos, es muy útil que al empezar un fichero nuevo haya algo escrito, algo que siempre toca escribir a mano, unos pocos comentarios donde dices más o menos de qué va lo que hay en el fichero y poco más.

    Casi todos los editores modernos disponen de esa característica y emacs no iba a ser menos, sólo que hay que instalar una extensión (se puede hacer sin necesidad de extensiones, pero hace falta programar un poco y lo que queremos es una solución rápida que nos permita seguir trabajando en lo realmente importante), después de probar dos o tres, me quedo con emacs-template, es fácil de instalar y de configurar.… Leer artículo completo

  • Monitoriza las aplicaciones con las que trabajas

    dtracks Lo leí hace tiempo en Genbeta pero hasta hace unos días no me decidí a probarlo (lo dejé medio olvidado en la lista de cosas por hacer), pero me ha gustado bastante.
    Sirve para saber con qué programas pasas el tiempo en el ordenador, y así podemos ver lo productivos que somos, según esto mi productividad puede mejorar.
    Es un programa pequeño pero muy útil. Se puede descargar el código fuente desde aquí, pero podéis probar a ver si vuestra distribución lo trae en sus repositorios.… Leer artículo completo

  • Extraer una copia de seguridad de Plesk

    discoduroMuchos proveedores utilizan Plesk como panel de control, y en ocasiones, es necesario extraer dichas copias de seguridad, no sólo restaurarlas automáticamente vía Plesk.

    Necesitamos el paquete munpack (la mayoría de las distribuciones lo traen en sus repositorios, si no, siempre podemos compilarlo desde el código fuente ( ftp://ftp.andrew.cmu.edu/pub/mpack/ ).

    Si el fichero de copia de seguridad es copia_plesk, hacemos lo siguiente:

    $ zcat copia_plesk copia_plesk_descomprimida
    $ cat copia_plesk_descomprimida | munpack

    En este punto tendremos muchos ficheros tar (tal vez el correo, las páginas web que tengamos, los logs y demás servicios que tengamos contratados), sólo tendremos que extraer los archivos:

    $ tar xvf [archivo_tar_a_extraer]

    Debemos procurar que los archivos generados por plesk no sean de más de 2Gb (el panel de control tiene la opción de fragmentar los archivos), ya que munpack se quejará en este caso, tendríamos que recortar el fichero descomprimido.… Leer artículo completo

  • Conocer la posición de un objeto (Javascript)

    Posteo un par de funciones para saber la posición absoluta (x,y) de un objeto en Javascript:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    function getX( oElement )
    {
      var iReturnValue = 0;
      while( oElement != null ) {
        iReturnValue += oElement.offsetLeft;
        oElement = oElement.offsetParent;
      }
      return iReturnValue;
    }

    function getY( oElement )
    {
      var iReturnValue = 0;
      while( oElement != null ) {
        iReturnValue += oElement.
    Leer artículo completo