To je projekt za delo pri predmetu Numerična matematika. Projekt je na začetku semestra prazen, tekom semestra bomo na vsakih vajah dodali rešitve. Gradiva z bolj podrobnim opisom so pripravljena v repozitoriju z gradivi.
Predlagam, da si vsak naredi svoj Git repozitorij (na Gitlabu, Githubu ali kje drugje), kjer si uredi kodo in dokumentacijo, ki jo bomo pisali pri tem predmetu. Prav tako bomo git uporabljali za oddajo domačih nalog.
Ob začetku vaje si najprej ustvarimo direktorij oziroma paket za Julio1, kjer bo shranjeno naše delo
$ julia
julia> # pritisnemo ], da pridemo v način pkg
pkg> activate . # aktiviramo delovno okolje v trenutnem direktoriju (npr. vaje)
(vaje)pkg> generate VajaXY # generiramo ogrodje za novo vajo
(vaje)pkg> develop VajaXY # dodamo pravkar generirano vajo v delovno okolje
(vaje) pkg> # pritisnemo tipko za brisanje nazaj, da zopet pridemo v navaden način
julia>
Zgornji ukazi ustvarijo direktorij VajaXY
z osnovno struktura paketa v Jiliji. Za bolj obsežen projekt, lahko uporabite šablono PkgTemplates ali PkgSkeleton.jl.
julia> cd("VajaXY") # pritisnemo ;, da pridemo v način lupine
shell> tree .
.
├── Project.toml
└── src
└── VajaXY.jl
1 directory, 2 files
Direktoriju dodamo še teste, skripte z demnostracijsko kodo in README dokument.
shell> mkdir test
shell> touch test/runtests.jl
shell> touch README.md
shell> mkdir scripts
shell> touch scripts/demo.jl
shell> tree .
.
├── Manifest.toml
├── Project.toml
├── scripts
│ └── demo.jl
├── src
│ └── VajaXY.jl
└── test
└── runtests.jl
Ko je direktorij s kodo pripravljen lahko naložimo kodo iz VajaXY.jl
v ukazni vrstici
julia> using VajaXY
julia> VajaXY.moja_super_funkcija()
Boljša možnost je, da kodo uporabimo v scripti npr. scripts\demo.jl
.
# demo.jl vsebuje primere uporabe funkcije iz modula/paketa VajaXY
using VajaXY
VajaXY.moja_super_funkcija()
Scripto lahko poženemo z ukazom ìnclude
.
julia> include("scripts/demo.jl")
Začetno strukturo paketa si lahko shranimo v šablono in uporabimo PkgSkeleton.jl za generiranje novih paketov.
Vstopna točka za teste je test\runtests.jl
. Paket Test omogoča pisanje enotskih testov, ki se lahko avtomatično izvedejo v sistemu nenehne integracije (Continuous Integration).
V juliji teste pišemo z makroji @test in @testset. Če test/runtests.jl
lahko napišemo
using Test, VajaXY
@test VajaXY.funkcija_ki_vrne_ena() == 1
Lahko teste poženemo tako, da v pkg
načinu poženemo ukaz test VajeXY
(vaje) pkg> test VajeXY
Testing Running tests...
Testing VajaXY tests passed
Za pisanje dokumentacijo navadno uporabimo format Markdown. S paketom Documenter lahko komentarje v kodi in markdown dokumentente združimo in generiramo HTML ali PDF dokumentacijo s povezavo na izvorno kodo.
Za pripravo posameznih poročil lahko uporabite IJulia, Weave.jl, Literate.jl ali Quadro.
-
vaje
direktorij z vajami, ki služi kot delovno okolje -
vaje/VajaXY
vsaka vaja ima svoj direktorij -
posamezen direktorij za vajo je organiziran kot paket s kodo, testi in dokumentacijo
vaje └── Vaja01 ├── Project.toml ├── README.md ├── src | └─ Vaja01.jl ├── test | └─ runtests.jl ├── doc | ├─ makedocs.jl | └─ index.md └─ scripts └─ demo.jl
Za hitrejše in lažje delo z programskim jezikom julia
uporabite Revise. Pred začetkom dela poženite
julia> using Revise
Zgornji ukaz bo poskrbel, da se bodo definicije funkcij sproti posodabljale, ko bomo spreminjali kodo v datotekah.
Če želite, da se Revise
zažene ob vsakem zagonu programa julia
, lahko datoteko startup.jl
namestite v .julia/config/startup.jl
$ cp startup.jl $HOME/.julia/config/startup.jl
Za generiranje PDF dokumentov s paketi Documenter ali Weave.jl je potrebno namestiti TeX/LaTeX. Priporočam uporabo TinyTeX.
Po namestitvi tinytex, dodamo še nekaj LaTeX
paketov, tako da v terminalu izvedemo naslednji ukaz
tlmgr install microtype upquote minted
Footnotes
-
Na vajah bomo uporabljali programski jezik Julia. Študentje lahko, če želijo, na vajah in za izdelavo domačih nalog uporabljajo katerikoli programski jezik. ↩