Node.js
👉 Node.js ကို အသုံးပြုဖို့ အတွက် JavaScript ကို နားလည် ကျွမ်းကျင်ထားဖို့လိုပါတယ်၊
👉 ဒီ့အတွက် Node.js သင်တန်းမှာ JavaScript နဲ့ Develop လုပ်လို့ရအောင်ရော TypeScript ကို နားလည် ကျွမ်း ကျင်သွားအောင်ပါ အခြေခံကနေ စပြီး သင်ကြားပေးသွားမှာဖြစ်ပါတယ်၊
👉 JavaScript နဲ့ TypeScript ကို နားလည် ကျွမ်းကျင်သွားရင် JavaScript မှာ ကွဲထွက်သွားတဲ့ Node.js Concepts တွေကို သင်ကြားပေးသွားမှာဖြစ်ပါတယ်၊
👉 Node.js Concepts တွေ ပြီးရင် Client Server Communication အကြောင်း ကောင်းကောင်းနားလည် သွားမှာ ဖြစ်သလို
👉 Request, Request Params နှင့် Response Type အမျိုးမျိုးကို လဲ နားလည်အောင် သင်ကြားပေးမှာ ဖြစ်ပါတယ်၊
👉 Node.js Concepts တွေကို နားလည်သွားပြီးရင် ExpressJS ကို အသုံးပြုပြီး Express App ကို တည်ဆောက် ခြင်းအား အခြေခံကနေ စ၍ လေ့လာသွားရမှာ ဖြစ်ပါတယ်၊
👉 Express App ကနေ HTML Page Serving လုပ်ခြင်း Static Files တွေ Serving လုပ်ခြင်း၊ Dynamic Web Page တွေ Rendering လုပ်ခြင်း၊ JSON Data Serving လုပ်ခြင်းတို့ကို အဆင့်ဆင့် သင်ကြား ပေးသွားမှာဖြစ်ပါတယ်၊
ExpressJS
👉 ExpressJS အခြခံကို နားလည်သွားရင် Express Flow ဖြစ်တဲ့ Route, Controller, Model , Response တို့ အလုပ်လုပ်ပုံကို နားလည်အောင် တည်ဆောက်သင်ကြား ပေးသွားမှာဖြစ်ပါတယ်၊
👉 Route တွေကို Guarding လုပ်ဖို့ Middleware အမျိုးမျိုး အသုံးပြုပုံ၊ Input Data တွေကို Validate လုပ်ပုံ၊
👉 Security ပိုင်းအတွက် Token Base Authorization စစ်ဆေးပုံ၊
👉 User အမျိုးမျိုးအတွက် Role Base Authorization စစ်ဆေးပုံတို့ကို လေ့လာသွားရမှာဖြစ်ပါတယ်၊
👉 Server Side အတွက် Node.js အသုံး ပြု၍ Develop လုပ်သွားမည် ဖြစ်ပြီး Node.js, ExpressJS, MongoDB တို့နှင့် ပါတ်သတ်သမျှ သင်ခန်းစာအားလုံး ပါဝင်သွားမည်ဖြစ်သည်၊
👉 အခြေခံမှစ၍ လက်တွေ့ Sample Projects များ အဆင့်ဆင့် ပါဝင်မည်၊
👉 Main Projects အနေနှင့် သတင်းဝက်ဆိုဒ် ( Media Site ) နှင့် Ecommerce ဝက်ဆိုဒ်တို့ ကို အပြည့်အစုံ အစအဆုံး development လုပ်ခြင်းအား အဆင့်ဆင့် သင်ကြားပေးသွားမည်၊
👉 Dynamic Page Rendering လုပ်ဖို့လိုအပ်သည့် View Engine အကြောင်း လေ့လာလိုသူများအတွက်လဲ မတူညီတဲ့ View Engine အမျိုးမျိုးအားအသုံးပြု၍ HTML Page တွေ မှာ Compile Data များ ထည့်သွင်း၍ RealTime ပြန်တည်ဆောက်ပြီး Response ပေးပုံကိုလဲလေ့လာသွားရမှာ ဖြစ်ပါတယ်၊
👉 Node.js နှင့် ပါတ်သတ်သည့် Project တိုင်းတွင် ပြန်လည် အသုံးပြုရသည့် Common Codes များကို Library များအဖြစ် အသုံးပြု၍ နောက်ပိုင်း Project များတွင် အလွယ်တကူ ပြန်လည် သုံးနိုင်ရန် Custom Modules များ တည်ဆောက်ခြင်းကိုလဲလေ့လာသွားရမှာ ဖြစ်ပါတယ်၊
Database
👉 Node Package Manager ကို အသုံးပြု၍ Project အတွက် လိုအပ်သည့် Packages များကို ရယူအသုံးပြုပုံကို လဲလေ့လာသွားရမှာဖြစ်သလို Global Object တွေအကြောင်း Request Data မှာ Custom Data များ ထည့် သွင်း၍ Route ကနေ Controller သို့ Data Passing လုပ်ပုံ အကြောင်းတွေကိုလဲ သင်ကြားပေးသွားမှာ ဖြစ်ပါတယ်၊
👉 File Handling အတွက် Node.js ကနေ Text ဖိုင် JSON ဖိုင်နှင့် File Type အမျိုးမျိုးတို့ကို ဖန်တီးခြင်း , ဖတ်ခြင်း တို့ကိုလဲ လေ့လာသွားရမှာဖြစ်ပါတယ်, Image File ဖတ်ခြင်း Response ပေးခြင်း သိမ်းခြင်း တို့ကိုလဲ လေ့လာသွားရမှာဖြစ်ပါတယ်၊
👉 MongoDB သင်ခန်းစာတွေ Database Schema သတ်မှတ်ခြင်း၊ Data Type အမျိုးမျိုး သတ်မှတ်ခြင်း၊ Mongo Slow Train ပြဿနာကို ဖြေရှင်းဖို့ Indexes များ ဖန်တီး၍ Query မြန်အောင် ဖန်တီးခြင်း၊ Single Query, Multiple Query, Aggregation Operations များအားလုံးကို သင်ကြားသွားမှာ ဖြစ်သလို လက်တွေ့ အသုံးပြုပြသွားမှာဖြစ်ပါတယ်၊ ထို့ပြင် လက်တွေ့ Project များအတွင် အသုံးများသည့် MongoDB အတွက် ODM (Object Data Modeling) တစ်ခုဖြစ်သည့် mongoose ကိုလဲ အသေးစိတ် အပြည့်အစုံ သင်ကြားပေးသွားမှာဖြစ်ပါတယ်၊ တစ်ခုထပ်ပိုတဲ့ Collelctions များ ကို Join ခြင်းလို လုပ်ဆောင်မှုမျိုး mongoose နှင့် Indexes ဖန်တီးပုံ နှင့် ရှိသမျှ Query Techniques အားလုံးကိုလဲ လေ့လာသွား ရမှာဖြစ်ပါတယ်၊
👉 Express App တည်ဆောက်ရာမှာ Http အတွက် လွယ်ကူပေမယ့် HTTPS အတွက် သီးသန့် Setup လုပ်ပြီးရေးသား ရတဲ့ အချက်တွေကိုလဲ လေ့လာသွားရမှာ ဖြစ်ပါတယ်၊ HTTPS အတွက် Server မှာ Nginx Install လုပ်၍ Certificate ထည့်သွင်းခြင်း၊ Port အလိုက် Base Routes များ Nginx Config File တွင် သတ်မှတ်ခြင်း၊ Static IP ရယူ၍ Domain နှင့် ချိတ်ဆက်ခြင်း၊ certbot အသုံးပြု၍ Free Certificate ထည့်သွင်းခြင်း ၊ Server Setup လုပ်တဲ့အခါ SSH Client အား အသုံးပြုခြင်း အားလုံးပါဝင်ပါတယ်၊
Teaching Techniques
👉 အဆင့်မြင့် Software Company များတွင် အလုပ်လုပ်သည့်အခါ လိုက်နာလုပ်ဆောင်သည့် နည်းလမ်းများကိုပါနားလည် သွားစေရန် အတွက် Project တစ်ခု စတည်သည့်အခါ Code မရေးခင် Sinior Developer များမှ Project မစခင် Project Manager အနေနှင့် လုပ်ဆောင်ရသည့် Project Architecture နှင့် Design အား ရေးဆွဲခြင်း, Database Design ရေးဆွဲခြင်း၊ Code Flow အား Project Manager နှင့် Senior Developer တို့ တွဲ၍ Code Flow Layout တည်ဆောက်ခြင်း၊ UML ( Unified Modeling Language ) အားအသုံး ပြု၍ Class Based Dependencies များတည်ဆောက်၍ Project Overview ဖန်တီးခြင်းတွေကို အဆင့်ဆင့် လိုအပ်ချက်အလိုက် ရှင်းလင်း တည်ဆောက်ပြပြီးမှ Code ပိုင်းဆိုင်ရာကို စတင် ရေးဆွဲမှာ ဖြစ်ပါတယ်၊
👉 သင်တန်းသား များအနေနှင့် သင်တန်းပြီးပါက မည်သည့် နိုင်ငံ မည်သည့် Company မှာ အလုပ် ဝင်လုပ်သည်ဖြစ် Project Structure နှင့် Project Flow ကို ကောင်းကောင်း နားလည်ထားပြီး Project တိုင်းကို စိတ်ပင်ပန်းမှု မရှိပဲ သက်တောင့် သက်သာ ရေးဆွဲနိုင်မှာ ဖြစ်ပါတယ်၊
👉 Image Processing အတွက် Base64 Image Upload Data များကို Process လုပ်၍ Server မှာ သိမ်းခြင်း Single File သိမ်းခြင်း Multiple File သိမ်း ခြင်းတို့ အကြောင်းကို လေ့လာသွားရမှာဖြစ်ပါတယ်၊
👉 ပုံမှန် JSON, HTML , CSS , JavaScript တို့လို ဒေတာတွေသာလျှင်မဟုတ်ဘဲ Game Data များကို Loading မြန်စေအောင် ဖိုင်ဆိုဒ်ချုံ့ထားတဲ့ Gzip ဖိုင် Brotli ဖိုင်တို့ကိုပါ Response ပြန်ပေးတဲ့အခါ မှန်ကန်တဲ့ Response Header Type ကို အသုံးပြုပြီး ပြန်ပေးတတ်စေရန် အတွက်လဲ မတူညီတဲ့ Header Type အမျိုးမျိုး အကြောင်းကို သင်ကြားပေးသွားမှာ ဖြစ်ပါတယ်၊
Advanced Concepts
Node.js က Single Threaded ဘာသာရပ်ဖြစ်တဲ့အတွက် Server မှာ Virtual CPU ဘယ်နှစ်လုံး ရှိရှိ လုပ်ငန်းစဉ်အားလုံး အတွက် CPU တစ်လုံးထဲကို အသုံးပြုပြီး Calculation နဲ့ Data Processing ကို လုပ်ကိုင်သွား မှာ ဖြစ်ပါတယ်၊ ပုံမှန် Http/Https Requests တွေအတွက် CPU တစ်လုံးထဲ အလုပ်လုပ်ရုံနဲ့ Observer pattern သုံးပြီး None Blocking IO အနေနဲ့ အလုပ်လုပ်အောင် တည်ဆောက်ထားတဲ့ Node.js က ပြဿနာ မရှိအလုပ်လုပ်နိုင်ပါတယ်၊ ဒါပေမယ့် အချိန်တို အတွင်း သိန်း သန်း ချီတဲ့ Requests တွေကို လက်ခံနိုင်ဖို့အတွက် Server မှာ ရှိတဲ့ CPU အားလုံးကို သုံးပြီး Project ကို Run ထားနိုင်ရင် Concurent Requests တွေကို ပိုမို လျှင်မြန်စွာ လုပ်ကိုင်နိုင်မှာ ဖြစ်သလို အသုံးပြုသူ သန်း ပေါင်းများစွာကိုလဲ Stable ကျကျ Support ပေးနိုင်မှာ ဖြစ်ပါတယ်၊ ဒါ့ကြောင့် ပုံမှန် Http/Https Requests တွေအတွက် CPU အားလုံးမှာ အလုပ်လုပ်ဖို့ CPU Clustering လုပ်နိုင်ပုံကို သင်ကြားပေးပါတယ်၊ CPU Clustering လုပ်ရာတွင် Master Process နဲ့ Child Process တို့ Communicate လုပ်ပုံကိုလဲ သင်ကြားပေးသွားမှာ ဖြစ်ပါတယ်၊ PM2 Package Manager ကို အသုံးပြုပြီး Clustering လုပ်ပုံရော Multiple Project ကို Multiple CPU မှာ Clustering မလုပ်ပဲ Run ပုံကိုရော အားလုံး သင်ကြားပေးသွားမှာ ဖြစ်ပါတယ်၊
RealTime Messaging နဲ့ Push Notification တို့အတွက် Socket.io ကို အသုံး ပြုပြီး Realtime Chatting App တည်ဆောက်ပုံကို သင်ကြားပေးသွားမှာ ဖြစ်သလို Socket.io ရဲ့ Intervel Connection Limit ကို ကျော်ပြီး အလုပ်လုပ်နိုင်ဖို့အတွက် Low-Level Web Socket ကို အသုံးပြုပြီး Chatting App တည်ဆောက်ပုံကိုလဲ လေ့လာသွား ရမှာ ဖြစ်ပါတယ်၊
လုပ်ငန်းလိုအပ်ချက်ကြောင့် JavaScript ကို မသုံးပဲ TypeScript အသုံးပြုပြီး Node.js Project ကို တည်ဆောက် လို သူတွေအတွက် အဆင်ပြေအောင် TypeScript အသုံးပြု၍ Project တည်ဆောက်ပုံကိုပါ အဆင့်ဆင့် သင်ကြားပေး ထားပါတယ်၊
Node.js ကို သင်ကြားရာမှာ သင်ကြားပြီးသွားတဲ့ Concepts တွေကို နားလည်စေအောင်လို့ Sample Projects လေးတွေကို အဆင့်ဆင့် ပြုလုပ်ပြီး သင်ကြားပေးသွားမှာ ဖြစ်ပါတယ်၊ Sample Projects တွေက သင်ခဲ့ပြီးတဲ့ သင်ခန်းစာတွေကို သေချာ ကြေညက်အောင် ရော လက်တွေ့ အသုံးချနိုင်အောင်ရော ကူညီသွားမှာဖြစ်ပါတယ်၊ သင်ခဲ့ပြီးသားတွေကို လက်တွေ့ အသုံးချတဲ့ သဘောပါ၊ Sample Projects တွေကို နားလည်မှု သေချာ တတ်မြောက်ပြီလို့ သတ်မှတ် နိုင်မှာ ဖြစ်ပါတယ်၊ ဒါမှပဲ နောက်တစ်ဆင့်ကို ဆက်သွားရမှာပါ၊ အခု ကြေငြာမှာပါတဲ့ Sample Projects တွေက အကုန်မဟုတ်သေးပါဘူး၊ သင်ရိုးကို စီစဥ်ရာမှာ အပြောင်းအလဲ များစွာရှိတဲ့အတွက် အကုန်မထည့်ထားတာပါ၊ နောက်ပိုင်းထပ်ဖြည့်ဖို့လဲ ရှိပါတယ်၊ Main Project နှစ်ခု အနေနှင့် Media ( သတင်း ) App အတွက် Backend Server တည်ဆောက်ခြင်းနဲ့ E-Commerce Project အတွက် Backend Server တည်ဆောက်ပုံ ကို အသေးစိတ် အဆင့်ဆင့် Publish လုပ်နိုင်တဲ့ အဆင့်ထိ သင်ကြားပေးသွားမှာ ဖြစ်ပါတယ်၊