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([
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,

BIN
docs/main.pdf Normal file

Binary file not shown.

View File

@@ -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;
],
)
@@ -76,15 +78,15 @@
// 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
// 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(<spaced-repetition-1>)[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(<spaced-repetition-1>)[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>)["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>)["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(<org-drill>)[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(<org-drill>)[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>)[DF02],
#link(<DF03>)[DF03],
#link(<DF04>)[DF04],
#link(<DF05>)[DF05]];
#let questionList = [saraksts ar objektiem, kas atbilst #link(<DS01>)[DS01]];
#link(<DF05>)[DF05] (skat. tabulas 2.2.-2.5.)
];
#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 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 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>)[DF06] datu formātam.
],
)<DF02>
*/
=== 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>)[DF01],
#link(<DF02>)[DF02],
#link(<DF03>)[DF03],
#link(<DF04>)[DF04],
#link(<DF05>)[DF05],
#link(<DF06>)[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>)[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>
=== 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>)[DS01],
#link(<DS02>)[DS02],
#link(<DS03>)[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.
],
)<DS01>
) <DS01>
#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>)[PR01], #link(<PR02>)[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>)[PR01], #link(<PR02>)[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 "-^" -- 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>)[PR01], #link(<PR02>)[PR02].
],
[
+ 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>
@@ -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;
+ 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>)[PR01], #link(<PR02>)[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>)[AB01],
#link(<AB02>)[AB02],
#link(<AB03>)[AB03],
#link(<AB04>)[AB04],
#link(<AB05>)[AB05],
#link(<AB06>)[AB06],
#link(<AB07>)[AB07],
#link(<AB08>)[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>)[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
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>)[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,
beidz apstrādi;
],
@@ -748,7 +804,7 @@ Moduļa funkcijas tiek definētas tabulās:
+ 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ā\;
],
[
@@ -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>)[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;
+ 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>)[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;
+ 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>)[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;
@@ -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>)[MA01],
#link(<MA02>)[MA02],
#link(<MA03>)[MA03],
#link(<MA04>)[MA04],
#link(<MA05>)[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",
@@ -880,8 +933,7 @@ 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 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>)[KF01],
#link(<KF02>)[KF02],
#link(<KF03>)[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:
),
)<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(
"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,

View File

@@ -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]
}