Potpourri
Гарчиг
- Гарын товчлуурыг дахин чиглүүлэх
- Дэмон процессууд
- FUSE
- Нөөцлөлт
- API-нууд
- Командын мөрний нийтлэг тугууд/хэв загварууд
- Цонхны менежерүүд
- VPN-үүд
- Markdown
- Hammerspoon (macOS дээрх дэлгэцийн автоматжуулалт)
- Ачаалах ба Live USB-үүд
- Docker, Vagrant, VMs, Cloud, OpenStack
- Нөүтбүүк програмчлал
- GitHub
Гарын товчлуурыг дахин чиглүүлэх
Программист хүний хувьд гар бол таны мэдээлэл оруулах үндсэн хэрэгсэл юм. Таны компьютер дээрх бусад зүйлсийн адилаар гар бас өөрчлөн тохируулах боломжтой (мөн тохируулах ч хэрэгтэй) байдаг.
Хамгийн энгийн өөрчлөлт бол товчлууруудыг дахин чиглүүлэх (remap) явдал юм. Энэ нь ихэвчлэн цаана ажиллаж буй програм хангамж тодорхой нэг товчлуур дарагдах үед тэрхүү үйл явдлыг замаас нь барьж аваад, өөр товчлуур дарагдсантай адил үйлдлээр солих замаар хийгддэг. Жишээлбэл:
- Caps Lock товчлуурыг Ctrl эсвэл Escape болгон өөрчлөх. Бид (багш нар) үүнийг маш их зөвлөдөг, учир нь Caps Lock нь гарын хамгийн тохиромжтой байрлалд байдаг боловч маш ховор ашиглагддаг.
- PrtSc товчийг хөгжим тоглуулах/түр зогсоох болгох. Ихэнх үйлдлийн системүүд тоглуулах/түр зогсоох товчлууртай байдаг.
- Ctrl болон Meta (Windows эсвэл Command) товчлууруудыг хооронд нь солих.
Мөн та товчлууруудыг өөрийн хүссэн дурын тушаалтай холбож болно. Энэ нь таны байнга хийдэг нийтлэг үйлдлүүдэд маш хэрэгтэй байдаг. Үүнд програм хангамж тодорхой товчлуурын хослолыг хүлээж байгаад, тэр хослол дарагдах үед ямар нэгэн скрипт эсвэл програмыг ажиллуулдаг.
- Шинэ терминал эсвэл вэб хөтчийн цонх нээх.
- Байнга хэрэглэдэг урт текстүүдийг автоматаар оруулах (жишээлбэл, таны цахим шуудангийн хаяг эсвэл оюутны ID дугаар).
- Компьютер эсвэл дэлгэцийг унтуулах.
Үүнээс ч илүү нарийн төвөгтэй тохиргоонуудыг хийж болно:
- Дараалсан товчлуур даралтуудыг өөрчлөх, жишээлбэл Shift товчийг таван удаа дарахад Caps Lock идэвхжих.
- Товчлуурыг хурдан дарах болон удаан дарах үеийн үйлдлийг ялгах. Жишээлбэл, Caps Lock товчийг хурдан дараад тавихад Esc-ийн үүрэг гүйцэтгэх ба харин дараад өөр товчтой хамт дарахад Ctrl товч шиг ажиллах.
- Загвар болон програм хангамжаас хамаарч өөр өөрөөр ажиллахаар тохируулах.
Энэ сэдвийг эхлүүлэхэд туслах зарим програм хангамжийн эх сурвалжууд:
- macOS - karabiner-elements, skhd эсвэл BetterTouchTool
- Linux - xmodmap эсвэл Autokey
- Windows - Control Panel-ийн суурилуулсан тохиргоо, AutoHotkey эсвэл SharpKeys
- QMK - Хэрэв таны гар тусгай програм хангамж дэмждэг бол QMK ашиглан гарны техник хангамж түвшинд өөрчлөлтийг хадгалж болно. Ингэснээр та тэр гарыг ямар ч компьютерт залгасан тохиргоо нь хэвээрээ ажиллах болно.
Дэмон процессууд
Та “дэмон” (daemons) гэдэг үгийг өмнө нь сонсож байгаагүй байсан ч тэдний талаар
тодорхой хэмжээний ойлголттой байх магадлалтай. Ихэнх компьютерт хэрэглэгч
ажиллуулж, харилцахаас илүүтэйгээр цаана байнга ажиллаж байдаг хэд хэдэн
процессууд байдаг. Эдгээр процессуудыг дэмон гэж нэрлэх бөгөөд дэмон хэлбэрээр
ажилладаг програмууд нь ихэвчлэн үүнийг илтгэж d үсгээр төгсдөг. Жишээлбэл,
sshd нь гаднаас орж ирж буй SSH хүсэлтүүдийг хүлээн авч, тухайн хэрэглэгчийг
нэвтрэх эрхтэй эсэхийг шалгах үүрэгтэй програм юм.
Linux-д системийн хэмжээнд дэмон процессуудыг удирдах, тохируулахад systemd
хамгийн түгээмэл хэрэглэгддэг шийдэл юм. Та одоо ажиллаж байгаа дэмонуудыг харахын
тулд systemctl status командыг ажиллуулж болно. Тэдгээрийн ихэнх нь танд танил
бус сонсогдож болох ч сүлжээ удирдах, DNS хүсэлтийг шийдвэрлэх, эсвэл график
интерфэйсийг харуулах зэрэг системийн үндсэн чухал үүргүүдийг гүйцэтгэдэг.
Системийн үйлчилгээнүүдийг enable, disable, start, stop, restart хийх,
эсвэл тэдгээрийн ажиллаж буй төлөвийг шалгахын тулд systemctl тушаалыг
ашигладаг.
Илүү сонирхолтой нь, systemd нь шинэ дэмон (эсвэл үйлчилгээ) үүсгэж, тохируулахад
маш хялбар интерфэйсийг олгодог. Доор энгийн Python програмыг ажиллуулах дэмоны
тохиргооны жишээг харуулав. Бид нарийвчлан үзэхгүй ч талбаруудын нэрс нь юу
хийхийг тодорхой хэлж өгч байна.
# /etc/systemd/system/myapp.service
[Unit]
Description=My Custom App
After=network.target
[Service]
User=foo
Group=foo
WorkingDirectory=/home/foo/projects/mydaemon
ExecStart=/usr/bin/local/python3.7 app.py
Restart=on-failure
[Install]
WantedBy=multi-user.target
Мөн хэрэв та тодорхой давтамжтайгаар ямар нэгэн програм ажиллуулахыг хүсвэл
тусдаа дэмон бичих шаардлагагүй бөгөөд системд бэлэн ажиллаж байдаг цагийн
хуваарилалт хийх зориулалттай cron
дэмоныг ашиглаж болно.
FUSE (Хэрэглэгчийн орчны файлын систем)
Орчин үеийн програм хангамжийн системүүд нь ихэвчлэн хоорондоо холбогдсон жижиг
хэсгүүдээс бүрддэг. Файлын системүүдийн дэмждэг үйлдлүүд нь ижил стандарт хэлээр
тодорхойлогддог тун таны үйлдлийн систем өөр өөр төрлийн файлын системүүдийг
дэмждэг. Жишээлбэл, та шинэ файл үүсгэхийн тулд touch ажиллуулахад, touch нь
үйлдлийн системийн цөм рүү файл үүсгэх системийн дуудлага хийж, цөм нь тухайн
файлын системд тохирох дуудлагыг хийж файл үүсгэдэг. Гэвч UNIX файлын системүүд
нь уламжлалт байдлаар цөмийн модуль хэлбэрээр хэрэгждэг бөгөөд зөвхөн цөм нь
файлын системийн үйлдлийг хийх эрхтэй байдаг.
FUSE нь хэрэглэгчийн бичсэн програм файлын системийг хэрэгжүүлэх боломжийг олгодог. FUSE нь хэрэглэгчийн хөгжүүлсэн кодыг ажиллуулан файлын системийн дуудлагуудыг хүлээн авч, тэдгээрийг цөмийн интерфэйстэй холбож өгдөг. Практикт энэ нь хэрэглэгчид файлын системийн дуудлага хийхэд өөрийн хүссэн дурын логикоо програмчилж болно гэсэн үг юм.
Жишээлбэл, FUSE-ийг ашиглан та виртуал файлын систем дээр ямар нэгэн үйлдэл
хийх бүрт тэрхүү үйлдэл нь SSH-ээр дамжин алсын сервер рүү илгээгдэж, тэнд хийгдээд,
үр дүн нь танд буцаж ирэхээр тохируулж болно. Ингэснээр локал програмууд уг
файлыг таны компьютер дээр байгаа мэтээр харах боловч бодит байдал дээр энэ нь
алсын сервер дээр байх болно. Энэ нь яг sshfs-ийн хийдэг ажил юм.
FUSE файлын системийн сонирхолтой жишээнүүд:
- sshfs - Алсын сервер дээрх файл/хавтаснуудыг SSH холболтоор дамжуулан локал орчинд нээх.
- rclone - Dropbox, GDrive, Amazon S3, эсвэл Google Cloud Storage зэрэг үүлэн хадгалах сангуудыг холбож, өгөгдлийг локал файл мэтээр нээх.
- gocryptfs - Шифрлэгдсэн файлын систем. Файлууд нь хадгалагдахдаа шифрлэгдсэн байх боловч файлын системийг холбосон үед тэдгээр нь энгийн текст хэлбэрээр уншигдана.
- kbfs - Төгсгөлөөс төгсгөлд шифрлэгдсэн тархсан файлын систем. Та хувийн, дундын, мөн нийтийн хавтаснуудыг үүсгэх боломжтой.
- borgbackup - Шахаж, давхардлыг арилгаж, шифрлэсэн нөөцлөлтүүдээ хялбар уншиж харахын тулд холбох.
Нөөцлөлт
Таны нөөцлөөгүй байгаа ямар ч өгөгдөл яг одоо ч үүрд устаж алга болоход бэлэн байгаа өгөгдөл юм. Өгөгдлийг хуулах амархан боловч түүгээр найдвартай нөөцлөх нь хэцүү ажил байдаг. Доор нөөцлөлтийн үндсэн сайн туршлага болон зарим аргуудын сул талуудыг дурдав.
Нэгдүгээрт, өгөгдлийг тухайн диск дотор нь өөр газар хуулах нь нөөцлөлт биш юм, учир нь тэр диск өөрөө эвдэрвэл бүх өгөгдөл хамт устана. Үүнтэй адилаар, гэртээ байгаа гадны зөөврийн диск нь гал түймэр, хулгай зэрэг эрсдэлээс хамгаалж чадахгүй тул өөр байршилд хуулбарыг хадгалахыг зөвлөдөг.
Синхрончлолын шийдлүүд нь нөөцлөлт биш юм. Жишээлбэл, Dropbox эсвэл GDrive нь маш тохиромжтой шийдэл боловч өгөгдлийг санамсаргүй устгах эсвэл файл гэмтэх үед энэ өөрчлөлт үүлэн сан руу шууд синхрончлогдон устдаг. Мөн ийм учраас RAID зэрэг дискийг толин тусгал болгон хуулбарлах шийдэл нь нөөцлөлт биш юм. Хэрэв файл устгагдвал, гэмтвэл эсвэл ransomware-аар шифрлэгдвэл RAID таныг аварч чадахгүй.
Сайн нөөцлөлтийн үндсэн шинж чанарууд нь хувилбаржуулалт, давхардлыг арилгах болон аюулгүй байдал юм. Хувилбаржуулалт нь өөрчлөлтийн түүх рүүгээ буцах, файлуудыг хуучин байдалд нь оруулах боломжийг олгодог. Үр ашигтай нөөцлөлтийн системүүд нь өгөгдлийн давхардлыг арилгах аргыг ашиглан зөвхөн өөрчлөгдсөн хэсгийг хадгалж, зай хэмнэдэг. Аюулгүй байдлын хувьд та өөрөөсөө “хэн нэгэн миний өгөгдлийг унших, эсвэл бүр дордвол бүх өгөгдөл болон нөөц хуулбаруудыг минь устгахын тулд юуг мэдэж эсвэл эзэмшсэн байх ёстой вэ?” гэж асуух хэрэгтэй. Эцэст нь, нөөцлөлтөндөө сохроор итгэх нь маш аюултай бөгөөд тэдгээрээс өгөгдлийг буцаан сэргээж болж байгааг тогтмол шалгаж байх хэрэгтэй.
Нөөцлөлт нь зөвхөн таны компьютер дээрх локал файлуудаар хязгаарлагдахгүй. Вэб аппликейшнүүдийн асар хурдацтай өсөлтөөс шалтгаалж таны маш их өгөгдөл зөвхөн үүлэн санд хадгалагдаж байна. Жишээлбэл, та тухайн системүүдийн хаяг руугаа нэвтрэх эрхээ алдвал таны и-мэйл, олон нийтийн сүлжээн дэх зургууд, хөгжмийн жагсаалтууд эсвэл онлайн баримт бичгүүд чинь үгүй болно. Эдгээр мэдээллийн офлайн хуулбарыг авч үлдэх нь зүйтэй бөгөөд та интернэтээс эдгээр өгөгдлийг татаж авах зориулалттай бэлэн хэрэгслүүдийг олж ашиглаж болно.
Илүү дэлгэрэнгүй мэдээллийг 2019 оны Нөөцлөлт хичээлийн тэмдэглэлээс үзнэ үү.
API-нууд
Бид энэ хичээлээр локал даалгавруудыг шийдвэрлэхэд компьютераа хэрхэн үр ашигтай ашиглах талаар их ярьсан боловч эдгээр аргуудыг интернэт орчинд ч ашиглах боломжтой. Онлайнаар ихэнх үйлчилгээнүүд өөрсдийн өгөгдөлд програмаар дамжуулан хандах боломж олгодог “API”-тай байдаг. Жишээлбэл, АНУ-ын засгийн газар цаг агаарын урьдчилсан мэдээг авах API олгодог бөгөөд та үүнийг ашиглан командын мөрөөсөө цаг агаар харах боломжтой.
Ихэнх API нь ижил төстэй бүтэцтэй байдаг. Тэдгээр нь ихэвчлэн api.service.com
хэлбэрийн URL-ууд бөгөөд зам болон асуулгын параметрүүдээр ямар өгөгдөл унших
эсвэл ямар үйлдэл хихийг заадаг. Жишээ нь, АНУ-ын цаг агаарын өгөгдлийн API-аас
тодорхой байршлын мэдээллийг авахын тулд та https://api.weather.gov/points/42.3604,-71.094
хаяг руу GET хүсэлт (жишээ нь curl ашиглан) илгээнэ. Хүсэлтийн хариу нь
тухайн бүс нутгийн цаг агаарын мэдээг авах өөр бусад холбоосуудыг агуулсан
байдаг. Ихэвчлэн хариу нь JSON форматаар ирдэг бөгөөд та үүнийг
jq зэрэг хэрэгслээр дамжуулан өөрт хэрэгтэй
хэлбэрт оруулах боломжтой.
Зарим API нь баталгаажуулалт шаарддаг бөгөөд энэ нь ихэвчлэн хүсэлт дотор нууц токен илгээх хэлбэрээр хийгддэг. Та тухайн үйлчилгээний баримт бичгийг уншиж юу ашигладгийг харах хэрэгтэй боловч “OAuth” гэдэг протокол хамгийн түгээмэл хэрэглэгддэг. Товчхондоо, OAuth нь таны өмнөөс тухайн үйлчилгээнд тодорхой эрхээр хандах боломжтой нууц токенийг олгодог. Эдгээр токенууд нь нууц бөгөөд хэрэв хэн нэгэн таны токенийг олж авбал таны нэрээр дурын үйлдэл хийх боломжтой гэдгийг санаарай!
IFTTT бол API-ийн санаа дээр суурилсан вэб үйлчилгээ бөгөөд олон төрлийн үйлчилгээнүүдийг хооронд нь холбож, үйл явдлуудыг сүлжих боломжийг олгодог. Сонирхоод үзээрэй!
Командын мөрний нийтлэг тугууд/хэв загварууд
Командын мөрний хэрэгслүүд нь хоорондоо маш их ялгаатай байдаг тул тэдгээрийг
ашиглахаас өмнө man хуудсыг нь унших хэрэгтэй. Гэхдээ тэдгээрт дараах нийтлэг
шинж чанарууд байдаг:
- Ихэнх хэрэгслүүд хэрхэн ашиглах богино зааврыг харуулах
--helpтугийг демждэг. - Буцаах боломжгүй өөрчлөлт хийдэг олон хэрэгслүүд “dry run” (туршилтын гүйцэтгэл) горимыг дэмждэг бөгөөд энэ нь бодитоор өөрчлөлт хийлгүйгээр юу хийх гэж байгаагаа хэвлэж харуулдаг. Мөн тэд ихэвчлэн устгах үйлдэл бүрийн өмнө асуудаг интерактив горимын тугтай байдаг.
- Програмын хувилбарыг хэвлэхийн тулд
--versionэсвэл-V-ийг ашиглаж болно (алдааг мэдээлэхэд хэрэгтэй!). - Бараг бүх хэрэгсэлд илүү дэлгэрэнгүй лог мэдээлэл хэвлэх
--verboseэсвэл-vтуг байдаг. Илүү их лог харахын тулд тугийг хэд хэдэн удаа давтаж (-vvv) бичиж болно. Эсрэгээрээ, зөвхөн алдаа гарсан үед л мэдээлэл хэвлэх--quietтуг бас байдаг. - Ихэнх хэрэгслүүдэд файлын нэрний оронд
-тэмдэгтийг бичвэл энэ нь оролтын аргументаас хамаарч стандарт оролт эсвэл стандарт гаралтыг илэрхийлнэ. - Аюултай байж болох хэрэгслүүд нь анхдагч тохиргоогоороо рекурсив байдаггүй
боловч рекурсив ажиллуулах тугийг (ихэвчлэн
-rэсвэл-R) дэмждэг. - Заримдаа та туг шиг харагддаг утгыг энгийн аргумент болгон дамжуулахыг
хүсдэг. Жишээлбэл,
-rнэртэй 파일을 устгах шаардлага гарсан гэж үзье. Эсвэл өөр програмаар дамжуулж ажиллуулах үед (жишээ ньssh machine fooгээд доторх програмд туг дамжуулах үед). Энэ тохиолдолд тусгай--тэмдэгт нь түүний ард байгаа бүх зүйлийг туг гэж үзэлгүйгээр энгийн аргумент болгон дамжуулахыг заадаг:rm -- -rэсвэлssh machine --for-ssh -- foo --for-foo.
Цонхны менежерүүд
Та нарын ихэнх нь Windows, macOS эсвэл Ubuntu-ийн анхдагч цонхны менежер шиг “чирээд тавих” цонхны менежер ашиглаж дассан байх. Цонхнууд нь дэлгэцэн дээр давхарлан хөвж, тэднийг чирж, хэмжээг нь өөрчилж болдог. Эдгээрийг “хөвөгч” цонхны менежер гэж нэрлэдэг. Гэвч ялангуяа Linux систем дээр өөр олон төрлийн цонхны менежерүүд байдаг. Түгээмэл хувилбар бол “плитан” (tiling) цонхны менежер юм. Плитан цонхны менежерт цонхнууд хэзээ ч хоорондоо давхарладаггүй бөгөөд дэлгэцийг бүхэлд нь дүүргэж плита мэт байрладаг (яг tmux-ийн pane-үүд шиг). Дэлгэц нь үргэлж нээлттэй байгаа цонхнуудаар дүүрэн байх бөгөөд сонгосон байршлын схемийн дагуу өөрчлөгдөнө. Хэрэв зөвхөн нэг цонх нээлттэй байвал дэлгэцийг бүхэлд нь эзэлнэ. Хоёр дахь цонхыг нээхэд эхний цонх жижгэрч, шинэ цонхонд зай гаргаж өгнө (жишээ нь 2/3 ба 1/3 харьцаатай). Гурав дахь цонхыг нээхэд бусад цонхнууд дахин жижгэрнэ. Tmux-ийн нэгэн адил та эдгээр цонхнуудын хооронд хулгана хүрэлгүйгээр зөвхөн гараараа шилжиж, хэмжээг нь өөрчилж чадна. Үүнийг судалж үзэхэд илүүдэхгүй!
VPN-үүд
Өнөө үед VPN-үүд маш их моодонд ороод байгаа боловч үүнд ямар нэгэн баттай сайн шалтгаан багаа эсэх нь тодорхойгүй байна. VPN юу хийж чаддаг, юуг хийж чаддаггүйг сайн мэдэх хэрэгтэй. Хамгийн энгийнээр хэлбэл, VPN нь интернэтийн үүднээс таны интернэт үйлчилгээ үзүүлэгчийг (ISP) л сольж байгаа хэрэг юм. Таны бүх сүлжээний урсгал таны бодит байршлаас бус VPN үйлчилгээ үзүүлэгчээс ирж байгаа мэт харагдах бөгөөд таны холбогдсон сүлжээний оператор зөвхөн шифрлэгдсэн өгөгдлийг харах болно.
Энэ нь сонирхолтой сонсогдож болох ч, VPN ашигласнаар та өөрийн итгэлийг одоогийн ISP-ээсээ VPN компани руу л шилжүүлж байгаа хэрэг юм. Таны ISP-ийн харж чадах байсан бүх зүйлийг одоо VPN компани харна. Хэрэв та тэдэнд өөрийн ISP-ээс илүү итгэдэг бол энэ нь ашигтай байж болох ч бусад тохиолдолд тийм ч тодорхой ашиг гарахгүй. Хэрэв та нисэх онгоцны буудлын найдваргүй, шифрлэлтгүй нийтийн Wi-Fi ашиглаж байгаа бол VPN хэрэгтэй байж болох ч гэрийн сүлжээн дээр бол сонголт тийм ч тодорхой биш юм.
Мөн өнөө үед таны нууц мэдээлэл агуулсан сүлжээний ихэнх урсгал HTTPS эсвэл TLS-ээр хэдийнэ шифрлэгдсэн байдаг гэдгийг мэдэх хэрэгтэй. Ийм тохиолдолд та “найдваргүй” сүлжээн дээр байгаа эсэх нь тийм ч чухал биш бөгөөд сүлжээний оператор таныг ямар сервер рүү хандаж байгааг л мэдэхээс биш солилцож буй өгөгдлийг харж чадахгүй.
Дээр би “хамгийн энгийнээр хэлбэл” гэж хэлснийг анхаараарай. Заримдаа VPN үйлчилгээ үзүүлэгчид програмаа буруу тохируулснаас болж шифрлэлт нь сул эсвэл бүр идэвхгүй болсон тохиолдлууд гардаг. Зарим хорлонтой (эсвэл ядаж боломжийг ашиглахыг хичээсэн) VPN компаниуд таны бүх мэдээллийг бүртгэж аван гуравдагч этгээдэд зарах тохиолдол ч бий. Буруу VPN үйлчилгээ үзүүлэгчийг сонгох нь VPN огт ашиглахгүй байснаас ч илүү аюултай байж болно.
Хэрэг болвол MIT өөрийн оюутнуудад зориулан VPN ажиллуулдаг. Мөн хэрэв та өөрийн VPN-ийг үүсгэхийг хүсвэл WireGuard-ийг судалж үзээрэй.
Markdown
Таны карьерын явцад ямар нэгэн бичвэр бичих шаардлага гарах магадлал маш өндөр юм. Тэгээд тэрхүү бичвэрээ хялбар аргаар форматлахыг хүсэх байх. Зарим үгийг тод, налуу болгох, гарчиг оруулах, холбоос болон кодын хэсгийг нэмэхийг хүсдэг. Word эсвэл LaTeX зэрэг хүнд багажуудыг ашиглахын оронд хөнгөн бичих зориулалттай тэмдэглэгээний хэл болох Markdown-ыг ашиглаж болно.
Та Markdown-ыг өмнө нь харж байсан эсвэл ямар нэг хувилбарыг нь ашиглаж байсан
байх. Үүнийг Markdown гэж нэрлэхгүй байсан ч интернэтэд бараг хаа сайгүй
дэмждэг. Markdown-ыг анх хүмүүсийн энгийн текст файл бичихдээ ашигладаг байсан
хэв загварыг коджуулах зорилгоор үүсгэсэн. Налуу бичвэрийг (italics) үгийн
хоёр талд * тавьж, тод бичвэрийг (bold) ** тавьж оруулдаг. #
тэмдэгтээр эхэлсэн мөрүүд нь гарчиг болох бөгөөд #-ийн тоо нь дэд гарчгийн
түвшнийг заана. - тэмдэгтээр эхэлсэн мөр нь жагсаалт, тоо болон цэгээр эхэлсэн
мөр нь дугаарласан жагсаалтыг үүсгэнэ. Ганц хашилтыг кодын фонт-ыг харуулахад
ашиглах бөгөөд кодын блокийг дөрвөн сул зайгоор догол мөр үүсгэх эсвэл гурвалсан
хашилтаор хүрээлж үүсгэнэ:
энд код бичигдэнэ
Холбоос нэмэхийн тулд холбоосын нэр текстийг дөрвөлжин хаалтанд, харин хаягийг
(URL) нь дугуй хаалтанд бичнэ: [нэр](хаяг). Markdown-ыг сурахад маш хялбар
бөгөөд хаа ч ашиглаж болно. Үнэндээ энэ хичээлийн болон бусад бүх хичээлийн
тэмдэглэлүүд Markdown дээр бичигдсэн бөгөөд эх кодыг нь эндээс
харах боломжтой.
Hammerspoon (macOS дээрх дэлгэцийн автоматжуулалт)
Hammerspoon бол macOS-д зориулсан дэлгэцийн автоматжуулалтын систем юм. Энэ нь үйлдлийн системийн үйл ажиллагаатай холбогдох Lua скрипт бичих боломжийг олгодог бөгөөд гар/хулгана, цонхнууд, дэлгэц, файлын систем болон бусад олон зүйлтэй харилцах боломжийг олгодог.
Hammerspoon-оор хийж болох зарим жишээ:
- Цонхнуудыг тодорхой байрлал руу зөөх товчлуурын хослолуудыг тохируулах.
- Менюний мөрөн дээр цонхнуудыг тодорхой схемээр байрлуулах товчлуур үүсгэх.
- Лабораторид ирэхэд (Wi-fi сүлжээг таньж) чанга яригчаа автоматаар хаах.
- Хэрэв та найзынхаа тэжээлийн утсыг санамсаргүй аваад явсан бол анхааруулга харуулах.
Hammerspoon нь товчлуур дарах эсвэл ямар нэгэн үйл явдалтай холбон Lua код ажиллуулах боломж олгодог бөгөөд системтэй харилцах маш олон санг агуулсан тул хийж чадах зүйлд хязгаар байхгүй. Олон хүмүүс өөрсдийн Hammerspoon тохиргоог нээлттэй хуваалцсан байдаг тул интернэтээс хайж олох боломжтой, эсвэл өөрийн кодоо эхнээс нь бичиж болно.
Нөөц эх сурвалжууд
Ачаалах ба Live USB-үүд
Таны компьютер ачаалахад, үйлдлийн систем ачаалагдахаас өмнө BIOS/UEFI системүүд тоног төхөөрөмжийг бэлтгэдэг. Энэ үед та тодорхой товчлууруудыг дарснаар BIOS-ийн тохиргоо руу нэвтрэх боломжтой. Жишээлбэл, ачаалах явцад “Press F9 to configure BIOS. Press F12 to enter boot menu.” гэж харагдаж болно. Та BIOS цэснээс техник хангамжийн бүхий л тохиргоог хийж болно. Мөн ачаалах цэс рүү нэвтэрч өөрийн үндсэн дискийн оронд өөр төхөөрөмжөөс ачаалахаар сонгож болно.
Live USB нь дотроо үйлдлийн систем
агуулсан флаш диск юм. Үүнийг үйлдлийн системийн дүрсийг (жишээ нь Linux тархац)
татаж аваад флаш диск рүү шатаах замаар үүсгэдэг. Энэ нь зүгээр л .iso файлыг
диск рүү хуулахаас арай илүү нарийн ажил юм. Үүнд зориулж
UNetbootin зэрэг live USB үүсгэх хэрэгслүүдийг
ашигладаг.
Live USB нь маш олон зорилгоор хэрэг болдог. Жишээлбэл, хэрэв таны үйлдлийн систем эвдэрч ачаалахаа boilson бол та live USB ашиглан системээ сэргээх эсвэл өгөгдлөө хуулж авч болно.
Docker, Vagrant, VMs, Cloud, OpenStack
Виртуал машинууд болон түүнтэй төстэй контейнер (containers) зэрэг хэрэгслүүд нь үйлдлийн системтэй хамт компьютерийн системийг бүхэлд нь дуурайлган ажиллуулах боломж олгодог. Энэ нь туршилт хийх, хөгжүүлэлт хийх, эсвэл аюултай байж болох кодыг тусгаарлагдсан орчинд ажиллуулахад маш хэрэгтэй байдаг.
Vagrant бол машины тохиргоог (үйлдлийн систем,
үйлчилгээ, багцууд гэх мэт) кодоор бичиж тодорхойлоод, vagrant up командаар
шуудан виртуал машин үүсгэдэг хэрэгсэл юм. Docker нь
концепцын хувьд үүнтэй төстэй боловч контейнер технологийг ашигладаг.
Мөн та үүлэн сүлжээнээс виртуал машин түрээслэж авах боломжтой бөгөөд энэ нь дараах тохиолдолд тохиромжтой:
- Үйлчилгээ байршуулах зориулалттай, олон нийтийн IP хаягтай, байнга ажиллах хямд машин ашиглах
- Маш өндөр CPU, диск, шуурхай санах ой (RAM) эсвэл график карт (GPU) бүхий машин ашиглах
- Өөрт байгаагаас хамаагүй олон машин зэрэг ажиллуулах (ихэвчлэн секундээр тооцож төлбөр авдаг тул богино хугацаанд их хэмжээний тооцоолол хийхийн тулд 1000 компьютерыг хэдхэн минутаар түрээслэх боломжтой байдаг)
Түгээмэл үйлчилгээнүүдэд Amazon AWS, Google Cloud, Microsoft Azure, DigitalOcean зэрэг орно.
Хэрэв та MIT CSAIL-ийн гишүүн бол судалгааны зорилгоор CSAIL OpenStack instance-ээр дамжуулан үнэгүй виртуал машин авах боломжтой.
Нөүтбүүк програмчлал
Нөүтбүүк програмчлалын орчин нь интерактив болон туршилтын хөгжүүлэлт хийхэд маш тохиромжтой байдаг. Өнөөдөр хамгийн түгээмэл нөүтбүүк програмчлалын орчин бол Python-д (мөн бусад хэд хэдэн хэлд) зориулагдсан Jupyter юм. Wolfram Mathematica бол математик чиглэлийн програмчлал хийхэд зориулагдсан өөр нэг нөүтбүүк орчин юм.
GitHub
GitHub бол нээлттэй эхийн програм хангамж хөгжүүлэлтийн хамгийн түгээмэл платформуудын нэг юм. Манай хичээлээр ярьсан vim-ээс эхлээд Hammerspoon хүртэлх олон хэрэгслүүд GitHub дээр байрладаг. Та өдөр тутам хэрэглэдэг хэрэгслүүдээ сайжруулахад туслах замаар нээлттэй эхийн төсөлд хувь нэмрээ оруулж эхлэхэд маш амархан.
GitHub дээрх төслүүдэд хувь нэмэр оруулах үндсэн хоёр арга бий:
- Issue үүсгэх. Энэ нь алдааг мэдээлэх эсвэл шинэ боломж нэмэх хүсэлт гаргахад ашиглагддаг. Аль аль нь код бичих эсвэл унших шаардлагагүй тул хийхэд хялбар байдаг. Чанартай алдааны мэдээлэл нь хөгжүүлэгчдэд маш их үнэ цэнэтэй байдаг. Мөн одоо байгаа хэлэлцүүлэгт саналаа бичих нь тустай.
- Pull request (хүсэлт илгээх) ашиглан код оруулах. Энэ нь ерөнхийдөө issue үүсгэхээс илүү их ажил шаарддаг. Та GitHub дээр тухайн төслийн репозиторыг өөрийн хаяг руу салгаж авах (fork) боломжтой бөгөөд өөрийн хуулбар дээрээ шинэ салбар үүсгэн, өөрчлөлтөө (жишээ нь алдаа засах эсвэл шинэ боломж нэмэх) хийгээд, түүнийгээ өөрийн салбар луу түлхэж, дараа нь үндсэн төсөл рүү татах хүсэлт үүсгэх (pull request) боломжтой. Үүний дараа төслийг хариуцагч нартай санал солилцож, тэд таны кодонд санал шүүмж өгөх болно. Эцэст нь, хэрэв бүх зүйл зөв байвал таны код үндсэн төслийн кодтой нэгдэх болно. Ихэнхдээ том төслүүд хувь нэмэр оруулах зааварчилгаа бэлдсэн байдаг бөгөөд шинээр эхэлж буй хүмүүст зориулсан хялбар issue-үүдийг тэмдэглэсэн, мөн зааж чиглүүлэх менторшип хөтөлбөрүүдтэй ч байдаг.
Лиценз: CC BY-NC-SA.