Dotfiles
ပရိုဂရမ်အများအပြားကို “dotfiles” ဟုခေါ်သော plain-text ဖိုင်များအသုံးပြု၍ ချိန်ညှိပြင်ဆင်ကြပါတယ် (ဖိုင်အမည်များသည် . ဖြင့် စတင်လေ့ရှိသောကြောင့် ဖြစ်သည်၊ ဥပမာ ~/.gitconfig၊ သို့မှသာ ယင်းတို့သည် ls ဖြင့် directory အတွင်းရှိ ဖိုင်များကို ကြည့်ရှုသည့်အခါ ပုံသေအားဖြင့် ကွယ်နေမည်ဖြစ်သည်)။
သင်အသုံးပြုသည့် tool အတော်များများတွင် အသေးစိတ် ချိန်ညှိနိုင်သော စက်တင် (setting) အမြောက်အမြား ပါဝင်လေ့ရှိသည်။ ထို့အပြင် tool များကို သီးသန့် ဘာသာစကားများဖြင့် စိတ်ကြိုက် ပြင်ဆင်လေ့ရှိကြသည်၊ ဥပမာ Vim အတွက် Vimscript သို့မဟုတ် shell အတွက် shell ၏ ကိုယ်ပိုင် ဘာသာစကား ဖြစ်သည်။
သင်၏ tool များကို သင်နှစ်သက်ရာ လုပ်ငန်းစဉ် (workflow) နှင့်အညီ စိတ်ကြိုက် ပြင်ဆင် (customize) ပြီး အံဝင်ခွင်ကျ ဖြစ်အောင် ညှိယူခြင်းက သင့်ကို ပိုမို အလုပ်တွင်ကျယ်စေပါလိမ့်မည်။ GitHub မှ အခြားသူတစ်ဦး၏ dotfile များကို ကူးယူ (clone) အသုံးပြုခြင်းထက် မိမိ၏ tool များကို မိမိကိုယ်တိုင် စိတ်ကြိုက် ပြင်ဆင်ရန် အချိန်ပေး ရင်းနှီးမြှုပ်နှံဖို့ ကျွန်ုပ်တို့ အကြံပြုလိုပါသည်။
သင့်ထံတွင် dotfile အချို့ တည်ဆောက်ထားပြီးဖြစ်နိုင်ပါသည်။ ရှာဖွေကြည့်ရှုနိုင်သည့် နေရာအချို့မှာ-
~/.bashrc~/.emacs~/.vim~/.gitconfig
ပရိုဂရမ်အချို့သည် ဖိုင်များကို သင်၏ home folder အောက်တွင် တိုက်ရိုက်မထားဘဲ ~/.config အောက်ရှိ folder တစ်ခုအတွင်း ထည့်သွင်းထားလေ့ရှိကြသည်။
Dotfile များသည် command line application များအတွက်သာ သီးသန့်မဟုတ်ပါ၊ ဥပမာအားဖြင့် MPV ဗီဒီယိုပလေယာကို ~/.config/mpv အောက်ရှိ ဖိုင်များကို ပြင်ဆင်ခြင်းဖြင့် စက်တင်ညှိနိုင်ပါသည်။
Tool များကို စိတ်ကြိုက် ပြင်ဆင်ရန် လေ့လာခြင်း (Learning to customize tools)
အွန်လိုင်း documentation များ သို့မဟုတ် man pages များကို ဖတ်ရှုခြင်းဖြင့် သင်၏ tool ၏ စက်တင်များအကြောင်း လေ့လာနိုင်ပါသည်။ အခြား ကောင်းမွန်သော နည်းလမ်းတစ်ခုမှာ အတိအကျ ပရိုဂရမ်များအကြောင်း ရေးသားထားသည့် ဘလော့ဂ်ဆောင်းပါးများကို အင်တာနက်တွင် ရှာဖွေခြင်း ဖြစ်ပြီး ယင်းတို့၌ စာရေးသူများ၏ နှစ်သက်ရာ စိတ်ကြိုက်ပြင်ဆင်မှုများအကြောင်း ရေးသားထားကြသည်။ စိတ်ကြိုက်ပြင်ဆင်မှုများအကြောင်း လေ့လာရန် အခြား နည်းလမ်းတစ်ခုမှာ အခြားသူများ၏ dotfile များကို ဝင်ရောက်ကြည့်ရှုခြင်း ဖြစ်သည်- GitHub တွင် dotfiles repositories အမြောက်အမြားကို ရှာဖွေတွေ့ရှိနိုင်ပါသည် — လူကြိုက်အများဆုံး repository ကို ဒီမှာ ကြည့်ရှုပါ (စက်တင်များကို မျက်စိမှိတ် အကန်းလိုက် မကူးယူရန်တော့ ကျွန်ုပ်တို့ အကြံပြုလိုပါသည်)။
စနစ်တကျ ဖွဲ့စည်း စီမံခြင်း (Organization)
သင်၏ dotfile များကို မည်သို့ စနစ်တကျ ဖွဲ့စည်းထားသင့်သနည်း။ ယင်းတို့ကို သီးသန့် folder တစ်ခုအတွင်း ထည့်သွင်းထားပြီး၊ version control အောက်တွင် ထားရှိကာ၊ script တစ်ခုအသုံးပြု၍ သက်ဆိုင်ရာ နေရာများသို့ symlink ချိတ်ဆက်ထားသင့်ပါသည်။ ဤသို့ ပြုလုပ်ခြင်း၏ အကျိုးကျေးဇူးများမှာ-
- လွယ်ကူစွာ တပ်ဆင်နိုင်ခြင်း (Easy installation): စက်အသစ်တစ်လုံးသို့ ဝင်ရောက်အသုံးပြုသည့်အခါ သင်၏ စိတ်ကြိုက်ပြင်ဆင်မှုများကို အသုံးပြုနိုင်ရန် မိနစ်ပိုင်းမျှသာ ကြာမြင့်မည် ဖြစ်သည်
- နေရာမရွေး အသုံးပြုနိုင်ခြင်း (Portability): သင်၏ tool များသည် ဘယ်နေရာမှာမဆို ပုံစံတူအတိုင်း အလုပ်လုပ်ဆောင်မည် ဖြစ်သည်
- ဟန်ချက်ညီ ပေါင်းစပ်နိုင်ခြင်း (Synchronization): သင်၏ dotfile များကို မည်သည့်နေရာတွင်မဆို update ပြုလုပ်နိုင်ပြီး အားလုံးကို ဟန်ချက်ညီညီ ထိန်းသိမ်းထားနိုင်သည်
- အပြောင်းအလဲများကို စောင့်ကြည့်မှတ်တမ်းတင်နိုင်ခြင်း (Change tracking): သင်၏ Programmer သက်တမ်းတစ်ခုလုံးတွင် dotfile များကို ထိန်းသိမ်းသွားရဖွယ် ရှိသဖြင့်၊ ကာလရှည် စီမံကိန်းများအတွက် version history ရှိထားခြင်းသည် အလွန်ကောင်းမွန်ပါသည်
cd ~/src
mkdir dotfiles
cd dotfiles
git init
touch bashrc
# create a bashrc with some settings, e.g.:
# PS1='\w > '
touch install
chmod +x install
# insert the following into the install script:
# #!/usr/bin/env bash
# BASEDIR=$(dirname $0)
# cd $BASEDIR
#
# ln -s ${PWD}/bashrc ~/.bashrc
git add bashrc install
git commit -m 'Initial commit'
အဆင့်မြင့် ခေါင်းစဉ်များ (Advanced topics)
စက်အလိုက် သီးသန့် စိတ်ကြိုက်ပြင်ဆင်ခြင်းများ (Machine-specific customizations)
အများအားဖြင့် စက်အမျိုးမျိုးတွင် ပုံစံတူ configuration ကိုသာ အသုံးပြုလိုကြသော်လည်း၊ အချို့အချိန်များတွင် သီးခြား စက်တစ်ခုအတွက် အနည်းငယ် ကွဲပြားမှု (delta) ကို လိုချင်နိုင်ပါသည်။ ဤအခြေအနေကို ဖြေရှင်းနိုင်မည့် နည်းလမ်းအချို့မှာ အောက်ပါအတိုင်း ဖြစ်သည်-
စက်အလိုက် Branch တစ်ခုစီ ခွဲထားခြင်း (Branch per machine)
စက်တစ်လုံးစီအတွက် branch တစ်ခုစီ ထိန်းသိမ်းရန် version control ကို အသုံးပြုပါ။ ဤနည်းလမ်းသည် ယုတ္တိဗေဒအရ ရှင်းလင်းတိုက်ရိုက်သော်လည်း အနည်းငယ် ဝန်လေး (heavyweight) စေနိုင်ပါသည်။
If statement များ အသုံးပြုခြင်း (If statements)
Configuration ဖိုင်က ထောက်ပံ့ပေးပါက စက်အလိုက် သီးသန့် စိတ်ကြိုက်ပြင်ဆင်မှုများ ထည့်သွင်းရန် if-statement နှင့် ညီမျှသော နည်းလမ်းကို အသုံးပြုပါ။ ဥပမာအားဖြင့် သင်၏ shell တွင် အောက်ပါကဲ့သို့ ရေးသားနိုင်သည်-
if [[ "$(uname)" == "Linux" ]]; then {do_something else}; fi
# Darwin is the architecture name for macOS systems
if [[ "$(uname)" == "Darwin" ]]; then {do_something}; fi
# You can also make it machine specific
if [[ "$(hostname)" == "myServer" ]]; then {do_something}; fi
Include များကို အသုံးပြုခြင်း (Includes)
Configuration ဖိုင်က ထောက်ပံ့ပေးပါက include များကို အသုံးပြုပါ။ ဥပမာအားဖြင့် ~/.gitconfig တွင် အောက်ပါ စက်တင် ထည့်သွင်းထားနိုင်သည်-
[include]
path = ~/.gitconfig_local
ထို့နောက် စက်တစ်လုံးစီတွင် ~/.gitconfig_local ၌ စက်အလိုက် သီးသန့် စက်တင်များ ပါဝင်နိုင်ပါသည်။ စက်အလိုက် သီးသန့် စက်တင်များအတွက် ၎င်းတို့ကို သီးသန့် repository တစ်ခုတွင်ပင် ထိန်းသိမ်းစောင့်ကြည့် (track) နိုင်ပါသည်။
အခြားသော ပရိုဂရမ်များတွင် စက်တင်အချို့ကို မျှဝေသုံးစွဲလိုပါကလည်း ဤနည်းလမ်းသည် အသုံးဝင်ပါသည်။ ဥပမာအားဖြင့် bash နှင့် zsh နှစ်ခုစလုံးကို တူညီသော alias အစုအဝေး မျှဝေသုံးစွဲစေလိုပါက ယင်းတို့ကို .aliases အောက်တွင် ရေးသားနိုင်ပြီး နှစ်ခုစလုံးတွင် အောက်ပါ block ကို ထည့်သွင်းထားနိုင်ပါသည်။
# Test if ~/.aliases exists and source it
if [ -f ~/.aliases ]; then
source ~/.aliases
fi
လေ့လာရန် သယံဇာတများ (Resources)
- သင်၏ နည်းပြများ၏ dotfile များ- Anish, Jon, Jose
- GitHub does dotfiles- dotfile framework များ၊ utility များ၊ ဥပမာများနှင့် သင်ခန်းစာများ
- Shell startup scripts- သင်၏ shell အတွက် အသုံးပြုသည့် မတူညီသော configuration ဖိုင်များအကြောင်း ရှင်းလင်းချက်
လေ့ကျင့်ခန်းများ (Exercises)
-
သင်၏ dotfile များအတွက် folder တစ်ခု ဖန်တီးပြီး version control ကို စတင် တည်ဆောက်ပါ။
-
အနည်းဆုံး ပရိုဂရမ် တစ်ခုအတွက် (ဥပမာ သင်၏ shell) စိတ်ကြိုက်ပြင်ဆင်မှု ပါဝင်သော configuration တစ်ခု ထည့်သွင်းပါ (စတင်သည့်အနေဖြင့်
$PS1ကို သတ်မှတ်၍ သင်၏ shell prompt ကို စိတ်ကြိုက် ပြင်ဆင်ခြင်းကဲ့သို့ ရိုးရှင်းသော အရာတစ်ခု ဖြစ်နိုင်သည်)။ -
စက်အသစ်တစ်လုံးတွင် သင်၏ dotfile များကို လျင်မြန်စွာ (လူကိုယ်တိုင် အားစိုက်ထုတ်ရန် မလိုဘဲ) တပ်ဆင်နိုင်မည့် နည်းလမ်းတစ်ခု စီစဉ်ပါ။ ၎င်းသည် ဖိုင်တစ်ခုစီအတွက်
ln -sကို ခေါ်ယူပေးသည့် shell script တစ်ခုကဲ့သို့ ရိုးရှင်းနိုင်သည်၊ သို့မဟုတ် သီးသန့် utility တစ်ခုကိုလည်း အသုံးပြုနိုင်ပါသည်။ -
သင်၏ တပ်ဆင်မှု script ကို virtual machine အသစ်တစ်ခုတွင် စမ်းသပ်ပါ။
-
လက်ရှိ tool စက်တင်များ အားလုံးကို သင်၏ dotfiles repository သို့ ပြောင်းရွှေ့ပါ။
-
သင်၏ dotfile များကို GitHub ပေါ်တွင် လွှင့်တင်ပါ (publish ပြုလုပ်ပါ)။
Licensed under CC BY-NC-SA.