Mostrando entradas con la etiqueta programación. Mostrar todas las entradas
Mostrando entradas con la etiqueta programación. Mostrar todas las entradas

miércoles, 18 de octubre de 2017

Gedit: abrir archivo actual en firefox

Me sorprendió que Gedit no tenga fácilmente disponible complementos para "enviar" el archivo actual al navegador web, ya que esto es una práctica bastante habitual mientras se editan páginas web.
  1. Instalar los complementos de gedit
    sudo aptitude install gedit-plugins
  2. Abrir gedit
  3. Entrar al menú "Preferencias"
  4. Hacer clic en la pestaña de "Complementos"
  5. Activar el complemento "Herramientas externas"
  6. Cerrar el diálogo de "Preferencias"
  7. En el menú "Herramientas", buscar "Manage External Tools" (Gestionar Herramientas Externas).
  8. Agregar una nueva rutina haciendo clic en el botón "+".
  9. El comando a ejecutar es
    #!/bin/sh
    firefox -new-tab "$GEDIT_CURRENT_DOCUMENT_PATH"
  10. Le configuré
    • Guardar: Todos los documentos
    • Entrada: Documento actual
    • Salida: nada
    • Aplicabilidad: Todos los documentos (Todos los lenguajes)
  11. Darle un nombre a la nueva rutina
  12. Cerrar el diálogo de "Herramientas Externas"
Para ejecutar la rutina creada, basta con ir al menú herramientas, luego "External Tools" (Herramientas Externas),  y hacer clic sobre el nombre que le colocamos a la rutina.

miércoles, 4 de noviembre de 2015

Cómo ejecutar sentencias PHP desde la consola

Estaba revisando el código de algunas páginas en PHP y quise validar, rápidamente, el valor de algunas expresiones utilizadas. 
Para no tener que montar un depurador, o configurar un ide, o empezar a escribir mini páginas PHP de prueba, decidí averiguar como ejecutar PHP desde la consola.
Resultó ser bastante sencillo
php5 -r 'echo php_uname("n") . "\n";'

viernes, 7 de agosto de 2015

Error con la JRE al editar Macros en Libreoffice Basic

Estaba intentando automatizar un patrón particular de búsqueda y reemplazo en unos documentos, buen Windows, y se me ocurrió que una forma de realizarlo sería utilizando Macros de Libreoffice.
Primero tuve que habilitar la ejecución de Macros, para lo cual Libreoffice me solicitó que especificase un ambiente de ejecución de Java (JRE). Sin embargo, Libreoffice me indicó que el JRE seleccionado estaba defectuoso o no era compatible.
Luego de buscar en Internet, encontré que este error se presenta si Libreoffice està compilado para 32 bits y la JRE especificada es de 64 bits. La versión de Libreoffice para Windows está compilada para 32 bits.
El problema se solucionó al instalar una versión de la JRE de 32 bits y configurar Libreoffice para que la utilizase.

sábado, 25 de octubre de 2014

Desduplicar archivos idénticos en Linux

Recientemente tuve que reconstruir mi colección de música a partir de mi reproductor varios respaldos parciales (en un reproductor de música, en una memoria USB, una computadora vieja, etc), y aparte del problema de tener que categorizar de nuevo algunas canciones, me encontré con que un mismo archivo estaba en diferentes carpetas o rutas en los diversos soportes, por lo cual colocar todas las subcarpetas en un mismo directorio resultaba en un que una misma canción podía estar repetida varias veces.

Inicialmente, quise utilizar los metadatos de las canciones para detectar los archivos duplicados, pero era un trabajo manual muy tedioso ordenar por artista e ir leyendo cada una, así que decidí hacer un guión en bash.

A continuación el método a grandes rasgos:
  1. Para detectar si un archivo está repetido, se hará una comparación de su huella SHA256, una función robusta de resumen criptográfico.
  2. Se comparan dos carpetas a la vez (en mi caso una carpeta con una colección parcial que estaba mejor estructurada que otra carpeta con canciones sueltas).
  3. Se ejecuta la función de SHA256 sobre todos los archivos de una carpeta y se almacena el nombre y la huella de cada archivo. Luego se ejecuta la operación con la otra carpeta.
  4. Se combinan ambos listados y para determinar si alguna huella está repetida.
  5. Para los casos cuando un archivo esté duplicado, en una carpeta se conservará y en la otra será eliminado. Por simplicidad, en una carpeta siempre se conservará y en la otra siempre se eliminará.
  6. Se utiliza la información de las huellas repetidas para determinar a cuales archivos se corresponden en la carpeta para eliminar.
  7. Se borran masivamente los archivos repetidos en la carpeta para borrar.
El guión quedó así:
#!/bin/sh

# Autor: J. Navarro
# Fecha: 2014
# Este programa se distribuye bajo licencia GPLv2
# Puede obtener el texto completo de la licencia en:
# http://www.gnu.org/licenses/gpl-2.0.html


#Inicialización de variables

NOBORRARDIR=<carpeta donde se conservan los duplicados>;
NOBORRARTMP="/tmp/noborrar.sha256";
NOBORRARREP="/tmp/noborrar.sha256.repetido";

BORRABLEDIR=<carpeta de donde se eliminan los duplicados>;
BORRABLETMP="/tmp/borrable.sha256";
BORRABLEREP="/tmp/borrable.sha256.repetido"

REPETIDOTMP="/tmp/repetido.sha256"
REPETIDOMIX="/tmp/repetido-mix.sha256"

#Ejecución de comandos

echo "Generando resumen criptografico de $NOBORRARDIR"

find $NOBORRARDIR -type f -exec sha256sum {} + > $NOBORRARTMP

echo "Generando resumen criptografico de $BORRABLEDIR"

find $BORRABLEDIR -type f -exec sha256sum {} + > $BORRABLETMP

echo "Detectando archivos repetidos"

 #listado de resumenes criptograficos de archivos repetidos
cat $NOBORRARTMP $BORRABLETMP | cut -f1 -d\ | sort | uniq -d \
> $REPETIDOTMP


#listado combinado donde los archivos repetidos estan juntos
cat $NOBORRARTMP $BORRABLETMP | sort | egrep -f $REPETIDOTMP \
> $REPETIDOMIX

# Cuando grep genera el error "Referencia hacia atrás inválida"
# cat $NOBORRARTMP $BORRABLETMP | grep -F -f $REPETIDOTMP | sort \

#> $REPETIDOMIX

#visualizar el listado de archivos repetidos
pager $REPETIDOMIX

echo "Archivos repetidos a conservar"

egrep $NOBORRARTMP -f $REPETIDOTMP > $NOBORRARREP
pager $NOBORRARREP

echo "Archivos repetidos a eliminar"

egrep $BORRABLETMP -f $REPETIDOTMP > $BORRABLEREP
pager $BORRABLEREP

# Se toman solamente los nombres de archivo,
# se encierran entre comillas y se borran.
cat /tmp/borrable.sha256.repetido | perl -pe "s/[^ ]+[ ]+//" | \
perl -pe 'chomp $_; $_="\"$_\"\n"' | xargs rm

miércoles, 4 de abril de 2012

Ruby on Rails en SUSE

Hace tiempo publiqué un artículo sobre la instalación de Ruby sobre Ubuntu, con RVM. Ahora que estoy siguiendo unos tutoriales sobre Ruby on Rails, ha surgido la necesidad de instalarlo en mi computadora con SLED 11 SP2.
Como precondición para estos pasos, hay que agregar el paquete SDK apropiado a la instalación de SUSE y es posible que también algunos repositorios de la comunidad. Esto está cubierto en más detalle en un artículo anterior.
Los paquetes a instalar son ruby, ruby-devel, rubygems, rubygem-rails y nodejs.
nodejs : http://download.opensuse.org/repositories/devel:/languages:/nodejs/SLE_11_SP1/
ruby: http://download.opensuse.org/repositories/devel:/languages:/ruby/SLE_11_SP2/
ruby-devel: http://download.opensuse.org/repositories/devel:/languages:/ruby/SLE_11_SP2/
rubygems: SLE 11 SDK SP2
rubygem-rails: SLE 11 SDK SP2
Luego de esto, el tutorial funcionó. Para el desarrollo con Rails, deberemos ir instalando los paquetes *-devel correspondientes a las "gemas" que vayamos instalando.
Queda pendiente configurar un buen entorno de desarrollo de aplicaciones.

lunes, 2 de abril de 2012

Aprendiendo SUSE

Este artículo habla de los primeros pasos a tomar para hacer un sistema SUSE usable para un computista.
Desde hace poco tengo una portátil Compaq, de las que traen Linux preinstalado. Para ser más específico trae SUSE Linux Enterprise Desktop (SLED) 11.
Al principio, quise dejar el SLED 11 para evitar instalar y configurar otra distro. Luego, me di cuenta de que el repertorio de paquetes disponibles en SUSE es ínfimo comparado con los que traen Debian y sus derviados (como Ubuntu).
Sin embargo, el nuevo núcleo 3.x no es del todo compatible con la tarjeta inalámbrica, según mis pruebas con diversos LiveCDs y mis búsquedas en diversos foros de soporte. Por lo tanto, decidí darle otra oportunidad a SLED.
Actualizar
El primer paso es actualizar todos los paquetes del sistema y luego, ir de SLE 11 SP 1 a SLE 11 SP 2. Las instrucciones para llevar a cabo este procedimiento están aquí.
Ampliar
Lo primero que un desarrollador necesita son paquetes de desarrollo como gcc, make, ant, git, bzr,etc. Éstos no están por defecto en los repositorios de SUSE, sino que se encuentran en un producto adicional denominado SLE 11 SP2 Software Development Kit (SDK). Las imágenes ISO deben ser descargadas desde acá, luego de crear una cuenta Novell.
En Yast -> Productos Adicionales se agregan las imágenes ISO ya descargadas, y ya estarán disponibles los paquetes de desarrollo.
Comunidad
SLE no es una distribución orientada a la comunidad, sino a las grandes organizaciones. Esto hace que sea atractivo tener limitadas las aplicaciones que pueden ser instaladas.
Pero, para un usuario avanzado, esto es una molestia terrible. Para aliviarla están los repositorios adicionales de OpenSUSE (la versión comunitaria de SUSE) y su servicio de compilación de programas OpenSUSE Build Service. Debemos seleccionar los paquetes y repositorios destinados a SLE 11, bien sea a secas, SP 1 o SP 2.
Algunos de los repositorios que agregué son: games, security, LibreOffice y Wine.
Otro repositorio disponible es "Packman", el cual ofrece una amplia variedad de aplicaciones para OpenSUSE y una oferta más restringida para SUSE. Se debe seleccionar una de las réplicas a nivel mundial y luego agregar el repositorio adecuado.
Desgraciadamente, no he logrado instalar exitosamente Chromium - mi navegador predilecto - ni Google Chrome.