2009/05/08

Eclipse en modo Emacs

Para los tecleamos mucho código y hemos logrado pasar la barrera inicial de uso de Emacs (aunque sea al tercer intento), siempre echamos de menos cosas de Emacs en todos los demás editores, e incluso en TextFields en una web.

Por otro lado, aunque Emacs permite ser un buen IDE para programar en Java, hay que reconocer que eclipse (o NetBeans) es una alternativa extremadamente cómodo para trabajar. Pero claro, eclipse no es Emacs... aunque éste cuenta con un esquema de teclas que emula a Emacs. Se pierden muchísimas de las ventajas de emacs y además sólo tiene algunas de las combinaciones habituales como cut, yank, incremental search, etc...

Para activarlo, hay que ir a menú:

Windows -> Preferences -> Keys -> Schema:Emacs

Algunas combinaciones de teclas que no aparecen son configurables. Ahí van 2 de las imprescindibles que se pueden (y se deben) de ajustar:

Find and Replace -> CTL+SHIFT+5
Go to Line -> ALT+G ALT+G



Investigando un poco he visto que existen algunos plugins que aumentan la sensación emacs en eclipse:
  • Emacs+: http://www.eclipseplugincentral.com/Web_Links-index-req-viewlink-cid-1442.html
  • Emacish: http://www.eclipseplugincentral.com/Web_Links-index-req-viewlink-cid-1012.html
Habrá que probarlos!!!
       
   

2009/01/30

Pasar archivos de openoffice a pdf automáticamente

Una de las grandes comodidades de openoffice es poder contar con un botón que pase los documentos a PDF con un simple click. Pero si tienes muchos documentos y todos los quieres pasar a pdf, el hecho de abrirlos uno a uno y pulsar ese botón puede resultar laborioso.

Buscando alguna solución mágica del tipo "openoffice2pdf" o "odt2pdf", encontré el siguiente enlace
http://www.oooforum.org/forum/viewtopic.phtml?p=61967#61967 donde se ofrece una macro que hace justamente eso.

Los pasos para poder usarlo son los siguientes:
  • Abrir openoffice e ir a Herramientas->Macros->Organizar->Basic
  • Crear una nueva y copiar el siguiente código
Sub ExportAsPDF(strFile as string)
Dim oDoc
Dim strFilterSubName as String
Dim oLoadArgs(0) as New com.sun.star.beans.PropertyValue

oLoadArgs(0).Name = "Hidden"
oLoadArgs(0).Value = True

oDoc = StarDesktop.loadComponentFromURL(ConvertToUrl(strFile), "_blank", 0, oLoadArgs())
If IsNull(oDoc) Then Exit Sub

strFilterSubName = ""
' select appropriate filter
If oDoc.SupportsService("com.sun.star.presentation.PresentationDocument") Then
strFilterSubName = "impress_pdf_Export"
ElseIf oDoc.SupportsService("com.sun.star.sheet.SpreadsheetDocument") Then
strFilterSubName = "calc_pdf_Export"
ElseIf oDoc.SupportsService("com.sun.star.text.WebDocument") Then
strFilterSubName = "writer_web_pdf_Export"
ElseIf oDoc.SupportsService("com.sun.star.text.GlobalDocument") Then
strFilterSubName = "writer_globaldocument_pdf_Export"
ElseIf oDoc.SupportsService("com.sun.star.text.TextDocument") Then
strFilterSubName = "writer_pdf_Export"
ElseIf oDoc.SupportsService("com.sun.star.drawing.DrawingDocument") Then
strFilterSubName = "draw_pdf_Export"
ElseIf oDoc.SupportsService("com.sun.star.formula.FormulaProperties") Then
strFilterSubName = "math_pdf_Export"
ElseIf oDoc.SupportsService("com.sun.star.chart.ChartDocument") Then
strFilterSubName = "chart_pdf_Export"
Else
Exit Sub
EndIf

Dim oSaveArgs(1) as New com.sun.star.beans.PropertyValue
oSaveArgs(0).Name = "FilterName"
oSaveArgs(0).Value = strFilterSubName

oSaveArgs(1).Name = "CompressMode"
oSaveArgs(1).Value = "1"

oDoc.storeToUrl(ConvertToUrl( strFile & ".pdf" ), oSaveArgs())
oDoc.close(True)
End Sub
  • Guardar la macro
  • Llamar a openoffice desde línea de comandos con la siguiente instrucción:

    $openoffice.org3 "macro:///Standard.Module1.ExportAsPDF(pathCompleto/archivo.odt)"
Esto genera un archivo con nombre "miarchivo.odt.pdf" en la misma carpeta que el archivo origen. Y con esto... ya podemos crear un script que nos exporte a PDF de forma masiva!!!
       
   

2008/12/13

MDB en Linux

A pesar de que se vive mucho mejor sin Windows, el uso extendido de ciertas aplicaciones dependientes de este sistema operativo hacen que los usuarios se encuentren a merced de los antojos comerciales de Microsoft. Un caso bien conocido son las herramientas de CAD que no acaban de encontrar su competidor en el mundo FLOSS (Free Libre Open Software Libre). Pero quizás, es la suite ofimática Microsoft Office la que más impide el paso de los usuarios al uso de Linux.
OpenOffice es una alternativa plena para substituir a la suite ofimática de Microsoft, pero a veces la conversión de formatos no es satisfactoria y si hay macros de por medio menos. De todos modos, yo me resisto a volver a Windows y existen formas de lograr trabajar a gusto sobre Linux a pesar de la traba de los formatos propietarios.
En mi caso actual me encuentro con una "base de datos" Access mdb con muchísimas tablas que quería poder manejar desde Linux. Para ello existe mdbtools que es un conjunto de herramientas para leer mdb. Se puede instalar mediante el comando:
$sudo aptitude install mdbtools
Para listar las tablas de un mdb podemos usar el comando:
$mdb-table -1 nombrefichero.mdb
Para exportar a CSV sin comillas y separado por comas he usado la siguiente sentencia:
$mdb-export -S -q '' -d ';' -D '%Y-%m-%d' nombrefichero.mdb nombretabla > nombretable.csv
Y para exportar todas las tablas a la vez...

IFS=$'\n'
for table in `mdb-tables -1 nombrefichero.mdb`; do
echo '**** Exporting table: '$table '****'
mdb-export -S -q '' -d ';' -D '%Y-%m-%d' nombrefichero.mdb $table > $table'.csv'
echo 'Done.'
done
***** Actualización *****
Se puede abrir un MDB desde openoffice conectándose mediante ODBC. La receta:
http://wiki.services.openoffice.org/wiki/Connecting_to_Microsoft_Access
       
   

2008/10/25

Cómo instalar OpenOffice 3.0

El pasado 13 Oct 2008 se anunció la release de OpenOffice 3.0. Ésta incluye interesantes mejoras entre ellas me llamaron la atención las siguientes:
  • Importación y edición de archivos PDF
  • Una extensión de publicación en WikiMedia
  • Mejoras en gráficos estadísticos
Para instalarlo en Ubuntu 8.04 hice lo siguiente:
  1. Desinstalar la versión antigua (creo que no es estrictamente necesario).
    $apt-get remove openoffice.org-core
  2. Bajar el tar.gz de la página oficial de OpenOffice y descomprimirlo en /tmp

  3. Entrar en la nueva carpeta y en el directorio DEBS

  4. Instalar los paquetes debian con la instrucción:
    $sudo dpkg -i *.deb
  5. Entrar en la carpeta desktop-integration y repetir el comando del punto 4.

La prueba de que me funcionó :)
       
   

2008/09/11

Corrección ortográfica en Latex

Estoy "entregado a la entrega" de mi proyecto fin de carrera cuya memoria estoy redactando en galego usando Latex. Las ventajas de escribir textos y documentación con Latex o Docbook son muy altas (sobre todo en calidad y rapidez de escritura de contenido), pero tienen pequeñas incomodidades frente a los procesadores de texto más habituales. Una de ellas es la falta de corrección ortográfica automática que suele ser de gran ayuda.

La alternativa es GNU Aspell. Este corrector permite, entre otros formator, trabajar directamente con ficheros Tex. Se puede integrar con otras aplicaciones [1].

Un uso básico sería:
$aspell -d es -encoding\=iso-8859-15 -c fichero.tex
Para correción ortográfica del gallego en Debian y Ubuntu, existe sólo el paquete aspell-gl-minimos. Esto es un problema dado que en galego exiten diferentes convenciones: oficial, de minimos y reintegracionista.

Otra alternativa es MySpell utilizado en la suite OpenOffice y ahora sustituído por HunsPell. En mancomun.org fixeron o paquete para galego[2]. El uso básico sería:
$hunspell -t -d gl fichero.tex

[1]: http://aspell.net/man-html/Using-Aspell-with-other-Applications.html
[2]: http://wiki.mancomun.org/index.php/Corrector_ortogr%C3%A1fico_para_OpenOffice.org
       
   

2008/07/14

Ejecutar un script en R

R (the R Project for Statistical Computing) es un potente programa de software libre de estadística y gráficos. La cantidad de funciones que ofrece es inmensa: en el momento de escribir este post cuenta con 1493 paquetes adicionales. Es muy probable que cualquier cosa que necesites de estadística, gráficos, etc. esté ya implementada en R. Me gustaría destacar que existen muchas funciones relacionadas con la geomática, como acceso a datos espaciales, geoestadística, etc.

Su uso está principalmente orientado a la línea de comando, pero permite también la ejecución de scripts de comandos R.

Si tenemos el fichero "/home/foo/myRscript.R" existen 2 alternativas para ejecutarlo:

  • Desde consola:
  • R CMD BATCH /home/foo/myRscript.R

  • Desde el propio R:

  • R> source("/home/foo/myRscript.R")

           
       

    2008/06/17

    Dividir ficheros en trozos

    Trabajando con datos geográficos referentes a grandes extensiones de terreno es normal encontrarse con la necesidad de guardar ficheros de gran tamaño en un disco externo. Si este disco está formateado con FAT, sistema de ficheros que no admite ficheros de un mayores de 4GB de tamaño, tenemos un pequeño problema. Es común encontrarse con errores del tipo:
    cp: writing `/media/EXT-HDD/mdt.asc': File too large
    Lo mismo puede pasar al mandar un fichero grande a través de una cuenta de correo con restricciones en el peso de los adjuntos.

    La solución que dividir el fichero, por ejemplo usando el comando, split:
    $split -b1500m archivo.ext archivo.@

    Con esta simple sentencia tengo mi archivo cortado en trozos de 1500 MB.
    Para restituir el archivo original bastaría con hacer un cat:
    $cat archivo.* > archivo.ext