<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Skaitļošanas centra pamācības Archives - Skaitliskās modelēšanas institūts</title>
	<atom:link href="https://modinst.lu.lv/category/skaitlosanas-centrs/feed/" rel="self" type="application/rss+xml" />
	<link>https://modinst.lu.lv/category/skaitlosanas-centrs/</link>
	<description>Latvijas Universitātes zinātniskais institūts</description>
	<lastBuildDate>Mon, 08 Mar 2021 09:50:00 +0000</lastBuildDate>
	<language>lv-LV</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>
	<item>
		<title>Singularity konteineru iespējas</title>
		<link>https://modinst.lu.lv/singularity-konteineru-iespejas/</link>
		
		<dc:creator><![CDATA[Mihaēls Doroņins]]></dc:creator>
		<pubDate>Fri, 05 Mar 2021 07:11:18 +0000</pubDate>
				<category><![CDATA[Jaunumi]]></category>
		<category><![CDATA[Skaitļošanas centra pamācības]]></category>
		<guid isPermaLink="false">https://modinst.lu.lv/?p=2227</guid>

					<description><![CDATA[<p>Par šo materiālu Šī pamācība ir tapusi kā atbalsta materiāls 2021. gada 5. marta tiešsaistes semināram “Singularity konteineru iespējas”. Gan pasākums, gan šī pamācība ir tapuši, pateicoties EuroHPC projekta “National Competence Centres in the framework of EuroHPC” (EuroCC) atbalstam. Šis projekts tika uzsākts jau 2020. gada 1. septembrī, un Latviju tajā pārstāv Rīgas Tehniskās universitātes [&#8230;]</p>
<p>The post <a href="https://modinst.lu.lv/singularity-konteineru-iespejas/">Singularity konteineru iespējas</a> appeared first on <a href="https://modinst.lu.lv">Skaitliskās modelēšanas institūts</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Par šo materiālu</h2>



<p>Šī pamācība ir tapusi kā atbalsta materiāls 2021. gada 5. marta tiešsaistes semināram “Singularity konteineru iespējas”. Gan pasākums, gan šī pamācība ir tapuši, pateicoties <em>EuroHPC</em> projekta <a href="http://www.eurocc-project.eu/" target="_blank" rel="noreferrer noopener">“National Competence Centres in the framework of EuroHPC”</a> (<em>EuroCC</em>) atbalstam. Šis projekts tika uzsākts jau 2020. gada 1. septembrī, un Latviju tajā pārstāv Rīgas Tehniskās universitātes <a href="https://hpc.rtu.lv/" target="_blank" rel="noreferrer noopener">HPC centrs</a> kopā ar Latvijas Universitātes <a href="https://modinst.lu.lv/" target="_blank" rel="noreferrer noopener">Skaitliskās modelēšanas institūtu</a>. Projekta <em>EuroCC</em> mērķis ir izveidot Eiropā superskaitļošanas kompetences centru tīklu. Projektā iesaistītas 33 valstis, projekts ilgs 2 gadus ar kopējo finansējumu vairāk nekā 56 milj. EUR.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img decoding="async" src="https://modinst.lu.lv/wp-content/uploads/2021/03/logo_EuroCC.png" alt="" class="wp-image-2230" width="183" height="158" srcset="https://modinst.lu.lv/wp-content/uploads/2021/03/logo_EuroCC.png 900w, https://modinst.lu.lv/wp-content/uploads/2021/03/logo_EuroCC-300x259.png 300w, https://modinst.lu.lv/wp-content/uploads/2021/03/logo_EuroCC-768x664.png 768w, https://modinst.lu.lv/wp-content/uploads/2021/03/logo_EuroCC-705x609.png 705w" sizes="(max-width: 183px) 100vw, 183px" /></figure></div>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img decoding="async" src="https://modinst.lu.lv/wp-content/uploads/2021/03/logo_RTU-1030x1023.png" alt="" class="wp-image-2232" width="156" height="155" srcset="https://modinst.lu.lv/wp-content/uploads/2021/03/logo_RTU-1030x1023.png 1030w, https://modinst.lu.lv/wp-content/uploads/2021/03/logo_RTU-300x298.png 300w, https://modinst.lu.lv/wp-content/uploads/2021/03/logo_RTU-80x80.png 80w, https://modinst.lu.lv/wp-content/uploads/2021/03/logo_RTU-768x763.png 768w, https://modinst.lu.lv/wp-content/uploads/2021/03/logo_RTU-1536x1526.png 1536w, https://modinst.lu.lv/wp-content/uploads/2021/03/logo_RTU-2048x2035.png 2048w, https://modinst.lu.lv/wp-content/uploads/2021/03/logo_RTU-36x36.png 36w, https://modinst.lu.lv/wp-content/uploads/2021/03/logo_RTU-180x180.png 180w, https://modinst.lu.lv/wp-content/uploads/2021/03/logo_RTU-1500x1490.png 1500w, https://modinst.lu.lv/wp-content/uploads/2021/03/logo_RTU-705x701.png 705w" sizes="(max-width: 156px) 100vw, 156px" /></figure></div>
</div>
</div>



<p>Projekta laikā izveidoto kompetences centru uzdevums būs veidot vienotu atbalsta struktūru, lai veicinātu superskaitļošanas iespēju izmantošanu augstākajā izglītībā, pētniecībā, publiskajā administrācijā un industrijā. Kompetences centri apkopos visās ES valstīs pieejamās kompetences, pieredzi un skaitļošanas resursus.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<div class='avia-iframe-wrap'><iframe title="Seminārs &quot;Singularity konteineru iespējas&quot;" width="1500" height="844" src="https://www.youtube.com/embed/WNhxZyj-XUk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>
</div></figure>



<h2 class="wp-block-heading">Ievads un problēmas nostādne</h2>



<p>Lietojot augstas veiktspējas skaitļošanas (HPC) resursus, nereti kļūst aktuāli izmantot kādu nestandarta programmatūru, kas nav pieejama instalētu, lietošanai gatavu programmatūras moduļu formā. Šādā situācijā var lūgt administratoru palīdzību programmatūras uzstādīšanā. Tomēr nereti tas pilnībā neatrisina problēmu:</p>



<ul class="wp-block-list"><li>Vēlamā programmatūra var nebūt savietojama ar klasterī lietoto operētājsistēmu.</li><li>Nepieciešams uzstādīt daudz un dažādas programmatūras pakotnes ar specifiskām versijām.</li><li>Lietotājs var vēlēties lietot identisku vidi uz dažādiem klasteriem/darbstacijām.</li></ul>



<p>Aprakstītajā situācijā ļoti piemēroti ir lietot programmatūru konteineru veidā – pilnībā komplektētu un iekapsulētu programmatūras vidi, kas ļauj izpildīt sev vēlamos aprēķinu uzdevumus dažādās sistēmās. Lai lietotu vajadzīgo programmatūras vidi (konteineru), atliek tikai pārkopēt/iegūt sev vēlamo konteinera failu.</p>



<h2 class="wp-block-heading">Pamatfunkcionalitātes demonstrējums</h2>



<p>Zemāk sniegts piemērs programmatūras konteineru pamata funkcionalitātei uz LU SMI HPC klastera. Piemērs apskata gadījumu, kad lietotāja mapē jau glabājas konteiners ar <em>Anaconda Python</em> (rīks ar virkni <em>Python </em>rīku, kas tipiski tiek pielietots HPC datu apstrādei ar <em>Python</em>).</p>



<pre class="wp-block-code"><code># Pārliecinās, ka uz pamata sistēmas OS ir tikai vecs, nepilnīgs Python (2.x.x..)
python --version

# Var lietot administratoru uzstādītu, visiem pieejamu moduli
# Konstatē, ka tiešām ir jauns un iespējām bagāts Anaconda Python (3.x.x..)
module avail
module load anaconda3/anaconda-2020.11
python --version

# Taču ir alternatīva, gadījumam, ja šī vide nebūtu pieejama – konteineri!
# Atvieno iepriekš ielādētos moduļus
module purge

# Ielādē moduli 'singularity'
module load singularity/3.4.1

# Pielieto iepriekš saglabātu konteineru (izpilda atsevišķu komandu)
# Konstatē, ka tiešām ir jauns un iespējām bagāts Anaconda Python (3.x.x..)
singularity exec ~/mani_konteineri/mana_anaconda.simg python --version

# Pielieto iepriekš saglabātu konteineru (sāk lietot paša konteinera ‘shell’)
singularity shell ~/mani_konteineri/mana_anaconda.simg
python --version

# Esot konteinera ‘shell’ vidē, var izmantot visus lietotājam pieejamos failus
ls ~
</code></pre>



<p>Demonstrētajā piemērā redzams, ka konteineri atrisina kādas konkrētas programmatūras vides pielietošanu. Tomēr tas nav tik smagnēji kā lietot atsevišķu virtuālo datoru (<em>virtual machine</em>), kas parasti uz HPC klasteriem nav iespējams vai piemērots. Jāatzīmē, ka konteineru lietošanu, protams, var specificēt rindas sistēmas uzdevumu skriptos kā jebkuras citas komandas.</p>



<h2 class="wp-block-heading"><em>Singularity </em>un <em>Docker </em>salīdzinājums</h2>



<p>Pēdējos gados programmatūras konteinerizācija ir ieguvusi popularitāti plaši lietotās platformas <a href="https://en.wikipedia.org/wiki/Docker_(software)" target="_blank" rel="noreferrer noopener"><em>Docker</em></a> formā – šīs platformas komūna ir izveidojusi daudz un dažādus brīvi iegūstamus konteineru paraugus <a href="https://hub.docker.com/" target="_blank" rel="noreferrer noopener"><em>DockerHub</em></a> repozitorijā. Tomēr ir alternatīvs konteinerizācijas risinājums, kas piemērotāks un populārāks tieši HPC vidē: <em><a href="https://sylabs.io/docs/" target="_blank" rel="noreferrer noopener">Singularity</a></em>. Šim risinājumam ir vairākas priekšrocības, kas to padara par īpaši piemērotu HPC jomā:</p>



<ul class="wp-block-list"><li>Atšķirībā no <em>Docker</em>, <em>Singularity </em>konteineru lietošanai nav nepieciešamas administratora tiesības. Tas ļauj pilnvērtīgi lietot šos konteinerus HPC vidē. (Konteineru veidošanai gan vēl joprojām nepieciešamas administratora tiesības.</li><li><em>Singularity </em>konteineri piedāvā gatavus risinājumus paralēlu aprēķinu (<em>OpenMPI</em>) veikšanai, kā arī GPU aprēķinu veikšanai.</li><li><em>Singularity </em>ir savietojams ar <em>Docker </em>konteineriem, kas ļauj izmantot augstākminētās priekšrocības, turpinot izmantot <em>DockerHub </em>repozitorija iespējas.</li></ul>



<p>Balstoties uz minētajām priekšrocībām, kā arī faktu, ka <em>Singularity </em>ir pieejams gan uz LU FMOF SMI klastera, gan RTU HPC Centra klastera, šī pamācība apskata tieši <em>Singularity </em>konteineru lietošanu.</p>



<h2 class="wp-block-heading"><em>DockerHub </em>konteineru iegūšana</h2>



<p>Iepriekš veiktais demonstrējums ar <em>Anaconda Python</em> konteineru bija iespējams, jo tas tika iegūts no <a href="https://hub.docker.com/r/continuumio/anaconda3" target="_blank" rel="noreferrer noopener"><em>DockerHub</em> repozitorija</a>. Šī konteinera faila iegūšana/uzbūvēšana veicama sekojoši:</p>



<pre class="wp-block-code"><code># Ielādē moduli 'singularity'
module load singularity/3.4.1

# Iegūst konteineru pēc linka no DockerHub (tikai lejupielāde,
# aizņem dažas sekundes.
singularity pull ~/mani_konteineri/mana_anaconda.simg docker://continuumio/anaconda3

# Opcionāli – var arī ar ‘build’, kas konvertē lejuplādēto
# konteineri uz jaunāko pieejamo formātu (šajā gadījumā
# ‘build’ neprasa administratora tiesības). Aizņem aptuveni 3 min.
singularity build ~/mani_konteineri/mana_anaconda.simg docker://continuumio/anaconda3
</code></pre>



<p><em>DockerHub </em>repozitorijā pieejama virkne dažādu konteineru, kas satur dažādās jomās tipiskiem uzdevumiem piemērotus programmatūras rīku komplektus – gan fizikāli aprēķini, gan datu apstrāde, gan IT risinājumu rīki (piem., datubāzes). Taču ir vēl vairāki repozitoriji bez <em>DockerHub</em>, kur brīvi pieejami citu sagatavoti programmatūras konteineri.</p>



<figure class="wp-block-table"><table><tbody><tr><td><strong>Nosaukums</strong></td><td><strong>Interneta vietne</strong></td><td><strong><em>singularity pull</em> prefikss</strong></td></tr><tr><td>Singularity Library</td><td><a href="https://cloud.sylabs.io/library" target="_blank" rel="noreferrer noopener">https://cloud.sylabs.io/library</a></td><td>singularity pull library://</td></tr><tr><td>Docker Hub</td><td><a href="https://hub.docker.com" target="_blank" rel="noreferrer noopener">https://hub.docker.com</a></td><td>singularity pull docker://</td></tr><tr><td>Singularity Hub</td><td><a href="https://singularity-hub.org" target="_blank" rel="noreferrer noopener">https://singularity-hub.org</a></td><td>singularity pull shub://</td></tr><tr><td>NVIDIA GPU Cloud</td><td><a href="https://ngc.nvidia.com" target="_blank" rel="noreferrer noopener">https://ngc.nvidia.com</a></td><td>singularity pull docker://nvcr.io/</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">Singularity instalēšana un savu konteineru veidošana</h2>



<p>Par spīti plašajiem repozitoriju resursiem, dažkārt nepieciešams izveidot savu, specifisku konteineru. Līdz ar to, ka šīs darbības veikšanai nepieciešamas administratora tiesības, tās tipiski tiktu veiktas uz sava personālā datora (vai sev pieejamas virtuālās mašīnas).</p>



<p>Zemāk parādīts piemērs, kā to veikt gadījumā, kad nepieciešams izveidot konteineru ar <em><a href="http://espressomd.org/wordpress/" target="_blank" rel="noreferrer noopener">ESPResSo</a> </em>programmatūru – specifisku rīku mīkstās vides fizikas aprēķiniem. Šīs programmatūras uzstādīšanai nepieciešama virkne dažādu papildu rīku, kurus izvietot uz klastera varētu aizņemt nelietderīgi daudz laika gan lietotājam, gan administratoriem. Šī situācija padara <em>ESPResSo </em>programmu par lielisku kandidātu konteinera izveides demonstrējumam.</p>



<h3 class="wp-block-heading">Singularity instalēšana uz sava Linux datora</h3>



<p>Lai varētu veidot savus konteinerus, nepieciešams instalēt <em>Singularity </em>uz kāda <em>Linux </em>datora, kur pieejamas administratora tiesības. Tiem, kas uz sava personīgā datora nelieto <em>Linux</em>, vērts pieminēt, ka jebkurā datorā ar <em>Windows 10 Enterprise/Pro</em> ir jau <a href="https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v" target="_blank" rel="noreferrer noopener">gatava iebūvēta iespēja laist virtuālas <em>Linux</em> instances</a>. Zemāk parādītais piemērs tika realizēts uz <em>Ubuntu 20.04 LTS</em> virtuālā datora. Sekojot šai Singularity instalācijas pamācībai, vispirms tika instalēta virkne vajadzīgo rīku:</p>



<pre class="wp-block-code"><code>sudo apt-get update &amp;&amp; sudo apt-get install -y \
    build-essential \
    libssl-dev \
    uuid-dev \
    libgpgme11-dev \
    squashfs-tools \
    libseccomp-dev \
    wget \
    pkg-config \
    git \
    cryptsetup
</code></pre>



<p>Lai būtu iespējams kompilēt un iegūt lietošanā <em>Singularity</em>, nepieciešamas programmēšanas valodas <em>Go</em> rīki, kurus var lejupielādēt <em><a href="https://golang.org/dl/" target="_blank" rel="noreferrer noopener">golang.org</a></em> mājaslapā. Instalācija veicama sekojoši:</p>



<pre class="wp-block-code"><code># Atarhivē lejupielādēto arhīvu
tar -C /usr/local -xzf go1.16.linux-amd64.tar.gz

# Pievieno ‘go’ mapi datora PATH
export PATH=$PATH:/usr/local/go/bin

# Restartē datoru vai arī izpilda komandu:
$HOME/.profile
</code></pre>



<p>Var turpināt ar pašas <em>Singularity </em>programmas instalāciju. Pēdējās programmas versijas kods lejupielādējams no <a href="https://github.com/hpcng/singularity/releases" target="_blank" rel="noreferrer noopener"><em>GitLab</em> lapas</a>.</p>



<pre class="wp-block-code"><code># Atarhivē un pārvietojas uz atarhivēto direktoriju
tar -xzf singularity-3.7.1.tar.gz
cd singularity

# Instalē singularity, norādēt vēlamo vietu (šeit izvēlēts /usr/local)
./mconfig -b ./buildtree -p /usr/local
cd ./singularity/buildtree
make
sudo make install

# Pārbauda, ka Singularity veiksmīgi instalēts
singularity version
</code></pre>



<p>Pēc augstāk parādīto darbību veikšanas, ir veiksmīgi instalēts <em>Singularity</em>, un ir iespējams gan lietot <em>Singularity </em>uz sava datora, gan sagatavot konteinerus lietošanai citur, piemēram, HPC klasteros.</p>



<h3 class="wp-block-heading">Konteinera izveide ar receptes failu</h3>



<p>Pats savus konteinerus var veidot, izmantojot konteinera <strong>receptes failu</strong>. Tā saturs norāda ar kādu programmatūru, ar kādiem parametriem un citiem funkcionāliem aspektiem tiks uzbūvēts konteinera fails. Par to, kādi bloki un parametri var būt šo receptes failu saturā, lasīt <a href="https://sylabs.io/guides/3.7/user-guide/definition_files.html" target="_blank" rel="noreferrer noopener">šajā pamācībā</a>. Tomēr ārkārtīgi vērtīgi ir iepazīties un balstīt savu darbu dažādos recepšu failu piemēros, kas <a href="https://github.com/sylabs/examples" target="_blank" rel="noreferrer noopener">apkopoti <em>GitHub</em></a>.</p>



<p>Zemāk parādīts piemērs receptes failam, kas izveido konteineru ar minēto <em>ESPResSo </em>programmatūru. Kā redzams pēc šī faila satura, tiek veiktas darbības kā ar tipisku datoru; lielākoties fails sastāv no <em>%post </em>sadaļas, kas ir identiska programmas <em>ESPResSo </em>uzstādīšanas pamācībai.</p>



<pre class="wp-block-code"><code>Bootstrap: docker
From: ubuntu:18.04


%help
    Container with ESPResSo
    ESPResSo means: Extensible Simulation Package for Research on Soft Matter
    Website: http://espressomd.org/wordpress/
    Main binary for using ESOResSo via this container is 'pypresso'.

%post
    # Updating repositories and packages
    apt-get update &amp;&amp; apt-get -y upgrade
    
    # Installing all dependencies (as shown on ESPResSo website)
    apt-get -y install wget tar build-essential \
        cmake cython3 python3-numpy libboost-all-dev \
        openmpi-common fftw3-dev libhdf5-dev \
        libhdf5-openmpi-dev python3-opengl libgsl-dev
   
    # Installing ESPResSo (as shown on ESPResSo website)
    cd ~
    wget -c \
    https:&#47;&#47;github.com/espressomd/espresso/releases/download/4.1.4/espresso-4.1.4.tar.gz
    tar zxvf espresso-4.1.4.tar.gz
    mkdir /usr/bin/espresso &amp;&amp; cd /usr/bin/espresso
    cmake ~/espresso
    cmake --build .
    
    # Cleaning up
    apt-get clean
    apt-get autoremove
   
%environment
    # Something about locale... everyone seems to be doing this.
    export LC_ALL=C
    
    # Adding ESPResSo directory to PATH, so that the command 'pypresso' is available
    export PATH=/usr/bin/espresso:$PATH
</code></pre>



<p>Kad receptes fails ir izveidots un saglabāts ar nosaukumu <em>ESPResSo_container_recipe.def,</em> tad var būvēt konteineru, izmantojot zemāk redzamo komandu.</p>



<pre class="wp-block-code"><code>sudo singularity build ESPResSo_container.sif ESPResSo_container_recipe.def</code></pre>



<p>Šajā gadījumā process aizņēma 5-10 minūtes (pamata vides un pakešu lejupielādē, konkrētās programmatūras kompilēšana). Galu galā izveidotā konteinera faila izmērs ir aptuveni 400 MB. Kad konteinera fails ir izveidots, to var lietot, līdzīgi kā iepriekš jau demonstrēts, ar <em>exec </em>un <em>shell </em>komandām. Konteinera failu var kopēt un lietot citur, tai skaitā uz HPC datorklastera.</p>



<pre class="wp-block-code"><code>singularity exec ESPResSo_container.sif pypresso &lt;pypresso skripta fails&gt;</code></pre>



<h2 class="wp-block-heading">Konteineru lietošana ar GPU iespējām</h2>



<p>Kaut arī konteineri ir iekapsulētas programmatūras vides, to izpildi ir iespējams sasaistīt ar pamata sistēmas resursiem: gan iespējot sistēmas GPU karšu lietošanu, gan padot ārējus programmatūras resursus (piemēram sistēmas CUDA bibliotēku lietošanai konteinera iekšienē). Zemāk ir sniegts īss piemērs <em>Tensorflow </em>konteinera izmantošanai ar GPU. <em><a href="https://www.tensorflow.org/" target="_blank" rel="noreferrer noopener">Tensorflow</a></em> ir populārs rīks, ko izmanto mašīnmācīšanās aprēķinu veikšanai.</p>



<pre class="wp-block-code"><code># Ielādē moduli 'singularity'
module load singularity/3.4.1

# Ielādē CUDA bibliotēku
# Šis modulis satur informāciju kur sistēmā meklēt CUDA komandas (‘/bin’ mape),
# kā arī CUDA_HOME mainīgā saturu
module load cuda/cuda-10.2

# Lieto Docker Hub iegūto moduli, papildus norādot GPU kartes lietošanu (‘--nv’),
# kā arī piesaista CUDA bibliotēkas mapi ar ‘–bind ..’
singularity shell --nv --bind ${CUDA_HOME} \ 
                     ~/mani_konteineri/tensorflow_2.3.1-gpu.sif
</code></pre>



<p>Demonstrēto ārējās programmatūras padošanu konteinerim var veikt arī jebkuru citu programmatūru, kas izvietota uz klastera. Tādējādi programmatūras moduļi var tikt veidoti mazāk apjomīgi &#8211; piemēram, nav nepieciešams konteinerā iekļaut<em> Anaconda Python</em>, ja ir skaidri zināms, ka tas ir piesaistāms ar parametru<em> bind</em>. Tādā gadījumā atliek konteinerā iekļaut tikai specifisko/nestandarta programmatūras saturu.</p>



<p>Šīs pēdējas raksta sadaļas tematika ir plašāk apskatīta materiālā, kas tika demonstrēts 5. marta seminārā. Šis materiāls ir pieejams lejupielādei kā PDF fails:</p>



<div class="wp-block-file aligncenter"><a href="https://modinst.lu.lv/wp-content/uploads/2021/03/Singularity_seminars_Aleksandrs_Gutcaits.pdf">Singularity GPU Containers Options (PDF)</a><a href="https://modinst.lu.lv/wp-content/uploads/2021/03/Singularity_seminars_Aleksandrs_Gutcaits.pdf" class="wp-block-file__button" download>Download</a></div>
<p>The post <a href="https://modinst.lu.lv/singularity-konteineru-iespejas/">Singularity konteineru iespējas</a> appeared first on <a href="https://modinst.lu.lv">Skaitliskās modelēšanas institūts</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Git versionēšanas sistēmas pamati</title>
		<link>https://modinst.lu.lv/git-pamati/</link>
		
		<dc:creator><![CDATA[Mihaēls Doroņins]]></dc:creator>
		<pubDate>Wed, 03 Feb 2021 08:51:03 +0000</pubDate>
				<category><![CDATA[Jaunumi]]></category>
		<category><![CDATA[Skaitļošanas centra pamācības]]></category>
		<guid isPermaLink="false">https://modinst.lu.lv/?p=1750</guid>

					<description><![CDATA[<p>Par autoru Mg. Phys. Kristaps Bergfelds ir LU FMOF Skaitliskās modelēšanas institūta pētnieks, kura ikdienas darbs saistīts ar fizikālu datu iegūšanu, apstrādi un attēlošanu. Papildus darbam institūtā Kristaps pasniedz programmēšanas praktiskos darbus LU fizikas studentiem (programmēšanas un datu apstrādes pamatus, izmantojot programmēšanas valodu Python). Šī raksta tapšanas pamatā ir Kristapa gadu gaitā uzkrātā pieredze un [&#8230;]</p>
<p>The post <a href="https://modinst.lu.lv/git-pamati/">Git versionēšanas sistēmas pamati</a> appeared first on <a href="https://modinst.lu.lv">Skaitliskās modelēšanas institūts</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Par autoru</h2>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<p>Mg. Phys. Kristaps Bergfelds ir LU FMOF Skaitliskās modelēšanas institūta pētnieks, kura ikdienas darbs saistīts ar fizikālu datu iegūšanu, apstrādi un attēlošanu. Papildus darbam institūtā Kristaps pasniedz programmēšanas praktiskos darbus LU fizikas studentiem (programmēšanas un datu apstrādes pamatus, izmantojot programmēšanas valodu Python). Šī raksta tapšanas pamatā ir Kristapa gadu gaitā uzkrātā pieredze un novērojumi par savu un kolēģu vajadzībām kopdarboties dažādu programmēšanas projektu izstrādē.</p>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_0_par_autoru.jpg" alt="" class="wp-image-1533" width="224" height="224" srcset="https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_0_par_autoru.jpg 781w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_0_par_autoru-300x300.jpg 300w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_0_par_autoru-80x80.jpg 80w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_0_par_autoru-768x768.jpg 768w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_0_par_autoru-36x36.jpg 36w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_0_par_autoru-180x180.jpg 180w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_0_par_autoru-705x705.jpg 705w" sizes="auto, (max-width: 224px) 100vw, 224px" /></figure></div>
</div>
</div>



<p>Ikviens, kurš kopā ar saviem kolēģiem veidojis kādu apjomīgu teksta dokumentu, ir saskāries ar versiju kontroles problēmām. Nereti nākas pārlūkot un sakārtot tādus dokumentus kā: <em>dokuments.docx</em>, <em>dokuments_gala.docx</em>, <em>dokuments_gala_labots.docx</em>, <em>dokuments_gala_labots_2_velreiz_tiesam_pabeigts.docx </em>utt. Šis process var būt mulsinošs, radīt kļūdas un apgrūtināt visus iesaistītos dokumentu veidotājus.</p>



<p>Lai šo procesu atvieglotu, dokumentu iespējams izvietot visiem kolēģiem pieejamā vietā un labot to centralizēti: vai mākoņdokumenta formā (<em>Google Drive,</em> <em>OneDrive</em>, <em>Dropbox</em>) vai koplietotā lokālā tīkla mapē. Minētājās dokumentu koplietošanas platformās ir pieejama versiju saglabāšana, lai vajadzības gadījumā varētu atjaunot agrāku dokumentu versiju. Pieejama arī izmaiņu iekrāsošana, lai redzētu, kas tieši ir atšķirīgs vienam dokumentam no otra.</p>



<p>Ar ļoti līdzīgām problēmām saskaras programmētāji kopš programmatūras izstrādes pirmsākumiem – arī programmu koda veidošanas gaitā nepieciešams mijiedarboties vairākiem izstrādātājiem, sekot līdzi izmaiņām, testēt dažādus programmas koda elementus, vajadzības gadījumā iegūt agrākas programmas koda versijas. Līdzīgi kā teksta dokumentu gadījumā arī programmas koda versiju kontrolei ir izveidota <a href="https://en.wikipedia.org/wiki/Comparison_of_version-control_software" target="_blank" rel="noreferrer noopener">virkne specializētu rīku</a>, piedāvājot dažādas iespējas specifiskām koda izstrādes vajadzībām, piemēram, iespēju veidot paralēlus koda attīstības ceļus un sazarotu versiju struktūru.</p>



<p>Šobrīd <em>de facto</em> koda versionēšanas sistēmas standarts programmētāju vidū ir <em>Git </em>platforma. Papildu <a href="https://coderefinery.github.io/git-intro/01-motivation/" target="_blank" rel="noreferrer noopener">dažādām tehniskām priekšrocībām</a> un plašai popularitātei, īpaši jāuzsver šīs platformas atbalsts dažādu interneta platformu veidā – <em><a href="https://github.com/" target="_blank" rel="noreferrer noopener">GitHub</a></em>, <em><a href="https://gitlab.com/" target="_blank" rel="noreferrer noopener">GitLab</a></em>, <em><a href="https://bitbucket.org/" target="_blank" rel="noreferrer noopener">BitBucket</a></em>. Tādēļ šajā rakstā tiek iepazīstināts tieši ar <em>Git </em>platformas lietošanu. <strong>Raksta mērķauditorija ir <em>Windows </em>lietotāji, kas vēlas izmantot versionēšanas sistēmas priekšrocības grafiskas saskarnes veidā (nevis ar komandrindas palīdzību).</strong></p>



<p>Rakstā tiek sniegts ieskats <em>Git </em>lietošanas pamatprincipos, parādīta nepieciešamā instalējamā programmatūra <em>Windows </em>vidē, sniegts ieskats <em>Git </em>koda izstrādes projektu koplietošanā ar <em>GitLab </em>portāla palīdzību. Plašākai informācijai un tālākai zināšanu apguvei ļoti ieteicams ir <a href="https://coderefinery.github.io/git-intro/" target="_blank" rel="noreferrer noopener">šis ārkārtīgi kvalitatīvais, brīvi pieejamais materiāls</a>, kura izstrādi atbalstījusi <em><a href="https://neic.no/" target="_blank" rel="noreferrer noopener">Nordic e-Infrastructure Collaboration (NeIC)</a></em>.</p>



<h2 class="wp-block-heading"><em>Git </em>uzstādīšana uz sava datora un lokāla repozitorija demonstrējums</h2>



<p>Lai sāktu lietot <em>Git </em>versionēšanas sistēmu, nepieciešams instalēt <em><a href="https://gitforwindows.org/" target="_blank" rel="noreferrer noopener">Git for Windows</a></em> (instalācijas laikā saglabāt visus noklusētos iestatījumus). Šīs programmas uzstādīšana padara iespējamu <em>Git </em>izmantošanu tikai komandrindas režīmā. Tālākajās šī raksta sadaļās tiks parādīts kā to darīt ar grafiskas saskarnes palīdzību, bet vispirms tiek īsi demonstrēts lietojums komandrindā, lai ilustrētu <em>Git </em>darbības pamatprincipus un dažus jēdzienus.</p>



<p>Atverot instalēto <em>Git </em>komandrindu (<em>Git Bash</em>), izpildām dažas komandas, lai izveidotu mapi, kuras saturs tiks pakļauts versionēšanas kontrolei – t.i., tiks izveidots <strong>repozitorijs</strong>. Pie katras rindiņas pierakstītie komentāri atklāj komandu būtību.</p>



<pre class="wp-block-code"><code>$ mkdir MyProject    # Izveido jaunu mapi
$ cd MyProject       # Pārvietojas uz jauno mapi
$ git init           # Norāda, ka šajā mape būs repozitorijs</code></pre>



<p>Izmantojot savus ierastos rīkus, mapē var izvietot programmatūras koda failus. Sniegtajā piemērā mapē ir izvietots <em>Python </em>skripts (<em>my_program.py</em>), kurš veic dažu matemātisku funkciju attēlojumu grafikā (<em>myplot.pdf</em>).</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://modinst.lu.lv/wp-content/uploads/2021/02/6_project-1030x666.jpg" alt="" class="wp-image-1754" width="689" height="446" srcset="https://modinst.lu.lv/wp-content/uploads/2021/02/6_project-1030x666.jpg 1030w, https://modinst.lu.lv/wp-content/uploads/2021/02/6_project-300x194.jpg 300w, https://modinst.lu.lv/wp-content/uploads/2021/02/6_project-768x497.jpg 768w, https://modinst.lu.lv/wp-content/uploads/2021/02/6_project-705x456.jpg 705w, https://modinst.lu.lv/wp-content/uploads/2021/02/6_project.jpg 1387w" sizes="auto, (max-width: 689px) 100vw, 689px" /></figure></div>



<p>Lai saglabātu esošo<em> .py</em> skripta izstrādes stadiju versionēšanas vēsturē, nepieciešams izpildīt komandas, kas (1) pievieno failu versijas kontrolei (<em>staging</em>) un (2) atzīmē izdarītās izmaiņas versiju vēsturē, pievienojot paskaidrojošu komentāru (<em>commit</em>).</p>



<pre class="wp-block-code"><code>git add my_program.py                    # Pievieno failu versijas kontrolei
git commit -m "Initial code development" # Saglabā izmaiņas</code></pre>



<p>Pēc tam, kad tas izdarīts, var izpildīt komandu git status, lai redzētu, kāds ir patreizējais repozitorija stāvoklis no versionēšanas sistēmas skata punkta. Komanda parādīs, vai ir izdarītas izmaiņas no pēdējās reizes, kad iesniegta (<em>commit</em>) kāda satura versija un vai ir faili, kuriem netiek sekots līdzi. Šajā piemērā netiek sekots līdzi failam <em>myplot.pdf</em>, jo tas ir izstrādātās programmas grafika izvads, kura precīzs saturs nav nozīmīgs – svarīgi ir sekot līdzi tā izveides programmas kodam.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="581" height="300" src="https://modinst.lu.lv/wp-content/uploads/2021/02/1_git_status.jpg" alt="" class="wp-image-1776" srcset="https://modinst.lu.lv/wp-content/uploads/2021/02/1_git_status.jpg 581w, https://modinst.lu.lv/wp-content/uploads/2021/02/1_git_status-300x155.jpg 300w" sizes="auto, (max-width: 581px) 100vw, 581px" /></figure></div>



<p>Pēc repozitorija failu izmainīšanas (piem., turpinot attīstīt programmas kodu), izmaiņas saglabā atkārtoti izpildot jau minētās komandas (<em>git add</em>, <em>git commit</em>). Izpildot komandu <em>git log</em>, tiek parādīta versiju attīstības vēsture. Šajā piemērā redzams, ka veikti divi iesniegumi (<em>‘Initial code development’ </em>un <em>‘Small edits’</em>).</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="581" height="300" src="https://modinst.lu.lv/wp-content/uploads/2021/02/2_git_log.jpg" alt="" class="wp-image-1778" srcset="https://modinst.lu.lv/wp-content/uploads/2021/02/2_git_log.jpg 581w, https://modinst.lu.lv/wp-content/uploads/2021/02/2_git_log-300x155.jpg 300w" sizes="auto, (max-width: 581px) 100vw, 581px" /></figure></div>



<p>Ja repozitorija failos izdarītās izmaiņas ir nepieciešams atsaukt, var izpildīt komandu <em>git restore</em>. Ir vēl daudz un dažādu iespēju: var atgriezt repozitoriju agrākos stāvokļos, var veidot paralēlus attīstības zarus, var īslaicīgi aplūkot kādu senāku iesniegumu. Tomēr jāatzīst, ka lietot <em>Git </em>iespējas komandrindā var būt neērti, nepārskatāmi un neatbilstoši tam darba stilam, kādu raksta lasītāji piekopj <em>Windows </em>vidē. Tāpēc raksta turpinājumā apskatām veidus, kā lietot <em>Git </em>repozitorijus ar grafiskās saskarnes palīdzību.</p>



<h2 class="wp-block-heading"><em>Git Extensions</em> grafisko rīku lietošana</h2>



<h3 class="wp-block-heading">Instalācija un uzstādīšana</h3>



<p>Lai lietotu grafisko saskarni <em>Git </em>repozitoriju pārvaldīšanai <em>Windows </em>vidē, ieteicams instalēt <em><a href="http://gitextensions.github.io/" target="_blank" rel="noreferrer noopener">Git Extensions</a></em>. Lai pilnvērtīgi lietotu šīs programmas iespējas, nepieciešams instalēt vēl divas papildus programmas: (1) <em><a href="https://winmerge.org/?lang=en" target="_blank" rel="noreferrer noopener">WinMerge</a></em>, kas tiks izmantota failu izmaiņu vizualizēšanai un (2) <em><a href="https://www.putty.org/" target="_blank" rel="noreferrer noopener">PuTTY</a></em>, kas padarīs ērtāku darbu ar attālinātiem repozitorijiem (piem., <em>GitLab</em>).</p>



<p>Pēc <em>Git Extensions</em> instalācijas ir ļoti nozīmīgi sakārtot visus programmas iestatījumus – šim nolūkam programmas iestatījumu (<em>‘Settings’</em>) logs piedāvā ērtus pārbaudes punktus, pēc kuriem vadīties. Jāpanāk, ka visi iestatījumi uzrādīti kā derīgi (zaļa krāsa).</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://modinst.lu.lv/wp-content/uploads/2021/02/3_gitext_settings.jpg" alt="" class="wp-image-1780" width="609" height="498" srcset="https://modinst.lu.lv/wp-content/uploads/2021/02/3_gitext_settings.jpg 952w, https://modinst.lu.lv/wp-content/uploads/2021/02/3_gitext_settings-300x245.jpg 300w, https://modinst.lu.lv/wp-content/uploads/2021/02/3_gitext_settings-768x628.jpg 768w, https://modinst.lu.lv/wp-content/uploads/2021/02/3_gitext_settings-705x576.jpg 705w" sizes="auto, (max-width: 609px) 100vw, 609px" /></figure></div>



<p>Sadaļā <em>‘difftools’ </em>jānorāda iepriekš pieminētais un uz datora instalētais <em>WinMerge </em>rīks. Pēc <em>PuTTY </em>instalācijas iestatījumu sadaļā <em>‘SSH’ </em>jāatzīmē <em>PuTTY</em>.</p>



<h3 class="wp-block-heading">Lietošana</h3>



<p>Pēc programmu uzstādīšanas un iestatījumu sakārtošanas, iespējams pilnvērtīgi lietot <em>Git </em>repozitorijus bez komandrindas palīdzības. Jebkurā <em>Windows </em>mapē labais peles klikšķis atklāj <em>Git Extensions</em> piedāvātās iespējas: pārlūkot esošu vai izveidot jaunu repozitoriju, kopēt (<em>clone</em>) repozitoriju no citas vietas (piem., <em>GitLab </em>vietnes).</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="271" height="397" src="https://modinst.lu.lv/wp-content/uploads/2021/02/4_gitext_context.jpg" alt="" class="wp-image-1782" srcset="https://modinst.lu.lv/wp-content/uploads/2021/02/4_gitext_context.jpg 271w, https://modinst.lu.lv/wp-content/uploads/2021/02/4_gitext_context-205x300.jpg 205w" sizes="auto, (max-width: 271px) 100vw, 271px" /></figure></div>



<p>Mapē, kurā jau ir izvietots repozitorijs, būs iespēja izvēlēties komandu <em>‘GitExt open repository’</em>. To izvēloties, atveras logs kurā var pārskatīt repozitorija izmaiņu vēsturi, redzēt to autorus un pievienotos komentārus.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="823" height="541" src="https://modinst.lu.lv/wp-content/uploads/2021/02/5_gitext_browse.jpg" alt="" class="wp-image-1752" srcset="https://modinst.lu.lv/wp-content/uploads/2021/02/5_gitext_browse.jpg 823w, https://modinst.lu.lv/wp-content/uploads/2021/02/5_gitext_browse-300x197.jpg 300w, https://modinst.lu.lv/wp-content/uploads/2021/02/5_gitext_browse-768x505.jpg 768w, https://modinst.lu.lv/wp-content/uploads/2021/02/5_gitext_browse-705x463.jpg 705w" sizes="auto, (max-width: 823px) 100vw, 823px" /></figure></div>



<p>Saskarnē var spiest pogu <em>‘Commit’</em>, lai veiktu repozitorija satura versijas izveidi, līdzīgi kā iepriekš demonstrēts ar komandrindas palīdzību. Tikai šajā gadījumā tiek nodrošināta papildu vizualizācija un pārskatāmība, ko piedāvā <em>Git Extensions</em> vide.</p>



<p>Ļoti vērtīga un bieži izmantota iespēja ir labot<em> .gitignore</em> failu, (<em>Repository / Edit .gitignore</em>), kurā norāda tos failus un failu tipus, kuru izmaiņas ignorēt un nepakļaut versiju kontrolei. Sniegtajā piemērā tas ir izstrādātās programmas izvadītais PDF fails.</p>



<h2 class="wp-block-heading"><em>GitLab </em>platformas lietošana ērtai projektu koplietošanai</h2>



<p>Līdz šim rakstā tika aplūkots individuāls/lokāls <em>Git </em>repozitorijs. Taču būtiska priekšrocība versionēšanas sistēmas lietošanai ir iespēja ērti un pārskatāmi kopdarboties. Tieši tādēļ ir izveidoti vairāki uz <em>Git </em>bāzēti interneta servisi ar iespēju izvietot attālinātus repozitorijus un kopīgot tos. Šajā sadaļā demonstrēta viena šāda servisa lietošana: <em><a href="https://gitlab.com/" target="_blank" rel="noreferrer noopener">GitLab.com</a></em>. Jāatzīmē, ka Latvijas Universitāte nodrošina uz <em>GitLab </em>bāzētu platformu <em><a href="https://git.lu.lv/" target="_blank" rel="noreferrer noopener">git.lu.lv</a></em>, kurā var iekļūt ar <a href="https://luis.lu.lv/lu/" target="_blank" rel="noreferrer noopener">LUIS</a> lietotājvārdu un paroli.</p>



<h3 class="wp-block-heading">Reģistrēšanās un repozitorija izveide</h3>



<p><em>GitLab </em>platformā var <a href="https://gitlab.com/users/sign_up" target="_blank" rel="noreferrer noopener">reģistrēties</a> gan ar e-pastu, gan ar Google kontu. Platforma piedāvā pilnvērtīgas bezmaksas lietošanas iespējas, bet to iegūšanai reģistrācijas gaitā ir jāpamana un jālieto poga <em>‘Skip Trial’</em>.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://modinst.lu.lv/wp-content/uploads/2021/02/9_free_trial.jpg" alt="" class="wp-image-1760" width="371" height="178" srcset="https://modinst.lu.lv/wp-content/uploads/2021/02/9_free_trial.jpg 753w, https://modinst.lu.lv/wp-content/uploads/2021/02/9_free_trial-300x144.jpg 300w, https://modinst.lu.lv/wp-content/uploads/2021/02/9_free_trial-705x338.jpg 705w" sizes="auto, (max-width: 371px) 100vw, 371px" /></figure></div>



<p>Pēc veiksmīgas konta izveides ir iespēja izveidot savu attālinātos repozitorijus – piešķirt tiem nosaukumu, aprakstu, privātuma pakāpi (privāts, dalīts grupai, publisks) u.c. parametrus.</p>



<h3 class="wp-block-heading">SSH atslēgas pievienošana</h3>



<p>Lai varētu sava datora lokālos repozitorijus augšuplādēt (<em>git push</em>) attālinātajā <em>GitLab </em>vidē, kā arī lejupielādet (<em>git clone</em>) savus privātos repozitorijus, nepieciešams veids, kā autentificēt savu lokālo datoru darbam ar konkrēto <em>GitLab </em>kontu. Šim nolūkam tiek lietotas SSH atslēgas.</p>



<p>Lai iespējotu šo autentifikācijas veidu, nepieciešams izveidot privātās un publiskās SSH atslēgas pāri. Privātā SSH atslēga ir nekas vairāk kā ļoti gara un droša parole. Savukārt publiskā SSH atslēga ir šai parolei atbilstošs, publiski izpaužams autentifikācijas marķieris. Jāatzīst, ka būtu atbilstošāk publisko atslēgu nosaukt par ‘slēdzeni’, kuru lietotājs var ierīkot sev vēlamā vietā – šajā gadījumā <em>GitLab </em>portālā.</p>



<p><em>Windows </em>vidē SSH atslēgu pāra izveidei lieti noderēs <em>PuTTYgen </em>rīks, kas pieejams uz datora, ja instalēta iepriekš pieminētā <em>PuTTY </em>programma. Sekojot norādēm programmas logā, iespējams iegūt gan privāto atslēgu (saglabājama<em> .ppk </em>failā), kā arī publisko atslēgu (jāveic <em>copy/paste</em> darbības <em>GitLab </em>portālā sadaļā <em>User Settings / SSH Keys</em>).</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="479" height="471" src="https://modinst.lu.lv/wp-content/uploads/2021/02/10_puttygen.jpg" alt="" class="wp-image-1762" srcset="https://modinst.lu.lv/wp-content/uploads/2021/02/10_puttygen.jpg 479w, https://modinst.lu.lv/wp-content/uploads/2021/02/10_puttygen-300x295.jpg 300w, https://modinst.lu.lv/wp-content/uploads/2021/02/10_puttygen-80x80.jpg 80w, https://modinst.lu.lv/wp-content/uploads/2021/02/10_puttygen-36x36.jpg 36w" sizes="auto, (max-width: 479px) 100vw, 479px" /></figure></div>



<h3 class="wp-block-heading">Attālināto repozitoriju iegūšana</h3>



<p>Lai iegūtu <em>GitLab </em>portālā izvietotu repozitoriju (tai skaitā, lai uzsāktu darbu ar jaunizveidotu/tukšu repozitoriju), jānokopē tā SSH adrese.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="526" height="298" src="https://modinst.lu.lv/wp-content/uploads/2021/02/11_clone_gitlab.jpg" alt="" class="wp-image-1764" srcset="https://modinst.lu.lv/wp-content/uploads/2021/02/11_clone_gitlab.jpg 526w, https://modinst.lu.lv/wp-content/uploads/2021/02/11_clone_gitlab-300x170.jpg 300w" sizes="auto, (max-width: 526px) 100vw, 526px" /></figure></div>



<p>Uz sava datora, nospiežot labo peles taustiņu kādā mapē, jāizvēlas komanda <em>GitExt Clone</em>. Jānorāda <em>GitLab </em>portālā iegūtā adrese, jānorāda privātā SSH atslēgta (<em>Load SSH Key</em>), jāspiež poga<em> ‘Clone’</em>.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="618" height="368" src="https://modinst.lu.lv/wp-content/uploads/2021/02/12_gitclone_local.jpg" alt="" class="wp-image-1766" srcset="https://modinst.lu.lv/wp-content/uploads/2021/02/12_gitclone_local.jpg 618w, https://modinst.lu.lv/wp-content/uploads/2021/02/12_gitclone_local-300x179.jpg 300w" sizes="auto, (max-width: 618px) 100vw, 618px" /></figure></div>



<p>Pēc repozitorija veiksmīgas kopēšanas (klonēšanas), varēs turpināt/uzsākt darbu ar tā saturu, kā demonstrēts iepriekš. Tomēr tagad, papildu jau iepriekš apskatītajai<em> ‘Commit’</em> darbībai, ir pieejama arī <em>‘Push’</em> darbība, kas lokālajā repozitorijā izveidotās versijas augšuplādē attālinātajā repozitorijā. Analoģiski var veikt arī <em>‘Pull’ </em>darbību, kas lejupielādēs citu izdarītās izmaiņas.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="586" height="322" src="https://modinst.lu.lv/wp-content/uploads/2021/02/13_push_pull.jpg" alt="" class="wp-image-1768" srcset="https://modinst.lu.lv/wp-content/uploads/2021/02/13_push_pull.jpg 586w, https://modinst.lu.lv/wp-content/uploads/2021/02/13_push_pull-300x165.jpg 300w" sizes="auto, (max-width: 586px) 100vw, 586px" /></figure></div>



<h3 class="wp-block-heading">Publisku repozitoriju iegūšana</h3>



<p>Ja repozitorijs ir iestatīts par publiski pieejamu, jebkurš to var lejupielādēt (<em>git clone</em>), izmantojot <em>GitLab </em>platformā piedāvāto repozitorija HTTPS adresi. Zemāk demonstrēts, kā <a href="https://gitlab.com/Bergfelds/myrepoexample" target="_blank" rel="noreferrer noopener">šajā rakstā demonstrētais publiskais repozitorijs</a> tiek lejupielādēts uz SMI augstas veiktspējas skaitļošanas klastera ar komandrindas palīdzību.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="791" height="354" src="https://modinst.lu.lv/wp-content/uploads/2021/02/15_git_clone_hpc.jpg" alt="" class="wp-image-1772" srcset="https://modinst.lu.lv/wp-content/uploads/2021/02/15_git_clone_hpc.jpg 791w, https://modinst.lu.lv/wp-content/uploads/2021/02/15_git_clone_hpc-300x134.jpg 300w, https://modinst.lu.lv/wp-content/uploads/2021/02/15_git_clone_hpc-768x344.jpg 768w, https://modinst.lu.lv/wp-content/uploads/2021/02/15_git_clone_hpc-705x316.jpg 705w" sizes="auto, (max-width: 791px) 100vw, 791px" /></figure></div>



<h2 class="wp-block-heading">Noslēgumā</h2>



<p>Rakstā sniegts ieskats darbam ar lokāliem <em>Git </em>repozitorijiem <em>Windows </em>vidē, izmantojot grafiskās saskarnes programmu <em>Git Extensions</em>. Demonstrēti pamati <em>GitLab </em>vides lietošanā, attālinātu repozitoriju izveidē, <em>clone/push/pull </em>darbību veikšanā. Tajā pašā laikā rakstā netiek apskatīta virkne ar <em>Git </em>sistēmas, kā arī <em>GitLab </em>portāla priekšrocībām. Noslēgumā īpaši jāuzsver viena no tām: projektu dokumentācijas veidošana.</p>



<p><em>GitLab </em>attālināto repozitoriju pārlūkošanas saskarnē var attēlot repozitorija dokumentāciju ar <em>README.md </em>faila palīdzību, t.i., ja repozitorijā atrodas teksta fails ar nosaukumu <em>README.md</em>, tas tiks priekšskatīts <em>GitLab </em>vietnē. Šos dokumentācijas failus iespējams noformēt ar <a href="https://guides.github.com/features/mastering-markdown/" target="_blank" rel="noreferrer noopener">dažādām tekstveides komandām</a>.</p>



<pre class="wp-block-code"><code>* Nulla vel sem volutpat, volutpat sapien sed, egestas ligula.
* _Vestibulum fermentum lectus et finibus volutpat._
* __Vestibulum tristique turpis quis enim porta vestibulum.__
* `Nam facilisis sapien vitae gravida ultricies.`
* &#91;Nam commodo purus in faucibus fermentum.](https://modinst.lv)
</code></pre>



<p>Augstāk parādītās tekstveides komandas, ievietotas <em>README.md</em> failā, tiks attēlotas <em>GitLab </em>portālā sekojošā veidā:</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="492" height="146" src="https://modinst.lu.lv/wp-content/uploads/2021/02/14_formatted.jpg" alt="" class="wp-image-1770" srcset="https://modinst.lu.lv/wp-content/uploads/2021/02/14_formatted.jpg 492w, https://modinst.lu.lv/wp-content/uploads/2021/02/14_formatted-300x89.jpg 300w" sizes="auto, (max-width: 492px) 100vw, 492px" /></figure></div>



<p>Cerams, ka šis raksts palīdzēs <em>Git </em>lietošanas uzsākšanā un ļaus efektīvāk un ātrāk kopdarboties dažādu programmēšanas uzdevumu veikšanā.</p>
<p>The post <a href="https://modinst.lu.lv/git-pamati/">Git versionēšanas sistēmas pamati</a> appeared first on <a href="https://modinst.lu.lv">Skaitliskās modelēšanas institūts</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>No datiem līdz skaistam grafikam: moderna zinātnieka programmatūras rīki</title>
		<link>https://modinst.lu.lv/zinatnieka-programmaturas-riki/</link>
		
		<dc:creator><![CDATA[Mihaēls Doroņins]]></dc:creator>
		<pubDate>Sun, 03 Jan 2021 15:51:28 +0000</pubDate>
				<category><![CDATA[Jaunumi]]></category>
		<category><![CDATA[Skaitļošanas centra pamācības]]></category>
		<guid isPermaLink="false">https://modinst.lu.lv/?p=1531</guid>

					<description><![CDATA[<p>Par autoru Mg. Phys. Kristaps Bergfelds ir LU FMOF Skaitliskās modelēšanas institūta pētnieks, kura ikdienas darbs saistīts ar fizikālu datu iegūšanu, apstrādi un attēlošanu. Papildus darbam institūtā Kristaps pasniedz programmēšanas praktiskos darbus LU fizikas studentiem (programmēšanas un datu apstrādes pamatus, izmantojot programmēšanas valodu Python). Šī raksta tapšanas pamatā ir Kristapa gadu gaitā uzkrātā pieredze un [&#8230;]</p>
<p>The post <a href="https://modinst.lu.lv/zinatnieka-programmaturas-riki/">No datiem līdz skaistam grafikam: moderna zinātnieka programmatūras rīki</a> appeared first on <a href="https://modinst.lu.lv">Skaitliskās modelēšanas institūts</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Par autoru</h2>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<p>Mg. Phys. Kristaps Bergfelds ir LU FMOF Skaitliskās modelēšanas institūta pētnieks, kura ikdienas darbs saistīts ar fizikālu datu iegūšanu, apstrādi un attēlošanu. Papildus darbam institūtā Kristaps pasniedz programmēšanas praktiskos darbus LU fizikas studentiem (programmēšanas un datu apstrādes pamatus, izmantojot programmēšanas valodu <em>Python</em>). Šī raksta tapšanas pamatā ir Kristapa gadu gaitā uzkrātā pieredze un novērojumi par savu, kolēģu, kā arī studentu tipiskām ikdienas vajadzībām darbā ar datoru.</p>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_0_par_autoru.jpg" alt="" class="wp-image-1533" width="226" height="226" srcset="https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_0_par_autoru.jpg 781w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_0_par_autoru-300x300.jpg 300w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_0_par_autoru-80x80.jpg 80w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_0_par_autoru-768x768.jpg 768w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_0_par_autoru-36x36.jpg 36w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_0_par_autoru-180x180.jpg 180w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_0_par_autoru-705x705.jpg 705w" sizes="auto, (max-width: 226px) 100vw, 226px" /></figure></div>
</div>
</div>



<h2 class="wp-block-heading">Ievads</h2>



<p>Mūsdienu darbs zinātnē, tehnoloģijās un daudzās citās jomās nav iedomājams bez datorprasmēm! Taču ar to jāsaprot daudz vairāk nekā interneta lapu lietošanu, teksta redaktoru un e-pastu. Mūsdienu tehnoloģiju vide un attīstības straujums prasa tehnoloģiju speciālistiem un zinātniekiem pārzināt datu apstrādes metodes, datu vizualizāciju un daudzas citas jomas. Dators ir zinātnieka nepārtraukts sabiedrotais – Šveices nazis, kas vienmēr jātur kabatā ass!</p>



<p>Taču atšķirībā no naža, datoram nav taustāmu asmeņu un instrumentu. Tā vietā šīs dažādās funkcijas pilda uz datora instalētās lietojumprogrammas. Zināt, kuras tieši programmas būs noderīgas zinātnieka ikdienā, bieži vien ir ilgs un sāpīgs meklējuma process, ko šajā rakstā veiktais apkopojums mēģina atvieglot.</p>



<p>Rakstā ir apkopota virkne ar noderīgu brīvpieejas programmatūru, kas noderēs ikvienam, kas saskaras ar datu apstrādes u.c. tipiskiem zinātnieka darba uzdevumiem. Raksts ir paredzēts iesācējam, kas izmanto <em>Windows </em>operētājsistēmu. Taču jāatzīmē, ka daļa no programmatūras ir pieejama arī <em>Linux </em>vidē.</p>



<p>Šis raksts ir tapis kā atbalsta materiāls <a href="http://ljza.lv/" target="_blank" rel="noreferrer noopener">Latvijas Jauno zinātnieku apvienības</a> 2021. gada 6. janvāra tiešsaistes pasākumam <em><a href="https://fb.me/e/NuVhhDsh" target="_blank" rel="noreferrer noopener">“Zinātnieka izdzīvošanas komplekts: no datiem līdz sakarīgam grafikam”</a></em>. Pasākuma video ieraksts <a href="https://youtu.be/h1ERixFJAco" target="_blank" rel="noreferrer noopener">pieejams <em>YouTube</em></a>.</p>



<h2 class="wp-block-heading">Failu un jēldatu pārvaldība</h2>



<p>Pirms uzsākt datu attēlošanu ir jāveic vairāki sagatavošanās darbi, kā arī jāatbild uz virkni jautājumu: Kādos failos glabājas dati? Kāda ir šo failu struktūra? Cik daudz ir šo datu failu? Kā visefektīvāk tos sakārtot, lai atvieglotu tālāko darbu? Bieži vien šo jautājumu noskaidrošana aizņem lielāko daļu darba procesa un bieži nākas pielaist kļūdas. Šajā sadaļā uzskaitītā programmatūra atvieglo šo procesu.</p>



<h3 class="wp-block-heading"><em>Notepad++</em></h3>



<p>Ar programmas <a href="https://notepad-plus-plus.org/" target="_blank" rel="noreferrer noopener"><em>Notepad++</em></a> palīdzību var apskatīt teksta failu saturu. Tas ir īpaši svarīgi, jo tas ir tipisks datu glabāšanas formāts (.csv, .dat u.c. – tie visi ir tekstveida <em>“plain text”</em> datu formāti). Šo failu apskati var veikt arī ar <em>Windows </em>iebūvēto rīku <em>Notepad</em>, bet kā vēsta nosaukums <em>Notepad++</em>, tad šī programma piedāvā vairākus “plusus”.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_1_Notepad.jpg" alt="" class="wp-image-1568" width="606" height="424" srcset="https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_1_Notepad.jpg 852w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_1_Notepad-300x210.jpg 300w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_1_Notepad-768x537.jpg 768w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_1_Notepad-705x493.jpg 705w" sizes="auto, (max-width: 606px) 100vw, 606px" /></figure></div>



<p>Programma nodrošina darbu ar failiem cilnēs, masveida atrašanas/aizvietošanas darbības (skat. attēlu), nestandarta ievades veidus (piem. rakstīt reizē vairākās rindās), iespēja ieslēgt neredzamos simbolus, salīdzināt divu failu saturu, iekrāsot dažādu programmēšanas valodu sintaksi utt. Šīs nelielās programmas iespējas un pielietošanas scenāriji ir ārkārtīgi plaši.</p>



<h3 class="wp-block-heading"><em>Total Commander</em></h3>



<p>Brīdī, kad nepieciešams strādāt ar daudz un dažāda tipa failiem, <em>Windows </em>iebūvētā failu pārvaldnieka <em>Windows Explorer</em> iespējas var būt nepietiekošas. Šādā brīdī var palīdzēt programma <em><a href="https://www.ghisler.com/" target="_blank" rel="noreferrer noopener">Total Commander</a></em>.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_2_TotalCommander.jpg" alt="" class="wp-image-1570" width="594" height="403" srcset="https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_2_TotalCommander.jpg 965w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_2_TotalCommander-300x203.jpg 300w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_2_TotalCommander-768x520.jpg 768w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_2_TotalCommander-705x478.jpg 705w" sizes="auto, (max-width: 594px) 100vw, 594px" /></figure></div>



<p>Šī programma piedāvā dažādas specializētas darbības failu pārvaldīšanai: Masveida failu pārsaukšana (ar teksta atrašanu, aizvietošanu, numurēšanu), mapju failu satura salīdzināšanu un sinhronizēšanu (skat. attēlu), specializētas failu meklēšanas iespējas un tml.</p>



<h3 class="wp-block-heading"><em>7-Zip</em></h3>



<p>Beidzot darbu ar kādu projektu / datu attēlošanas uzdevumu, ir ieteicams visu failu kopu (datu faili, grafiku zīmēšanas skripti, radītie attēli) glabāt kompresētus vienotā ZIP arhīva failā. Šī darbība ir svarīga un aktuāla neskatoties uz to, ka mūsdienu datu glabāšanas iekārtu (flešatmiņas, cietie diski) ietilpība pēdējo gadu laikā ir daudzkāršojusies.</p>



<p>Arhīvu izveide ir ieteicama nevis datu apjoma samazināšanai, bet gan ērtākai failu pārvaldībai. Apkopot daudzus sīkus failus vienotā ZIP failā padara virkni darbību nesalīdzināmi ātrākas: failu kopēšana, kā arī datu nesēju satura salīdzināšana un mapju sinhronizēšana (parādīts iepriekš ar <em>Total Commander</em>). Lietojot arhivētus datus, pazūd risks, ka operētājsistēma veiks ar šiem datiem nevēlamas darbības (piem. izveidotos datu grafiku attēlus<em> Windows </em>attēlu pārvaldnieks, uzskatot tos par fotogrāfijām, mēģinās apkopot albumos).</p>



<p>Darbam ar dažādiem datu arhīvu formātiem ieteicamā programmatūra ir <a href="https://www.7-zip.org/" target="_blank" rel="noreferrer noopener"><em>7-Zip</em></a>. Tā spēj veidot un atvērt dažāda tipa arhīvu failus (.zip, .rar, .tar, .7z u.c.). Jāuzsver, ka par spīti dažādo formātu atbalstam, ieteicams veidot arhīvus tieši <em>.zip</em> failos, jo tas ir <a href="https://www.iso.org/standard/60101.html" target="_blank" rel="noreferrer noopener">ISO standartizēts</a> formāts.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_4_7-Zip.jpg" alt="" class="wp-image-1548" width="594" height="407" srcset="https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_4_7-Zip.jpg 766w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_4_7-Zip-300x206.jpg 300w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_4_7-Zip-705x483.jpg 705w" sizes="auto, (max-width: 594px) 100vw, 594px" /></figure></div>



<h3 class="wp-block-heading"><em>SpaceSniffer</em></h3>



<p>Lai ātri saprastu sava datora vai kāda datu nesēja aizpildījumu, to var vizualizēt ar programmas <a href="http://www.uderzo.it/main_products/space_sniffer/" target="_blank" rel="noreferrer noopener"><em>SpaceSniffer</em></a> palīdzību. Programma attēlo diska mapes un failus taisnstūru veidā, kuru laukums ir proporcionāls datu apjomam. Kā redzams attēlā, kāda <em>Windows </em>datora <em>C:</em> diska saturu lielā mērā aizpilda dažas ļoti lielas programmas (<em>ANSYS</em>, <em>Wolfram Mathematica</em>, <em>Anaconda Python</em>), nevis <em>Windows </em>faili vai lietotāja personīgie dati.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_5_SpaceSniffer.jpg" alt="" class="wp-image-1550" width="585" height="438" srcset="https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_5_SpaceSniffer.jpg 758w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_5_SpaceSniffer-300x225.jpg 300w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_5_SpaceSniffer-705x528.jpg 705w" sizes="auto, (max-width: 585px) 100vw, 585px" /></figure></div>



<h2 class="wp-block-heading">Darbs attēliem un video</h2>



<p>Liela un nozīmīga niša zinātniskā darbā ar datoru ir dažādu attēlu veidošana un pārvaldība. Ļoti bieži tieši fotogrāfijas un citu tipu attēli ir apstrādājamie datu avoti. Vai tieši otrādi – galvenais datu apstrādes gala rezultāts (grafiks, shēma), ko nepieciešams rādīt citiem. Darbā ar šo īpaši svarīgo datu tipu ir iesakāmi vairāki rīki, kas var šo procesu atvieglot.</p>



<h3 class="wp-block-heading"><em>WebPlotDigitizer</em></h3>



<p>Dažreiz ir nepieciešamība no kāda attēla iegūt skaitliskus datus. Piemērām, vecas zinātniskas publikācijas datus izmantot savos aprēķinus vai pārzīmēt savos grafikos. Tā vietā, lai pie monitora liktu lineālu un cirkuli, ieteicams izmantot<em> <a href="https://automeris.io/WebPlotDigitizer/" target="_blank" rel="noreferrer noopener">WebPlotDigitizer</a></em>.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_3_WebPlotDigitizer-1030x533.jpg" alt="" class="wp-image-1572" width="734" height="380" srcset="https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_3_WebPlotDigitizer-1030x533.jpg 1030w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_3_WebPlotDigitizer-300x155.jpg 300w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_3_WebPlotDigitizer-768x398.jpg 768w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_3_WebPlotDigitizer-705x365.jpg 705w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_3_WebPlotDigitizer.jpg 1124w" sizes="auto, (max-width: 734px) 100vw, 734px" /></figure></div>



<p>Ar šīs programmas palīdzību var ielasīt skaitliskus datus no jebkura attēla – ieviest savu atskaites sistēmu un ar peles kursoru nolasīt datus un saglabāt tos datu failā (skat. attēlu augstāk). Ja dati attēloti ar kontrastējošu krāsu, nolasīšanu var veikt automātiski, neveicot datu punktu atzīmi ar peli.</p>



<h3 class="wp-block-heading"><em>GIMP</em></h3>



<p>Ārkārtīgi populāra un iespējām bagāta ir attēlu apstrādes programma <a href="https://www.gimp.org/" target="_blank" rel="noreferrer noopener"><em>GIMP</em></a>, kuras iespējas būtiski neatpaliek no komerciālā analoga <em>Adobe PhotoShop</em>. Ir iespēja strādāt ar rastra (pikseļu) attēliem slāņos, veidot efektu slāņus un slāņu maskas. Pieejami dažādi filtri un rīki. Attēlā redzama relatīvi reta un unikāla rīka pielietošana: slāņa perspektīvas korekcija, lai parādītu kā logotips izskatītos uz gaiteņa sienas izkārtnes veidā.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_6_GIMP-1030x595.jpg" alt="" class="wp-image-1552" width="738" height="426" srcset="https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_6_GIMP-1030x595.jpg 1030w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_6_GIMP-300x173.jpg 300w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_6_GIMP-768x444.jpg 768w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_6_GIMP-705x407.jpg 705w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_6_GIMP.jpg 1177w" sizes="auto, (max-width: 738px) 100vw, 738px" /></figure></div>



<p>Tomēr jāatzīmē, ka programmas apgūšana prasa laiku un pacietību. Taču, ja nav nepieciešamas visas plašās <em>GIMP </em>iespējas, ieteicamas ir citas vienkāršākas programmas.</p>



<h3 class="wp-block-heading"><em>Paint.NET</em></h3>



<p>Gadījumā, ja nepieciešama tikai daļa no <em>GIMP </em>iespējām, ļoti ieteicama ir programma <a href="https://www.getpaint.net/" target="_blank" rel="noreferrer noopener"><em>Paint.NET</em></a>. Šī relatīvi vienkāršā un intuitīvā programma ļauj strādāt ar attēla slāņiem, dažādiem efektiem un rīkiem. Piemēram, attēlā zemāk redzama <em>Magic Wand </em>rīka pielietošana, lai logotipa attēlam selektīvi iezīmētu balto fonu, lai to izdzēstu vai pārkrāsotu.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_7_PaintNET-1030x576.jpg" alt="" class="wp-image-1554" width="733" height="410" srcset="https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_7_PaintNET-1030x576.jpg 1030w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_7_PaintNET-300x168.jpg 300w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_7_PaintNET-768x429.jpg 768w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_7_PaintNET-705x394.jpg 705w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_7_PaintNET.jpg 1079w" sizes="auto, (max-width: 733px) 100vw, 733px" /></figure></div>



<h3 class="wp-block-heading"><em>ImageMagick</em></h3>



<p>Gadījumā, ja attēlu ir ļoti daudz, pat tādas vienkāršas darbības kā attēla izmēra vai formāta maiņu nav ieteicams veikt ar iepriekš minētajām programmām. Šādos gadījumos var palīdzēt rīks <a href="https://imagemagick.org/index.php" target="_blank" rel="noreferrer noopener"><em>ImageMagick</em></a>. Tā ir komandrindas programma, kas ļauj efektīvi veikt masveida attēlu apstrādi. Piemēram, zemāk redzamā komanda (izpildāma <em>Command Prompt</em> konsolē vai ierakstāma <em>Windows</em> <em>batch </em>skriptā) veiks visu mapē esošo JPG failu apstrādi – izgriezīs no tām pēc iespējas lielu kvadrātu un nomainīs izmēru uz 1000&#215;1000 px.</p>



<pre class="wp-block-code"><code>magick mogrify -gravity center -crop 1:1 +repage -resize 1000x1000 *.jpg</code></pre>



<p>Šāda darbība ir diezgan tipiska brīžos, kad nepieciešams sagatavot attēlus tālākai lietošanai (piem. interneta lapās, datu apstrādes un attēlošanas programmās).</p>



<h3 class="wp-block-heading"><em>Inkscape</em></h3>



<p>Atšķirībā no iepriekš aprakstītajām rastra (pikseļu) attēlu apstrādes programmām, <em><a href="https://inkscape.org/" target="_blank" rel="noreferrer noopener">Inkscape</a> </em>ir paredzēta vektorgrafikas attēlu veidošanai un apstrādei. Ar tās palīdzību var veidot dažādas shēmas un rasējumus, kas ļoti daudzos gadījumos aizvieto specializētas programmatūras lietošanu (CAD rasēšana, <em>Microsoft Visio</em> u.c.). Brīžos, kad šādas shēmas nav jāveido bieži un daudz, apgūt <em>Inkscape </em>ir īpaši veiksmīga izvēle.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_8_Inkscape.jpg" alt="" class="wp-image-1556" width="688" height="467" srcset="https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_8_Inkscape.jpg 741w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_8_Inkscape-300x204.jpg 300w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_8_Inkscape-705x479.jpg 705w" sizes="auto, (max-width: 688px) 100vw, 688px" /></figure></div>



<p>Augstāk redzamajā attēlā parādītas gan Inkscape iespējas, gan vektorgrafikas priekšrocības kopumā: Pikseļains maza izmēra attēls, izmantojot attiecīgo Inkscape rīku <em>Bitmap Trace</em>, tiek pārveidots par vektorgrafikas objektu. Tam var mainīt izmēru pēc ieskatiem, saglabājot attēla kvalitāti. Ir iespējams mainīt tā krāsas un citādi to pārveidot.</p>



<h3 class="wp-block-heading"><em>Avidemux </em>un <em>OpenShot</em></h3>



<p>Dažreiz nākas saskarties ar situācijām, kad nepieciešams darboties ar video failiem – kadru attēli jāapvieno video (<em>timelapse</em>), jāveic video failu formātu pārveide, vai jāmontē kāds īss video sižets. Ja to nākas darīt tik reti, ka komerciālās programmatūras (<em>Adobe Premier</em>, <em>Final Cut Pro</em> u.c.) iegāde nav attaisnojama, tad noderēs tādi bezmaksas rīki kā <em><a href="http://avidemux.sourceforge.net/" target="_blank" rel="noreferrer noopener">Avidemux</a> </em>un <a href="https://www.openshot.org/download/" target="_blank" rel="noreferrer noopener"><em>OpenShot</em></a>.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_9_avidemux.jpg" alt="" class="wp-image-1558" width="505" height="482" srcset="https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_9_avidemux.jpg 717w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_9_avidemux-300x287.jpg 300w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_9_avidemux-705x674.jpg 705w" sizes="auto, (max-width: 505px) 100vw, 505px" /></figure></div>



<p><em>Avidemux </em>ir ļoti spējīga programma dažādu formātu pārveidei un video failu tehnisko parametru maiņai. Iespējama arī atsevišķu attēlu (.jpg, .png) apvienošana video failā (skat piemēru attēlā augstāk). Savukārt programma <em>OpenShot </em>ir ļoti spējīgs video montāžas rīks, kura iespējas pārsniedz <em>Windows 10</em> iekļauto <em>Video Editor</em>. Tai pat laikā programma ir pietiekoši intuitīva un vienkārša, lai to varētu ātri apgūt.</p>



<h2 class="wp-block-heading">Datu attēlošana un atskaišu veidošana</h2>



<p>Kad ir izpētīta datu failu struktūra un veikta to sakārtošana ērtai attēlošanai (piemēram, tie nosaukti līdzīgos, numurētos nosaukumos), var uzsākt to apstrādi un attēlošanu grafikos, kā arī rezultātu apkopošanu atskaitē. Šī sadaļa parāda dažus rīkus un pieejas šī procesa norisei.</p>



<h3 class="wp-block-heading"><em>Gnuplot</em></h3>



<p>Ja ir nepieciešama tikai datu failu attēlošana (nevis apstrāde), ļoti noderīga ir programma <a href="http://www.gnuplot.info/" target="_blank" rel="noreferrer noopener"><em>Gnuplot</em></a>. Šī programma tiek lietota komandrindas vai sagatavotu skriptu veidā. Līdz ar to, ka programma ir paredzēta datu attēlošanai, nevis datu apstrādei, izmantotās komandas ir ļoti lakoniskas un saprotamas. Apgūt šo programmu ir relatīvi viegli, tai pat laikā ļaujot apstrādāt ļoti lielus datu apjomus un iegūt dažāda tipa grafikus (līniju grafiki, stabiņu diagrammas, histogrammas, 2D datu attēlojums utt.). Iespējams izvadīt grafikus gan vektorgrafikas (PDF), gan rastra attēlu (PNG) formātā.</p>



<p>Zemāk ir redzams neliels skripts, ar kura palīdzību vienā grafikā attēlots trīs datu failu saturs – ātruma atkarība no laika automašīnas bremzēšanas laikā. Kodam pievienotie komentāri parāda katras koda sadaļas nozīmi. <a href="https://modinst.lu.lv/example_gnuplot/" target="_blank" rel="noreferrer noopener">Šeit iespējams lejupielādēt</a> visu piemēru (dati, skripts, attēls).</p>



<pre class="wp-block-code"><code># Definē attēla izmēru, līniju biezumu, fonta izmēru
set terminal pngcairo size 900,700 enhanced lw 3 fontscale 2.0

# Izvadītā attēla faila nosaukums
set output "example_gnuplot_output.png"

# Grafika noformējums (asu apzīmējumi, robežas, atzīmes)
set yrange &#91;-5:105]
set xlabel "t, s"
set ylabel "v, km/h" # Data in m/s! Need to scale by 3.6!
set xtics 1
set ytics 20
set grid

# Cikls visu trīs datu failu grafiku iezīmēšanai vienā rakstlaukumā
plot for &#91;i=1:3] \
	'breaking_speed_data_'.i.'.dat' using ($1):($2*3.6) with line title 'File '.i</code></pre>



<p>No grafika (skat. zemāk) redzams, ka automašīna bremzējusi no 100, 70 un 50 km/h un apstājusies attiecīgi 4.0, 2.7 un 2.0 sekunžu laikā.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://modinst.lu.lv/wp-content/uploads/2021/01/example_gnuplot_output.png" alt="" class="wp-image-1582" width="568" height="442" srcset="https://modinst.lu.lv/wp-content/uploads/2021/01/example_gnuplot_output.png 900w, https://modinst.lu.lv/wp-content/uploads/2021/01/example_gnuplot_output-300x233.png 300w, https://modinst.lu.lv/wp-content/uploads/2021/01/example_gnuplot_output-768x597.png 768w, https://modinst.lu.lv/wp-content/uploads/2021/01/example_gnuplot_output-705x548.png 705w" sizes="auto, (max-width: 568px) 100vw, 568px" /></figure></div>



<h3 class="wp-block-heading"><em>Python</em></h3>



<p>Ja ir nepieciešams datus ne tikai attēlot, bet vienlaicīgi arī apstrādāt, tad šim nolūkam ļoti piemērota ir <em>Python </em>programmēšanas valoda un dažādas papildinošas komponentes (paketes), kas šo procesu atvieglo. Ērts veids kā iegūt pilnu rīku kopumu (<em>Python</em>, bieži lietojamas paketes, grafiskais koda redaktors) ir instalēt programmatūras pakotni <a href="https://www.anaconda.com/products/individual" target="_blank" rel="noreferrer noopener"><em>Anaconda</em></a>.</p>



<p>Python programmēšanas valodas un saistīto rīku piedāvātās iespējas noteikti pārsniedz šī raksta tvērumu, bet zemāk tiek sniegts neliels piemērs kā izskatās datu apstrādes un attēlošanas skripts, izmantojot <em>Numpy</em>/<em>Scipy </em>skaitlisko datu apstrādes iespējas, kā arī <em>Matplotlib </em>grafiku veidošanu. Kodam pievienotie komentāri parāda katras koda sadaļas nozīmi. <a href="https://modinst.lu.lv/example_python/" target="_blank" rel="noreferrer noopener">Šeit iespējams lejupielādēt</a> visu piemēru (dati, skripts, attēls).</p>



<pre class="wp-block-code"><code># Nepieciešamie Python rīki (paketes)
import numpy as np
import matplotlib.pyplot as plt
import glob
from scipy.integrate import cumtrapz


# Ielasa visus faila nosaukumus no darba mapes, kas beidzas ar '.dat'.
text_filenames = glob.glob("*.dat")

# Nosaka grafika zīmēšanas rakstlaukuma izmēru
plt.figure(figsize = (4.5,3.5), dpi = 200)

# Katram no .dat failiem veiks datu apstrādi, iezīmēs grafikā
for filename in text_filenames:

    # Ielasa katru failu (tabulatora atdalīti dati)
    time, velocity = np.loadtxt(
        filename,
        delimiter = "\t",
        skiprows = 1,
        unpack = True
        )
    
    # Skaitliskā integrēšana, lai iegūtu attālumu no ātruma datiem
    distance = cumtrapz(velocity, time, initial=0.0)
    
    # Nosaka maksimālo ātrumu un attālumu (lai lietotu grafika leģendā)
    velocity_max = velocity.max()
    distance_max = distance.max()
    
    # Grafikā iezīmē attālumu no laika, leģendā ieraksta bremzēšanas ceļu
    plt.plot(
        time,
        distance,
        label = "{:.0f} km/h - breaking dist. is {:.1f} m".format(
            velocity_max*3.6,
            distance_max
            )
        )


# Noformē grafiku (pievieno režģi, asu nosaukumus, leģendu)
plt.grid()
plt.legend(loc="upper left")
plt.xlabel("t, s")
plt.ylabel("d, m")
plt.xlim(0,5)

# Saglabā grafiku kā PNG attēlu
plt.savefig("example_python_output.png")</code></pre>



<p>Piedāvātais skripts veic jau iepriekš parādīto automašīnas ātruma datu summēšanu (integrēšanu), parādot kādu ceļu veic automašīna bremzēšanas laikā. Redzams, ka automašīnas bremzēšanas ceļš no 100 km/h ir 55 m, bet no 50 km/h tikai 14 m. Šis rezultāts ir diezgan neintuitīvs, jo divreiz lielāks ātrums nenozīmē divreiz garāku bremzēšanas ceļu. Tas ir četras reizes garāks!</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://modinst.lu.lv/wp-content/uploads/2021/01/example_python_output.png" alt="" class="wp-image-1584" width="505" height="393" srcset="https://modinst.lu.lv/wp-content/uploads/2021/01/example_python_output.png 900w, https://modinst.lu.lv/wp-content/uploads/2021/01/example_python_output-300x233.png 300w, https://modinst.lu.lv/wp-content/uploads/2021/01/example_python_output-768x597.png 768w, https://modinst.lu.lv/wp-content/uploads/2021/01/example_python_output-705x548.png 705w" sizes="auto, (max-width: 505px) 100vw, 505px" /></figure></div>



<h3 class="wp-block-heading"><em>LaTeX </em>tekstveide</h3>



<p>Zinātnieka darba galvenais rezultāts lielākoties ir nevis konstruētas iekārtas, programmatūra vai cits gatavs risinājums, bet gan jauna informācija un secinājumi. Veids, kādā zinātniskā darbā noformē sava pētījuma rezultātus – jauno informāciju – ir ārkārtīgi nozīmīgs. Tas ir jāveic tehniski kvalitatīvi, lasāmi un saprotami. Lielākoties šie informatīvie materiāli (atskaites, publikācijas) ir pilni ar attēliem, tabulām, matemātiskām izteiksmēm, bibliogrāfiskām atsaucēm.</p>



<p>Šāda tipa materiālus veidot <em>Microsft Word </em>vidē ir iespējams, bet šis risinājums nav optimāls. Šim nolūkam <em>LaTeX </em>tekstveides risinājumi ir daudz piemērotāki. Izmantojot <em>LaTeX </em>tekstveidi, dokumenti tiek veidoti koda veidā, norādot tikai saturu – kur sākas un beidzas nodaļas, kur ievietojamas atsauces, kur ievietojami attēli. Noformējums tiek atstāts programmatūras pārziņā, kas optimāli izkārto tekstu un attēlus, veic automātisku atsauču numurēšanu un tml. Šī pieeja tik piemērota zinātniskas literatūras veidošanai, ka nereti zinātnisku rakstu redakcijas pieņem autoru rakstus tikai un vienīgi <em>LaTeX </em>koda formātā. Zemāk redzams vizuāls piemērs <em>LaTeX </em>dokumentam, kura veidošana ar <em>Word </em>būtu ārkārtīgi grūta (iegūts no <a href="https://tex.stackexchange.com/questions/1319/showcase-of-beautiful-typography-done-in-tex-friends" target="_blank" rel="noreferrer noopener">šīs <em>StackExchange</em> sarakstes</a>).</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_10_LaTeX-1030x723.png" alt="" class="wp-image-1560" width="667" height="468" srcset="https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_10_LaTeX-1030x723.png 1030w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_10_LaTeX-300x211.png 300w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_10_LaTeX-768x539.png 768w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_10_LaTeX-705x495.png 705w, https://modinst.lu.lv/wp-content/uploads/2021/01/no_datiem_lidz_grafikam_10_LaTeX.png 1271w" sizes="auto, (max-width: 667px) 100vw, 667px" /></figure></div>



<p>Lai sāktu veidot dokumentus ar <em>LaTeX</em>, var uz sava datora uzstādīt vajadzīgo programmatūru: <em><a href="https://miktex.org/" target="_blank" rel="noreferrer noopener">MiKTeX</a> </em>pakotni (ļauj pārveidot <em>LaTeX </em>kodu par PDF dokumentu), kā arī <a href="https://www.texstudio.org/" target="_blank" rel="noreferrer noopener"><em>TeXstudio</em></a> vai <a href="https://www.xm1math.net/texmaker/" target="_blank" rel="noreferrer noopener"><em>Texmaker</em></a> redaktoru (ērtai koda veidošanai, failu pārvaldīšanai). Taču pēdējā laikā ārkārtīgi populāra kļuvusi <em>LaTeX</em> dokumentu veidošana mākoņplatformā<em> <a href="https://www.overleaf.com/" target="_blank" rel="noreferrer noopener">Overleaf</a></em>. Nav nepieciešams neko instalēt uz sava datora – dokumentus var veidot, strādājot tikai ar interneta pārlūkprogrammu.</p>



<p>Arī <em>LaTeX </em>dokumentu veidošana un valodas nianses ir pārāk plašs temats šī raksta tvērumam, taču iespaidam par to, kā notiek dokumentu veidošana ar <em>LaTeX/Overleaf</em>, var aplūkot <a href="https://www.overleaf.com/read/smswzjmsckvs" target="_blank" rel="noreferrer noopener">šo dokumenta piemēru</a>, kurā koda komentāru veidā parādīta katras sadaļas nozīme.</p>



<h2 class="wp-block-heading">Noslēgums</h2>



<p>Rakstā sniegtais ieteicamās programmatūras uzskaitījums ne tuvu nav pilnīgs, un piemēri nav visaptveroši. Ir gan cita brīvpieejas programmatūra, kas veic minētās funkcijas, kā arī minētās programmatūras iespējas ir aprakstītas ārkārtīgi minimāli. Par spīti tam, cerams, ka šis raksts kalpos kā pirmais solis tiem, kas meklē veidus, kā paplašināt savas iespējas darbā ar datoru.</p>



<h2 class="wp-block-heading">Papildinājums</h2>



<p>Pēc šī raksta publicēšanas, vairāki lasītāji norādījuši vēl citas vērtīgas brīvpieejas programmas, kas atbilst šī raksta tematikai.</p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<p><em><a href="https://www.voidtools.com/" target="_blank" rel="noreferrer noopener">Voidtools</a></em> – Ātrai failu meklēšanai;</p>



<p><em><a href="https://freefilesync.org/" target="_blank" rel="noreferrer noopener">FreeFileSync</a></em> – failu sinhronizēšanai;</p>



<p><em><a href="https://markummitchell.github.io/engauge-digitizer/" target="_blank" rel="noreferrer noopener">Engauge Digitizer</a></em> – skaitlisku datu iegūšanai no attēla;</p>



<p><em><a href="https://shotcut.org/" target="_blank" rel="noreferrer noopener">Shotcut</a> </em>– video montāžai;</p>



<p><em><a href="https://www.photopea.com/" target="_blank" rel="noreferrer noopener">Photopea</a></em> – attēlu apstrādei interneta pārlūkprogrammā;</p>



<p><em><a href="https://www.audacityteam.org/" target="_blank" rel="noreferrer noopener">Audacity</a></em> – skaņas apstrādei;</p>



<p><em><a href="https://www.irfanview.net/" target="_blank" rel="noreferrer noopener">IrfanView</a></em> un <em><a href="https://imageglass.org/" target="_blank" rel="noreferrer noopener">ImageGlass</a></em> – ātrai attēlu apskatei;</p>



<p><em><a href="https://www.darktable.org/" target="_blank" rel="noreferrer noopener">darktable</a></em> – RAW foto failu apstrādei (<em>Adobe Lightroom</em> aternatīva).</p>
</div></div>
<p>The post <a href="https://modinst.lu.lv/zinatnieka-programmaturas-riki/">No datiem līdz skaistam grafikam: moderna zinātnieka programmatūras rīki</a> appeared first on <a href="https://modinst.lu.lv">Skaitliskās modelēšanas institūts</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
