some fixes after review

This commit is contained in:
jorenchik
2024-10-26 14:01:49 +03:00
parent bb2ddd8cf5
commit 9367f9a6e4
4 changed files with 252 additions and 167 deletions

View File

@@ -10,11 +10,11 @@
#indent-par([ #indent-par([
Atmiņas kartītes (angl. flashcards) ir izplatīts veids, kā skolēni, 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 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ā 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 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( #par(
@@ -37,12 +37,12 @@
"Abstract", "Abstract",
) )
#indent-par([ #indent-par([
Flashcards are a common way for students to Flashcards are a common way for students to students and other studying
students and other studying people memorize the material. To create them, people memorize the material. To create them, software solutions are
software solutions are used for maintenance and use, however used for maintenance and use, however most do not use a fully
most do not use a fully transparent plain text format. At work transparent plain text format. This paper eplores a solution that uses a
a solution that uses a domain-specific language with a complete is described domain-specific language with a complete is described information
information storage within them. storage using plain text files.
]) ])
#par( #par(
first-line-indent: 0cm, first-line-indent: 0cm,

BIN
docs/main.pdf Normal file

Binary file not shown.

View File

@@ -20,12 +20,12 @@
#par( #par(
first-line-indent: 0cm, 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 izmanto birkas un citus simbolus, lai noteiktu dokumenta struktūru un
izkārtojumu. To izmanto, lai organizētu informāciju un kontrolētu dokumenta izkārtojumu. To izmanto, lai organizētu informāciju un kontrolētu dokumenta
izskatu; 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; 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 *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 *Metadati* -- dati, kas apraksta citus datus, sniedzot informāciju par to
īpašībām, piemēram, saturu, izcelsmi un struktūru; ī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., // 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 // 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. // 3) aprakstīt programmatūras produkta pielietojumu.
// a) Aprakstīt, cik iespējams precīzi, iespējas, centienus un mērķi. Piemēram, // 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, // 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 vadīti un definēti pārskati divu stundu laikā, ar iespēju ievadīt
// lietotāja parametrus dialoga režīmā. // lietotāja parametrus dialoga režīmā.
// b) Nepieļaut pretrunas, lietojot terminus, kas līdzīgi terminiem augstāka // 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([ #indent-par([
Atmiņas kartītes (angl. flashcards) ir izplatīts veids, kā skolēni, studenti un // Kas ir atmiņas kartes
citi mācošies cilvēki iegaumē materiālu. Šādu kartīšu pamatā parasti ir priekša Atmiņas kartītes (angl. flashcards) ir izplatīts veids, kā skolēni,
un aizmugure. Priekšā atrodas jautājums vai uzdevums vai cita informācija, kas studenti un citi cilvēki, kas mācās vai studē, iegaumē materiālu. Šādu
uzstāda mentālu vai praktisku uzdevumu, iespējams iekļaujot arī mājieni. kartīšu pamatā parasti ir priekša un aizmugure. Priekšā atrodas jautājums
Aizmugurē atrodas atbildes teksts, kas ar sevi atbild vai parāda pareizu vai uzdevums vai cita informācija, kas uzstāda mentālu vai praktisku
atbildi uz priekšā uzstādītu jautājumu vai uzdevumu. 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 // 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, 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ā. 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 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 dienas, 3 dienas, 1 diena, 0 dienas attiecīgi. Balstoties uz subjektīvu
piepūle, atbildot uz jautājumu vai risinot uzdevumu, jo tiek uzturēts garāks piepūli, atbildot uz jautājumu vai risinot uzdevumu, tiek izvēlēta atbilsoša
pārtraukums pirms nākamās reizes, kad šī kartīte būs izmantota. Šī mācīšanās intervālu grupa, kas nosaka laiku pirms nākamās reizes, kad šī kartīte būs
metode ir atkārtošana ar intervāliem. Mācīšanās metode vai līdzīgas metodes var izmantota. Šī mācīšanās metode ir atkārtošana ar intervāliem. Mācīšanās metode
uzlabot atcerēšanās līmeni pēc mācīšanās (#link(<spaced-repetition-1>)[Alison vai līdzīgas metodes var uzlabot atcerēšanās līmeni pēc mācīšanās
Voice and Arran Stirton, 2020]). (#link(<spaced-repetition-1>)[Alison Voice and Arran Stirton, 2020]).
// Stuff mdemory does // Stuff mdemory does
Veidojot atmiņas kartītes manuāli tās var pazaudēt, var kļūdīties, sagatavojot 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 // The name
Programmatūras produkta nosaukums ir "Mdemory", kas ir darināts nosaukums no 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. parāda produkta saistību ar atmiņu.
== Saistība ar citiem dokumentiem == 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 == Pārskats
// apraksts: Ievads // apraksts: Ievads
Ievadā tiek definēts nolūks darbības sfēra, aprakstīta galvenā programmatūras #indent-par([
produkta būtība un mērķi, saistītie dokumenti. 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, 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. 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šā stāvokļa apraksts
Esošie atmiņas kartīšu risinājumi galvenokārt atbalsta atmiņas // @TODO: go over the thing
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ā.
#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 // Quizlet
jautājumi, vairāku atbilžu jautājumus un secības jautājumus. Tādu risinājumu piemērs ir Daži risinājumi iekļauj vairākus specializētus jautājumu veidus, kā grupēšanas
(#link(<quizlet>)["Quizlet"]) lietotne. Minētā importa funkcija parasti nav pieejama esošos risinājumos. jautājumi, vairāku atbilžu jautājumi un secības jautājumi. Tādu risinājumu
To importa funkcionalitāte realizē vienkāršu importu visbiežāk ar mērķi migrēt atmiņas kartītes piemērs ir #link(<quizlet>)["Quizlet"] lietotne. Quizlet importa
vienas lietotnes ietvaros. 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 // org-drill
Diezgan tuvs pēc funckionalitātes mērķiem ir "Emacs" teksta editora 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 papildinājums "org-drill". Tas piedāvā vienkārša teksta atmiņas kartīšu
un glabāšanu ar vienkāršu tekstu ar augstu pielāgojamību. Toties tas pieprasa veidošanu un glabāšanu ar vienkāršu tekstu. Lietotojot "ord-drill", ir
"Emacs" teksta editora izmantošanu un ir domāta tehniskākiem lietotājiem mazāk nepieciešams izmantot "Emacs" teksta redaktoru. Programmas funkcionalitāte ir
lietotājiem draudzīgas funkcionalitātes dēļ (#link(<org-drill>)[Paul Sexton]). 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(<org-drill>)[Paul Sexton]).
// @Improve: should I add date here? // @Improve: should I add date here?
Pašlaik neviens no esošiem risinājumiem neatbalsta minēto specializēto atmiņas // # Org-mode functions
kartīšu veidu importu. // 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 == Pasūtītājs
Programmatūras produkts tiek izstrādāts pēc darba autora iniciatīvas #indent-par([
kvalifikācijas darba ietvaros. Programmatūras produkts tiek izstrādāts pēc darba autora iniciatīvas
kvalifikācijas darba ietvaros.
])
== Produkta perspektīva == Produkta perspektīva
Risinājums ir patstāvīga darbvirsmas lietotne. Lietotnes izstrādē ir izmantotas #indent-par([
lietotnes saskarnes bibliotēkas un programmēšanas valodas standarta bibliotēka. Risinājums ir patstāvīga darbvirsmas lietotne. Lietotnes izstrādē ir izmantotas
Risinājums lasīs un izmainīs teksta failus no lietotāja norādītās direktorijas. 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ājuma lietotāji
Risinājumam ir viena lietotāju grupa, kam ir pieejamas visas risinājuma #indent-par([
iespējas un funkcijas. 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 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 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ā; + Vairāku kartīšu failu apstrāde direktorijā;
+ Kartīšu saglabāšana no saraksta. + 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 == Pieņēmumi un atkarības
+ Lietotnes var tikt uzbūvēta darbam uz Windows vai Linux sistēmām, uz kurām ir + 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 == 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 = [ #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>)[DF02], #link(<DF02>)[DF02],
#link(<DF03>)[DF03], #link(<DF03>)[DF03],
#link(<DF04>)[DF04], #link(<DF04>)[DF04],
#link(<DF05>)[DF05]]; #link(<DF05>)[DF05] (skat. tabulas 2.2.-2.5.)
#let questionList = [saraksts ar objektiem, kas atbilst #link(<DS01>)[DS01]]; ];
#let questionList = [saraksts ar objektiem, kas atbilst datu struktūrai #link(<DS01>)[DS01] #ref_ds01];
#let question = [objekts, kas atbilst datu struktūrai #link(<DS01>)[DS01] #ref_ds01];
#let pageList = [saraksts ar objektiem, kas atbilst datu struktūrai #link(<DS02>)[DS02] #ref_ds02];
#let datetime = [simbola virkne formātā, kas atbilst datu struktūrai #link(<DS03>)[DS03] #ref_ds03];
#let uint = [vesels pozitīvs skaitlis]; #let uint = [vesels pozitīvs skaitlis];
#let question = [objekts, kas atbilst #link(<DS01>)[DS01]];
#let datetime = [simbola virkne formātā, kas atbilst #link(<DS03>)[DS03]];
#let pageList = [saraksts ar objektiem, kas atbilst #link(<DS02>)[DS02]];
#let mdemFilePath = [simbolu virkne, kas atbilst failam ar noteitu paplašinājumu]; #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 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 configValue = [viens no: skaitlis, simbolu virkne, karodziņš];
#let changeIndicator = [Saskarnē parādās indikators, ka atmiņas kartīšu fails tika izmainīts]; #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>)[DF06] datu formātam.
],
)<DF02>
*/
=== Augsta līmeņa kartīšu valodas specifikācija === Augsta līmeņa kartīšu valodas specifikācija
Šajā apakšsadaļā tiks aprakstīta domēna specifiska valodas formāta vienības, #indent-par([
kas ir sastāvdaļas no valodas, kas ir izmantota risinājumā, definējot, glabājot Šajā apakšsadaļā tiks aprakstīta domēna specifiska valodas formāta
un rediģējot atmiņas kartītes. vienības, kas ir sastāvdaļas no valodas, kas ir izmantota risinājumā,
Formāti ir aprakstīti definējot, glabājot un rediģējot atmiņas kartītes. Formāti ir aprakstīti
#link(<DF01>)[DF01], tabulās 2.1.-2.6.
#link(<DF02>)[DF02], ])
#link(<DF03>)[DF03],
#link(<DF04>)[DF04],
#link(<DF05>)[DF05],
#link(<DF06>)[DF06],
tabulās.
==== Kartīšu veidi ==== Kartīšu veidi
@@ -272,7 +331,7 @@ tabulās.
[ [
Kartīšu veidošanai vienkāršā tekstā tiek izmantota vienkārša domēna specifiska 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. 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 stundās, pēc kura tas būs atkārtoti izmantots. Priekša ir sākas ar "-" un
beidzas ar ">". beidzas ar ">".
], ],
@@ -295,7 +354,7 @@ tabulās.
[ [
```markdown ```markdown
- Ka sauc Lietuvas galvas pilsētu? > - Ka sauc Lietuvas galvas pilsētu? >
- Viļņus - Viļņa
- Nosauciet Baltijas valstis > - Nosauciet Baltijas valstis >
- Latvija - Latvija
- Igaunija - Igaunija
@@ -352,17 +411,17 @@ tabulās.
``` ```
- Savienojiet planētas ar to īpašībām > - Savienojiet planētas ar to īpašībām >
- Zeme: - Zeme:
- Satur dzīvi - Ir dzīve
- Jupiters: - Jupiters:
- Lielākā planēta - Lielākā planēta
- Ir gredzeni - Ir gredzeni
- Venēra: - Venēra:
- Merkurs: - Merkurs:
- Mazākā - Mazākā planēta
- Saturns: - Saturns:
- Ir gredzeni - Ir gredzeni
- Neptūns: - Neptūns:
- Tālākā no saules - Tālākā no Saules
- Ir gredzeni - Ir gredzeni
``` ```
] ]
@@ -375,7 +434,7 @@ tabulās.
"DF06", "DF06",
[ [
Kartītes pirmteksta failā var tikt iekļauti vairāki dažādu veidu jautājumi. 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>)[DS02]. Sākumā var būt datuma un laika simbolu virkne, kas atbilst datu struktūrai #link(<DS02>)[DS02] #ref_ds02.
], ],
[ [
``` ```
@@ -403,15 +462,13 @@ tabulās.
] ]
)<DF06> )<DF06>
=== 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 #indent-par([
formāti, kas tiks izmantoti funkciju aprakstos. Šajā apakšsadaļā tiks apskatīti ievades un izvades vērtību
Formāti ir aprakstīti formāti, kas tiks izmantoti funkciju aprakstos.
#link(<DS01>)[DS01], Formāti ir aprakstīti tabulās 2.7.-2.9.
#link(<DS02>)[DS02], ])
#link(<DS03>)[DS03]
tabulās.
#io-table( #io-table(
"Kartīšu datu struktūra", "Kartīšu datu struktūra",
@@ -438,7 +495,7 @@ tabulās.
- Elementiem -- saraksts ar simbolu virknēm. - Elementiem -- saraksts ar simbolu virknēm.
], ],
)<DS01> ) <DS01>
#io-table( #io-table(
"Lappuses datu struktūra", "Lappuses datu struktūra",
@@ -472,9 +529,11 @@ tabulās.
=== Funkciju sadalījums moduļos === 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 #indent-par([
1\. līmeņa DPD (skat. @fig:dpd1 attēls). Funkciju sadalījums moduļos ir Risinājuma moduļi ar to saistītām datu plūsmām un datu glabātuvēm ir attēlots
apraksīts sadalījuma tabulā (skat. @tbl:function_table tabula). 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( #figure(
caption: "1. līmeņa datu plūsmas diagramma", 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 === Kopīgas procedūras
Vairākas prasībās definētās funkcijas izmanto kopīgas procedūras, kas tiek #indent-par([
definētas tabulās: #link(<PR01>)[PR01], #link(<PR02>)[PR02]. 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( #procedure-table(
"Teksta jautājumu transpilēšana", "Teksta jautājumu transpilēšana",
@@ -542,12 +603,12 @@ definētas tabulās: #link(<PR01>)[PR01], #link(<PR02>)[PR02].
+ Ja tiek sastapta tekstvienība, kas nav sagaidāma kādā kontekstā, beidz + Ja tiek sastapta tekstvienība, kas nav sagaidāma kādā kontekstā, beidz
apstrādi, izvadē pievienojot kļūdu ar tās pozīciju; apstrādi, izvadē pievienojot kļūdu ar tās pozīciju;
+ Tiek nolasīti jautājumi, nosakot to veidu pēc to struktūras: + 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; + 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; + 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 "-" -- 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 "-^" -- izvēles jautājums; + Vairāki apakšpunkti ar "-^" -- secības jautājums;
+ Vairāki apakšpunkti, kas beidzas ar ":", + Vairāki apakšpunkti, kas beidzas ar ":",
kam seko apakšpunkti ar "-" (iespējams tos nenorādīt); kam seko apakšpunkti ar "-" (iespējams tos nenorādīt);
+ Jautājumu veidi ir nosakāmi bez tiešas vieda norādīšanas; + Jautājumu veidi ir nosakāmi bez tiešas vieda norādīšanas;
@@ -556,7 +617,8 @@ definētas tabulās: #link(<PR01>)[PR01], #link(<PR02>)[PR02].
], ],
[ [
+ Saraksts ar jautājumiem -- #questionList\; + Saraksts ar jautājumiem -- #questionList\;
+ Kļūda ar tekstu un tās pozīciju saturā -- paziņojuma objekts, kas atbilst #link(<DF04>)[DF04]\; + Kļūda ar tekstu un tās pozīciju saturā -- paziņojuma objekts, kas atbilst
datu struktūrai #link(<DS04>)[DS04] #ref_ds04\;
], ],
) <PR01> ) <PR01>
@@ -578,7 +640,7 @@ definētas tabulās: #link(<PR01>)[PR01], #link(<PR02>)[PR02].
un kāds ir maksimāls rindiņas platums pirms tiek veidots jaunās rindas simbols; 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; + Ja datums un laiks ir padots, pievieno datumu un laiku atbilstoši formātam;
+ Katram jautājumam veic sekojošo: + 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; + Pievieno apakšpunktus atbilstoši tā veidam;
+ Vairāki apakšpunkti ar "-" -- atbilžu 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 "+" -- izvēles jautājums;
@@ -594,21 +656,15 @@ definētas tabulās: #link(<PR01>)[PR01], #link(<PR02>)[PR02].
=== Atmiņas bāzes modulis === Atmiņas bāzes modulis
Atmiņas bāze ir direktorijs ar atmiņas kartīšu failiem. Modulis atbild par #indent-par([
mijiedarbību ar atmiņas šiem failiem un atmiņas kartīšu prezentēšanu. Šī moduļa Atmiņas bāze ir direktorijs ar atmiņas kartīšu failiem. Modulis atbild par
funkcijas ir izmantotas atmiņu kartīšu saraksta funkcionalitātei. Funkcijas mijiedarbību ar atmiņas šiem failiem un atmiņas kartīšu prezentēšanu. Šī moduļa
mijiedarbojas ar pagaidu glabātuvē esošām atmiņas kartītēm un failu glabātuves funkcijas ir izmantotas atmiņu kartīšu saraksta funkcionalitātei. Funkcijas
failiem, kas satur atmiņu kartīšu informāciju. Ar funkcijām saistītas datu plūsmas mijiedarbojas ar pagaidu glabātuvē esošām atmiņas kartītēm un failu glabātuves
ir attēlotas moduļa 2. līmeņa DPD (skat. @fig:abdpd2 attēlu). failiem, kas satur atmiņu kartīšu informāciju. Ar funkcijām saistītas datu plūsmas
Moduļa funkcijas tiek definētas tabulās: ir attēlotas moduļa 2. līmeņa DPD (skat. @fig:abdpd2 attēlu).
#link(<AB01>)[AB01], Moduļa funkcijas tiek definētas tabulās 2.14.-2.21.
#link(<AB02>)[AB02], ])
#link(<AB03>)[AB03],
#link(<AB04>)[AB04],
#link(<AB05>)[AB05],
#link(<AB06>)[AB06],
#link(<AB07>)[AB07],
#link(<AB08>)[AB08].
#figure( #figure(
caption: "Atmiņas bāzes moduļa 2.līmeņa datu plūsmas diagramma", 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ē: + 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 + 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. ar atbilstošu iemeslu un kļūdas pazīmi, beidz apstrādi.
+ Tiek iegūti jautājuma objekti, izmantojot procedūru #link(<PR01>)[PR01]\; + Tiek iegūti jautājuma objekti, izmantojot procedūru #link(<PR01>)[PR01] #ref_pr01\;
+ Ja radās kļūda, parāda 2. paziņojumu ar kļūdas informāciju, beidz + Ja radās kļūda, parāda 2. paziņojumu ar kļūdas informāciju, beidz
apstrādi. apstrādi.
+ Ja kādā no apstrādes posmiem radās kļūda, parāda 2. paziņojumu + 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; + Ja ievadīts teksts, parāda 1. paziņojumu, beidz apstrādi;
+ Apstrādā simbolu virkni, izmantojot #link(<PR01>)[PR01]\; + Apstrādā simbolu virkni, izmantojot procedūru #link(<PR01>)[PR01] #ref_pr01\;
+ Ja tiek izvadīta kļūda, parāda 2. paziņojumu ar kļūdas informāciju, + Ja tiek izvadīta kļūda, parāda 2. paziņojumu ar kļūdas informāciju,
beidz apstrādi; beidz apstrādi;
], ],
@@ -748,7 +804,7 @@ Moduļa funkcijas tiek definētas tabulās:
+ Jautājums -- #question\; + Jautājums -- #question\;
], ],
[ [
+ Izmantojot procedūru #link(<PR01>)[PR01], jautājums tiek detranspilēts + Izmantojot procedūru #link(<PR01>)[PR01] #ref_pr01, jautājums tiek detranspilēts
pirmtekstā\; 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; + Ja ievades teksts ir tukšs, parāda 1. paziņojumu, beidz apstrādi;
+ Izmantojot #link(<PR01>)[PR01], tiek iegūts jautājuma objekts no sniegtā + Izmantojot procedūru #link(<PR01>)[PR01] #ref_pr01, tiek iegūts jautājuma objekts no sniegtā
pirmteksta; pirmteksta;
+ Ja tiek izvadīta kļūda, parāda 1. paziņojumu ar atbilstošu kļūdas informāciju, + Ja tiek izvadīta kļūda, parāda 1. paziņojumu ar atbilstošu kļūdas informāciju,
beidz apstrādi; beidz apstrādi;
@@ -825,7 +881,7 @@ Moduļa funkcijas tiek definētas tabulās:
+ Datums un laiks -- #datetime\; + Datums un laiks -- #datetime\;
], ],
[ [
+ Iegūst pirmtekstu padotajiem objektiem, izmantojot procedūru #link(<PR02>)[PR02]\; + Iegūst pirmtekstu padotajiem objektiem, izmantojot procedūru #link(<PR02>)[PR02] #ref_pr02\;
+ Ja tiek izvadīta kļūda, parāda 2. paziņojumu ar kļūdas informāciju, beidz apstrādi; + 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ļā; + Izveido vai atver failu padotā ceļā;
+ Ja atvēršana vai izveidošana neizdevās, parāda 1. paziņojumu; + 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ā. Fails tiks atjaunots failu sistēmā.
Saskarnē pazūd indikators, ka atmiņas kartīšu fails tika izmainīts. Saskarnē pazūd indikators, ka atmiņas kartīšu fails tika izmainīts.
+ Fails ar kartītes informāciju, kas atbilst #link(<DF06>)[DF06]\; + Fails ar kartītes informāciju, kas atbilst datu formātam #link(<DF06>)[DF06] #ref_df06\;
], ],
[ [
+ Neizdevās atvērt vai izveidot atmiņas kartīšu failu; + 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 modulis
Mācīšanās risinājuma kontekstā ir kartīšu prezentēšana ar interaktīvu atbildes #indent-par([
funkcionalitāti, atbilstoši atmiņas kartītes tipam. Šī moduļa funkcijas ir Mācīšanās risinājuma kontekstā ir kartīšu prezentēšana ar interaktīvu atbildes
izmantotas mācīšanās loga funkcionalitātei. Funkcijas ietver darbības ar pagaidu funkcionalitāti, atbilstoši atmiņas kartītes tipam. Šī moduļa funkcijas ir
glabātuvē esošām atmiņas kartītēm. Ar funkcijām saistītas datu plūsmas ir izmantotas mācīšanās loga funkcionalitātei. Funkcijas ietver darbības ar pagaidu
attēlotas moduļa 2. līmeņa DPD (skat. @fig:madpd2 attēlu). glabātuvē esošām atmiņas kartītēm. Ar funkcijām saistītas datu plūsmas ir
Moduļa funkcijas tiek definētas tabulās: attēlotas moduļa 2. līmeņa DPD (skat. @fig:madpd2 attēlu).
#link(<MA01>)[MA01], Moduļa funkcijas tiek definētas tabulās 2.22.-2.26.
#link(<MA02>)[MA02], ])
#link(<MA03>)[MA03],
#link(<MA04>)[MA04],
#link(<MA05>)[MA05].
#figure( #figure(
caption: "Mācīšanās moduļa 2.līmeņa datu plūsmas diagramma", 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 + Ja pagaidu kartīšu glabātuvē nav nevienas kartītes, beidz apstrādi, neatgriežot
kartīti; kartīti;
+ Ja padotais algoritms ir "fizisks"; + Ja padotais algoritms ir "fizisks";
+ Ja pašreizējā kartīte ir padota, izvēlās nākamo kartīti starp pagaidu + Ja pašreizējā kartīte ir padota, izvēlās nākamo kartīti starp pagaidu kartīšu glabātuves;
kartīšu glabātuves;
+ Citādi izvēlas pirmo kartīti no pagaidu kartīšu glabātuves; + Citādi izvēlas pirmo kartīti no pagaidu kartīšu glabātuves;
+ Ja padotais algoritms ir "nejaušs"; + Ja padotais algoritms ir "nejaušs";
+ Izvēlas nākamo kartīti nejaušā kārtībā starp pagaidu kartīšu + 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
Konfigurācijas modulis iekļauj parametrus, ko var personalizēt saistībā ar #indent-par([
mācīšanās procesu, prezentāciju uc. Šī moduļa funkcijas ir izmantotas Konfigurācijas modulis nodrošina parametru apstrādi, ko var personalizēt
konfigurējot vērtības, kas tiek glabātas konfigurācijas failā un tiek saistībā ar mācīšanās procesu, prezentāciju uc. Šī moduļa funkcijas ir
izmantotas risinājuma funkcionalitātē, kur tās aspektiem piemīt konfigurējamas izmantotas konfigurējot vērtības, kas tiek glabātas konfigurācijas failā un
vērtības. Ar funkcijām saistītas datu plūsmas ir attēlotas moduļa 2. līmeņa DPD tiek izmantotas risinājuma funkcionalitātei piemīt konfigurējamas
(skat. @fig:kfdpd2 attēlu). vērtības. Ar funkcijām saistītas datu plūsmas ir attēlotas moduļa 2. līmeņa
Moduļa funkcijas tiek definētas tabulās: DPD (skat. @fig:kfdpd2 attēlu). Moduļa funkcijas tiek definētas tabulās
#link(<KF01>)[KF01], 2.27.-2.29.
#link(<KF02>)[KF02], ])
#link(<KF03>)[KF03].
#figure( #figure(
caption: "Konfigurācijas moduļa 2.līmeņa datu plūsmas diagramma", 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ā; + Risinājuma pirmkods ir realizēts galvenokārt procedurālā stilā;
+ Transpilatora funkcionalitātes testu pārklājums ir 90%; + 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 // + 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%). // ir subjektīvs jēdziens, tāpēc to definēsim kā 20%).
==== Pārnesamība ==== Pārnesamība
Uz pārnesamību risinājumam ir sekojoša prasība: kartīšu failiem ir jābūt pārnesamiem #indent-par([
pārkopējot visu direktoriju uz citu mašīnu. Nosacījums saglabā atgriezenisko savietojamību Uz pārnesamību risinājumam ir sekojoša prasība: kartīšu failiem ir jābūt pārnesamiem
vienas galvenās versijas ietvaros. pārkopējot visu direktoriju uz citu mašīnu. Nosacījums saglabā atgriezenisko savietojamību
vienas galvenās versijas ietvaros.
])
==== Drošība ==== Drošība
@@ -1139,7 +1192,7 @@ Uz drošību risinājumam ir sekojošas prasības:
+ #hyperlink-source( + #hyperlink-source(
"Alison Voice and Arran Stirton", "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", "https://web.archive.org/web/20171019211402/https://www.loc.gov/standards/datetime/ISO_DIS%208601-1.pdf",
std.datetime( std.datetime(
year: 2024, year: 2024,
@@ -1148,9 +1201,24 @@ Uz drošību risinājumam ir sekojošas prasības:
), ),
)<spaced-repetition-1> )<spaced-repetition-1>
+ #hyperlink-source(
"Institūcija \"Latvijas standarts\"",
[LVS 68:1996 "Programmatūras prasību specifikācijas ceļvedis". 1996. marts],
"",
none
)<lvs-standard-1>
+ #hyperlink-source(
"Institūcija \"Latvijas standarts\"",
[LVS 72:1996 "Ieteicamā prakse programmatūras projektējuma aprakstīšanai". 1996, marts],
"",
none
)<lvs-standard-1>
+ #hyperlink-source( + #hyperlink-source(
"Paul Sexton", "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", "https://orgmode.org/worg/org-contrib/org-drill.html",
std.datetime( std.datetime(
year: 2024, year: 2024,

View File

@@ -130,6 +130,7 @@
if caption == "" { if caption == "" {
caption = items.pos().first() caption = items.pos().first()
} }
longtable( longtable(
titles: ( titles: (
"Ievades/izvades vērtības nosaukums", "Ievades/izvades vērtības nosaukums",
@@ -234,9 +235,25 @@
link_str, link_str,
date, date,
) = { ) = {
if link_str == "" { let author_part = ""
[#author #title Aplūkots #date.display("[day].[month].[year]")] if author != "" {
} else { author_part = [#author. ]
[#author #title Pieejams: #link(link_str) aplūkots #date.display("[day].[month].[year]")] }
}
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]
} }