<?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: Arth Vhanesa</title>
    <description>The latest articles on DEV Community by Arth Vhanesa (@arthvhanesa).</description>
    <link>https://dev.to/arthvhanesa</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%2F1023168%2F13b235c3-fcac-423a-bea8-e9c95e841b81.jpg</url>
      <title>DEV Community: Arth Vhanesa</title>
      <link>https://dev.to/arthvhanesa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/arthvhanesa"/>
    <language>en</language>
    <item>
      <title>How to Remove Secrets From a Git Repository</title>
      <dc:creator>Arth Vhanesa</dc:creator>
      <pubDate>Mon, 21 Aug 2023 04:34:30 +0000</pubDate>
      <link>https://dev.to/arthvhanesa/how-to-remove-secrets-from-a-git-repository-36e4</link>
      <guid>https://dev.to/arthvhanesa/how-to-remove-secrets-from-a-git-repository-36e4</guid>
      <description>&lt;p&gt;As developers, we often work with sensitive information such as API keys, passwords, and other secrets. It’s essential to keep this information secure and out of the hands of unauthorized users.&lt;/p&gt;

&lt;p&gt;However, accidents can happen, and sometimes we forgot to add a file containing secrets to the &lt;code&gt;.gitignore&lt;/code&gt; and it is accidentally pushed to a Git repository. Even if the secrets are later removed from the repository, they can still be accessed through the commit history which is a potential breach of security.&lt;/p&gt;

&lt;p&gt;It’s important to take steps to remove secrets from a Git repository as soon as possible after they are accidentally pushed to ensure your secret information remains safe without affecting other files and commits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Remove secrets using the &lt;code&gt;filter-branch&lt;/code&gt; command
&lt;/h2&gt;

&lt;p&gt;If you’ve accidentally pushed secrets to a Git repository, don’t worry – there are several ways to remove them entirely from the repository. One way is to use the &lt;code&gt;filter-branch&lt;/code&gt; command, which is a built-in Git command that allows you to rewrite the commit history of a repository.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Use the &lt;code&gt;filter-branch&lt;/code&gt; command
&lt;/h3&gt;

&lt;p&gt;Use the &lt;code&gt;filter-branch&lt;/code&gt; command to remove a file from the commit history of a repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git filter-branch &lt;span class="nt"&gt;--force&lt;/span&gt; &lt;span class="nt"&gt;--index-filter&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s2"&gt;"git rm --cached --ignore-unmatch &amp;lt;PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA&amp;gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--prune-empty&lt;/span&gt; &lt;span class="nt"&gt;--tag-name-filter&lt;/span&gt; &lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="nt"&gt;--&lt;/span&gt; &lt;span class="nt"&gt;--all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run this command to rewrite the commit history of the repository, removing any references to the given file. It’s important to note that this command can be destructive, so make sure you understand what it does before using it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;git filter-branch&lt;/code&gt;: Used to rewrite the Git revision history.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;--force&lt;/code&gt;: Overrides some safety checks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;--index-filter&lt;/code&gt;: Specifies a filter that modifies the index, or staging area, of each commit. In this case, the filter is &lt;code&gt;"git rm --cached --ignore-unmatch &amp;lt;PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA&amp;gt;"&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;"git rm --cached --ignore-unmatch &amp;lt;PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA&amp;gt;"&lt;/code&gt;: Removes the specified file from the index, but not from the working tree. The &lt;code&gt;--ignore-unmatch&lt;/code&gt; option prevents the command from failing if the file is not present in a particular commit.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;--prune-empty&lt;/code&gt;: Removes any empty commits that may be created as a result of removing the file.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;--tag-name-filter cat&lt;/code&gt;: Specifies how to handle tags. In this case, it specifies that tags should be rewritten to point to the same commit as before.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;-- --all&lt;/code&gt;: Specifies that all branches and tags should be rewritten.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In addition to the &lt;code&gt;filter-branch&lt;/code&gt; command, there are other tools you can use to remove secrets from a Git repository, such as &lt;strong&gt;BFG Repo-Cleaner&lt;/strong&gt; and &lt;strong&gt;git-filter-repo&lt;/strong&gt;. You can read more about these tools in the &lt;a href="https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository"&gt;GitHub documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Add secrets into &lt;code&gt;.gitignore&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;After filtering your repository, don't forget to add the files which you've removed using &lt;code&gt;filter-branch&lt;/code&gt; containing the secret into your &lt;code&gt;.gitignore&lt;/code&gt; file to prevent it from accidentally push to the repository.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Push your local changes to a remote repository
&lt;/h3&gt;

&lt;p&gt;Once you are happy with the state of your repository, force-push your local changes to overwrite your remote repository, as well as all the branches you've pushed up:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin &lt;span class="nt"&gt;--force&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4: Push against your Git tags
&lt;/h3&gt;

&lt;p&gt;In order to remove the sensitive file from your tagged releases, you'll also need to force-push against your Git tags:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin &lt;span class="nt"&gt;--force&lt;/span&gt; &lt;span class="nt"&gt;--tags&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In conclusion, accidentally pushing secrets to a Git repository can be a security risk, but there are several ways to remove them entirely from the repository. Using the &lt;code&gt;filter-branch&lt;/code&gt; command or other tools such as BFG Repo-Cleaner and git-filter-repo, you can rewrite the commit history of the repository and remove any references to the secrets.&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>beginners</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Basics of PHP Variable Scope Explained</title>
      <dc:creator>Arth Vhanesa</dc:creator>
      <pubDate>Fri, 18 Aug 2023 02:38:48 +0000</pubDate>
      <link>https://dev.to/arthvhanesa/basics-of-php-variable-scope-explained-49o3</link>
      <guid>https://dev.to/arthvhanesa/basics-of-php-variable-scope-explained-49o3</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Variables are containers that store data values used in computer programs. The scope of a variable defines its visibility and accessibility throughout the program. Understanding PHP variable scope is crucial for efficient programming. Without a proper scope, you may encounter errors that will cost you valuable coding time. So, let's dive into the basics of PHP variable scope and get you up and running in no time!&lt;/p&gt;

&lt;h2&gt;
  
  
  Types of variable scope
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Local Variables
&lt;/h3&gt;

&lt;p&gt;Local variables are variables defined within a function or a block of code. These variables have a limited scope and can only be accessed within the function or block they are declared in. The scope of local variables does not extend beyond the function or block of code in which they are defined.&lt;/p&gt;

&lt;p&gt;Examples of local variables include parameters passed to a function and variables declared within loops or conditionals. Understanding the scope of local variables is important for maintaining code cleanliness and avoiding naming conflicts.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;calculateSum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nv"&gt;$result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;$b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// $result is a local variable&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nv"&gt;$result&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Calling the function&lt;/span&gt;
&lt;span class="nv"&gt;$sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;calculateSum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Sum: "&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nv"&gt;$sum&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Output: Sum: 8&lt;/span&gt;

&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$result&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// ERROR: Because $result is not accessible here in Global scope&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Global Variables
&lt;/h3&gt;

&lt;p&gt;Global Variables are accessible from anywhere in the PHP script. Their scope is not limited to the function where they were declared. Accessing global variables involves using the '&lt;strong&gt;global&lt;/strong&gt;' keyword before the variable's name.&lt;/p&gt;

&lt;p&gt;However, it is essential to understand that relying too much on global variables can result in hard-to-debug code. Be careful not to overwrite global variables accidentally as you can access and modify it from anywhere in the global scope.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$globalVar&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// This is a global variable&lt;/span&gt;

&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;accessGlobal&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;global&lt;/span&gt; &lt;span class="nv"&gt;$globalVar&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Using the 'global' keyword to access the global variable&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Global variable inside function: "&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nv"&gt;$globalVar&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Output: Global variable inside function: 10&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;accessGlobal&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Global variable outside function: "&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nv"&gt;$globalVar&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Output: Global variable outside function: 10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;References with Global Variables&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$language&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"PHP"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// global variable&lt;/span&gt;

&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;change_language&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nv"&gt;$lang&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nv"&gt;$lang&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"JavaScript"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Initial language: "&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nv"&gt;$language&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="s2"&gt;"&amp;lt;br&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Output: Initial language: PHP&lt;/span&gt;

&lt;span class="nf"&gt;change_language&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$language&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Updated language: "&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nv"&gt;$language&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="s2"&gt;"&amp;lt;br&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Output: Updated language: JavaScript&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, we have a global variable &lt;code&gt;$language&lt;/code&gt; initially set to "PHP". The function &lt;code&gt;change_language()&lt;/code&gt; accepts a reference to a variable, and within the function, it updates the value of the referenced variable to "JavaScript".&lt;/p&gt;

&lt;p&gt;As a result, even though the variable is declared outside the function, the change made by reference inside the function affects the global variable's value. When you run this code, you'll observe the transformation of the global variable's value from "PHP" to "JavaScript".&lt;/p&gt;

&lt;h3&gt;
  
  
  Static Variables
&lt;/h3&gt;

&lt;p&gt;Static variables are those that retain their values even after the execution of a function. The scope of static variables is within the function in which they are defined. Therefore, static variables can only be accessed within that specific function. To define a static variable, the keyword '&lt;strong&gt;static&lt;/strong&gt;' is used before the variable declaration.&lt;/p&gt;

&lt;p&gt;A good example is a counter that needs to keep track of the number of times a particular function gets called. Static variables make this possible. Static variables have a unique property that makes them quite handy in programming.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;incrementCounter&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="nv"&gt;$counter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Declaring a static variable&lt;/span&gt;
    &lt;span class="nv"&gt;$counter&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Counter: "&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nv"&gt;$counter&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="s2"&gt;"&amp;lt;br&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;incrementCounter&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// Output: Counter: 1&lt;/span&gt;
&lt;span class="nf"&gt;incrementCounter&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// Output: Counter: 2&lt;/span&gt;
&lt;span class="nf"&gt;incrementCounter&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// Output: Counter: 3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;References with Static Variables&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;track_calls&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="nv"&gt;$call_count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// static variable&lt;/span&gt;
  &lt;span class="nv"&gt;$num&lt;/span&gt; &lt;span class="o"&gt;=&amp;amp;&lt;/span&gt; &lt;span class="nv"&gt;$call_count&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// create a reference to $call_count&lt;/span&gt;
  &lt;span class="nv"&gt;$num&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Function has been called "&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nv"&gt;$call_count&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="s2"&gt;" times.&amp;lt;br&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;track_calls&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// Output: Function has been called 1 times.&lt;/span&gt;
&lt;span class="nf"&gt;track_calls&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// Output: Function has been called 2 times.&lt;/span&gt;
&lt;span class="nf"&gt;track_calls&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// Output: Function has been called 3 times.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, the &lt;code&gt;track_calls()&lt;/code&gt; function keeps track of the number of times it has been invoked using a static variable &lt;code&gt;$call_count&lt;/code&gt;. By creating a reference &lt;code&gt;$num&lt;/code&gt; to the static variable, each time the function is called, the value &lt;code&gt;$call_count&lt;/code&gt; is incremented.&lt;/p&gt;

&lt;p&gt;The use of references ensures that the same static variable is manipulated across different calls to the function, allowing you to maintain and display a cumulative call count. When you run this code, you'll see the call count increment with each function invocation.&lt;/p&gt;

&lt;h2&gt;
  
  
  SuperGlobal Variables
&lt;/h2&gt;

&lt;p&gt;SuperGlobal variables in PHP are predefined variables that are always available in all scopes throughout a PHP script. These variables are accessible from any function, class, or file without requiring any additional code to make them available. Some commonly used SuperGlobal variables in PHP include &lt;code&gt;$_SERVER&lt;/code&gt;, &lt;code&gt;$_GET&lt;/code&gt;, &lt;code&gt;$_POST&lt;/code&gt;, &lt;code&gt;$_SESSION&lt;/code&gt;, and &lt;code&gt;$_COOKIE&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;For instance, the &lt;code&gt;$_SERVER&lt;/code&gt; variable contains information such as headers, paths, and script locations that can be useful in debugging or tracking user activity, while the &lt;code&gt;$_GET&lt;/code&gt; variable allows data to be passed through the URL. It is essential to be cautious while using SuperGlobal variables as they can be modified from external requests, leading to security vulnerabilities.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Using the $_GET superglobal variable to get data from the URL query string&lt;/span&gt;
&lt;span class="nv"&gt;$name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$_GET&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'name'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="c1"&gt;// If URL is like: http://example.com/?name=John&lt;/span&gt;
&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Hello, "&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nv"&gt;$name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Output: Hello, John&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;PHP variable scope describes the region where a PHP variable may and may not be accessed by your PHP code. PHP distinguishes between local, global, and static scope. Each scope has its own set of rules on how variables can be accessed, which enhances code efficiency and readability. By mastering PHP variable scope, you'll be able to write more efficient and effective PHP code with fewer bugs and errors.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>php</category>
    </item>
    <item>
      <title>Bhoomi — The Future of Secure Property Transfers</title>
      <dc:creator>Arth Vhanesa</dc:creator>
      <pubDate>Thu, 17 Aug 2023 11:29:15 +0000</pubDate>
      <link>https://dev.to/arthvhanesa/bhoomi-the-future-of-secure-property-transfers-182m</link>
      <guid>https://dev.to/arthvhanesa/bhoomi-the-future-of-secure-property-transfers-182m</guid>
      <description>&lt;p&gt;&lt;strong&gt;Aim:&lt;/strong&gt; Land Registry using Self-Sovereign Identity to store, protect, and publish land records and ease the transfer of land ownership.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link:&lt;/strong&gt; &lt;a href="https://www.bhoomi.site/"&gt;bhoomi.site&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Brief about the problem
&lt;/h2&gt;

&lt;p&gt;Land registration has become a tedious and troublesome process with the increasing population. Ongoing system results in an increased number of frauds, loss of paperwork, and legal cases. Major challenges in this sector include an increase in &lt;strong&gt;land-related litigations, reselling of the same land, and the absence of a unique record&lt;/strong&gt;. We can reduce the chances of fraud in land registration with the &lt;strong&gt;SSI model and blockchain technology.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The user will have the freedom to manage his property once the government mines the first block. Users can buy or sell the property and transfer ownership without government interference. The user will be provided with an automated Government-authorized digital certificate. With the successful implementation of this software solution, performing a secure real estate transaction and verifying ownership can be achieved.&lt;/p&gt;

&lt;h2&gt;
  
  
  Approach to solving this problem
&lt;/h2&gt;

&lt;p&gt;We aim to build a single platform for buying and selling property using blockchain technology which ensures the security of transactions.&lt;/p&gt;

&lt;p&gt;This blockchain-based model will build trust and ensure the security of transactions so incidents such as reselling of the same property, documents tempering, etc. cannot take place&lt;/p&gt;

&lt;p&gt;The process includes building a smart contract. We have written it in such a way that the owner must transfer his full asset to the buyer. No partial transaction of the asset is allowed.&lt;/p&gt;

&lt;p&gt;Once the government authority registers the user, the entire process becomes transparent and the transaction happens between the two clients with a few amount of government intervention.&lt;/p&gt;

&lt;p&gt;Thus, we are making a distributed system for land registration using blockchain to store all the transactions of land buying.&lt;/p&gt;

&lt;h2&gt;
  
  
  Flowchart
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yOQ1o7AP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/v2/resize:fit:1100/format:webp/1%2A3DW0ybh3b3iXIMykxbK7vA.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yOQ1o7AP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/v2/resize:fit:1100/format:webp/1%2A3DW0ybh3b3iXIMykxbK7vA.jpeg" alt="Flowchart of the project" width="687" height="1280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Technology Stack
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--j_mLdD5h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/v2/resize:fit:1100/format:webp/1%2AurJSGx-lNl3x-k63qfRFWQ.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--j_mLdD5h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/v2/resize:fit:1100/format:webp/1%2AurJSGx-lNl3x-k63qfRFWQ.jpeg" alt="Tech stack used to develop a project" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Outcome
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Citizens can verify the authorization and ownership details of the land.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The user can find the complete history of the property before purchasing the property.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;There would be no need for attested copies of documents.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Frauds related to the land registry will not be there.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The government does not need to validate and authorize digital credentials issued by government agencies explicitly.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Features and Benefits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;LiveChat&lt;/strong&gt;: Integrated for customer support.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Geo-Mapping&lt;/strong&gt;: To get the land view on the map.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Immutability&lt;/strong&gt;: Recorded data can’t be erased and replaced.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Transparency&lt;/strong&gt;: It is a decentralized network that uses a digital ledger, hence all transaction records are public.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;: It uses the hashing technique to store each transaction.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Traceability&lt;/strong&gt;: It creates an irreversible audit trail allowing easy tracing of changes on the network.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  PS:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;This project is developed to provide a solution in response to a problem statement presented by the &lt;strong&gt;Revenue Department of India&lt;/strong&gt; in the &lt;strong&gt;SSIP (Aazadi Ka Amrit Mahotsav) Hackathon 2022.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The whole credit goes to &lt;strong&gt;Team Abhyuday&lt;/strong&gt; for making the innovative, cost-effective and secure solution. Kudos to us guys🍾!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Team Abhyuday:&lt;/strong&gt; &lt;a href="https://twitter.com/vib_78"&gt;Vaibhav Chauhan&lt;/a&gt;, &lt;a href="https://twitter.com/arthvhanesa"&gt;Arth Vhanesa&lt;/a&gt;, &lt;a href="https://twitter.com/KinjalShah_"&gt;Kinjal Shah&lt;/a&gt;, &lt;a href="https://twitter.com/priyal_thummar"&gt;Priyal Thummar&lt;/a&gt;, &lt;a href="https://twitter.com/Yug_Khokhar_18"&gt;Yug Khokhar&lt;/a&gt;, &lt;a href="https://twitter.com/_jaimin1618"&gt;Jaimin Chokhawala&lt;/a&gt;, &lt;a href="https://twitter.com/heet_senghani"&gt;Heet Senghani&lt;/a&gt;, 3rd-year IT undergraduates from L. D. College of Engineering, Ahmedabad.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Best wishes from Team Abhyuday.✨&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>blockchain</category>
      <category>javascript</category>
      <category>react</category>
    </item>
    <item>
      <title>Vim Editor in Linux: Mastering the Basics</title>
      <dc:creator>Arth Vhanesa</dc:creator>
      <pubDate>Tue, 09 May 2023 13:12:09 +0000</pubDate>
      <link>https://dev.to/arthvhanesa/vim-editor-in-linux-mastering-the-basics-1omi</link>
      <guid>https://dev.to/arthvhanesa/vim-editor-in-linux-mastering-the-basics-1omi</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;As a programmer or a developer, we require an efficient, versatile, and fast text editor. Linux has a built-in Vi text editor. Vim is an improved version of Vi, whereas Vim stands for Vi Improved. Vim is a highly efficient and powerful text editor that is widely used by programmers, and system administrators. In this article, we will explore the different modes of Vim and basic commands for editing.&lt;/p&gt;

&lt;p&gt;Vim may or may not be pre-installed depending on the Linux distro. You can download Vim by running this command in the terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;vim
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Advantages of using CLI text editor
&lt;/h2&gt;

&lt;p&gt;One of the primary advantages of using a CLI editor like Vim is the speed and efficiency. It is better and faster to use Vim rather than just using file explorer to navigate and edit files. Vim supports multiple file formats which makes it more useful and it is faster to create and edit files at the same time. Vim is majorly used when working with remote servers where GUI is not available.&lt;/p&gt;

&lt;h2&gt;
  
  
  Modes in Vim Editor
&lt;/h2&gt;

&lt;p&gt;We use command &lt;code&gt;vim&lt;/code&gt; followed by the name of the file to open or create a file. Like, if we want to edit/create a file named "example.txt", use the command &lt;code&gt;vim example.txt&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You familiarize yourself with the three modes it operates in. These modes are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Normal mode&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Insert mode&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Command Mode&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  1. Normal Mode
&lt;/h3&gt;

&lt;p&gt;This is a default mode in Vim Editor which enables you to navigate through the text and execute various functions using keyboard commands. Some of the essential commands in normal mode include:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;h&lt;/code&gt;, &lt;code&gt;j&lt;/code&gt;, &lt;code&gt;k&lt;/code&gt;, &lt;code&gt;l&lt;/code&gt;: Allow you to move the cursor left, down, up, and right, respectively.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$&lt;/code&gt;: Jump to the end of the line without switching to insert mode&lt;/p&gt;

&lt;p&gt;&lt;code&gt;A&lt;/code&gt;: Jump to the end of the line and switch to insert mode&lt;/p&gt;

&lt;p&gt;&lt;code&gt;0&lt;/code&gt;: Jump to the beginning of the line&lt;/p&gt;

&lt;p&gt;&lt;code&gt;r&lt;/code&gt;: Replace the character. Move the cursor on the character you want to replace and press &lt;code&gt;r&lt;/code&gt; and then enter the character you want to replace with&lt;/p&gt;

&lt;p&gt;&lt;code&gt;x&lt;/code&gt;: Delete the character. Move the cursor on the character you want to delete and press &lt;code&gt;x&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;u&lt;/code&gt;: Undo the last change&lt;/p&gt;

&lt;p&gt;&lt;code&gt;dd&lt;/code&gt;: Delete the entire line&lt;/p&gt;

&lt;p&gt;&lt;code&gt;d[total number of lines]d&lt;/code&gt;: Use for deleting multiple lines. For example, if you want to delete 10 lines after your cursor then press &lt;code&gt;d10d&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;[line number]G&lt;/code&gt;: Jump to a specific line number. To jump to line 12, we use the command &lt;code&gt;12G&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Insert Mode
&lt;/h3&gt;

&lt;p&gt;In insert mode, you can add text to the file. Press the &lt;code&gt;i&lt;/code&gt; key while in normal mode to switch to insert mode. Once you enter the insert mode, you can type in the text you want to add.&lt;/p&gt;

&lt;p&gt;Insert mode commands:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;i&lt;/code&gt;: Switch to insert mode&lt;/p&gt;

&lt;p&gt;&lt;code&gt;I&lt;/code&gt;: Moves the cursor to the beginning of the line and switch to insert mode&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Command mode
&lt;/h3&gt;

&lt;p&gt;We use command mode for various functionality like searching, replacing and saving the files using different commands. Press &lt;code&gt;:&lt;/code&gt; to enter into command mode.&lt;br&gt;&lt;br&gt;
Command mode commands:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;:set number&lt;/code&gt;: This command displays line numbers in the file.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;:/example&lt;/code&gt;: This command searches for the word "example" in the file.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;After searching into files you can press:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;n&lt;/code&gt; for jumping to the next match&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;N&lt;/code&gt; for jumping to the previous match&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;:%s/old/new/g&lt;/code&gt;: This command replaces all occurrences of "old" with "new" in the entire file.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;:w filename&lt;/code&gt;: This command saves the modifications made to the file with the name "filename".&lt;/p&gt;

&lt;p&gt;&lt;code&gt;:wq&lt;/code&gt;: This command saves the file and exits the Vim editor.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;:q!&lt;/code&gt;: This command quits the Vim editor without saving the modifications made to the file.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In conclusion, Vim Editor is a powerful and versatile text editing tool that offers a wide range of functionalities. Whether you are a programmer, developer, or system administrator, Vim Editor caters to your text editing needs. By mastering Vim Editor's basic and advanced commands, you can improve your productivity and efficiency.&lt;/p&gt;

&lt;p&gt;I hope that this comprehensive guide has been helpful in your quest to effectively utilize Vim Editor.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>devops</category>
      <category>cli</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>Package Managers in Linux: The Basics Explained</title>
      <dc:creator>Arth Vhanesa</dc:creator>
      <pubDate>Fri, 05 May 2023 03:58:00 +0000</pubDate>
      <link>https://dev.to/arthvhanesa/package-managers-in-linux-the-basics-explained-2ooo</link>
      <guid>https://dev.to/arthvhanesa/package-managers-in-linux-the-basics-explained-2ooo</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Software installation is a crucial aspect of any operating system, and it can differ significantly between different operating systems. In Windows, We install software by downloading installers or installing executable files. On the other hand, Linux manages software differently. It packages software into binaries and libraries. As Linux supports shared dependencies, it's not recommended to download software that has self-contained dependencies. We will see how package managers work and handle dependencies and the advantages of using them for software installation in Linux.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a Software package?
&lt;/h2&gt;

&lt;p&gt;The software package is the bundle of all required files and dependencies and other resources which are required to run the software. For running software smoothly users must have to install all required dependencies. Using the software package, all dependencies are bundled with the application so that users can simply install the package and all files and dependencies will automatically install. This eliminates the need for users to manually search for and install dependencies, which can be time-consuming.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do we need a Package Manager?
&lt;/h2&gt;

&lt;p&gt;The package manager helps to manage the all dependencies of the software which splits across different files and folders. It ensures that the integrity and authenticity of software is maintained. Moreover, package managers can manage and resolve all required dependencies automatically. This means that it takes the hassle out of manually searching for and installing all necessary dependencies. In addition, package managers know where to put binaries and library files in the Linux File System. As a result, it helps to prevent conflicts and confusion over where certain files should be stored.&lt;/p&gt;

&lt;h2&gt;
  
  
  APT Package Manager in Linux
&lt;/h2&gt;

&lt;p&gt;A package manager is already installed in every Linux distribution. In Ubuntu, we have an Advanced Packaging Tool – APT as a package manager. To download software from the repository, we use the &lt;code&gt;apt&lt;/code&gt; command, which is usually listed in the software's guide or documentation. We can run the command sudo &lt;code&gt;apt install default-jdk&lt;/code&gt; to install Java, which automatically downloads the required files and sets up the system.&lt;/p&gt;

&lt;p&gt;The links to the repositories are stored in &lt;code&gt;/etc/apt/sources.list&lt;/code&gt;, and when we run an &lt;code&gt;apt&lt;/code&gt; command, Linux finds the appropriate repository link from this list and downloads the software from there. As we need sudo access to run the &lt;code&gt;apt&lt;/code&gt; command, this helps ensure the security of the system. Overall, APT makes it easy to download and install software in Linux while maintaining the security of the system.&lt;/p&gt;

&lt;h2&gt;
  
  
  APT vs APT-GET
&lt;/h2&gt;

&lt;p&gt;APT and APT-GET are both package managers available on Linux distributions such as Ubuntu. APT is newer, more user-friendly, and recommended by Linux distros. APT has more organized commands than APT-GET and also provides detailed information about packages, which makes it easier to manage. APT is faster and more robust in handling errors and conflicts between packages, making it a better choice for most users. Although APT-GET is still widely used, APT is a great choice for those new to Linux or looking for a more efficient and streamlined way to manage their system's packages.&lt;/p&gt;

&lt;h2&gt;
  
  
  Alternative Ways to Install Software
&lt;/h2&gt;

&lt;p&gt;In Linux, downloading software using the package manager is the most common and preferred method. There are alternative ways to download software too. Here are the popular 3 methods for downloading software on Linux.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Snap package manager
&lt;/h3&gt;

&lt;p&gt;Snap package manager is a popular package manager available in Linux. It allows users to download software in a bundle that contains all the necessary dependencies. The software downloaded using Snap does not share the dependencies. In such cases, the dependencies download more than once, which makes the installation size large. Snap automatically updates the software packages which makes it convenient.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Ubuntu software center
&lt;/h3&gt;

&lt;p&gt;Ubuntu software center is Graphical User Interface (GUI) application to download and install software packages with ease. The software center uses Snap in the background, which downloads self-contained dependencies as Snap packages. It simplifies the installation process and takes care of all the necessary. In short, the Ubuntu software center is providing an intuitive user interface to browse and install software from an extensive collection of packages.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Add the repo to the official list of repository
&lt;/h3&gt;

&lt;p&gt;When the repo is not officially available in the Ubuntu repos list or on the Ubuntu software center, we can add the repo to the list. The &lt;code&gt;add-apt-repository&lt;/code&gt; command is used to add a repository to the list of repositories in &lt;code&gt;/etc/apt/sources.list&lt;/code&gt; and it will be used by &lt;code&gt;apt install &amp;lt;package-name&amp;gt;&lt;/code&gt; command for installing it.&lt;/p&gt;

&lt;p&gt;Personal Package Archives (PPAs) are software packages that are built and maintained by individuals in the community. Anybody can distribute the software using PPAs. Usually, developers use PPAs to provide updates more quickly than official Ubuntu repositories. It is important to be aware that PPAs do not go through the same screening process as the official Ubuntu repository, which means that there is no guarantee of security or quality.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Using package manager we can easily install, upgrade, and remove software packages. Additionally, package managers ensure compatibility of the software with the operating system. In conclusion, the package manager is a crucial component of Linux that simplifies the software installation and management process with the stability and security of the system.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>devops</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>5 Reasons Why Command Line Interface (CLI) is More Efficient Than GUI</title>
      <dc:creator>Arth Vhanesa</dc:creator>
      <pubDate>Sat, 29 Apr 2023 02:43:13 +0000</pubDate>
      <link>https://dev.to/arthvhanesa/5-reasons-why-command-line-interface-cli-is-more-efficient-than-gui-mh2</link>
      <guid>https://dev.to/arthvhanesa/5-reasons-why-command-line-interface-cli-is-more-efficient-than-gui-mh2</guid>
      <description>&lt;p&gt;As a computer user, you have probably heard about Command Line Interface (CLI) and Graphical User Interface (GUI). CLI is a method of interacting with a computer system through text-based commands, while GUI provides a visual interface with icons, menus, and windows. While GUI is more commonly used among computer users, CLI offers several advantages that make it a more efficient option. In this article, we'll explore the differences between CLI and GUI and dive into five key reasons why you might want to consider using CLI over GUI.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Command Line Interface (CLI)?
&lt;/h2&gt;

&lt;p&gt;Command Line Interface (CLI) is a text-based interface that allows users to interact with a computer system using commands. It is a way of interacting with a computer system that predates the development of a Graphical User Interface (GUI). With CLI, users enter a command into a text prompt, and the system responds accordingly. CLI is an efficient way to interact with a computer system, especially for experienced users who prefer to work with a keyboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  The difference between CLI and GUI
&lt;/h2&gt;

&lt;p&gt;GUI is a visual interface that allows users to interact with a computer system using graphical elements such as icons, buttons, and windows. GUI is more user-friendly than CLI and is the most commonly used interface among computer users. However, GUI has its limitations, especially when it comes to efficiency and flexibility. CLI, on the other hand, is a text-based interface that allows users to interact with a computer system using commands. CLI is more efficient and flexible than GUI, but it requires some level of technical expertise.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advantages of CLI over GUI
&lt;/h2&gt;

&lt;p&gt;CLI has several advantages over GUI that make it a more efficient option for certain tasks. Here are the top five advantages of CLI over GUI:&lt;/p&gt;

&lt;h3&gt;
  
  
  Improved efficiency with CLI
&lt;/h3&gt;

&lt;p&gt;CLI is a highly efficient way to interact with a computer system, especially when it comes to performing repetitive tasks. With CLI, you can automate repetitive tasks using scripts, which can save you a lot of time and effort. In today's fast-paced world, where efficiency and time-saving are crucial, CLI can help users achieve these goals. CLI also allows you to perform tasks faster than GUI, especially if you are an experienced user who prefers to work with a keyboard.&lt;/p&gt;

&lt;h3&gt;
  
  
  Flexibility and customization options with CLI
&lt;/h3&gt;

&lt;p&gt;CLI is more flexible than GUI when it comes to customization options. With CLI, you can customize your environment to suit your needs, such as defining your own aliases and functions. You can also use CLI tools to perform a wide range of tasks, such as text processing, file management, and network administration.&lt;/p&gt;

&lt;h3&gt;
  
  
  CLI for automation and scripting
&lt;/h3&gt;

&lt;p&gt;CLI is the preferred interface for automation and scripting. With CLI, you can create scripts to automate repetitive tasks, such as backups, updates, and installations. CLI scripting is also useful for system administration tasks, such as user management and network configuration.&lt;/p&gt;

&lt;h3&gt;
  
  
  CLI in programming and development
&lt;/h3&gt;

&lt;p&gt;CLI is the preferred interface for programming and development. Many programming languages, such as Python, Ruby, and Perl, are designed to be used with CLI. CLI also allows you to use a wide range of development tools, such as Git, Docker, and Vim.&lt;/p&gt;

&lt;h3&gt;
  
  
  CLI for troubleshooting and system maintenance
&lt;/h3&gt;

&lt;p&gt;CLI is an excellent choice for troubleshooting and system maintenance tasks. As opposed to GUI, CLI allows you to access system logs, diagnose issues, and perform system maintenance activities more effectively. CLI also offers greater control over system settings and enables you to interact with the system at a lower level, which can be helpful in identifying and resolving complex problems. Whether you're an experienced system administrator or a curious user looking to dive deeper into your computer's inner workings, CLI provides an efficient and flexible way to maintain and troubleshoot your system.&lt;/p&gt;

&lt;h2&gt;
  
  
  CLI tools and resources
&lt;/h2&gt;

&lt;p&gt;Here are some popular CLI tools and resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Bash: A popular shell for UNIX-based systems.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Zsh: An alternative shell with advanced features and customization options.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PowerShell: A CLI shell for Windows systems.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Vim: A powerful text editor for CLI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Git: A version control system for software development.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Docker CLI: A containerization platform for software development.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By using these tools, you can take advantage of the power and flexibility of CLI for programming, system maintenance, and automation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In conclusion, Command Line Interface (CLI) is a more efficient option than Graphical User Interface (GUI) for certain tasks. CLI is more efficient, flexible, and customizable than GUI, and is the preferred interface for automation, scripting, programming, troubleshooting, and system maintenance. If you are a computer user who values efficiency and flexibility, then learning CLI is a valuable skill that can help you get the most out of your computer system. If you found this article informative, be sure to follow me for more articles like this.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>cli</category>
      <category>devops</category>
    </item>
    <item>
      <title>Understanding Linux File System: An Overview of Essential Directories</title>
      <dc:creator>Arth Vhanesa</dc:creator>
      <pubDate>Sat, 22 Apr 2023 12:20:30 +0000</pubDate>
      <link>https://dev.to/arthvhanesa/understanding-linux-file-system-an-overview-of-essential-directories-2clp</link>
      <guid>https://dev.to/arthvhanesa/understanding-linux-file-system-an-overview-of-essential-directories-2clp</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;The Linux operating system has a special component called the file system, which helps store and access files and data. It has a hierarchical structure that helps keep things organized and standardized. Knowing how this hierarchy works is important for anyone using Linux so they can find what they need quickly and easily. In this blog post, we'll go over each folder in the Linux file system hierarchy and explain what they're used for. By the end, you'll have a better idea of how the Linux file system works and how to navigate it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Linux File System
&lt;/h2&gt;

&lt;p&gt;The Linux file system is structured hierarchically, with a single root folder &lt;code&gt;/&lt;/code&gt; as the starting point for all directories and files. Within the root folder, there are various directories, including &lt;code&gt;/bin&lt;/code&gt;, &lt;code&gt;/home&lt;/code&gt;, &lt;code&gt;/usr&lt;/code&gt;, and &lt;code&gt;/var&lt;/code&gt;, among others. Every user on Linux gets their own space inside the &lt;code&gt;/home&lt;/code&gt; directory, making it easier to organize and access personal files. In addition, each user has its own space for system configuration files and settings, which helps to prevent conflicts between users. Programs installed system-wide are available to all users, ensuring that everyone has access to the same tools and resources.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1682126094337%2Fdfb41e1e-3fb6-4c7a-80d4-1861b359df2b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1682126094337%2Fdfb41e1e-3fb6-4c7a-80d4-1861b359df2b.png" alt="Image of root (/) directory"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the other hand, the Windows file system has multiple root folders, with each drive letter (such as &lt;code&gt;C:\&lt;/code&gt; or &lt;code&gt;D:\&lt;/code&gt;) serving as a separate root folder. Within each root folder, there are various directories, such as Program Files, Users, and Windows, among others. Unlike Linux, Windows does not have a single root folder that serves as the starting point for all directories and files. Each user on Windows also gets their own space, typically located in the Users directory, which includes personal files, documents, and settings.&lt;/p&gt;

&lt;p&gt;In Linux, the root directory &lt;code&gt;/&lt;/code&gt; is where all other directories and files stem from, and it includes important directories like &lt;code&gt;/home&lt;/code&gt;, &lt;code&gt;/root&lt;/code&gt;, &lt;code&gt;/bin&lt;/code&gt;, &lt;code&gt;/sbin&lt;/code&gt;, &lt;code&gt;/dev&lt;/code&gt;, and others. Understanding the meaning of these directories is essential for navigating the Linux file system efficiently.&lt;/p&gt;

&lt;h2&gt;
  
  
  Directories
&lt;/h2&gt;

&lt;h3&gt;
  
  
  /home
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;/home&lt;/code&gt; directory in Linux is where all non-root user home directories are stored. Each user has a folder in this directory with their name as the folder name.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1682126156865%2Fc1a043bb-0f1f-47a0-90d3-3a7065225231.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1682126156865%2Fc1a043bb-0f1f-47a0-90d3-3a7065225231.png" alt="Image of /home directory"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Any programs installed in the &lt;code&gt;/home&lt;/code&gt; directory is available only to the user associated with that directory. This allows each user to have their own set of programs and applications without interfering with other users' settings.&lt;/p&gt;

&lt;p&gt;Another important thing about the &lt;code&gt;/home&lt;/code&gt; directory is that you can read and write to it without needing root access.&lt;/p&gt;

&lt;h3&gt;
  
  
  /root
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;/root&lt;/code&gt; directory in Linux is the home directory of the root user. Unlike the &lt;code&gt;/home&lt;/code&gt; directory which contains home directories of non-root users, the &lt;code&gt;/root&lt;/code&gt; directory is specifically for the root user. It's important to note that this directory is not the same as the root directory &lt;code&gt;/&lt;/code&gt;, which is the starting point for all directories and files in the Linux file system.&lt;/p&gt;

&lt;h3&gt;
  
  
  /bin
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;/bin&lt;/code&gt; directory in Linux stands for "binaries" and it contains the essential executable files (commands) for most user commands like &lt;code&gt;ls&lt;/code&gt;, &lt;code&gt;cat&lt;/code&gt;, &lt;code&gt;pwd&lt;/code&gt;, and &lt;code&gt;touch&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1682125063777%2F41230d46-74d1-42b7-af14-a0c3acf9f6c8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1682125063777%2F41230d46-74d1-42b7-af14-a0c3acf9f6c8.png" alt="Image of /bin directory"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These executable files are available system-wide, meaning all users can access them. The reason why they are stored in the &lt;code&gt;/bin&lt;/code&gt; directory is that they are binary files that the computer can understand, hence the name "binaries."&lt;/p&gt;

&lt;p&gt;Having these essential commands available in the &lt;code&gt;/bin&lt;/code&gt; directory, users can quickly access them and perform common tasks efficiently.&lt;/p&gt;

&lt;h3&gt;
  
  
  /sbin
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;/sbin&lt;/code&gt; directory in Linux stands for "system binaries" and it contains essential commands related to the system. These commands are used by system administrators for tasks like setting up users, networks, and passwords.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1682126264324%2Fc47a7c0b-41fc-473d-b009-392cba8ffe73.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1682126264324%2Fc47a7c0b-41fc-473d-b009-392cba8ffe73.png" alt="Image of /sbin directory"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since these tasks require administrative privileges, you need superuser permissions to execute commands in the &lt;code&gt;/sbin&lt;/code&gt; directory. These binaries are considered essential for system maintenance and are not available to regular users.&lt;/p&gt;

&lt;p&gt;Overall, the &lt;code&gt;/sbin&lt;/code&gt; directory contains critical system binaries that system administrators use to manage and maintain the Linux system.&lt;/p&gt;

&lt;h3&gt;
  
  
  /lib
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;/lib&lt;/code&gt; directory in Linux stands for "library" and it contains essential shared libraries that are required by executables in the &lt;code&gt;/bin&lt;/code&gt; and &lt;code&gt;/sbin&lt;/code&gt; directories.&lt;/p&gt;

&lt;p&gt;In Linux, a program is often split into multiple components, with the executable files stored in the &lt;code&gt;/bin&lt;/code&gt; or &lt;code&gt;/sbin&lt;/code&gt; directories and the necessary libraries stored in the &lt;code&gt;/lib&lt;/code&gt; directory. This separation allows programs to be more modular and efficient.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1682126315038%2F503cea3c-d42b-46ae-8ec6-d294b1915192.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1682126315038%2F503cea3c-d42b-46ae-8ec6-d294b1915192.png" alt="Image of /lib directory"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All programs downloaded on Linux are stored in this way, with their binaries in the &lt;code&gt;/bin&lt;/code&gt; directory and their libraries in the &lt;code&gt;/lib&lt;/code&gt; directory. The &lt;code&gt;/lib&lt;/code&gt; directory is an important component of the Linux file system that ensures that programs can run efficiently and with the necessary resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  /usr
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;/usr&lt;/code&gt; directory in Linux stands for "user". It originally contained home directories but now it contains the &lt;code&gt;/bin&lt;/code&gt;, &lt;code&gt;/sbin&lt;/code&gt;, and &lt;code&gt;/lib&lt;/code&gt; folders. The bin folder contains commands like &lt;code&gt;ls&lt;/code&gt; and &lt;code&gt;copy&lt;/code&gt; that is executed from the terminal.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1682126385556%2Fd6bf7a05-5d76-46b4-bc0a-3e32de6c5fe5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1682126385556%2Fd6bf7a05-5d76-46b4-bc0a-3e32de6c5fe5.png" alt="Image of /usr directory"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The separation of binary files in both the root and user binary folders is due to limitations in storage space in the past. Though this limitation no longer exists, the concept remains the same. Some Linux OS versions have fewer commands in the root &lt;code&gt;/bin&lt;/code&gt; and &lt;code&gt;/sbin&lt;/code&gt; directories.&lt;/p&gt;

&lt;h3&gt;
  
  
  /usr/local
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;/usr/local&lt;/code&gt; directory in Linux contains the &lt;code&gt;/bin&lt;/code&gt;, &lt;code&gt;/sbin&lt;/code&gt;, and &lt;code&gt;/lib&lt;/code&gt; folders, and it's where third-party applications are installed. When a user installs a program on their computer, its binaries go into &lt;code&gt;/usr/local/bin&lt;/code&gt;, and its libraries go into &lt;code&gt;/usr/local/lib&lt;/code&gt;. This directory is available to all users on the computer, and any program installed here can be accessed system-wide.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1682126406503%2F89c764c6-1faf-485c-871b-77880c570285.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1682126406503%2F89c764c6-1faf-485c-871b-77880c570285.png" alt="Image of /usr/local directory"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  /opt
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;/opt&lt;/code&gt; directory in Linux stands for "optional" and is initially empty. It is used for programs that do not split their components like binaries and libraries.&lt;/p&gt;

&lt;p&gt;These programs are typically third-party programs that we install on our system. Code editors and browsers are some examples of programs that are installed in &lt;code&gt;/opt&lt;/code&gt;. Programs installed in &lt;code&gt;/opt&lt;/code&gt; are available system-wide, just like those installed in &lt;code&gt;/usr/local&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;However, it is important to note that programs that can split their components are typically installed in &lt;code&gt;/usr/local&lt;/code&gt;, whereas those that cannot are installed in &lt;code&gt;/opt&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  /boot
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;/boot&lt;/code&gt; directory in Linux contains the essential files required for booting the operating system. These files include the Linux kernel, initial ramdisk image, bootloader configuration files, and other boot-related files.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1682126713114%2F8691d3f8-7be6-4103-b847-09e518a130b2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1682126713114%2F8691d3f8-7be6-4103-b847-09e518a130b2.png" alt="Image of /boot directory"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This directory is crucial for the proper functioning of the operating system and should not be modified or deleted by the user. The files in this directory are automatically updated during system upgrades and kernel updates.&lt;/p&gt;

&lt;h3&gt;
  
  
  /etc
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;/etc&lt;/code&gt; directory in Linux stands for "et cetera" and is the location where system configurations are stored, including Linux user data and passwords, network settings, and other important system information. It is a read-write directory and has emerged as the main configuration location for various Linux distributions.&lt;/p&gt;

&lt;h3&gt;
  
  
  /dev
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;/dev&lt;/code&gt; directory stands for "devices" and contains device files for hardware such as webcams, keyboards, hard drives, and microphones. Applications and drivers access this directory, not users. All files the system needs to interact with hardware will be found here. In other words, it is a location of special files that represent hardware devices installed on the system. The files in this directory are generally not directly readable or writable, but the system uses them to interact with hardware.&lt;/p&gt;

&lt;h3&gt;
  
  
  /proc
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;/proc&lt;/code&gt; directory in Linux is a virtual file system that provides a way for users and programs to access system information. It does not contain physical files, but instead, the files within it are created dynamically and reflect the current state of the system.&lt;/p&gt;

&lt;p&gt;Users and programs can read and write to these files to get information about system hardware, processes, and kernel settings. For example, the &lt;code&gt;/proc/cpuinfo&lt;/code&gt; file provides details about the system's CPU usage, while the &lt;code&gt;/proc/meminfo&lt;/code&gt; file contains information about memory usage.&lt;/p&gt;

&lt;p&gt;Overall, the &lt;code&gt;/proc&lt;/code&gt; directory is a critical component of the Linux system and is used extensively by system administrators and programmers for debugging, monitoring, and system analysis.&lt;/p&gt;

&lt;h3&gt;
  
  
  /sys
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;/sys&lt;/code&gt; directory in Linux is a special file system that offers a structured view of kernel data structures and hardware device information. It is presented in a hierarchical manner of directories and files, allowing easy access and modification of device parameters.&lt;/p&gt;

&lt;p&gt;The directory contains crucial details of system devices like input/output (I/O) devices, network interfaces, and storage devices. Additionally, it holds information regarding system status, including power management settings and system clock configurations.&lt;/p&gt;

&lt;p&gt;It is different from the &lt;code&gt;/proc&lt;/code&gt; directory, &lt;code&gt;/sys&lt;/code&gt; provides information about the hardware and drivers in a structured and standardized way, whereas the &lt;code&gt;/proc&lt;/code&gt; directory provides information about the system's processes and kernel more systematically. The &lt;code&gt;/sys&lt;/code&gt; directory is used by system administrators and device driver developers to interact with the system's hardware and configure the system's devices.&lt;/p&gt;

&lt;h3&gt;
  
  
  /var
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;/var&lt;/code&gt; directory in Linux stands for "variable". It contains files and directories that may change in size and content over time during the system's operation. The &lt;code&gt;/var/log&lt;/code&gt; directory stores system log files, while the &lt;code&gt;/var/cache&lt;/code&gt; directory contains cached data from application programs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1682126464016%2Fa685e478-1cf0-4d87-8893-b074ed0c1ba3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1682126464016%2Fa685e478-1cf0-4d87-8893-b074ed0c1ba3.png" alt="Image of /var directory"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Other directories in &lt;code&gt;/var&lt;/code&gt; may include spool directories for printing and mail, and directories for temporary files created by applications. These files are typically read and written by system services and applications, rather than users directly.&lt;/p&gt;

&lt;h3&gt;
  
  
  /run
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;/run&lt;/code&gt; directory in Linux is a temporary file system that stores runtime data of processes running on the system. It is used by system services to store data that needs to be preserved across reboots. The data stored in &lt;code&gt;/run&lt;/code&gt; is lost when the system is shut down.&lt;/p&gt;

&lt;p&gt;This directory was created to replace the &lt;code&gt;/var/run&lt;/code&gt; directory which is used to store volatile runtime data. The files in the &lt;code&gt;/run&lt;/code&gt; directory are created by the system at boot time and are automatically cleaned up on shutdown. Some of the files stored in &lt;code&gt;/run&lt;/code&gt; include process IDs, socket files, and lock files.&lt;/p&gt;

&lt;h3&gt;
  
  
  /tmp
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;/tmp&lt;/code&gt; directory in Linux is used to store temporary files that applications create during their operation. These files are usually deleted automatically at some point, as they are not meant to persist beyond the current session. The &lt;code&gt;/tmp&lt;/code&gt; directory is accessible by all users, and applications typically use it to store data that does not need to be kept long-term.&lt;/p&gt;

&lt;h3&gt;
  
  
  /media
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;/media&lt;/code&gt; directory in Linux is used to mount removable media devices such as USB drives, CD-ROMs, and DVDs. Whenever a new removable media device is inserted into the computer, a corresponding directory will automatically be created in &lt;code&gt;/media&lt;/code&gt;, and the contents of the device will be accessible inside the directory. This directory is used by the system to automatically mount and unmount the removable media.&lt;/p&gt;

&lt;h3&gt;
  
  
  /mnt
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;/mnt&lt;/code&gt; directory is used for temporarily mounting file systems. It is usually empty but can be used by system administrators to manually mount file systems as needed. Unlike the &lt;code&gt;/media&lt;/code&gt; directory which is used for automatically mounting removable media devices, the &lt;code&gt;/mnt&lt;/code&gt; directory is used for manually mounting file systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hidden files
&lt;/h2&gt;

&lt;p&gt;Hidden files are files that are not shown in the directory listing by default. These files are often used to prevent important data from being accidentally deleted or to store auto-generated files or configuration settings that are specific to a particular user.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1682126469398%2Fa658f495-829f-411f-bd0d-83a7abef56c0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1682126469398%2Fa658f495-829f-411f-bd0d-83a7abef56c0.png" alt="Image of Hidden Files"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In Linux, hidden files are denoted by a dot (&lt;code&gt;.&lt;/code&gt;) preceding the file name, and are often referred to as "dotfiles". When we enable the option to show hidden files, we can view these files and modify them as needed. It is important to be aware of the presence of hidden files, as they can contain critical information related to the functioning of the system or specific applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In conclusion, although users may not typically interact with the various directories on a Linux system, it is important to understand their purpose and location. Applications installed using package managers or installers automatically handle the creation of folders, binaries, and libraries. For example, the insertion of a USB device will automatically create a directory in &lt;code&gt;/media&lt;/code&gt;. Knowing where these files are located and how the system works can be beneficial for troubleshooting purposes.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>devops</category>
      <category>opensource</category>
    </item>
    <item>
      <title>The 6 Stages of the Software Development Life Cycle (SDLC) Explained</title>
      <dc:creator>Arth Vhanesa</dc:creator>
      <pubDate>Mon, 27 Feb 2023 03:30:00 +0000</pubDate>
      <link>https://dev.to/arthvhanesa/the-6-stages-of-the-software-development-life-cycle-sdlc-explained-1hgf</link>
      <guid>https://dev.to/arthvhanesa/the-6-stages-of-the-software-development-life-cycle-sdlc-explained-1hgf</guid>
      <description>&lt;h2&gt;
  
  
  What is SDLC?
&lt;/h2&gt;

&lt;p&gt;Software development life cycle (SDLC) is a methodology for designing and developing sophisticated software which fulfills the requirements of a company and its users. Companies at large scale use SDLC for developing software with high-quality assurance within a given time and cost.&lt;/p&gt;

&lt;p&gt;The model has 6 significant steps with specific instructions making the process more systematic. This can be used to develop any kind of software from small-scale applications to large-scale enterprise systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stages of SDLC model
&lt;/h2&gt;

&lt;p&gt;The Software Development Life Cycle consists of six stages:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Requirement gathering&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Analysis and Design&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Implementation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Testing&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Deployment&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Maintenance&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This model ensures the quality of software and the overall development process. Each step includes a specific task to be performed during the development of software.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ibnk7frhpficunlqjv8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ibnk7frhpficunlqjv8.jpg" alt="Image of Software Development Life Cycle" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Requirement gathering
&lt;/h3&gt;

&lt;p&gt;Requirement gathering is the first and fundamental step of the Software Development Life Cycle. To gain a better understanding of a need, the developer team collects information, ideas, and requirements by taking inputs from all stakeholders.&lt;/p&gt;

&lt;p&gt;They also analyze the current system, stakeholders' interests, end users' needs, and expected outcomes to ensure the development process meets everyone's objectives. Creating a project plan, defining the scope, setting goals, and identifying risks are essential steps in requirement gathering.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Analysis and Design
&lt;/h3&gt;

&lt;p&gt;During the analysis phase, the team analyzes the requirements of a project collected in requirement gathering and identifies any potential problems or areas for improvement. After analyzing the requirements, the team generates Software Requirement Specification (SRS) document which includes all requirements to be designed and developed.&lt;/p&gt;

&lt;p&gt;Design is a foundation phase of SDLC. It involves creating a blueprint of the software product. The team defines the final requirements and plans and creates detailed specifications. They create the best approach for software architecture, user interface design, database design, and other necessary components, and document them in Software Design Document. (also known as a software design specification or technical specification document)&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Implementation
&lt;/h3&gt;

&lt;p&gt;Implementation is a phase where actual development starts. In this phase, The team develops the software according to Software Design Document. Developers must follow the fundamentals and standard practices of coding to produce a working system that meets all functional requirements according to plan. They also need to debug when it is necessary for maintaining the quality of the software.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Testing
&lt;/h3&gt;

&lt;p&gt;The testing phase begins after the implementation phase. Here, the team conducts various types of testing to ensure that the software product is functioning properly and meeting the required specifications. Bugs and other issues of the development stage are detected and fixed at this stage.&lt;/p&gt;

&lt;p&gt;Testing includes unit testing, system testing, integration testing, functional testing, user acceptance testing, security testing and other types of tests as well. The software has to be tested thoroughly to ensure all the issues are identified and fixed before the deployment.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Deployment
&lt;/h3&gt;

&lt;p&gt;Once a product is tested, developers deploy it from the developer environment to the production environment making it available to end users. This involves installing the software on one or more servers according to need. Sometimes, software gets deployed in stages for testing in a real environment. Once the software is deployed, developers start collecting feedback on its performance.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Maintenance
&lt;/h3&gt;

&lt;p&gt;After deployment, maintenance of the software is needed. Maintenance is a very crucial stage of this cycle where maintainers monitor and fix the issues. New features can be introduced that was not originally planned, during maintenance. It ensures that the performance, speed, and robustness of the software remains the same with updated technology and meet users' requirement.&lt;/p&gt;

&lt;h2&gt;
  
  
  SDLC Models
&lt;/h2&gt;

&lt;p&gt;Many SDLC models are designed to meet different development needs. Each model has its own set of advantages and disadvantages. Developers need to choose one of the models to develop software considering the risk, efficiency improvement, customization and flexibility. Some of the most popular SDLC models include the Waterfall model, Iterative Model, Spiral Model, V-Model, Big Band Model, Agile Model and Prototype Model.&lt;/p&gt;

&lt;p&gt;Models are shaped to achieve a particular outcome. For example, Waterfall Model is best suited for projects with clearly defined requirements and scope of work. On the other hand, the agile model is appropriate for projects that require flexibility and adaptability to changing requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Software Development Life Cycle (SDLC) is a model that guides the development of top-notch software in a structured and systematic way. Its 6 stages make it easy to develop software more efficiently.&lt;/p&gt;

&lt;p&gt;The development team ensures that every requirement is fulfilled. Thus the successful application of the SDLC model helps in building the desired software.&lt;/p&gt;

</description>
      <category>career</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
