<?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: geetcloud</title>
    <description>The latest articles on DEV Community by geetcloud (@geetcloud).</description>
    <link>https://dev.to/geetcloud</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%2F694294%2F7268da76-3f33-4c00-b58c-c255873ad592.jpg</url>
      <title>DEV Community: geetcloud</title>
      <link>https://dev.to/geetcloud</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/geetcloud"/>
    <language>en</language>
    <item>
      <title>Two sum LeetCode problem explained in simple terms using Dictionary</title>
      <dc:creator>geetcloud</dc:creator>
      <pubDate>Mon, 13 Sep 2021 17:16:19 +0000</pubDate>
      <link>https://dev.to/geetcloud/two-sum-leetcode-problem-explained-in-simple-terms-using-dictionary-4p19</link>
      <guid>https://dev.to/geetcloud/two-sum-leetcode-problem-explained-in-simple-terms-using-dictionary-4p19</guid>
      <description>&lt;h2&gt;
  
  
  Two Sum
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Problem
&lt;/h3&gt;

&lt;p&gt;Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.&lt;/p&gt;

&lt;p&gt;You may assume that each input would have exactly one solution, and you may not use the same element twice.&lt;/p&gt;

&lt;p&gt;You can return the answer in any order. &lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Output: Because nums[0] + nums[1] == 9, we return [0, 1].
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Input: nums = [3,2,4], target = 6
Output: [1,2]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Input: nums = [3,3], target = 6
Output: [0,1]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Let's start
&lt;/h3&gt;

&lt;p&gt;As usual, our main goal is to solve the problem and at the same time achieve the best time complexity with minimal space complexity. If you are a beginner to problem solving or trying data structure problems, I suggest you start with a brute force approach and then try to optimize your solution to the best time/space complexity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Analysis
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Before jumping into a solution or pseudocode, read the problem statement a couple of times and make sure to understand it well.
&lt;/li&gt;
&lt;li&gt;To start with, we can check each number in the array by comparing its sum with all other numbers. This will give O(\( n^2 \)) complexity with a simple brute force approach.&lt;/li&gt;
&lt;li&gt;Let's see how we can do this better. Let's assume the two numbers we need to find are A and B. If A is the current element in our loop iteration. B is the other number in the same array.
          A + B = target.  then, B = target - A.&lt;/li&gt;
&lt;li&gt;How about if we could store/keep track of (target - A ) in a data structure, when we traverse each number in the array? We will only store the difference in a set, if it doesn't already exist. If it exists already, then the current indice and stored value indice are the answer. We will just return it. &lt;/li&gt;
&lt;li&gt;Dictionary is the best data structure candidate for our solution in C#. In Java, we can go with Hashtable.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Difference between Hashtable and Dictionary in C#&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Dictionary is a generic collection which is generally used to store key/value pairs. Dictionary is defined under System.Collection.Generics namespace. It is dynamic in nature which means the size of the dictionary is growing according to the need.&lt;/p&gt;

&lt;p&gt;A Hashtable is a collection of key/value pairs that are arranged based on the hash code of the key. It is the non-generic type of collection which is defined in System.Collections namespace. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Algorithm | Pseudocode
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Create a Dictionary to store the (target - currentelement)'s value in the array.&lt;/li&gt;
&lt;li&gt;Iterate each element in the array and get the difference with target.&lt;/li&gt;
&lt;li&gt;If the difference value already exists in the dictionary, that is our answer. Return the indices of the current element and the corresponding difference value stored in the dictionary.&lt;/li&gt;
&lt;li&gt;Else, store the difference value in the dictionary .&lt;/li&gt;
&lt;li&gt;At the end, throw exception "No solution found" if we don't have the difference element in our dictionary.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's start writing the solution.&lt;/p&gt;

&lt;p&gt;Loop through the elements in the array. If we find the difference element in the dictionary that matches that sums up the target. That's it. That is our answer. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;** Given Array contains the two indices that sums up the target !**&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Solution (in C#)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;
    &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
       &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="nf"&gt;TwoSum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
       &lt;span class="n"&gt;Dictionary&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;dict&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Dictionary&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;++)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;diff&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ContainsKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;diff&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
                &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;[]{&lt;/span&gt;&lt;span class="n"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;diff&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(!&lt;/span&gt;&lt;span class="n"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ContainsKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;
                &lt;span class="n"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Exception&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"No solution found"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Complexity
&lt;/h3&gt;

&lt;p&gt;Time Complexity =&amp;gt; O(n) =&amp;gt; Traverse the array one time.  Dictionary Add() ContainsKey operations are O(1) time.&lt;br&gt;
Space Complexity =&amp;gt;  O(n)  =&amp;gt; Dictionary stores at most n number of key-value pairs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;This problem is a very good example of Hashtable/Dictionary Data structure usage to reduce the complexity from O(\( n^2 \)) to O(n) Do check out more examples in this category for further learning. &lt;/p&gt;

&lt;h3&gt;
  
  
  References
&lt;/h3&gt;

&lt;p&gt;The LeetCode Problem in this article:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://leetcode.com/problems/two-sum/"&gt;https://leetcode.com/problems/two-sum/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Thanks for reading this post!
&lt;/h3&gt;

&lt;p&gt;I hope this article is informative and helpful in some way. If it is, please like and share! &lt;/p&gt;

&lt;p&gt;Happy learning! &lt;/p&gt;

</description>
      <category>algorithms</category>
      <category>programming</category>
      <category>computerscience</category>
      <category>csharp</category>
    </item>
    <item>
      <title>Serverless Technology Choices in Azure</title>
      <dc:creator>geetcloud</dc:creator>
      <pubDate>Sun, 12 Sep 2021 06:47:19 +0000</pubDate>
      <link>https://dev.to/geetcloud/serverless-technology-choices-in-azure-333d</link>
      <guid>https://dev.to/geetcloud/serverless-technology-choices-in-azure-333d</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Which Azure Serverless Technology is the best choice for your business requirements?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Overview
&lt;/h3&gt;

&lt;p&gt;The objective of this article is to understand the basics and help you to choose the best Azure Serverless Technology for a general set of business requirements.  &lt;/p&gt;

&lt;p&gt;This is assuming the users who reading this article have some basic knowledge on workflow, orchestration, and application programming. If not, I would suggest those to read more on said foundation topics before you jump into this article. :)  &lt;/p&gt;

&lt;h3&gt;
  
  
  What is Serverless Computing?
&lt;/h3&gt;

&lt;p&gt;Serverless computing is a cloud-hosted execution environment with a single or group of servers that runs your code, but abstracts the underlying hosting environment. The main concept is that we are not responsible for the infrastructure or the maintenance of the server. And we don’t have to worry about the outages or increase in demand during peak instances situations like the holidays or for black friday season ;) . The cloud provider takes care of maintenance, scalability, and everything else for you.  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You just create an instance of the service and add your code in any desired language. That’s it!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Today we are going to see the two most popular and commonly used Azure Serverless technologies: Azure Functions and Azure Logic Apps.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Azure Functions
&lt;/h3&gt;

&lt;p&gt;With the Azure Functions service, you can host a single method or function by using a popular programming language in the cloud that runs in response to an event. An example of an event might be an HTTP request, a new message on a queue, or a message on a timer.  &lt;/p&gt;

&lt;p&gt;Functions can be written in many common programming languages, such as C#, Python, JavaScript, Typescript, Java, and PowerShell.  &lt;/p&gt;

&lt;h4&gt;
  
  
  Key Features
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  Scales automatically&lt;/li&gt;
&lt;li&gt;  Charges are applied only when the function is triggered&lt;/li&gt;
&lt;li&gt;  It is the best choice when demands are variable&lt;/li&gt;
&lt;li&gt;  Perform orchestration tasks using extension called Durable functions&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Azure Logic Apps
&lt;/h3&gt;

&lt;p&gt;Logic Apps is a low-code/no-code development platform hosted as a cloud service. This service helps you automate and orchestrate tasks, business processes, and workflows when you need to integrate apps, data, systems, and services across enterprises or organizations  &lt;/p&gt;

&lt;p&gt;We build an app by linking triggers to actions with connectors.  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A  &lt;strong&gt;trigger&lt;/strong&gt;  is an event (such as a timer) that causes an app to execute.  &lt;/p&gt;

&lt;p&gt;An  &lt;strong&gt;action&lt;/strong&gt;  is a task or step that can execute. (Available in different programming languages)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To build enterprise integration solutions with Azure Logic Apps, you can choose from a growing gallery of over 200 connectors. The gallery includes services such as Salesforce, SAP, Oracle DB, and file shares.  &lt;/p&gt;

&lt;h4&gt;
  
  
  Differences
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://1.bp.blogspot.com/-skwFKbML25A/YSce71oKY7I/AAAAAAAAAKk/H_HMbfwKtGMMGNyOKaWdAMehpMSPa6OXQCLcBGAsYHQ/w640-h480/Green%2Band%2BBlack%2BCorporate%2BComparison%2BChart.png" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F1.bp.blogspot.com%2F-skwFKbML25A%2FYSce71oKY7I%2FAAAAAAAAAKk%2FH_HMbfwKtGMMGNyOKaWdAMehpMSPa6OXQCLcBGAsYHQ%2Fw640-h480%2FGreen%252Band%252BBlack%252BCorporate%252BComparison%252BChart.png" alt="Difference between Azure Functions and Azure Logic Apps"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Example Use Cases
&lt;/h3&gt;

&lt;h4&gt;
  
  
  When to choose Azure Functions
&lt;/h4&gt;

&lt;p&gt;Code-based, you write and test the code. Will be able to debug without involving or provisions test resources in the cloud.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  If you have your code / logic / automated tasks already ready in your desired language, it is easy to just put the code in Azure Functions than to create it from scratch using Azure logic apps&lt;/li&gt;
&lt;li&gt;  If you need to perform some complex logic or specialized data parting, Azure Functions is the best since you have full control of the code and visualizing performing complex logic workflows is tough in Azure Logic Apps&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  When to choose Azure Logic Apps
&lt;/h4&gt;

&lt;p&gt;GUI based. Preferable if we don’t want to get involved with developer resources and instead want to use GUI. Best suited for integration since lots of connectors are available out of the box.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  If we need to perform more orchestration tasks from different APIs, go for Azure Logic Apps.&lt;/li&gt;
&lt;li&gt;  If we need a visual workflow, Azure Logic Apps is the best choice&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Combination of both is also a best choice for large scale enterprise cloud environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;In this article, we have just covered the high level overview and the differences between Azure Functions and Azure Logic Apps. Please go through the official Microsoft documentation cited in Reference section for further learning.&lt;/p&gt;

&lt;h3&gt;
  
  
  References
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/learn/modules/serverless-fundamentals/" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/learn/modules/serverless-fundamentals/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/azure/azure-functions/functions-compare-logic-apps-ms-flow-webjobs" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/azure/azure-functions/functions-compare-logic-apps-ms-flow-webjobs&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Thanks for reading this post!
&lt;/h3&gt;

&lt;p&gt;I hope this article is informative and helpful in some way. If it is, please like and share this article. &lt;/p&gt;

&lt;p&gt;Happy learning! &lt;/p&gt;

</description>
      <category>azure</category>
      <category>serverless</category>
      <category>cloud</category>
    </item>
    <item>
      <title>LeetCode | Contains Duplicate III</title>
      <dc:creator>geetcloud</dc:creator>
      <pubDate>Fri, 03 Sep 2021 19:10:48 +0000</pubDate>
      <link>https://dev.to/geetcloud/leetcode-sep-21-challenge-series-day-2-contains-duplicate-iii-4a01</link>
      <guid>https://dev.to/geetcloud/leetcode-sep-21-challenge-series-day-2-contains-duplicate-iii-4a01</guid>
      <description>&lt;h2&gt;
  
  
  Contains Duplicate III
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Problem
&lt;/h3&gt;

&lt;p&gt;Given an integer array nums and two integers k and t, return true if there are two distinct indices i and j in the array such that abs(nums[i] - nums[j]) &amp;lt;= t and abs(i - j) &amp;lt;= k.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Input: nums = [1,2,3,1], k = 3, t = 0
Output: true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Input: nums = [1,0,1,1], k = 1, t = 2
Output: true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Input: nums = [1,5,9,1,5,9], k = 2, t = 3
Output: false
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hint #1  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Time complexity O(n log k) - This will give an indication that sorting is involved for k elements.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Hint #2  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Use already existing state to evaluate next state - Like, a set of k sorted numbers are only needed to be tracked. When we are processing the next number in array, then we can utilize the existing sorted state and it is not necessary to sort next overlapping set of k numbers again.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Let's start
&lt;/h3&gt;

&lt;p&gt;As usual , our main goal is to solve the problem and at the same time achieve the best time complexity with minimal space complexity. If you are a beginner to problem solving or trying data structure problems, I suggest you start with a brute force approach and then try to optimize your solution to the best time/space complexity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Analysis
&lt;/h3&gt;

&lt;p&gt;Given an integer array nums and two integers k and t, return true if there are two distinct indices i and j in the array such that abs(nums[i] - nums[j]) &amp;lt;= t and abs(i - j) &amp;lt;= k.&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%2Fc.tenor.com%2FeYFXkFqaTrAAAAAi%2Fthinking-think.gif" 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%2Fc.tenor.com%2FeYFXkFqaTrAAAAAi%2Fthinking-think.gif" alt="thinking"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Before jumping into a solution or pseudocode, read the problem statement a couple of times and make sure to understand it well.
&lt;/li&gt;
&lt;li&gt;Based on the problem statement, we understand that we need to find two distinct indices i and j such that abs(nums[i] - nums[j]) &amp;lt;= t and abs(i - j) &amp;lt;= k.&lt;/li&gt;
&lt;li&gt;This time, the problem is a moderate one and not as easy as the previous problem. So I'm going to use the hints provided. I have shared the two hints provided with the problem. &lt;/li&gt;
&lt;li&gt;Based on the first hint, it is understood that we need to sort the elements first and then using the sorted list, we need to find if there are two distinct indices i.e satisfying the provided condition. &lt;/li&gt;
&lt;li&gt;With sorting and iterating through all the array elements, we can achieve the solution by  O(n log k) complexity. &lt;/li&gt;
&lt;li&gt; With second hint, we understood that we need to maintain the sorted elements with its state in a data structure in such a way that we don't have to sort next overlapping elements again.&lt;/li&gt;
&lt;li&gt;From points #4 to #6, we can definitely choose TreeSet (data structure in Java) which will be a best candidate for this problem solution.&lt;/li&gt;
&lt;li&gt;And with all these points, we also got a hint, that this problem falls under "&lt;strong&gt;Sliding Window Pattern"&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;A sliding window is a sublist or subarray that runs over an underlying data structure. The data structure is iterable and ordered, such as an array or a string. At a high level, you can think of it as a subset of the two pointers method.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  TreeSet in Java
&lt;/h3&gt;

&lt;p&gt;A TreeSet is a sorted collection that extends the AbstractSet class and implements the NavigableSet interface.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It stores unique elements&lt;/li&gt;
&lt;li&gt;It doesn't preserve the insertion order of the elements&lt;/li&gt;
&lt;li&gt;It sorts the elements in ascending order&lt;/li&gt;
&lt;li&gt;It's not thread-safe&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In our solution, we are going to mainly use the below two important methods of Tree Set.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ceiling() =&amp;gt; This method returns the least element in this set greater than or equal to the given element, or null if there is no such element.&lt;/li&gt;
&lt;li&gt;floor() =&amp;gt; This method returns the greatest element in this set less than or equal to the given element, or null if there is no such element.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So with all these hints and analysis, let's start writing our algorithm or pseudocode.&lt;/p&gt;

&lt;h3&gt;
  
  
  Algorithm | Pseudocode
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Create a TreeSet to store the visited or tracked elements in the array.&lt;/li&gt;
&lt;li&gt;Iterate each element in the array and get the below two values

&lt;ul&gt;
&lt;li&gt;low =&amp;gt; highest element in the set lesser than the current element nums[i]&lt;/li&gt;
&lt;li&gt;hight =&amp;gt; smallest element in the set greater than the current element nums[i]&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;  if ((low != null &amp;amp;&amp;amp; (long) nums[i] - low &amp;lt;= t) || (high != null &amp;amp;&amp;amp; (long) high - nums[i] &amp;lt;= t)) return true
This means, we found the two indices that meet the required conditions.&lt;/li&gt;

&lt;li&gt;  if the conditions are not satisfied, insert the current element nums[i] in the tracking treeSet.

&lt;ul&gt;
&lt;li&gt; if we reach (i&amp;gt;=k) element, we can remove the first element, since the two indices which we need to identify has to be within &amp;lt;=k indices.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Let's start writing the solution.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Loop through the elements in the array. If we find the two indices that matches the required condition by comparing the low &amp;amp; high values in the treeSet. That's it. That is our answer. &lt;br&gt;
** Given Array contains Duplicate !**&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Solution (in Java)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;
    &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;boolean&lt;/span&gt; &lt;span class="nf"&gt;containsNearbyAlmostDuplicate&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;TreeSet&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;visitedSet&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;TreeSet&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;gt;();&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;length&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="nc"&gt;Integer&lt;/span&gt; &lt;span class="n"&gt;low&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;visitedSet&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;floor&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;]);&lt;/span&gt;
            &lt;span class="nc"&gt;Integer&lt;/span&gt; &lt;span class="n"&gt;high&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;visitedSet&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ceiling&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;]);&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="n"&gt;low&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;long&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;low&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;high&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;long&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="n"&gt;high&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
                &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="o"&gt;}&lt;/span&gt;
            &lt;span class="n"&gt;visitedSet&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;add&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;]);&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;visitedSet&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;remove&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="o"&gt;]);&lt;/span&gt;
            &lt;span class="o"&gt;}&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Complexity
&lt;/h3&gt;

&lt;p&gt;Time Complexity =&amp;gt; O(n log k)&lt;br&gt;
Space Complexity =&amp;gt;  O(k) &lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;This problem is a very good example of Sliding Window Pattern. Do check out more examples in this category for further learning. Since our solution's complexity is O(n log k) , this is not the best optimized solution. Based on my research and analysis, I found that we could achieve O(n) complexity for this problem using bucket sort. But it's a little complex solution based on my understanding. So I am leaving it to readers of this article to try out the O(n) bucket sort solution as an exercise. Provide your experience on solving this problem in O(n) complexity in the comment section of this article, if interested. Let's learn from each other.&lt;/p&gt;

&lt;h3&gt;
  
  
  References
&lt;/h3&gt;

&lt;p&gt;The LeetCode Problem in this article:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://leetcode.com/explore/challenge/card/september-leetcoding-challenge/554/week-1-september-1st-september-7th/3446/" rel="noopener noreferrer"&gt;https://leetcode.com/explore/challenge/card/september-leetcoding-challenge/554/week-1-september-1st-september-7th/3446/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Thanks for reading this post!
&lt;/h3&gt;

&lt;p&gt;I hope this article is informative and helpful in some way. If it is, please like and share! &lt;/p&gt;

&lt;p&gt;Happy learning! &lt;/p&gt;

</description>
      <category>algorithms</category>
      <category>programming</category>
      <category>java</category>
      <category>computerscience</category>
    </item>
    <item>
      <title>LeetCode | Largest Time for Given Digits</title>
      <dc:creator>geetcloud</dc:creator>
      <pubDate>Thu, 02 Sep 2021 17:29:10 +0000</pubDate>
      <link>https://dev.to/geetcloud/leetcode-sep-21-challenge-series-day-1-largest-time-for-given-digits-1glp</link>
      <guid>https://dev.to/geetcloud/leetcode-sep-21-challenge-series-day-1-largest-time-for-given-digits-1glp</guid>
      <description>&lt;h2&gt;
  
  
  Largest Time for Given Digits
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Problem
&lt;/h3&gt;

&lt;p&gt;Given an array &lt;code&gt;arr&lt;/code&gt;  of 4 digits, find the latest 24-hour time that can be made using each digit  &lt;strong&gt;exactly once&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;24-hour times are formatted as  &lt;code&gt;"HH:MM"&lt;/code&gt;, where  &lt;code&gt;HH&lt;/code&gt; is between &lt;code&gt;00&lt;/code&gt; and &lt;code&gt;23&lt;/code&gt;, and &lt;code&gt;MM&lt;/code&gt; is between &lt;code&gt;00&lt;/code&gt; and &lt;code&gt;59&lt;/code&gt;. The earliest 24-hour time is  &lt;code&gt;00:00&lt;/code&gt;, and the latest is  &lt;code&gt;23:59&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Return  &lt;em&gt;the latest 24-hour time in &lt;code&gt;"HH:MM"&lt;/code&gt;  format&lt;/em&gt;. If no valid time can be made, return an empty string.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example 1:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Input: arr = [1,2,3,4]
Output: "23:41"
Explanation: The valid 24-hour times are "12:34", "12:43", "13:24", "13:42", "14:23", "14:32", "21:34", "21:43", "23:14", and "23:41". Of these times, "23:41" is the latest.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Example 2:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Input: arr = [5,5,5,5]
Output: ""
Explanation: There are no valid 24-hour times as "55:55" is not valid.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Example 3:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Input: arr = [0,0,0,0]
Output: "00:00"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Example 4:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Input: arr = [0,0,1,0]
Output: "10:00"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Constraints:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; `arr.length == 4`
 `0 &amp;lt;= arr[i] &amp;lt;= 9`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
  
  
  Let's start
&lt;/h3&gt;

&lt;p&gt;Our main goal is to solve the problem and at the same time achieve the best linear time complexity with minimal space complexity. If you are a beginner to problem solving or trying data structure problems, I suggest you start with a brute force approach and then try to optimize your solution to the best time/space complexity.&lt;/p&gt;
&lt;h3&gt;
  
  
  Analysis
&lt;/h3&gt;

&lt;p&gt;Let's start analysing the problem statement. Given the array of 4 digits, we need to find out the latest 24-hour time that can be made using each digit "only once".&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%2Fc.tenor.com%2FeYFXkFqaTrAAAAAi%2Fthinking-think.gif" 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%2Fc.tenor.com%2FeYFXkFqaTrAAAAAi%2Fthinking-think.gif" alt="thinking"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Before jumping into a solution or pseudocode, read the problem statement a couple of times and make sure to understand it well.
&lt;/li&gt;
&lt;li&gt;Based on the problem statement, we understand that we need to compute all the possible combinations of the four digits to find the answer. This will give us a hint immediately that this problem falls under "Dynamic Programming".  It's a very interesting topic to learn all the different approaches to tackle these kind of similar "Permutation &amp;amp; Combination" problems.&lt;/li&gt;
&lt;/ul&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%2Fv1630558872941%2Ffzgc3z44d.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%2Fv1630558872941%2Ffzgc3z44d.png" alt="White Simple Music Icon Etsy Banner (3).png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Try to identify the  keywords like "each digit" can be used "only once".  This is our first clue.  We exactly have four digits to make our "hh:mm" latest hour (final answer).&lt;/li&gt;
&lt;li&gt;Second clue we can think of is to check each digit or hold the digit occurrences of all hh:mm combinations to compare with the array to get our final answer.&lt;/li&gt;
&lt;li&gt;Since we want the latest hour, max hour and minute in a day (24 hour time format) we need to start from the max (23 hr and 59 minute respectively) and iterate backwards to get the latest hour.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So with all these hints and analysis, let's start writing our algorithm or pseudocode.&lt;/p&gt;
&lt;h3&gt;
  
  
  Algorithm | Pseudocode
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Start iterating from the max hour:minute max time (23:59) and hold all of the 4 digits combinations for each iteration&lt;/li&gt;
&lt;li&gt;Initialise a latest_hour boolean flag at the start to "true".&lt;/li&gt;
&lt;li&gt;If the 4 digits of the single iteration not matching with the 4 elements of the input array, we have not reached the latest_hour. So set the latest_hour flag to false.&lt;/li&gt;
&lt;li&gt;Iterate and continue till we find the latest hour. i.e until the 4 digits combinations match with the 4 elements of the array.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's start writing the solution.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Loop through every hour and digit combination. If we find the exact&lt;br&gt;
four array elements. That's it. That is our answer. &lt;br&gt;
&lt;strong&gt;The Latest 24-hour Time!&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  Solution (in Java)
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;    &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;largestTimeFromDigits&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;arr&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
          &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;hour&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="n"&gt;hour&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="n"&gt;hour&lt;/span&gt;&lt;span class="o"&gt;--)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
                &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;minute&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;59&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="n"&gt;minute&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="n"&gt;minute&lt;/span&gt;&lt;span class="o"&gt;--)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
                    &lt;span class="kt"&gt;boolean&lt;/span&gt; &lt;span class="n"&gt;latest_hour&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
                    &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;];&lt;/span&gt;

                    &lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;hour&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;hour&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;]++;&lt;/span&gt;
                    &lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;hour&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="n"&gt;hour&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;hour&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;]++;&lt;/span&gt;
                    &lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;minute&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;minute&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;]++;&lt;/span&gt;
                    &lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;minute&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="n"&gt;minute&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;minute&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;]++;&lt;/span&gt;                

                   &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;arr&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
                        &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(--&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
                            &lt;span class="n"&gt;latest_hour&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
                            &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
                        &lt;span class="o"&gt;}&lt;/span&gt;
                    &lt;span class="o"&gt;}&lt;/span&gt;

                    &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;latest_hour&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; 
                      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;format&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"%02d:%02d"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;hour&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;minute&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
                &lt;span class="o"&gt;}&lt;/span&gt;
            &lt;span class="o"&gt;}&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Complexity
&lt;/h3&gt;

&lt;p&gt;Time Complexity =&amp;gt; O(23 x 59 x 4)  ==&amp;gt; O(1)&lt;br&gt;
Space Complexity =&amp;gt;  O(1)&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;This problem is a very good example of Dynamic Programing. Do check out for more examples in this category for further learning. Dynamic Programming has two methods, Top-down and Bottom-up approach. Be on the lookout for a future article where I explain the two and their differences!&lt;/p&gt;

&lt;h3&gt;
  
  
  References
&lt;/h3&gt;

&lt;p&gt;The LeetCode Problem in this article:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://leetcode.com/problems/largest-time-for-given-digits/" rel="noopener noreferrer"&gt;https://leetcode.com/problems/largest-time-for-given-digits/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Thanks for reading this post!
&lt;/h3&gt;

&lt;p&gt;I hope this article is informative and helpful in some way. If it is, please like and share! &lt;/p&gt;

&lt;p&gt;Happy learning! &lt;/p&gt;

</description>
      <category>algorithms</category>
      <category>programming</category>
      <category>computerscience</category>
      <category>java</category>
    </item>
    <item>
      <title>Relational Data Services in Azure - PaaS, IaaS, Hybrid &amp; IoT</title>
      <dc:creator>geetcloud</dc:creator>
      <pubDate>Wed, 01 Sep 2021 15:26:43 +0000</pubDate>
      <link>https://dev.to/geetcloud/relational-data-services-in-azure-151f</link>
      <guid>https://dev.to/geetcloud/relational-data-services-in-azure-151f</guid>
      <description>&lt;p&gt;&lt;strong&gt;In this article&lt;/strong&gt;, we are going to see all of the Relational Data Services that are available in Azure&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Infrastructure as a service (IaaS) - SQL Server on VMs&lt;/p&gt;

&lt;p&gt;Platform as a Service (PaaS) - Azure SQL Database , Azure SQL Managed&lt;br&gt;
Instance, Azure Database for MySQL, PostgreSQL &amp;amp; MariaDB.&lt;/p&gt;

&lt;p&gt;For Hybrid On-Premise extension - SQL Stretch Database&lt;/p&gt;

&lt;p&gt;For IoT - Azure SQL Edge&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  SQL Server on Azure VM
&lt;/h2&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%2F1.bp.blogspot.com%2F-Fk4UtQIf0ew%2FYRm2YRH0xsI%2FAAAAAAAAAIM%2F9D9v1FDBq_sI-B1YXB5V7rrtwFSOUGk7ACLcBGAsYHQ%2Fw200-h200%2Fsqlonvm.jpeg" 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%2F1.bp.blogspot.com%2F-Fk4UtQIf0ew%2FYRm2YRH0xsI%2FAAAAAAAAAIM%2F9D9v1FDBq_sI-B1YXB5V7rrtwFSOUGk7ACLcBGAsYHQ%2Fw200-h200%2Fsqlonvm.jpeg" alt="SQL Server on Azure VM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With SQL Server on Azure VM, on-premise SQL workloads can be easily shifted to Azure while maintaining complete SQL Server compatibility and operating system-level access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Infrastructure as Service (IaaS) with a complete set of features.&lt;/li&gt;
&lt;li&gt;  Requires no code changes except the connection string.&lt;/li&gt;
&lt;li&gt;  Full control over the server in the cloud as similar to on-premise server.&lt;/li&gt;
&lt;li&gt;  Leverage existing expertise in SQL Server and continue working the same way as on the on-premise server.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Azure SQL Database
&lt;/h2&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%2F1.bp.blogspot.com%2F-YKWOsdHAttQ%2FYRm4MtRKalI%2FAAAAAAAAAIk%2F6VIYOrZ8t7Qv80pLHqw1dpmspMKeg8ZQgCLcBGAsYHQ%2Fw200-h200%2FAzure%252BSQL%252BDatabase.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%2F1.bp.blogspot.com%2F-YKWOsdHAttQ%2FYRm4MtRKalI%2FAAAAAAAAAIk%2F6VIYOrZ8t7Qv80pLHqw1dpmspMKeg8ZQgCLcBGAsYHQ%2Fw200-h200%2FAzure%252BSQL%252BDatabase.png" alt="Azure SQL Database"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Azure SQL Database is the most preferred solution for normal relational and transactional databases. Azure provides the option to create a database server and deploy our databases to the cloud. A SQL Database server is a logical construct that acts as a central administrative point for multiple single or pooled databases, logins, firewall rules, auditing rules, threat detection policies, and failover groups. Azure SQL Database is available with several options: Single Database, Elastic Pool, and Managed Instance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.blogger.com/u/1/blog/post/edit/7467356195560229083/2964710571868763031#" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F1.bp.blogspot.com%2F-A7_BCuswNxE%2FYRm5hMmBZlI%2FAAAAAAAAAI4%2FGKMcMHWvBSsbAuniK6ozw0NxNk5PNqAaACLcBGAsYHQ%2Fw640-h301%2FScreen%252BShot%252B2021-08-15%252Bat%252B5.30.30%252BPM.png" alt="Azure SQL Managed Instance"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Azure SQL Managed Instance
&lt;/h2&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%2F1.bp.blogspot.com%2F-Zao380bPz-Q%2FYRm4xkI_JLI%2FAAAAAAAAAIw%2FmolZ0pGPZbQ9uO8FGeJKLcdX0n5ztsWEwCLcBGAsYHQ%2Fw198-h200%2Fsqlmanagedinstance.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%2F1.bp.blogspot.com%2F-Zao380bPz-Q%2FYRm4xkI_JLI%2FAAAAAAAAAIw%2FmolZ0pGPZbQ9uO8FGeJKLcdX0n5ztsWEwCLcBGAsYHQ%2Fw198-h200%2Fsqlmanagedinstance.png" alt="Azure SQL Managed Instance"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Azure SQL Database restricts some of the administrative features available in SQL Server. Within Azure SQL Managed Instance, we have full control over the instance, as much as you would for an on-premises server. We can deploy as many as databases we want in the server.&lt;/p&gt;

&lt;p&gt;With the support of other Azure Services, managed instance automates backups, software updates, monitoring etc., it is always up-to-date.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Easy lift and shift - Fully-fledged SQL instance with 100%
compatibility with on-premise instance.

&lt;ul&gt;
&lt;li&gt;  Fully Managed PaaS service with a complete set of features.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt; Enhanced Security and isolation with VNet and a private IP address.&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Azure Database for MySQL
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.blogger.com/u/1/blog/post/edit/7467356195560229083/2964710571868763031#" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F1.bp.blogspot.com%2F-TGSqkhqE-58%2FYRnHvpFMpPI%2FAAAAAAAAAJQ%2FdDYTHXy5NvEStDJPUm2WDdDLQmcb80CzQCLcBGAsYHQ%2Fw200-h200%2Fmysql.jpeg" alt="Azure Database for MySQL"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MySQL is the leading open source relational database for Linux, Apache, MySQL, and PHP (LAMP) stack apps.&lt;/p&gt;

&lt;p&gt;Azure Database for MySQL based on the MySQL free community edition offers high availability and elastic scaling to open-source mobile and web apps or migrate MySQL workloads to the cloud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Built-in high availability features&lt;/li&gt;
&lt;li&gt;  Enhanced security with compliance&lt;/li&gt;
&lt;li&gt;  Automatic backups and point-in-time restore for up to 35 days&lt;/li&gt;
&lt;li&gt;  Easy scaling option&lt;/li&gt;
&lt;li&gt;  Pay-as-you-go pricing - only pay for what you use.&lt;/li&gt;
&lt;li&gt;  Offers integration with Azure App Services and Azure Kubernete Services for simplified development&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Azure Database for PostgreSQL
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://1.bp.blogspot.com/-rmjuZ_1mvHg/YRnLJ1SVvXI/AAAAAAAAAJY/CmVOVPLE_RQifZ-_rcny1zSJOvwpuzEFgCLcBGAsYHQ/s161/postgresql.png" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F1.bp.blogspot.com%2F-rmjuZ_1mvHg%2FYRnLJ1SVvXI%2FAAAAAAAAAJY%2FCmVOVPLE_RQifZ-_rcny1zSJOvwpuzEFgCLcBGAsYHQ%2Fw180-h200%2Fpostgresql.png" alt="Azure Database for PostgreSQL"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Azure PostgreSQL helps in building scalable, secure, and fully managed enterprise-ready apps on open-source PostgreSQL, scale out single-node PostgreSQL with high performance, or migrate PostgreSQL and Oracle workloads to the cloud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Offers extensions which MySQL does not have&lt;/li&gt;
&lt;li&gt;  PostgreSQL Extensions provides additional custom data types, functions, JSONB, full text-search, index types, language-types, caching, geospatial support etc.,&lt;/li&gt;
&lt;li&gt;  Supports geometric data such as lines, circles and polygons&lt;/li&gt;
&lt;li&gt;  Supports both relational and non-relational data&lt;/li&gt;
&lt;li&gt;  Provides high performance horizontal scaling using Hyperscale (Citus)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Similarities with MySQL&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Both are Open Source, and support relational database and fully managed services.&lt;/li&gt;
&lt;li&gt;  Makes it easier to lift and shift your applications to Azure&lt;/li&gt;
&lt;li&gt;  No need to convert your datastore to SQL Server or SQL Database&lt;/li&gt;
&lt;li&gt;  Use the same tools as SQL Database for scaling and monitoring&lt;/li&gt;
&lt;li&gt;  Intelligent Performance Recommendations&lt;/li&gt;
&lt;li&gt;  Enhanced Security Capabilities&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Azure Maria DB
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://1.bp.blogspot.com/-FOz1A0EhMeI/YRnLdo5SrZI/AAAAAAAAAJg/JywNIKAGvukvgRjcsHEL_cLCgUjt1sEcQCLcBGAsYHQ/s225/azuremariadb.jpeg" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F1.bp.blogspot.com%2F-FOz1A0EhMeI%2FYRnLdo5SrZI%2FAAAAAAAAAJg%2FJywNIKAGvukvgRjcsHEL_cLCgUjt1sEcQCLcBGAsYHQ%2Fw200-h200%2Fazuremariadb.jpeg" alt="Azure Maria DB"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MariaDB&lt;/strong&gt; is a newer database management system, created by the original developers of MySQL.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Built-in support for temporal data. A table can hold several versions of data, enabling an application to query the data as it appeared at some point in the past&lt;/li&gt;
&lt;li&gt;  Offers compatibility with Oracle Database&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Azure MariaDB&lt;/strong&gt; based on free community edition offers high availability and elastic scaling to open-source mobile and web apps with a managed community MariaDB database service&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features of Azure MariaDB&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Relational Database as a fully managed service&lt;/li&gt;
&lt;li&gt;  High Availability&lt;/li&gt;
&lt;li&gt;  Scaling as needed within seconds&lt;/li&gt;
&lt;li&gt;  Automatic backups and point-in-time restore for up to 35 days&lt;/li&gt;
&lt;li&gt;  Support for many languages and frameworks&lt;/li&gt;
&lt;li&gt;  Enhanced Security Capabilities with Azure IP Advantage&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Hybrid Database using SQL Server Stretch DB
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://1.bp.blogspot.com/-BFQX_Ja3y7s/YRnL3XgNPYI/AAAAAAAAAJo/8v_Te3AV-68Ny69QJ3KKycWNvJ2K2RcfwCLcBGAsYHQ/s270/Sqlstretch.png" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F1.bp.blogspot.com%2F-BFQX_Ja3y7s%2FYRnL3XgNPYI%2FAAAAAAAAAJo%2F8v_Te3AV-68Ny69QJ3KKycWNvJ2K2RcfwCLcBGAsYHQ%2Fw200-h139%2FSqlstretch.png" alt="SQL Server Stretch DB"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenarios where we choose to go for the hybrid option&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  When you have an existing database that is running out of space&lt;/li&gt;
&lt;li&gt;  When you have an on premise server with large database running lot of applications&lt;/li&gt;
&lt;li&gt;  To retain existing Traditional Architecture of Legacy system. The hardest option out of the rest.&lt;/li&gt;
&lt;li&gt;  For these scenarios, upgrading to a new server might be difficult and painful. One option would be to extend "cool" data to the cloud, so we can extend the life of the on premise server.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using Stretch Database, data can be split between on-premises storage and cloud storage. We can push the cold, historical data to the cloud (which will be accessed rarely) and warm active data can be retained on-premises to boost the performance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Azure SQL Edge
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://1.bp.blogspot.com/-jvan2s6c8L4/YRnNKmOaruI/AAAAAAAAAJw/wI1bc7y2PJ0ER84jxRv9uFbPgj7SZ9NVwCLcBGAsYHQ/s272/sqledge.jpeg" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F1.bp.blogspot.com%2F-jvan2s6c8L4%2FYRnNKmOaruI%2FAAAAAAAAAJw%2FwI1bc7y2PJ0ER84jxRv9uFbPgj7SZ9NVwCLcBGAsYHQ%2Fw200-h193%2Fsqledge.jpeg" alt="Azure SQL Edge"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Azure SQL Edge is an optimized relational database engine that is specially designed for IoT and IoT Edge deployments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Able to create excellent data storage and processing layer for different IoT applications.&lt;/li&gt;
&lt;li&gt;  Since it is built on top of the SQL Server database engine, we can use the same T-SQL programming in SQL Server&lt;/li&gt;
&lt;li&gt;  Provides the most demanding machine learning and artificial intelligence capabilities&lt;/li&gt;
&lt;li&gt;  Its built-in streaming capability helps you with complex event processing and realtime analytics&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;This time, we covered the Relational data store related services that are available in Azure. Stay tuned to learn more about other types of data stores in Azure, as this is just the beginning.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://azure.microsoft.com/en-ca/product-categories/databases/" rel="noopener noreferrer"&gt;https://azure.microsoft.com/en-ca/product-categories/databases/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/en-us/learn/modules/explore-relational-data-offerings/2-azure-data-services" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/learn/modules/explore-relational-data-offerings/2-azure-data-services&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/en-us/azure/architecture/guide/technology-choices/data-store-overview" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/azure/architecture/guide/technology-choices/data-store-overview&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Thanks for reading this post!
&lt;/h2&gt;

&lt;p&gt;I hope this article is informative and helpful in some way. If it is, please like and share this article. &lt;/p&gt;

&lt;p&gt;Happy learning! &lt;/p&gt;

</description>
      <category>azure</category>
      <category>mysql</category>
      <category>postgres</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Azure Cosmos DB | Mongo DB - Embedding vs Reference</title>
      <dc:creator>geetcloud</dc:creator>
      <pubDate>Mon, 30 Aug 2021 01:46:55 +0000</pubDate>
      <link>https://dev.to/geetcloud/azure-cosmos-db-mongo-db-embedding-vs-reference-81p</link>
      <guid>https://dev.to/geetcloud/azure-cosmos-db-mongo-db-embedding-vs-reference-81p</guid>
      <description>&lt;p&gt;Schema-less Databases similar to &lt;strong&gt;Mongo DB&lt;/strong&gt; help us design models, store and query data easily and rapidly. But it is very important to understand, design and create the right schema design for your application which has great impact on the performance, scalability, costs etc.&lt;/p&gt;

&lt;p&gt;Below are the key factors we need to consider before start designing our data models in Mongo DB.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Understand the difference between Normalized/Relational database to a Schema-less Mongo/Azure Cosmos DB&lt;/li&gt;
&lt;li&gt;  Is our application read or write heavy&lt;/li&gt;
&lt;li&gt;  How to model data in a schema-less database?&lt;/li&gt;
&lt;li&gt;  In which scenarios we need to embed data and which scenarios we need to refer to data?&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Embedding data model pattern
&lt;/h4&gt;

&lt;p&gt;As a developer/architect, when we start working in a schema-less database, we always tend to design schema similar to relational or normalized database. We would like to design the data into multiple tables as we traditionally design in a SQL normalized database but we would miss the great advantages of Mongo DB.&lt;/p&gt;

&lt;p&gt;So it is better to understand the difference between traditional Normalized/Relational Database and Schema-less database.&lt;/p&gt;

&lt;p&gt;For example, in a relational schema design, developers design the schema independent of queries. will normalize the data into multiple entities to avoid storing redundant data on each record and rather refer to the data in the related entities.&lt;/p&gt;

&lt;p&gt;In the below example, it illustrates how we model order data in a relational database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Order Data - Schema Design in Relational Database&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://1.bp.blogspot.com/-ApBobkJpu0Q/YRCt5NRX9xI/AAAAAAAAAD4/m0jEU9AxJTEK5hqfeKsipiOgETl8PbHJwCLcBGAsYHQ/s825/Screen%2BShot%2B2021-08-08%2Bat%2B9.22.17%2BPM.png" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F1.bp.blogspot.com%2F-ApBobkJpu0Q%2FYRCt5NRX9xI%2FAAAAAAAAAD4%2Fm0jEU9AxJTEK5hqfeKsipiOgETl8PbHJwCLcBGAsYHQ%2Fw640-h426%2FScreen%252BShot%252B2021-08-08%252Bat%252B9.22.17%252BPM.png" alt="Order Data - Schema Design in Relational Database"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;To query the order, item details, contact details, etc, we need to make joins to other tables and fetch the data.&lt;/p&gt;

&lt;p&gt;In the same manner, to update a single order item details, we need to update multiple tables.&lt;/p&gt;

&lt;p&gt;Let's see how we can design the same order data model in Mongo / Azure Cosmos DB.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  { 
“id”: “1”, 
“orderdate”: “02/08/2021”,
“tax” : “8”,
“subtotalbeforetax”: “69”,
“shipmentdate”: “03/08/2021”,
“orderitems”: [ 
 { 
  “itemname”: “item1”,
  “quantity”: “2”,
  “itemprice”: “12”,
  “totalprice”:”24" 
 },
 { “itemname”: “item2”,
   “quantity”: “3”,
   “itemprice”: “15”,
   “totalprice”: “45”
 } 
],
“shippingcontact”: [ 
 {
   “name”: “&amp;lt;&amp;lt;person1&amp;gt;&amp;gt;”,
   “street”: “&amp;lt;&amp;lt;street1&amp;gt;&amp;gt;”,
   “city”: “&amp;lt;&amp;lt;city1&amp;gt;&amp;gt;”, 
   “state”: “&amp;lt;&amp;lt;state1&amp;gt;&amp;gt;”,
   “country”: “&amp;lt;&amp;lt;country1&amp;gt;&amp;gt;”, 
   “zipcode”: “&amp;lt;&amp;lt;zipcode1&amp;gt;&amp;gt;”,
   “phone”: “&amp;lt;&amp;lt;street1&amp;gt;&amp;gt;”
 },
]
 “billingcontact”: [ 
 {
  “name”: “&amp;lt;&amp;lt;person1&amp;gt;&amp;gt;”,
  “street”: “&amp;lt;&amp;lt;street1&amp;gt;&amp;gt;”,
  “city”: “&amp;lt;&amp;lt;city1&amp;gt;&amp;gt;”, 
  “state”: “&amp;lt;&amp;lt;state1&amp;gt;&amp;gt;”,
  “country”: “&amp;lt;&amp;lt;country1&amp;gt;&amp;gt;”,
  “zipcode”: “&amp;lt;&amp;lt;zipcode1&amp;gt;&amp;gt;”,
  “phone”: “&amp;lt;&amp;lt;street1&amp;gt;&amp;gt;”
 },
] 
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the above json document , we have denormalized order data by embedding all the data related to the order such as line item details, shipping and billing contact details etc., into a single document.&lt;/p&gt;

&lt;p&gt;We are also flexible to change any fields or the sub objects/arrays format entirely anytime.&lt;/p&gt;

&lt;p&gt;Now we can retrieve the complete order details in a single query/ read operation against a single embedded document.&lt;/p&gt;

&lt;p&gt;Same way, updating the order with the item details and shipping information also can be done in a single update/write operation against the single order document.&lt;/p&gt;

&lt;p&gt;In general, it is always recommended to go for Embed. Except for some specific cases where we need to go for Reference. Embedding also improves query-read performance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://1.bp.blogspot.com/-4W2p9gXD1PQ/YRDD972-OPI/AAAAAAAAAEc/jgkyZVPBTO8AP96wxpzcJyP1vmOph5oSgCLcBGAsYHQ/s881/Screen%2BShot%2B2021-08-08%2Bat%2B10.57.44%2BPM.png" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F1.bp.blogspot.com%2F-4W2p9gXD1PQ%2FYRDD972-OPI%2FAAAAAAAAAEc%2FjgkyZVPBTO8AP96wxpzcJyP1vmOph5oSgCLcBGAsYHQ%2Fw640-h576%2FScreen%252BShot%252B2021-08-08%252Bat%252B10.57.44%252BPM.png" alt="When to use Embed Data Model Pattern"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Reference data model pattern
&lt;/h4&gt;

&lt;p&gt;As long as we have less data to embed, we are good with Embedding Schema design. For one-one and one-few relationship entities, Embedding Data model pattern is the best choice.&lt;/p&gt;

&lt;p&gt;But if we have too much data to embed, for one-many relationship entities where the child documents can grow above the limit or where the data might change frequently, it is better to go Referencing data model pattern.&lt;/p&gt;

&lt;p&gt;For example, a library product catalog can have "n" number of book items which keep changing on a daily basis and it can experience growth regularly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Product_Catalog&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;“Product_Catolog” : 
{ 
  “id”: “1”, 
  “libraryname”: “&amp;lt;&amp;lt;libraryname&amp;gt;&amp;gt;”, 
  “product_catalog_no”: “1234”, 
  “books”: [“BookId(‘1111’)”, “BookId(‘2222’)”, “BookId(‘3333’)”] 
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Books:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;“books” :[ 
 { 
   “_id” : “Id(‘1111’)”, 
   “title” : “Book 1111”, 
   “author” : “Author 1111”, 
   “qty”: “10”, 
   “price”:” 24.99" 
 } 
 { 
   “_id” : “Id(‘2222’)”, 
   “title” : “Book 2222”, 
   “author” : “Author 2222”, 
   “qty”: “15”, 
   “price”:” 30.99" 
 } 
 { 
   “_id” : “Id(‘3333’)”, 
   “title” : “Book 3333”, 
   “author” : “Author 3333”, 
   “qty”: “20”, 
   “price”:” 14.99" 
 } 
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the above example, our book documents are independent of the parent product_catalog document. Any changes to the book documents can be updated separately.&lt;/p&gt;

&lt;p&gt;Another key examples for frequent data updates are weather, stock exchange etc., where we can expect changes consistently. For these examples, embedding data model pattern may not be a good choice.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://1.bp.blogspot.com/-PtSjeRwX-Ho/YRDEm6Q_uEI/AAAAAAAAAEk/1Ij2Zwl-FRMcdtc029DXd_s9H-2DPvBmQCLcBGAsYHQ/s911/Screen%2BShot%2B2021-08-08%2Bat%2B11.00.18%2BPM.png" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F1.bp.blogspot.com%2F-PtSjeRwX-Ho%2FYRDEm6Q_uEI%2FAAAAAAAAAEk%2F1Ij2Zwl-FRMcdtc029DXd_s9H-2DPvBmQCLcBGAsYHQ%2Fw640-h544%2FScreen%252BShot%252B2021-08-08%252Bat%252B11.00.18%252BPM.png" alt="When to use Reference Data Model Pattern"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In a nutshell, there are different ways we can model our data in Mongo DB by embedding data or by referencing documents similar to normalizing data in SQL.&lt;/p&gt;

&lt;p&gt;By using these two data model patterns, we can make efficient, scalable and powerful queries to documents that are completely very useful and impactful for your applications.&lt;/p&gt;

&lt;p&gt;Based on my learning and experience, I have only touched a bit about Embedding and Referencing schema designs. There are still lot to read and learn about all different one-one, one-few, one-many, many-many relationship examples to know more detail about these data model patterns and best practices.&lt;/p&gt;

&lt;p&gt;Please check out the official Mongo DB and Azure Cosmos DB documentation for further learning.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://1.bp.blogspot.com/-vhy2e5MLeJM/YRDFn_pkmgI/AAAAAAAAAEs/UzqE4Echs9M0NuCwcKRtWK_m0m6ca5jrgCLcBGAsYHQ/s1026/Screen%2BShot%2B2021-08-08%2Bat%2B11.04.56%2BPM.png" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F1.bp.blogspot.com%2F-vhy2e5MLeJM%2FYRDFn_pkmgI%2FAAAAAAAAAEs%2FUzqE4Echs9M0NuCwcKRtWK_m0m6ca5jrgCLcBGAsYHQ%2Fw640-h134%2FScreen%252BShot%252B2021-08-08%252Bat%252B11.04.56%252BPM.png" alt="Embed vs Reference Summary"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Thanks for reading this post!
&lt;/h3&gt;

&lt;p&gt;I hope this article is informative and helpful in some way. If it is, please like and share this article. &lt;/p&gt;

&lt;p&gt;Happy learning!&lt;/p&gt;

</description>
      <category>azure</category>
      <category>mongodb</category>
      <category>cloud</category>
      <category>database</category>
    </item>
    <item>
      <title>"npm" Command Cheat Sheet</title>
      <dc:creator>geetcloud</dc:creator>
      <pubDate>Sun, 29 Aug 2021 21:21:57 +0000</pubDate>
      <link>https://dev.to/geetcloud/npm-command-cheat-sheet-3j27</link>
      <guid>https://dev.to/geetcloud/npm-command-cheat-sheet-3j27</guid>
      <description>&lt;p&gt;Welcome back to a new blog post. Throughout my uses of npm and creating applications in angular, I have found a set of commands that I keep coming back to to use again and again. While they're all used very commonly, it might be heard to remember them all of the time. So without any further ado, here they are for your convenient use! Hope it helps.&lt;/p&gt;

&lt;h4&gt;
  
  
  To install node.js
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; # To install node.js
 # Install from the below official download link.
 # https://nodejs.org/en/#download

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

&lt;/div&gt;



&lt;h4&gt;
  
  
  To install typescript
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# To install typescript
npm install typescript -g

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

&lt;/div&gt;



&lt;h4&gt;
  
  
  To install angular CLI
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#  To install angular CLI
npm install @angular/cli -g

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

&lt;/div&gt;



&lt;h4&gt;
  
  
  To check angular version
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# To check angular version
ng version

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

&lt;/div&gt;



&lt;h4&gt;
  
  
  To check the existing installed paths of node.js
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# To check the existing installed paths of node.js
where node

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

&lt;/div&gt;



&lt;h4&gt;
  
  
  To create new angular app
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# To create new angular app
ng new &amp;lt;app_name&amp;gt;

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

&lt;/div&gt;



&lt;h4&gt;
  
  
  To create module
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# To create module
ng g module &amp;lt;module_name&amp;gt;

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

&lt;/div&gt;



&lt;h4&gt;
  
  
  To install dependencies
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# To install dependencies
npm install

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

&lt;/div&gt;



&lt;h4&gt;
  
  
  To run or serve app
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# To run/serve app
#To serve app =&amp;gt; cd to the app folder and run
#Note:- npm start also will call ng serve and start the application.
ng serve

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

&lt;/div&gt;



&lt;h4&gt;
  
  
  To create service
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# To create service
ng gnerate service service_name

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

&lt;/div&gt;



&lt;h4&gt;
  
  
  To generate interface
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# To generate interface
ng generate interface git-search

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

&lt;/div&gt;



&lt;h4&gt;
  
  
  To install latest AngularFire and Firebase for latest Angular CLI 7.x
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# To install latest AngularFire and Firebase for latest Angular CLI 7.x
npm install firebase @angular/fire --save

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

&lt;/div&gt;



&lt;h4&gt;
  
  
  To skip/avoid long path in terminal (shortcut)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# To skip/avoid long path in terminal (shortcut)
prompt $$

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  Thanks for reading this post!
&lt;/h3&gt;

&lt;p&gt;I hope this article is informative and helpful in some way. If it is, please like and share this article. &lt;/p&gt;

&lt;p&gt;Happy learning!&lt;/p&gt;

</description>
      <category>npm</category>
      <category>firebase</category>
      <category>angular</category>
      <category>node</category>
    </item>
  </channel>
</rss>
