Ачааллж байна...
Та энэ сургалтыг дуусгалаа. Арван хоёр Бүлэг, дөрвөн Түвшин, дөрвөн удирдлагатай бүтээл. Сургалтын эхэнд, Бүлэг 1-ийн эхний хичээлд, бид Python мэддэг байх, хөгжүүлэгч шиг ажиллах хоёрын хооронд чимээгүй боловч бодит нэг зай байдаг гэж ярьсан. Энэ сургалт тэр зайг хаахад зориулагдсан гэж амласан. Энэ эцсийн хичээлд тэр амлалт хэрхэн биелснийг тайван эргэн харна. Шинэ хэрэгсэл, шинэ command байхгүй. Зөвхөн юу өөрчлөгдсөнийг харж, таны гарт одоо юу байгааг тодорхой болгож, цаашдын замын тухай ярина.
Энэ хичээлийг уншихаасаа өмнө нэг зүйл хийхийг санал болгож байна: зарлагын бүртгэлийн фолдероо VS Code-д нээж, terminal-д нэг command бичээрэй.
Command:
git log --oneline --reverseГаралт (эхний ба сүүлийн хэсэг):
a4c81f2 Initial commit
9f2b6e0 Format amounts with thousands separator
1d3e5a7 Ignore log files
6e9c2b4 Add expense count function
b2a7f1c Show number of expenses
c4d8e2a Add average function
5a1f7e3 Add save function
8e2c4b9 Merge branch 'main' of https://github.com/bat-dorj/expense-tracker
...
4e1a7c3 Add largest_expense function
b90d256 Show largest expense in summary
f3c82a9 Merge pull request #8 from bat-dorj/largest-expense“--reverse” нь түүхийг хуучнаас шинэ рүү, ном шиг эхнээс нь харуулна. Таны түүх энэ жишээнээс өөр байх нь гарцаагүй: таны hash-ууд, таны message-үүд, таны "туршаад үзээрэй" хэсгүүдэд хийсэн нэмэлт ажил. Гэхдээ хэлбэр нь ижил: “Initial commit”-оос эхэлсэн, жижиг, утга бүхий алхмуудын түүх. Энэ бол таны энэ сургалтын туршид хийсэн ажлын бүрэн, нотлогдсон бичлэг. Ийм бичлэг сургалт эхлэхэд байгаагүй.
Түвшин 1: айдсаас хяналт руу
Бүлэг 1-д бид зарим нэг танил нөхцлийг нэрлэсэн: кодоо өөрчилсөн чинь ажиллахаа больсон ч өчигдрийн хувилбарыг санахгүй байх, expense_tracker_final2 гэх мэт хуулбар фолдерууд, кодыг эвдчих вий гэсэн айдас. Түвшин 1 тэр бүхнийг өөрчилсөн. Та одоо ажлынхаа агшин бүрийг commit болгон хадгалж, түүхээ log ба diff-ээр уншиж, алдаагаа restore-оор буцааж, туршилтаа салаан дээр аюулгүй хийж, бэлэн болсон ажлаа merge-ээр нэгтгэж чадна. Хамгийн чухал нь conflict гэдэг үг таныг айлгахаа больсон: 3.3 дугаар хичээлд та тэдгээрийг асуулт гэж уншиж сурсан. Таны цомог Git-ийн бүх хамгаалалттайгаар таны компьютер дээр байна.
Түвшин 2: компьютерээс дэлхий рүү
Түвшин 2 таны ажлыг нэг компьютерээс гаргасан. Та одоо GitHub руу push, тэндээс pull ба clone хийж, хоёр газраас аюулгүй ажиллаж, татгалзсан push-ийн мессежийг тайван уншиж засаж чадна. Таны repository-уд README-тэй, цэвэр бүтэцтэй, лицензтэй, About тайлбартай. Та issue-ээр ажлаа төлөвлөж, pull request-ээр өөрчлөлтөө баримтжуулж, өөрийн ажлыг шинэ нүдээр хянаж сурсан. Таны GitHub профайл одоо таныг танилцуулдаг.
Түвшин 3: найдлагаас нотолгоо руу
Түвшин 3-аас өмнө код зөв ажиллаж байгааг та программыг ажиллуулж, гаралтыг нүдээрээ хараад л мэддэг байсан. Одоо таны төслүүдэд хэзээ ч унтдаггүй харуулууд бий: pytest-ийн тестүүд. Та тест бичиж, уналтын тайланг доороос нь уншиж, "код уу, тест үү" гэж асууж, fixture, parametrize, raises, tmp_path-аар бодит кодыг тестэлж, функц бичихээсээ өмнө тестийг нь бичиж чадна. Мөн тестийн хязгаарыг шударгаар мэднэ: тэр зөвхөн бичигдсэн хаалгуудыг шалгадаг.
Түвшин 4: хэрэгслээс дадал руу
Түвшин 4 хэрэгслүүдийг дадал болгосон. Та алдааг мөрдөгч шиг аргачлалтайгаар хайж, debugger-ээр программыг удаашруулж, олон давхар traceback-ийг доороос нь уншиж, алдаа илэрсэн газар ба үүссэн газрыг ялгаж, программдаа logging-ийн хар хайрцаг суулгаж чадна. black, ruff таны кодыг цэгцэлж, урхинаас сэрэмжлүүлдэг. Та нэрсээ ухамсартайгаар сонгож, функцээ шударга хэмжээтэй байлгаж, docstring-ээр ирээдүйн уншигчид бичиж сурсан. Эцэст нь бүгдийг нэг өдөр тутмын давталтад холбож, түүгээр хоосон фолдероос мэргэжлийн төсөл бүтээсэн.
Нэг зүйлийг тодорхой хэлье: энэ сургалт танд шинэ Python заагаагүй. Таны хэрэглэдэг хэлний бүтэц, функц, жагсаалт, dictionary, давталт бүгд өмнөх сургалтаас хэвээрээ. Зарлагын бүртгэлийн total функц сургалтын эхэнд ч, төгсгөлд ч бараг ижил хоёр мөр. Өөрчлөгдсөн нь Python биш, таны гар.
Сургалтын эхэнд ажлын нэг өдрийг төсөөлөөрэй. Та кодоо өөрчилж, программ ажиллахаа больж, юу өөрчилснөө санахгүй байна. Хуулбар фолдеруудын дундаас ажилладаг хувилбарыг хайж байна. Шинэ боломж нэмээд, хуучин нэг нь эвдэрсэн эсэхийг мэдэхгүй байна. Алдааны мессежийг хараад, кодын хаа сайгүй print нэмж байна. Компьютер эвдэрвэл бүх ажил алга болно.
Одоо өнөөдрийн өдрийг төсөөлөөрэй. Та өглөө pull хийж, тестүүдээ ажиллуулаад, ногоон тайлантайгаар эхэлнэ. Ажлаа issue-ээс сонгож, салаа үүсгэнэ. Тест бичиж, код бичиж, ruff ба black ажиллуулж, diff-ээ уншиж, жижиг commit-ууд хийнэ. Ямар нэг юм эвдэрвэл тест тэр дороо хэлнэ, traceback-ийг доороос нь уншина, хэрэгтэй бол debugger. Pull request-ээр ажлаа нэгтгэж, өдрийн төгсгөлд бүх зүйл GitHub дээр. Хэрвээ туршилт бүтэлгүйтвэл салааг орхино. Хэрвээ компьютер эвдэрвэл шинэ компьютер дээр clone хийнэ.
Хоёр өдрийн ялгаа нь ур чадварт биш, дадалд. Энэ бол Бүлэг 1-ийн 1 дүгээр хичээлийн гэрийн гал тогоо ба рестораны гал тогооны зүйрлэл. Хоол хийх ур чадвар тань өмнө нь ч байсан. Одоо та рестораны гал тогоонд ажилладаг.
5.4 дүгээр хичээлд бид ажил олгогч, reviewer таны GitHub-ийг хэрхэн үздэгийг ярьсан. Одоо тэр хүний нүдээр нэг удаа хараарай. Профайл дээр жинхэнэ нэр, товч танилцуулга, хоёр онцолсон repository. Эхнийх нь зарлагын бүртгэл: README, тестүүд, лиценз, release-үүд, хаагдсан issue-үүд, нэгтгэгдсэн pull request-үүд, хэдэн арван тодорхой commit бүхий түүх. Хоёр дахь нь нууц үг үүсгэгч: эхнээс нь мэргэжлийн хэв маягаар бүтээгдсэн жижиг, бүрэн төсөл. Reviewer кодыг нээвэл docstring, нэртэй тогтмол, тодорхой нэрс, цэвэр хэлбэр харна. Pull request-үүдийг нээвэл өөрийгөө хянасан сэтгэгдэл, “Closes #N” холбоосууд харна.
Шударгаар хэлье: энэ нь ажил олохыг баталгаажуулахгүй, мөн бүх ажил олгогч GitHub-ийг үздэггүй. Гэхдээ үзсэн тохиолдолд энэ профайл маш тодорхой мессеж дамжуулдаг: энэ хүн зөвхөн Python мэддэг биш, багт нэгдэх эхний өдрөөс Git, pull request, тест, кодын чанарын хэрэгслүүдийг ойлгож, баримталж ажиллаж чадна. Энэ бол сургалтын төсөл, үүнийг нуух шаардлагагүй, 5.4 дүгээр хичээлийн шударга байдлын зарчим. Гэхдээ үзүүлж буй дадлууд бодит бөгөөд бодит багуудад шууд хэрэглэгддэг.
Сурсан зүйл хэрэглэхгүй бол мартагддаг, ялангуяа дадал. Энэ сургалтын дадлуудыг хадгалах хамгийн сайн арга бол тэдгээрийг цаашдын бүх ажилдаа хэрэглэх. Дараагийн жижиг script-ээ ч git init-ээр эхлүүл. Дараагийн туршилтаа ч салаан дээр хий. Дараагийн функцдээ ч тест бич, хэдийгээр ганцхан assert байсан ч. Хэдэн долоо хоногийн дараа эдгээр нь шийдвэр биш, рефлекс болно.
Мөн энэ сургалтын шударга хүрээг санаарай. Бид зарим сэдвийг санаатайгаар орхисон: том багуудын Git-ийн арга барил, жишээ нь rebase ба cherry-pick, CI-ийн тохиргоо, тестэд mocking, pre-commit hooks. Эдгээр нь дараагийн алхмууд бөгөөд тэдгээрийн хэрэгцээ таны ажилд гарах үед та тэдгээрийг хялбар сурна: үндэс аль хэдийн тавигдсан. 12.2 дугаар хичээлийн нэмэлт боломжуудад CI-тэй танилцах санал байсан, хүсвэл тэндээс эхэлж болно.
Өмнөх сургалтуудын нэгэн адил энэ сургалтын гэрчилгээ зөвхөн хичээлүүдийг дуусгаснаар олгогдоно: шалгалт, даалгавар байхгүй. Бүх хичээлийг дуусгасан гэж тэмдэглэснээр гэрчилгээ таны "Гэрчилгээ" хэсэгт гарч ирнэ.
Гэрчилгээ ба GitHub хоёрын хуваарийн тухай нэг бодол. Гэрчилгээ та сургалтыг дуусгасныг баталдаг. Таны GitHub та сурсан зүйлээ хэрэглэж чаддагийг харуулдаг. Хоёулаа үнэ цэнтэй, гэхдээ өөр зүйлийг хэлдэг. Хэрвээ хэн нэгэн таны энэ сургалтын үр дүнг асуувал гэрчилгээгээ үзүүлж, хажууд нь GitHub-ийн холбоосоо өгөөрэй.
Хүсвэл энэ сургалтын төгсгөлийг тэмдэглэх хэдэн жижиг алхам хийж болно. 5.4 дүгээр хичээлийн аргаар профайлынхаа bio-г шинэчилж, одоо таны мэддэг хэрэгслүүдийг нэрлээрэй: Git, GitHub, pytest. Хоёр төслөө онцолсон эсэхийг шалгаарай. Өмнөх сургалтын бусад төслүүдээсээ нэгийг сонгож, 12.2 дугаар хичээлийн бүх алхмын дарааллаар түүнийг гурав дахь мэргэжлийн repository болгоорой. Эсвэл ирэх нэг сарын турш хийх аливаа кодын ажилдаа 12.1 дүгээр хичээлийн шалгах хуудсыг хэрэглэж, сарын төгсгөлд түүнийг хэр олон удаа харсан бэ гэдгээ анзаараарай.
Энэ сургалт таны ажлын гарыг мэргэжлийн болгосон. Дараагийн сургалт өөр зүг рүү харна: Python хэлийг өөрийг нь гүнзгий судална. Өмнөх сургалтуудад бид хэлийг хэрэглэж сурсан, энэ сургалтад түүнтэй хэрхэн мэргэжлийн хэв маягаар ажиллахыг сурсан. Дараагийнх нь хэлний дотоод зүйлсийг, бидний одоог хүртэл хэрэглэж ирсэн боловч гүнзгий судлаагүй ойлголтуудыг тайлж үзнэ. Энэ сургалтын бүх дадал тэнд ч бүрэн хэрэглэгдэнэ: дараагийн сургалтын туршилт бүр Git-ийн салаан дээр, тестийн хамт, ruff ба black-ийн цэвэрлэгээтэйгээр хийгдэх болно.
Энэ сургалт урт байсан бөгөөд олон хичээл terminal-ын гаралтыг мөр мөрөөр уншихыг шаардсан. Fatal мессеж, conflict тэмдэглэгээ, татгалзсан push, улаан тест, дөрвөн давхар traceback: эдгээр бүгд эхэндээ айдас төрүүлдэг зүйлс байсан. Одоо тэд таны хувьд асуулт, нотлох баримт, дараагийн алхмын зааварчилгаа болсон. Энэ өөрчлөлт бол энэ сургалтын хамгийн үнэ цэнтэй үр дүн бөгөөд аль ч хэрэгслээс удаан хадгалагдана: хэрэгслүүд өөрчлөгдөнө, шинэ хувилбар гарна, гэхдээ алдааны мессежийг тайван уншдаг, асуудлыг аргачлалтайгаар хайдаг, ажлаа жижиг алхмаар хамгаалдаг хүн аль ч шинэ хэрэгслийг хурдан эзэмшдэг.
Та энэ замыг өөрийн хурдаар, өөрийн төслүүд дээр туулсан. Таны repository-ийн түүх, таны тестүүд, таны pull request-үүд бол таны хийсэн ажлын бодит нотолгоо. Баяр хүргэе. Ижил Python, мэргэжлийн гар.
Бүртгэлтэй болсноор энэ сургалтын бүх хичээлд хандах эрх авна.