mojakoda.si
–
sistem
za
shranjevanje
programske
kode
Referat
Avtor:
Oto
Brglez
Datum:
21.5.2009
mojakoda.si
–
referat
Kazalo
vsebine
Uvod ................................................................................................................................................... 3
Uporabniki
sistema............................................................................................................................. 4
Ključne
funkcionalnosti ...................................................................................................................... 4
Dodajanje
in
urejanje
programske
kode......................................................................................... 4
Brskanje
po
objavljeni
kodi ............................................................................................................. 5
Označevanje,
komentiranje
in
ocenjevanje .................................................................................... 6
Iskanje
po
programski
kodi............................................................................................................. 6
API
za
iskanje
in
opravljanje
s
kodo ................................................................................................ 6
Oglaševanje
in
delovanje.................................................................................................................... 7
Tehnologije
in
tehnična
izvedba
sistema............................................................................................ 7
Zaključek............................................................................................................................................. 8
Oto
Brglez
2
/
9
mojakoda.si
–
referat
Uvod
Večina
programerjev
se
med
svojim
delom
srečuje
z
različnimi
problemi.
Velikokrat
so
ti
problemi
že
bili
rešeni
in
dokumentirani.
V
duhu
današnjega
časa
‐
ko
je
vsa
vsebina
dosegljiva
na
spletu
in
je
glavno
orodje
sodobnega
programerja
iskalnik
‐
se
postavlja
vprašanje
»kako
najhitreje
poiskati
rešitev
za
moj
projekt?«
S
pomočjo
izkušenj
in
komunikacije
z
ostalimi
programerji
smo
se
poskušali
vprašati
kam
programerji
danes
shranjujejo
svoje
delčke
kode.
Kako
jih
organizirajo,
da
jih
ko
jih
spet
potrebujejo
hitro
najdejo?
Kam
se
obrnejo,
ko
potrebujejo
pomoč
pri
programiranju?
Kje
in
kaj
iščejo?
Odgovor
na
ta
vprašanja
ponuja
sistem
mojakoda.si.
Mojakoda
je
spletna
storitev,
ki
omogoča
vsakumur,
ki
se
uspešno
prijavi,
shranjevanje
svojih
delčkov
programske
kode.
To
programsko
kodo
ustrezno
uvrsti
in
označi.
S
pomočjo
sistema
pa
lahko
po
objavljeni
kodi
išče
in
brska.
Spletna
stran
mojakoda.si
je
opremljena
tudi
s
socialnimi
storitvami
in
ključnimi
funkcionalnostmi
pojma
splet
2.0.
Funkcionalnostmi
kot
so
komentiranje,
označevanje,
favorizacija
in
RSS1
kanali.
Stran
je
opremljena
s
funkcionalnostmi
zato,
da
bi
programerjem
postala
dober
pripomoček,
ki
se
lahko
uporablja
pri
sakdanjem
delu.
1
RSS
je
družina
XML
datotečnih
oblik
za
spletno
zlaganje
(angl.
web
syndication),
ki
ga
uporabljajo
spletne
strani,
ki
nudijo
novice,
ter
tako
imenovani
spletni
dnevniki
(angl.
weblog).
(Wiki,
2009)
Oto
Brglez
3
/
9
mojakoda.si
–
referat
Uporabniki
sistema
»V
letu
2007
je
bilo
v
SLO
417.500
internetnih
naročnikov«
(RIS,
2009).
Med
vsemi
temi
naročniki
je
veliko
programerjev
in
razvijalcev
programske
opreme,
ki
želijo
shranjevati
svojo
programsko
kodo.
Ti
ljudje
so
ciljna
publika
sistema
mojakoda.
Pri
gradnji
sistema
je
bil
poglavitni
vir
želja
in
zahtev
povprečen
programer,
ki
programira
v
popularnih
in
najbolj
razširjenih
programskih
jezikih.
Sistem
poskuša
tega
uporabnika
opremiti
z
novim
orodjem.
Dostop
do
sistema
je
enostaven.
Vsak
obiskovalec
opravi
proces
registracije
v
katerem
si
izbere
svoje
željeno
uporabniško
ime
in
geslo,
ter
pove
svojo
elektronsko
pošto.
Elektronska
pošta
je
potrebna,
ker
lahko
s
pomočjo
maila
ugotovimo,
če
gre
za
pravilnega
uporabnika
oziroma,
lahko
ohranjamo
stik
z
uporabniki
tudi
preko
elektronske
pošte.
Sistem
pozna
dva
tipa
uporabnikov.
Prijavljene(registrirane)
in
obiskovalce.
Obiskovalci
lahko
stran
samo
ogledujejo,
ne
morejo
pa
nastopati
kot
akterji
pri
določenih
opravilih.
Lahko
brskajo
po
kodi
in
iščejo
z
uporabo
iskalnika.
Ključne
funkcionalnosti
Računalnik
že
dolgo
ni
več
samo
stroj
za
računanje
in
ga
lahko
z
algoritmi
izraženimi
s
programsko
kodo
usmerjamo
in
vodimo.
(Žumer,
V.
2003)
je
ključna
funkcionalnost
sistema
zbiranje
teh
algoritmov
ali
kratkih
delčkov
programske
kode.
Dodajanje
in
urejanje
programske
kode
Izvorno
kodo2
lahko
dodajamo
s
pomočjo
enostavnega
obrazca.
Obrazec
je
dosegljiv
preko
spletne
strani
ob
prejšnji
obvezni
prijavi.
Pri
dodajanju
programske
kode
moramo
izbrati
programski
jezik3,
naslov
in
označbe
–
seveda
pa
zraven
vpišemo
svojo
kodo.
Obrazec
za
dodajanje
kode
ima
tudi
posebno
polje,
ki
pove
ali
je
objavljena
koda
javna
ali
zasebna.
Zasebno
kodo
lahko
ogleduje
samo
tisti,
ki
jo
je
objavil,
javno
kodo
pa
lahko
ogledujejo
vsi
uporabniki
sistema.
Slika:
1
Dodajanje
izvorne
kode
2
Izvorna
koda
(angleško
source
code)
je
skupina
navodil
napisana
v
programskem
jeziku,
namenjena
lažjemu
razumevanju
in
hitrejšemu
razvoju.
(Wiki,
2009)
3
Programski
jezik
je
skupek
pravil,
podatkovnih
struktur
in
vmesnikov,
ki
programerju
služijo
kot
orodje
za
izdelavo
programa.
(Wiki,
2009)
Oto
Brglez
4
/
9
mojakoda.si
–
referat
Brskanje
po
objavljeni
kodi
Na
strani
je
sistem
za
brskanje
po
kodi.
Omogoča
izbiro
programskega
jezika
in
na
podlagi
izbora
prikaže
vso
svežo
kodo
razvrščeno
glede
na
datum
objave.
Brskanje
je
mogoče
glede
na
jezik,
čas
ali
označbo.
Pri
brskanju
kode
so
izpostavljeni
podatki
kot
so
datum
objave,
avtor
objave,
število
objav,
zadnji
vnos.
Vsak
programski
jezik
pa
je
opremljen
tudi
s
svojo
barvno
kodo,
ki
poskrbi,
da
programski
jezik
bolj
prepoznaven.
Slika:
2
Prikaz
vse
kode
Slika:
3
Prva
stran
‐
Prikaz
vse
kode
Oto
Brglez
5
/
9
mojakoda.si
–
referat
Označevanje,
komentiranje
in
ocenjevanje
Vsa
objavljena
in
javno
vidna
koda
ima
tudi
možnost,
da
jo
ustrezno
komentiramo,
ocenimo
ali
označimo.
Označbe4
–
Tage,
lahko
dodajo
samo
avtorji
določene
kode.
Označbe
so
preproste
besede
ali
besedne
zveze,
ki
so
ključne
v
objavljeno
kodo.
S
pomočjo
označb
lahko
lažje
vsebinsko
in
logično
povežemo
določene
vsebine,
ki
obravnavajo
sorodno
tematiko
ali
problem.
S
pomočjo
označb
mojakoda
gradi
oblak
označb5.
Programsko
kodo
lahko
prijavljeni
uporabniki
tudi
komentirajo.
Komentarji
so
omogočeni
zaradi
tega,
ker
je
pomembna
interakcija
med
avtorjem
kode
in
tistim,
ki
jo
želijo
uporabiti.
Vsaka
objavljena
koda
ima
tudi
možnost
ocene.
S
pomočjo
ocene,
ki
ji
dodajo
uporabniki
je
mogoče
ugotoviti
kako
dobra
je
določena
koda,
oziroma
kako
pomembna
je
v
primerjavi
z
ostalimi
prispevki.
Ob
kodi
je
prikazana
povprečna
ocena,
ki
se
preračuna
iz
vseh
oddanih
ocen.
Iskanje
po
programski
kodi
Celoten
sistem
je
optimiziran
za
iskanje.
Sistem
pozna
dva
tipa
iskanja
‐
iskanje
po
vsebini
s
pomočjo
vgrajenega
iskalnika
in
iskanje
s
pomočjo
spletnih
iskalnikov.
Za
iskanje
po
vsebini
sta
vgrajena
dva
iskalnika
enostaven,
ki
je
prikazan
v
zgornjem
delu
strani
in
napeden
–
do
katerega
pridemo,
če
obiščemo
napredno
iskanje.
Pri
iskanju
je
vgrajen
tudi
mehanizem,
ki
išče
po
programski
kodi
med
tem,
ko
vpisujemo
kaj
iščemo.
Tako
lahko
najdemo
zadetke
še
preden
dokonca
zapišemo
kaj
iščemo.
Iskanje
je
mogoče
po
vsej
kodi,
pri
naprednem
iskanju
pa
lahko
dodamo
še
časovni
doseg,
programski
jezik
in
avtorja.
Iskanje
s
pomočjo
spletnih
iskalnikov
je
zelo
pomembno.
Danes
večina
uporabnikov
spleta
uporablja
spletne
iskalnike
kot
začetno
točko
svojega
sprehoda
po
spletu.
Večina
uporabnikov
tako
recimo
v
spletnem
iskalniku
napiše
kaj
išče
–
ta
pa
jih
potem
popelje
na
ustrezno
vsebino.
Mojakoda
je
pripravljena
in
optimizirana
za
iskanje
s
pomočjo
spletnih
iskalnikov.
Vpisana
je
v
vse
večje
spletne
iskalnike
in
periodično
tudi
kliče
spletne
pajke,
da
poberejo
in
indeksirajo
vsebine.
Sama
vsebina
na
sistemu
mojakoda
je
tako
indeksirana
dvakrat
dnevno
iz
dveh
storitev.
Prva
storitev,
ki
poindeksira
vso
programsko
kodo
je
na
strežniku
nameščeni
sistem
indeksiranja,
ki
se
uporablja
tudi
pri
iskanju
po
strani.
Drugi
mehanizem
pa
je
indeksiranje
s
pomočjo
spletnih
pajkov,
ki
se
kličejo
ob
določeni
uri.
Čas
indeksiranja
je
prilagojen
prometu
–
indeksiranje
se
izvede
po
koncu
»delovnega
dne«
in
v
»času
kosila«.
(Tara,
C.,
2008)
API
za
iskanje
in
opravljanje
s
kodo
Sistem
mojakoda.si
ima
vgrajen
tudi
API6.
API
omogoča,
da
različni
programerji
lahko
napišejo
svoj
odjemalec
kode
iz
sistema
mojakoda.si
in
tako
dobijo
dostop
do
kode,
ki
je
vidna
na
strani.
Z
uporabo
API‐ja
lahko
dodajajo
kodo,
urejajo
kodo
in
iščejo
po
kodi.
API
podpira
JSON
protokol7,
ki
je
zelo
preprost
za
implementacijo
in
je
zelo
razširjen
na
področju
spletnih
API‐jev.
4
Angleško:
Tag.
Označba
je
nehierarhična
ključna
beseda
ali
besedna
zveza,
ki
jo
dodelimo
informaciji.
(Informaciji
kot
je
spletna
povezava,
slika
ali
datoteka)
(Wiki,
2009)
5
Angleško:
Tag
cloud.
Oblak
označb
ali
oblak
besed
je
obteženi
seznam,
kjer
ima
vsaka
beseda
ali
označba
glede
na
število
prisotnosti
ustrezno
preračunano
velikost.
(Wiki,
2009)
6
Angleško:
API
‐
Application
Programming
Interface.
Zbirka
rutin,
podatkovnih
struktur,
razredov,
in
protokolov,
ki
jih
prinašajo
knjižnice
z
namenom
lažjega
grajenja
aplikacij.
(Wiki,
2009)
7
Angleško:
JavaScript
Object
Notation
–
Lahek
izmenjevalni
podatkovno
izmejevalni
format,
ki
ga
enostavno
berejo
in
pišejo
ljudje
in
naprave.
Je
zasnovan
po
standardu
ECMA‐262
3rd
Edition
–
December
1999
Oto
Brglez
6
/
9
mojakoda.si
–
referat
Oglaševanje
in
delovanje
Za
delovanje
sistema
sta
poleg
vse
tehnologije
najpomembnejša
dva
faktorja.
Uporabniki,
ki
se
vračajo
na
spletno
stran
in
oglasi
prikazani
na
vrhu
spletne
strani.
V
primeru,
da
na
stran
ne
pride
dovolj
uporabnikov
ni
sveže
kode
in
če
ni
sveže
kode,
stran
ne
privablja
novih
in
starih
uporabnikov.
Celotna
uporaba
sistema
je
brezplačna.
Za
pokrivanje
stroškov
delovanja
so
na
vrhu
strani
bojavljeni
oglasi,
ki
ob
kliku
obiskovalca
preko
posredniške
storitve
prinesejo
skrbniku
sistema
določeno
prej‐dogovorjeno
vrednost.
Na
spletni
strani
mojakoda.si
je
nameščen
oglaševalni
sistem
Httpool,
ki
zagotavlja
kontekstno
oglaševanje.
Kontekstno
oglaševanje
je
oblika
spletnega
oglaševanja
za
katero
je
značilno,
da
se
oglasi
prilagajajo
vsebini
spletnega
mesta.
V
primerjavi
s
klasičnim
pasičnim
oglaševanjem
je
kontekstno
oglaševanje
veliko
učinkovitejše,
saj
je
vsebina
oglasov
prilagojena
vsebini
spletnega
mesta.
Ker
se
načeloma
prikazujejo
pravi
oglasi
pravemu
ciljnemu
občinstvu,
je
posledično
tudi
odzivnost
na
kontekstne
oglase
višja.
Spletnim
uporabnikom
so
namreč
všeč
nevsiljivi
oglasi,
ki
so
prilagojeni
njihovim
potrebam.
Oglasi,
ki
so
povezani
z
vsebino
spletne
strani,
so
zelo
zanimivi
tudi
za
založnike,
saj
jim
zaradi
večje
učinkovitosti,
prinašajo
tudi
višje
oglaševalske
prihodke.
Obiskovalci
spletne
strani
bodo
namreč
raje
klikali
na
oglase,
ki
so
v
testni
povezavi
s
spletno
stranjo,
kjer
se
nahajajo.
(Radoš
Skrt.
2008)
Tehnologije
in
tehnična
izvedba
sistema
Sistem
mojakoda.si
je
spletna
storitev
napisana
v
programskem
jeziku
Python8.
Programski
jezik
Python
uporablja
okolje
za
hitri
razvoj
Django9,
podatkovno
bazo
MySQL10,
spletni
strežnik
Apache11.
Iskalni
sistem
Lucene12
oziroma
Sphinx.
Za
začasno
shranjevanje
sistem
memcached.
Vse
teče
na
operacijskem
sistemu
GNU/Linux,
na
distribuciji
Ubuntu13.
(Brglez,
O.,
Koda)
Pri
gradnji
sistema
so
bila
uporabljena
isključno
odprtokodna
razvojna
orodja.
Orodja
so
bila
uporabljena
zaradi
tega,
ker
je
celotna
filozofija
sisteam
mojakoda.si,
da
je
potrebno
znanje
in
tehnologijo
deliti
–
filozofijz,
ki
je
temelj
vse
odprtekode.
Poleg
tega
je
delo
z
odprtokodnimi
orodji
za
projekte
kot
je
mojakoda,
projekte,
kjer
je
malo
oziroma
nič
finančnih
sredstev
veliko
bolj
poceni.
Tako
je
so
največji
stroški
sistema
oglaševanje,
razvoj
in
strojna
oprema.
8
Python
je
tolmačeni
programski
jezik,
ki
ga
je
ustvaril
Guido
van
Rossum
leta
1990.
Python
ima
popolnoma
dinamične
podatkovne
tipe,
samodejno
upravlja
s
pomnilnikom
in
podpira
funkcijonalno,
imperativno
oziroma
proceduralno,
strukturirano
in
objektno
orientirano
računalniško
programsko
paradigmo.
(Wiki,
2009)
9
Django
je
v
Pythonu
napisan
sistem
hiter
razvoj
spletnih
aplikacij
(Django,
2009)
10
MySQL
je
sistem
za
upravljanje
s
podatkovnimi
bazami.
MySQL
je
odprtokodna
implementacija
relacijske
podatkovne
baze,
ki
za
delo
s
podatki
uporablja
jezik
SQL.
(Wiki,
2009)
11
Spletni
strežnik
Apache,
velikokrat
samo
Apache,
je
spletni
strežnik,
ki
igra
ključno
vlogo
pri
širjenju
spleta.
Bil
je
prva
alternativa
Netscapeovemu
spletnemu
strežniku,
trenutno
znanemu
kot
spletni
strežnik
Sun
Java
System.
Od
oktobra
2007
pa
je
bilo
na
Apachijevem
strežniku
postavljenih
približno
48%
vseh
spletnih
strani.
(Wiki,
2009)
12
Lucene
je
polno
tekstnovi,
visoko‐zmogljivostni
tekstovni
iskalni
pogon,
katerega
jedro
je
napisano
v
Javi.
Razširljivost
in
hitrost,
ga
naredita
primernega
za
katerokoli
iskalno
implementacijo.
(Lucene,
2009)
13
Ubuntu
je
dovršen
operacijski
sistem,
ki
temelji
na
GNU/Linuxu
in
ki
je
prosto
dostopen
tako
širši
skupnosti
kot
profesionalnim
uporabnikom.
(Ubuntu.si,
2009)
Oto
Brglez
7
/
9
mojakoda.si
–
referat
Zaključek
Sistem
mojakoda.si
je
namenjen
vsem,
ki
želijo
pri
shranjevati
svojo
kodo.
Želja
avtorja
sistema
je,
da
bi
sistem
postal
širše
dostopen
vsem
in
da
bi
postal
vsakodnevno
orodje
pri
delu
programerjev.
S
to
mislijo
se
bo
spletna
stran
in
celoten
sistem
napajal
dokler
bodo
ljudje
orodje
potrebovali
in
dokler
bo
dosti
ljudi,
ki
bodo
prispevali
kodo.
Želja
je,
da
bi
sistem
postal
orodje
tako
za
napredne
razvijalce
kot
začetnike.
Hkrati
pa
prostor,
kjer
lahko
pustiš
delček
svojega
dela
in
ga
nesebično
deliš
z
množicami.
Oto
Brglez,
Maj
2009
Slika:
4
Logotip
mojakoda.si
Oto
Brglez
8
/
9
mojakoda.si
–
referat
Viri
RIS
(24.03.2009).
V
letu
2007...
Prevzeto
20.5.2009
is
RIS:
http://www.ris.org/index.php?fl=2&lact=1&bid=10850&parent=22&cat=860&p1=276&p2=285&p 3=1354&p4=1488&id=1488
Žumer,
V.
(2003).
Uvod
v
programiranje
in
programski
jezik
C++.
Maribor:
Inštitut
za
računalništvo.
Wiki.
(11.01.2009).
RSS
(protokol).
Prevzeto
20.5.2009
iz
Wikipedije:
http://sl.wikipedia.org/wiki/RSS_(protokol)
Wiki.
(27.04.2009).
Izvorna
koda.
Prevzeto
20.5.2009
iz
Wikipedije:
http://sl.wikipedia.org/wiki/Izvorna_koda
Wiki.
(25.04.2009).
Programski
jezik.
Prevzeto
20.5.2009
iz
Wikipedije:
http://sl.wikipedia.org/wiki/Programski_jezik
Wiki.
(25.04.2009).
Tag
(metadata).
Prevzeto
20.5.2009
iz
Wikipedije:
http://en.wikipedia.org/wiki/Tag_(metadata)
Wiki.
(12.05.2009).
Tag
cloud.
Prevzeto
20.5.2009
iz
Wikipedije:
http://en.wikipedia.org/wiki/Tag_cloud
Tara,
C.
(2008).
Google
Hacks.
O'Reilly
&
Associates,
Inc.,
1005
Gravenstein
Hwy
N.,
Sebastopol
Radoš
Skrt,
Nasvet.com
(03.2008).
Prevzeto
20.5.2009
iz
Slovenske
mreže
za
kontekstno
oglaševanje.
http://www.nasvet.com/kontekstno_oglasevanje/
Brglez,
O.
(20.04.2009).
O
kodi.
Prevzeto
20.5.2009
iz
mojakoda.si:
http://www.mojakoda.si/okodi
Wiki.
(12.05.2009).
Tag
cloud.
Prevzeto
20.5.2009
iz
Wikipedije:
http://en.wikipedia.org/wiki/Tag_cloud
Wiki.
(13.05.2009).
Python
(programski
jezik).
Prevzeto
21.5.2009
iz
Wikipedije:
http://sl.wikipedia.org/wiki/Python_(programski_jezik)
Django
(2009).
Django.
Prevzeto
21.5.2009
iz
Dokumentacije:
http://docs.djangoproject.com/en/dev/
Wiki.
(15.05.2009).
MySQL.
Prevzeto
21.5.2009
iz
Wikipedije:
http://sl.wikipedia.org/wiki/MySQL
Wiki.
(20.02.2009).
Spletni
strežnik
Apache.
Prevzeto
21.5.2009
iz
Wikipedije:
http://sl.wikipedia.org/wiki/Spletni_stre%C5%BEnik_Apache
Lucene.
(09.03.2009).
Lucene.
Prevzeto
21.5.2009
iz
Uradne
strani:
http://lucene.apache.org/java/docs/
Ubuntu.si
(2009).
Ubuntu.si.
Prevzeto
21.5.2009
iz
Uradne
strani:
http://ubuntu.si/
Oto
Brglez
9
/
9