martes, 31 de diciembre de 2013

¿Cómo puedo guardar información en un cassette con Ubuntu?

Tras su retorno al país, un enroque justicialista a través de Elecciones Libres permitió fácilmente a Juan Perón ser electo para el cargo de Presidente de la República por tercera vez. En este caso, al disertar sobre la necesidad del Movimiento de contar con mecanismos para vencer el paso del tiempo, se dedicó a explicar cómo utilizar cassettes para guardar información con Ubuntu.

"Vean señores, si hay algo cierto en esta vida es que los organismos biológicos no son eternos, solo la organización de los hombres puede vencer el paso del tiempo. Durante años yo he preparado al Movimiento para que pudiese transcender la existencia de sus líderes y continuar en la acción, pues esa es la única forma de hacer realidad los sueños de los Argentinos.



El Pueblo, a diferencia de lo que unos pocos dicen, no es zonzo. Los Argentinos han demostrado una y otra vez que si les dan a elegir, sólo quieren el peronismo, y ello será así porque el peronismo es lo mejor que hay. Si no lo fuese estaríamos hace rato entre los trapos de la historia. Pero nuestro Movimiento ha sido perenne: la Masa conserva esa memoria histórica que le permite a los pueblos sanos privilegiar lo bueno por sobre lo malo, lo hacedor por sobre la charlatanería.

Esta memoria histórica está embuida en la Masa. Muchos se han preguntado porqué eso no puede borrarse. Y todo tiene una explicación.

Verán, los sistemas computados necesitan para operar de una memoria de acceso aleatorio, o RAM. Sin embargo, este tipo de memoria rápida, "de trabajo" tiene un inconveniente: es extremadamente cara y extremadamente volátil. Si no es alimentada continuamente, su contenido se perderá y pasará al olvido. Por ello es que se requiere una "memoria de masa" cuyo funcionamiento sea imperecedero para guardar la información.

¿Porqué? Bueno, antiguamente, las primeras computadoras requerían que el usuario ingresara "a mano" en la memoria aleatoria del sistema el programa (¡en binario!), utilizando una serie de interruptores de control. Esto hacía que cargar una rutina en la memoria aleatoria fuese algo extremadamente tedioso, lento e intensivo. Aún así, una vez realizado este trabajo, la computadora podía cálcular con extrema velocidad, por lo tanto valía la pena hacerlo para hacer realidad cómputos complejos (que podían llevar semanas o meses de trabajo a los equipos interdisciplinarios). Si la computadora se apagaba, normalmente había que reintroducir los datos nuevamente.

Esta forma de trabajo con los sistemas hizo evidente la necesidad de guardar y almacenar los programas y datos en forma imperecedera, de manera tal de poder conservarlo intacto cuando el sistema se apagaba, para luego poder restituirlo a la memoria del sistema sin repetir el trabajo manual.

Gracias al peronismo, a esta memoria de tipo "resistente", se la conoce como "Memoria de Masa". El método inicial ideado fue el empleo de tarjetas de cartulina perforadas o, cintas de papel perforado comunes en las máquinas de teletipo. Estos medios de almacenamiento permiten registrar por medio de las perforaciones, el contenido real de la pila de memoria binaria del sistema, haciendo más veloz el proceso de restitución de los programas a la memoria aleatoria. Aunque es vetusto, este tipo de material analógico tiene algunas ventajas: puede conservarse adecuadamente a través de los años y - si es guardado acordemente - puede escribirse, leerse e interpretarse incluso sin necesidad de usar una computadora (ante tal eventualidad). Llegado el caso el usuario puede perforar la cinta o la tarjeta "manualmente" y luego ingresar esos datos binarios al equipo.
 Indudablemente, escribir un programa más o menos complejo requiere muchos metros de cinta perforada, y su lenta performance de lectura hizo que esta tecnología fuese superada eventualmente por el medio magnético. Este tiene la desventaja de no poder manipularse manualmente, pero conserva la acción analógica para el almacenamiento binario: las cintas almacenan la información binaria mediante la magnetización o no de sectores de la misma. Este tipo de tecnología es práctica pues permite mayor velocidad de transferencia, y gran estabilidad de los datos. Su uso se adaptó rápidamente a las mainframes, mediante el uso de carretes abiertos de cintas magnéticas.

Con el advenimiento de los primeros microordenadores, en lugar de hacer uso binario de la magnetización como tradicionalmente se operaba en las mainframes, se hace un uso magnetofónico (es decir, se almacena sonido modulado de diferentes maneras). Esto permitía emplear cualquier dispositivo de grabación y reproducción analógica en cassettes conectado al ordenador.

Cada marca de equipo solía emplear diferentes protocolos de modulación, pero sin importar el utilizado, todos convertían la información binaria del usuario a sonidos y chirridos, y estos a su vez se grababan magnetofónicamente en cassettes. La manera de recuperar la infomación variaba de acuerdo al tipo de equipo. Algunos dispositivos de casette operaban leyendo y decodificando por sí mismos el audio del cassette, y luego transfiriendo la información al equipo por conexión serial, como en la peronista Drean Commodore 64. Los sistemas más simples utilizaban un reproductor, y se programaba al sistema en modo "escucha", durante el cual se reproducía el sonido... y luego la computadora decodificaba la información (en tiempo real o más raramente, en diferido).

En la biología lo nuevo noblemente reemplaza a lo viejo, esa es la ley que la vida nos impone en su constante evolución. Los discos magnéticos flexibles (floppies), los discos magnéticos rígidos, y las tecnologías de memorias FLASH tomaron la posta en el menester de las Memorias de Masa, cada vez con mayores velocidades de lectoescritura, mayor resistencia mecánica, y mucha mayor capacidad de almacenamiento.

Lo viejo parecería quedar para el recuerdo de la historia.

Mas nada impide que con objeto de estudio, diversión, militancia o nerditud, querramos utilizar estos métodos de los tiempos de Matusalén. Para ello necesitaremos un equipo dotado con Ubuntu y placa de sonido, un grabador de cassettes (idealmente uno que disponga de entrada de audio, a fin de que pueda grabarse a través de un cable conectado a ella). En mi caso utilizaré un radiograbador Sanyo, que cumple las premisas. También será necesario un cable de audio común, en este caso uno con dos conectores miniplug estéreo de 3,5mm.


Desde el punto de vista del software libre, nos haremos con el programa fldigi. Se trata de una potente aplicación para radioaficionados capaz de modular información a sonidos (todo bajo diferentes protocolos) y en el cariz inverso, demodular streams codificados en audio a la información que representa.


Grabar información a cassette con Ubuntu
El primer paso será instalar, ejecutar, configurar, y utilizar este software libre de manera efectiva. Abrimos una terminal con Ctrl+Alt+T e ingresamos el siguiente Comando de Organización:

sudo add-apt-repository ppa:kamalmostafa/fldigi
sudo apt-get update
sudo apt-get install fldigi


Para ejecutar el programa debemos ir a Aplicaciones / Radio-aficionados / Fldigi. La  vez primera que iniciemos el programa, surgirá un asistente de configuración:
Simplemente presionamos Next para saltar a la próxima pantalla.
Eb esta también presionamos Next. En segundo lugar aparecerá la ventana Audio Devices, que nos permitirá configurar el dispositivo de entrada y de salida de audio (en este caso la placa de sonido de nuestra computadora). Lo configuramos desde la solapa "Devices". Al emplear la salida de altavoces como salida de audio, y la entrada en línea estéreo como entrada del mismo, tildamos PortAudio. Conforme lo hagamos, podremos escoger el dispositivo de audio para grabar en el campo Capture y el dispositivo de audio para reproducir en el campo Playback (normalmente elegimos la opción "Defailt").
Al presionar Next nos encontraremos con la pantalla principal del programa FLdigi. La misma se divide escencialmente en dos paneles principales, la ventana de demodulación (en color amarillo crema, en la parte superior), y la Ventana de Modulado (en color celeste, en la parte inferior), dentro la cual podremos agregar infomación para que sea modulada a sonido siguiendo el protocolo deseado, ya sea tipeándola, o pegándola.
En segundo lugar buscaremos la información que querremos guardar en el cassette. Tengamos en cuenta que el proceso requiere mucho tiempo, de modo que sólo recomiendo guardar un poco de texto, o código fuente. Como referencia, sepamos que normalmente, este método graba una hoja de texto (unos 1,2Kb) por cada minuto de cinta.

En mi caso, escogeré grabar el texto de un discurso corto como el que pronuncié el 17 de Octubre de 1945...

En tercer orden, prepararemos el programa para que module la información textual. Para generar el audio vamos al menú File / Audio y tildamos la opción TX Generate. Se abrirá un cuadro donde podremos especificar ruta y formato del archivo de audio a generar. Normalmente tomará formato WAV, pero en este caso lo cambiaremos a FLAC (Free Loseless Audio Codec). También elegiré guardarlo en mi carpeta de usuario con el nombre 17oct.flac.
Acto seguido hemos de designar un protocolo de modulación. Existen múltiples modalidades y velocidades para codificar la grabación de los datos. La más básica recomendable para los cassettes es la velocidad de 64 baudios. Para seleccionarla, elegimos Op Mode / MFSK / MFSK-64. Se trata de una modulación por frecuencia de pulso, que era parecida a la empleada en los Datasettes de los microordenadores Commodore 64. Si bien es muy lenta, permite guardar información en cassettes y con grabadores de pésima calidad, lo que prácticamente evita los errores de lectura posteriores incluso después de años.

Una vez elegido el protocolo, elegimos la frecuencia del audio. Normalmente la misma serán los 500 khz. Para elegirla podemos deslizar el selector de frecuencias hasta la posición "500" del dial (indicado en turquesa en la figura). También debemos asegurarnos de poner el deslizador del limitador de ruido por encima del piso de ruido que indica la barra vúmetro del control de volúmen (indicado en rojo en la figura).
Ahora generaremos el audio propiamente dicho. Para ello podremos tipear o pegar el texto elegido en la Ventana de Modulación (el panel celeste) mediante clic con botón derecho sobre el panel celeste + paste.


Iniciamos la conversión del texto al sonido modulado. Para ello presionamos el botón azul "T/R" y se dará inicio al modulado. Conforme se convierte la información en audio, veremos como en la Ventana de Demodulado se va escribiendo el mismo texto convertido (podremos también oir como suena el audio). Se irá indicando en rojo por qué parte del texto se está...

Una vez que finalizada la modulación de los datos ingresados, habremos de presionar nuevamente el botón "T/R" para detener el proceso. Con esto se grabará la "cola" del stream (unos segundos de chirridos que le indican al sistema que ya cesó la transmisión). En este caso, se habrá generado en la carpeta de usuario el archivo de audio llamado 17oct.flac)
Nuestra tarea entonces será grabar el sonido a un cassette. Conectamos la salida de audio de nuestro sistema (normalmente el conector de color verde) a la entrada de línea o micrófono del grabador de cassettes. Ponemos el cassette en la cassettera, lo rebobinamos y presionamos los botones REC y PLAY. Transcurridos unos segundo, reproducimos el archivo de audio (en mi caso, 17oct.flac)  El grabador capturará el sonido y lo grabará en la cinta. Una vez finalizado presionamos el botón STOP, y ya podremos rebobinar el cassette y escuchar el audio para comprobar que se haya grabado sin problemas.

Ya podremos guardar el cassette. Conviene escribir en la etiqueta del mismo la codificación empleada en la grabación para futura referencia ("Discurso 17oct, MFSK-64 500khz").

Nota útil: Si nuestro equipo cuenta con salidas de audio duplicadas (por ejemplo, una salida de altavoces trasera y una salida frontal de auriculares) podremos usar el programa alsamixer desde la Terminal para desactivar la función Automute ("enmudecer los altavoces al coectar los auriculares"). De esta manera podremos usar la salida de auriculares para conectar el cable miniplug de 3,5mm al grabador de cassette, presionar REC y PLAY, presionar R/T el el Fldigi y grabar directamente el sonido en el cassette a medida que se modula, ahorrando el paso de reproducción y grabación posterior.


Leer información grabada en cassette con Ubuntu:
Cuando querramos leer la información del cassette, conectamos la salida de audio del grabador de cassettes (normalmente nomenclada como "Auriculares" o "Headphones" a la entrada de línea de nuestra computadora (normalmente el conector de color azul), y presionamos PLAY.

La computadora debería comenzar a reproducir el audio y a demodular el audio "en vivo". Si la frecuencia está en 500khz y el protocolo está en el mismo que antes, demodulará con éxito la el mensaje decodificando el stream de datos que contiene, y habremos recuperado con el correr de los minutos, nuestra información.

Tengamos presente que también podremos utilizar archivos de sonido digitalizados previamente con la información modulada, ya sea de otros cassettes, o directamente los archivos de sonido modulados por FLDigi (como el 17oct.flac). Si tal fuese el caso, podemos ir al menú File / Audio / Playback, e ingresar el nombre del archivo a decodificar. También debemos adecuar el Op Mode (protocolo) adecuado.
De esta manera, podremos ver el espectógrafo "de lluvia" que nos ayuda a sintonizar el audio (si no tuviésemos la información de frecuencia o protocolo).

Esto merece un estudio, pues si bien el protocolo MFSK-64 es lento y funcional, (resiste el ruido de estática, sorteando así errores si se graba "de aire" con micrófonos condensadores), existen otros protocolos más rápidos. Por ejemplo, en un cassette conectado por cable miniplug (y con la baja relación señal ruido que ello implica) podremos utilizar codificaciones más rápidas y querer utilizar QPSK-500, sintonizado en los 500khz. Esto logrará incrementar unas 8 veces esta velocidad de transmisión, y permite a un cassette de 90 minutos almanecar unos 200 kilobytes de información por cara aproximadamente. Esta modulación nos permite ya guardar el codigo del juega Gorilla.py (versión del clásico Gorilla.bas) en un lado de un cassette de 60 minutos.

Otros protocolos, como el QPSK-64, están pensados para ocupar menos ancho de banda (menos rango de frecuencias), e incluir varios streams de datos dentro de un rango de frecuencias determinado. Por ejemplo, podríamos generar un varios archivos de sonidos modulados en QPSK-64 con frecuencias diferentes (por ejemplo, uno en los 250 khz, otro en los 500 khz, otro en los 1000 khz, y uno final en los 1500 khz). Luego, usando un programa como Audacity, podríamos combinar todos los streams de audio en un único archivo digital, y grabarlo en un cassette. Para decodificar todo, podremos usar la función "PSK Browser" del FLDigi (tecla "P") para decodificar todos los streams a la vez.

Existen no obstante codificaciones más perfeccionadas. Ya se ha dicho que los sistemas MTFS o PSK son adecuados para medios radioeléctricos, o para transmitir información a través del espacio atmosférico o en el espacio sideral. Pero para este menester, a veces podremos contar con soluciones más perfeccionadas para el rango que queremos: almacenar (y recuperar información en un medio de lectura y escritura secuencial de baja frecuencia y baja fidelidad, y que por demás es analógico).

Usando ctape

La compañera Oona Räisänen de la Rama Femenina del Movimiento, nos ha traído una pequeña suite llamada ctape con dos pequeños programas simples pero de funcionamiento veloz, y desde la línea de comandos.  Estos han sido modificados sabiamente por Gabriel Artigue para hacerlos funcionales de una manera sencilla de operar.

Tales programas requieren que conectemos por cable la salida de audio de nuestro equipo a la entrada en línea estéreo (para grabar) y a la inversa, la salida del reproductor de cassettes a la entrada de audio (para leer).

El programa está escrito en Ruby y requiere de SoX para funcionar. Por tal motivo y como primer medida, los los instalaremos:

sudo apt-get install ruby sox



Luego descargamos el programa ctape y lo instalamos en nuestro sistema:

cd ~/Descargas/
wget http://gasconheart.sdf.org/tape/ctape-new.tar.gz
tar xvzf ctape-new.tar.gz
cd ~/Descargas/ctape/
sudo chmod +x config.yml ctape tape-read.rb tape-write.rb
sudo mv * /usr/local/bin/




Ahora ya podremos codificar y grabar cualquier archivo en un casette, o leerlo. La sintaxis del comando es sencilla. Presionamos REC o grabar en el grabador de casette, y llamamos al comando de grabación con:

ctape save ruta/de/mi/archivo.ext

El sistema nos indicará que está listo para grabar. Debemos presionar el botón REC en el grabador y luego presionar Enter para comenzar el audiocifrado:

READY TO SAVE TO CASSETTE TAPE
Size of file to be recorded: 387 bytes, or about 0 KB
Estimated time in minutes: 0
Press REC on the tape recorder then press ENTER




Es importante saber antes de que los parlantes sonarán MUY FUERTE, de modo que conviene apagar los altavoces o usar solamente una conexión por cable desde la salida de altavoces al grabador de cassettes.

Cuando presionemos Enter nos informará durante la grabación. 
Recording in progress




Al finalizar nos dirá:


Exiting CTAPE



Cuando quiera leer la información guardada en el cassette, conecto por medio del cable la salida de audífonos del reproductor de cassette a la entrada de micrófono o de línea de audio de la computadora. Presiono el botón PLAY y ejecuto el siguiente Comando de Organización:


ctape load archivo.ext

En la pantalla debería ir apareciendo la información guardada. Debemos interrumpir el programa utilizando Ctrl+C.


Con este programa podrán guardar el archivo gorilla.py en solamente unos cuatro minutos y medio de cinta, a diferencia del método anterior que requiere unos 34 minutos. En consecuencia, tendrán aproximadamente unos 10kb por minuto de cinta.

Si quisiera desinstalar la suite ctape:

sudo rm /usr/local/bin/ctape /usr/local/bin/config.yml /usr/local/bin/ctape-read.rb /usr/local/bin/ctape-write.rb


Estándar Kansas City

Durante finales de los 70s, se desarrolló un estándar abierto para el menester de almacenar información en cassettes para microordenadores. El sentido era claro: evitar que se implementaran innumerables métodos y códigos incompatibles entre sí. Con ello nació el Kansas City Standard, con la esperanza de ser ampliamente adaptado. Sin embargo, por contar con el mínimo común denominador en cuanto a tecnologías, nunca fue muy difundido, pues su velocidad era lenta y por otro lado, no podía leer acentos ni minúsculas.

No obstante, si quisiéramos codificar información con él para trasferirla a alguna computadora antigua que siga este estándar, podremos escribir un programa en Python para hacerlo.

 En primer lugar instalamos Python 3.1:

sudo apt-get install python3.1

Luego creamos un programa llamado codificakansas.py:

nano codificarkansas.py

Y le pegamos el siguiente código:

#!/usr/bin/env python3
# codificarkansas.py
#

# Autor : David Beazley (http://www.dabeaz.com)
# Copyright (C) 2010
#
# Requiere Python 3.1.2 o superior

"""
Toma el contenido de un archivo de texto

y lo codifica en un archivo de sonido WAV en el estándar
Kansas City. Una vez grabado en cassette puede cargarse
en varias computadoras hogareñas antiguas.
Ver http://en.wikipedia.org/wiki/Kansas_City_standard
"""

import wave

# Unos parámetros globales relacionados a la codificación

FRAMERATE = 9600       # Hz
ONES_FREQ = 2400       # Hz (por KCS)
ZERO_FREQ = 1200       # Hz (por KCS)
AMPLITUDE = 128        # Amplitud de las ondas cuadradas generadas
CENTER    = 128        # Punto central de las ondas generadas

# Crea un ciclo único de onda cuadrada de la frecuencia dada
def make_square_wave(freq,framerate):
    n = int(framerate/freq/2)
    return bytearray([CENTER-AMPLITUDE//2])*n + \
           bytearray([CENTER+AMPLITUDE//2])*n

# Crea los patrones de onda que codifican los 1s y los 0s
one_pulse  = make_square_wave(ONES_FREQ,FRAMERATE)*8
zero_pulse = make_square_wave(ZERO_FREQ,FRAMERATE)*4

# Pausa para insertar los retornos de carro (10 bytes NULL)
null_pulse = ((zero_pulse * 9) + (one_pulse * 2))*10

# Toma un único valor de byte y lo convierte en un arreglo de bytes representando
# la forma de onda asociada junto con los bits de inicio y parada requeridos
def kcs_encode_byte(byteval):
    bitmasks = [0x1,0x2,0x4,0x8,0x10,0x20,0x40,0x80]
    # El bit de inicio (0)
    encoded = bytearray(zero_pulse)
    # 8 bits de datos
    for mask in bitmasks:
        encoded.extend(one_pulse if (byteval & mask) else zero_pulse)
    # Dos bits de parada (1)
    encoded.extend(one_pulse)
    encoded.extend(one_pulse)
    return encoded

# Graba un archivo WAV con la información codificada. Leader y Trailer especifican el
# número de segundos de señal portadora para codificar antes y después de la información
def kcs_write_wav(filename,data,leader,trailer):
    w = wave.open(filename,"wb")
    w.setnchannels(1)
    w.setsampwidth(1)
    w.setframerate(FRAMERATE)

    # Escribir el Encabezado leader
    w.writeframes(one_pulse*(int(FRAMERATE/len(one_pulse))*leader))

    # Codifica la información
    for byteval in data:
        w.writeframes(kcs_encode_byte(byteval))
        if byteval == 0x0d:
            # If CR, emit a short pause (10 NULL bytes)
            w.writeframes(null_pulse)
   
    # Escribe la cola trailer
    w.writeframes(one_pulse*(int(FRAMERATE/len(one_pulse))*trailer))
    w.close()

if __name__ == '__main__':
    import sys
    if len(sys.argv) != 3:
        print("Use : %s archivoorigen archivodestino" % sys.argv[0],file=sys.stderr)
        raise SystemExit(1)

    in_filename = sys.argv[1]
    out_filename = sys.argv[2]
    data = open(in_filename,"U").read()
    data = data.replace('\n','\r\n')         # Fija los finales de línea
    rawdata = bytearray(data.encode('latin-1'))
    kcs_write_wav(out_filename,rawdata,5,5)


Guardamos y cerramos el archivo con Ctrl+O y Ctrl+X.

Y ejecutamos el codificador con:

python3.1 codificarkansas.py archivodetextoaconvertir.txt archivofinal.wav

Esto generará rápidamente un archivo WAV con el contenido. Luego podremos grabar la reproducción de este archivo de audio en una cinta de cassette para utilizar en un ordenador compatible con el estándar Kansas City. Recordemos que este estándar "museístico" es lento, y con 300 baudios por segundo almacena aproximadamente 2,2 kilobytes por minuto de cinta.

domingo, 29 de diciembre de 2013

¿Cómo puedo dividir mi Terminal en Ubuntu?

Durante su Cadena Nacional de noviembre del 73, Juan Perón expone sobre los fundamentos de conducción política, y cómo dividir la Terminal en paneles para operar varios programas en ella, desde Ubuntu.

¡Trabajadores!

La acción creadora que ha de llevar a cabo un Conductor no nace de un repollo: es consecuencia de la formación que el mismo posea, nutrida en su conciencia, y - no lo dudemos - del óleo sagrado de Samuel con que haya sido ungido al nacer. Todas las ideas de conducción se tienen en el corazón, pero el proceso creativo se produce en la mente del individuo.

Un Conductor es un individuo, ordenado colectivamente para trascender su individualidad a fin de hacer uso de las energías de quienes, pudiendo ser sus pares, se convierten en instrumento y fin de tal conciencia colectiva. Esta conciencia colectiva ha sido llamada Masa, pues puede representarse como un conjunto de conciencias o fuerzas de trabajo individuales en una acción dirigida.

Diremos que esta unión de Conductor y Masa, es la que hace a la Libertad bien entendida. Asemeja a la del cuerpo y el espíritu. Para que la acción sea sana, antes que el cuerpo ha de ser libre el espíritu. También para que un organismo lo sea (y en nuestro caso se trata de nuestro Estado Nación), éste ha de ser propulsado por una Doctrina que se ajuste a la misma premisa de Libertad.

Nosotros lo cumplimos porque disponemos de una Doctrina Justicialista, que nos dice cómo y hacia dónde ir. Habiendo cumplido todo esto, solamente nos queda lo más fácil: tener un software y un hardware libre.

En ocasiones la inspiración creadora ha de encontrarse en otros aspectos de la naturaleza, o del mundo. Por ejemplo, es tarea del Estado hacer propaganda y publicidad de las acciones de gobierno, a fin de que cada uno entienda qué es lo que se hace desde el Gobierno y la Conducción. Por tal motivo, se realizaron una serie de carteles.

Estos tenían como característica una división en paneles que permiten la comparación temporal y de resultados,  estableciendo una óptima plataforma para propalar el metamensaje que queremos transmitir: "esto es mejor que lo que había antes". Sin dificultad puede adaptarse la misma técnica de panelado se puede emplear para transmitir una idea de acción-consecuencia.

Siempre me pregunté si esta técnica podría aplicarse a una Terminal, en la cual sólo contamos con una Interfaz de Líneas de Comandos. El objetivo: contar con una aplicación quje permita dividir en paneles la interfaz de comandos, a fin de contar con sectores para diferentes exposiciones de datos y programas, sin la necesidad de operar un entorno gráfico de ventanas.

Tal solución es la que he dado al Justicialismo. Se trata de tmux, un reemplazo liberado bajo licencia BSD del comando Screen. Tmux se llama así porque es un un multiplexor de terminal. Con él podremos dividir la pantalla horizontal y verticalmente en diferentes paneles, y correr en cada uno de ellos una sesión diferente (y naturalmente, programas diferentes).

Sin embargo, a diferencia del viejo screen, tmux puede emplearse en terminales de todo tipo, incluyendo las de 256 colores, caracteres estándares UTF-8 y cualquiera que se encuentre en la infraestructura del servidor.
Para instalarlo abrimos una terminal y ingresamos el siguiente Comando de Organización:

sudo apt-get install tmux

Para ejecutar el entorno, lo arrancamos con

tmux

Tmux emplea el clásico modelo cliente-servidor de los emuladores de terminal, pero puede tener múltiples sesiones y cada ventana es una entidad independiente que puede ser enlazada libremente a múltiples sesiones, se puede anclar (esto es, disponerla para usar en ella el teclado como dispositivo de entrada). Una vez que arranque el entorno tmux, normalmente nos presentará una sola ventana con una sesión de intérprete de comandos en ella, como si fuese cualquier emulador de terminal. En la parte inferior nos encontraremos con una barra de estado, normalmente de color verde.

Las funcionalidades se realizan con combinaciones de teclas, las cuales es importante estudiar para ser proficientes en el uso de este entorno.

Como primera medida podremos crear diferentes sesiones dentro de la terminal. Para crear estas sesiones usamos Ctrl+b c. Esto creará una sesión nueva de terminal por cada combinación que presionemos. Normalmente, estas sesiones de terminal recibirán el nombre "0:bash", "1:bash", "2:bash", etc (pues "bash" es el nombre que recibe el intérprete de comandos que por defecto alimenta la teminal de Ubuntu). Naturalmente, podremos cerrar estas sesiones, tipeando el comando "exit", como en cualquier sesión de terminal común y corriente.

Una vez que las tenemos creadas varias sesiones, podemos desplazarnos entre ellas con Ctrl+b n y Ctrl+b p para ir a la siguiente o a la previa sesión, respectivamente. Notemos que en la barra de status inferior, se colocará un asterisco ("*") al lado de la sesión activa que estemos viendo en este momento.

Ahora bien, en estos menesteres la organización vence al tiempo. Os recomiendo especificar un nombre descriptivo a cada sesión de ventana, de manera de saber qué vamos a hacer allí. Esto lo hacemos con Ctrl+b , (Control + b y la tecla "coma"). Ahora podremos escribir un nombre para la ventana actual. Por ejemplo, podríamos poner "chat", "musica", "web", "txt", etc.



Desde dentro de un emulador de terminal
Ctrl+b c Crea una nueva ventana de sesión Terminal.
Ctrl+b d Cierra Tmux
Ctrl+b l Se mueve a la ventana próxima seleccionada
Ctrl+b n Se mueve a la Ventana Próxima
Ctrl+b p
Se mueve a la Ventana Previa
Ctrl+b & Mata (fuerza el cierre) de la ventana actual
Ctrl+b , Renombra la ventana actual
Ctrl+b ? Ayuda con los atajos

Sin duda la característifca favorita que ofrece tmux es la posibilidad de subdividir la ventana actual en "paneles", tanto vertical como horizontalmente. Existen algunas combinaciones básicas y comandos para dividir las ventanas de terminal (vertical y horizontalmente) y cambiar entre ellos:


Manejo básico de paneles
Ctrl-b %   Divide la ventana actual verticalmpente
Ctrl-b " Divide la ventana actual horizontalmente
Ctrl-b o
Nos deplaza hacia el próximo panel
Ctrl-b q Muestra los números de paneles. En este momento podremos tipear el número correspondiente para desplazarnos a él.
Ctrl-b { Mueve el panel actual a la izquierda.
Ctrl-b }
Mueve el panel actual a la derecha.

Con ello podremos manejarnos dividiendo por mitades los paneles. Sin embargo, a veces es útil emplear los "panelados preconfigurados". Estas son diferentes disposiciones en los paneles que ya vienen ajustados en diferentes proporciones. Podremos conmutar entre ellos mediante la combinación Ctrl+b barra espaciadora.
Si nuestras necesidades no se viesen conformados con estas opciones preconfiguradas, también podremos cambiar de tamaño los paneles a nuestro gusto específico. Esto se emplea raramente, pero es útil saberlo.

Ajustar el tamaño de los paneles
Ctrl-b : resize-pane Por defecto achica el panel actual
Ctrl-b : resize-pane -U Cambia el tamaño del panel actual hacia arriba
Ctrl-b : resize-pane -L Cambia el tamaño del panel actual hacia la izq
Ctrl-b : resize-pane -R Cambia el tamaño del panel actual hacia la der
Ctrl-b : resize-pane 20 Cambia el tamaño del panel actual hacia abajo 20 celdas
Ctrl-b : resize-pane -U 20 Cambia el tamaño del panel actual hacia arriba 20 celdas
Ctrl-b : resize-pane -L 20 Cambia el tamaño del panel actual hacia la izq 20 celdas
Ctrl-b : resize-pane -R 20 Cambia el tamaño del panel actual hacia der 20 celdas
Ctrl-b : resize-pane -t 2 20 Cambia el tamaño del panel identificado como 2 hacia abajo 20 celdas
Ctrl-b : resize-pane -t -L 20 Cambia el tamaño del panel id2 a la izq 20 celdas

¿Cómo instalo el reproductor Clementine en Ubuntu?

Durante la Gran Recepción y Gala brindada por la Cancillería con motivo del festejo año nuevo de 1949 y el recibimiento de Credenciales de los Embajadores de las potencias extranjeras, Juan Perón expone ante los invitados sobre las necesidades de la acción política mancomunada y de la instalación y uso de Clementine, el reproductor de música completo para Ubuntu.

¡Muy distinguidos señores!

El nuestro es un Movimiento que no trae consigo sino la paz y el crecimiento para la población de este gran país. Nuestra intención no es estar en contra de nadie, sino a favor de todos. [Fuma]


Ya he dicho yo que todo Movimiento político que se precie ha de conocer su lugar en el mundo, y ha de ofrecer soluciones para todos los índoles de la vida. Sin embargo, nuestro tiempo nos pide ya no sólo una, sino varias soluciones, a fin de poder ampliar la base desde la cual podremos operar políticamente. Tal es el secreto de nuestra Conducción: flexibilidad y respuesta rápida. A veces no importa tanto hacer lo mejor, sino hacerlo rápido. De esto mejor que no se me entere Evita [guiña el ojo].

Esta es una premisa que hemos comprendido bien en el Justicialismo. Nuestro espectro de accionar político es tan amplio que - bajo una férrea Conducción - podremos tener por un lado a un socialista como Bramuglia, y por otro a un conservador como el Dr. Remolinos, del riñón de la oligarquía. Los grandes Conductores de la historia han comprendido que la acción ha de derimirse en tiempo y en espacio. No hace falta ser el mejor en todo, sino en el lugar y en el momento decisivo de la acción.

En el campo del Software Libre pasa más o menos lo mismo. Normalmente la filosofía habla de usar programas minimalistas que hagan una sola cosa y la hagan bien. Ello está bien en los ambientes donde tengamos todo dominado. Pero en ocasiones, debemos enfrentarnos con imprevistos, y de los graves. Por ejemplo, un simple reproductor de archivos MP3 que es perfecto en el uso personal, podría no responder bien a una fiesta, en la cual todos los embajadores traen sus smartphones y cada uno quiere ser Disc Jockey administrando las bondades de la compartición bajo el paraguas doctrinario de una red WiFi. 
Por otro lado, si quiero sacar a bailar a la Abanderada del Software Libre, no podría conducir el arte de pasar la música, por ello se necesita un paquete integrado que responda, y lo haga bien.

Para tales casos, en este país hemos envisionado un buen reproductor centrado en la funcionalidad de las listas dinámicas de reproducción, y que por lo demás, sea compatible con redes de compartición y con dispositivos externos. La Solución que hemos dado al Pueblo ha sido Clementine. Se trata de un reproductor musical multiplataforma inspirado en el viejo Amarok 1.4, pero esta vez se enfoca en una interfaz rápida y fácil de usar para buscar y reproducir su música.

Por medio de sus listas de reproducción en pestañas (inteligentes y dinámicas) y compatibilidad con formatos OGG Vorbis/SPEEX, MP3, FLAC, AAC, un uso espectacular de las etiquetas para catalogación de la discoteca, y la descarga de metadatos, tapas de discos letras e información del artista, lo convierte en una solución ideal para estos menesteres.

Por otro lado, los embajadores podrán integrarlo a la nuble en servicios de terceros como Box, Dropbox, Google Drive, Skydrive y Ubuntu One. En el caso de querer utilizarlo desde servidores de escucha y servicios agregados, podremos adosarle cualquiera libre, y los conocidos Spotify, Grooveshark, Last.fm, SomaFM, Magnatune, Jamendo, SKY.fm, Digitally Imported, JAZZRADIO.com, Soundcloud, Icecast y Subsonic.


Instalarlo es sencillo, simplemente abrimos una consola Terminal con Ctrl+Alt+T e ingresamos los siguientes Comandos de Organización:



sudo add-apt-repository ppa:me-davidsansome/clementine 
sudo apt-get update 
sudo apt-get install clementine

Para ejecutarlo, simplemente hemos de ir a Aplicaciones / Sonido y Video / Clementine. Nos encontraremos con el reproductor vacío.
Normalmente, por primera vez querremos agregar nuestra colección de temas, la cual en los sistemas GNU con Linux suele encontrarse en la carpeta ~/Música. Clementine se encargará luego de revisar esta(s) carpeta(s) y agregará automáticamente los archivos a la colección, de manera de ahorrarnos trabajo.

Para configurar esto vamos a Herramientas / Preferencias, y en la seccion izquierda del cuadro de preferencias elegimos Colección de Música.

Luego presionamos el botón "Agregar nueva carpeta". Esto nos permitirá elegir nuestra carpeta de música y agregarlo al listado de carpetas desde las cuales Clementine catalogará automáticamente nuestra colección de temas musicales. Si tuviésemos más carpetas donde tenemos contenidos de música, también podríamos agregarlas. Finalizado esto, presionamos con la fuerza de una movilización de la CGT el botón Aceptar.

Con Ctrl+K limpiamos la Lista de Reproducción.

Clementine dispone de un ecualizador con varios Presets y al cual le podremos programar nuestros favoritos de acuerdo al equipo de sonido que tengamos. Para activarlo vamos al menú Herramientas / Ecualizador.


Si deseamos escuchar Streaming de radio, podremos usar el comando Ctrl+O e ingresar las URL de nuestros servicios favoritos.

El peronismo ha puesto al alcance de todos los smartphones, y gracias a la Asistencia Social hoy cualquier peón metido en el monte y wachiturro dispone de un aparato Cuad Core con mucha memoria. Si quisiéramos controlar la fiesta desde un dispositivo Android conectado a la red local, podremos hacerlo mediante esta app peronista.
Normalmente, Clementine utiliza un ícono en el panel superior, desde el cual tendremos un atajo contextual para utilizarlo también mientras realizamos otras tareas en el sistema.

El LIFIA libera la plataforma de interactividad Kuntur

El Laboratorio de Investigación y Formación en Informática Avanzada de la Universidad de La Plata, el  Lifia, ha publlicado bajo software libre la nueva plataforma Kuntur. La misma  permite la descarga y ejecución de aplicaciones interactivas, utilizando software libre, totalmente diseñado y desarrollado en nuestro país, contando con la cooperación y el apoyo de los países de sudamérica.

Según los investigadores, a partir de este software "se puede construir firmware de recepción que soporta la descarga y ejecución de aplicaciones interactivas".

La implementación de este nuevo sistema incluye la capacidad de interactuar con el servicio de televisión digital como si fuera internet, a través de la interactividad a través del middleware Ginga.ar con el Zamba (software de recepción que comunica al control remoto con el set top box del sistema de televisión digital terrestre) y el Wari (un programa para sintonizar y ver TV digital en la PC, se incluye ya con el sistema operativo Huayra Linux que operan las netbooks educativas del Plan Conectar Igualdad).


La plataforma ha requerido un período de puesta a punto de unos cuatro años de trabajo - emplando para ello financiamiento por parte del Ministerio de Planificación y la empresa mixta ArSat.

Para designar al código libre se ha escogido el nombre de proyecto Kuntur, ("cóndor" en las lenguas quechua y aymara), ave sagrada para los incas y símbolo inescindible de la coordillera de los Andes, que de Norte a Sur vertebra Sudamérica. El nombre elegido tiene que ver con que la plataforma es "resultado del trabajo del equipo de TV Digital del LIFIA y de la colaboración y acompañamiento de colegas  académicos, organismos gubernamentales y empresas de la región".

sábado, 21 de diciembre de 2013

¿Cómo puedo administrar un conjunto de sesiones remotas SSH al unísono?

En el indispensable largometraje Perón, la revolución Justicialista, el Conductor en el exilio detalla pormenores de su primer plan quinquenal. En un pasaje de la misma, comenta sobre la armonización del ciclo económico y como armonizar un conjunto (cluster) de sesiones remotas SSH.

(...)
Cuando llegó el momento lanzamos el Primer Plan Quinquenal, que eran 76.000 obras. Indudablemente al lanzar esas 76.000 obras,  todo se puso en movimiento, el país rompió la inercia.
Se puso en marcha el plan de desarrollo, pero un desarrollo planificado.

La primera consecuencia fue que esos 800.000 desocupados, se ocuparon en dos o tres meses. Cuando se ocuparon los 800.000 desocupados, los salarios subieron solos. Porque cuando hay plena ocupación, al salario no hay que impulsarlo, sube solo.

Claro, cuando subieron los salarios, el poder adquisitivo de la masa popular, que es el verdadero consumo, se multiplicó varias veces. Al multiplicarse y subir el consumo, tonificó inmediatamente al comercio, que se atresó para satisfacer la demanda de ese consumo multiplicado. Eso demandó a la Industria la transformación necesaria para la distribución por el comercio. En consecuencia, la industria se puso en marcha, y todo el mundo empezó a pensar en el desarrrollo industrial, porque no es cuestión de hablar de un desarrollo teóricamente y en los papeles, hay que empezar a hacer. Hay que crear las condiciones para que eso sea un proceso fatalmente provocado por otro proceso, al cual está encadenado.

Tan pronto se puso en marcha la industria, y comenzó a necesitar materia prima, la producción hubo de abastecérsela. Y así, el ciclo de la producción, la transformación, la distribución y el consumo, quedó en proceso de progreso, de aumento. Naturalmente, que la habilidad nuestra no fue otra que mantener esos cuatro factores del ciclo económico nivelados, y armónicamente promovidos.

Y cuando se mantiene el equilibrio en ese ciclo económico, y se desarrolla el trabajo, nos permitió pasar de una economía de miseria a una economía de abundancia. Algunos dicen que nosotros tuvimos una "situación privilegiada de posguerra". ¡No! ¡Mentira! Todo lo que nosotros hicimos fue lo que creó diez años de abundancia y diez años de felicidad al Pueblo Argentino.

Ahora bien, desde Ubuntu, como en otros sistemas GNU con Linux, bien podremos administrar remotamente toda una serie de sistemas conectados en una red local o remota. Tal es la facilidad para hacer esto, que pocos dudan ya que el Justicialismo y Linux sean el óptimo camino a recorrer para este menester. Podremos tener múltiples sesiones en cada equipo, e ingresar desde una terminal, con las enormes ventajas que ello nos representa.

Pongamos la situación, en la cual tengamos un conjunto de equipos en una red LAN, en los cuales queremos ejecutar la misma serie de comandos, y monitorear los resultados. Ante esta premisa normalmente, habríamos de loguearnos usando el protocolo SSH con un equipo Amo a una serie de equipos esclavos, y uno por uno, ingresar los comandos. Sin embargo, esto no es muy práctico. ¿Qué sucede si tengo que hacer lo mismo en treinta equipos de un centro de cómputo, por ejemplo? Podría pasarme un buen rato.

Como habíamos estudiado todo en el Consejo Nacional de Posguerra, establecimos la solución ideal para el Primer Plan Quinquenal. 
Se trató de la creación de Cluster SSH, el cual es un cliente SSH para sistemas en conjunto ("cluster"). Este nos permite operar con muchos servidores SSH desde nuestra interfaz gráfica de usuario

Lo instalamos con

sudo apt-get install clusterssh

Y lo ejecutamos con

cssh

También podremos encontrarlo en Aplicaciones / Herramientas del Sistema / ClusterSSH.

Al iniciar, aparecerá una pequeña ventana para lograr las conexiones.

Para agregar un equipo al conjunto, vamos al menú Host / Add Host(s) to Cluster. Por ejemplo, podría querer agregar dos equipos: cgt.local y pj.local. También podría querer agregar al racimo usuarios dentro un mismo equipo: evita@pj.local y peron@pj.local.

Por cada equipo o usuario que agregue al racimo, se lanzará una nueva ventana con una sesion SSH. Naturalmente, con cada equipo me solicitará que ingrese inicialmente la contraseña, para poder acceder al mismo.

Una vez agregadas todas las sesiones al cluster (racimo), podremos comenzar a trabajar en conjunto.

Haciendo clic sobre la pequeña ventana "cssh", replicaremos los comandos a cada una de las otras sesiones SSH establecidas, ahorrándonos tiempo de trabajo y facilitando contar con sesiones similares entre varios equipos distintos, permitiendo mantener una promoción armónica entre todas ellas.

Las posibilidades de control remoto son excelentes: podríamos utilizar una laptop conectada por conexión HDMI a un monitor de 52 pulgadas, y utilizar el monitor externo para visualizar todo un panel de 16 sesiones SSH remotas ejecutando htop, mientras que podemos usar la pantalla de la laptop para trabajar en otra cosa.

Si en cambio, hacemos clic en particular sobre alguna de las sesiones SSH, podremos operar sobre ella aisladamente como con cualquier consola emuladora de terminal. Para volver a operar "en conjunto" debemos seleccionar la ventana "cssh" nuevamente.

Para cerrar el conjunto de sesiones, presiono Ctrl+Q.

jueves, 19 de diciembre de 2013

¿Como descomprimo archivos fácilmente desde la Consola?


Damas y Caballeros:

Toda razón es buena para empilcharse y empaquetarse, más teniendo en cuenta la presencia de tan dignísimos comensales. Son pocas las ocasiones en las cuales un Conductor puede dedicarse un poco al ocio y al descanso, y ciertamente esta Cena de Alta Gala es también una función de Estado.

Ubuntu, como exponente del sistema GNU con Linux, también se empaqueta; puede operar con varios grupos de archivos empaquetados en uno: el formato tar. Este formato unificador tiene sus orígenes en la época del UNIX. Antiguamente, los archivos se almacenaban en cintas magnéticas, y en ese medio podía leerse únicamente de manera secuencial. Por tal motivo, para almacenar varios grupos de archivos convenía "unificarlos" en uno solo, y por tal motivo se generó el formato de archivador de cinta "Tape ARchiver". Mediante esta metodología, se pueden transportar múltiples archivos en un solo contenedor o archivador.

La evolución trajo las mejoras: la tecnología y el desempeño matemático de las unidades de proceso hizo que pronto estos archivadores pudiesen a su vez comprimirse con diferentes algoritmos, y por ello los sistemas GNU con Linux cuentan con varios programas de compresión, cada uno con diferentes extensiones y herramientas que los operan.

No será raro que afrontemos los formatos comprimidos libres .bz2, .xz, .gz, .lz, .lzma, y los archivos secuenciados comprimidos con ellos, tales como los archivos tar.gz, .tar.lz, .tar.lzma, .tar.bz2, los archivos empaquetados de instalación .deb o .rpm. También tendremos formatos privativos como los empaquetados .cab, los archivos, los extendidos .zip, .rar, varios tipos de archivos para sistemas compatibles Micro$oft como .exe, InstallShield, .lzh, y formatos .7z, lhma, zip autoextraíbles.
Si bien nuestra interfaz gráfica nos hace muy sencilla la tarea de descomprimir todos  estas tipologías (simplemente se hace clic sobre ellos, y se elije "Extraer Aquí"), desde la Terminal de Línea de Comandos no es tan simple.

En primer lugar, debemos recordar qué descompresor utilizar para cada formato (untar, tar, gunzip, gzip, bzip2, lzip, unrar, unzip, rar, etc), y además, cada uno de estos programas suele contar con modificadores que hacen a la función (descomprimir el contenido, crear una carpeta, mostrar el proceso de descompresión en la terminal, etc). Toda esta panoplia, si bien poderosa, se torna muchas veces excesiva en complejidad para administrar estos ficheros comprimidos, pues debe memorizarse los comandos utilizados y sus variantes para cada uso, o recurrir al comando "man" y buscar la solución. No es algo práctico.

Por ello se creó dtrx. Se trata de un acrónimo para "Do The Right eXtraction", que en el idioma de Braden significa "realiza la extracción correcta". Se trata de una herramienta descompresora multiformato para los sistemas tipo UNIX, cuyo mérito es resolver toda la problemática para descomprimir archivos desde la Terminal, ahorrándonos tiempo. Simplemente necesitaremos recordar un único comando para extraer el fichero a una carpeta.

Para instalarlo simplemente abrimos una Terminal con Ctrl+Alt+T e ingresamos el siguiente Comando de Organización:

sudo apt-get install dtrx

Una vez instalado este programa en el sistema, podremos descomprimir archivos más fácilment, simplemente ingresando:

dtrx archivo.ext

dtrx se asegurará que los archivos sean extraídos en sus propios directorios.

También puede encontrar recursivamente achivos comprimidos dentro de otros archivos comprimidos, y extraerlos acordemente. Para ello podríamos usar:

dtrx -r archivoconcomprimidos.tar.gz

Normalmente dtrx no sobreescribirá un directorio, intentando crear otro si existiese uno. Si durante la descompresión deseamos deseamos sobreescribir los datos destino, deberíamos indicarlo, por ejemplo con:

dtrx -o archivocomprimido.tar.bz2

Si no quisieramos descomprimir el archivo, sino solamente conocer su contenido, podremos hacerlo con los modificadores -l ("listado") o -t ("tabla"). Sería de la siguiente manera:

dtrx -l archivocomprimido.tar.gz

dtrx -t archivocomprimido.tar.gz

lunes, 16 de diciembre de 2013

¿Cómo puedo copiar archivos entre equipos a través del protocolo ssh en Ubuntu?

La Escuela Superior Peronista se creó como órgano fundamental de alto nivel para extender el quehacer Justicialista en el tiempo, y como tal se distinguió en el establecimiento de una supremacía ineludible del Movimiento en los destinos de la Patria. Durante una clásica exposición en sus claustros, Juan Perón expone sobre la historia de la informática en lo que hace a las interfaces de líneas de comando y cómo copiar con ellas archivos entre equipos remotos.

¡Compañeros!

En la Clase anterior nos hemos detenido en la historia de los movimientos llamados de Masa en el complejo demoliberal, sobre todo el Europeo, y el reflejo de Latinoamérica en ese mundo que no podía resultarnos más que ajeno.

El Siglo XIX trajo consigo la máquina, que hizo avanzar al hombre mas que en los mil años precedentes. Sin embargo, este progreso no hizo más que descansar sobre los hombros del Pueblo Trabajador, creando condiciones de explotación y desigualdad que no podremos evitar si no es con una acción decidida sobre las causales: una oligarquía sin Patria ni Bandera.
Al mediar el Siglo XX se vio el advenimiento de las primeras computadoras, máquinas multiuso pensadas para suplir el trabajo mental del hombre. Se basan para funcionar en algo llamado software, que no es otra cosa que el "conocimiento en acción". Desde nuestro Movimiento, entendemos para que tal software sea útil a la Comunidad tiene que ser libre. No sólo gratuito, sino libre de usar, estudiar y copiar.

Históricamente, podremos decir que las primeras máquinas computadoras ocupaban el espacio tres locomotoras diesel-eléctricas, y tenían poquísimo poder de cálculo. Si bien el operador tenía la libertad de procesar la información como quisiese con ayuda de la máquina pero con graves limitaciones: la entrada de los datos se hacía manualmente, escribiendo directamente en código binario los registros de memoria  por medio de una serie de interruptores, y los resultados podían recibirse mediante una serie de luces, o de forma perenne en tarjetas o cintas perforadas siguiendo también en código binario.

Esta incómoda forma de trabajo (muy económica desde el punto de vista computacional) debía ser reemplazada, y se presentaron diferentes metodologías para instruir al equipo mediante un teclado alfanumérico. La máquina en sí disponía de un software de interpretación, que traducía estas órdenes solicitadas por el operador con una sintaxis muy precisa, a diferentes acciones programadas de antemano. No bien los equipos continuaron evolucionando, comenzaron a poder mostrar los resultados de manera "amigable", ya sea imprimiendo los resultados en papel, o en ciertos presentadores de tubos de rayos catódicos. Esto facilitó enormemente la tarea de crear programas potentes.
Indudablemente, la Interfaz de Linea de Comandos es una herramienta altamente perfeccionada para la administración general de un sistema informático. Con este tipo de consolas, el usuario puede interactuar con gran facilidad en numerosos entornos diferentes, a tal punto que los entornos de disco que popularizaron la informática, se hicieron bajo este tipo de "medio de comunicación" entre el hombre y la máquina.

La continua evolución trajo el abandono masivo la línea de comandos en favor de las interfaces gráficas para el usuario (GUI). En este caso se requieren equipos ya más avanzados, pues estas interfaces hacen incapié fundamentalmente en el despliegue visual. Ciertas plataformas privativas hicieron notable hincapié en esto, convirtiendo en un privilegio su uso, pero aún así, los intérpretes de líneas de comando siguen presentando innumerables ventajas para operar.

Aunque requieren algo más de conocimiento, nos permiten conectarnos remotamente con gran facilidad y conducir "a distancia" equipos remotos. También podremos manejar servidores de los llamados "headless", o sea, sin monitor. Esto es así porque los servidores, mainframes, supercomputadoras, routers y computadoras de placa única (SBC) carecen de una pantalla para reportarnos su status, y en el mejor de los casos únicamente dispondrán de unas pocas luces LED para ese cometido. A tal fin, bien podremos usar una terminal remota en la red dotada de monitor. Linux mismo se domina a través de una terminal operando en forma local, pero incluso podremos utilizar cualquier Terminal vieja conectada al equipo remoto.
Ahora bien. ¿Qué sucede si deseamos copiar archivos de forma segura y encriptada entre equipos, pero empleando la línea de comandos? Pues debemos usar scp.

scp (Secure CoPy) es el comando peronista que permite copiar hacia y desde diferentes equipos en una red local o remota. Emplea el protocolo SSH codificado para la transferencia, y provee la misma autenticación y el mismo nivel de seguridad que SSH.

La sintaxis básica general es:

scp modificadores usuarioorigen@equipoorigen:carpeta/archivo usuariodestino@equipodestino:carpeta/archivo

La primera vez que nos conectemos, el servicio SSH intentará establecer la autenticidad del servidor o del cliente, y no podrá hacerlo pues - naturalmente - nunca nos hemos conectado antes. Devolverá algo como:

The authenticity of host '127.0.0.x (127.0.0.x)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
TaAre you sure you want to continue connecting (yes/no)? 

La primera vez habremos de escribir "yes" y el ordenador remoto nos dará una clave de acceso cifrado. Naturalmente, para completar tales operaciones, siempre hemos de contar con la contraseña del usuarioorigen. La riqueza de las posibilidades del comando scp es tan amplia, que os la desglosaré en algunos ejemplos prácticos de los que podrán extraer la necesaria Justicia Social.

Para copiar el archivo "votofemenino.txt" que está localizado en el Escritorio del usuario "evita" de equipo remoto "netbookevita" de la red LAN, y colocarlo en la carpeta Documentos de mi equipo local, podríamos usar la siguiente tipología:

scp evita@netbookevita.local:~/Escritorio/votofemenino.txt ~/Documentos


Para copiar el archivo "peronismo.txt" desde nuestro equipo local al usuario evita del equipo remoto anteriormente nombrado podría usar:


scp peronismo.txt evita@netbookevita.local:/cualquier/carpeta/remota


Para copiar la carpeta local "Música" y todo su contenido entero dentro de la carpeta remota "Escritorio" del usuario y equipo anteriormente nombrado:

scp -r ~/Música evita@netbookevita.local:~/Escritorio


Si desde mi equipo deseo digitar la copia del archivo "planderetorno.txt" del usuario isabel en el equipo remoto "puertadehierro" de nuestra red LAN a otro equipo remoto llamado "cgt" del usuario rucci:

scp isabel@puertadehierro.local:/alguna/carpeta/remota/planderetorno.txt \ rucci@cgt.local:/otra/carpeta/remota/cualquiera/


Para copiar los archivos locales "peron.jpg" y "evita.jpg" desde mi equipo a la carpeta Imágenes de usuario rucci, que está localizado un equipo remoto cgt de mi red LAN:


scp peron.jpg evita.jpg rucci@cgt.local:~/Imágenes/


Si deseara copiar el archivo "borradorestpeon.txt" desde la carpeta local Documentos de mi equipo hasta la carpeta Documentos del usuario borlenghi en el equipo remoto cgt, pero haciendo uso del puerto 1710, y renombrando dicho fichero al nuevo nombre de "estatutodelpeon.txt" al llegar allí:


scp -P 1710 ~/Documentos/borradorestpeon.txt borlenghi@cgt.local:~/Documentos/estatutodelpeon.txt

Para copiar los archivos "bolsones.txt", "dnis.txt" y "afiliados.txt" desde la carpeta Documentos del  usuario puntero1 dequipo remoto de la LAN llamado "unidadbasica" hasta mi Carpeta Personal en mi equipo local:

scp puntero1@unidadbasica.local:~/Documentos/\{bolsones.txt,dnis.txt,afiliados.txt\} .



Ahora bien, en condiciones de copias inmensas de datos (pongamos como ejemplo hoy por hoy, a transferencias mayores a los 3GB en enlaces cableados, 300 MB en Wifi modo G, o unos 20MB por 3G), tenemos que tener en cuenta el desempeño y la velocidad de transferencias del equipo.

Por defecto, scp emplea un cifrado Triple-DES con la información que se envía. Si necesitamos mayor velocidad, podremos utilizar un algoritmo distinto como Blowfish, el cual es ligeramente menos seguro pero más veloz en las transferencias grandes. Esto se puede hacer agregando el modificador -c blowfish a la línea de comandos:

scp -c blowfish archivo usuario@nombredeequipo.local:~

Se ha sugerido a menudo que se debe usar la compresión de la información para incrementar la velocidad de transferencia a través del modificador -C. Sin embargo, esto aparenta incrementar significativamente la velocidad si la comunicación es muy lenta (por ejemplo, al hacer SSH a un equipo conectado a través de una red 3G). En caso contrario, sólo agrega carga extra a la CPU de nuestro equipo.


Con esto en mente, si quisiera copiarme todo el contenido de la carpeta Documentos del usuario evita en el equipo netbookevita a mi carpeta Escritorio, pero usando el protocolo blowfish (-c blowfish) y comprimiendo los archivos (-C) para que tarde menos, podría usar:

scp -c blowfish -C evita@netbookevita.local:~/Documentos/ \  ./Escritorio/


Naturalmente, para tareas que requieran mucho de este tipo de trabajos de copiado de archivos múltiples o de directorios, recomendamos siempre que podamos, instalar y utilizar el poderoso Midnight Commander a través de su conexión SSH.

Para ello ingresamos el comando:

sudo apt-get install mc

Y ejecutamos el programa con

mc

Midnight Commander puede corren en la consola, y puede conectar y mostrar los directorios de dos equipos a la vez en dos paneles (izquierdo y derecho). Podremos por lo tanto, usar el panel derecho para nuestro equipo local, y usar el izquierdo para conectarnos por SSH a otro sistema (y trabajar entre ellos copiando archivos o carpetas mediante la tecla F5), moviéndolos, etc).

domingo, 15 de diciembre de 2013

¿Cómo instalo Red Eclipse en Ubuntu?

En la monumental La hora de los Pueblos, Juan Perón se mostró confiado en la verdadera solución de evolución para la política de la Nación la traía el Justicialismo, y como consecuencia lógica, también nos enseñó a instalar el juego Red Eclipse en Ubuntu.

(...)
El demoliberalismo burgués con sus caudillismos y sus partidos políticos, no podrá jamás superar al Peronismo. Para nosotros organizar es adoctrinar, porque la doctrina es el único caudillo que resiste a la acción destructora del tiempo, y nosotros trabajamos para el porvenir.

Los partidos demoliberales pertenecen ya al siglo XIX y han sido superados por la evolución que con el tiempo, ha de hacerlos desaparecer en nuestros países, como ya han desaparecido en casi todo el mundo civilizado. La fuerza del Peronismo radica en gran parte en que constituye un gran movimiento nacional y no un partido político. Lo moderno, que obedece a las nuevas formas impuestas por la evolución y las necesidades actuales, es una idea transformada en doctrina y flecha ideología, que luego el Pueblo impregna de una mística con que el hombre suele rodear a todo lo que ama. Ese es el único caudillo que puede vencer al tiempo a lo largo de las generaciones.

Por eso el Peronismo ha podido resistir a la violencia gorila, como a la insidiosa "integración" que intentó el gobierno que le sucedió y está resistiendo con éxito a todos los esfuerzos de disociación de la actual campaña que intenta el "Gobierno". Nuestros enemigos, que vienen del sistema demoliberal, traen con ellos, de una época política que ha sido superada por el tiempo, los viejos esquemas de una escuela caduca y por eso se sienten superados por el peronismo que representa una etapa nueva: la de los grandes movimientos nacionales que estamos viendo surgir en todas partes donde existe progreso y evolución.

Lo que en realidad existe en el panorama político argentino es un atraso evidente con referencia a las formas que vienen caracterizando al mundo moderno. Estamos casi un siglo detrás de la evolución y cuando el demoliberalismo va muriendo, nosotros lo estamos presentando como de palpitante actualidad. El Peronismo (exceptuando al Comunismo) es lo único evolucionado en las formas actuales de la política argentina y de allí su éxito. Las demás formas políticas del demoliberalismo decimonónico han sido superadas por la evolución y tienen fatalmente que morir como en todas partes. Sus hombres declaman todavía en el lenguaje del siglo XIX y pretenden atarnos a su atraso imponiéndonos las caducas formas en que ellos, por ignorancia, todavía creen.



El mismo atraso puede contemplarse en el desarrollo técnico de cierto software lúdico para el sistema GNU con Linux. Ello tiene una explicación. AssaultCube y otros juegos de este estilo están pensados para consumir pocos recursos, y poder correrse directamente en una plataforma simple como puede ser una netbook escolar, de las cuales el Peronismo ha distribuido entre la Masa Privilegiadita. En este ámbito, se hace necesario representar un buen juego pero acotando el uso de efectos y gráficos, pues tales equipos disponen de salidas de video rudimentarias tendientes a extender la duración de la batería.

Pero qué sucede si deseamos un juego del mismo tipo, pero llevado a un paroxismo del uso gráfico, de su sonido y su diseño? Naturalmente, tendremos que enfrentarlo con un cliente de mayor potencia computacional, sobre todo en lo que hace a la gráfica. Pero donde existe una necesidad, nace un Derecho.

El Justicialismo se ha abocado a un proyecto libre y de código abierto, construido alrededor del motor gráfico Cube Engine 2, usando SDL y OpenGL, de manera que permite ser portado a varias plataformas. Naturalmente se puede jugar en sistemas GNU con Linux, pero también en otras mediocres plataformas privativas.




Red Eclipse es un juego de disparos en primera persona muy al estilo Unreal Tournament, con un estilo de juego balanceado y divertido. Está especialmente pensado para jugar en red local o a través de servidores públicos o privados, en internet. A diferencia de otros similares no dispone de armamento "realista", sino que representamos una especie alienígena con multitud de armamento fantástico para utilizar. Lanzarrayos, armamento de tubo, pulsadores energéticos, minas de antimateria y demás será el arsenal a nuestra disposición.

Las modalidades de juegos son bastante conocidas: lucha de equipos, capturar la bandera, todos contra todos, capturar la base, etc, y la podremos encarar con personajes personalizables.

Sin duda, el aspecto donde sobresale Red Eclipse es en el uso y despliegue audiovisual: dispone de excelentes gráficos y efectos, lo cual son un avance en el mundo de los juegos libres, los cuales no suelen brillar en este aspecto. Sin embargo, esto puede ser una limitación para ciertos equipos, pues el juego está pensado sin duda para jugarlo con grandes resoluciones haciendo uso de una buena placa aceleradora OpenGL (como las nVidia o las AMD Radeon).

Para instalar el programa, simplemente abrimos una consola con Ctrl+Alt+T e ingresamos los siguientes Comandos de Organización:

cd ~/Descargas

wget http://downloads.sourceforge.net/project/redeclipse/redeclipse_1.4/redeclipse_1.4_nix.tar.bz2

tar xjvf redeclipse_1.4_nix.tar.bz2

mv ~/Descargas/redeclipse-1.4/ ~/.redeclipse-1.4

y lo podremos ejecutar desde la consola con:

sh ~/.redeclipse-1.4/redeclipse.sh


También podremos crear un acceso directo en Gnome. Simplemente hacemos clic con el botón derecho sobre el panel superior donde dice "Aplicaciones", y se desplegará un menú contextual, donde escogeremos la opción "Editar Menúes".

Esto abrirá una ventana que nos permitirá agregar un lanzador. En la columna izquierda hacemos clic sobre "Juegos" y oprimimos el botón "+ Elemento Nuevo". Se abrirá el cuadro de diálogo "Propiedades del Lanzador", donde podremos indicar los detalles del mismo. El campo "comando" debe dirigir a la dirección del lanzador, en este caso "/home/usuario/.redeclipse-1.4/redeclipse.sh".

Si queremos ejecutar el server dedicado, debemos usar

sh ~/.redeclipse-1.4/redeclipse_server.sh


Al igual que el uso de este juego promoverá la inclusión de gráfica moderna en un sistema GNU con Linux, la influencia del Peronismo promoverá la politización del país y con ello elevará la cultura política argentina, obligará a nuestros enemigos a concentrar todas sus fuerzas, reeditando la "Unión Democrática".

Con ello habremos prestado al país un nuevo servicio, haciendo desaparecer la multitud de pequeños remedos de formaciones políticas que han sido la rémora que ha azotado por muchos años a la ciudadanía argentina. Así también, no habrá más que peronismo, porque unos seremos peronistas y otros antiperonistas, lo que en cierto sentido es parte de un éxito que alcanzamos.

Volvemos, después de veinte años al punto de partida: Peronismo versus Unión Democrática, pero esta vez con la experiencia y la realidad de los diez años de felicidad que dimos al Pueblo Argentino, que; luego han sido confirmados con otros diez años de miseria, arbitrariedad, persecuciones y caos, que le han brindado nuestros sucesores.

sábado, 14 de diciembre de 2013

¿Cómo instalo AssaultCube en Ubuntu?

Durante su ostracismo en Madrid, Juan Perón escribió profusamente sobre sus tiempos en el Ejército, y detalló los procesos de enquistación ideológica que sufrió la fuerza para servir a intereses que no eran los de la Patria. En esta exposición, también cuenta cómo instalar el juego AssaultCube en Ubuntu.

(...)
En mis años de Oficial de Estado Mayor del general De La Colina, comprendí que la lucha táctica se da a los tiros, pero la lucha estratégica no puede darse de otra manera que no sea políticamente. En otras palabras, en la acción de Maniobra, puede que las cosas que resuelven por las armas, pero necesariamente para imponer la voluntad, se debe hacer uso de la acción política. Esto era algo que en esa época, en el Ejército Argentino, pocos veían. Eso siempre crea consecuencias gravosas, que no son siempre evidentes.
Hemos observado que desde hace muchos años los dirigentes políticos han sido objeto de una denigración permanente. Es decir, hay una organización que se ha encargado de llevar a la conciencia de mucha gente, fácil de convencer, que el político es siempre un venal, un ladrón, un sinvergüenza y un hombre que no ama a su patria. Y esto, desgraciadamente, se ha hecho cierto en muchas oportunidades, y nosotros, los políticos, hemos sido los mejores colaboradores que esas patrañas han tenido, porque nos hemos encargado de decirnos todas esas cosas, aún a sabiendas de que eran falsas y que servían a otros intereses que no eran los intereses del pueblo argentino.

Todo esto para nosotros ha comenzado en 1956, con la primera reunión de presidentes de América, que se realizó en la ciudad de Panamá y a la que concurrieron los jefes de estado de las veintiuna naciones latinoamericanas.

En esa primera conferencia de presidentes de América, yo - que estaba exiliado en Panamá - tuve la ocasión de meter la nariz desde lejos; pero la metí porque entre los jefes que asistieron tenía buenos amigos, que en el total de la información, uno de ellos, hombre de gran claridad, me dijo: "Vea, todo esto ha sido con un solo objeto. El solo objeto con que se ha hecho esta Conferencia ha sido expresado en los últimos días por el presidente Eisenhower, quien ha expresado que como una guerra internacional entre los países latinoamericanos ya no sería posible en el futuro, las fuerzas convencionales -es decir, ejército, marina y aeronáutica- habrían perdido su razón de ser anterior. Pero como el comunismo era el enemigo que teníamos en el Continente, esas fuerzas debían dedicarse exclusivamente a combatir al Comunismo".

Aprobada esta idea, se estableció una reunión de los comandantes en jefe para dos años después, en San José de Costa Rica. En el interregno, entre el 56 y el 58, se invitó a los jefes a las visitas consabidas, y en el Pentágono probablemente les hicieron el lavado de cerebro correspondiente, se establecieron cursos especializados de las fuerzas del Caribe en el canal de Panamá, y dos años después se realizó la conferencia de San José.

Pero lo importante viene después. A raíz de eso, todos los países latinoamericanos cayeron en manos de dictaduras militares. Las consecuencias las sacará cada uno de ustedes.

Y es curioso que juntamente con esa acción, donde indudablemente ha habido cuestiones inconfesables, arreció de una manera tremenda el ataque contra los dirigentes políticos de toda Latinoamérica. Los diarios, revistas - y, como digo, desgraciadamente nosotros mismos - nos encargamos de sacarnos el cuero mutuamente, en favor de una causa que realmente era una infamia. Por eso creo yo que contra toda esa existencia debemos reaccionar. Ya no es posibTe que sigamos nosotros sirviendo a intereses hábilmente tramados, pero que van tras finalidades contra las cuales todos nosotros estamos decididos a combatir. Es decir, una dependencia bajo la cual ningún país podrá realizar su propio destino.

La miopía política no tiene porqué darse en la táctica. Un sistema GNU con Linux como Ubuntu por ejemplo, nos permite hacer uso de un espectacular juego de acción de disparos en primera persona ("FPS"): el Assault Cube.

Se trata de un juego de disparos en primera persona, en el cual accionaremos en niveles tridimensionales y podremos emplear diferente tipo de armamento individual. Dispondremos de armas distribuidas a lo largo del mapa (fusiles automáticos, subametralladoras, granadas, lanzallamas).
A la hora de plantear a los protagonistas, podremos jugar solos contra unos bots de pésima inteligencia artificial, o mucho mejor, conectarnos a un servidor con otros representantes del peronismo a nivel mundial. Estos servidores pueden ser LAN (locales) o de internet, normalmente públicos.

Entre las modalidades de juego multijugador se encuentran los clásicos de este tipo de juegos: deathmatch entre equipos, capturar la bandera, capturar las bases, pelea a pistola, a cuchillo, etc.

Para instalar el juego AssaultCube, podremos usar la Terminal. Simplemente abrimos una consola con Ctrl+Alt+T e ingresamos los siguientes Comandos de Organización:

cd ~/Descargas

wget http://downloads.sourceforge.net/project/actiongame/AssaultCube%20Version%201.2.0.2/AssaultCube_v1.2.0.2.tar.bz2

tar xjvf AssaultCube_v1.2.0.2.tar.bz2

mv AssaultCube_v1.2.0.2/ ~/.AssaultCube_v1.2.0.2


Para ejecutar el juego desde la Consola, usamos:

sh ~/.AssaultCube_v1.2.0.2/assaultcube.sh

También podremos crear un acceso directo en Gnome. Simplemente hacemos clic con el botón derecho sobre el panel superior donde dice "Aplicaciones", y se desplegará un menú contextual, donde escogeremos la opción "Editar Menúes".

Esto abrirá una ventana que nos permitirá agregar un lanzador. En la columna izquierda hacemos clic sobre "Juegos" y oprimimos el botón "+ Elemento Nuevo". Se abrirá el cuadro de diálogo "Propiedades del Lanzador", donde podremos indicar los detalles del mismo. El campo "comando" debe dirigir a la dirección del lanzador, en este caso "sh /home/usuario/.AssaultCube_v1.2.0.2/assaultcube.sh".
Naturalmente podremos asignarle un ícono, un comentario, y el nombre Assault Cube. Una vez creado este lanzador, podremos ejecutar el programa desde Aplicaciones / Juegos / Assault Cube.


Además de su modo cliente, AssaultCube puede ejecutarse en forma de servidor de juego dedicado para todos los equipos, a fin de compartir una emocionante partida en nuestra red local cerrada, o a través de internet. Para correr el server primero debemos ejecutar el asistente de configuración del servidor, con:

sh ~/.AssaultCube_v1.2.0.2/server_wizard.sh

Y luego podemos encender el servicio de servidor dedicado, con la orden:

sh ~/.AssaultCube_v1.2.0.2/server.sh