Түүний алдартай API нь интернетийн програм хангамж боломжийг олгодог, түүний клиент нь хязгаарлагдмал ширээ юм. Google Календар хэрхэн ажилладаг, бид инженерийн хувьд энэ нь юу мэдэж болно. Архитектур : ямар ч (!). Тавтай морилно уу автоматаар, хуваалцсан хэрэгсэл гэх мэт зүйлс нь зөвхөн хэд хэдэн дотоод библиотек. Frontend framework : CSS класс нэр, JS-ийн хэрэглэдэг. Frontend Styling : Cache Storage, IndexedDB (Офлайн загвар), CDN (Имэглэл & Шрифт) Frontend Storage : Spanner DB API Storage : Google Meet, Google Холбоо барих, Google Auth. External APIs : Heartbeat, Eventing, мэдээлэл Services : JS татаж авах, хурдан ажиллуулах нь дотоод компилятор. Other Ажлын асуудал Гэсэн хэдий ч, календарт нэг том CRUD апп юм. Гэхдээ энэ нь танд илрүүлнэ үү - шийдэхийн тулд маш их техникийн асуудал байсан. Гарын авлага 2011 оноос хойш REST+JSON (эсвэл REST+RSS хэлбэртэй feed) Бүтээгдэхүүний загвар нь RFC 5545-ийн iCalendar-ийн туршилтын цуврал дээр маш их хязгаарлагддаг (Microsoft & Apple-ийн хувийн объектыг ашигладаг) Хэрэглэгчид үйл явдлын өөрчилсөн үед webhook мэдээлэл авахын тулд үзэх / татаж авах боломжтой Өндөр хурдтай синхронизацийг дэмждэг ... гэхдээ мөн та нартай өөрсдийн ачаалал, шинэ синхронизацийг хянах хэрэгтэй Өргөтгөлийн асуудлыг багасгахын тулд коэффициент & түвшинд хязгаарлагч ашигладаг Эрчим хүчтэй боловч алдартай. Тэд танд ямар ч зүйл хийхэд хялбар байх болно, гэхдээ тэд танд үүнийг олж чадахгүй. HTML хуудсууд Да, HTML-ийн структурын үр дүн нь сонирхолтой байж болно! Календар үзэл агуулгыг багатай бөгөөд, элементүүд тусгаарлагддаггүй бол. Өндөр гүйцэтгэлийн асуудал Энд хамгийн чухал HTML хавтан байна: Галт тэрэг: өдөр тутмын, өдөр тутмын, цаг хугацааны үйл явдал, контейнер , which can’t be locked to a row/column The preview event drag layer. Энэ нь та DND үйл явцыг grid-д хийх боломжийг олгодог. Формууд: Галт тэрэг дээр үйл явдлыг хоорондоо, бүрэн дэлгэцийн диалогонд өргөжүүлэх Тост: баталгааны хуваалцах 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 Зөвлөгөө Эдгээр алгоритмыг бүрэн хэрэглэхэд. Компас репо Үйлчилгээ Эдгээр нь үйлчлүүлэгч код нь хялбар, найдвартай байх боломжийг олгодог. Heartbeat үйлчилгээ — GCal-ийг найдвартай байх, хялбар offline режимууд руу хүрч болно Eventing үйлчилгээ — тавтай морилно уу, pub / sub style үйл явдлыг тавтай морилно уу. Энэ нь бусад аппын GCal API дээр үүсгэх боломжийг олгодог. Тавтай морилно уу, Тавтай морилно уу, Тавтай морилно уу! [ Өнгөрсөн Глобал түвшний CRUD програмыг үүсгэхийн тулд архитектурын диаграмд харьцуулахад хялбар байж болох боловч энэ хялбар байдал нь өндөр түвшин гүйцэтгэлийг шаарддаг. API-ийн найдвартай: Олон апп-ийн хэрэглэгчийн GCal-тэй хоёр тусалгаатай синхронизац дээр хамаарна, API-ийн хялбар, өргөтгөлгүй, найдвартай байх ёстой. Хэрэв тэд хатуу, тэд бусад апп-ийн аргуудыг доош хүрч болно. мэдээлэл аюулгүй байдал: Календар өгөгдөл нь хязгаарлагдмал байдаг. Энэ нь зөвхөн танд зөвшөөрсөн хүмүүсийн / апп-ийн таны өгөгдлийг хангахыг баталгаажуулахын тулд өргөн хүрээ дээр суурилсан ажиллуулалттай. Мониторинг үйлчилгээ: Эрүүл мэндийн хяналт, бүртгүүлэх, синхронжуулалт байнгын ачаалалтай байдаг. Ажлын шаардлагад харьцуулахад, та зүгээр л өөрийн амьдрал хялбар хийж болно . not doing things Үгүй зүйл хийх Та Trending Stack-ийг ашиглах хэрэгтэйгүй. Хэрэв тэд Angular-д тэдний апп-ийг шинэчлэхэд бүх зүйлийг унтраахыг хүсч байгаа бол. Дараа нь React. Дараа нь Svelete. Дараа нь NextJS. Дараа нь HTMX. Google Calendar-ийг хуваалцсан дараа тэдний бүх зүйл. GCal нь JS-ийг сонгосон, зөв шугам руу урдсан бөгөөд долоо хоногийн турш 64MPH-д урдсан байна. Үгүй ч байтугай. Та бүх платформ дээр хуваалцах хэрэгтэйгүй. Одоо Google Календар desktop-ийг олж авах. Би чадахгүй байна. Та styling тэндэлгээг харах хэрэгтэй биш юм. Bootstrap. Bulma. styled-components. Tailwind. CSS зэрэг нэр. Та хамгийн шилдэг UX-тэй байх хэрэгтэйгүй. Хөнгөн хэлбэр. Хөнгөн хэлбэр. #FFFFFF. Хөнгөн хэлбэр. Та хамгийн сайн гүйцэтгэл байх хэрэгтэй биш юм. Performance дээр тэдний гэрэл үзүүлэлт 31/100 юм. Жишээ нь, бүтээгдэхүүнийг тээвэрлэх үед та нартай мэднэ үү. Google Календар нь гүйцэтгэх ажилтнууд өдөрт 40 оюутнуудыг төлөвлөж ашигладаг орчин үеийн апп биш юм (Энэ нь Vimcal-ийн зорилго юм). Google Календар нь 2 тэрбум хэрэглэгчдийн ямар ч нэг нь гарын авлагагүйгээр ажиллуулахын тулд хялбар апп юм. Энэ нь хялбар байдал дээр 88/100 түвшин байна. Хэрэглэгчийн интерфэйс өөрчилж биш юм. Энэ нь багасгахгүй бөгөөд энэ нь офлайн дэмжлэгтэй байдаг. Энэ нь зөвхөн ажилладаг. Энэ нь маш их. Эдгээр уян хатан тавтай морилно уу, миний бюллетень дээр бүртгүүлэх, . Fullstack инженер