lunes, 23 de abril de 2012

Para tener en cuenta

Figura: Gopher

En pocas palabras, Gopher es un sistema distribuido de recuperación y búsqueda de documentos. Combina las mejores características de los buscadores a través de colecciones de información y bases de datos completamente indizadas. El protocolo y el software siguen un modelo cliente/servidor y permite a usuarios de distintos sistemas navegar, buscar y recuperar documentos que residen en múltiples servidores distribuidos.
El protocolo Gopher se desarrolló en la Universidad de Minesota y está disponible en el RFC 1436. Su estado es informativo.
La razón de desarrollar Gopher era la necesidad de una sistema de información de amplio alcance que permitiera a cualquiera poder publicar documentos o información incluso con un ordenador de sobremesa pequeño. El software del cliente Gopher presenta a los usuarios una jerarquía de artículos y directorios como un sistema de ficheros. De hecho, la interfaz del Gopher se diseñó para parecerse a un sistema de ficheros ya que un sistema de ficheros es un buen modelo para localizar documentos y servicios. Así que si se conecta a un servidor Gopher obtendrá una lista de artículos diferentes, similar al directorio raíz de un PC. Después de seleccionar un artículo del menú se obtendrán todos los artículos incluidos, similar a un subdirectorio. Si se selecciona un artículo del fichero, éste se transmite automáticamente y se muestra al cliente. No es necesario que el fichero resida en el mismo servidor Gopher de donde se obtuvo la información. Un menú de Gopher puede incluir los artículos de servidores Gopher diferentes y el usuario se conecta automáticamente al servidor donde obtuvo los puntos del artículo seleccionado y así sucesivamente. El usuario no sabe o no le importa que los artículos que selecció puedan residir en cualquier máquinas de Internet.
Un ejemplo simple:
Te gustaría tener una imagen del menú de tu restaurante.
  1. Arrancas tu cliente Gopher y conectas con el servidor Gopher principal
  2. Encuentras un artículo que podría incluir el menú y lo seleccionas. Por ejemplo: Facilidades
  3. Se muestran los sub-artículos de Facilidades
  4. Uno de los artículos puede ser "Menú de Hoy" que es un fichero que reside en el servidor Gopher de restaurantes
  5. Si lo seleccionas, tu cliente Gopher establece automáticamente una conexión al servidor apuntado en el artículo, lo recupera y lo muestra
La trayectoria hacia el fichero podría ser muy compleja y se podrían involucrar los servidores Gopher de todo el mundo. Para implementar la jerarquía antes mencionada, el cliente Gopher necesita alguna información del tipo de objeto para mostrar un icono de fichero o de directorio, por ejemplo. El tipo Gopher se codifica con un único dígito al principio de cada línea. Se muestra una lista de tipos conocidos Gopher incluidos en el RFC:

ValorTipo
0El artículo es un fichero
1El artículo es un directorio
2El artículo es un servidor CSO (qi) phone-book
3Error
4El artículo es un fichero BinHexed Macintosh
5El artículo es un fichero DOS binario archive of some sort
6El artículo es un fichero UNIX uuencoded
7El artículo es un servidor Index-Search
8El artículo apunta a una sesión telnet basada en texto
9El artículo es un fichero binario
TTN3270 connection
sTipo sonido. El flujo de datos es un sonido mulaw
gTipo GIF
MEl artículo contiene datos MIME
hTipo HTML
ITipo Imagen
iTipo texto "inline"
Los párrafos siguientes describen la funcionalidad básica del protocolo Gopher.
En esencia, el protocolo Gopher consiste en un cliente conectado a un servidor que envía un selector (una línea de texto, que puede estar vacía) vía conexión TCP. El servidor responde con un bloque de texto que termina en un punto y cierra la conexión. El servidor no retiene estado alguno entre transacciones con un cliente. Asumimos que un servidor Gopher escucha por el puerto 70. La única información de configuración que el software del cliente retiene es el número de puerto y el nombre del servidor (en este ejemplo esta máquina es rawBits.micro.umn.edu y el puerto 70). En el ejemplo anterior el carácter F denota el carácter tabulador.
Cliente: {Abre la conexión a rawBits.micro.umn.edu por el puerto 70}
Servidor: {Acepta la conexión pero no dice nada}

Cliente: <CR><LF> {Envía una línea vacía: significa "lista que tienes"}
Servidor: {Envía una serie de líneas que terminan en CR LF}
0Sobre Gopher en Internet FStuff:About usFrawBits.micro.umn.eduF70
1Una vuelta por la Universidad de MinnesotaFZ,5692,AUMFunderdog.micro.umn.eduF70
1Precios y Noticias de MicrocomputadoresFPrices/Fpserver.bookstore.umn.eduF70
1Cursos, Agenda, CalendariosFFevents.ais.umn.eduF9120
1Directorios de Estudiantes-ProfesoresFFuinfo.ais.umn.eduF70
1Publicaciones de DepartamentosFStuff:DP:FrawBits.micro.umn.eduF70
                   {.....etc.....}
.                  {Un punto sobre la propia línea}
                   {El servidor cierra la conexión}
El primer carácter de cada línea describe el tipo Gopher como se muestra abajo. Los caracteres siguientes hasta el tabulador constituyen la ristra que se va a mostrar al usuario para que haga una selección. Los caracteres siguientes al tabulador, hasta el siguiente tabulador forman una ristra selectora que el software del cliente debe enviar al servidor para recuperar el documento (o lista de directorio). En la práctica, la ristra selectora es a menudo un nombre de trayectoria u otro fichero selector que utiliza el servidor para localizar el artículo deseado. Los dos siguientes campos separados por tabuladores denotan el nombre de dominio del host que tiene este documento (o directorio), y el puerto al que conectarse. Un CR/LF denota la terminación de un artículo. El cliente puede presentar el flujo de datos de arriba como sigue:
Sobre Gopher en Internet 
Una vuelta por la Universidad de Minnesota...
Precios y Noticias de Microcomputadores ...
Cursos, Agendas, Calendarios ...
Directorios de Estudiantes-Profesores ...
Publicaciones de Departamentos ...
En este caso, los directorios se muestran con una elipsis y los ficheros se muestran sin ella.
En el ejemplo, la línea 1 describe un documento que el usuario verá como "Acerca de Gopher de Internet". Para recuperar este documento, el software del cliente debe enviar la ristra recuperada: "Stuff:About us" to rawBits.micro.umn.edu en el puerto 70. Si el cliente hace esto, el servidor responderá con los contenidos del documento, acabado por un punto en una línea. Como se puede apreciar en este ejemplo el usuario no sabe o no es consciente de que los artículos a seleccionar pueden residir en muchas máquinas diferentes en cualquier parte de Internet. La conexión entre servidor y cliente sólo existe mientras se transfiere la información. Después de esto el cliente puede conectarse a diferentes servidores para obtener los contenidos de un directorio mostrado.
Para mayor información acerca del protocolo Gopher referirse al RFC 1436.

Implementaciones. Veronica

Algún día se podría necesitar recuperar información o un fichero de un servidor Gopher. El problema es cómo obtener los servidores correctos que proporcionan la información necesaria sin llamar a los menús Gopher interminables. Afortunadamente, hay una forma de hacer el uso de Gopher más fácil.
Esta herramienta se llama Veronica (Very Easy Rodent-Oriented Net-wide Index to Computerized Archives) y hace para Gopherspace lo que Archie hace para los sitios FTP.
Veronica es un sistema que descubre recursos que proporciona acceso a los recursos de información que se mantienen en la mayoría (99%+) de los servidores Gopher del mundo. Además de los datos Gopher nativos, Veronica incluye referencias a muchos recursos proporcionados por otros tipos de servidores de información, tales como servidores WWW, archivos usenet y servicios de información accesible por telnet.
Las peticiones de Veronica son búsquedas de palabras clave en títulos. Una consulta simple puede ser bastante potente porque incluye un gran número de servidores de información en el índice.
A Veronica se accede a través de software del cliente Gopher. Un usuario de Veronica pide una consulta (vía cliente Gopher) que puede contener expresiones de palabras clave booleana así como directivas Veronica especiales. El resultado de una búsqueda Veronica es un menú Gopher comprende artículos de información cuyos títulos contienen las palabras clave especificadas. Se puede navegar por el menú de resultados como si se tratara de cualquier otro menú Gopher.
En enero de 1995, se indizaron 5057 servidores Gopher. El índice también incluye artículo de otros 5000 servidores aproximádamente, en casos donde estos servidores se referencien en menús Gopher. Estos otros servidores incluyen 3905 servidores WWW y más o menos 1000 servicios de tipo TELNET.
En la mayoría de los servidores Gopher se puede encontrar Veronica seleccionando Otros Gopher y Servicios de Información en el menú principal y luego Buscar en el Gopherspace usando Veronica.

Los aparatos ideologicos de Estado

Para hacer progresar la teoría del estado es indispensable tener en cuenta no solo la distinción entre poder de Estado y aparato de Estado, sino también otra realidad que se manifiesta junto al aparato (represivo) de Estado, pero que no se confunde con él. Llamaremos a esa realidad por su concepto: los aparatos ideológicos de Estado.

¿Que son los aparatos ideológicos de Estado (AIE)?

No se confunden con el aparato (represivo) de Estado. Recordemos que en la teoría marxista el aparato de Estado (AE) comprende: El Gobierno, la administración, el ejercito, la policía, los tribunales, las prisiones, etc... que constituyen lo que llamaremos de ahora el aparato represivo de Estado. Represivo significa que el aparato de Estado en cuestión "funciona mediante la violencia", por lo menos en situaciones limite (pues la represión administrativa, por ejemplo, puede revestir formas no físicas).

Designemos con el nombre de aparatos ideológicos de Estado cierto numero de realidades que se presentan al observador inmediato bajo la forma de instituciones distintas y especializadas. Proponemos una lista empirica de ellas, que exigira naturalmente que sea examinada en detalle, puesta a prueba, rectificada, y reordenada. Con todas las reservas que implica esta exigencia podemos por el momento considerar como aparatos ideologicos de estado las instituciones siguientes (el orden en el cual los enumeramos no tiene significacion especial):

*AIE religiosos (el sistema de las distintas iglesias);
*AIE escolar (el sistema de las distintas "Escuelas", publicas y privadas)
*AIE familiar
*AIE jurídico
*AIE politico (el sistema politicos del cual forman parte los distintos partidos),
*AIE sindical,
*AIE de informacion (prensa, radio, TV., etc)
*AIE cultural (literatura, artes, deportes, etc)

Decimos que los AIE no se confunden con el aparato  (represivo) de Estado. ¿En que consiste su diferencia?

En un primer momento podemos observar que si existe un aparato (represivo) de
Estado, existe una pluralidad de aparatos ideológicos de Estado. Suponiendo que ella exista, la unidad que constituye esta pluralidad de AIE en un cuerpo no es visible inmediatamente.

En un segundo momento, podemos comprobar que mientras que el aparato (represivo) de Estado (unificado) pertenece enternamente al dominio publico, la mayor parte de los aparatos ideologicos de Estado (en su aparente dispersion) provienen en cambio del dominio privado. Son privadas las Iglesias, los partidos, los sindicatos, las familias, algunas escuelas, la matoria de los diarios, las instituciones culturales, etc., etc.

Dejemos de lado por ahora nuestra primera observacion. Pero sera necesario tomar en cuenta la segunda y preguntarnos con que derecho podemos considerar como aparatos ideologicos de Estado instituciones que en su mayoría no poseen carácter caracter publico sino que simplemente privadas. Gramsci, marxista consciente, ya habia previsto esta objecion. La distincion entre lo publico y lo privado es una distincion interna del derecho burgues, valida en los dominios (subdominios) donde el derecho burgues ejerce sus "poderes". No alcanza al dominio del Estado, pues este esta "mas alla del Derecho": el Estado, que es el Estado de clase dominante, no es ni publico ni privado; por en contrario, es la condicion de toda distincion entre publico y privado. Digamos lo mismo partiendo esta vez de nuestros aparatos ideologicos de Estado. Poco importa si las instituciones que los materializan son "publicas" o "privadas"; lo que importa es su funciunamiento. Las instituciones privadas pueden "funcionar" perfectamente como aparatos ideologicos de Estado. Para demostratlo bastaria analizar un poco mas cualquiera de los AIE.

Pero vayamos a lo esencial. Hay una diferencia fundamental entre los AIE y el aparato (represivo) de Estado: el aparato represivo de Estado "funciona mediante la violencia", en tanto que los AIE funcionan mediante la "ideología".

Rectificando esta distinción, podemos ser mas precisos y decir que todo aparato  de Estado, sea represivo o ideológico, "funciona" a la vez mediante la violencia y la ideologia, pero con una diferencia muy importante que impide confundir los aparatos ideológicos de Estado confundir los aparatos ideológicos de Estado con el aparato (represivo) de Estado. Consiste en que el aparato (represivo) de Estado, por su cuenta, funciona masivamente con la represión (incluso física), como forma predominante, y solo secundariamente la ideología. (No existen aparatos puramente represivos.) Ejemplos: el ejercito y la policia utilizan también la ideología tanto para asegurar su propia cohesion y reproduccion, como por los "valores" que ambos proponen hacia afuera.

domingo, 15 de abril de 2012

Un poco de bash, Redirección y tuberías

==== Redirección y tuberías ====

En Unix, todo programa tiene 3 canales estándar para intercambiar información con el usuario, con el hardware o con otros programas: salida estándar, entrada estándar y error estándar, que verá abreviados como ##stdout##, ##stdin## y ##stderr## respectivamente. Estos canales pueden conectarse a archivos, a dispositivos o a canales de otros programas (tuberías). Por defecto la entrada estándar es el teclado, mientras que la salida y el error estándar son la pantalla.

Canal disponible en cada programa para enviar la información que produce. Cuando se inicia un programa desde la línea de comandos sin redireccionamiento se trata de la pantalla.

Canal disponible en cada programa para recibir información que produce. Cuando se inicia un programa desde la línea de comandos sin redireccionamiento se trata del teclado.

Canal disponible en cada programa para enviar información sobre errores que ocurran. Cuando se inicia un programa desde la línea de comandos sin redireccionamiento se trata de la pantalla.

Por ejemplo los programas cat y sort si no reciben un archivo como parámetro esperan información de la entrada estándar y envián el resultado de su operación a la salida estándar; para comprobarlo ejecute el programa cat o el programa sort sin argumentos.

Para redireccionar la salida estándar a un archivo se agrega al final del comando una cadena de la forma "##> ##//nombre_archivo//####". Por ejemplo para ordenar un archivo ##palabras.txt## y dejar el resultado en ##ord.txt##:

sort palabras.txt > ord.txt

Caracter empleado para redireccionar la salida estándar a un archivo o dispositivo (se pone entre el nombre del comando y el nombre del archivo o dispositivo).

Para redireccionar el error estándar a un archivo se agrega tras el nombre del comando ##2> ##//nombre_archivo//#### [6]. Por ejemplo:

cat /ceq11 2> err.txt
escribirá en el archivo ##err.txt## un mensaje como "##cat: /ceq11: No existe el fichero o el directorio##"
claro está mientras efectivamente no exista el archivo ##/ceq11##. Pueden redireccionarse tanto salida estándar como error estándar simultáneamente, por ejemplo:

cat /etc/fstab > /dev/null 2> /dev/null

redireccionará tanto salida como error estándar al dispositivo ##/dev/null##
El dispositivo ##/dev/null## es como un agujero negro, todo lo que envié ahí desaparece (ver http://es.tldp.org/Manuales-LuCAS/AA_Linux_colegio-1.1/AA_Linux_colegio-1.1-html/x6432.htm#ubicacion-de-archivos-y-directorios Ubicación de archivos y directorios).

Caracteres empleados para redireccionar el error estándar, se ponen entre el nombre del comando y el nombre archivo o dispositivo al que se redirecciona.

Por defecto al redireccionar con ##>## a un archivo, se crea un nuevo archivo, en caso de que ya existiera su contenido previo se pierde y es remplazado por la información redireccionada. Por ejemplo después de ejecutar la secuencia:

sort 1.txt > ord.txt
sort 2.txt > ord.txt

quedará en ##ord.txt## únicamente el contenido de ##2.txt## ordenado. Para agregar la información redireccionada al final de un archivo ya existente puede emplear ##>>## en lugar de ##>##, retomando el ejemplo anterior:

sort 1.txt > ord.txt
sort 2.txt >> ord.txt

dejará en ##ord.txt## el contenido de ##1.txt## ordenado y a continuación el de ##2.txt## ordenado.

Caracteres empleados para redireccionar la salida estándar y agregarla al final de un archivo.

Para lograr que la entrada estándar sea leída de un archivo, se agrega al final del comando ##< ##//nombre_archivo//####. Por ejemplo

head < arc.txt

presentará las 10 primeras líneas del archivo ##arc.txt## (es equivalente a head arc.txt o a head - < arc.txt [7]). Poder redireccionar la entrada estándar de un programa puede ahorrarle tiempo, porque puede escribir la secuencia de líneas que desea enviar al programa en un archivo y después repetirla tantas veces como desee. Por ejemplo para enviar el mismo correo electrónico a varias personas puede escribirlo en un archivo ##correo.txt## y después ejecutar algo como:

mail usuario1@micolegio.edu.co usuario2@micolegio.edu.co < correo.txt.

Caracter empleados para redireccionar la entrada estándar para que provenga de un archivo o dispositivo.

Empleando redireccionamiento y los comandos y programas que ya se han presentado se pueden hacer rápidamente muchas labores. Un ejemplo es dividir un archivo grande para transportarlo en varios disquetes: con ##split -b 1000000 grande.gz## divide el archivo ##grande.gz## en varias partes, cada una de las cuales cabe en un disquete (digamos que queda dividido en tres partes ##xaa##, ##xab## y ##xac##). Puede copiar cada una de las partes en un disquete, llevar los disquetes a otro computador y emplear cat y redireccionamiento para unirlos:

cat xaa xab xac > grande.gz

Otra facilidad para redireccionar entrada estándar es ##<<##, que después de un comando permite escribir un texto que se constituirá en la entrada estándar. A continuación de ##<<## debe ponerse una palabra, escogida por usted, que indicará fin de entrada. La entrada estándar constará de las líneas que se digiten a continuación hasta la primera que contenga sólo la palabra que indicaba fin de entrada. Por ejemplo:

sort <<FIN
pábulo
opíparo
FIN

ordenará las palabras dadas (excepto ##FIN## que indica el fin de la entrada). Así, ##<<## es equivalente a editar un archivo y después redireccionarlo a la entrada estándar de un programa.

Caracteres empleados para indicar que la entrada estándar a un comando se digitara a continuación, terminando con una cadena. Se pone entre el comando y la palabra que indica fin de entrada.

El operador de composición '|' permite redireccionar la salida de un comando en la entrada estándar de otro (es como pegar dos tubos). Por ejemplo:

ls -l / | wc -l

mostrará la cantidad de archivos y directorios en el directorio ##/##. Al ejecutar ls -l / se envía a salida estándar la lista de archivos del directorio raíz, cada uno en una línea, con '##|##' esta salida se convierte en entrada de wc -l; el programa wc con la opción ##-l## presenta sólo la cantidad de líneas de la entrada estándar.

El ejemplo anterior pudo haberse realizado en dos pasos empleando un archivo temporal, digamos ##temp.txt##:

ls -l / > temp.txt
wc -l < temp.txt

pero claro está, ##|## es más práctico y aún más cuando deben componerse más de dos programas.

Caracter empleado para conectar salida estándar de un comando con entrad estándar de otro, se pone entre los dos comandos.

viernes, 13 de abril de 2012

Otro ataque de estados unidos a nuestras libertades

En estos momentos, el Congreso de los EEUU está intentando colar por sorpresa una nueva ley que les otorgaría poderes para espiar, cual Gran Hermano, por toda la web – y esperan que el mundo no se dé cuenta. La última vez que  intentaron atacar la libertad en la Red, ayudamos a frenarles. Hagámoslo de nuevo.

Más de 100 miembros del Congreso están apoyando una ley (CISPA) que daría a empresas privadas y al gobierno de los EEUU el derecho de espiar a cualquiera de nosotros en cualquier momento y durante todo el tiempo que quieran, sin necesidad de ninguna orden judicial. Esta es la tercera vez que el Congreso de los EEUU intenta arrebatarnos nuestra libertad en Internet. Pero de la misma manera que pudimos ayudar a derrotar a SOPA, y también a PIPA, ahora podemos forzar la retirada de esta nueva ley del Gran Hermano.

Nuestra protesta global ha jugado un papel clave en la protección de Internet frente a gobiernos ansiosos por controlar lo que hacemos en la web. Unámonos una vez más y derrotemos esta ley de una vez por todas. Firma la petición y después envíasela a todo el mundo que utiliza Internet:

http://www.avaaz.org/es/stop_cispa/?vl

Según la Ley de intercambio y protección de información policial cibernética (CISPA), la mera sospecha de una amenaza cibernética otorgaría a los proveedores de Internet y a otras compañías que operan en la Red el derecho de recabar información sobre nuestras actividades, compartirla con el gobierno, negarse a notificarnos si estamos siendo vigilados y después utilizar una cláusula de inmunidad para protegerse de denuncias por violación de la intimidad u otras acciones legales. Se trata de un ataque inaceptable a la privacidad en la que confiamos cada día a la hora de enviar emails, hablar por Skype, realizar búsquedas online y mucho más.

Pero sabemos que al Congreso de los EEUU le preocupa la reacción de la opinión pública mundial. Esta es la tercera vez que han intentado disfrazar su ataque a nuestra libertad en Internet y colarnos una ley, bajo otro nombre, con la esperanza de que los ciudadanos no nos demos cuenta. Ya hay grupos defensores de los derechos en Internet, como la Electronic Frontier Foundation, que han condenado esta ley por su interferencia con los derechos básicos a la privacidad, y ahora ha llegado el momento de que nos pronunciemos también nosotros.

Firma la petición al Congreso oponiéndote a la ley CISPA. Cuando alcancemos las 250.000 firmas, nuestra llamada será entregada a cada uno de los 100 congresistas que apoyan esta ley:

http://www.avaaz.org/es/stop_cispa/?vl

Nuestra libertad en Internet se ve amenazada cada día por gobiernos de todo el mundo – pero es el de los EEUU quien está mejor posicionado para atacar los derechos de los usuarios de Internet, porque una parte importante de la infraestructura de la Red se encuentra en su país. Nuestro movimiento ha demostrado, una y otra vez, que la opinión pública global puede ayudar a detener las amenazas de los EEUU a Internet. ¡Hagámoslo de nuevo!


Con esperanza,



Emma, Rewan, Ricken, Antonia, Lisa, Morgan, Maria Paz, Pascal y todo el equipo de Avaaz

Más información:

CISPA mucho peor que la ley SOPA (Vanguardia)
http://www.vanguardia.com.mx/cispamuchopeorquelaleysopa-1256914.html

Lista de las grandes compañías que apoyan CISPA, la nueva SOPA (alt1040):
http://alt1040.com/2012/04/cispa-la-nueva-sopa-va-muy-en-serio-lista-de-las-grandes-companias-que-apoyan-la-legislacion

Un nuevo proyecto sobre 'ciberseguridad' en EEUU desata otra vez las alertas en Internet (El Mundo)
http://www.elmundo.es/elmundo/2012/04/06/navegante/1333703852.html

H.R. 3523: ley del 2011 para compartir y proteger la ciber-inteligencia (Texto en inglés)
http://www.govtrack.us/congress/bills/112/hr3523