<?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: Sefat Anam</title>
    <description>The latest articles on DEV Community by Sefat Anam (@sefatanam).</description>
    <link>https://dev.to/sefatanam</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%2F330862%2F202cc1e0-3e0c-4d15-91d4-5c33f0172bfb.jpg</url>
      <title>DEV Community: Sefat Anam</title>
      <link>https://dev.to/sefatanam</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sefatanam"/>
    <language>en</language>
    <item>
      <title>Share Data Between Mobile and PWA Apps</title>
      <dc:creator>Sefat Anam</dc:creator>
      <pubDate>Tue, 06 Feb 2024 18:13:57 +0000</pubDate>
      <link>https://dev.to/sefatanam/share-data-natively-from-mobile-to-pwa-app-4o7c</link>
      <guid>https://dev.to/sefatanam/share-data-natively-from-mobile-to-pwa-app-4o7c</guid>
      <description>&lt;p&gt;Hello There,&lt;/p&gt;

&lt;p&gt;Alright, let's get straight to the point without too much theory, because there are tons of articles out there that I don't even understand well about how the data sharing mechanism works and what I should code in the frontend. Phew! 🫤&lt;/p&gt;

&lt;p&gt;If you're facing the same issue, cheers!&lt;/p&gt;

&lt;p&gt;So, let's say you've mostly tackled the PWA part. Now, at some point, you realize you need to add a feature where users can share a YouTube video directly to your PWA app from the YouTube app. What do you do now?&lt;/p&gt;

&lt;p&gt;Chill out, here are some simple points to follow:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: I did this in the latest Angular project (version 17), but these steps are valid for every framework or library. Believe me, man!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Let go,&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Basically in every PWA app there is &lt;code&gt;manifest.webmanifest&lt;/code&gt; file or have something similar where we declare app's &lt;code&gt;name, theme_color, short_name etc...&lt;/code&gt; so go to this file and add a new section &lt;code&gt;share_target&lt;/code&gt; like this way,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "name":"YOUR_APP_NAME",
   ...
   ...
  "share_target": {
    "action": "/any-route-you-want",
    "method": "GET",
    "params": {
      "title": "title",
      "text": "text"
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Some FAQ About &lt;code&gt;share-target&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why &lt;code&gt;share-target&lt;/code&gt; section ?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because it will make your PWA app available to the mobile's native share list.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why method GET?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because your PWA app need a route or any route available, once user share some data to PWA app forward those data to that route.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Whay params and even if you specified title, url ?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, once PWA forward user's shared data to route it will decode it on the fly and if the shared data I mean here as object's property get matched to your declared params then it will automatically bind those value to your params.&lt;/p&gt;

&lt;p&gt;I hope now you clear about the &lt;strong&gt;Step-1&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Cool ! Move on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So, the hard part complete. From now changes are framework or library agnostic. Once the &lt;strong&gt;Step-1&lt;/strong&gt; hapeends successfully then you will get a url with some query-params like this,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://jingalalapwaapp.com/any-route-you-want?title="You are great"&amp;amp;text="somefunckyurl.com/asdfgh"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Some FAQ About this route:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WTF is going now? 
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Alright, so imagine you're building a website or app using React, Angular, Vue, or just plain JavaScript (Vanilla JS). Let's say you've set up a route in your project, maybe you named it any-route-you-want.&lt;/p&gt;

&lt;p&gt;Now, if someone shares a YouTube video link to your Progressive Web App (PWA), the system automatically decodes the shared data and sends it to that route you declared. When this happens, you can extract useful information from the shared data, like the video ID or other details, from the URL's query parameters.&lt;/p&gt;

&lt;p&gt;So, in simpler terms, you're basically setting up a spot in your project where shared YouTube video links can land, and you're ready to catch when they arrive.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Then ?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now user's shared data on your hand I mean in your code 😂 do whatever you wanna do. &lt;/p&gt;

&lt;p&gt;Keep Coding, Peace ✌️&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If anything goes wrong please let me know your valueable feedback.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>pwa</category>
      <category>typescript</category>
      <category>android</category>
      <category>angular</category>
    </item>
    <item>
      <title>Must-know Javascript object property security</title>
      <dc:creator>Sefat Anam</dc:creator>
      <pubDate>Sun, 23 Apr 2023 16:02:11 +0000</pubDate>
      <link>https://dev.to/sefatanam/must-know-javascript-object-property-security-1jfa</link>
      <guid>https://dev.to/sefatanam/must-know-javascript-object-property-security-1jfa</guid>
      <description>&lt;p&gt;Do you know about writable, configurable &amp;amp; configurable these property descriptor in JavaScript ?&lt;/p&gt;

&lt;p&gt;The age property in this code serves to store the age of a Member object. By defining the age property with writable, configurable, and enumerable flags set to false, the code is essentially creating a read-only property that cannot be changed or deleted once it has been set. This helps ensure that the age property remains accurate and consistent throughout the lifetime of the Member object, and that it cannot be accidentally or maliciously modified or deleted.&lt;/p&gt;

&lt;p&gt;If an attempt is made to modify the age property, as shown in the example code with anam.age=24, the operation will fail silently and the age property will retain its original value. Similarly, attempts to delete the age property with delete anam.age will also fail silently, and the property will continue to exist on the object.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SwdjiID7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u1z26pfvzq16y19h2nm2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SwdjiID7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u1z26pfvzq16y19h2nm2.png" alt="Javascript object property security, you must know!" width="800" height="608"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>security</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>A day in life of a Software engineer (Remote) - Bangla</title>
      <dc:creator>Sefat Anam</dc:creator>
      <pubDate>Fri, 24 Feb 2023 06:06:28 +0000</pubDate>
      <link>https://dev.to/sefatanam/a-day-in-life-of-a-software-engineer-remote-bangla-1jc1</link>
      <guid>https://dev.to/sefatanam/a-day-in-life-of-a-software-engineer-remote-bangla-1jc1</guid>
      <description>&lt;p&gt;তো সকাল ১০টা থেকে শুরু হয়ে যায় আমার রিমোট জব, আমার মিটিং থাকে ১০ টায় উঠি ৯.৫২ তে যা কিনা একটা বড় সুবিধা রিমোট জবের,মিটিং থাকে ১০-৩০মিনিট তারপরে একটা বিরতি দেই ২০-৩০ মিনিট নাস্তার জন্য ,এরপর শুরু আগামী দিনের PR গুলার স্ট্যাটাস দেখা, সব Merge হয়ে গেলে টেস্ট র্সাভরে টুকটাক টেস্টিং করা তারপর শুরু হয় আসল কাজ অথবা দ্যা বাঘ ভাল্লুক ঠিক করা সোজা যাই জিরা তে টিকিট সোজা দেখে একটা নেই ফরমালিটি সারি তারপর শুরু করি কোড করা, তবে বেশির ভাগ সময় মাইনসের কোড পড়া লাগে মাঝে মাঝে এমনও হয় যে খুব সিরিয়াস Bug কিন্ত অল্পতেই ঠিক করা যায় যদি কোডের Flow টা বোঝা যায় আবার একটা ছোট ফিচার এড করতে গিয়া অবস্থা টাইড হইয়া যায়, তো এর মাঝে দিনে অনেক গুলা মিটিং থাকে টিমের সাথে আবার গ্রুপ কোডিং ও করা লাগে। এর মাঝে দুপুরের খাবারের বিরতি তো থাকেই তো মজার ব্যাপার হইলো বিকালে সব সময় কাজ করি না মাঝে মাঝে ঘুরতে বেড়াই। ঘুরা শেষে রাতে আবার কাজ করি ২ ঘন্টার মতো তো হয়ে যায় আমার ডেইলি&lt;/p&gt;

&lt;p&gt;এই আরকি করি সারাদিন..&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>tools</category>
      <category>regex</category>
      <category>json</category>
    </item>
    <item>
      <title>What you need to extra setup before start to working with Angular ?</title>
      <dc:creator>Sefat Anam</dc:creator>
      <pubDate>Mon, 14 Nov 2022 12:20:59 +0000</pubDate>
      <link>https://dev.to/sefatanam/what-you-need-to-extra-setup-before-start-to-working-with-angular--4ja3</link>
      <guid>https://dev.to/sefatanam/what-you-need-to-extra-setup-before-start-to-working-with-angular--4ja3</guid>
      <description>&lt;p&gt;Hi I'm &lt;a class="mentioned-user" href="https://dev.to/sefatanam"&gt;@sefatanam&lt;/a&gt;,&lt;/p&gt;

&lt;p&gt;I'm planning to do a open-source project where I will build a Angular template where prettier, eslint, cypress, husky &amp;amp; also translation service will be in pre-configured. So that, Every time I start a fresh (professional)project I don't need to set up this type of config every time.&lt;/p&gt;

&lt;p&gt;Here is the repo that I currently working on : &lt;a href="https://github.com/nixgram/nixng"&gt;https://github.com/nixgram/nixng&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, you can help by commenting, What you need to do for the extra setup before starting an angular project. Please.&lt;/p&gt;

&lt;p&gt;Waiting for your feedback.&lt;br&gt;
Thanks&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>typescript</category>
      <category>angular</category>
    </item>
    <item>
      <title>Managing Multiple Environments with Angular and AWS Amplify Made Easy</title>
      <dc:creator>Sefat Anam</dc:creator>
      <pubDate>Thu, 19 May 2022 11:23:06 +0000</pubDate>
      <link>https://dev.to/sefatanam/angular-aws-amplify-manage-mutiple-environment-diff-based-backend-in-easy-way-38c1</link>
      <guid>https://dev.to/sefatanam/angular-aws-amplify-manage-mutiple-environment-diff-based-backend-in-easy-way-38c1</guid>
      <description>&lt;p&gt;Today I going to discuss how you can manage a single environment in AWS Amplify &amp;amp; obviously with multiple backends in GraphQL. What does diff based backend mean? In a simple way, Let's say, You start developing an application in the &lt;code&gt;dev&lt;/code&gt; branch initially and you entried many dummy data and also have dummy user credentials for test purposes, but now you want to deploy a fresh build into &lt;code&gt;prestage&lt;/code&gt; mode this app, Now how you do that? This is the agenda for today. Let’s get into it.&lt;/p&gt;

&lt;p&gt;Technology that I am using : Angular, AWS Amplify&lt;/p&gt;

&lt;p&gt;Initial Scenario : I suppose you do it well in dev with the aws-amplify setup and rest of the things, like - Add GraphQL api, completing CURD, user Authentication using AWS Amplify auth components also dev deployment. Now you stuck into how you can build a fresh build into a fresh environment without the dev's branch dummy data.&lt;/p&gt;

&lt;p&gt;If you are beginner I'm sure that you are frustrated that you can't get solution also after reading the docs. No worries. Here the steps you can go through&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;1 Step&lt;br&gt;
Check the environment status first &lt;code&gt;amplify status&lt;/code&gt; you can saw current environment is set to &lt;code&gt;dev&lt;/code&gt;&lt;br&gt;
Here you can note down the GraphQL api endpoint and API KEY, just for later check purpose.&lt;/p&gt;

&lt;p&gt;note : If you tried before to create environment before for the same project you can check that's are created or not via the &lt;code&gt;amplify env list&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;2 Step&lt;br&gt;
Once you sure about the which environment you are, then you need to create a new environment in aws-amplify, it will be better if you checkout&lt;br&gt;
git branch with a fresh copy of dev, because if any thing goes wrong you can start again from the stage you are going to be start now.&lt;br&gt;
run command 'amplify init`,it will ask you several questions &lt;/p&gt;

&lt;p&gt;Answer as follow :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Do you want to use an existing environment ? - No&lt;/li&gt;
&lt;li&gt;Enter name for the environment - TYPE_YOUR_ENV_NAME_HERE&lt;/li&gt;
&lt;li&gt;Select the authentication method you want to use : AWS profile [ But you can choose another ]&lt;/li&gt;
&lt;li&gt;Choose the profile you want to use - SELECT_CURRENT_USED_PROFILE
Then you gonna see&lt;code&gt; "Your project has been successfully initialized and connected to the cloud"&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


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

&lt;p&gt;3 Step&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now try to add api &lt;code&gt;amplify add api&lt;/code&gt; you gonna see soon that amplify tell you to go with the update command which is &lt;code&gt;amplify update api&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run &lt;code&gt;amplify update api&lt;/code&gt;, then it will show you some default pre-setuped information &amp;amp; ask you some question to answer. You can answer these as bellow :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select a setting to edit &lt;code&gt;Authorization modes&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Choose the default authorization type for the API - YOUR_CHOOICE&lt;/li&gt;
&lt;li&gt;Enter a description for the API KEY : ENTER_THE_GRAPHQL_API_KEY (that you saved earlier)&lt;/li&gt;
&lt;li&gt;After how many days from now the api key should expire : YOUR_CHOOICE&lt;/li&gt;
&lt;li&gt;Configure additional auth types ? YOUR_CHOOICE
Now run &lt;code&gt;amplify status&lt;/code&gt; you can see that all the operations now are in &lt;code&gt;create&lt;/code&gt; mode. That's mean you are almost done.
&lt;code&gt;&lt;/code&gt;&lt;code&gt;
┌──────────┬────────────────┬───────────┬───────────────────┐
│ Category │ Resource name  │ Operation │ Provider plugin   │
├──────────┼────────────────┼───────────┼───────────────────┤
│ Auth     │ ampyt48e9a487  │ Create    │ awscloudformation │
├──────────┼────────────────┼───────────┼───────────────────┤
│ Hosting  │ amplifyhosting │ Create    │ awscloudformation │
├──────────┼────────────────┼───────────┼───────────────────┤
│ Api      │ ampyt          │ Create    │ awscloudformation │
└──────────┴────────────────┴───────────┴───────────────────┘
&lt;/code&gt;&lt;code&gt;&lt;/code&gt; 
all the operation are in create mode.&lt;/li&gt;
&lt;li&gt;now run &lt;code&gt;amplify push&lt;/code&gt; it will give an new GraphQL API endpoint and API KEY or you can check it after amplify push then you will able to see the same key it will given. You have to remember that, that's key only for the new environment that you created now not for another environment.&lt;/li&gt;
&lt;/ul&gt;


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

&lt;p&gt;4 Step&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Note : This is crusal part of this blog if you failed here you cant able to do diff based backend. So, try to understand step 4 in cool mind.&lt;/li&gt;
&lt;li&gt;now you have to checkout one more time via 'amplify env checkout ENV_NAME'&lt;/li&gt;
&lt;li&gt;after checkout update the API via &lt;code&gt;amplify update api&lt;/code&gt; rest of the things are same as step 3 but here you just need to put this API KEY which you got earlier when you push new environment into cloud the GraphQL API KEY. Just paste it there and go on.&lt;/li&gt;
&lt;/ul&gt;


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

&lt;p&gt;5 Step&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now push it into cloud by &lt;code&gt;amplify push&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Deploy the frontend &lt;code&gt;amplify publish&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


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

&lt;p&gt;Check it out that is it works or not.&lt;/p&gt;

&lt;p&gt;If in some end point you got &lt;code&gt;access denied error&lt;/code&gt; you can check this &lt;a href="https://victorleungtw.hashnode.dev/fix-aws-amplify-angular-app-error-on-access-denied-error-73c9476f9552"&gt;solution&lt;/a&gt;&lt;/p&gt;

</description>
      <category>angular</category>
      <category>aws</category>
      <category>amplify</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Step-by-Step Guide to Building Your First Ionic App with Cordova on Windows</title>
      <dc:creator>Sefat Anam</dc:creator>
      <pubDate>Mon, 21 Mar 2022 04:23:53 +0000</pubDate>
      <link>https://dev.to/sefatanam/how-to-release-an-ionic-app-using-cordova-in-windows-in-1st-attempt-3fh4</link>
      <guid>https://dev.to/sefatanam/how-to-release-an-ionic-app-using-cordova-in-windows-in-1st-attempt-3fh4</guid>
      <description>&lt;p&gt;&lt;em&gt;One Question - Did you noticed that building apk with cordova have smaller size rather than use capacitor ? know me your feedback !&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How to build a Ionic app using Cordova in windows&lt;/strong&gt;
&lt;/h2&gt;



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

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Install &lt;code&gt;Andorid studio, JDK (preferd version 1.8), gradle&lt;/code&gt;.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Tricks

After installed Android studio build a native hello world app and run it through Emulator or physical device for the first time. It will automatically gives you the support of installing gradle &amp;amp; reduce much time to installing &amp;amp; finding gradle version compability.
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Checking this info you can run &lt;code&gt;java --version&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;java version "1.8.0_321"
Java(TM) SE Runtime Environment (build 1.8.0_321-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.321-b07, mixed mode)
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;After install &lt;code&gt;JDK&lt;/code&gt; you will get a path in your machine like this &lt;code&gt;C:\Program Files\Java&lt;/code&gt; or &lt;code&gt;C:\Program Files (x86)&lt;/code&gt; you able to see this two folder path.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;jdk1.8.0_321
jre1.8.0_321
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Update environment variable&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Add these in User Variables :

ANDROID_HOME : C:\Users\theanam\AppData\Local\Android\Sdk
ANDROID_PLATFORM_TOOLS : C:\Users\theanam\AppData\Local\Android\Sdk\platform-tools
ANDROID_TOOLS : C:\Users\theanam\AppData\Local\Android\Sdk\tools
JAVA_HOME : C:\Program Files\Java\jdk1.8.0_321

//Add these in System Variables path:

C:\Program Files\Java\jre1.8.0_321\bin  // Otherwise you will get Jarsigner is not recognized internal or external command

C:\Program Files\Java\jdk1.8.0_321\bin // Otherwise keytool is not recognized internal or external command

C:\Program Files (x86)\Common Files\Oracle\Java\javapath
C:\gradle-7.4.1\bin  // If path not found installed it.
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Ionic App build stage &amp;amp; Signing unsigned apk&lt;/strong&gt;
&lt;/h3&gt;



&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Go to the &lt;code&gt;App Folder&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Open &lt;code&gt;terminal&lt;/code&gt; in that folder.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Run &lt;code&gt;keytool -genkey -v -keystore HERE_YOUR_KEY_NAME-key.keystore -alias HERE_YOUR_APP_ALIAS_NAME -keyalg RSA -keysize 2048 -validity 10000&lt;/code&gt;. You will find a keystore file is generated in your app folder.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run &lt;code&gt;ionic cordova build android --prod --release --verbose&lt;/code&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   After successfully executed this command you will get a message like this,
   Built the following apk(s):
       D:\xyz\ion-cordova\platforms\android\app\build\outputs\apk\release\app-release-unsigned.apk

   It generate an unsigned apk that you never install in a phone so need to sign this apk.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Run &lt;code&gt;jarsigner --verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore HERE_YOUR_KEY_NAME-key.keystore "D:\xyz\ion-cordova\platforms\android\app\build\outputs\apk\release\app-release-unsigned.apk" HERE_YOUR_APP_ALIAS_NAME&lt;/code&gt; it will start signing this apk.&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now you are happy to go with the APP.&lt;/p&gt;

&lt;p&gt;Signing Off&lt;br&gt;
Sefat&lt;/p&gt;

</description>
      <category>ionic</category>
      <category>android</category>
      <category>angular</category>
      <category>java</category>
    </item>
    <item>
      <title>Startup guide of Jest for testing your javascript code. (Beginner)</title>
      <dc:creator>Sefat Anam</dc:creator>
      <pubDate>Sun, 06 Mar 2022 08:52:00 +0000</pubDate>
      <link>https://dev.to/sefatanam/startup-guid-of-jest-for-testing-your-javascript-code-beginner-49h3</link>
      <guid>https://dev.to/sefatanam/startup-guid-of-jest-for-testing-your-javascript-code-beginner-49h3</guid>
      <description>&lt;p&gt;The purpose of writing this article is to clarify that when a newbie learns javascript he goes through many concepts. But he doesn't know how to test code or doesn't have any idea about code testing. Today, I will make you understand how you can start learning javascript as well as writing test code also. So that, from the start phase you are confident about your code.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Today's Topics&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;create package.json&lt;/li&gt;
&lt;li&gt;intalling jest via npm&lt;/li&gt;
&lt;li&gt;configuration for running test&lt;/li&gt;
&lt;li&gt;write function &amp;amp; test it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Don't be panic, this article is very practical.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1 : Create &lt;code&gt;package.json&lt;/code&gt;&lt;/strong&gt; &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;What is package.json ?&lt;br&gt;
Metadata that is specific to the project.  It contains a collection of any given project's dependencies. A web application is used to identify the project and acts as a baseline for users and contributors to get information about the project&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To create a &lt;code&gt;package.json&lt;/code&gt; you must have to install &lt;code&gt;nodejs&lt;/code&gt; on your machine that's all. If you don't have &lt;code&gt;nodejs&lt;/code&gt; installed go to this website and install it. Then open an empty folder in vs code, open terminal type npm init -y. After executing this command you can see a file is created named &lt;code&gt;package.json&lt;/code&gt;. 😀 Dig more into understanding &lt;code&gt;package.json&lt;/code&gt; &lt;a href="https://docs.npmjs.com/cli/v8/configuring-npm/package-json"&gt;click here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2 : Install &lt;code&gt;jest via npm&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the simpliest way through this step. go go the existing terminal and type &lt;code&gt;npm install --save-dev jest&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3 : Configuration for running test&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;update your &lt;code&gt;package.json&lt;/code&gt;'s scripts section like this, 
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; "scripts": {
       "test":"npx jest --watchAll"
  },
  "jest": {
    "testEnvironment": "node"
  },
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0UoXHbyj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xy27qi3nbzjqtltvdq33.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0UoXHbyj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xy27qi3nbzjqtltvdq33.PNG" alt="Image description" width="800" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's all for now.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4 : writing function &amp;amp; test it&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Make a file like &lt;code&gt;script.js&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Also make a file &lt;code&gt;script.test.js&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;scripts.js

function sum(a, b)
{
    return (a + b);
}

module.exports = sum;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;script.test.js

const sum = require('../script')


test('Sum of (1,1) = 2', () =&amp;gt;
{
    expect(sum(1, 1)).toBe(2);
})
test('Sum of (2,3) = 5', () =&amp;gt;
{
    expect(sum(2, 3)).toBe(5);
})

test('Sum of (3,7) = 10', () =&amp;gt;
{
    expect(sum(3, 7)).toBe(10);
})

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

&lt;/div&gt;



&lt;p&gt;After writing your function &amp;amp; tests code. Go to &lt;code&gt;terminal&lt;/code&gt; and run &lt;code&gt;npm run test&lt;/code&gt;. You can watch something like this ,&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--r3ypkNqL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2em2f5ab78vzge5lgj1g.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--r3ypkNqL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2em2f5ab78vzge5lgj1g.PNG" alt="Image description" width="800" height="265"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cool 😎 huh ! &lt;br&gt;
Yes, now you got the point that I want to share with you.&lt;br&gt;
From today try to build up writing tests for your code &amp;amp; understand your code better. 💖&lt;/p&gt;

&lt;p&gt;Signing off.&lt;br&gt;
Sefat&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>codequality</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Easy Guide to Azure Blob Storage for .NET Developers</title>
      <dc:creator>Sefat Anam</dc:creator>
      <pubDate>Fri, 10 Sep 2021 05:25:52 +0000</pubDate>
      <link>https://dev.to/sefatanam/easy-visualize-guide-to-azure-blob-storage-for-net-developers-36m1</link>
      <guid>https://dev.to/sefatanam/easy-visualize-guide-to-azure-blob-storage-for-net-developers-36m1</guid>
      <description>&lt;h2&gt;
  
  
  What is Azure Blob Storage ?
&lt;/h2&gt;

&lt;p&gt;Azure Blob storage is Microsoft's object storage solution for the cloud. Blob storage is optimized for storing massive amounts of unstructured data. Unstructured data is data that doesn't adhere to a particular data model or definition, such as text or binary data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Azure Blob Storage ?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Serving images or documents directly to a browser.&lt;/li&gt;
&lt;li&gt;Storing files for distributed access.&lt;/li&gt;
&lt;li&gt;Streaming video and audio.&lt;/li&gt;
&lt;li&gt;Writing to log files.&lt;/li&gt;
&lt;li&gt;Storing data for backup and restore, disaster recovery, and archiving.&lt;/li&gt;
&lt;li&gt;Storing data for analysis by an on-premises or Azure-hosted service.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of above theory from &lt;a href="https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction" rel="noopener noreferrer"&gt;Microsoft's Documentations about Blob Storage&lt;/a&gt; . Now Let get into the point ,&lt;/p&gt;

&lt;p&gt;Today we will go fast forward to see how its works rather than knowing too deep architecture, its pretty straight forward for visualize the work flow of azure blob storage. &lt;/p&gt;

&lt;h2&gt;
  
  
  What we will learn today ?
&lt;/h2&gt;

&lt;p&gt;Today we will store a image to blob storage and retrieve it using NET5 web project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ingredient's
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Visual Studio Code&lt;/li&gt;
&lt;li&gt;NET5 SDK&lt;/li&gt;
&lt;li&gt;Azure Account &lt;a href="https://azure.microsoft.com/en-us/services/storage/blobs/" rel="noopener noreferrer"&gt;*Its Free for 1 month&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To Continue further steps sign up in Azure.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Azure Blob Storage Setup&lt;/strong&gt;
&lt;/h2&gt;



&lt;p&gt;After creating Azure Account , Open Azure Portal . In the homepage will will notice a icon named "create a resource" click it. &lt;br&gt;&lt;br&gt;
&lt;a href="https://media.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%2Fiu6imjjlsq96wvlb4kxq.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiu6imjjlsq96wvlb4kxq.png" alt="Home Page of Azure Portal"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
You will see a search bar there you type "Blob" &amp;amp; hit in "Storage Account" , create a storage account &amp;amp; set a storage account name. here I set my storage name is "&lt;strong&gt;blobazdemo&lt;/strong&gt;"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8bmr1iwg1p9vebjq2g5u.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8bmr1iwg1p9vebjq2g5u.png" alt="Resource Creating page in Azure"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.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%2Faqnxj5lxgln8rzf6hjk4.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faqnxj5lxgln8rzf6hjk4.png" alt="Resource Creating page in Azure 2"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.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%2Fo0oghscsnhf9j5f3bcme.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo0oghscsnhf9j5f3bcme.png" alt="Resource Creating page in Azure 3"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;br&gt;
So if everything goes well you will get validation passed message then create storage &amp;amp; waiting for deployment.&lt;br&gt;
&lt;img src="https://media.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%2Fzkgavy3ko2unb5t0k41j.png" alt="Resource Creating page in Azure 4"&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkuts4f9ijldu636j878r.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkuts4f9ijldu636j878r.png" alt="Running Deployment"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcc8jcxjt84yacygzwove.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcc8jcxjt84yacygzwove.png" alt="Deployment Complete"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;
&lt;br&gt;
After complete deployment, Go to resource and find container option from resource side nav options. Create a container inside it to store out images. Here I set my container name is "azdemo"&lt;br&gt;
&lt;br&gt;
&lt;img src="https://media.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%2Fhty9ounegp7k5vgdeu3z.png" alt="Container"&gt;

&lt;p&gt;Here the last steps, now we need connection string to connect our blob storage container to our API project. To again from your resource side nav option find out "Access key" follow the steps and copy the "connection string".&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feli09r3zrjauseli3zhv.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feli09r3zrjauseli3zhv.png" alt="Access Key"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's all for now to working with azure blob storage. &lt;/p&gt;
&lt;h2&gt;
  
  
  Web Project Setup
&lt;/h2&gt;

&lt;p&gt;We mainly focus on how we can store image in blob storage not making a fancy application. I recommend you to create 'webapp' or 'webapi' using dotnet cli its up to you.&lt;/p&gt;

&lt;p&gt;Check available command to create new project&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dotnet new --list
&lt;/code&gt;&lt;/pre&gt;




&lt;br&gt;
Now you can create your dotnet project by using this command schema,&lt;br&gt;
&lt;br&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dotnet new &amp;lt;TEMPLATE&amp;gt; [--dry-run] [--force] [-lang|--language {"C#"|"F#"|VB}]
    [-n|--name &amp;lt;OUTPUT_NAME&amp;gt;] [-o|--output &amp;lt;OUTPUT_DIRECTORY&amp;gt;] [Template options]
&lt;/code&gt;&lt;/pre&gt;



&lt;br&gt;
We will make a Service for responsible to store &amp;amp; retrieve image in azure blob storage, so before start making service we need to add a Nuget package in our project. By following,&lt;br&gt;
&lt;br&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dotnet add package Azure.Storage.Blobs --version 12.10.0
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;a href="https://www.nuget.org/packages/Azure.Storage.Blobs" rel="noopener noreferrer"&gt;Know More About Azure Storage Blob Nuget Package&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Let Jump into coding part 😀&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Update your &lt;code&gt;startup.cs&lt;/code&gt; by following,
&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  services.AddSingleton(x =&amp;gt; new BlobServiceClient(PUT_YOUR_BLOB_CONNECTION_STRING));
&lt;/code&gt;&lt;/pre&gt;




&lt;br&gt;


&lt;ul&gt;
&lt;li&gt; Create a service class in my case I named it &lt;code&gt;BlobService&lt;/code&gt;. You can set any name you want. Then Inject &lt;code&gt;BlobServiceClient&lt;/code&gt; which is provid by &lt;code&gt;Azure.Storage.Blobs&lt;/code&gt;.
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; public class BlobService 
    {
        // BlobServiceClient from 'Azure.Storage.Blobs' package
        private readonly BlobServiceClient _blobClient;

        public BlobService(BlobServiceClient blobClient)
        {
            _blobClient = blobClient;
        }
}

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




&lt;ul&gt;
&lt;li&gt; Let fetch data from blob storage. its pretty straight forward.
&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt; public async Task&amp;lt;IEnumerable&amp;lt;string&amp;gt;&amp;gt; AllBlobs(string containerName)
        {
            // allow us to get access to data inside container
            // in our senario 'containerName' will be 'azblob'
            var containerClient = _blobClient.GetBlobContainerClient(containerName);
            var files = new List&amp;lt;string&amp;gt;();
            var blobs = containerClient.GetBlobsAsync();
            await foreach (var item in blobs)
            {
                files.Add(item.Name);
            }
            return files;
        }
&lt;/code&gt;&lt;/pre&gt;





&lt;ul&gt;
&lt;li&gt;Upload Image into blob storage
&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        public async Task&amp;lt;bool&amp;gt; UploadBlob(string name, IFormFile file, string containerName)
        {
          // in our senario 'containerName' will be 'azblob'
            var containerClient = _blobClient.GetBlobContainerClient(containerName);
            // checking is current file is exit; if exit then ovverrite
            var blobClient = containerClient.GetBlobClient(name);

            var httpHeaders = new BlobHttpHeaders()
            {
                ContentType = file.ContentType
            };

            var res = await blobClient.UploadAsync(file.OpenReadStream(), httpHeaders);

            if (res != null) return true;
            return false;
        }

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



&lt;p&gt;&lt;a href="https://gist.github.com/sefatanam/69012a05396ef4f0cc8ea70a2531597e" rel="noopener noreferrer"&gt;Here The Complete Code of Service&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now, We should trigger these method from controller right. Get into it, Post an image through API. [ Here I used basic mvc app to also display updated image ]
&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt; [HttpPost]
        public async Task&amp;lt;IActionResult&amp;gt; AddFile(IFormFile file)
        {
            if (file == null || file.Length &amp;lt; 1) return View();
            var fileName = Guid.NewGuid() + Path.GetExtension(file.FileName);
            var res = await _service.UploadBlob(fileName, file, "azdemo");

            if (res) return RedirectToAction("Index");

            return View();
        }
&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;After Successfully Posting image via API go to Azure Portal and open &lt;code&gt;azdemo&lt;/code&gt; container you can see their a image file is created.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on the view from given options.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm5hlpn46vfxnz36p0noq.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm5hlpn46vfxnz36p0noq.png" alt="Click on Options"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Finally your image is there. &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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwi9q765t0zwv4p1rbdtp.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwi9q765t0zwv4p1rbdtp.png" alt="Image View"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gist.github.com/sefatanam/bf48a9fdfa7fa1c344d1a5fdb3ec0726" rel="noopener noreferrer"&gt;Here The Complete Code of Controller&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's all for today. Hope now you can easily complete rest of the functionality your self.&lt;/p&gt;

&lt;p&gt;Happy Coding&lt;br&gt;
I’m Sefat Anam&lt;br&gt;
Full-Stack Developer ( Angular, .NET )&lt;br&gt;
Email: &lt;a href="mailto:sefatanam@outlook.com"&gt;sefatanam@outlook.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>azureapril</category>
      <category>csharp</category>
      <category>dotnet</category>
      <category>azure</category>
    </item>
  </channel>
</rss>
