viernes, 22 de febrero de 2008

UTF8 en Wordpress

A parte del sufrimiento anteriormente mencionado tambien me ocurrio que derrepente se dejaron de ver los acentos, eñes etc... (Esto no fue culpa del isp... fue solo mia :P)

Despues de estar haciendo locales-gen, ejecutar castellanizar y varias cosillas mas que encontre googleando sin ningun resultado me hice un

grep 8859 /etc/* -R

Encontre lo que creo que soluciono el tema por un lado para poner utf8 en apache editamos nuestro archivo de configuracion de apache :

nano -w /etc/apache2/apache2.conf

Y buscamos AddDefaultCharset y lo ponemos para que por defecto pille utf8

AddDefaultCharset UTF-8

Despues editamos la configuracion de php ...

nano -w /etc/php5/apache2/php.ini

Para hacer casi lo mismo, buscamos default_charset para ponerle que por defecto pille utf8

default_charset = "utf-8"

Con esto ultimo un script que tenia de prueba con un echo con acentos, eñes, etc... ya funcionaba, pero los caracteres especiales en los datos que escupia el wordpress de la base de datos mysql seguian apareciendo mal.

Acordandome de la config que tiene el wp tenia referencia a una locale y gracias a que 5 minutos antes mi boss me recordo que el mysql utilizaba un tipo de codificacion que "raro" (Si me lo dices 10 minutos antes seguro que se me olvida), para ser mas exactos era la : utf8_general_ci modifique el archivo de configuracion del wordpress para poner esta ultima en vez de utf8 en el DB_CHARSET.

define('DB_CHARSET', 'utf8_general_ci');

Y todo volvio a la normalidad... ha sido una semana muy, muy, pero que muy.... dura

Wordpress lentisimo, casi parado, derrepente....

En un lugar de la red, de cuyo nombre no quiero acordarme, hospedaba un ISP malvado como el solo.

Un dia y coincidiendo con unos cambios que habia realizado el dia anterior empezo a ir lentisimo los sites que tenia hospedados en un servidor dedicado (unos 160 €/mes ... casi na).

Como coincidio con los cambios realizados por mi, en un servidor que administro yo, lo mas logico fue pensar que la habia cagado de alguna forma. Despues de mirar codigo cambiar todo, poner un wordpress nuevecito y ver que seguia iendo lento descubri, por pura casualidad, que el propio servidor no resolvia nombres.

Edite el resolv.conf puse unos nuevos dns y ya iba como un tiro...

Casi lloro de dolor (Menos mal que bpk estuvo a mi lado consolandome...)

Moraleja, antes de ponerte a hacer straces (o como se llame lo que hace bpk para ver donde se cuelgan/sobrecargan las apps) mira bien que tu isp no te la jugo, no te pase como a mi y te tires 4 horas con semejante locura.

miércoles, 20 de febrero de 2008

Recuperar archivos borrados en ext3

Usaremos los comandos siguientes :
debugfs, para saber los bloques
dls, para volcar contenidos

Conviene leerselo antes de que la hayas cagado...

1) Apagas a capon (nada de shutdown ni halts ni inits a ser posible) para evitar que se escriban nuevos datos en los espacios de los borrados

2) Arrancas otro linux (desde hd o usb a ser posible para escribir los archivos recuperados)

3) Imaginamos que el hdb1 es la particion donde perdimos los datos, hacemos :
debugfs /dev/hdb1

4) Vamos al directorio donde borramos los archivos
debugfs : cd /home/web/src/blog/scripts

5) Hacemos un ls -d para ver los inodes de los archivos borrados
debugfs : ls -d

Nos devolvera algo como esto :

211095 (12) . 210082 (4084) .. <209240> (56) variables.cfg
<211150> (32) basic-crear-bbdd.sh <211151> (4016) vssver.scc
<211301> (40) alac-update-a-lastest-engine.sh
<209241> (68) perso-update-a-lastest-engine.sh
<211150> (28) blog-crear-bbdd.sh
<210646> (3888) src-actualizar-lastest-engine.sh
los numeros entre <> son los inodes


6) Hayamos el grupo de bloques donde se encuentra el inode de los archivos con imap <inode> (Con <> incluido)
debugfs : imap <209240>

Nos devolvera algo como esto :

Inode 209240 is part of block group 13
located at block 426000, offset 0x0b80
los numeros entre <210646> son los inodes


Para este caso ya sabemos que es el 13

7) Hayamos de que bloque a que bloque esta el grupo con stats
debugfs : stats

Nos devolvera algo como esto :


Filesystem volume name: /
Last mounted on:
Filesystem UUID: 39ab69c0-e7e2-4a09-87e8-10037fcc2c4b
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal filetype sparse_super
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 497984
Block count: 996022
Reserved block count: 49801
Free blocks: 757815
Free inodes: 442389
First block: 0
Block size: 4096
Fragment size: 4096
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 16064
Inode blocks per group: 502
Last mount time: Tue Feb 19 11:11:35 2008
Last write time: Wed Feb 20 09:49:25 2008
Mount count: 14
Maximum mount count: 30
Last checked: Thu Jan 10 12:17:41 2008
Check interval: 0 ()
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 128
Journal inode: 8
Journal backup: inode blocks
Directories: 3939
Group 0: block bitmap at 2, inode bitmap at 3, inode table at 4
22861 free blocks, 15910 free inodes, 34 used directories
Group 1: block bitmap at 32770, inode bitmap at 32771, inode table at 32772
31451 free blocks, 14577 free inodes, 3 used directories
Group 2: block bitmap at 65536, inode bitmap at 65537, inode table at 65540
29671 free blocks, 14596 free inodes, 62 used directories
Group 3: block bitmap at 98306, inode bitmap at 98307, inode table at 98308
30286 free blocks, 15010 free inodes, 67 used directories
Group 4: block bitmap at 131072, inode bitmap at 131073, inode table at 131076
20250 free blocks, 15340 free inodes, 5 used directories
Group 5: block bitmap at 163842, inode bitmap at 163843, inode table at 163844
27584 free blocks, 14913 free inodes, 105 used directories
Group 6: block bitmap at 196608, inode bitmap at 196609, inode table at 196612
24565 free blocks, 13511 free inodes, 239 used directories
Group 7: block bitmap at 229378, inode bitmap at 229379, inode table at 229380
30981 free blocks, 14879 free inodes, 30 used directories
Group 8: block bitmap at 262144, inode bitmap at 262145, inode table at 262148
26882 free blocks, 14216 free inodes, 129 used directories
Group 9: block bitmap at 294914, inode bitmap at 294915, inode table at 294916
28672 free blocks, 14694 free inodes, 105 used directories
Group 10: block bitmap at 327680, inode bitmap at 327681, inode table at 327684
21608 free blocks, 14267 free inodes, 117 used directories
Group 11: block bitmap at 360448, inode bitmap at 360449, inode table at 360452
29480 free blocks, 14500 free inodes, 87 used directories
Group 12: block bitmap at 393216, inode bitmap at 393217, inode table at 393220
21167 free blocks, 14793 free inodes, 84 used directories
Group 13: block bitmap at 425984, inode bitmap at 425985, inode table at 425988
20193 free blocks, 12784 free inodes, 305 used directories

Group 14: block bitmap at 458752, inode bitmap at 458753, inode table at 458756
29393 free blocks, 14664 free inodes, 100 used directories
Group 15: block bitmap at 491520, inode bitmap at 491521, inode table at 491524
26638 free blocks, 13954 free inodes, 42 used directories
Group 16: block bitmap at 524288, inode bitmap at 524289, inode table at 524292
27210 free blocks, 12036 free inodes, 30 used directories
Group 17: block bitmap at 557056, inode bitmap at 557057, inode table at 557060


Lo que nos interesa para este caso es los Blocks per group y el Group 13

Blocks per group : 32768
Group 13: block bitmap at 425984, inode bitmap at 425985, inode table at 425988


Nos da que empieza en 425984 (Esto es igual a multiplicar [Group] * [Blocks per group] 13 * 32768) y termina en 425984 + 32768 - 1 = 458751 ([Donde empieza] + [Blocks per group] - 1)

ya nos podemos salir de debugfs
debugfs : q

8) Volcamos los datos a un archivo con dls -eA dispositivo bloqueini-bloquefin > archivo
dls -eA /dev/hdb1 425984-458751 > /tmp/volcado.dls

Con esto conseguimos que sea mucho menor el espacio donde tenemos que buscar. (128 Mb en este caso)

9) En mi caso necesitaba recuperar archivos de texto plano, asi que hice un less del archivo y fui buscando los datos que necesitaba, luego copy y paste a un nuevo archivo. Ademas todos los archivos estaban en el mismo grupo, con lo que no me hizo falta volcar mas grupos de bloques.
less /tmp/volcado.dls

Estuve intentando usar foremost pero fui incapaz de hacerlo funcionar con esos archivos, me recuperaba un puñao de ficheros pero no lo que necesitaba.

muchisimas gracias a este post : http://belinux.wordpress.com/2007/07/16/porque-es-dificil-recuperar-un-fichero-borrado-de-ext3/

viernes, 8 de febrero de 2008

Notas sobre mplayer

Antes de nada el necesario disclaimer: Mi configuración dista mucho de ser perfecta pero a mí me vale. No he tenido la necesidad de pegarme demasiado con las USE de gentoo - al menos en lo referente a mplayer - así que seguro que se podrá mejorar; pero sí puedo decir que puedo reproducir todo lo que necesito y como yo quiero, que no es poco ^_^

  • USE flags en gentoo referentes a mplayer

  • Las USE que yo estoy utilizando:
    bpk@osaka:$ grep USE /etc/make.conf
    USE="a52 aac bash-completion bzip2 cdparanoia cups doc dts dvd dvdr dvdread examples faad ffmpeg flac id3 ipod java live lzo matroska mp4 mpeg2 nptl nptlonly nvidia openal ppds samba screen svg theora vcd wma x264 xanim xvid -berkdb -gnome -ipv6 -arts -esd freetype utempter mjpeg"


    Las USE concretas referente al tema de reproducción multimedia con el mplayer son [1]
    a52, Enables support for decoding ATSC A/52 streams used in DVD
    aac, Enables support for MPEG-4 AAC Audio
    dts [2], Enables DTS Coherent Acoustics decoder support
    dvd, Adds support for DVDs
    dvdr, Adds support for DVD writer hardware (e.g. in xcdroast)
    dvdread [3], Enables usage of Ogle's libdvdread for DVD playback
    faad [4], ---
    ffmpeg, Enable ffmpeg-based audio/video codec support
    flac, Adds support for FLAC: Free Lossless Audio Codec
    live, Enables live.com streaming media support
    matroska, Adds support for the matroska container format
    openal, Adds support for the Open Audio Library
    theora, Adds support for the Theora Video Compression Codec
    vcd, Video CD support
    xanim, Enables support for xanim based codecs
    xvid, Adds support for xvid.org's open-source mpeg-4 codec

    Las USE referentes al tema de (re)codificación
    cdparanoia, Enables cdparanoia (audio CD ripper) support
    mp4, Enables mp4 encoding support
    wma [5], Add support for wma files through mplayer.
    x264, Enable h264 encoding using x264
    mjpeg [6], Enables mjpegtools support

    En el apartado media-video de la página de la que he sacado las descripciones de las USE [1] hay un par de tablas muy interesantes acerca de las que se pueden utilizar para los principales reproductores.

  • Parámetros mplayer

  • Una vez tengamos el mplayer instalado a nuestro gusto, tendremos que configurarlo de cara a nuestras necesidades.
    Para ello tenemos los archivos mplayer.conf y gui.conf, para el mplayer(-bin) y gmplayer(-bin) respectivamente. Además hay que tener en cuenta que, como muchos programas en linux, estos ficheros pueden estar en /etc (para que la configuración sea genérica para cualquier usuario) o en $HOME/.mplayer/ (configuración específica para cada usuario). El mplayer hace caso en este orden: 1º parámetros de ejecución. 2º Config de usuario. 3ª Config global.
    Respecto a las principales par'ametros que yo tengo puestos en el mplayer.conf, son los siguientes (no estoy seguro de si se son exáctamente igual los parámetros en el archivo gui.conf):

    Parámetros mplayer.conf
    vo=xv Usa la extensión XVideo de XFree86 4.x para activar la reproducción acelerada por hardware.
    double=yes Double buffering, recomendado para el tema de subtítulos.
    ao=alsa [7] Utiliza el controlador ALSA.
    monitoraspect=4:3 Especificamos el tipo de monitor.
    font="Bitstream Vera Sans" [8] Le especificamos que fuente utilizar.
    subfont-osd-scale=4 Establece el coeficiente de autoescala de los elementos del OSD.
    subfont-text-scale=3 Tamaño de las fuentes especificando la escala.

    Por supuesto hay muchos más, pero no tiene sentido extenderse. Lo suyo es ir mirando en el man de mplayer para cada cosa que queramos ir tocando ^_^

  • alias

  • Como yo utilizo el PC como HTPC y como PC de escritorio, suelo tirar de alias para reproducir las cosas dependiendo de donde/lo que me interese. Hay que tener en cuenta que es una gentoo de 64bits, así que uso mplayer / mplayer-bin / gmplayer / gmplayer-bin dependiendo de lo que me interese. Por simplificar pongo los ejemplos con el gmplayer.
    bpk@osaka:$ grep mplayer /home/bpk/.bash_aliases
    alias gmplayer_dolby_dts="gmplayer -ac hwdts,hwac3, -monitoraspect 16:9 -sws 9 -vf scale=1280:-2"
    alias gmplayer_dvd="gmplayer -ac hwdts,hwac3, -monitoraspect 16:9 -sws 9 -vf scale=1280:-2 dvd:// -dvd-device"
    alias gmplayer_entrelazado="gmplayer -ac hwdts,hwac3, -monitoraspect 16:9 -sws 9 -vf scale=1280:-2 -vf pp=hb/vb/dr/al/lb/tn:1:2:3"
    alias gmplayer_entrelazado2="gmplayer -ac hwdts,hwac3, -monitoraspect 16:9 -sws 9 -vf scale=1280:-2 -vf pp=fd"


  • kutre-scripts

  • Por último, tengo unos kutre-scripts que utilizo para que Staryu reproduzca las películas a golpe de ratón.
    Escenario: En F7 tengo levantadas unas KDE que sólo se ven desde el monitor del PC. En F8 tengo levantadas unas X con un eterm que se ven desde el proye y el monitor y que tienen la resolución nativa del proye.
    Para levantar las X de F8:
    bpk@osaka:$ cat X_720p
    #!/bin/sh
    X :1 -layout "Proye_720" & > /dev/null
    DISPLAY=:1 Eterm --geometry 210x53
    xhost +

    Para reproducir el archivo en F8. Tengo asociado el script como acción principal para determinados tipos de archivos y así que se reproduzcan los videos en F8.
    bpk@osaka:$ cat reproductor_proye
    #!/bin/sh
    export DISPLAY=:1
    chvt 8 & gmplayer-bin -ac hwdts,hwac3, -monitoraspect 16:9 -sws 9 -vf scale=1280:-2 "$1" && chvt 7
    export DISPLAY=:0

    Para reproducir carpetas que contienen un backup de DVD en su interior.
    bpk@osaka:$ cat dvd_proye
    #!/bin/sh
    kdialog --title "NOTA INFORMATIVA" --msgbox " Para que esto funcione, hay que 'clickar' sobre la carpeta SUPERIOR A VIDEO_TS. \
    De lo contrario no funcionará... Good luck ^_^"
    export DISPLAY=:1
    chvt 8 & xine -f dvd:///"$1" && chvt 7
    export DISPLAY=:0

    Faltan un montón de cosas: ajustar temas de offset, posición de subs, ventajas y desventajas de los distintos filtrados por software y hardware, etc. pero como cada persona necesita ajustar todos esos parámetros personalmente, no tiene sentido que me meta en ese fregado.

Tampoco me quiero meter en configuración de Xorg y demás zarandajas, pero si hace falta las subo a algún lado, que no son nada del otro mundo.

[1] listado de USE flags
[2] Desde el 7 de enero gentoo prefiere libdca a libdts: "Remove unused versions still depending only libdts because it's getting removed in favour of libdca." mplayer changelog
[3] Habitualmente no utilizo Ogle, pero lo tengo instalado para hacer pruebas alguna vez.
[4] No he encontrado info referente a esta USE, así que supongo que ya no tiene sentido tenerla. Lo que sí he encontrado es el paquete faad2.
-media-libs/faad2. AAC audio decoding library
[5] El paquete dir2ogg se encarga de realizar la conversión--> media-sound/dir2ogg: Converts Mp3, M4a, Wma, and Wav files to Ogg Vorbis format.
[6] El paquete /media-video/transcode tira de media-video/mjpegtools
[7] Con antiguas configuraciones de alsa + mplayer he tenido que especificarle el dispositivo. Por ejemplo:ao=alsa:device=spdif ó ao=alsa:device=hw=0.0
[8] En mi caso utilizo fuentes truetype font=/usr/share/fonts/truetype/ttf-bitstream-vera/Vera.ttf"

Seguidores