diff --git a/docs/abstract.typst b/docs/abstract.typst index 3e77c56..70607f7 100644 --- a/docs/abstract.typst +++ b/docs/abstract.typst @@ -10,11 +10,11 @@ #indent-par([ Atmiņas kartītes (angl. flashcards) ir izplatīts veids, kā skolēni, - studenti un citi macošies cilvēki iegaumē materiālu. To veidošanai, + studenti un citi cilvēki, kas mācās vai studē, iegaumē materiālu. To veidošanai, uzturēšanai un izmantošanai izmanto programmatūras risinājumus, taču lielākoties neizmato pilnīgi caurspīdīgu vienkārša teksta formātu. Darbā tiek aprakstīts risinājums, kas izmanto domēna specifisku valodu ar pilnīgu - informācijas glabāšanu to ietvaros. + informācijas glabāšanu vienkārša teksta failos. ]) #par( @@ -37,12 +37,12 @@ "Abstract", ) #indent-par([ - Flashcards are a common way for students to - students and other studying people memorize the material. To create them, - software solutions are used for maintenance and use, however - most do not use a fully transparent plain text format. At work - a solution that uses a domain-specific language with a complete is described - information storage within them. + Flashcards are a common way for students to students and other studying + people memorize the material. To create them, software solutions are + used for maintenance and use, however most do not use a fully + transparent plain text format. This paper eplores a solution that uses a + domain-specific language with a complete is described information + storage using plain text files. ]) #par( first-line-indent: 0cm, diff --git a/docs/main.pdf b/docs/main.pdf new file mode 100644 index 0000000..ca4ee59 Binary files /dev/null and b/docs/main.pdf differ diff --git a/docs/main.typst b/docs/main.typst index 0f254ed..21b6004 100644 --- a/docs/main.typst +++ b/docs/main.typst @@ -20,12 +20,12 @@ #par( first-line-indent: 0cm, [ - *Atzīmēšanas valoda (angl. markup)* -- dokumentu formatēšanas sistēma, kas + *Iezīmēšanas valoda (angl. markup)* -- dokumentu formatēšanas sistēma, kas izmanto birkas un citus simbolus, lai noteiktu dokumenta struktūru un izkārtojumu. To izmanto, lai organizētu informāciju un kontrolētu dokumenta izskatu; - *Markdown* -- vienkārša un populāra atzīmēšanas valoda, kas galvenokārt + *Markdown* -- vienkārša un populāra iezīmēšanas valoda, kas galvenokārt paredzēta teksta dokumentu (īpaši tīmekļa lapu) formatēšanai; *Transpilēšana* -- teksta pārvēršana programmas datu struktūrās vai @@ -48,6 +48,8 @@ *Metadati* -- dati, kas apraksta citus datus, sniedzot informāciju par to īpašībām, piemēram, saturu, izcelsmi un struktūru; + + *CSV* -- formāts, kas satur vērtības, kas ir atdalīti ar komatiem; ], ) @@ -67,24 +69,24 @@ // 1) identificēt programmatūras produkta nosaukumu, piemēram, "Pārskatu ģenerators", utt., // 2) paskaidrot kas programmatūras produktam jādara un, ja nepieciešams, kas -// nav jādara; +// nav jādara; // 3) aprakstīt programmatūras produkta pielietojumu. // a) Aprakstīt, cik iespējams precīzi, iespējas, centienus un mērķi. Piemēram, -// teikums: iespēja efektīvi izstrādāt pārskatus nav tik labs, kā parametrizēti, -// lietotāja vadīti un definēti pārskati divu stundu laikā, ar iespēju ievadīt -// lietotāja parametrus dialoga režīmā. +// teikums: iespēja efektīvi izstrādāt pārskatus nav tik labs, kā parametrizēti, +// lietotāja vadīti un definēti pārskati divu stundu laikā, ar iespēju ievadīt +// lietotāja parametrus dialoga režīmā. // b) Nepieļaut pretrunas, lietojot terminus, kas līdzīgi terminiem augstāka -// līmeņa LVS 68:1996 lpp. 15. (22) specifikācijā (piemēram, Sistēmprasību +// līmeņa LVS 68:1996 lpp. 15. (22) specifikācijā (piemēram, Sistēmprasību - -// Kas ir atmiņas kartes #indent-par([ - Atmiņas kartītes (angl. flashcards) ir izplatīts veids, kā skolēni, studenti un - citi mācošies cilvēki iegaumē materiālu. Šādu kartīšu pamatā parasti ir priekša - un aizmugure. Priekšā atrodas jautājums vai uzdevums vai cita informācija, kas - uzstāda mentālu vai praktisku uzdevumu, iespējams iekļaujot arī mājieni. - Aizmugurē atrodas atbildes teksts, kas ar sevi atbild vai parāda pareizu - atbildi uz priekšā uzstādītu jautājumu vai uzdevumu. + // Kas ir atmiņas kartes + Atmiņas kartītes (angl. flashcards) ir izplatīts veids, kā skolēni, + studenti un citi cilvēki, kas mācās vai studē, iegaumē materiālu. Šādu + kartīšu pamatā parasti ir priekša un aizmugure. Priekšā atrodas jautājums + vai uzdevums vai cita informācija, kas uzstāda mentālu vai praktisku + uzdevumu, iespējams iekļaujot arī mājieni. Aizmugurē atrodas atbildes + teksts, kas ar sevi atbild vai parāda pareizu atbildi uz priekšā uzstādītu + jautājumu vai uzdevumu. ]) // Mācīšanās process un spaced-repetition @@ -94,12 +96,12 @@ jautājumi vai uzdevumi ir attiecīgi atbildami vai atrisināmi. Balstoties uz grūtību vai iespēju atbildēt, kartītes tiek grupētas noteiktās grupās, kas, savukārt, nosaka intervālu, pēc kura kartīte figurēs nākamā mācīšanās seansā. Piemēram, grupas - ļoti viegli, vidēji, grūti, neizdevās -, kam atbilst 5 -dienas, 3 dienas, 1 diena, 0 dienas attiecīgi. Jo lielāka ir subjektīva -piepūle, atbildot uz jautājumu vai risinot uzdevumu, jo tiek uzturēts garāks -pārtraukums pirms nākamās reizes, kad šī kartīte būs izmantota. Šī mācīšanās -metode ir atkārtošana ar intervāliem. Mācīšanās metode vai līdzīgas metodes var -uzlabot atcerēšanās līmeni pēc mācīšanās (#link()[Alison -Voice and Arran Stirton, 2020]). +dienas, 3 dienas, 1 diena, 0 dienas attiecīgi. Balstoties uz subjektīvu +piepūli, atbildot uz jautājumu vai risinot uzdevumu, tiek izvēlēta atbilsoša +intervālu grupa, kas nosaka laiku pirms nākamās reizes, kad šī kartīte būs +izmantota. Šī mācīšanās metode ir atkārtošana ar intervāliem. Mācīšanās metode +vai līdzīgas metodes var uzlabot atcerēšanās līmeni pēc mācīšanās +(#link()[Alison Voice and Arran Stirton, 2020]). // Stuff mdemory does Veidojot atmiņas kartītes manuāli tās var pazaudēt, var kļūdīties, sagatavojot @@ -121,18 +123,26 @@ iespēju pārslēgties uz citu risinājumu ar dažām teksta izmaiņām. // The name Programmatūras produkta nosaukums ir "Mdemory", kas ir darināts nosaukums no -"MD" (atzīmēšanas valodas Markdown abreviatūra) un "memory" (angl. atmiņa), kas +"MD" (iezīmēšanas valodas Markdown abreviatūra) un "memory" (angl. atmiņa), kas parāda produkta saistību ar atmiņu. == Saistība ar citiem dokumentiem +#indent-par([ + Programmatūras prasībus specifikācijas ir izstrādāta, ievērojot LVS 68:1996 + "Programmatūras prasību specifikācijas ceļvedis" standarta un LVS 72:1996 + "Ieteicamā prakse programmatūras projektējuma aprakstīšanai" standarta + prasības. +]) == Pārskats // apraksts: Ievads -Ievadā tiek definēts nolūks darbības sfēra, aprakstīta galvenā programmatūras -produkta būtība un mērķi, saistītie dokumenti. +#indent-par([ + Ievadā tiek definēts nolūks darbības sfēra, aprakstīta galvenā programmatūras + produkta būtība un mērķi, saistītie dokumenti. +]) Vispārējā apraksta sadaļā tiek aprakstīts esošais stāvoklis, pasūtītājs, produkta perspektīva, galvenās darījumprasības, pieņēmumi un atkarības. @@ -150,45 +160,68 @@ plūsmas, funkcijas un risinājuma nefunkcionālās prasības. == Esošā stāvokļa apraksts -Esošie atmiņas kartīšu risinājumi galvenokārt atbalsta atmiņas -kartīšu importu ar vienkāršu tekstu. Taču lielākā daļa nedod iespēju -uzturēt kartītes bez vienkāršā tekstā, jo risinājumi glabā kartītes -savā, pielāgotā formātā. +// @TODO: go over the thing +#indent-par([ + "Mdemory" lietotne piedāvā vairāku specializēto atmiņas kartīšu veidu + funkcionalitāti un pilnīgu vienkārša teksta atmiņas kartīšu definēšanu un + pārvāldību. Vairāki esošie risinājumi piedāvā daļu no minētām iespējām, bet + gan nepiedāvā abas iespējas. +]) -Daži risinājumi iekļauj arī vairākus specializētus jautājumu veidus, kā grupēšanas -jautājumi, vairāku atbilžu jautājumus un secības jautājumus. Tādu risinājumu piemērs ir -(#link()["Quizlet"]) lietotne. Minētā importa funkcija parasti nav pieejama esošos risinājumos. -To importa funkcionalitāte realizē vienkāršu importu visbiežāk ar mērķi migrēt atmiņas kartītes -vienas lietotnes ietvaros. +// Quizlet +Daži risinājumi iekļauj vairākus specializētus jautājumu veidus, kā grupēšanas +jautājumi, vairāku atbilžu jautājumi un secības jautājumi. Tādu risinājumu +piemērs ir #link()["Quizlet"] lietotne. Quizlet importa +funkcionalitāte realizē vienkāršu importu, kas visbiežāk ir izmantots ar mērķi +pārnest atmiņas kartītes vienas lietotnes ietvaros, nevis veidot kartītes šajā +formātā. Quizlet vienkārša teksta imports ir realizēts, izmantojot CSV formātu. // org-drill -Diezgan tuvs pēc funckionalitātes mērķiem ir "Emacs" teksta editora -papildinājums "org-drill". Tas piedāvā vienkārša teksta atmiņas kartīšu veidošanu -un glabāšanu ar vienkāršu tekstu ar augstu pielāgojamību. Toties tas pieprasa -"Emacs" teksta editora izmantošanu un ir domāta tehniskākiem lietotājiem mazāk -lietotājiem draudzīgas funkcionalitātes dēļ (#link()[Paul Sexton]). - +Diezgan tuvs pēc funckionalitātes mērķiem ir "Emacs" teksta redaktora +papildinājums "org-drill". Tas piedāvā vienkārša teksta atmiņas kartīšu +veidošanu un glabāšanu ar vienkāršu tekstu. Lietotojot "ord-drill", ir +nepieciešams izmantot "Emacs" teksta redaktoru. Programmas funkcionalitāte ir +domāta pieredzējošākiem lietotājiem. Risinājums liek uzsvaru uz vienkāršām +kartītēm, kas neiekļauj specializētus kartīšu jautājumu veidus +(#link()[Paul Sexton]). // @Improve: should I add date here? -Pašlaik neviens no esošiem risinājumiem neatbalsta minēto specializēto atmiņas -kartīšu veidu importu. +// # Org-mode functions +// Simple: Basic question and answer. +// Cloze Deletion: Creates fill-in-the-blank cards where specific terms are +// masked and must be recalled. +// Multicloze: Allows multiple cloze deletions within the same card, which is +// ideal for complex information. + +Visu jautājumu importa funkcija parasti nav pieejama esošos risinājumos. +Pašlaik neviens no esošiem risinājumiem neatbalsta specializēto atmiņas kartīšu +veidu importu. "Org-mode" dod iespēju glabāt kartītes vienkāršā teksta failos, +taču tas fokusējas uz vienkāršumu ar klasisku kartīšu veidu bez specializētiem +jautājumu veidiem. Lielākā daļa risinājumu glabā kartītes savā, pielāgotā, +slēptā formātā, kas apgrūtina kartīšu pārvaldību un pārnešanu. == Pasūtītājs -Programmatūras produkts tiek izstrādāts pēc darba autora iniciatīvas -kvalifikācijas darba ietvaros. +#indent-par([ + Programmatūras produkts tiek izstrādāts pēc darba autora iniciatīvas + kvalifikācijas darba ietvaros. +]) == Produkta perspektīva -Risinājums ir patstāvīga darbvirsmas lietotne. Lietotnes izstrādē ir izmantotas -lietotnes saskarnes bibliotēkas un programmēšanas valodas standarta bibliotēka. -Risinājums lasīs un izmainīs teksta failus no lietotāja norādītās direktorijas. +#indent-par([ + Risinājums ir patstāvīga darbvirsmas lietotne. Lietotnes izstrādē ir izmantotas + lietotnes saskarnes bibliotēkas un programmēšanas valodas standarta bibliotēka. + Risinājums lasīs un izmainīs teksta failus no lietotāja norādītās direktorijas. +]) == Risinājuma lietotāji -Risinājumam ir viena lietotāju grupa, kam ir pieejamas visas risinājuma -iespējas un funkcijas. +#indent-par([ + Risinājumam ir viena lietotāju grupa, kam ir pieejamas visas risinājuma + iespējas un funkcijas. +]) Risinājuma augsta līmeņa datu plūsmas ir attēlota 0. līmeņa datu plūsmas diagrammā (DPD; skat. @fig:dpd0 attēls). Lietotāju galvenā datu apmaiņa ir @@ -211,6 +244,13 @@ atmiņas kartīšu dati un dati par saskarni ar kartītēm. + Vairāku kartīšu failu apstrāde direktorijā; + Kartīšu saglabāšana no saraksta. +== Vispārējie ierobežojumi + ++ Risinājums nepieslēdzas internetam; ++ Risinājums ir lokāla darbvirsmas programma; ++ Atmiņas kartītes un kofigurācija ir glabāta vienkārša teksta failos, ko + lietotājs var modificēt pilnībā; + == Pieņēmumi un atkarības + Lietotnes var tikt uzbūvēta darbam uz Windows vai Linux sistēmām, uz kurām ir @@ -222,47 +262,66 @@ atmiņas kartīšu dati un dati par saskarni ar kartītēm. == Funkcionālās prasības +#let ref_df01 = [(skat. tabulu 2.1)] +#let ref_df02 = [(skat. tabulu 2.2)] +#let ref_df03 = [(skat. tabulu 2.3)] +#let ref_df04 = [(skat. tabulu 2.4)] +#let ref_df05 = [(skat. tabulu 2.5)] +#let ref_df06 = [(skat. tabulu 2.6)] +#let ref_ds01 = [(skat. tabulu 2.7)] +#let ref_ds02 = [(skat. tabulu 2.8)] +#let ref_ds03 = [(skat. tabulu 2.9)] +#let ref_ds04 = [(skat. tabulu 2.10)] + +#let ref_pr01 = [(skat. tabulu 2.12)] +#let ref_pr02 = [(skat. tabulu 2.13)] + +#let ref_ab01 = [(skat. tabulu 2.14)] +#let ref_ab02 = [(skat. tabulu 2.15)] +#let ref_ab03 = [(skat. tabulu 2.16)] +#let ref_ab04 = [(skat. tabulu 2.17)] +#let ref_ab05 = [(skat. tabulu 2.18)] +#let ref_ab06 = [(skat. tabulu 2.19)] +#let ref_ab07 = [(skat. tabulu 2.20)] +#let ref_ab08 = [(skat. tabulu 2.21)] + +#let ref_ma01 = [(skat. tabulu 2.22)] +#let ref_ma02 = [(skat. tabulu 2.23)] +#let ref_ma03 = [(skat. tabulu 2.24)] +#let ref_ma04 = [(skat. tabulu 2.25)] +#let ref_ma05 = [(skat. tabulu 2.26)] + +#let ref_kf01 = [(skat. tabulu 2.37)] +#let ref_kf02 = [(skat. tabulu 2.38)] +#let ref_kf03 = [(skat. tabulu 2.39)] + #let questionSource = [ - simbolu virkne, kas satur jautājumus formātā, kas atbilst + simbolu virkne, kas satur jautājumus formātā, kas atbilst datu formātiem #link()[DF02], #link()[DF03], #link()[DF04], - #link()[DF05]]; -#let questionList = [saraksts ar objektiem, kas atbilst #link()[DS01]]; + #link()[DF05] (skat. tabulas 2.2.-2.5.) +]; +#let questionList = [saraksts ar objektiem, kas atbilst datu struktūrai #link()[DS01] #ref_ds01]; +#let question = [objekts, kas atbilst datu struktūrai #link()[DS01] #ref_ds01]; +#let pageList = [saraksts ar objektiem, kas atbilst datu struktūrai #link()[DS02] #ref_ds02]; +#let datetime = [simbola virkne formātā, kas atbilst datu struktūrai #link()[DS03] #ref_ds03]; + #let uint = [vesels pozitīvs skaitlis]; -#let question = [objekts, kas atbilst #link()[DS01]]; -#let datetime = [simbola virkne formātā, kas atbilst #link()[DS03]]; -#let pageList = [saraksts ar objektiem, kas atbilst #link()[DS02]]; #let mdemFilePath = [simbolu virkne, kas atbilst failam ar noteitu paplašinājumu]; #let listWithCorrectFlags = [Izvēlēto atbilžu simbolu virkņu saraksts ar pareizuma karodziņu vērtībām]; #let configValue = [viens no: skaitlis, simbolu virkne, karodziņš]; #let changeIndicator = [Saskarnē parādās indikators, ka atmiņas kartīšu fails tika izmainīts]; -/* -#io-table( - "Kartīšu faila satura simolu virkne", - "DF02", - [ - Kartīšu faila simbolu virkne ir simbolu virkne, kas atbilst - #link()[DF06] datu formātam. - ], -) -*/ - === Augsta līmeņa kartīšu valodas specifikācija -Šajā apakšsadaļā tiks aprakstīta domēna specifiska valodas formāta vienības, -kas ir sastāvdaļas no valodas, kas ir izmantota risinājumā, definējot, glabājot -un rediģējot atmiņas kartītes. -Formāti ir aprakstīti -#link()[DF01], -#link()[DF02], -#link()[DF03], -#link()[DF04], -#link()[DF05], -#link()[DF06], -tabulās. +#indent-par([ + Šajā apakšsadaļā tiks aprakstīta domēna specifiska valodas formāta + vienības, kas ir sastāvdaļas no valodas, kas ir izmantota risinājumā, + definējot, glabājot un rediģējot atmiņas kartītes. Formāti ir aprakstīti + tabulās 2.1.-2.6. +]) ==== Kartīšu veidi @@ -272,7 +331,7 @@ tabulās. [ Kartīšu veidošanai vienkāršā tekstā tiek izmantota vienkārša domēna specifiska valoda. Ir 4 jautājumu veidi, kuru struktūra ir līdzīga ar dažām atšķirībām. - Katrs jautājums sākas ar priekšu, kam var būt skaitlis, kas apzīmē intervālu + Katram jautājumam ir sākums, kam var būt skaitlis, kas apzīmē intervālu stundās, pēc kura tas būs atkārtoti izmantots. Priekša ir sākas ar "-" un beidzas ar ">". ], @@ -295,7 +354,7 @@ tabulās. [ ```markdown - Ka sauc Lietuvas galvas pilsētu? > - - Viļņus + - Viļņa - Nosauciet Baltijas valstis > - Latvija - Igaunija @@ -352,17 +411,17 @@ tabulās. ``` - Savienojiet planētas ar to īpašībām > - Zeme: - - Satur dzīvi + - Ir dzīve - Jupiters: - Lielākā planēta - Ir gredzeni - Venēra: - Merkurs: - - Mazākā + - Mazākā planēta - Saturns: - Ir gredzeni - Neptūns: - - Tālākā no saules + - Tālākā no Saules - Ir gredzeni ``` ] @@ -375,7 +434,7 @@ tabulās. "DF06", [ Kartītes pirmteksta failā var tikt iekļauti vairāki dažādu veidu jautājumi. - Sākumā var būt datuma un laika simbolu virkne, kas atbilst #link()[DS02]. + Sākumā var būt datuma un laika simbolu virkne, kas atbilst datu struktūrai #link()[DS02] #ref_ds02. ], [ ``` @@ -403,15 +462,13 @@ tabulās. ] ) -=== Formātu un datu struktūru speicifikācija +=== Formātu un datu struktūru specifikācija -Šajā apakšsadaļā tiks apskatīti ievades un izvades vērtību -formāti, kas tiks izmantoti funkciju aprakstos. -Formāti ir aprakstīti -#link()[DS01], -#link()[DS02], -#link()[DS03] -tabulās. +#indent-par([ + Šajā apakšsadaļā tiks apskatīti ievades un izvades vērtību + formāti, kas tiks izmantoti funkciju aprakstos. + Formāti ir aprakstīti tabulās 2.7.-2.9. +]) #io-table( "Kartīšu datu struktūra", @@ -438,7 +495,7 @@ tabulās. - Elementiem -- saraksts ar simbolu virknēm. ], -) +) #io-table( "Lappuses datu struktūra", @@ -472,9 +529,11 @@ tabulās. === Funkciju sadalījums moduļos -Risinājuma moduļi ar to saistītām datu plūsmām un datu glabātuvēm ir attēlots -1\. līmeņa DPD (skat. @fig:dpd1 attēls). Funkciju sadalījums moduļos ir -apraksīts sadalījuma tabulā (skat. @tbl:function_table tabula). +#indent-par([ + Risinājuma moduļi ar to saistītām datu plūsmām un datu glabātuvēm ir attēlots + 1\. līmeņa DPD (skat. @fig:dpd1 attēls). Funkciju sadalījums moduļos ir + apraksīts sadalījuma tabulā (skat. @tbl:function_table tabula). +]) #figure( caption: "1. līmeņa datu plūsmas diagramma", @@ -521,8 +580,10 @@ apraksīts sadalījuma tabulā (skat. @tbl:function_table tabula). === Kopīgas procedūras -Vairākas prasībās definētās funkcijas izmanto kopīgas procedūras, kas tiek -definētas tabulās: #link()[PR01], #link()[PR02]. +#indent-par([ + Vairākas prasībās definētās funkcijas izmanto kopīgas procedūras, kas tiek + definētas tabulās 2.12. un 2.13. +]) #procedure-table( "Teksta jautājumu transpilēšana", @@ -542,12 +603,12 @@ definētas tabulās: #link()[PR01], #link()[PR02]. + Ja tiek sastapta tekstvienība, kas nav sagaidāma kādā kontekstā, beidz apstrādi, izvadē pievienojot kļūdu ar tās pozīciju; + Tiek nolasīti jautājumi, nosakot to veidu pēc to struktūras: - + Jautājuma sākums (jeb kartītes priekša); + + Jautājuma sākums; + Veidojot jautājumus tiek pielasīts arī intervāla laiks, ja tāds ir; + Pēc jautājuma sākuma ir viens vai vairākas atbildes jeb apakšpunkti; - + Vairāki apakšpunkti ar "-" -- atbilžu jautājums; - + Vairāki apakšpunkti ar "+" -- izvēles jautājums; - + Vairāki apakšpunkti ar "-^" -- izvēles jautājums; + + Vairāki apakšpunkti ar "-" -- atbilžu jautājums; + + Vairāki apakšpunkti ar "+" -- izvēles jautājums; + + Vairāki apakšpunkti ar "-^" -- secības jautājums; + Vairāki apakšpunkti, kas beidzas ar ":", kam seko apakšpunkti ar "-" (iespējams tos nenorādīt); + Jautājumu veidi ir nosakāmi bez tiešas vieda norādīšanas; @@ -556,7 +617,8 @@ definētas tabulās: #link()[PR01], #link()[PR02]. ], [ + Saraksts ar jautājumiem -- #questionList\; - + Kļūda ar tekstu un tās pozīciju saturā -- paziņojuma objekts, kas atbilst #link()[DF04]\; + + Kļūda ar tekstu un tās pozīciju saturā -- paziņojuma objekts, kas atbilst + datu struktūrai #link()[DS04] #ref_ds04\; ], ) @@ -578,7 +640,7 @@ definētas tabulās: #link()[PR01], #link()[PR02]. un kāds ir maksimāls rindiņas platums pirms tiek veidots jaunās rindas simbols; + Ja datums un laiks ir padots, pievieno datumu un laiku atbilstoši formātam; + Katram jautājumam veic sekojošo: - + Pievieno jautājuma sākumu (jeb priekšu) ar intervāla skaitli, ja tāds ir; + + Pievieno jautājuma sākumu ar intervāla skaitli, ja tāds ir; + Pievieno apakšpunktus atbilstoši tā veidam; + Vairāki apakšpunkti ar "-" -- atbilžu jautājums; + Vairāki apakšpunkti ar "+" -- izvēles jautājums; @@ -594,21 +656,15 @@ definētas tabulās: #link()[PR01], #link()[PR02]. === Atmiņas bāzes modulis -Atmiņas bāze ir direktorijs ar atmiņas kartīšu failiem. Modulis atbild par -mijiedarbību ar atmiņas šiem failiem un atmiņas kartīšu prezentēšanu. Šī moduļa -funkcijas ir izmantotas atmiņu kartīšu saraksta funkcionalitātei. Funkcijas -mijiedarbojas ar pagaidu glabātuvē esošām atmiņas kartītēm un failu glabātuves -failiem, kas satur atmiņu kartīšu informāciju. Ar funkcijām saistītas datu plūsmas -ir attēlotas moduļa 2. līmeņa DPD (skat. @fig:abdpd2 attēlu). -Moduļa funkcijas tiek definētas tabulās: - #link()[AB01], - #link()[AB02], - #link()[AB03], - #link()[AB04], - #link()[AB05], - #link()[AB06], - #link()[AB07], - #link()[AB08]. +#indent-par([ + Atmiņas bāze ir direktorijs ar atmiņas kartīšu failiem. Modulis atbild par + mijiedarbību ar atmiņas šiem failiem un atmiņas kartīšu prezentēšanu. Šī moduļa + funkcijas ir izmantotas atmiņu kartīšu saraksta funkcionalitātei. Funkcijas + mijiedarbojas ar pagaidu glabātuvē esošām atmiņas kartītēm un failu glabātuves + failiem, kas satur atmiņu kartīšu informāciju. Ar funkcijām saistītas datu plūsmas + ir attēlotas moduļa 2. līmeņa DPD (skat. @fig:abdpd2 attēlu). + Moduļa funkcijas tiek definētas tabulās 2.14.-2.21. +]) #figure( caption: "Atmiņas bāzes moduļa 2.līmeņa datu plūsmas diagramma", @@ -634,7 +690,7 @@ Moduļa funkcijas tiek definētas tabulās: + Tiek nolasīts datums un laiks no faila sākuma, ja tāds eksistē: + Ja datuma un laika formāts nav korekts, parāda 2. paziņojumu ar atbilstošu iemeslu un kļūdas pazīmi, beidz apstrādi. - + Tiek iegūti jautājuma objekti, izmantojot procedūru #link()[PR01]\; + + Tiek iegūti jautājuma objekti, izmantojot procedūru #link()[PR01] #ref_pr01\; + Ja radās kļūda, parāda 2. paziņojumu ar kļūdas informāciju, beidz apstrādi. + Ja kādā no apstrādes posmiem radās kļūda, parāda 2. paziņojumu @@ -718,7 +774,7 @@ Moduļa funkcijas tiek definētas tabulās: ], [ + Ja ievadīts teksts, parāda 1. paziņojumu, beidz apstrādi; - + Apstrādā simbolu virkni, izmantojot #link()[PR01]\; + + Apstrādā simbolu virkni, izmantojot procedūru #link()[PR01] #ref_pr01\; + Ja tiek izvadīta kļūda, parāda 2. paziņojumu ar kļūdas informāciju, beidz apstrādi; ], @@ -748,7 +804,7 @@ Moduļa funkcijas tiek definētas tabulās: + Jautājums -- #question\; ], [ - + Izmantojot procedūru #link()[PR01], jautājums tiek detranspilēts + + Izmantojot procedūru #link()[PR01] #ref_pr01, jautājums tiek detranspilēts pirmtekstā\; ], [ @@ -773,7 +829,7 @@ Moduļa funkcijas tiek definētas tabulās: ], [ + Ja ievades teksts ir tukšs, parāda 1. paziņojumu, beidz apstrādi; - + Izmantojot #link()[PR01], tiek iegūts jautājuma objekts no sniegtā + + Izmantojot procedūru #link()[PR01] #ref_pr01, tiek iegūts jautājuma objekts no sniegtā pirmteksta; + Ja tiek izvadīta kļūda, parāda 1. paziņojumu ar atbilstošu kļūdas informāciju, beidz apstrādi; @@ -825,7 +881,7 @@ Moduļa funkcijas tiek definētas tabulās: + Datums un laiks -- #datetime\; ], [ - + Iegūst pirmtekstu padotajiem objektiem, izmantojot procedūru #link()[PR02]\; + + Iegūst pirmtekstu padotajiem objektiem, izmantojot procedūru #link()[PR02] #ref_pr02\; + Ja tiek izvadīta kļūda, parāda 2. paziņojumu ar kļūdas informāciju, beidz apstrādi; + Izveido vai atver failu padotā ceļā; + Ja atvēršana vai izveidošana neizdevās, parāda 1. paziņojumu; @@ -835,7 +891,7 @@ Moduļa funkcijas tiek definētas tabulās: Fails tiks atjaunots failu sistēmā. Saskarnē pazūd indikators, ka atmiņas kartīšu fails tika izmainīts. - + Fails ar kartītes informāciju, kas atbilst #link()[DF06]\; + + Fails ar kartītes informāciju, kas atbilst datu formātam #link()[DF06] #ref_df06\; ], [ + Neizdevās atvērt vai izveidot atmiņas kartīšu failu; @@ -846,17 +902,14 @@ Moduļa funkcijas tiek definētas tabulās: === Mācīšanās modulis -Mācīšanās risinājuma kontekstā ir kartīšu prezentēšana ar interaktīvu atbildes -funkcionalitāti, atbilstoši atmiņas kartītes tipam. Šī moduļa funkcijas ir -izmantotas mācīšanās loga funkcionalitātei. Funkcijas ietver darbības ar pagaidu -glabātuvē esošām atmiņas kartītēm. Ar funkcijām saistītas datu plūsmas ir -attēlotas moduļa 2. līmeņa DPD (skat. @fig:madpd2 attēlu). -Moduļa funkcijas tiek definētas tabulās: - #link()[MA01], - #link()[MA02], - #link()[MA03], - #link()[MA04], - #link()[MA05]. +#indent-par([ + Mācīšanās risinājuma kontekstā ir kartīšu prezentēšana ar interaktīvu atbildes + funkcionalitāti, atbilstoši atmiņas kartītes tipam. Šī moduļa funkcijas ir + izmantotas mācīšanās loga funkcionalitātei. Funkcijas ietver darbības ar pagaidu + glabātuvē esošām atmiņas kartītēm. Ar funkcijām saistītas datu plūsmas ir + attēlotas moduļa 2. līmeņa DPD (skat. @fig:madpd2 attēlu). + Moduļa funkcijas tiek definētas tabulās 2.22.-2.26. +]) #figure( caption: "Mācīšanās moduļa 2.līmeņa datu plūsmas diagramma", @@ -879,9 +932,8 @@ Moduļa funkcijas tiek definētas tabulās: [ + Ja pagaidu kartīšu glabātuvē nav nevienas kartītes, beidz apstrādi, neatgriežot kartīti; - + Ja padotais algoritms ir "fizisks"; - + Ja pašreizējā kartīte ir padota, izvēlās nākamo kartīti starp pagaidu - kartīšu glabātuves; + + Ja padotais algoritms ir "fizisks"; + + Ja pašreizējā kartīte ir padota, izvēlās nākamo kartīti starp pagaidu kartīšu glabātuves; + Citādi izvēlas pirmo kartīti no pagaidu kartīšu glabātuves; + Ja padotais algoritms ir "nejaušs"; + Izvēlas nākamo kartīti nejaušā kārtībā starp pagaidu kartīšu @@ -1004,16 +1056,15 @@ Moduļa funkcijas tiek definētas tabulās: === Konfigurācijas modulis -Konfigurācijas modulis iekļauj parametrus, ko var personalizēt saistībā ar -mācīšanās procesu, prezentāciju uc. Šī moduļa funkcijas ir izmantotas -konfigurējot vērtības, kas tiek glabātas konfigurācijas failā un tiek -izmantotas risinājuma funkcionalitātē, kur tās aspektiem piemīt konfigurējamas -vērtības. Ar funkcijām saistītas datu plūsmas ir attēlotas moduļa 2. līmeņa DPD -(skat. @fig:kfdpd2 attēlu). -Moduļa funkcijas tiek definētas tabulās: - #link()[KF01], - #link()[KF02], - #link()[KF03]. +#indent-par([ + Konfigurācijas modulis nodrošina parametru apstrādi, ko var personalizēt + saistībā ar mācīšanās procesu, prezentāciju uc. Šī moduļa funkcijas ir + izmantotas konfigurējot vērtības, kas tiek glabātas konfigurācijas failā un + tiek izmantotas risinājuma funkcionalitātei piemīt konfigurējamas + vērtības. Ar funkcijām saistītas datu plūsmas ir attēlotas moduļa 2. līmeņa + DPD (skat. @fig:kfdpd2 attēlu). Moduļa funkcijas tiek definētas tabulās + 2.27.-2.29. +]) #figure( caption: "Konfigurācijas moduļa 2.līmeņa datu plūsmas diagramma", @@ -1114,14 +1165,16 @@ Pirmkodam jābūt izstrādātam ar sekojošiem nosacījumiem: + Risinājuma pirmkods ir realizēts galvenokārt procedurālā stilā; + Transpilatora funkcionalitātes testu pārklājums ir 90%; -+ Saskarnes funkcionalitāte ir notestēta svarīgākās vietās (svarīgākās vietas - ir subjektīvs jēdziens, tāpēc to definēsim kā 20%). +// + Saskarnes funkcionalitāte ir notestēta svarīgākās vietās (svarīgākās vietas +// ir subjektīvs jēdziens, tāpēc to definēsim kā 20%). ==== Pārnesamība -Uz pārnesamību risinājumam ir sekojoša prasība: kartīšu failiem ir jābūt pārnesamiem -pārkopējot visu direktoriju uz citu mašīnu. Nosacījums saglabā atgriezenisko savietojamību -vienas galvenās versijas ietvaros. +#indent-par([ + Uz pārnesamību risinājumam ir sekojoša prasība: kartīšu failiem ir jābūt pārnesamiem + pārkopējot visu direktoriju uz citu mašīnu. Nosacījums saglabā atgriezenisko savietojamību + vienas galvenās versijas ietvaros. +]) ==== Drošība @@ -1139,7 +1192,7 @@ Uz drošību risinājumam ir sekojošas prasības: + #hyperlink-source( "Alison Voice and Arran Stirton", - [Spaced Repetition: towards more effective learning in STEM (2020).], + [Spaced Repetition: towards more effective learning in STEM (2020)], "https://web.archive.org/web/20171019211402/https://www.loc.gov/standards/datetime/ISO_DIS%208601-1.pdf", std.datetime( year: 2024, @@ -1148,9 +1201,24 @@ Uz drošību risinājumam ir sekojošas prasības: ), ) ++ #hyperlink-source( + "Institūcija \"Latvijas standarts\"", + [LVS 68:1996 "Programmatūras prasību specifikācijas ceļvedis". 1996. marts], + "", + none +) + ++ #hyperlink-source( + "Institūcija \"Latvijas standarts\"", + [LVS 72:1996 "Ieteicamā prakse programmatūras projektējuma aprakstīšanai". 1996, marts], + "", + none +) + + + #hyperlink-source( "Paul Sexton", - [org-drill.el – flashcards and spaced repetition for org-mode], + [Org-drill.el – flashcards and spaced repetition for org-mode], "https://orgmode.org/worg/org-contrib/org-drill.html", std.datetime( year: 2024, diff --git a/docs/utils.typst b/docs/utils.typst index 8f7ecf3..ce995e1 100644 --- a/docs/utils.typst +++ b/docs/utils.typst @@ -130,6 +130,7 @@ if caption == "" { caption = items.pos().first() } + longtable( titles: ( "Ievades/izvades vērtības nosaukums", @@ -234,9 +235,25 @@ link_str, date, ) = { - if link_str == "" { - [#author #title Aplūkots #date.display("[day].[month].[year]")] - } else { - [#author #title Pieejams: #link(link_str) aplūkots #date.display("[day].[month].[year]")] - } + let author_part = "" + if author != "" { + author_part = [#author. ] + } + + let title_part = "" + if title != "" { + title_part = [#title. ] + } + + let link_part = "" + if link_str != "" { + link_part = [Pieejams: #link(link_str). ] + } + + let date_part = "" + if date != none { + date_part = [Aplūkots #date.display("[day].[month].[year]"). ] + } + + [#author_part#title_part#link_part#date_part] }