Jupyter ကို LXD ပတ်လမ်းထဲသို့ ပစ်လွှတ်လိုက်သည်။

အရင်းခံစနစ်အတွက် စိတ်မပူဘဲ Linux တွင် ကုဒ် သို့မဟုတ် စနစ် utilities များကို စမ်းသပ်ပြီး root အခွင့်ထူးများဖြင့် လုပ်ဆောင်ရမည့် ကုဒ်တွင် အမှားအယွင်းဖြစ်သွားပါက အရာအားလုံးကို ဖြိုခွဲပစ်ဖူးပါသလား။

ဒါပေမယ့် စက်တစ်ခုတည်းမှာ အမျိုးမျိုးသော microservices အစုအဝေးတစ်ခုလုံးကို စမ်းသပ်ရန် သို့မဟုတ် လုပ်ဆောင်ရန် လိုအပ်သည်ဟုဆိုပါစို့။ တစ်ရာ ဒါမှမဟုတ် တစ်ထောင်လား?

hypervisor မှ စီမံခန့်ခွဲသော virtual machines များဖြင့်၊ ထိုကဲ့သို့သော ပြဿနာများကို ဖြေရှင်းနိုင်သော်လည်း မည်သည့်ကုန်ကျစရိတ်ဖြင့် ဖြေရှင်းနိုင်မည်နည်း။ ဥပမာအားဖြင့်၊ Alpine Linux ဖြန့်ဖြူးမှုအပေါ် အခြေခံသည့် LXD ရှိ ကွန်တိန်နာတစ်ခုသည် စားသုံးမှုသာဖြစ်သည်။ 7.60MB RAM နှင့် root partition သည် startup ပြီးနောက်နေရာယူထားသည်။ 9.5MB! ဒါကို Elon Musk ဘယ်လိုကြိုက်လဲ။ ထွက်ကြည့်ဖို့ အကြံပြုပါတယ်။ LXD ၏ အခြေခံစွမ်းရည်များ - Linux ရှိ ကွန်တိန်နာစနစ်

ယေဘူယျအားဖြင့် LXD ကွန်တိန်နာများ သည် ဘာလဲ ရှင်းရှင်းလင်းလင်း သိသွားပြီးနောက်၊ သင် host အတွက် ကုဒ်ကို ဘေးကင်းစွာ run နိုင်သော၊ ဂရပ်များကို ဖန်တီးပါ၊ UI-ဝစ်ဂျက်များကို သင့်ကုဒ်ဖြင့် ချိတ်ဆက်နိုင်သည့် ကောက်ရိတ်ကိရိယာ ပလပ်ဖောင်းတစ်ခု ရှိလျှင် ဘာဖြစ်မည်နည်း၊ blackjack... formatting ဖြင့် ကုဒ်ကို စာသားဖြင့် ဖြည့်စွက်မလား။ အပြန်အလှန်အကျိုးသက်ရောက်သောဘလော့ဂ်အမျိုးအစားအချို့။ အိုး... လိုချင်တယ်! လိုချင်တယ်! 🙂

ကွန်တိန်နာထဲမှာ ပစ်လွှတ်မယ့် ကြောင်ကို ကြည့်လိုက်ပါ။ Jupyter ဓာတ်ခွဲခန်း - ခေတ်မမီတော့သော Jupyter Notebook အစား နောက်မျိုးဆက် user interface နှင့် Python ကဲ့သို့သော module များကိုလည်း ထည့်သွင်းပါမည်။ numpy, ပန်ဒါ, matplotlib, IPyWidgets အထက်ဖော်ပြပါအရာအားလုံးကို လုပ်ဆောင်နိုင်ပြီး IPython လက်ပ်တော့တစ်လုံးတွင် အထူးဖိုင်တစ်ခုအဖြစ် သိမ်းဆည်းနိုင်မည်ဖြစ်သည်။

Jupyter ကို LXD ပတ်လမ်းထဲသို့ ပစ်လွှတ်လိုက်သည်။

ပတ်လမ်းမှ ထွက်ခွာမည့် အစီအစဉ် ^

Jupyter ကို LXD ပတ်လမ်းထဲသို့ ပစ်လွှတ်လိုက်သည်။

အထက်ဖော်ပြပါ အစီအစဉ်ကို အကောင်အထည်ဖော်ရန် ကျွန်ုပ်တို့အတွက် ပိုမိုလွယ်ကူစေရန် အတိုချုံးထားသော လုပ်ဆောင်ချက်အစီအစဥ်ကို ဖော်ပြကြပါစို့။

  • ဖြန့်ဖြူးမှုအစုံအလင်ကို အခြေခံ၍ ကွန်တိန်နာတစ်လုံးကို တပ်ဆင်ပြီး စတင်ကြပါစို့ Alpine Linux. ကျွန်ုပ်တို့သည် ဤဖြန့်ဖြူးမှုကို အနည်းငယ်မျှသာဖြစ်စေရန်အတွက် ရည်ရွယ်ပြီး ၎င်းတွင် အလိုအပ်ဆုံးဆော့ဖ်ဝဲလ်ကိုသာ ထည့်သွင်းမည်ဖြစ်သောကြောင့် အထူးအထွေမလိုအပ်ပါ။
  • ကွန်တိန်နာထဲမှာ နောက်ထပ် virtual disk တစ်ခုထည့်ပြီး နာမည်တစ်ခုပေးကြရအောင် - hostfs ၎င်းကို root ဖိုင်စနစ်တွင်တပ်ဆင်ပါ။ ဤဒစ်ခ်သည် ကွန်တိန်နာအတွင်းရှိ ပေးထားသည့် လမ်းညွှန်တစ်ခုမှ လက်ခံဆောင်ရွက်ပေးသူရှိ ဖိုင်များကို သုံးနိုင်စေမည်ဖြစ်သည်။ ထို့ကြောင့် ကျွန်ုပ်တို့၏ဒေတာသည် ကွန်တိန်နာနှင့် သီးခြားဖြစ်နေပါမည်။ ကွန်တိန်နာကို ဖျက်လိုက်လျှင် ဒေတာသည် လက်ခံသူတွင် ရှိနေမည်ဖြစ်သည်။ ထို့အပြင်၊ ဤအစီအစဥ်သည် ကွန်တိန်နာဖြန့်ဝေမှု၏ စံကွန်ရက်ယန္တရားများကို အသုံးမပြုဘဲ ကွန်တိန်နာများစွာကြားတွင် တူညီသောဒေတာကို မျှဝေရန်အတွက် အသုံးဝင်ပါသည်။
  • Bash၊ sudo၊ လိုအပ်သော ဒစ်ဂျစ်တိုက်များကို ထည့်သွင်းပြီး စနစ်အသုံးပြုသူအား ထည့်သွင်းကြပါစို့
  • Python၊ မော်ဂျူးများကို ထည့်သွင်းပြီး ၎င်းတို့အတွက် binary မှီခိုမှုကို စုစည်းလိုက်ကြပါစို့
  • ထည့်သွင်းပြီး စတင်လိုက်ရအောင် Jupyter ဓာတ်ခွဲခန်းအသွင်အပြင်ကို စိတ်ကြိုက်ပြင်ဆင်ပါ၊ ၎င်းအတွက် တိုးချဲ့မှုများကို ထည့်သွင်းပါ။

ဤဆောင်းပါးတွင်၊ ကွန်တိန်နာကိုစတင်ခြင်းဖြင့်ကျွန်ုပ်တို့သည် LXD ကိုထည့်သွင်းခြင်းနှင့်ဖွဲ့စည်းခြင်းကိုထည့်သွင်းစဉ်းစားမည်မဟုတ်ပါ၊ ဤအရာအားလုံးကိုအခြားဆောင်းပါးတွင်သင်တွေ့နိုင်သည် - LXD - Linux ကွန်တိန်နာစနစ်များ၏ အခြေခံအင်္ဂါရပ်များ.

တပ်ဆင်ခြင်းနှင့် ဖွဲ့စည်းတည်ဆောက်ပုံ အခြေခံစနစ် ^

ပုံအား သတ်မှတ်သည့် command ဖြင့် ကွန်တိန်နာတစ်ခု ဖန်တီးသည်- alpine3ကွန်တိန်နာအတွက် identifier - jupyterlab လိုအပ်ပါက၊ ဖွဲ့စည်းမှုပရိုဖိုင်များ-

lxc init alpine3 jupyterlab --profile=default --profile=hddroot

ဤတွင် ကျွန်ုပ်သည် ဖွဲ့စည်းမှု ပရိုဖိုင်ကို အသုံးပြုနေပါသည်။ hddroot root partition ဖြင့် container တစ်ခုကို ဖန်တီးရန် သတ်မှတ်သည်။ သိုလှောင်ရေကန် ရုပ်ပိုင်းဆိုင်ရာ HDD ဒစ်ပေါ်တွင်တည်ရှိသည်-

lxc profile show hddroot

config: {}
description: ""
devices:
  root:
    path: /
    pool: hddpool
    type: disk
name: hddroot
used_by: []
lxc storage show hddpool

config:
  size: 10GB
  source: /dev/loop1
  volatile.initial_source: /dev/loop1
description: ""
name: hddpool
driver: btrfs
used_by:
- /1.0/images/ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3
- /1.0/profiles/hddroot
status: Created
locations:
- none

၎င်းသည် ကျွန်ုပ်အား သီးခြားဖွဲ့စည်းပုံပရိုဖိုင်ကို ဖန်တီးထားသည့် SSD disk ၏ အရင်းအမြစ်များကို ချွေတာပြီး ၎င်းသည် ကျွန်ုပ်အား HDD ဒစ်ပေါ်တွင် ကွန်တိန်နာများဖြင့် စမ်းသပ်ရန် အခွင့်အရေးပေးပါသည်။ ssdroot.

ကွန်တိန်နာကို ဖန်တီးပြီးနောက်၊ ၎င်းသည် အခြေအနေတွင် ရှိနေသည်။ STOPPEDထို့ကြောင့် ၎င်းတွင် init system ကို run ခြင်းဖြင့် စတင်ရန် လိုအပ်ပါသည်။

lxc start jupyterlab

သော့ကိုသုံး၍ LXD ရှိ ကွန်တိန်နာစာရင်းကို ပြကြပါစို့ -c အဘယ်အရာကိုညွှန်ပြသနည်း။ columns ပြသမှု-

lxc list -c ns4b
+------------+---------+-------------------+--------------+
|    NAME    |  STATE  |       IPV4        | STORAGE POOL |
+------------+---------+-------------------+--------------+
| jupyterlab | RUNNING | 10.0.5.198 (eth0) | hddpool      |
+------------+---------+-------------------+--------------+

ကွန်တိန်နာကို ဖန်တီးသောအခါတွင်၊ ကျွန်ုပ်တို့သည် ဖွဲ့စည်းမှုပရိုဖိုင်ကို အသုံးပြုထားသောကြောင့် IP လိပ်စာကို ကျပန်းရွေးချယ်ခဲ့ပါသည်။ default ဆောင်းပါးတွင် ယခင်က configure လုပ်ထားသည်။ LXD - Linux ကွန်တိန်နာစနစ်များ၏ အခြေခံအင်္ဂါရပ်များ.

ကျွန်ုပ်တို့သည် ကွန်တိန်နာအဆင့်တွင် ကွန်တိန်နာအဆင့်တွင် ကွန်ရက်အင်တာဖေ့စ်ကို ဖန်တီးခြင်းဖြင့်၊ ၎င်းသည် လက်ရှိဖွဲ့စည်းပုံတွင် ပါရှိသည့်အတိုင်း ဖွဲ့စည်းမှုပရိုဖိုင်အဆင့်တွင် မဟုတ်ဘဲ ဤ IP လိပ်စာကို ပိုမိုမှတ်မိနိုင်သော အမှတ်ရစရာတစ်ခုအဖြစ်သို့ ပြောင်းလဲပါမည်။ ဒါကိုလုပ်စရာမလိုပါဘူး၊ ကျော်သွားနိုင်ပါတယ်။

ကွန်ရက်အင်တာဖေ့စ်ဖန်တီးခြင်း။ eth0 ကျွန်ုပ်တို့သည် switch (ကွန်ရက်တံတား) နှင့်ချိတ်ဆက်ထားသည်။ lxdbr0 ယခင်ဆောင်းပါးအရ NAT ကိုကျွန်ုပ်တို့ဖွင့်ထားသောကြောင့်ကွန်တိန်နာသည်ယခုအင်တာနက်သို့ဝင်ရောက်ခွင့်ရရှိမည်ဖြစ်ပြီးအင်တာဖေ့စ်အတွက် static IP လိပ်စာကိုလည်းသတ်မှတ်ပေးသည် - 10.0.5.5:

lxc config device add jupyterlab eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5

စက်ပစ္စည်းတစ်ခုထည့်ပြီးနောက်၊ ကွန်တိန်နာကို ပြန်လည်စတင်ရပါမည်-

lxc restart jupyterlab

ကွန်တိန်နာ၏ အခြေအနေကို စစ်ဆေးနေသည်-

lxc list -c ns4b
+------------+---------+------------------+--------------+
|    NAME    |  STATE  |       IPV4       | STORAGE POOL |
+------------+---------+------------------+--------------+
| jupyterlab | RUNNING | 10.0.5.5 (eth0)  | hddpool      |
+------------+---------+------------------+--------------+

အခြေခံဆော့ဖ်ဝဲကို တပ်ဆင်ခြင်းနှင့် စနစ်ထည့်သွင်းခြင်း။ ^

ကျွန်ုပ်တို့၏ကွန်တိန်နာကို စီမံခန့်ခွဲရန်၊ သင်သည် အောက်ပါဆော့ဖ်ဝဲကို ထည့်သွင်းရန် လိုအပ်သည်-

အထုပ်
ဖေါ်ပြချက်

ကား Bash
GNU Bourne Again အခွံ

bash-ပြီးမြောက်ခြင်း။
bash shell အတွက် programmable ပြီးစီးမှု

sudo
အချို့သော command များကို root အဖြစ်အသုံးပြုရန် အချို့သောအသုံးပြုသူများကို ပေးစွမ်းနိုင်သည်။

အရိပ်
အရိပ်ဖိုင်များနှင့် PAM အတွက် ပံ့ပိုးမှုဖြင့် စကားဝှက်နှင့် အကောင့်စီမံခန့်ခွဲမှု ကိရိယာအစုံ

ကျောက်တံတား
အချိန်ဇုန်နှင့် နေ့အလင်းရောင် ချွေတာချိန်ဒေတာအတွက် အရင်းအမြစ်များ

nano
မြှင့်တင်မှုများနှင့်အတူ Pico တည်းဖြတ်သူကိုယ်ပွား

ထို့အပြင်၊ အောက်ပါပက်ကေ့ဂျ်များကို ထည့်သွင်းခြင်းဖြင့် − system man-pages တွင် ပံ့ပိုးမှုထည့်သွင်းနိုင်သည်။ man man-pages mdocml-apropos less

lxc exec jupyterlab -- apk add bash bash-completion sudo shadow tzdata nano

ကျွန်ုပ်တို့အသုံးပြုခဲ့သည့် command များနှင့် သော့များကို ကြည့်ကြပါစို့။

  • lxc - LXD client ကိုခေါ်ပါ။
  • exec - ကွန်တိန်နာတွင် command တစ်ခုလုပ်ဆောင်သော LXD client နည်းလမ်း
  • jupyterlab - ကွန်တိန်နာ ID
  • -- — နောက်ထပ်သော့များကို သော့များအဖြစ် အဓိပ္ပါယ်မဖွင့်ဆိုရန် အထူးသော့တစ်ခု lxc ပြီးလျှင် ကျန်သော string ကို ကွန်တိန်နာသို့ ဖြတ်ပါ။
  • apk - Alpine Linux ဖြန့်ဖြူးရေးပက်ကေ့ဂျ်မန်နေဂျာ
  • add - အမိန့်ပေးပြီးနောက် သတ်မှတ်ထားသော အထုပ်များကို တပ်ဆင်သည့် ပက်ကေ့ဂျ်မန်နေဂျာနည်းလမ်း

ထို့နောက် စနစ်တွင် အချိန်ဇုန်တစ်ခု သတ်မှတ်ပါမည်။ Europe/Moscow:

lxc exec jupyterlab -- cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

စံတော်ချိန်ကို ထည့်သွင်းပြီးနောက်၊ ပက်ကေ့ချ် tzdata စနစ်တွင်မလိုအပ်တော့ပါ၊ ၎င်းသည်နေရာယူလိမ့်မည်၊ ထို့ကြောင့်၎င်းကိုဖျက်လိုက်ကြပါစို့။

lxc exec jupyterlab -- apk del tzdata

အချိန်ဇုန်ကို စစ်ဆေးခြင်း-

lxc exec jupyterlab -- date

Wed Apr 15 10:49:56 MSK 2020

အသုံးပြုသူအသစ်များအတွက် Bash ကို ကွန်တိန်နာတွင် စတင်သတ်မှတ်ချိန်အများကြီးမဖြုန်းစေရန်၊ အောက်ပါအဆင့်များတွင် ကျွန်ုပ်တို့သည် အဆင်သင့်လုပ်ထားသော skel ဖိုင်များကို လက်ခံဆောင်ရွက်ပေးသည့်စနစ်မှ ၎င်းထံသို့ ကူးယူပါမည်။ ၎င်းသည် သင့်အား Bash ကို ကွန်တိန်နာတစ်ခုအတွင်း အပြန်အလှန်အကျိုးသက်ရောက်စွာ အလှဆင်နိုင်စေမည်ဖြစ်သည်။ ကျွန်ုပ်၏အိမ်ရှင်စနစ်မှာ Manjaro Linux ဖြစ်ပြီး ဖိုင်များကို ကူးယူထားပါသည်။ /etc/skel/.bash_profile, /etc/skel/.bashrc, /etc/skel/.dir_colors မူအရ ၎င်းတို့သည် Alpine Linux အတွက် သင့်လျော်ပြီး အရေးကြီးသော ပြဿနာများကို မဖြစ်ပေါ်စေသော်လည်း သင့်တွင် ကွဲပြားသော ဖြန့်ဖြူးမှုတစ်ခု ရှိနိုင်ပြီး Bash ကို ကွန်တိန်နာတွင် အသုံးပြုသည့်အခါ အမှားအယွင်းရှိမရှိ လွတ်လပ်စွာ အဖြေရှာရန် လိုအပ်ပါသည်။

skel ဖိုင်များကို ကွန်တိန်နာသို့ ကူးယူပါ။ သော့ --create-dirs ၎င်းတို့ မရှိပါက လိုအပ်သော လမ်းညွှန်များကို ဖန်တီးလိမ့်မည်-

lxc file push /etc/skel/.bash_profile jupyterlab/etc/skel/.bash_profile --create-dirs
lxc file push /etc/skel/.bashrc jupyterlab/etc/skel/.bashrc
lxc file push /etc/skel/.dir_colors jupyterlab/etc/skel/.dir_colors

ရှိပြီးသား root အသုံးပြုသူအတွက်၊ ကွန်တိန်နာထဲသို့ ကူးယူထားသော skel ဖိုင်များကို home directory သို့ ကူးယူပါ-

lxc exec jupyterlab -- cp /etc/skel/.bash_profile /root/.bash_profile
lxc exec jupyterlab -- cp /etc/skel/.bashrc /root/.bashrc
lxc exec jupyterlab -- cp /etc/skel/.dir_colors /root/.dir_colors

Alpine Linux သည် သုံးစွဲသူများအတွက် စနစ်အခွံတစ်ခုကို ထည့်သွင်းသည်။ /bin/shအဲဒါကို အစားထိုးမယ်။ root Bash ရှိ အသုံးပြုသူ-

lxc exec jupyterlab -- usermod --shell=/bin/bash root

ထို root အသုံးပြုသူသည် စကားဝှက်မရှိပါ၊ စကားဝှက်တစ်ခု သတ်မှတ်ရန် လိုအပ်သည်။ အောက်ပါ command သည် သူ့အတွက် ကျပန်းစကားဝှက်အသစ်ကို ထုတ်ပေးပြီး သတ်မှတ်ပေးမည်ဖြစ်ပြီး ၎င်းကို လုပ်ဆောင်ပြီးနောက် console မျက်နှာပြင်ပေါ်တွင် သင်တွေ့မြင်ရလိမ့်မည်-

lxc exec jupyterlab -- /bin/bash -c "PASSWD=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 12); echo "root:$PASSWD" | chpasswd && echo "New Password: $PASSWD""

New Password: sFiXEvBswuWA

ထို့အပြင်၊ စနစ်အသုံးပြုသူအသစ်ကိုဖန်တီးကြပါစို့။ jupyter နောက်မှ configure လုပ်ပါမယ်။ Jupyter ဓာတ်ခွဲခန်း:

lxc exec jupyterlab -- useradd --create-home --shell=/bin/bash jupyter

၎င်းအတွက် စကားဝှက်တစ်ခု ဖန်တီးပြီး သတ်မှတ်ကြပါစို့။

lxc exec jupyterlab -- /bin/bash -c "PASSWD=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 12); echo "jupyter:$PASSWD" | chpasswd && echo "New Password: $PASSWD""

New Password: ZIcbzWrF8tki

ထို့နောက်၊ ကျွန်ုပ်တို့သည် command နှစ်ခုကိုလုပ်ဆောင်မည်ဖြစ်ပြီး၊ ပထမတစ်ခုသည် system group တစ်ခုကိုဖန်တီးမည်ဖြစ်သည်။ sudo၊ ဒုတိယ သည် ၎င်းသို့ အသုံးပြုသူ တစ်ဦးကို ပေါင်းထည့်မည်ဖြစ်သည်။ jupyter:

lxc exec jupyterlab -- groupadd --system sudo
lxc exec jupyterlab -- groupmems --group sudo --add jupyter

အသုံးပြုသူသည် မည်သည့်အဖွဲ့ဖြစ်သည်ကို ကြည့်ကြပါစို့ jupyter:

lxc exec jupyterlab -- id -Gn jupyter

jupyter sudo

အားလုံးအဆင်ပြေပါတယ်၊ ဆက်သွားကြရအောင်။

အဖွဲ့၏အဖွဲ့ဝင်များဖြစ်သော အသုံးပြုသူအားလုံးကို ခွင့်ပြုပါ။ sudo command ကိုသုံးပါ။ sudo. ဒီလိုလုပ်ဖို့၊ ဘယ်မှာအောက်ပါ script ကို run sed စီစဉ်ဖွဲ့စည်းမှုဖိုင်ရှိ ပါရာမီတာလိုင်းကို မှတ်ချက်မပေးပါ။ /etc/sudoers:

lxc exec jupyterlab -- /bin/bash -c "sed --in-place -e '/^#[ t]*%sudo[ t]*ALL=(ALL)[ t]*ALL$/ s/^[# ]*//' /etc/sudoers"

JupyterLab ကို ထည့်သွင်းပြီး ပြင်ဆင်သတ်မှတ်ခြင်း။ ^

Jupyter ဓာတ်ခွဲခန်း Python အပလီကေးရှင်းတစ်ခုဖြစ်သောကြောင့် ဤဘာသာပြန်ကို ဦးစွာထည့်သွင်းရပါမည်။ ထို့အတူ၊ Jupyter ဓာတ်ခွဲခန်း Python package manager ကို အသုံးပြု၍ install လုပ်ပါမည်။ pipစနစ်တစ်ခုမဟုတ်ပါ၊ ၎င်းသည် system repository တွင်ခေတ်နောက်ကျနေနိုင်သောကြောင့်၊ အောက်ပါပက်ကေ့ဂျ်များကိုထည့်သွင်းခြင်းဖြင့်၎င်းအတွက်မှီခိုမှုများကိုကျွန်ုပ်တို့ကိုယ်တိုင်ဖြေရှင်းရမည်ဖြစ်ပါသည်။ python3 python3-dev gcc libc-dev zeromq-dev:

lxc exec jupyterlab -- apk add python3 python3-dev gcc libc-dev zeromq-dev

python modules နှင့် package manager ကို update လုပ်ကြပါစို့ pip လက်ရှိဗားရှင်းသို့

lxc exec jupyterlab -- python3 -m pip install --upgrade pip setuptools wheel

ထည့်သွင်းပါ Jupyter ဓာတ်ခွဲခန်း package manager မှတဆင့် pip:

lxc exec jupyterlab -- python3 -m pip install jupyterlab

Extensions တွေ ကစလို့ Jupyter ဓာတ်ခွဲခန်း စမ်းသပ်ဆဲဖြစ်ပြီး jupyterlab ပက်ကေ့ဂျ်ဖြင့် တရားဝင် တင်ပို့ရောင်းချခြင်း မရှိသေးသောကြောင့် ၎င်းကို ကိုယ်တိုင်ထည့်သွင်းပြီး ပြင်ဆင်သတ်မှတ်ရပါမည်။

NodeJS နှင့် ၎င်းအတွက် ပက်ကေ့ဂျ်မန်နေဂျာကို ထည့်သွင်းကြပါစို့ - NPM၊ Jupyter ဓာတ်ခွဲခန်း ၎င်း၏ extensions များအတွက် ၎င်းတို့ကို အသုံးပြုသည်-

lxc exec jupyterlab -- apk add nodejs npm

တိုးချဲ့မှုများ ပြုလုပ်ရန် Jupyter ဓာတ်ခွဲခန်း ကျွန်ုပ်တို့ထည့်သွင်းမည့်အရာသည် အလုပ်လုပ်သည်၊ အက်ပ်ကို အသုံးပြုသူမှ စတင်လိုက်သောကြောင့် ၎င်းတို့ကို အသုံးပြုသူလမ်းညွှန်တွင် ထည့်သွင်းရန် လိုအပ်ပါသည်။ jupyter. ပြဿနာမှာ လမ်းကြောင်းတစ်ခုသို့ ကူးပြောင်းနိုင်သော launch command တွင် parameter မရှိပါ။ application သည် environment variable တစ်ခုကိုသာ လက်ခံသောကြောင့် ၎င်းကို သတ်မှတ်ရပါမည်။ ဒါကိုလုပ်ဖို့၊ ပြောင်းနိုင်တဲ့ export command ကိုရေးပါမယ်။ JUPYTERLAB_DIR အသုံးပြုသူ၏ပတ်ဝန်းကျင်၌ jupyterဖို .bashrcအသုံးပြုသူ အကောင့်ဝင်တိုင်း လုပ်ဆောင်သည်-

lxc exec jupyterlab -- su -l jupyter -c "echo -e "nexport JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab" >> .bashrc"

နောက် command သည် အထူး extension - extension manager in ကို ထည့်သွင်းပါမည်။ Jupyter ဓာတ်ခွဲခန်း:

lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter labextension install --no-build @jupyter-widgets/jupyterlab-manager"

အခု ပထမဆုံး မိတ်ဆက်ပွဲအတွက် အရာအားလုံး အဆင်သင့်ဖြစ်နေပါပြီ။ Jupyter ဓာတ်ခွဲခန်းသို့သော် ကျွန်ုပ်တို့သည် အသုံးဝင်သော တိုးချဲ့မှုအချို့ကို ထည့်သွင်းနိုင်သေးသည်။

  • toc — မာတိကာ၊ ဆောင်းပါး/မှတ်စုစာအုပ်တွင် ခေါင်းစဉ်များစာရင်းကို ထုတ်ပေးသည်။
  • jupyterlab-horizon-theme - UI အပြင်အဆင်
  • jupyterlab_neon_theme - UI အပြင်အဆင်
  • jupyterlab-ubu-theme - နောက်တစ်ခု စာရေးသူထံမှ ဆောင်ပုဒ် ဤဆောင်းပါး :) သို့သော် ဤကိစ္စတွင်၊ GitHub repository မှ တပ်ဆင်မှုကို ပြသပါမည်။

ထို့ကြောင့်၊ ဤ extension များကိုထည့်သွင်းရန် အောက်ပါ command များကို ဆက်တိုက်လုပ်ဆောင်ပါ။

lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter labextension install --no-build @jupyterlab/toc @mohirio/jupyterlab-horizon-theme @yeebc/jupyterlab_neon_theme"
lxc exec jupyterlab -- su -l jupyter -c "wget -c https://github.com/microcoder/jupyterlab-ubu-theme/archive/master.zip"
lxc exec jupyterlab -- su -l jupyter -c "unzip -q master.zip && rm master.zip"
lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter labextension install --no-build jupyterlab-ubu-theme-master"
lxc exec jupyterlab -- su -l jupyter -c "rm -r jupyterlab-ubu-theme-master"

Extensions များကို ထည့်သွင်းပြီးနောက်၊ ကျွန်ုပ်တို့သည် ၎င်းတို့ကို စုစည်းရမည်ဖြစ်ပြီး ယခင်က ထည့်သွင်းစဉ်အတွင်း သော့ကို ကျွန်ုပ်တို့ သတ်မှတ်ခဲ့သည်။ --no-build အချိန်ကုန်သက်သာစေရန်။ ယခု ကျွန်ုပ်တို့သည် ၎င်းတို့ကို တစ်ကြိမ်တည်း စုစည်းခြင်းဖြင့် သိသိသာသာ အရှိန်မြှင့်ပါမည်။

lxc exec jupyterlab -- su -l jupyter -c "export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab; jupyter lab build"

ယခု ၎င်းကို ပထမအကြိမ်လုပ်ဆောင်ရန် အောက်ပါ command နှစ်ခုကို run ပါ။ Jupyter ဓာတ်ခွဲခန်း. ၎င်းကို command တစ်ခုတည်းဖြင့် စတင်နိုင်သော်လည်း ဤကိစ္စတွင်၊ သင့်စိတ်ထဲတွင် မှတ်မိရန်ခက်ခဲသော launch command ကို container အတွင်းရှိ bash ဖြင့် မှတ်ထားမည်ဖြစ်ပြီး host တွင်မဟုတ်ဘဲ၊ လုံလောက်သော command များရှိနေသော၊ သမိုင်းမှာ မှတ်တမ်းတင်ဖို့၊ :)

အသုံးပြုသူအဖြစ် ကွန်တိန်နာသို့ အကောင့်ဝင်ပါ။ jupyter:

lxc exec jupyterlab -- su -l jupyter

ပြီးရင်တော့ run လိုက်ပါ။ Jupyter ဓာတ်ခွဲခန်း ညွှန်ပြထားသည့်အတိုင်း သော့များနှင့် ဘောင်များဖြင့်

[jupyter@jupyterlab ~]$ jupyter lab --ip=0.0.0.0 --no-browser

သင့်ဝဘ်ဘရောက်ဆာရှိ လိပ်စာသို့သွားပါ။ http://10.0.5.5:8888 နှင့်ဖွင့်သောစာမျက်နှာပေါ်တွင်ဝင်ရောက်ပါ။ တိုကင်နံပါတ် console တွင်သင်တွေ့မြင်ရသောဝင်ရောက်ခွင့်။ စာမျက်နှာပေါ်တွင် ကော်ပီကူးပြီး ကူးထည့်ပြီးနောက် ကလစ်နှိပ်ပါ။ Login. အကောင့်ဝင်ပြီးနောက်၊ အောက်ဖော်ပြပါပုံတွင်ပြထားသည့်အတိုင်း ဘယ်ဘက်ရှိ extensions မီနူးသို့သွားပါ၊ တိုးချဲ့မန်နေဂျာကို အသက်သွင်းသည့်အခါ၊ အမိန့်ပေးသော ပြင်ပအဖွဲ့အစည်းများမှ တိုးချဲ့မှုများကို ထည့်သွင်းခြင်းဖြင့် လုံခြုံရေးအန္တရာယ်များကို ရယူရန် သင့်အား အချက်ပြမည်ဖြစ်သည်။ JupyterLab ဖွံ့ဖြိုးတိုးတက်မှု တာဝန်မရှိပါ

Jupyter ကို LXD ပတ်လမ်းထဲသို့ ပစ်လွှတ်လိုက်သည်။

သို့သော် ကျွန်ုပ်တို့သည် တစ်ခုလုံးကို သီးခြားခွဲထားသည်။ Jupyter ဓာတ်ခွဲခန်း NodeJS လိုအပ်ပြီး အသုံးပြုသည့် ပြင်ပကုမ္ပဏီ extension များသည် ကွန်တိန်နာအတွင်း ကျွန်ုပ်တို့ဖွင့်ထားသည့်အရာများမှလွဲ၍ အခြား disk ပေါ်ရှိ ဒေတာများကို အနည်းဆုံး ခိုးယူနိုင်စေရန် ၎င်းကို ကွန်တိန်နာတစ်ခုထဲတွင် ထားလိုက်ပါ။ သင့်ကိုယ်ရေးကိုယ်တာစာရွက်စာတမ်းများကို လက်ခံရယူလိုက်ပါ။ /home ကွန်တိန်နာမှ လုပ်ငန်းစဉ်များသည် အောင်မြင်နိုင်ဖွယ်မရှိကြောင်း၊ ၎င်းတို့လုပ်ဆောင်ပါက၊ ကျွန်ုပ်တို့သည် ကွန်တိန်နာကို run သောကြောင့် host system ရှိ ဖိုင်များတွင် အခွင့်ထူးများရရှိရန် လိုအပ်ပါသည်။ အခွင့်ထူးခံမုဒ်. ဤအချက်အလက်ကို အခြေခံ၍ တိုးချဲ့မှုများ အပါအဝင် အန္တရာယ်ကို အကဲဖြတ်နိုင်ပါသည်။ Jupyter ဓာတ်ခွဲခန်း.

IPython မှတ်စုစာအုပ်များ ဖန်တီးခဲ့သည် (စာမျက်နှာများ Jupyter ဓာတ်ခွဲခန်း) ယခု အသုံးပြုသူ၏ ပင်မလမ်းညွှန်တွင် ဖန်တီးလိမ့်မည် - /home/jupyterသို့သော် ကျွန်ုပ်တို့၏အစီအစဉ်များသည် host နှင့် container အကြားဒေတာ (မျှဝေခြင်း) ကိုခွဲခြမ်းရန်ဖြစ်သည်၊ ထို့ကြောင့် console သို့ပြန်သွားပြီးရပ်ပါ။ Jupyter ဓာတ်ခွဲခန်း hotkey ကိုလုပ်ဆောင်ခြင်းဖြင့် - CTRL+C ဖြေဆိုခြင်း။ y တောင်းဆိုမှုအရ ထို့နောက် အသုံးပြုသူ၏ အပြန်အလှန်အကျိုးပြုသည့် ဆက်ရှင်ကို ရပ်ဆိုင်းပါ။ jupyter hotkey တစ်ခုပြီးအောင် CTRL+D.

အိမ်ရှင်နှင့် ဒေတာမျှဝေခြင်း။ ^

လက်ခံသူနှင့် ဒေတာမျှဝေရန်၊ သင်သည် ၎င်းကို လုပ်ဆောင်ရန် ခွင့်ပြုသည့် ကွန်တိန်နာတွင် စက်ပစ္စည်းတစ်ခုကို ဖန်တီးရန် လိုအပ်ပြီး ၎င်းကို လုပ်ဆောင်ရန်၊ ကျွန်ုပ်တို့သည် အောက်ပါသော့များကို သတ်မှတ်ပေးသည့် အောက်ပါ command ကို လုပ်ဆောင်ပါ-

  • lxc config device add — အမိန့်သည် စက်ပစ္စည်းဖွဲ့စည်းပုံကို ပေါင်းထည့်သည်။
  • jupyter - ဖွဲ့စည်းမှုထည့်သွင်းသည့် ကွန်တိန်နာ ID
  • hostfs — စက်ပစ္စည်း ID။ မည်သည့်အမည်ကိုမဆို သတ်မှတ်နိုင်သည်။
  • disk - စက်ပစ္စည်းအမျိုးအစားကို ဖော်ပြထားပါသည်။
  • path — ဤစက်ပစ္စည်းကို LXD တပ်ဆင်မည့် ကွန်တိန်နာအတွင်းရှိ လမ်းကြောင်းကို သတ်မှတ်ပါ။
  • source — အရင်းအမြစ်၊ သင်ကွန်တိန်နာနှင့်မျှဝေလိုသော host ရှိ directory သို့လမ်းကြောင်းကိုသတ်မှတ်ပါ။ သင့်စိတ်ကြိုက်လမ်းကြောင်းကို သတ်မှတ်ပါ။
lxc config device add jupyterlab hostfs disk path=/mnt/hostfs source=/home/dv/projects/ipython-notebooks

ကက်တလောက်အတွက် /home/dv/projects/ipython-notebooks ခွင့်ပြုချက်သည် လက်ရှိ UID နှင့်ညီသော ကွန်တိန်နာအသုံးပြုသူအဖြစ် သတ်မှတ်ရပါမည်။ SubUID + UIDအခန်းကိုကြည့်ပါ။ ဘေးကင်းရေး။ ကွန်တိန်နာ အထူးအခွင့်အရေးများ ဆောင်းပါး LXD - Linux ကွန်တိန်နာစနစ်များ၏ အခြေခံအင်္ဂါရပ်များ.

ပိုင်ရှင်သည် ကွန်တိန်နာအသုံးပြုသူဖြစ်မည့် အိမ်ရှင်တွင် ခွင့်ပြုချက်ကို သတ်မှတ်ပါ။ jupyterနှင့် variable $USER သင့်အိမ်ရှင်အသုံးပြုသူအား အုပ်စုတစ်ခုအဖြစ် သတ်မှတ်ပါမည်-

sudo chown 1001000:$USER /home/dv/projects/ipython-notebooks

မင်္ဂလာပါကမ္ဘာလောက! ^

အကယ်၍ သင့်တွင် ကွန်တိန်နာဖြင့် ဆက်ရှင်ဖွင့်ထားဆဲဖြစ်ပါက Jupyter ဓာတ်ခွဲခန်းထို့နောက် သော့အသစ်ဖြင့် ၎င်းကို ပြန်လည်စတင်ပါ။ --notebook-dir တန်ဖိုးသတ်မှတ်ခြင်းဖြင့် /mnt/hostfs ယခင်အဆင့်တွင် ကျွန်ုပ်တို့ဖန်တီးထားသော စက်ပစ္စည်းအတွက် ကွန်တိန်နာအတွင်းရှိ လက်ပ်တော့များ၏ root လမ်းကြောင်းအဖြစ်-

jupyter lab --ip=0.0.0.0 --no-browser --notebook-dir=/mnt/hostfs

ပြီးရင် page ကိုသွားပါ။ http://10.0.5.5:8888 အောက်ပါပုံတွင်ပြထားသည့်အတိုင်း စာမျက်နှာပေါ်ရှိ ခလုတ်ကိုနှိပ်ခြင်းဖြင့် သင်၏ပထမဆုံး laptop ကိုဖန်တီးပါ။

Jupyter ကို LXD ပတ်လမ်းထဲသို့ ပစ်လွှတ်လိုက်သည်။

ထို့နောက် စာမျက်နှာပေါ်ရှိ အကွက်တွင် ဂန္ထဝင်ကိုပြသမည့် Python ကုဒ်ကို ရိုက်ထည့်ပါ။ Hello World!. ဝင်ရောက်ပြီးပါက နှိပ်ပါ။ CTRL+ENTER သို့မဟုတ် JupyterLab ကိုပြုလုပ်ရန် ထိပ်ရှိ toolbar ရှိ "play" ခလုတ်

Jupyter ကို LXD ပတ်လမ်းထဲသို့ ပစ်လွှတ်လိုက်သည်။

ဤအချိန်တွင်၊ အားလုံးနီးပါးသည် အသုံးပြုရန်အဆင်သင့်ဖြစ်နေပြီဖြစ်သော်လည်း၊ ကျွန်ုပ်တို့သည် Python ၏ စံစွမ်းရည်များကို သိသိသာသာချဲ့ထွင်နိုင်သည့် နောက်ထပ် Python modules (full-fledged applications) ကို မတပ်ဆင်ပါက စိတ်ဝင်စားစရာဖြစ်လိမ့်မည်။ Jupyter ဓာတ်ခွဲခန်းဒါကြောင့် ဆက်လျှောက်ကြရအောင် :)

PS စိတ်ဝင်စားစရာကောင်းတာက အဟောင်းကို အကောင်အထည်ဖော်ခြင်းပါပဲ။ ဂျူပီတာ ကုဒ်အမည်အောက်တွင် ဂျူပီတာမှတ်စုစာအုပ် ပျောက်မသွားသေးဘဲနဲ့ အပြိုင်တည်ရှိနေတယ်။ Jupyter ဓာတ်ခွဲခန်း. ဗားရှင်းဟောင်းသို့ ပြောင်းရန် လိပ်စာတွင် နောက်ဆက်ထည့်သည့် လင့်ခ်ကို လိုက်နာပါ။/treeနှင့် ဗားရှင်းအသစ်သို့ ကူးပြောင်းခြင်းကို နောက်ဆက်တွဲဖြင့် ဆောင်ရွက်ပါသည်။ /labဒါပေမယ့် သတ်မှတ်ထားဖို့ မလိုပါဘူး

Python ၏စွမ်းရည်များကိုချဲ့ထွင်ခြင်း။ ^

ဤကဏ္ဍတွင်၊ ကျွန်ုပ်တို့ကဲ့သို့ အစွမ်းထက်သော Python ဘာသာစကား modules များကို ထည့်သွင်းပါမည်။ numpy, ပန်ဒါ, matplotlib, IPyWidgets လက်ပ်တော့များတွင် ပေါင်းစပ်ထားသော ရလဒ်များ Jupyter ဓာတ်ခွဲခန်း.

ပက်ကေ့ဂျ်မန်နေဂျာမှတဆင့် စာရင်းသွင်းထားသော Python module များကို မတပ်ဆင်မီ pip Alpine Linux ရှိ စနစ်မှီခိုမှုကို ဦးစွာဖြေရှင်းရပါမည်-

  • g++ — အချို့ကို ဘာသာစကားဖြင့် အကောင်အထည်ဖော်ထားသောကြောင့် မော်ဂျူးများကို ပြုစုရန် လိုအပ်ပါသည်။ C ++ နှင့် binary modules အဖြစ် runtime တွင် Python သို့ ချိတ်ဆက်ပါ။
  • freetype-dev - Python module အတွက် မှီခိုမှု matplotlib

မှီခိုမှုကို ထည့်သွင်းခြင်း-

lxc exec jupyterlab -- apk add g++ freetype-dev

ပြဿနာတစ်ခုရှိသည်- Alpine Linux ဖြန့်ဖြူးမှု၏ လက်ရှိအခြေအနေတွင်၊ ၎င်းသည် NumPy ဗားရှင်းအသစ်ကို စုစည်းရန် မဖြစ်နိုင်ပါ၊ ကျွန်ုပ်ဖြေရှင်း၍မရသော စုစည်းမှုအမှားတစ်ခု ပေါ်လာပါမည်-

အမှား: PEP 517 ကိုအသုံးပြု၍ တိုက်ရိုက်တပ်ဆင်၍မရသော numpy အတွက် ဘီးများတည်ဆောက်၍မရပါ။

ထို့ကြောင့်၊ ကျွန်ုပ်တို့သည် စုစည်းပြီးသော ဗားရှင်းကို ဖြန့်ဝေပေးသည့် စနစ်ပက်ကေ့ဂျ်အဖြစ် ဤ module ကို တပ်ဆင်ပါမည်၊ သို့သော် လက်ရှိဆိုက်တွင် ရရှိနိုင်သည့်အရာထက် အနည်းငယ်ပိုကြီးသည်-

lxc exec jupyterlab -- apk add py3-numpy py3-numpy-dev

ထို့နောက် package manager မှတဆင့် Python modules ကို install လုပ်ပါ။ pip. အချို့သော module များသည် compile လုပ်ပြီး မိနစ်အနည်းငယ်ကြာနိုင်သောကြောင့် စိတ်ရှည်ပါ။ ကျွန်ုပ်၏စက်တွင်၊ စုစည်းမှုသည် ~15 မိနစ်ကြာသည်-

lxc exec jupyterlab -- python3 -m pip install pandas ipywidgets matplotlib

ထည့်သွင်းမှု ကက်ရှ်များကို ရှင်းလင်းခြင်း-

lxc exec jupyterlab -- rm -rf /home/*/.cache/pip/*
lxc exec jupyterlab -- rm -rf /root/.cache/pip/*

JupyterLab ရှိ မော်ဂျူးများကို စမ်းသပ်ခြင်း။ ^

ပြေးနေရင်၊ Jupyter ဓာတ်ခွဲခန်းအသစ်ထည့်သွင်းထားသော module များကို အသက်ဝင်စေရန် ၎င်းကို ပြန်လည်စတင်ပါ။ ဒါကိုလုပ်ဖို့၊ ကွန်ဆိုးလ်စက်ရှင်မှာ ကလစ်နှိပ်ပါ။ CTRL+C ပြေးပြီးဝင်ပါ။ y တောင်းဆိုမှုကို ရပ်လိုက်ပြီး ပြန်စပါ။ Jupyter ဓာတ်ခွဲခန်း အမိန့်ကို ထပ်ပြီးမထည့်မိစေရန် ကီးဘုတ်ပေါ်ရှိ မြှားကို နှိပ်ခြင်းဖြင့်၊ Enter စတင်ရန်-

jupyter lab --ip=0.0.0.0 --no-browser --notebook-dir=/mnt/hostfs

စာမျက်နှာသို့သွားပါ http://10.0.5.5:8888/lab သို့မဟုတ် သင့်ဘရောက်ဆာရှိ စာမျက်နှာကို ပြန်လည်စတင်ပါ၊ ထို့နောက် မှတ်စုစာအုပ်ဆဲလ်အသစ်တွင် အောက်ပါကုဒ်ကို ရိုက်ထည့်ပါ။

%matplotlib inline

from ipywidgets import interactive
import matplotlib.pyplot as plt
import numpy as np

def f(m, b):
    plt.figure(2)
    x = np.linspace(-10, 10, num=1000)
    plt.plot(x, m * x + b)
    plt.ylim(-5, 5)
    plt.show()

interactive_plot = interactive(f, m=(-2.0, 2.0), b=(-3, 3, 0.5))
output = interactive_plot.children[-1]
output.layout.height = '350px'
interactive_plot

အောက်ဖော်ပြပါပုံတွင်ကဲ့သို့ ရလဒ်ကို ရရှိသင့်ပါသည်။ IPyWidgets အရင်းအမြစ်ကုဒ်နှင့် အပြန်အလှန်အပြန်အလှန်တုံ့ပြန်သည့် စာမျက်နှာပေါ်ရှိ UI အစိတ်အပိုင်းကို ထုတ်ပေးသည်။ matplotlib လုပ်ဆောင်ချက်ဂရပ်အဖြစ် ပုံ၏ပုံစံဖြင့် ကုဒ်၏ရလဒ်ကို ပြသသည်-

Jupyter ကို LXD ပတ်လမ်းထဲသို့ ပစ်လွှတ်လိုက်သည်။

ဥပမာများစွာ IPyWidgets Tutorials တွေမှာ တွေ့နိုင်ပါတယ်။ ဒီမှာ

တစ်ခြားဘာများ? ^

ဆောင်းပါးရဲ့ အဆုံးကို ရောက်နေတယ်ဆိုရင် ကောင်းပါတယ်။ ထည့်သွင်းမည့် ဆောင်းပါး၏အဆုံးတွင် အဆင်သင့်လုပ်ထားသော ဇာတ်ညွှန်းကို ကျွန်ုပ် တမင်တကာ မတင်ခဲ့ပါ။ Jupyter ဓာတ်ခွဲခန်း အလုပ်သမားများကိုအားပေးရန်အတွက် "ကလစ်တစ်ချက်နှိပ်" တွင် :) သို့သော် Bash script တစ်ခုတည်းသို့ commands များကိုစုဆောင်းပြီးမည်သို့သိပြီးဖြစ်သောကြောင့်သင်ကိုယ်တိုင်လုပ်ဆောင်နိုင်သည် :)

သင်လည်းလုပ်နိုင်သည်-

  • ရိုးရိုးရှင်းရှင်းဖြင့် ရေးခြင်းဖြင့် IP လိပ်စာအစား ကွန်တိန်နာအတွက် ကွန်ရက်အမည်ကို သတ်မှတ်ပါ။ /etc/hosts browser တွင် လိပ်စာကို ရိုက်ထည့်ပါ။ http://jupyter.local:8888
  • ကွန်တိန်နာအတွက် အရင်းအမြစ်ကန့်သတ်ချက်ဖြင့် ကစားပါ၊ ဤအခန်းတွင် ဖတ်ရှုပါ။ အခြေခံ LXD စွမ်းရည်များ သို့မဟုတ် LXD developer site တွင် နောက်ထပ်အချက်အလက်များကို ရယူပါ။
  • အပြင်အဆင်ကို ပြောင်းပါ

Jupyter ကို LXD ပတ်လမ်းထဲသို့ ပစ်လွှတ်လိုက်သည်။

ပြီးတော့ သင်လုပ်နိုင်တာတွေ အများကြီးပါ။ ဒါပါပဲ။ အောင်မြင်ပါစေလို့ ဆုတောင်းပါတယ်။

အပ်ဒိတ်- 15.04.2020/18/30 XNUMX:XNUMX - “မင်္ဂလာပါ ကမ္ဘာ!” အခန်းတွင် ပြုပြင်ထားသော အမှားများ
အပ်ဒိတ်- 16.04.2020/10/00 XNUMX:XNUMX — တိုးချဲ့မန်နေဂျာ အသက်သွင်းခြင်း၏ ဖော်ပြချက်တွင် စာသားကို ပြုပြင်ပြီး ထပ်ထည့်ထားသည် Jupyter ဓာတ်ခွဲခန်း
အပ်ဒိတ်- 16.04.2020/10/40 XNUMX:XNUMX — စာသားတွင်တွေ့ရှိရသောအမှားများကိုပြင်ပြီးအခန်း "အခြေခံဆော့ဖ်ဝဲကိုထည့်သွင်းခြင်းနှင့်စနစ်ထည့်သွင်းခြင်း" အခန်းကိုပိုမိုကောင်းမွန်စေရန်အနည်းငယ်ပြောင်းလဲထားသည်။

source: www.habr.com

မှတ်ချက် Add