jueves, 4 de febrero de 2010

La guerra de los navegadores.



Me atrevería a afirmar que Tim Berners-Lee,en 1991 cuando publicó el primer documento que definía lo que a posteriori sería un estándar aprobado por la Internet Engineering Task Force (IETF), jamás se imaginaría la feroz y despiadada guerra a la que, por lo menos el que suscribe así lo considera, estamos asistiendo en el mundo de los navegadores web.

Un navegador web es una aplicación que permite visualizar el contenido almacenado en un servidor web de internet o en un servidor local. A finales de 1990, el CERN desarrolla el considerado como el primer navegador web. Este software sólo funcionaba en estaciones de trabajo UNIX(¿casualidad?), y distaba mucho del concepto actual de navegador que hoy conocemos. Meses más tarde aparecería Mosaic y después Netscape. Tarde, mal y a rastro como casi siempre, en 1994 Microsoft se pone manos a la obra con Internet Explorer. A partir de 1995, y después ser incluído como un complemento del sistema operativo Microsoft Windows 95, Internet Explorer comienza la conquista de la cuota de mercado de los navegadores web. Conquista propiciada por la gran inversión realizada por Microsoft durante la década de los '90, en la que alrededor de 1000 personas trabajaban única y exclusivamente en el desarrollo de IE.En 1999 llega a alcanzar el %95 de cuota de mercado. Mientras Microsoft observa a vista de pájaro a sus competidores en este terreno, Microsoft Windows se afianza como el "único" sistema operativo para PC.

Mientras Microsoft se regocija y disfruta de su éxito, en 1998 Netscape decide liberar el código fuente de la serie 4.X, naciendo así el proyecto Mozilla.Netscape, consciente de la posición dominante de los de Redmond, esperaba crear un gran proyecto libre, que diese como resultado un buen navegador web,fiel a los estándares y estable. En un principio y hasta 2002 Mozilla sigue siendo un navegador libre basado en Netscape, pero es en septiembre de este mismo año cuando se publica la versión 0.1 de Mozilla Firefox, con motor de renderizado Gecko 0.9, viendo la luz oficialmente el navegador Mozilla Firefox.

¿Qué diferencias a grandes rasgos existen entre Internet Explorer y Mozilla Firefox?
.- Firefox es multiplataforma, es decir, puede ejecutarse en GNU/Linux,Microsoft Windows, MacOSX y distintas versiones de Unix.Por el contrario, Internet Explorer sólo puede ejecutarse en Microsoft Windows y en MacOSX.
.- Firefox es un proyecto de la Fundación Mozilla.Internet Explorer es un producto de Microsoft, una compañía cuyo principal objetivo es obtener el mayor beneficio económico de sus productos, al contrario que la Fundación Mozilla, que es una entidad sin ánimo de lucro.
.- El código fuente de Firefox es libre. Puede auditarse en busca de errores(bugs), puede utilizarse para, con los conocimientos necesarios, adaptarlo a las necesidades de cada usuario o corporación. Al disponer de su código fuentes, miles de programadores desarrollan "plugins" que aumentan las funcionalidades básicas, convirtiendo la navegación web en una nueva experiencia.Microsoft no ha liberado, ni tiene planificado hacerlo, el código de Internet Explorer.Únicamente se limita a corregir errores e incluirlo en su sistema operativo Microsoft Windows.
.- Firefox es seguro, utiliza un sistema de aislamiento de procesos(sandbox), que dificulta explotar vulnerabilidades,además de contar con filtros antiphising.Internet Explorer 8 sí ha dado pasos en el camino correcto(no todos los necesarios), para reforzar las seguridad del navegador en cuestión; pero cuestiones como que este navegador se ha utilizado para el ataque contra Google en China, por lo menos a mi, me harían replantear la elección del navegador principal.
.- Firefox respeta los estándares, o por lo menos lo intenta. Sigue las recomendaciones de la Word Wide Web Consortium(¿Tim Berners-Lee es su director, otra casualidad?, el Web Hypertext Application Technology Working Group(WHATWG). Recordemos que Microsoft declinó la invitación de unirse a la WHATWG.


Cifras, datos...

Resulta irónico cómo una corporación puede afirmar que su navegardor es el más utilizado.¿Por qué? Si integras el navegador en el sistema operativo, subliminalmente obligas el usuario a utilizarlo. Por otro lado, las cifras incluyen todas las versiones de Explorer.Podríamos desmenuzarlas y tumbar el mito.(Hablamos de fechas comprendidas entre Enero de 2009 y Febrero de 2010).

A nivel mundial, el navegador más utilizado en la actualidad es Internet Explorer 8.0 con un 22,34% de usuarios, frente al 21,64% de Firefox 3.5. La diferencia es ínfima, teniendo en cuenta que hace apenas unos meses Microsoft a lanzado una nueva versión de Microsoft Windows: Windows 7, que casualmente, integra Internet Explorer 8.

En Europa, el navegador más utilizado es Firefox 3.5, con un 27,15% de los usuarios, frente al 23,5% de usuarios de Internet Explorer 8, seguido de las versiones 7 y 6 de este.


En USA, el 26,84% es para Internet Explorer 8.0 frente al 20,01% de Firefox 3.5. Llama particularmente la atención que sea en Europa y no en USA, dónde IE8 alcance una mayor penetración. ¿Apple? Es evidente. Apple en USA tiene mucho peso, más que en Europa. Safari, el navegador que Apple "regala" con Mac OS X, en USA se lleva el 7,91% de usuarios, mientras que en Europa apenas supera el 3%.

En España, el panorama es el siguiente: IE8 con el 26,85% y Firefox 3.5 con el 22,87%. Como curiosidad, señalar que el 9,01% a pesar de todo, sigue usando el obsoleto Internet Explorer 6.

Otro dato que me han llamado la atención es que en Brasil, en navegador más utilizado es Firefox 3.5 con un 24,31% frente al 23,28% de IE8. ¿Otra casualidad? ¿Será fruto de las iniciativas del gobierno de Lula, impulsando la cordura, el sentido común y el uso de software libre y de calidad?


Y en medio de la batalla...llegó Google.

En medio de este baile de datos, para la orquesta, suben Sergey Brin y Larry Page al escenario y presentan Google Chrome. En septiembre de 2008 lanzan la primera versión para Windows de Chrome, en 43 idiomas. Basado en el motor Webkit, liberado bajo un popurrí de licencias abiertas: BSD,MPL/GPL,MIT, proponen un navegador, a mi modo de ver minimalista, enfocado en la rapidez, seguridad(comparte sandbox como Firefox), y en la compatibilidad con los estándares. En diciembre de 2009 liberan la versión beta para GNU/Linux y MacOSX.



Enlaces de interés:

http://www.whatwg.org/

http://www.w3c.es/

http://w3counter.com/globalstats.php

http://marketshare.hitslink.com/

domingo, 31 de enero de 2010

Nueva etapa




Mañana día 1 de Febrero comienza una nueva etapa profesional en mi vida. Espero no deje ser más que una continuación de la etapa anterior. Estos 2 meses de inactividad entrecomillada me han servido para descansar y organizar mi mente, pensar en todo lo que se puede mejorar y encarar con más ganas que nunca esta nueva senda. !Qué así sea!

martes, 26 de enero de 2010

Instalando lighttpd en Ubuntu/Debian GNU/Linux desde los fuentes




Como he comentado en alguna ocasión, me gusta Apache2. Durante muchos años Apache Software Foundation ha realizado un gran trabajo, añadiendo funcionalidades y módulos, corrigiendo bugs y mejorando en cada versión de Apache2(y Apache 1.x, por supuesto). También he comentado en otras el gran trabajo de Alvaro López, y los excelentes resultados de rendimiento, superando ampliamente los obtenidos con Apache2.Actualmente busco un paquete de software de servidor web ligero y rápido, con soporte PHP5(vía fast-cgi sirve), que corra sin problemas en una máquina con 128MB de RAM(vps). Desde hace un par de semanas he testeado lighttpd y los resultados son más que satisfactorios.

A continuación, y a modo de recordatorio personal,comentaré como instalar lighttpd(version 1.4.25 de Enero de 2010) en una máquina corriendo Ubuntu 9.10, con las siguientes características.

Kernel: Linux polinico 2.6.31-14-generic-pae
Procesador: AMD Athlon(tm) 64 X2 Dual Core Processor 4800+
RAM: 8262708k total
gcc: gcc-4.4 4.4.1-4ubuntu9
make: 3.81-6

Actualizamos las fuentes de los repositorios e instalamos los paquetes necesarios.

[root@polinico ~#]apt-get update && apt-get -y install gcc make build-essential libpcre3-dev libbz2-dev zlib1g-dev

Una vez instalados, necesitamos descargar lighttpd.

[root@polinico tmp#] wget http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.25.tar.gz && md5sum lighttpd-1.4.25.tar.gz

Muchas veces obviamos el paso de la comprobación de la suma md5 del fichero, nunca está de más...

[root@polinico tmp#]wget http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.25.tar.gz && md5sum lighttpd-1.4.25.tar.gz
--2010-01-26 23:20:36-- http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.25.tar.gz
Resolviendo download.lighttpd.net... 64.34.173.165
Conectando a download.lighttpd.net|64.34.173.165|:80... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 780629 (762K) [application/x-tar-gz]
Guardando: «lighttpd-1.4.25.tar.gz»

100%[======================================>] 780.629 205K/s en 4,5s

2010-01-26 23:20:41 (168 KB/s) - `lighttpd-1.4.25.tar.gz' guardado [780629/780629]

87e936ec272ddaba8a2fdfecd8c6b704 lighttpd-1.4.25.tar.gz

Desempaquetamos el fichero...

[root@polinico tmp#]tar zxvf lighttpd-1.4.25.tar.gz && cd lighttpd-1.4.25

Lo bueno de la compilación desde el código fuente, a parte de la optimización del binario resultante, es la posibilidad de habilitar/deshabilitar el soporte a protocolos/tecnologías/lenguajes...etc. Por defecto,si no indicamos nada al ejecutar configure, tendremos un binario de lighttpd con los siguientes plugins habilitados:

  • mod_access

  • mod_access_log

  • mod_alias

  • mod_auth

  • mod_cgi

  • mod_compress

  • mod_dirlisting

  • mod_evhost

  • mod_extforward

  • mod_flv_streaming

  • mod_fastcgi

  • mod_indexfile

  • mod_proxy

  • mod_redirect

  • mod_rrdtool

  • mod_scgi

  • mod_secdownload

  • mod_setenv

  • mod_simplehost

  • mod_ssi

  • mod_putasgae

  • mod_staticfile

  • mod_status

  • mod_trigger_b4_dk

  • mod_userdir

  • mod_usertrack

  • mod_webdav


Y como características destacadas

  • auth-crypt

  • compress-bzip2

  • compress-deflate

  • regex-conditionals



Si queremos optimizar y personalizar al máximo la compilación:

[root@polinico tmp#] ./configure --help|more

En caso de usar las opciones por defecto:

[root@polinico tmp#] ./configure && make && make install


Ya hemos instalado lighttpd!!! No era para tanto, verdad? Me he encontrado con el que script de arranque/parada de /etc/init.d puede dar problemas al indicar correctamente la localización del binario.Recordemos que por defecto es /usr/local/sbin. No me he parado a localizar el .pid de lighttpd, pero con "ps aux|grep lighttpd|grep etc|awk '{ print $2 }'"(chapuza) solucionamos la papeleta.Podéis descargar el script aquí.

Códigos de estado HTTP

Estoy preparando un post sobre lighttpd, y mientras lo termino, he leído en la wikipedia, un breve resumen sobre los códigos de estado http.

[Códigos de estado protocolo http]
  • 1xx Mensajes
- 100 111 Conexión rechazada
  • 2xx Operación exitosa
Descripción
200 OK
201-203 Información no oficial
204 Sin Contenido
205 Contenido para recargar
206 Contenido parcial
  • 3xx Redirección hacia otro URL
Descripción
300 Múltiples posibilidades
301 Mudado permanentemente
302 Encontrado
303 Vea otros
304 No modificado
305 Utilice un proxy
307 Redirección temporal
  • 4xx Error por parte del cliente
Descripción
400 Solicitud incorrecta
401 No autorizado
402 Pago requerido
403 Prohibido
404 No encontrado
405 Método no permitido
406 No aceptable
407 Proxy requerido
408 Tiempo de espera agotado
409 Conflicto
410 Ya no disponible
411 Requiere longitud
412 Falló precondición
413 Entidad de solicitud demasiado larga
414 URL de solicitud demasiado largo
415 Tipo de medio no soportado
416 Rango solicitado no disponible
417 Falló expectativa
  • 5xx Error por parte del servidor
Descripción
500 Error interno
501 No implementado
502 Pasarela incorrecta
503 Servicio no disponible
504 Tiempo de espera de la pasarela agotado
505 Versión de HTTP no soportada

[ Ver articulo original ]

martes, 12 de enero de 2010

Pánico en la habitación reiser.

Un buen título para una película de terror sería el de este post. Tan pronto como hablo de leer particiones reiserfs desde Windows, no puedo acceder a una de 932GB dónde almaceno contenido multimedia.
El primer síntoma del "problema" es que no se podía acceder desde Gnome. "Ummm...que raro, si en este disco, que por cierto tiene cuatro(4) meses de vida útil en mi máquina, nunca me había dado problemas". El segundo síntoma lo he encontrado en /var/log/syslog y /var/log/messages, dónde se podía apreciar claramente cómo algo no marchaba bien en la unidad /dev/sdb1. Me temía lo peor. Dudaba en este post si reiserfs podía expandir el disco en caliente; ahora puedo afirmar que expandir en caliente sí; lo que no es posible es disminuir el espacio. Al grano. Este post me ha ayudado a recuperar los datos reconstruyendo el árbol. La verdad es que no me paran de llegar buenas impresiones y experiencias sobre EXT4; y teniendo en cuenta que Namesys parece que ya no sigue con el desarrollo de reiserfs, a lo mejor es buen momento para el cambio.
La operación que "copio-pego" ha llevado un buen rato, alrededor de cuatro(4) horas, así que paciencia. Debéis comprobar si tenéis instalado reiserfsprogs, que es el paquete de utilidades para "jugar" con particiones reiser. En Debian GNU/Linux, Ubuntu y derivados es muy sencillo.

apermuy@polinico:~$ dpkg -l|grep reiser
ii reiserfsprogs 1:3.6.21-1 User-level tools for ReiserFS filesystems

Ahora toca comprobar la consistencia del sistema de ficheros. Fácil.

root@polinico apermuy#reiserfsck --check /dev/sdb1

Si tenéis café a mano, o una buena película...ahora es el momento.Ups, me olvidaba comentar que es necesario desmontar la partición.

root@polinico apermuy#reiserfsck --rebuild-tree /dev/sdb1
reiserfsck 3.6.21 (2009 www.namesys.com)

*************************************************************
** Do not run the program with --rebuild-tree unless **
** something is broken and MAKE A BACKUP before using it. **
** If you have bad sectors on a drive it is usually a bad **
** idea to continue using it. Then you probably should get **
** a working hard drive, copy the file system from the bad **
** drive to the good one -- dd_rescue is a good tool for **
** that -- and only then run this program. **
** If you are using the latest reiserfsprogs and it fails **
** please email bug reports to reiserfs-list@namesys.com, **
** providing as much information as possible -- your **
** hardware, kernel, patches, settings, all reiserfsck **
** messages (including version), the reiserfsck logfile, **
** check the syslog file for any related information. **
** If you would like advice on using this program, support **
** is available for $25 at www.namesys.com/support.html. **
*************************************************************

Will rebuild the filesystem (/dev/sdb1) tree
Will put log info to 'stdout'

Do you want to run this program?[N/Yes] (note need to type Yes if you do):Yes
Replaying journal: Done.
Reiserfs journal '/dev/sdb1' in blocks [18..8211]: 0 transactions replayed
###########
reiserfsck --rebuild-tree started at Mon Jan 11 11:13:29 2010
###########

Pass 0:
####### Pass 0 #######
Loading on-disk bitmap .. ok, 229524466 blocks marked used
Skipping 15663 blocks (super block, journal, bitmaps) 229508803 blocks will be read
0%..block 23371164: The number of items (256) is incorrect, should be (1) - corrected
block 23371164: The free space (0) is incorrect, should be (4048) - corrected
pass0: vpf-10110: block 23371164, item (0): Unknown item type found [0 0 0x1000000 ??? (15)] - deleted
block 23467445: The number of items (256) is incorrect, should be (1) - corrected
block 23467445: The free space (0) is incorrect, should be (4048) - corrected
pass0: vpf-10110: block 23467445, item (0): Unknown item type found [0 0 0x1000000 ??? (15)] - deleted
block 24152599: The number of items (256) is incorrect, should be (1) - corrected
block 24152599: The free space (0) is incorrect, should be (4048) - corrected
pass0: vpf-10110: block 24152599, item (0): Unknown item type found [0 0 0x1000000 ??? (15)] - deleted
.block 35113524: The number of items (256) is incorrect, should be (1) - corrected
block 35113524: The free space (0) is incorrect, should be (4048) - corrected
pass0: vpf-10110: block 35113524, item (0): Unknown item type found [0 0 0x1000000 ??? (15)] - deleted
block 35250046: The number of items (256) is incorrect, should be (1) - corrected
block 35250046: The free space (0) is incorrect, should be (4048) - corrected
pass0: vpf-10110: block 35250046, item (0): Unknown item type found [0 0 0x1000000 ??? (15)] - deleted
block 37513382: The number of items (256) is incorrect, should be (1) - corrected
block 37513382: The free space (0) is incorrect, should be (4048) - corrected
pass0: vpf-10110: block 37513382, item (0): Unknown item type found [0 0 0x1000000 ??? (15)] - deleted
.block 68136197: The number of items (256) is incorrect, should be (1) - corrected
block 68136197: The free space (0) is incorrect, should be (4048) - corrected
pass0: vpf-10110: block 68136197, item (0): Unknown item type found [0 0 0x1000000 ??? (15)] - deleted
block 68192301: The number of items (256) is incorrect, should be (1) - corrected
block 68192301: The free space (0) is incorrect, should be (4048) - corrected
pass0: vpf-10110: block 68192301, item (0): Unknown item type found [0 0 0x1000000 ??? (15)] - deleted
left 0, 24118 /secc
168886 directory entries were hashed with "r5" hash.
"r5" hash is selected
Flushing..finished
Read blocks (but not data blocks) 229508803
Leaves among those 248377
- leaves all contents of which could not be saved and deleted 8
Objectids found 168888

Pass 1 (will try to insert 248369 leaves):
####### Pass 1 #######
Looking for allocable blocks .. finished
0%....20%....40%....60%....80%....100% left 0, 84 /sec
Flushing..finished
248369 leaves read
248234 inserted
- pointers in indirect items pointing to metadata 1 (zeroed)
135 not inserted
non-unique pointers in indirect items (zeroed) 2382
####### Pass 2 #######

Pass 2:
0%....20%....40%....60%....80%...vpf-10260: The file we are inserting the new item (5 8814 0x15eb8001 IND (1), len 4048, location 48 entry count 0, fsck need 0, format new) into has no StatData, insertion was skipped
vpf-10260: The file we are inserting the new item (5 8814 0x1a9d4001 IND (1), len 4048, location 48 entry count 0, fsck need 0, format new) into has no StatData, insertion was skipped
vpf-10260: The file we are inserting the new item (5 8814 0x1adc8001 IND (1), len 4048, location 48 entry count 0, fsck need 0, format new) into has no StatData, insertion was skipped
vpf-10260: The file we are inserting the new item (5 8814 0x1bd98001 IND (1), len 4048, location 48 entry count 0, fsck need 0, format new) into has no StatData, insertion was skipped
vpf-10260: The file we are inserting the new item (5 8814 0x1c974001 IND (1), len 4048, location 48 entry count 0, fsck need 0, format new) into has no StatData, insertion was skipped
vpf-10260: The file we are inserting the new item (5 8814 0x1d15c001 IND (1), len 4048, location 48 entry count 0, fsck need 0, format new) into has no StatData, insertion was skipped
vpf-10260: The file we are inserting the new item (5 8814 0x1d550001 IND (1), len 4048, location 48 entry count 0, fsck need 0, format new) into has no StatData, insertion was skipped
.vpf-10260: The file we are inserting the new item (5 8814 0x1d944001 IND (1), len 4048, location 48 entry count 0, fsck need 0, format new) into has no StatData, insertion was skipped
vpf-10260: The file we are inserting the new item (5 8814 0x1dd38001 IND (1), len 4048, location 48 entry count 0, fsck need 0, format new) into has no StatData, insertion was skipped
100% left 0, 11 /sec
Flushing..finished
Leaves inserted item by item 135
Pass 3 (semantic):
####### Pass 3 #########
/curre/ORDENAR/LIVE-CD/martes.tar.bz2vpf-10680: The file [162552 162553] has the wrong block count in the StatData (799872) - corrected to (781480)
Flushing..finished
Files found: 149084
Directories found: 17768
Symlinks found: 2035
Others: 1
Pass 3a (looking for lost dir/files):
####### Pass 3a (lost+found pass) #########
Looking for lost directories:
Flushing..finished55, 43 /sec
Pass 4 - finished done 248222, 36 /sec
Deleted unreachable items 28
Flushing..finished
Syncing..finished
###########
reiserfsck finished at Mon Jan 11 16:35:11 2010
###########


Un reboot(no sería necesario, pero yo lo he echo para evitar sorpresas) y listo!
Saludos.

viernes, 8 de enero de 2010

Leer particiones reiserfs desde Windows

Supongo que esta utilidad no será utilizada por la gran mayoría de Linuxeros, pero a mí, particularmente me ha resultado muy util. YAReG permite explorar en modo sólo-lectura particiones reiserfs desde Microsoft Windows. Lo he probado desde Window$ XP Service Pack 3 y funciona realmente bien. Tomad nota para un futuro.

Saludos.

miércoles, 16 de diciembre de 2009

Comprobar conectividad UDP

Como estos días tengo bastante tiempo libre, he dedicado parte de este a hacer cosas que casi nunca hago, entre ellas configurar un servidor de Urban Terror. El servicio usa el motor del mítico QuakeIII, y escucha peticiones de conexión por el protocolo UDP en el puerto número 27960. Para comprobar si tenemos conectividad UDP, basta con instalar nmap y ejecutar:
pilarubio:/home/apermuy# nmap -p 27960 -sU -P0 11.22.33.44
El resultado sería:
Starting Nmap 4.62 ( http://nmap.org ) at 2009-12-16 23:08 CET
Interesting ports on ejemplo.permuy.org (11.22.33.44):
PORT STATE SERVICE
27960/udp open|filtered quake3
Saludos

martes, 1 de diciembre de 2009

cron-apt



Me ha llamado la atención un paquete para Debian GNU/Linux que no conocía: cron-apt. Básicamente lo usaremos para descargar paquetes e instalarlos posteriormente. Pero lo que más me ha gustado es lo que he leído en este blog : automatizar las descargas de las actualizaciones de seguridad, un puntazo!

En otro orden de cosas, ahora que tengo tiempo, he alquilado otro VPS en vpsville.ca, para jugar con Gentoo. Estoy tomando notas acerca de la configuración y espero tenerlas listas en unos días para escribir un post.

Saludos.

domingo, 29 de noviembre de 2009

Vacaciones...forzadas...

Mañana 30 de noviembre termino el contrato laboral que he firmado en enero de este mismo año. No voy a negar que he estado muy a gusto, implicado en el proyecto y disfrutando de mi trabajo durante estos 10 meses. Se abre una época de cierta incertidumbre, que intentaré afrontar con ilusión y sobre todo ganas. Dejando a un lado sentimentalismos, ahora tendré un poco de tiempo para escribir en este blog, algo que me apasiona, pero creo que por falta de tiempo y por falta de organización mental y personal he dejado de hacer. Muchas veces no escribo por que considero tonterías ciertas "recetas" o "cómos" que leo en la web y mejoro y/o adapto. A modo de mini-resumen, citaré webs/blogs/noticias/tecnologías y demás que me han parecido interesantes en las últimas dos semanas.
  • Remastersys: Una aplicación para Ubuntu que facilita la creación de Live CDs. La he probado y he generado dos "releases" de una modificación de Ubuntu con Apache2 y MySQL. Puedo comentar que los resultados han sido espectaculares. Os recomiendo una visita a la web del proyecto.
  • Menéame y la crisis 2.0. Interesante reflexión sobre la "crisis" de menéame y sus problemas con la censura.
  • Ubuntu One. Un servicio interesante, muy "on the cloud" para Karmic Koala. Este servicio, en su modalidad gratuíta, cede 2GB de espacio en los servidores de Canonical, para que podamos almacenar nuestros datos y sincronizarlos desde cualquier máquina, Ubuntu mediante, claro.
  • Nuevos blogs. Mañana realizaré el backup propio antes de abandonar mi puesto de trabajo e incluiré mi fichero de feeds actualizado.
Saludos.




lunes, 23 de noviembre de 2009

Nota mental MySQL

Hay mucha gente que "pasa olímpicamente" de cuidar la codificación de caracteres de sus documentos. Si ya es un lío modificar el juego de caracteres de un documento en concreto(a veces con iconv no obtenemos el resultado deseado), imaginaos la que se puede montar si tenemos una base de datos con miles de registros, y mostramos los resultados de una consulta vía web con codificación UTF-8 y los registros están codificados en ISO-8859-1. Sé que PHP, por ejemplo dispone de funciones que convierten "al vuelo" un juego de caracteres al otro, pero en mi caso, como con iconv, no obtenía los resultados esperados. En un intento casi desesperado he logrado convertir los caracteres que para UTF-8 son extraños de cadenas codificadas en ISO-8859-1 dentro de una base de datos MySQL. Para que no me vuelva suceder, y antes de asesinar a un usuario(luser), anoto lo siguiente.
ISO--UTF8
á => á
é => é
í => í
ó => ó
ú => ú
ñ => ñ


UPDATE unidades SET titulo = REPLACE (titulo, 'á', 'á');
UPDATE unidades SET titulo = REPLACE (titulo, 'é', 'é');
UPDATE unidades SET titulo = REPLACE (titulo, 'í', 'í');
UPDATE unidades SET titulo = REPLACE (titulo, 'ó', 'ó');
UPDATE unidades SET titulo = REPLACE (titulo, 'ú', 'ú')

Lo sé, no es el método más indicado, pero funciona!

domingo, 8 de noviembre de 2009

¿Cuales son las ventajas del software libre?

Estoy dándole vueltas al tema de realizar un díptico explicativo sobre software libre y demás, para la xornada de instalación de ubuntu, que celebraremos próximamente en Mugardos.
Este es un adelanto.
¿Cuales son las ventajas del software libre?

.- Económicas. La mayoría del software libre existente es gratuíto. No tendrás que pagar para poder utilizar las aplicaciones. Olvídate de cracks y versiones de prueba!
.- Libertad de uso. Podrás copiar, modificar y distribuír cómo quieras, cuando quieras y a quién tú quieras el software que descargues o tu mismo programes libremente. Sin miedo a la S.G.A.E y demás.
.- Uso estándares. Los formatos estándar permiten una interoperatividad más alta entre sistemas, evitando incompatibilidades. Infinidad de aplicaciones basan su desarrollo en estándares abiertos, accesibles por cualquier persona o entidad, y libre de costes econónicos. Al contrario,las aplicaciones propietarias, su código fuente en muchos casos es cerrado y su acceso para mejoras o estudio es muy difícil, e incluso en ocasiones de pago.
.- Localización. El software libre puede ser fácilmente traducido y adaptado, algo que dificilmente sucede con el software propietario.
.- Seguridad. El desarrollo de software por parte de decenas de personas, a veces incluso miles, facilita la localización de y corección de errores. Un error en una versión de software puede corregirse en menos de un día.
.- Personalización. El acceso libre y gratuíto al código fuente posibilita la adaptación de las aplicaciones.
.- Comunidad. La comunidad de programadores y usuarios garantiza la supervivencia del software libre. Si tienes dudas o consultas, Internet puede ayudarte a resolverlas; si deseas participar activamente, no son necesarios conocimientos técnicos para apoyar el software libre, comienza por utilizarlo; si aún deseas seguir colaborando, únete a un LUG(Linux User Group) local.

Pero el software libre es, sobre todo,un compromiso ético con un modelo de cultura, economía y sociedad más justos, donde los ordenadores sean herramientas al servicio de los ciudadanos, y el software que se ejecuta en estos, una plataforma libre para poder resolver nuestros problemas y ayudar a nuestros vecinos.

jueves, 5 de noviembre de 2009

gufw: Uncomplicated firewall


Los que llevan(llevamos) algún tiempo usando GNU/Linux seguro nos hemos visto en la tesitura de configurar un firewall. Iptables, sólo con nombrarlo, a veces asusta. Debes tener unos conocimientos sólidos del protocolo TCP/IP así como unas buenas nociones sobre redes y enrutamiento.

No recuerdo bien si lo he leído en alguna web o blog, o simplemente "jugando" con synaptic. Ubuntu desde la versión 8.04, incorporá una implementación de iptables "sencilla" para consola, llamada ufw(uncomplicated firewall). En lugar de las kilométricas cadenas de iptables, las acorta, facilitando así la administración de la máquina en cuestión. Hablamos, por supuesto, de máquinas de escritorio; desconozco aún si existe versión para servidores, aunque para esto tenemos fwbuilder , claro.

[root@patriciaconde] ufw allow http

En este ejemplo habilitaríamos todo el tráfico http.

[root@patriciaconde] ufw allow from 192.168.10.0/24 proto tcp to any port http

En este ejemplo se permite el tráfico desde(from) la red 192.168.10.0/255.255.255.0 por el protocolo http(tcp 80).

Con gufw nos olvidamos(sólo por un momento) de la consola y podremos "disfrutar" de una versión GTK(lo siento KDE users) muy sencilla. Más información en la web del proyecto.

lunes, 2 de noviembre de 2009

Xornadas GNU/Linux Ateneo Ferrol

El sábado 31 de Octubre se celebraron las xornadas de GNU/Linux en el Ateneo Ferrolán. La experiencia fue positiva, poca gente pero muy buen ambiente.

A las 08:45 partí rumbo a Ferrol y a las 9:20 estaba ya con @kutus desayunando en el BLABLA, una cafetería un poco pijota, pero tienen Wifi!
A las 10:00 comenzaba el evento y nos encontramos con @xoanferrol, con el que habíamos quedado vía twitter.

En resumen se trataba de una install party de Ubuntu 9.10. La noche anterior la había instalado en el macbook, así que me acerqué a curiosear y "chupar del canuto de Internet" para descargar unos paquetes en compañía de unos cuantos freaks.
Hubo un detalle que me llamó poderosamente la atención. La gente que ayuda con la instalación copiaba sin más comando y los pegaba en Gnome terminal, sin preguntarse el porqué ¿?¿? . Supongo que no todo el mundo ve las cosas con el mismo prisma que yo. A continuación voy a hacer una enumeración de los paquetes e historias que me llamaron la atención o que simplemente desconocía.
  • Feedly : Complemento de Firefox que permite gestionar tus feeds rss.
  • PlayOnLinux: Frontend para Wine. Espectacular.
  • Varkon: Un CAD libre.
La xornada finalizó a las 14:00 horas, pero tuve que salir a las 13:00 sin nada más que reseñar.

miércoles, 28 de octubre de 2009

Actualizar desde Ubuntu 9.04 a 9.10

Ubuntu 9.10 Countdown

Mañana Canonical liberará Ubuntu 9.10 y yo tendré que comerme todos los comentarios y post que he escrito, por que hay que reconocer que han hecho un gran trabajo.(Aunque prefiero Debian GNU/Linux).
Si no puedes esperar a descargar la ISO, y deseas actualizar vía apt-get, he leído esta mañana los pasos para actualizar la distribución desde una versión 9.04 a 9.10. Están inglés...Si os gusta más el método "consola-friki-mola-más", haciendo esto no tendréis muchos(espero) problemas.

  • aptitude install update-manager-core
  • do-release-upgrade -d

Siguiendo los pasos, y dependiendo de la conexión a Internet, se descargará 955 Mb en X minutos y comenzará el proceso de actualización. No sé si será necesario recordar que en estos casos, realizar un backup(copia de seguridad) es que más recomendado.

martes, 27 de octubre de 2009

Gracias!

Gracias a la gente de los foros de moodle.org en español he configurado la automatriculación y autenticación de moodle contra la BBDD de Drupal.En agradecimiento he subido este documento que ponga a disposición de la comunidad.

martes, 13 de octubre de 2009

Exportar a CSV desde MySQL vía Bash

Desde hace unos meses trabajo casi a diario con uno de los mejores LMS libres : Moodle. En un de los servidores web tenemos instalado Drupal, un buen CMS con un montón de funcionalidades por descubrir(al menos para mí). Pues bien, necesito que todos los usuarios que tenga cuenta en el webserver de Drupal, tengan automáticamente también una cuenta en Moodle. Una de las características que más me gusta de Moodle es la versatilidad en cuanto a la autenticación de usuarios : LDAP, Radius,Email, POP3... Tiene una opción muy útil, que permite subir los usuario en formato CSV. Si logramos extraer los campos necesarios de la BBDD Drupal tendremos la mitad de la tarea finiquitada. De momento sólo he conseguido automatizar la exportación a CSV. Evidentemente el script está muy poco trabajado, pero funciona.

#!/bin/bash
rm -rf /tmp/csv-tmp.txt
mysql --user=drupal --password=mipass drupal<SELECT name,pass,mail,name,language INTO OUTFILE'/tmp/csv-tmp.txt' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' FROM users WHERE uid != 0;
EOFMYSQL
echo "username,password,email,firstname,lastname" > /tmp/csv-final.txt
cat /tmp/csv-tmp.txt >> /tmp/csv-final.txt
cp /tmp/csv-final.txt /home/alberto/Escritorio/csv-final.txt
chown alberto /home/alberto/Escritorio/csv-final.txt

domingo, 11 de octubre de 2009

Modo resumen ON

Voy a resumir lo que me ronda por la cabeza o en lo que estoy "liado" últimamente.
  • Curso PHP-XML. Pasada ya la fase de CSS y HTML, la semana pasada hemos comenzado a ver XML. Estoy barajando las posibilidades de implementar XML en un listado desde MySQL para unos temas laborales.El curso es bastante sencillo, digamos que el nivel es bastante básico. Últimamente no veo demasiada oferta formativa, fuera de las clásicas cerfiticaciones que valen un dineral, con nivel medio o alto. En fin, una pena.
  • Backups. La semana pasada a estas horas me estaba recuperando del susto de haber perdido los datos de un webserver que administro. Las copias de seguridad las llevaba(llevo) al día, y gracias a eso, apenas se han perdido datos: los modificados entre un backup y el otro. Tar y mysqldump han salvado la máquina.No pude dejar de pensar en la importancia de la correcta realización y verificación de los backups. De momento, y hasta hoy, estoy satisfecho(ego++) en este aspecto.
  • Apache2. Estoy un poco enfadado con Apache. Es un goloso! Estuve leyendo y probando configuraciones para mod_cache, y es probable que la semana que viene lo instale en unos de los webservers que administro.
  • Install Party Ubuntu 9.10. Se confirma la fecha del 14 de Noviembre de 11:00 a 13:00 horas en el Salón de Plenos del Concello de Mugardos. Más información proximamente en la web de www.comunidadeozulo.org.

jueves, 24 de septiembre de 2009

La (mini) biblia de VIm


Ir a linea al iniciar: vim +36 foo.c
Ir a linea en insercion: :14
Buscar: /cadena , con n la siguiente
SHITF-N para atrás
Numeros de linea: :set number
Moverse hasta el fin de la línea - $
Moverse hasta el principio de la línea - 0
Moverse hasta la siguiente palabra - w
Moverse hasta la anterior palabra - b
Moverse hasta la siguiente palabra* - W
Moverse hasta la anterior palabra* - B
Moverse a la línea n*** - nG
Moverse hasta el final de la siguiente palabra - e
Moverse hasta el final de la siguiente palabra* - E
Encontrar el siguiente caracter c en la línea actual - fc
Encontrar el anterior caracter c en la línea actual - Fc
Llegar hasta justo antes del siguiente caracter c - t
Llegar hasta justo después del anterior caracter c - T
Encontrar el paréntesis contrario** - %
Moverse hasta la siguiente frase - (
Moverse hasta la anterior frase - )
Moverse hasta el anterior párrafo - {
Moverse hasta el siguiente párrafo - }
Moverse hasta la parte superior de la pantalla - H
Moverse hasta la parte media de la pantalla - M
Moverse hasta la parte inferior de la pantalla - L
Avanzar página - ^F
Retroceder página - ^B
Deshacer el último cambio - u
Deshacer todos los cambios de la línea actual - U
Redibujar la pantalla - ^L
Ver información del archivo actual - ^G
Reemplazar un caracter - r
Sobreescribir texto - R
Borrar el caracter actual y entrar en modo inserción - s
Cambiar la línea actual* - S
Cambiar entre mayúsculas y minúsculas - ~
Borrar texto (como el BackSpace) - X
(Sólo en vim) marcar bloque - v, V, ^V
uscar texto - /texto
epetir última búsqueda - n
Repetir última búsqueda en dirección contraria - N
Repetir última búsqueda hacia abajo - /
Repetir última búsqueda hacia arriba - ?
Repetir último cambio - .
Siguiente palabra (Modo inserción) ** - ^N
Anterior palabra (Modo inserción) ** - ^P

VI CiberEncontro Kernel 2009 - Mugardos - II

Pasados ya unos días desde que finalizó el Kernel 2009, toca reflexionar. Esta edición, a mi modo de ver, a mantenido el nivel de las anteriores, pero será cuestión de pensar para el próximo año, actividades y charlas que puedan mejorar aún más el evento.
La verdad es que la edición de 2009 ha sido la edición más Linuxera de todas. Pude contar a Pablo,Evaristo,Amador,Kutus,Iñaki Quenerapu,Alberto,Carola,Rodrigo,Keko y Aaron como usuarios de GNU/Linux durante la Party, bueno e Iván a última hora del sábado,claro. Hablo sólo de la planta baja, por que en la de arriba algún Linuxero había, y por supuesto algún MacOSX user. Digo por supuesto, por que siempre se suelen pasar algunos. Lejos de pretender ser una Linux Party, no deja de llenarme de satisfacción que la gente pueda usar su cerebro, huír del "sendero de los borregos" y decidir libremente qué software correr en su máquina. Enhorabuena a tod@s!

Todos los servicios de red: http,ftp,proxy-fw,dns,dhcp y demás, corrían en dos máquinas Debian GNU/Linux 5.0.3 stable. Los resultados fueron más que satisfactorios. La características de la máquina principal son: Procesador Intel Pentium 4 3,0 Ghz, 1 GB RAM, 1 HD SATA 200Gb, 1 Interfaz Gb Ethernet, 1 Interfaz 10/100 Mb Ethernet. Para 60 usuarios, corriendo Squid 2.7, Bind 9.5 , Cherokee 0.9 y dhcp3-server, por momentos se quedaba casi si RAM pero nunca se notó en el calidad del servicio. Ni un sólo reinicio en 3 días. En la segunda máquina, instalamos un Bind 9.5 esclavo del primero, con vsfptd y cherokee. Esta máquina alojaba la web interna del evento, así cómo el servicio ftp,para subir las fotos, vídeos y concursos. Con un procesador Intel Celeron 1 Ghz y 256Mb de RAM, los resultados fueron excelentes.

Si os interesan los ficheros de configuración, a mi modo de ver los más interesante son el squid.conf(post) y el script de iptables del proxy-firewall,ningún problema en facilitarlos.

Saludos.

sábado, 19 de septiembre de 2009

VI CiberEncontro Kernel 2009 - Mugardos

Son las 04:22, a mi derecha un Macbook "pinchando" Matrix Reloaded; ante mi, 38TB de información, y una de las interfaces de red de mi máquina pinchadas a un switch gigabit. Conclusión: esto va a ser, si no lo es ya, una auténtica jauría de GB y TB.

Entrando en materia, decir que he configurado un "clásico" proxy-firewall con Debian GNU/Linux 5.0.3 Stable, nada de historias. He instalado todo el software vía apt-build y de momento el resultado es más que aceptable. Esta es la primera edición en la que durante todo el evento los routers adsl está n balanceados, y se puede decir que la conexión hacia Internet ha mejorado con respecto a años anteriores.Iptables con DROP, Bind9 cacheando las consultas DNS y Squid ayudan bastante. Ni que decir tiene que el direccionamiento es vía DHCP, y claro, necesitabamos (Organización) "algo" que nos diese un "canuto extra" de salida a Internet. ¿Cómo? Facil! Asignando las direcciones ips fijas vía DHCP y con un script que se ejecuta cada 300 segundos, inserte estas direcciones en un ACL ede Squid que nos llame a un Delay Pool. Suena un poco enrevesado, pero con este script...

#!/bin/bash
FICHERO_SQUID=/etc/squid/canuto
rm -rf $FICHERO_SQUID
touch $FICHERO_SQUID
for ip in `cat /etc/dhcp3/dhcpd.conf|grep fixed-address|awk '{ print $2 }'|cut -d ";" -f1`
do
echo $ip >> $FICHERO_SQUID
done
/etc/init.d/squid reload 2>&1 > /dev/null






#################################################
#
#FICHERO CONFIGURACION SQUID KERNEL 2009
#
#################################################
#Parametros basicos
visible_hostname sauron.kernel2009
http_port 3128 transparent
httpd_suppress_version_string on
#
#
#Pametros de la cache
cache_mem 256 MB
cache_dir aufs /cache 2048 512 128
cache_mgr info@comunidadeozulo.org
coredump_dir /var/spool/squid/coredumpdir
acl manager proto cache_object
maximum_object_size 65535 KB
cache_access_log /var/log/squid/access.log
#
#
#Parametros varios
half_closed_clients off
ftp_user anonymous@nospam.com
error_directory /usr/share/squid/errors/Spanish
#
#
##############################################
# #
#TUNNIG DE TIEMPOS DE REFRESCO DE FICHEROS #
# #
##############################################
#Refresco de la cache MIN PORCENTAJE MAX(MIN)
#
#1440 = 1 dia
#2880 = 2 dias
#10080 = 7 dias
#20160 = 14 dias
#30240 = 21 dias
#
#Ficheros comunes en parties
refresh_pattern \.iso$ 2880 80% 10080
refresh_pattern \.deb$ 2880 80% 10080
refresh_pattern \.tar.gz$ 2880 80% 10080
refresh_pattern \.gz$ 2880 80% 10080
refresh_pattern \.bz2$ 2880 80% 10080
refresh_pattern \.exe$ 2880 80% 10080
#
#
#Ficheros de imagenes
refresh_pattern \.jpg$ 1440 50% 2880
refresh_pattern \.jpeg$ 1440 50% 2880
refresh_pattern \.gif$ 1440 50% 2880
refresh_pattern \.bmp$ 1440 50% 2880
refresh_pattern \.png$ 1440 50% 2880
refresh_pattern \.svg$ 1440 50% 2880
refresh_pattern \.tif$ 1440 50% 2880
refresh_pattern \.tiff$ 1440 50% 2880
#
#
#Documentos
refresh_pattern \.xls$ 1440 80% 2880
refresh_pattern \.doc$ 1440 80% 2880
refresh_pattern \.odt$ 1440 80% 2880
refresh_pattern \.rtf$ 1440 80% 2880
refresh_pattern \.jpeg$ 1440 80% 2880
refresh_pattern \.pdf$ 1440 80% 2880
#
#
#Ficheros comprimidos
refresh_pattern \.zip$ 2880 80% 10080
refresh_pattern \.rar$ 2880 80% 10080
refresh_pattern \.arj$ 2880 80% 10080
####################################
#
#LISTAS CONTROL ACCESO -ACLs
#
####################################
#Definicion de puertos seguros
acl SSL_ports port 443 563 8080
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 20
acl Safe_ports port 443
acl Safe_ports port 563
acl Safe_ports port 777
acl Safe_ports port 1024-65535
acl CONNECT method CONNECT
#############################
acl all src 0.0.0.0/0.0.0.0
acl localhost src 127.0.0.1/255.255.255.255
acl lan src 192.168.2.0/255.255.255.0
acl canuto src "/etc/squid/canuto"
acl denywords url_regex "/etc/squid/denywords"
acl denydomains dstdom_regex "/etc/squid/denydomains"
acl sincache dstdom_regex "/etc/squid/sincache"
####################################
#
#CONTROL ANCHO BANDA
#
####################################
delay_pools 2
#
#
#Para otros
delay_class 2 1
delay_parameters 2 407000/1048576
delay_access 2 allow canuto
#Para todos
delay_class 1 1
delay_parameters 1 256000/1048576
delay_access 1 allow lan !canuto
#
#
#
#
http_access deny denydomains
http_access deny denywords
http_access allow localhost
http_access allow manager localhost
http_access allow lan
http_access deny CONNECT !SSL_Ports
http_access deny CONNECT !Safe_Ports
http_access deny all

miércoles, 9 de septiembre de 2009

No sólo de Apache2 vive el hombre...




A raíz de una serie de problemas en el servidor VPS que aloja www.permuy.org, www.comunidadeozulo.org y demás, decido prescindir de Apache2. La máquina no está sobrada de RAM, y Apache2 se encarga de contribuir a ello, consumiendo nada más arrancas el servicio hasta 60Mb! Si no lo veo no lo creo!

Me habían recomendado lighttpd, pero en realidad, siempre había leído mejores críticas en cuanto a velocidad se refiere de cherokee. Por lo que he podido comprobar(a ojo) el consumo de memoria cherokee es mas bajo que el de Apache. Pero en velocidad, ni punto de comparación. Al final sigo con Apache en www.permuy.org, pero en casa y en la oficina he migrado ya ha cherokee.

¿Qué me ha gustado del Cherokee Project?
  • Facilidad de instalación: wget, configure, make y make install.
  • No tiene dependencias externas, salvo las librerías de C, claro.
  • Soporta: FastCGI, SCGI, PHP, CGI, SSI, TLS and SSL.
  • Muy rápido, tanto para servir páginas como para reiniciar el servicio.
  • Administración muy sencilla vía web a través de cherokee-admin.
  • La documentación está muy bien estructurada y muy bien redactada.
  • En GNU/Linux funciona de maravilla.
Pruebas de rendimiento.

He realizado dos pruebas con ab en Apache 2.2.x y Cherokee 0.99.24 y la verdad es que el segundo "se come" al primero. La máquina en cuestión es:
S.O : Ubuntu 9.04
Kernel : Linux alberto 2.6.28-15-generic
RAM: 1GB DDR2 533
Procesador: Intel(R) Core(TM)2 Duo CPU E4600 @ 2.40GHz

Prueba 1
Criterio: 1000 peticiones y concurrencia = 10
Resultados para Apache 2.2.11

Server Software: Apache/2.2.11
Server Hostname: localhost
Server Port: 80

Document Path: /drupal2
Document Length: 354 bytes

Concurrency Level: 10
Time taken for tests: 0.272 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Non-2xx responses: 1002
Total transferred: 649296 bytes
HTML transferred: 354708 bytes
Requests per second: 3670.06 [#/sec] (mean)
Time per request: 2.725 [ms] (mean)
Time per request: 0.272 [ms] (mean, across all concurrent requests)
Transfer rate: 2327.11 [Kbytes/sec] received

Resultados para Cherokee 0.99.24

Server Software: Cherokee/0.99.24
Server Hostname: localhost
Server Port: 80

Document Path: /drupal2
Document Length: 293 bytes

Concurrency Level: 10
Time taken for tests: 0.219 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Non-2xx responses: 1004
Total transferred: 544168 bytes
HTML transferred: 294172 bytes
Requests per second: 4557.68 [#/sec] (mean)
Time per request: 2.194 [ms] (mean)
Time per request: 0.219 [ms] (mean, across all concurrent requests)
Transfer rate: 2422.01 [Kbytes/sec] received


Tanto la tasa de transferencia con el tiempo empleado en realizar las peticiones son menores, si bien es cierto que con 1000 peticiones pocas conclusiones se pueden sacar, de momento Apache 0 - 1 Cherokee. Ahora vamos con la prueba 2, con 100000 peticiones y concurrencia = 10.

Prueba 2
Criterio: 100000 peticiones y concurrencia = 10
Resultados para Apache 2.2.11

Server Software: Apache/2.2.11
Server Hostname: localhost
Server Port: 80

Document Path: /drupal2
Document Length: 354 bytes

Concurrency Level: 10
Time taken for tests: 19.781 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Non-2xx responses: 100003
Total transferred: 64801944 bytes
HTML transferred: 35401062 bytes
Requests per second: 5055.42 [#/sec] (mean)
Time per request: 1.978 [ms] (mean)
Time per request: 0.198 [ms] (mean, across all concurrent requests)
Transfer rate: 3199.23 [Kbytes/sec] received

Resultados para Cherokee 0.99.24

Server Software: Cherokee/0.99.24
Server Hostname: localhost
Server Port: 80
Document Path: /drupal2
Document Length: 293 bytes
Concurrency Level: 10
Time taken for tests: 7.734 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Non-2xx responses: 100000
Total transferred: 54200000 bytes
HTML transferred: 29300000 bytes
Requests per second: 12930.18 [#/sec] (mean)
Time per request: 0.773 [ms] (mean)
Time per request: 0.077 [ms] (mean, across all concurrent requests)
Transfer rate: 6843.90 [Kbytes/sec] received

Llama mucho la atención que mientras Apache2 es capaz de "responder" poco más de 5000 peticiones por segundo, cherokee llega casi a las 13.000. Ni hablar del tiempo empleado, Apache a tardado más de 11 segundos! 11 segundo es mucho tiempo, pero mucho mucho! ¿Algo más?
Enhorabuena a Alvaro Lopez, por su gran trabajo realizado desde 2001.

miércoles, 2 de septiembre de 2009

Análisis de textos,USC,examenes...Parte II

Acabo de hablar con Rosa. Ha salido del examen oral. No sabe aún la nota, pero sí le han dicho que ha aprobado. Enhorabuena! Se ha hecho justicia!

Análisis de textos,USC,examenes...

"Me comenta mi hermana que tiene una asignatura de Linux, una optativa, la ha suspendido y me comentaba si le podrías echar una mano". Así comenzaba una de las mayores sorpresas de este año. La respuesta estaba cantada, "Dile que me llame, tomamos algo y lo hablamos...". Lo dicho, quedamos y me comenta Rosa "Teño unha asignatura de Linux, facemos cousas na consola e non teño nin idea. O exame será oral a comezos de setembro, mira esta páxina web http://gramatica.usc.es/~gamallo/ , que é donde tes a información sobre a Análise Computadorizada de Textos Hispánicos". Mi sopresa es mayúscula cuando reviso el contenido del curso. El docente les ha enseñado Perl, para extraer información de cualquier texto. La frustración de Rosa : ponerse a programar,;y claro, si estudias Hispánicas, comprendo la frustración es más que comprensible.
El examen oral está disponible aquí, y según me comenta, se deben explicar los scripts el día del examen.
¿Cómo analiza un texto? Lo primero que hace es "tokenizar" el texto, es decir, escribir en cada línea una palabra.El docente les ha dejado un script, llamado tokenizer.perl, que realiza esta tarea. Ejemplo con el fichero texto.txt que contiene "Ni nombre Alberto" tendríamos un fichero de salida del tipo:
[alberto@pilarrubio]cat texto.txt|./tokenizer.perl > texto.tokenizado && cat texto.tokenizado.

Mi
nombre
es
Alberto

El contenido del fichero tokenizer.perl es el siguiente:

#!/usr/bin/perl -w


#Tokenizer:
#lê um ficheiro texto linha a linha
#Separa os símbolos especiais
#quebra as linhas cada vez que encontra um espaço em branco
#escreve um tokem ou símbolo por linha

$Separador = "[\.\,\;\:\«\»\&\%\+\=\$\(\)\<\>\!\¡\?\¿\\[\\]]" ;

while ($line=) {
chop($line);

$line =~ s/($Separador)/ $1 /g;
#$line =~ s/\s+/ /g;


@ListaDeTokens = split(" ", $line);
foreach $token (@ListaDeTokens) {

print "$token\n";

}
}


print STDERR "Fim do tokenizer\n";



El problema viene cuando nos pide que en un texto se distinga entre nombres propios, verbos y demás. Para ello, después de tener el texto "tokenizado", debemos "Taggearlo" con una aplicación de análisis morfológio llamada FreeLing, desarrollada por el Centre de Tecnologies i Aplicacions del Llenguatge i la Parla (TALP). He intentado instalarlo en Ubuntu 9.04 y en Debian 5.0 Testing, pero lamentablemente el link de descarga no funcionaban. Decidí ponerme en contacto con la gente del TALP, y tengo que decir, que, aunque no se ha resuelto aún el problema, la respuesta ha sido muy rápida. Así da gusto. Continuamos. Al final, gracias a Dorfun encontré FreeLing empaquetado en .deb en esta URL.
Taggeamos el texto:
[alberto@pilarrubio] cat texto.tokenizado|freeling-es > texto.tagged
cuyo resultado es un texto de nombre texto.tagged con el siguiente contenido.

PRO Mi
NOM nombre
V es
NOM Alberto


A continuación ya tenemos el texto tagged y podemos filtrar por el criterio que nos pida el docente, en este caso, o que el usuario decida.El enunciado del ejericio 4 es el siguiente:

4.-Cuenta y escribe de mayor a menor frecuencia todos los nombres propios.


El comando, después de tener taggeado el texto sería algo así:
[alberto@pilarrubio] cat texto.tagged |.04.perl
Donde 04.perl :

#!/usr/bin/perl
$token="";
while ($linha = ) {
chomp $linha;
if ($linha ne "") {
($token,$etiqueta) = split (" ", $linha) ;



if ($etiqueta =~ m/^NOM/ ) {
$contarNomes++;
$contar{$token}++ ;
}

}


}

if (defined $contarNomes) {
print "Ocorrencias de nomes: $contarNomes\n";
}
foreach $tokenDiff (sort {$contar{$b} <=>
$contar{$a} }
keys %contar ) {

print "$tokenDiff\t$contar{$tokenDiff}\n";
}



Si tenéis curiosidad por el tema , os remito a la web de Pablo Gamallo, el docente del curso. La casualidad me lleva a leer vía RSS una noticia que anuncia un curso de verano de la USC : "O Software Libre e a Lingüistica".
Para finalizar el post, dar mi enhorabuena al docente, que , en mi modesta opinión, se ha currado mucho el temario del curso, no tanto por la calidad de los scripts, que sí la tiene, sino por la aplicación de un lenguaje de programación, Perl, en este caso, al análisis lingüístico de textos. En segundo lugar agradecer a Rosa la oportunidad de poder ayudarla a, por lo menos, intentar aprobar la asignatura. Ahora mismo la deben de estar examinando. No suelo desear suerte a nadie en ningún examen, sólo justicia, y si se hace justicia debe aprobar: el esfuerzo (casi) siempre tiene recompensa.

Cambios en el blog

En la vida hay que ser justos, por eso he decidido quitar el logo de GNU. No sería justo "alardear" de gnuismo y demás, si uso MacOSX,FreeBSD,Debian GNU/Linux y Ubuntu.Por eso ha cambiado el Ñu por el clásico Live Free or Die de Unix. Esto no cambia mi modo de pensar ni de actuar, simplemente hablamos de ser justos.

miércoles, 19 de agosto de 2009

Nmap 5.0, actualízate si puedes.

No es la primera vez en este blog que hablo sobre Nmap. En la oficina uso Ubuntu 9.04, he tenido que aparcar Debian Testing/Unstable por haber metido la pata mezclando repositorios y compilando y recompilando kernels. El caso es que necesitaba usar nmap para hacer "unas cosillas". Todo correcto; ya conocía este software desde hace muchos años. No sé por qué, me daba la impresión de que el tiempo de espera para los escaneos era demasiado. Comprobemos la versión instalada.

root@alberto:/# /usr/bin/nmap -V

Nmap version 4.76 ( http://nmap.org )

Ahora toca visitar la web de nmap[ http://insecure.org/nmap ] , para comprobar cual es la última versión. Efectivamente, han liberado la versión 5.0, que como es de esperar se puede descargar desde la propia web. Llegados a este punto, la pregunta es: ¿Debo instalar la versión 5.0? ¿Qué mejoras existen respecto a la versión 4.x? Nmap está muy bien documentado, y podéis ver más información acerca de la versión 5.0 aquí. Todo esto está muy bien, pero en la práctica...
He realizado unas pruebas muy sencillas para comprobar en persona, las diferencias en la versión 5.0 y 4.76-0ubuntu4, que básicamente han consistido en:
  • Descargar fuentes y compilar nmap 5.0
  • Escaneo gateway(nmap sin parámetros)
  • Escaneo Sistema Operativo del gateway (nmap -O)
  • Escaneo Sistema Operativo y version del software del gateway (nmap -A -T4)
Compilando nmap.
Muy sencillo. Los pasos son los siguientes:
  • Descargamos fuentes:

[root@alberto] wget http://nmap.org/dist/nmap-5.00.tar.bz2

  • Descomprimimos y desempaquetamos

[root@alberto] tar -xjpf nmap-5.00.tar.bz2

  • Compilamos e instalamos

[root@localhost]./configure && make && make install


Llegados a este punto, tenemos el binario de la version 5.00 en /usr/local/bin/nmap y el de la version 4.76 en /usr/bin/nmap.

root@alberto:/# /usr/bin/nmap -V

Nmap version 4.76 ( http://nmap.org )

root@alberto:/home/alberto# /usr/local/bin/nmap -V

Nmap version 5.00 ( http://nmap.org )


Ya podemos comenzar...

Escaneo gateway(nmap sin parámetros)

Resultados con la versión 4.76:

root@alberto:/# time /usr/bin/nmap -e eth0 100.100.100.100

Starting Nmap 4.76 ( http://nmap.org ) at 2009-08-19 13:37 CEST
Interesting ports on 100.100.100.100:
Not shown: 998 filtered ports
PORT STATE SERVICE
113/tcp closed auth
541/tcp open uucp-rlogin
MAC Address: 00:09:0F:37:F0:C6 (Fortinet)

Nmap done: 1 IP address (1 host up) scanned in 4.18 seconds

real 0m4.194s
user 0m0.236s
sys 0m0.036s

Resultados con la versión 5.00:
root@alberto:/# time nmap -e eth0 100.100.100.100

Starting Nmap 5.00 ( http://nmap.org ) at 2009-08-19 13:36 CEST
Interesting ports on 100.100.100.100:
Not shown: 998 filtered ports
PORT STATE SERVICE
113/tcp closed auth
541/tcp open uucp-rlogin
MAC Address: 00:09:0F:37:F0:C6 (Fortinet)

Nmap done: 1 IP address (1 host up) scanned in 4.95 seconds

real 0m4.956s
user 0m0.224s
sys 0m0.032s

Llama la atención que la versión 5.00 ha tardado 0,77 segundos más que la 4.76. En principio la 4.76 se anotaría el primer punto. Personalmente creo que no, ya lo explicaré más adelante.Vemos que ha identificado bien el modelo del gateway y poco más podemos extraer(si buscarle los tres pies al gato, claro).

Escaneo Sistema Operativo del gateway (nmap -O)
Resultados con la versión 4.76:

root@alberto:/# time /usr/bin/nmap -e eth0 -O 100.100.100.100

Starting Nmap 4.76 ( http://nmap.org ) at 2009-08-19 13:38 CEST
Insufficient responses for TCP sequencing (2), OS detection may be less accurate
Interesting ports on 100.100.100.100:
Not shown: 998 filtered ports
PORT STATE SERVICE
113/tcp closed auth
541/tcp open uucp-rlogin
MAC Address: 00:09:0F:37:F0:C6 (Fortinet)
Aggressive OS guesses: Check Point ZoneAlarm Z100G firewall (88%), Actiontec GT701 DSL modem (87%), HP Brocade 4100 switch; or Actiontec MI-424-WR, Linksys WRVS4400N, or Netgear WNR834B wireless broadband router (87%), F5 BIG-IP Local Traffic Manager load balancer (87%), HP 4200 PSA (Print Server Appliance) model J4117A (87%), DD-WRT v23 (Linux 2.4.34) (87%), MontaVista Linux 2.4.17 (87%), Telkom Mega 100 WR DSL modem (Linux 2.4.17_mvl21-malta-mips_fp_le) (87%), FreeBSD 6.2-RELEASE (87%), OpenBSD 4.3 (87%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop

OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 8.96 seconds

real 0m8.979s
user 0m0.388s
sys 0m0.064s


Resultados con la versión 5.00

root@alberto:/# time /usr/local/bin/nmap -e eth0 -O 100.100.100.100

Starting Nmap 5.00 ( http://nmap.org ) at 2009-08-19 13:38 CEST
Interesting ports on 100.100.100.100:
Not shown: 998 filtered ports
PORT STATE SERVICE
113/tcp closed auth
541/tcp open uucp-rlogin
MAC Address: 00:09:0F:37:F0:C6 (Fortinet)
Device type: firewall
Running: Fortinet embedded
OS details: Fortinet FortiGate-100A firewall
Network Distance: 1 hop

OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.30 seconds

real 0m6.319s
user 0m0.432s
sys 0m0.104s


Primer punto para la versión 5.00. En realidad, a mi modo de ver, este vale por dos. 2,66 segundos menos en detectar la versión del S.O! Aún encima la ha clavado:

OS details: Fortinet FortiGate-100A firewall

Esto no es mérito sólo de Fyodor(programador principal del proyecto), sino de la gente que se ha currado libpcap. Libpcap es una librería que capturar paquetes en redes de datos para plataformas tipo Unix(también en Sistemas Windows). La versión de esta librería en nmap 4.76 es la 0.8:

root@alberto:/tmp# ldd /usr/bin/nmap
linux-gate.so.1 => (0xb80dd000)
libpcre.so.3 => /lib/libpcre.so.3 (0xb8097000)
libpcap.so.0.8 => /usr/lib/libpcap.so.0.8 (0xb8066000)
libssl.so.0.9.8 => /lib/i686/cmov/libssl.so.0.9.8 (0xb801e000)
libcrypto.so.0.9.8 => /lib/i686/cmov/libcrypto.so.0.9.8 (0xb7ed2000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7ece000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7ddf000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7db9000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7da9000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7c46000)
libz.so.1 => /lib/libz.so.1 (0xb7c30000)
/lib/ld-linux.so.2 (0xb80de000)

, mientras que en la versión de nmap 5.00 es la 0.97:

root@alberto:/media/bodega/misc/nmap-5.00/libpcap# cat CHANGES |head
@(#) $Header: /tcpdump/master/libpcap/CHANGES,v 1.59.2.11 2007/07/24 02:27:32 mcr Exp $ (LBL)

Wed. July 23, 2007. mcr@xelerance.com. Summary for 0.9.7 libpcap release
(...)

Es de suponer que las mejoras, a parte de los bug-fix, son considerables. Enhorabuena a la gente de TCPDUMP.

Escaneo S.O y versión del software del gateway (nmap -A -T4)
Resultados con la versión 4.76:

root@alberto:/# time /usr/bin/nmap -e eth0 -sP 100.100.100.0/24

Starting Nmap 4.76 ( http://nmap.org ) at 2009-08-19 13:43 CEST
Host 100.100.100.5 appears to be up.
MAC Address: 00:09:0F:37:F0:C6 (Fortinet)
Host 100.100.100.12 appears to be up.
MAC Address: 00:50:56:A9:4D:AB (VMWare)
Host 100.100.100.19 appears to be up.
MAC Address: 00:0B:CD:1B:85:4D (Sun)
Host 100.100.100.61 appears to be up.
MAC Address: 00:50:AA:20:61:83 (Konica Minolta Holdings)
Host 100.100.100.64 appears to be up.
MAC Address: 00:00:74:93:DA:76 (Ricoh Company)
Host 100.100.100.118 appears to be up.
MAC Address: 00:33:64:B9:8A:C8 (Sun)
Host 100.100.100.153 appears to be up.
MAC Address: 00:50:56:A9:59:98 (VMWare)
Host 100.100.100.202 appears to be up.
MAC Address: 00:33:64:B9:9A:E9 (Unknow)
Host 100.100.100.204 appears to be up.
MAC Address: 00:33:64:B9:96:96 (Unknow)
Host 100.100.100.212 appears to be up.
MAC Address: 00:33:64:B9:94:1A (Unknow)
Host 100.100.100.214 appears to be up.
MAC Address: 00:33:64:B9:9A:E8 (Unknow)
Host 100.100.100.225 appears to be up.
MAC Address: 00:33:64:B9:91:91 (Unknow)
Host 100.100.100.239 appears to be up.
MAC Address: 00:50:56:A9:1A:B8 (VMWare)
Nmap done: 256 IP addresses (13 hosts up) scanned in 12.07 seconds

real 0m12.087s
user 0m0.212s
sys 0m0.016s

Resultados versión 5.00:

root@alberto:/# time /usr/local/bin/nmap -e eth0 -sP 100.100.100.0/24

Starting Nmap 5.00 ( http://nmap.org ) at 2009-08-19 13:43 CEST
Host 100.100.100.5 is up (0.00033s latency).
MAC Address: 00:09:0F:37:F0:C6 (Fortinet)
Host 100.100.100.12 is up (0.00054s latency).
MAC Address: 00:50:56:A9:4D:AB (VMWare)
Host 100.100.100.19 is up (0.00023s latency).
MAC Address: 00:0B:CD:1B:85:4D (Hewlett Packard)
Host 100.100.100.61 is up (0.0090s latency).
MAC Address: 00:50:AA:20:61:83 (Konica Minolta Holdings)
Host 100.100.100.64 is up (0.00041s latency).
MAC Address: 00:00:74:93:DA:76 (Ricoh Company)
Host 100.100.100.118 is up (0.00022s latency).
MAC Address: 00:33:64:B9:8A:C8 (Hewlett Packard)
Host 100.100.100.153 is up (0.00056s latency).
MAC Address: 00:50:56:A9:59:98 (VMWare)
Host 100.100.100.202 is up (0.00028s latency).
MAC Address: 00:33:64:B9:9A:E9 (Hewlett Packard)
Host 100.100.100.204 is up (0.00023s latency).
MAC Address: 00:33:64:B9:96:96 (Hewlett Packard)
Host 100.100.100.212 is up (0.00018s latency).
MAC Address: 00:33:64:B9:94:1A (Hewlett Packard)
Host 100.100.100.214 is up (0.00017s latency).
MAC Address: 00:33:64:B9:9A:E8 (Hewlett Packard)
Host 100.100.100.225 is up (0.00025s latency).
MAC Address: 00:33:64:B9:91:91 (Hewlett Packard)
Host 100.100.100.239 is up (0.0097s latency).
MAC Address: 00:50:56:A9:1A:B8 (VMWare)
Nmap done: 256 IP addresses (13 hosts up) scanned in 12.40 seconds

real 0m12.401s
user 0m0.140s
sys 0m0.008s


Apenas 0,37 segundos más a tardado la versión 5.00 en realizar el escaneo. Sí ha dado en el clavo.La mayoría de las máquinas son HP, y no Unknow con no "dice" la versión 4.76.

Resumiendo, me quedo con la versión 5.00. Usar repositorios, a veces, es lo que tiene, puedes seguir con una versión obsoleta de un software, que aparentemente funciona bien, tiempo y tiempo. Todos(o casi todos) sabemos, conocemos o hemos oído hablar de las ramas experimentales en Debian; pero nunca tendremos software "tan fresco" como si lo descargamos y compilamos de la web de los desarrolladores. Bondades y maldades del software libre.

lunes, 17 de agosto de 2009

Mis Feeds

He actualizado mis feeds. Si os interesa podéis descargarlos de esta URL.

miércoles, 12 de agosto de 2009

Pendrives y NTFS

Aún no sé bien por qué uso NTFS como sistema de ficheros en mis pendrives. En Mac OSX tengo soporte para EXT3; entonces, no debería utilizarlo. Supongo que será por si tengo que llevar algún documento a la copistería, o intercambiar ficheros con lusers. El caso es que un pendrive que uso a menudo, al intentar montarlo en Debian GNU/Linux o Ubuntu, Gnome me invita amablemente a que lo inserte en una máquina Windows y ejecute el famoso chkdsk(Checkdisk). Cómo no me parecía una solución demasiado ética, por cuestiones obvias, me puse a buscar información y encontre la herramienta ntfsfix. No estoy seguro, pero supongo que esta herramienta forma parte de ntfsprogs. Como dice en su página del manual, ntfsfix corrige errores comunes en NTFS, pero no es una versión para Linux de chkdsk. Sólo repara inconsistencias.
Ejemplo de uso:

root@alberto:/home/alberto# ntfsfix /dev/sdf1
Mounting volume... FAILED
Attempting to correct errors...
Processing $MFT and $MFTMirr...
Reading $MFT... OK
Reading $MFTMirr... OK
Comparing $MFTMirr to $MFT... FAILED
Correcting differences in $MFTMirr record 0...OK
Processing of $MFT and $MFTMirr completed successfully.
Setting required flags on partition... OK
Going to empty the journal ($LogFile)... OK
NTFS volume version is 3.1.
NTFS partition /dev/sdf1 was processed successfully.


Por cierto, sí forma parte de ntfsprogs, al final de la página del manual indica: ntfsfix is part of the ntfsprogs package(...)

martes, 11 de agosto de 2009

vim

Al principio fue la línea de comandos...y usaba vi. Me parecía un coñazo, "Demasiado complicado", me decía a mí mismo. Recuerdo que en un intento frustado de cursar el LPI, en el 2001, me presentaron a Nano; no a Nano el compañero de Bilo, sin al editor. Me parecía fácil de usar.Hasta hace un año, cuando me preguntaba qué editor usaba en el terminal, respondía "Nano", y muchos "talibanes" se llevaban las manos a la cabeza, y con más "desprecio que razón" exclamaban "Pero si eso es para nenazas, no conoces vi", "Sí.",respondía,"pero Nano me parece sencillo y cumple todas(las pocas) funciones que necesito." Después de este largo caminar por el Lado Oscuro de los editores, hace un año, he vuelto a vi, mejor dicho a vim. La razón principal, pese a tener una curva de aprendizaje más elevada, en mi opinión,es un editor más completo que Nano. Me gusta mucho, por ejemplo, que puedas ejecutar comandos directamente en el editor(desconozco si Nano lo hace); o lo bien que funciona con expresiones regulares. Esta mañana he visitado la web de vim(versión mejorada de vi), la entrada de la Wikipedia. He encontrado una Guía de Referencia Rápida en castellano, recomendada para los osados que quieran dejar el Lado Oscuro de los editores...

lunes, 10 de agosto de 2009

De vuelta...

Después de 15 días de vacaciones, estoy de vuelta en Compostela. Sin lugar a dudas me ha venido bien el descanso, aunque apenas me he separado del portátil. La conexión 3G cunde mucho, sobre todo si te desplazas: me he conectado desde Compostela,Mugardos,Ponferrada,Santander... y me ha servido para estar al día, revisar correo y demás. Dentro de un mes volveré a estar de nuevo ocioso, 6 días, los últimos del año ya, pero pensando más que nada en la VI Edición del Kernel 2009.

Sé que no he escrito mucho durante los últimos dos meses, y anoto en mi mente ponerme al día con el blog...que pronto cumplirá dos años, y sería una pena perder la buena y sana costumbre de escribir. Sí tengo cosas interesantes que decir y contar. Ayer de noche, repasaba un número atrasado de Todo Linux, y leí de la existencia de un paquete llamado libtrash, que es la Papelera de Reciclaje, pero para la consola. Hoy por la mañana, tenía pensado escribir algo sobre este paquete, pero he encontrado en la red cosas tan interesantes como esta.
Otra perla con la que me he topado esta mañana ,es un libro : "Implementación de Servidores GNU/Linux" , de Joel Barrios, un clásico entre los clásicos, siempre presente en cualquier documentación o manual sobre GNU/Linux.Se puede descargar una copia en esta URL.
De momento, esto es todo!

lunes, 3 de agosto de 2009

Reflexiones, DMZs, Postfix y libertad...

Este post es una respuesta a un email que me ha enviado un amigo las semana pasada. Muchas líneas son opiniones personales,otras reflexiones sobre lecturas
recientes, otras...
Reflexiones, DMZs, Postfix y libertad...
Con la poca información que me has dado, me atrevo, ya sabes que la ignorancia tiene la virtud del atrevimiento, a dividir las cuestiones que formulas en dos partes: la primera, a la que denominaré "Eliminar y exponer", y la segunda, “Razones rápidas por las que no implementar Exchange”.

Eliminar y Exponer

Resulta curioso, pero sería yo quien formularía la pregunta ¿Por qué eliminarlos? ¿Rendimiento? ¿Mal o pésimo funcionamiento? ¿Mantenimiento? ¿Coste? Si la única pregunta que en este contexto tiene sentido es la última, tienes un problema; si dudan en alguna de las anteriores, si son personas sensatas, por lo menos vamos a intentarlo.

En primer lugar, y dejando a un lado si el S.O de la máquina que hace relay es GNU/Linux o no, personalmente jamás expondría una maquina corriendo Microsoft Windows a Internet, pudiendo evitarlo. Es más, jamas expondría una máquina a Internet pudiendo evitarlo, en todo caso, para eso se diseñan las DMZs, y máxime si la solución alternativa es una o varias máquinas corriendo algún sabor UNIX y con alguna licencia libre y gratuíta. Los motivos a continuación:
Estabilidad: El diseño de un S.O Unix/Linux dista años luz de un S.O Microsoft. Unix es C, C es robuztez y estabilidad. Unix es un conjunto de aplicaciones pequeñas y simples, que cumplen una sola función y lo hacen bien, por ejemplo iptables o fetchmail. Microsoft Windows, sin embargo está y por lo que se deduce, estará, encadenado a ficheros .exe y actualizaciones dependientes del trabajo de un único grupo de programadores asalariados. Es cierto que con los “Boletines del Segundo Martes” intentan acercarse al ritmo de desarrollo y corrección de bugs de S.O GNU/Linux tipo Debian o Red Hat, o BSD como FreeBSD, todo indica a que su trabajo está orientado a un simple Service Pack cada X meses o años.


Mantenimiento: Una maquina Unix requiere de unos conocimientos mínimos de Administración para que las funciones que realice, las haga bien. Una vez configurada, pueden pasar años hasta que requiera un mantenimiento que se aleje del típico de la actualización de software y parches de seguridad. En multitud de ocasiones, una máquina Unix mal configurada por un/unos Administradores con conocimientos escasos del software con el que están trabajando, puede dar la impresión de necesitar más tareas o tiempo de mantenimiento que una máquina corriendo Microsoft Windows: nada más lejos de la realidad. Visite netcraft.com y o top500.org y podrá comprobar que tienen en común el 88% de los 500 computadores más “potentes” del momento: un S.O Linux. ¿Casualidad? No creo que DELL, NASA se basen en casuísticas para el elegir el S.O de sus Servidores.
Seguridad: Partiendo de la base de que ningún S.O es seguro si está conectado a una red de computadores, me gustaría hacer incapié que el concepto de Seguridad Informática es un proceso continuo y lineal, en contraposición a una series de medidas puntuales, como por ejemplo, añadir una cadena -j DROP a iptables para que “impedir que megano haga pings a fulano”. En palabras de J.Pérez Agudín “La seguridad ha de ser entendida como un equilibrio, la inversión en seguridad ha de estar a la altura de la importancia de la información a proteger”. Volviendo al eterno dilema de por qué Linux es más seguro que Microsoft Windows, me gustaría comentar:
Desarrollo continuo: la comunidad de desarrolladores trabaja a diario publicando parches y liberando nuevas versiones. No hay necesidad de esperar a que una empresa considere oportuno “vender” un nuevo producto para tener software actualizado.
Mejor diseño de S.O de base. Nos referimos en la práctica, a que por ejemplo, ante una vulnerabilidad en Postfix, si un usuario pudiese supuestamente tomar el control de la máquina, sólo lo haría con el usuario con el que se ejecute el proceso, es lo que se conoce como CHROOT o jaulas de usuario. En Microsoft Windows también es posible, pero no se ejecutan por defecto todos los procesos con usuarios diferentes.
Diversidad de Entornos: El núcleo de Windows Server es el mismo para las distintas versiones, por lo que en la práctica resulta muy sencillo aplicar un exploit a dichas versiones. Sin embargo, dada la diversidad de versiones, tanto de BSD como de Linux, un exploit en Fetchmail puede causar distintos daños o nulos dependiendo del entorno, fundamentalmente en versiones del Kernel y del software de las herramientas de seguridad configuradas en la (SELinux o AppArmor de Novell).


Dejando a un lado la disyuntiva Windows vs Unix, me gustaría dedicar unas líneas a comentar el supuesto caso de exponer una máquina a la red Internet. ¿Se puede evitar ? A mi modo de ver, la respuesta es : Sí. Un sí rotundo. En este caso concreto hablamos de una máquina que recibirá el correo directamente desde los servidores SMTP del remitente. Se presupone que el nuevo (re)diseño de la arquitectura de red resultante debe como mínimo superar las prestaciones del anterior, prestando atención, a mi modo de ver, a los siguientes puntos.

Ancho de Banda: En ningún caso, en mi opinión , se debería conectar una maquina que sirva SMTP a una línea convencional, tipo ADSL o Cable, al tratarse de líneas asíncronas no se garantiza en ningún momento un caudal mínimo, que garantice un servicio fiable. Mi recomendación son líneas simétricas de datos , SHDSL o similares.
Direccionamiento: Se presuponen unos requisitos mínimos en la calidad del servicio de la nueva instalación. El direccionamiento Ipv4 de los actuales ISP deja mucho que desear. Compruebe una dirección IP al azar de la red 0.Red-217-127-182.staticIP.rima-tde.net, podrá comprobar como “se mezclan” en el pool de direcciones tanto direcciones públicas para usuarios domésticos como usuarios de perfil empresarial. ¿ Cree realmente que este rango estará totalmente limpio en listas RBL? Mi opinión es que no.

Mantenimiento: Imagine que en un momento dado, su router cabecera, el que envía los paquetes al Firewall para que los procese y los enrute hacia su máquina de correo, recibe del orden de 15.000 correos por minuto. ¿Qué haría en este supuesto? ¿ Dispone de los activos de red necesarios para bloquear automáticamente este tráfico? ¿ Dispone de los recursos humanos necesarios para solucionar esta incidencia? En mi opinión, a no ser que el número de usuarios superase los miles(4.000 usuarios por ejemplo), confiaría la recepción del correo electrónico a un proveedor de Hosting: Arsys, Dinahosting, 1&1...etc. A menudo, estas empresas gestionan sus propios Sistemas Autónomos

“Razones rápidas por las que no implementar Exchange”.
“Exclavitud empresarial”. Si se utilizan aplicaciones liberadas bajo estándares abiertos, las actualizaciones y parches de seguridad las tendrá disponibles de forma libre y gratuíta. Por el contrario si elige Exchange Server, Microsoft Corporation no le garantizará bajo ningún concepto la frecuencia de actualizaciones, ni mucho menos, el código fuente de la aplicación. No sólo para poder modificar el código, sino para poder compilarlo específicamente para su arquitectura y “sacar” el verdadero rendimiento de la aplicación que elija como su software de Servidor SMTP.
Económicas. Impensable pagar por las diferentes versiones de una aplicación. Es más, Postfix por ejemplo, sólo libera una versión de su aplicación; virtud o defecto. Mi opinión es que es una virtud; que combina flexibilidad, al poder adaptarse tanto grandes despliegues, como a pequeños componentes de hardware, tipo routers o access points.

Seguridad. Postfix, por ejemplo, lo ha desarrollado Wietse Venema, autor de herramientas como los TCP Wrappers o el Coroner Toolkit. Es un reputado experto en seguridad informática y eso , como mínimo es una garantía de calidad. Que Red Hat, IBM o Debian GNU/Linux incluyan Posftix en su cojunto de paquetes quiere decir algo, no cree? ¿Conoce algún sistema de Bugtraq? Visite securityfocus y podrá comprobar que Exchange tiene más de 1800 reportes de errores, en contraposición a los 220 de Postfix. Si ha todo esto sumamos que Posftix, o Qmail o Sendmail o Exim corren perfectamente en GNU/Linux, Mac OS X o diversos sabores de *BSD ¿ Duda de Posftix o software similar no es seguro?.
Flexibilidad. Combinar Postfix con Spamassassin o ClamAV es un ejemplo de flexibilidad. Empresas como este o Kaspersky han desarrollado versiones específicas de sus productos.¿Cree realmente que si este producto no tuviese la calidad suficiente, estas empresas habrían desarrollado versiones para GNU/Linux o BSD?
Estándares: Unos de las características fundamentales en el desarrollo de aplicaciones libres es el cumplimiento, estricto en la mayoría de las ocasiones, de estándares de programación y comunicaciones.
Virus. Hablar de correos electrónicos es hablar de virus. Una máquina Unix no se bloqueará por que el virus X se adjunte al correo Y.


Alberto Permuy Leal
Agosto 2009

miércoles, 22 de julio de 2009

Respuesta a por qué Mint y no Ubuntu...

En primer lugar, dar las gracias al Anónimo que ha respondido al post publicado ayer. Sin ánimo de crear polémicas, respondo:

"Si ahora utilizo debian lenny es sin duda gracias(...)"

Discrepo; Ubuntu en sus inicios carecía de instalador gráfico,usaba el de Debian GNU/Linux; ahora mismo no tengo datos, pero no me parecería nada raro que la gente de Ubuntu utilizase una versión volatile del instalador de Debian GNU/Linux.

"De ubuntu no me gusto eso de tener que(...)"

Totalmente de acuerdo en lo que comentas acerca de LTS, sin embargo, no considero que la publicidad gratuíta sea algo que envidien las distribuciones; y aunque si es algo deseable, en mi opinión, temas como la estabilidad, accesibilidad, seguridad y simplicidad están por delante. Crees que una de las primeras distribuciones GNU/Linux, como es Debian GNU/Linux en este caso,cuya primera versión se liberó en agosto de 1993(hace 16 años!), necesita más o mejor publicidad que estos 16 años; es probable, pero no creo que el proyecto Debian GNU/Linux tenga como un objetivo principal "publicitarse".


"Respecto a lo que dices de la comunidad ubuntu(...)"
Quizá no me he explicado bien. Mi intención no es menospreciar a nadie, pero considero que la información y documentación de GNU/Linux no se resuelve en foros. Existen de hace muchos años, proyectos de documentación, como por ejemplo The Linux Documentation Project, o TLDP-ES/LuCAS. Las listas de correo resuelve, en la mayoría de los casos, problemas que nunca o con muy pocas probabilidades solucionaras en un foro.Quiero pensar que por falta de tiempo, o por lo poco amigable(no quiero decir accesible) de su web, aún no has visitado www.debian.org. Sabías que en esta web, relativo a documentación, puedes encontrar:
.- Guía de Instalación.(http://www.es.debian.org/releases/stable/installmanual) Para las 11 arquitecturas para las que Debian GNU/Linux tiene soporte, para idiomas tales como: inglés, español, koreano, japonés...actualizadas muchas de ellas a 2008 y 2009.
.-Preguntas de Uso Frecuente, actualizadas a 26 de Junio de 2008.
.-Guía de Referencia, idem que la anterior.
.-Notas de Publicación.Nada que añadir
.-Wiki de Debian.Se puede mejorar, pero tratan temas relativos a : Introducción rápida, Instalación,Administración,Servicios de Red.
.-Tarjetas de Referencias Rápida.¿Has descargado alguna vez una? Te recomiendo este enlace(http://xinocat.com/refcard/refcard-es-a4.pdf)
.-Guía de Referencia para el nuevo Desarrollador.Actualizado en 2007.
.-Debian Developer's Reference.Actualizado en 2007.

Además pueden encontrar mucho manuales y How to's.

"Lo de que el kernel viene supermodulado(...)"
De acuerdo contigo, tengo una optica distinta a la tuya. Comentas que "tiene que instalar a la primera como Windows". A mi no me gustan los imperativos, en todo caso, en mi opinión podríamos comentar "Como Microsoft Windows, cuando no tienes problemas con el hardware, debido a su pobre diseño, se suele instalar a la primera, los desarrolladores de distribuciones Linux o GNU/Linux, deberían cuidar los instaladores cuando liberen sus distribuciones.". Creo que el gran mérito(uno de ellos) de distribuciones GNU/Linux ha sido, entre otros, acercar Unix a la gente; falta mucho aún para llegar a un entorno equitativo entre usabilidad-facilidad-estabilidad, pero si tienes oportunidad, pregúntale a Tanenbaum o Ritchie qué le parecen los instaladores de las distribuciones Linux o GNU/Linux actuales. Un Sistema Operativo Unix-Linux-*BSD no es un juguete, es un Sistema Operativo, y funciona.Microsoft Windows, no lo es, desde el momento que necesita un antivirus para ¿funcionar?, carece de sentido llamarle así. La gente debe saber que para todo en la vida, existe una curva de aprendizaje,de conocimiento y de conceptos; el falso conocimiento se aprende con productos Microsoft a base de doble-clics y service packs.Personalmente prefiero el conocimiento por asimilación que por repetición, y tú?

"De otro lado, más que ubuntu tenga que reconocer el mérito de debian(...)"
Sinceramente este tipo de comentarios me hacen reflexionar y eso me gusta. Gracias, pero no estoy de acuerdo. Repito, un proyecto que lleva vivo 16 años, soporta 11 arquitecturas, con una comunidad sin ánimo de lucro detrás...si tuviese algo que agradecer, en primer lugar lo haría hacia su comunidad.Creo recordar que Ubuntu está basada en Debian GNU/Linux, insisto en GNU/Linux por que en ningún punto de respuesta citas GNU(con)Linux. Ubuntu debería dar las gracias a Debian GNU/Linux por:
.- Por ser libre y gratuíta.
.- Por su sistema de paquetes.
.- Por su documentación.
.- Por la calidad de su software, ligada directamente a la seguridad.
.- Por ser GNU/Linux.
.- Por su Contrato Social.[Ver]
.- Por su futuro, al no estar encadenada a una empresa o entidad.
.- Por hacer el trabajo duro: coordinar,programar,liberar,documentar...

"Y puestos a recomendar distros,(...)"

Y puestos a recomendar distro, te recomendaría Gentoo Linux.

Y con esto termino, si algún día te acercas por SCQ, tomamos un café, charlamos y pulimos diferencias...