<?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: Ayar Hlaine</title>
    <description>The latest articles on DEV Community by Ayar Hlaine (@ayarhlaine).</description>
    <link>https://dev.to/ayarhlaine</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%2F436106%2F52efb4e1-3c14-45fc-9a4b-b33cfbdbd019.png</url>
      <title>DEV Community: Ayar Hlaine</title>
      <link>https://dev.to/ayarhlaine</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ayarhlaine"/>
    <language>en</language>
    <item>
      <title>Raspberry PI with temperature and humidity sensor</title>
      <dc:creator>Ayar Hlaine</dc:creator>
      <pubDate>Sun, 01 Aug 2021 08:47:25 +0000</pubDate>
      <link>https://dev.to/ayarhlaine/raspberry-pi-with-temperature-and-humidity-sensor-2g6a</link>
      <guid>https://dev.to/ayarhlaine/raspberry-pi-with-temperature-and-humidity-sensor-2g6a</guid>
      <description>&lt;p&gt;ယခုပြောပြသွားမှာကတော့ Raspberry PI ကနေ DHT-11 (temperature and humidity sensor) ကို ဘယ်လိုအသုံးပြု့ရမလဲဆိုတာပြောပြပေးသွားမှာ ဖြစ်ပါတယ်။&lt;/p&gt;

&lt;p&gt;DHT-11 sensor ကိုအသုံးပြု့ဖို့ဆိုရင် Raspberry PI အတွက်လုပ်ထားတဲ့&lt;br&gt;
python libraries တွေ node js packages တွေအများကြီးရှိပါတယ်။&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://pypi.org/project/dht11/"&gt;DHT11 Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/node-dht-sensor"&gt;DHT11 Node JS&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;ယခု turorial မှာတော့ &lt;a href="https://pypi.org/project/dht11/"&gt;DHT11 Python&lt;/a&gt; ကိုအသုံးပြု့တဲ့နည်း ပြောပြသွားမှာဖြစ်ပါတယ်။&lt;/p&gt;
&lt;h3&gt;
  
  
  အသုံးပြု့ပုံ အဆင့်ဆင့်
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Run the standard updates&lt;/li&gt;
&lt;li&gt;Install &lt;a href="https://pypi.org/project/dht11/"&gt;DHT11 Python&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Connect DHT11 sensor with Raspberry Pi board&lt;/li&gt;
&lt;li&gt;Write python code to read data&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  1. Run the standard updates
&lt;/h3&gt;

&lt;p&gt;ဒါကတော့ ထုံးစံအတိုင်း linux based OS တွေဖြစ်တဲ့အတွက် libraries တွေကို update/upgrade လုပ်ပေးရမယ်။ Raspberry PI OS က Debian-based ဖြစ်နေတာကြောင့်ပါ။&lt;/p&gt;

&lt;p&gt;Raspberry PI ကို Terminal ကနေ&lt;br&gt;
&lt;code&gt;sudo apt-get update&lt;/code&gt;&lt;br&gt;
&lt;code&gt;sudo apt-get upgrade&lt;/code&gt;&lt;br&gt;
တို့ကို run ပေးပါ။&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Install &lt;a href="https://pypi.org/project/dht11/"&gt;DHT11 Python&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;ဒုတိယ အဆင့်အနေနဲ့ &lt;a href="https://pypi.org/project/dht11/"&gt;DHT11 Python&lt;/a&gt; library ကို install လုပ်ပေးပါမယ်။&lt;/p&gt;

&lt;p&gt;&lt;code&gt;python3 -m pip install dht11&lt;/code&gt; ကို အသုံးပြု့ပြီး အလွယ်တကူ install လုပ်နိုင်ပါတယ်။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fn-8WlMT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8qhl5vuqulnhflffb4p1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fn-8WlMT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8qhl5vuqulnhflffb4p1.png" alt="Screen Shot 2021-08-01 at 3.09.16 PM"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Connect DHT11 sensor with Raspberry Pi board
&lt;/h3&gt;

&lt;p&gt;တတိယ အဆင့်အနေနဲ့ကတော့ DHT11 sensor ကို Raspberry Pi board ရဲ့&lt;br&gt;
pins တွေနဲ့ ဘယ်လိုချိတ်ဆက်ရမလဲသိ့ဖို့လိုပါတယ်။&lt;/p&gt;

&lt;p&gt;အရင်ဆုံး DHT11 sensor မှာ pin ဘယ်နှချောင်းပါလဲ အရင်ကြည့်ရအောင်ပါ။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--74Mz57lW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bjnm56d2p72dnnf3u6uw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--74Mz57lW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bjnm56d2p72dnnf3u6uw.jpeg" alt="dht11 sensor"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Symbol&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;G&lt;/td&gt;
&lt;td&gt;Ground Pin ကို ဆိုလိုပါတယ်&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;V&lt;/td&gt;
&lt;td&gt;Voltage Pin ကိုဆိုလိုပါတယ်&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;S&lt;/td&gt;
&lt;td&gt;Signal/Data ကိုဆိုလိုပါတယ်&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;နောက်ထပ်သိ့ရမှာက မိ့မိ PI ရဲ့ Pins တွေကို နားလည်ဖို့လိုပါမယ်။&lt;br&gt;
ဒါကတော့ Raspberry PI ရဲ့ GPIO Pin dragram ပါ။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--R-gKy83l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mxdv3qmci2v9rp9ehmd3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--R-gKy83l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mxdv3qmci2v9rp9ehmd3.png" alt="GPIO-Pinout-Diagram-2 (1)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ဒါကိုပဲ မိ့မိ့ PI ရဲ့ gpio pins တွေအသေးစိတ်သိ့ချင်တယ်ဆိုရင်&lt;br&gt;
Terminal ကနေပဲ&lt;br&gt;
&lt;code&gt;pinout&lt;/code&gt; လို့ရိုက်ပြီး ကြည့်ရှုနိုင်ပါသေးတယ်။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fhAqhbdG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gsididhxbmz498w7x8qa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fhAqhbdG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gsididhxbmz498w7x8qa.png" alt="Screen Shot 2021-08-01 at 2.28.48 PM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ကျနော့်ရဲ့ Raspberry PI 4 Model B မှာတော့&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;3 Voltage (2 pins)&lt;/li&gt;
&lt;li&gt;5 Voltage (2 pins)&lt;/li&gt;
&lt;li&gt;Ground Pin (8 pins)&lt;/li&gt;
&lt;li&gt;GPIO Pin (28 pins) ပါပါတယ်.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;အသေးစိတ်ထပ်ဖတ်ချင်တယ်ဆိုရင်တော့ &lt;a href="https://www.raspberrypi.org/documentation/usage/gpio/README.md"&gt;GPIO Pin docs&lt;/a&gt; မှာဖတ်လို့ရပါတယ်။&lt;/p&gt;

&lt;p&gt;အဲတော့ sensor ရဲ့&lt;br&gt;
&lt;code&gt;G&lt;/code&gt; pin ကို Ground pin&lt;br&gt;
&lt;code&gt;V&lt;/code&gt; pin ကို 3 V/ 5 V pin&lt;br&gt;
&lt;code&gt;S&lt;/code&gt; pin ကို any GPIO pin&lt;br&gt;
တွေမှာချိတ်ဆက်ပေးရပါမယ်။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sDnsPu-v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2fnyz484wj4t7yw027gh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sDnsPu-v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2fnyz484wj4t7yw027gh.png" alt="Screen Shot 2021-08-01 at 2.44.10 PM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;အထက်ပါအတိုင်းချိတ်ဆက်လိုက်တဲ့ အတွက်&lt;br&gt;
&lt;code&gt;G&lt;/code&gt; pin က pin 6&lt;br&gt;
&lt;code&gt;V&lt;/code&gt; pin က pin 2&lt;br&gt;
&lt;code&gt;S&lt;/code&gt; pin က pin 10 (GPIO 15)&lt;br&gt;
မှာ ရှိနေမှာပါ။&lt;/p&gt;
&lt;h3&gt;
  
  
  4. Write python code to read data
&lt;/h3&gt;

&lt;p&gt;ဒါကတော့ အထက်အဆင်မှာ installed လုပ်ခဲ့တဲ့ dht11 library ကို အသုံးပြု့ထားတဲ့ code ဖြစ်ပါတယ်။&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import RPi.GPIO as GPIO
import dht11

# initialize GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()

# read data using pin 15
instance = dht11.DHT11(pin = 15)
result = instance.read()

if result.is_valid():
    print("Temperature: %-3.1f C" % result.temperature)
    print("Humidity: %-3.1f %%" % result.humidity)
else:
    print("Error: %d" % result.error_code)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Desktop ပေါမှာ &lt;code&gt;dht11_example.py&lt;/code&gt; ဆိုတဲ့ဖိုင်လေးဆောက်ပါ။&lt;br&gt;
ပြီးတော့ အထက်က code ကို ကူးထည့်လိုက်ပါ။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5hdTMZOg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eecdfonnpq80heo8ejxn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5hdTMZOg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eecdfonnpq80heo8ejxn.png" alt="Screen Shot 2021-08-01 at 3.06.58 PM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ပြီးရင်တော့ Terminal ကနေ&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pi@raspberrypi:~/Desktop phthon3 dht11_example.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;လို့ run ပေးရပါမယ်။&lt;br&gt;
သတိ့ထားရမှာ က code ထဲမှာ gpio pin no ကို မှန်မှန်ကန်ကန်ထည့်ပေးရပါမယ်။&lt;br&gt;
ချိတ်ဆက်တုန်းက &lt;code&gt;S&lt;/code&gt; pin က pin 10 (GPIO 15) gpio 15 pin ကို အသုံးပြု့ထားတာဖြစ်ထဲ့အတွက် 15 လို့ထည့်ထားတာပါ။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xew1bUWO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1jpk3i6cfv4se9rjaeme.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xew1bUWO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1jpk3i6cfv4se9rjaeme.png" alt="Screen Shot 2021-08-01 at 3.05.25 PM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;အားလုံးပဲအဆင်ပြေကြပါစေ။ &lt;/p&gt;

&lt;p&gt;&lt;a href="https://ko-fi.com/ayarhlaine"&gt;&lt;br&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--s81e3UpZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--KS7c42cU--/c_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880/https://cdn.ko-fi.com/cdn/kofi1.png%253Fv%253D2" alt="Buy Me a Coffee at ko-fi.com"&gt;&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;အားလုံးကိုကျေးဇူးတင်ပါတယ်။&lt;br&gt;
ဆက်လက်ကြိုးစားပါအုံးမည်။&lt;/p&gt;

&lt;p&gt;Ayar Hlaine&lt;/p&gt;

</description>
      <category>raspberrypi</category>
      <category>dht11</category>
    </item>
    <item>
      <title>Raspberry Pi Headless Setup</title>
      <dc:creator>Ayar Hlaine</dc:creator>
      <pubDate>Sat, 31 Jul 2021 07:50:48 +0000</pubDate>
      <link>https://dev.to/ayarhlaine/raspberry-pi-headless-setup-kk1</link>
      <guid>https://dev.to/ayarhlaine/raspberry-pi-headless-setup-kk1</guid>
      <description>&lt;h3&gt;
  
  
  Headless Setup ဆိုတာဘာလဲ
&lt;/h3&gt;

&lt;p&gt;Monitor or Keyboard တို့မပါပဲ Raspberry Pi Setup လုပ်ခြင်းကိုဆိုလိုပါတယ်။ ဒါပေမဲ့ တစ်ခြား wireless network တို့ ssh သုံးဖို့ တစ်ခြား accessories တွေတော့လိုအပ်အုံးမှာဖြစ်ပါတယ်။&lt;/p&gt;

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

&lt;p&gt;Raspberry Pi Setup လုပ်ဖို့ဆိုရင် &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;SD Card (minimum 8 GB, recommended 32 GB)&lt;/li&gt;
&lt;li&gt;Raspberry Pi board (any Pi Model)&lt;/li&gt;
&lt;li&gt;SD card reader&lt;/li&gt;
&lt;li&gt;Wireless Network
စသည်တို့လိုအပ်ပါတယ်။&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Setup ပြုလုပ်ပုံ အဆင့်များ
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Raspberry Pi OS (Raspbian) ကို SD card ထဲကို burn ဖို့လိုပါမယ်။&lt;/li&gt;
&lt;li&gt;Monitor or Keyboard တို့မပါပဲ Raspberry Pi Setup လုပ်ဖို့ Wireless Network Configure လုပ်ပါမယ်။&lt;/li&gt;
&lt;li&gt;SSH enable လုပ်ရပါမယ်။&lt;/li&gt;
&lt;li&gt;Find Raspberry PI Ip Address &lt;/li&gt;
&lt;li&gt;VNC Viewer setup &lt;/li&gt;
&lt;li&gt;Accessing Raspberry PI Screen from PC/Phone&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  1. Raspberry Pi OS (Raspbian) ကို SD card ထဲကို burn ဖို့လိုပါမယ်။
&lt;/h3&gt;

&lt;p&gt;ပထမဆုံး အဆင့်အနေနဲ့ SD Card ကို ဖတ်ဖို့ computer နဲ့ ချိတ်ဆက်ရပါမယ်။ SD card က အသုံးပြုပီးသားဆိုရင်တော့ format အရင်ချပေးပါ။ အသုံးမပြုရသေးတဲ့ SD card ဆိုရင်တော့ format ချဖို့မလိုပါဘူး။ ချိတ်ဆက်ထားတဲ့ SD card ကို စစ်ဆေးချင်တယ် ဆိုရင်တော့ Mac မှာဆိုရင် Disk Utility မှာ သွားပီးစစ်ဆေးလို့ရပါတယ်။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--M85-71wQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fra8tvojnfw9trilnx6i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--M85-71wQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fra8tvojnfw9trilnx6i.png" alt="Screen Shot 2021-07-31 at 10.59.46 AM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;သင့်အနေနဲ့ format ချချင်တယ်ဆိုရင်တော့ Right Click &amp;gt; Erase ကိုနှိပ်ပီး ဆောင်ရွက်နိုင်ပါတယ်။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sFoPv2U---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gwa1225qeyd77mc1231h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sFoPv2U---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gwa1225qeyd77mc1231h.png" alt="Screen Shot 2021-07-31 at 11.01.14 AM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ပြီးတော့ Raspberry Pi OS (Raspbian) ကို SD card ထဲကို ထည့်ရပါမယ်။ ဒီအဆင့်မှာတော့ open source image writer tools တွေအများကြီးရှိပါတယ်။ ကိုယ်ကြိုက်နှစ်သက်ရာကို အသုံးပြု့နိုင်ပါတယ်။&lt;/p&gt;

&lt;p&gt;Image Writer Tools:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Etcher&lt;/li&gt;
&lt;li&gt;Raspberry Pi Imager&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;ယခုပြောပြသွားမှာကတော့ Raspberry Pi Imager ကို အသုံးပြု့သည့်နည်းဖြစ်ပါတယ်။ ဒီနေရာမှာ Raspberry Pi setup လုပ်ဖို့ ကိုယ်က ကိုယ်ပိုင် Laptop တစ်လုံး မရှိဘူးဆိုရင်လည်း ဖုန်တစ်လုံးနဲ့လည်းအဆင်ပြေနိုင်ပါတယ်။ ဖုန်းနဲ့ဆိုရင်တော့ &lt;br&gt;
&lt;a href="https://play.google.com/store/apps/details?id=com.redrobe.raspicardimager"&gt;Pi SD Card Imager&lt;/a&gt; တို့သုံးလို့ရပါတယ်။ Play Store မှာ အလွယ်တကူ download လုပ်နိုင်ပါတယ်။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oeTr8gl1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fkyvhe0m3kyq1j2ovy5b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oeTr8gl1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fkyvhe0m3kyq1j2ovy5b.png" alt="Screen Shot 2021-07-31 at 11.12.31 AM"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;ကဲ ဆက်လိုက်ကြဉီးစို့။&lt;/p&gt;

&lt;p&gt;ကိုယ်အသုံးပြု့မည့် OS ပေါ်မူတည်ပြီး Download လုပ်ပေးရပါမယ်။&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;For Window (&lt;a href="https://downloads.raspberrypi.org/imager/imager_1.4.exe"&gt;https://downloads.raspberrypi.org/imager/imager_1.4.exe&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;For Mac
(&lt;a href="https://downloads.raspberrypi.org/imager/imager_1.4.dmg"&gt;https://downloads.raspberrypi.org/imager/imager_1.4.dmg&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;For Ubuntu (&lt;a href="https://downloads.raspberrypi.org/imager/imager_1.4_amd64.deb"&gt;https://downloads.raspberrypi.org/imager/imager_1.4_amd64.deb&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Install လုပ်ပီးသွားတာနဲ့ အောက်ပါအတိုင်းမြင်တွေ့ရမှာ ဖြစ်ပါတယ်။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zxb85Et4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lnbsfjicybwhbv1ekvkb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zxb85Et4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lnbsfjicybwhbv1ekvkb.png" alt="Screen Shot 2021-07-31 at 11.19.00 AM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Choose OS ကို ရွေးပီး Pi board နဲ့ သင့်တော့မည့် OS type ကို ရွေးချယ်ပါ။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5ZWwdqNV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wr1dvu4gkkbp44sqvoof.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5ZWwdqNV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wr1dvu4gkkbp44sqvoof.png" alt="Screen Shot 2021-07-31 at 11.21.00 AM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--D0EAk8S9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ar9ip2shilhsjythtgfl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--D0EAk8S9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ar9ip2shilhsjythtgfl.png" alt="Screen Shot 2021-07-31 at 11.22.44 AM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ပြီးရင်တော့ မိ့မိ burn လို့သည့် SD card ရွေးဖို့ Choose Storage ကို နှိပ်ပါ။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--onFfNUcd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ibu5jr6wskqo4z8nwyd2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--onFfNUcd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ibu5jr6wskqo4z8nwyd2.png" alt="Screen Shot 2021-07-31 at 11.24.10 AM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ပြီးရင် Write ကို နှိပ်ပါ။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UbOFAbgW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/icn9s6a1xxe9lxf7sgk9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UbOFAbgW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/icn9s6a1xxe9lxf7sgk9.png" alt="Screen Shot 2021-07-31 at 11.25.15 AM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RKKdwrle--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s6eyfndfeq23g6qoal9s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RKKdwrle--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s6eyfndfeq23g6qoal9s.png" alt="Screen Shot 2021-07-31 at 11.27.06 AM"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Monitor or Keyboard တို့မပါပဲ Raspberry Pi Setup လုပ်ဖို့ Wireless Network Configure လုပ်ပါမယ်။
&lt;/h3&gt;

&lt;p&gt;Headless Setup ရဲ့ အနှစ်သာရ ကအခုမှ စတာပါ။ ပုံမှန်အတိုင်ဆိုရင် Pi OS ကို SD card ထဲထည့်ပီးပီ ဆိုရင် Pi board မှာ keyboard, mouse, hdmi cable တွေတပ်ပြီး monitor တစ်ခုခုနဲ့ချိတ်ရပါမယ်။ Headless Setup ဆိုတာအဲတာတွေတပ်စရာမလို့ပဲ အသုံးပြု့တဲ့နည်းဖြစ်ပါတယ်။ &lt;/p&gt;

&lt;p&gt;တစ်နည်းအားဖြင့်ပြောရရင် boot files တွေထဲမှာ customize ဝင်ပြင်ပီးတော့ ssh နဲ့ VNC Viewer on ပြီး access လုပ်တဲ့နည်းဖြစ်ပါတယ်။&lt;/p&gt;

&lt;p&gt;အရင်ဆုံးအနေနဲ့ Raspberry PI OS တက်လာတဲ့ အခါ မိ့မိ့ personal connect လုပ်ဖို့ network configuration file ထည့်ပေးရပါမယ်။ Raspberry Pi ဟာဆိုရင် network configuration file လေးကို &lt;code&gt;wpa_supplicant.conf&lt;/code&gt; လို့ခေါ်တဲ့ နာမည်နဲ့ သိမ်းထားလေ့ရှိ့ပါတယ်။&lt;/p&gt;

&lt;p&gt;&lt;code&gt;wpa_supplicant.conf&lt;/code&gt; ရဲ့ format ကတော့ အောက်ပါအတိုင်းဖြစ်ပါတယ်။&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;country=MM
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev 
update_config=1
network={
       ssid="SSID Name"
       psk="Password"
       key_mgmt=WPA-PSK
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;SSID Name&lt;/code&gt; နေရာမှာ Wifi Name ထည့်ပါ။&lt;br&gt;
&lt;code&gt;Password&lt;/code&gt; နေရာမှာ Wifi Password ထည့်ပါ။&lt;/p&gt;

&lt;p&gt;ဒီနေရာမှာ ကိုယ့်မှာ wifi စက်တပ်ထားမှ မဟုတ်ပါဘူး။ ဖုန်းရဲ့ hostpot နဲ့လည်းလုပ်လို့ရပါတယ်။&lt;/p&gt;

&lt;p&gt;&lt;code&gt;wpa_supplicant.conf&lt;/code&gt; လို့ခေါ်တဲ့ ဖိုင်လေးကို SD card root ထဲမှာ ထည့်ပေးရပါမယ်။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fBbHzvXk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qorh9hnrdvxbhpsxue3a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fBbHzvXk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qorh9hnrdvxbhpsxue3a.png" alt="Screen Shot 2021-07-31 at 1.10.00 PM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;အဲဒီလိုထည့်လိုက်တဲ့ အတွက်ကြောင့် PI OS တက်လာတဲ့ အခါ မိ့မိရဲ့ network ကို auto connect လုပ်ပါလိမ့်မယ်။&lt;/p&gt;
&lt;h3&gt;
  
  
  3. SSH enable လုပ်ရပါမယ်။
&lt;/h3&gt;

&lt;p&gt;နောက်တစ်ဆင့်ကတော့ wifi auto ချိတ်ပီးတဲ့ အခါ Raspberry PI ကို remote acccess လုပ်ဖို့ ssh enable လုပ်ရပါမယ်။&lt;/p&gt;

&lt;p&gt;ဒီအဆင့်ကတော့ အရမ်းကို ရိုးရှင်းပါတယ်။&lt;br&gt;
&lt;code&gt;ssh&lt;/code&gt; file လေးကို SD card root ထဲမှာ ထည့်လိုက်ရုံပါပဲ။&lt;/p&gt;

&lt;p&gt;Terminal မှာ &lt;code&gt;touch ssh&lt;/code&gt; လို့ရိုက်လိုက်ရင် &lt;code&gt;ssh&lt;/code&gt; ဆိုတဲ့ empty file လေးထွက်လာပါလိမ့်မယ်။&lt;br&gt;
အဲဒီ &lt;code&gt;ssh&lt;/code&gt; ဆိုတဲ့ file လေးကို SD card root ထဲမှာ ထည့်ပေးလိုက်ပါ။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--r1Vj_vmy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bsul4do6r6ffcrmzigpg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--r1Vj_vmy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bsul4do6r6ffcrmzigpg.png" alt="Screen Shot 2021-07-31 at 1.23.31 PM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: &lt;code&gt;ssh&lt;/code&gt; file မှာ ဘာ file extension မှ မပါပါဘူး။&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;ပြီးရင်တော့ မိ့မိ့ SD card ကို ဖြုတ်ပြီး Raspberry Pi board မှာ တပ်နိုင်ပါပြီ။&lt;/p&gt;

&lt;p&gt;Raspberry PI ကို power on လိုက်ပါ။&lt;/p&gt;

&lt;p&gt;Raspberry PI မှာ မီးအစိမ်းလေး လင်းလာတဲ့ အထိ့ ခဏစောင့်ပါ။&lt;/p&gt;
&lt;h3&gt;
  
  
  4. Find Raspberry PI Ip Address
&lt;/h3&gt;

&lt;p&gt;စတုတ္ထ အဆင့်အနေနဲ့ Raspberry PI boot တက်လာပြီ ဆိုရင် ssh ကနေဝင်နိုင်ဖို့ Raspberry PI ရဲ့ Ip Address သိ့ဖို့လိုပါတယ်။&lt;/p&gt;

&lt;p&gt;ဒီအတွက် IP Scanner ကိုသုံးပါမယ်။&lt;br&gt;
For Window, &lt;a href="https://www.advanced-ip-scanner.com/"&gt;Advance IP Scanner&lt;/a&gt; သုံးနိုင်ပါတယ်။&lt;br&gt;
For Mac, &lt;a href="https://apps.apple.com/us/app/ip-scanner/id404167149?mt=12"&gt;IP Scanner&lt;/a&gt; ကိုသုံးနိုင်ပါတယ်။&lt;/p&gt;

&lt;p&gt;IP Scanner ဖွင့်လိုက်တာနဲ့ အောက်ပါအတိုင်းမြင်တွေ့ရမှာ ဖြစ်ပါတယ်။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--r9skczdR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vnm4uz0f9bbsgelb1gpp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--r9skczdR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vnm4uz0f9bbsgelb1gpp.png" alt="Screen Shot 2021-07-31 at 1.37.07 PM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;192.168.100.26&lt;/code&gt; ဆိုတာ Raspberry PI ရဲ့ IP address ဖြစ်ပါတယ်။ &lt;br&gt;
အဲဒါကိုအသုံးပြု့ပြီး ssh ကနေ login ဝင်နိုင်ပါပြီ။&lt;/p&gt;

&lt;p&gt;SSH က Mac, Ubuntu တိုမှာ ပါပြီးသားဖြစ်ပြီး Window မှာဆိုရင်တော့ &lt;a href="https://www.putty.org/"&gt;Putty&lt;/a&gt; စသော ssh client software တွေသုံးနိုင်ပါတယ်။&lt;/p&gt;

&lt;p&gt;Terminal မှာ &lt;code&gt;ssh pi@&amp;lt;ip-address&amp;gt;&lt;/code&gt; လို့ ရိုက်ပြီးဝင်ရပါမယ်။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QjUGx-8k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/73c7skstnrnn6kpewa4m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QjUGx-8k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/73c7skstnrnn6kpewa4m.png" alt="Screen Shot 2021-07-31 at 1.44.13 PM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ဘာလို့  &lt;code&gt;ssh pi@&amp;lt;ip-address&amp;gt;&lt;/code&gt; သုံးတာလဲဆိုတော့ Raspberry Pi ရဲ့&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Default User Name = pi
Default Password = raspberry
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ဖြစ်လို့ပါပဲ။&lt;/p&gt;

&lt;h3&gt;
  
  
  5. VNC Viewer setup
&lt;/h3&gt;

&lt;p&gt;Raspberry PI Screen ကို remove access မြင်နိုင်ဖို့ Raspberry PI မှာ default အနေနဲ့ VNC Viewer Software ပါလာပြီးသားပါ။ Default အနေနဲ့တော့ သူက disabled လုပ်ထားတာပါ။ ဒါကို ဖွင့်ပေးဖို့လိုအပ်ပါတယ်။&lt;/p&gt;

&lt;p&gt;SSH နဲ့ Raspberry PI ထဲ ဝင်ပြီးတာနဲ့ ဒါကို အလွယ်တကူ enable လုပ်လိုရပါပြီ။&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo raspi-config&lt;/code&gt; ဆိုပြီး ရိုက်ရပါမယ်။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LrbOd4n3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/amzb46kabtn5npwjn8sd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LrbOd4n3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/amzb46kabtn5npwjn8sd.png" alt="Screen Shot 2021-07-31 at 1.52.37 PM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ရိုက်ပြီး Enter ခေါက်လိုက်တာနဲ အောက်ပါအတိုင်းမြင်တွေ့ရမှာ ဖြစ်ပါတယ်။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gXVSDgiD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/crsd32auokkfp8wopg2r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gXVSDgiD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/crsd32auokkfp8wopg2r.png" alt="Screen Shot 2021-07-31 at 1.53.38 PM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Arrow Key&lt;/code&gt; ကို အသုံးပြု့ပြီး &lt;code&gt;Interface Option&lt;/code&gt; ကိုရွေးပါ။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--buP7tyaa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sk9yt0hirdk238d5jvlb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--buP7tyaa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sk9yt0hirdk238d5jvlb.png" alt="Screen Shot 2021-07-31 at 1.54.06 PM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enter ခေါက်လိုက်တာနဲ့ အောက်ပါအတိုင်းထပ်မံမြင်တွေ့ရမှာ ဖြစ်ပါတယ်။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RKcqSVIu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/15zcs5iosk62xqm381ox.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RKcqSVIu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/15zcs5iosk62xqm381ox.png" alt="Screen Shot 2021-07-31 at 1.55.24 PM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;VNC Enable/Disable&lt;/code&gt; ကို arrow key နဲ့သွားပါ။ Enter ခေါက်ပါ။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Xja6LeaJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g03ffekwbwxlbhwxajxu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Xja6LeaJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g03ffekwbwxlbhwxajxu.png" alt="Screen Shot 2021-07-31 at 1.56.38 PM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ပြီး ရင် Yes ကို ရွေးပါ။ &lt;br&gt;
VNC Viewer Enable လုပ်လို့ပြီးပါပြီ။&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Accessing Raspberry PI Screen from PC/Phone
&lt;/h3&gt;

&lt;p&gt;နောက်ဆုံးအဆင့်အနေနဲ့ Raspberry PI Screen ကို မိ့မိ laptop/phone ကနေကြည့်နိုင်ပါပြီ။&lt;/p&gt;

&lt;p&gt;VNC Viewer ကို &lt;a href="https://www.realvnc.com/en/connect/download/viewer/"&gt;ဒီမှာ&lt;/a&gt; ဒေါင်းပါ။&lt;/p&gt;

&lt;p&gt;Window, Mac, Ubuntu, Android အကုန် support ပေးပါတယ်။&lt;/p&gt;

&lt;p&gt;VNC Viewer ဖွင့်ပါ။&lt;br&gt;
Raspberry PI Ip address ရိုက်ထည့်ပါ။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0AanD4EH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mzeoac1ch7di7gvtd3yl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0AanD4EH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mzeoac1ch7di7gvtd3yl.png" alt="Screen Shot 2021-07-31 at 2.02.32 PM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;User Name နဲ့ Password ထည့်ပါ။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bmQKuEqC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/afj2efmvsvrnl3wko8o7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bmQKuEqC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/afj2efmvsvrnl3wko8o7.png" alt="Screen Shot 2021-07-31 at 2.03.00 PM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ပြီးတာနဲ့ အောက်ပါအတိုင်း Raspberry PI Screen ကို မိ့မိ laptop/phone ကနေ ထိန်းချုပ်နိုင်ပါပြီ။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oYdlsbEB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r0g10uzzdqbwo5t1f53s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oYdlsbEB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r0g10uzzdqbwo5t1f53s.png" alt="Screen Shot 2021-07-31 at 2.08.41 PM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Troubleshoot Guides
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.tomshardware.com/how-to/fix-cannot-currently-show-desktop-error-raspberry-pi"&gt;Cannot Currently Show the Desktop' Error&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: ရေးသားသူသည့် Raspberry PI Professional တစ်ယောက်မဟုတ်ပါ။ မိ့မိ့ကိုယ်တိုင် setup လုပ်စဉ်က အတွေ့အကြုံကိုသာမျှဝေခြင်းဖြစ်ပါသည်။&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://ko-fi.com/ayarhlaine"&gt;&lt;br&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--s81e3UpZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--KS7c42cU--/c_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880/https://cdn.ko-fi.com/cdn/kofi1.png%253Fv%253D2" alt="Buy Me a Coffee at ko-fi.com"&gt;&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;အားလုံးကိုကျေးဇူးတင်ပါတယ်။&lt;br&gt;
ဆက်လက်ကြိုးစားပါအုံးမည်။&lt;/p&gt;

&lt;p&gt;Ayar Hlaine&lt;/p&gt;

</description>
      <category>raspberrypi</category>
    </item>
    <item>
      <title>Basic Hook (useState) in React</title>
      <dc:creator>Ayar Hlaine</dc:creator>
      <pubDate>Fri, 08 Jan 2021 19:09:36 +0000</pubDate>
      <link>https://dev.to/ayarhlaine/basic-hook-usestate-in-react-4181</link>
      <guid>https://dev.to/ayarhlaine/basic-hook-usestate-in-react-4181</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;React ရဲ hook feature ဟာဆိုရင် React 16.8 နောက်ပိုင်းမှာမှ စပြီးပါလာတဲ့ feature ဖြစ်ပါတယ်။ အဓိကရည်ရွယ်ချက်ကတော့ Class component တွေမရေးတော့ပဲ function component တွေမှာ state တွေကို ထိန်းကြောင်းနိုင်ဖို့ပဲဖြစ်ပါတယ်။&lt;/p&gt;

&lt;h1&gt;
  
  
  What is useState in React?
&lt;/h1&gt;

&lt;p&gt;&lt;code&gt;useState&lt;/code&gt; hook ဟာဆိုရင် React မှာ အသုံးပြု့တဲ့ hooks တွေထဲကမှ အခြေခံကျဆုံးတစ်ခုလို့ဆိုနိုင်ပါတယ်။&lt;br&gt;
&lt;code&gt;useState&lt;/code&gt; hook ဆိုတာဘာလဲလို့ လွယ်ကူအောင်ပြောရလျှင် javascript function လို့မှတ်ထားပြီး functional components တွေမှာ component ရဲ့ state ကိုထိန်းချုပ်ဖို့သုံးတယ်လို့ဆိုရမှာပဲဖြစ်ပါတယ်။&lt;/p&gt;
&lt;h1&gt;
  
  
  How to use?
&lt;/h1&gt;

&lt;p&gt;&lt;code&gt;useState&lt;/code&gt; hook ကိုသုံးမယ်ဆိုရင်တော့ ပထမဆုံးအနေနဲ့ &lt;code&gt;useState&lt;/code&gt; ကို &lt;code&gt;react&lt;/code&gt; library ကနေ import လုပ်ရပါမယ်။&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { useState } from 'react';
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ပြီးတော့မှ ကိုယ်အသုံးချချင်တဲ့ Function component ထဲမှာ အောက်ပါ syntax အတိုင်းအသုံးပြု့ရမှာပဲ ဖြစ်ပါတယ်။&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const [state, setState] = useState(initialState);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;အဓိကကတော့ &lt;code&gt;useState&lt;/code&gt; hook ဟာဆိုရင် value နှစ်ခုကို return ပြန်ပေးပါတယ်။&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ပထမတစ်ခုက state ရဲ့ value ပါ (ပထမဆုံးအကြိမ်မှာတို့ကိုယ်သတ်မှတ်လိုက်တဲ့ &lt;code&gt;initialState&lt;/code&gt; ထဲကတန်ဖိုးရှိနေမှာပါ)&lt;/li&gt;
&lt;li&gt;ဒုတိယတစ်ခု့ကတော့ state ကို update လုပ်ပေးနိုင်တဲ့ function ပါ။
အဲဒီတော့ ကျနော်တို့က state ရဲ့ value ကိုလိုချင်ရင် ပထမ param(&lt;code&gt;state&lt;/code&gt;) ကိုသုံးပြီးတော့၊ state ကို update လုပ်ချင်ရင်တော့ ဒုတိ့ယ param(&lt;code&gt;setState&lt;/code&gt;) ကို function call လုပ်ပြီး update လုပ်လေ့ရှိပါတယ်။&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Tips and Rules
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;state&lt;/code&gt; နဲ့ &lt;code&gt;setState&lt;/code&gt; variable ကို ကိုယ်ကြိုက်တဲ့ နာမည်ပေးလို့ရတယ်ဆိုပေမဲ့ အများသုံးတဲ့ rule အတိုင်းလိုက်နာတာက ပိုပြီးတော့ standard ကျပါတယ်။
ဥပမာ။ ။ counter component အတွက် &lt;code&gt;useState&lt;/code&gt; ကိုသုံးတဲနေရာမှာ
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const [counterValue, updateCounter] = useState(၀);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;အဲလိုမျိုးပေးမဲ့ အစား&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const [count, setCount] = useState(၀);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ဆိုပြီးပေးသင့်ပါတယ်။ ဒါမှသာ နောက်တစ်ချိန် တစ်နေနေရာကနေ &lt;code&gt;count&lt;/code&gt; value ကို ခေါ်သုံးတာနဲ့ update လုပ်လို့ရတဲ့ function name က &lt;code&gt;setCount&lt;/code&gt; ဆိုပြီးတန်းသိ့မှာဖြစ်ပါတယ်။&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;useState&lt;/code&gt; hook ကိုသုံးတဲ့နေရာမှာ၊ state ရဲ့ data type ဟာ ကိုယ်လိုချင်တဲ့ javascript data type သတ်မှတ်လို့ရပါတယ်။
ဥပမာ
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const [count, setCount] = useState(၀); // number
const [items, setItems] = useState([]); // array
const [itemName, setItemName] = useState(""); // string
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;useState&lt;/code&gt; hook ဟာဆိုရင် local component အသေးစားတွေအတွက် အတော်အသုံးဝင်ပါတယ်။ ဒါပေမဲ့ ကိုယ်အနေနဲ့ larger logic components တွေအတွက်ဆိုရင်တော့ တစ်ခြား state management liraries တွေကိုအသုံးပြု့ရမှာဖြစ်ပါတယ်။ ဥပမာ &lt;a href="https://redux.js.org/"&gt;Redux&lt;/a&gt;, &lt;a href="https://facebook.github.io/flux/"&gt;Flux&lt;/a&gt; စတာတွေကို အသုံးပြု့နိုင်ပါတယ်။&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Basic structure with example (Counter App)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { useState } from 'react';

function Counter() {
  // Declare a new state variable, which we'll call "count"
  const [count, setCount] = useState(0);

  return (
    &amp;lt;div&amp;gt;
      &amp;lt;p&amp;gt;You clicked {count} times&amp;lt;/p&amp;gt;
      &amp;lt;button onClick={() =&amp;gt; setCount(count + 1)}&amp;gt;
        Click me
      &amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://codesandbox.io/s/peaceful-rosalind-coigu"&gt;Counter App Example&lt;/a&gt; ကို &lt;code&gt;demo&lt;/code&gt; အနေနဲ့ကြည့်ချင်တယ်ဆိုရင်တော့ &lt;a href="https://codesandbox.io/s/peaceful-rosalind-coigu"&gt;ဒီလင့်&lt;/a&gt; မှာသွားကြည့်လို့ရပါတယ်။&lt;/p&gt;

&lt;p&gt;React Hooks တွေအကြာင်းဖတ်ချင်တယ်ဆိုရင်တော့ &lt;a href="https://reactjs.org/docs/hooks-intro.html"&gt;ဒီလင့်&lt;/a&gt; မှာသွားဖတ်လို့ရပါတယ်။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ko-fi.com/ayarhlaine"&gt;&lt;br&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--s81e3UpZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--KS7c42cU--/c_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880/https://cdn.ko-fi.com/cdn/kofi1.png%253Fv%253D2" alt="Buy Me a Coffee at ko-fi.com"&gt;&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;အားလုံးကိုကျေးဇူးတင်ပါတယ်။&lt;br&gt;
ဆက်လက်ကြိုးစားပါအုံးမည်။&lt;/p&gt;

&lt;p&gt;A.Y.H&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Laravel N + 1 query ပြသာနာ</title>
      <dc:creator>Ayar Hlaine</dc:creator>
      <pubDate>Sun, 03 Jan 2021 06:32:14 +0000</pubDate>
      <link>https://dev.to/ayarhlaine/laravel-n-1-query-4bgo</link>
      <guid>https://dev.to/ayarhlaine/laravel-n-1-query-4bgo</guid>
      <description>&lt;p&gt;N + 1 query ပြသာနာကတော့ လက်ရှိ developer တွေတော်တောများများဖြစ်လေ့ဖြစ်ထရှိတဲ့ပြသာနာပါ။&lt;/p&gt;

&lt;h2&gt;
  
  
  ဘယ်အချိန်မှာဖြစ်တက်တာလဲ?
&lt;/h2&gt;

&lt;p&gt;ပုံမှန်အားဖြင့်တော့ data list တွေကို ပြန်ပြတဲ့နေရာမျိုးတွေမှာဖြစ်လေ့ဖြစ်ထာရှိပါတယ်။&lt;/p&gt;

&lt;h2&gt;
  
  
  ဘယ်လိုမျိုးဖြစ်တာလဲ?
&lt;/h2&gt;

&lt;p&gt;ဥပမာ ကိုယ့်ရဲ့ database ထဲမှာ record 100 ရှိတယ်။ ကိုယ်ကသာမာန် data လေးထုတ်ပြပေမဲ့ database ကို query သွားဆွဲတာက &lt;strong&gt;&lt;em&gt;101&lt;/em&gt;&lt;/strong&gt; (100 records + 1 times) ကြိမ်ဖြစ်နေတာမျိုးပါ။&lt;/p&gt;

&lt;h2&gt;
  
  
  အသေးစိတ်ရှင်းလင်းချက်
&lt;/h2&gt;

&lt;p&gt;Laravel မှာကျနော်တို့က ORM ကိုသုံးပြီးတော့ relationship တွေကိုလိုအပ်သလို့စီမံအသုံးပြု့ကြပါတယ်။ ဒီနေရာမှာ Eloquent ORM Relationship တွေဟာ &lt;code&gt;lazy loading&lt;/code&gt; တွေဖြစ်တယ်ဆိုတာကိုသတိ့ပြု့ကြရမှာပါ။&lt;br&gt;
ဥပမာ ......&lt;/p&gt;
&lt;h3&gt;
  
  
  Book Model
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Book extends Model
{
    /**
     * Get the author that wrote the book.
     */
    public function author()
    {
        return $this-&amp;gt;belongsTo(Author::class);
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Author Model
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Author extends Model
{

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

&lt;/div&gt;


&lt;p&gt;ဒီနေရာမှာ စာအုပ်စာရင်းရယ်၊ ရေးတဲ့သူတွေကို တွဲပြချင်တဲ့ အခါမှာ အောက်ပါအတိုင်းရေးလေ့ရှိ့ပါတယ်။&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;use App\Models\Book;

$books = Book::all();

foreach ($books as $book) {
    echo $book-&amp;gt;author-&amp;gt;name;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;အဲလိုရေးတဲ့အခါ ....&lt;br&gt;
&lt;code&gt;Book::all()&lt;/code&gt; လုပ်တဲ့အချိန်မှာ query တစ်ကြိမ်အလုပ်လုပ်ရပါတယ်။&lt;br&gt;
loop ပတ်ရင်း &lt;code&gt;$book-&amp;gt;author&lt;/code&gt; ဆိုတဲ့အချိန်မှာ query တစ်ကြိမ်စီလုပ်ရပါတယ်။&lt;br&gt;
အဲတော့ ကျနော်တို့ database ထဲမှာ စာအုပ်ပေါင်း 100 ရှိတယ်ဆိုရင် စုစုပေါင်း 101 ကြိမ် query ဆွဲရသလိုဖြစ်နေတာပါ။ ဒါကိုပဲ N + 1 Query Problem လိုခေါ်ကြတာပါ။&lt;/p&gt;
&lt;h2&gt;
  
  
  ဘယ်လိုရှောင်ရှားမလဲ?
&lt;/h2&gt;

&lt;p&gt;ဒါကို ရှောင်ရှားဖို့ဆိုရင်တော့ Laravel မှာဆိုရင်တော့တော်တော်လေးလွယ်ပါတယ်။&lt;br&gt;
Laravel မှာတော့ ဒါကို ရှောင်ရှားဖို့အတွက် Eager Loading ကိုအသုံးပြု့ပါတယ်။&lt;br&gt;
အထက်ပါဥပမာကို Eager Loading နဲ့ပြန်ရေးကြည့်မယ်ဆိုရင် ...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;use App\Models\Book;

$books = Book::with('author')-&amp;gt;get();

foreach ($books as $book) {
    echo $book-&amp;gt;author-&amp;gt;name;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ဒီနေရာမှာ &lt;code&gt;with('author')&lt;/code&gt; ဆိုတဲ့အပိုင်းလေးက Eager Loading ကိုအသုံးပြု့ထားတဲအပိုင်းပါ။ ဆိုလိုတာကတော့ စာအုပ် information တွဲဆွဲယူရင်း author information တွေပါ တစ်ပါတည်းယူခဲတဲ့သဘောပါ။ အဲဒီလို Eager Loading နဲရေးလိုက်တဲအတွက်ကြောင့် Query 2 ကြိမ်ပဲအလုပ်လုပ်ပါတော့တယ်။&lt;/p&gt;

&lt;p&gt;ပထမတစ်ခု့က စာအုပ်စာရင်းဆွဲထုတ်ဖို့&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;select * from books
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ဒုတိယတစ်ခု့က သက်ဆိုင်ရာ စာရေးသူအားလုံးကို ထုတ်ဖို့&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;select * from authors where id in (1, 2, 3, 4, 5, ...)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;အထက်ပါနည်းနဲ့ Eager Loading ကိုသုံးပြီး N + 1 ပြသာနာကိုရှောင်ရှားကြပါတယ်။&lt;br&gt;
ဒီပြသာနာက Laravel မှာတင်မဟုတ်ပဲ တစ်ခြား frameworks, languages, library  မှာလည်းရှိနေမှာပါပဲ။ အထူးဂရုပြု့ရှောင်းရှားကြရမှာဖြစ်ပါတယ်။&lt;/p&gt;

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

&lt;p&gt;Laravel မှာ Eager Loading နဲ့ N + 1 ပြသာနာ အကြောင်အသေးစိတ် ဖတ်ချင်ရင်တော့ &lt;a href="https://laravel.com/docs/8.x/eloquent-relationships#eager-loading"&gt;ဒီမှာ&lt;/a&gt; ရပါတယ်။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ko-fi.com/ayarhlaine"&gt;&lt;br&gt;
&lt;img height="12" width="30%" src="https://res.cloudinary.com/practicaldev/image/fetch/s--s81e3UpZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--KS7c42cU--/c_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880/https://cdn.ko-fi.com/cdn/kofi1.png%253Fv%253D2" alt="Buy Me a Coffee at ko-fi.com"&gt;&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;အားလုံးကိုကျေးဇူးတင်ပါတယ်။&lt;br&gt;
ဆက်လက်ကြိုးစားပါအုံးမည်။&lt;/p&gt;

&lt;p&gt;A.Y.H&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>php</category>
    </item>
    <item>
      <title>Components and Props တို့ရဲ့ အခြေခံသဘောတရားများ</title>
      <dc:creator>Ayar Hlaine</dc:creator>
      <pubDate>Sat, 02 Jan 2021 19:32:10 +0000</pubDate>
      <link>https://dev.to/ayarhlaine/components-and-props-4mk7</link>
      <guid>https://dev.to/ayarhlaine/components-and-props-4mk7</guid>
      <description>&lt;h2&gt;
  
  
  What is component in react?
&lt;/h2&gt;

&lt;p&gt;Component တွေဆိုတာက basically ပြောရမယ်ဆိုရင်တော့ JavaScript ရဲ့ pure functions တွေဖြစ်ပြီးတော့ inputs (function ရဲ့ parameter အနေနဲ့) တွေလက်ခံပြီး ကျွန်တော်တို့ အခု UI မှာ မြင်နေကြရတဲ့ React Elements တိုကို return အနေနဲ့ပြန်ပေးပါတယ်။&lt;/p&gt;

&lt;h2&gt;
  
  
  Component Naming
&lt;/h2&gt;

&lt;p&gt;React components တွေကို နာမည်ပေးတဲ့နေရာမှာ အထူးသတိ့ပြု့ရမည့်အချက်တစ်ချက်ရှိပါတယ်။ အဲဒါကတော့ Component name တွေဟာ အမြဲတမ်း capital letter ဖြစ်ရပါမယ်။&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Always start component names with a capital letter.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;ဘာဖြစ်လို့လဲဆိုတော့ React က lower case components တွေကို &lt;strong&gt;DOM tags&lt;/strong&gt; တွေအဖြစ်ယူဆပြီး၊ upper case components တွေကို သာ &lt;strong&gt;Custom components&lt;/strong&gt; တွေအဖြစ်သက်မှတ်ပေးလို့ပါ။&lt;br&gt;
အသေးစိတ်ဖတ်ချင်ရင်တော့ &lt;a href="https://reactjs.org/docs/jsx-in-depth.html#user-defined-components-must-be-capitalized"&gt;ဒီလင့်&lt;/a&gt; မှာသွားဖတ်လို့ရပါတယ်။&lt;/p&gt;
&lt;h2&gt;
  
  
  Basic understanding of component
&lt;/h2&gt;

&lt;p&gt;React ဟာဆိုရင် component တွေကိုပေါင်းစပ်ပီး application, websites စတာတွေကို ဖန်တီးယူလို့ရတဲ့နည်းပညာဖြစ်ပါတယ်။ ဘာဖြစ်လို့ component တွေခွဲနေရတာလဲ? ဒီတိုင်းလဲရေးရင်ရတာပဲလေ ဆိုပြီးမေးကြပါလိမ့်မယ်။ သူ့မှာ ခိုင်လုံတဲ့အကြောင်းပြချက်တွေရှိပါတယ်။&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Reusable Pieces&lt;/li&gt;
&lt;li&gt;Isolation&lt;/li&gt;
&lt;li&gt;Split UI into independent&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;ဒါတွေကိုနားလည်ဖို့ ဥပမာတစ်ခုနဲ့ ရှင်းပြမှ ရပါလိမ့်မယ်။&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { Component } from 'react';
export default class App extends Component {
  render() {
    return (
      &amp;lt;div className="app"&amp;gt;
        &amp;lt;div className="student__list"&amp;gt;
          &amp;lt;div className="student__item"&amp;gt;
            &amp;lt;h1&amp;gt;Name: Student A&amp;lt;/h1&amp;gt;
            &amp;lt;p&amp;gt;Score: 100&amp;lt;/p&amp;gt;
          &amp;lt;/div&amp;gt;
          &amp;lt;div className="student__item"&amp;gt;
            &amp;lt;h1&amp;gt;Name: Student B&amp;lt;/h1&amp;gt;
            &amp;lt;p&amp;gt;Score: 90&amp;lt;/p&amp;gt;
          &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
    )
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;အထက်ပါ ဥပမာဟာဆိုရင် component ကို မသုံးပဲ အကုန်လုံးကို တစ်နေရာထဲမှာ စုရေးထားတဲ့ပုံစံဖြစ်ပါတယ်။ ဒီနေရာမှာ တစ်ခုသတိ့ထားမိ့ကြမှာပါ။ &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Np5tWasR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rp6qa80t4lnbdkm2mu4t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Np5tWasR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rp6qa80t4lnbdkm2mu4t.png" alt="Screen Shot 2021-01-03 at 12.56.27 AM"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;အနီပြထားတဲ အပိုင်းနေရာတွေဟာ code တွေမလိုအပ်ပဲနဲ့ ထပ်နေတယ်ဆိုတာကိုပါ။ အခုပြထားတဲ ဥပမာဟာ data နည်းနေလို့မသိ့သာပေမဲ့ Student အယောက်တစ်ရာလောက်ရှိတဲ့အချိန်မှာ မလိုအပ်ပဲ code တွေရှုပ်ထွေးနေပါလိမ့်မယ်။ အဲတော့ ပြန်ပြီးအသုံးပြု့လို့ရမယ် အပိုင်းတွေကို component အနေနဲ့ ခွဲထုတ်ဖို့လိုပါတယ်။&lt;/p&gt;

&lt;h3&gt;
  
  
  Student Component
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Student extends Component {
  render() {
    return (
      &amp;lt;div className="student__item"&amp;gt;
          &amp;lt;h1&amp;gt;Name: {this.props.name}&amp;lt;/h1&amp;gt;
          &amp;lt;p&amp;gt;Score: {this.props.score}&amp;lt;/p&amp;gt;
      &amp;lt;/div&amp;gt;
    )
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  StudentList Component
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class StudentList extends Component {
  render() {
    const studentList = this.props.students
    .map(({ name, score }) =&amp;gt;
      &amp;lt;Student name={name} score={score}/&amp;gt;
    )
    return (
      &amp;lt;div className="student__list"&amp;gt;
        {studentList}
      &amp;lt;/div&amp;gt;
    )
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  App.js
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { Component } from 'react';
export default class App extends Component {
  render() {
    const students = [
      { name: 'Student A', score: 100 },
      { name: 'Student B', score: 90 }
    ]
    return (
      &amp;lt;div className="app"&amp;gt;
        &amp;lt;StudentList students={students}/&amp;gt;
      &amp;lt;/div&amp;gt;
    )
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;အခုလိုမျိုး ခွဲထုတ်လိုက်တဲ့အတွက်&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ရေးထားတဲ့ code ကို နောက်လူဖတ်ရတာပိုလွယ်သွားတယ် (Readability)&lt;/li&gt;
&lt;li&gt;Code Base က သူနေရာနဲ့သူရှိနေတော့ (Maintainability)&lt;/li&gt;
&lt;li&gt;One Component =&amp;gt; One Responsibility ဖြစ်တဲ့အတွက် (Solid Principle ထဲက တစ်ခုကိုလိုက်နာပြီးသားလည်းဖြစ်ပါတယ်)&lt;/li&gt;
&lt;li&gt;Unit Testing လုပ်ဖို့အတွက်လဲပိုပြီး အဆင်ပြေစေပါတယ်။ &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Two types of React Components
&lt;/h2&gt;

&lt;p&gt;React components တွေကို basically အရ အောက်ပါနှစ်မျိုးနဲ့ ခွဲခြားနိုင်ပါတယ်။&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Function Component&lt;/li&gt;
&lt;li&gt;Class Component&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Function Component
&lt;/h3&gt;

&lt;p&gt;ပထမရေးထုံး&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function Student(props) {
  return (
     &amp;lt;div className="student__item"&amp;gt;
       &amp;lt;h1&amp;gt;Name: {props.name}&amp;lt;/h1&amp;gt;
       &amp;lt;p&amp;gt;Score: {props.score}&amp;lt;/p&amp;gt;
     &amp;lt;/div&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ဒုတိယရေးထုံး&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const Student = (props) =&amp;gt; {
  return (
    &amp;lt;div className="student__item"&amp;gt;
      &amp;lt;h1&amp;gt;Name: {props.name}&amp;lt;/h1&amp;gt;
      &amp;lt;p&amp;gt;Score: {props.score}&amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Function component တွေက တော့ရိုးရှင်းပါတယ်။ Pure Javascript function တွေဖြစ်ကြပြီး၊ သူ့မှာ single &lt;code&gt;porps&lt;/code&gt; object တစ်ခုပါပါတယ်။ ကိုယ် UI မှာမြင်ချင်တဲ့ element တွေကို return အနေနဲ့ ပြန်ပေးရမှာပဲဖြစ်ပါတယ်။&lt;br&gt;
ဒီနေရာမှာ &lt;code&gt;props&lt;/code&gt; ဟာဆိုရင် &lt;code&gt;{ name: 'Student A', score: 100 }&lt;/code&gt; ဆိုတဲ့ javascript object တစ်ခုဖြစ်တဲ့အတွက် student's name ကိုလိုချင်ရင် &lt;code&gt;props.name&lt;/code&gt; လို့သုံးပြီးတော့၊ student's score ကိုလိုချင်တဲ့အခါ &lt;code&gt;props.score&lt;/code&gt; လို့သုံးသွားတာဖြစ်ပါတယ်။&lt;/p&gt;
&lt;h3&gt;
  
  
  Class Component
&lt;/h3&gt;

&lt;p&gt;Class component တွေကတော့ &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes"&gt;ES6 class&lt;/a&gt; တွေကို အသုံးပြု့ပြီးရေးသားတာပဲဖြစ်ပါတယ်။&lt;br&gt;
ရေးထုံးကတော့&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Student extends React.Component {
  render() {
    return (
      &amp;lt;div className="student__item"&amp;gt;
          &amp;lt;h1&amp;gt;Name: {this.props.name}&amp;lt;/h1&amp;gt;
          &amp;lt;p&amp;gt;Score: {this.props.score}&amp;lt;/p&amp;gt;
      &amp;lt;/div&amp;gt;
    )
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes"&gt;ES6 class&lt;/a&gt; တွေသုံးပြီး react component တွေကို ဖန်တီးတဲ့နေရာမှာ props ဟာဆိုရင်တော့ class ရဲ့ properties အနေနဲ့ရှိနေတာဖြစ်တဲ့အတွက် &lt;code&gt;this.props.name&lt;/code&gt;, &lt;code&gt;this.props.score&lt;/code&gt; ဆိုပီးသုံးသွားတာဖြစ်ပါတယ်။&lt;/p&gt;

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

&lt;p&gt;React component ကို basically နားလည်းချင်ရင်တော့ &lt;a href="https://reactjs.org/docs/components-and-props.html"&gt;ဒီမှာ&lt;/a&gt; သွားဖတ်လို့ရပါတယ်။&lt;br&gt;
ES6 class features တွေကိုနားလည်းချင်ရင်တော့ &lt;a href="http://es6-features.org"&gt;ဒီမှာ&lt;/a&gt; သွားဖတ်လို့ရပါတယ်။&lt;br&gt;
React component ရဲ့ life circle methods တွေဖတ်ချင်တယ်ဆိုရင်တော့ &lt;a href="https://reactjs.org/docs/react-component.html"&gt;ဒီမှာ&lt;/a&gt; သွားဖတ်လို့ရပါတယ်။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ko-fi.com/ayarhlaine"&gt;&lt;br&gt;
&lt;img height="12" width="30%" src="https://res.cloudinary.com/practicaldev/image/fetch/s--s81e3UpZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--KS7c42cU--/c_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880/https://cdn.ko-fi.com/cdn/kofi1.png%253Fv%253D2" alt="Buy Me a Coffee at ko-fi.com"&gt;&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;အားလုံးကိုကျေးဇူးတင်ပါတယ်။&lt;br&gt;
ဆက်လက်ကြိုးစားပါအုံးမည်။&lt;/p&gt;

</description>
    </item>
    <item>
      <title>React App တစ်ခုကို ၅ မိနစ်အတွင်း ဘယ်လိုဖန်တီးမလဲ?</title>
      <dc:creator>Ayar Hlaine</dc:creator>
      <pubDate>Sun, 27 Dec 2020 06:14:46 +0000</pubDate>
      <link>https://dev.to/ayarhlaine/react-app-5bpi</link>
      <guid>https://dev.to/ayarhlaine/react-app-5bpi</guid>
      <description>&lt;h2&gt;
  
  
  Introduction to React
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;React&lt;/strong&gt; ဆိုတာ web-development အတွက်အထူးကောင်းမွန်တဲ့ front end, open-sourced javascript library တစ်ခုဖြစ်ပါတယ်။ 2013 May လမှာ Public Release လုပ်ခဲ့ပီးတော့ လက်ရှိအချိန်မှာတော့ Facebook Community ကနေ maintain လုပ်ထားပါတယ်။ အစပိုင်းမှာ သိပ်အသုံးမပြု့ခဲ့ကြပေမဲ့ ယခုနောက်ပိုင်းမှာတော့ တစ်ဖြည်းဖြည်း ရေးပန်းစားလာခဲ့ပြီး အခုအချိန်မှာတော့ UI အတွက် အကောင်းဆုံးနဲ့ Performance အကောင်းဆုံး library တစ်ခုလို့ကိုဆိုနိုင်ပါတယ်။&lt;br&gt;
အခုအချိန်မှာ Company အကြီးတွေနဲ့ Big industries တွေမှာပါ &lt;strong&gt;React&lt;/strong&gt; ကိုအသုံးပြုနေကြတဲ့အပြင် အလုပ်အကိုင်အခွင့်အလမ်းလည်း အထူးကောင်းမွန်နေတယ်။ &lt;br&gt;
&lt;strong&gt;React&lt;/strong&gt; ရဲ့ကောင်းတဲ့အချက်တွေ လိုက်ပြေနေမယ် ဆိုရင်တော့ ပြောလိုကိုကုန်မှာမဟုတ်တော့ပါဘူး။&lt;/p&gt;

&lt;p&gt;ဒီနေတော့ &lt;strong&gt;React Application&lt;/strong&gt; တစ်ခုကို ၅မိနစ်အတွင်းဘယ်လိုတည်ဆောက်ကြမလဲဆိုတာပြောပြသွားမှာ ဖြစ်ပါတယ်။&lt;/p&gt;
&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;React Application&lt;/strong&gt; တစ်ခုစပြီးတည်ဆောက်တော့မယ်ဆို သူနဲ့ဆက်ဆက်တဲ့ requirements တွေနဲ့ tech အတွေအရင်ပြောရမှာပါ။&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://nodejs.org/en/download/"&gt;NodeJS&lt;/a&gt; ကို install လုပ်ထားဖို့လိုပါမယ်။ &lt;a href="https://nodejs.org/en/download/"&gt;NodeJS&lt;/a&gt; ဆိုတာက java script runtime environment တစ်ခုပါ။ ဆိုလိုတာက java script ကို web-browser အပြင်တစ်ခြားနေရာ (ဥပမာ backend service) တွေမှာအသုံးပြု့လို့ရအောင် ဖန်းတီးထားတဲ့နည်းပညာဖြစ်ပါတယ်။ &lt;a href="https://nodejs.org/en/download/"&gt;ဒီလင့်&lt;/a&gt; မှာ install သွားလုပ်လို့ရပါတယ်။&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.npmjs.com/"&gt;NPM&lt;/a&gt; ဆိုတာ Node Package Manager ဖြစ်ပြီး application တွေ development လုပ်တဲ့အချိန်မှာ လိုအပ်တဲ့ library တွေ၊ Package တွေကို စုစည်းထားပေးတဲ့ source ကြီးပဲဖြစ်ပါတယ်။ Node installation ပြီးတဲ့အခါ npm command ကို စတင်သုံးနိုင်ပါပြီ။ သပ်သပ်ထပ်ပြီး install လုပ်ပေးဖို့ မလိုပါဘူး။&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Check Node &amp;amp; NPM versions
&lt;/h2&gt;

&lt;p&gt;အရင်ဆုံး မိမိ့စက်ထဲမှာ &lt;a href="https://nodejs.org/en/download/"&gt;NodeJS&lt;/a&gt; နဲ့ &lt;a href="https://www.npmjs.com/"&gt;NPM&lt;/a&gt; versions တွေအရင်စစ်ကြည့်လို့ရပါတယ်။ စစ်ကြည့်ဖို့ဆိုရင်တော့ Window User အနေနဲ့ဆိုရင်တော့ &lt;strong&gt;Command Prompt&lt;/strong&gt;, Linux, Mac သမားတွေကတော့ &lt;strong&gt;Terminal&lt;/strong&gt; ကိုဖွင့်ပြီး အောက်ပါအတိုင်းစစ်ဆေးနိုင်ပါတယ်။&lt;/p&gt;
&lt;h4&gt;
  
  
  How to check Node version?
&lt;/h4&gt;



&lt;p&gt;&lt;code&gt;node -v&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aDho9Sb0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/a1y6lztnj5k1vaj11nj2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aDho9Sb0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/a1y6lztnj5k1vaj11nj2.png" alt="check-node-version"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  How to check NPM version?
&lt;/h4&gt;



&lt;p&gt;&lt;code&gt;npm -v&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XsEzvbZA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/xzglxsr66chd67uma0d1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XsEzvbZA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/xzglxsr66chd67uma0d1.png" alt="check-npm-version"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Started React App
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://webpack.js.org/"&gt;WebPack&lt;/a&gt; ကိုအသုံးပြု့ပြီး React Application တစ်ခုတည်ဆောက်ခြင်း။&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://reactjs.org/docs/add-react-to-a-website.html"&gt;&lt;code&gt;&amp;lt;script&lt;/code&gt; tag အတွင်းထည့်သွင်းရေးသားခြင်း&lt;/a&gt;။&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://create-react-app.dev/"&gt;Create React App&lt;/a&gt; ကိုအသုံးပြုပြီး React Application တစ်ခုတည်ဆောက်ခြင်း။
&lt;strong&gt;Note&lt;/strong&gt; တစ်ခြားနည်းလမ်းတွေလည်းရှိ့ပါသေးတယ်။ အသေးစိတ်ဖတ်ခြင်ရင်တော့ &lt;a href="https://reactjs.org/docs/create-a-new-react-app.html"&gt;ဒီလင့်&lt;/a&gt; မှာသွားရောက်ဖတ်ရှု့နိုင်ကြပါတယ်။&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;အထက်ပါသုံးခု့ထဲကမှ &lt;a href="https://create-react-app.dev/"&gt;Create React App&lt;/a&gt; ကိုအသုံးပြုပြီး React Application တစ်ခုတည်ဆောက်ခြင်း အကြောင်းပြောပြသွားမှာဖြစ်ပါတယ်။&lt;/p&gt;

&lt;h2&gt;
  
  
  Intro to Create React App
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://create-react-app.dev/"&gt;Create React App&lt;/a&gt; ဆိုတာက react ကိုစတင်လေ့လာသူတွေနဲ့ single-page-application(SPA) လုပ်ချင်သူတွေအတွက်အသင့်တော်ဆုံးလို့ပြောလို့ရပါတယ်။ ဘာဖြစ်လို့လဲဆိုတော့ သူမှာလိုအပ်တဲ့ configuration, development server, testing setup အစရှိတာတွေအကုန်လုံးပါပီးသား အသင့်သုံးရုံပါပဲ။&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating React App with Create React App
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Older Node JS &amp;amp; NPM versions (Node &amp;lt; 8.10 and npm &amp;lt; 5.6)
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;create-react-app&lt;/code&gt; package ကို globally install အရင်လုပ်ပါ။&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install -g create-react-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ပြီးမှ &lt;code&gt;create-react-app&lt;/code&gt; ကိုသုံးပြီး react application တည်ဆောက်ပါ။&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;create-react-app your-application-name
cd your-application-name
npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Newer Node JS &amp;amp; NPM versions (Node &amp;gt;= 8.10 and npm &amp;gt;= 5.6)
&lt;/h4&gt;

&lt;p&gt;Node version ကမြင့်တယ်ဆိုရင်တော့ တစ်ကြောင်းတည်းနဲ့ အကုန်ပြီးအောက်တည်ဆောက်လို့ရပါတယ်။&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx create-react-app your-application-name
cd your-application-name
npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;npm start&lt;/code&gt; ဆိုပြီး development server စပြီပြီးဆိုတာနဲ့ Browser မှာ &lt;a href="http://localhost:3000"&gt;http://localhost:3000&lt;/a&gt; မှာ အောက်ပါအတိုင်း &lt;a href="https://create-react-app.dev/"&gt;Create React App&lt;/a&gt; ရဲ့ Welcome Page ကိုမြင်ရမှာပဲဖြစ်ပါတယ်။&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zogA92fN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/qfss6atgqxt938et3607.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zogA92fN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/qfss6atgqxt938et3607.png" alt="react-app-running"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ko-fi.com/ayarhlaine"&gt;&lt;br&gt;
&lt;img height="12" width="30%" src="https://res.cloudinary.com/practicaldev/image/fetch/s--s81e3UpZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--KS7c42cU--/c_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880/https://cdn.ko-fi.com/cdn/kofi1.png%253Fv%253D2" alt="Buy Me a Coffee at ko-fi.com"&gt;&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;အားလုံးကိုကျေးဇူးတင်ပါတယ်။&lt;br&gt;
ဆက်လက်ကြိုးစားပါအုံးမည်။&lt;/p&gt;

</description>
      <category>react</category>
    </item>
  </channel>
</rss>
