<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Códice | Entradas sobre «internet»</title><description>Feed RSS de publicaciones etiquetadas con internet</description><link>https://javguerra.github.io/</link><item><title>Materiales sobre competencias digitales</title><link>https://javguerra.github.io/blog/competencias-digitales</link><guid isPermaLink="true">https://javguerra.github.io/blog/competencias-digitales</guid><description>Materiales sobre Internet, Linux, BBDD, cloud y ciberseguridad</description><pubDate>Sat, 01 Apr 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://javguerra.github.io/_astro/internet.4jVMgjLG_v2biz.webp&quot; alt=&quot;Internet&quot; style=&quot;max-width: 100%; height: auto;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Etiquetas:&lt;/strong&gt; &lt;em&gt;#formación&lt;/em&gt;, &lt;em&gt;#internet&lt;/em&gt;, &lt;em&gt;#alumnos&lt;/em&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;Durante el mes de marzo he iniciado una colaboración profesional con la &lt;a href=&quot;https://www.fundaciongoodjob.org/&quot;&gt;Fundación GoodJob&lt;/a&gt; impartiendo, on-line, el módulo II del proyecto europeo de formación en «competencias digitales» para personas desempleadas de larga duración. Estos son los materiales para el alumno, que he preparado, y puesto a disposición bajo licencia &lt;a href=&quot;https://creativecommons.org/licenses/by-sa/3.0/es/&quot;&gt;(CC) BY-SA 3.0&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;El módulo en cuestión tiene como objetivo:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Que el alumnado del módulo comprenda las nociones fundamentales de la Informática, conozca el sistema operativo Linux, y las tecnologías, los protocolos, la estructura y las características de los nodos que conforman la red Internet.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Se compone de una serie de apuntes repartidos en sesiones, dividas a su vez en teoría y práctica. En ellas se trataron temas como: Sistemas informáticos y la red Internet -estructura y protocolos-, Introducción a Linux, Bases de Datos, Docker, Cloud computing, Ciberseguridad y Desarrollo web.&lt;/p&gt;
&lt;p&gt;Cada sesión trata un tema específico y prepara al alumno para que tenga una visión de conjunto de lo que es Internet y como funcionan las tecnologías implicadas en la red, de tal forma que, al finalizar el módulo, se obtiene la base formativa necesaria para seguir ampliado conocimientos en los ámbitos de, por ejemplo, la ciberseguridad, la administración de servidores, la administración de bases de datos o el desarrollo de aplicaciones.&lt;/p&gt;
&lt;p&gt;Se han añadido posteriormente los contenidos prácticos que son continuación de esta formación.&lt;/p&gt;
&lt;p&gt;Ciertamente, los apuntes, sin la sesiones formativas impartidas, no son más que una colección de enlaces que siguen el hilo de una temática concreta, pero pueden ser de ayuda a quien quiera iniciarse por su cuenta en estos conceptos.&lt;/p&gt;
&lt;h2 id=&quot;el-alumnado&quot;&gt;El alumnado&lt;/h2&gt;
&lt;p&gt;La formación está orientada a grupos de 60 (sesenta) alumnos desempleados de larga duración de la comunidad de Madrid, y tutorizada por profesionales que acompañan al alumnado incluso en las sesiones formativas on-line.&lt;/p&gt;
&lt;p&gt;Me enorgullece poder contar que el alumnado ha terminado con interés y satisfacción el módulo, y que espero confío en que hayan perdido el miedo a la «Informática», siendo esta formación la puerta a otros estudios del área de las TIC.&lt;/p&gt;
&lt;p&gt;Para mi también ha sido un placer reencontrarme con la experiencia formativa del lado del docente que tenía algo olvidada hace unos años. Por ello gracias a la fundación y a todos los alumnos.&lt;/p&gt;
&lt;h2 id=&quot;repositorio&quot;&gt;Repositorio&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/JavGuerra/curso-competencias-digitales&quot;&gt;Curso sobre competencias digitales: materiales para el alumnado&lt;/a&gt;&lt;/p&gt;
</content:encoded><enclosure url="https://javguerra.github.io/_astro/internet.4jVMgjLG_v2biz.webp"/><category>formación</category><category>internet</category><category>alumnos</category><author>JavGuerra</author></item><item><title>Docker LAMP</title><link>https://javguerra.github.io/blog/docker-lamp</link><guid isPermaLink="true">https://javguerra.github.io/blog/docker-lamp</guid><description>Linux, Apache, MySQL y PHP con Docker</description><pubDate>Wed, 11 Sep 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://javguerra.github.io/_astro/docker-lamp.BGQIH6q5_9u8Ft.webp&quot; alt=&quot;Logos de Docker y LAMP&quot; style=&quot;max-width: 100%; height: auto;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Etiquetas:&lt;/strong&gt; &lt;em&gt;#bbdd&lt;/em&gt;, &lt;em&gt;#mysql&lt;/em&gt;, &lt;em&gt;#php&lt;/em&gt;, &lt;em&gt;#docker&lt;/em&gt;, &lt;em&gt;#servidor&lt;/em&gt;, &lt;em&gt;#apache&lt;/em&gt;, &lt;em&gt;#programación&lt;/em&gt;, &lt;em&gt;#internet&lt;/em&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;Entre las herramientas de desarrollo web más comunes no falta el entorno de ejecución. Se hace lento desplegar los cambios al servidor con cada modificación del código que queremos probar. Para evitar esto se creó &lt;a href=&quot;https://es.wikipedia.org/wiki/LAMP&quot;&gt;LAMP&lt;/a&gt;, que es una combinación de Linux, Apache, MySQL (o MariaDB) y PHP que permite que se puedan ejecutar aplicaciones web en local. Este artículo pretende mostrar cómo se puede instalar y ejecutar este entorno de desarrollo web en un sistema Linux usando Docker.&lt;/p&gt;
&lt;p&gt;La principal ventaja de usar Docker es la de poder contar en el desarrollo con una infraestructura análoga a la del despliegue, con el mismo versionado y configuraciones de los servicios.&lt;/p&gt;
&lt;p&gt;Los contenedores son unidades ligeras y portátiles que empaquetan el código y todas sus dependencias para ejecutarse de forma independiente en cualquier sistema que soporte Docker.&lt;/p&gt;
&lt;p&gt;El lector debe conocer Docker para seguir correctamente este artículo, no obstante, siguiendo los pasos indicados aquí se podrá levantar un entorno de desarrollo web LAMP en un sistema Linux sin mayor inconveniente.&lt;/p&gt;
&lt;h1 id=&quot;instalación-de-docker-y-docker-compose&quot;&gt;Instalación de Docker y Docker Compose&lt;/h1&gt;
&lt;p&gt;Será necesario tener instalado &lt;a href=&quot;https://es.wikipedia.org/wiki/Docker&quot;&gt;Docker&lt;/a&gt; en el sistema para poder ejecutar el entorno de desarrollo web.&lt;/p&gt;
&lt;p&gt;Junto con Docker, vamos a instalar &lt;a href=&quot;https://docs.docker.com/compose/&quot;&gt;Docker Compose&lt;/a&gt;, una herramienta que permite ejecutar varios servicios de Docker a la vez.&lt;/p&gt;
&lt;p&gt;Una vez tengamos ambos instalados, necesitaremos crear un fichero de configuración llamado &lt;code&gt;docker-compose.yml&lt;/code&gt; que contendrá la configuración de los servicios que se va a desplegar, y accesoriamente, un fichero &lt;code&gt;Dockerfile&lt;/code&gt; que contendrá las configuraciones comple,entarias necesarias.&lt;/p&gt;
&lt;p&gt;Por último, veremos como ejecutar y parar el entorno de desarrollo web.&lt;/p&gt;
&lt;h2 id=&quot;docker&quot;&gt;Docker&lt;/h2&gt;
&lt;p&gt;Para instalar Docker, necesitaremos cumplir con algunas dependencias:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; apt&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; apt-transport-https&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; ca-certificates&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; curl&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; gnupg&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; lsb-release&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; software-properties-common&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Podemos seguir la &lt;a href=&quot;https://docs.docker.com/engine/install/&quot;&gt;documentación oficial&lt;/a&gt; o usar el meta-paquete docker-ce, la última versión de Docker:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; apt-get&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; docker-io&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Posteriormente se añade nuestro usuario al grupo docker. Esto nos permitirá ejecutar comandos de Docker sin necesidad de tener permisos de superusuario:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; usermod&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -aG&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; docker&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $USER&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Una vez instalado, se puede comprobar que se está ejecutando Docker usando el siguiente comando:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --version&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;docker-compose&quot;&gt;Docker Compose&lt;/h2&gt;
&lt;p&gt;Para instalar Docker Compose se puede usar el siguiente comando:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; apt&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; docker-compose&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Luego se puede comprobar que se está ejecutando Docker Compose usando el siguiente comando:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;docker-compose&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --version&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ya tenemos todo lo necesario para instalar el entorno de desarrollo web LAMP.&lt;/p&gt;
&lt;h1 id=&quot;stack-lamp-con-docker&quot;&gt;Stack LAMP con Docker&lt;/h1&gt;
&lt;p&gt;Para facilitar su despliegue, uso un fichero llamado &lt;code&gt;docker-compose.yml&lt;/code&gt; que contiene la configuración de los servicios que se va a desplegar.&lt;/p&gt;
&lt;h2 id=&quot;contenido-del-fichero-docker-composeyml&quot;&gt;Contenido del fichero docker-compose.yml&lt;/h2&gt;
&lt;p&gt;Mediante el siguiente fichero se configuran y lanzan los diferentes contenedores, volúmenes y redes del entorno para tres servicios: &lt;code&gt;www&lt;/code&gt;, &lt;code&gt;db&lt;/code&gt; y &lt;code&gt;phpmyadmin&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;version&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;3.1&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;services&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    www&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;        build&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;        ports&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;8081:80&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;        volumes&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;www:/var/www/html&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;        depends_on&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;db&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;        networks&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;default&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    db&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;        image&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;mysql&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;        ports&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;3306:3306&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;        command&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;--default-authentication-plugin=mysql_native_password&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;        environment&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;            MYSQL_ROOT_PASSWORD&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;example&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;        volumes&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;./dump:/docker-entrypoint-initdb.d&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;./conf:/etc/mysql/conf.d&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;persistent:/var/lib/mysql&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;        networks&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;default&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    phpmyadmin&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;        image&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;phpmyadmin/phpmyadmin&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;        depends_on&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;db&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;        ports&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;8080:80&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;volumes&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    persistent&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Este fichero está escrito en formato &lt;a href=&quot;https://es.wikipedia.org/wiki/YAML&quot;&gt;YAML&lt;/a&gt;, que es un lenguaje de marcado de datos, que permite definir la estructura de un fichero de configuración de forma legible y fácil de entender. Como en Python, los espacios son importantes aquí.&lt;/p&gt;
&lt;p&gt;El contenedor &lt;code&gt;www&lt;/code&gt; será el encargado de gestionar el servidor web, y PHP. Por su parte, el contenedor &lt;code&gt;db&lt;/code&gt; se ocupará de la base de datos MySQL y &lt;code&gt;phpmyadmin&lt;/code&gt; lo hará del entorno de administración de la BBDD.&lt;/p&gt;
&lt;p&gt;Por cada servicio, se detallan algunos valores de configuración, como los puertos o las claves de acceso. En el caso de &lt;code&gt;www&lt;/code&gt; es destacable que se hace uso de un fichero dockerfile externo con:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;build&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El volumen (&lt;em&gt;volumes&lt;/em&gt;) almacena y gestiona datos persistentes generados por los contenedores, permitiendo que los datos cruciales de la aplicación no se pierdan durante operaciones rutinarias, estando disponibles aunque los contenedores dejen de estar operativos, compartiendo los datos entre uno o varios contenedores.&lt;/p&gt;
&lt;p&gt;Las redes (&lt;em&gt;networks&lt;/em&gt;) permiten la comunicación entre contenedores y con el mundo exterior, facilitando la conexión entre contenedores en la misma red o con servicios externos, y proporcionando un entorno aislado para la red de contenedores.&lt;/p&gt;
&lt;h2 id=&quot;contenido-del-fichero-dockerfile&quot;&gt;Contenido del fichero Dockerfile&lt;/h2&gt;
&lt;p&gt;Para su completo despliegue, el servicio &lt;code&gt;www&lt;/code&gt; hace uso de un fichero Dockerfile que añade las configuraciones necesarias para obtener PHP, MySQL y varios compresores:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; php:8.0.0-apache&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;ARG&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; DEBIAN_FRONTEND=noninteractive&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;RUN&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; docker-php-ext-install&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mysqli&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;RUN&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; apt-get&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; update&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    &amp;amp;&amp;amp; &lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;apt-get&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -y&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; libzip-dev&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    &amp;amp;&amp;amp; &lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;apt-get&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -y&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; zlib1g-dev&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    &amp;amp;&amp;amp; &lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;rm&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -rf&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; /var/lib/apt/lists/&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    &amp;amp;&amp;amp; &lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;docker-php-ext-install&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; zip&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;RUN&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; a2enmod&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; rewrite&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lo guardo con el nombre &lt;code&gt;Dockerfile&lt;/code&gt;. Tanto el fichero &lt;code&gt;docker-compose.yml&lt;/code&gt; como el &lt;code&gt;Dockerfile&lt;/code&gt; han de estar en la misma ruta.&lt;/p&gt;
&lt;h2 id=&quot;ejecución-del-entorno-de-desarrollo-web&quot;&gt;Ejecución del entorno de desarrollo web&lt;/h2&gt;
&lt;p&gt;Para poder probar su correcto funcionamiento uso:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;docker-compose&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; up&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -d&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto levantará los contenedores. Si todo ha ido bien, se habrán descargado las imágenes correspondientes y lanzado los contenedores necesarios para disponer del entorno. Se puede obtener un listado de los contenedores levantados con:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;docker-compose&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; ps&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para probar su correcto funcionamiento, podemos copiar aquello que deseemos mostrar en el navegador a la carpeta &lt;code&gt;www&lt;/code&gt; en la carpeta actual donde están los dos scripts, o bien podemos crear un fichero &lt;code&gt;index.php&lt;/code&gt; con sólo el código siguiente:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;lt;?&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; phpinfo&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;( ); &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora debemos acceder al contenido mediante el navegador con la ruta:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;localhost 8001&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;8001 es el puerto descrito en el fichero &lt;code&gt;docker-compose.yml&lt;/code&gt; para el servidor web, pero podemos cambiarlo en el mismo fichero.&lt;/p&gt;
&lt;p&gt;Una vez ejecutado, si podemos ver la información en el navegador, es que Apache y PHP están funcionando adecuadamente.&lt;/p&gt;
&lt;p&gt;Para comprobar si MySQL y PHPMyAdmin están activos, accedemos a la misma dirección localhost pero por el puerto 8080:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;localhost:8080&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para acceder podemos usar &lt;code&gt;root&lt;/code&gt; como usuario y &lt;code&gt;example&lt;/code&gt; como contraseña.&lt;/p&gt;
&lt;p&gt;Cuando terminemos, podemos detener los contenedores mediante:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;docker-compose&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; stop&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;usando-docker-lamp-en-nuestros-desarrollos&quot;&gt;Usando Docker LAMP en nuestros desarrollos&lt;/h2&gt;
&lt;p&gt;Ahora podemos levantar y detener los contenedores mediante simples comandos y ubicar estos script y el contenido que estemos desarrollando en la carpeta &lt;code&gt;www&lt;/code&gt; de la misma manera que lo hicimos antes, y podemos mover toda esta estructura de ficheros a donde nos resulte más conveniente, o configurar el fichero &lt;code&gt;docker-compose.yml&lt;/code&gt; para que sepa encontrar la carpeta &lt;code&gt;www&lt;/code&gt; allá donde se ubique.&lt;/p&gt;
&lt;h1 id=&quot;bonus-portainer&quot;&gt;BONUS: Portainer&lt;/h1&gt;
&lt;p&gt;Para una gestión más cómoda de los contenedores y su monitorización, se puede usar &lt;a href=&quot;https://www.portainer.io/&quot;&gt;Portainer&lt;/a&gt;, un front end web local que se levanta como un contenedor más mediante:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; docker&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -itd&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -p&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; 9443:9443&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --name=portainer&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --restart=always&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -v&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; /var/run/docker.sock:/var/run/docker.sock&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -v&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; /docker/portainer:/data&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; portainer/portainer-ce&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Es posible acceder a él mediante la dirección localhost y el puerto 9443:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;localhost:9443&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;quot;alt&amp;quot;:&amp;quot;Portainer&amp;quot;,&amp;quot;src&amp;quot;:&amp;quot;@/assets/img/portainer.png&amp;quot;,&amp;quot;index&amp;quot;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;Mediante este entorno se puede hacer una gestión de los contenedores y su monitorización, como se ve en la imagen.&lt;/p&gt;
&lt;h1 id=&quot;saber-más&quot;&gt;Saber más&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://es.wikipedia.org/wiki/LAMP&quot;&gt;LAMP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://es.wikipedia.org/wiki/Docker&quot;&gt;Docker&lt;/a&gt; y &lt;a href=&quot;https://docs.docker.com/compose/&quot;&gt;Docker Compose&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://es.wikipedia.org/wiki/YAML&quot;&gt;YAML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://es.wikipedia.org/wiki/MySQL&quot;&gt;MySQL&lt;/a&gt;, &lt;a href=&quot;https://es.wikipedia.org/wiki/PHP&quot;&gt;PHP&lt;/a&gt; y &lt;a href=&quot;https://es.wikipedia.org/wiki/Apache_HTTP_Server&quot;&gt;Apache&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://es.wikipedia.org/wiki/XAMPP&quot;&gt;XAMPP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.portainer.io/&quot;&gt;Portainer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><enclosure url="https://javguerra.github.io/_astro/docker-lamp.BGQIH6q5_9u8Ft.webp"/><category>bbdd</category><category>mysql</category><category>php</category><category>docker</category><category>servidor</category><category>apache</category><category>programación</category><category>internet</category><author>JavGuerra</author></item><item><title>Museos de computación en Londres</title><link>https://javguerra.github.io/blog/museos-computacion-londres</link><guid isPermaLink="true">https://javguerra.github.io/blog/museos-computacion-londres</guid><description>Un paseo por Bletchley Park, The National Museum Of Computing y The Science Museum</description><pubDate>Fri, 27 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://javguerra.github.io/_astro/TNMOC_IBM_PC.RzqfNVsY_1kj0xJ.webp&quot; alt=&quot;IBM PC&quot; style=&quot;max-width: 100%; height: auto;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Etiquetas:&lt;/strong&gt; &lt;em&gt;#algoritmia&lt;/em&gt;, &lt;em&gt;#computación&lt;/em&gt;, &lt;em&gt;#historia&lt;/em&gt;, &lt;em&gt;#londres&lt;/em&gt;, &lt;em&gt;#museo&lt;/em&gt;, &lt;em&gt;#criptografía&lt;/em&gt;, &lt;em&gt;#fotografía&lt;/em&gt;, &lt;em&gt;#internet&lt;/em&gt;, &lt;em&gt;#retro&lt;/em&gt;, &lt;em&gt;#servidor&lt;/em&gt;, &lt;em&gt;#sinclair ql&lt;/em&gt;, &lt;em&gt;#tic&lt;/em&gt;, &lt;em&gt;#viaje&lt;/em&gt;, &lt;em&gt;#enigma&lt;/em&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;Recientemente he estado de viaje familiar en Londres y creo que he aprovechado bien el tiempo. En esta entrada cuento brevemente la visita a distintos museos relacionados con la informática en la ciudad.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://javguerra.badared.com/galeria/?dir=2024-12-COMPUTER-LONDON&quot;&gt;&lt;button&gt;Ver galería de fotos&lt;/button&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Reino Unido es el país que vio nacer la informática como la conocemos hoy y de esto tiene mucha culpa la Segunda Guerra Mundial y &lt;a href=&quot;https://es.wikipedia.org/wiki/Bletchley_Park&quot;&gt;Bletchley Park&lt;/a&gt;, la base donde &lt;code&gt;Alan Turing&lt;/code&gt; y las mujeres de inteligencia del ejercito descifraron el código de Enigma y Lorenz. Allí pude ver estas máquinas y las que se usaron para descifrarlas.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://javguerra.badared.com/galeria/photos/2024-12-COMPUTER-LONDON/Bletchley_Park_Turing.jpg&quot;&gt;&lt;img src=&quot;https://javguerra.badared.com/galeria/photos/2024-12-COMPUTER-LONDON/Bletchley_Park_Turing.jpg&quot; alt=&quot;Alan Turing&quot; width=&quot;200&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://javguerra.badared.com/galeria/photos/2024-12-COMPUTER-LONDON/Bletchley_Park_Turing.jpg&quot;&gt;Alan Turing&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://javguerra.badared.com/galeria/photos/2024-12-COMPUTER-LONDON/Bletchley_Park_Enigma.jpg&quot;&gt;&lt;img src=&quot;https://javguerra.badared.com/galeria/photos/2024-12-COMPUTER-LONDON/Bletchley_Park_Enigma.jpg&quot; alt=&quot;Enigma&quot; width=&quot;200&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;ttps://javguerra.badared.com/galeria/photos/2024-12-COMPUTER-LONDON/Bletchley_Park_Enigma.jpg&quot;&gt;Enigma&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hablando de códigos, en el Museo Británico está la original piedra de Rosetta, que también pude ver.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://javguerra.badared.com/galeria/photos/2024-12-COMPUTER-LONDON/Rosetta_British_Museum.jpg&quot;&gt;&lt;img src=&quot;https://javguerra.badared.com/galeria/photos/2024-12-COMPUTER-LONDON/Rosetta_British_Museum.jpg&quot; alt=&quot;Piedra de Rosetta&quot; width=&quot;200&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://javguerra.badared.com/galeria/photos/2024-12-COMPUTER-LONDON/Rosetta_British_Museum.jpg&quot;&gt;Piedra de Rosetta&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Justo detrás de Bletchley Park, a escasos metros, está &lt;a href=&quot;https://www.tnmoc.org/&quot;&gt;The National Museum Of Computing&lt;/a&gt;. Esta es una visita que no debes perderte, pues cuenta con grandes sorpresas, como una versión operativa de &lt;code&gt;The Bombe&lt;/code&gt; reconstruida, asi como las reconstrucciones de la máquina &lt;code&gt;Tunny&lt;/code&gt; y del no menos famoso &lt;code&gt;Colossus&lt;/code&gt; que ayudaron a romper los códigos del ejercito alemán en la WWII.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://javguerra.badared.com/galeria/photos/2024-12-COMPUTER-LONDON/TNMOC_Bombe.jpg&quot;&gt;&lt;img src=&quot;https://javguerra.badared.com/galeria/photos/2024-12-COMPUTER-LONDON/TNMOC_Bombe.jpg&quot; alt=&quot;The Bombe&quot; width=&quot;300&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://javguerra.badared.com/galeria/photos/2024-12-COMPUTER-LONDON/TNMOC_Bombe.jpg&quot;&gt;The Bombe&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://javguerra.badared.com/galeria/photos/2024-12-COMPUTER-LONDON/TNMOC_Colossus.jpg&quot;&gt;&lt;img src=&quot;https://javguerra.badared.com/galeria/photos/2024-12-COMPUTER-LONDON/TNMOC_Colossus.jpg&quot; alt=&quot;Colossus&quot; width=&quot;300&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://javguerra.badared.com/galeria/photos/2024-12-COMPUTER-LONDON/TNMOC_Colossus.jpg&quot;&gt;Colossus&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;También allí puede encontrarse la máquina &lt;code&gt;WITCH&lt;/code&gt;, que tiene el mérito de ser el ordenador de primera generación más antiguo aún en funcionamiento, y junto a él, está el ordenador &lt;code&gt;EDSAC&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Además de mainframes, un par de ordenadores &lt;code&gt;CRAY&lt;/code&gt;’s, de una buena colección de PCs, discos, válvulas y calculadoras, encontré, como no, un &lt;code&gt;Sinclair QL&lt;/code&gt; y sus dos hermanos, el &lt;code&gt;OPD&lt;/code&gt; y el &lt;code&gt;Merlin TONTO&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://javguerra.badared.com/galeria/photos/2024-12-COMPUTER-LONDON/TNMOC_OPD.jpg&quot;&gt;&lt;img src=&quot;https://javguerra.badared.com/galeria/photos/2024-12-COMPUTER-LONDON/TNMOC_OPD.jpg&quot; alt=&quot;OPD&quot; width=&quot;300&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://javguerra.badared.com/galeria/photos/2024-12-COMPUTER-LONDON/TNMOC_OPD.jpg&quot;&gt;OPD&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://javguerra.badared.com/galeria/photos/2024-12-COMPUTER-LONDON/TNMOC_Merlin_TONTO.jpg&quot;&gt;&lt;img src=&quot;https://javguerra.badared.com/galeria/photos/2024-12-COMPUTER-LONDON/TNMOC_Merlin_TONTO.jpg&quot; alt=&quot;Merlin TONTO&quot; width=&quot;300&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://javguerra.badared.com/galeria/photos/2024-12-COMPUTER-LONDON/TNMOC_Merlin_TONTO.jpg&quot;&gt;Merlin TONTO&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Este museo es muy pequeño, pero tiene voluntarios que explican con pasión lo que allí se encuentra, y merece la pena dedicarle el tiempo necesario para apreciar todo lo que tiene en tan poco espacio. Salí algo desencantado de allí por estacuestión, pensando qué mejor aprovechamiento podría hacerse de la exposición con más terreno, porque uno no es conciente de las maravillas que ese museo guarda.&lt;/p&gt;
&lt;p&gt;Se puede visitar en un &lt;a href=&quot;https://www.tnmoc.org/3d-virtual-tour-2026&quot;&gt;tour 3D online&lt;/a&gt; y ver todo con detalle. Y su página web está muy bien organizada.&lt;/p&gt;
&lt;p&gt;Antes de regresar, después de ver los dinosaurios del Museo de Historia Natural, visitamos lo poco que pudimos ver del Museo de la Ciencia, por falta de tiempo, donde además de cosas del espacio, encontramos máquinas tan interesantes como lo que queda del &lt;code&gt;LEO&lt;/code&gt; de Lyons, el primer ordenador comercial, un &lt;code&gt;PDP 10&lt;/code&gt;, un &lt;code&gt;IBM 360&lt;/code&gt; o un &lt;code&gt;Control Data 6600&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://javguerra.badared.com/galeria/photos/2024-12-COMPUTER-LONDON/Science_Museum_LEO_Lyons_computer.jpg&quot;&gt;&lt;img src=&quot;https://javguerra.badared.com/galeria/photos/2024-12-COMPUTER-LONDON/Science_Museum_LEO_Lyons_computer.jpg&quot; alt=&quot;LEO&quot; width=&quot;300&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://javguerra.badared.com/galeria/photos/2024-12-COMPUTER-LONDON/Science_Museum_LEO_Lyons_computer.jpg&quot;&gt;LEO&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Si viajáis a Londres, ya tenéis plan turístico retro.&lt;/p&gt;
&lt;h2 id=&quot;enlaces&quot;&gt;Enlaces&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://javguerra.badared.com/galeria/?dir=2024-12-COMPUTER-LONDON&quot;&gt;Galería de fotos completa&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bletchleypark.org.uk/&quot;&gt;Bletchley Park&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://es.wikipedia.org/wiki/Mujeres_en_Bletchley_Park&quot;&gt;Mujeres en Bletchley Park&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.tnmoc.org/&quot;&gt;The National Museum Of Computing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.sciencemuseum.org.uk/home&quot;&gt;Museo de la Ciencia&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><enclosure url="https://javguerra.github.io/_astro/TNMOC_IBM_PC.RzqfNVsY_1kj0xJ.webp"/><category>algoritmia</category><category>computación</category><category>historia</category><category>londres</category><category>museo</category><category>criptografía</category><category>fotografía</category><category>internet</category><category>retro</category><category>servidor</category><category>sinclair ql</category><category>tic</category><category>viaje</category><category>enigma</category><author>JavGuerra</author></item></channel></rss>