GSoC: Izboljšava sposobnosti prikaza podatkov v nodewatcherju (končno poročilo) EN

Predstavitev

To poletje je bilo zame res vznemerljivo, saj sem prvič sodeloval na Google Summer of Code. Delal sem za Freifunky, katerih osrednji cilj je brezplačno brezžično omrežje za vse. Rad bi se jim zahvalil za priložnost, da sem lahko izboljšal svoje znanje programiranja ter nasploh za odlično poletje. Najbolj sem bil navdušen nad tem, da sem lahko uporabljal Git na resnem projektu, kjer sodeluje več razvijalcev programske opreme hkrati, sploh pa, da sem izvedel svoj prvi »pull request«! Prvič sem delal z Dockerjem, ta pa mi je postal zelo všeč in ga zdaj uporabljam tudi na svojih lastnih projektih. Navdušen pa sem tudi, da lahko po 5 letih programiranja v Pythonu dodam Django na svoj seznam programskih jezikov.

Obnova

Moje delo je bilo razdeljeno na dva dela: prvi del je bil nodewatcher, orodje za mrežno povezovanje, drugi del pa obnova dolgo mrtvega odlagališča spletne strani Wlan Slovenija. To lahko vidite na sledečih povezavah:

Ip prostor modul

To je bila moja prva naloga. Ustvariti sem moral modul za nodewatcherja, ki bo narisal zemljevid vseh omrežij. Nekaj podobnega temu. Modul je bil potreben zato, ker nekatera ogromna omrežja niso vedela nič o tem, kateri ip prostor je bil uporabljen in kateri ne. Ta zemljevid bi bil v boljšo predstavo tega, koliko prostora je prostega in koliko strukturiranega. Z delom sem začel zelo počasi, saj nisem imel dovolj izkušenj z Djangom. Zaradi tega sem moral porabiti približno teden dni, da sem ugotovil, kje so definirani vsi moduli in kako implementirati novega. Ko sem enkrat začel programirati v html in javascriptu, je delo steklo hitreje in s tem sem končal nekje v sredini poletja. Opazil sem, da je 10.0.0.0/8 omrežje ogromno v primerjavi z manjšimi vozlišči – teh se skoraj ni videlo. Zato sem dodal možnost, da se lahko na višje nivojska vozlišča približamo, kar poveča jasnost, kako so vozlišča distribuirana. Pozicije so izračunane s pomočjo Hilbertove krivulje, katera pozicionira 1d števila v 2d prostor. Risba je narejena z uporabo d3.js, kateri je odličen za delo z ogromnimi količinami podatkov in prikaz le teh v .svg obliki – to mi je omogočilo lažjo implementacijo približevanja.Screenshot from 2017-09-03 19-39-25.png

Težave, na katere sem naletel

Moja največja težava je bilo pomanjkanje znanja, zato sem moral ogromno časa nameniti raziskovanju in učenju. Nikoli prej še nisem delal z Dockerjem, zato mi je vzelo kar nekaj časa, da sem nodewatcher container sploh zagnal. Podobno je trajalo tudi učenje Djangona. Kdorkoli, ki bi delal na nodewatcherju v prihodnosti, bi moral poznati ta dva področja res bolje kot jaz.

Prihodnost

V prihodnosti imam za dodati še kar nekaj stvari, predvsem pa boljšo vizualno reprezentacijo. o add, a better visual representation will be a good place to start.

Mainpage

Ta naloga mi je od začetka stekla kar hitro, vse se je pa zavleklo ko sem začel delati z Djangom. Obuditi sem moral projekt, ki se ga nihče ni dotaknil v letih, še vedno je imel v uporabi virtualenv in staro pil knjižnico, katerih ni nihče spreminjal v 10 letih. Wlan-slo spletna stran je odlična začetna točka za vsakega, ki bi si želel začeti delati na mrežnih wifi vozljiščih. Ker pa je zapuščena že tako dolgo, nekatere funkcionalnosti niso več delale. To pomeni, da če se bi kdo želel pridružiti na novo, bi bil od tega odvrnjen prav zaradi nefunkcionalne strani. Spletna stran je razdvojena v dva kontejnerja, eden vsebuje postgresql bazo podatkov za stran, drugi pa ima stran servirano na uwsgi za Django in nginx za statične datoteke. Ker sem ime težave že pri prejšnji nalogi z Dockerjem, sem mislil, da me bo to zopet upočasnilo, ampak je bilo prav nasprotno. Približno v tednu dni mi je uspelo mi je ustvariti oba kontejnerja, težave pa sem imel zopet z Djangom.

Težave, na katere sem naletel

Tukaj se je res pokazalo pomanjkanje, ki sem ga imel z Djangom. Dneve sem porabil samo za reševanje preprostih problemov miskonfiguracije. Drugi problem je bilo dejstvo, da je projekt bil že končan in sem ga moral samo posodabljati, kar pomeni, da nisem imel pojma, kje karkoli najti ali kako stvari delujejo. Mislim, da bi se naučil veliko več, če bi se projekta lotil od začetka, ampak spletna stran je prevelika, da bi to naredil v časovnem obdobju, ki sem ga imel na voljo.

Prihodnost

Ker mi je Docker postal res všeč, sem ga vključil v nekaj svojih projektov in se o njem naučil kar veliko, kar pomeni, da lahko glede njega vedno priskočim na pomoč. Ampak s trenutnim znanjem Djanga ne morem veliko prispevati projektu. Želim si le, da bi nekdo, ki je v Djangu res vešč, pogledal projekt - prepričan sem, da sem zgrešil nekaj, kar bi bilo njemu takoj jasno, meni pa ne.

Končne misli

Res sem užival v priložnosti, kjer sem imel možnost delati na odprto kodnem projektu. To me je inspiriralo, da se pridružim še večim, saj nikoli ne veš, komu vse boš na koncu s tem pomagal. Konec koncev je bilo super poletje in z veseljem sem se učil o Dockerju in Djangu.