Archivo de la categoría 'Recetas' Category


Instaladores de Debian modificados

Debian Mola Si alguien ha tratado de instalar una Debian Sarge en una máquina con SATA verá que puede ser un gran tormento ya que el kernel que trae el instalador no tiene soporte para la mayoría de controladoras SATA. Este problema se soluciona en gran medida con la nueva versión Debian Etch que trae un kernel más moderno, pero si por alguna circunstancia necesitais instalar Sarge podéis probar las imágenes del instalador modificadas de Kenshi Muto.

Tiene tanto instaladores de Debian Sarge con kernel 2.6.20.1 como de Debian Etch con el kernel 2.6.23. La versión de Sarge tiene un pequeño inconveniente, y es que no puede instalar Gnome ni el entrono de escritorio desde Tasksel debido a la incompativilidad de udev con el paquete hal de Sarge, pero para servidores nos permitirá realizar la instalación y utilizar otro escritorio si necesitamos entrono gráfico, incluso seguro que mirando un poco podemos instalar Gnome sin hal.

4 Comentarios » Publicado el Tuesday 29 de January de 2008 por chuano
Guardado en Recetas
Trackback

Reparar archivo de Openoffice.org Calc corrupto

Hoy me han mandado un archivo de Openoffice.org Calc (el Excel del Openoffice.org pa entendernos) que al intentar abrirlo daba el siguiente error:

Error al cargar el documento.
Error de lectura.
En el documento parcial content.xml del archivo existe un error de formato en la posición 2,657678

OpenOffice.org Calc

En un principio pensé que el numero dado era la posición de una celda, aunque el número era demasiado alto, y tras investigar un poco en busca de una herramienta para reparar este archivo he encontrado un hilo en un foro en el que explica que se trata de la posición del carácter que contiene el error en el formato línea,columna.

Los archivos de Openoffice.org, anteriormente sxc, sxw, etc y actualmente odt, son archivos comprimidos ZIP que contienen varios ficheros en su interior. Si le cambiamos la extensión por .zip (este paso en linux es innecesario) y lo descomprimimos encontraremos varios ficheros. Uno de ellos, y el que contiene los datos, es el fichero content.xml, que es el que me daba el error.

Podemos repararlo con un editor de texto que no haga saltos de línea automáticos (kwrite en mi caso). Al abrirlo veremos que tiene 2 líneas, una con la declaración del DOCTYPE y otra enormemente larga que contiene la estructura y datos del archivo en formato XML.

Debemos dirigirnos a la línea y columna que nos dice el error y cambiarlo por el carácter correcto. En mi caso había varios caracteres cambiados que he podido deducir gracias a que la estructura se repite muchas veces y solo algunas veces aparece mal. Por ejemplo donde debía poner “<text:p>” ponía “<tHGt:p>”.

Una vez sustituido lo guardamos y volvemos a meter todos los archivos en un archivo zip, al que después cambiaremos la extension por la correcta, en mi caso .sxc.

Tras repetir varias veces el proceso con los distintos errores encontrados he podido recuperar el documento.

Las causas de esta corrupción no las conozco, y en el foro hablan de los rayos cósmicos, suena a cachondeo xD.

Notas

  • Es importante que el editor de texto que emplees no genere saltos de línea automáticos. Estos darían un error. Para linux puedes emplear Kwrite por ejemplo. Para windows puedes usar por ejemplo EditPad Lite que es gratuito.
  • Si tras modificar el fichero content.xml te da un error en la posición 3,XXX es que tu editor de texto ha agregado algún salto de línea, recuerda que este fichero siempre tiene 2 líneas, nunca más. A mi me ocurrió esto usando Vim, pues me agregó un salto de línea al final del fichero.
  • Trabaja siempre sobre una copia del archivo, de este modo si haces algo mal siempre podrás volver al punto anterior.
  • Esto lo he probado únicamente con archivos de OpenOffice.org 1.X, aunque los nuevos archivos (ODT) deben tener la misma estructura.

2 Comentarios » Publicado el Wednesday 09 de January de 2008 por chuano
Guardado en Recetas
Trackback

Evitar agotar la memoria de un Servidor Privado Virtual

Atención, post rollazo, solo para interesados.


Ayer sufrí un efecto meneame bastante considerable con el post sobre el uso de condones, recibí en apenas 5 horas 8000 visitas y unas 31000 páginas servidas, cifras que seguramente para muchos no sean espectaculares, pero que aguantarlas sobre un servidor privado virtual que corre otros servicios, especialmente de correo, y con solo 256 Mb de RAM supuso para mí un reto importante, y parece que lo conseguí aunque con algunas chapuzas.

El problema

El problema principal al alojar un blog sobre un VPS no reside en el consumo de CPU como en Dreamhost (de hecho la CPU estaba muy ociosa), sino en el consumo de memoria, principalmente porque imposibilitan el uso de swap con lo que el servidor cuenta únicamente con la memoria física para todos los procesos.

Cuando el servidor consume toda la memoria el kernel empieza a matar procesos para liberar memoria y puede dejar incomunicado el servidor. Por tanto hay que intentar evitar que se consuma toda la memoria RAM a toda costa.

La solución

Para ello deberemos optimizar el apache para que libere los recursos más rápidamente y optimizar el uso de memoria del apache evitando cargar los módulos innecesarios.

Además en mi caso tuve que limitar un poco el número máximo de procesos de apache jugando un poco con el parámetro MaxClients para evitar que se lanzasen más procesos de los que el servidor podía aguantar. También bajé los parámetros MaxSpareServers y MinSpareServers para intentar liberar antes la memoria pero me temo que en estos casos esto ayuda poco y lo he cambiado varias veces por lo que no puedo asegurar nada.

Con todo esto conseguí algo de mejora, pero el Apache, MySQL y para colmo Wordpress, pese a tener wp-cache instalado, tragan memoria como monstruos por lo que continuamente me quedaba sin memoria disponible, así que probe a recargar el Apache y ví que se cerraban muchísimos procesos, liberando memoria, y aún así la web era accesible.

Hice un cutre-scriptTM que recargase el Apache cuando se superase un límite mínimo de RAM.

#!/bin/bash
minram=50
while true; do
        memusage=$(free -m | head -2 | tail -1 | awk {'print $4'})
        if [ "$memusage" -lt "$minram" ]; then
                /etc/init.d/apache reload
        fi
        sleep 10
done

Puse a correr el script que comprueba cada 10 segundos la RAM disponible, de modo que cuando quedasen libres menos de 50Mb de RAM recargase el Apache liberando así un montón de memoria.

La solución es cutre y solo puede aplicarse en momentos concretos como este, poco ortodoxa y seguro que muchos pensais que soy un chapuzas, pero parece que ha funcionado bien y no se ha interrumpido el servicio mientras ha estado funcionando.

Conclusión

Un VPS es muy cómodo por la flexibilidad que te permite pero tiene el gran problema de la memoria limitada sin swap.

Si hay algún experto en la sala que pueda sugerir algo se lo agradeceré con mucho gusto.

9 Comentarios » Publicado el Tuesday 04 de September de 2007 por chuano
Guardado en Documentos , Recetas
Trackback

Partes dinámicas en wordpress con wp-cache

Ayer estuve haciendo unas modificaciones en mi plantilla para mantener unas partes de la página dinámicas a pesar de utilizar wp-cache.

En la documentación del wp-cache viene bien claro que se debe meter el código dinámico a ejecutar en un fichero a parte, y hacer un include en la plantilla entre los comentarios html “<!–mclude fichero.php–>” y “<!–/mclude–>”.

<!--mclude wp-content/themes/mitheme/archivo_codigo.php-->
include('wp-content/themes/mitheme/archivo_codigo.php');
<!--/mclude-->

El tema es que me encontré algunas dificultades. Por un lado el wp-cache sustituye los include() y require() por include_once() intentando supongo problemas de repetición en declaraciones de funciones, pero para mi propósito necesitaba incluir en distintas partes de la plantilla el mismo código, por lo que tuve que sustituir en el fichero wp-cache-phase2.php el include_once por include en la línea 149.

"<!--mclude-->\n<?php include_once('" . ABSPATH . "$1'); ?>\n<!--/mclude-->", $buffer);

por

"<!--mclude-->\n<?php include('" . ABSPATH . "$1'); ?>\n<!--/mclude-->", $buffer);

Por otro lado me encontre que el wp-cache es bastante tiquismiquis con el parseo de estas cosas, y hay que ser muy estricto al escribir los mclude.

  • No puede haber espacios entre "<!–" y mclude, ni tras el nombre del fichero. Igual pasa al cerrar el mclude.
  • El include() debe hacerse con comillas simples, con comillas dobles no funciona.

Así no funcionará:

<!-- mclude mifichero.php -->
include("mifichero.php");
<!– /mclude –>

Así sí funcionará:

<!--mclude ruta/mifichero.php-->
include(’ruta/mifichero.php’);
<!–/mclude–>

El tema de ser estricto no es un problema, una vez lo sabes es facil de solucionar, pero el tema de sustituir los include por include_once no lo veo claro, creo que eso debe ser decisión del programador y no debe hacerse de forma automática, aunque quizá haya alguna razón que desconozco

Comentarios » Publicado el Wednesday 22 de August de 2007 por chuano
Guardado en Recetas
Trackback

Repara los pixels muertos de tu TFT

Resucita pixels muertosMuchos monitores TFT tienen algun pixel muerto, es decir, algun pixel apagado o que queda de un color perpetuamente, y aunque en la mayoría de los casos es inapreciable, en algunas ocasiones puede caer en un punto muy usado de la pantalla llegando a ser bastante modesto. JScreenFix promete en su web que abriendo este applet java y poniendolo en la zona afectada puede restaurar los pixels. La verdad no lo he probado, solo tengo tft en el curro, pero en cuanto tenga un rato lo pondré a prueba, porque tengo un pixel muerto en el centro de la pantalla.

Se trata simplemente de un applet java que se ejecuta desde el navegador, cambiando muy rápidamente de color los pixeles del tft. Por supuesto requiere la máquina virtual de java.

¿Alguien lo ha probado? ¿Os ha funcionado?

Comentarios » Publicado el Wednesday 03 de January de 2007 por chuano
Guardado en Recetas
Trackback

Teclados Cherry con lector de tarjetas

Hoy he tenido que pelearme con unos teclados con lector de tarjetas magnéticas Cherry G81-7000, a diferencia de otros teclados de este tipo, esteno emplea la lectora de tarjetas como un teclado normal, es decir, necesita unos drivers especificos para hacer funcionar el lector de tarjetas.

En la página de Cherry puede descargarse el fuente para compilar el módulo necesario, una vez descargad lo descomprimimos, compilamos e instalamos.

Para poder compilar el módulo deemos tener los fuetes del kernel o al menos los headers.

tar zxvf CherryMSR-USB-Linux.1.3.0.2.tar.gz
cd CherryMSR-USB-Linux.1.3.0.2/usb/msrdrv/
make
make install

Ahora solo debemos cargar el modulo y el lector funcionará perfectamente, dando los datos por stdin como un teclado.

Teclado Cherry con lector de tarjetas magnéticas

Comentarios » Publicado el Tuesday 26 de December de 2006 por chuano
Guardado en Documentos , Recetas
Trackback

[x] Cerrar
E-mail
Subir