მისი primitive API საშუალებას უზრუნველყოფს ინტერნეტში, და მისი კლიენტს არის მახასიათებელი შეზღუდვა. როგორ მუშაობს Google Calendar, და რა შეგვიძლია ისწავლოთ, როგორც ინჟინერი. არქიტექტურა : არაფერი (!). უბრალოდ რამდენიმე შიდა ბიბლიოთეკები რამაც, როგორიცაა დატვირთვა და გაუზიაროს ინსტრუმენტები. Frontend framework : CSS კლასის სახელი, რომელიც მოვუწოდება JS. Frontend Styling : Cache Storage, IndexedDB (საწყისში mode), CDN (მოწერა და ფერი). Frontend Storage Spanner DB არ არის. API Storage : Google Meet, Google კონტაქტები, Google Auth. External APIs : Heartbeat, Eventing, შეტყობინებები Services : ინდივიდუალური კომბინერი, რომელიც იძლევა JS ჩამოტვირთვა და გააგრძელება. Other Interesting პრობლემები რა თქმა უნდა, სტატისტიკა არის ერთი დიდი CRUD პროგრამა, მაგრამ არ გაძლევთ, რომ თქვენ გაქვთ - არსებობს ბევრი მოთხოვნო ტექნიკური პრობლემები, რომლებიც უნდა გადაიხადოს. თარიღი API REST+JSON 2011 წლიდან (საწყისი REST+RSS სტილის feed) მონაცემთა მოდელი მნიშვნელოვანია RFC 5545 iCalendar recurrence string (Microsoft და Apple გამოიყენება საავტორო ოფისები) კლიენტებს შეუძლია შეამოწმოთ / შეამოწმოთ, რათა მიიღოთ webhook შეტყობინება, როდესაც მოვლენები ცვლილებები მხარს უჭერს Incremental სინქრონიკის სიჩქარით ... მაგრამ ასევე მოითხოვს თქვენ გააკეთოთ Expirations & re-syncs საკუთარი იყენებს Quotas & ფასების შეზღუდვა, რათა შეამციროს შესრულების პრობლემები Powerful მაგრამ primitive. ისინი გაძლევთ საკმარისი, რომ გააკეთოთ რა უნდა, მაგრამ ისინი არ გააკეთოს ეს თქვენთვის. HTML სტატისტიკა რა თქმა უნდა, HTML- ის სტრუქტურა ნამდვილად საინტერესოა! მას შემდეგ, რაც სტრუქტურა მდიდარი კონტაქტში, იმ შემთხვევაში, თუ ელემენტები არ არის იზოლებული. ძირითადი შესრულების საკითხები ხდება აქ არის ყველაზე მნიშვნელოვანი HTML layers: The Grid: ყოველდღიური ხაზი, ყოველდღიური კოლადები, დროული მოვლენები, კონტეინერი მოვლენას, რომელიც არ შეიძლება დახურული ხაზი / კოლადის ეს საშუალებას გაძლევთ გაძლევთ DND სამუშაოები ქსელში. ფორმები: დახურვის მოვლენები ქსელში და გაფართოებული სრული ეკრანზე დიალოგიში Tastes: შეტყობინებები შეტყობინებები Frontend ალგორტატები თითოეული სტატისტიკა კლიენტს აქვს რამდენიმე ხუთი ალგორტიზები : the length, height, and coordinates (X, Y) of each event div. To compute this, you need to account for the event duration and view scale. Event position : The width and Y coordinates, which need to be adjusted based on the surrounding events. All-day event lengths : how to adjust events when they share times. Gcal’s implementation is more sophisticated compared to Outlook’s (which halves each event). Pseudo-code below. Overlapping events // overlapping events logic if start or end of targetEvent overlaps with any(events): if start and end of targetEvent = start and end of any(events): orderEventsAlphabeticallyByTitle() if start of targetEvent = start of any(events) and end != end of any(events): orderByDuration() //longest events go behind shorter events if start or end of targetEvent != start or end of any(events): if targetEvent overlaps multiple events: targetEventGoesInFrontOfEvents() else: orderEventsByStart() //events that start earlier go behind ეს ამ ალგოების სრული განახლება. Compass რეპუტაცია მომსახურება ეს არის გარე სამუშაო კუნძულები, რომლებიც საშუალებას გაძლევთ კლიენტების კოდი იყოს მარტივი და საიმედო Heartbeat მომსახურება — საშუალებას გაძლევთ GCal არის საიმედო და წავიდეთ off-line რეჟიმში გარიგებით მომსახურება - pub / sub style მოვლენები, რომლებიც უზრუნველყოფს webhooks კლიენტებს. ეს საშუალებას გაძლევთ სხვა პროგრამები შექმნას GCal API. გაგზავნა მომსახურება — შეესაბამება დროის თქვენი წინასწარ მოვლენების გაგზავნა. კლიენტს შეუძლიათ გააკეთოთ ეს მხოლოდ სავარაუდოდ, მაგრამ ეს იქნება ნაკლებად საიმედო. [ Takeaways საწყისი CRUD განაცხადის შექმნა გლობალური ზომის არქიტექტურის დირგამით შეიძლება გამოიყურებოდეს მარტივი, მაგრამ ეს მარტივილობა ჯერ კიდევ მოითხოვს მაღალი დონე გაკეთება. API საიმედოობა: იმის გამო, რომ ბევრი პროგრამები დამოკიდებულია GCal- ის ორიგინალური სინქრონიზაციაზე, API- ს უნდა იყოს მარტივი, გაფართოებული და საიმედო. თუ ისინი შეუზღუდავი არიან, ისინი შეხვდება სხვა პროგრამების გუნდი downstream. მონაცემთა უსაფრთხოება: კლიენტების მონაცემები ძალიან სქესობრივია. ისინი მნიშვნელოვნად დამოკიდებულია scope-based როლები, რათა უზრუნველყოს, რომ მხოლოდ ადამიანები / პროგრამები, რომ თქვენ გაძლევთ საშუალებას მიიღოს თქვენი მონაცემები. მონიტორინგი მომსახურება: ჯანმრთელობის კონცენტრაცია, ლოგვის და სინთრიზაციის გაკეთება მუდმივად გაკეთება. მასშტაბით მოთხოვნები, თქვენ შეგიძლიათ გააკეთოთ ცხოვრება მარტივი თქვენთვის, უბრალოდ . არ გააკეთოთ რამ არ გააკეთოთ რამ თქვენ არ უნდა გამოიყენოთ trending stack. ვფიქრობ, თუ ისინი წავიდა ყველაფერი, რათა გადაიხადოს მათი პროგრამა Angular. შემდეგ რეაქტი. შემდეგ Svelete. შემდეგ NextJS. შემდეგ HTMX. ყველა ისინი მოდის შემდეგ Google Calendar გადაიხადოს. GCal აირჩიე JS, გადაიხადოს მარცხენა ხაზზე, და იყო coasting at 64MPH წლების განმავლობაში. ვინმეს არ დაინტერესებს. თქვენ არ უნდა გამოქვეყნოს ყველა პლატფორმა. ატვირთეთ Google Calendar desktop app ახლა. მე დაველოდოთ. თქვენ არ უნდა წაიკითხოთ სტანდარტული ტენდენციები. Bootstrap. Bulma. სტანდარტული კომპონენტები. Tailwind. CSS კლასის სახელიები. თქვენ არ უნდა გაქვთ საუკეთესო UX. Dark mode. ფორმები, რომ შეინარჩუნებს ადგილი. #FFFFFF light mode. Full-page ფორმები. თქვენ არ უნდა გაქვთ საუკეთესო შესრულება. მათი მიმოხილვა შესრულება არის 31/100. ისევე, როგორც ცხოვრებაში, ეს გადაიხადოს, რომ იცოდეთ თავს, როდესაც პროდუქტის გადაზიდვა. Google Calendar არ ცდილობს იყოს თანამედროვე პროგრამა, რომელიც მენეჯმენტები იყენებენ 40 შეხვედრები დღეში (ეს არის ის, რაც Vimcal არის). Google Calendar მიზნით არის მარტივი აპლიკაცია, რომელიც ნებისმიერი მისი 2 მილიარდი მომხმარებელს შეუძლია ოპერაცია გარეშე მხარდაჭერა. იგი ფოკუსირება 88/100 ხელმისაწვდომობის შესახებ. UI არ შეცვალოს. ეს არ იღებს ქვემოთ, და მას აქვს off-line მხარდაჭერა, თუ ის გაქვთ. ეს უბრალოდ მუშაობს. ეს არის ბევრი. იმისათვის, რომ ამ Deep Dive თქვენი ჩანაწერში, დააწკაპუნეთ ჩემი ბილეთები, . Fullstack ინჟინერი