petak, 19 aprila, 2024
Slobodni profesionalac

Slobodan softver u nauci (1. deo)

Autor: Nikola Hardi

Slobodan softver je vrlo zastupljen u nauci i obrazovanju a prisutan je u širokom spektru od programa zabavnog karaktera, za decu predškolskog uzrasta, preko programa za pisanje beležaka na predavanjima i simulatora pa sve do programa za statističku analizu i obradu podataka. Ovo je kratak pregled programa sa kojima sam se susretao, a spisak svih korisnih programa iz ove oblasti je naravno daleko obimniji.

1 Beleške i obaveze

1.1 Emacs org-mode

Emacs je napredan tekst editor sa mnogo modova koji mu dodatno povećavaju funkcionalnost. Za „hvatanje beležaka“ tokom predavanja koristimo org-mode. Prednosti su što se sve radi prečicama na tastaturi ili eventualno pisanjem komandi. Beleške se čitaju u običnom tekstualnom fajlu a postoji mogućnost za izvoz u neki od „lepših“ formata, recimo PDF, HTML, ODF ili čak mapa uma u formatu za program FreeMind. Osim toga, postoji jako dobra podrška za liste, nabrajanja, tabele, razne tipove oznaka, pisanje formula unutar redovnog teksta u LaTeX-u… Moguće ga je koristiti i za mnogo naprednije stvari kao što su beleške o finansijama ili upravljanje obavezama.

1.2 taskwarrior

Taskwarrior ili samo task je konzolni program za pravljenje spiskova obaveza. Od jednostavnog pravljenja spiska obaveza nastala je cela nauka, pa tako i sistem „Getting Things Done“ po ugledu na koji je i napisan ovaj program. Neke od njegovih mogućnosti su grupisanje obaveza po projektima, označavanje tagovima, obaveze koje se ponavljaju, merenje vremena utrošenog na obavljanje nekog zadatka, početak obaveze, procenjeno vreme, prioriteti, krajnji rok, filtriranje po praktično bilo kojem kriterijumu. Tri bitne stvari koje treba da budu istaknute su automatska procena „urgentnosti“ zadatka na osnovu drugih već zadatih kriterijuma, sinhronizacija sa spiskovima zadataka na drugim računarima putem različitih protokola (git, ssh a radi se i na taskd protokolu) i vrlo funkcionalna i šarena statistika i grafika koja takođe radi u konzoli. Izuzetno koristan programčić za sve koji su večito u obavezama.

1.3 Remind i wyrd

Remind je nastao relativno davno, za razliku od taskwarrior-a. Njegov adekvatan opis bi bio napredan kalendar. Obaveze, odnosno podsetnici se zapisuju u konfiguracioni fajl u vidu naredbi koje Remind razume i na osnovu kojih proračunava datume za pojedine događaje. Neki od primera gde se vidi prava snaga ovog izuzetnog alata su recimo podsetnici svakog prvog ponedeljka, svakog drugog vikenda, poslednje srede u mesecu, svakog sedmog meseca ili bilo šta drugo. Nismo uspeli da pronađemo primer koji nije jednostavno rešiv. Wyrd je grafički program za upravljanje remind fajlovima. Zapravo, wyrd je takođe konzolni program ali koristi dobro poznatu biblioteku ncurses koja pruža grafiku „u terminalu“.

1.4 Workrave

Workrave je sitan programčić ali nekada je izuzetno bitan. Za one koji provode sate za računarom vrlo je česta pojava da izgube pojam o vremenu. U takvim situacijama ovaj programčić može biti vrlo koristan jer zaključava ekran posle određenog perioda vremena i otključa ga nakon pauze. Naravno da je moguće odložiti pauzu ili je nekada preskočiti ali nije loše napraviti pauzu od petnaestak minuta na svakih 45 min rada. Neke od zanimljivih mogućnosti su sinhronizacija to jest akumuliranje provedenog vremena za različitim računarima putem mreže, vreme se ne meri kada ne koristimo miš ili tastaturu duži vremenski period (recimo minut) ali postoji i režim za čitanje kada vreme teče i tada. Na početku pauze, kada se ekran zaključa, prikazuje se niz vežbi za kičmu, vrat, oči i ramena…

2 Pisanje i vizuelizacija

2.1 LaTeX LyX

Matematičari vrlo dobro znaju kakvi sve problemi postoje pri formatiranju dokumenata sa ozbiljnijim matematičkim izrazima a i svima nama ostalima se dogodilo da se naš dokument jednostavno „raspadne“. LaTeX je programski jezik (ništa strašno!) koji ove probleme rešava na jedan elegantan način. Pišete LaTeX kod a zatim iz njega generišete PDF dokument u kojem tekst neće „cureti“ na sve strane. Ovo je vrlo moćan alat za pisanje raznih matematičkih izraza i praktično ne postoji izraz koji nije moguće napisati. Osim matematičkih formula i simbola, postoje razne mogućnosti i nadogradnje za rukovanje tabelama, listama, izvornim kodovima pisanim u raznim programskim jezicima, ilustracijama, sadržajima, indeksima, literaturom, referencama. Posebno je zanimljivo što je moguće generisati čak i prezentacije koje mnogi smatraju za nijansu profesionalnijim od onih u LibreOffice Impres-u. Za prezentacije služi Beamer. Za one kojima se ne sviđa ideja da za pisanje jednog običnog referata ili seminarskog rada koriste jedan programski jezik, postoji program po imenu LyX koji u pozadini piše LaTeX kod za nas a sam interfejs je opet sličan LibreOffice Writer-u.

2.2 gnuplot

Gnuplot je jednostavno rečeno alat za crtanje grafika ili plotovanje. Na ovaj alat se oslanjaju i mnogi drugi matematički i statistički programi, na primer Octave. Pravi naziv ovog alata je gnuplot i gnu u njegovom nazivu nema direktne veze sa projektom GNU (Gnu’s Not Unix). Nastao je prvenstveno kao pomoćni alat za vizuelizaciju matematičkih funkcija mada danas ima mnogo širu primenu. Podržava dvodimenzionalne i trodimenzionalne prikaze. Osim komandnog interfejsa može se koristiti u skriptama i uključiti u web prezentacije.

2.3 matplotlib

Matplotlib je Python biblioteka za vizuelizaciju, slična programu gnuplot, odnosno vizuelizaciju podataka u vlasničkom programu MATLAB. Ideja i povod za pisanje ove biblioteke je da se programerima omogući da na brz i jednostavan način grafički predstave podatke koje obrađuju. Na raspolaganju su razni tipovi grafikona, histogrami, krive, ravni, polarni, konture, dijagrami toka i mnoštvo drugih.

2.4 graphviz

Graphviz ima mogućnosti za vizuelizaciju raznih tipova grafova, dijagrama i mreža. Sastoji se iz više alata (dot, neato, fdp, sfdp, twopl, circo) koji imaju različitu namenu. Grafovi se opisuju tekstualnim fajlovima a prikazuju (iscrtavaju) na različite načine, na primer iz drugih programa, generisanjem rasterskih ili vektorskih izlaznih fajlova… Postoje grafička okruženja za mnoge programske jezike uključujući C, Python, Tcl i druge.

2.5 Dia

Dia je program za crtanje struktuiranih dijagrama, kao što su UML dijagrami, dijagrami za predstavljanje topologije računarskih mreža, dijagrami toka za grafičko predstavljanje algoritama… Može se reći da je alternativa za komercijalni vlasnički program Microsoft Visio. Dia ima grafički korisnički interfejs koji je pristupačan i početnicima i ne zahteva prethodno učenje za razliku od recimo graphviz-a. Postoji mogućnost za definisanje dodatnih skupova simbola. Jedna od zanimljivih mogućnosti je i crtanje vremenskih dijagrama za analizu rada digitalnih kola, ne simulaciju već jednostavno crtanje takvih dijagrama.

2.6 Inkscape

Inkscape je klasičan program za rad sa vektorskom grafikom. Nekada je potrebno ilustrovati probleme, recimo ilustrovati kompoziciju objekata u zadacima koji se bave Njutnovom mehanikom u fizici ili nacrtati Venove dijagrame. Inkscape može vrlo dobro da posluži u ovakvim situacijama. Naravno, mogućnosti jednog ovakvog programa su daleko veće ali ispostavilo se da je ovo adekvatan alat za crtanje ovakvih jednostavnih ilustracija koje su nekada potrebne.

U ovom broju smo tek započeli priču o slobodnom softveru u nauci, obrazovanju, organizaciji vremena i poslova… U narednim brojevima ćemo nastaviti sa predstavljanjem slobodnog softvera za napredne i prosečne korisnike.