Antón María Rodríguez Yuste

 
 
 
  • About

    Consultor orientado al sector TELCO (eTOM, SID), dirección de proyectos (scrum) y sistemas (Oracle, Weblogic, Jboss, Solaris, etc.). Un poco de todo, vamos.

  • Varios

Sindicación


Licencia


Validación



Sistemas






Varios

 
Wordpress: temas y plugins December 16th, 2005

Creo que este magnífico proyecto llamado wordpress se merece una entrada. Desde que me cambié estoy contentisimo con él. Es fácil y versátil. Lo que estaba buscando.

Como podeís observar ya no está el tema por defecto. En su lugar este me ha parecido mucho mejor y más apropiado. A fin de cuentas solo posteo mis apuntes aquí. El tema se llama notebook y lo encontré navegando por aquí. Otro tema que he usado es Yaaarr, tis me blog!, pero este lo he usado para otro proyecto.

Veamos ahora los plugins:

iG:Syntax Hiliter
Este me permite colorear el código y todas esas cosas que aparecen cuando pongo algún script en la web. Sinceramente, muy útil para un weblog como este.

Witty Text
Permite poner texto aleatorio. Lo usaba antes con un fichero con citas de los Simpsons pero le restaba seriedad a la web y conducía a posibles malinterpretaciones.

WP-ContactForm
Es la sección de contacto. A traves de ella podeis mandarme un mail. Muy útil para ahorrarme spam innecesario.

WeatherIcon
Muestra distintos parámetros meteorologicos de tu ciudad. Se puede ver funcionando en este estupendo blog.

WP-Dash
Es una modificación del panel de control del wordpress. Está bien, pero la verdad, puedo vivir sin él.

SH-Autolink
Sencillo plugin que hace que cualquier palabra posteada se sustituya por un link a la página que le indiques. Siempre me ha gustado, sobretodo cuando es hacia la wikipedia.

Simple Search and Replace
Busca lo que quieras y lo sustituye por lo que quieras en todo el blog. Aún lo probé.

Automatizando procesos web I December 16th, 2005

La idea es realizar determinadas acciones en una web a través de un cron, es decir, sin tener que acceder a ella. Típicos usos serían registrar la friolera de 100000 usuarios en una página web. Como estos hechos me parecen despreciables no voy a poner nada concreto. Sólo daré pistas para el que realmente lo necesite ( autovotarse en un ranking de blogs, etc.. )

Tenemos el siguiente archivo php:

prueba.php

PHP:
  1.  
  2. <html>
  3. <head>
  4.    <title>Ejemplo de PHP</title>
  5. </head>
  6. <body>
  7. <h1>Ejemplo de procesado de formularios</h1>
  8.  
  9. <?php
  10. if ($_POST['nombre'] != "") {
  11.  
  12. echo "El nombre que ha introducido por POST es:".$_POST['nombre']."<br>";
  13. echo "El apellido que ha introducido por POST es:".$_POST['apellido']."<br />";
  14.  
  15.  
  16. }else{
  17. ?>
  18.  
  19. <form ACTION="prueba.php" METHOD="POST">
  20. Introduzca su nombre:<input TYPE="text" NAME="nombre"/><br />
  21. Introduzca su apellilo:<input TYPE="text" NAME="apellido"/><br />
  22. <input TYPE="submit" VALUE="Enviar"/>
  23. </form>
  24.  
  25. <?php
  26. }
  27. ?>
  28. </body>
  29.  

Como se puede observar, solo pilla el valor de una variable por post y la saca por pantalla. Vale, supongamos ahora que queremos acceder siempre con la misma variable ( por ejemplo para autentificarnos automáticamente ).

Podríamos usar algo así:

CODE:
  1.  
  2. #!/bin/bash
  3.  
  4. URL="http://anton.r-yuste.com/pruebas/prueba.php"
  5. nombre="anton"
  6. apellido="rodriguez"
  7.  
  8. # Solo root para comprobar que realmente hay red
  9. #i=0
  10. #until ifconfig eth1 | grep -q "inet addr:" || [ "$i" -gt "20" ]; do
  11. #    i=$(($i+1))
  12. #    sleep 1
  13. #done
  14.  
  15. # Timed out
  16. #[ "$i" -gt "20" ] && exit 1
  17.  
  18. if echo "nombre=$nombre&apellido=$apellido&--" | lynx -post_data -accept_all_co\
  19. okies "$URL"; then
  20.     exit 0
  21. else
  22.     exit 1
  23. fi
  24.  

Como se puede observar.. ¡¡funciona!!. El próximo día intentaremos complicarlo un poco mas ;)

Cierre del navegador December 15th, 2005

Vamos a detectar el cierre del navegador, para ello usaremos algo como:

HTML:
  1.  
  2.  
  3. <title> probando </title>
  4. </head>
  5.  
  6. <body onunload="javascript:alert('salida');" onload="javascript:alert('entrada')">
  7. Ejemplo de prueba de cierre del navegador
  8. </body>
  9. </html>
  10.  

Correcto, funciona. ¿Y que pasa si lo que queremos es que en el cierre del navegador se inserte un registro en la base de datos? Pués que probablemente no funcione por qué el navegador se cierra antes de que de tiempo de producirse el registro.

Para esto, se me ocurren dos soluciones a voz de pronto.

1) Abrir una ventana popup que ponga algo en plan: "Cerrando sesión", inserte el registro y se cierre. Problema potencial: que la bloqueé un anti-popups.
2) Si la ventana que se cierra viene de otra, hacer que sea la que la ha abierto la que inserte el registro cuando detecte que se ha cerrado su "hija".

Veamos la segunda:

abre.html

HTML:
  1.  
  2.  
  3. <title> Pagina que abre </title>
  4. </head>
  5.  
  6.  
  7. <a href="javascript:window.open('prueba.html');">Abrir pagina de prueba</a>
  8.  
  9. </body>
  10. </html>
  11.  

prueba.html

HTML:
  1.  
  2. <title> probando </title>
  3. </head>
  4.  
  5. <body onunload="javascript:parent.opener.location='cierre.asp';" onload="javascript:parent.opener.location='apertura.asp'">
  6. Ejemplo de prueba de cierre del navegador
  7. </body>
  8. </html>
  9.  

cierre.asp

ASP:
  1.  
  2. <%
  3. response.write "Pagina prueba cerrada"
  4. %>
  5.  

encabezado.asp

ASP:
  1.  
  2. <%
  3. response.write "Pagina prueba cerrada"
  4. %>
  5.  

La primera forma la dejo como ejercicio para el lector ;)

pcmcia para kernel 2.6 December 4th, 2005

El otro día se me dio por probar suspend2. La idea no apagar el portátil nunca más. Suspenderlo y reanimarlo con la ventaja en tiempo que ello conlleva. Para ello me bajé la última versión del kernel 2.6.14.3 y me pusé a recompilar copiando mi antiguo .config y aplicando algunos de los parches que me veo obligado a utilizar ( problemas de acpi y mi dsdt, low transfer en sis900 ).

Al final en el suspend2 no pudo ser. Parece ser que lo suspenderse cuando usas el driver propietario de Nvidia no le gusta nada y no hubo forma de hacerlo. Quizá más adelante evolucioné el proyecto y lo consigan pero a día de hoy no creo que se pueda hacer con mi tarjeta de video.

El caso es que pasar del kernel 2.6.9 a este me ha traido varios cambios. En primer lugar con la opción GLX de mi xorg.conf, que tuvé que desactivar. Como no lo uso tampoco le dí mucha importancia y ya miraré que narices pasó. Pero sobretodo, que el soporte pcmcia dejó de funcionarme. Luego de buscar un poco me encontré con esto y a ello me puse. Primero recompilé el kernel con las opciones de PCMCIA activadas como modulos. Efectivamente, una vez reiniciado, y al ejecutar:

/etc/init.d/pcmcia start

ya no me arrojaba error. Sin embargo al enchufar el lector de tarjetas PCMCIA-CF el dmesg arrojaba esto:


Yenta: CardBus bridge found at 0000:00:0a.0 [1025:0028]
Yenta O2: res at 0x94/0xD4: 00/ca
Yenta O2: enabling read prefetch/write burst
Yenta: ISA IRQ mask 0x0cb8, PCI irq 16
Socket status: 30000811
pcmcia: Detected deprecated PCMCIA ioctl usage.
pcmcia: This interface will soon be removed from the kernel; please expect breakage unless you upgrade to new tools.
pcmcia: see http://www.kernel.org/pub/linux/utils/kernel/pcmcia/pcmcia.html for details.
cs: IO port probe 0x100-0x4ff: excluding 0x1c0-0x1cf 0x378-0x37f 0x3f8-0x3ff 0x480-0x48f 0x4d0-0x4d7
cs: IO port probe 0x800-0x8ff: clean.
cs: IO port probe 0xc00-0xcff: clean.
cs: IO port probe 0xa00-0xaff: clean.
cs: memory probe 0xa0000000-0xa0ffffff: clean.

Lo que hicé fue:


apt-get install sysfsutils
apt-get install libsysfs-dev
apt-get install byacc flex
wget http://www.kernel.org/pub/linux/utils/kernel/pcmcia/pcmciautils-010.tar.gz
tar -zxvf pcmciautils-010.tar.gz
cd pcmciautils-010
make
make install
mv /etc/init.d/pcmcia ~

Aun con todo esto no fuí capaz de arrancar la dichosa PCMCIA. Voy a optar por pasar a la versión del kernel anterior que realmente me funcionaba mucho mejor. Aún así dejo el post por si le resultará a alguien útil.

sudo December 1st, 2005

Vamos a permitir a ciertos usuarios de mi sistema ejecutar algunos comandos como root. Esto me evitará tener que meter la password de root para dar de alta la red en el sistema ( lo hago mediante un script en bash propio al que voy agregando las redes nuevas que me voy encontrando ).


apt-get install sudo
emacs /etc/sudoers

Y añadi una linea tal que:


anton ALL=(root) NOPASSWD: /usr/bin/red.sh

Que le permitirá al usuario anton ejecutar el script red.sh como root.

Ni que decir tiene que esto no es del todo recomendable desde el punto de la seguridad ( en cualquier caso deberíamos permitir al usuario usar ifconfig, route.. pero no un script editable por él). En mi caso es para el portátil y me prima más la comodidad que la seguridad pero en el servidor no lo haría así.

Más info aquí