გახდი PYTHON დეველოპერი 18 კვირაში
Python-ის სწავლა ნულიდან: 18 კვირიანი გზამკვლევი მათთვის, ვისაც სურს გახდეს backend დეველოპერი
ვფიქრობ, სწავლის დაწყებიდან მალევე ვამჩნევთ, რამხელა მანძილი გვაქვს გასავლელი ვიდეო-გაკვეთილების ყურებიდან სუფთა, პროდაქშენისთვის მზა Python-ისა და Django-ს კოდის დამოუკიდებლად დაწერამდე.
ამ ბლოგპოსტში შემოთავაზებულია სრული გზა backend დეველოპერობამდე თავისი თეორიული მასალებითა და პროექტების იდეებით, რომლებიც გზადაგზა უნდა შეასრულოთ.
თუ სტრუქტურირებულ გზამკვლევს ეძებდით, აი ისიც! მიჰყევით ამ 18 კვირიან გეგმას და თქვენ გეცოდინებათ ყველაფერი: დაწყებული Django ORM-ით მონაცემთა ბაზების მოდელირებიდან, სრულყოფილი ვებ აპლიკაციებისა და REST API-ების შექმნამდე.
ფაზა 1: საფუძვლები და მთავარი ლოგიკა (კვირა 1–5)
მიზანი: გაიგოთ, თუ როგორ ასრულებს Python ინსტრუქციებს ნაბიჯ-ნაბიჯ, ისწავლოთ შესრულების პროცესის მართვა და შექმნათ Command-line (CLI) პროგრამები კოდის დაკოპირების გარეშე.
კვირა 1: სამუშაო გარემო, ტერმინალი და კოდის პირველი გაშვება
- მთავარი ფოკუსი: პროფესიონალური სადეველოპერო გარემოს მოწყობა პირველივე დღიდან.
- განსახილველი თემები:
- Python 3.12+ ინსტალაცია და PATH-ის კონფიგურაცია.
- Command Line-ში / ტერმინალში ნავიგაცია (
cd,ls/dir,mkdir,.pyფაილების გაშვება). - VS Code-ის მოწყობა ოფიციალური Python ექსთენშენითა და Black ავტო-ფორმატერით.
- ინტერაქტიული გარემოს (REPL) გააზრება და
.pyსკრიპტ ფაილების შენახვა/გაშვება.
- რატომ არის ეს მნიშვნელოვანი: გაფუჭებულ Path-ებთან ან სამუშაო გარემოსთან ბრძოლა მოგვიანებით მოტივაციას დაგიკარგავთ. ტერმინალთან ადრევე შეჩვევა დეველოპერის დამოუკიდებლობას აშენებს.
- პრაქტიკული დავალება: შექმენით სკრიპტი, რომელიც ტერმინალიდან მიიღებს მომხმარებლის ინფუთებს, დააფორმატებს მათ მრავალხაზიან რეპორტად და სუფთად გამოიტანს ეკრანზე.
კვირა 2: მონაცემთა ტიპები, ცვლადები და ოპერაციები ტიპებზე
- მთავარი ფოკუსი: როგორ ინახავს, მიმართავს და ამუშავებს Python მონაცემებს მეხსიერებაში.
- განსახილველი თემები:
- პრიმიტიული მონაცემთა ტიპები: რიცხვები (
int), ათწილადები (float), სტრინგები (str), ლოგიკური ტიპები (bool) დაNoneType. - ცვლადების მინიჭება (Variable assignment), დინამიური ტიპიზაცია და მეხსიერების პოინტერები.
- Type casting, ანუ ტიპების კონვერტაცია (
int(),str(),float()). - მნიშვნელობების ჭეშმარიტება და მცდარობა (Truthiness/Falsiness) (
bool(0),bool(""),bool(None)).
- პრიმიტიული მონაცემთა ტიპები: რიცხვები (
- რატომ არის ეს მნიშვნელოვანი: მონაცემთა ტიპების შეუთავსებლობა დამწყებების კოდში ბაგების ერთ-ერთი ყველაზე გავრცელებული მიზეზია.
- პრაქტიკული დავალება: შექმენით ტერმინალის Tip & Bill Splitter (ანგარიშის გამყოფი), რომელიც მიიღებს ანგარიშის ჯამს, თიფის პროცენტს და ადამიანების რაოდენობას, გამოთვლის ზუსტ წილებს და დაამრგვალებს ვალუტის მნიშვნელობებს.
კვირა 3: პირობითი ლოგიკა და გადაწყვეტილებების მიღება
- მთავარი ფოკუსი: პროგრამისთვის პირობების შეფასებისა და კოდის სხვადასხვა გზით წაყვანის ტექნიკები.
- განსახილველი თემები:
- ლოგიკური შედარების ოპერატორები (
==,!=,<,>,<=,>=). - Boolean ლოგიკის კომბინაციები (
and,or,not). - პირობითი ბლოკები:
if,elifდაelse. - Pattern matching - თანამედროვე Python-ში
match/case-ის გამოყენებით.
- ლოგიკური შედარების ოპერატორები (
- რატომ არის ეს მნიშვნელოვანი: პროგრამირება, არსებითად, არის შემომავალ მონაცემებზე დაფუძნებული გადაწყვეტილებების მიმდევრობა.
- პრაქტიკული დავალება: შექმენით ინტერაქტიული არჩევანის სათავგადასავლო თამაში (Interactive Choice Adventure Game), სადაც მომხმარებლის არჩევანი დინამიურად ცვლის სიუჟეტს და მოთამაშის სიცოცხლის/ინვენტარის მეტრიკებს.
კვირა 4: ციკლები (Loops) და იტერაციის პატერნები
- მთავარი ფოკუსი: განმეორებადი ამოცანების სუფთად შესრულება კოდის დუბლირების გარეშე.
- განსახილველი თემები:
whileციკლები განუსაზღვრელი იტერაციისთვის (მაგ. პროგრამის ჩართულ მდგომარეობაში შენარჩუნება გათიშვის ბრძანებამდე).forციკლები მიმდევრობებზე იტერაციისთვის (range(), სტრინგებში გავლა).- ციკლის კონტროლის ქივორდები:
breakდაcontinue. - იტერაციის დამხმარეები:
enumerate()ინდექსის თრექინგისთვის დაzip()მიმდევრობების გასაერთიანებლად. - პითონისთვის სპეციფიკური
for-elseპატერნი.
- რატომ არის ეს მნიშვნელოვანი: ციკლები საშუალებას გაძლევთ დაამუშავოთ 1 ან 10,000 ელემენტი ზუსტად ერთი და იგივე ლოგიკის გამოყენებით.
- პრაქტიკული დავალება: შექმენით რიცხვის გამოცნობის თამაში
random.randint()-ის გამოყენებით, მიეცით მომხმარებელს მცდელობების შეზღუდული რაოდენობა, შეინახეთ ქულების ისტორია და დაუბრუნეთ დინამიური "მეტია / ნაკლებია" უკუკავშირი.
კვირა 5: მოდულური კოდი ფუნქციებით და ხილვადობის არეალი (Scope)
- მთავარი ფოკუსი: კოდის შეფუთვა მრავალჯერადად გამოყენებად ბლოკებად და იმის გააზრება, თუ სად არსებობენ ცვლადები.
- განსახილველი თემები:
- ფუნქციების შექმნა
def-ით, პოზიციური (positional) vs დასახელებული (keyword) არგუმენტები და აშკარაreturnსტეიტმენტები. - მოქნილი ფუნქციის ინფუთები:
*argsდა**kwargs. - ცვლადების ხილვადობის წესები: LEGB წესი (Local, Enclosing, Global, Built-in).
- Mutable default არგუმენტის მახე (მაგ. რატომ იწვევს
def fn(items=[])მოულოდნელ შედეგებს).
- ფუნქციების შექმნა
- რატომ არის ეს მნიშვნელოვანი: მოდულურ ფუნქციებში კოდის დაწერა პროგრამას ხდის კითხვადს, ტესტირებადს და მარტივად გამოყენებადს.
- პრაქტიკული დავალება: ააშენეთ მოდულური ერთეულების კონვერტორი CLI (ტემპერატურა, მანძილი, წონა), რომელიც დაყოფილი იქნება კონკრეტულ გამომთვლელ ფუნქციებად და ინფუთის ვალიდაციის შემფუთველ (wrapper) ფუნქციებად.
ფაზა 2: მონაცემთა სტრუქტურები, ფაილები და შეცდომების მართვა (კვირა 6–9)
მიზანი: იმუშაოთ მონაცემთა კომპლექსურ ჯგუფებთან, გაასუფთაოთ ტექსტი, მართოთ მოულოდნელი კრახები და შეინახოთ პროგრამის მდგომარეობა დისკზე.
კვირა 6: მოწესრიგებული კოლექციები – Lists და Tuples
- მთავარი ფოკუსი: მონაცემთა მიმდევრობების შენახვა და დამუშავება.
- განსახილველი თემები:
- სია - Lists (ცვალებადი/mutable, დინამიური) vs Tuples (უცვლელი/immutable, ფიქსირებული).
- სიაზე მომუშავე მეთოდები (
.append(),.extend(),.insert(),.pop(),.remove()). - Slicing სინტაქსი (
list[start:stop:step]). - List comprehensions მოკლე ფილტრაციისა და მეფინგისთვის:
[x for x in data if condition].
- რატომ არის ეს მნიშვნელოვანი: მიმდევრობითი კოლექციები წარმოადგენს მონაცემთა მანიპულაციის ხერხემალს ვებ აპლიკაციებსა და ავტომატიზებულ ხელსაწყოებში.
- პრაქტიკული დავალება: შექმენით In-Memory დავალებების მენეჯერი (Task Manager), სადაც მომხმარებლებს შეეძლებათ დაამატონ, მონიშნონ შესრულებულად, წაშალონ და გაფილტრონ დავალებები სტატუსის მიხედვით List-ის ოპერაციების გამოყენებით.
კვირა 7: Key-Value კოლექციები და Sets
- მთავარი ფოკუსი: მონაცემების მაღალსიჩქარიანი ძებნა არამიმდევრობითი მონაცემთა სტრუქტურების გამოყენებით.
- განსახილველი თემები:
- ლექსიკონები (
dict): Key-value წყვილები, hashability და საერთო მეთოდები (.get(),.keys(),.values(),.items()). - Sets (
set): უნიკალური ელემენტების მოუწესრიგებელი კოლექციები და Set ოპერაციები (გაერთიანება, თანაკვეთა, სხვაობა). - Dictionary და Set comprehensions.
- ოპერაციული ეფექტურობის ინტუიცია: O(1) მუდმივი დროის ძებნა Dicts/Sets-ში vs O(n) წრფივი ძებნა Lists-ში.
- ლექსიკონები (
- რატომ არის ეს მნიშვნელოვანი: რეალური მონაცემები (როგორიცაა JSON ვებ API-ებიდან) მოდის სტრუქტურირებული key-value წყვილების სახით.
- პრაქტიკული დავალება: შექმენით სიტყვების სიხშირის ანალიზატორი, რომელიც მიიღებს დაუმუშავებელ ტექსტს, გაასუფთავებს პუნქტუაციისგან, დაითვლის სიტყვების რაოდენობას ლექსიკონის (
dict) გამოყენებით და დააბრუნებს ტოპ 5 ყველაზე ხშირად გამოყენებულ სიტყვას.
კვირა 8: სტრინგები, ტექსტის ფორმატირება და Regular Expressions
- მთავარი ფოკუსი: ტექსტური მონაცემების ინსპექტირება, პარსინგი და გასუფთავება.
- განსახილველი თემები:
- f-string ფორმატირების სპეციფიკატორები (მაგ.
f"{value:.2f}", გასწორება/alignment, padding). - სტრინგების გასუფთავების მეთოდები (
.strip(),.lower(),.replace(),.split(),.join()). - Regular Expressions-ის საფუძვლები
reმოდულის გამოყენებით (re.search,re.findall, პატერნების საბაზისო სინტაქსი).
- f-string ფორმატირების სპეციფიკატორები (მაგ.
- რატომ არის ეს მნიშვნელოვანი: სისტემაში მომხმარებლებისგან ან ფაილებიდან შემოსული მონაცემების უმეტესობა ქაოტური და დაუფორმატებელია. სტრინგების გასუფთავება ყოველდღიური ამოცანაა. (ამ უნარების გამოყენება მონაცემთა დამუშავებაში ვრცლად ისწავლება ჩვენს Data Analytics კურსზე).
- პრაქტიკული დავალება: შექმენით კონტაქტების ამომღები ხელსაწყო (Contact Extractor Tool), რომელიც დაასკანერებს დაუფორმატებელ ტექსტს და ამოიღებს ყველა ვალიდურ ელფოსტას და ტელეფონის ნომერს სტრუქტურირებულ სიაში
re-ს გამოყენებით.
კვირა 9: შეცდომების მართვა, ფაილებთან მუშაობა (I/O) და მონაცემთა შენახვა
- მთავარი ფოკუსი: პროგრამის კრახის თავიდან აცილება და აპლიკაციის მდგომარეობის დისკზე მუდმივად შენახვა.
- განსახილველი თემები:
- Exception-ების მართვის იერარქია:
try,except,else,finally. - Exception კლასების შექმნა დომენისთვის სპეციფიკური შეცდომების მისათითებლად.
- ფაილებთან მუშაობა თანამედროვე
pathlib.Path-ის გამოყენებით ძველიos.path-ის ნაცვლად. - ფაილების უსაფრთხო მანიპულაცია Context Manager-ების გამოყენებით (
with open(...) as file:). - სტრუქტურირებული ფაილის ფორმატების კითხვა და ჩაწერა:
json(json.load/dump) დაcsv(csv.DictReader/DictWriter).
- Exception-ების მართვის იერარქია:
- რატომ არის ეს მნიშვნელოვანი: დაუმუშავებელი შეცდომები აპლიკაციას აგდებს პროდაქშენში. JSON ან CSV ფორმატში მონაცემების შენახვა საშუალებას აძლევს პროგრამას შეინარჩუნოს მდგომარეობა რესტარტებს შორის.
- შემაჯამებელი დავალება: შექმენით მუდმივი JSON ინვენტარის მენეჯერი CLI-დან, რომელსაც ექნება სრული CRUD ოპერაციების მხარდაჭერა (Create, Read, Update, Delete) პროდუქტებისთვის და ავტომატურად შეინახავს მდგომარეობას
.jsonფაილში.
ფაზა 3: OOP, გარემოს მართვა და Web API-ები (კვირა 10–14)
მიზანი: გადახვიდეთ პროცედურული სკრიპტებიდან ობიექტზე ორიენტირებულ არქიტექტურაზე, მართოთ გარე დამოკიდებულებები (dependencies), იმუშაოთ მონაცემთა ბაზებთან და დაამყაროთ კომუნიკაცია ვებ სერვისებთან HTTP-ს საშუალებით.
კვირა 10: მოდულები, ვირტუალური გარემო და Git-ის სამუშაო პროცესი
- მთავარი ფოკუსი: პროექტის ფაილების ორგანიზება, დამოკიდებულებების მართვა და პროგრამული ისტორიის თრექინგი.
- განსახილველი თემები:
- კოდის ორგანიზება Python პაკეტებად და მოდულებად (
import,from module import ...). - იზოლირებული სადეველოპერო გარემოების შექმნა Python-ის ჩაშენებული
venv-ის გამოყენებით. - პაკეტების მართვა
pip-ით დაrequirements.txt-ის შექმნა/წაკითხვა. - ვერსიების კონტროლის საფუძვლები Git-ით (
git init,.gitignore,git add,git commit,git branch,git push).
- კოდის ორგანიზება Python პაკეტებად და მოდულებად (
- რატომ არის ეს მნიშვნელოვანი: რეალური პროგრამული პროექტები შედგება მრავალი ფაილისა და მესამე მხარის (third-party) ბიბლიოთეკებისგან. იზოლირებული გარემოები ხელს უშლის პაკეტების ვერსიების კონფლიქტებს თქვენს კომპიუტერში.
- პრაქტიკული დავალება: დაარეფაქტორეთ თქვენი JSON ინვენტარის მენეჯერი მრავალფაილიან პროექტად, ინიციალიზაცია გაუკეთეთ ვირტუალურ გარემოს, დააგენერირეთ
requirements.txt, დაწერეთ.gitignoreდა ატვირთეთ პროექტი GitHub რეპოზიტორიაში.
კვირა 11: ობიექტზე ორიენტირებული პროგრამირება (OOP) – მთავარი კონცეფციები
- მთავარი ფოკუსი: მონაცემებისა და ქცევების ინკაპსულაცია სტრუქტურირებულ ობიექტების მოდელებში.
- განსახილველი თემები:
- კლასები და ინსტანციები (ნახაზები/blueprints პირდაპირ ობიექტების წინააღმდეგ).
__init__კონსტრუქტორი დაself-ის ზუსტი როლი.- ინსტანციის ატრიბუტები კლასის ატრიბუტების წინააღმდეგ.
- საჯარო (Public) ცვლადები პირობით-დახურული ცვლადების წინააღმდეგ (
_protected,__private). - ლოგიკის ინკაპსულაცია ინსტანციის მეთოდებში.
- რატომ არის ეს მნიშვნელოვანი: OOP უზრუნველყოფს მკაფიო მოდელს კომპლექსური დომენური ლოგიკისთვის, როგორიცაა მომხმარებლის ანგარიშები, თამაშის ობიექტები და მონაცემთა ბაზის ჩანაწერები.
- პრაქტიკული დავალება: შექმენით ბანკის ანგარიშის (Bank Account) კლასი დეპოზიტების, გატანის, ტრანსფერების და ტრანზაქციების ისტორიის თრექინგის მეთოდებით, სადაც მკაცრად გააკონტროლებთ ოვერდრაფტის ლიმიტებს.
კვირა 12: გაღრმავებული OOP, მემკვიდრეობითობა (Inheritance) და Dunder მეთოდები
- მთავარი ფოკუსი: კლასების გაღრმავებული მოდელირება, კოდის ხელახალი გამოყენება და პითონური ობიექტების ქცევა.
- განსახილველი თემები:
- კლასების მემკვიდრეობითობა და მეთოდების გადაფარვა (overriding).
- მშობლის ქცევაზე უსაფრთხოდ წვდომა
super()-ის გამოყენებით. - სპეციალური Dunder (Double Underscore) მეთოდები:
__str__(მომხმარებლებისათვის),__repr__(დეველოპერებისთვის),__len__და__eq__. - ატრიბუტებზე წვდომის კონტროლი
@propertyდეკორატორების გამოყენებით (getters და setters).
- რატომ არის ეს მნიშვნელოვანი: dunder მეთოდებისა და ფროფერთების დაუფლება თქვენს კლასებს შეუფერხებლად აინტეგრირებს Python-ის სტანდარტულ ოპერაციებთან.
- პრაქტიკული დავალება: შექმენით საბანკო სისტემის სიმულატორი ანგარიშების იერარქიით (
SavingsAccount,CheckingAccount), რომლებიც მემკვიდრეობით მიიღებენ თვისებებს საბაზისოAccountკლასიდან, სრული string რეპრეზენტაციებითა და property დაცვებით.
კვირა 13: HTTP პროტოკოლი და Web API-ების მოხმარება
- მთავარი ფოკუსი: ქსელის მეშვეობით დაშორებულ სერვერებთან ინტერაქცია.
- განსახილველი თემები:
- HTTP client-server კომუნიკაციის საფუძვლები: Request/Response ციკლი, HTTP მეთოდები (
GET,POST,PUT,DELETE) და სტატუს კოდები (200 OK,404 Not Found,500 Server Error). requestsბიბლიოთეკის გამოყენება გარე REST API-ების მოსახმარად.- Query პარამეტრების გადაცემა, JSON პასუხების დამუშავება და API გასაღებების მიბმა ავთენტიფიკაციისთვის.
- მეხსიერება-ეფექტური იტერაციის გაცნობა Generators და
yield-ის გამოყენებით.
- HTTP client-server კომუნიკაციის საფუძვლები: Request/Response ციკლი, HTTP მეთოდები (
- რატომ არის ეს მნიშვნელოვანი: თანამედროვე backend სერვისები იშვიათად არსებობენ იზოლაციაში; ისინი განუწყვეტლივ ელაპარაკებიან მესამე მხარის ენდფოინთებს, გადახდის სისტემებსა და მონაცემთა პროვაიდერებს.
- პრაქტიკული დავალება: შექმენით ამინდის CLI ხელსაწყო, რომელიც მოსთხოვს მომხმარებელს ქალაქის სახელს, გააგზავნის ავთენტიფიცირებულ მოთხოვნას OpenWeatherMap API-სთან, დააპარსავს JSON-ს და დააფორმატებს ყოველდღიურ ამინდის რეპორტს.
კვირა 14: რელაციური მონაცემთა ბაზები და SQL-ის საფუძვლები
- მთავარი ფოკუსი: მონაცემთა ბაზის ცხრილებისა და რელაციური მეფინგის გაგება ORM-ის გამოყენებამდე.
- განსახილველი თემები:
- რელაციური მონაცემთა ბაზის კონცეფციები: ცხრილები (Tables), რიგები (Rows), სვეტები (Columns), Primary Keys, Foreign Keys და One-to-Many ურთიერთობები.
- საბაზისო SQL სინტაქსი:
SELECT,INSERT,UPDATE,DELETEდაWHEREპირობები. - Python-ის ჩაშენებული
sqlite3მოდული: ბაზასთან კავშირები, კურსორები, SQL-ის გაშვება და ტრანზაქციების commit-ი. - Parameterized query-ები საშიში SQL Injection მოწყვლადობების თავიდან ასაცილებლად.
- რატომ არის ეს მნიშვნელოვანი: Django ახდენს SQL query-ების აბსტრაქციას თავისი ORM-ით, მაგრამ უშუალოდ მონაცემთა ბაზის რელაციების გაგება უზრუნველყოფს, რომ მომავალში ოპტიმიზებული query-ები დაწეროთ.
- პრაქტიკული დავალება: შექმენით SQLite-ზე დაფუძნებული კონტაქტების წიგნი CLI-ში, რომელიც შეინახავს, მოძებნის, განაახლებს და წაშლის კონტაქტებს პირდაპირ მონაცემთა ბაზის ფაილიდან SQL ბრძანებების გამოყენებით.
ფაზა 4: Django Web Framework და პორტფოლიოს პროექტები (კვირა 15–18)
მიზანი: ააშენოთ პროდაქშენისთვის მზა Django ვებ აპლიკაციები, გამოიყენოთ Django ORM, შექმნათ RESTful API-ები Django REST Framework-ით (DRF) და დაადეპლოიოთ დასრულებული პროექტები.
კვირა 15: Django-ს მთავარი არქიტექტურა და Django ORM
- მთავარი ფოკუსი: Django ფრეიმვორქის ეკოსისტემა, პროექტის სტრუქტურა, მოთხოვნის (request) სასიცოცხლო ციკლი და მონაცემთა ბაზის მოდელირება.
- განსახილველი თემები:
- Django პროექტის და აპლიკაციის სტრუქტურა (
django-admin startproject,python manage.py startapp). settings.py,urls.pyდა URL routing პატერნების გააზრება.- მონაცემთა ბაზის მოდელების შექმნა
models.Model-ის გამოყენებით (ველების ტიპები,ForeignKey,ManyToManyField). - მონაცემთა ბაზის მიგრაციები (
makemigrations,migrate). - მონაცემებთან მუშაობა Django ORM-ით (
Model.objects.all(),.filter(),.get(),.create()). - მონაცემების მართვა ჩაშენებული Django Admin Panel-ის მეშვეობით.
- Django პროექტის და აპლიკაციის სტრუქტურა (
- რატომ არის ეს მნიშვნელოვანი: Django ყველაზე ფართოდ დანერგილი Enterprise Python ვებ ფრეიმვორქია. მისი ORM ხსნის SQL-ის ხელით წერის საჭიროებას და ამავდროულად გაწვდით ჩაშენებულ უსაფრთხოებასა და ადმინისტრაციულ ხელსაწყოებს.
- პრაქტიკული დავალება: შექმენით Django დავალებების მენეჯმენტის აპლიკაცია მონაცემთა ბაზის მოდელებით, მართეთ ჩანაწერები Django Admin-იდან და გამოიტანეთ დავალებები Django management command-ების ან მარტივი view-ების მეშვეობით.
კვირა 16: პორტფოლიოს პროექტი 1 — CLI Log Intelligence Tool
- პროექტის ფოკუსი: პითონის საბაზისო ოსტატობის, სტრინგების პარსინგის, Regular Expressions-ის და ფაილურ სისტემაში ნავიგაციის დემონსტრირება.
- რას ააშენებთ: command-line ანალიტიკის ხელსაწყო, რომელიც შთანთქავს დიდი მოცულობის ვებ სერვერის access log-ებს (მაგ. Nginx ან Apache ლოგებს).
- განსახორციელებელი მთავარი ფუნქციონალი:
- ფაილის გზების (paths) და ფილტრაციის ალმების (flags) მიღება
argparse-ის გამოყენებით. - კომპლექსური ლოგის სტრინგების დაპარსვა
reპატერნებით IP მისამართების, სტატუს კოდების, request გზებისა და პასუხის დროის ამოსაღებად. - ანალიტიკის გამოთვლა: ყველაზე აქტიური IP მისამართები, ტოპ error მარშრუტები (4xx/5xx კოდები) და ინტერნეტ ტრაფიკის (bandwidth) გამოყენება.
- სტრუქტურირებული შემაჯამებელი რეპორტების ექსპორტი
.jsonან.csvფორმატში.
- ფაილის გზების (paths) და ფილტრაციის ალმების (flags) მიღება
კვირა 17: პორტფოლიოს პროექტი 2 — ავტომატიზებული API Harvester & Alert Bot
- პროექტის ფოკუსი: გარე API-ს ინტეგრაციის, მონაცემთა მუდმივი შენახვის, ფონური (background) დავალებების დაგეგმვისა და Webhook-ების დემონსტრირება.
- რას ააშენებთ: მონაცემთა ავტომატიზებული თრექერი, რომელიც მონიტორინგს უწევს გარე ვებ მონაცემებს და ატყობინებს მომხმარებლებს მნიშვნელოვან მოვლენებზე.
- განსახორციელებელი მთავარი ფუნქციონალი:
- პერიოდულად გამოითხოვეთ საჯარო API (მაგ. კრიპტოვალუტის ფასები, GitHub რეპოზიტორიის commit-ები ან Open Weather მონაცემები).
- ჩაწერეთ მონაცემების დროში დაფიქსირებული სნეპშოტები პირდაპირ ლოკალურ მონაცემთა ბაზის ცხრილში.
- დააფიქსირეთ სპეციფიკური ბიზნეს პირობები (მაგ. ფასი ჩამოსცდა ზღვარს ან გამოვიდა ახალი commit-ი).
- გამოიწვიეთ ავტომატური შეტყობინებები Discord ან Telegram არხში გარე Webhook-ების საშუალებით.
კვირა 18: პორტფოლიოს პროექტი 3 — პროდაქშენისთვის მზა Django REST API და ტესტირება
- პროექტის ფოკუსი: Full-stack backend მექანიკის, მონაცემთა ბაზის რელაციების, ავთენტიფიკაციისა და ავტომატიზებული ტესტირების დემონსტრირება Django-თი.
- რას ააშენებთ: პროდაქშენის დონის RESTful API backend, შექმნილი Django-სა და Django REST Framework (DRF)-ის გამოყენებით (მაგ. ელ. კომერციის ინვენტარის სისტემა, ონლაინ კურსების API ან Content Management API).
- განსახორციელებელი მთავარი ფუნქციონალი:
- სრულყოფილი RESTful ენდფოინთები, აწყობილი Django REST Framework view-ებითა და სერიალიზატორებით.
- კომპლექსური რელაციური მოდელები (Users, Categories, Products/Items) მხარდაჭერილი SQLite ან PostgreSQL ბაზით Django ORM-ის გავლით.
- Token ან Session ავთენტიფიკაცია დაცული API ენდფოინთებისთვის.
- Unit ტესტები დაწერილი Django-ს ჩაშენებული
TestCase-ის ანpytest-django-ს გამოყენებით მოდელების, სერიალიზატორებისა და ენდფოინთის response კოდების დასატესტად. - სუფთა, პროფესიონალური GitHub რეპოზიტორია, რომელიც შეიცავს
README.md-ს არქიტექტურის დიაგრამებით, ინსტალაციის ინსტრუქციებითა და მარტივიcurlან Postman request-ებით.
ავტორის შესახებ
გიგი ჩაკაბერია
backend დეველოპერი და მენტორი