<?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[Cloudnloud Tech Community - Medium]]></title>
        <description><![CDATA[cloud training - Medium]]></description>
        <link>https://medium.com/cloudnloud?source=rss----8c9e65d5bcaf---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>Cloudnloud Tech Community - Medium</title>
            <link>https://medium.com/cloudnloud?source=rss----8c9e65d5bcaf---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Fri, 13 Nov 2026 16:58:31 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/cloudnloud" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Unlocking the Power of .gitignore in Your DevOps Workflow]]></title>
            <link>https://medium.com/cloudnloud/unlocking-the-power-of-gitignore-in-your-devops-workflow-e32a288464e4?source=rss----8c9e65d5bcaf---4</link>
            <guid isPermaLink="false">https://medium.com/p/e32a288464e4</guid>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[learning-to-code]]></category>
            <category><![CDATA[git]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[github]]></category>
            <dc:creator><![CDATA[Srinivasan Baskaran]]></dc:creator>
            <pubDate>Mon, 25 Nov 2024 18:16:58 GMT</pubDate>
            <atom:updated>2024-11-25T18:16:58.259Z</atom:updated>
            <content:encoded><![CDATA[<h3>Unlocking the Power of .gitignore in Your DevOps Workflow</h3><p><strong>Prerequisite</strong>: Need fundamental scopes in program development and GIT essentials for better read experience for this article.</p><p>In the world of DevOps, maintaining a clean and efficient codebase is crucial. One essential tool that helps achieve this is the .gitignore file. But what exactly is a .gitignore file, and why is it so important?</p><h3>What is a .gitignore File?</h3><p>A .gitignore file is a simple text file that tells Git which files or directories to ignore in a project. This means that the files listed in a .gitignore will not be tracked by Git and won’t be included in commits.</p><h3>Why is .gitignore Needed in DevOps?</h3><p>In DevOps, it’s essential to ensure that your repository remains clean and efficient. The .gitignore file helps in:</p><ul><li><strong>Preventing Clutter</strong>: Avoid committing unnecessary files like temporary files, build artifacts, and system-specific files.</li><li><strong>Reducing Repository Size</strong>: By ignoring bulky files and directories, the overall repository size is minimized, making it easier to clone and manage.</li><li><strong>Enhancing Security</strong>: Sensitive information such as API keys, passwords, and configuration files can be excluded, reducing the risk of accidental exposure.</li></ul><h3>Use Cases for .gitignore</h3><ul><li><strong>Ignoring Build Artifacts</strong>: Compiled code, generated files, and build logs that don’t need to be version-controlled.</li><li><strong>Excluding Environment-Specific Files</strong>: Configuration files that vary across development, testing, and production environments.</li><li><strong>Omitting System Files</strong>: Files generated by the operating system, such as .DS_Store on macOS or Thumbs.db on Windows.</li><li><strong>Avoiding IDE-Specific Files</strong>: Project files and settings created by IDEs like Visual Studio, IntelliJ IDEA, or Eclipse.</li></ul><h3>Notation Examples for .gitignore</h3><p><strong>Ignoring Specific Files</strong>:</p><pre>secret.txt</pre><p>This will ignore secret.txt in the repository&#39;s root directory.</p><p><strong>Ignoring All Files with a Specific Extension</strong>:</p><pre>*.log</pre><p>This will ignore all files with the .log extension.</p><p><strong>Ignoring temporary Files in All Subdirectories</strong>:</p><pre>**/temp/*</pre><p>This will ignore temp directories and their contents in all subdirectories.</p><p><strong>Negating a Pattern</strong>:</p><pre>*.log<br>!important.log</pre><p>This will ignore all .log files except important.log.</p><p><strong>Ignoring Build Artifacts</strong>:</p><pre>/build<br>/dist<br>*.log</pre><p>This will ignore all changes to build or distributable or any log files.</p><p><strong>Avoiding IDE-Specific Files</strong>:</p><pre>.vscode/<br>.idea/<br>*.suo</pre><p>Using the .gitignore file effectively can streamline your DevOps process, making it more efficient and secure. Whether you&#39;re a beginner or a seasoned developer, mastering .gitignore is a valuable skill.</p><p>Ready to take your DevOps game to the next level? Implement these tips and see the difference!</p><p>That’s it, thank you for reading.</p><p><strong>I am happy to share this article to help you explore new updates, do follow </strong><a href="https://medium.com/bsrinivasancbe"><strong>me</strong></a><strong>, and click the clap 👏 button below to show your valuable support.</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e32a288464e4" width="1" height="1" alt=""><hr><p><a href="https://medium.com/cloudnloud/unlocking-the-power-of-gitignore-in-your-devops-workflow-e32a288464e4">Unlocking the Power of .gitignore in Your DevOps Workflow</a> was originally published in <a href="https://medium.com/cloudnloud">Cloudnloud Tech Community</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Build Your Own SonarQube Docker Image for Effortless Static Code Analysis!]]></title>
            <link>https://medium.com/cloudnloud/create-your-own-sonarqube-docker-image-for-static-analysis-cf126054a33d?source=rss----8c9e65d5bcaf---4</link>
            <guid isPermaLink="false">https://medium.com/p/cf126054a33d</guid>
            <category><![CDATA[training]]></category>
            <category><![CDATA[learning]]></category>
            <category><![CDATA[devsecops]]></category>
            <category><![CDATA[sonarqube]]></category>
            <category><![CDATA[devops]]></category>
            <dc:creator><![CDATA[Srinivasan Baskaran]]></dc:creator>
            <pubDate>Thu, 21 Nov 2024 09:52:22 GMT</pubDate>
            <atom:updated>2024-11-21T09:55:02.909Z</atom:updated>
            <content:encoded><![CDATA[<p><strong>Prerequisite</strong>: Prepare the <strong><em>Ubuntu Azure VM and Docker installation</em></strong>, please refer to my earlier article for step-by-step instruction: <a href="https://lnkd.in/gPSSURGa">https://lnkd.in/gPSSURGa</a></p><p>Few of my reference to earlier medium.com article on Docker is shared here below, in case you want to brush your ideas around, here is the references for the same</p><p>1. <a href="https://lnkd.in/gvvA7car">https://lnkd.in/gvvA7car</a></p><p>2. <a href="https://lnkd.in/gkZ7gKuz">https://lnkd.in/gkZ7gKuz</a></p><p>3. <a href="https://lnkd.in/ghkp-6VS">https://lnkd.in/ghkp-6VS</a></p><p>So, it&#39;s by now we have the basic setup to start creating the images for the SonarQube/PostrgreSQL using Docker Compose.</p><p>Here is the Ubuntu VM created in Azure Cloud</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*L7e3Itk29SCYfRJrYTINNw.png" /></figure><p>The first thing to do before logging to the VM, enable the port <strong>9000 </strong>open in this machine as this is the <strong>default port for SonarQube.</strong></p><p>Go into the VM, navigate to the <em>Network settings</em> sub tab under <strong><em>Networking</em></strong> tab section and ensure to add the <em>inbound port</em> as shown below</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*qo3iWsKEuewJr0fwx3H7Ow.png" /></figure><p>Logged into the VM using SSH mode</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/584/1*ohEiHj5jlHd82axbKh2rRA.png" /></figure><p>The Ubuntu machine is updated and installed with <strong>Docker </strong>and <strong>Vi editor</strong> for action (detailed steps are mentioned as per the link shared in prerequisite during the start of this article) and docker installation is confirmed by following command</p><pre>sudo docker --version</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/464/1*lzXJPdopF_oLkTvmcuvH5Q.png" /></figure><p>Following configuration details or line is needed and updated to the end of the file <strong>/etc/sysctl.conf</strong> in superuser mode</p><pre>vm.max_map_count=262144<br>fs.file-max=65536</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/327/1*X1KJ7Ue0WHlPYKnFM4UzRg.png" /></figure><p>To have the configuration changes to apply immediately without need to restart the machine execute this command as below</p><pre>sudo sysctl -p</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/428/1*CQJgo-rp0a16TIJsCQkmZw.png" /></figure><p>Now let update the system once again and install the docker compose now as below</p><pre>sudo apt-get update -y<br>sudo apt-get install docker-compose -y</pre><p>Let&#39;s confirm the installation of docker compose with following command</p><pre>sudo docker-compose --version</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/697/1*nhx0qqY7VvXaRTirVE01Og.png" /></figure><p>Create the <strong>docker-compose.yml</strong> file with following YAML for creating the images for <strong><em>SonarQube and PostgreSQL</em></strong></p><pre>version: &quot;3&quot;<br>services:<br>  sonarqube:<br>    image: sonarqube:community<br>    restart: unless-stopped<br>    depends_on:<br>      - db<br>    environment:<br>      SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar<br>      SONAR_JDBC_USERNAME: sonar<br>      SONAR_JDBC_PASSWORD: sonar<br>    volumes:<br>      - sonarqube_data:/opt/sonarqube/data<br>      - sonarqube_extensions:/opt/sonarqube/extensions<br>      - sonarqube_logs:/opt/sonarqube/logs<br>    ports:<br>      - &quot;9000:9000&quot;<br>  db:<br>    image: postgres:12<br>    restart: unless-stopped<br>    environment:<br>      POSTGRES_USER: sonar<br>      POSTGRES_PASSWORD: sonar<br>    volumes:<br>      - postgresql:/var/lib/postgresql<br>      - postgresql_data:/var/lib/postgresql/data<br>volumes:<br>  sonarqube_data:<br>  sonarqube_extensions:<br>  sonarqube_logs:<br>  postgresql:<br>  postgresql_data:</pre><p>Use this command to create a file in Vi editor</p><pre>vi docker-compose.yml</pre><p>In the <strong>Vi editor</strong>, use <strong>Esc </strong>to change to command mode, type <strong>:wq</strong> to save and exit the editor and ensure the content is saved using <strong>cat </strong>command as shown below</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/477/1*EdHDa2DFB48cD1M1op_FVA.png" /></figure><p>Execute this command to create the <em>images for SonarQube and PostgreSQL in a detached mode</em>, meaning it will be running in the background by returning to the prompt immediately</p><pre>sudo docker-compose up -d</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/514/1*9ObGfTij3c_q-08xy8ppbQ.png" /></figure><p>Execute the docker-compose log to see the service is active with this command</p><pre>sudo docker-compose logs --follow</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rT5ULxZn90bFUcwGVWeIsw.png" /></figure><p>Now use the <strong><em>public ip</em></strong> of the machine and with <strong><em>port 9000</em></strong> access the SonarQube GUI from the browser client</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Yxgie5cHg5u2G11bJsw_Mw.png" /></figure><p>Login with default username &amp; password (‘<em>admin’ </em>for both) and then try resetting it once logged in for first time</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/522/1*-wHi89Y04NG69cumH7rS0Q.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/480/1*1kKzbyi8A4qHeM0RlvC1Bw.png" /></figure><p>Now we have successfully launched the instance for Sonarqube and its time to integrate or use for static code analysis for the projects in completed stage.</p><p>That’s it, thank you for reading.</p><p><strong>I am happy to share this article to help you explore new updates, do follow </strong><a href="https://medium.com/bsrinivasancbe"><strong>me</strong></a><strong>, and click the clap 👏 button below to show your valuable support.</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=cf126054a33d" width="1" height="1" alt=""><hr><p><a href="https://medium.com/cloudnloud/create-your-own-sonarqube-docker-image-for-static-analysis-cf126054a33d">Build Your Own SonarQube Docker Image for Effortless Static Code Analysis!</a> was originally published in <a href="https://medium.com/cloudnloud">Cloudnloud Tech Community</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Create a .NET Core MVC Web Project from Scratch]]></title>
            <link>https://medium.com/cloudnloud/how-to-create-a-net-core-mvc-web-project-from-scratch-814bfc4f1947?source=rss----8c9e65d5bcaf---4</link>
            <guid isPermaLink="false">https://medium.com/p/814bfc4f1947</guid>
            <category><![CDATA[learning]]></category>
            <category><![CDATA[development]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[developer]]></category>
            <category><![CDATA[training]]></category>
            <dc:creator><![CDATA[Srinivasan Baskaran]]></dc:creator>
            <pubDate>Wed, 13 Nov 2024 17:19:34 GMT</pubDate>
            <atom:updated>2026-10-17T21:26:44.167Z</atom:updated>
            <content:encoded><![CDATA[<h3>How to Create a .NET Core MVC Web Project from Scratch</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*TefGpq4s6spBP97QtMrUMg.png" /></figure><p><strong>Pre-requisites</strong>: Ensure you have the latest .NET Core software installed on your local Windows machine, a basic understanding of the Windows environment, and fundamental programming knowledge.</p><p>Quick Link for .NET Core Download: <a href="https://dotnet.microsoft.com/en-us/download">Download .NET (Linux, macOS, and Windows)</a></p><p>In this article, I will guide you through the steps needed to create your first .NET Core web project in less than 5 minutes, without the need for lengthy video tutorials or extensive reading.</p><p>I will cover each step to help you get your web project running locally on your Windows machine.</p><p>Let’s begin by logging into your Windows machine and opening the command prompt. For this example, I prefer using the F: drive, which I keep clean for research and learning purposes:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/804/1*3tavPDTa-Yw8tNegy6xSHA.png" /></figure><p>Let&#39;s execute the MS-DOS command below to see if anything out there in this drive by chance</p><pre>dir</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/468/1*kpFYmVt2CixU5iQYnCSkug.png" /></figure><p>There is no file or any content out there and now let&#39;s create the new folder for our new Web Project by executing the below MS-DOS command</p><pre>mkdir DotnetCoreWebApp</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/637/1*gDAle_cMeKHkTzg9vXqaGQ.png" /></figure><p>Move into the new folder or directory that we created in the above steps as the first action in making our web project solution by executing the below MS-DOS command</p><pre>cd DotnetCoreWebApp</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/505/1*-Ki5T2LKw1Ukfdbz60MrMA.png" /></figure><p>To begin with, Dotnet core, let&#39;s create our first Dotnet solution template that holds all the related projects inside it for easy management with the following commands</p><pre>dotnet new sln -o DotnetCoreMyFirstWebSln</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/812/1*Rrm7o1Gb2amqtuRpBd_vHQ.png" /></figure><p>Now let&#39;s kick start the creation of the MVC web project with the execution of the following command</p><pre>dotnet new mvc -n HelloworldApp.web</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vMgwqXuMkWkIOMnftJxDKw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/1*v1dX3ZRHxEtnex7cOD6HoA.png" /></figure><p>This output confirms the creation of our first MVC web project as a folder structure as highlighted above. Since the project was created separately we need to associate it with the solution file for the bind.</p><p>Let&#39;s add the newly created web project with the solution file as created in earlier steps by executing the following command</p><pre>dotnet sln DotnetCoreMyFirstWebSln add ./HelloworldApp.web/HelloworldApp.web.csproj</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ztgwZ_S5x57dbK-c5HWttw.png" /></figure><p>It is time to compile and build the files by executing the following command as below</p><pre>dotnet build HelloworldApp.web</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*qmJk1HUhXEN_H48fAddmTg.png" /></figure><p>The project was compiled successfully, and please note we have not written any <strong>Dot net program code</strong> assuming we don&#39;t even know how to write our first Dot net core web project. Let&#39;s check a few things after the project compilation by navigating to this folder below</p><pre>cd HelloworldApp.web/bin/debug/net8.0</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/937/1*DpeV4k88ZmLAsyd2IU7abQ.png" /></figure><p><strong>.dll</strong> file was created on building the project, this is the actual executable needed to execute the dot net mvc web application. Navigate back to the Project folder by executing the below command</p><pre>cd ../../../</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/724/1*9f_GZAmF1cRBSnqmQeXWlA.png" /></figure><p>It is time to execute the generated DLL to see our first website project in action as below</p><pre>dotnet ./bin/debug/net8.0/HelloworldApp.web.dll</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/875/1*VvArc2ovZY9yVO-6LsET5g.png" /></figure><p>Copy the URL as shown above and paste it into the address bar of the web browser to see the website running at the backside</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*c6kQCIUU3BHxs765pUV2Zw.png" /></figure><p>Go back to the command prompt window, and press <strong>Ctrl + C</strong> to exit from the running mode to return to the prompt.</p><p>Hurray our first Dotnet MVC web project has been successfully launched locally on our Windows machine.</p><p><strong>Note</strong>: Alternatively, you can use the VSCode editor for writing your own application without the command line tool shown above. (Download Link: 1. <strong>ARM64</strong>: <a href="https://code.visualstudio.com/download">Download Visual Studio Code — Mac, Linux, Windows</a>, 2. <strong>X64</strong>: <a href="https://code.visualstudio.com/docs/setup/windows#_install-vs-code-on-windows">Visual Studio Code on Windows</a>)</p><p>That’s it, thank you for reading.</p><p><strong>I am happy to share this article to help you explore new updates, do follow </strong><a href="https://medium.com/bsrinivasancbe"><strong>me</strong></a><strong>, and click the clap 👏 button below to show your valuable support.</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=814bfc4f1947" width="1" height="1" alt=""><hr><p><a href="https://medium.com/cloudnloud/how-to-create-a-net-core-mvc-web-project-from-scratch-814bfc4f1947">How to Create a .NET Core MVC Web Project from Scratch</a> was originally published in <a href="https://medium.com/cloudnloud">Cloudnloud Tech Community</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[SonarQube: Ensuring Code Quality and Security]]></title>
            <link>https://medium.com/cloudnloud/sonarqube-ensuring-code-quality-and-security-d038d95a2537?source=rss----8c9e65d5bcaf---4</link>
            <guid isPermaLink="false">https://medium.com/p/d038d95a2537</guid>
            <category><![CDATA[sonarqube]]></category>
            <category><![CDATA[code-quality]]></category>
            <category><![CDATA[software-testing]]></category>
            <category><![CDATA[devops-tool]]></category>
            <category><![CDATA[coding]]></category>
            <dc:creator><![CDATA[Srinivasan Baskaran]]></dc:creator>
            <pubDate>Sun, 10 Nov 2024 11:05:29 GMT</pubDate>
            <atom:updated>2024-11-10T11:41:45.901Z</atom:updated>
            <content:encoded><![CDATA[<p>SonarQube is an open-source platform developed by SonarSource for continuous inspection of code quality. It performs automatic code reviews to detect bugs, code smells, and security vulnerabilities in your code. SonarQube supports various programming languages, making it a versatile tool for maintaining code standards and improving software quality across multiple projects.</p><p>It supports 30+ major programming languages ​​with various plugins. SonarQube is developed using the Java programming language. SonarQube provides integration with various build tools such as Maven, Ant, Gradle, MSBuild, and continuous integration (Azure DevOps, Atlassian Bamboo, Jenkins, Hudson, AWS), etc.</p><h3><strong>What is SonarQube?</strong></h3><p>SonarQube is essentially a code quality management platform that provides detailed insights into the health of your codebase. It offers a plethora of features, including:</p><ul><li><strong>Static Code Analysis</strong>: Scans your code for potential issues.</li><li><strong>Code Metrics</strong>: Measures code complexity, duplication, and test coverage.</li><li><strong>Security Vulnerability Detection</strong>: Identifies security risks in your code.</li><li><strong>Code Smell Detection</strong>: Highlights areas of the code that need refactoring.</li></ul><h3>How Does SonarQube Work?</h3><p>SonarQube analyzes source code through a process called static analysis. Here’s how it works:</p><ul><li><strong>Code Scan</strong>: The source code is scanned using SonarQube’s extensive ruleset.</li><li><strong>Issue Detection</strong>: The scanner identifies bugs, code smells, and security vulnerabilities.</li><li><strong>Metrics Calculation</strong>: Calculates various metrics like code complexity, lines of code, duplications, and test coverage.</li><li><strong>Results Storage</strong>: The results are stored in a database for historical tracking and trend analysis.</li><li><strong>Reporting</strong>: Generates detailed reports that help developers and teams understand the issues and trends in their code.</li></ul><h3><strong>When to Use SonarQube?</strong></h3><p>SonarQube can be used at various stages of software development:</p><ul><li><strong>During Development</strong>: Integrate with IDEs to get real-time feedback.</li><li><strong>Code Review</strong>: Use in pull request analysis to ensure new code meets quality standards.</li><li><strong>Continuous Integration</strong>: Integrate with CI/CD pipelines to automatically analyze code on every build.</li><li><strong>Security Audits</strong>: Regular scans to ensure no security vulnerabilities are present in the codebase.</li></ul><h3>Benefits Compared to Other Tools</h3><p>SonarQube offers several benefits compared to other code quality tools:</p><ul><li><strong>Comprehensive Analysis</strong>: Covers a wide range of programming languages and quality issues.</li><li><strong>Customizability</strong>: Allows custom rules, profiles, and plugins to suit specific project needs.</li><li><strong>Integration</strong>: Seamlessly integrates with various CI/CD tools and version control systems.</li><li><strong>Open Source</strong>: Free to use with a large community for support and plugins.</li><li><strong>Historical Tracking</strong>: Keeps a historical record of code quality metrics and issues.</li></ul><h3>Pros and Cons</h3><p><strong>Pros:</strong></p><ul><li>Supports multiple languages</li><li>Extensive rule set for code quality and security</li><li>Integrates with CI/CD pipelines</li><li>Customizable quality profiles</li><li>Detailed reports and dashboards</li></ul><p><strong>Cons</strong>:</p><ul><li>Initial setup and configuration can be complex</li><li>Resource-intensive for large projects</li><li>The learning curve for new users</li></ul><h3>Conclusion</h3><p>SonarQube is a powerful tool for ensuring code quality and security. Its ability to integrate seamlessly with various CI/CD tools, including Azure DevOps, makes it an essential tool for modern software development. Whether you’re a small team or a large enterprise, SonarQube offers the flexibility and features needed to maintain high code standards.</p><p>That’s it, thank you for reading.</p><p><strong>I am happy to share this article to help you explore new updates, do follow </strong><a href="https://medium.com/bsrinivasancbe"><strong>me</strong></a><strong>, and click the clap 👏 button below to show your valuable support.</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d038d95a2537" width="1" height="1" alt=""><hr><p><a href="https://medium.com/cloudnloud/sonarqube-ensuring-code-quality-and-security-d038d95a2537">SonarQube: Ensuring Code Quality and Security</a> was originally published in <a href="https://medium.com/cloudnloud">Cloudnloud Tech Community</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Unlocking MongoDB Deployment with Docker Compose and Mongo Express]]></title>
            <link>https://medium.com/cloudnloud/unlocking-mongodb-deployment-with-docker-compose-and-mongo-express-d0ca4ef3bb82?source=rss----8c9e65d5bcaf---4</link>
            <guid isPermaLink="false">https://medium.com/p/d0ca4ef3bb82</guid>
            <category><![CDATA[yaml]]></category>
            <category><![CDATA[containers]]></category>
            <category><![CDATA[docker-compose]]></category>
            <category><![CDATA[docker]]></category>
            <category><![CDATA[automation]]></category>
            <dc:creator><![CDATA[Srinivasan Baskaran]]></dc:creator>
            <pubDate>Sat, 27 Jul 2024 17:13:15 GMT</pubDate>
            <atom:updated>2024-07-27T17:13:15.469Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wlag8IHcAIGTL_OxVO1kCA.jpeg" /></figure><p>Let’s break down the steps for setting up MongoDB and Mongo Express application pairs using Docker Compose with fewer Docker CLI commands.</p><blockquote><strong>Pre-requisite</strong><em>: Working knowledge of Docker, YAML. Installation of Docker, VIM editor in Ubuntu machines to continue with Docker Compose</em></blockquote><h4>Install Docker Compose:</h4><p>Execute the following command to install Docker Compose:</p><pre>sudo apt-get install docker-compose -y</pre><p>Docker Compose simplifies managing multiple containers and configurations.</p><h4>Create a Docker Compose File (mongo.yaml):</h4><p>Create a file named mongo.yaml with the following content:</p><pre>version: &#39;3&#39;<br>services:<br>  mongodb:<br>    image: mongo<br>    ports:<br>      - 27017:27017<br>    environment:<br>      - MONGO_INITDB_ROOT_USERNAME=admin<br>      - MONGO_INITDB_ROOT_PASSWORD=password<br>  mongo-express:<br>    image: mongo-express<br>    ports:<br>      - 8081:8081<br>    environment:<br>      - ME_CONFIG_MONGODB_ADMINUSERNAME=admin<br>      - ME_CONFIG_MONGODB_ADMINPASSWORD=password<br>      - ME_CONFIG_MONGODB_SERVER=mongodb<br>    depends_on:<br>      - &quot;mongodb&quot;</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/635/1*SFeD6CfQi4puiOKy6BnfcA.jpeg" /></figure><ul><li>This YAML file defines two services: <strong><em>mongoDB and mongo-express</em></strong>.</li></ul><h4>Create MongoDB and Mongo Express Containers:</h4><p>Execute the following command to start the containers:</p><pre>sudo docker-compose -f mongo.yaml up</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/927/1*EZSxqnBb7h9Sa9yhh7LKWg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*uJ8aTKw1iZK3HllmdDssfA.jpeg" /></figure><h3>Access Mongo Express Web Interface:</h3><p>Open your web browser and visit:</p><pre>http://20.163.193.220:8081</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/1*tfXmBpgU8W6-GNVSojRfSQ.jpeg" /></figure><p>Authenticate using the username “admin” and the password you set earlier.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1016/1*3QfpkKe36ZldtRmZyqAO5Q.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hSAczNmc42mSUMgoXOF1Ew.jpeg" /></figure><p><strong>Note</strong>: Once the task is done, press Ctrl+C to stop the containers and return to the prompt.</p><h4>View Container Status:</h4><p>Check the status of all containers (including stopped ones):</p><pre>sudo docker ps -a</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*73AMcm2zc2ywFOH7IE_BSw.jpeg" /></figure><h4>Run Containers in Detached Mode:</h4><p>Start the containers in detached mode (background):</p><pre>sudo docker-compose -f mongo.yaml up -d</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/572/1*-p_AE2sSqJxR4r8PA5JcRw.jpeg" /></figure><h4>Stop Containers:</h4><p>To stop the containers, use:</p><pre>sudo docker-compose -f mongo.yaml stop</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/536/1*8R9_xELIejh0FP18IBn-2g.jpeg" /></figure><p>Now you have created the containers for Mongodb and MongoExpress and successfully communicate with each other using Docker Compose which creates a default network for communication between two application containers.</p><p>That’s it, thank you for reading.</p><p><strong>I am happy to share this article to help you explore new updates, do follow </strong><a href="https://medium.com/bsrinivasancbe"><strong>me</strong></a><strong>, and click the clap 👏 button below to show your valuable support.</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d0ca4ef3bb82" width="1" height="1" alt=""><hr><p><a href="https://medium.com/cloudnloud/unlocking-mongodb-deployment-with-docker-compose-and-mongo-express-d0ca4ef3bb82">Unlocking MongoDB Deployment with Docker Compose and Mongo Express</a> was originally published in <a href="https://medium.com/cloudnloud">Cloudnloud Tech Community</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Unlocking MongoDB Deployment with Docker and Mongo Express]]></title>
            <link>https://medium.com/cloudnloud/unlocking-mongodb-deployment-with-docker-and-mongo-express-455894686a11?source=rss----8c9e65d5bcaf---4</link>
            <guid isPermaLink="false">https://medium.com/p/455894686a11</guid>
            <category><![CDATA[mongo-express]]></category>
            <category><![CDATA[docker]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[mongodb]]></category>
            <category><![CDATA[containers]]></category>
            <dc:creator><![CDATA[Srinivasan Baskaran]]></dc:creator>
            <pubDate>Fri, 26 Jul 2024 14:03:54 GMT</pubDate>
            <atom:updated>2024-07-26T14:03:54.278Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ksKJIjOn42qWpF00JxnODQ.jpeg" /></figure><p>Let’s break down the steps for setting up MongoDB and Mongo Express using Docker without Docker Compose.</p><blockquote><strong><em>Pre-requisite</em></strong>: Working knowledge of Docker, Docker Network.</blockquote><h4>Create a Docker Network:</h4><p>Run the following command to create a network named mongo-network:</p><pre>sudo docker network create mongo-network</pre><p>This network will allow communication between the MongoDB container and the Mongo Express container.</p><h4>List Existing Docker Networks:</h4><p>Check if the mongo-network was successfully created:</p><pre>sudo docker network ls</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/768/1*JOIOw_BJWbJp_SYVrOV68A.jpeg" /></figure><h4>Pull MongoDB and Mongo Express Images:</h4><p>Pull the official MongoDB and Mongo Express Docker images:</p><pre>sudo docker pull mongo<br>sudo docker pull mongo-express</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/910/1*1SKCRfg98o8f4iqWUQiUSg.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/910/1*8LuDb5MVbO_ZLFiVocSxFA.jpeg" /></figure><p>These images will be used to create containers for MongoDB and Mongo Express.</p><h4>List Available Docker Images:</h4><p>Verify that the images were downloaded:</p><pre>sudo docker images</pre><h4>Run MongoDB Container:</h4><p>Start a MongoDB container with the following command:</p><pre>sudo docker run -d -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=password --network mongo-network --name mongodb mongo</pre><ul><li>-d: Run the container in detached mode.</li><li>-p 27017:27017: Map port 27017 on the host to the MongoDB container.</li><li>-e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=password: Set the root user credentials.</li><li>--network mongo-network: Connect the container to the mongo-network.</li><li>--name mongodb: Assign the name “mongodb” to the container.</li></ul><h4>Run Mongo Express Container:</h4><p>Start a Mongo Express container:</p><pre>sudo docker run -d -p 8081:8081 -e ME_CONFIG_MONGODB_ADMINUSERNAME=admin -e ME_CONFIG_MONGODB_ADMINPASSWORD=password -e ME_CONFIG_MONGODB_SERVER=mongodb --network mongo-network --name mongo-express mongo-express</pre><ul><li>-p 8081:8081: Map port 8081 on the host to the Mongo Express container.</li><li>-e ME_CONFIG_MONGODB_ADMINUSERNAME=admin -e ME_CONFIG_MONGODB_ADMINPASSWORD=password: Set the admin user credentials.</li><li>-e ME_CONFIG_MONGODB_SERVER=mongodb: Specify the MongoDB server hostname.</li><li>--network mongo-network: Connect the container to the same network.</li><li>--name mongo-express: Name the container “mongo-express”.</li></ul><h4>List Running Containers:</h4><p>Confirm that both containers are running:</p><pre>sudo docker ps</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*54t3R3vLRqvWNYlgwqdXoA.jpeg" /></figure><h4>Access Mongo Express Web Interface:</h4><p>Open your web browser and visit:</p><pre>http://20.163.193.220:8081</pre><p>Authenticate using the username “admin” and the password you set earlier.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/1*tfXmBpgU8W6-GNVSojRfSQ.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1016/1*3QfpkKe36ZldtRmZyqAO5Q.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hSAczNmc42mSUMgoXOF1Ew.jpeg" /></figure><p>Now you have created the containers for Mongodb and MongoExpress and successfully communicate with each other using Docker CLI.</p><p>That’s it, thank you for reading.</p><p><strong>I am happy to share this article to help you explore new updates, do follow </strong><a href="https://medium.com/bsrinivasancbe"><strong>me</strong></a><strong>, and click the clap 👏 button below to show your valuable support.</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=455894686a11" width="1" height="1" alt=""><hr><p><a href="https://medium.com/cloudnloud/unlocking-mongodb-deployment-with-docker-and-mongo-express-455894686a11">Unlocking MongoDB Deployment with Docker and Mongo Express</a> was originally published in <a href="https://medium.com/cloudnloud">Cloudnloud Tech Community</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Unlocking the Power of Docker: Evolution, Benefits, and Future Trends]]></title>
            <link>https://medium.com/cloudnloud/unlocking-the-power-of-docker-evolution-benefits-and-future-trends-43207f245c99?source=rss----8c9e65d5bcaf---4</link>
            <guid isPermaLink="false">https://medium.com/p/43207f245c99</guid>
            <category><![CDATA[automation]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[agile]]></category>
            <category><![CDATA[docker]]></category>
            <category><![CDATA[containers]]></category>
            <dc:creator><![CDATA[Srinivasan Baskaran]]></dc:creator>
            <pubDate>Tue, 23 Jul 2024 15:36:07 GMT</pubDate>
            <atom:updated>2024-07-26T13:16:39.174Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*LzbfepaSEmhvQgITns-59A.jpeg" /></figure><h4>The Evolution of Docker and the Docker Family</h4><p>Docker is a popular and widely used technology that enables developers to build, run, and deploy applications using containers. Containers are isolated environments that package an application and its dependencies together, making it easier to run the application on any platform. But how did Docker and its family of tools come into existence? What are the benefits and challenges of using Docker? And what are the future trends and opportunities for Docker and container technology? In this article, we will answer these questions and more, as we trace the evolution of Docker from its roots in Linux containers to its current status as a leading platform for cloud-native development.</p><h4>What are Linux Containers?</h4><p>Before we dive into Docker, let’s first understand what Linux containers are and how they work. Linux containers are a way of creating isolated environments for processes using features of the Linux kernel, such as <strong>namespaces </strong>and <strong>cgroups</strong>. Namespaces provide a way of limiting the visibility and access of a process to certain resources, such as files, network interfaces, and user IDs. Cgroups provide a way of controlling and limiting the amount of resources, such as CPU, memory, and disk I/O, that a process can use. By using <strong>namespaces </strong>and <strong>cgroups</strong>, Linux containers can create isolated environments that are similar to virtual machines, but without the overhead of running a separate operating system for each environment. Linux containers have been around for a long time, dating back to the 1970s when the chroot system call was introduced to change the root directory of a process and its children. Since then, several tools and technologies have been developed to improve and extend the concept of Linux containers, such as <strong>FreeBSD jails, Linux-VServer, OpenVZ, Solaris Containers, and LXC</strong>. These tools and technologies offer different levels of isolation, security, and performance for Linux containers, but they also have some limitations and challenges, such as portability, compatibility, and usability.</p><h4>How did Docker emerge?</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/596/1*LhvzhxVqs9hwuTwxQnTwqg.png" /></figure><p>Docker was born in 2013 as an open-source project by Solomon Hykes, who was working at dotCloud, a platform-as-a-service company. Docker was initially based on LXC, which was the most complete and stable implementation of Linux containers at the time. However, Docker soon replaced LXC with its library, libcontainer, which provided a consistent and portable interface for creating and managing Linux containers across different Linux distributions and platforms. Docker also introduced several innovations and features that made Linux containers more accessible and user-friendly, such as:</p><p>— Docker images: Docker images are the building blocks of Docker containers. They are layered, read-only templates that contain the application code and its dependencies. Docker images can be created using a Dockerfile, which is a text file that specifies the instructions for building the image. Docker images can also be pulled from or pushed to a Docker registry, which is a centralized repository for storing and sharing Docker images.</p><p>— Docker containers: Docker containers are the running instances of Docker images. They are lightweight, isolated, and portable environments that can run the application code and its dependencies. Docker containers can be created, started, stopped, and removed using the Docker CLI or API. Docker containers can also be connected to external networks using Docker networks, which are virtual networks that provide communication and isolation for Docker containers.</p><p>— Docker Engine: Docker Engine is the core component of Docker that manages the lifecycle of Docker images and containers. It is a client-server application that consists of a daemon, a REST API, and a CLI. The daemon is the background process that communicates with the Linux kernel and creates and runs Docker containers. The REST API is the interface that allows external applications and tools to interact with the daemon. The CLI is the command-line tool that allows users to interact with the daemon using the REST API. — Docker Compose: Docker Compose is a tool that allows users to define and run multi-container applications using a YAML file. The YAML file specifies the services, networks, and volumes that make up the application. Docker Compose can then create and start the containers for each service using the Docker Engine.</p><p>— Docker Swarm: Docker Swarm is a tool that allows users to cluster and orchestrate multiple Docker hosts into a single, logical unit. Docker Swarm can manage the deployment, scaling, and load balancing of Docker containers across the cluster using the Docker Engine. Docker Swarm can also integrate with other tools and platforms, such as Kubernetes, Mesos, and Azure, to provide additional features and capabilities for Docker containers.</p><h4>What are the benefits and challenges of using Docker?</h4><p>Docker has revolutionized the way developers build, run, and deploy applications using containers. Docker has several benefits and advantages over traditional methods of software development and delivery, such as:</p><p>— Portability: Docker containers can run on any platform that supports Docker, such as Linux, Windows, Mac, or cloud. This means that developers can easily move their applications from one environment to another without worrying about compatibility issues or dependencies.</p><p>— Consistency: Docker containers provide a consistent and reproducible environment for applications, regardless of where they run. This means that developers can ensure that their applications behave the same way in development, testing, and production, reducing the risk of bugs and errors.</p><p>— Efficiency: Docker containers are more efficient and resource-friendly than virtual machines, as they share the same operating system kernel and do not require a separate operating system for each environment. This means that developers can run more applications on the same hardware, saving time and money.</p><p>— Isolation: Docker containers provide a high level of isolation and security for applications, as they limit the visibility and access of each container to its resources and network. This means that developers can protect their applications from interference and attacks from other containers or processes.</p><p>— Modularity: Docker containers promote a modular and microservice-based architecture for applications, as they allow developers to break down their applications into smaller and independent units that can communicate with each other. This means that developers can improve the scalability, reliability, and maintainability of their applications, as well as the speed and frequency of their updates and releases.</p><p>However, Docker also has some challenges and limitations that developers need to be aware of and address, such as:</p><p>— Complexity: Docker introduces a new layer of complexity and abstraction for applications, as developers need to learn and use new tools and concepts, such as Dockerfiles, images, containers, networks, volumes, registries, and orchestration. This means that developers need to invest time and effort to master Docker and its ecosystem, as well as to troubleshoot and debug any issues that may arise.</p><p>— Security: Docker containers are not inherently secure, as they rely on the security of the underlying operating system and kernel, as well as the configuration and management of the containers and their resources. This means that developers need to follow best practices and guidelines to secure their Docker containers and their applications, such as using trusted images, scanning for vulnerabilities, applying patches and updates, enforcing policies and rules, and monitoring and auditing the container activity.</p><p>— Performance: Docker containers may have some performance overhead and trade-offs compared to native processes, as they involve additional layers and components, such as the Docker daemon, the Docker API, and the Docker network. This means that developers need to optimize and tune their Docker containers and their applications, such as using appropriate resource limits, avoiding unnecessary layers, and choosing the right storage and network drivers.</p><h4>What are the future trends and opportunities for Docker and container technology?</h4><p>Docker and container technology have come a long way since their inception, and they continue to evolve and improve with new features and capabilities. Some of the future trends and opportunities for Docker and container technology include:</p><p>— Standardization: Docker and container technology are becoming more standardized and interoperable, as they adopt and follow common specifications and standards, such as the Open Container Initiative (OCI) and the Cloud Native Computing Foundation (CNCF). These initiatives aim to provide a consistent and open framework for container formats, runtimes, and platforms, as well as to foster collaboration and innovation among the container community and industry.</p><p>— Integration: Docker and container technology are becoming more integrated and compatible with other technologies and platforms, such as serverless, edge, and hybrid cloud. These technologies and platforms offer new and exciting possibilities and use cases for Docker and container technology, such as enabling faster and cheaper development and deployment, extending the reach and availability of applications, and providing more flexibility and choice for developers and users.</p><p>— Automation: Docker and container technology are becoming more automated and intelligent, as they leverage and incorporate artificial intelligence and machine learning. These technologies can help Docker and container technology to achieve higher levels of efficiency, reliability, and security, as well as to provide more insights and recommendations for developers and users. For example, they can help optimize resource allocation and utilization, detect and prevent anomalies and threats, and suggest the best practices and solutions for Docker and container technology.</p><h4>Conclusion</h4><p>Docker and container technology have transformed how developers build, run, and deploy applications using containers. They have also created a vibrant and dynamic ecosystem of tools and platforms that support and enhance Docker and container technology. However, Docker and container technology have challenges and limitations, and they require careful and proper planning and implementation to achieve the best results. Moreover, Docker and container technology are constantly evolving and improving, and they offer new and exciting opportunities and possibilities for the future of software development and delivery.</p><p>That’s it, thank you for reading.</p><p><strong>I am happy to share this article to help you explore new updates, do follow </strong><a href="https://medium.com/bsrinivasancbe"><strong>me</strong></a><strong>, and click the clap 👏 button below to show your valuable support.</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=43207f245c99" width="1" height="1" alt=""><hr><p><a href="https://medium.com/cloudnloud/unlocking-the-power-of-docker-evolution-benefits-and-future-trends-43207f245c99">Unlocking the Power of Docker: Evolution, Benefits, and Future Trends</a> was originally published in <a href="https://medium.com/cloudnloud">Cloudnloud Tech Community</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[HTML Evolution to DOM Mastery: A Web Developer’s Journey]]></title>
            <link>https://medium.com/cloudnloud/html-evolution-to-dom-mastery-a-web-developers-journey-83c945d0847e?source=rss----8c9e65d5bcaf---4</link>
            <guid isPermaLink="false">https://medium.com/p/83c945d0847e</guid>
            <category><![CDATA[website]]></category>
            <category><![CDATA[web]]></category>
            <category><![CDATA[html]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[learning]]></category>
            <dc:creator><![CDATA[Srinivasan Baskaran]]></dc:creator>
            <pubDate>Tue, 09 Jul 2024 04:31:50 GMT</pubDate>
            <atom:updated>2024-07-09T04:31:49.696Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*TQXhzCecc6-qnS1Pn2PSKg.jpeg" /></figure><h3>Tim Berners-Lee: The Father of HTML</h3><p>Tim Berners-Lee, an English computer scientist, is credited with inventing the World Wide Web. He introduced HTML, the URL system, and HTTP. His groundbreaking work at CERN in 1990 laid the foundation for the web as we know it today. Berners-Lee’s contributions continue to shape the digital landscape, and he remains an influential figure in technology.</p><h3>HTML Evolution and the Document Object Model (DOM)</h3><h3>Introduction</h3><p>The web has come a long way since its inception. Understanding the evolution of HTML and the role of the Document Object Model (DOM) is essential for anyone venturing into web development. In this article, we’ll explore the journey of HTML, delve into the DOM, and discuss its architecture.</p><h3>HTML Evolution</h3><p><strong><em>HTML Basics</em></strong>: HTML (Hypertext Markup Language) is the backbone of the web. It started as a simple markup language for structuring documents, defining headings, paragraphs, and links</p><p><strong><em>HTML2</em></strong>: Introduced in the early ’90s, HTML2 brought essential features like forms. Forms allowed users to input data on web pages, paving the way for interactive content.</p><p><strong><em>HTML3</em></strong>: HTML3, proposed by Tim Berners-Lee in 1991, expanded HTML’s capabilities. Notable features included:</p><ul><li><strong>Customized Lists</strong>: Fine-tuned lists with entities like &amp;emspace;.</li><li><strong>Text Flow Around Figures</strong>: Text could flow around floating figures.</li><li><strong>Mathematical Equations</strong>: Inspired by TeX, HTML3 supported equations.</li><li><strong>Static Banner Area</strong>: For corporate logos, disclaimers, and customized navigation.</li></ul><p><strong><em>HTML4 and XHTML</em></strong>: HTML4 introduced more elements and attributes, making it more versatile. XHTML (Extensible HTML) aimed for stricter syntax rules but didn’t gain widespread adoption due to complexity.</p><p><strong><em>HTML5</em></strong>: HTML5 revolutionized the web. It brought new semantic elements (like &lt;header&gt;, &lt;nav&gt;, and &lt;article&gt;), multimedia support (audio and video), and APIs (like Geolocation and Web Storage). HTML5 made web development more expressive and interactive.</p><h3>The History of the DOM</h3><p>The Document Object Model (DOM) allows programming languages (primarily JavaScript) to interact with the underlying structure of a web document. Here’s a brief history:</p><p><strong><em>Early Days</em></strong>: In the early web, browsers rendered HTML directly. There was no standardized way to manipulate page content dynamically.</p><p><strong><em>DOM Emerges</em></strong>: The World Wide Web Consortium (W3C) introduced the DOM to bridge this gap. It provided a hierarchical representation of HTML documents, enabling developers to access, modify, and manipulate elements programmatically.</p><p><strong><em>DOM Levels</em></strong>:</p><p><em>DOM Level 1 (1998)</em>: Basic access to document elements.</p><p><em>DOM Level 2 (2000)</em>: Introduced events, CSS manipulation, and more.</p><p><em>DOM Level 3 (2004)</em>: Enhanced support for XML and XPath.</p><p><strong><em>Modern DOM</em></strong>: Today, the DOM is an integral part of web development. It allows us to:</p><p>Access elements using document.getElementById(), querySelector(), etc.</p><p>Change content, attributes, and styles dynamically.</p><p>Add or remove elements on the fly.</p><h3>DOM Architecture</h3><p>The DOM is a tree-like structure:</p><ul><li><strong>Document Node</strong>: Represents the entire HTML document.</li><li><strong>Element Nodes</strong>: Represent HTML elements (e.g., &lt;div&gt;, &lt;p&gt;).</li><li><strong>Attribute Nodes</strong>: Hold element attributes (e.g., class, id).</li><li><strong>Text Nodes</strong>: Contain text within elements.</li></ul><h3>So, what is HTML?</h3><p>HTML, or Hypertext Markup Language, is a markup language for the web that defines the structure of web pages.</p><p>HTML determines the structure of web pages. Other technology stack like CSS, Javascript is used with HTML to convert the page to stylish, interactive and dynamic style.</p><h3>Conclusion</h3><p>Understanding the evolution of HTML and the power of the DOM is crucial for web developers. As you embark on your journey, remember that the DOM empowers you to create dynamic, interactive web experiences.</p><p>That’s it, thank you for reading.</p><p><strong>Happy to share this article to help you to explore new updates, do follow </strong><a href="https://medium.com/bsrinivasancbe"><strong>me</strong></a><strong>, click the clap 👏 button below to show your valuable support.</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=83c945d0847e" width="1" height="1" alt=""><hr><p><a href="https://medium.com/cloudnloud/html-evolution-to-dom-mastery-a-web-developers-journey-83c945d0847e">HTML Evolution to DOM Mastery: A Web Developer’s Journey</a> was originally published in <a href="https://medium.com/cloudnloud">Cloudnloud Tech Community</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Configure Azure CLI locally in Linux Distribution (Ubuntu or Debian) and enjoy Commands.]]></title>
            <link>https://medium.com/cloudnloud/configure-azure-cli-locally-in-linux-distribution-ubuntu-or-debian-and-enjoy-commands-33fc45c5a241?source=rss----8c9e65d5bcaf---4</link>
            <guid isPermaLink="false">https://medium.com/p/33fc45c5a241</guid>
            <category><![CDATA[ubuntu]]></category>
            <category><![CDATA[cloud-computing]]></category>
            <category><![CDATA[cli]]></category>
            <category><![CDATA[azure]]></category>
            <category><![CDATA[learning]]></category>
            <dc:creator><![CDATA[Srinivasan Baskaran]]></dc:creator>
            <pubDate>Sun, 31 Mar 2024 17:44:16 GMT</pubDate>
            <atom:updated>2024-03-31T17:44:16.308Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*3CtRHx9wLBb-4uFXzvN02A.jpeg" /></figure><blockquote><em>Refer my earlier article </em><a href="https://medium.com/cloudnloud/what-is-azure-cloud-shell-and-how-to-use-it-3340a5e5d0cd"><em>here</em></a><em> for basic understanding of Azure Cloud Shell (Bash).</em></blockquote><p>To access the Azure CLI on a local Linux (Ubuntu distribution or Debian distribution) machine, simply install the Azure CLI on your computer and run it from the command line. This will give you access to all the same features and functionality as the web portal, but with the added convenience of being able to work directly from your local machine.</p><p>Let see what the procedure is or step by step instruction needed to set up the Azure CLI (Bash) in local Linux distribution machine. First let check if there exists any version earlier or not from the following command</p><pre>az --version</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/539/1*GdrKH7eewocZgJfoMWsQxw.png" /></figure><p>The output confirms the azure cli (Bash) was not available earlier in the local Linux distribution machine. Now let see the step-by-step instructions to complete the installation for azure cli and there are 2 options for convenience.</p><p><strong>Option 1:</strong></p><p>Download the script using following command and send to the bash as shown below:</p><pre>curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/833/1*WI6UMRF-RXyyilx-ZkakTw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/904/1*PDTXqkFfAla8B2P2FGTFuw.png" /></figure><p><strong>Option 2:</strong></p><p>Update the system and get the packages for the installation</p><pre>sudo apt-get update<br>sudo apt-get install ca-certificates curl apt-transport-https lsb-release gnupg</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/795/1*9j_LAJGf4Ylzf6E4Z2Hshg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/848/1*e-OtOH0EMq1to8vF52GyyQ.png" /></figure><p>Download and install the key for Microsoft</p><pre>sudo mkdir -p /etc/apt/keyrings<br>curl -sLS https://packages.microsoft.com/keys/microsoft.asc |<br>    gpg --dearmor |<br>    sudo tee /etc/apt/keyrings/microsoft.gpg &gt; /dev/null<br>sudo chmod go+r /etc/apt/keyrings/microsoft.gpg</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/774/1*rVnqz6Vl_JVVDzyKla6QNg.png" /></figure><p>Include the Azure CLI repo</p><pre>AZ_DIST=$(lsb_release -cs)<br>echo &quot;deb [arch=`dpkg --print-architecture` signed-by=/etc/apt/keyrings/microsoft.gpg] https://packages.microsoft.com/repos/azure-cli/ $AZ_DIST main&quot; |<br>    sudo tee /etc/apt/sources.list.d/azure-cli.list</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5PS3tEUwEak9nfPKAvcIaw.png" /></figure><p>Now update the machine again and install the CLI</p><pre>sudo apt-get update<br>sudo apt-get install azure-cli</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/737/1*f8fF-a7svAzfvTVU8bGvIQ.png" /></figure><p>Now again verify the Azure CLI (Bash) is reflecting in the system as before</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/528/1*Vp_E1kbC33U1kuJJqbW0lQ.png" /></figure><p>The Azure CLI version 2.58.0 has been successfully installed on the local system. Upon inspection, you may observe the installation of additional dependencies, as well as the default Python version 3.11.7.</p><p><strong>How to Upgrade Azure CLI if already installed?</strong></p><p>This following command updates all installed extensions as required.</p><pre>az upgrade</pre><p>That’s it, thank you for reading.</p><p><strong>Happy to share this article to help you to explore new updates, do follow </strong><a href="https://medium.com/bsrinivasancbe"><strong>me</strong></a><strong>, click the clap 👏 button below to show your valuable support.</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=33fc45c5a241" width="1" height="1" alt=""><hr><p><a href="https://medium.com/cloudnloud/configure-azure-cli-locally-in-linux-distribution-ubuntu-or-debian-and-enjoy-commands-33fc45c5a241">Configure Azure CLI locally in Linux Distribution (Ubuntu or Debian) and enjoy Commands.</a> was originally published in <a href="https://medium.com/cloudnloud">Cloudnloud Tech Community</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Dockerise the simple customized website — Step by step implementation]]></title>
            <link>https://medium.com/cloudnloud/dockerise-the-simple-customized-website-step-by-step-implementation-6e041e265cac?source=rss----8c9e65d5bcaf---4</link>
            <guid isPermaLink="false">https://medium.com/p/6e041e265cac</guid>
            <category><![CDATA[containers]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[docker]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[learning]]></category>
            <dc:creator><![CDATA[Srinivasan Baskaran]]></dc:creator>
            <pubDate>Tue, 19 Mar 2024 19:09:27 GMT</pubDate>
            <atom:updated>2024-07-05T18:06:00.289Z</atom:updated>
            <content:encoded><![CDATA[<h3>Dockerise simple customized website — Step by step implementation</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*gZARXW8bymhegF2J98slhQ.jpeg" /></figure><p><strong><em>Prerequisite</em></strong>: Need an <strong><em>Ubuntu</em></strong> machine with <strong><em>Docker</em></strong> installed.</p><p>Refer my article for installing Docker in Ubuntu machine: <a href="https://shorturl.at/6oJ7w">https://shorturl.at/6oJ7w</a></p><p>Let&#39;s quickly create a personalize webpage and once it was dockerised we will try adding more lights to the webpage.</p><p>Here is my quick webpage content for my <strong><em>index.html</em></strong> file:</p><pre>&lt;html&gt;<br>&lt;body&gt;<br>&lt;h1&gt;Welcome to Hello World! &lt;/h1&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;</pre><p>Assume you have the Ubuntu machine and Docker installed and here is the reference to my earlier medium.com article for quick or easy reference:</p><p><a href="https://medium.com/cloudnloud/unlock-the-power-of-docker-easy-step-by-step-installation-guide-for-ubuntu-users-adbb74587363">Unlock the Power of Docker: Easy Step-by-Step Installation Guide for Ubuntu Users!</a></p><p>Login to the Ubuntu machine and create a working folder <strong><em>DockerFolder </em></strong>and move into this new folder</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/665/1*4h0PoiTXkb4Te914D-tBiQ.png" /></figure><p>Create an <strong><em>index.html </em></strong>inside this new folder using the <em>vi editor</em> as below:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/464/1*48jCX8W_v5VCerG5Geqaow.png" /></figure><blockquote><em>Note</em>: Incase if vi editor not available by default in Ubuntu, try use the below commands for clean and quick install</blockquote><pre>sudo apt-get update<br>sudo apt-get install vim -y</pre><p>It&#39;s time to create a simple <strong>Dockerfile </strong>(Please note the file and it should be of this name as best practice) for containerizing the Ubuntu base image with apache2 webserver with the customized webpage to the root folder as below:</p><pre>FROM ubuntu<br>ENV DEBIAN_FRONTEND=noninteractive<br>RUN apt-get update -y<br>RUN apt-get install apache2 -y<br>COPY ./index.html /var/www/html</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/1*OnOqEc3DU9vJarcOqd5dYA.png" /></figure><p>Next to build this file to create an image by executing the following command</p><pre>sudo docker build . -t bsrinivasancbe/apachehelloworld2024</pre><p>This command will execute the configuration details in the current folder with the file named <strong><em>Dockerfile</em></strong> and an image will be created with the name “<strong><em>bsrinivasancbe/apachehelloworld2024</em></strong>”</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*qm5K0eRifmt8X7tEJIW4Ww.png" /></figure><p>Execute the following command to list out all the docker images in the current directory</p><pre>sudo docker images</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/994/1*viNL5py6nqQw4EDdELcjzg.png" /></figure><p>Now the image needs to be executed to create the instance namely container as below:</p><pre>sudo docker run -it -p 80:80 -d bsrinivasancbe/apachehelloworld2024</pre><p>Also to list all the active containers in the current directory, execute the following command:</p><pre>sudo docker ps</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Bhn9AlABix2m_LgsERzvVw.png" /></figure><p>Hurray! you have created the docker container running on port 80 in an easy peasy steps!</p><p>Let say we want to verify the container in action, then we have to perform 2 more actions namely: enable the port 80 for the VM and start the Apache ser</p><p>vice by logging into the container as below:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6OE2xObugqX3qBJXe-jgnA.png" /></figure><p>To login to the running container execute the below docker command with &lt;&lt;containerid&gt;&gt; replaced with actual containerid that is listed from the above command</p><pre>sudo docker exec -it &lt;&lt;containerid&gt;&gt; bash</pre><p>To check the Apache service is running inside the container, execute following command to verify</p><pre>service apache2 status</pre><p>To start the Apache service execute the below command and again check with above command to see the service got started now.</p><pre>service apache2 start</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/613/1*iB0Uv1-fTBhLZF9zX4MRRQ.png" /></figure><p>Once done exit from the container by executing the below command</p><pre>exit</pre><p>Now traverse to the browser and access the Public IP of the VM to see the web page getting accessed as below</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/807/1*yNdtf5E-dqtF2c-MLlWotA.png" /></figure><p>Since our scope is done, let&#39;s do some clean up as best practices by stopping the container and removing from the VM machine from the following commands set:</p><pre>sudo docker stop <em>&lt;&lt;container_id&gt;&gt;</em><br><br>sudo docker rm <em>&lt;&lt;container_id&gt;&gt;</em></pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/501/1*so04-ZV_ySCZ4n-XADLTGw.png" /></figure><p>Then we can delete the images by referring the image id as below</p><pre>sudo docker rmi <em>&lt;&lt;image_id&gt;&gt;</em></pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/682/1*OAd669_Wfogtpuc4-9Z56w.png" /></figure><p>That’s it, Thank you for reading, Happy Dockerising!</p><p><strong>Happy to share this article to help you to explore new updates, do follow </strong><a href="https://medium.com/bsrinivasancbe"><strong>me</strong></a><strong> in medium.com, click the clap 👏 button below to show your valuable support.</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6e041e265cac" width="1" height="1" alt=""><hr><p><a href="https://medium.com/cloudnloud/dockerise-the-simple-customized-website-step-by-step-implementation-6e041e265cac">Dockerise the simple customized website — Step by step implementation</a> was originally published in <a href="https://medium.com/cloudnloud">Cloudnloud Tech Community</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>