Conexión al IRC Hispano en Ubuntu con XChat

Existen diversos clientes IRC disponibles para Linux. Mi favorito es, sin duda, XChat. También dispone de versión para Windows, pero para este sistema operativo siempre me he decantado por mIRC, excelente por su capacidad para programar scripts.

En la práctica de hoy instalaremos XChat 2.8.8 sobre Ubuntu 11.10 (Oneiric Ocelot) y lo configuraremos para conectarnos a la red IRC-Hispano.

Instalando XChat

Existen diversos modos de instalar Xchat en Ubuntu. Voy a explicar aquí a hacerlo a través del Centro de software de Ubuntu, presuponiendo que el equipo está conectado a Internet.

Arrancamos el Centro de Software desde el lanzador de Unity y escribimos xchat en el cuadro de texto de búsqueda.

Seleccionamos XChat IRC y pulsamos sobre Instalar.

Para proceder con la instalación necesitaremos permisos de administración, por lo que deberemos facilitar la contraseña del administrador cuando se nos solicite.

Configuración de XChat

Una vez instalado, arrancamos XChat buscándolo desde el botón de Inicio de Unity y configuramos los datos de conexión.

Tan sólo nos resta seleccionar la red IRC-Hispano. La buscamos entre las redes disponibles y nos encontramos una sorpresa: no figura entre ellas.

Pulsamos sobre el botón Añadir, escribimos IRC-Hispano y pulsamos Enter. La red nueva nos aparecerá en la lista.

Ahora debemos configurar la red indicando, al menos, algún servidor perteneciente a ella. Pulsamos sobre el botón Editar y modificamos la entrada por defecto para que figure el servidor siguiente:

irc.irc-hispano.org/6667

El número 6667 se refiere al puerto TCP en el que escuchan la mayor parte de los servidores IRC.

No hace falta añadir más servidores. El que hemos especificado se ocupará de redirigirnos al que la propia red estime conveniente.

Si lo deseamos, podemos activar la casilla Conectarse automáticamente al inicio, de modo que cuando arranquemos XChat se nos conecte inmediatamente a IRC-Hispano.

That’s all folks

Y eso es todo… Cerramos la ventana y pulsamos sobre el botón Conectar. En lo sucesivo, si hemos activado la casilla de verificación anterior, la conexión se efectuará inmediatamente.

Y podemos entrar en nuestro canal favorito:

Sea cual sea tu sistema operativo, utiliza el IRC. Le da 1000 vueltas a cualquier otro sistema de chat.

Javier Montero


Conexión al IRC Hispano en Ubuntu con XChat


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta

Construcción de acordes – 2: Las triadas

En Construcción de acordes – 1 esbozamos la metodología que seguiríamos para construir todo tipo de acordes conociendo su fórmula y empleando la escala mayor elaborada sobre la fundamental como sistema de referencia.

En el capítulo de hoy aprenderemos a conocer el resto de las triadas: menor, disminuida y aumentada.

Cuatro tipos de triadas

Las triadas son acordes que están formados por tres notas. Existen cuatro tipos básicos de triadas: mayor, menor, aumentada y disminuida.

Mayor

La triada mayor, o acorde mayor, ya la comentamos en el artículo anterior. Recordemos aquí simplemente su fórmula:

Mayor: 1 – 3 – 5

Menor

La triada menor, o acorde menor, se obtiene bajando un semitono la tercera del acorde mayor.

Su fórmula la indicamos del siguiente modo:

Menor: 1 – b3 – 5

Cuando digo bemol 3 lo que estoy queriendo decir es que calculo la tercera y la bajo un semitono. Los ejemplos siguientes te aclararán esto.

Comencemos construyendo el acorde Do menor. Como siempre, el primer paso es desplegar la escala correspondiente mayor, Do mayor. Voy a emplear ya directamente la notación anglosajona, a estas alturas no debe suponer ya ningún problema:

C – D – E – F – G – A – B – C

Aplicamos la fórmula: 1 – b3 – 5

1: C
b3: Eb (Mi bemol; observa que he bajado un semitono la tercera, que es Mi)
5: G

Cm: C – Eb – G

Fíjate cómo se indica Do menor empleando cifrado moderno: Cm

Otro ejemplo: Am (La menor)

Construimos la escala La mayor por el procedimiento que ya conoces:

A – B – C# – D – E – F# – G# – A

Aplicamos la fórmula:

1: A
b3: C (Si a Do sostenido le quito un semitono, se queda Do natural)
5: E

Por lo tanto:

Am: A – C – E

Aumentada

La triada aumentada mantiene la siguiente estructura:

1 – 3 – #5

Es como la triada mayor, pero aumentando un semitono la quinta.

Empleando el cifrado moderno, este acorde se simboliza agregando un + o las letras aug (de augmented) a la fundamental.

Por ejemplo, calculemos las notas de Do aumentado, C+ o Caug:

Retomamos la escala:

C – D – E – F – G – A – B – C

Y extraemos los grados apropiados:

1: C
3: E
#5: G# (he aumentado un semitono la nota Sol, quinto grado de la escala)

C+: C – E – G#

Otro ejemplo, La aumentado, A+:

A – B – C# – D – E – F# – G# – A

1: A
3: C#
#5: E# (observa que escribo E#, en lugar de F. Fa y Mi sostenido son el mismo sonido (enarmónicos), pero la forma correcta de llamarlo, en este contexto, es Mi sostenido).

A+: A – C# – E#

Disminuida

La triada disminuida se obtiene disminuyendo en un semitono la tercera y la quinta del acorde mayor. Su fórmula es:

1 – b3 – b5

Su fórmula, en cifrado moderno, es la fundamental seguida de las letras dim (diminished) o del símbolo de grado °.

Una advertencia: la cuatriada disminuida emplea la misma notación. Mucha gente prefiere emplear dim7 para la cuatriada y simplemente dim para la triada. El símbolo de grado, °, suele emplearse tanto para uno como para otro.

Calculemos Do disminuido, Cdim o :

C – D – E – F – G – A – B – C

1: C
b3: Eb
b5: Gb

C°: C – Eb – Gb

Y ahora La disminuido:

A – B – C# – D – E – F# – G# – A

1: A
b3: C
b5: Eb

A°: A – C – Eb

En la próxima entrega, antes de que empecemos con los acordes de cuatro notas, ampliaremos nuestra colección con dos nuevas triadas que, aunque no resultan de la superposición de dos terceras, como estas, son de mucha utilidad en la composición.

Javier Montero


Construcción de acordes – 2: Las triadas


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta

Python – Capítulo 26: Funciones que devuelven valores

En entregas anteriores explicamos el concepto de función y diseñamos algunos ejemplos sencillos. Vimos cómo utilizar una función para realizar una determinada tarea que presumiblemente volvería a repetirse, permitiéndonos así la reutilización del mismo código dentro del programa. También ilustramos el paso de argumentos, aquellos datos que facilitábamos a la función y que luego serían procesados dentro de su cuerpo.

Todos los ejemplos compartían algo en común: realizaban una tarea concreta (presentar información en pantalla), pero no devolvían ningún valor al ser invocadas.

Ya conoces algunas funciones en Python que devuelven valores. Por ejemplo, recuerda la función int(), que convertía una cadena de caracteres en un número entero, o la función len(), que devolvía la longitud de una cadena.

Los valores que devuelven las funciones pueden ser capturados y esto típicamente se hace asignando una variable, pudiendo formar parte de una expresión numérica.

longitud = len('La casa de la pradera')

Esta instrucción asignaría el valor numérico 21 a la variable longitud.

Los valores que devuelven las funciones no tienen que ser necesariamente numéricos.

Voy a mostrarte cómo hacer para que una función devuelva un valor. Crearemos una que admita como argumento un número natural y que devuelva la suma de todos los naturales que hay hasta él inclusive. Es decir, si, por ejemplo, le facilitamos como argumento un 5, nos devuelva la suma:

1 + 2 + 3 + 4 + 5 = 15

Podríamos hacer un algoritmo para realizar el cálculo empleando un bucle, pero no va ser necesario. Si recordáis las enseñanzas en la escuela, hay una fórmula directa para calcular la suma de todos los términos de una progresión aritmética de diferencia uno:

sp=\frac{n(n+1)}{2}

Ya estamos en condiciones de crear nuestra función:

Abre IDLE o el intérprete interactivo y escribe el siguiente código:

>>> def sumaprogresion(n):
       sp=n*(n+1)//2
       return sp

La función toma como argumento un valor que almacena en la variable n. Este valor es utilizado para el cálculo de la suma, almacenando el resultado en la variable sp.

Fíjate en la instrucción

return sp

Esta línea es la que indica qué valor devolverá la función. En este ejemplo, lo que contenga la variable sp, que es la que almacena el resultado del cálculo de la suma de la progresión.

Para realizar el cálculo he empleado la división entera (//), en vez de la ordinaria (/). Así evito que se escriba el resultado con un punto decimal.

Probémoslo:

>>> sumaprogresion(5)
15

Recuerda que esto es equivalente a hacer

>>>print(sumaprogresion(5))

En el intérprete interactivo te puedes ahorrar el print, pero no así cuando escribas un programa fuera de él.

Veamos otro ejemplo:

>>> print('La suma de los 1000 primeros números naturales es', sumaprogresion(1000))
La suma de los 1000 primeros números naturales es 500500

Así de simple.

Javier Montero


http://elclubdelautodidacta.es/wp/2011/12/python-capitulo-26-funciones-que-devuelven-valores/


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta

mIRC – Capítulo 16: ¿Me enseñas la invitación?

Una de las posibilidades que tenemos como operadores de un canal es hacer que sólo se pueda acceder a él a través de una invitación personalizada. Por lo general, los canales IRC suelen estar abiertos para todos, pero en algunos casos puede ser conveniente controlar su acceso. Hay varias maneras de lograr esto. En el capítulo de hoy aprenderemos cómo hacerlo mediante invitaciones.

El comando /mode, nuevamente

Ya conoces el comando /mode para definir los modos de operación del canal: con el modificador +t evitábamos que alguien que no fuera operador del canal pudiese cambiar el topic a su antojo; con +n prohibíamos el envío al canal de mensajes externos.

El modificador para hacer un canal accesible sólo mediante invitación es +i:

/mode #nombre_de_canal +i

Para desactivar esta funcionalidad, hacemos:

/mode #nombre_de_canal -i

Matando tres pájaros de un tiro

En la siguiente figura, sostenuto ha definido el canal #probilandia accesible mediante invitación:

Observa cómo, mediante una sola operación, ha establecido los tres modos:

/mode #probilandia +nti

Ya sabes que esto mismo lo podíamos haber realizado desde Channel Central. Fíjate en el efecto del comando anterior:

Operatividad del modo invitación

Imaginemos a nuestro ya conocido plutonio, ignorante de los nuevos conocimientos adquiridos por sostenuto, tratando de unirse a su canal:

/join #probilandia

Su gozo en un pozo:

#probilandia unable to join channel (invite only)

No se le ha permitido su acceso porque el canal requiere invitación.

Para invitar a plutonio, sostenuto debe proceder del siguiente modo:

/invite plutonio #probilandia

Momento en el cual plutonio recibe la siguiente comunicación:

* sostenuto invites you to join #probilandia

Puertas abiertas: ya puede acceder con el comando

/join #probilandia

Invitaciones de usar y tirar

Si plutonio abandona el canal, pierde su invitación a acceder a él. En ese caso, sostenuto deberá enviarle una nueva si quiere volver a entrar.

Y eso es todo por hoy. Puedes invitarme a una cerveza cuando quieras si esto te ha resultado útil…

Javier Montero


mIRC – Capítulo 16: ¿Me enseñas la invitación?


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta

MuseScore #14: Agregando intervalos

MuseScore incorpora un mecanismo que facilita la introducción rápida de armonías. Podemos agregar intervalos directamente sobre una nota determinada: la aplicación se ocupará de calcular la altura final por nosotros.

Arranca MuseScore y practica las siguientes técnicas…

Agregando intervalos ascendentes

Comenzamos seleccionando la nota sobre la que vamos a añadir el intervalo armónico, de modo que aparezca con la cabeza azul.

A continuación pulsamos la tecla Alt seguida del número que representa a la amplitud del intervalo. Por ejemplo:

Alt-2: Intervalo de segunda ascendente
Alt-3: Intervalo de tercera ascendente

Y así sucesivamente hasta el intervalo de novena con Alt-9.

Los intervalos son diatónicos

Es importante entender que los intervalos se agregarán diatónicamente. Es decir, la nota destino formará parte de la tonalidad definida en la armadura. Así pues, por ejemplo, en una armadura sin alteraciones, una tercera sobre un Do será una tercera mayor, mientras que sobre un Re será menor.

Si necesitáramos modificar la cualidad del intervalo bastaría con, una vez agregado, pulsar las teclas flecha arriba o flecha abajo para subir o disminuir la nota un semitono.

Por ejemplo, si en el ejemplo anterior, con la armadura sin alteraciones, si sobre el Do quisiéramos construir una tercera menor, habría que pulsar Alt-3 (obteniendo, en este caso, una tercera mayor) y a continuación pulsaríamos flecha abajo para que el Mi apareciese bemol.

Si sobre el Re quisiéramos una tercera mayor, en cambio, pulsaríamos Alt-3 (obteniendo una tercera menor), seguido de flecha arriba para transformar Fa en Fa#.

Agregando intervalos descendentes

Para agregar un intervalo descendente, usamos la tecla Shift seguida del número que represente al intervalo.

Shift-2: Intervalo de segunda descendente
Shift-3: Intervalo de tercera descendente

Y así sucesivamente hasta la novena descendente con Shift-9.

Agregando varios intervalos

Cuando agregamos sobre una nota un intervalo, la selección se cambia a la última nota escrita. De este modo, supongamos, por ejemplo, que deseamos construir el acorde Fa séptima mayor (Fmaj7) en la tonalidad de Do mayor. Comenzamos insertando la nota Fa (o seleccionándola si ya existía) y pulsamos Alt-3 tres veces seguidas. Agregando tres terceras iríamos obteniendo, sucesivamente, la tercera, la quinta y la septima del acorde.

Practica esta técnica hasta dominarla. Con la experiencia te irás dando cuenta de que la introducción de notas usando el teclado es bastante más ágil que con el ratón.

Javier Montero


MuseScore #14: Agregando intervalos


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta

Construcción de acordes – 1

Comenzamos una serie de artículos destinada a despejar cuantas dudas tengas relacionadas con la construcción de acordes. Tras su lectura deberías ser capaz de nombrar, nota a nota, las notas que constituyen virtualmente cualquier acorde, desde los más sencillos hasta los más complejos, con numerosas tensiones y en cualquier tono.

Bagaje necesario

No necesitas tener muchos conocimientos previos. Es muy importante que sepas construir la escala mayor en cualquier tonalidad, nota a nota. Si aún no tienes claro cómo hacer esto, permíteme sugerirte que hagas clic sobre el enlace propuesto.

Aprender a construir la escala mayor es esencial porque servirá como sistema de referencia que nos indicará qué notas son las adecuadas en cada acorde.

Los grados de la escala mayor

Una escala mayor se compone de siete grados. Pensemos, por ejemplo, en la escala de Do mayor:

Do – Re – Mi – Fa – Sol – La – Si – Do

o, en notación anglosajona:

C – D – E – F – G – A – B – C

Decimos que el primer grado (la tónica) es Do, el segundo Re, el tercero Mi, y así sucesivamente. El octavo grado volvería a ser la tónica nuevamente, Do.

Voy a plantearte algunas preguntas para que compruebes tu grado de comprensión de esto:

¿Cuál es el tercer grado de la escala de Sol mayor? ¿Y el quinto? ¿Y el séptimo?

Tómate tu tiempo, escribe la escala de Sol mayor y extrae de ellas los grados buscados.

Si has respondido Si, Re y Fa#, respectivamente, estás en condiciones de seguir leyendo.

El acorde mayor

El primer acorde que hay que dominar es el acorde mayor, íntimamente relacionado con la escala del mismo nombre. Su fórmula es la siguiente:

1 – 3 – 5

Estas tres cifras representan su gran secreto. Es la receta necesaria que te basta memorizar para saber construir cualquier acorde mayor.

1, 3 y 5 son los grados que hay que extraer de la escala mayor para formar el acorde.

Construimos la escala mayor asociada a la fundamental del acorde

Supongamos que quiero averiguar las notas del acorde de Sol mayor. La fundamental es Sol, por lo que el primer paso es desplegar, precisamente, la escala de Sol mayor:

Sol – La – Si – Do – Re – Mi – Fa#

Extraemos los grados que nos indica la fórmula

La fórmula de un acorde mayor es, como hemos dicho, 1 – 3 – 5.

El grado 1 de la escala de Sol mayor es Sol.

El grado 3 es Si.

El grado 5 es Re.

Ya tenemos las tres notas que constituyen el acorde de Sol mayor: Sol – Si – Re.

Otros ejemplos

Vamos a construir el acorde Fa mayor. La escala del mismo nombre es:

Fa – Sol – La – Sib – Do – Re – Mi

Por lo tanto:

Fa mayor: Fa – La – Do

Veamos ahora el acorde de La mayor. La escala es:

La – Si – Do# – Re – Mi – Fa# – Sol#

Y el acorde es, entonces:

La mayor: La – Do# – Mi

Acordes triadas

Los acordes que se componen de tres notas se denominan triadas. Cuando finalicemos con las fórmulas de las triadas abordaremos los de cuatro notas, las cuatriadas. Seguiremos extendiendo con acordes de cinco, seis o incluso siete notas.

Un guitarrista se podría preguntar cómo puede digitar un acorde de siete notas cuando sólo hay seis cuerdas en la guitarra. Veremos que, en estos casos, podemos prescindir de determinados grados que no harán que desmerezca la cualidad del acorde.

El cifrado moderno

Es común representar cada acorde empleando la notación moderna. Por ejemplo, decimos que Cm7 es el acorde Do menor séptima; Gmaj7 es Sol con séptima mayor, D7(9) es Re séptima con novena.

Hay acordes que pueden adoptar diversos cifrados. Por ejemplo, es habitual simplificar D7(9) como D9 simplemente. Iremos viendo estas opciones a medida que describamos cada tipo.

La notación del acorde mayor, primero de esta serie, es bien simple: basta con emplear, en notación anglosajona, la letra que define su fundamental, sin ningún añadido más. Así:

Do mayor: C
Sol mayor: G

Observa que, si digo, por ejemplo G, puedo estar refiriéndome tanto a la nota como al acorde. El contexto debe aclararte si estoy hablando de uno o de otro.

Acostúmbrate, cuanto antes, a la notación anglosajona

Es comúnmente aceptada; cuanto antes la domines, mejor.

Los ejemplos anteriores, empleando cifrado moderno para los acordes y notación anglosajona para las notas:

G: G – B – D
F: F – A – C
A: A – C# – E

Ejercicios propuestos

Veamos si has comprendido este artículo. Construye los siguientes acordes:

a) Re mayor
b) Si bemol mayor

Soluciones

a) D – F# – A
b) Bb – D – F

Javier Montero


http://elclubdelautodidacta.es/wp/2011/12/construccion-de-acordes-1/


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta

BitBite English #28: Can you play chess?

Esta es una construcción típica que, por inercia, suele ofrecer cierta dificultad a los que empiezan en el estudio del idioma inglés.

Para expresar la habilidad de hacer algo solemos utilizar el verbo can:

¿Sabes conducir un coche? Can you drive a car?

I can read musicSé leer música

Can you swin?¿Sabes nadar?

Traducir la frase anterior en su sentido literal, ¿puedes nadar?, sería un error y significaría algo diferente (por ejemplo, sabemos nadar, pero tenemos una lesión en el hombro que nos impide hacerlo en ese momento).

Podemos responder a estas preguntas afirmativamente: Yes, I can.

O negativamente: No, I can’t.

Can you speak english? Read BitBite English. I’m sure this series of articles will help you improve your language skills.

Javier Montero


BitBite English #28: Can you play chess?


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta

LaTeX – Capítulo 15: Familias de fuentes genéricas

LaTeX nos permite trabajar con tres familias de fuentes genéricas:

– Con serifas (romanas)
– Sin serifas (sans serif)
– Espaciado fijo (tipo máquina de escribir)

Vamos a explicar un poco en qué consisten.

¿Qué son las serifas?

Las serifas son esos apéndices decorativos que rematan la escritura de cada letra. Las tienes en todas partes, obsérvalas. No hace falta que vayas muy lejos: este mismo blog usa una fuente con serifas para el texto principal.

Las serifas mejoran la legibilidad sobre el papel y sobre pantallas con buena resolución, pues ayudan a guiar la vista a través del texto.

A las fuentes que utilizan serifas también se las conoce como romanas.

I shot the serif

Por el contrario, un tipo de letra sin serifas carece de esa decoración extra y presenta un aspecto más sobrio. Las fuentes sin serifas suelen emplearse para enfatizar texto, como contraste a un tipo con serifas. Quedan muy bien para la escritura de títulos. Son muy útiles, además, para la lectura de texto en pantallas con baja resolución: la pixelación estropea las serifas.

Escritura a máquina

Las fuentes de espaciado fijo tienen la característica, como su nombre indica, de que todas las letras ocupan el mismo tamaño total, tal como hace una máquina de escribir. Los programadores las emplean mucho para escribir código, pues el código fuente suelen presentar muchas indentaciones y les gusta que todo caiga en su sitio y el programa quede legible.

Computer Modern, ¡esto es LaTeX!

LaTeX tiene una familia de fuentes por defecto para cada uno de estos tres tipos:

– Computer Modern Roman (con serifas)
– Computer Modern Sans Serif (sin serifas)
– Computer Modern Typewriter (espaciado fijo)

Ya te has dado cuenta de que, por defecto, LaTeX no utiliza Times, sino Computer Modern, una familia de fuentes que, además, posee variantes para los tres tipos.

Puedes cambiar el tipo base por defecto, si lo deseas. Deberás facilitar una familia adecuada para cada uno de los tres tipos, o elegir un paquete adecuado que lo gestione por ti. Hablaremos de todo esto a su momento en otro artículo.

Por el momento quédate con la idea de que dispones de tres familias básicas que puedes emplear para enfatizar.

¿Recuerdas que podías enfatizar empleando comandos o mediante declaraciones? Revisa los últimos capítulos si se te ha olvidado.

Los comandos

Los comandos para cambiar la familia de la fuente son:

\textrm (fuente romana, con serifas)
\textsf (fuente sin serifas)
\texttt (fuente de espaciado fijo)

Recuerda que cuando utilizabas comandos, el texto afectado se facilitaba como parámetro entre las llaves. Por ejemplo:

\textsf{La casa de la pradera}

escribiría la frase sin serifas.

Las declaraciones

Las declaraciones eran comandos que actuaban como conmutadores. A partir de ellas se activaba un determinado modo de funcionamiento que desaparecía cuando finalizaba el ámbito de actuación u otra declaración activaba un modo diferente incompatible con el anterior.

Las declaraciones para cambiar la familia de la fuente son:

\rmfamily (fuente romana, con serifas)
\sffamily (fuente sin serifas)
\ttfamily (fuente de espaciado fijo)

Seguro que sabes lo que haría el siguiente ejemplo:

\sffamily Y con esto y un bizcocho, \rmfamily hasta mañana a las \ttfamily ocho...

Javier Montero


LaTeX – Capítulo 15: Familias de fuentes genéricas


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta

Detección y eliminación de virus con Knoppix

Knoppix es mi navaja suiza en versión software. Siempre suelo llevarlo conmigo por lo que pudiera suceder. En el espacio de un CD tengo a mi alcance un sistema Linux con centenares de herramientas de todo tipo listas para ser ejecutadas en cualquier ordenador sin necesidad de instalar nada en él.

Imagina que un día te llama un amigo con un problema gordo. Esto es algo inevitable para los que nos dedicamos a esto: los amigos se acuerdan de nosotros en estos casos. En fin, ¿para qué estamos si no?

Resulta que tu amigo tiene el ordenador infectado con un virus y no tiene manera de limpiarlo. Un virus activo en memoria puede engañar a un antivirus e incluso evitar que este funcione.

Después de recriminarle por su torpeza, cogemos Knoppix y nos dirigimos a su casa.

Knoppix incluye el antivirus ClamAV entre su conjunto de herramientas fabulosas. Antiguamente lo encontrábamos en la distribución en CD. En las últimas versiones sólo está disponible en el DVD.

En el momento de escribir este artículo la última versión de Knoppix es la 6.7.1.

Arrancamos el ordenador de nuestro amigo con el DVD de Knoppix dentro. El Windows que reside dentro del PC permanecerá dormido, sin arrancar, sin darse cuenta de lo que está sucediendo.

Esta es la gran ventaja de esto: el disco duro del ordenador está «frío». No arrancamos Windows, no hay programas ni procesos suyos cargados. El virus, por lo tanto, también duerme plácidamente dentro de uno o varios ficheros.

Es como visitar a los vampiros en sus tumbas durante el día…

Arrancamos Knoppix directamente en idioma español y en la línea de comandos. No necesitaremos la interfaz gráfica para nada.

Ya sabemos, por artículos anteriores, como hacer esto. En el prompt de Knoppix escribimos:

knoppix 2 lang=es

Una vez arrancado Knoppix lo primero que debemos hacer es montar el disco duro que queremos analizar. Recuerda que, por defecto, el punto de montaje ya está creado en /media con el nombre de las particiones que Knoppix detecta al arrancar.

Veamos qué particiones tenemos a nuestro alcance:

fdisk -l

En el caso del PC de nuestro amigo, este comando nos devuelve la partición /dev/sda1. Es la que debemos montar:

mount /dev/sda1 /media/sda1

Con esto, ya tenemos el disco infectado al alcance de Knoppix dentro de la carpeta especificada.

Quizás te entre una duda ahora: la versión de Knoppix que tenemos puede que tenga varios meses de antigüedad. ¿Qué pasa con los virus nuevos desde esa fecha? ¿No los va a detectar?

Tranquilo; antes de escanear el disco vamos a actualizar el fichero de firmas del antivirus a la más reciente.

Basta con lanzar el siguiente comando:

freshclam

Naturalmente, la máquina debe estar conectada a una red desde la que acceder a internet. Nuestro amigo tiene el PC conectado a un router del que recibe directamente, mediante DHCP, una dirección IP. No ha hecho falta configurar nada, Knoppix, en la mayoría de los casos, se encarga completamente de todo sin necesidad de nuestra intervención. Si debes configurar una IP fija o tienes que conectarte a una Wi-Fi, tendrás que entretenerte un poco para dejar la red en condiciones.

En unos segundos ClamAV estará actualizado con la base de datos de virus más reciente.

Si llevas tiempo ya trabajando con Knoppix, esto que voy a decir te resultará obvio. Si no es así, debes saber que esta base de datos está en unos ficheros que están completamente en memoria. Knoppix es un Live CD y, por lo tanto, no escribe nada en ningún disco del sistema (salvo que así se lo indiquemos, tal y como vamos a hacer ahora limpiando la máquina). Cuando abandones Knoppix, se acabó también esa actualización. Si vuelves a arrancar tendrás que actualizar nuevamente el fichero de firmas.

Y ahora, a cargarnos el virus.

Podemos hacerlo de dos modos: escaneamos el disco, leemos el informe con el resultado, y eliminamos, con el comando rm de Unix, uno a uno, cada fichero infectado por el virus. O también podemos introducir, en el comando, una opción para que los elimine directamente.

Recomiendo la primera vía. Es más prudente que revisemos previamente el informe y después tomemos la decisión de si eliminar el fichero o no. No siempre los antivirus aciertan.

El comando es el siguiente:

clamscan -ir /media/sda1 > resultado

El parámetro -i indica que sólo me muestre resultados de ficheros infectados y obvie los que están sanos. El parámetro -r se utiliza para que la búsqueda se realice en el interior de todos los directorios recursivamente.

Observa como hemos redirigido la salida a un fichero de texto que hemos llamado resultado, que es el que deberemos consultar después para conocer el resultado del escaneo. Lo encontrarás en el mismo directorio en el que lanzas el comando.

Si no quieres molestarte en tomar decisiones de si borrar o no, puedes dejar que lo haga directamente clam con el parámetro remove:

clamscan -ir --remove /media/sda1 > resultado

Sales de Knoppix, guardas de nuevo tu DVD mágico en el bolso y dejas que tu amigo siga disfrutando de su Windows.

¿Qué menos que te invite a unas cervezas después, no?

Javier Montero


Anotación del 3 de abril de 2012: si ha pasado un tiempo desde que descasgaste tu último Knoppix, puede que te encuentres que el motor del antivirus esté desactualizado. Léete este artículo para saber cómo proceder en ese caso.


Detección y eliminación de virus con Knoppix


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta

Python – Capítulo 25: Pasando argumentos a las funciones

En el capítulo anterior nos aproximamos al mundo de las funciones y comenzamos por el ejemplo más básico: una función sin argumentos que se limitaba a ejecutar un conjunto de instrucciones.

En el artículo de hoy aprenderemos a facilitar argumentos, que serán utilizados como variables dentro del cuerpo de la función.

Vayamos con el primer ejemplo básico. Arranca el intérprete interactivo y prepárate a introducir algo de código. Me gusta el intérprete interactivo para ilustrar los conceptos simples, sin necesidad de desarrollar un programa completo. Esa es la metodología de esta serie de artículos: los conceptos se explican en el contexto más simple posible. Esa «molecularidad» de la información facilita el aprendizaje. En capítulos posteriores trabajaremos con programas completos y algoritmos que requerirán el despliegue de muchas de estas piezas que ahora aprendemos de forma individual.

Introduce en el intérprete interactivo las dos líneas siguientes:

>>> def megustapython(veces):
  print('Aprender a programar en Python es divertidísimo\n'*veces)

Fíjate cómo, después de introducir la primera y pulsar Enter, automáticamente el cursor aparece indentado, preparado para la introducción del bloque de instrucciones.

Una vez incluida la segunda línea, pulsa Enter dos veces para finalizar la edición de la función y regresar al prompt.

¿Qué hace esta función?

Va a imprimir la línea Aprender a programar en Python es divertidísimo tantas veces como indique la variable veces que facilitamos como argumento.

Observa como el argumento se incluye dentro de los paréntesis en la primera línea de la definición de la función.

El código de impresión no debe suponerte ningún misterio. He vuelto a usar el truco que vimos en el capítulo anterior: multiplicar una cadena de caracteres por un número entero hace que la cadena se repita ese número de veces. Al final del string (usaré indistintamente este término o «cadena de caracteres») he incluido el carácter de escape \n, que ya sabes que introduce un salto de línea.

Vamos a invocar a la función. Por ejemplo:

>>> megustapython(5)
Aprender a programar en Python es divertidísimo
Aprender a programar en Python es divertidísimo
Aprender a programar en Python es divertidísimo
Aprender a programar en Python es divertidísimo
Aprender a programar en Python es divertidísimo

En esta invocación, la variable veces toma el valor 5. Como resultado, la línea de texto se «multiplica» por 5 y aparece 5 veces en la pantalla.

Las funciones pueden admitir más de un argumento y de cualquier tipo, no sólo numérico.

Volvamos a la función praderazo() del capítulo anterior:

def praderazo():
    print('+'*42)
    print('+ La casa de la pradera, pedazo serie... +')
    print('+'*42)

Esta función imprime el texto La casa de la pradera, pedazo de serie…, enmarcado con símbolos de suma.

Vamos a modificarlo para que repita esa frase tantas veces como deseemos y, además, para que podamos elegir el símbolo que emplearemos como marco.

Facilitaremos dos argumentos a la función: veces y simbolo, que contendrán, como su nombre indica, el número de veces a repetir y el símbolo utilizado en el marco.

def praderazo(veces,simbolo):
    print(simbolo*42)
    for n in range(veces):
      print(simbolo,'La casa de la pradera, pedazo serie...',simbolo)
    print(simbolo*42)

Voy a explicar algunas particularidades del código:

La primera línea del cuerpo debe estar clara: imprime 42 veces el símbolo facilitado como parámetro.

Comenzamos a continuación un bucle for que se repetirá tantas veces como hemos indicado en la variable veces. Si no recuerdas el uso de la función range(), puedes revisar el capítulo 20.

En la línea del print se escribe el símbolo, contenido en la variable del mismo nombre que hemos facilitado como argumento, seguido de la frase y cerrando nuevamente con el símbolo. Cuando concatenamos las cadenas separándolas entre comas en print(), Python inserta automáticamente un espacio en blanco entre ellas.

Cerramos el marco, finalmente, imprimiendo nuevamente 42 veces el símbolo.

Invoquemos al genio de la lámpara:

>>>praderazo(5,'?')
??????????????????????????????????????????
? La casa de la pradera, pedazo serie... ?
? La casa de la pradera, pedazo serie... ?
? La casa de la pradera, pedazo serie... ?
? La casa de la pradera, pedazo serie... ?
? La casa de la pradera, pedazo serie... ?
??????????????????????????????????????????

Son ejemplos muy básicos, pero seguro que ya intuyes la tremenda potencia de las funciones…

Javier Montero


Python – Capítulo 25: Pasando argumentos a las funciones


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies