Sen primitiivinen API mahdollistaa Internetin ajoittamisen, ja sen asiakas on hillitsemisen mestariteos. Miten Google Calendar toimii ja mitä voimme oppia siitä insinööreinä. Arkkitehtuuria Vain muutama sisäinen kirjasto esimerkiksi todentamiseen ja jaettuihin apuohjelmiin. Frontend framework CSS-luokkien nimet, joihin JS vetoaa. Frontend Styling Cache Storage, IndexedDB (offline-tila) ja CDN (kuvat ja fontit) Frontend Storage • Spanner DB. API Storage Google Meet, Google Yhteystiedot ja Google Auth. External APIs : sydämenlyönti, tapahtumat, ilmoitukset Services : Sisäinen kompilaattori, joka tekee JS: n lataamisesta ja nopeammin. Other Mielenkiintoisia ongelmia Tietenkin kalenteri on yksi iso CRUD-sovellus, mutta älä anna sen huijata sinua - oli paljon vaativia teknisiä ongelmia, jotka piti ratkaista. Kalenteri API REST+JSON vuodesta 2011 (alkuperäinen REST+RSS-tyylinen syöttö) Tietomalli nojautuu voimakkaasti RFC 5545:n iCalendarin toistuvuuteen (Microsoft ja Apple käyttävät omistettuja objekteja) Asiakkaat voivat katsella / tilata webhook-ilmoituksen, kun tapahtumat muuttuvat Tukee nopeutta lisääviä synkronointeja... mutta myös vaatii sinua käsittelemään vanhentumisia ja uudelleensynkronointeja itse Käyttää kiintiöitä ja korkorajoja suorituskykyongelmien vähentämiseksi He antavat sinulle tarpeeksi tehdä mitä tarvitset, mutta he eivät keksi sitä sinulle. HTML luonnos Kyllä, HTML:n rakenne voi olla todella mielenkiintoinen!Koska kalenterinäkymät ovat sisältöä Elimet eivät ole eristettyjä. Suuria suorituskykyongelmia esiintyy Tässä ovat tärkeimmät HTML-tasot: Verkko: koko päivän rivi, päivän sarakkeet, ajoitetut tapahtumat, säiliö Esikatselutapahtuma, jota ei voi lukita riville/sarakkeelle Tämä mahdollistaa DND-tehtävien siirtämisen verkkoon Muodot: kelluu tapahtumien vieressä verkossa ja laajenee täysnäytön vuoropuheluun Toasts: vahvistusviestejä varten Algoritmi eturintamassa Jokaisella kalenterin asiakkaalla on muutama mehukas algoritmi : 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 Näytä Tavoitteenamme on täysimääräisesti toteuttaa nämä alustat. Kompassi Repo Palvelut Nämä ovat ulkoisia työhevosia, joiden avulla asiakaskoodi pysyy yksinkertaisena ja luotettavana Heartbeat-palvelu – Sallii GCalin olla luotettava ja palaa offline-tilaan kauniisti Tapahtumapalvelu – pub/sub-tyylitapahtumat, jotka tukevat webhookeja asiakkaille. Ilmoituspalvelu – koordinoi tapahtumaa edeltävien ilmoitusten ajoitusta. Asiakas voisi teoreettisesti tehdä tämän yksin, mutta se olisi vähemmän luotettava. [ ottakaa Maailmanlaajuisen CRUD-sovelluksen rakentaminen saattaa näyttää yksinkertaiselta arkkitehtuurista, mutta tämä yksinkertaisuus vaatii edelleen korkeaa suoritustasoa. API-luotettavuus: Koska niin monet sovellukset luottavat kaksisuuntaiseen synkronointiin käyttäjän GCalin kanssa, API: n on oltava yksinkertainen, laajennettavissa ja luotettava. Tietoturva: Kalenteritiedot ovat erittäin arkaluonteisia, ja ne luottavat voimakkaasti soveltamisalaan perustuviin rooleihin varmistaakseen, että vain valtuuttamasi henkilöt/sovellukset voivat käyttää tietoja. Valvontapalvelut: Terveystarkastukset, lokitukset ja synkronointi tapahtuvat jatkuvasti kulissien takana. Ottaen huomioon mittakaavan vaatimukset, voit tehdä elämästäsi helpompaa itsellesi yksinkertaisesti . Älä tee asioita Älä tee asioita Sinun ei tarvitse käyttää trendiä. Kuvittele, jos he pudottivat kaiken kirjoittaakseen sovelluksensa uudelleen Angularissa. Sitten React. Sitten Svelete. Sitten NextJS. Sitten HTMX. Kaikki nämä tulivat sen jälkeen, kun Google Kalenteri lähetettiin. GCal valitsi JS: n, vetänyt oikealle radalle ja on ollut rannalla 64MPH: ssä vuosikymmeniä. Kukaan ei välitä. Sinun ei tarvitse julkaista kaikilla alustoilla. Poista Google Calendar -työpöytäsovellus juuri nyt. Sinun ei tarvitse seurata muotoilun trendejä. Bootstrap. Bulma. styled-komponents. Tailwind. CSS-luokkien nimet. Sinun ei tarvitse olla paras UX. Pimeä tila. Lomakkeet, jotka säästävät tilaa. #FFFFFF valotila. Koko sivun lomakkeet. Sinun ei tarvitse olla paras suorituskyky. Heidän suorituskyvyn heijastuspisteet ovat 31/100. Kuten elämässä, se maksaa tuntea itsesi, kun lähettää tuotteen. Google Calendar ei yritä olla moderni sovellus, jota toimitusjohtajien avustajat käyttävät 40 kokouksen ajoittamiseen päivässä (se on mitä Vimcal on tarkoitettu). Google Kalenteri pyrkii olemaan yksinkertainen sovellus, että kuka tahansa sen 2 miljardia käyttäjää voi toimia ilman käden pitämistä. Se pisteet 88/100 saavutettavuudessa. Käyttöliittymä ei muutu. Se ei mene alas, ja sillä on offline-tukea, jos se tekee. Se vain toimii. Se on runsaasti. Saadaksesi nämä syvät sukellukset postilaatikkoosi, tilaa uutiskirjeeni, . Täydellinen insinööri