<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Hamed0406</title>
    <description>The latest articles on DEV Community by Hamed0406 (@hamed0406).</description>
    <link>https://dev.to/hamed0406</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F953741%2F03148521-7883-4332-afda-27f538b95a02.png</url>
      <title>DEV Community: Hamed0406</title>
      <link>https://dev.to/hamed0406</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hamed0406"/>
    <language>en</language>
    <item>
      <title>🚀 Introducing gofind – a blazing fast file finder in Go</title>
      <dc:creator>Hamed0406</dc:creator>
      <pubDate>Tue, 02 Sep 2025 09:23:52 +0000</pubDate>
      <link>https://dev.to/hamed0406/introducing-gofind-a-blazing-fast-file-finder-in-go-5h7j</link>
      <guid>https://dev.to/hamed0406/introducing-gofind-a-blazing-fast-file-finder-in-go-5h7j</guid>
      <description>&lt;p&gt;Hi everyone! 👋&lt;/p&gt;

&lt;p&gt;I’ve been working on a side project called gofind&lt;br&gt;
, and I’m happy to finally share it with you. 🎉&lt;/p&gt;

&lt;p&gt;🔍 Why I built gofind&lt;/p&gt;

&lt;p&gt;We all know the classic find command – it’s powerful but sometimes:&lt;/p&gt;

&lt;p&gt;It feels slow on large directories.&lt;/p&gt;

&lt;p&gt;It has a complicated syntax that’s hard to remember.&lt;/p&gt;

&lt;p&gt;It doesn’t always give you exactly the filtering you want without chaining extra tools.&lt;/p&gt;

&lt;p&gt;That’s where gofind comes in.&lt;br&gt;
It’s designed to make searching files simpler, faster, and more intuitive without sacrificing flexibility.&lt;/p&gt;

&lt;p&gt;✨ Features&lt;/p&gt;

&lt;p&gt;⚡ Fast and efficient – powered by Go’s concurrency&lt;/p&gt;

&lt;p&gt;📝 Flexible filters – search by name, size, or modification time&lt;/p&gt;

&lt;p&gt;📦 Cross-platform – works on Linux, macOS, and Windows&lt;/p&gt;

&lt;p&gt;🛠️ Simple CLI – easy-to-remember flags&lt;/p&gt;

&lt;p&gt;✅ CI/CD ready – integrated with GitHub Actions + GoReleaser&lt;/p&gt;

&lt;p&gt;🛠️ What problems does it solve?&lt;/p&gt;

&lt;p&gt;Developers who need to quickly find source files while working in large repos.&lt;/p&gt;

&lt;p&gt;Sysadmins who want to locate big files that eat up disk space.&lt;/p&gt;

&lt;p&gt;Security engineers who need to scan for recently modified files after an incident.&lt;/p&gt;

&lt;p&gt;Anyone who wants a cleaner and faster alternative to the traditional find command.&lt;/p&gt;

&lt;p&gt;📥 Installation&lt;/p&gt;

&lt;p&gt;If you have Go installed:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;go install github.com/Hamed0406/gofind@latest&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Or grab the latest binary from the &lt;a href="https://github.com/Hamed0406/gofind/releases" rel="noopener noreferrer"&gt;Releases&lt;br&gt;
 page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;🖥️ Example usage&lt;br&gt;
Find all .go files modified in the last 24 hours&lt;/p&gt;

&lt;p&gt;&lt;code&gt;gofind -name "*.go" -mtime -1&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Find files larger than 50MB&lt;/p&gt;

&lt;p&gt;&lt;code&gt;gofind -size +50M&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
🔧 Roadmap&lt;/p&gt;

&lt;p&gt;JSON output for easy scripting&lt;/p&gt;

&lt;p&gt;Even faster parallel searching&lt;/p&gt;

&lt;p&gt;Integration with system indexing APIs&lt;/p&gt;

&lt;p&gt;🙌 Contributions&lt;/p&gt;

&lt;p&gt;I’d love feedback, feature requests, or bug reports.&lt;br&gt;
Feel free to open &lt;a href="https://github.com/Hamed0406/gofind/issues" rel="noopener noreferrer"&gt;an issue&lt;/a&gt;&lt;br&gt;
 or send a PR if you’d like to contribute!&lt;/p&gt;

&lt;p&gt;🔗 Links&lt;/p&gt;

&lt;p&gt;GitHub repo: github.com/Hamed0406/gofind&lt;/p&gt;

&lt;p&gt;Releases: &lt;a href="https://github.com/Hamed0406/gofind/releases" rel="noopener noreferrer"&gt;Download binaries&lt;/a&gt;&lt;/p&gt;

</description>
      <category>go</category>
      <category>opensource</category>
      <category>productivity</category>
      <category>cli</category>
    </item>
    <item>
      <title>Red Hat Unwrapped: A Beginner's Journey into Enterprise Linux #2</title>
      <dc:creator>Hamed0406</dc:creator>
      <pubDate>Fri, 16 May 2025 14:23:54 +0000</pubDate>
      <link>https://dev.to/hamed0406/red-hat-unwrapped-a-beginners-journey-into-enterprise-linux-2-3lib</link>
      <guid>https://dev.to/hamed0406/red-hat-unwrapped-a-beginners-journey-into-enterprise-linux-2-3lib</guid>
      <description>&lt;p&gt;In our earlier chapter, we covered some Linux basics, and the other half was about RHEL in the enterprise world. Let's turn to the other side-nearly practical: putting RHEL in your Windows environment using Windows Subsystem for Linux 2 (WSL 2). &lt;/p&gt;

&lt;p&gt;🚀 Why Use RHEL on WSL 2?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; ✅ Integration! Run RHEL side by side with the Windows application without altering hard disk partitions, dual-boots, or separately maintained virtual machines.&lt;/li&gt;
&lt;li&gt; ⚡Development Efficiency: Developers can build Linux applications on Windows for a more efficient workflow since they are accustomed to working between both environments. &lt;/li&gt;
&lt;li&gt; 📦 Access RHEL Tools: One can take advantage of RHEL's powerful package management system and enterprise-grade tools on the Windows system.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📌 Installing RHEL on WSL 2&lt;br&gt;
1️⃣ Enable WSL and Set Version to 2:&lt;br&gt;
Open PowerShell as Administrator and execute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wsl --install
wsl --set-default-version 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2️⃣ Download the RHEL WSL Image:&lt;br&gt;
View the Red Hat Customer Portal, navigate to the Downloads section, and pick up the RHEL WSL image (usually a .tar file).&lt;br&gt;
You can sig up for Red Hat account if you don't have it already , it is free for developer . &lt;a href="https://developers.redhat.com/register" rel="noopener noreferrer"&gt;RHEL Account&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3️⃣Import the RHEL Image into WSL:&lt;br&gt;
Run in PowerShell:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wsl --import RHEL C:\WSL\RHEL C:\Path\To\Downloaded\RedHat.tar --version 2

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4️⃣ Start RHEL:&lt;br&gt;
Launch your instance of RHEL with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wsl -d RHEL

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;5️⃣ Register and Update RHEL:&lt;br&gt;
After entering the RHEL environment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo subscription-manager register --username &amp;lt;your-username&amp;gt; --password &amp;lt;your-password&amp;gt;
sudo subscription-manager attach --auto
sudo dnf update -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🎯Benefits of This Setup&lt;br&gt;
🌐 Unified Environment: Develop, test, and deploy Linux applications without leaving your Windows workspace.&lt;/p&gt;

&lt;p&gt;🚀Resource-efficient: WSL 2, as a lightweight virtualization solution, consumes considerably fewer resources than a traditional virtual machine.&lt;/p&gt;

&lt;p&gt;⚡Productivity boost: Quickly switch back and forth between Windows and Linux tools for better productivity in all development and administrative needs.&lt;br&gt;
linux-os.net&lt;/p&gt;

&lt;p&gt;By deploying RHEL to Windows via WSL 2, you get to enjoy enterprise Linux without the hassle of managing two systems.&lt;/p&gt;

&lt;p&gt;** Svensk version – Swedish version below&lt;br&gt;
**&lt;/p&gt;

&lt;p&gt;Red Hat Unwrapped #2: Att Köra RHEL på Windows med WSL 2&lt;/p&gt;

&lt;p&gt;Välkommen tillbaka till Red Hat Unwrapped-serien! I första kapitlet utforskade vi Linux-grunder och RHELs roll i företagsvärlden. Nu går vi från teori till praktik – genom att integrera RHEL direkt i din Windows-miljö med Windows Subsystem for Linux 2 (WSL 2).&lt;/p&gt;

&lt;p&gt;🚀 Varför Använda RHEL på WSL 2?&lt;/p&gt;

&lt;p&gt;✅ Sömlös Integration: Kör RHEL sida vid sida med dina Windows-appar utan att behöva ändra partitioner, dubbla uppstarter eller separata virtuella maskiner.&lt;/p&gt;

&lt;p&gt;⚡ Effektiv Utveckling: Bygg och testa Linux-applikationer direkt på Windows för ett smidigare arbetsflöde, perfekt för utvecklare som växlar mellan miljöer.&lt;/p&gt;

&lt;p&gt;📦 Åtkomst till Enterprise-verktyg: Använd RHEL:s kraftfulla paketstyrning och verktyg av företagsklass direkt på din Windows-dator.&lt;/p&gt;

&lt;p&gt;📌 Hur Man Installerar RHEL på WSL 2&lt;/p&gt;

&lt;p&gt;1️⃣ Aktivera WSL 2&lt;/p&gt;

&lt;p&gt;Öppna PowerShell som administratör.&lt;/p&gt;

&lt;p&gt;Kör följande kommandon:&lt;/p&gt;

&lt;p&gt;wsl --install&lt;br&gt;
wsl --set-default-version 2&lt;/p&gt;

&lt;p&gt;2️⃣ Ladda ner RHEL WSL Image&lt;/p&gt;

&lt;p&gt;Besök Red Hat Customer Portal.&lt;/p&gt;

&lt;p&gt;Gå till nedladdningssektionen och hämta RHEL WSL-bilden (vanligtvis en .tar-fil).&lt;/p&gt;

&lt;p&gt;3️⃣ Importera RHEL Image till WSL&lt;/p&gt;

&lt;p&gt;wsl --import RHEL C:\WSL\RHEL C:\Path\To\Downloaded\RedHat.tar --version 2&lt;/p&gt;

&lt;p&gt;4️⃣ Starta Din RHEL-instans&lt;/p&gt;

&lt;p&gt;wsl -d RHEL&lt;/p&gt;

&lt;p&gt;5️⃣ Registrera och Uppdatera RHEL&lt;/p&gt;

&lt;p&gt;Inuti RHEL-miljön, kör:&lt;/p&gt;

&lt;p&gt;sudo subscription-manager register --username  --password &lt;br&gt;
sudo subscription-manager attach --auto&lt;br&gt;
sudo dnf update -y&lt;/p&gt;

&lt;p&gt;🎯 Varför Denna Setup är Utmärkt&lt;/p&gt;

&lt;p&gt;🌐 Enhetligt Arbetsflöde: Utveckla, testa och distribuera Linux-applikationer utan att lämna din Windows-miljö.&lt;/p&gt;

&lt;p&gt;🚀 Lätt och Snabb: WSL 2 använder mindre systemresurser än en fullständig virtuell maskin.&lt;/p&gt;

&lt;p&gt;⚡ Ökad Produktivitet: Växla sömlöst mellan Windows- och Linux-verktyg.&lt;/p&gt;

&lt;p&gt;Genom att installera RHEL på WSL 2 kombinerar du kraften hos företags-Linux med flexibiliteten hos Windows. Håll utkik efter fler inlägg i Red Hat Unwrapped-serien!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Red Hat Unwrapped: A Beginner's Journey into Enterprise Linux #1</title>
      <dc:creator>Hamed0406</dc:creator>
      <pubDate>Wed, 23 Apr 2025 11:37:24 +0000</pubDate>
      <link>https://dev.to/hamed0406/red-hat-unwrapped-a-beginners-journey-into-enterprise-linux-1-4ip5</link>
      <guid>https://dev.to/hamed0406/red-hat-unwrapped-a-beginners-journey-into-enterprise-linux-1-4ip5</guid>
      <description>&lt;p&gt;🐧 Red Hat Unwrapped – Chapter 1: What Is Linux &amp;amp; Why Should You Care?&lt;br&gt;
Linux is more than just an operating system—it's the foundation of modern computing. From powering websites and smartphones to supercomputers and cloud platforms, Linux is everywhere. But what exactly makes it so important, especially for IT professionals?&lt;/p&gt;

&lt;p&gt;🔍 What Is Linux?&lt;br&gt;
Linux is an open source, Unix-like operating system. At its core is the Linux kernel, developed in 1991 by Linus Torvalds. Around this core, Linux distributions (or "distros") package software and tools to create full operating systems like Ubuntu, Fedora, or Red Hat Enterprise Linux (RHEL).&lt;/p&gt;

&lt;p&gt;💡 Why Should You Learn Linux?&lt;br&gt;
Linux is essential in:&lt;/p&gt;

&lt;p&gt;Web hosting &amp;amp; cloud computing (AWS, Azure, GCP)&lt;/p&gt;

&lt;p&gt;App development and DevOps workflows&lt;/p&gt;

&lt;p&gt;IoT devices and mobile OS backends (like Android)&lt;/p&gt;

&lt;p&gt;Enterprise systems and data centers&lt;/p&gt;

&lt;p&gt;Knowing Linux is like having a key to modern tech infrastructure.&lt;/p&gt;

&lt;p&gt;🛠️ What Makes Linux Special?&lt;br&gt;
Open Source: Anyone can view, modify, and share the code.&lt;/p&gt;

&lt;p&gt;CLI-first Design: Powerful automation and scripting via terminal.&lt;/p&gt;

&lt;p&gt;Modular Architecture: Customize and adapt components easily.&lt;/p&gt;

&lt;p&gt;🔓 What Is Open Source?&lt;br&gt;
Open source software allows anyone to:&lt;/p&gt;

&lt;p&gt;Access the source code&lt;/p&gt;

&lt;p&gt;Modify and improve it&lt;/p&gt;

&lt;p&gt;Share it with others—royalty-free&lt;/p&gt;

&lt;p&gt;It fosters innovation, security, and collaboration. Licenses like GPL (Copyleft) and MIT (Permissive) shape how open source can be reused.&lt;/p&gt;

&lt;p&gt;📦 What Is a Linux Distribution?&lt;br&gt;
A Linux distro includes:&lt;/p&gt;

&lt;p&gt;The Linux kernel&lt;/p&gt;

&lt;p&gt;Software utilities (e.g., Bash, systemd)&lt;/p&gt;

&lt;p&gt;Tools for installation and updates&lt;/p&gt;

&lt;p&gt;Popular distros include Ubuntu, Fedora, and Red Hat Enterprise Linux (RHEL).&lt;/p&gt;

&lt;p&gt;🧠 Meet Red Hat&lt;br&gt;
Red Hat is a major open source leader. Their flagship product, RHEL, is a stable, enterprise-grade Linux distro. It evolves through:&lt;/p&gt;

&lt;p&gt;🚀 Fedora – experimental and cutting-edge&lt;/p&gt;

&lt;p&gt;🔁 CentOS Stream – continuous integration, RHEL preview&lt;/p&gt;

&lt;p&gt;✅ RHEL – hardened, supported, and ready for production&lt;/p&gt;

&lt;p&gt;This ecosystem ensures that features are tested and refined before reaching enterprise users.&lt;/p&gt;

&lt;p&gt;📤 Ways to Get RHEL&lt;/p&gt;

&lt;p&gt;🆓 &lt;a href="https://access.redhat.com/products/red-hat-enterprise-linux/evaluation" rel="noopener noreferrer"&gt;RHEL Evaluation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🧪 &lt;a href="https://developers.redhat.com/articles/faqs-no-cost-red-hat-enterprise-linux#" rel="noopener noreferrer"&gt;Developer Subscription (Free)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;☁️ &lt;a href="https://www.redhat.com/en/technologies/cloud-computing/cloud-access" rel="noopener noreferrer"&gt;Cloud Platforms&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🧱 &lt;a href="https://developers.redhat.com/products/rhel/ubi" rel="noopener noreferrer"&gt;UBI Containers&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🔁 &lt;a href="https://www.centos.org/centos-stream/" rel="noopener noreferrer"&gt;CentOS Stream&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🐧 &lt;a href="https://getfedora.org/" rel="noopener noreferrer"&gt;Fedora Project&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📦 E&lt;a href="https://docs.fedoraproject.org/en-US/epel/" rel="noopener noreferrer"&gt;PEL Docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📝 Summary&lt;br&gt;
Linux is a vital, open source OS powering global infrastructure.&lt;/p&gt;

&lt;p&gt;Red Hat leads in enterprise Linux with a community-driven approach.&lt;/p&gt;

&lt;p&gt;The RHEL development model is now more transparent, open, and continuous through Fedora → CentOS Stream → RHEL.&lt;/p&gt;

&lt;p&gt;** Svensk version – Swedish version below&lt;br&gt;
**&lt;/p&gt;

&lt;p&gt;Vad är Linux – och varför ska du bry dig?&lt;br&gt;
Välkommen till det första kapitlet i Red Hat Unwrapped, en nybörjarvänlig serie som guidar dig genom Linux, öppen källkod och företagsklassad teknik med Red Hat.&lt;/p&gt;

&lt;p&gt;🧠 Vad är Linux?&lt;br&gt;
Linux är ett operativsystem med öppen källkod, byggt kring en kärna som utvecklades av Linus Torvalds 1991. Det driver:&lt;/p&gt;

&lt;p&gt;Webbservrar&lt;/p&gt;

&lt;p&gt;Android-mobiler&lt;/p&gt;

&lt;p&gt;Molnplattformar som AWS, Azure och Google Cloud&lt;/p&gt;

&lt;p&gt;Superdatorer&lt;/p&gt;

&lt;p&gt;Finansiella system&lt;/p&gt;

&lt;p&gt;Det finns många olika varianter – kallade distributioner – till exempel Ubuntu, Debian, Fedora och Red Hat Enterprise Linux (RHEL).&lt;/p&gt;

&lt;p&gt;🚀 Varför lära sig Linux?&lt;br&gt;
Att kunna Linux öppnar dörrar till yrkesroller som:&lt;/p&gt;

&lt;p&gt;Systemadministratör&lt;/p&gt;

&lt;p&gt;DevOps-ingenjör&lt;/p&gt;

&lt;p&gt;Molnspecialist&lt;/p&gt;

&lt;p&gt;Cybersäkerhetsexpert&lt;/p&gt;

&lt;p&gt;Inom IT- och teknikvärlden är Linux inte längre ett alternativ – det är en grundförutsättning.&lt;/p&gt;

&lt;p&gt;🔓 Vad gör Linux speciellt?&lt;br&gt;
Öppen källkod – frihet att se, ändra och bidra till koden&lt;/p&gt;

&lt;p&gt;CLI-fokus – kraftfull kommandoradsbaserad hantering&lt;/p&gt;

&lt;p&gt;Flexibilitet – du bygger system som passar dina behov&lt;/p&gt;

&lt;p&gt;💡 Vad är öppen källkod?&lt;br&gt;
Öppen källkod är mer än gratis kod. Det handlar om:&lt;/p&gt;

&lt;p&gt;Samarbete över hela världen&lt;/p&gt;

&lt;p&gt;Transparent och säker utveckling&lt;/p&gt;

&lt;p&gt;Gemenskaper som bygger tillsammans&lt;/p&gt;

&lt;p&gt;Licenser som främjar frihet (GPL, MIT, Apache m.fl.)&lt;/p&gt;

&lt;p&gt;Red Hat är en nyckelspelare i det öppna ekosystemet.&lt;/p&gt;

&lt;p&gt;🛠 Vad är en Linux-distribution?&lt;br&gt;
En distribution är ett komplett operativsystem som inkluderar Linux-kärnan, verktyg och användargränssnitt. Exempel:&lt;/p&gt;

&lt;p&gt;Fedora – innovationsfokuserad&lt;/p&gt;

&lt;p&gt;CentOS Stream – rullande förhandsvisning av RHEL&lt;/p&gt;

&lt;p&gt;RHEL – stabil, säker och redo för företag&lt;/p&gt;

&lt;p&gt;👩‍💻 Vem är Red Hat?&lt;br&gt;
Red Hat är ett av världens mest inflytelserika företag inom öppen källkod. De utvecklar RHEL – ett system som används globalt inom finans, sjukvård, utbildning och molninfrastruktur.&lt;/p&gt;

&lt;p&gt;De står också bakom:&lt;/p&gt;

&lt;p&gt;Fedora – community och innovation&lt;/p&gt;

&lt;p&gt;CentOS Stream – vägen till RHEL&lt;/p&gt;

&lt;p&gt;OpenShift – plattform för containers och Kubernetes&lt;/p&gt;

&lt;p&gt;🔄 Hur utvecklas Red Hat Enterprise Linux?&lt;br&gt;
Red Hats utvecklingsmodell:&lt;/p&gt;

&lt;p&gt;Fedora – testbädd för ny teknik&lt;/p&gt;

&lt;p&gt;CentOS Stream – kontinuerlig leverans inför nästa RHEL-version&lt;/p&gt;

&lt;p&gt;RHEL – företagssäker, långsiktigt underhållen&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Why Consider NixOS for Your Environment?</title>
      <dc:creator>Hamed0406</dc:creator>
      <pubDate>Tue, 27 Aug 2024 11:45:48 +0000</pubDate>
      <link>https://dev.to/hamed0406/why-consider-nixos-for-your-environment-2989</link>
      <guid>https://dev.to/hamed0406/why-consider-nixos-for-your-environment-2989</guid>
      <description>&lt;p&gt;&lt;strong&gt;Why Consider NixOS for Your Environment?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When managing environments—whether for development, testing, or production—choosing the right tools is crucial. NixOS, a unique Linux distribution, offers several advantages that make it a strong contender in certain scenarios, especially when compared to more traditional systems and modern orchestration tools like Kubernetes and OpenShift. In this post, we'll explore what NixOS is, why you might choose it over other options like Docker, Kubernetes, or OpenShift, and how it can be particularly effective in managing ephemeral environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is NixOS?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;NixOS is a Linux distribution built around the Nix package manager, which employs a purely functional approach to package management and system configuration. With NixOS, you can define your entire system declaratively, ensuring that environments are reproducible and consistent across different machines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features of NixOS:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Declarative Configuration: Everything from installed packages to system services is defined in a single configuration file.&lt;/li&gt;
&lt;li&gt;Reproducibility: NixOS ensures environments can be reproduced exactly, avoiding the typical "it works on my machine" issues.&lt;/li&gt;
&lt;li&gt;Atomic Upgrades and Rollbacks: Perform system upgrades or rollbacks with guaranteed consistency.&lt;/li&gt;
&lt;li&gt;Isolation and Immutability: Dependencies are managed in isolated environments, preventing conflicts and ensuring multiple versions of packages can coexist without issues.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why Use NixOS?&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;If you're considering using NixOS, it’s likely because you need a system that prioritizes control, reproducibility, and safe upgrades. Here’s why NixOS might be the right choice for your environment:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Reproducibility and Consistency:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;NixOS provides absolute reproducibility of environments. The entire system state is declared in configuration files, ensuring that any machine set up with the same configuration behaves identically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Safe and Reliable Upgrades:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;NixOS supports atomic upgrades and rollbacks, reducing the risk of breaking your environment during updates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Full System Control:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Manage the entire system configuration with NixOS, not just applications. This level of control is beneficial for environments that require customization at every level.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Isolation of Dependencies:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;NixOS’s package management system handles dependencies robustly, reducing the risk of conflicts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Flexibility and Customization:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;NixOS is highly customizable, allowing you to build environments tailored to your specific needs—whether for development, production, or testing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NixOS vs. Docker&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Docker is a widely-used tool for containerization, offering a convenient way to package and deploy applications. However, NixOS provides advantages that might make it a better choice in certain scenarios:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Reproducibility:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While Docker images can be reproducible, NixOS offers stronger guarantees due to its purely functional approach.&lt;br&gt;
System Configuration:&lt;/p&gt;

&lt;p&gt;NixOS manages the entire operating system declaratively, whereas Docker focuses more on the application layer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Dependency Management:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;NixOS’s package management system handles dependencies more effectively, reducing the risk of conflicts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Efficiency:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;NixOS environments can be more resource-efficient than a full Docker setup, especially if containerization is unnecessary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Atomic Rollbacks:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;NixOS’s ability to rollback system states provides safety and stability in environments where uptime is critical.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NixOS as an Ephemeral Environment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ephemeral environments—created, used, and discarded as needed—are often used in CI/CD pipelines, testing, and development. NixOS is particularly well-suited for managing these types of environments:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Declarative Setup:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Define your entire ephemeral environment in a Nix configuration file, ensuring consistency and reproducibility.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Isolation:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;NixOS’s package management ensures environments are isolated, preventing changes in one environment from affecting others.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Fast Provisioning:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With tools like NixOps or Docker containers based on NixOS, you can quickly spin up and tear down environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Efficient Resource Usage:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;NixOS environments are minimal, including only the necessary dependencies—ideal for ephemeral use cases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NixOS vs. Kubernetes and OpenShift&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Kubernetes and OpenShift are powerful platforms for container orchestration, particularly in multi-node, distributed environments. However, NixOS offers benefits in scenarios where full-scale container orchestration might be overkill:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Simplicity:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;NixOS is simpler to manage compared to Kubernetes and OpenShift, which require significant resources and expertise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Full System Control:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;NixOS manages the entire system, including the operating system—something Kubernetes and OpenShift don’t focus on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Resource Efficiency:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;NixOS can be more resource-efficient in single-node or simple deployments, where the overhead of Kubernetes/OpenShift is unnecessary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Reproducibility:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While Kubernetes/OpenShift focuses on application-level reproducibility, NixOS ensures reproducibility at the system level.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Customization:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;NixOS offers more flexibility in customizing the operating system environment, making it ideal for scenarios requiring more than just container orchestration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Cases Beyond Containerization:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If your applications are not containerized or if you have legacy systems that are difficult to containerize, NixOS may be a better fit.&lt;br&gt;
When to Choose NixOS?&lt;br&gt;
You might choose NixOS over Docker, Kubernetes, or OpenShift if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need absolute reproducibility across environments, not just for applications but for the entire system.&lt;/li&gt;
&lt;li&gt;Control and customization of the operating system are critical.&lt;/li&gt;
&lt;li&gt;Resource efficiency and simplicity are more important than distributed orchestration features.&lt;/li&gt;
&lt;li&gt;Non-containerized applications or legacy systems need to be managed alongside modern software.&lt;/li&gt;
&lt;li&gt;You prefer a declarative approach to system configuration that integrates all aspects of the environment into a single, manageable format.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;NixOS is a powerful tool for those who prioritize reproducibility, control, and simplicity in their computing environments. While Kubernetes, OpenShift, and Docker each have their strengths, NixOS offers a unique approach that is particularly well-suited for environments where full system control, reproducibility, and efficiency are paramount. Whether you're managing ephemeral environments, looking for a robust alternative to traditional containerization, or simply want a highly customizable and reliable operating system, NixOS provides compelling advantages worth considering. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F00zxliqyxesvgplnr9pp.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F00zxliqyxesvgplnr9pp.jpg" alt="Image description" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>nixos</category>
      <category>ephemeral</category>
      <category>lagacy</category>
    </item>
    <item>
      <title>How to change place of saving models on ollama</title>
      <dc:creator>Hamed0406</dc:creator>
      <pubDate>Tue, 30 Jul 2024 07:58:14 +0000</pubDate>
      <link>https://dev.to/hamed0406/how-to-change-place-of-saving-models-on-ollama-4ko8</link>
      <guid>https://dev.to/hamed0406/how-to-change-place-of-saving-models-on-ollama-4ko8</guid>
      <description>&lt;p&gt;To change the default location where Ollama saves its models, you need to set an environment variable called &lt;strong&gt;OLLAMA_MODELS&lt;/strong&gt; to the desired directory. Here's how you can do it on different operating systems:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Windows&lt;/strong&gt;&lt;br&gt;
Open Environment Variables:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Press Win + X and select System.&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;In the System window, click on Advanced system settings on the left sidebar.&lt;/li&gt;
&lt;li&gt;In the System Properties window, click on the Environment Variables... button.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Create a New Environment Variable:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;In the Environment Variables window, look for the System variables section and click on New....&lt;/li&gt;
&lt;li&gt;Enter OLLAMA_MODELS for the Variable name.&lt;/li&gt;
&lt;li&gt;Enter the path where you want to save the model files for the Variable value (e.g., D:\OllamaModels).&lt;/li&gt;
&lt;li&gt;Click OK to save the new environment variable.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Restart Ollama:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Quit Ollama if it's running.&lt;/li&gt;
&lt;li&gt;Restart Ollama to ensure it recognizes the new environment variable.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Verify the New Location:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Download a new model and check if it is saved in the new directory (e.g., D:\OllamaModels\models\blobs).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Linux&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Edit Systemd Service:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Open a terminal and run systemctl edit ollama.service.&lt;/li&gt;
&lt;li&gt;Add the line Environment="OLLAMA_MODELS=/path/to/new/location" under the [Service] section.&lt;/li&gt;
&lt;li&gt;Save and exit the editor.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Reload and Restart:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Run systemctl daemon-reload.&lt;/li&gt;
&lt;li&gt;Restart Ollama with systemctl restart ollama.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;macOS&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Set Environment Variable:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Open a terminal and use the command launchctl setenv OLLAMA_MODELS /path/to/new/location.&lt;/li&gt;
&lt;li&gt;Restart the Ollama application to apply the changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the environment variable approach does not work, another method is to create a symbolic link (symlink) or use a bind mount (on Linux). This involves moving the models directory to the new location and linking it back to the original path, ensuring Ollama can still find the models without needing to be reconfigured.&lt;/p&gt;

&lt;p&gt;For detailed steps and troubleshooting, you can refer to the official documentation and community solutions:&lt;/p&gt;

&lt;p&gt;GitHub Issue Discussions: &lt;a href="https://github.com/ollama/ollama/issues/2859" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;
Step-by-step guide: SkillsFoster&lt;br&gt;
Bind Mount for Linux: Arch Linux Forums&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Effortlessly Retrieve Data from Azure Blob Storage with PowerShell</title>
      <dc:creator>Hamed0406</dc:creator>
      <pubDate>Wed, 03 Apr 2024 10:58:45 +0000</pubDate>
      <link>https://dev.to/hamed0406/effortlessly-retrieve-data-from-azure-blob-storage-with-powershell-2ajd</link>
      <guid>https://dev.to/hamed0406/effortlessly-retrieve-data-from-azure-blob-storage-with-powershell-2ajd</guid>
      <description>&lt;h2&gt;
  
  
  Why is a PowerShell script beneficial for interacting with Azure Blobs?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Streamlines processes by leveraging the Azure REST API for automation.&lt;/li&gt;
&lt;li&gt;Seamlessly integrates with Azure Functions for enhanced cloud functionality.&lt;/li&gt;
&lt;li&gt;Utilizes standard HTTP/HTTPS protocols for secure and reliable downloads from Azure Blob Storage.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;here is script &lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Hamed0406/Powershell-script-utility/blob/main/DownloadFromAzureBlob/downloadFromBlob.ps1"&gt;Link to the repo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This PowerShell script is designed to interact with Azure Blob Storage by retrieving a list of blob items from a given storage container and then, optionally, downloading those items to a local directory. The script is divided into two main functions: Get-BlobItems and Invoke-BlobItems. Both functions require a URL to the Blob Storage container as a parameter, which must include a Shared Access Signature (SAS) token for authentication.&lt;/p&gt;

&lt;h2&gt;
  
  
  Function 1: Get-BlobItems
&lt;/h2&gt;

&lt;p&gt;The Get-BlobItems function's primary purpose is to list all the blob items within a specified Azure Blob Storage container.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.Splitting the URL:&lt;/strong&gt; It begins by splitting the input URL into two parts: the base URI and the SAS token. This is necessary because the SAS token is used for authenticated access, and the base URI identifies the storage container.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.Creating a New URL for the API Request:&lt;/strong&gt; It then constructs a new URL that includes the base URI, a query to list the blobs (restype=container&amp;amp;comp=list), and the SAS token. This URL is used to make a REST API call to Azure Blob Storage.&lt;/p&gt;

&lt;p&gt;**3.Invoking the REST API: **The script uses Invoke-RestMethod to call the Azure REST API with the newly constructed URL. The response is expected to be in XML format, listing all blobs within the container.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4.Processing the XML Response:&lt;/strong&gt; The XML response is parsed to extract the names of the blob items. These names are relative paths to the blobs within the storage container.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5.Download URLs:&lt;/strong&gt; For each blob item, a download URL is generated by combining the base URI, the blob item's name, and the SAS token. These URLs can be used to download the blob items directly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Function 2: Invoke-BlobItems
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;Invoke-BlobItems&lt;/strong&gt; function extends the capabilities of Get-BlobItems by not only listing the blob items but also downloading them to a specified local path.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.URL Splitting and API Request URL Construction:&lt;/strong&gt; This part is identical to the Get-BlobItems function, where the function splits the input URL and constructs a new URL to invoke the Azure REST API for listing blobs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.XML Response Handling and Blob Listing:&lt;/strong&gt; The response from the Azure REST API is processed in the same way, extracting the names of the blob items from the XML.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.Downloading Blob Items:&lt;/strong&gt; For each blob item listed in the XML response, the function checks if the local directory structure exists (based on the blob's relative path) and creates it if necessary. It then uses System.Net.WebClient to download each blob item to the specified local directory, constructing the full download URL for each item using the base URI, blob name, and SAS token.&lt;/p&gt;

&lt;h2&gt;
  
  
  Illustrative Diagram
&lt;/h2&gt;

&lt;p&gt;To better understand the flow and components of the script, let's visualize the process with a diagram:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frz2v7uvu5p2n0uvnig77.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frz2v7uvu5p2n0uvnig77.jpeg" alt="Image description" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.Input:&lt;/strong&gt; The user provides a URL containing the base URI to the Blob Storage container and a SAS token for authentication.&lt;br&gt;
&lt;strong&gt;2.URL Processing:&lt;/strong&gt; The script splits the URL to extract the base URI and SAS token, then constructs a new URL for the REST API call.&lt;br&gt;
&lt;strong&gt;3.API Call:&lt;/strong&gt; A REST API request is made to Azure Blob Storage to list the blobs in the container.&lt;br&gt;
&lt;strong&gt;4.Response Handling:&lt;/strong&gt; The XML response is parsed to extract the names of the blobs.&lt;br&gt;
&lt;strong&gt;5.Download URL Generation:&lt;/strong&gt; For each blob, a download URL is generated.&lt;br&gt;
&lt;strong&gt;6.File Download:&lt;/strong&gt; In the Invoke-BlobItems function, the blobs are downloaded to a specified local directory.&lt;br&gt;
The user inputs a URL with a SAS token.&lt;br&gt;
The script processes this URL, separating the base URI and the SAS token.&lt;br&gt;
A REST API call is made to list the blobs in the container.&lt;br&gt;
The blobs are listed and optionally downloaded to a local directory.&lt;/p&gt;

&lt;p&gt;Happy coding , until next time ! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffinvuiuf4c1h1vziz04s.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffinvuiuf4c1h1vziz04s.jpg" alt="Image description" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>azureblos</category>
      <category>powershell</category>
      <category>automation</category>
    </item>
    <item>
      <title>Transitioning from Java to .NET as Java Developer</title>
      <dc:creator>Hamed0406</dc:creator>
      <pubDate>Wed, 13 Mar 2024 14:10:43 +0000</pubDate>
      <link>https://dev.to/hamed0406/transitioning-from-java-to-net-as-java-developer-1b51</link>
      <guid>https://dev.to/hamed0406/transitioning-from-java-to-net-as-java-developer-1b51</guid>
      <description>&lt;p&gt;If you are Java developer and you want to move to .NET this list is for you . &lt;/p&gt;

&lt;p&gt;Transitioning from Java to .NET can be a smooth process, especially with your background in programming and understanding of object-oriented concepts. Here are some steps and resources to help you get started with .NET development:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Understand the .NET Ecosystem
&lt;/h2&gt;

&lt;p&gt;.NET Framework vs .NET Core vs .NET 5/6/7+: Understand the differences between these platforms. .NET Core and its successor, .NET 5/6/7+, are cross-platform, supporting Windows, Linux, and macOS, which is likely more appealing to someone with a Java background.&lt;br&gt;
Languages: C# is the most popular language for .NET development, but you can also use F# for functional programming or VB.NET.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Set Up Your Development Environment
&lt;/h2&gt;

&lt;p&gt;Install Visual Studio: For Windows developers, Visual Studio is the most powerful IDE for .NET development. Visual Studio Community is free for individual developers, open-source projects, academic research, and small professional teams.&lt;br&gt;
Visual Studio Code: If you prefer a lightweight editor that is also powerful and cross-platform, Visual Studio Code is a great option. It supports C#, F#, and VB.NET through extensions.&lt;br&gt;
.NET SDK: Ensure you have the latest .NET SDK (Software Development Kit) installed for developing .NET applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Learn C
&lt;/h2&gt;

&lt;p&gt;Official Documentation: Start with Microsoft's official documentation for C#. It's comprehensive and includes tutorials for both beginners and experienced developers.&lt;br&gt;
Online Courses: Platforms like Pluralsight, Udemy, and Coursera offer courses on C# and .NET development. Many of these are created by industry experts.&lt;br&gt;
Books: Books like "C# 9.0 in a Nutshell" and "Pro C# 8 with .NET Core 3" are great for beginners and experienced developers alike.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Build Projects
&lt;/h2&gt;

&lt;p&gt;Start Simple: Begin with console applications to understand syntax and basic concepts like loops, conditionals, and data types.&lt;br&gt;
Move to Web or Desktop Applications: Use ASP.NET Core for web development. For desktop applications, consider Windows Forms or WPF (Windows Presentation Foundation) if you're focusing on Windows. For cross-platform GUI, you can explore MAUI or Avalonia.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Explore .NET Libraries and Frameworks
Entity Framework: Learn about Entity Framework for data access.
ASP.NET Core: Dive into web development with ASP.NET Core, which supports building web apps and APIs.
Blazor: For SPA (Single Page Application) fans coming from a Java/JavaScript background, Blazor allows you to build interactive web UIs using C# instead of JavaScript.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  6. Join the Community
&lt;/h2&gt;

&lt;p&gt;Forums and Social Media: Platforms like Stack Overflow, Reddit, and Twitter are great places to ask questions and connect with other developers.&lt;br&gt;
GitHub: Explore open-source .NET projects to see how others structure their applications and solve common problems.&lt;br&gt;
Transitioning to a new development ecosystem can be challenging but rewarding. Your experience as a Java developer will definitely give you a solid foundation, especially in understanding object-oriented programming, which is a core concept in .NET development. Happy coding!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Microsoft Entra ID</title>
      <dc:creator>Hamed0406</dc:creator>
      <pubDate>Wed, 07 Feb 2024 20:57:22 +0000</pubDate>
      <link>https://dev.to/hamed0406/microsoft-entra-id-b6l</link>
      <guid>https://dev.to/hamed0406/microsoft-entra-id-b6l</guid>
      <description>&lt;p&gt;Microsoft Entra is a suite of identity and access management solutions designed to secure access for every user, application, and device within an organization. As of my last update in April 2023, Microsoft Entra includes various components aimed at enhancing security and simplifying identity management across a range of scenarios, from cloud services to hybrid environments.&lt;/p&gt;

&lt;p&gt;The term "Microsoft Entra ID" could refer to the identities managed within the Microsoft Entra ecosystem, particularly focusing on how individual users are identified, authenticated, and authorized to access resources and applications. In the broader context, Microsoft Entra helps manage and secure user identities with services like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Microsoft Azure Active Directory (Azure AD)&lt;/strong&gt;: Azure AD is the cloud-based identity and access management service, which is a core component of Microsoft Entra. It enables Single Sign-On (SSO), multi-factor authentication (MFA), and conditional access policies among other features.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Microsoft Entra Verified ID&lt;/strong&gt;: This is a service within Microsoft Entra that focuses on decentralized identity verification, allowing individuals and organizations to own and control their digital identities without relying on a central authority.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Microsoft Entra Permissions Management&lt;/strong&gt;: Formerly known as CloudKnox, this component offers visibility and control over permissions and actions across your cloud infrastructure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Microsoft Entra Workload Identities&lt;/strong&gt;: This service is focused on managing and securing non-human identities used by applications, services, and workloads that require access to resources.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together, these services under the Microsoft Entra umbrella work to ensure that identities, whether they belong to human users or are workload identities used by applications and services, are securely managed and authenticated. &lt;/p&gt;

</description>
      <category>azure</category>
      <category>identiymanager</category>
      <category>security</category>
    </item>
    <item>
      <title>Git Tools - Submodules</title>
      <dc:creator>Hamed0406</dc:creator>
      <pubDate>Mon, 28 Nov 2022 12:13:35 +0000</pubDate>
      <link>https://dev.to/hamed0406/git-tools-submodules-5hlp</link>
      <guid>https://dev.to/hamed0406/git-tools-submodules-5hlp</guid>
      <description>&lt;h2&gt;
  
  
  What is Submodules and why developer need it ?
&lt;/h2&gt;

&lt;p&gt;Git Tools - Submodules is tools to let developer have a child repository under a parent repository .&lt;br&gt;&lt;br&gt;
in other words as git official document said : &lt;br&gt;
"Submodules allow you to keep a Git repository as a subdirectory of another Git repository. This lets you clone another repository into your project and keep your commits separate." [1]&lt;/p&gt;

&lt;p&gt;configuration file for Git-Submodules is ".gitmodules" . &lt;br&gt;
The new submodule can be added by this command : &lt;/p&gt;

&lt;p&gt;&lt;code&gt;git submodule  add   the absolute or relative URL of the project&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;for example :&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git submodule add https://gitlab.com/Hamed0406/springboot-dashboed&lt;/code&gt;&lt;br&gt;
after running the command this lines will be added to&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[submodule "springboot-dashboed"]
    path = springboot-dashboed
    url = https://gitlab.com/Hamed0406/springboot-dashboed

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to  .gitmodules file.&lt;/p&gt;

&lt;p&gt;Note : if you have private repo as submodules and share your project with others, you have to be sure they have access to the private repo.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;git-scm.com , [&lt;a href="https://git-scm.com/book/en/v2/Git-Tools-Submodules" rel="noopener noreferrer"&gt;https://git-scm.com/book/en/v2/Git-Tools-Submodules&lt;/a&gt;]&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>frontend</category>
      <category>resources</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Free Badge/certification</title>
      <dc:creator>Hamed0406</dc:creator>
      <pubDate>Mon, 07 Nov 2022 14:37:49 +0000</pubDate>
      <link>https://dev.to/hamed0406/free-badgecertification-38jl</link>
      <guid>https://dev.to/hamed0406/free-badgecertification-38jl</guid>
      <description>&lt;p&gt;In this post I share some information about difference free certification and badge: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Become an OCI Foundations Associate 
&lt;a href="https://mylearn.oracle.com/learning-path/become-an-oci-foundations-associate/108448"&gt;Become an OCI Foundations Associate&lt;/a&gt;
Last check 2022-11-07&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--W54RSuD---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ixiaisnaet0n5q3mzlk2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--W54RSuD---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ixiaisnaet0n5q3mzlk2.png" alt="Associate " width="725" height="867"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Become an Oracle Cloud Data Management Foundations Associate
&lt;a href="https://mylearn.oracle.com/learning-path/become-an-oracle-cloud-data-management-foundations-associate/107013"&gt;Become an Oracle Cloud Data Management Foundations Associate&lt;/a&gt;
Last check 2022-11-07&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--W54RSuD---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ixiaisnaet0n5q3mzlk2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--W54RSuD---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ixiaisnaet0n5q3mzlk2.png" alt="Associate " width="725" height="867"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>free</category>
      <category>certification</category>
      <category>badage</category>
    </item>
    <item>
      <title>Container Technology</title>
      <dc:creator>Hamed0406</dc:creator>
      <pubDate>Sun, 06 Nov 2022 18:32:17 +0000</pubDate>
      <link>https://dev.to/hamed0406/container-technology-343j</link>
      <guid>https://dev.to/hamed0406/container-technology-343j</guid>
      <description>&lt;h2&gt;
  
  
  Containerized Applications
&lt;/h2&gt;

&lt;p&gt;Software applications typically depend on other libraries, configuration files, or services that are provided by the runtime environment. The traditional runtime environment for a software application is a physical host or virtual machine, and application dependencies are installed as part of the host.&lt;/p&gt;

&lt;p&gt;For example, consider a Python application that requires access to a common shared library that implements the TLS protocol. Traditionally, a system administrator installs the required package that provides the shared library before installing the Python application.&lt;/p&gt;

&lt;p&gt;The major drawback to a traditionally deployed software application is that the application’s dependencies are closely related to the runtime environment.&lt;/p&gt;

&lt;p&gt;An application may break when any updates or patches are applied to the base operating system (OS).&lt;/p&gt;

&lt;p&gt;For example, an OS update to the TLS shared library removes TLS 1.0 as a supported protocol. This breaks the deployed Python application because it is written to use the TLS 1.0 protocol for network requests. This forces the system administrator to roll back the OS update to keep the application running, preventing other applications from using the benefits of the updated package.&lt;/p&gt;

&lt;p&gt;Therefore, a company developing traditional software applications may require a full set of tests to guarantee that an OS update does not affect applications running on the host.&lt;/p&gt;

&lt;p&gt;Furthermore, a traditionally deployed application must be stopped before updating the associated dependencies. To minimize application downtime, organizations design and implement complex systems to provide high availability of their applications. Maintaining multiple applications on a single host often becomes cumbersome, and any deployment or update has the potential to break one of the organization’s applications.&lt;/p&gt;

&lt;p&gt;Alternatively, a software application can be deployed using a container.&lt;/p&gt;

&lt;p&gt;A container is a set of one or more processes that are isolated from the rest of the system.&lt;/p&gt;

&lt;p&gt;Containers provide many of the same benefits as virtual machines, such as security, storage, and network isolation. Containers require far fewer hardware resources and are quick to start and terminate. They also isolate the libraries and the runtime resources (such as CPU and storage) for an application to minimize the impact of any OS update to the host OS, as described in Figure 1.1: Container versus operating system differences.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HZWFt-aJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3co22nigg8mc4vneeyhy.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HZWFt-aJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3co22nigg8mc4vneeyhy.PNG" alt="Container versus operating system differences" width="880" height="348"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Figure 1.1&lt;/p&gt;

&lt;p&gt;The use of containers not only helps with the efficiency, elasticity, and reusability of the hosted applications, but also with application portability. The Open Container Initiative (OCI) provides a set of industry standards that define a container runtime specification and a container image specification. The image specification defines the format for the bundle of files and metadata that form a container image. When you build an application as a container image, which complies with the OCI standard, you can use any OCI-compliant container engine to execute the application.&lt;/p&gt;

&lt;p&gt;The following are other major advantages to using containers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Low hardware footprint&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Containers use OS internal features to create an isolated environment where resources are managed using OS facilities such as namespaces and cgroups (control groups). This approach minimizes the amount of CPU and memory overhead compared to a virtual machine hypervisor. Running an application in a VM is a way to create isolation from the running environment, but it requires a heavy layer of services to support the same low hardware footprint isolation provided by containers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Environment isolation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Containers work in a closed environment where changes made to the host OS or other applications do not affect the container. Because the libraries needed by a container are self-contained, the application can run without disruption. For example, each application can exist in its own container with its own set of libraries. An update made to one container does not affect other containers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Quick deployment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Containers deploy quickly because there is no need to install the entire underlying operating system. Normally, to support the isolation, a new OS installation is required on a physical host or VM, and any simple update might require a full OS restart. A container restart does not require stopping any services on the host OS.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiple environment deployment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In a traditional deployment scenario using a single host, any environment differences could break the application. Using containers, however, all application dependencies and environment settings are encapsulated in the container image.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reusability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The same container can be reused without the need to set up a full OS. For example, the same database container that provides a production database service can be used by each developer to create a development database during application development. Using containers, there is no longer a need to maintain separate production and development database servers. A single container image is used to create instances of the database service.&lt;/p&gt;

&lt;p&gt;Often, a software application with all of its dependent services (databases, messaging, file systems) are made to run in a single container. This can lead to the same problems associated with traditional software deployments to virtual machines or physical hosts. In these instances, a multicontainer deployment may be more suitable.&lt;/p&gt;

&lt;p&gt;Furthermore, containers are an ideal approach when using microservices for application development. Each service is encapsulated in a lightweight and reliable container environment that can be deployed to a production or development environment. The collection of containerized services required by an application can be hosted on a single machine, removing the need to manage a machine for each service.&lt;/p&gt;

&lt;p&gt;In contrast, many applications are not well suited for a containerized environment. For example, applications accessing low-level hardware information, such as memory, file systems, and devices might be unreliable due to container limitations.&lt;/p&gt;

&lt;p&gt;Refences&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://opencontainers.org/"&gt;opencontainers&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Red Hat OpenShift I:Containers &amp;amp; Kubernetes By Red Hat chapter 1&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.opcito.com/blogs/how-to-deploy-docker-images-on-openshift"&gt;Image cover&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>containerapps</category>
      <category>microservices</category>
    </item>
    <item>
      <title>Linux Automation - Centralized Logging</title>
      <dc:creator>Hamed0406</dc:creator>
      <pubDate>Mon, 24 Oct 2022 09:44:48 +0000</pubDate>
      <link>https://dev.to/hamed0406/linux-automation-centralized-logging-3dfa</link>
      <guid>https://dev.to/hamed0406/linux-automation-centralized-logging-3dfa</guid>
      <description>&lt;p&gt;In this tutorial , I teach you how to use Rsyslog to configure central-log server on CentOS 7 / RHEL 7.&lt;br&gt;
Why we need logging ?&lt;br&gt;
To find out what's happing on the system/find proper solation to a problem .&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;All commands should be run as root user.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1- Configure Server side
&lt;/h2&gt;

&lt;p&gt;To install Rsyslog package , if you don't have it :&lt;/p&gt;

&lt;p&gt;&lt;code&gt;yum -y install rsyslog&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;configurations file for syslog is located on /etc/rsyslog.conf .&lt;br&gt;
Use your favorite file editor to edit rsyslog.conf and uncomment follows lines :&lt;/p&gt;

&lt;h1&gt;
  
  
  Provides UDP syslog receptio
&lt;/h1&gt;

&lt;p&gt;$ModLoad imudp&lt;br&gt;
$UDPServerRun 514&lt;/p&gt;

&lt;p&gt;Restart the rsyslog service once your changes have been saved.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;systemctl restart rsyslog&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Verifying syslog server listening on the port 514&lt;/p&gt;

&lt;p&gt;&lt;code&gt;netstat -antup | grep 514&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Output should be like this :&lt;/p&gt;

&lt;p&gt;&lt;code&gt;udp        0      0 0.0.0.0:514             0.0.0.0:*                 1467/rsyslog&lt;br&gt;
udp6       0      0 :::514                  :::*                    1467/rsyslogdd&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If you have firewall on host server ,you need to enable inbound port 514/UDP&lt;/p&gt;

&lt;p&gt;Enabling firewall inbound port TCP&lt;/p&gt;

&lt;p&gt;&lt;code&gt;firewall-cmd --permanent --add-port=514/tc&lt;br&gt;
firewall-cmd --reloadp&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Enabling firewall inbound port UDP&lt;/p&gt;

&lt;p&gt;&lt;code&gt;firewall-cmd --permanent --add-port=514/ud&lt;br&gt;
firewall-cmd --reloadp&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2- Configure client side
&lt;/h2&gt;

&lt;p&gt;Install rsyslog package on client , if it is not installed .&lt;/p&gt;

&lt;p&gt;configure client by editing /etc/rsyslog.conf by Add the following logging rule below the "RULES" line and restart the rsyslog service.&lt;br&gt;
*.info,@NameOfYourServer/IPAdressFQDN&lt;br&gt;
Restart the rsyslog service once your changes have been saved.&lt;br&gt;
Now all log messages of info priority or higher appear in /var/log/messages on Log-server.&lt;br&gt;
Thank you for reading and have happy coding.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
