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