@@ -24,9 +24,9 @@ da se to datoteko generira iz grafičnega vmesnika (:ref:`Zasnova in razvoj graf
2424
2525AsyncIO
2626===============
27- Jedro ogrodja je zasnovano za konkurenčno (angl. *concurrent *) delovanje , kar pomeni da se lahko na videz več opravil izvaja na enkrat, v
28- resnici pa se zelo hitro preklaplja med njimi . To je omogočeno s knjižnico :mod: `asyncio `.
29- AsyncIO omogoča ustvarjanje ``async `` funkcij, ki vrnejo korutine. Te korutine lahko potem zaženemo v opravilih,
27+ Jedro ogrodja je zasnovano za sočasno (angl. *concurrent *) večopravilnost , kar pomeni da se lahko na videz več opravil izvaja na enkrat, v
28+ resnici pa se med njimi zelo hitro preklaplja. To je omogočeno s knjižnico :mod: `asyncio `.
29+ AsyncIO omogoča ustvarjanje ``async `` funkcij, ki vrnejo korutine (angl. coroutine) . Te korutine lahko potem zaženemo v opravilih,
3030med katerimi bo program preklopil vsakič, ko v trenutnem opravilu z ``await `` besedo na primer čakamo:
3131
3232- na konec neke asinhrone komunikacije (angl. *Async I/O *)
@@ -38,6 +38,7 @@ med katerimi bo program preklopil vsakič, ko v trenutnem opravilu z ``await`` b
3838 dela kode oz. skupne surovine. https://docs.python.org/3/library/asyncio-sync.html.
3939
4040
41+
4142 .. raw :: latex
4243
4344 \newpage
@@ -83,7 +84,7 @@ Ogrodje samo po sebi deluje tako, da ima vse objekte (račune, cehe, sporočila,
8384ob taki definiciji neproblematično, problem pa je nastopil, ko je bilo dodano dinamično dodajanje in brisanje objektov, kar
8485dejansko uporabnikom omogoča, da ogrodje dinamično uporabljajo in v tem primeru je bilo potrebno dodati neke vrste permanentno shrambo.
8586Razmišljalo se je o več alternativah, ena izmed njih je bila da bi se vse objekte shranjevalo v neko bazo podatkov, ki bi omogočala
86- mapiranje podatkov v bazi , kar bi z vidika robustnosti bila zelo dobra izbira, a to bi zahtevalo veliko prenovo
87+ preslikavo bazičnih podatkov v objekte , kar bi z vidika robustnosti bila zelo dobra izbira, a to bi zahtevalo veliko prenovo
8788vseh sektorjev, zato se je na koncu izbrala preprosta opcija shranjevanja objektov, ki preko :mod: `pickle ` modula shrani vse račune
8889ob vsakem normalnem izklopu ogrodja, ali pa v vsakem primeru na dve minuti periodično. V prihodnosti so
8990še vedno načrti za izboljšanje tega mehanizma in ne izključuje se uporaba prej omenjene podatkovne baze.
@@ -162,7 +163,7 @@ v primeru beleženja sporočil (vsaj v primeru JSON datotek), kjer je vse razdel
162163
163164Sporočilni sektor
164165-----------------
165- Sporočilni sektor je zadolžen za pošiljanje dejanskih sporočil v posamezne kanale na Discordu .
166+ Sporočilni sektor je zadolžen za pošiljanje dejanskih sporočil v posamezne kanale.
166167V tem sektorju so na voljo trije glavni razredi za ustvarjanje različnih vrst sporočil:
167168
1681691. |TextMESSAGE | - pošiljanje tekstovnih sporočil v cehovske kanale
@@ -185,9 +186,9 @@ To je še posebno pomembno v primeru, da imamo definiranih veliko sporočil v en
185186poslalo točno ob določenem času. Ker se čas prišteva od prejšnjega predvidenega časa pošiljanja, to pomeni, da bo v primeru
186187zamude sporočila razmak med tem in naslednjim sporočilom manjši točno za to časovno napako (če privzamemo da ne bo ponovne zakasnitve).
187188
188- Pred tem algoritmom, je za določanje časa pošiljanja bil v rabi preprost časovnik, ki se je ponastavil po vsakem pošiljanju, a se je zaradi Discordove
189- omejitve API zahtevkov in tudi drugih Discord API zakasnitev, čas pošiljanja vedno pomikal malo naprej, kar je pomenilo, da če je uporabnik
190- ogrodje konfiguriral da se neko sporočilo pošlje vsak dan in definiral čas začetka naslednje jutro ob 10ih (torej pošiljanje vsak dan ob tej uri),
189+ Pred tem algoritmom je bil za določanje časa pošiljanja v rabi preprost časovnik, ki se je ponastavil po vsakem pošiljanju, a se je zaradi Discordove
190+ omejitve API zahtevkov in tudi drugih Discord API zakasnitev čas pošiljanja vedno pomikal malo naprej, kar je pomenilo, da če je uporabnik
191+ ogrodje konfiguriral, da se neko sporočilo pošlje vsak dan in definiral čas začetka naslednje jutro ob 10ih (torej pošiljanje vsak dan ob tej uri),
191192potem je po (sicer veliko) pošiljanjih namesto ob 10ih uporabnik opazil, da se sporočilo pošlje ob 10.01, 10.02, itd.
192193Primer računanja časa in odprave časovne napake je prikazan na spodnji sliki.
193194
@@ -262,7 +263,7 @@ datoteko.
262263
263264CSV beleženje
264265~~~~~~~~~~~~~~~~~~
265- CSV beleženje deluje na enak način kot JSON beleženje. Edina razlika je v formatu, kjer je format tu CSV.
266+ CSV beleženje deluje na enak način kot JSON beleženje. Edina razlika je v formatu, kjer je ta v tem primeru CSV.
266267Lokacija datotek je enaka kot pri JSON beleženje. Za shranjevanje je uporabljen vgrajen Python modul :mod: `csv `.
267268
268269Za sam pregled poslanih sporočil to ni najbolj primeren format, saj se vse shrani v eni datoteki, kjer za razliko od JSON
@@ -276,18 +277,19 @@ formata, tu ni več-slojnih strukture.
276277
277278SQL beleženje
278279~~~~~~~~~~~~~~~~~~
279- SQL beleženje pa deluje precej drugače, kot delujeta JSON beleženje in CSV beleženje, saj se podatki shranjujejo
280+ SQL beleženje deluje precej drugače, kot delujeta JSON beleženje in CSV beleženje, saj se podatki shranjujejo
280281v podatkovno bazo, ki je v primeru uporabe SQLite dialekta lahko tudi datoteka.
281282
282283Beleženje je omogočeno v štirih SQL dialektih:
283284
2842851. SQLite
285- 2. Microsoft SQL Server
286+ 2. Microsoft SQL Server (T-SQL)
2862873. PostgreSQL
2872884. MySQL / MariaDB
288289
289290Za čim bolj univerzalno implementacijo na vseh dialektih, je bila pri razvoju uporabljena knjižnica :mod: `SQLAlchemy `.
290- Celoten sistem SQL beleženja je implementiran s pomočjo ORM, kar med drugim omogoča tudi
291+
292+ Celoten sistem SQL beleženja je implementiran s pomočjo ORM, kar med drugim omogoča,
291293da SQL tabele predstavimo z Python razredi, posamezne vnose v bazo podatkov oz. vrstice pa predstavimo z instancami
292294teh razredov. Z ORM lahko skoraj v celoti skrijemo SQL in delamo neposredno z Python objekti, ki so lahko tudi gnezdene
293295strukture, npr. vnosa dveh ločenih tabel lahko predstavimo z dvema ločenima instancama, kjer je ena instanca
@@ -344,5 +346,5 @@ PyCord je odprtokodno ogrodje, ki je nastalo iz kode starejšega `discord.py <ht
344346Ogrodje PyCord skoraj popolnoma zakrije Discord API z raznimi objekti, ki jih ogrodje interno uporablja.
345347
346348Če bi si ogledali izvorno kodo (angl. *source code *) ogrodja, bi opazili da je poleg ``daf `` paketa zraven tudi paket z imenom ``_discord ``.
347- To ni nič drugega kot PyCord ogrodje, le da je modificirano za možnost rabe na osebnih uporabniških računih.
349+ To ni nič drugega kot PyCord ogrodje, le da je modificirano za možnost rabe na uporabniških računih (poleg avtomatiziranih robotskih računov) .
348350
0 commit comments