21 de octubre de 2010

menu.lst de grub2


Manejar grub siempre ha sido un desafío. Y ahora que ya lo tenía más o menos dominado,... tenemos grub2 que no tiene nada que ver con su antecesor.

Por ejemplo el tan usado menu.lst de grub ya no existe en grub2

Para cambiar en grub2 los parámetros que estaban en menu.lst hay que:

- editar el fichero /etc/defaults/grub
- ejecutar #update-grub para que se actualize grub2

Ref.:
http://www.esdebian.org/wiki/instalar-grub2-debian

18 de octubre de 2010

exoRecompilando el kernel 2.6.35.7 / 2.6.36 en Ubuntu 10.10


Ubuntu10.10 tiene el kernel 2.6.35.7; y esto me hacer pensar que ya hace tiempo que no lo actualizo en mi sobreexplotado servidor micra que todavia está con debian lenny kernel 2.6.32.3 .

Para soluccionarlo pillo mis propios howtos:

Exo-RedPill-Compilación del Kernel 2.6.32.3 para Micra
Exo-Recompilación del Kernel
Recompilar el Kernel al estilo Debian: La Píldora Roja

... y me pongo a ello utilizando el actual fichero de configuración del kernel 2.6.32.3 de micra exoRecompilando en un pentium2800 de doble nucleo con debian-lenny como sistema operativo.


El resultado no es bueno, ya que no termina la recompilación apareciendo errores:
... ... ...
make[1]: se sale del directorio `/usr/src/linux-2.6.35.7'
/usr/bin/make EXTRAVERSION=.7-micra-pp01 ARCH=i386 \
-C Documentation/lguest
make[1]: se ingresa al directorio `/usr/src/linux-2.6.35.7/Documentation/lguest'
cc -m32 -Wall -Wmissing-declarations -Wmissing-prototypes -O3 -I../../include -I../../arch/x86/include -U_FORTIFY_SOURCE lguest.c -o lguest
lguest.c:21:25: error: sys/eventfd.h: No existe el fichero o el directorio
lguest.c: In function 'create_thread':
lguest.c:1026: warning: implicit declaration of function 'eventf
d'
make[1]: *** [lguest] Error 1
make[1]: se sale del directorio `/usr/src/linux-2.6.35.7/Documentation/lguest'
make: *** [debian/stamp/build/kernel] Error 2
micra:~#
Revisando la web veo que es un error ya reportado en el kernel 2.6.35.7:
What's up with Kernel 2.6.35.7? Annoying bugs while compiling...

Y para mi mayor sorpresa, ...ya descrito por yo mismo, con solucción y todo!!!! en:
Exo-RedPill-Compilación del Kernel 2.6.32.3 para Micra

Aplico mi propia solucción editando el fichero:
"lenny:# nano /usr/src/linux-2.6.35.7/Documentation/lguest/Makefile
-Cambiamos- "all: lguest" por "all:"
... y exorecompilando ...
... tarda un poquillo.

... parece que no ha funcionado !!??
Aparaece el mismo error que hace referencia a que kernel package 11.015 no esta actualizado. En lenny es el que se instala pero en squeeze es la versión kernel package 12.036. En los kernel superiores a 2.6.33 el kernel package 11.015 no funciona.

Veo otra solucción que es innactivar las opciones LGUEST de la configuración del kernel:
http://permalink.gmane.org/gmane.linux.debian.user/386867

Cambio el fichero de configuración del kernel:
de:
...
CONFIG_PARAVIRT_GUEST=y
CONFIG_VMI=y
CONFIG_KVM_CLOCK=y
CONFIG_KVM_GUEST=y
CONFIG_LGUEST_GUEST=y
...

a:
...
CONFIG_PARAVIRT_GUEST is not set
CONFIG_VMI=y
CONFIG_KVM_CLOCK=y
CONFIG_KVM_GUEST is not set
CONFIG_LGUEST_GUEST is not set
...

... a exorecompilar ... y
tampoco funciona, sale el mismo error con kernel package 11.015

Más opciones:
( ) recompilar el kernel 2.6.25.7 desde debian squeeze
( ) ó desde Ubuntu 10.10

Vamos con la opción: exoRecompilación con Ubuntu 10.10

1) Instalo Ubuntu10.10 en una partición de 5GB del portatil vaio.
2) Actualizo el sistema, instalo paquetes necesarios.
3) Descargo el kernel... pero si ya ha cambiado!!!! el último estable es el kernel 2.6.36 !!!!!!; bueno pues vamos con este.
4) lo descomprimo
5) Pillo el fichero de configuración del kernel 2.6.32.3 de micra.
6) ... a exorecompilar ...
... y FUNCIONA !!!!!


Ya tenemos el paquete .deb con el kernel, solo falta instalarlo en micra a ver que hace.

micra con este nuevo kernel 2.6.36 NO termina el boot ya que hay problemas con algunos modulos ...lo tengo que revisar ( ).

Con Ubuntu10.10 se puede exorecompilar los últimos kernels y aplicarlos a sistemas debian lenny.

14 de septiembre de 2010

Manejo de claves duplicadas MySQL


Problema: intentar insertar un registro duplicado en un campo que es clave principal, da error.

Solución:
INSERT ... ON DUPLICATE KEY UPDATE ...
(Use UPDATE instead INSERT with duplicated keys)

INSERT IGNORE ...
(The row is not inserted but no duplicate error is issued)

Ref.:
http://mjcarrascosa.com/insertar-o-actualizar-registros-en-mysql/
INSER ON DUPLICATE KEY
INSERT IGNORE

13 de septiembre de 2010

flat-fileSQL


flat-fileSQL script en php que permite crear y usar un fichero .csv como si fuera una base de datos MySQL, permitiendo busquedas y mucahas funcionaleidades SQL.

TRas descargar y descrompimir la ultima version de flat-fileSQL solo se necesita el fichero fSQL.php,

- Para usarlo en nuestros scripts php hay que usar incluir en le código:
requiere_once("fSQL.php");

Interesante para hacer bases de datos portatiles, v.g. en memorias USB que funcionen en maquinas sin MySQL

Ref.:
flatSQL tutorial

5 de septiembre de 2010

Preguntando, input, prompt, con php

En php la forma habitual de preguntar al usuario humano son los formularios, pero en muchos casos se necesita obtener un dató rápido del usuario en modo texto.
Se puede usar fgets(STDIN)
#!/usr/bin/php
<?php
print "\n Teclea algo: ";
$algo = trim(fgets(STDIN));
print "\n has tecleado: $algo\n";
?>

Ref.:
http://www.ehow.com/how_5321606_prompt-line-interface-using-php.html

17 de agosto de 2010

Cortar archivos con split


Pues resulta que en un script php he intentado pasar un archivo de texto a un array con el comando file( ) y el archivo es algo grande ya que tiene unos 19MB y unas 100.000 lineas. De modo que me ha salido un error al ejecutar el script:

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 16 bytes) in /home/pp/globalWebSpider/gws-mantenimiento_spider01/60-z5log-no_mysql_saved-recuperator.php on line 85

Una solucción es cortar el archivo en otros más pequeños:
Para esto esta split:
- Que corta archivos en otros mas pequeños de un tamaño deternimado:

#split -b(tamaño) archivo.grande archivo.
archivos resultantes:
archivo.aa
archivo.ab
archivo.ac
etc...
-Pero en mi caso al ser un archivo de texto es mejor cortarlos en archivitos de un determinano número de lineas, ... digamos 10000 y con la extensión numérica:

#split -d -10000 archivo.grande archivo.
archivos resultantes:
archivo.01
archivo.02
archivo.03
etc...
Ref.: http://linuxmanpages.com/man1/split.1.php

16 de agosto de 2010

Codificar y decodificar caracteres html con php


Los caracteres especiales del código html pueden ser un problema al manejarlos en programación, variables, SQL y por la inyección de código malicioso.

En php estos caraceres se pueden codificar con: htmlspecialchars( )
y luego reponerse con: htmlspecialchars_decode( )
dejando de ser un problema.

Hacking webs con Google Gruyere


Gruyere es una wiki de métodos hacking a paginas web y la posibilidad de probarlos en un sevidor adhod de Google.

http://google-gruyere.appspot.com/

14 de agosto de 2010

Reconocimiento de imagenes en linux

Para el reconocimiento de imagenes he encontrado dos aplicacones interesantes:

# compare de ImageMagick http://www.rpublica.net/imagemagick/index.html
# libpuzzle-php

Decimales en MySQL

DECIMAL(M,D)

M: nº total de digitos
D: nº de decimales

Por ejemplo:
0,123456 DECIMAL(7,6)
123,4567 DECIMAL(7,4)

El maximo que podemos asignar a M y D es 65.
Si hay mas decimales que los asignados trunca el dato.

Ref.: http://dev.mysql.com/doc/refman/5.1/en/numeric-types.html