teleren/devto huggingface dataset:
GPT-NER: Named Entity Recognition via Large Language Models
Published: 2023-05-13 08:59:22

## 選定理由

生成モデルである大規模言語モデル(LLM)で系列ラベリング問題である固有表現認識（NER:Named Entity Recognition）を解くという視点を知りたい。LLMが今後増えるにつれて識別タスクへの活用も求められる。

Paper: https://arxiv.org/abs/2304.10428
Code: https://github.com/ShuheWang1998/GPT-NER

## 概要

【社会課題】
LLMがトレンドであるが、生成系タスクだけでなく識別系タスクの需要もある。特にLLMに蓄積された膨大な知識を活用できるメリットは大きい。
【技術課題】
LLMは生成系モデルであり、系列ラベリング問題のような識別系タスクを解くためのモデルとは扱い方が異なる。
【従来技術】
[ACE[Wang2021]](https://github.com/Alibaba-NLP/ACE)等TransformerベースのNERを解く識別モデルがある。一般的に生成モデルは識別タスクにて十分な精度を達成できない。
【提案】
エンティティを表す特別なインジケータ(@@##)を導入することでNERを生成タスクに変換したGPT-NERを提案。さらに、生成されたテキストをLLMに再度問い合わせるというself-verificationを行うことで　hallucination（オーバーフィッティングの１種）を軽減する提案をした。
【効果】
NERベンチマーク向けデータセット５種類で評価した結果、SOTAの識別モデルに匹敵する精度をGPTで達成することができた。又、self-verificationは正則化項として機能することでhallucinationをある程度を抑えることができた。

## GPT-NER + self-verification

本来、識別タスクである固有表現認識(NER)をどうやって生成タスクとして捉えるかの説明。

![fig1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gbe60oqf71ierqu1y5x8.png)

Prompt Constructionの工夫によってタスク変換を行う。Promptの構成は図１のような３要素からなる。注意点として Few-shot Demonstration では１つのエンティティラベルごとに１プロンプトを与える（図１の例では３プロンプトに分けている）。これはNクラス分類をN次元のバイナリ分類に変換しているに等しい(らしい)。こうすることでGPTのプロンプト長制約を受けないようにしている。又、エンティティがないような文では、特にエンティティインジケータを付与しない文を与える。最後の入力プロンプトは青い枠のInput Sentenceで Output: の後をブランクで入力すると緑の出力文が生成される。

![fig2](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r4ujw3ywdsyna1dn9gqw.png)

few-shotで入力する文章の選定は重要であるが、入力文に近いコンテキストである方が精度が高い。そこで入力文に近いコンテキストのfew-shotをいかに選択するかが、図２で説明しているDemonstrations Retrievalである。最初に事前学習ずみNERモデルを用いてDatasetの構築を行い、この中から入力文のテキストの埋め込みベクトル、もしくはエンティティの埋め込みベクトルに近いものを検索し、few-shotの文として選択する。

![fig3](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9j7hpqn24pynew36paan.png)

self-verificationは生成時の文章と回答をそのまま入力し、正しいかどうかを検証させるプロセスである。ここでも先ほどと同じような構成でプロンプトを作成する。

## 実験

GPT-3バックボーン、davinci003をモデルパラメータに使用、トークン最大長は512にした。

![tb1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1qxgd7trave6jm5vp23h.png)

識別モデルのSOTAであるACEに迫る結果となった。entity-level embeddingが最も性能が良く、self-verificationも微増させた。

![fig5](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2kzztbmk1t7hmvwjv4v3.png)

図５はshot数に関する実験で、32-shotくらいで飽和してくる（あくまでGPT-3の話）。shot数が極端に少ない場合はフォーマットに従わない出力が多かった（パースできないため誤りとカウントされる）。

エンティティトークンの選定は非常に重要らしく、以下のBMES,　Entity+Positionで ３２-shot 試したが、どちらも@@##よりも大幅に精度低下した。

BMES
Input:White House is in Washington
Output:B-ORG E-ORG O O O

Entity+Position
Input:White House is in Washington
Output:White House (0)

BMESはトークン列が長い場合にエラーが多く、Entity+Positionは位置の誤りが多かった。LLMは数値演算に弱いためと考えられる。
Стенфорддун Пинтос ИСи
Published: 2023-05-13 08:49:49

Стенфорд университети тарабынан иштелип чыккан пинтос ИСи(🇺🇸pintos operating system, 🇰🇬 пинтос иштетүү системасы)

кернел жиптери(kernel threads)
колдонуучу программаларын жүктөө жана иштетүү(loading and running user programs)
файл тутумун(file system) колдойт.
Бирок булардын бардыгын абдан жөнөкөй ыкма менен ишке ашырылгандыктан университеттерде өтүлгөн ИС сабактарында пинтостун мүмкүнчүлүктөрүн кеңейтүү үстүндө демейде 4 лаб тапшырмасы берилет. Алар:

жиптер(threads)
колдонуучу программалары(user programs)
виртуалдык эс(virtual memory)
файл тутуму(file system)
Google’дун Bard чатботу
Tags: kyrgyzcha, google, bard, kyrgyzstan
Published: 2023-05-13 08:45:06


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i4f7xaj97pz9rhsd5z4x.png)

Google I/O’до баарыбыз күбө болгондой Google экосистемасына ылайыкташтырылган Bard(Бард) деген чатботту сунду. Microsoft’тун ChatGPT’си менен азырынча тең тайлаша албайт, бирок LLM(🇺🇸large language models, 🇰🇬чоң тил моделдери(ЧТМ)) так жооп бериши үчүн ага data(маалымат) жедириш керек. А бул Google’да көп болбой анан кимде көп болмок. Мына ошондуктан, Bard күндөн-күнгө жакшыра турган модель. Кыргыз тили ЧТМ’дерде канчалык рол ойнойт деген суроонун жообу баарыбызга белгилүү. Кыргыз тилинде контент аз жана эч кандай илимий изилдөөлөр жүргүзүлбөгөндүгү үчүн азырынча эч кайсы чатбот кыргыз тилинде маектеше албайт. Ал убагы менен өзү чечилчү нерсе.
What motivated me to start working on a secure container?
Tags: webdev, javascript, security, showdev
Published: 2023-05-13 08:38:56

One of the user stories:

I'm on a trip, far from home, and I accidentally drop my phone in a mountain river. A tiny kiosk at the foot of a mountain is all civilization for dozens of miles around.

After the trip, I promised to stop by my university friend who lived in a nearby village. But his phone number had become unavailable to me. 😧

At the kiosk, a friendly guy 🤠, gives me his phone, with which I go to my public static page on Github, and open a secure container, which, among other things, stores my friend's phone number. I enter my username and password and write down my friend's address and phone number.

All the while, the guy who owns the computer is staring curiously at the screen...

In the container, besides my friend's phone, are all my family members' social media passwords, all our credit card numbers, passwords for bank accounts and cloud services my business uses.

Am I out of my mind? Consider it so! 🤪
Try the examples on the project site to see why all my secrets are safe.

I keep all my secrets in one file, copying that file to public services and giving it out to friends to increase the reliability of the storage.

But all the smiling guy at the kiosk could get, even with a man-in-the-middle (MITM) and a keylogger, is a few of my university friends' phones...

Is that a bad thing? Of course it is! 🙀

The story is fictional; all coincidences are coincidental. 😂

P.S. Smiling guy, thanks for your help! 🤠



{% embed https://github.com/griffin-container/griffin %}
TDM-Gcc in Ubunto - FOE RECHNER
Published: 2023-05-13 08:34:24

Wenn Sie Forge of Empires spielen, wissen Sie, dass jeder Zug zählt. Der FoE-Rechner unter [foerechner.de](https://foerechner.de/) ist ein unverzichtbares Tool, um sicherzustellen, dass Ihre Pläne effizient und kostengünstig sind. Es hilft Spielern, ihre Ressourcen zu minimieren und ihre Belohnungen zu maximieren, indem es aktuelle Informationen zu Baukosten, Forschungszeiten und Kosten für die Ausbildung von Einheiten bereitstellt.
I Created A Web App For Twitter That Went Viral 🔥
Tags: webdev, javascript, programming, html
Published: 2023-05-13 08:33:29

Introducing **[TweetHead](https://tweethead.netlify.app)** - A tool to quickly create a stunning tweet-style Twitter profile header (banner) to boost your personal brand 🚀

Check out the small demo video below to see how it works and visit the website to give it a try yourself 🌟

{% youtube 7-zrxdcsEko %}

---

I must confess, the app is not perfect yet and you may encounter some bugs for some specific browsers or phone browsers & maybe some other bugs 🐛

So, do let me know if you encounter any bug/issue and I'll fix them as I go ahead. For now, I'm looking for your valuable feedback to make it even better 🤝

So, visit the application link below and give it a try for yourself and share your honest feedback in the comment section 💬

**TweetHead Link 🔗** : https://tweethead.netlify.app

---

I recently crossed 45k Followers on **[My Linkedin](https://Linkedin.com/in/rammcodes)** because of all the amazing content that I post everyday ✨

𝗙𝗼𝗹𝗹𝗼𝘄 me on **[Linkedin](https://Linkedin.com/in/rammcodes)** for the most amazing content related to Programming & Web Development 🚀

[![Ram Maheshwari (@rammcodes) Linkedin](https://i.postimg.cc/d0w7CvZ7/www-linkedin-com-in-rammcodes-5.png)](https://Linkedin.com/in/rammcodes)

---

Please React with ❤️🦄🤯🙌🔥 
& 
Save it for later 🔖

---

Also, **Follow** me here on dev.to ✅
Benefits of Doing CA, CS, CMA Together
Tags: beginners
Published: 2023-05-13 08:02:15

Benefits of Doing CA, CS, CMA Together
Time and Cost Efficiency: Pursuing all three courses simultaneously can save time and cost compared to pursuing them individually.
Broader Knowledge Base: The combination of CA, CS, and CMA provides a comprehensive understanding of finance, law, and accounting, giving professionals a broader knowledge base and diverse skill set.
Enhanced Career Opportunities: Individuals with multiple qualifications have a competitive edge in the job market, opening up a wider range of career opportunities in various fields.
Greater Professional Value: Professionals with multiple qualifications are highly valued and respected in the industry, which can lead to increased job security and better pay scales.
Improved Business Acumen: The integration of CA, CS, and CMA knowledge can help professionals develop better business acumen and make informed decisions in their respective fields.
Better Understanding of Interrelated Disciplines: Since CA, CS, and CMA courses are interrelated, pursuing them together can help professionals gain a better understanding of how these disciplines are interconnected.
Improved Analytical and Problem-Solving Skills: The integration of knowledge from multiple courses can help professionals develop stronger analytical and problem-solving skills, which are essential in today's business world.
Opportunity to Network with Diverse Professionals: Pursuing multiple courses can provide professionals with the opportunity to network with individuals from diverse backgrounds and industries, expanding their professional network.
Increased Confidence and Self-Esteem: Successfully completing multiple courses simultaneously can boost an individual's confidence and self-esteem, leading to personal and professional growth.
Preparation for Entrepreneurship: Individuals pursuing CA, CS, and CMA courses together can acquire the necessary skills and knowledge to start their own businesses, making them better equipped to navigate the complex world of entrepreneurship.


👉For more information 🤙Call us Now at 7697044955 and 7277278811.

👉👉Get Pendrive Lectures for CA, CS, CFA, and CMA at Smart Learning Destination.
👉👉The Lowest Price is Guaranteed.👌
👉👉Visit -www.smartlearningdestination.com
XomBongDa | Trang tin bóng đá mới nhất, Soi Kèo nhà cái - Nhận Định Bóng Đá 24h
Published: 2023-05-13 08:02:06

https://xombongda.com/ Website tin tức thể thao bóng đá mới nhất cập nhật hàng ngày cùng XomBongDa✔️ Trang tin bóng đá mới nhất✔️ Soi Kèo nhà cái - Nhận Định Bóng Đá 24h được thực hiện bởi các chuyên gia bóng đá có nhiều năm kinh nghiệm✔️✔️✔️
https://solo.to/xombongda
https://scrapbox.io/xombongda
https://wakelet.com/@xombongda
https://heylink.me/xombongda/
https://pantip.com/profile/7551572#topics
http://www.bloggang.com/mainblog.php?id=xombongda
https://boosty.to/xombongda
https://velog.io/@xombongda
How to fix CORS issue on AWS CloudFront + S3
Tags: aws, cloudfront, s3, cors
Published: 2023-05-13 07:19:22

The error you're seeing, **"No 'Access-Control-Allow-Origin' header"**, is related to a security feature in web browsers called the same-origin policy, which restricts how resources are shared between documents from different origins. This policy prevents a malicious script on one page from obtaining access to sensitive data on another web page through that page's DOM.

The error message is associated with **CORS (Cross-Origin Resource Sharing)**, which allows many resources (_e.g., fonts, JavaScript, etc._) on a web page to be requested from another domain outside the domain from which the resource originated.

In the context of Amazon CloudFront and S3, you often need to set up CORS correctly on your S3 bucket that you're using with CloudFront. Here's how you can do it:

**Step 1: Set up CORS policy on your S3 bucket** .

You need to add a CORS policy to your S3 bucket. This can be done in the AWS Management Console:

- Sign in to your AWS Console account

- Navigate to your bucket in the S3 console.

- Click on the "Permissions" tab.

- Scroll down to Cross-origin resource sharing (CORS) and click "Edit"

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iadvmdfqn2hpro0zf9b2.png)
- Add a CORS policy. Here's a sample policy (this allows any domain to access your bucket, you might want to restrict this in a production environment):
```bash
[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "HEAD",
            "PUT",
            "POST",
            "DELETE"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": []
    }
]
```

- Click "Save changes"

**Step 2: Modify your cache setting on CloudFront**.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m3b5nc9zpjqmtl0mw25h.png)

- Go to CloudFront and click your distribution.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/066lppa57i5rc36myhgx.png)

- Then from the menu click on "Behaviors"

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qpu3acuwvnwp551nhcsc.png)

- select your behavior and click "Edit"

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/du0pbnw0tk3nymktsxvh.png)

- scroll down to "Viewer", select "Redirect HTTP to HTTPS" and select "GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE"

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kshpwsbmrqgx91qvuvj5.png)

- scroll down to Cache key and origin request, and select "CashingDisabled" from the Cache Policy dropdown.

- click "Save changes"

- wait for CloudFront to deploy _(takes about 2-3 mins.)_ then  **YOU ARE DONE!**


_Please leave a comment below if you like these kind of blog post._
DSA(Array): Find the maximum and minimum element in an array
Tags: dsa, cpp, leetcode, programming
Published: 2023-05-13 07:19:05

Given an array A of size N of integers. Your task is to find the minimum and maximum elements in the array.

 

Example 1:

Input:
N = 6
A[] = {3, 2, 1, 56, 10000, 167}
Output:
min = 1, max =  10000
 
Your Task:  
You don't need to read input or print anything. Your task is to complete the function getMinMax() which takes the array A[] and its size N as inputs and returns the minimum and maximum element of the array.

 
Expected Time Complexity: O(N)
Expected Auxiliary Space: O(1)

 
Constraints:
1 <= N <= 105
1 <= Ai <=1012



**Explanation and code:**

In this section we will discuss the most efficient approach for solving this type of problem.
What I am going to do:
At first take a vector which will store the elements of our array. After that we will sort the vector using sort() function.In this way we will get our modified array in descending order.Now we take the pair (long long as mentioned earlier). Now also take two variables named max and min long long data type. 
After that we can observer that our array already in descending order so most greater element in the last position that means n-1 and the smallest element in 0th position.(based on the 0th based indexing) now if we can say max store the last element and min will store first index element.

Sample Code:

```
//{ Driver Code Starts
#include <bits/stdc++.h>
using namespace std;
#define ll long long

pair<long long, long long> getMinMax(long long a[], int n) ;

int main() {
    int t;
    cin >> t;
    while (t--) {
        int n;
        cin >> n;
        ll a[n];
        for (int i = 0; i < n; i++) cin >> a[i];

        pair<ll, ll> pp = getMinMax(a, n);

        cout << pp.first << " " << pp.second << endl;
    }
    return 0;
}
// } Driver Code Ends


pair<long long, long long> getMinMax(long long a[], int n) {
  vector<int>st;
  
  for(int i=0;i<n;i++){
      st.push_back(a[i]);
  }
  
  sort(st.begin(),st.end());
  
  pair<long long,long long>ans;
  long long min,max;
  
  max = st[n-1];
  min = st[0];
  
  ans = {min,max};
  
  return ans;
  
  
}
```
Output:
`For Input: 
6
3 2 1 56 1000 167
Your Output: 
1 1000`
Robot Companions: What Superpowers Would You Give Yours?
Tags: discuss, beginners, codenewbie, watercooler
Published: 2023-05-13 07:00:00

Alright, picture this: You have the power to create a robot companion that can do absolutely anything and everything. What kind of tasks or services would your robot specialize in? How would it bring some serious convenience and awesomeness to people's lives?

---
Follow the [CodeNewbie Org](https://dev.to/codenewbieteam) and [#codenewbie](https://dev.to/t/codenewbie) for more awesome discussions and online camaraderie!

*{% embed* [https://dev.to/codenewbieteam](https://dev.to/codenewbieteam)%}*
How Would You Create the Perfect Coding Language?
Tags: discuss
Published: 2023-05-13 07:00:00

Imagine you have the chance to create a coding language from scratch. What unique features or capabilities would you introduce, and how would it improve the programming experience

---
Follow the DEVteam for more awesome discussions and online camaraderie!

{% embed [https://dev.to/devteam](https://dev.to/devteam) %}
Browser Plugin? or not??
Published: 2023-05-13 06:47:21

OpenAI announced? They are enabling plugin function and websearch built in for premium users this week.
I wonder that the websearch func is the same as Browser plugin they released before, or completely different func??

#chatgpt #openai #LLM #ai #artificialintelligence
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/10pa7dl0kzg9sw956dp5.jpg)
Distribute Candies
Tags: python, leetcode, problemsolving
Published: 2023-05-13 06:09:45

Alice has n candies, where the ith candy is of type candyType[i]. Alice noticed that she started to gain weight, so she visited a doctor.

The doctor advised Alice to only eat n / 2 of the candies she has (n is always even). Alice likes her candies very much, and she wants to eat the maximum number of different types of candies while still following the doctor's advice.

Given the integer array candyType of length n, return the maximum number of different types of candies she can eat if she only eats n / 2 of them.



```py
class Solution(object):
    def distributeCandies(self, ct):
        return min(
            len(set(ct)), 
            len(ct) / 2
        )

```
This week’s newsletter is out! (13-05-2023) - Optimism in a Constantly Deflationary World
Tags: javascript, tech, webdev, discuss
Published: 2023-05-13 05:55:12

---
title: This week’s newsletter is out! (13-05-2023) - Optimism in a Constantly Deflationary World
published: true
description: Another week of great javascript, tech and web development links.
tags: javascript, tech, webdev, discuss
---

Optimism in a Constantly Deflationary World

https://markjgsmith.substack.com/p/mark-smiths-newsletter-12-05-2023

Would love to hear any comments and feedback you have.

[@markjgsmith](https://twitter.com/markjgsmith)
Diagram editor dgrm.net / Announcement / Header, bold, forward / backward
Tags: webdev, javascript, productivity, startup
Published: 2023-05-13 05:48:28

[Dgrm.net](https://dgrm.net/)

- Now you can customize order of the shapes “forward” / “backward”;
- Text settings: header, bold;
- Beautiful arrows.

 
![Forward / backward settings](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xtw6bsnhwt60ry4xu1ac.gif)_Forward / backward settings_


![Header, bold settings](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0ui2u27bdgqgtt20ghe4.png)_Header, bold settings_

An example of a diagram with titles and a stroke:
https://app.dgrm.net/?k=202305699d3043


![Format scheme example](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x21zmgx02ud26ua6xw63.png)_Format scheme example_

I’m adding new features to the editor.
Announcements on Twitter: https://twitter.com/boyko_tech
Анонсы в Telegram: https://t.me/dgrm_net
Video: Personal Knowledge Management with Neovim
Tags: neovim, productivity, showdev, tutorial
Published: 2023-05-13 05:27:08

{% embed https://www.youtube.com/watch?v=FP7sQhc8kek %}

In this video I walk you through my note taking process with Neovim, I talk about how I organize, sync and search my notes and all the different tools and custom commands I use to achieve this.

### Neovim configs here: 
https://github.com/2kabhishek/nvim2k

### Telekasten plugin: 
https://github.com/renerocksai/telekasten.nvim

### Telekasten config file: 
https://github.com/2KAbhishek/nvim2k/blob/main/lua/nvim2k/plugins/telekasten.lua

### Committer repo:
https://github.com/2kabhishek/committer

### Environment variable for NOTES_ROOT:
https://github.com/2KAbhishek/Dotfiles/blob/5c601e6e54cbaf6f683f29261c4aa5d8fa099f90/.config/shell/envars.sh#L46

### `todo` alias: 
https://github.com/2KAbhishek/Dotfiles/blob/5c601e6e54cbaf6f683f29261c4aa5d8fa099f90/.config/shell/aliases.sh#LL118C5-L118C5

### `todos` function:
https://github.com/2KAbhishek/Dotfiles/blob/5c601e6e54cbaf6f683f29261c4aa5d8fa099f90/.config/shell/functions.sh#LL130C1-L134C2

### Video for setting up Neovim:
https://www.youtube.com/watch?v=WfhylGI_F-o&list=PL52YFor3VtLegIRc3uDl9koGP-Fu_YGru&index=4

Find all my Dotfiles here: https://github.com/2kabhishek/Dotfiles

My Links: https://2kabhishek.github.io/links/
GitHub: https://github.com/2KAbhishek
Twitter: https://twitter.com/2KAbhishek
Instagram: https://instagram.com/iam2kabhishek

If you have any feedback or comments do let me know.
10 Rules I Follow When Writing HTML To Make It Concise and Readable🚀💡
Tags: html, beginners, tutorial, learning
Published: 2023-05-13 05:22:34

Here are 10 rules that can be followed when writing HTML to make it more concise and readable:

**1. Use semantic elements:** 
Use semantic elements such as `<header>`, `<nav>`, `<main>`, `<article>`, `<section>`, `<footer>` and more to clearly communicate the purpose of the content.

**2. Use descriptive class and id names:** 
Use descriptive class and id names that clearly communicate the purpose of the element.
 
**3. Use the alt attribute for images:** 
Use the alt attribute for images, to provide a text description of the image in case the image can't be loaded.
 
**4. Use the title attribute for links:** 
Use the title attribute for links, to provide additional information about the link.
 
**5. Keep nesting to a minimum:** 
Keep nesting to a minimum to avoid complex structure, which makes it harder to understand the relationships between elements.

**6. Use comments:** 
Use comments to explain the purpose of different sections of your HTML, and to help other developers understand your code.
 
**7. Use a template engine:** 
Use a template engine such as Handlebars or Mustache, which allows you to separate the presentation logic from the data and make your HTML more readable and maintainable.
 
**8. Use the correct header levels:** 
Use the correct header levels `H1, H2, H3, etc.` to create a logical structure of the content.

**9. Use lists correctly:** 
Use lists correctly, either as an ordered list `<ol>` or unordered list `<ul>` to structure the content.

**10. Keep it simple:** 
Keep your HTML simple and avoid over-engineering solutions. The simpler your HTML is, the easier it will be to maintain and understand.

By following these rules, your HTML will be more concise, readable and semantic, which makes it easier to maintain and collaborate on projects.

Hope you like it.

That’s it — thanks.

To read my other articles [click here](https://dev.to/margishpatel).

---

👋Hey there, Let’s connect on:

Linkdin: [Margish Patel](https://www.linkedin.com/in/margish-patel-63843b1b5)
Twitter: [@margish96patel](https://twitter.com/margish96patel?t=ruk_O0DrnioOU_yQmHcWbw&s=09)
Email: [babariyamargish97@gmail.com](babariyamargish97@gmail.com)