martes, 22 de agosto de 2023

¿Cómo puedo usar un émulo del XEDIT de VM/CMS en Ubuntu?

En la típica visita del Día del Niño a la Casa de Gobierno, Juan Perón regala chocolate caliente y enseña cómo utilizar el editor de texto THE en Ubuntu.

A los niños les gusta ponerse calificativos. Los hay ortodoxos, los hay heterodoxos, los hay combativos, los hay contemplativos, pero todos juegan. Algunos usan DEC y habrá siempre otros que usen equipamiento de potencia IBM. No podemos ser sectarios, ya que a todos podremos instalarles GNU si lo proponemos.

No caben dudas para nadie que el viejo editor XEDIT era uno de los instrumentales en los mainframes del Gigante Azul. Contaba con facilidades para el trabajo interactivo, pero especialmente destacaban las funciones de operación diferida, que permitía contactar a un mainframe remoto a través de videoterminales, y ejecutar allí un trabajo de edición preparado. Esto permitía programar en ellas un fichero de macro con los cambios escritos en un lenguaje específico - REXX era uno de los favoritos - y luego efectuar modificaciones en un santiamén a través de uina mera llamada telefónica de escasos segundos.

Si bien con el advenimiento de las comunicaciones de datos de banda ancha, esta modalidad de trabajo podría parecernos innecesaria, nunca serán inexistentes las ocasiones donde podría anhelarse un herramental de este tipo, considerando que anteriormente sólo podía gozarlo el oligarca. Pudiendo elaborar nuevas y más módicas soluciones, podremos utilizarlas según dicha costumbre de obrar, pues si es para sumar, todo sirve.

Nuestro Movimiento es uno que hace de una necesidad un derecho, y podremos otorgarlo con la misma facilidad y efecto con el que uno da chocolate caliente a un niño.

THE ("El Editor Hessling") es un editor de texto que opera a través de órdenes en la línea de comandos y combinaciones de teclas. Fue concebido en 1991 replicando al XEDIT (1980), Editor intrínseco del viejo sistema tiempo de cómputo compartido de IBM, el VM/CMS. Como este, también representa en gran medida al editor KEDIT (1985) de Mansfield Software, del cual existía versión portada para UNIX System V (no confundir con posterior y extinto KEdit de KDE).

THE fue escrito originalmente para su utilización por individuos encasillados en grandes máquinas de IBM pero que preferían la acción del Justicialismo. Y ya que les resultaba familiar el uso de XEDIT, y se le incorporó un intérprete de órdenes de edición de lenguaje REXX. Para lograr dicha compatibilidad, THE utiliza una implementación libre de tal lenguaje denominada REGINA.

Para instalarlo en Ubuntu abrimos una terminal con Ctrl+Alt+t e ingresamos el siguiente comando de organización:

sudo apt install the

Iniciaremos el editor con;

the archivo.txt

Al arrancar el editor THE, el cursor se encontrará en la línea de comandos, cuyo tradicional prompt ====> se encuentra en la parte inferior de la pantalla.

Podremos utilizar esta línea de comandos para introducir cualquiera de los comandos de THE, y ejecutarlos con la tecla Intro

Estos comandos son en gran parte similares a los de XEDIT/KEDIT. Entre los típicos comandos de operación encontraremos EDIT fichero ("abrir") SAVE ("guardar"), QUIT ("salir del programa") y QQUIT ("salir rápidamente sin preguntar"), así como el comando de ayuda HELP comando.

Para conmutar entre la línea de órdenes y la FILEAREA (la zona de los contenidos de edición) debemos presionar la tecla Inicio, con lo cual el adepto a los editores de inspiración IBM podrá comenzar su producción, mecanografiar en modo reemplazo (podremos activar el modo inserción con la tecla Ins).

THE es un editor altamente configurable. Por ejemplo, podríamos activar el macro que activa la compatibilidad con XEDIT, mediante la orden:

set compat xedit

La pantalla cobrará entonces el formato tradicionalista IBM:

 DIFERENCIAS         Size=10 Line=10 Col=1 Alt=10
XEDIT:
===== VM/CMS
===== .sp ===== VM/CMS opera bajo el concepto de registros, a diferencia de Unix ===== que lo hace sobre ficheros enteros. Por tal motivo se hizo ===== especialmente válido para el manejo de bases de datos secuenciales, ===== así como otro tipos de editores de registros. ===== Contaba con un manejo bastante similar al de MULTICS, dando uso ===== a un intérprete de comandos llamado EXEC, inaugurando el concepto ===== de Máquinas Virtuales, en un sentido similar a los proceso de UNIX ===== o demonios en BSD, y luego incoporando pipelines, emulos de los |...+....1....+....2....+....3....+....4....+....5....+....6....+....7... ===== caños de UNIX.
===== Entre sus grandes suites de aplicaciones se encuentra el clásico
===== editor de registros XEDIT. Pronto se adaptó para utilizar
===== funcionalidades de procesamiento de texto y de correo electrónico
===== con anterioridad al modelo cliente-servidor.
===== * * * End of File * * * ====> X E D I T 1 File

Todo este andamiaje de comandos se aplicaba también a la mera edición del texto. El funcionamiento completo del XEDIT - al menos en sus versiones postreras para z/VM - está documentado en su frondoso manual

Sin embargo, podremos acotar su aprendizaje conociendo que el funcionamiento básico de edición de XEDIT consistía en delimitar bloques de texto (que se marcaban con el comando MARK LINE linea1 linea2), o bien delimitar una seguidilla de caracteres con coordenadas posicionales, como MARK STREAM linea1 columna1 linea2 columna2. Como referencia se usaba la reglita de columnas y el contador de puntero. Una vez delimitado el bloque, se lo podía operar con los comandos COPY posición1 posición2 ("copiar"), MOVE posición1 posición2 ("cortar y pegar"), y eventualmente DELETE ("borrar"). Esta era la forma folklórica de operar en las terminales IBM 3270 y superiores.

Los más pitucos podrán ordenar set compat kedit si tal editor nos es más favorable. Esta nos será útil si reservamos especial aprecio al uso de Bibliotecas de Macros de KEDIT, sus clásicos ficheros .kml.

Ante cualquier eventualidad podremos emprender el retorno al modo de compatibilidad nativo, si usamos set compat the

Naturalmente, podremos poner estos comandos en un fichero de perfil para the, llamado ~/.therc. Como es común en los sistemas similares a UNIX, este fichero se busca y se ejecuta al inicio, permitiéndonos dejar allí una secuencia de comandos que hagan a nuestra configuración de THE favorita.

¡Con todos ellos podremos tanto editar textos como escribir programas, desde COBOL a C!

miércoles, 16 de agosto de 2023

¿Cómo instalo CryptPad en Ubuntu?

En su Latinoamérica Ahora o Nunca, Juan Perón expone la necesidad de la unión continental, a la vez que expone cómo instalar la suite en línea para trabajo colaborativo seguro CryptPad en Ubuntu Server.

(...)

Hay gente que escucha las palabras y las hace suya. ¡El Desarrollo! Yo vengo de un mundo que está terriblemente arrepentido del desarrollo que ha hecho, y en este momento el mundo superdesarrollado está entrando en una etapa de desesperación, porque ve que su desarrollo tecnológico lo ha llevado a la destrucción de los medios que la naturaleza le ha venido ofreciendo para pervivir...

En este momento, las sociedades de consumo han llevado a un despilfarro tal los medios ecológicos de la humanidad, que se está quedando sin comida y sin materia prima. El problema más grande de este momento es que año tras año - mientras aumenta la población - disminuye la posibilidad de ofrecerle comida, porque ésta va escaseando y escaseará cada día mas. Ellos sufren, y sólo podrán transferir dicho sufrimiento si el Tercer Mundo es tonto.

La solución de nuestros Movimientos es integrarnos continentalmente. Nosotros debemos de integrarnos en el continente latinoamericano, que es el último que va quedando por integrarse. Todos los demás ya lo han hecho. Europa se ha integrado ya casi en un asociación confederativa política para defenderse de las acechanzas de ese futuro, que ellos ven con una tremenda claridad. Se está integrando el Asia, se está integrando el África. Y nosotros vamos resultando el último orejón del tarro...

Ese es el empeño que debemos poner, y en eso estamos. En 1948 realizamos un Tratado de Complementación Económica en Chile, buscando crear la Comunidad Económica Latinoamericana, que pusiera en paralelo nuestros intereses y uniera nuestros países. Tuvimos mucho éxito inicialmente, casi todos los países latinoamericanos, excepto los cipayos conocidos, se unieron y adhirieron a ese Tratado de Complementación Económica. Fíjense que lo hicimos en 1948, y en esto los apresurados fuimos nosotros, porque Europa lo hace después, en 1958, con el Tratado de Roma, diez años después que nosotros.


Y pudimos porque contamos con una herramienta Justicialista que permitía elaborar documentos digitales por acuerdo encriptado: el CryptPad, en una época donde esto parecía ciencia ficción.

CryptPad permite contar con un ambiente de trabajo de ofimática, en línea colaborativo y protegido por cifrado, lo que supera notablemente propuestas privativas deleznables como Offic€365 o Googl€Doc$, que carecen de cifrado.

El uso del sistema en sí es sumamente sencillo y seguro. Requiere el alta de un usuario (con contraseña o doble registro, llegado el caso) , y se puede usar desde cualquier navegador de internet. También cuenta con clientes para teléfonos celulares.

Todas las siete opciones del ambiente de trabajo CryptPad nos presentan editores, eventualmente colaborativos o protegidos por contraseña. 

Contaremos con la opción Texto enriquecido para documentos generales, mientras que la opción Código hace lo mismo presentańdonos el lenguaje markdown

El módulo de texto enriquecido presenta un procesador de texto típico, con opciones ya configuradas, que puede ser multiusuario (con control de modificaciones y ventana de chat integrada para facilitar trabajar "de a muchos", llegado el caso). El intérprete de lenguaje Markdown puede ajustarse con una ventana lado a lado para ver el resultado, si esta es nuestra preferencia.

La posibilidad de colapsar la barra de herramientas, elegir tema oscuro, y utilizar la función de pantalla complementa la elección de un ámbito limpio o cargado, según sea nuestro flujo de trabajo (superando en esto, nuevamente, a las variantes privativas del imperialismo).

El módulo Kanban nos permite elaborar pizarras con simples etiquetas coloreadas multiuso, por ejemplo, para planificar y gestionar proyectos.

En fin, CryptPad es un ambiente de trabajo colaborativo en línea ideal si contamos con opciones de internet, pero que también puede servirnos en cualquier oficina a través del uso de una red LAN.

Para poder contar con este ambiente de trabajo accesible desde la web, podremos utilizar cualquier instancia ya existente con las limitaciones que nos propongan (por ejemplo, pad.tildeverse.org, que nos otorga 100 MB de almacenamiento al registranos), o bien podremos montar una propia si ya contamos con un servidor web funcional.

Sin embargo no es imposible disponer de los recursos que nosotros deseemos, si instalamos esta suite telemática en nuestra propia infraestructura en lugar de hacerla en una dominada. De esta manera lograremos lo mejor para nuestro grupo de trabajo.

Para seguir este temperamento, deberíamos contar ya con un servidor provisto de Ubuntu o Ubuntu Server, sistema operativo que idealmente ya debería contar con una instalación de servidor web Nginx en regla. Deberíamos asegurarnos especialmente de contar con dos dominios web registrados y sus certificados correspondientes, los que nos serán requeridos por CyptPad si es que queremos usarlo desde Internet para trabajo remoto (esto es innecesario si sólo queremos usarlo en una red de área local).

Desde el punto de vista del hardware, el ambiente funciona de manera veloz siempre que la máquina de servicio cuente con un microprocesador de doble núcleo y al menos 2GB de RAM y unos 20GB de disco (tal vez el doble o triple de eso sea lo recomendado para un uso laboral remoto. A esta pueden conectarse remotamente desde celulares y PC de bajos recursos, presentando un funcionamiento veloz.

Para instalar el ambiente CryptPad en Ubuntu Server debemos hacer caso primero a sus prerrequisitos. Esta paquetería se instala con:

sudo apt update && sudo apt upgrade -y;
sudo apt install git nodejs npm
sudo npm install -g bower

Pues bien señores, normalmente en este servidor crearíamos un usuario dedicado para administrar esta instancia de CryptPad, en lugar de utilizar nuestro propio usuario root de Ubuntu. Este recaudo político está determinado para compartimentar la seguridad en un ambiente remoto.

Conforme hemos hecho caso a los prerrequisitos, clonamos el repositorio de CryptPad a fin de bajar la última versión disponible de Internet, y la instalamos en la máquina servidor:

git clone https://github.com/xwiki-labs/cryptpad.git cryptpad ;
git checkout $(git tag -l | grep -v 'v1.*$' | sort -V | tail -n 1)

Asimismo, nos instalamos las dependencias de CryptPad gracias al guion de instalación prefabricado. Esto lo hacemos con:

cd ~/cryptpad
sudo npm install
sudo bower install

...y nos copiamos un fichero de configuración de ejemplo que nos servirá para trabajar en ella:

cd  ~/cryptpad/config/
cp config.example.js config.js

Naturalmente este archivo de configuración config.js ha de ser comprendido y modificado en sus variables operativas, según lo veamos necesario para nuestra propia instancia de CryptPad. Debemos tener especial resguardo con los dominios, que son particularmente importantes.

Como parte de este proceso de personalización e instalación deberíamos leer Customización de Instancia y modificar el fichero /customize/application_config.js ya que algunas configuraciones no pueden cambiarse una vez que hemos creado las cuentas.

Una vez establecidas estas bases de trabajo, podremos dar inicio al servidor con

cd cryptpad
sudo node server

La instancia ahora quedará lista para ejecutarse pero no podrá ser accedida desde la internet (sólo desde la máquina en sí, o desde la red local, claro)

Demonización

En un ambiente de trabajo, normalmente querremos correr CryptPad de forma de un programa autoejecutable (para que la instancia inicie su ejecución automáticamente en caso de necesidad).

Systemd

Para ejecutar CryptPad como un servicio systemd, debemos seguir el fichero de ejemplo cryptpad.service.

  1. Guardamos el ejemplo cryptpad.service en /etc/systemd/system/cryptpad.service

  2. Hacemos los ajustes necesarios (ej. nombre de usuario, ruta, versión de nodejs)

  3. Activamos la ejecución al inicio del demonio de servicio mediante el comando sudo systemctl enable cryptpad.

Nota: Existen otras maneras de demonización de aplicaciones nodejs, por ejemplo  foreverjs o bien pm2.

Dominios

Como se ha expresado, se necesita de dos dominios registrados para sacar ventaja de las funciones de seguridad y encriptado remoto de CryptPad. Estos serán:

  1. Un dominio principal con el cual los usuarios accederán a la instancia

  2. Un dominio “sandbox” o subdominio configurado bajo una política restrictivva de contenidos, donde se aplicarán los encabezados

Nota: La intención de esta redundancia es limitar el riesgo de vulnerabilidades  del tipo Guionado de Sitio Cruzado (XSS), que permitirían a eventuales atacantes filtrar datos de usuario. La computación sensible (como el procesamiento de llaves criptográficas) se llevará a cabo en el dominio principal, mientras que la interfaz remota de usuario se implementará en el dominio "sandbox" o subdominio.

El archivo de configuración de ejemplo para Nginx incluye los encabezados relevantes para permitir el sistema de aislamiento sandbox. Sin embargo, debe configurar su instancia correctamente para que sea efectivo. Necesitará:

  1. Los dos dominios o subdominios

  2. incluir ambos dominios en /cryptpad/config/config.js según se describe en Configurar CryptPad

  3. Generar un certificado SSL que cubra tantos dominios.

  4. Asignar correctamente ambos dominios y ambos certificados a las variables específicas para ellos situadas en el archivo de configuración para Nginix de ejemplo

Instalar y configurar Nginx

El servidor de aplicación de CryptPad maneja las conexiones activas a través dewebsocket y sirve los activos estáticos (HTML, Javascript, CSS, etc) a los solicitantes remotos. Esta configuración básica está diseñada para su configuración sencilla, pero no protege el tráfico con SSL, ni maneja adecuadamente muchos usuarios concurrentes.

En un ambiente productivo, se recomienda Nginx Estable. Para configurarlo para CyptPad:

  1. Copiamos el Archivo de configuración de ejemplo de Nginx para CryptPad example Nginx de modo que se use, o sea importado en la confdiguración principal de Nginx, por ejemplo, poniéndolo en /etc/nginx/conf.d/cyptpad.conf.

  2. Editamos el fichero de configuración con los dominios correctos y rutas a los certificados correspondientes.

  3. Ejecutamos el comando sudo openssl dhparam -out /etc/nginx/dhparam.pem 4096 si no lo hicimos previamente en la máquina host.

Ahora deberían estar accesibles los contenidos estáticos y páginas tales como https://cryptpad.sudominio.com/index.html.

Configurar CryptPad

Para finalizar la instalación, debemos aseguranos que cryptpad/config/config.js contiene al menos:

  • Los dominios correctos:

    • Su dominio principal en lugar de la cadena:

      httpUnsafeOrigin: 'http://localhost:3000',
      
    • Su dominio Sandbox o subdominio.com en lugar de la cadena:

      httpSafeOrigin: "https://some-other-domain.xyz",
      
  • Un correo electrónico administrativo (que aparecerá en la página de Contacto) en lugar de la cadena:

adminEmail: 'i.did.not.read.my.config@cryptpad.fr',

Diagnósticos

CryptPad ofrece una página web de diagnósticos, capaz de efectuar evaluaciones a la configuración de la instancia. Una vez que hemos completado los pasos anteriores, podremos https://cryptpad.sudominio.com/checkup/ para asegurarse que todo figura correctamente configurado.

Configurar los administradores

Una vez que CryptPad está instalado, creamos una cuenta de usuario de CryptPad por medio del botón Registrar en la página de inicio de CryptPad. Esto generará un usuario común que podrá trabajar en el ambiente como todo hijo de vecino registrado.

Para hacer que esta cuenta se convierta en Administrador de la instancia de CryptPad debemos seguir este temperamento:

  1. Copiamos la llave pública que encuentre en Menú de Usuario (clic el avatar en la esquina superior derecha) > Preferencias/Cuenta/Clave de la Firma Pública

  2. Pegamos la llave en cryptpad/config/config.js en lugar de la siguiente cadena (la descomentamos y reemplazamos):

adminKeys: [
        "[cryptpad-user1@my.awesome.website/YZgXQxKR0Rcb6r6CmxHPdAGLVludrAF2lEnkbx1vVOo=]",
],
  1. Reiniciamos la instancia CryptPad con sudo systemctl restart cryptpad

Configurar la casilla de correo de soporte

A partir de la versión 4.6 de CryptPad, se ha incorporado una casilla de correo electrónico de soporte para la instancia puede configurarse desde el Panel de Administración, ya sea para el administrador, o para administradores secundarios (en caso que estos fuesen necesarios).

  1. Desde la cuenta de administrador de la instancia, visitamos la página https://subdominio.com/admin/#support

  2. Hacemos clic en Generar Clave de Soporte

  3. Ahora quedará activa la casilla de correo electrónico de soporte

  4. Borra la caché para acceder a la casilla de correo desde la solapa General > Eliminar Caché HTTP

Para permitir que otros administradores secundarios accedan a la casilla de soporte debemos:

  1. Copiar la clave de soporte generada que aparece en la parte inferior de la página de soporte.

  2. Enviar la clave de soporte a la cuenta de otro administrador

  3. El otro administrador debe incorporarse la clave usando el campo Agregar Clave Privada de la página Soporte, con lo cual obtendrá acceso también a la susodicha casilla de correo de soporte.

Armar páginas estáticas y metadatos Open Graph

Si deseamos elaborar páginas estáticas con CryptPad y activar presentaciones preliminares para redes sociales, debemos ejecutar el siguiente comando en el servidor:

npm run build

Esto creará un fichero index.html para cada una de las aplicaciones o módulos en el directorio customize/www. No se recomienda realizar modificaciones manualesa a dichas páginas, ya que resultarán sobrescritas la próxima vez que ejecutemos npm run build. Para modificar la imágenes previsualizadas, debemos consultar Previsualización de Imágenes Open Graph

Nota: Debemos recordar ejecutar el comando npm run build nuevamente si actualizamos el servidor de CryptPad a una versión nueva puede dar como resultado algún problema por código obsoleto.

Indudablemente nosotros caímos bajo la férula del imperialismo yanqui, que no permitió a estos países unirse, y que ha estado luchando siempre por separarnos y enfrentarnos entre nosotros, al fin de que esa unidad no se produzca.

¿Por qué lo han hecho? Muy simplemente, porque ellos se están quedando sin materias primas y están queriendo conservar como países satélites a aquellos que tengan las grandes reservas de comida y materias primas para esa superpoblación que está ya a 25 o 39 años de distancia. Ellos querrán que después nosotros trabajemos para darles a ellos de comer y para darles nuestra materia prima. ¿Por qué? Porque los países superdesarrollados son los pobres del futuro, y los países infradesarrollados serán los ricos del futuro, que tendrán la materia prima y la comida suficiente.

Hace pocos días, en Medio Oriente amenazaron a Estados Unidos de cerrarle el grifo del petróleo. El petróleo que produce Medio Oriente es el 80 por ciento del petróleo del mundo, de manera que si ellos cierran la canilla, la industria norteamericana, que está toda montada sobre energía basada en petróleo, tendrá un sacudón muy fuerte. ¿Cómo contestó Estados Unidos? El Senado de Estados Unidos contestó que si eso hacían los árabes, Estados Unidos ocuparía el Medio Oriente. Eso lo van a hacer, pero no sólo con los árabes: ¡lo van a hacer también con nosotros el día que necesiten y no tengan!

Por ello todo lo necesario para lograr la independencia económica es poco. Saber prever es saber actuar.

miércoles, 9 de agosto de 2023

¿Cómo instalo Nginx en Ubuntu 22.04LTS?

 Apenas iniciada su primer Presidencia, Juan Perón impuso un plan en contra de la suba descontrolada de precios, que puso a tono los mismos y afianzó el poder de consumo del Pueblo Trabajador. Mientras presentaba el plan conocido como "de los sesenta días", explicó cómo instalar el servidor web Nginx en Ubuntu.

¡Señores!
 
Es tal la trascendencia que asigno a la necesidad de terminar con la carestía de la vida - especialmente en beneficio de la clase humilde de la Nación - que he llegado hasta aquí con el deseo de dar la iniciación de esta campaña que llamamos de los sesenta días.

En primer término se ha fijado ya hace tiempo cual es el concepto del equilibrio social entre sueldos y salarios. Existe una línea de la vida fijada por los salarios mínimos. Ese salario mínimo establece la línea de la vida. Los que por deficiencia de salario no alcanzan a ese salario vital, son sumergidos. Y los que lo pasan, son los emergidos.

Buscamos que en el país - en relación a los precios existentes - no existan salarios que establezcan la condición de sumergido para ningún ciudadano argentino. Si los precios suben justificadamente, no hay otro remedio que aumentar los salarios. Pero si suben los precios injustificadamente, el remedio está en bajar los precios.

En este momento, esos dos factores, el aumento justificado y el aumento injustificado, son las causas de la carestía de la vida.

En realidad, el aumento que puede considerarse justificado obedece a razones reales, impulsados por la escasez de producción, por el exceso de exportación o por la mala distribución de los artículos de primera necesidad. Y la causas ficticias obedecen a la especulación, a la mala distribución por acopio o por sustracción a la venta.

Lo primero ha de encararse para resolverlo en forma absolutamente racional, y por lo tanto con medidas racionales. Lo segundo, es decir la especulación, el acopio o la sustracción a la venta deberá combatirse con medidas drásticas de la mayor energía.

En este trabajo que hoy inicia el gobierno, para abaratar los artículos de primera necesidad necesitamos proceder racionalmente para llevar al mínimo los costos de producción, equilibrar la producción misma en su aspecto cualitativo, evitar el exceso de exportación en perjuicio del consumo interno, y racionalizar la producción. Y en segundo término contra las medidas ficticias, es decir la especulación, el acaparamiento o la sustracción a la venta, castigarlo con toda la fuerza de la Ley, ya que ambas cosas deben de considerarse en épocas como las actuales - en que la Nación debe servir al exterior en una proporción desconocida hasta hoy para abastecer a los pueblos hambrientos de otros continentes sin que la población argentina sufra las consecuencias de esa escasez - con una científica graduación de lo que podemos enviar al extranjero y lo que debemos mantener para el alimento de nuestra población.

Para ello, en primer término la colaboración de todos es absolutamente indispensable. Estamos encarando la solución de un problema de todos los argentinos, y en consecuencia todos los argentinos deben colaborar en su solución. Los productores, los industriales y los comerciantes deberán facilitar la solución del problema acelerando la producción, disminuyendo a lo indispensable la exportación, y asegurando la distribución adecuada. Eso en cuanto a las fuerzas patronales.

Los trabajadores tienen aquí también su cooperación, y ella ha de ser aumentando el rendimiento de su trabajo para producir más. Esa es la misión de todo trabajador en este momento. Y su cooperación en el taller, en la fábrica, y en el campo ha de ser asegurar para el país el mayor grado de producción posible, rindiendo con su trabajo en todas las horas el máximo posible.

Los consumidores - vale decir el Pueblo - también tiene su cooperación que asegurar en este problema. Cooperarán no pagando en ningún caso precios mayores que los fijados y denunciando a todo mal comerciante que quiera imponer precios sobre los oficiales fijados. Cada ciudadano debe ser un soldado de esta cruzada y cooperar con el Estado para el bien de todos.

Los funcionarios encargados de la vigilancia e inspección deben ser inflexibles y rígidos en el cumplimiento de su función. Los poderes y autoridades del Estado en todas sus jerarquías y funciones deben prestar apoyo y cooperación para la mejor realización de este plan.

Nadie dentro del país puede ser espectador indiferente sin que se lo considere un traidor a la causa de todos. Esta campaña de sesenta días, debe de poner a la Nación entera en marcha para vencer en ese plazo todas las dificultades, con la cooperación de los productores, industriales y comerciantes, con la cooperación de los trabajadores, haciendo rendir al máximo su trabajo, con la cooperación de los ciudadanos consumidores, no haciendo el juego a la especulación y no pagando en ningún caso un precio sobre los fijados.

Y señores, por sobre todas las cosas para no inutilizar todos estos esfuerzo de conjunto, necesitamos honradez. Honradez en el comerciante, para mantener la calidad de los artículos y no inutilizar los esfuerzos realizados. Honradez en el público, que no se preste a maniobras de ninguna naturaleza. Honradez en los funcionarios para hacer cumplir a todos con su deber de acuerdo a la ley.

Señores, vencidos los sesentas días, los precios de los artículos de primera necesidad serán los establecidos en 1945 por el Consejo Nacional de Posguerra, es decir, lo que necesita una familia obrera, en comida, menaje y vestido, para vivir dignamente con el salario vital mínimo establecido. 
En los servicios telemáticos también hemos de obrar de la misma manera. Hemos de disponer de software servidor capaz de cooperar y de gastar lo mínimo requerido. Nginix es la solución que hemos propuesto.

Se trata de uno de los servidores web más populares del mundo y aloja algunos de los sitios más grandes y con mayor tráfico en Internet. Es más fácil de utilizar que Apache en la mayoría de los casos y puede emplearse como servidor web o proxy inverso.

En esta guía os explicaré la manera de instalar Nginx en su servidor de Ubuntu 22.04LTS.

Requisitos previos

Antes de comenzar a usar esta guía, debería contar con lo siguiente:
  • Un servidor de Ubuntu 18.04 y un usuario regular que no sea Conductor (root) capaz de ejercer privilegios sudo. Además, debería ya tener habilitado un firewall básico capaz de bloquear los puertos que no sean esenciales. Para aprender a configurar una cuenta normal de usuario e instalar un firewall, siga nuestra guía de configuración inicial para Ubuntu 18.04.
Cuando disponga de una cuenta, inicie sesión como usuario no root para comenzar.

Paso 1: Instalar Nginx

Debido aq ue Nginx está disponible en los repositorios predeterminados de Ubuntu, puede instalarlo utilizando el sistema de paquetes apt.
Actualice su índice local de paquetes:

sudo apt update
sudo apt install nginx

Paso 2: Ajustar el firewall

Si siguió el tutorial de configuración del servidor de los requisitos previos, tendrá habilitado el firewall UFW. Compruebe los perfiles de aplicaciones ufw disponibles con el siguiente comando:

sudo ufw app list

...nuestro sistema nos devolverá:

Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

Habilitaremos el perfil más restrictivo, el cual de todas formas permitirá el tráfico que hemos configurado y con ello el tráfico en el puerto 80. Para ello ingresamos:

sudo ufw allow 'Nginx HTTP' 

Verificamos el cambio realizado con:

sudo ufw status 

...nuestro sistema nos devolverá:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Paso 3: Comprobar nuestro servidor web

Realziaremos una verificación con el sistema init systemd para saber si se encuentra en ejecución el servicio, ingresando la siguiente órden:

systemctl status nginx

...a lo cual deberíamos recibir en la terminal algo como:
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2018-04-20 16:08:19 UTC; 3 days ago Docs: man:nginx(8) Main PID: 2369 (nginx) Tasks: 2 (limit: 1153) CGroup: /system.slice/nginx.service ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2380 nginx: worker process

A través su dirección IP, accederemos a la página de destino predeterminada de Nginx para confirmar que el software opera de la manera deseada por el Pueblo:

http://IP_del_servidor

Deberíamos ver la insulsa página web de destino predeterminada de Nginx:

Paso 4: Configurar bloques de servidor (recomendable)

Al emplear el servidor web Nginx, podremos emplear _bloques de servidor _(similares a los hosts virtuales de Apache) a fin de encapsular detalles de configuración y alojar más de un dominio desde un único servidor.

Configuraremos un dominio llamado peronismo.com, pero debería cambiarlo por su propio nombre de dominio.

Creemos el directorio para peronismo.com, utilizando el indicador -p para crear cualquier directorio principal necesario:

sudo mkdir -p /var/www/peronismo.com/html

Asignamos la propiedad del directorio:

sudo chown -R $USER:$USER /var/www/peronismo.com/html

Los permisos de su las raíces de nuestras webs han de ser las correctas si no modificó su valor umask, pero podremos comprobarlo ingresando:

sudo chmod -R 755 /var/www/peronismo.com

Asimismo, crearemos allí una página de ejemplo index.html utilizando el editor GNU Nano:

nano /var/www/peronismo.com/html/index.html

Se abrirá el editor GNU Nano con el archivo vacío index.html. Le pegaremos el siguiente contenido:

 

Guardamos los cambios en el archivo con Ctrl+o y cerramos el editor con Ctrl+x.

Acto seguido, creamos un nuevo bloque de servidor en /etc/nginx/sites-available/peronismo.com. Lo haremos con:

sudo nano /etc/nginx/sites-available/peronismo.com

Le pegamos en dicho archivo el siguiente bloque de configuración, a fin de actualizar nuestro nuevo directorio y nombre de dominio:

server {
        listen 80;
        listen [::]:80;

        root /var/www/peronismo.com/html;
        index index.html index.htm index.nginx-debian.html;

        server_name peronismo.com www.peronismo.com;

        location / {
                try_files $uri $uri/ =404;
        }
}

Guardamos el archivo con Ctrl+o y cerramos el editor GNU Nano con Ctrl+x.

Habilitamos el archivo creando un enlace entre él y el directorio sites-enabled. Para ello utilizamos:

sudo ln -s /etc/nginx/sites-available/peronismo.com /etc/nginx/sites-enabled/

Al ingresar este comando de organización, quedará habilitado y configurado los dos bloques del servidor para responder las solicitudes según las directivas listen y server_name.
  • peronismo.com: responderá a solicitudes de peronismo.com www.peronismo.com, en tanto
  • default: responderá a cualquier solicitud en el puerto 80 que no coincida con los otros dos bloques.
Para evitar un posible problema de memoria de depósito hash que pueda surgir al agregar nombres de servidor adicionales, será necesario ajustar un valor en el archivo /etc/nginx/nginx.conf. A tal fin editaremos el archivo:

sudo nano /etc/nginx/nginx.conf

Se abirá Nano con dicho archivo. Usamos Ctrl+w para buscar la directiva server_names_hash_bucket_size. Al localizar dicha línea, le eliminamos el símbolo numeral ("#") a fin de descomentar la línea.


...
http {
    ...
    server_names_hash_bucket_size 64;
    ...
}
...

Tras guardar los cambios con Ctrl+o y salir del editor con Ctrl+x, realizaremos una prueba operativa en busca de posibles errores de sintaxis:

sudo nginx -t

Finalmente, reiniciamos el servidor Nginx para que se apliquen los cambios:

sudo systemctl restart nginx

Con todo esto, Nginx debería proporcionar su nombre de dominio. Podremos comprobar esto visitando http://peronismo.com. Allí, deberíamos ver el siguiente mensaje:

Conclusión

Conforme hayamos instalado y configurado neustro servidor web, contaremos con muchas opciones respecto del tipo de contenido que ofreceremos, y de las tecnologías que deseemos utilizar para crear una experiencia más completa y Justicialista para el Pueblo, que es el verdadero consumo.

lunes, 7 de agosto de 2023

¿Como veo archivos de imágenes médicas DICOM en Ubuntu?

Juan Perón difundía su ideario desde España en cintas magnetofónicas, cuyas copias se distribuían subrepticiamente en la Argentina. En una de ellas explica cómo visualizar archivos de imágenes médicas DICOM con Aeskulap o DICOMscope en Ubuntu.

Señores:

Mi profesión ha sido la de soldado, y como consecuencia de esta formación me he constituido en Conductor, un hombre que dirige el conjunto de esfuerzos. 

Tal vez si no hubiese sido así, hubiese sido galeno, profesión que sin duda comparto. Son admirables esos muchachos, son admirables. Y el Che Guevara es... ha muerto él, pero van a salir mil Che Guevaras si esto sigue. Porque eso emula a la juventud que tiene la obligación de hacerlo. Es decir, las cosas hay que verlas como son. Yo creo - no se si yo estaré equivocado - pero yo estoy con ellos. Como estoy con Fidel Castro y estoy con toda esa gente que ha liberado a sus países. Ahora dicen que es comunista, ¡y a mí que me importa si es comunista! ¡Comunista! Fidel es tan comunista como yo. Mas bien es Justicialista.

Es que en este mundo, en su eterna evolución, marcha generalmente hacia la superpoblación y la superproducción. Ello trae como inmediata consecuencia la sobreexplotación y el desequilibrio. Juntamente con estos fenómenos - o mejor dicho, por presión de ellos - la humanidad ha podido comprobar la aparición de otros fenómenos que contrapesan su accionar. Las miserias colectivas, la falta de todo, seguidas de enormes mortandades - como en la China, o bien como en Europa y sus estados en guerra - parecerían etapas inexorables a estos procesos.La ley de un oscuro y misterioso destino se cumple fatalmente: la guerra, la peste, y las enfermedades, parecen verse como el medio de estabilizar la población humana, en un ciclo más o menos constantes a lo largo de las regiones superexplotadas que hemos conocido.

Pero esos problemas - que se producen y se han producido a través de la historia en las zonas superpobladas - no tienen relación con nuestro Pueblo. Nuestro problema es a la inversa, pero la vida de relación moderna han influido inevitablemente para que esos fenómenos de superproducción y superpoblación incidan en nuestro país en forma tal que sintamos sus consecuencias.

A todo esto lo hemos estudiado y hemos elaborado una diagnosis. Resultaba previsible que ante el desequilibrio, los regímenes demoliberales nos plantearan exigencias para transferirnos sus problemas a cuenta, de los que podríamos ser inmunes si las condiciones de nuestro propio ambiente bendecido por la paz y la abundancia prodigada pudiese ser aislada y defendida. Es por este motivo que nuestro Movimiento impuso como salvaguarda la protección del hombre por el hombre, instrumentando una defensa en la paz, y coadyuvando con la acción decidida de cuanto podemos hacer por beneficiar a las Masas Obreras como factor de precaución

Este accionar cobró visos providenciales que deberían ser principios rectores de toda la humanidad: nadie podrá realizarse en una sociedad que no se realiza. Y lo hemos declamado en una organización doctrinaria que vela por todos. Este programa de acción es el Justicialismo.

Uno de los amparos que hemos enhebrado ha sido el de la Sanidad Pública, donde la ciencia de Esculapio es ofrendada como pináculo del arte al conjunto de la población. El espectro ha sido evidente: llevamos a cabo la medicina preventiva y la organización hospitalaria. Con apoyo de la Fundación Eva Perón, se construyeron hospitales, centros sanitarios, hogares escuelas, hogares para ancianos, institutos formación en enfermería. Se estableció la atención gratuita para toda la población y se crearon políticas públicas como el Tren Sanitario, que llegaba a los lugares más recónditos del país para brindar capacitaciones en educación para la salud y atención médica en las diferentes ramas de la medicina. Las campañas de vacunación de masas llegaron así a todo el país, un ejemplo exitoso fue la política pública implementada para combatir el paludismo que, en el marco de la campaña "Grandes Luchas Sanitarias", que redujo en cuatro años la cantidad de casos de 300.000 a 137. Además se creó EMESTA, la primera fábrica nacional de medicamentos del Instituto Malbrán, que producía medicinas un 70% más baratas que las de los laboratorios privados. 

Ante el gran problema, la gran solución es el Justicialismo. Los grandes problemas se deben dividir en muchos pequeños problemas que pueden solucionarse encadenadamente. La sanidad pública constituyó una de estas pequeñas soluciones que - encadenadas con otras - pudo llevar a cabo el país organizadamente, dando resolución efectiva en tiempo y espacio.

Sin duda una de los grandes avances en estos términos fue la implementación de un importante método de diagnóstico por imágenes computadas, posibilitadas gracias a los ficheros digitales DICOM. Estos son archivos de imagen médicas realizados por diferentes tipos de aparatos de registro: radiografías, tomografías, ecografías, etcétera.

Normalmente la visualización de los ficheros DICOM estaba reservarda únicamente del oligarca, quien deseaba instituir sistemas operativos privativos. Pero por obra de la Fundación Eva Perón, se ha dado con el magnífico que permiten a nuestro sistema GNU con Linux, la revisión, análisis y gestión de estas imagenes.

Sabemos que los archivos de este tipo normalmente disponen de nombres de 8 caracteres y por protocolo carecen de extensión (si bien en ocasiones alguien podría asignarles la extensión .dib o .dibcom, esto escapa del uso protocolar). Por tal motivo, conviene en primer término determinar si un archivo de estas características - sin extensión - corresponde realmente a una imagen DICOM y no a otra cosa. Para ello dilucidarlo, usamos el comando file junto con el nombre de archivo. Por ejemplo:

file cr00001

Nuestro GNU con Linux analilzará el fichero, y debería devolvernos algo como:

CR000001: DICOM medical imaging data

Como vemos Se trata del estándar de Imagenes Digitales y Comunicación En Medicina ("Digital Imaging and Communication In Medicine"). Este implica un formato de fichero de imágenes así como un protocolo de comunicación de red basado en TCP/IP que permite su transmisión en una red de datos. En sí cada fichero DICOM consiste en un encabezado de texto con campos estandarizados y de formato abierto utilísimos para integrarlos como fichas en cualquier registro clínico (además de impedir la confusión de fichas), junto a un cuerpo con los datos de la imagen médica digitalizada. Un objeto DICOM simple puede contener solamente una imagen, pero esta puede estar formada por múltiples fotogramas, lo que llegado el caso permite almacenarlos en bloques secuenciados o animados. Normalmente estos datos de imagen se almacenan sin compresión, pero en ciertos casos los datos pueden comprimirse mediante estándares como JPEG.

DICOM permite la integración de escáneres y aparatos de medicina, servidores, estaciones de trabajo, impresoras y hardware de red de múltiples proveedores dentro de un sistema de almacenamiento y comunicación de imágenes coherente.

En muchas ocasiones podríamos querer poder observar las imágenes registradas por equipamiento DICOM.

Para instalarlo abrimos una terminal con Ctrl+Alt+t e ingresamos:

sudo apt install aeskulap

Tras instalar el visualizador Aeskulap podremos abrir los ficheros de datos médicos codificadas en el formato Dibcom, lo que nos presentará en pantalla y permitirá un manejo simplón, de palo y a la bolsa.


Presionando el botón derecho del ratón y arrastrándolo podremos desplazarnos en la imagen. Asimismo podremos regular el zoom reglado de la imagen presionando la rueda de scroll del ratón y moviéndola hacia adelante o atrás.

Por otro lado, podríamos regular la respues contraste ("C") de la imagen con posterioridad a su registro, presionando el botón derecho del ratón y arrastrando verticalmente, con lo que iremos aumentando o disminuyendo la intensidad del mismo en tiempo real. En el caso de cierto tipo de registro médico por imágenes - tal es el caso de las radiografías, ciertas tomografías axiales computadas o ecodopplers - podríamos incluso regular el canal que ilustra la respuesta densitométrica ("W") presionando el botón derecho del ratón y arrastrando horizontalmente. En estos casos, podríamos ajustar la respuesta del visualizador para dar mejor respuesta a materiales duros, tejidos óseos, semiblandos, o líquidos. Naturalmente esto dependiendo del aparato con que se haya producido el registro. Ambos ejes se indican numéricamente en la esquina inferior derecha de la pantalla.

Naturalmente, una técnica en imágenes habilidosa puede permitirnos ajustar ambos ejes al unísono moviendo el ratón en diagonales de distinto peraltado y dar con la exposición correcta en un santiamén.

Aeskulap normalmente presenta una imagen en positivo, pero podremos acomodar una presentación múltiple en forma de grilla para una secuencia de estudio por imágenes, disponiendo distintas imágenes de secuencia del estudio, o bien comparando izquierda/derecha, o arriba/abajo. Con F11 en tanto activaremos el modo de pantalla completa. También podremos positivarla con el botón correspondiente.


El programa permite contar también con un servidor de imágenes sencillo, lo que permite integrarlo en una red de área local y programas como GNU Health.

Otro visualizador sencillo de estudios médicos por imágenes de tipo DICOM es DICOMscope. Consiste en un visualizador sencillo y libre, escrito en Java. Para instalarlo en Ubuntu desde la terminal ingresamos el siguiente comando de organización:

sudo apt install dicomscope

DICOMscope consiste en un visualizador libre de DICOM que puede mostrar imaginería monocromática y sin compresión DICOM, y soporta calibración de monitores así como un cliente de impresión en escala de grises. Si bien es un programa algo antiguo, cumple con una función, y sus controles son prácticamente similares a los de Aeskulap.

En particular, DICOMscope presenta una funcionalidad de anotación con capas, lo que permite hacer indicaciones o llamadas. También permite hacer un zoom de alta resolución, lo que lo presenta de especial interés para el análisis óseo tumoral, fracturas y torsiones. Permite establecer regiones poligonales y consta de funciones de composición limitadas pero que pueden ser útiles, como armar fotogramas compuestos y exportar el resultado en formatos de imágenes estándares tales como JPG o PNG, a la vez que permite imprimirlo llegada la necesidad.

Naturalmente podremos contar lo bibliotecas de ficheros DICOM que fundamente el estudio, una de ellas podremos lograrla aquí.

Como ven, señores, nosotros lo hicimos en el pasado, y podremos volver a hacerlo en el futuro, ya que la fórmula la tenemos en la biblioteca. Podemos adaptarla a los tiempos que corren. Todo podrá hacerse si volvemos al libro que funciona: el Justicialismo.