<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Alan Matheus on Medium]]></title>
        <description><![CDATA[Stories by Alan Matheus on Medium]]></description>
        <link>https://medium.com/@alanmatheus187?source=rss-655099a6e6eb------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*dQyrR9brm-YoIB36zWN6vg.jpeg</url>
            <title>Stories by Alan Matheus on Medium</title>
            <link>https://medium.com/@alanmatheus187?source=rss-655099a6e6eb------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 30 May 2026 09:13:26 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@alanmatheus187/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[What I Learned After Suffering a DoS Attack]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@alanmatheus187/what-i-learned-after-suffering-a-dos-attack-6b2dc442cd25?source=rss-655099a6e6eb------2"><img src="https://cdn-images-1.medium.com/max/1157/1*rC_EgmWsUIFPr2AJoOz5JQ.jpeg" width="1157"></a></p><p class="medium-feed-snippet">When I started my blog, ihateprogramming.com, I didn&#x2019;t expect it to become more than a small side project. I thought it would be a fun way&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/@alanmatheus187/what-i-learned-after-suffering-a-dos-attack-6b2dc442cd25?source=rss-655099a6e6eb------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@alanmatheus187/what-i-learned-after-suffering-a-dos-attack-6b2dc442cd25?source=rss-655099a6e6eb------2</link>
            <guid isPermaLink="false">https://medium.com/p/6b2dc442cd25</guid>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[development]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[hacking]]></category>
            <dc:creator><![CDATA[Alan Matheus]]></dc:creator>
            <pubDate>Fri, 30 Aug 2024 01:41:35 GMT</pubDate>
            <atom:updated>2024-08-30T01:41:35.701Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Discovering Virtual Threads in Java 21: A New Horizon for Concurrency]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@alanmatheus187/discovering-virtual-threads-in-java-21-a-new-horizon-for-concurrency-f1afe2b230bb?source=rss-655099a6e6eb------2"><img src="https://cdn-images-1.medium.com/max/1920/1*S0D7PeZvejZREXS43TCmyQ.png" width="1920"></a></p><p class="medium-feed-snippet">My article is open to everyone; non-member readers can click this link to read the full text.</p><p class="medium-feed-link"><a href="https://medium.com/@alanmatheus187/discovering-virtual-threads-in-java-21-a-new-horizon-for-concurrency-f1afe2b230bb?source=rss-655099a6e6eb------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@alanmatheus187/discovering-virtual-threads-in-java-21-a-new-horizon-for-concurrency-f1afe2b230bb?source=rss-655099a6e6eb------2</link>
            <guid isPermaLink="false">https://medium.com/p/f1afe2b230bb</guid>
            <category><![CDATA[java]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[software-engineering]]></category>
            <category><![CDATA[technology]]></category>
            <dc:creator><![CDATA[Alan Matheus]]></dc:creator>
            <pubDate>Sun, 21 Jul 2024 21:48:05 GMT</pubDate>
            <atom:updated>2024-07-22T02:13:11.996Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Improving Database Configuration Performance in a Spring Java Application]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@alanmatheus187/improving-database-configuration-performance-in-a-spring-java-application-3262b70c5006?source=rss-655099a6e6eb------2"><img src="https://cdn-images-1.medium.com/max/1920/1*MmOjlDJzEpXJpKFY_hzgig.png" width="1920"></a></p><p class="medium-feed-snippet">My article is open to everyone; non-member readers can click this link to read the full text.</p><p class="medium-feed-link"><a href="https://medium.com/@alanmatheus187/improving-database-configuration-performance-in-a-spring-java-application-3262b70c5006?source=rss-655099a6e6eb------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@alanmatheus187/improving-database-configuration-performance-in-a-spring-java-application-3262b70c5006?source=rss-655099a6e6eb------2</link>
            <guid isPermaLink="false">https://medium.com/p/3262b70c5006</guid>
            <category><![CDATA[java]]></category>
            <category><![CDATA[database-performance]]></category>
            <category><![CDATA[java21]]></category>
            <category><![CDATA[optimization]]></category>
            <category><![CDATA[spring]]></category>
            <dc:creator><![CDATA[Alan Matheus]]></dc:creator>
            <pubDate>Sat, 29 Jun 2024 21:47:07 GMT</pubDate>
            <atom:updated>2024-06-29T22:05:49.595Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Unleashing the Power of Java 21: Why and How to Migrate from Java 8]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@alanmatheus187/unleashing-the-power-of-java-21-why-and-how-to-migrate-from-java-8-f2fef0e645f1?source=rss-655099a6e6eb------2"><img src="https://cdn-images-1.medium.com/max/1024/1*dCqRMiJ89UjHyPu77iv6nQ.png" width="1024"></a></p><p class="medium-feed-snippet">Migrating from Java 8 to Java 21 isn&#x2019;t just about staying current&#x200A;&#x2014;&#x200A;it&#x2019;s about harnessing the latest advancements in performance, security&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/@alanmatheus187/unleashing-the-power-of-java-21-why-and-how-to-migrate-from-java-8-f2fef0e645f1?source=rss-655099a6e6eb------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@alanmatheus187/unleashing-the-power-of-java-21-why-and-how-to-migrate-from-java-8-f2fef0e645f1?source=rss-655099a6e6eb------2</link>
            <guid isPermaLink="false">https://medium.com/p/f2fef0e645f1</guid>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[java21]]></category>
            <category><![CDATA[java]]></category>
            <category><![CDATA[java8]]></category>
            <dc:creator><![CDATA[Alan Matheus]]></dc:creator>
            <pubDate>Tue, 18 Jun 2024 18:46:12 GMT</pubDate>
            <atom:updated>2024-06-18T18:46:12.516Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Complete Guide: Integrating Trivy into Your Development Pipeline with Jenkins]]></title>
            <link>https://medium.com/@alanmatheus187/complete-guide-integrating-trivy-into-your-development-pipeline-with-jenkins-b6daab929b46?source=rss-655099a6e6eb------2</link>
            <guid isPermaLink="false">https://medium.com/p/b6daab929b46</guid>
            <category><![CDATA[ci-cd-pipeline]]></category>
            <category><![CDATA[trivy]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[jenkins]]></category>
            <category><![CDATA[devops]]></category>
            <dc:creator><![CDATA[Alan Matheus]]></dc:creator>
            <pubDate>Sun, 16 Jun 2024 14:05:29 GMT</pubDate>
            <atom:updated>2024-06-16T14:05:29.303Z</atom:updated>
            <content:encoded><![CDATA[<p>Security is a top priority in any modern development pipeline. This practical guide shows you how to integrate Trivy, a powerful vulnerability scanning tool, into Jenkins. You will learn how to install Trivy, add a specific stage for its execution, and view detailed reports directly in the Jenkins console. Let’s get started!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*uPquLTVe7wgAD8rd" /><figcaption>Pipeline with trivy</figcaption></figure><h3>Prerequisites</h3><ul><li>Jenkins installed and configured</li><li>Docker installed on the Jenkins server</li><li>Administrator access to Jenkins</li></ul><h3>Step 1: Installing Trivy</h3><h3>Option 1: Installing Trivy on the Jenkins Executor</h3><p>To install Trivy directly on the Jenkins executor, follow these steps:</p><ol><li><strong>Access the Jenkins executor:</strong></li></ol><pre>ssh jenkins@your-server</pre><p>2. <strong>Install Trivy:</strong></p><pre>sudo apt-get install wget apt-transport-https gnupg lsb-release<br>wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -<br>echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/trivy.list<br>sudo apt-get update<br>sudo apt-get install trivy</pre><h3>Option 2: Adding Trivy to Docker Compose</h3><p>If you are using Docker Compose to manage your executors, add Trivy to your docker-compose.yml:</p><pre>version: &#39;3.8&#39;<br>services:<br>  jenkins:<br>    image: jenkins/jenkins:lts<br>    environment:<br>      - JAVA_OPTS=-Djenkins.install.runSetupWizard=false<br>    volumes:<br>      - jenkins_home:/var/jenkins_home<br>      - /var/run/docker.sock:/var/run/docker.sock<br>    ports:<br>      - &quot;8080:8080&quot;<br>      - &quot;50000:50000&quot;<br>    container_name: jenkins<br><br>  trivy:<br>    image: aquasec/trivy:latest<br>    volumes:<br>      - /var/run/docker.sock:/var/run/docker.sock<br>      - /path/to/cache:/root/.cache<br>    entrypoint: [&quot;trivy&quot;]</pre><h3>Option 3: Accessing the Docker Executable</h3><p>Access the Docker container locally:</p><pre>docker exec -it jenkins /bin/bash</pre><p>Install Trivy:</p><pre>apt-get update<br>apt-get install wget apt-transport-https gnupg lsb-release -y<br>wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | apt-key add -<br>echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | tee -a /etc/apt/sources.list.d/trivy.list<br>apt-get update<br>apt-get install trivy -y</pre><h3>Step 2: Adding Trivy to the Jenkinsfile</h3><p>Add a new stage to your Jenkinsfile to run Trivy. Here’s an example of how to do this:</p><pre>pipeline {<br>    agent any<br><br>    stages {<br>        stage(&#39;Build&#39;) {<br>            steps {<br>                // Your build stage here<br>            }<br>        }<br><br>        stage(&#39;Security Scan&#39;) {<br>            steps {<br>                script {<br>                    def trivyScan = sh(script: &#39;trivy -q -f json -o /var/lib/jenkins/reports/trivy-report.json your-image:tag&#39;, returnStdout: true).trim()<br>                    writeFile file: &#39;trivyScan.md&#39;, text: trivyScan<br>                }<br>            }<br>        }<br>    }<br>}</pre><h3>Step 3: Viewing the Results</h3><p>After the pipeline execution, you can view the Trivy results directly in the Jenkins console.</p><h3>Summary</h3><p>Integrating Trivy into your Jenkins pipeline enhances your security posture by identifying vulnerabilities early in the development process. With this guide, you have learned how to install Trivy, configure it in Jenkins, and visualize the results, making your development process more secure and reliable.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b6daab929b46" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>