abr 09 2014

perl: warning: Setting locale failed

Published by under ssh (1452 lecturas)

Conectamos por ssh contra nuestro servidor, lanzamos un comando erróneo y aparte del mensaje de error el intérprete de comandos nos suelta el siguiente sermón:

# comando erróneo
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LC_PAPER = "es_ES.UTF-8",
	LC_ADDRESS = "es_ES.UTF-8",
	LC_MONETARY = "es_ES.UTF-8",
	LC_NUMERIC = "es_ES.UTF-8",
	LC_TELEPHONE = "es_ES.UTF-8",
	LC_IDENTIFICATION = "es_ES.UTF-8",
	LC_MEASUREMENT = "es_ES.UTF-8",
	LC_TIME = "es_ES.UTF-8",
	LC_NAME = "es_ES.UTF-8",
	LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
ERROR: (algo relacionado con el comando erróneo)

Mmmh… ¿por qué? Pues porque en el fichero /etc/ssh/sshd_config tenemos una linea como la siguiente:

AcceptEnv LANG LC_*

Que viene a decir: las variables de entorno relacionadas con el idioma del usuario deben ser exportadas al intérprete de comandos destino de una conexión ssh. En mi caso, el soporte es_ES. El problema es que los paquetes de ese idioma en el servidor destino no están instalados… de ahí que Linux se queje amargamente.
Bueno, para evitarlo hay varias formas. La más sencilla: basta con comentar la línea en cuestión de /etc/ssh/sshd_config (añadiéndole un # por delante) y ¡listo!

No responses yet

abr 08 2014

Parchear Ubuntu para evitar el bug OpenSSL Heartbleed

Published by under Seguridad (2500 lecturas)

Ayer a la tarde se levantó una buena polvareda con el bug Heartbleed de OpenSSL. Básicamente, cualquier usuario podría acceder a una zona de 64Kb de memoria del servidor, cercana a la zona donde se gestionan las operaciones con SSLv3. Esto podría llegar a permitir acceder a información privilegiada, como por ejemplo la clave privada usada para el cifrado. Aunque hay dudas técnicas sobre este aspecto específico (acceso a las claves privadas), los investigadores que descubrieron el bug así lo afirman (como indica el primer link). Conclusión: estás tardando en actualizar OpenSSL en tu servidor :-)

sudo apt-get update
sudo apt-get install -y libssl1.0.0 openssl
openssl version -a # y confirma que es la nueva versión ("built on" >= 2014-04-07)
sudo lsof -n | grep ssl | grep DEL  # reload de todos los servicios que usen versión vieja

Repite el último paso hasta que no queden servicios usando la versión vieja de openssl.

Gracias a coderanger por los tip.

Update (11/04/2014): como dije, hay serias dudas de que el acceso a las claves privadas sea viable. De hecho, uno de las primeras webs donde se expuso el bug lanza ahora un reto: han puesto un servidor HTTPS vulnerable en marcha y retan a la comunidad a extraer la clave privada usando el bug Heartbleed.

Update (13/04/2014): pues han tardado unas pocas horas en extraer la clave privada. Vaya, vaya…

4 responses so far

abr 01 2014

Resize de volúmenes en LVM

Published by under ext3,SysAdmin (1665 lecturas)

Tenemos un sistema de discos LVM con las siguientes “particiones”:

[juanan@S000161 ~]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_s000161-lv_root
                       50G   39G  8.6G  82% /
tmpfs                 5.8G  316K  5.8G   1% /dev/shm
/dev/mapper/ddf1_4c5349202020202080862925000000004711471100001450p1
                      485M   58M  402M  13% /boot
/dev/mapper/vg_s000161-lv_home
                      395G   87G  288G  24% /home

Si nos fijamos, el volumen lógico (lv) asignado a / está al 82% y sólo tiene 8.6GB libres. Por otro lado, el LV /home tiene GB de sobra (288GB libres, con sólo un 24% de utilización).

Vamos a recortar un poco (100GB) de /home para “estirar”  / .

Siempre como root, desmontar el volumen,  revisar posibles errores, y reducir tanto el sistema de archivos (ext4) como el propio volumen. Estas dos últimas operaciones se pueden hacer de un plumazo con la opción -r de lvreduce.
umount /dev/mapper/vg_s000161-lv_home
e2fsck -f /dev/mapper/vg_s000161-lv_home
lvreduce -r /dev/mapper/vg_s000161-lv_home --size -100G
(ojo, -100, con el menos por delante. Si pones 100G, sin el menos, recortas hasta ese tamaño!!!!)
Ahora que tenemos 100GB disponibles, los usaremos para aumentar la “partición” /.
Asegurarse de que está montado el volumen (sí, ¡montado!) y le damos caña:
lvextend /dev/mapper/vg_s000161-lv_root -r --size +100G

 

 

 

No responses yet

mar 27 2014

Depurar, editar y guardar ficheros JS en Google Chrome

Published by under Chrome,Devel,Javascript (665 lecturas)

Receta rápida para los desarrolladores JavaScript interesados, y para retomar el blog tras un parón de unos cuantos meses (he estado ocupado :-)

La cuestión es: las DevTools de Google Chrome permiten editar y depurar código JavaScript desde el propio navegador. Pero cuando editas un fichero .js y lo intentas guardar, salta el siguiente error:

chrome no deja grabar ficheros js “Changes to this file were not saved to file system”. Vaya… pues qué bien… mmmmhh….  ¿y qué dice StackOverflow al respecto? Que existe una solución :-) Vamos allá…

Lo primero: pulsa en el botón de configuración.

Botón configuración

 

 

 

Lo segundo, elige la opción Workspaces y añade las carpetas con las que trabajas (las que contienen tu código JS):

carpeta dropbox

 

Puedes añadir más de una carpeta. Fíjate también que puedes editar mapeos URL –> Carpeta local, pero ahí no me meto (por ahora!)

Ojo, cuando añadas carpetas tendrás que aceptar dar permiso, para cada una, para que DevTools pueda acceder a esos datos en modo lectura/escritura. Esta ventana de solicitud de permisos aparece por debajo, en la ventana de Chrome, así que atento, porque hasta que no la pulses, la carpeta no se añadirá correctamente.

Selection_786 Ya casi está. Si estás usando el protocolo file:// para trabajar con tus ficheros en lugar de http://, ojo, porque en ese caso, deberás abrir tus archivos JS desde la carpeta que acabas de añadir al workspace (no vale abrir el fichero haciendo doble click sobre él desde el escritorio o tecleando la ruta en la barra de direcciones del navegador).

 

Abriendo workspaces Sino que tendrás que ir a la pestaña “Sources” y hacer doble click sobre los ficheros de las carpetas importadas (ojo, no desde file://)

Y a partir de ahora, cualquier cambio realizado en el panel DevTools podrás guardarlo “automágicamente” en el sistema de archivos local con un simple Ctrl+S.

 

One response so far

oct 24 2013

¿Quién lanzó esta ventana?

Published by under SysAdmin (3792 lecturas)

Hautapena_081Problema: una aplicación ha lanzado una ventana en tu escritorio, pero no sabes exactamente qué aplicación es “la culpable”.

Solución: desde una terminal, lanzamos el comando

$  xwininfo

Nos dará un ID de ventana. Por ejemplo, en mi caso, el 0x3e00004.

Pedimos ahora las propiedades de ese ID y, más en concreto, el identificador del proceso al que pertenece:

$ xprop -id 0x3e00004 _NET_WM_PID
_NET_WM_PID(CARDINAL) = 3189

Bien, sólo nos queda pedir una lista de procesos y filtrar por el PID que acabamos de obtener:

$ ps auxww| grep 3189
juanan 3189 0.0 0.4 494700 16396 ? Sl 12:52 0:00 update-notifier

Ajá! update-notifier es el culpable…

4 responses so far

sep 15 2013

LibreOffice Writer: desactivar corrector ortográfico en referencias de Zotero

Published by under LibreOffice,Zotero (4215 lecturas)

Como ya presentamos en su día, Zotero es un gestor open source de referencias bibliográficas. Se integra perfectamente en el procesador de textos LibreOffice Writer… Bueno, perfectamente no, tiene un fallo, que es el que quiero comentar (y arreglar). Al añadir las referencias bibliográficas las inserta en el documento Writer sin preocuparse de cambiar el idioma en el que estás escribiendo. Alguien dirá: ¿lógico, no? Si estás escribiendo en castellano, ¿por qué debería insertar la referencia en otro idioma?. La cuestión es que debería insertar las citas SIN especificar idioma. ¿Por qué? Porque si mantienes un idioma (cualquiera), al pasar el corrector ortográfico, cada vez que haya una referencia Zotero, el corrector se quejará, creyendo que es un error de ortografía. Para evitarlo, basta con que ejecutes esta macro una vez terminado tu documento. Cambiará el idioma de las referencias a “Sin idioma”, lo que permitirá omitir su revisión en el corrector, ahorrándonos un precioso tiempo.

El bug original y la solución para MS Word en la que me he basado, así como esta misma macro que acabo de enviarles, puedes encontrarlos en los foros de Zotero.

Sub DeactivateProofingOfZoteroFields
Dim oReferenceMarks
Dim oReferenceMark
Dim oReferenceNames
Dim anchor
 
REM preparar locale vacío para evitar avisos del corrector ortográfico
REM Visto en "OpenOffice.org Macro Information" (Andrew Pitonyak)
Dim noLocale As New com.sun.star.lang.Locale
noLocale.Country = ""
noLocale.Language = "zxx"
 
REM recorrer las referencias bibliográficas
REM asegurándose de que han sido insertadas por Zotero
REM y asignarles el noLocale
 
oReferenceMarks = ThisComponent.getReferenceMarks()
oReferenceNames = oReferenceMarks.getElementNames()
For i = LBound(oReferenceNames) to UBound(oReferenceNames)
 
	sName = oReferenceNames(i)
 
	if (InStr(sName, "ZOTERO") = 1) then
		oReferenceMark = oReferenceMarks.getByName(sName)
		anchor = oReferenceMark.getAnchor()
		anchor.CharLocale = noLocale
	end if
 
Next i
 
End Sub

No responses yet

sep 13 2013

Macro para recorrer y editar entradas de la tabla de contenidos en Writer

Published by under LibreOffice,Macros (3797 lecturas)

Supongamos que quieres recorrer la tabla de contenidos de un documento Writer para modificar automáticamente algunas de las entradas. Por ejemplo, supongamos que quieres cambiar las entradas que empiezan por ” PARTE” (como ” PARTE  1″, ” PARTE 2″…) por el mismo contenido pero en negrita, y añadirle un salto de línea a continuación. Es decir, quieres modificar el índice de contenido de la imagen de la izquierda para que quede como el de la derecha.

Selection_468

Selection_469

 

 

 

 

Puedes usar la siguiente macro StarBasic en LibreOffice Writer (Herramientas / Macros / Organizar macros / LibreOffice Basic …) :

' Dentro del Módulo1 de "Mis macros", en concreto en el método Main
Dim SearchDesc, oVC, Found, Cursor
Dim Fuera as Boolean 
 
   oDoc = ThisComponent ' oDoc es el documento actual
   SearchDesc = oDoc.createSearchDescriptor ' vamos a realizar una búsqueda
 
   With SearchDesc 
      .SearchString  = "^ PARTE.*$"   ' con esta expresión regular
      .SearchRegularExpression = True 
   end With
 
   oVC = oDoc.getCurrentController.getViewCursor  ' crear cursor para recorrer matches
   Fuera = false
   Found = oDoc.findFirst(SearchDesc) ' situarse en el primer match
 
   Do Until Fuera 
          Found.gotoStartOfSentence(false)  ' ir al comienzo de la línea (sin select)
	  Found.gotoEndOfSentence(true) ' seleccionar hasta final de línea
 
      Cursor = oVC.getText.createTextCursorByRange(Found) ' vamos a modificar la selec.
 
      if NOT IsNull(Cursor.DocumentIndex)  Then
        if NOT IsEmpty(Cursor.DocumentIndex)  Then
           Found.CharWeight = com.sun.star.awt.FontWeight.BOLD  ' por negrita
      	   Cursor.setString(CHR$(13) + Found.getString() + CHR$(13)) ' y salto de línea
           Found = oDoc.findNext(Found.End, SearchDesc) ' vamos a por siguiente match
        else
            Fuera = True
        end if
      end if   
   Loop

No responses yet

sep 06 2013

Instalar Ubuntu 13.04 en iMac 27″

Published by under iMac,SysAdmin,Ubuntu (3144 lecturas)

Un apunte rápido, porque ha sido coser y cantar, a diferencia del martirio por el que tuvimos que pasar en 2010 y que dejamos documentado. Captura de pantalla 2013-09-06 a la(s) 16.13.39Realmente lo único que he necesitado ha sido la versión AMD64 de Ubuntu 13.04 (la vez anterior tuve que descargar explícitamente la versión “alternate”, esta vez ha bastado con la versión desktop tradicional).

Sí ha sido necesario, al igual que la vez anterior, instalar el gestor de arranque rEFIt (no vale sólo con GRUB, o yo no he sido capaz). Parece que rEFIt está obsoleto y que ahora se recomienda rEFInd, aunque a mí no me ha dado ninguna guerra (al instalarlo, la primera vez no te saldrá el menú de rEFIt, tendrás que volver a arrancar para verlo).

El reparticionado del disco lo hice con el editor de disco de MacOSX. Sin problemas (reparticionando en caliente, sin desmontar la unidad… daba un poco de miedo, pero al no recibir ningún warning por intentarlo, supuse que era viable).

En la instalación, en modo gráfico, he seleccionado la opción de descarga de actualizaciones y la opción de activar drivers privativos. Nada más, Ubuntu 13.04 se ha instalado rápidamente en la partición que le corresponde y rEFIt me permite entrar sin problemas en MacOSX o Ubuntu (a través de GRUB).

Hay un fallo que queda por corregir: al apagar Ubuntu el iMac se queda colgado (no se llega a apagar). Para corregirlo:

sudo gedit /etc/default/grub

y sustituimos la línea GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash” por GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash reboot=pci”

(tal y como explicamos en el anterior post relacionado)

Nota: que a mí me haya funcionado no quiere decir que en tu iMac también lo haga. Así que, ya sabes, antes de tocar particiones, recuerda que las copias de seguridad son tus amigas ;-)

No responses yet

sep 04 2013

Control de líneas huérfanas y viudas en LibreOffice Writer

Published by under LibreOffice,receta (2420 lecturas)

Selection_427La Wikipedia define perfectamente las líneas viudas y huérfanas: son líneas que, por quedar en una página distinta que el resto del párrafo al que pertenecen, aparecen aisladas de su contexto.

En la imagen de la izquierda tenemos un ejemplo de línea viuda (aquella que, siendo la última de un párrafo, aparece al principio de la página siguiente). Una línea huérfana, por el contrario, sería aquella que aparece al final de una página, de forma aislada al resto de las líneas de ese párrafo (que continúa en la siguiente página).

Las líneas huérfanas y viudas quedan fatal en tus textos, ¿a que sí? Para controlarlas, LibreOffice Writer ofrece una sección “Flujo del Texto” en las propiedades del párrafo. Recomiendo que estas propiedades no se cambien párrafo a párrafo, sino que se apliquen al estilo por defecto. Pulsa F11 para ver los estilos que tienes aplicados en los párrafos. Si no has tocado nada, tendrás el “Estilo Predeterminado”. Pulsa el botón derecho sobre ese estilo. Elige “Modificar” y sitúate en la pestaña “Flujo del Texto”. En la parte inferior verás opciones para el control de huérfanas y viudas.  Por ejemplo, para “arreglar” automáticamente el problema de la figura anterior, le pediremos a LibreOffice que nunca deje viudas con menos de 3 líneas (ver imagen inferior). Lo que hará será reformatear automáticamente el texto para cumplir con nuestras órdenes. Lo mismo es aplicable para líneas huérfanas.

Selection_430Si a pesar de aplicar estas opciones algún párrafo en concreto se te resiste, siempre puedes forzar a LibreOffice a que no rompa ese párrafo entre páginas (“No dividir párrafo”) o a que un párrafo en concreto esté siempre junto al siguiente en la misma página (“Mantener párrafos juntos”). Bueno, con estos trucos ya no hay excusa para que en tus documentos tengas líneas aisladas al comienzo o al final de página ;-)

2 responses so far

sep 02 2013

Referencias y bookmarks en LibreOffice

Published by under LibreOffice,receta (2157 lecturas)

Selection_425 Redactando un documento te das cuenta de que quieres crear un enlace a sección del texto. Por ejemplo, estás redactando una receta y quieres crear un enlace a la zona de ingredientes. Lo mismo que cuando redactando un documento HTML quieres crear un enlace interno, de una parte del documento a otra. ¿Cómo hacerlo en LibreOffice Writer?

Lo primero que hay que hacer es determinar que la sección de ingredientes es un destino de salto. Seleccionamos una parte del texto de los ingredientes, por ejemplo, la cabecera. A continuación, en el menú Insertar, seleccionamos Referencia Cruzada. En la pestaña Referencias cruzadas, seleccionaremos “Establecer referencia” y le damos un nombre. Pulsamos el botón “Insertar” y “Cerrar”.

En otra zona del documento, seleccionamos el punto en el que queremos crear el enlace a la referencia que acabamos de crear (el enlace que al pulsarlo, irá a la zona de ingredientes). Elegimos ahora “Insertar / Referencia cruzada” y en la pestaña “Referencias cruzadas”, seleccionamos “Insertar referencia” y el destino del salto (en nuestro caso, sólo aparecerá listada la referencia “ingredientes” que hemos creado en el paso anterior). Pulsamos en “Insertar referencia a: Referencia”, botón “Insertar” y “Cerrar”. ¡Listo! Puedes probar que el enlace funciona correctamente situándote sobre él y pulsando el enlace (sin necesidad de pulsar simultáneamente Ctrl, como ocurre por ejemplo en la tabla de contenidos). Si todo ha ido bien, saltarás a la zona de ingredientes automáticamente.

¿Qué diferencia hay entre las referencias y los bookmarks (marcas de texto o marcadores) de LibreOffice? Si conviertes el documento con la referencia y salto a referencia cruzada que acabamos de crear a formato PDF o HTML, verás que el enlace se pierde. Si quieres mantener estos enlaces al exportar el documento a formato PDF o HTML, deberás  crear un bookmark en lugar de una referencia. Los bookmarks se crean mediante el menú “Insertar / Marca de texto…” . El enlace a un bookmark se crea de forma idéntica al enlace a una referencia (pero eligiendo “Marcas de texto” como destino, claro :-)

Las cabaceras de nivel 1, 2, 3 y 4 generan referencias de forma automática, al igual que los pies de imagen (caption) y tablas, así que eso que te ahorras.  Recuerda este post cuando quieras crear referencias cruzadas a títulos de capítulo o subcapítulo. Recuerda también que las referencias se actualizan automáticamente al abrir un documento Writer. Si quieres forzar la actualización de referencias, pulsa F9.

#findelacita ;-)

2 responses so far

Next »