Skip to content

Commit

Permalink
Corregir enlaces afiliado Amazon (3)
Browse files Browse the repository at this point in the history
  • Loading branch information
picodotdev committed Feb 2, 2024
1 parent 55758d7 commit bc898c7
Show file tree
Hide file tree
Showing 28 changed files with 226 additions and 169 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/blog-bitix-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ jobs:
deploy:
runs-on: ubuntu-latest
env:
HUGO_VERSION: 0.121.1
HUGO_VERSION: 0.122.0
steps:
- uses: actions/checkout@v4
with:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,8 +161,9 @@ Un sistema ágil es una aproximación a la incertidumbre. Incertidumbre que siem
> This booklet tells the story of Justin - a project manager who achieved remarkable results with his team by doing very simple things! This guide covers the core concepts of Kanban for knowledge work, and shows how limiting your amount of work-in-progress can lead to getting things done better and faster.
{{< amazon
linkids="3fb69c8c67a77d17456e3a5fca1ce831"
asins="0985305169" >}}
linkids="https://amzn.to/3SnJD0j"
asins="0985305169"
titles="Stop Starting, Start Finishing!" >}}

La combinación de un WIP pequeño junto con un sistema _pull_ en el que no se construye lo no necesario, no se prueba lo que no se puede entregar, no se desarrolla lo que no se puede probar y no se especifica lo no se puede desarrollar produce una reducción de tiempos de entrega, hay mayor predictibilidad y elimina rehacer trabajo.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,11 +64,12 @@ RabbitMQ posee un [_plugin_ para la administración](https://www.rabbitmq.com/ma
image1="image:rabbitmq-management.webp" optionsthumb1="300x200" title1="Aplicación web de administración de RabbitMQ"
image2="image:rabbitmq-queue.webp" optionsthumb2="300x200" title2="Información de estado de una cola" >}}

Para profundizar más en las aplicaciones basadas en mensajes con RabbitMQ dos buenos libros son [Learning RabbitMQ](https://amzn.to/2lTGMQc) y [Matering RabbitMQ](https://amzn.to/2lW9qwF) cubriendo temas más avanzados como _clustering_, alta disponibilidad, arquitectura, patrones de diseño, seguridad y rendimiento.
Para profundizar más en las aplicaciones basadas en mensajes con RabbitMQ dos buenos libros son [Learning RabbitMQ](https://amzn.to/4bpjgQe) y [Matering RabbitMQ](https://amzn.to/3OsxVjU) cubriendo temas más avanzados como _clustering_, alta disponibilidad, arquitectura, patrones de diseño, seguridad y rendimiento.

{{< amazon
linkids="9bb0705e8a34f246d5530b141b0a690e,e87eebb622314cdf0c2c14fc32940264"
asins="1783984562,1783981520" >}}
linkids="https://amzn.to/4bpjgQe,https://amzn.to/3OsxVjU"
asins="1783984562,1783981520"
titles="Learning RabbitMQ,Mastering RabbitMQ" >}}

{{< sourcecode git="blog-ejemplos/tree/master/HolaMundoRabbitMQ" command="docker-compose up, ./gradlew receive, ./gradle send" >}}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,9 @@ El contenido del _kit_ es el siguiente que viene en una estupenda caja de plást
caption="Adaptador breadboard, diodos, botones, resistencias y fotorresistores" >}}

{{< amazon
linkids="415695f2e7f3ef590a8f4c93b8bda126,37e721eaa0be8ec062eef5ee18a5eae8"
asins="B06VTH7L28,B06W54L7B5" >}}
linkids="https://amzn.to/3UIL7p1,https://amzn.to/3uiWPM0"
asins="B06VTH7L28,B06W54L7B5"
titles="Freenove starter kit para Raspberry Pi,Freenove ultimate ultimate starter ki para Raspberry Pi" >}}

La matriz de conexiones o _breadboard_ es una forma cómoda de hacer pruebas sin tener que hacer soldaduras, los puntos en vertical de la mitad superior e inferior están conectados entre si de modo que con los cables macho-macho podamos poner y quitar conexiones. La matriz está numerada horizontalmente con números y verticalmente con letras de forma que cada punto sea identificable individualmente. Las dos filas de puntos superiores suelen usarse para proporcionar un voltaje de 5V y la conexión de tierra, las dos filas de puntos inferiores para proporcionar un voltaje de 3.3V y tierra. La placa está dividida en dos mitades verticalmente de las letras A-D y E-F formando columnas verticales de puntos conectadas en grupos de 5.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,12 @@ Los comandos para eliminar un servicio del _cluster_ y eliminar completamente el
{{< code file="nginx-remove.sh" language="bash" options="" >}}
{{< code file="cluster-remove.sh" language="bash" options="" >}}

Un libro que me ha gustado mucho y que recomiendo leer sobre Docker Swarm es [The Devops 2.1 Toolkit](https://amzn.to/2mIirti) que lo explica detalladamente y todo el libro está orientado a como usarlo en un entorno de producción. Un libro más introductorio que también he leído y que está bastante bien es [Docker in Action](https://amzn.to/2mF3Xtj).
Un libro que me ha gustado mucho y que recomiendo leer sobre Docker Swarm es [The Devops 2.1 Toolkit](https://amzn.to/4bomlQH) que lo explica detalladamente y todo el libro está orientado a como usarlo en un entorno de producción. Un libro más introductorio que también he leído y que está bastante bien es [Docker in Action](https://amzn.to/48XmJ7i).

{{< amazon
linkids="666d0aff3a2629cd87c205370bc5ae87,9d344246cd59cd65a952305379c2556a,2101ae950cfcfe9e69b6cc1210e4bf2c"
asins="1492036730,1633430235,1542468914" >}}
linkids="https://amzn.to/48XTJvT,https://amzn.to/48XmJ7i,https://amzn.to/4bomlQH"
asins="1492036730,1633430235,1542468914"
titles="Docker: Up & Running: Shipping Reliable Containers in Production,Docker in Action,The DevOps 2.1 Toolkit: Docker Swarm: building testing deploying and monitoring services inside Docker Swarm clusters" >}}

Finalmente, quizás si estás usando GNU/Linux y VirtualBox como yo al crear los nodos con el comando `docker-machine` te produzca el siguiente error (quizá se corrija en futuras versiones de Docker o VirtualBox).

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,14 +53,16 @@ Por ello, finalmente me decidí por el siguiente modelo de [reloj de manecillas
image1="image:reloj-3.webp" optionsthumb1="300x200" >}}

{{< amazon
linkids="b4520ee6411fb18af5d5eeecf755ca44,ed6aa74ec469d9de2ae7e841c441410d,88427cb384e155bfece40c7d66133ea9"
asins="B01CZPVR2C,B08YCRZFZF,B09HS3Q29T" >}}
linkids="https://amzn.to/42qIEBh,https://amzn.to/3SJITnS"
asins="B08YCRZFZF,B09HS3Q29T"
titles="Reloj despertador de madera,Reloj despertador analógico despertador silencioso" >}}

Otros modelos de relojes digitales de pared y mesa que ví son los siguientes, casi todos tienen como función adicional indicar la temperatura interior y la fecha.

{{< amazon
linkids="bd6a22abb84218e18458f0f33b5c6354,fc9f4b5c9696b82aa015faf870993e91,ab0420b22a221629ea512e5d00dca56f,e4c59a48332124cead194f867605cde6"
asins="B00J8Q59R6,B00D8ZMNH2,B00I023BB0,B00D2PIA7U" >}}
linkids="https://amzn.to/49i0rg1,https://amzn.to/3Urmkp8"
asins="B00I023BB0,B00D2PIA7U"
titles="Reloj digital mural con termómetro,Technoline WS 8007 reloj digital con pantalla LCD " >}}

## Pilas recargables AA

Expand All @@ -78,7 +80,8 @@ Para completar el pedido compré unas [pilas AA recargables de AmazonBasics](htt
Pilas AA y AAA en Amazon.

{{< amazon
linkids="452a2e62d3e787a6b63d8af73e5f278e,175ef0a2dea4d5a15c8c231fd006c67d"
asins="B00CWNMR5Y,B00CWNMXQW" >}}
linkids="https://amzn.to/47Wm0lq,https://amzn.to/3Oqlbu8"
asins="B00CWNMR5Y,B00CWNMXQW"
titles="Amazon Basics pilas AA recargables,Amazon Basics pilas AAA recargables" >}}

{{% /post %}}
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,12 @@ De los _volumes_ y _secrets_ en posteriores entregas de esta [serie de artículo

{{< code file="docker-compose-stack-app.yml" language="yaml" options="" >}}

Un libro que me ha gustado mucho y que recomiendo leer sobre Docker Swarm es [The Devops 2.1 Toolkit](https://amzn.to/2mIirti) que lo explica detalladamente y todo el libro está orientado a como usarlo en un entorno de producción. Un libro más introductorio que también he leído y que está bastante bien es [Docker in Action](https://amzn.to/2mF3Xtj).
Un libro que me ha gustado mucho y que recomiendo leer sobre Docker Swarm es [The Devops 2.1 Toolkit](https://amzn.to/2mIirti) que lo explica detalladamente y todo el libro está orientado a como usarlo en un entorno de producción. Un libro más introductorio que también he leído y que está bastante bien es [Docker in Action](https://amzn.to/4bkH5J8).

{{< amazon
linkids="666d0aff3a2629cd87c205370bc5ae87,9d344246cd59cd65a952305379c2556a,2101ae950cfcfe9e69b6cc1210e4bf2c"
asins="1492036730,1633430235,1542468914" >}}
linkids="https://amzn.to/3HN3gKx,https://amzn.to/4bkH5J8,https://amzn.to/3upxvUA"
asins="1492036730,1633430235,1542468914"
titles="Docker: Up & Running: Shipping Reliable Containers in Production,Docker in Action,The DevOps 2.1 Toolkit: Docker Swarm: building testing deploying and monitoring services inside Docker Swarm clusters" >}}

Docker Swarm es una opción simple y que está integrada en Docker pero no ofrece todas las funcionalidades de algunas otras opciones que el algunos casos de uso algo más avanzados son necesarias o convenientes. [Nomad][nomad] es otra opción simple para gestionar un conjunto de aplicaciones o servicios pero con algunas funcionalidades adicionales que no posee Docker Swarm como escribo en [Introducción a Nomad para gestionar aplicaciones y microservicios][blogbitix-398].

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -189,8 +189,9 @@ Otros elementos que soporta la base de datos PostgreSQL en el lenguaje SQL son _
Por todas estas características se considera a PostgreSQL una de las bases de datos relacionales más avanzadas existentes. Hay mucha literatura sobre las bases de datos relacionales desde el lenguaje SQL en general, libros específicos sobre PostgreSQL o como evitar errores diseño al estructurar la información en tablas y columnas.

{{< amazon
linkids="e91efc7d7df2c1cbbccc2793a1e9d0be,debb8456d091330663a1c10f654fd5b8,2f3d39f7290758074e90a66beda9e253"
asins="1800567499,1783989181,1934356557" >}}
linkids="https://amzn.to/3OwdLWq,https://amzn.to/3SnZU5A,https://amzn.to/3uhZkhK"
asins="1803248343,1783989181,1934356557"
titles="Mastering PostgreSQL 15,Learning PostgreSQL,SQL Antipatterns: Avoiding the Pitfalls of Database Programming" >}}

En caso de optar por una base de datos NoSQL para persistir la información [la base de datos NoSQL MongoDB][blogbitix-237] permite guardar los datos en forma de documentos y conseguir la escalabilidad que las bases de datos relacionales con sus propiedades ACID es difícil.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,12 @@ Estas son las [operaciones CRUD][crud] ejecutadas desde la _shell_ de MongoDB en

MongoDB proporciona controladores para acceder a la base de datos desde los lenguajes de programación más populares como muestro en el artículo [Usar la base de datos NoSQL MongoDB con Java][blogbitix-239].

El libro [MongoDB in Action](https://amzn.to/2qvYqqU) es un buen material de referencia para dominar esta base de datos NoSQL con consejos prácticos de como guardar la información y como administrar la base de datos para replicar los datos en un _cluster_, escalar y otros temas administrativos como crear copias de seguridad, rendimiento, seguridad o monitorización.
El libro [MongoDB in Action](https://amzn.to/3UmtZVP) es un buen material de referencia para dominar esta base de datos NoSQL con consejos prácticos de como guardar la información y como administrar la base de datos para replicar los datos en un _cluster_, escalar y otros temas administrativos como crear copias de seguridad, rendimiento, seguridad o monitorización.

{{< amazon
linkids="53e36564344401d0a3e0f29a4cef1968"
asins="1617291609" >}}
linkids="https://amzn.to/3UmtZVP"
asins="1617291609"
titles="MongoDB in Action" >}}

[La base de datos PostgreSQL][blogbitix-236] es una de las mejores opciones en el ámbito de las bases de datos relacionales y el potente lenguaje SQL, las propiedades ACID o el PL/pgSQL entre otras funcionalidades hará que siga siendo una de las mejores opciones para almacenar de forma persistente la preciosa información. En los casos que la escalabilidad o la estructuración de la información en documentos se un factor determinante MongoDB es una buena opción. Ambas opciones no son excluyentes, según el caso estos dos sistemas de información se podrán combinar para obtener lo mejor de cada uno de ellos.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,12 @@ El resultado en la terminal de ejecutar el ejemplo con el comando `gradlew run`

Spring ofrece en su API mediante el proyecto [Spring Data MongoDB](https://projects.spring.io/spring-data-mongodb/) algunas clases adicionales para facilitar el acceso y obtención de datos de MongoDB. Entre estas clases están [MongoTemplate](https://docs.spring.io/spring-data/data-mongo/docs/current/api/org/springframework/data/mongodb/core/MongoTemplate.html), [MongoOperations](https://docs.spring.io/spring-data/data-mongo/docs/current/api/org/springframework/data/mongodb/core/MongoOperations.html) y [MongoRepository](https://docs.spring.io/spring-data/data-mongo/docs/current/api/org/springframework/data/mongodb/repository/MongoRepository.html) cuyo uso puede consultarse en su [manual de referencia](https://docs.spring.io/spring-data/data-mongo/docs/current/reference/html/).

En el libro [MongDB in Action](https://amzn.to/2qvYqqU) comentan más detalladamente y de forma más completa las opciones que se pueden utilizar en el lenguaje de consulta, muchas de las opciones son equivalentes a las que son conocidas del lenguaje SQL de las bases de datos relacionales.
En el libro [MongDB in Action](https://amzn.to/3w2fKLI) comentan más detalladamente y de forma más completa las opciones que se pueden utilizar en el lenguaje de consulta, muchas de las opciones son equivalentes a las que son conocidas del lenguaje SQL de las bases de datos relacionales.

{{< amazon
linkids="53e36564344401d0a3e0f29a4cef1968"
asins="1617291609" >}}
linkids="https://amzn.to/3w2fKLI"
asins="1617291609"
titles="MongoDB in Action" >}}

{{< sourcecode git="blog-ejemplos/tree/master/HolaMundoMongoDB" command="docker-compose up, ./gradlew run" >}}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,9 @@ Cada comando de Redis tiene una complejidad de tiempo ejecución, para obtener e
Para un conocimiento mucho más detallado de las posibilidades de esta base de datos el libro [Mastering Redis](https://amzn.to/2s9CYfJ) o [Redis in Action](https://amzn.to/2rio3vH) son un buen inicio.

{{< amazon
linkids="8459459236559fee49442452db7fb5b2,3d85e30c0781f28d90d25591d5183d0d"
asins="1783988185,1617290858" >}}
linkids="https://amzn.to/3w243ob,https://amzn.to/3w1mEkl"
asins="1783988185,1617290858"
titles="Mastering Redis,Redis in Action" >}}

{{< sourcecode git="blog-ejemplos/tree/master/HolaMundoRedis" command="docker-compose up, ./gradlew run" >}}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,11 +113,12 @@ Usando como herramienta de construcción del proyecto [Gradle][gradle] el archiv

Desarrollar un _portlet_ con su API directamente es una tarea costosa si la funcionalidad o complejidad del _portlet_ es mucha. Al igual que en Java no se suele utilizar la API de los _servlets_ directamente, aunque es la API subyacente, y se suele utilizar alguno de los muchos _frameworks_ disponibles para los _portlets_ también hay varios _frameworks_ entre los que elegir. En el artículo [_Portlets_ con el framework Apache Tapestry y Apache Pluto][blogbitix-244] muestro un ejemplo usando un _framework_ de alto nivel, orientado a componentes y altamente productivo.

Aunque el libro [Liferay in Action](https://amzn.to/2sc1tWN) o [Portlets in Action](https://amzn.to/2tzpbjL) no están actualizados a la última versión sirven para conocer los conceptos básicos de su funcionamiento, explican la teoría e incluyen ejemplos de código de como crear un _portlet_.
Aunque el libro [Liferay in Action](https://amzn.to/3UrpaKP) o [Portlets in Action](https://amzn.to/3OvMnHT) no están actualizados a la última versión sirven para conocer los conceptos básicos de su funcionamiento, explican la teoría e incluyen ejemplos de código de como crear un _portlet_.

{{< amazon
linkids="6d736075105602e7c318919a1c81609d,a4fdbe9a2a0c68685cfc8119f253125b"
asins="1935182544,193518282X" >}}
linkids="https://amzn.to/3OvMnHT,https://amzn.to/3UrpaKP"
asins="1935182544,193518282X"
titles="Portlets in Action,Liferay in Action" >}}

{{< sourcecode git="blog-ejemplos/tree/master/HolaMundoPortlet" command="./gradlew build" >}}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,9 @@ Insertado el _portlet_ en una página y accediendo a ella el _portlet_ muestra e
Para conocer más sobre los _portlets_ el libro [Portlets in Action](https://amzn.to/2tzpbjL) es una buena fuente de documentación.

{{< amazon
linkids="6d736075105602e7c318919a1c81609d"
asins="1935182544" >}}
linkids="https://amzn.to/3w3lMf7"
asins="1935182544"
titles="Portlets in Action" >}}

Descargado y descomprimido el [binario de Apache Pluto](https://portals.apache.org/pluto/download.html) para inicia con el comando `startup.sh`. Apache Pluto es en realidad un servidor [Apache Tomcat][tomcat] con las adiciones para proporcionarle la funcionalidad de portal en la dirección _http\://localhost:8080/pluto_.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,12 @@ Una vez seleccionadas las opciones se genera el proyecto y descarga un archivo c

Como con todos los generadores de código es recomendable saber suficientemente que es código que generan para en caso de modificaciones posteriores saber como aplicarlas. También es posible que no se adapte exactamente a lo que necesitamos, por ejemplo, si queremos hacer un [multiproyecto con Gradle][blogbitix-96] o si una dependencia necesaria no está incluida en la lista de categorías hay añadirla después. A partir de aquí se empieza a programar el proyecto.

En el libro [Spring Boot in Action](https://amzn.to/2tvCJMs) se comenta detalladamente Spring Boot que ofrece múltiples nuevas posibilidades que hace más fácil el desarrollo de un proyecto con Spring. Por otro lado para conocer más detalladamente y ampliamente el ecosistema de Spring está el libro [Mastering Spring 5.0](https://amzn.to/2tZInqM) que también incluye secciones sobre Spring Boot.
En el libro [Spring Boot in Action](https://amzn.to/42oC91K) se comenta detalladamente Spring Boot que ofrece múltiples nuevas posibilidades que hace más fácil el desarrollo de un proyecto con Spring. Por otro lado para conocer más detalladamente y ampliamente el ecosistema de Spring está el libro [Mastering Spring 5.0](https://amzn.to/42mvWU5) que también incluye secciones sobre Spring Boot.

{{< amazon
linkids="86ce91eca968f6de1d0a777f48ca3069,61b49fc8ef6bdf7c80975908df76d4af,e4f7f44a8b854b00a547d526b83f6469"
asins="1617292540,1617292540,B01N750Z7H" >}}
linkids="https://amzn.to/42oC91K,https://amzn.to/42mvWU5"
asins="1617292540,B01N750Z7H"
titles="Spring Boot in Action,Mastering Spring 5.0" >}}

En definitiva el _plugin_ _init_ de Gradle y la utilidad Spring Initializr son unas buenas herramientas para empezar un proyecto Java rápidamente y en pocos minutos disponer de un proyecto básico funcional y listo para implementar la funcionalidad de la aplicación.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,9 @@ Las puntas para atornillar se usan con un adaptador y las llaves de vaso se pued
caption="Acoplador, puntas para el acoplador, nivel, metro y llave de carraca" >}}

{{< amazon
linkids="5aae4dd4d341b91eae824bc8ba069fd2"
asins="B0051E16LW" >}}
linkids="https://amzn.to/3w1ZXfO"
asins="B0051E16LW"
titles="Brueder MannesmannM29085 juego de herramienta universal en maletín" >}}

## Bandejas melamina Balvi

Expand All @@ -81,7 +82,8 @@ También necesitaba unas bandejas para llevar platos, cubiertos, vaso, pan o el
En algún comentario de Amazon un usuario le ponía a estas bandejas una sola estrella porque decía que las cosas resbalaban, la superficie es muy pulida y no tiene rugosidades pero de ahí que las cosas resbalen creo que no salvo que en algún momento no mantengas la horizontalidad de la bandeja al transportar las cosas.

{{< amazon
linkids="4afc8997f60c2f79ebd49a4ab268f301,08548a86ec994f108ffa1108ec5632c9,a9e59ba31aaf4854ac779956b8aa2f28,5877bec7584091c64a726cbd51754f92"
asins="B00SYWANB2,B00SYWAJSE,B00KISSXY4,B081SC9YX3" >}}
linkids="https://amzn.to/481eOUX,https://amzn.to/3SlFmL3,https://amzn.to/3HKws4U"
asins="B00SYWAJSE,B081SC9YX3,B07HJL2G6S"
titles="Bandeja para comida,Bandejas para comida,Salvamanteles" >}}

{{% /post %}}
Loading

0 comments on commit bc898c7

Please sign in to comment.