Q&A
Сүүлийн хичээлээр бид оюутнуудаас ирүүлсэн асуултуудад хариулсан юм:
- Үйлдлийн системтэй холбоотой сэдвүүд болох процесс, виртуал санах ой, тасалдал, санах ойн менежмент гэх мэтийг сурахад ямар зөвлөмж өгөх вэ?
- Хамгийн түрүүнд ямар хэрэгслүүдийг сурахыг эрхэмлэх вэ?
- Хэзээ Python, хэзээ Bash скрипт, эсвэл өөр програмчлалын хэл ашиглах вэ?
source script.shболон./script.shхоёрын ялгаа юу вэ?- Багц болон хэрэгслүүд хаана хадгалагддаг вэ, тэднийг хэрхэн дууддаг вэ?
/binэсвэл/libгэж юу вэ? - Би python-ийн багцыг
apt-get installашиглаж суулгах уу, эсвэлpip installашиглах уу? - Кодынхоо гүйцэтгэлийг сайжруулахад ашиглах хамгийн хялбар бөгөөд шилдэг профилинг хэрэгсэл юу вэ?
- Та ямар вэб хөтчийн өргөтгөлүүдийг ашигладаг вэ?
- Өгөгдөл цэгцлэх өөр ямар ашигтай хэрэгслүүд байдаг вэ?
- Docker болон виртуал машины ялгаа юу вэ?
- Үйлдлийн систем бүрийн давуу болон сул талууд юу вэ, тэдгээрийг хэрхэн сонгох вэ (жишээ нь өөрийн зорилгод нийцсэн хамгийн сайн Linux тархацыг сонгох)?
- Vim үү, Emacs уу?
- Машин сургалтын аппликейшнүүдэд зориулсан ямар нэгэн зөвлөмж байна уу?
- Vim-ийн өөр зөвлөмжүүд бий юу?
- 2FA гэж юу вэ, яагаад би үүнийг ашиглах ёстой вэ?
- Вэб хөтчүүдийн ялгаатай байдлын талаар ямар нэгэн санал байна уу?
Үйлдлийн системтэй холбоотой сэдвүүд болох процесс, виртуал санах ой, тасалдал, санах ойн менежмент гэх мэтийг сурахад ямар зөвлөмж өгөх вэ?
Нэгдүгээрт, эдгээр нь маш доод түвшний сэдвүүд тул та үнэхээр эдгээрийг гүнзгий мэдэх шаардлагатай эсэх нь тодорхойгүй байна. Та өөрөө үйлдлийн системийн цөмийг хэрэгжүүлэх эсвэл өөрчлөх зэрэг доод түвшний код бичихгүй л бол, өмнөх хичээлүүдээр цухас дурдсан процессууд болон дохионоос бусад сэдвүүд нь өдөр тутамд төдийлөн хэрэглэгдэхгүй болов уу.
Гэхдээ энэ сэдвийг сурахад хэрэгтэй зарим сайн нөөцүүд:
- MIT-ийн 6.828 хичээл - Үйлдлийн системийн инженерчлэлийн ахисан түвшний хичээл. Хичээлийн материалууд нь нийтэд нээлттэй байдаг.
- Modern Operating Systems (4th ed) - Andrew S. Tanenbaum-ийн бичсэн энэ ном нь дээр дурдсан олон ойлголтуудын маш сайн тоймыг өгдөг.
- The Design and Implementation of the FreeBSD Operating System - FreeBSD үйлдлийн системийн талаарх сайн гарын авлага (энэ нь Linux биш гэдгийг анхаараарай).
- Мөн хүмүүс янз бүрийн хэлээр (голдуу сургалтын зорилгоор) алхам алхмаар үйлдлийн системийн цөм бичдэг Writing an OS in Rust зэрэг бусад гарын авлагууд байдаг.
Хамгийн түрүүнд ямар хэрэгслүүдийг сурахыг эрхэмлэх вэ?
Хамгийн түрүүнд цаг гаргаж сурах зарим сэдвүүд:
- Хулганыг бага ашиглаж, гарыг илүү ашиглаж сурах. Үүнд гарын товчлолууд сурах, интерфейсээ өөрчлөх зэрэг хамаарна.
- Код засварлагчаа маш сайн эзэмших. Программист хүний ихэнх цаг файлууд засахад өнгөрдөг тул энэ чадварыг сайн эзэмших нь урт хугацаанд үр өгөөжөө өгнө.
- Өөрийн хийдэг давтагдсан үйлдлүүдийг хялбарчлах эсвэл автоматжуулж сурах. Ингэснээр та асар их цаг хугацаа хэмнэнэ.
- Git зэрэг хувилбарын хяналтын систем болон GitHub-ийг хэрхэн хамтран ажиллуулах хэрэгсэл болгон ашиглахыг сурах.
Хэзээ Python, хэзээ Bash скрипт, эсвэл өөр програмчлалын хэл ашиглах вэ?
Ерөнхийдөө, bash скриптүүд нь тодорхой хэдэн командыг дараалуулан ажиллуулах шаардлагатай энгийн бөгөөд нэг удаагийн жижиг үйлдлүүдэд маш тохиромжтой байдаг. Гэвч bash-д илүү том програм бичихэд хүндрэлтэй болгодог хэд хэдэн өвөрмөц шинж чанарууд байдаг:
- bash нь энгийн үйлдлүүдэд хялбар боловч боломжит бүх оролтод зөв ажиллуулахад хэцүү байж болно. Жишээлбэл, скриптийн аргумент доторх сул зайнуудаас болж маш олон алдаа гардаг.
- bash-д өмнө бичсэн програмын бүрэлдэхүүн хэсгүүдийг дахин ашиглахад хэцүү байдаг. Өөрөөр хэлбэл, bash-д програм хангамжийн сангууд гэсэн ойлголт байдаггүй.
- bash нь тодорхой утгыг илэрхийлэхдээ
$?эсвэл$@зэрэг олон төрлийн шидэт тэмдэгтүүдийг ашигладаг бол бусад хэл дээр тэдгээрийгexitCodeэсвэлsys.argsгэж шууд ойлгомжтойгоор нэрлэдэг.
Тиймээс илүү том, нарийн төвөгтэй скриптүүдийн хувьд бид Python эсвэл Ruby зэрэг илүү хөгжсөн хэлүүдийг ашиглахыг зөвлөдөг. Эдгээр хэл дээр хүмүүсийн өмнө нь бичсэн олон мянган сангуудыг интернэтээс бэлэн олж ашиглах боломжто. Хэрэв таны шийдэх гээд байгаа асуудлыг аль нэг програмчлалын хэл дээр бэлэн хэрэгжүүлсэн сан байвал тухайн хэлийг шууд ашиглах нь хамгийн зөв сонголт юм.
source script.sh болон ./script.sh хоёрын ялгаа юу вэ?
Хоёр тохиолдолд хоёуланд нь script.sh файлыг bash сешшн дотор уншиж
ажиллуулах боловч ялгаа нь аль сешшн дээр тушаалууд ажиллаж байгаад оршино.
source командыг ашиглах үед командууд таны одоо ажиллаж байгаа bash сешшн
дотор шууд ажиллах тул хавтас өөрчлөх, эсвэл функц зарлах зэрэг хүрээлэн буй
орчинд хийсэн бүх өөрчлөлтүүд source команд ажиллаж дууссаны дараа ч хэвээрээ
үлдэнэ.
Харин ./script.sh гэж дангаар нь ажиллуулах үед одоо ажиллаж буй сешшн маань
шинээр тусдаа bash процесс үүсгэж, тэр дотор script.sh-ийг ажиллуулдаг.
Тиймээс хэрэв script.sh дотор хавтас өөрчилбөл шинээр үүссэн bash процесс
дотор л хавтас өөрчлөгдөхөөс биш, уг процесс ажиллаж дуусаад эцэг сешшн рүү
буцахад одоогийн хавтас хэвээрээ үлдэнэ. Үүнтэй адилаар, хэрэв script.sh дотор
таны терминал дээрээ ашиглахыг хүссэн функц тодорхойлогдсон бол түүнийг
одоогийн сешшнд оруулахын тулд заавал source хийх шаардлагатай. Эсрэг тохиолдолд
шинэ процесс үүсэж функц тодорхойлогдоод, процесс хаагдахад устах болно.
Багц болон хэрэгслүүд хаана хадгалагддаг вэ, тэднийг хэрхэн дууддаг вэ? /bin эсвэл /lib гэж юу вэ?
Таны терминал дээр ажиллуулдаг програмууд нь бүгд PATH орчны хувьсагчид
заасан хавтаснууд дотор байдаг бөгөөд та which (эсвэл type) командыг
ашиглан системийн хаанаас уг програмыг дуудаж байгааг шалгах боломжтой.
Ерөнхийдөө файлын системд ямар төрлийн файлууд хаана хадгалагдах талаар тодорхой
хэвшсэн дүрмүүд байдаг. Тэдгээрийн заримыг доор дурдав, илүү дэлгэрэнгүйг
Filesystem Hierarchy Standard
хуудаснаас үзнэ үү:
/bin- Системийн үндсэн хэрэгцээт командуудын бинар файлууд/sbin- Системийн удирдлагын үндсэн командууд (голдуу root эрхээр ажиллуулдаг)/dev- Төхөөрөмжийн файлууд (техник хангамжтай харилцах тусгай файлууд)/etc- Тухайн компьютерт хамаарах системийн хэмжээний тохиргооны файлууд/home- Хэрэглэгчдийн хувийн хавтаснууд/lib- Системийн програмуудад хэрэгтэй нийтлэг сангууд/opt- Нэмэлт аппликейшн програм хангамжууд/sys- Системийн мэдээлэл болон тохиргоонуудыг агуулдаг (эхний хичээлээр үзсэн)/tmp- Түр зуурын файлууд (/var/tmpмөн адил). Ихэвчлэн компьютер унтраад асахад устдаг./usr/- Хэрэглэгчийн зөвхөн унших боломжтой өгөгдөл/usr/bin- Системийн бус командуудын бинар файлууд/usr/sbin- Системийн бус удирдлагын командууд (голдуу root эрхээр ажиллуулдаг)/usr/local/bin- Хэрэглэгчийн өөрөө хөрвүүлж суулгасан програмууд
/var- Лог файл, кэш зэрэг байнга өөрчлөгддөг файлууд
Би python-ийн багцыг apt-get install ашиглаж суулгах уу, эсвэл pip install ашиглах уу?
Үүнд шууд нэг хариулт байхгүй. Энэ нь програм суулгахдаа үйлдлийн системийнхээ багц менежерийг ашиглах уу, эсвэл тухайн програмчлалын хэлний багц менежерийг ашиглах уу гэдэг ерөнхий асуулттай холбоотой юм. Анхаарах зарим зүйлс:
- Түгээмэл багцууд нь хоёулан дээр нь байх боловч бага ашиглагддаг эсвэл маш шинэ багцууд үйлдлийн системийн багц менежер дээр байхгүй байж болно. Энэ тохиолдолд хэлний багц менежерийг ашиглах нь зөв сонголт юм.
- Хэлний багц менежерүүд нь үйлдлийн системийнхээс илүү шинэ хувилбаруудыг агуулж байдаг.
- Үйлдлийн системийн багц менежер ашиглах үед сангууд системийн хэмжээнд
суулгагддаг. Энэ нь өөр өөр төсөл дээр ажиллахад сангийн өөр хувилбаруудыг
ашиглах шаардлага гарвал хүндрэл үүсгэнэ. Иймээс ихэнх хэлүүд тусгаарлагдсан
виртуал орчныг дэмждэг бөгөөд ингэснээр системийн бусад сантай зөрчилдөхгүйгээр
өөр хувилбаруудыг суулгах боломжтой болдог. Python-д
virtualenv, Ruby-дRVMбайдаг. - Үйлдлийн систем болон техник хангамжаас хамаарч зарим багцууд бэлэн бинар хэлбэрээр ирэх эсвэл эх кодоос нь хөрвүүлэх шаардлага гарч болно. Жишээлбэл, Raspberry Pi зэрэг ARM компьютер дээр хэлний багц менежэрээр суулгахад хөрвүүлэх шаардлагатай болж маш их цаг авах тул бэлэн бинартай ирдэг үйлдлийн системийн багц менежерийг ашиглах нь илүү дээр байдаг. Энэ нь таны тохиргооноос ихээхэн хамаарна.
Та хоёуланг нь хольж ашиглахгүй байхыг хичээгээрэй, учир нь энэ нь шийдвэрлэхэд
хэцүү алдаануудад хүргэж болно. Бидний зөвлөмж бол боломжтой бол хэлний багц
менежерийг ашиглаж, системийн глобал орчныг бохирдуулахгүйн тулд тусгаарлагдсан
орчныг (жишээ нь Python-ийн virtualenv) ашиглах явдал юм.
Кодынхоо гүйцэтгэлийг сайжруулахад ашиглах хамгийн хялбар бөгөөд шилдэг профилинг хэрэгсэл юу вэ?
Хамгийн энгийн бөгөөд маш хэрэгцээтэй хэрэгсэл бол хугацааг хэвлэх юм. Та кодынхоо өөр өөр хэсгүүдийн хооронд зарцуулсан хугацааг гараар тооцож хэвлэнэ. Үүнийг давтан хийснээр кодоо хоёртын хайлтаар шалгаж, хамгийн их цаг авч байгаа хэсгийг олж чадна.
Илүү ахисан түвшний хэрэгсэл болох Valgrind-ийн Callgrind
нь програмаа ажиллуулж, бүх зүйл хэр хугацаа зарцуулж байгааг, аль функц
алийгаа дуудсан болохыг хэмжих боломжийг олгодог. Дараа нь мөр бүрт зарцуулсан
хугацаатай кодын гаралтыг харуулдаг. Гэхдээ энэ нь програмыг асар ихээр
удаашруулдаг ба олон урсгалтай програмыг дэмждэггүй. Бусад тохиолдолд,
perf болон бусад хэлэнд зориулсан
түүвэрлэгч шинжүүд нь хурдан бөгөөд хэрэгцээтэй мэдээллийг өгч чадна.
Флеймграф нь эдгээр шинжүүрийн
гаралтыг дүрслэн харуулах маш сайн хэрэгсэл юм. Мөн та өөрийн ажиллаж буй
програмчлалын хэлний зориулалтын хэрэгслийг ашиглаж үзээрэй. Жишээлбэл, вэб
хөгжүүлэлтийн хувьд Chrome болон Firefox хөтчийн inspect хэрэгсэлд гайхалтай
профилинг хийх функцүүд суурилсан байдаг.
Заримдаа таны код удаан ажиллаж байгаа шалтгаан нь дискнээс унших эсвэл
сүлжээнээс пакет хүлээх зэрэг систем гаднаас үйл явдал хүлээж байгаатай холбоотой
байдаг. Энэ тохиолдолд техник хангамжийн боломжийн онолын хурд болон бодит хурд
хоёрын зөрүүг тооцож үзэх хэрэгтэй. Мөн системийн дуудлагуудын хүлээлтийн хугацааг
шинжлэх тусгай хэрэгслүүд байдаг. Үүнд хэрэглэгчийн програмыг цөм түвшинд хянах
eBPF
орно. Ялангуяа ийм төрлийн доод түвшний профилинг хийхэд bpftrace-ийг
судалж үзэхийг зөвлөж байна.
Та ямар вэб хөтчийн өргөтгөлүүдийг ашигладаг вэ?
Бидний хамгийн дуртай, ихэвчлэн аюулгүй байдал, хэрэглээнд зориулсан зарим өргөтгөлүүд:
- uBlock Origin - Энэ бол зөвхөн сурталчилгааг зогсоох биш, вэб хуудасны хийх гэж оролдож буй гуравдагч талын харилцаа холбоог хаадаг олон талт хаагч юм. Үүнд дотоод скриптүүд болон бусад нөөцүүдийг ачаалах үйлдэл ч багтана. Хэрэв та тохируулга хийхэд цаг гаргаж чадвал medium горим эсвэл бүр hard горим руу шилжиж болно. Эдгээр горимууд нь тохиргоог нь зөв тааруулах хүртэл зарим сайтыг ажиллуулахгүй байх магадлалтай ч таны онлайн аюулгүй байдлыг эрс сайжруулна. Бусад тохиолдолд, easy горим нь ихэнх сурталчилгаа болон мөрдөгчдийг хаадаг сайн анхдагч тохиргоо юм. Та өөрөө вэбсайтын ямар объектуудыг хаах тухай дүрмээ тодорхойлж болно.
- Stylus - Stylish өргөтгөлийн хувилбар (Stylish-ийг бүү ашиглаарай, энэ нь хэрэглэгчийн хайлтын түүхийг хулгайлдаг нь тогтоогдсон), вэбсайтуудад өөрийн гэсэн CSS загваруудыг ашиглах боломжийг олгодог. Stylus-ийн тусламжтай та вэбсайтуудын харагдах байдлыг хялбархан өөрчилж болно. Үүнд хажуугийн цэсийг устгах, арын өнгийг өөрчлөх, текстийн хэмжээ эсвэл фонтыг өөрчлөх зэрэг орно. Энэ нь таны байнга зочилдог вэбсайтуудыг уншихад илүү хялбар болгодог. Мөн Stylus нь бусад хэрэглэгчдийн бичиж userstyles.org дээр нийтэлсэн загваруудыг олж ашиглах боломжийг олгодог. Ихэнх түгээмэл вэбсайтуудад зориулсан харанхуй сэдэв байдаг.
- Full Page Screen Capture - Firefox-д суурилсан байдаг ба Chrome-д зориулсан өргөтгөл бий. Энэ нь вэбсайтыг бүхэлд нь зураг болгон авах боломж олгодог бөгөөд мэдээллийг хэвлэхээс хамаагүй илүү сайн хадгалж үлддэг.
- Multi Account Containers - күүки-үүдийг тусдаа “сав”-нд хуваах боломж олгодог бөгөөд ингэснээр та вэбийг өөр өөр хаягаар зэрэг ашиглах, мөн вэбсайтууд хоорондоо мэдээлэл хуваалцахаас сэргийлдэг.
- Password Manager Integration - Ихэнх нууц үг хадгалагч системүүд вэб хөтчийн өргөтгөлтэй байдаг бөгөөд энэ нь нэвтрэх мэдээллээ оруулахад хялбар бөгөөд илүү аюулгүй болгодог. Энгийн хуулж тавихаас ялгаатай нь, эдгээр хэрэгслүүд вэбсайтын домэйн нэр нь хадгалсан хаягтай таарч байгаа эсэхийг эхлээд шалгадаг тул хуурамч вэбсайтад нууц үгээ алдахаас сэргийлдэг.
- Vimium - Vim засварлагчийн адилаар вэб хөтчийг зөвхөн гараас удирдах боломж олгодог вэб хөтчийн өргөтгөл.
Өгөгдөл цэгцлэх өөр ямар ашигтай хэрэгслүүд байдаг вэ?
Бидний хичээлээр ярьж амжаагүй өгөгдөл цэгцлэх зарим хэрэгслүүдэд JSON өгөгдөл
задлан шинжлэхэд зориулсан jq, HTML өгөгдөлд зориулсан pup зэрэг орно. Perl
програмчлалын хэл нь илүү ахисан түвшний өгөгдөл цэгцлэх шугамд ашиглахад маш
сайн хэрэгсэл юм. Өөр нэгэн хэрэгтэй тушаал бол сул зайгаар тусгаарлагдсан
(гэхдээ тэгш бус) текстийг баганаар тэгшлэн харуулдаг column -t команд юм.
Мөн уламжлалт бус өгөгдөл цэгцлэх хэрэгслүүд бол vim болон Python юм. Олон мөр дамнасан нарийн төвөгтэй өөрчлөлтүүдийн хувьд vim-ийн макро нь маш хэрэгтэй хэрэгсэл юм. Та тодорхой үйлдлийг бичиж аваад, түүнийгээ хэдэн ч удаа давтан ажиллуулж болно. Жишээлбэл, код засварлагчийн хичээлийн тэмдэглэл дээрх (солон өнгөрсөн жилийн бичлэг дээрх) макро ашиглан XML файлыг JSON файл руу хэрхэн хөрвүүлж байгааг харж болно.
CSVs гэх мэт хүснэгтэн өгөгдлүүдэд зориулсан Python-ийн pandas сан нь маш сайн хэрэгсэл юм. Энэ нь group by, join, filter зэрэг нарийн үйлдлүүдийг хялбар болгоод зогсохгүй өгөгдлийн өөр өөр шинж чанарыг график болгон зурахад маш хялбар болгодог. Мөн өгөгдлийг XLS, HTML, эсвэл LaTeX хүснэгт хэлбэрээр экспортлохыг дэмждэг. Үүний зэрэгцээ өгөгдлийн статистик тооцоолол хийхэд R програмчлалын хэл (асуудалтай муу хэл гэгддэг ч) маш их хэрэглэгддэг бөгөөд таны боловсруулах ажлын сүүлчийн алхамд маш хэрэгтэй байж болно. R хэлний ggplot2 бол маш сайн график зурах сан юм.
Docker болон виртуал машины ялгаа юу вэ?
Docker нь контейнер гэх ерөнхий ойлголт дээр суурилдаг. Контейнер болон виртуал машины үндсэн ялгаа нь виртуал машин нь эзэн машинтай ижил цөмтэй байсан ч үйлдлийн системийн бүхэл бүтэн багцыг, түүний дотор цөмийг тусад нь ажиллуулдагт оршино. Харин контейнер нь өөр цөм ажиллуулахаас зайлсхийж, эзэн машины цөмийг хуваалцаж ашигладаг. Linux-д үүнийг LXC механизм болон тусгаарлах аргуудын тусламжтайгаар хийдэг бөгөөд ингэснээр тухайн програм өөрийгөө тусдаа техник хангамж дээр ажиллаж байна гэж үзэх боловч бодит байдал дээр эзэн машины техник хангамж болон цөмийг хуваалцаж байдаг. Тиймээс контейнер нь бүтэн виртуал машинаас хамаагүй бага нөөц шаарддаг.
Эсрэгээрээ, контейнерийн тусгаарлалт нь арай сул бөгөөд зөвхөн эзэн машинтайгаа ижил төрлийн цөм ажиллуулж байгаа тохиолдолд л ажилладаг. Жишээлбэл, хэрэв та macOS дээр Docker ажиллуулбал, Docker нь эхлээд Linux-ийн виртуал машин ажиллуулж байж Linux цөмийг олж авах тул нөөц зарцуулалт нь өндөр хэвээр байх болно. Түүнчлэн, Docker бол контейнерийн тусгай нэг хэрэгжүүлэлт бөгөөд програм хангамжийг бэлтгэж хүргэхэд зориулагдсан байдаг. Үүнээс шалтгаалж зарим онцлогтой: жишээлбэл, Docker контейнерууд нь анхдагч тохиргоогоороо компьютер унтраад асахад ямар ч өгөгдлийг хадгалж үлддэггүй.
Үйлдлийн систем бүрийн давуу болон сул талууд юу вэ, тэдгээрийг хэрхэн сонгох вэ (жишээ нь өөрийн зорилгод нийцсэн хамгийн сайн Linux тархацыг сонгох)?
Зөндөө олон Linux тархацууд байдаг ч тэдгээрийн ихэнх нь бараг ижилхэн ажилладаг. Linux болон UNIX-ийн үндсэн үйлдлүүд, дотоод бүтцийг аль ч тархац дээр сурч болно. Тархацуудын үндсэн ялгаа нь тэд багцын шинэчлэлтийг хэрхэн шийддэгт оршдог. Arch Linux зэрэг зарим тархацууд “rolling update” горимыг ашигладаг бөгөөд багцууд нь хамгийн сүүлийн үеийнх байх боловч хааяа систем эвдрэх эрсдэлтэй байдаг. Нөгөөтэйгүүр, Debian, CentOS эсвэл Ubuntu LTS зэрэг тархацууд шинэчлэлт хийхдээ маш консерватив ханддаг тул шинэ боломжуудыг золиослох замаар илүү тогтвортой ажиллагааг хангадаг. Хэрэглэгчийн компьютер болон сервер дээр ашиглахад хялбар бөгөөд тогтвортой байх үүднээс бид Debian эсвэл Ubuntu-г ашиглахыг зөвлөдөг.
Mac OS бол Windows болон Linux-ийн дундах сайн хувилбар бөгөөд маш цэвэрхэн, үзэмжтэй интерфэйстэй. Гэхдээ Mac OS нь Linux биш харин BSD дээр суурилсан байдаг тул системийн зарим хэсэг болон командууд өөр байдаг.
Өөр нэг судалж үзэх хувилбар бол FreeBSD юм. FreeBSD дээр зарим програмууд ажиллахгүй байж болох ч BSD экосистем нь Linux-ийг бодвол фрагментаци багатай, илүү сайн баримтжуулалттай байдаг.
Бид Windows-ийн програм хөгжүүлэх эсвэл тоглоом тоглох зэрэг техник хангамжийн драйверын дэмжлэг зайлшгүй хэрэгтэйгээс бусад тохиолдолд Windows-ийг хэрэглэхгүй байхыг зөвлөж байна.
Хос үйлдлийн систем ажиллуулахын тулд macOS-ийн bootcamp хамгийн сайн ажилладаг бөгөөд бусад хослолууд нь урт хугацаандаа (ялангуяа дискийг шифрлэх үед) асуудал дагуулдаг гэж бид үздэг.
Vim үү, Emacs уу?
Бид гурвуулаа өөрсдийн үндсэн засварлагчаар vim-ийг ашигладаг боловч Emacs нь маш сайн сонголт бөгөөд аль нь танд илүү тохирохыг мэдэхийн тулд хоёуланг нь туршиж үзэх нь зүйтэй. Emacs нь vim шиг модаль засварлах горимыг ашигладаггүй боловч үүнийг Evil эсвэл Doom Emacs зэрэг Emacs-ийн өргөтгөлүүдийг суулган идэвхжүүлж болно. Emacs-ийн нэг давуу тал нь өргөтгөлүүдийг Lisp хэлээр бичиж болдог бөгөөд энэ нь Vim-ийн анхдагч vimscript-ээс хамаагүй илүү сайн скрипт хэл юм.
Машин сургалтын аппликейшнүүдэд зориулсан ямар нэгэн зөвлөмж байна уу?
Энэ хичээлээр үзсэн зарим зүйлсийг машин сургалтын ажилд шууд ашиглаж болно. Бусад шинжлэх ухааны салбаруудын адилаар машин сургалтад олон тооны туршилт хийж, юу ажиллаж, юу ажиллаагүйг шалгах шаардлага гардаг. Та командын мөрийн хэрэгслүүдийг ашиглан эдгээр туршилтуудын үр дүнг хурдан хайж, нэгтгэх боломжтой. Жишээлбэл, тодорхой цаг хугацааны эсвэл тодорхой өгөгдлийн багц ашигласан туршилтуудыг шүүж болно. Туршилтын бүх параметрүүдийг энгийн JSON файл ашиглан логлосноор энэ хичээлээр үзсэн хэрэгслүүдийн тусламжтайгаар үүнийг хийхэд маш хялбар болно.
Эцэст нь, хэрэв та GPU-ийн ажлуудаа кластер луу илгээдэг систем ашигладаггүй бол энэ процессыг автоматжуулах аргыг судалж үзээрэй, учир нь энэ нь маш их цаг болон оюуны энерги шаарддаг ажил байдаг.
Vim-ийн өөр зөвлөмжүүд бий юу?
Цөөн хэдэн зөвлөмжүүд:
- Өргөтгөлүүд - Цаг гаргаж өргөтгөлүүдийг судалж үзээрэй. Vim-ийн зарим сул талуудыг нөхөж, шинэ боломжуудыг нэмдэг маш олон гайхалтай өргөтгөлүүд байдаг. Үүний тулд VimAwesome вэбсайт болон бусад программистуудын dotfiles-ийг судалж болно.
- Тэмдэг тавих - Vim-д та
m<X>ашиглан дурынXүсгээр тэмдэг тавьж болно. Дараа нь'<X>ажиллуулан тухайн тэмдэглэсэн газар луугаа шууд очиж болно. Энэ нь файл дотор эсвэл файлуудын хооронд хурдан шилжихэд тусална. - Чиглүүлэх -
Ctrl+OболонCtrl+Iнь таны саяхан зочилсон байршлуудын хооронд урагш хойш шилжих боломж олгодог. - Өөрчлөлтийн мод - Vim нь өөрчлөлтийг хянах маш нарийн механизмтай. Бусад засварлагчаас ялгаатай нь, өөрчлөлтийг мод бүтэцтэйгээр хадгалдаг тул та ямар нэг үйлдлийг буцаагаад дараа нь өөр өөрчлөлт хийсэн ч хуучин төлөв рүүгээ өөрчлөлтийн модоор дамжин буцах боломжтой. gundo.vim болон undotree зэрэг өргөтгөлүүд энэ модыг графикаар харуулдаг.
- Хугацаагаар буцаах -
:earlierболон:laterтушаалууд нь өөрчлөлтийг нэг нэгээр бус харин хугацааны заалтаар урагш хойшлуулах боломж олгодог. - Persistent undo
(байнгын буцаах) бол vim-ийг хаагаад нээхэд ч өөрчлөлтийн түүхийг хадгалж
үлддэг гайхалтай функц юм (анхдагчаар идэвхгүй байдаг). Өөрийн
.vimrcфайл доторundofileболонundodirтохируулснаар файл бүрийн өөрчлөлтийн түүх хадгалагдах болно. - Leader Key - Энэ бол хэрэглэгч өөрийн тусгай командууддаа зориулан тохируулдаг
тусгай товчлуур юм. Жишээ нь, энэ товчийг (ихэвчлэн сул зайны товч) дараад
тавиад, араас нь өөр товч дарахад тодорхой команд ажилладаг. Өргөтгөлүүд
үүнийг их ашигладаг, жишээ нь UndoTree өргөтгөл нь
<Leader> Uашиглан өөрчлөлтийн модыг нээдэг. - Ахисан түвшний текст объектууд - Текст хайх үйлдлийг ч vim-ийн командуудтай
хослуулж болно. Жишээ нь,
d/<pattern>нь дараагийн таарах хэв загвар хүртэлх текстийг устгах бөгөөдcgnнь хамгийн сүүлд хайсан үгийн дараагийн давталтыг өөрчлөх боломж олгодог.
2FA гэж юу вэ, яагаад би үүнийг ашиглах ёстой вэ?
Хоёр шатлалт баталгаажуулалт (2FA) нь таны хаягт нууц үгнээс гадна нэмэлт хамгаалалтын давхаргыг үүсгэдэг. Нэвтрэхийн тулд зөвхөн нууц үг мэдэхээс гадна тухайн техник хангамжийн төхөөрөмжийг эзэмшиж байгаагаа батлах шаардлагатай болдог. Хамгийн энгийн тохиолдолд утсандаа SMS хүлээн авах байдлаар хийгддэг боловч SMS 2FA нь аюулгүй байдлын асуудлуудтай байдаг. Бидний зөвлөх илүү сайн хувилбар бол YubiKey зэрэг U2F шийдлийг ашиглах явдал юм.
Вэб хөтчүүдийн ялгаатай байдлын талаар ямар нэгэн санал байна уу?
2020 оны байдлаар вэб хөтчүүдийн төлөв байдал нь ихэнх нь Chrome-той ижилхэн хөдөлгүүр ашиглаж байна. Энэ нь Blink хөдөлгүүртэй Microsoft Edge, мөн WebKit хөдөлгүүртэй Safari (Blink-тэй төстэй) зэрэг нь Chrome-ийн өөр хувилбарууд л гэсэн үг юм. Chrome бол гүйцэтгэл болон ашиглахад маш сайн хөтөч юм. Хэрэв та өөр сонголт хайж байгаа бол бид Firefox-ийг зөвлөж байна. Энэ нь бүх талаараа Chrome-той дүйцэхүйц бөгөөд хувийн нууцлалыг хамгаалахад илүү сайн байдаг.
Өөр нэгэн Flow нэртэй хөтөч одоогоор бэлэн болоогүй байгаа ч одоо байгаа хөтчүүдээс илүү хурдан ажиллах шинэ хөдөлгүүрийг хөгжүүлж байна.
Лиценз: CC BY-NC-SA.