Archivo de la categoría 'Documentos' Category


Hojas de cálculo ODS (Openoffice.org) desde PHP

Hace ya bastante tiempo escribí un pequeño tutorial sobre escribir hojas excel desde php mediante un paquete de PEAR que nos permitía crear hojas de cálculo XLS fácilmente.

Hoy encuentro gracias a Andrés Nieto que en Nativos 2020 han liberado una librería en PHP para escribir y manipular hojas de cálculo en el estandar de OpenOffice.org (ODS), un estandar que puede o debería poder ser leído por cualquier aplicación de hojas de cálculo modernas.

ODS-PHP

La librería requiere PHP 5 y el módulo XML de PHP. Puedes descargarla del proyecto ODS-PHP.

1 Comentario » Publicado el Wednesday 20 de February de 2008 por chuano
Guardado en Documentos
Trackback

Funcionamiento del instalador y live-cd Ubuntu

A raíz de que Quatermain está intentando instalar Ubuntu, he visto que hay muchas dudas del funcionamiento de los cd-rom de instalación y su lógica, lo que dificulta buscar donde puede estar el fallo. Por eso voy a hacer una breve descripción de como funciona el instalador de Ubuntu, que no deja de ser un live-cd. Seguro que cometo errores, por favor si alguien los detecta que deje un comentario, pero a groso modo funciona así.

El menú de arranque

Cuando arrancamos desde el cd-rom de Ubuntu, lo primero que aparece, o debería aparecer, es un pequeño menú que nos da opciones de arranque, entre ellas la de iniciar e instalar Ubuntu.

Este pequeño menú no es el sistema Ubuntu Linux, ni siquiera una pequeña parte de él, se trata de un gestor de arranque, en concreto Grub. Éste solo es un menú que lanza el sistema, dependiendo de la opción con unos parámetros u otros.

Menu Arranque cd

Si al intentar arrancar con el cd-rom de Ubuntu no te aparece este menú, lo más probable es que tengas problemas con el cd-rom grabado, la grabadora o el lector de cd’s.

El sistema Live-CD

Una vez seleccionamos una opción del menú de arranque, que generalmente será la de iniciar e instalar, comienza el arranque del sistema Live-CD Ubuntu. Esto es un sistema operativo Ubuntu Linux completo que está instalado en el cd-rom.

Este sistema funcionará como si estuviese instalado en nuestro disco duro, pero desde el cd (más lento), es decir, simula que el cd es nuestro disco duro. De este modo podemos probar el sistema para ver si nos gusta y se ajusta a nuestras necesidades sin modificar nuestra instalación del disco duro.

Este sistema no escribe nada en disco si no tenemos una partición Swap (lo que sería la memoria virtual en Windows más o menos), en cuyo caso la utilizaría, pero esto no es peligroso ni modifica nada de nuestro sistema, y solo se da el caso si tienes un Linux instalado en tu máquina.

Splash arranque ubuntu

Una vez finalizado el proceso de arranque, si todo ha ido bien, tendremos un escritorio Ubuntu Linux totalmente funcional que no ha modificado nada en nuestro ordenador. Podremos probarla y si nos gusta ejecutar el instalador.

Escritorio ubuntu

El instalador

El instalador de Ubuntu son una serie de scripts y programas que se ejecutan dentro del entorno Live-CD, y cuando se ejecuta te guía por los pasos de la instalación.

Instalador ubuntu

Tendrás que particionar el disco mediante el asistente, y dar unos datos básicos de configuración que te irá preguntando. Es bastante sencillo y no debe tener complicación para ningún usuario, por lo que no explicaré los pasos a seguir, para eso hay otros sitios que lo indican muy bien.

Este proceso es el único que modifica y escribe en disco.

Y aquí acaba esta breve explicación del funcionamiento del Live-CD de Ubuntu.

9 Comentarios » Publicado el Wednesday 30 de January de 2008 por chuano
Guardado en Documentos
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

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

Hojas de cálculo excel con php

pear.pngDesde hace algun tiempo me veo obligado a generar estadísticas y de mas informes que en algunos casos es muy útil exportarlos a hojas de cálculo. Hasta ahora exportaba esos datos generando archivos csv que luego importaba desde Excel, OpenOffice.org Clac o cualquier otra Hoja de Cálculos, pero es bastante limitado puesto que no se pueden generar hojas separadas (al menos que yo sepa) en un mismo documento, ni se le puede dar formato a las celdas, además de lo incordioso que es tener que importar los datos con la hoja de cálculo.

La solución la he encontrado hoy, aunque ya es bastante antigua, un paquete de PEAR para generar hojas de cálculo excel en formato nativo y con muchas posibilidades. El paquete es Spreadsheet_Excel_Writer.

Es obvio que teneis que tener instalado PEAR, y una vez satisfecho este requisito, solo teneis que bajar el paquete y su única dependencia: el paquete OLE. Una vez descargados los paquetes solo debeis hacer:

pear install OLE-x.x.tgz
pear install Spreadsheet_Excel_Writer-x.x.x.tgz

A partir de aquí solo queda hacer el código php para generar las hojas de cálculo. Un ejemplo sencillo:

< ?
//incluimos la libreria
require_once 'Spreadsheet/Excel/Writer.php';

//damos nombre al documento
$filename="prueba.xls";

//abrimos un nuevo documento
$docexcel = new Spreadsheet_Excel_Writer();

//abrimos una hoja del documento
$nuevahoja =& $docexcel->addWorksheet(”Titulo de la Hoja”);

//escribimos en sus celdas
$fila=0;
$columna=0;
$valor=”Hola”;
$nuevahoja->write($fila, $columna, “$valor_de_la_celda”);

//enviamos el documento para descargarlo y lo cerramos
$docexcel->send($filename);
$docexcel->close();
?>

Como he dicho también se le puede dar formato a las celdas, podeis encontrar como hacerlo en la documentación.

25 Comentarios » Publicado el Thursday 06 de July de 2006 por chuano
Guardado en Documentos , Recetas
Trackback

Estadísticas Web: Awstats y dominios Virtuales

AwstatsComo ya comenté, estoy probando Google Analytics, pero no me acaba de convencer, me pierdo entre tantos listados y no me resulta nada comodo, así que estuve buscando sistemas de estadisticas para instalar en mi servidor.

Estuve probando Webalizer, pero la presentación no me convence en absoluto, y sobretodo, no conseguí configurarlo por separado para cada dominio virtual, con lo que las estadisticas son un cristo. Con la experiencia adquirida configurando awstats para los distintos dominios tengo una leve idea de como hacerlo, quizá algún día lo pruebe y lo comente por aquí, pero awstats me ha convencido.

Las estadísticas que ofrece Awstats me parecen excelentes, da mucha información y presentada de forma clara.

Para configurarlo en distintos dominios virtuales, lo primero es asegurarnos de que apache nos genera un log distinto para cada dominio configurado. Esto podemos conseguirlo incluyendo en cada uno de los dominios virtuales del httpd.conf la siguiente línea.

CustomLog /var/log/apache/dominio-access.log combined

Donde especificamos la ruta y el nombre del archivo de log y el formato, en nuestro caso usaremos el formato combined que nos muestra bastante información.

En segundo lugar debemos instalar awstats, en debian tan facil como

apt-get install awstats

Una vez instalado, tendremos que crear unos alias en el apache para que el directorio de las estadisticas sea accesible. Añadiremos al archivo httpd.conf las siguientes líneas.

### AWSTATS ##########
<directory /var/lib/awstats>
        Options None
        AllowOverride None
        Order allow,deny
        Allow from all
</directory>

# This provides worldwide access to everything below the directory
# Security concerns: none known
<directory /usr/share/awstats/icon>
        Options None
        AllowOverride None
        Order allow,deny
        Allow from all
</directory>

# This provides worldwide access to everything in the directory
# Security concerns: none known
Alias /awstats-icon/ /usr/share/awstats/icon/

# This (hopefully) enables _all_ CGI scripts in the default directory
# Security concerns: Are you sure _all_ CGI scripts are safe?
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

A continuación crearemos un fichero de configuración de awstats para cada dominio alojado, para ello partiremos de el ejemplo awstats.conf

cp /etc/awstats/awstats.conf /etc/awstats/awstats.dominio.com.conf

y editaremos las líneas referentes al dominio y al archivo de log

LogFile="/var/log/apache/dominio.com-access.log"
LogFormat=1
SiteDomain="dominio.com"

Una vez generado un fichero de configuración para cada dominio monitorizado, solo nos falta crear un script que actualice las estadísticas con el siguiente formato, añadiendo una línea para cada uno de los dominios. En mi caso he creado el archivo /bin/awstats.sh

/usr/lib/cgi-bin/awstats.pl -config=dominio.com -update

y meterlo en un cron para actualizar automáticamente las estadísticas cada cierto tiempo, en mi caso lo he puesto para que se actualice cada hora, y lo he puesto en el crontab así

00 *    * * *   root    /bin/awstats.sh

A partir de ahora podremos acceder a las estadisticas accediendo a la siguiente dirección del dominio principal (el raiz del apache).

http://dominio-preincipal.com/cgi-bin/awstats.pl?config=dominio.com

donde se pasa a la variable config.php el dominio a monitorizar en el mismo formato que en el nombre del su archivo de configuracion de awstas.

Así tendremos unas estadisticas propias para cada dominio que se actualizarán en mi caso cada hora.

2 Comentarios » Publicado el Tuesday 28 de February de 2006 por chuano
Guardado en Documentos
Trackback

[x] Cerrar
E-mail
Subir