2009/10/19

Cambiar origen de un repositorio SVN

Si el origen de un repositorio SVN del que eres cliente ha cambiado de host o IP, incluso has cambiado de nombre de usuario puedes ejecutar esta simple instrucción para, de un modo bastante poco elegante, cambiar todas las referencias de los archivos .svn.


cd root_path_svn
for i in `find | grep .svn`; do
cat $i | sed s/'oldusername@xxx.xxx.xxx.xxx'/'newusername@yyy.yyy.yyy.yyy'/g > /tmp/foo.aux;
sudo mv /tmp/foo.aux $i;
done
       
   

2009/08/31

Dando pasos para un GNU/Linux para todos

Lo de que se desconfiguren (o no funcionen directamente) cosas en GNU/Linux es un clásico (casi tanto como los pantallazos azules de Windows). A pesar de estos problemas, que para un usuario básico hacen inusable el sistema, como desarrollador y usuario avanzado estoy infinitamente más feliz con un S.O. de Software Libre que uno privativo... pero siendo sinceros, quedarse sin X tras cada actualización es muy molesto!!

En mi portatil Toshiba hay muchas cosas que nunca han funcionado, pero los mayores problemas han sido con la tarjeta gráfica (ATI HD Radeon 2400) y desde que actualicé a Ubuntu 9.04 el sonido no iba. Lo de la ATI he intentado de todo desde hace tiempo (todos los trucos, compilar drivers, etc.), pero la cosa no quedaba como debería ser.

Hoy tengo que decir que, por fin, he encontrado la solución a estos problemas... y sin necesidad de saber lo que es 'gcc'!!!! ¿Cómo? Usando el programa de instalación de los drivers de ATI!!! Guauuuuuuu!! Menos mal!!!! [1]

Y con el audio tenemos que seguir con truquitos de instalar y desinstalar módulos, etc. etc... [2] Pero al menos funciona, sin estar toda la tarde haciendo pruebas!

[1]: http://www.islabit.com/7262/instalando-driver-de-ati-en-ubuntu-904.html
[2]: https://help.ubuntu.com/community/SoundTroubleshooting
       
   

2009/07/08

Ignorando ficheros con GIT

A veces dentro de un proyecto se generan ciertos archivos que no se desean tener en el repositorio de versiones. En mi caso, a veces tengo ficheros de configuración propios con rutas a carpetas de mi máquina o con cosas raras que tampoco quiero que sean subidas.

En git es fácil poder indicar que no se incluyan estos ficheros creando un fichero .gitignore en la raíz del proyecto. Más detalles en:
http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#ignoring-files

Esto funcionaría si los ficheros no han sido ya agregados con git add. Si este es el caso quedan 2 opciones:
  1. Hacer commits selectivos de ficheros y carpetas concretos ignorando estos ficheros
  2. Usar el comando git-update-index --assume-unchanged

** Ampliación **
Para analizar más en profundidad el contenido del index y el estado de los ficheros es útil (además de git status) el comando:
 git ls-files -v
Con este comando se listan los ficheros en el índice indicando su estado con las letras al principio de la línea:

H cached
M unmerged
R removed/deleted
C modified/changed
K to be killed
? other

En caso de que las letras sean en minúscula indica que se encuentran con el bit activo de "assume-unchanged".
       
   

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ó :)