jueves, 23 de junio de 2011

SELinux, RHEL y cosas extrañas...

Últimamente entre reuniones de proyectos y coordinación apenas tengo tiempo para ponerme con temas de administración de sistemas, aún así, le sigo dedicando tiempo.
El caso es que he finalizado la fase de desarrollo de un sitio web con Drupal 7 y quería subirlo al servidor de producción. Todo iba como la seda hasta que al levantar el vhost me encuentro con :
[root@XXX httpd]# /etc/init.d/httpd restart
Parando httpd: [ OK ]
Iniciando httpd: Warning: DocumentRoot [/var/www/html/biblioteca] does not exist
Warning: DocumentRoot [/var/www/html/moodle-testing20/moodle] does not exist
[ OK ]


¡DocumentRoot does not exist! Imposible, pensé. Al final, después de darle muchas vueltas leí en este post que podría ser que SELinux impidiese añadir directorios. Basta con añadirlo al contexto de SE y listo:
chcon -R system_u:object_r:httpd_sys_content_t /var/www/html/biblioteca

martes, 21 de junio de 2011

logwatch

La próxima semana voy a impartir un curso de Drupal en Lugo, de 16:30 a 20:30 de Lunes a Viernes y el Sábado día 2 de 10:00 a 13:30.

El primer día lo dedicaré completo a conocer el entorno de trabajo, desde VirtualBox hasta PHPMyAdmin y demás.

El servidor web que utilizaremos será Apache2, como suele ser habitual en este tipo de cursos express. Veremos temas básicos, desde la instalación a la configuración de virtual hosts y como no, también algo de seguridad, que nunca está de más. Repasando apps interesantes me he topado con logwatch, que para los que no lo conocéis es un script en Perl que facilita la visualización amigable de logs. La instalación es vía apt y lo único de debemos hacer para que muestre información en la consola es copia el fichero de ejemplo a /etc/logwatch:
cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/

Es posible configurar los reportes para que se envíen vía email y demás, pero esto lo dejamos para otro momento. Ahí os va la salida de logwatch directamente en la consola:
################### Logwatch 7.3.6 (05/19/07) ####################
Processing Initiated: Tue Jun 21 08:51:10 2011
Date Range Processed: yesterday
( 2011-Jun-20 )
Period is day.
Detail Level of Output: 0
Type of Output/Format: stdout / text
Logfiles for Host: creba
##################################################################
--------------------- dpkg status changes Begin ------------------------

Installed:
libconfig-inifiles-perl 2.52-1
mytop 1.6-6
---------------------- dpkg status changes End -------------------------

--------------------- httpd Begin ------------------------

Requests with error response codes
404 Not Found
/calendar/view.php?view=month&cal_d=1&cal_m=12&cal_y=2037: 1 Time(s)
/calendar/view.php?view=month&cal_d=1&cal_m=3&cal_y=2030: 1 Time(s)
/calendar/view.php?view=month&cal_d=1&cal_m=6&cal_y=1925: 1 Time(s)
http://98.126.15.13/proxyheader.php: 1 Time(s)
http://healthforcaring.com/proxyheader.php: 3 Time(s)
http://www.ezhealths.com/proxyheader.php: 1 Time(s)
http://www.hardjob.net/proxyheader.php: 2 Time(s)


lunes, 13 de junio de 2011

Charla "Introducción ao software libre - O Grove 2011"

El pasado 6 de Mayo tuve la oportunidad de "evangelizar" en O Grove. Os dejo la presentación por si os interesa.



domingo, 24 de abril de 2011

Charla Drupal Xornadas Inestable Ordes

El pasado Jueves 21 tuve la oportunidad de dar una ponencia de introducción a Drupal en el marco de las VIII Xornadas de Software Libre de Ordes, organizadas por Inestable. Lo que en un principio se concretó para una charla de 90 minutos superó las dos horas y media, buena o mala señal la verdad es que no lo sé, pero sí pude comprobar cómo Drupal y el desarrollo web con CMSs interesa al público asistente a este tipo de eventos.

Desde aquí quiero agradecer la amabilidad de Nika, Salva, los demás miembros de Inestable y todos los asistentes al evento. ¡Seguid así amigos!

Si os interesa la presentación, como suele ser habitual, la he subido a mi rincón de Slideshare:

Obradoiro Drupal
Ver todas las presentaciones de Alberto Permuy Leal

La verdad es que el tema Drupal en Galicia, actualmente me tiene un poco abrumado. Hay mucho interés, y me da la impresión de que después de la II Noite Drupal & GNU/Linux esto va a ir a más. Estamos organizando la segunda, y ya nos han ofrecido colaboración para la III. No soy ni pretendo ser un gurú del tema. Me interesa Drupal por que reconozco que es software de calidad, y lo más importante : es libre.

Salud!

martes, 19 de abril de 2011

Exportar consulta MySQL a CSV desde Python

A modo de apunte dejo un pequeño script en Python para exportar una consulta MySQL a CSV. Estoy bastante liado con un pequeño proyecto relacionado con Moodle y Drupal. El caso es que NO se puede tocar NADA del Moodle y los mismos usuarios de Moodle deben tener acceso a Drupal. He dedicado tiempo a buscar un módulo que permita cambiar el modo de validación de Drupal, pero no he encontrado apenas información. No, no me vale el MoodleSSO.


#!/usr/bin/python
#-*- coding: UTF-8 -*
import _mysql
mysql_servidor = 'localhost'
mysql_usuario = 'user'
mysql_clave = 'ejemplo'
mysql_bd = 'moodle'
conexion = _mysql.connect(host=mysql_servidor, user=mysql_usuario, passwd=mysql_clave, db=mysql_bd)
sql = "SELECT username,password,email INTO OUTFILE '/tmp/drupal_export.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\\\\' FROM mdl_user "
conexion.query(sql)
conexion.close()

martes, 12 de abril de 2011

apt y cacheo de paquetes



Preparando la "I Noite Drupal & GNU/Linux " que celebraremos en Mugardos este próximo Viernes día 15 de Abril me ha surgido una duda que sinceramente sí había visto en alguna ocasión pero no recordaba el "tip" para solucionarla. ¿Cómo le indico a apt que "tiene que salir" por un proxy? Por lo que he visto podemos hacerlos dos modos.

Modo 1: El chapucero.

Añadimos al fichero /etc/bash.bashrc lo siguiente:

export http_proxy=”http://proxy.noite.drupal:3128”
export ftp_proxy=”http://proxy.noite.drupal:3128”


Modo 2: El modo "pro".

Creamos el fichero /etc/apt/apt.conf.d/proxy con el siguiente contenido.

Acquire::http::Proxy "http://proxy.noite.drupal:3128/";
Acquire::ftp::Proxy "http://proxy.noite.drupal:3128/";


Particularmente me decanto por la opción dos por un motivo fundamental. En el modo 1 optamos por definir dos variables de entorno, estando estas disponibles para cualquier script o aplicación que lo necesite. En la opción 2 sólo indicamos a APT que debe salir por un proxy.

Rizando el rizo, he visto que en lo repositorios de Debian GNU/Linux existe una aplicación que se llama apt-cacher, que en resumidas cuentas viese a ser un proxy para apt. No voy a tocar nada más de este tema, si os interesa en el blog de Alberto Molina se explica muy bien el funcionamiento básico de la aplicación apt-cacher.

sábado, 9 de abril de 2011

Remake: Unixbench

Preparando el servidor OpenVZ para la "I Noite Drupal & GNU/Linux" de Mugardos he encontrado una perla en Google Code: UnixBench. El objetivo de la aplicación es muy claro: ser un indicador de rendimiento para sistemas operativos basados en Unix partiendo de los resultados base de un SPARCstation 20-60(valor 10,0)

Entre los múltiples tests realizados destacan:
.- Dhrystone : Prueba de manejo de cadenas(sin coma flotante :P)
.- Whetstone: Mide la velocidad y efiencia de las operaciones con coma flotante.
.- Execl Throughput : mide la velocidad a la cual los datos pueden ser transferidos de un archivo a otro, con diferentes tamaños de búfer.

Un consejo. No es un test rápido. En un AMD Athlon(tm) 64 X2 Dual Core Processor 4800+ con frecuencia de 2,5ghz y 8GB de RAM el test necesitó más de 40 minutos para finalizar y mostrar resultados.
Para curiosos, geek y demás fauna, ahí van los resultados:



Version 5.1.3 Based on the Byte Magazine Unix Benchmark

Multi-CPU version Version 5 revisions by Ian Smith,
Sunnyvale, CA, USA
January 13, 2011 johantheghost at yahoo period com


1 x Dhrystone 2 using register variables 1 2 3 4 5 6 7 8 9 10

1 x Double-Precision Whetstone 1 2 3 4 5 6 7 8 9 10

1 x Execl Throughput 1 2 3

1 x File Copy 1024 bufsize 2000 maxblocks 1 2 3

1 x File Copy 256 bufsize 500 maxblocks 1 2 3

1 x File Copy 4096 bufsize 8000 maxblocks 1 2 3

1 x Pipe Throughput 1 2 3 4 5 6 7 8 9 10

1 x Pipe-based Context Switching 1 2 3 4 5 6 7 8 9 10

1 x Process Creation 1 2 3

1 x System Call Overhead 1 2 3 4 5 6 7 8 9 10

1 x Shell Scripts (1 concurrent) 1 2 3

1 x Shell Scripts (8 concurrent) 1 2 3

2 x Dhrystone 2 using register variables 1 2 3 4 5 6 7 8 9 10

2 x Double-Precision Whetstone 1 2 3 4 5 6 7 8 9 10

2 x Execl Throughput 1 2 3

2 x File Copy 1024 bufsize 2000 maxblocks 1 2 3

2 x File Copy 256 bufsize 500 maxblocks 1 2 3

2 x File Copy 4096 bufsize 8000 maxblocks 1 2 3

2 x Pipe Throughput 1 2 3 4 5 6 7 8 9 10

2 x Pipe-based Context Switching 1 2 3 4 5 6 7 8 9 10

2 x Process Creation 1 2 3

2 x System Call Overhead 1 2 3 4 5 6 7 8 9 10

2 x Shell Scripts (1 concurrent) 1 2 3

2 x Shell Scripts (8 concurrent) 1 2 3

========================================================================
BYTE UNIX Benchmarks (Version 5.1.3)

System: polinico: GNU/Linux
OS: GNU/Linux -- 2.6.32-5-openvz-amd64 -- #1 SMP Mon Mar 7 22:25:57 UTC 2011
Machine: x86_64 (unknown)
Language: en_US.utf8 (charmap="ANSI_X3.4-1968", collate="ANSI_X3.4-1968")
CPU 0: AMD Athlon(tm) 64 X2 Dual Core Processor 4800+ (2009.1 bogomips)
Hyper-Threading, x86-64, MMX, AMD MMX, Physical Address Ext, SYSENTER/SYSEXIT, AMD virtualization, SYSCALL/SYSRET
CPU 1: AMD Athlon(tm) 64 X2 Dual Core Processor 4800+ (2009.1 bogomips)
Hyper-Threading, x86-64, MMX, AMD MMX, Physical Address Ext, SYSENTER/SYSEXIT, AMD virtualization, SYSCALL/SYSRET
18:09:05 up 1:48, 3 users, load average: 0.25, 0.30, 0.23; runlevel 2

------------------------------------------------------------------------
Benchmark Run: sáb abr 09 2011 18:09:05 - 18:38:11
2 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables 18476798.9 lps (10.0 s, 7 samples)
Double-Precision Whetstone 2613.2 MWIPS (9.9 s, 7 samples)
Execl Throughput 1260.8 lps (29.6 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 308577.4 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 100308.1 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 697625.5 KBps (30.0 s, 2 samples)
Pipe Throughput 987893.9 lps (10.0 s, 7 samples)
Pipe-based Context Switching 102266.6 lps (10.0 s, 7 samples)
Process Creation 3968.2 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 2277.5 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 804.0 lpm (60.0 s, 2 samples)
System Call Overhead 2051427.4 lps (10.0 s, 7 samples)

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 18476798.9 1583.3
Double-Precision Whetstone 55.0 2613.2 475.1
Execl Throughput 43.0 1260.8 293.2
File Copy 1024 bufsize 2000 maxblocks 3960.0 308577.4 779.2
File Copy 256 bufsize 500 maxblocks 1655.0 100308.1 606.1
File Copy 4096 bufsize 8000 maxblocks 5800.0 697625.5 1202.8
Pipe Throughput 12440.0 987893.9 794.1
Pipe-based Context Switching 4000.0 102266.6 255.7
Process Creation 126.0 3968.2 314.9
Shell Scripts (1 concurrent) 42.4 2277.5 537.2
Shell Scripts (8 concurrent) 6.0 804.0 1340.0
System Call Overhead 15000.0 2051427.4 1367.6
========
System Benchmarks Index Score 667.9

------------------------------------------------------------------------
Benchmark Run: sáb abr 09 2011 18:38:11 - 19:07:26
2 CPUs in system; running 2 parallel copies of tests

Dhrystone 2 using register variables 36832151.8 lps (10.0 s, 7 samples)
Double-Precision Whetstone 5246.4 MWIPS (9.9 s, 7 samples)
Execl Throughput 3706.6 lps (29.6 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 402547.4 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 121746.1 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 911624.0 KBps (30.0 s, 2 samples)
Pipe Throughput 1990029.1 lps (10.0 s, 7 samples)
Pipe-based Context Switching 437120.2 lps (10.0 s, 7 samples)
Process Creation 10823.0 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 6206.0 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 809.3 lpm (60.1 s, 2 samples)
System Call Overhead 2618061.3 lps (10.0 s, 7 samples)

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 36832151.8 3156.1
Double-Precision Whetstone 55.0 5246.4 953.9
Execl Throughput 43.0 3706.6 862.0
File Copy 1024 bufsize 2000 maxblocks 3960.0 402547.4 1016.5
File Copy 256 bufsize 500 maxblocks 1655.0 121746.1 735.6
File Copy 4096 bufsize 8000 maxblocks 5800.0 911624.0 1571.8
Pipe Throughput 12440.0 1990029.1 1599.7
Pipe-based Context Switching 4000.0 437120.2 1092.8
Process Creation 126.0 10823.0 859.0
Shell Scripts (1 concurrent) 42.4 6206.0 1463.7
Shell Scripts (8 concurrent) 6.0 809.3 1348.9
System Call Overhead 15000.0 2618061.3 1745.4
========
System Benchmarks Index Score 1258.5

miércoles, 6 de abril de 2011

Sobre Memcached, Apache2 y Drupal



Llega un momento en la vida de un sitio web levantado con Drupal(este es mi caso) en que, bien por el número de visitas o por la complejidad de las consultas, se hace necesario instalar y configurar un sistema de cacheo de contenido que agilice el proceso de envío de información.

No voy a entrar en que si proxy inverso, APC o mil gaitas, sólo trataré el proceso de instalación y configuración de memcache ejecutado en una máquina corriendo Debian GNU/Linux 6.0 Squeeze y Apache2 un sitio web con Drupal 6. Comenzamos descargando y activando el módulo "Memcache API and Integration" del sitio drupal.org.

A continuación, lo primero que debemos hacer es actualizar las fuentes de nuestra distribución Debian GNU/Linux:
[root@localhost] aptitude update

Una vez finalizado el proceso instalaremos dos paquetes:
  • memcached: "daemon" o servicio de cacheo diseñado específicamente para que los sitios web dinámicos decrementen la carga de las bases de datos almacenados objetos en memoria. Danga Interactive desarrolló memcached para mejorar la velocidad de LiveJournal.com un sitio que tuvo más de 20 millones de vistas de páginas dinámicas cada día para 1 millón de usuarios con un puñado de servidores web y un puñado de servidores de base de datos. memcached reduce la carga de la base de datos a casi nada, mejorando los tiempos de carga de las páginas para los usuarios, la utilización de los recursos y haciendo más rápido el acceso a las bases de datos.
  • php5-memcache y php5-memcached: Extensión que permite a las aplicaciones escritas en PHP5 comunicarse con los servidores memcache.
Como (casi) siempre en Debian GNU/Linux:
[root@localhost] aptitude -y install php5-memcached php5-memcache memcached

Si este paso se ha ejecutado correctamente debemos configurar qué tipo de estrategia hash utilizará memcache para manejar los objetos de la caché. Dos opciones : standard o consistency. Por lo que leído la tendencia es utilizar esta última, ya que si estamos trabajando con varios servidores memcache evitaríamos problemas al tener que compartir una misma instancia de ejecución de PHP-Apache2. Resumiendo:

Añadimos:

memcache.hash_strategy="consistent"
al fichero /etc/php5/apache2/php.ini.

Modificamos el fichero settings.php de nuestro sitio Drupal y añadimos:


$conf = array(
// The path to wherever memcache.inc is. The easiest is to simply point it
// to the copy in your module's directory.
'cache_inc' => './sites/default/modules/memcache/memcache.inc',

'memcache_servers' => array(
'localhost:11211' => 'default',
'localhost:11212' => 'content',
'localhost:11213' => 'filter',
'localhost:11214' => 'menu',
'localhost:11215' => 'page',
'localhost:11216' => 'views',
),
'memcache_bins' => array(
'cache' => 'default',
'cache_content' => 'content',
'cache_filter' => 'filter',
'cache_menu' => 'menu',
'cache_page' => 'page',
'cache_views' => 'views',
),

Lo realmente curioso de esta configuración para Drupal6, o por lo menos a mi llama mucho la atención, es la posibilidad de dedicar distintas máquinas a diferentes objetos de cache: views, menús...Intentaré darle una vuelta a este tema.
Para finalizar, he visto en este blog, que hay gente que reemplaza el fichero /etc/init.d/memcached por un con contenido similar a este:




#!/bin/bash
prog="memcached"
start() {
echo -n $"Starting $prog "
# Sessions cache.
memcached -m 16 -l 0.0.0.0 -p 11211 -d -u nobody
# Default cache.
memcached -m 32 -l 0.0.0.0 -p 11212 -d -u nobody
# Block cache.
memcached -m 32 -l 0.0.0.0 -p 11213 -d -u nobody
# Content cache. Holds fully loaded content type structures.
memcached -m 16 -l 0.0.0.0 -p 11214 -d -u nobody
# Filter cache. Usually the busiest cache after the default.
memcached -m 32 -l 0.0.0.0 -p 11215 -d -u nobody
# Form cache.
memcached -m 32 -l 0.0.0.0 -p 11216 -d -u nobody
# Menu cache.
memcached -m 32 -l 0.0.0.0 -p 11217 -d -u nobody
# Page cache. Bigger than most other caches.
memcached -m 128 -l 0.0.0.0 -p 11218 -d -u nobody
# Views definition cache.
memcached -m 1 -l 0.0.0.0 -p 11219 -d -u nobody
# Views data cache (may need to be increased if heavily used).
memcached -m 32 -l 0.0.0.0 -p 11220 -d -u nobody

# More caches that might be added later:
# Users table.
#/usr/bin/memcached -m 24 -l 0.0.0.0 -p 11219 -d -u nobody
# Path source cache.
#/usr/bin/memcached -m 4 -l 0.0.0.0 -p 11220 -d -u nobody
# Path destination cache.
#/usr/bin/memcached -m 6 -l 0.0.0.0 -p 11221 -d -u nobody
RETVAL=$?
echo
return $RETVAL
}

stop() {
if test "x`pidof memcached`" != x; then
echo -n $"Stopping $prog "
killall memcached
echo
fi
RETVAL=$?
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;

restart)
stop
start
;;
condrestart)
if test "x`pidof memcached`" != x; then
stop
start
fi
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart}"
exit 1
esac

¿Por que digo similar? Pues muy sencillo, basta con teclear:
memcached -h
y observar todos los parámetros de configuración que acepta en la línea de comandos. En mi opinión se debe tener especial cuidado a la hora de manejar la cantidad de memoria máxima a utilizar, el protocolo de escucha, el número máximo de conexiones simultáneas. 






[ Memcache funcionando en Drupal 6 ]


I'm back



He vuelto. Después de más de 1 mes sin aportar nada a este blog confirmo que sigo vivo. Por motivos de trabajo, asociación y personales apenas he tenido tiempo para escribir. Tengo varios apuntes que trasladar aquí, intentaré hacer lo más rápido posible.
Saludos y gracias por leerme!

lunes, 21 de febrero de 2011

Parsear XML con Python



Desde hace unas semanas estoy leyendo, estudiando y practicando Python. Es un lenguaje tan apasionante como interesante. En pocos días, me atrevería a decir que incluso horas, con unos conocimientos básicos de programación, puedes crear verdaderas maravillas pythonianas.
El caso es en la Asociación Comunidade O Zulo , hemos puesto en marcha un proyecto para customizar una distribución Ubuntu Linux y completarla con material multimedia. Para realización las aportaciones multimedia de este proyecto, todavía un embrión pero os adelanto que tiene muy buena pinta, hemos levantado un sitio web en Drupal dónde los usuarios podrán enviar las imágenes. [Explicación técnica que omito para no aburrir al personal] Para recuperar las imágenes estamos desarrollando un script en Python que lee el XML y vía SQLite completa un álbum en Shotwell. El script básico para parsear el XML es el siguiente:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# xml-parser-ozulo-0.0.1-dev.py
#
# Copyright 2011 Alberto Permuy Leal
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301, USA.
import sys, urllib
from xml.etree import ElementTree as et


def main():
documento = et.parse(urllib.urlopen('http://www.comunidadeozulo.org/rss.xml')).getroot()
entradas = documento.getiterator('item')
for una_entrada in entradas:
elementos = una_entrada.getiterator()
for un_elemento in elementos:
if un_elemento.tag == 'title':
print un_elemento.text
return 0

if __name__ == '__main__':
main()

Es casi idéntico a esta entrada, salvo que he añadido el parse vía urllib.

martes, 8 de febrero de 2011

Validar formato IPv4 con bash

#!/bin/bash
test $(echo $1 | egrep '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$')
if [ $? == 0 ]; then
echo "Ip correcta"
else
echo "Ip no válida"
fi
A modo de minichuleta, dejo por aquí este sencillo script en bash para comprobar si el formato de una IPv4 que se pasa como parámetro al script es correcto o no.

lunes, 7 de febrero de 2011

Debian 6.0 ¡Cómo pasa el tiempo!



Recuerdo la primera vez que escuché hablar de Debian GNU/Linux. Un tal Carlos, me comentaba que no perdiese el tiempo con RedHat, mientras me "dejaba" tres CDs con Debian Potato 2.2 terminando el año 2000. Con sólo un año de experiencia en GNU/Linux, la primera vez que me puse a instalar Debian GNU/Linux creí conocer de cerca el infierno.

Recuerdo que en 2003 y cuando aún por aquel entonces usaba como distribución de escritorio SuSE Linux, un chico que realizaba las prácticas en la misma empresa que yo por aquel entonces, llegaba con 7CDs de Debian Woody. Luego llegarían Sarge, Etch, Lenny y ahora Squeeze.

Cada release de Debian GNU/Linux, a mi entender debe ser celebrada, como mínimo tanto como un título de cualquier equipo de fútbol o selección que se precie. Es un esfuerzo de miles de personas que trabajan por y para la comunidad. No voy a soltar ahora mismo la clásica chapa acerca del software libre y las bondades de Debian GNU/Linux. Mi particular celebración para esta versión 6.0 es citar los aspectos que me han resultado, cuando menos, curiosos en relación con otras versiones.

  • Han renovado el aspecto de www.debian.org. Todo hay que decir, que si bien la versión anterior y la actual no difieren mucho, esta última si está mejor estructurada y por lo menos, a primera vista, no parece que te encuentras preso de un flashback a los '90.
  • Debian Social. Impresionante el seguimiento desde Twitter e Identi.ca de todos los twitteros linuxeros. Para muestra, un botón.
  • ¿Ha sido la release menos mediática? Es posible, lo respeto pero no lo comparto. Leo en ZDNet que sí, que quizá el asentamiento de Ubuntu como distro más amigable a desplazado al ostracismo a Debian GNU/Linux. A lo mejor soy un bicho raro, pero cuando me hablan de Ubuntu, mis pensamientos siempre pasan o se dirigen a Debian GNU/Linux.
  • GNU/kFreeBSD. Es la primera release que tiene una versión sin un núcleo Linux. ¡ Muy buena noticia!
  • Núcleo Linux completamente libre. Cito directamente de Debian.org "Otra novedad es el núcleo de Linux completamente libre. En esta versión el núcleo ya no contiene archivos problemáticos de firmware. Estos se han dividido en paquetes separados y se han movido fuera del archivo principal de Debian al área no libre («non-free») del archivo, la cual no está activada de manera predeterminada".
Quizá no haya sido la versión más mediática, pero, estimados lectores, el reconocer el gran trabajo y enorme esfuerzo de la comunidad Debian para release de Squeeze, es cuando menos, digno de elogio. Por lo me que a mi respecta, como siempre que la decisión sobre el SSOO y arquitectura dependan de mi criterio: siempre Debian GNU/Linux.¡Enhorabuena a toda la comunidad!

martes, 1 de febrero de 2011

Firmware WRT54G v7


Desde hace algunos años(2005) usos productos Linksys. Tengo dos WRT54G, uno v1 y otro v7. Alguna tarjeta PCI Wireless, otra USB, y creo recordar que algún AP por ahí perdido. Me gusta por la relación calidad precio y por que Cisco Systems está por detrás.


El caso es que el ModemRouter de R(proveedor de fibra para Galicia(España)) es una auténtica patata. Es un Scientific Altanta 217893036 .¿Por qué es una patata?
  • La interfaz web es de los 90, poco intuitiva y muy cutre.
  • Ayer quise jugar con RIP y nada, no soporta protocolos de enrutamiento.
  • Se cuelga. Misteriosamente después de unos 30 minutos el "cacharro" se queda colgado y tienes que reiniciarlo.
Si desactivas la interfaz wireless del aparato funciona como la seda. Conclusión: instalar el WRT54G v7 en el piso de arriba. De momento estoy probando con dos redes wireless, una para cada piso. El motivo de este post no deja de ser curioso. Después de estar un tiempo sin usar un cacharrito de este tipo, me gusta actualizar el firmware, ya que siempre suelen corregir bugs y añaden alguna que otra funcionalidad. El caso es que este modelo, dejando a un lado que no se le puede instalar el DDWRT al ser un router proscrito, parece ser que cuando la gente de Linksys "descubrió" que se podía flashear e instalar GNU/Linux , disminuyeron la RAM y el tamaño de la flash, amén de pasarse por el forro la licencia GPL, pero eso en otro post. Voy a seguir que me lio. El caso es que en la web de Linksys no existe ninguna referencia relacionada con el firmware de "mi cacharro", y claro ahora como está muy de moda el tema del "live chat", pues "click, vamos a chatear con estos tipos, a ver qué me cuentan...."

[ WRT54G ]

[2011-01-31 12:09:36] Please wait... Your number in the queue: 1
[2011-01-31 12:09:36] A representative will be joining shortly.
[2011-01-31 12:09:36] A representative will be with you in 4 minute(s)
[2011-01-31 12:09:57] A representative will be with you in 1 minute(s)
[2011-01-31 12:10:21] Vaughn (30070E) has joined this session.
[2011-01-31 12:10:32] Vaughn (30070E): Hello Alberto Permuy! Welcome to Linksys Live Chat. How may I help you?
[2011-01-31 12:10:47] Alberto Permuy: Hi! I'm looking for WRT54G firmware updates in linksys's website, but I can't find, could you help me?
[2011-01-31 12:11:00] Vaughn (30070E): Sure
[2011-01-31 12:11:08] Vaughn (30070E): May I know which country are you based in?
[2011-01-31 12:11:20] Alberto Permuy: Spain
[2011-01-31 12:11:48] Vaughn (30070E): Can you please confirm the serial number of your linksys product?
[2011-01-31 12:12:21] Alberto Permuy: CDFE1XXXXXX
[2011-01-31 12:13:38] Vaughn (30070E): The device seems to be Out of warranty, but I will provide you with the link, if you still face any issues, please contact our phone support at 902 027 997 0.09€/call + 0.07€/min Red fija: establecimiento de llamada 0.09€ + 0.07€/minuto. Estos precios pueden variar en función del operador o en el caso de que usted llame desde un teléfono móvil. Monday - Friday 10 AM - 8 PM (CET)
[2011-01-31 12:13:45] Vaughn (30070E): Please let me know the version
[2011-01-31 12:14:08] Alberto Permuy: V 7
[2011-01-31 12:18:31] Vaughn (30070E): Thank you for your patience!
[2011-01-31 12:18:38] Vaughn (30070E): Please click on following link

El caso es que, a pesar de que han tardado un par de horas en enviarme el enlace para la descarga, al final lo he recibido. Supongo que esto no dejará de ser más que una anécdota, pero si puedo ayudar a alguien que se encuentre en la misma situación, ahí os dejo el link.

Firmware Version: v7.00.8 build 008, Jul. 9, 2009
Firmware Verification: F3BF743BD7ED4D242EB84012F467C0B7
Descargar Web Oficial Linksys
Descargar desde pub.permuy.org

domingo, 30 de enero de 2011

Compilar Dropbox para AMD64

Desde hace unos días he cambiado Ubuntu por Debian AMD64 en el macbook. Salvo la tarjeta wireless y la webcam(que apenas utilizo) no he tenido mayores problemas.Usando module-assistant para la wireless en cinco minutos y previa lectura del wiki de Debian : "habemus wireless".

El problema viene cuando usas la rama unstable y quieres instalar aplicaciones que depende de librerías de versiones anteriores. Eso mismo ha sucedido con Dropbox.He descargado el .deb para arquitectura de 64 bits y no he podido concluir la instalación, por lo que decido compilar nautilus-dropbox. Es muy sencillo
aptitude update && aptitude install libnautilus-extension-dev python-docutils

Ahora descomprimimos el paquete , compilamos e instalamos:
tar jxvf nautilus-dropbox-0.6.7.tar.bz2 && cd nautilus-dropbox-0.6.7
./configure && make && make install




domingo, 16 de enero de 2011

BETT2011 Londres

He tenido la oportunidad de asistir al BETT2011, el mayor evento de tecnología educativa que se celebra anualmente en Londres.La opinión general del evento es muy positiva. Voy a intentar hacer un breve resumen indicando lo que me ha gustado y lo que no.

Me ha gustado.

.- La organización: La inscripción vía web ha sido muy sencilla.Al llegar al Olympia lo único que tenías que hacer es presentar el código de barras que previamente te habían enviado al buzón de correo e inmediatamente generaban tus credenciales. A posteriori ese código de barras impreso en la credencial, servía para que te lo escaneasen en los expositores para hacer SPAM.
.- Localización: Muy fácil llegar en autobús o en metro. El último día, cansado ya de tanta tecnología educativa, decidí dar una vuelta por el barrio a descubrir el otro BETT.
.- Variedad: Si en esto está el gusto, han acertado. Desde pizarras digitales, software para pizarras, filtros de contenido por hardware y software, robots, maletines, cámaras, telefonía IP, casi de todo podías encontrar en el BETT2011.
.- Internet café: Por cortesía de Netgear, se habilitaron unas zonas de libre acceso a internet, tanto access point como PCs para uso común.
.- Cafetería: He contado alrededor de unos 6 o 7 espacios para comer o reponer fuerzas.


No me ha gustado.
.- Demasiada paja. Muchos stands de software para pizarras, en muchos casos podría decir que muy pobres. Abundancia de información en papel, una vergüenza para los tiempos que corren.
.- Demasiado grande. El BETT2011 es inmenso, necesitaría dos días completos para ver todos y cada unos de los stands. En una ocasión he tenido la sensación de estar completamente perdido.
.- Software privativo. Todo, a excepción de un par de stands, estaban relacionados con software privativo. Una pena.
.- Muy caro. Comer y beber en el BETT2011 es muy caro. Una Pepsi 2,10 libras, es decir, casi 2,50€. Podéis imaginar lo que cuesta un menú "enlatado" con ensalada y bebida....un robo!


Lo mejor.
[ Detalle de SumoBot Kit ]

Active Robots. Una empresa dedicada a comercializar kits para introducirse en la robótica y la electrónica. Estos kits sirven para aprender a programar en C y en PBASIC, y de paso para divertirse con estos robots. La verdad es que para mí fue lo mejor. Los dos días estuve en el stand. He de decir que los tipos de ActiveRobots son muy majos, y respondieron a todas y cada una de las preguntas planteadas...unos cracks! Enhorabuena!
Netsweeper: Filtro de contenidos web para centros educativos. Por lo que me han comentado, ellos te proporcionan un RPM que aconsejan correr en CentOS, y después te aconsejan cómo integrar éste dentro de tu infraestructura de red: detrás o delante de un firewall, dentro de una VPN...
Bloxx: Más filtro de contenido. En este caso software y hardware. Similar al Netsweeper, salvo la diferencia de que con BLOXX no tienes que comprar hardware, ellos te proporcionan un servidor de 1U con el producto. BLOXX es capaz de filtrar contenido web, email, contenido de Youtube y un sin fin de funcionalidades, todo desde una cuidada interfaz web. Me sorpendió la facilidad con la que se puede integrar la solución con un Active Directory de Microsoft Windows, así como crear reglas para grupos de usuarios.


El tema de las pizarras digitales lo pasaré muy por encima, es un mundo que desconozco, y salvo casos concretos, mi interés es obligatoriamente profesional. No me gusta que me traten como un idiota, esa es la sensación que he tenido en el mini-tour por el stand de SMART. En lugar de explicar como una ametralladora todo lo que hacen sus pizarras, podrían haber montando en su espacio un aula y hacer una demostración de cómo usar una pizarra en clase. Eso sí sería interesante.

Microsoft, DELL, HP, Toshiba, Asus y demás fabricantes tenían presencia en BETT2011. A mi modo de ver más "a calzador" que por tener una relación directa con la formación. Por eso no voy a hacer ninguna referencia al respecto.

Para finalizar, señalar que no había un espacio tipo auditorio dónde asistir a ponencia de gente versada en la materia, y eso, señoras y señores organizadores del BETT, es algo que se puede mejorar para ediciones posteriores.

¿Volverías al BETT? Por supuesto, la primera para aprender. En la segunda supongo iré al grano.

domingo, 19 de diciembre de 2010

¡No al cierre de webs! ¡Red SOStenible!

Habilitar CKEditor para Chrome y Safari en Moodle

Para que el editor WYSIWYG CKEditor pueda "funcionar" correctamente en Chrome y Safari modificaremos

Fichero: /lib/moodlelib.php

Donde nos topamos con :


function can_use_html_editor() {
global $USER, $CFG;

if (!empty($USER->htmleditor) and !empty($CFG->htmleditor)) {
if (check_browser_version('MSIE', 5.5)) {
return 'MSIE';
} else if (check_browser_version('Gecko', 20030516)) {
return 'Gecko';
}
}
return false;
}


usaremos este código :


function can_use_html_editor() {
global $USER, $CFG;

if (!empty($USER->htmleditor) and !empty($CFG->htmleditor)) {
if (check_browser_version('MSIE', 5.5)) {
return 'MSIE';
} else if (check_browser_version('Gecko', 20030516)) {
return 'Gecko';
}
else {

return 1;

}
}
return false;
}


Fichero /lib/editor/htmlarea/htmlarea.php

Donde nos topamos con:



HTMLArea.checkSupportedBrowser = function() {
if (HTMLArea.is_gecko) {
if (navigator.productSub < 20021201) {
alert("You need at least Mozilla-1.3 Alpha.\n" +
"Sorry, your Gecko is not supported.");
return false;
}
if (navigator.productSub < 20030210) {
alert("Mozilla < 1.3 Beta is not supported!\n" +
"I'll try, though, but it might not work.");
}
}
if(HTMLArea.is_safari) {
return false;
}
return HTMLArea.is_gecko || HTMLArea.is_ie;
};


deberíamos ....


HTMLArea.checkSupportedBrowser = function() {
if (HTMLArea.is_gecko) {
if (navigator.productSub < 20021201) {
alert("You need at least Mozilla-1.3 Alpha.\n" +
"Sorry, your Gecko is not supported.");
return false;
}
if (navigator.productSub < 20030210) {
//alert("Mozilla < 1.3 Beta is not supported!\n" +
// "I'll try, though, but it might not work.");
return 'HTMLArea.is_gecko';
}
}
if(HTMLArea.is_safari) {
//return false;
return 'HTMLArea.is_gecko';
}
return HTMLArea.is_gecko || HTMLArea.is_ie;
};


Visto en http://lewiscarr.co.uk/

lunes, 22 de noviembre de 2010

Charla Servidores UNIX/Linux

El pasado fin de semana tuve el placer de impartir en formato charla+taller una ponencia sobre Servidores Linux, enmarcada dentro de unas "Xornadas sobre software libre, internet seguro" en A Coruña. Este próximo fin de semana, 26 y 27 de Noviembre de 2010 haré lo propio en Santiago de Compostela.

Divida en jornada teórico-evangelizadora, resumí muy brevemente la historia del SSOO GNU/Linux siguiendo como guión esta presentación:




En la jornada matutina del día siguiente y en horario de10:30 a 13:30, tomando como base una distribución Ubuntu Server 10.10 tratamos temas relacionados con:
  • Mini introducción al terminal
  • Introducción apt en Debian GNU/Linux
  • Instalación y configuración de SAMBA.
  • Hablamos además de : nano, touch, rsync, ext4, ext3, reiserfs, zfs, upstart, init.d, gz, virtualbox, lvm.....
La verdad es que ha sido un placer, sobre todo por la atención, tanto de los asistentes como por parte de la gente de Academia Postal, en especial Manuel Bustabad. ¡Gracias por todo!

Apache2 , SSL y passphrase

Si utilizais Apache2 con SSL es probable que cuando instaléis el certificado en vuestro sitio y reinicies el servicio, Apache2 se "queje" pidiendo la contraseña del certificado. Saltar este paso es muy sencillo.

1.- Editamos el fichero /etc/apache2/mod-enabled/ssl.conf
2.- Cambiamos SSLPassPhraseDiaglog builtin por SSLPassPhraseDialog exec:/usr/sbin/asslpass
donde asslpass contiene

#!/bin/bash
echo "mi-pass-del-certificado"
3.- chmod +x /usr/bin/asslpass para otorgar permisos de ejecución y asunto resuelto.

martes, 26 de octubre de 2010

¡Apoya a Wikipedia!

Apoya Wikipedia
Hoy he aportado un euro ( 1€ ) a Wikipedia. Estoy redactando un proyecto y me he acordado leyendo un artículo en Wikipedia de la veces que he sacado partido a este magnífico proyecto colaborativo. Cierto, puedo donar más dinero, pero no considero que el importe de la donación sea lo importante, es el propio acto en sí. Siento que mi pequeña deuda con este proyecto, al menos durante un corto período de tiempo está saldada.


Dear Alberto,

Thank you for your gift of EUR 1.00 to the Wikimedia Foundation, received on October 26, 2010. I’m very grateful for your support.
Your donation celebrates everything Wikipedia stands for: the power of information to help people live better lives, and the importance of sharing, freedom, learning and discovery. Thank you so much for helping to keep Wikipedia freely available for its 380 million readers around the world.

These funds support technology and people. The Wikimedia Foundation develops and improves the technology behind Wikipedia, and sustains the infrastructure that keeps it up and running. The foundation has a staff of about fifty, which provides technical, administrative, legal and outreach support for the global community of volunteers who write and edit Wikipedia.
Many people love Wikipedia, but a surprising number don't know it's run by a non-profit. Please help us spread the word by telling a few of your friends.

And again, thank you for supporting free knowledge.

Sincerely Yours,


Sue Gardner
Executive Director

* To donate: http://donate.wikimedia.org
* To visit our Blog: http://blog.wikimedia.org
* To follow us on Twitter: http://twitter.com/wikimedia
* To follow us on Facebook: http://www.facebook.com/wikipedia


This letter can serve as a record for tax purposes. No goods or
services were provided, in whole or in part, for this contribution.
The Wikimedia Foundation, Inc. is a non-profit charitable corporation
with 501(c)(3) tax exempt status in the United States. Our address is 149 New Montgomery, 3rd Floor, San Francisco, CA, 94105. Tax-exempt number: 20-0049703

jueves, 21 de octubre de 2010

Hp Mini y Meego

Hace aproximadamente diez días me he regalado un netbook. La máquina en cuestión es un HP Mini "el negro". Por 278€ tenemos "out of the box":
  • Procesador Intel Atom 1,6 Ghz con 512Kb de caché de L2
  • 1 GB RAM DDR2 (2GB Max)
  • Disco duro SATA 160GB 5400 rpm
  • Pantalla WSVGA 10'1 1024x600
  • Intel GMA 3150
  • Batería de 6 celdas
  • LAN Ethernet 10/100 y Wireless b/g/n


Los principales motivos para elegir este modelo han sido:
  1. Batería de 6 celdas. Para tener entre 2 y 3 horas de autonomía me llegaba con el Macbook. Con el HP Mini puedo llegar a las 7 horas sin demasiados sacrificios.
  2. Marca. Me gusta HP. Si bien el diseño se podría mejorar, la calidad del producto está muy bien compensada en relación calidad/precio.



[ HP Mini 110-3005SS WS62EA]

La duda llegaba con el SSOO a instalar.
  • Si instalo Debian GNU/Linux, opción principal, tendría que dedicarle mucho tiempo, y la verdad, dada mi situación personal y laboral actual, ahora mismo es mi principal carencia: el tiempo. Descartada.
  • Ubuntu. Fue la opción durante 8 días. Tenía que viajar y tener Ubuntu 10.10 instalada y con todo el hardware funcionando fue cuestión de invertir 45 minutos y algún que otro quebradero de cabeza. El driver para la wireless ralink da problemas con ACPI, así que debemos "blacklistar" el módulo para que no lo cargue al iniciar el sistema. La verdad es que la primera semana con Ubuntu 10.10 no tuve queja alguna, todo perfecto, con las limitaciones del propio hardware de la máquina(pasar de 8GB de RAM a 1GB se nota).
echo "blacklist rt2800pci" >> /etc/modprobe.d/blacklist.conf
  • Meego. Conocía Meego, de echo tenía un par de imágenes en mi máquina de escritorio, pero claro, la falta de tiempo....Para los que no conozcan Meego, resumiendo el resumen , comentar que es el fruto de la fusión de Maemo y Moblin , es decir, el resultado del trabajo de Intel y Nokia basado en el núcleo de Linux para competir con Android. Al final he optado por la opción Meego.No quiero entrar en polémicas acerca de que si Meego es mejor o peor que Android. Simplemente daré mi opinión después de instalar y utilizar Meego en el HP Mini.
Primeras impresiones de Meego.
  • Modo Live! Increíble. Todavía no he podido indagar cómo lo han hecho, pero en 20 segundos(a ojímetro) tenemos el sistema funcionando en modo Live!. No hay que hacer nada especial para tener el usb, sólo seguir las instrucciones del sitio web de Meego. Como anécdota comentar que la imagen la he creado con el clásico dd sin ningún tipo de problema. Lo qué mas llama atención la primera vez que "juegas" con Meego es el propio entorno. Si vienes de GNOME o KDE olvídate de menús infinitos, olvídate de la clásica estructura de escritorio "linuxero" panel-menú-panel, por que Meego va más allá. Un panel superior es suficiente para controlar y disfrutar de todo el sistema.
  • Instalación. Si te ha gustado el modo Live! y te ha sorprendido lo ligero y sencillo que es el uso, la instalación es de lo más simple que he visto en mucho tiempo. Particionar el disco, configurar el idioma, red y en 5 minutos está instalado.




[ Meego funcionando en el HP Mini ]

¿Qué es lo que más me ha gustado?
  • Fluidez. Es increíble lo fluído y rápido que "se mueve" el entorno gráfico.
  • Simple e intuitivo. Tareas como configurar una conexión wifi son tan simples como "clickear" dos botones y navegar.
  • La interfaz es bonita y agradable, parece que acabas de entra en los mundos de yupi!
  • Es Linux! Es Gnome! Es Kde! Es increíble!. De serie instala el reproductor multimedia banshee, Google Chrome(ojo, tienes que descargar la ISO con el EULA de Google Chrome), Empathy...
  • Tiene un terminal!
  • Tiene un Kernel actualizado, ayer de noche instaló el solito un 2.6.35....
  • Usa YUM como gestor de paquetes, aunque prefiero apt, no hay mejor excusa para retomar el asunto "yumero"...
¿Qué es no lo que NO me ha gustado?
  • Haber tardado tanto en probarlo...
  • Nada más.
P.D: Gracias a Simón Pena por recordame el tema Meego!


domingo, 17 de octubre de 2010

Así fue la Trasnada 10 en Ordes



Llegaba tarde a Ordes. El día anterior regresaba de Expocampus 2010 en Madrid y necesitaba descansar. Expocampus es un evento que todo docente o persona relacionada con las nuevas tecnologías y/o docencia no debería perderse; si bien es cierto que este post no va dedicado a Expocampus, sí está relacionado con la Trasnada'10.
A mi entender, existe una gran diferencia de concepto entre eventos tipo Expocampus y Trasnada. Atónito escuchaba en Madrid a un gurú del e-learning afirmar "el gran impacto en EEUU es la colaboración web entre grupos de usuarios para realizar proyectos". Pero por favor, si la comunidad de software libre lleva casi 20 años haciendo lo mismo....y el auditorio se llena de aplausos. En contraposición, eventos como la Trasnada'10, no hacen más que reafirmar la excelente salud del software libre, y en particular la comunidad de traductores y personas que apoyan el software libre.

A pesar de conocer de antemano, y hablo desde una concepción global y generalista, el estado de grupos de traducción en Galicia; salí de la Trasnada'10 con una satisfacción enorme. Sólo el pensar que gente, de un modo altruista y perfectamente organizado(aunque parezca lo contrario) invierte horas, días y meses de su vida en traducir aplicaciones libres á galego es digno de mi más sincera admiración.

Entrando ya en la parte práctica de la jornada. Los "newbies" nos reunimos en una sala anexa donde Miguel Branco en una sesión de aproximadamente 120 minutos son describió las claves para introducirse en el apasionamente mundo del software libre y la traducción. Comentaba entre otros aspectos:
En resumen, una jornada que ha superado mis espectativas personales. ¿Por qué? Muy sencillo, si al terminar la jornada has aprendido nuevos conceptos, has ayudado a impulsar y mantener viva la comunidad del swlibre, eso, ya es un éxito. Enhorabuena a Trasno!


lunes, 4 de octubre de 2010

Phyton...Monty

Python es un lenguaje de programación creado por Guido van Rossum a principios de los años 90 cuyo nombre está inspirado en el grupo de cómicos ingleses “Monty Python”. Es un lenguaje similar a Perl, pero con una sintaxis muy limpia y que favorece un código legible.
Se trata de un lenguaje interpretado o de script, con tipado dinámico, fuertemente tipado, multiplataforma y orientado a objetos.

¿Quieres aprender Python? Te recomiendo que leas este enlace.
¿Quieres flipar con Python?
  1. Abre un terminal
  2. cd /tmp
  3. python -m SimpleHTTPServer
Si abres un navegador y tecleas en la URL http://127.0.0.1:8000 observarás como está corriendo sin mayore problemas un servidor web bajo Python. Lo sabía desde hace tiempo, pero no lo recordaba.

martes, 28 de septiembre de 2010

Flyback, el time machine para GNU/Linux

La semana pasada he perdido el disco duro del Macbook. Lo importante: el fichero cifrado con TrueCrypt estaba a salvo, pero el resto lo he perdido. Algunas fotos, máquinas virtuales y demás se han ido por la borda. Lo que más me fastidia del tema es que siempre predico en entornos empresariales la importancia de los backups y al final soy yo mismo el peor ejemplo. El caso es que he configurado(prometo post) una máquina Linux para que MacOSX detecte el volumen que se desee como un XServe y vía AFP poder usar dicho volumen para almacenar las copias de Time Machine. Buscando y rebuscando por Google he encontrado Flyback, una herramienta similar a Time Machine pero para GNU/Linux. La instalación es muy sencilla: descargas el paquete .deb, resuelve dependencias y listo! Claro ejemplo de las bondades del apt-get.... En la web del proyecto hay más información, y por supuesto el código fuente. La aplicación en sí no es gran cosa, pero nunca está de más tomar nota.

domingo, 26 de septiembre de 2010

FreeNX, acceso seguro a GNOME(y otros...)

¿Necesitas acceder al escritorio de una máquina corriendo algún sabor de Unix o Linux? FreeNX es la solución, por lo menos para mí.NX realiza una conexión por el protocolo X11 pero encapsulado por SSH !fuera paranoias!

En la actualidad sólo lo he probado desde MacOSX Snow Leopard 10.6.4 hacia una máquina Ubuntu 10.04 LTS y la verdad es que los resultados son increíbles. [Descargar cliente Mac OS X].
Si utilizais Microsoft Windows supongo no será difícil encontrar un cliente de FreeNX.

Siempre , y cuando digo siempre es siempre, uso SSH para acceder a máquinas Unix vía remota, pero desde que he probado "en serio" NX, más de una vez incio sesión y descargo algún torrent.

Si usais Ubuntu 10.04 la instalación de FreeNX es muy sencilla, desde un terminal y como root


[root@barney]aptitude install python-software-properties && add-apt-repository ppa:freenx-team

[root@barney] aptitude update && aptitude install neatx-server


Con estos sencillo pasos ya es posible conectarse desde otra máquina a nuestra Ubuntu / Debian GNU/Linux. Sencillo, seguro y fácil: alguien da más?

viernes, 17 de septiembre de 2010

VII Kernel 2010 Mugardos - Parte 1

Son las 04:59 de la madrugada. Escribo desde una Ophcrack Linux. Estoy en el Kernel2010 en Mugardos en la party mas molona del noroeste peninsular.
No he tenido mucho tiempo ultimamente para escribir, asi que voy a hacer un mini-resumen de lo que configurado a nivel de sistemas en el Kernel 2010.
El firewall es un clasico, Debian, Squid e iptables.No falla. Forward en DROP y proxy transparente. DNS y DHCP en otra maquina, con Bind9. Este si falla, pero tampoco es para tanto.
La novedad este anho es OpenVZ. He configurado una maquina con 4GB de RAM donde corremos ahora mismos 3 SSOO Debian 5.0 amd64 dando servicios a la LAN de webserver con Drupal y MySQL, otro server para servidor Direct Connect con OpenDCHub y un tercero de backup por si se cae el DNS-DHCP.
Intentare subir alguna grafica de Munin a lo largo de estos dias.
Saludos.

lunes, 30 de agosto de 2010

Miscelánea

Siendo sincero no he tenido mucho tiempo últimamente para escribir en el blog. Esta semana toca mudanza, nos marchamos a Bertamiráns, hemos encontrado un dúplex pequeño pero muy acojedor, con lo cual, y aún trabajando para la misma organización(espero que por muchos años!), comienza una nueva etapa.

Como sabéis este año 2010 "Comunidade O Zulo" se ha constituído como Asociación, con lo cual los compromisos y responsabilidades también son mayores. El evento Kernel 2010, del que soy fundador y responsable técnico, llega este año a la 7º edición. Estamos con los preparativos, configuración de servidores y demás...

A parte de todo este lío, estoy inmerso en tres proyectos más:
.- OpenFiler: He instalado y configurado un servidor SAN con OpenFiler y me han encargado el mantenimiento en horario NO laboral, por lo tanto lio++
.- Drupal: Estoy a punto de finalizar y entregar un proyecto de "Gestión de tiempos de trabajo" basado en Drupal 6.X. He desarrollado un par de módulo para Drupal, trabajado algo el diseño y un par de temas a mayores(backup,correo...etc)
.- Moodle: He participado en un proyecto con de re-estructuración de una plataforma Moodle 1.9.

Si a todo esto sumamos los numerosos cambios que he vivido en el trabajo, el resultado es una especie de caos cíclico del que no me han salvado ni las vacaciones, las cuales las he dedicado prácticamente a cerrar y avanzar proyectos en marcha.

Prometo en los próximos días seguir escribiendo.
Saludos.

lunes, 9 de agosto de 2010

Instalar CKEditor en Moodle


Estoy trabajando en un proyecto para "renovar" la cara a una instalación de Moodle. Si hay algo que no me gusta, estéticamente hablando por supuesto, de Moodle 1.9.X es el editor por defecto. No soy muy amigo de los editores WYSIWYG , pero si sois usuarios de Moodle estareis de acuerdo que el editor por defecto es un poquitín cutre.
En Drupal uso CKEditor y funciona muy bien. Revisando los foros de Moodle, fuente eterna de sabiduría para newbies como que el escribe este blog, he encontrado un post que me ha servido de ayuda para instalar CKEditor. Comento los pasos:

.- Lo primero que debemos tener claro es que vamos a "tocar" ficheros de configuración claves, por lo tanto recomiendo realizar un backup antes de nada.
.- Debemos tener acceso al servidor vía SSH(hablamos de servidores Linux/*BSD). Añadimos la siguiente línea al fichero config.php

$CFG->defaulthtmleditor = 'ckeditor';

.- Visitamos http://ckeditor.com/download y descargamos la ultima versión de CKEditor(3.3.2 en mi caso) en el directorio moodle/lib/editor.Descomprimimos el fichero.
.-!Mucho cuidado ahora! Backup de moodle/lib/weblib.php y lo actualizamos con este fichero.

Ahora limpiamos caché et..violá! Ya tenemos CKEditor como editor por defecto en Moodle!

He vuelto...

Después de casi un mes sin postear confirmo que he regresado.
La pérdida de un compañero de trabajo y amigo es algo duro, que cuesta asumir, pero que no debe impedir continuar luchando por aquello en lo que crees. Las dos últimas semanas de este pasado mes de Julio han sido duras, pero tengo la gran suerte de trabajar al lado de profesionales, que en su mayor parte(siempre hay excepciones) , son grandes personas. Tengo mucha suerte a nivel personal, vivo con personas a las que quiero y que me quieren,y claro, este factor siempre ayuda.

Han pasado las vacaciones como si nada. He estado 15 días en Mugardos. No he descansado prácticamente nada, y la última semana la he pasado en A Coruña liado con DFS,Openfiler y demás. Pero como esto no es un blog sentimental ni nada que se le parezca, en 10 minutos os dejo un post nuevo...
Saludos y gracias por leerme!

jueves, 15 de julio de 2010

Cómo me haces esto....

...justo ahora que empezábamos a vivir nuestros trabajos como un hobbie! No puedes irte así, sin despedirte, sin dedicarnos un último tweet a quienes seguíamos a diario tus peripecias en la www, escuchando y retwitteando tus ilusiones y futuros proyectos.
Supongo que a partir de hoy, nada volverá a ser como antes.Ya no me volveré a quedar charlando 45 minutos antes de entrar, ni te buscaré por la ventana pensando "a ver si viene Koldo y me cuenta en qué esta metido...".
Por aquí te van a echar mucho de menos, pero con tu marcha se van más cosas, más de las que incluso pueda llegar a enumerar en esta especie de post de despedida. Como ya no estás aquí, y aún a sabiendas de que no me leerás(sé que sí, dónde estés ya tienen iPad's), te he enviado un último tweet esta mañana, como solía hacerlo.

Sólo puedo darte las gracias por todo lo que he aprendido de ti durante este tiempo. Por lo que a mi respecta, puedes viajar tranquilo: has hecho de mi una mejor persona.

Koldo, amigo, te echaré de menos!

martes, 6 de julio de 2010

Kernel driver not installed (rc=-1908)

Si actualizas Ubuntu 10.04 es posible que al intentar ejecutar VirtualBox después de la actualización devuelva este error:

Kernel driver not installed (rc=-1908)

Solucionarlo es muy sencillo, abrimos un terminal y como root, o sudo, a gusto del consumidor,como primera opción:

root@polinico:/home/apermuy# dpkg-reconfigure virtualbox-ose-dkms
Removing all DKMS Modules
Done.
Loading new virtualbox-ose-3.1.6 DKMS files...
Building only for 2.6.32-23-generic-pae
Building for architecture i686
Building initial module for 2.6.32-23-generic-pae
Done.

Si continúan los problemas...

root@polinico:/home/apermuy# apt-get install --reinstall virtualbox-ose
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
0 actualizados, 0 se instalarán, 1 reinstalados, 0 para eliminar y 0 no actualizados.
Necesito descargar 8265kB de archivos.
Se utilizarán 0B de espacio de disco adicional después de esta operación.
¿Desea continuar [S/n]? S
Des:1 http://es.archive.ubuntu.com/ubuntu/ lucid/universe virtualbox-ose 3.1.6-dfsg-2ubuntu2 [8265kB]
Descargados 8265kB en 59s (139kB/s)
(Leyendo la base de datos ... 00%
206245 ficheros y directorios instalados actualmente.)
Preparando para reemplazar virtualbox-ose 3.1.6-dfsg-2ubuntu2 (usando .../virtualbox-ose_3.1.6-dfsg-2ubuntu2_i386.deb) ...
Desempaquetando el reemplazo de virtualbox-ose ...
Procesando disparadores para ureadahead ...
ureadahead will be reprofiled on next reboot
Configurando virtualbox-ose (3.1.6-dfsg-2ubuntu2) ...
* Stopping VirtualBox kernel modules [ OK ]
* Starting VirtualBox kernel modules [ OK ]

Procesando disparadores para python-central

lunes, 5 de julio de 2010

“The plain HTTP request was sent to HTTPS port” en nginx

“The plain HTTP request was sent to HTTPS port” es un error que puede devolver NGINX a tratar de forzar la redirección a https.A mi me ha sucedido con phpmyadmin, y es por que me había olvidado de incluir en la configuración del virtual host:

fastcgi_param HTTPS on;



La solución completa sería:

location ~ \.php$ {
fastcgi_param HTTPS on;
fastcgi_pass 127.0.0.1:xxxx;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
include /usr/local/nginx/conf/fastcgi_params;
}


Articulo original [aquí]

ipfire, otra sorpresa...


Distrowatch es una referencia en la web si hablamos de lista de distribuciones GNU/Linux y BSDs. A menudo suelo dar una vuelta por Distrowatch para ver las últimas novedades; hoy la he visitado y me he topado con una sopresa : ipfire.

Si hace unas semanas hablaba de Ebox como una solución ideal para servidor empresarial: ficheros,firewall,vpn...etc, ahora toca el turno de ipfire.

Ipfire es una distribución Linux que "sólo" sirve para realizar una función : firewall. En la página oficial del proyecto la definen como "una distribución linux-like,de instalación sencilla y segura".

Me ha llamado mucho la atención la cuidada interfaz web de administración, desde la que podemos realizar prácticamente cualquier función de administración del sistema. En este enlace podéis ver unas capturas de pantalla.

Entre sus muchas caraterísticas destacan:
  • módulo firewall basado en inspección de paquetes netfilter.
  • IDS
  • Posibilidad de crear DMZ
  • Servicios: ntp,dhcp,proxy...
  • Sistema basado en módulos para ampliar funcionalidades
  • VPN
Aún no sé si usaremos Ebox o Ipfire para el Kernel 2010 de Mugardos, pero si me preguntais ahroa mismo, Ipfire tiene las mismas posibilidades que Ebox.

miércoles, 30 de junio de 2010

thttpd, la confirmación de lo minimalista



Dentro del mundo de los webservers todos sabemos que Apache2 se lleva la fama y los aplausos. Por otro lado, Cherokee, nginx y lighttpd poco a poco se hacen con un hueco en difícil campo de los servidores web.
Esta semana he estado jugando un con las listas de correo en Mailman para la recién creada Asociación Comunidade O Zulo. Una Asociación que fomenta la tecnología y cultura libres, de la cual tengo el honor de ser presidente.
Sinceramente, configurar Mailman con Postfix sólo con "auth local" y apache2 es muy sencillo. Pero claro, si tienes un VPS con 128Mb de RAM , el tema se complica. Apache2 consume muchísimos recursos, tanto de RAM como de CPU.
Tocaba buscar una alternativa a Apache2. Lo cierto es que no pensé nunca en dejar Apache2 como servidor www, pero he de reconocer que para la configuración base es ideal y apenas tienes que tocar nada para que funcione. Una vez funcione el servicio, sí me he planteado cambiar el software servidor www.
Paseando por el wiki de Mailman intentando buscar el equilibrio perfecto entre rendimiento y consumo de recursos encuentro thttpd.
La solución que proponen es nginx+thttpd. Como nginx no soporta la ejecución de CGIs en modo "out of the box" proponen enviar las peticiones a CGIs vía directiva proxy_pass de nginx a una instancia de thttpd escuchando en otro puerto del mismo server. ¡Genial! Me ha parecido una idea estupenda y muy profesional. Lo cierto es que ayer de noche no conseguí que funcionase, y al final para salir del paso usamos lighttpd.
La idea no sólo me ha parecido genial a mí, si no que esta solución(la de usar thttpd) la están usando en PayPal.com y en otros sitios web.La instalación en Debian GNU/Linux es tan sencilla como "aptitude install thttpd". En la web del proyecto hay más información sobre directivas, instalación y demás.