From c2d450bcbca42c4401209563a7feb9e284e2c17e Mon Sep 17 00:00:00 2001 From: Nubenetes Bot Date: Mon, 18 May 2026 19:42:01 +0200 Subject: [PATCH] fix: restore protocol slashes and refine trailing slash removal logic --- data/inventory.yaml | 2 +- docs/ChromeDevTools.md | 4 +-- docs/GoogleCloudPlatform.md | 2 +- docs/about.md | 2 +- docs/ansible.md | 2 +- docs/api.md | 2 +- docs/aws.md | 10 +++---- docs/azure.md | 2 +- docs/caching.md | 2 +- docs/container-managers.md | 2 +- docs/databases.md | 10 +++---- docs/demos.md | 2 +- docs/devel-sites.md | 2 +- docs/devops.md | 2 +- docs/devsecops.md | 2 +- docs/digital-money.md | 2 +- docs/docker.md | 2 +- docs/dotnet.md | 2 +- docs/git.md | 6 ++-- docs/gitops.md | 4 +-- docs/golang.md | 4 +-- docs/introduction.md | 6 ++-- docs/java_frameworks.md | 2 +- docs/jenkins-alternatives.md | 2 +- docs/jenkins.md | 6 ++-- docs/kubernetes-networking.md | 2 +- docs/kubernetes-operators-controllers.md | 2 +- docs/kubernetes-security.md | 2 +- docs/kubernetes-storage.md | 2 +- docs/kubernetes-troubleshooting.md | 2 +- docs/kubernetes-tutorials.md | 2 +- docs/kubernetes.md | 22 +++++++------- docs/lowcode-nocode.md | 2 +- docs/matrix-table.md | 2 +- docs/message-queue.md | 4 +-- docs/mkdocs.md | 2 +- docs/mlops.md | 4 +-- docs/monitoring.md | 6 ++-- docs/ocp3.md | 4 +-- docs/openshift.md | 2 +- docs/project-management-methodology.md | 6 ++-- docs/project-management-tools.md | 2 +- docs/prometheus.md | 8 ++--- docs/public-cloud-solutions.md | 2 +- docs/python.md | 8 ++--- docs/rancher.md | 2 +- docs/recruitment.md | 16 +++++----- docs/serverless.md | 4 +-- docs/sre.md | 2 +- docs/terraform.md | 6 ++-- docs/visual-studio.md | 4 +-- repair_protocols.py | 37 ++++++++++++++++++++++++ src/gemini_utils.py | 10 +++---- 53 files changed, 143 insertions(+), 108 deletions(-) create mode 100644 repair_protocols.py diff --git a/data/inventory.yaml b/data/inventory.yaml index 81112be5..c02604e9 100644 --- a/data/inventory.yaml +++ b/data/inventory.yaml @@ -142274,7 +142274,7 @@ https://github.com/longhorn/longhorn: content_hash: 01a524ae33e45909bee9c0af9f65a2545e674c69ead0d27334eb30a7b40f3e11 v1_locations: - docs/rancher.md -https://web.archive.org/web/20160716182152/http:/cloudacademy.com/blog/cloud-computing-salary: +https://web.archive.org/web/20160716182152/http://cloudacademy.com/blog/cloud-computing-salary: health_score: 100.0 last_checked: 1779100237.65335 content_hash: 11e4f1fbce17640e71876d7b5720686c8879348f833eb8d1513a87e2768fe4fa diff --git a/docs/ChromeDevTools.md b/docs/ChromeDevTools.md index c21c5c49..d2ca15ed 100644 --- a/docs/ChromeDevTools.md +++ b/docs/ChromeDevTools.md @@ -46,13 +46,13 @@ -

❤️ the Performance Monitor in @ChromeDevTools. Gives you a real-time view of CPU use, JS heap size, JS event listeners, style recalcs & more: https:/t.co/tc6CyTya3O pic.twitter.com/BWSi8klGkE

— Addy Osmani (@addyosmani) July 7, 2020
+

❤️ the Performance Monitor in @ChromeDevTools. Gives you a real-time view of CPU use, JS heap size, JS event listeners, style recalcs & more: https://t.co/tc6CyTya3O pic.twitter.com/BWSi8klGkE

— Addy Osmani (@addyosmani) July 7, 2020

8 Google extensions every developer must use

A thread 🧵🧵

— Meet Jain🦅 (@meetjain74) September 5, 2021

💡 Web Development tip

You can restart Chrome from the address bar by typing: chrome://restart pic.twitter.com/0jbVoHwS1z

— Csaba Kissi ⚡ (@csaba_kissi) November 7, 2021
-

Copy link to highlight is a new Chrome feature that allows you to create links to the exact part of a web page you want to share. https:/t.co/IS0jijOjvP pic.twitter.com/L9q2abGQMd

— Kelsey Hightower (@kelseyhightower) November 20, 2021
+

Copy link to highlight is a new Chrome feature that allows you to create links to the exact part of a web page you want to share. https://t.co/IS0jijOjvP pic.twitter.com/L9q2abGQMd

— Kelsey Hightower (@kelseyhightower) November 20, 2021
diff --git a/docs/GoogleCloudPlatform.md b/docs/GoogleCloudPlatform.md index 10c964a6..b8ae97d4 100644 --- a/docs/GoogleCloudPlatform.md +++ b/docs/GoogleCloudPlatform.md @@ -195,7 +195,7 @@
- + diff --git a/docs/about.md b/docs/about.md index 26b6277a..f6372021 100644 --- a/docs/about.md +++ b/docs/about.md @@ -123,7 +123,7 @@ Let's improve both the private & public IT sector and the opportunities in large "In the U.S. in 2016, 3.9 million jobs are associated with cloud computing, with 384,478 of them in IT. The median salary for IT professionals with cloud computing experience was $90,950. (Forbes)" - [![cloud job market 2016](images/cloud_job_market_2016.png)](https://web.archive.org/web/20160716182152/http:/cloudacademy.com/blog/cloud-computing-salary) + [![cloud job market 2016](images/cloud_job_market_2016.png)](https://web.archive.org/web/20160716182152/http://cloudacademy.com/blog/cloud-computing-salary) From the above graph (credit: Forbes) we can see that the top three countries for Cloud Computing Jobs are: diff --git a/docs/ansible.md b/docs/ansible.md index a707fa13..5ec51639 100644 --- a/docs/ansible.md +++ b/docs/ansible.md @@ -44,7 +44,7 @@ - [ansible.com](https://www.redhat.com/en/ansible-collaborative?intcmp=7015Y000003t7aWQAQ) - [docs.ansible.com](https://docs.ansible.com) - [dureka.co: What Is Ansible?](https://www.edureka.co/blog/what-is-ansible) Configuration Management And Automation With Ansible -- [Dzone: Part 1: Getting Started with Ansible [ARCHIVED]]( http://web.archive.org/web/20230203201722/https:/dzone.com/articles/part-1-getting-started-ansible) +- [Dzone: Part 1: Getting Started with Ansible [ARCHIVED]]( http://web.archive.org/web/20230203201722/https://dzone.com/articles/part-1-getting-started-ansible) - [Dzone: Part 2: Deploying Applications](https://dzone.com/articles/part-2-deploying-applications) - [Dzone: 10 easy to use modules in ansible](https://dzone.com/articles/10-easy-to-use-modules-in-ansible-1) - [Dzone: Running Ansible at Scale](https://dzone.com/articles/running-ansible-at-scale) diff --git a/docs/api.md b/docs/api.md index 18f96622..184626f4 100644 --- a/docs/api.md +++ b/docs/api.md @@ -383,7 +383,7 @@ - + diff --git a/docs/aws.md b/docs/aws.md index d3af9fd2..a2ac09c7 100644 --- a/docs/aws.md +++ b/docs/aws.md @@ -47,7 +47,7 @@ - [slideshare.net/AmazonWebServices](http://www.slideshare.net/AmazonWebServices) - [AWS 10-Minute Tutorials](https://aws.amazon.com/getting-started/hands-on) - [How do I create and activate a new Amazon Web Services account?](https://repost.aws/knowledge-center/create-and-activate-aws-account) -- [onlineitguru.com: AWS Services [ARCHIVED]]( http://web.archive.org/web/20210119012455/https:/onlineitguru.com/tutorial/aws-services) +- [onlineitguru.com: AWS Services [ARCHIVED]]( http://web.archive.org/web/20210119012455/https://onlineitguru.com/tutorial/aws-services) - [The Open Guide to Amazon Web Services](https://github.com/open-guides/og-aws) - [AWS Ramp-Up Guides](https://aws.amazon.com/es/training/ramp-up-guides) Your guides to learning the AWS Cloud. Build Your AWS Cloud Knowledge with Ramp-Up Guides. - [serverlessland.com](https://serverlessland.com) This site brings together all the latest blogs, videos, and training for AWS Serverless. Learn to use and build apps that scale automatically on low-cost, fully-managed serverless architecture. @@ -246,9 +246,9 @@ You can filter by topic using the toolbar above. - + - + @@ -276,9 +276,9 @@ You can filter by topic using the toolbar above. - + - + diff --git a/docs/azure.md b/docs/azure.md index 1711f704..f3a45eb0 100644 --- a/docs/azure.md +++ b/docs/azure.md @@ -734,7 +734,7 @@ - [techcommunity.microsoft.com: Security Control: Implement security best practices](https://techcommunity.microsoft.com/blog/microsoftdefendercloudblog/security-control-implement-security-best-practices/2269914) - [==github.com/Cloud-Architekt: Azure AD - Attack and Defense Playbook==](https://github.com/Cloud-Architekt/AzureAD-Attack-Defense) **This publication is a collection of various common attack scenarios on Azure Active Directory and how they can be mitigated or detected.** - [==devops.com: DevSecOps in Azure==](https://devops.com/devsecops-in-azure) -- [learn.microsoft.com: SC-100: Design a Zero Trust strategy and architecture [ARCHIVED]]( http://web.archive.org/web/20221129213259/https:/learn.microsoft.com/en-us/training/paths/sc-100-design-zero-trust-strategy-architecture) +- [learn.microsoft.com: SC-100: Design a Zero Trust strategy and architecture [ARCHIVED]]( http://web.archive.org/web/20221129213259/https://learn.microsoft.com/en-us/training/paths/sc-100-design-zero-trust-strategy-architecture) - https://github.com/MicrosoftLearning/SC-100-Microsoft-Cybersecurity-Architect - [learn.microsoft.com: Azure network security overview](https://learn.microsoft.com/en-us/azure/security/fundamentals/network-overview) - [learn.microsoft.com: Conditional Access templates](https://learn.microsoft.com/en-us/entra/identity/conditional-access/concept-conditional-access-policy-common) diff --git a/docs/caching.md b/docs/caching.md index 67cf32c6..a5ef764c 100644 --- a/docs/caching.md +++ b/docs/caching.md @@ -25,7 +25,7 @@ - [medium: Microservices Distributed Caching](https://medium.com/design-microservices-architecture-with-patterns/microservices-distributed-caching-76828817e41b) In this article, we are going to talk about Microservices Distributed Caching for Microservices Architectures. As you know that we learned practices and patterns and add them into our design toolbox. And we will use these pattern and practices when designing e-commerce microservice architecture. - [kothiyal-anuj.medium.com: Serverless Diary: The Ultimate Guide to Caching in the Cloud | Anuj Kothiyal](https://kothiyal-anuj.medium.com/serverless-diary-the-ultimate-guide-to-caching-in-the-cloud-249f6a06915f) - [medium.com/rtkal: Distributed Cache Design](https://medium.com/rtkal/distributed-cache-design-348cbe334df1) -- [learncsdesign.medium.com: An Overview of Distributed Caching 🌟 [ARCHIVED]]( http://web.archive.org/web/20220717060745/https:/learncsdesign.medium.com/an-overview-of-distributed-caching-e426781d1ff0) +- [learncsdesign.medium.com: An Overview of Distributed Caching 🌟 [ARCHIVED]]( http://web.archive.org/web/20220717060745/https://learncsdesign.medium.com/an-overview-of-distributed-caching-e426781d1ff0) - [surfingcomplexity.blog: Cache invalidation really is one of the hardest problems in computer science](https://surfingcomplexity.blog/2022/11/25/cache-invalidation-really-is-one-of-the-hardest-things-in-computer-science) ## Java Caching diff --git a/docs/container-managers.md b/docs/container-managers.md index 2de2f10b..cb0dc51c 100644 --- a/docs/container-managers.md +++ b/docs/container-managers.md @@ -176,7 +176,7 @@
- + diff --git a/docs/databases.md b/docs/databases.md index 5ae14ff2..dee1e149 100644 --- a/docs/databases.md +++ b/docs/databases.md @@ -62,7 +62,7 @@ - [magalix.com: Kubernetes And Databases 🌟](https://www.magalix.com/blog/kubernetes-and-database) - [towardsdatascience.com: SQL vs. NoSQL: How to Select from 12 Database Types 🌟🌟](https://towardsdatascience.com/datastore-choices-sql-vs-nosql-database-ebec24d56106) When to use SQL vs. NoSQL database? Deep dive, differences, decision tree, and cloud cheatsheet to choose the best database for your data type and use case. - [andrewlock.net: Running database migrations when deploying to Kubernetes 🌟](https://andrewlock.net/deploying-asp-net-core-applications-to-kubernetes-part-7-running-database-migrations) Deploying ASP.NET Core applications to Kubernetes - Part 7. Learn how to run database migrations with init containers and Jobs in Kubernetes. -- [redislabs.com: What is a “Databaseless” (DBLess) Architecture, and Why It’s the Future 🌟 [ARCHIVED]]( http://web.archive.org/web/20210806055040/https:/redislabs.com/blog/dbless-architecture-and-why-its-the-future) DBLess architecture provides a new approach to data pipeline and backend architecture. Just like the terms serverless, stateless, and NoSQL, it attempts to provide more options for architects to think about. +- [redislabs.com: What is a “Databaseless” (DBLess) Architecture, and Why It’s the Future 🌟 [ARCHIVED]]( http://web.archive.org/web/20210806055040/https://redislabs.com/blog/dbless-architecture-and-why-its-the-future) DBLess architecture provides a new approach to data pipeline and backend architecture. Just like the terms serverless, stateless, and NoSQL, it attempts to provide more options for architects to think about. - [red-gate.com: Designing Highly Scalable Database Architectures](https://www.red-gate.com/simple-talk/databases/sql-server/performance-sql-server/designing-highly-scalable-database-architectures) - [medium: Not using trendy technologies is the best thing for your Startup!](https://medium.com/dataseries/not-using-nosql-is-good-i-stuck-to-sql-4504a67972f0) I refused to use MongoDB and I convinced my company to use a SQL relational database system. - [thenewstack.io: Database-as-a-Service: A Key Technology for Agile Growth](https://thenewstack.io/database-as-a-service-a-key-technology-for-agile-growth) @@ -387,15 +387,15 @@
- + - + - + @@ -409,7 +409,7 @@ - +
\ No newline at end of file diff --git a/docs/demos.md b/docs/demos.md index 83d6f04f..ff14b9d2 100644 --- a/docs/demos.md +++ b/docs/demos.md @@ -537,7 +537,7 @@ - [developers.redhat.com: Deploy Helm charts with Jenkins CI/CD in Red Hat OpenShift 4 🌟](https://developers.redhat.com/articles/2021/05/24/deploy-helm-charts-jenkins-cicd-red-hat-openshift-4) - [devopscube.com: How to Setup Jenkins Build Agents on Kubernetes Cluster 🌟](https://devopscube.com/jenkins-build-agents-kubernetes) - [medium: Deploy Docker Image To Kubernetes Cluster Using Jenkins 🌟](https://medium.com/codex/deploy-docker-image-to-kubernetes-cluster-using-jenkins-8182cc0a8de7) This article explains the complete DevOps pipeline setup from creating project to deploying the Docker image to Kubernetes cluster using Jenkins. -- [igorzhivilo.com: How To Read Vault’s Secrets from Jenkin’s Declarative Pipeline 🌟 [ARCHIVED]]( http://web.archive.org/web/20231213032046/https:/igorzhivilo.com/jenkins/how-to-read-vault-secrets-from-declarative-pipeline) +- [igorzhivilo.com: How To Read Vault’s Secrets from Jenkin’s Declarative Pipeline 🌟 [ARCHIVED]]( http://web.archive.org/web/20231213032046/https://igorzhivilo.com/jenkins/how-to-read-vault-secrets-from-declarative-pipeline) - [simplilearn.com: What is CI/CD Pipeline and How to Implement it Using Jenkins?](https://www.simplilearn.com/tutorials/jenkins-tutorial/ci-cd-pipeline) - [youtube: CI CD Pipeline Using Jenkins | Continuous Integration and Deployment using Azure Devops | K21Academy](https://www.youtube.com/watch?v=LhB8-sAx3pM&ab_channel=K21Academy) - [lambdatest.com: How To Create Jenkins Multibranch Pipeline 🌟](https://www.testmuai.com/blog/how-to-create-jenkins-multibranch-pipeline) diff --git a/docs/devel-sites.md b/docs/devel-sites.md index 0828fd52..22051b92 100644 --- a/docs/devel-sites.md +++ b/docs/devel-sites.md @@ -152,7 +152,7 @@ - + diff --git a/docs/devops.md b/docs/devops.md index 4b565897..9b54937a 100644 --- a/docs/devops.md +++ b/docs/devops.md @@ -581,7 +581,7 @@ Resolve your software incidents 10x faster - + diff --git a/docs/devsecops.md b/docs/devsecops.md index 2b04cb36..3ecc0572 100644 --- a/docs/devsecops.md +++ b/docs/devsecops.md @@ -322,7 +322,7 @@ - [Twistlock](https://www.paloaltonetworks.com/prisma/cloud) - [Threat Stack](https://www.f5.com/products/distributed-cloud-services) -- [dzone: A Twistlock and Threat Stack Comparison [ARCHIVED]]( http://web.archive.org/web/20221007145938/https:/dzone.com/articles/a-twistlock-and-threat-stack-comparison) Compare two of the most popular tools available for container security, and how their different approaches breed different solutions. +- [dzone: A Twistlock and Threat Stack Comparison [ARCHIVED]]( http://web.archive.org/web/20221007145938/https://dzone.com/articles/a-twistlock-and-threat-stack-comparison) Compare two of the most popular tools available for container security, and how their different approaches breed different solutions. ## OWASP diff --git a/docs/digital-money.md b/docs/digital-money.md index 7f976117..bed4a456 100644 --- a/docs/digital-money.md +++ b/docs/digital-money.md @@ -24,7 +24,7 @@ - + diff --git a/docs/docker.md b/docs/docker.md index c0d4f86a..d7a56043 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -285,7 +285,7 @@ ## Modify containers without rebuilding -- [cloudowski.com: How to modify containers without rebuilding their image [ARCHIVED]]( http://web.archive.org/web/20210731130210/https:/cloudowski.com/articles/how-to-modify-containers-wihtout-rebuilding) +- [cloudowski.com: How to modify containers without rebuilding their image [ARCHIVED]]( http://web.archive.org/web/20210731130210/https://cloudowski.com/articles/how-to-modify-containers-wihtout-rebuilding) ## Docker Tools - [Floci - An AWS Local Emulator Alternative](https://github.com/floci-io/floci) - *(Related to kubernetes-tools topic)* diff --git a/docs/dotnet.md b/docs/dotnet.md index 9e2531bb..adf5d35c 100644 --- a/docs/dotnet.md +++ b/docs/dotnet.md @@ -78,7 +78,7 @@
- +
\ No newline at end of file diff --git a/docs/git.md b/docs/git.md index c6977178..51150292 100644 --- a/docs/git.md +++ b/docs/git.md @@ -77,7 +77,7 @@ - [9 awesome git tricks](https://tychoish.com/post/9-awesome-git-tricks) - [Awesome Git 🌟](https://github.com/dictcp/awesome-git) - [dzone.com: Top 20 git commands with examples 🌟](https://dzone.com/articles/top-20-git-commands-with-examples) -- [dzone.com: 8 Useful But Not Well-Known Git Concepts [ARCHIVED]]( http://web.archive.org/web/20220820091342/https:/dzone.com/articles/8-useful-but-not-well-known-git-concepts) These lesser-known Git tricks can help you solve problems that are not handled well by the GitHub and BitBucket GUIs +- [dzone.com: 8 Useful But Not Well-Known Git Concepts [ARCHIVED]]( http://web.archive.org/web/20220820091342/https://dzone.com/articles/8-useful-but-not-well-known-git-concepts) These lesser-known Git tricks can help you solve problems that are not handled well by the GitHub and BitBucket GUIs - [Dzone refcard: Getting started with Git](https://dzone.com/refcardz/getting-started-git) - [Oh shit, git!](https://ohshitgit.com) - [freecodecamp.org: Learn Git Fundamentals – A Handbook on Day-to-Day Development Tasks 🌟](https://www.freecodecamp.org/news/learn-git-basics) @@ -867,9 +867,9 @@ Automate them. - + - + diff --git a/docs/gitops.md b/docs/gitops.md index 823a5556..ad20f397 100644 --- a/docs/gitops.md +++ b/docs/gitops.md @@ -249,7 +249,7 @@ - [weave.works: Weave Kubernetes Platform (WKP) Unlocks Cross Team Collaboration with Workspaces](https://ambking1234.biz/?action=register&marketingRef=6788b227da9499f55f6ea745/blog/wkp-team-workspaces-rbac) - [blog.container-solutions.com: FluxCD, ArgoCD or Jenkins X: Which Is the Right GitOps Tool for You? 🌟](https://blog.container-solutions.com/fluxcd-argocd-jenkins-x-gitops-tools) - [cloudogu.com: Automation Assistants: GitOps tools in comparison 🌟](https://platform.cloudogu.com/en/blog/gitops-tools) -- [shipa.io: From Terraform to GitOps to Pulumi 🌟 [ARCHIVED]]( http://web.archive.org/web/20211020205037/https:/shipa.io/2021/10/from-terraform-to-gitops-to-pulumi) +- [shipa.io: From Terraform to GitOps to Pulumi 🌟 [ARCHIVED]]( http://web.archive.org/web/20211020205037/https://shipa.io/2021/10/from-terraform-to-gitops-to-pulumi) - [==vimeo.com: Weaveworks - Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps==](https://vimeo.com/516520492) One of the biggest advantages Kubernetes has to offer is that it is agnostic to infrastructure and capable of managing diverse workloads running on different compute resources. This allows organizations to manage multiple developer platforms, who can operate across many environments such as on premise, hybrid and multiple clouds. - Streamlined processes and automation is pivotal for operations when managing clusters at scale and maintaining security and policy checks. Paul Curtis, Principal Solutions Architect will demonstrate GitOps and Weave Kubernetes Platform in a hybrid and multi-cloud setup. - Learn how to: @@ -401,7 +401,7 @@ - + diff --git a/docs/golang.md b/docs/golang.md index 66c08746..e029df1a 100644 --- a/docs/golang.md +++ b/docs/golang.md @@ -161,9 +161,9 @@
- + - + diff --git a/docs/introduction.md b/docs/introduction.md index 5ccfa289..9c8162a5 100644 --- a/docs/introduction.md +++ b/docs/introduction.md @@ -68,7 +68,7 @@ - [thenewstack.io: Microservices vs. Monoliths: An Operational Comparison](https://thenewstack.io/microservices/microservices-vs-monoliths-an-operational-comparison) - [weave.works: 6 Business Benefits of Kubernetes](https://ambking1234.biz/?action=register&marketingRef=6788b227da9499f55f6ea745) - [ituser.es: Las principales habilidades que un arquitecto cloud necesita para triunfar](https://www.ituser.es/opinion/2020/07/las-principales-habilidades-que-un-arquitecto-cloud-necesita-para-triunfar) -- [Introducing Domain-Oriented Microservice Architecture 🌟 [ARCHIVED]]( http://web.archive.org/web/20220716010821/https:/eng.uber.com/microservice-architecture) +- [Introducing Domain-Oriented Microservice Architecture 🌟 [ARCHIVED]]( http://web.archive.org/web/20220716010821/https://eng.uber.com/microservice-architecture) - [Monolithic versus Microservice architecture](https://www.enterprisetimes.co.uk/2020/07/23/monolithic-versus-microservice-architecture) - [Modernize legacy applications with containers, microservices](https://www.techtarget.com/searchcloudcomputing/feature/Modernize-legacy-applications-with-containers-microservices) To break down monolithic apps and modernize them for cloud deployment, enterprise development teams continue to turn to containers and microservices. - [blog.heroku.com: Deconstructing Monolithic Applications into Services](https://www.heroku.com/blog/monolithic-applications-into-services) @@ -398,7 +398,7 @@ - [dotnetcurry.com: Microservices Architecture Pattern 🌟](https://www.dotnetcurry.com/microsoft-azure/microservices-architecture) - [geeksarray.com: Microservice Architecture Pattern for Architects 🌟](https://geeksarray.com/blog/microservice-architecture-pattern-for-architects) - [==developers.redhat.com: 5 design principles for microservices==](https://developers.redhat.com/articles/2022/01/11/5-design-principles-microservices) -- [==elastisys.com: Principles for Designing and Deploying Scalable Applications on Kubernetes== [ARCHIVED]]( http://web.archive.org/web/20251005184420/https:/elastisys.com/designing-and-deploying-scalable-applications-on-kubernetes) In this article, you will find 15 principles for how to design and deploy cloud-native applications on Kubernetes - for scalability, observability, automation & security. +- [==elastisys.com: Principles for Designing and Deploying Scalable Applications on Kubernetes== [ARCHIVED]]( http://web.archive.org/web/20251005184420/https://elastisys.com/designing-and-deploying-scalable-applications-on-kubernetes) In this article, you will find 15 principles for how to design and deploy cloud-native applications on Kubernetes - for scalability, observability, automation & security. - [simform.com: Microservices Design Principles: Do We Really Know It Well Enough? 🌟](https://www.simform.com/blog/microservices-design-principles) We are all well aware of microservices architecture, but do we know about its basic design principles and tenants that determine its implementation success? Read to find out more! - [javarevisited.blogspot.com: Top 10 Microservices Design Patterns and Principles - Examples](https://javarevisited.blogspot.com/2021/09/microservices-design-patterns-principles.html) 1. Database per Microservice @@ -671,7 +671,7 @@ - +
\ No newline at end of file diff --git a/docs/java_frameworks.md b/docs/java_frameworks.md index 7e386f20..3d714a6d 100644 --- a/docs/java_frameworks.md +++ b/docs/java_frameworks.md @@ -443,7 +443,7 @@ optimizing Enterprise Java for the microservices architecture. - +
diff --git a/docs/jenkins-alternatives.md b/docs/jenkins-alternatives.md index 33914594..9efb62ea 100644 --- a/docs/jenkins-alternatives.md +++ b/docs/jenkins-alternatives.md @@ -112,7 +112,7 @@ - [Awesome GitHub Actions](https://github.com/sdras/awesome-actions) - [yokawasa/action-setup-kube-tools](https://github.com/yokawasa/action-setup-kube-tools) A GitHub Action that setupKubernetes tools (kubectl, kustomize, helm, kubeval, conftest, yq) and cache them on the runner. It is like a typescriptversion of stefanprodan/kube-tools with no command input param, but it's very fast as it installs the tools asynchronously. - [summerwind/actions-runner-controller](https://github.com/actions/actions-runner-controller) This controller operatesself-hosted runners for GitHub Actions on your Kubernetes cluster. -- [towardsdatascience.com: Jenkins for CI Is Dead: Why Do People Hate It and What’s the Alternative? GitHub actions](https:/towardsdatascience.com/jenkins-for-ci-is-dead-why-do-people-hate-it-and-whats-the-alternative-8d8b6b88fdba) How toautomatically build your Docker images; a case study. +- [towardsdatascience.com: Jenkins for CI Is Dead: Why Do People Hate It and What’s the Alternative? GitHub actions](https://towardsdatascience.com/jenkins-for-ci-is-dead-why-do-people-hate-it-and-whats-the-alternative-8d8b6b88fdba) How toautomatically build your Docker images; a case study. ### Ketpn diff --git a/docs/jenkins.md b/docs/jenkins.md index 59c0cc66..f31ed821 100644 --- a/docs/jenkins.md +++ b/docs/jenkins.md @@ -767,11 +767,11 @@ jenkinsci CloudBees' advice is to use build tool features when possible (Maven/G
- + - + @@ -779,7 +779,7 @@ jenkinsci CloudBees' advice is to use build tool features when possible (Maven/G - + diff --git a/docs/kubernetes-networking.md b/docs/kubernetes-networking.md index 369e21e7..ad3e951d 100644 --- a/docs/kubernetes-networking.md +++ b/docs/kubernetes-networking.md @@ -438,7 +438,7 @@ Cilium allows users to specify an egress NAT policy - + diff --git a/docs/kubernetes-operators-controllers.md b/docs/kubernetes-operators-controllers.md index 9c5ec430..ff231b7c 100644 --- a/docs/kubernetes-operators-controllers.md +++ b/docs/kubernetes-operators-controllers.md @@ -253,7 +253,7 @@
- +
diff --git a/docs/kubernetes-security.md b/docs/kubernetes-security.md index 2918875a..6828db00 100644 --- a/docs/kubernetes-security.md +++ b/docs/kubernetes-security.md @@ -97,7 +97,7 @@ - [==goteleport.com: Kubernetes API Access Security Hardening==](https://goteleport.com/blog/kubernetes-api-access-security) - [infoworld.com: Securing the Kubernetes software supply chain with Microsoft's Ratify](https://www.infoworld.com/article/2271333/securing-the-kubernetes-software-supply-chain.html) Microsoft’s **Ratify** proposal adds a verification workflow to Kubernetes container deployment. The Ratify team has some demo code in their GitHub repository that shows how to use Ratify with Gatekeeper in Kubernetes. [Ratify installs using a Helm chart](https://github.com/notaryproject/ratify#quick-start), bringing along some sample configuration templates. - [amazicworld.com: Top 5 security threats unique to a Kubernetes and Cloud Native stack](https://amazicworld.com/top-5-security-threats-unique-to-a-kubernetes-and-cloud-native-stack) -- [==peoplactive.com: Kubernetes and Container Security Checklist to Build Secure Apps== [ARCHIVED]]( http://web.archive.org/web/20230528171702/https:/peoplactive.com/kubernetes-security-best-practices) +- [==peoplactive.com: Kubernetes and Container Security Checklist to Build Secure Apps== [ARCHIVED]]( http://web.archive.org/web/20230528171702/https://peoplactive.com/kubernetes-security-best-practices) - [venturebeat.com: Kubernetes security will have a breakout year in 2022](https://venturebeat.com/2021/12/27/kubernetes-security-will-have-a-breakout-year-in-2022) - [==medium: Comparing Kubernetes Security Frameworks and Guidance== 🌟](https://medium.com/@jonathan_37674/comparing-kubernetes-security-frameworks-and-guidance-f1c2821ea733) Comparing popular Kubernetes security and compliance frameworks, how they differ, when to use, common goals, and suggested tools. - [==blog.gitguardian.com: Hardening Your Kubernetes Cluster - Guidelines (Pt. 2)== 🌟](https://blog.gitguardian.com/hardening-your-k8s-pt-2) In this second episode, we will go through the NSA/CISA security recommendations and explain every piece of the guidelines. diff --git a/docs/kubernetes-storage.md b/docs/kubernetes-storage.md index 3ee023a9..96e99182 100644 --- a/docs/kubernetes-storage.md +++ b/docs/kubernetes-storage.md @@ -78,7 +78,7 @@ - [discoblocks.io 🌟](https://discoblocks.io) - [ondat/discoblocks](https://github.com/ondat/discoblocks) **Open Source declarative disk configuration system for Kubernetes.** Discoblocks is an open-source declarative disk configuration system for Kubernetes helping to automate CRUD (Create, Read, Update, Delete) operations for cloud disk device resources attached to Kubernetes cluster nodes. - [medium.com/geekculture: Storage | Kubernetes](https://medium.com/geekculture/storage-kubernetes-92eb3d027282) A Deep Dive into Kubernetes Storage - [itnext.io: Temporary Storage for Kubernetes Pods](https://itnext.io/temporary-storage-for-kubernetes-pods-f8330ad8db88) Or emptyDir vs. container File System. Kubernetes applications might need some temporary storage that could be discarded after a container is stopped/removed. In this article, you will compare emptyDir and the container's local storage. -- [==container-object-storage-interface.github.io: Kubernetes COSI== [ARCHIVED]]( http://web.archive.org/web/20250117155441/https:/container-object-storage-interface.github.io) Kubernetes Container Object Storage Interface (COSI) is a standard for exposing object storage to containerized workloads running in Kubernetes. COSI is meant to be a departure from the CSI since the latter does not work well with object storage. +- [==container-object-storage-interface.github.io: Kubernetes COSI== [ARCHIVED]]( http://web.archive.org/web/20250117155441/https://container-object-storage-interface.github.io) Kubernetes Container Object Storage Interface (COSI) is a standard for exposing object storage to containerized workloads running in Kubernetes. COSI is meant to be a departure from the CSI since the latter does not work well with object storage. - [medium.com/nerd-for-tech: Persistence with Kubernetes](https://medium.com/nerd-for-tech/persistence-with-kubernetes-46f039d9a2ad) - [cncf.io: Kubernetes storage is complex, but it’s getting better](https://www.cncf.io/blog/2023/03/28/kubernetes-storage-is-complex-but-its-getting-better) - [==yuminlee2.medium.com: Kubernetes: Storage==](https://yuminlee2.medium.com/kubernetes-storage-fe5363d88d42) **In Kubernetes, pods are temporary and any data stored within them is lost when they’re deleted or restarted. To avoid this, use persistent storage options such as PVs(Persistent Volumes)and PVCs(Persistent Volume Claims). PVs are storage resources with an independent lifecycle, while PVCs are requests for storage. Use them for simplified storage management and scaling. Provisioning persistent volumes can be static or dynamic. StorageClass defines the provisioner, parameters, and reclaim policy for dynamically provisioned PVs.** diff --git a/docs/kubernetes-troubleshooting.md b/docs/kubernetes-troubleshooting.md index 202cf06d..9b4e9396 100644 --- a/docs/kubernetes-troubleshooting.md +++ b/docs/kubernetes-troubleshooting.md @@ -43,7 +43,7 @@ - [thenewstack.io: 6 Kubernetes Best Practices to Empower Devs to Troubleshoot](https://thenewstack.io/6-kubernetes-best-practices-to-empower-devs-to-troubleshoot) - [youtube: 3 Ways to Detect Evil "Latest" Image Tags in Kubernetes - Kubevious](https://www.youtube.com/watch?v=93RlMqO4glM&t=6s&ab_channel=Kubevious) The "latest" image tag is a disaster waiting to happen. In this video, you will learn how to detect usage of the latest images using 3 different methods. - [thenewstack.io: Living with Kubernetes: Debug Clusters in 8 Commands 🌟](https://thenewstack.io/living-with-kubernetes-debug-clusters-in-8-commands) -- [dzone.com: The Three Pillars of Kubernetes Troubleshooting 🌟 [ARCHIVED]]( http://web.archive.org/web/20220309105258/https:/dzone.com/articles/the-three-pillars-of-kubernetes-troubleshooting) Diving into how the three pillars of understanding, managing and preventing for Kubernetes troubleshooting, and how it helps to conceive of what’s needed to be able to properly troubleshoot real-world Kubernetes stacks that are the hallmark of complex, distributed systems. +- [dzone.com: The Three Pillars of Kubernetes Troubleshooting 🌟 [ARCHIVED]]( http://web.archive.org/web/20220309105258/https://dzone.com/articles/the-three-pillars-of-kubernetes-troubleshooting) Diving into how the three pillars of understanding, managing and preventing for Kubernetes troubleshooting, and how it helps to conceive of what’s needed to be able to properly troubleshoot real-world Kubernetes stacks that are the hallmark of complex, distributed systems. - [freecodecamp.org: How to Simplify Kubernetes Troubleshooting](https://www.freecodecamp.org/news/how-to-simplify-kubernetes-troubleshooting) - [==itnext.io: Distroless Container Debugging on K8s/OpenShift==](https://itnext.io/distroless-container-debugging-on-k8s-openshift-e418fd66fdad) - When people focusing more on the security of containers, distroless based images are frequently used to reduce the attack surface. In these images, the package manager, the non-dependent modules or libraries, even the shells are stripped off, only the app and its required dependencies are kept. For the statically linked executable, produced by golang for example, we can even use “scratch” as the base. diff --git a/docs/kubernetes-tutorials.md b/docs/kubernetes-tutorials.md index 1459cb23..f81d275e 100644 --- a/docs/kubernetes-tutorials.md +++ b/docs/kubernetes-tutorials.md @@ -145,7 +145,7 @@ - + diff --git a/docs/kubernetes.md b/docs/kubernetes.md index 7fd6a88c..2b959312 100644 --- a/docs/kubernetes.md +++ b/docs/kubernetes.md @@ -617,7 +617,7 @@ - [Assess managed Kubernetes services for your workloads.](https://www.techtarget.com/searchcloudcomputing/tip/Weigh-the-pros-and-cons-of-managed-Kubernetes-services) Managed services from cloud providers can simplify Kubernetes deployment but create some snags in a multi-cloud model. Follow three steps to see if these services can benefit you. - [itnext.io: Evolution of PaaSes to Platform-as-Code in Kubernetes world](https://itnext.io/evolution-of-paases-to-platform-as-code-in-kubernetes-world-74464b0013ca) - [medium: Wordpress High Availability on Kubernetes](https://medium.com/@icheko/wordpress-high-availability-on-kubernetes-f6c0bcc2f28d) Wordpress is configured to support two separate ingress paths — a private for edits and a public for read-only traffic. By “read-only”, mean that Wordpress is only able to execute SELECTs on the DB. The HA MySQL cluster is accomplished using oracle’s mysql-operator. This makes it extremely easy to handle the master-slave replication for the DB side of things. -- [cloudfoundry.org: Deploy A Laravel Application To Kubernetes Using Cloud Foundry [ARCHIVED]]( http://web.archive.org/web/20230203230209/https:/www.cloudfoundry.org/blog/deploy-laravel-app-to-k8s-with-cf) This tutorial uses the Google Kubernetes Engine (GKE). However, the steps followed in this guide can be applied to Kubernetes clusters running on any cloud provider, as long as Cloud Foundry (cf-for-k8s) has been installed on it. Also, the series of install steps outlined here can function for any “composer” based PHP application such as Drupal, Symfony, etc. +- [cloudfoundry.org: Deploy A Laravel Application To Kubernetes Using Cloud Foundry [ARCHIVED]]( http://web.archive.org/web/20230203230209/https://www.cloudfoundry.org/blog/deploy-laravel-app-to-k8s-with-cf) This tutorial uses the Google Kubernetes Engine (GKE). However, the steps followed in this guide can be applied to Kubernetes clusters running on any cloud provider, as long as Cloud Foundry (cf-for-k8s) has been installed on it. Also, the series of install steps outlined here can function for any “composer” based PHP application such as Drupal, Symfony, etc. - [thenewstack.io: The State of Kubernetes: Key Challenges and the Role of AI](https://thenewstack.io/the-state-of-kubernetes-key-challenges-and-the-role-of-ai) - [learnsteps.com: Basics on Kubernetes: What exactly is a ReplicaSet](https://www.learnsteps.com/basics-on-kubernetes-what-exactly-is-a-replicaset) - [ithands-on.com: Kubernetes 101 : Switching namespaces](https://www.ithands-on.com/2021/10/kubernetes-101-switching-namespaces.html) @@ -894,7 +894,7 @@ - [medium: Kubernetes Multi-Tenancy — A Best Practices Guide 🌟](https://medium.com/faun/kubernetes-multi-tenancy-a-best-practices-guide-88e37ef2b709) - [vamsitalkstech.com: Kubernetes Multi-tenancy Best Practices & Architecture Model..(2/2)](https://www.vamsitalkstech.com/architecture/kubernetes-multitenancy-best-practices-architecture-models-2-2) - [loft.sh: Kubernetes Multi-Tenancy: Why Virtual Clusters Are The Best Solution](https://www.vcluster.com/blog/kubernetes-multi-tenancy-why-virtual-clusters-are-the-best-solution) -- [kubesphere.io: Kubernetes Multi-tenancy in KubeSphere [ARCHIVED]]( http://web.archive.org/web/20220120133734/https:/kubesphere.io/docs/access-control-and-account-management/multi-tenancy-in-kubesphere) +- [kubesphere.io: Kubernetes Multi-tenancy in KubeSphere [ARCHIVED]]( http://web.archive.org/web/20220120133734/https://kubesphere.io/docs/access-control-and-account-management/multi-tenancy-in-kubesphere) - [kubernetes.io: Three Tenancy Models For Kubernetes](https://kubernetes.io/blog/2021/04/15/three-tenancy-models-for-kubernetes) What are your tenancy options with Kubernetes? This post calls out three: by namespace, by cluster, by control plane. - [thenewstack.io: Avoiding the Pitfalls of Multitenancy in Kubernetes](https://thenewstack.io/avoiding-the-pitfalls-of-multitenancy-in-kubernetes) - [blog.sighup.io: Hierarchical Namespace Controller (HNC): a look into the future of Kubernetes Multitenancy](https://blog.sighup.io/an-introduction-to-hierarchical-namespace-controller-hnc) Hierarchical Namespace Controller (HNC) is bringing a better multi-tenancy model to Kubernetes. In this article we are exploring the current state of the project and useful use-cases. @@ -1235,7 +1235,7 @@ - OOM - [==medium.com/directeam: Kubernetes resources under the hood — Part 3== 🌟](https://medium.com/directeam/kubernetes-resources-under-the-hood-part-3-6ee7d6015965) **Kubernetes resources, breaking the limits! Understand the biggest Kubernetes misunderstanding and why you should remove your CPU limits and unleash your cluster's full potential** - [reddit.com/r/kubernetes: CPU Limits](https://www.reddit.com/r/kubernetes/comments/12he7aa/cpu_limits] -- [==gokatalyst.io: Katalyst: A QoS-based resource management system for workload colocation on kubernetes== 🌟](https:/gokatalyst.io/blog/2023/12/06/katalyst-a-qos-based-resource-management-system-for-workload-colocation-on-kubernetes) +- [==gokatalyst.io: Katalyst: A QoS-based resource management system for workload colocation on kubernetes== 🌟](https://gokatalyst.io/blog/2023/12/06/katalyst-a-qos-based-resource-management-system-for-workload-colocation-on-kubernetes) - [stormforge.io: Automated Kubernetes resource management for platform engineering teams to continuously rightsize workloads with HPA compatibility](https://stormforge.io) Stop Setting Kubernetes Requests and Limits. Let machine learning and automation do it for you. - [==medium.com/@mathieuces: How to calculate CPU for containers in k8s dynamically ?== 🌟](https://medium.com/@mathieuces/how-to-calculate-cpu-for-containers-in-k8s-dynamically-47a89e3886eb) **Learn how to dynamically calculate CPU for containers in Kubernetes using a strategy that optimizes resource allocation by considering average CPU usage and a safety coefficient** - [kondense 🌟](https://github.com/unagex/kondense) Kondense is an automated resource sizing tool. It runs as a sidecar in kubernetes pods. @@ -1893,9 +1893,9 @@ will dive into the details of how they work
- + - + @@ -1909,7 +1909,7 @@ will dive into the details of how they work - + @@ -1929,9 +1929,9 @@ will dive into the details of how they work
- + - + @@ -1959,7 +1959,7 @@ will dive into the details of how they work - + @@ -1967,11 +1967,11 @@ will dive into the details of how they work - + - + diff --git a/docs/lowcode-nocode.md b/docs/lowcode-nocode.md index 930b031e..d03119bd 100644 --- a/docs/lowcode-nocode.md +++ b/docs/lowcode-nocode.md @@ -1,7 +1,7 @@ # Low Code and No Code - [dzone: Top 10 Low-Code Articles](https://dzone.com/articles/top-10-low-code-articles) See the 10 most popular articles on Low-Code with topics covering Low-Code introduction, building an application with Low-Code, comparison with Microservices, a smack-down with pro-code, and more! -- [dzone: Low Code and No-Code Considerations [ARCHIVED]]( http://web.archive.org/web/20230406185531/https:/dzone.com/articles/low-code-and-no-code-considerations) +- [dzone: Low Code and No-Code Considerations [ARCHIVED]]( http://web.archive.org/web/20230406185531/https://dzone.com/articles/low-code-and-no-code-considerations) - [sdtimes.com: Low code cuts down on dev time, increases testing headaches](https://sdtimes.com/lowcode/low-code-cuts-down-on-dev-time-increases-testing-headaches) - [thenewstack.io: Use Low Code to Reduce Friction for Cloud Operations Teams](https://thenewstack.io/use-low-code-to-reduce-friction-for-cloud-operations-teams) - [itnext.io: For Developers the Low-Code Winter Is Coming](https://itnext.io/for-developers-the-low-code-winter-is-coming-76875d3606c0) Prepare for hard times or move to where the sun is shining diff --git a/docs/matrix-table.md b/docs/matrix-table.md index 144ed6d7..fc92a0e2 100644 --- a/docs/matrix-table.md +++ b/docs/matrix-table.md @@ -27,7 +27,7 @@ hide: | [Microk8s](https://canonical.com/microk8s)| Devel / IoT | Kubernetes Upstream | Virtual Machine | Yes | OSS | Yes (beta) | Yes | No | Yes | Yes | Ubuntu. It compites with k3s. | | [Pharos](https://k8spharos.dev)| SRE / DevOPs / IoT | Kubernetes Upstream | Multi Platform | Yes | OSS | Yes | Yes | No | Yes | Yes | Pharos is a vendor neutral community driven Kubernetes that works on any infrastructure at any scale. It works flawlessly on public clouds, private clouds, hybrid clouds, on-premises, bare metal or at the edge, no problem! | | [OKD](https://github.com/okd-community-install)| SRE / DevOps | OpenShift | Virtual Machine | Yes | OSS | Yes | Yes | No | Yes
(okd-community-install) | Yes
(okd-community-install) | okd-community-install is a standalone cluster
of 1 node valid for small projects. | -| [Minishift [ARCHIVED]]( http://web.archive.org/web/20211020230835/https:/www.okd.io/minishift)| Devel | OpenShift | Desktop Virtual Machine | Yes | OSS | No | Yes | No | No | Yes | OpenShift 3 official development environment. | +| [Minishift [ARCHIVED]]( http://web.archive.org/web/20211020230835/https://www.okd.io/minishift)| Devel | OpenShift | Desktop Virtual Machine | Yes | OSS | No | Yes | No | No | Yes | OpenShift 3 official development environment. | | [OCP 4 CodeReady Containers](https://www.redhat.com/en/technologies/cloud-computing/openshift/try-it)| Devel | OpenShift | Desktop Virtual Machine | Yes | OSS | No | Yes | No | No | Yes | OpenShift 4 official development environment | | [OCP 4 Public Cloud](https://www.redhat.com/en/technologies/cloud-computing/openshift/try-it)| SRE / DevOps | OpenShift | AWS, GCP, Azure | No | Yes | Yes | No | No | Yes | Yes | OpenShift in Public Cloud | | [OpenShift Dedicated](https://www.redhat.com/en/technologies/cloud-computing/openshift/try-it) | SRE / DevOps | OpenShift | AWS | No | Yes | Yes | No | No | Yes | Yes | OpenShift In AWS managed by Red Hat | diff --git a/docs/message-queue.md b/docs/message-queue.md index a0635b8b..57dd8c8a 100644 --- a/docs/message-queue.md +++ b/docs/message-queue.md @@ -258,7 +258,7 @@ comsysto about their usage of Debezium, touching on many details like outbox pat - [medium: Apache Kafka Startup Guide: System Design Architectures: Notification System, Web Activity Tracker, ELT Pipeline, Storage System 🌟](https://medium.com/swlh/apache-kafka-startup-guide-system-design-architectures-notification-system-web-activity-tracker-6dcaf0cf8a7) - [medium: Getting Started With Kafka on OpenShift](https://medium.com/swlh/getting-started-with-kafka-on-openshift-c44c0fdec384) - [containerjournal.com: Red Hat Platform Brings Kafka Closer to Kubernetes](https://cloudnativenow.com/topics/cloudnativeplatforms/red-hat-platform-brings-kafka-closer-to-kubernetes) -- [lightbend.com: Monitor Kafka Consumer Group Latency with Kafka Lag Exporter [ARCHIVED]]( http://web.archive.org/web/20241113105415/https:/www.lightbend.com/blog/monitor-kafka-consumer-group-latency-with-kafka-lag-exporter) +- [lightbend.com: Monitor Kafka Consumer Group Latency with Kafka Lag Exporter [ARCHIVED]]( http://web.archive.org/web/20241113105415/https://www.lightbend.com/blog/monitor-kafka-consumer-group-latency-with-kafka-lag-exporter) - [AKHQ (previously known as KafkaHQ) 🌟](https://github.com/tchiotludo/akhq) Kafka GUI for Apache Kafka to manage topics, topics data, consumers group, schema registry, connect and more... - [banzaicloud.com: Kafka Schema Registry on Kubernetes the declarative way](https://banzaicloud.com/blog/kafka-schemareg) - [Build a simple cloud-native change data capture pipeline](https://developers.redhat.com/blog/2020/07/02/build-a-simple-cloud-native-change-data-capture-pipeline) @@ -590,7 +590,7 @@ Red Hat AMQ 7|JBoss AMQ 7 (Broker) or Red Hat AMQ 7 Suite|Apache ActiveMQ Artemi - + diff --git a/docs/mkdocs.md b/docs/mkdocs.md index 845471f1..7cef3e7d 100644 --- a/docs/mkdocs.md +++ b/docs/mkdocs.md @@ -74,6 +74,6 @@
- +
diff --git a/docs/mlops.md b/docs/mlops.md index 8f4291bb..83cc95ea 100644 --- a/docs/mlops.md +++ b/docs/mlops.md @@ -257,9 +257,9 @@ - + - + diff --git a/docs/monitoring.md b/docs/monitoring.md index 7fc8d2a0..603726ca 100644 --- a/docs/monitoring.md +++ b/docs/monitoring.md @@ -89,7 +89,7 @@ - [thenewstack.io: Monitoring API Latencies After Releases: 4 Mistakes to Avoid](https://thenewstack.io/monitoring-api-latencies-after-releases-4-mistakes-to-avoid) Find 4 common mistakes engineers make when using histograms to monitor API latencies from release to release. - [thenewstack.io: Monitoring API Latencies After Releases: 4 Mistakes to Avoid](https://thenewstack.io/monitoring-api-latencies-after-releases-4-mistakes-to-avoid) - [thenewstack.io: DevOps Observability from Code to Cloud](https://thenewstack.io/devops-observability-from-code-to-cloud) -- [ortelius.io: Microservice Monitoring and Visualization with Ortelius open source project [ARCHIVED]]( http://web.archive.org/web/20260208074902/https:/ortelius.io/blog/2021/03/26/microservice-monitoring-and-visualization) +- [ortelius.io: Microservice Monitoring and Visualization with Ortelius open source project [ARCHIVED]]( http://web.archive.org/web/20260208074902/https://ortelius.io/blog/2021/03/26/microservice-monitoring-and-visualization) - [thenewstack.io: CI Observability for Effective Change Management 🌟](https://thenewstack.io/ci-observability-for-effective-change-management) - [thenewstack.io: Monitor Your Containers with Sysdig](https://thenewstack.io/monitor-your-containers-with-sysdig) - [thenewstack.io: Applying Basic vs. Advanced Monitoring Techniques](https://thenewstack.io/applying-basic-vs-advanced-monitoring-techniques) @@ -638,7 +638,7 @@ Resolve your software incidents 10x faster
- + @@ -650,7 +650,7 @@ Resolve your software incidents 10x faster - + diff --git a/docs/ocp3.md b/docs/ocp3.md index ad2e224c..b7deecbb 100644 --- a/docs/ocp3.md +++ b/docs/ocp3.md @@ -47,7 +47,7 @@ ## Debugging apps - [developers.redhat.com: Installing debugging tools into a Red Hat OpenShift container with **oc-inject**](https://developers.redhat.com/blog/2020/01/15installing-debugging-tools-into-a-red-hat-openshift-container-with-oc-inject) -- [developers.redhat.com: **Debugging applications** within Red Hat OpenShift containers](https:/developers.redhat.com/blog/2020/01/09debugging-applications-within-red-hat-openshift-containers/) +- [developers.redhat.com: **Debugging applications** within Red Hat OpenShift containers](https://developers.redhat.com/blog/2020/01/09debugging-applications-within-red-hat-openshift-containers/) ## Capacity Management @@ -55,7 +55,7 @@ - [blog.openshift.com/full-cluster-part-2-protecting-nodes](https://blog.openshift.comfull-cluster-part-2-protecting-nodes) - [full-cluster-part-3-capacity-management](https://blog.openshift.comfull-cluster-part-3-capacity-management) - [blog.openshift.comhow-full-is-my-cluster-part-4-right-sizing-pods-with-vertical-pod-autoscaler](https://blogopenshift.com/how-full-is-my-cluster-part-4-right-sizing-pods-with-vertical-pod-autoscaler) -- [blog.openshift.com/how-full-is-my-cluster-part-5-a-capacity-management-dashboard](https:/blog.openshift.com/how-full-is-my-cluster-part-5-a-capacity-management-dashboard/) +- [blog.openshift.com/how-full-is-my-cluster-part-5-a-capacity-management-dashboard](https://blog.openshift.com/how-full-is-my-cluster-part-5-a-capacity-management-dashboard/) ## OpenShift High Availability diff --git a/docs/openshift.md b/docs/openshift.md index 6c6ea873..6f371cd7 100644 --- a/docs/openshift.md +++ b/docs/openshift.md @@ -306,7 +306,7 @@ The other SCCs provide intermediate levels of constraint for various use cases. ### Rocket Chat -- [Deploying Rocket.Chat on OpenShift [ARCHIVED]]( http://web.archive.org/web/20191122111119/https:/rocket.chat/docs/installation/paas-deployments/openshift) +- [Deploying Rocket.Chat on OpenShift [ARCHIVED]]( http://web.archive.org/web/20191122111119/https://rocket.chat/docs/installation/paas-deployments/openshift) - [opensource.com: Why choose Rocket.Chat for your open source chat tool](https://opensource.com/article/22/1/rocketchat-data-privacy) ## IBM Cloud Paks and OpenShift diff --git a/docs/project-management-methodology.md b/docs/project-management-methodology.md index 982ad995..e586ff3a 100644 --- a/docs/project-management-methodology.md +++ b/docs/project-management-methodology.md @@ -280,7 +280,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -333,7 +333,7 @@ - +
\ No newline at end of file diff --git a/docs/project-management-tools.md b/docs/project-management-tools.md index 334f6e16..e5f20522 100644 --- a/docs/project-management-tools.md +++ b/docs/project-management-tools.md @@ -44,7 +44,7 @@ Jira and Bitbucket integration. Now you can transition issues right from your me ## Productivity Tips with .new TLD to quickly create - [Google Docs: doc.new](https://accounts.google.com/v3/signin/identifier?continue=https%3A%2F%2Fdocs.google.com%2Fdocument%2Fu%2F0%2Fcreate%3Fusp%3Ddot_new&dsh=S1328157413%3A1779046143757246&followup=https%3A%2F%2Fdocs.google.com%2Fdocument%2Fu%2F0%2Fcreate%3Fusp%3Ddot_new<mpl=docs&osid=1&passive=1209600&service=wise&flowName=WebLiteSignIn&flowEntry=ServiceLogin&ifkv=AWa2PasaQiQXmXb5iN1qZZsvtoOkhIgQoRWugSdY4-JVcpmeUs17j5clMIVQfi1xcpGGzFDWWEjvLg) -- [Google meet: meet.new](https://meet.google.com/unsupported?meetingCode=new&ref=https:/meet.google.com/new?authuser%3D0%26hs%3D178) +- [Google meet: meet.new](https://meet.google.com/unsupported?meetingCode=new&ref=https://meet.google.com/new?authuser%3D0%26hs%3D178) - [Spreadsheets: sheet.new](https://accounts.google.com/v3/signin/identifier?continue=https%3A%2F%2Fdocs.google.com%2Fspreadsheets%2Fu%2F0%2Fcreate%3Fusp%3Ddot_new&dsh=S-888283151%3A1779038836107039&followup=https%3A%2F%2Fdocs.google.com%2Fspreadsheets%2Fu%2F0%2Fcreate%3Fusp%3Ddot_new<mpl=sheets&osid=1&passive=1209600&service=wise&flowName=WebLiteSignIn&flowEntry=ServiceLogin&ifkv=AWa2PauoMa7lQWyxlGGmOlILKdc_0OGix3neZYVIl24vayGw0wGG0CrQxkizeIBOFWVtABpTKfaO) - [GH repos: repo.new](https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fnew) - [GH Gists: gist.new](https://gist.github.com/starred) diff --git a/docs/prometheus.md b/docs/prometheus.md index 207dd467..5441f704 100644 --- a/docs/prometheus.md +++ b/docs/prometheus.md @@ -52,7 +52,7 @@ - [Monitoring kubernetes with Prometheus](https://opensource.com/article/19/11/introduction-monitoring-prometheus) - [Ensure High Availability and Uptime With Kubernetes Horizontal Pod Autoscaler (HPA) and Prometheus](https://dzone.com/articles/ensure-high-availability-and-uptime-with-kubernete) - [Set Up and Integrate Prometheus With Grafana for Monitoring.](https://dzone.com/articles/monitoring-using-spring-boot-20-prometheus-and-gra) How to set up and configure Prometheus and Grafana to enable application performance monitoring for REST applications. -- [Prometheus vs. Graphite: Which Should You Choose for Time Series or Monitoring? [ARCHIVED]]( http://web.archive.org/web/20230605202857/https:/dzone.com/articles/prometheus-vs-graphite-which-should-you-choose-for) +- [Prometheus vs. Graphite: Which Should You Choose for Time Series or Monitoring? [ARCHIVED]]( http://web.archive.org/web/20230605202857/https://dzone.com/articles/prometheus-vs-graphite-which-should-you-choose-for) - [PromQL Tutorial](https://medium.com/@valyala/promql-tutorial-for-beginners-9ab455142085) - [How to use Ansible to set up system monitoring with Prometheus](https://opensource.com/article/18/3/how-use-ansible-set-system-monitoring-prometheus) - [Initial experiences with the Prometheus monitoring system](https://medium.com/@griggheo/initial-experiences-with-the-prometheus-monitoring-system-167054ac439c) @@ -320,7 +320,7 @@ Although it's exciting to see attempts to address the challenges of running Prom - [Telegraf Prometheus Output Plugin](https://github.com/influxdata/telegraf/tree/master/plugins/outputs/prometheus_client) - [Telegraf Ansible Role](https://github.com/rossmcdonald/telegraf) - [Grafana Dashboards with Telegraf Collectors](https://grafana.com/grafana/dashboards/?collector=Telegraf) -- [dzone: Synthetic Monitoring With Telegraf (white-box monitoring) [ARCHIVED]]( http://web.archive.org/web/20220927234147/https:/dzone.com/articles/synthetic-monitoring-with-telegraf) Monitoring based on metrics exposed by the internals of the system +- [dzone: Synthetic Monitoring With Telegraf (white-box monitoring) [ARCHIVED]]( http://web.archive.org/web/20220927234147/https://dzone.com/articles/synthetic-monitoring-with-telegraf) Monitoring based on metrics exposed by the internals of the system - [grafana.com: Using Telegraf plugins to visualize industrial IoT data with the Grafana Cloud Hosted Prometheus service](https://grafana.com/blog/2021/04/05/using-telegraf-plugins-to-visualize-industrial-iot-data-with-the-grafana-cloud-hosted-prometheus-service) - [sysadminxpert.com: How to Monitor Linux System with Grafana and Telegraf](https://sysadminxpert.com/monitor-linux-system-with-grafana-and-telegraf) - [influxdata.com: Three Ways to Keep Cardinality Under Control When Using Telegraf](https://www.influxdata.com/blog/three-ways-to-keep-cardinality-under-control-when-using-telegraf) @@ -809,9 +809,9 @@ JMeter|Artemis Grafana|Artemis Dashboard - + - + diff --git a/docs/public-cloud-solutions.md b/docs/public-cloud-solutions.md index 615ea6b0..2b6df8dc 100644 --- a/docs/public-cloud-solutions.md +++ b/docs/public-cloud-solutions.md @@ -134,6 +134,6 @@ - +
\ No newline at end of file diff --git a/docs/python.md b/docs/python.md index f03efbef..dadcbde3 100644 --- a/docs/python.md +++ b/docs/python.md @@ -82,7 +82,7 @@ - [reddit.com: Functions vs. Classes](https://www.reddit.com/r/learnpython/comments/40rieo/functions_vs_classes) - [Complexity of Python Operations](https://www.ics.uci.edu/~pattis/ICS-33/lectures/complexitypython.txt) - [reddit.com: Multiprocessing vs Threading?](https://www.reddit.com/r/learnpython/comments/418z8b/multiprocessing_vs_threading) - - [Python Threads and the Global Interpreter Lock [ARCHIVED]]( http://web.archive.org/web/20220504020411/http:/jessenoller.com/blog/2009/02/01/python-threads-and-the-global-interpreter-lock) + - [Python Threads and the Global Interpreter Lock [ARCHIVED]]( http://web.archive.org/web/20220504020411/http://jessenoller.com/blog/2009/02/01/python-threads-and-the-global-interpreter-lock) - [devbattles.com: Python list. Functions and Methods lists](http://www.devbattles.com/en/sand/post-1754-Python_list_Functions_and_Methods_lists) - [devbattles.com: Python: sorting lists by .sort () with - in simple words](http://www.devbattles.com/en/sand/post-1752-Python_sorting_lists_by_sort__with__in_simple_words) - [Create a GUI Application Using Qt and Python in Minutes: Example Web Browser](http://www.digitalpeer.com/blog/create-a-gui-application-using-qt-and-python-in-minutes-example-web-browser) @@ -374,7 +374,7 @@ ## Python and AWS - [Ansible and AWS: cloud IT automation management](http://cloudacademy.com/blog/ansible-aws) -- [Python and AWS Cookbook. Boto library [ARCHIVED]]( http://web.archive.org/web/20250908234802/https:/it-ebooks.info/book/542) +- [Python and AWS Cookbook. Boto library [ARCHIVED]]( http://web.archive.org/web/20250908234802/https://it-ebooks.info/book/542) - [Boto](https://github.com/boto/boto) - [Migrating to Boto3](https://aws.amazon.com/es/blogs/developer/migrating-to-boto3) - [Managing the Cloud with a Few Lines of Python (EuroPython 2014)](http://pyvideo.org/video/2987/managing-the-cloud-with-a-few-lines-of-python) @@ -459,7 +459,7 @@
- + @@ -468,7 +468,7 @@ - + diff --git a/docs/rancher.md b/docs/rancher.md index 315bfe8a..d619affd 100644 --- a/docs/rancher.md +++ b/docs/rancher.md @@ -110,7 +110,7 @@ - What's new with k3d v3 - Create a multi-server and multi-agent with k3s - How to replace the default CNI plugin of k3s -- [edgelab 🌟 (with k3s) [ARCHIVED]]( http://web.archive.org/web/20251027143124/https:/github.com/digitalrebar/edgelab) Materials to build and deploy a simple Edge Lab for demonstration, training and development +- [edgelab 🌟 (with k3s) [ARCHIVED]]( http://web.archive.org/web/20251027143124/https://github.com/digitalrebar/edgelab) Materials to build and deploy a simple Edge Lab for demonstration, training and development - [github.com/erebe/personal-server: Personal server configuration with k3s 🌟](https://github.com/erebe/personal-server) This document is going to describe how I manage my personal server in 2020. - [dev.to: All about k3s - Lightweight Kubernetes 🌟](https://dev.to/abhinavd26/all-about-k3s-lightweight-kubernetes-3ell) - [gabrieltanner.org: Setting up a HA Kubernetes cluster using K3S](https://gabrieltanner.org/blog/ha-kubernetes-cluster-using-k3s) In this article, you will set up your own high availability K3S cluster and create a basic Kubernetes deployment. The tutorial will show how to set up all the resources manually and you will learn how to automate it with the official Ansible script. diff --git a/docs/recruitment.md b/docs/recruitment.md index d8608cd0..95163da5 100644 --- a/docs/recruitment.md +++ b/docs/recruitment.md @@ -166,7 +166,7 @@ - +
@@ -190,7 +190,7 @@ - + @@ -200,9 +200,9 @@ - + - + @@ -256,7 +256,7 @@ - + @@ -274,13 +274,13 @@ - + - +
- + diff --git a/docs/serverless.md b/docs/serverless.md index f2390008..3f98367b 100644 --- a/docs/serverless.md +++ b/docs/serverless.md @@ -113,7 +113,7 @@ - [magalix.com: Implementing FaaS in Kubernetes Using Kubeless](https://www.magalix.com/blog/implementing-faas-in-kubernetes-using-kubeless) - [itnext.io: **arkade** by example — Kubernetes apps, the easy way 🌟](https://itnext.io/kubernetes-apps-the-easy-way-f06d9e5cad3c) - [xenonstack.com: Serverless Architecture with OpenFaaS and Java](https://www.xenonstack.com/blog/serverless-open-faas-java) -- [dzone: Getting Started with the OpenFaaS Kubernetes Operator on EKS 🌟 [ARCHIVED]]( http://web.archive.org/web/20230202080638/https:/dzone.com/articles/getting-started-with-the-openfaas-kubernetes-opera) +- [dzone: Getting Started with the OpenFaaS Kubernetes Operator on EKS 🌟 [ARCHIVED]]( http://web.archive.org/web/20230202080638/https://dzone.com/articles/getting-started-with-the-openfaas-kubernetes-opera) - [openfaas.com: Learn how to build functions faster using Rancher's kim and K3s](https://www.openfaas.com/blog/kim) Learn how the kim tool from Rancher can be used to build functions directly into a K3s cluster. ### OpenFunction @@ -185,7 +185,7 @@ - +
\ No newline at end of file diff --git a/docs/sre.md b/docs/sre.md index eaa3dbbd..b3306b65 100644 --- a/docs/sre.md +++ b/docs/sre.md @@ -144,7 +144,7 @@ - +
\ No newline at end of file diff --git a/docs/terraform.md b/docs/terraform.md index a34bc176..b83f0a49 100644 --- a/docs/terraform.md +++ b/docs/terraform.md @@ -143,7 +143,7 @@ - [terraform.io](https://developer.hashicorp.com/terraform) - [Terraform Registry - registry.terraform.io: Terraform Providers and Modules 🌟](https://registry.terraform.io) - [medium.com: Why should Terraform be one of your DevOps tools?](https://medium.com/devopslinks/why-should-terraform-be-one-of-your-devops-tools-29ae15861b1f) -- [Dzone: intro to terraform [ARCHIVED]]( http://web.archive.org/web/20230530000108/https:/dzone.com/articles/intro-to-terraform-way-of-infra-as-code) +- [Dzone: intro to terraform [ARCHIVED]]( http://web.archive.org/web/20230530000108/https://dzone.com/articles/intro-to-terraform-way-of-infra-as-code) - [blog.teemo.co: Terraform in 10 commands](https://blog.teemo.co/terraform-in-10-commands-e737dfd8bf31) - [udemy.com: Learn DevOps: Infrastructure Automation With Terraform](https://www.udemy.com/learn-devops-infrastructure-automation-with-terraform) - [terraform-infraestructura.readthedocs.io](https://terraform-infraestructura.readthedocs.io/es/latest) @@ -390,7 +390,7 @@ - [docs.gitlab.com: GitLab managed Terraform State 🌟](https://docs.gitlab.com/ee/user/infrastructure/terraform_state.html) Gitlab Terraform now share tfstate directly on gitlab. - [about.gitlab.com: How to use a push-based approach for GitOps with Terraform and AWS ECS and EC2](https://about.gitlab.com/blog/2021/08/10/how-to-agentless-gitops-aws) -- [squareops.com: Terraform CI/CD Pipelines with Gitlab [ARCHIVED]]( http://web.archive.org/web/20240724222526/https:/squareops.com/terraform-pipeline-with-gitlab) +- [squareops.com: Terraform CI/CD Pipelines with Gitlab [ARCHIVED]]( http://web.archive.org/web/20240724222526/https://squareops.com/terraform-pipeline-with-gitlab) ## Terraform Testing - [Terraform & OpenTofu Skill for AI Agents](https://github.com/antonbabenko/terraform-skill) 🌟 - A repository providing best-practices for Terraform and OpenTofu, designed to serve as a skill for AI coding agents. It covers testing strategies (native tests vs. Terratest), testing workflows (static, integration, E2E), module patterns, CI/CD workflows, and production infrastructure code. @@ -1195,7 +1195,7 @@

1/ Yesterday we released v2.1.0 of the @HashiCorp Terraform provider for @HelmPack with a cool new feature: diffs of the @kubernetesio manifests that Helm is sending to the cluster!

So, what does this look like? Let's see ...

— Phil, in the 🏜️ of Arizona (@PhilipSautter) April 2, 2021
-

This is very common. Terraform doesnt give workload portability. It gives workflow portability

By keeping the same workflow it improves adoption because it doesn’t matter if your managing EC2 or Pagerduty the same lang and tools work. It lowers switching costs through workflow https:/t.co/wSOZYjZMm3

— Justin Garrison (@rothgar) July 29, 2021
+

This is very common. Terraform doesnt give workload portability. It gives workflow portability

By keeping the same workflow it improves adoption because it doesn’t matter if your managing EC2 or Pagerduty the same lang and tools work. It lowers switching costs through workflow https://t.co/wSOZYjZMm3

— Justin Garrison (@rothgar) July 29, 2021

Unfortunately I think this is the biggest misconception that orgs have when deciding to adopt Terraform. It's "cloud agnostic" in the same way that Python is cloud agnostic. You still need vendor specific libraries. The only thing you standardize on is syntax and workflow

— Noah Mercado (@noah_mercado) July 29, 2021
diff --git a/docs/visual-studio.md b/docs/visual-studio.md index 634f4b3b..8e66e85d 100644 --- a/docs/visual-studio.md +++ b/docs/visual-studio.md @@ -383,7 +383,7 @@ A simple extension to make indentation more readable

Did you know, you can have project specific user settings in VS Code?

I certainly didn’t, but I needed to make some tweaks for a better live coding experience for workshop attendees.

Create a .vscode folder in your project then add settings.json in there.

Handy! pic.twitter.com/X3PbgwSVWp

— Andy Bell (@piccalilli_) December 10, 2020
-

Today's @code extension: Github Repositories

Browse and edit code from @Github without cloning. You can even review PRs!

It's kind of like https:/t.co/dqc8Luetlw, but for desktop VS Code#code2020 pic.twitter.com/ttVstg2HPO

— Matt Bierner (@mattbierner) September 16, 2021
+

Today's @code extension: Github Repositories

Browse and edit code from @Github without cloning. You can even review PRs!

It's kind of like https://t.co/dqc8Luetlw, but for desktop VS Code#code2020 pic.twitter.com/ttVstg2HPO

— Matt Bierner (@mattbierner) September 16, 2021

If I was forced to use closed source IDE for a paid job, I would go for JetBrains. They are far better than VSCode or anything else ever created. Of course, VIM is my first choice, but sometimes they or other team members are comfier with a professional tool.

— The Best Linux Blog In the Unixverse (@nixcraft) September 30, 2021
@@ -391,7 +391,7 @@ A simple extension to make indentation more readable

Did you know that #vscode has so called zen mode, that makes editor fullscreen and removes all the menus, so cool! pic.twitter.com/My5jelmLnU

— Jaka Hudoklin 🤖 5G: 100% (@offlinehacker) November 3, 2021
-

The brand new Visual Studio Code for the Web looks fantastic, and it's blazingly fast!

They say it is "a zero-install experience running entirely in your browser."

Your local environment has its days counted.https:/t.co/4XIKBANfxL pic.twitter.com/NElvgQq20F

— Santiago (@svpino) November 11, 2021
+

The brand new Visual Studio Code for the Web looks fantastic, and it's blazingly fast!

They say it is "a zero-install experience running entirely in your browser."

Your local environment has its days counted.https://t.co/4XIKBANfxL pic.twitter.com/NElvgQq20F

— Santiago (@svpino) November 11, 2021

Sometimes I do a bit of coding on my laptop where I don't have GitHub Copilot installed - and it becomes VERY clear how super productive that tool is making me.

Without comparison the best addition to VSCode I've tried!

— Simon Høiberg (@SimonHoiberg) November 20, 2021
diff --git a/repair_protocols.py b/repair_protocols.py new file mode 100644 index 00000000..0546f436 --- /dev/null +++ b/repair_protocols.py @@ -0,0 +1,37 @@ +import os +import re + +def fix_protocol(content): + # Fix broken https:/ to https:// and http:/ to http:// + # Careful not to fix cases where it's already correct (https://) + # The negative lookahead (?!/) ensures we only match single slashes + content = re.sub(r'(https?):/(?!/)', r'\1://', content) + return content + +print("Repairing broken protocols...") +for root, _, files in os.walk("docs"): + for f in files: + if f.endswith(".md"): + p = os.path.join(root, f) + with open(p, 'r') as file: + old_content = file.read() + + new_content = fix_protocol(old_content) + + if new_content != old_content: + with open(p, 'w') as file: + file.write(new_content) + print(f" [REPAIRED] {p}") + +print("Repairing inventory.yaml...") +inventory_path = "data/inventory.yaml" +if os.path.exists(inventory_path): + with open(inventory_path, 'r') as f: + content = f.read() + new_content = fix_protocol(content) + if new_content != content: + with open(inventory_path, 'w') as f: + f.write(new_content) + print(" [REPAIRED] inventory.yaml") + +print("Repair complete.") diff --git a/src/gemini_utils.py b/src/gemini_utils.py index b5c4b16e..715f749d 100644 --- a/src/gemini_utils.py +++ b/src/gemini_utils.py @@ -183,14 +183,12 @@ def clean_toc_text(text: str) -> str: def sanitize_trailing_slashes(url: str) -> str: """ Mandate 34: Enforces a ZERO trailing slash policy. - Collapses multiple slashes and removes any trailing slashes. + Removes ALL trailing slashes and question marks from the end of the URL. + Does NOT collapse slashes in the middle of the URL (to avoid breaking protocol or deep links). """ if not url or '://' not in url: return url - parts = url.split('://', 1) - # Collapse all multiple slashes in domain and path to one - parts[1] = re.sub(r'/{2,}', '/', parts[1]) - # Remove all trailing slashes and question marks - return f"{parts[0]}://{parts[1].rstrip('/').rstrip('?')}" + # Remove all trailing slashes and question marks from the end of the entire string + return url.rstrip('/').rstrip('?') def normalize_url(url: str) -> str: """