<?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: Rahul Mahadik</title>
    <description>The latest articles on DEV Community by Rahul Mahadik (@mahadikrahul).</description>
    <link>https://dev.to/mahadikrahul</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%2F867341%2F1734a621-61f8-44a2-93ea-ad21a446ac10.jpg</url>
      <title>DEV Community: Rahul Mahadik</title>
      <link>https://dev.to/mahadikrahul</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mahadikrahul"/>
    <language>en</language>
    <item>
      <title>Useful and Handy Commands for Development</title>
      <dc:creator>Rahul Mahadik</dc:creator>
      <pubDate>Sun, 14 May 2023 18:29:05 +0000</pubDate>
      <link>https://dev.to/mahadikrahul/useful-and-handy-commands-for-development-jgb</link>
      <guid>https://dev.to/mahadikrahul/useful-and-handy-commands-for-development-jgb</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;We use GUI (Graphical User Interface) in our respective Operating Systems. But, the CLI (Command Line Interface) is still fast, reliable, and widely used by professionals.&lt;/p&gt;

&lt;p&gt;The most common advantage of CLI is that we can do everything from a single terminal, but for GUI, we might need a new window for each task.&lt;/p&gt;

&lt;p&gt;So, below are some commands of different areas that can be helpful in your day-to-day life.&lt;/p&gt;

&lt;p&gt;There shall be some commands you may or may not be aware of. But knowing that we have shortcuts like these can be a lifesaver sometimes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Table Of Contents:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Prerequisite for commands&lt;/li&gt;
&lt;li&gt;Git

&lt;ul&gt;
&lt;li&gt;Common Commands&lt;/li&gt;
&lt;li&gt;Remove all deleted Remote Git Branches.&lt;/li&gt;
&lt;li&gt;Remove all deleted Remote Git Branches checked out locally.&lt;/li&gt;
&lt;li&gt;Reset files from the most recent commit before a push.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Node JS Framework

&lt;ul&gt;
&lt;li&gt;Delete all node_modules folders from all subfolders from the current directory.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;.Net Framework

&lt;ul&gt;
&lt;li&gt;Delete all bin and obj folders from the current directory.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Windows OS

&lt;ul&gt;
&lt;li&gt;Robocopy to copy/move files.&lt;/li&gt;
&lt;li&gt;Add ports to the Windows Firewall.&lt;/li&gt;
&lt;li&gt;Remove all blank folders from a given path.&lt;/li&gt;
&lt;/ul&gt;


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

&lt;h2&gt;
  
  
  Prerequisite for commands
&lt;/h2&gt;

&lt;p&gt;All the commands related to files or folders are needed to execute in the target folders only.&lt;br&gt;
For that, you shall open the terminal from the target folder or open it from anywhere and navigate to the folder.&lt;/p&gt;
&lt;h2&gt;
  
  
  Git
&lt;/h2&gt;

&lt;p&gt;Git is one of the source control widely used by developers. We use it for its efficient branch system. &lt;br&gt;
So, here are some commands related to git to delete the deleted branches from your local repo. Kindly note that you might want to use git bash to use this command if you are using Windows.&lt;/p&gt;
&lt;h3&gt;
  
  
  Common Commands
&lt;/h3&gt;

&lt;p&gt;Here are below some general git commands that you need to use daily.&lt;/p&gt;

&lt;p&gt;Commands:&lt;/p&gt;

&lt;p&gt;Terminal: Bash for all&lt;/p&gt;

&lt;p&gt;Repository:&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="c"&gt;# Init: Initialize a new repository.&lt;/span&gt;
git init

&lt;span class="c"&gt;# Clone: To clone a new repository.&lt;/span&gt;
git clone &amp;lt;Remote-URL&amp;gt;

&lt;span class="c"&gt;# Remote: To list all named repositories.&lt;/span&gt;
git remote &lt;span class="nt"&gt;-v&lt;/span&gt;

&lt;span class="c"&gt;# Pull: To take a pull from named remote.&lt;/span&gt;
git pull &amp;lt;Branch-name&amp;gt; &amp;lt;Remote-URL/Remote-name&amp;gt;

&lt;span class="c"&gt;# Push: To send commits to the remote repository.&lt;/span&gt;
git push &amp;lt;Remote-URL/Remote-name&amp;gt; &amp;lt;Branch&amp;gt;

&lt;span class="c"&gt;# Config: To alter a configuration of the git.&lt;/span&gt;
git config &amp;lt;Setting&amp;gt; &amp;lt;Command&amp;gt;

Example:
git config user.email &lt;span class="s2"&gt;"&amp;lt;email-address&amp;gt;"&lt;/span&gt;
git config user.name &lt;span class="s2"&gt;"&amp;lt;user-name&amp;gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Files and Commits:&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="c"&gt;# Add: To stage all un-staged modified files.&lt;/span&gt;
git add &lt;span class="nb"&gt;.&lt;/span&gt;

&lt;span class="c"&gt;# Commit: To add a commit locally with a message.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"&amp;lt;Commit-message-in-quotes&amp;gt;"&lt;/span&gt;

&lt;span class="c"&gt;# Status: To get the current state of the repository.&lt;/span&gt;
git status

&lt;span class="c"&gt;# Stash: To store the current changes locally with untracked(new) files.&lt;/span&gt;
git stash save &lt;span class="s2"&gt;"&amp;lt;Stash-Nessage&amp;gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Branches:&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="c"&gt;# Create a new branch&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;git branch &amp;lt;Branch-Name&amp;gt;

&lt;span class="c"&gt;# List all remote or local branches of git&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;git branch &lt;span class="nt"&gt;-a&lt;/span&gt;

&lt;span class="c"&gt;# Delete a branch&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;git branch &lt;span class="nt"&gt;-d&lt;/span&gt; &amp;lt;Branch-Name&amp;gt;

&lt;span class="c"&gt;# Checkout:&lt;/span&gt;
&lt;span class="c"&gt;# Checkout an existing branch&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;git checkout &amp;lt;Branch-Name&amp;gt;

&lt;span class="c"&gt;# Checkout and create a new branch with that name&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; &amp;lt;New-Branch-Name&amp;gt;

&lt;span class="c"&gt;# Merge: To merge the mentioned branch changes into the current branch.&lt;/span&gt;
git merge &amp;lt;Branch-Name&amp;gt;
&lt;span class="c"&gt;# Note: We need to manually resolve the found conflicts from an IDE as we need to manually review and confirm which piece of code we need to keep.&lt;/span&gt;

&lt;span class="c"&gt;# Rebase: To merge the mentioned branch changes into the current branch but, without the commit history as if the branch is recently checked out.&lt;/span&gt;
git branch &amp;lt;Branch-Name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tags:&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="c"&gt;# List tags&lt;/span&gt;
git tag

&lt;span class="c"&gt;# List tags with search&lt;/span&gt;
git tag &lt;span class="nt"&gt;-l&lt;/span&gt; &lt;span class="s2"&gt;"&amp;lt;Search-Token&amp;gt;"&lt;/span&gt;

&lt;span class="c"&gt;# Create a tag&lt;/span&gt;
git tag &lt;span class="nt"&gt;-a&lt;/span&gt; &amp;lt;Tag-Name&amp;gt; HEAD &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"&amp;lt;Tag-Message&amp;gt;"&lt;/span&gt;

&lt;span class="c"&gt;# Sync changes with Remote and specific tag&lt;/span&gt;
git push &amp;lt;Remote-Name&amp;gt; &amp;lt;Tag-Name&amp;gt;
&lt;span class="c"&gt;# Note: To add tag for a specific commit, we need to add tag name in the push as above.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reference Link: &lt;a href="http://guides.beanstalkapp.com/version-control/common-git-commands.html"&gt;http://guides.beanstalkapp.com/version-control/common-git-commands.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are searching for some commands for some specific situations, you can find them below.&lt;/p&gt;

&lt;h3&gt;
  
  
  Remove all deleted Remote Git Branches
&lt;/h3&gt;

&lt;p&gt;When we fetch, pull, or checkout a branch from a remote, a remote copy gets saved in our system, and it does not delete automatically from your system after it gets deleted from the remote. We can do it by the below command.&lt;/p&gt;

&lt;p&gt;Command:&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="c"&gt;# Terminal: Bash&lt;/span&gt;
git fetch &lt;span class="nt"&gt;--prune&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Remove all deleted Remote Git Branches checked out locally
&lt;/h3&gt;

&lt;p&gt;The above command will only remove the remote branches from your remote local, but if you have checked out a git branch in local and it gets deleted from the remote, it will still stay in as your local branch. To delete those local branches, you can use the below command.&lt;/p&gt;

&lt;p&gt;Command:&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="c"&gt;# Terminal: Bash&lt;/span&gt;
git fetch &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; git branch &lt;span class="nt"&gt;-r&lt;/span&gt; | &lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="s1"&gt;'{print $1}'&lt;/span&gt; | egrep &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; /dev/fd/0 &amp;lt;&lt;span class="o"&gt;(&lt;/span&gt;git branch &lt;span class="nt"&gt;-vv&lt;/span&gt; | &lt;span class="nb"&gt;grep &lt;/span&gt;origin&lt;span class="o"&gt;)&lt;/span&gt; | &lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="s1"&gt;'{print $1}'&lt;/span&gt; | xargs git branch &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Reset files from the most recent commit before a push
&lt;/h3&gt;

&lt;p&gt;There are times when we take a pull of a branch into the current git branch and want to revert it just after that, or the wrong git branch got pulled. So to revert the changes and roll back the changes, we can use the below command.&lt;/p&gt;

&lt;p&gt;Command:&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="c"&gt;# Terminal: Bash&lt;/span&gt;
git reset &lt;span class="nt"&gt;--hard&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Node JS Framework
&lt;/h2&gt;

&lt;p&gt;Node JS is one of the fastest growing javascript frameworks in developing websites and applications.&lt;br&gt;
Despite being fast and reliable, we might need manual interference to fix issues while working with it. One of them is listed below.&lt;/p&gt;
&lt;h3&gt;
  
  
  Delete all node_modules folders from all subfolders from the current directory
&lt;/h3&gt;

&lt;p&gt;When we work in NodeJs applications, we can come across microservice/micro-frontend applications.&lt;br&gt;
They tend to have multiple node_modules folders inside the root directory. If the folder structure is not standard, we might see more than one node_modules folder in that project.&lt;/p&gt;

&lt;p&gt;Hence while working on these projects, we might need to remove all the dependencies by deleting the node_modules folder(s). So, rather than searching for each instance of the folder and deleting it, we can use the below command.&lt;/p&gt;

&lt;p&gt;Command:&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="c"&gt;# Terminal: Any&lt;/span&gt;
&lt;span class="c"&gt;# One time install of package.&lt;/span&gt;
npm &lt;span class="nb"&gt;install &lt;/span&gt;rimraf &lt;span class="nt"&gt;-g&lt;/span&gt;
&lt;span class="c"&gt;# Command to remove all node_modules folders recursively from current directory.&lt;/span&gt;
rimraf .&lt;span class="se"&gt;\*&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;ode_modules
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  .Net Framework
&lt;/h2&gt;

&lt;p&gt;.NET is a software development framework created by Microsoft that provides a platform for building Windows desktop applications, web applications, and services using various programming languages such as C#, Visual Basic, and F#. It includes a runtime environment, a class library, and development tools for application creation, deployment, and management.&lt;/p&gt;

&lt;h3&gt;
  
  
  Delete all bin and obj folders from the current directory.
&lt;/h3&gt;

&lt;p&gt;In .Net projects, we can expect a multi-tier application where logic and code get divided among different apps and libraries. Hence, each app/library has its own bin and obj folder.&lt;br&gt;
We don't have any issues with that, but manually deleting the bin and obj folders can be tedious if needed.&lt;br&gt;
So, we can use the below command. It will search for all the bin and obj folders of the solution and delete them on a single execution.&lt;/p&gt;

&lt;p&gt;Command:&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="c"&gt;# Terminal: CMD, Powershell&lt;/span&gt;
Get-ChildItem .&lt;span class="se"&gt;\ &lt;/span&gt;&lt;span class="nt"&gt;-include&lt;/span&gt; bin,obj &lt;span class="nt"&gt;-Recurse&lt;/span&gt; | foreach &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$_&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; remove-item &lt;span class="nv"&gt;$_&lt;/span&gt;.fullname &lt;span class="nt"&gt;-Force&lt;/span&gt; &lt;span class="nt"&gt;-Recurse&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Windows OS
&lt;/h2&gt;

&lt;p&gt;Windows is one of the widely used Operating Systems. But despite its rich mouse-friendly UI, performing some tasks can be tedious, long, and boring. Moreover, you might need some direct commands, which can save you some seconds.&lt;/p&gt;

&lt;h3&gt;
  
  
  Robocopy to copy/move files
&lt;/h3&gt;

&lt;p&gt;Robocopy is an inbuilt tool of Windows that is only usable from the terminal for now. It is a fast and reliable way to copy/move files from one location to another.&lt;/p&gt;

&lt;p&gt;Many discussions are floating on the internet about why this is not used natively for copying/moving files in the code.&lt;br&gt;
Some 3rd parties applications run Robocopy internally, like TeraCopy, etc. You can use the below command if you don't want to install any other software and still want faster copy/move speeds.&lt;/p&gt;

&lt;p&gt;Command:&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="c"&gt;# Terminal: CMD, Powershell&lt;/span&gt;
robocopy &lt;span class="s2"&gt;"&amp;lt;Source Path&amp;gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&amp;lt;Destination Path&amp;gt;"&lt;/span&gt; /move /is /e /compress /mt:128
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To move the files and folders using Robocopy, append &lt;code&gt;move&lt;/code&gt; to the above command. Also, if you want to create a new root folder for the destination, add the name to the destination path.&lt;/p&gt;

&lt;h3&gt;
  
  
  Add ports to the Windows Firewall
&lt;/h3&gt;

&lt;p&gt;In corporate places where security is our utmost priority, we tend to disable all the ports for the public by default.&lt;br&gt;
So we need to make the ports public if we host a website or start an application that runs on an available port.&lt;br&gt;
To achieve this, we need to enable the port in the firewall for inbound and outbound.&lt;br&gt;
When the following commands execute in the terminal with elevated privileges, they create an entry in the inbound and outbound rules.&lt;/p&gt;

&lt;p&gt;Commands:&lt;/p&gt;

&lt;p&gt;Inbound:&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="c"&gt;# Terminal: CMD, Powershell&lt;/span&gt;
New-NetFirewallRule &lt;span class="nt"&gt;-DisplayName&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;Port Number&amp;gt;'&lt;/span&gt; &lt;span class="nt"&gt;-Profile&lt;/span&gt; &lt;span class="s1"&gt;'Domain,Private,Public'&lt;/span&gt; &lt;span class="nt"&gt;-Direction&lt;/span&gt; Inbound &lt;span class="nt"&gt;-Action&lt;/span&gt; Allow &lt;span class="nt"&gt;-Protocol&lt;/span&gt; TCP &lt;span class="nt"&gt;-LocalPort&lt;/span&gt; &amp;lt;Label&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Outbound:&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="c"&gt;# Terminal: CMD, Powershell&lt;/span&gt;
New-NetFirewallRule &lt;span class="nt"&gt;-DisplayName&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;Port Number&amp;gt;'&lt;/span&gt; &lt;span class="nt"&gt;-Profile&lt;/span&gt; &lt;span class="s1"&gt;'Domain,Private,Public'&lt;/span&gt; &lt;span class="nt"&gt;-Direction&lt;/span&gt; Outbound &lt;span class="nt"&gt;-Action&lt;/span&gt; Allow &lt;span class="nt"&gt;-Protocol&lt;/span&gt; TCP &lt;span class="nt"&gt;-LocalPort&lt;/span&gt; &amp;lt;Label&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As per the above commands, we have labeled the rule as the port number for easy searching. You can use the name of your choice.&lt;/p&gt;

&lt;h3&gt;
  
  
  Remove all blank folders from a given path
&lt;/h3&gt;

&lt;p&gt;If we are working in a console/desktop application, the code can create blank folders during execution if the code is in that aspect. We need to clean up the empty folders by deleting them.&lt;br&gt;
We are also considering the folders that contain other subfolders that either have empty subfolders or nothing.&lt;br&gt;
Here, the default command of folder deletion will not work as the folder has something inside it, although it has an empty subfolder(s).&lt;br&gt;
So, the below command can find these subfolders and delete them recursively.&lt;/p&gt;

&lt;p&gt;Command:&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="c"&gt;# Terminal: Powershell&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; /f &lt;span class="s2"&gt;"delims="&lt;/span&gt; %d &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'dir /s /b /ad ^| sort /r'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="k"&gt;do &lt;/span&gt;rd &lt;span class="s2"&gt;"%d"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Pro Tip
&lt;/h2&gt;

&lt;p&gt;Generally, the commands work in a single type of terminal, and it would be great if we confirm that before executing.&lt;/p&gt;

&lt;p&gt;I know only the commands above that can be generic and helpful in daily tasks. If you know any such terminal commands and want to add them here, kindly let me know. I will love to add them to this blog with your mention.&lt;/p&gt;

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

&lt;p&gt;There are many commands available that can make our life easier. They shall not replace the GUI we are using in all OS, but they can shorten the duration of the tasks where we use them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Author
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/mahadikrahul"&gt;Rahul Mahadik&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I started my career journey in 2015 in an &lt;a href="https://theonetechnologies.com/outsourcing/it-outsourcing-company-india"&gt;IT company&lt;/a&gt;. Currently, I am a full-stack team leader at The One Technologies.&lt;br&gt;
I love to solve complex issues while taking care of modernizing and optimizing. I am fond of listening to music, spending time with family &amp;amp; friends, and watching movies.&lt;/p&gt;

</description>
      <category>terminal</category>
      <category>bash</category>
      <category>node</category>
      <category>windows</category>
    </item>
    <item>
      <title>Connect to multiple Git accounts of the same vendor (GitHub, Gitlab) portal</title>
      <dc:creator>Rahul Mahadik</dc:creator>
      <pubDate>Tue, 18 Apr 2023 11:02:01 +0000</pubDate>
      <link>https://dev.to/mahadikrahul/connect-to-multiple-git-accounts-of-the-same-vendor-github-gitlab-portal-33l4</link>
      <guid>https://dev.to/mahadikrahul/connect-to-multiple-git-accounts-of-the-same-vendor-github-gitlab-portal-33l4</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;As a developer, we often need to use multiple accounts of a single Git vendor simultaneously. It can happen when a client does not allow outside the organization accounts and signup a new Git account for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Terminologies&lt;/li&gt;
&lt;li&gt;Issues with HTTPS Authentication&lt;/li&gt;
&lt;li&gt;So, is SSH the way to go? Yes&lt;/li&gt;
&lt;li&gt;Connect to Git via SSH&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Terminologies
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  Git Repositories
&lt;/h3&gt;

&lt;p&gt;Git Repositories are a kind of version control used by developers to collaborate on a single project.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  Git Repositories Authentication
&lt;/h3&gt;

&lt;p&gt;The git repository vendors (GitHub, Gitlab, etc) provide two types of authentication, credentials via HTTP(S) and SSH.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  Credentials (HTTP/HTTPS)
&lt;/h3&gt;

&lt;p&gt;It is the simplest method to clone the Git repo. It will ask for the user credentials while cloning the repo from a particular URL the first time and, on successful verification, stores it in the system globally.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  SSH
&lt;/h3&gt;

&lt;p&gt;It is another method to clone the Git repo. It needs an SSH key to be pre-configured in the vendor's portal.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Issues with HTTPS Authentication
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;When we clone a repository from a Git Vendor for the first time, we need to add credentials to authenticate. The valid credentials after authentication get saved in the system with the URL, so it has to be unique. It means we can stay connected to only one account at a time.&lt;/li&gt;
&lt;/ul&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%2Fdwkwr35rb0s9fob6igqk.png" 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%2Fdwkwr35rb0s9fob6igqk.png" alt="HTTPS Fatal Error" width="800" height="185"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When we need to share the Git account for committing the code, we need to share the same password we use to login into the portal. However, some vendors like GitHub and Azure DevOps have opted for separate credentials for cloning repositories.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  So, is SSH the way to go? Yes!
&lt;/h2&gt;

&lt;p&gt;Yes, we can use SSH to overcome the issues of HTTPS. Also, all the git vendors support it. When using SSH, there is no need to share the credentials of the portal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect to Git via SSH
&lt;/h2&gt;

&lt;p&gt;We can connect to a Git vis SSH from all available OS.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Prerequisite (For Windows Only)
&lt;/h3&gt;

&lt;p&gt;By default, in Windows, the Open SSH service is disabled. We need to check that and update it if required.&lt;/p&gt;

&lt;p&gt;To start the service&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open Run&lt;/li&gt;
&lt;li&gt;Type &lt;code&gt;services.msc&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Find OpenSSH Authentication Agent.&lt;/li&gt;
&lt;li&gt;Check for the status to be running and the startup type to be Automatic.

&lt;ul&gt;
&lt;li&gt;If the settings do not match the above one,&lt;/li&gt;
&lt;li&gt;Right-click on the service.&lt;/li&gt;
&lt;li&gt;Select Properties.&lt;/li&gt;
&lt;li&gt;If the startup type is not automatic

&lt;ul&gt;
&lt;li&gt;Set the startup type to Automatic from the dropdown.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;If the service shows stopped.

&lt;ul&gt;
&lt;li&gt;Click Apply if the service status is "stopped" and the start button is still disabled.&lt;/li&gt;
&lt;li&gt;Click on the start button to start the service.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Click on Apply (If enabled) and OK.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&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%2F2jqkrs5uxevw6g7whhlt.png" 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%2F2jqkrs5uxevw6g7whhlt.png" alt="Services.msc screen" width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Create an SSH Key
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Check the encryption of the SSH key with the vendor. Different vendors allow single but different encryption keys.&lt;br&gt;
For example, GitHub allows ed25519, and Azure allows RSA.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check the .ssh folder.&lt;br&gt;
The SSH key should also be in the specific location in the system to be accessed by Git.&lt;br&gt;
Locations:&lt;br&gt;
Windows: C:\Users[your username]. ssh (replace [your username] with actual username)&lt;br&gt;
Linux: /home/your-username/.ssh&lt;br&gt;
macOS: /Users/your-username/.ssh&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The folders may or may not be available at the location mentioned above. In case of unavailability of the folder, we need to create them at the defined path. Also, in some systems, the folder is hidden.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Steps&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Open terminal/CMD in the .ssh folder of your system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Type the below command.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh-keygen &lt;span class="nt"&gt;-t&lt;/span&gt; ed25519 &lt;span class="nt"&gt;-C&lt;/span&gt; &lt;span class="s2"&gt;"&amp;lt;youremail@domain.com&amp;gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will be prompted to add a file name, provide a meaningful name that resemble the email.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Notes&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Kindly note that you need to change encryption according to your current vendor.&lt;br&gt;
Here are some examples:&lt;br&gt;
GitHub: ed25519&lt;br&gt;
GitLab: rsa, ed25519, etc&lt;br&gt;
Azure DevOps: rsa&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add the file name for the key file. It should be meaningful and related to the email used for Git access.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keep the paraphrase blank by pressing Enter/Return twice.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After completion, two files will be created in the .ssh folder, a private key file and a public key file (with a .pub extension). &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%2Fdi9o08l6t7lsj0jusqsb.png" 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%2Fdi9o08l6t7lsj0jusqsb.png" alt="Create SSH Key" width="800" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Configure the Git Vendor portal with the created SSH Key
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Go to your vendor portal and find the SSH Keys section.&lt;/li&gt;
&lt;li&gt;Click on add a new SSH key.&lt;/li&gt;
&lt;li&gt;Add a meaningful name to the name field and paste the pub file contents of the SSH key in the SSH key text area.&lt;/li&gt;
&lt;li&gt;Click on Add to save the SSH key in the portal.&lt;/li&gt;
&lt;/ol&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%2Fv62frp9bhtrb49jc0bqw.png" 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%2Fv62frp9bhtrb49jc0bqw.png" alt="Add SSH Key to Portal" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, you can use the SSH commands directly to clone the repo if there are no other SSH keys enabled for the same vendor.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Configure Multiple accounts of the same vendor
&lt;/h3&gt;

&lt;p&gt;Create separate SSH keys for all the required accounts for the vendor by repeating the above steps and get them registered under their respective git accounts in the vendor portal.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Create and save the config file
&lt;/h3&gt;

&lt;p&gt;Create a config file in the .ssh folder.&lt;br&gt;
Add the below code to the config file for each account.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Host "Self-created host to differentiate from others"
HostName "Original host of the git vendor"
IdentityFile ~/.ssh/"SSH key filename"
IdentitiesOnly yes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Default GitHub Account: mahadikrahul

Host github.com
HostName github.com
IdentityFile ~/.ssh/mahadikrahul-github
IdentitiesOnly yes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You might also need to add the below command for some vendors like Azure.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PubkeyAcceptedAlgorithms +ssh-rsa
HostkeyAlgorithms +ssh-rsa
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can add multiple accounts of the same or different git vendor separated by a blank line. You can also use # to add comments for information about a config added. To create multiple Git Accounts, you need to repeat the steps from Step 3.&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%2F2ek4kucx8cuhv8cdvhgd.png" 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%2F2ek4kucx8cuhv8cdvhgd.png" alt=".ssh/config" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To access the repo of different accounts of the same vendor, change the URL of SSH while cloning the repo.&lt;/p&gt;

&lt;p&gt;Original SSH command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone git@github.com/&amp;lt;your-repository-name&amp;gt;.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Updated SSH command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone git@github.com-:&amp;lt;name-in-config&amp;gt;/&amp;lt;your-repository-name&amp;gt;.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Change the git config username and email to the respective accounts in the folder, as the global config shall not be the right one for a git account.&lt;/p&gt;

&lt;p&gt;We can now access different git accounts of the same vendor without interfering with each other's discreteness by using different SSH command URLs while cloning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pro Tip
&lt;/h2&gt;

&lt;p&gt;We can also share the created SSH key files to other systems and clone the repository directly. This way, we can provide access to the repo without even sharing the account credentials.&lt;/p&gt;

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

&lt;p&gt;It is a complex and tedious process to access a repository. But once the default configuration is done, adding other accounts becomes easier. I hope this blog helps you to configure your git accounts easily.&lt;/p&gt;

&lt;h2&gt;
  
  
  Author
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/mahadikrahul" rel="noopener noreferrer"&gt;Rahul Mahadik&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I started my career journey in 2015 in an &lt;a href="https://theonetechnologies.com/outsourcing/it-outsourcing-company-india" rel="noopener noreferrer"&gt;IT company&lt;/a&gt;. Currently, I am a full-stack team leader at The One Technologies.&lt;br&gt;
I love to solve complex issues while taking care of modernizing and optimizing. I am fond of listening to music, spending time with family &amp;amp; friends, and watching movies.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>nextjs</category>
      <category>softwaredevelopment</category>
      <category>programming</category>
    </item>
    <item>
      <title>How to create C# objects from the SQL Server tables</title>
      <dc:creator>Rahul Mahadik</dc:creator>
      <pubDate>Mon, 31 Oct 2022 05:08:59 +0000</pubDate>
      <link>https://dev.to/mahadikrahul/how-to-create-c-objects-from-the-sql-server-tables-1dh9</link>
      <guid>https://dev.to/mahadikrahul/how-to-create-c-objects-from-the-sql-server-tables-1dh9</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;We can come across a moment when we need the data of the tables as objects to be used in the code for multiple discrete uses.&lt;/p&gt;

&lt;h2&gt;
  
  
  The use cases are as below:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;We need these objects in database seeding, where we list the C# objects in the code and make it insert or update while the app starts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mnzSKJqN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5tuno4xbmg384xdhdonw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mnzSKJqN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5tuno4xbmg384xdhdonw.png" alt="Seed data in EF" width="880" height="423"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;We need these objects in the test cases where we need to arrange some dummy data mocked before we act to verify assertions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bJnrn9pB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0dxt43thaiz2kfhfxfrn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bJnrn9pB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0dxt43thaiz2kfhfxfrn.png" alt="Add data to test mocks" width="880" height="312"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Possible Solutions
&lt;/h2&gt;

&lt;p&gt;We use the two methods listed below based on our time, complexity, and expertise.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Manually write the values beside the data as we create an object with static data for all the records we need in the code.&lt;br&gt;
This method is very exhausting, and we might also run into issues if we paste the wrong data to values as we will be hopping between the screens of SQL and our code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If we know about the formula of spreadsheets and have some time to spare, we can create the object code.&lt;br&gt;
Firstly, we need to paste all the desired data into the spreadsheet. Now, we can write the formula to join the values of the cells with static text and format like a c# object.&lt;br&gt;
Though this is efficient, and we can easily create objects,  this method can be tricky since we need to play with spreadsheet formulas.&lt;br&gt;
The major disadvantage I can see is its uniqueness. We cannot use the formula created for other tables. We need to create a new spreadsheet formula for each table we need.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What can we do here?
&lt;/h2&gt;

&lt;p&gt;We can use the script I have created and added to the GitHub repo.&lt;/p&gt;

&lt;p&gt;Link: &lt;a href="https://github.com/mahadikrahul/sql-scripts#c-object-creator-csharpobjectcreatorsql"&gt;https://github.com/mahadikrahul/sql-scripts#c-object-creator-csharpobjectcreatorsql&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  CSharpObjectCreator.sql
&lt;/h2&gt;

&lt;p&gt;I have created this script using the system tables that store the details of the tables in our database.&lt;br&gt;
We first query the system tables and use the data to populate the objects in the format we need.&lt;/p&gt;

&lt;h3&gt;
  
  
  Usage
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Add the target table name as the value of the @TableName variable at line 3.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add any desired condition to the table that you want to filter the result. However, we can keep it blank for all records to populate.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add any field in @SkipField to skip populating in the object.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0kMo1jTf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g03pfyqtsodcol3516t5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0kMo1jTf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g03pfyqtsodcol3516t5.png" alt="CSharpObjectCreator.sql file input parameters" width="880" height="182"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Execute the query and find the result in the messages tab.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--I5UqP5Vm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aooparf5c9mv22kkq4nn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--I5UqP5Vm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aooparf5c9mv22kkq4nn.png" alt="Messages output of query" width="880" height="206"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Advantages
&lt;/h3&gt;

&lt;p&gt;Since we use the system tables, we can create objects for all the tables in the DB and populate the real-time data from the tables.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pro Tip
&lt;/h3&gt;

&lt;p&gt;If you want to modify the formatting or language of the object for other languages, you can update the script and get the task done.&lt;/p&gt;

&lt;h2&gt;
  
  
  Author
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/mahadikrahul"&gt;Rahul Mahadik&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I started my career journey in 2015 in an IT company. Currently, I am a full-stack team leader at &lt;a href="https://theonetechnologies.com/outsourcing/it-outsourcing-company-india"&gt;The One Technologies&lt;/a&gt;.&lt;br&gt;
I love to solve complex issues while taking care of modernizing and optimizing. I am fond of listening to music, spending time with family &amp;amp; friends, and watching movies.&lt;/p&gt;

</description>
      <category>sql</category>
      <category>csharp</category>
      <category>dotnet</category>
      <category>testing</category>
    </item>
  </channel>
</rss>
