Escolar Documentos
Profissional Documentos
Cultura Documentos
TEMA BROJA
Šta je spam i kako se zaštititi
ASP Tecaj
U ovom osmom nastavku ovog serijala, možete èitati o
stored procedures-ima
WEB MARKETING
Ovo je nastavak èlanka o projektima u kojem æete saznati važnost
meðusobne komunikacije unutar tima
MS SQL
Treæi dio ovog serijala Vam donosi osnove sintakse TSQL-a
PHP
Na redu su sigurne sessions aplikacije
LINUX
U ovom novom serijalu, naš novi saradnik, Emir Vas upoznaje sa
Linux bibliotekama GTK-GIMP tool kit
WWW DIZAJN
Naš novi saradnik Oliver zapoèinje novi serijal o Web dizajnu
FLASH MX
Nauèite da racionalno koristite zvuk u Vašim Flash filmovima
Smješni kodovi
Za kraj kolekcija viceva sa našeg foruma
Poštovani þitatelji,
GOMILA NEPOŽELJNE
ELEKTRONSKE POŠTE
< Danijel KovaĀiþ >
S
vi ga primamo, neko manje, neko više, ali da li znamo taþno šta je? Upoznaj
dušmanina da bi ga lakše savladao ... mada sumnjam da üe vam ovaj tekst
biti u tom smislu od neke koristi ...
Odmah na poþetku da naþinimo jednu difere- marku proizvoda, pošto više nije u pitanju sa-
ncijaciju: naime SPAM i spam su dvije razliþite mo zaþinjena svinjetina. Marka sada pokriva i
stvari, i tokom ovog þlanka, postat üe vam ja- novije proizvode kao što su: SPAM Oven
snije zašto. Zbog toga je u naslovu spam napi- Roasted Turkey, SPAM Smoke Flavored, SPAM
san malim slovom, mada üemo se dotaüi i Lite i SPAM Less Sodium. Ako ste mišljenja da
SPAM-a ovdje, pošto niko nije nedodirljiv kada ovi podaci ne znaþe mnogo u globalnom položa-
su u pitanju napori novinara istraživaþa ASDF ju þinjenica, imajte na umu da je HORMEL do
Developer magazina. I ovog mjeseca sam od danas prodao preko 5 milijardi konzervi SPAM-a
uredništva dobio da istražim jednu od tajno- po cijelom svijetu!
vitijih pitanja net historije, tako da sam se dao Iduüi korak u razvoju spama ustvari þini ka-
u dalekosežnu potragu za istinom, istinom koja riku koja spaja dvije sfere, ustvari tri, ako
üe jednom za svagda osvijetliti sve što ste mi- uzmemo filmsku umijetnost kao filozofiju.
slili da pitate u vezi spama, a niste imali hra- Naime, da nije bilo Monty Python’s Flying Circus
brosti da pitate! (Leteüi Cirkus Monty Pythona), SPAM bi
SPAM je nastao kao naziv proizvoda Hormel vjerovatno ostao u domenu gastronoma.
Foods Corporation-a, i za one koje do sada nisu Ovako, ti umijetnici i legende britanskih ostrava
imale priliku, sastoji se od zaþinjene svinjetine, (ukoliko niste imali prilike, zamislite englesku
nešto a’ la mesnih narezaka balkanskih lokalnih verziju TLN-a, samo malo otkaþeniju i sa tipi-
proizvoÿaþa mesa i mesnih preraÿevina. þnim britanskim smislom za humor) su naþinili
Ustvari, proizvod je nastao 1937. kao HORMEL skeþ u kojem posjetioci restorana pokušavaju
Spiced Ham (HORMEL Zaþinjena Svinjetina), da naruþiti obrok koji ne sadrži SPAM, i pored þi-
bi za raspisanu nagradnu igru od US$100.00 njenice da svi obroci na jelovniku sadrže upravo
pobjednik predložio SPAM. Nego, za razliku od SPAM, svaka više od prethodne, dok grupa Vi-
naših sliþnih proizvoda, koje se pakuju u okru- kinga u uglu restorana poþinju pjevati neku
gle konzerve, od 1941. SPAM se pakuje u zao- pjesmu, koja se sastoji ukratko od teksta:
bljenu kockastu konzervu, tako da je i u pako- ”SPAM, SPAM, SPAM, SPAM, SPAM, SPAM ...”
vanju pomalo razliþita od konkurenata na trži- Vjerujte mi kada kažem da moje sposobnosti u
štu. U svakom sluþaju, SPAM u meÿuvremenu prozi ne þine na þast spomenutom skeþu, i da
prerasta iz naziva proizvoda u pravu pravcatu je dotiþna klasika kada je Monty Python u pita-
nju, u ravni sa onim o mrtvom papagaju u pro- veüem broju primaoca, korisnicima MIT CTSS
davnici mezimaca, recimo. sistema, ali pošto u datom primjeru ne govori-
Scena treca: 1985., Multi-User Dungeons mo o netu ili Arpanetu kao preteþi internetu, ne
(MUD) i Multi-User Shared Hallucinations govorimo o stvarnom spamu. Godina 1971.
(MUSH) scena, on-line, real-time, interaktivno Preko hiljadu korisnika CTSS sitema koristi dile-
tekstualno okruženje. (Za one koji nisu imali up vezu sa MIT kampusa, kao i sa drugih
þast, zamsilite IRC kanale, i pokušajte zamisliti lokacija, uglavnom obrazovnih. Koristili su mail
da se tu odvija igra, znam da je potrebna veüa u razmijeni informacije i tema, baš kao i danas
koliþina mašte, pošto ste zaraženi grafikom e-mail. U atmosferi anti ratnih protesta koje
modernih on-line dostignuüa, ali vjerujte mi na tada potresaju SAD, jedan korisnik šalje poruku
rijeþ, onda je to bilo jako popularno). svima na sistemu koji je poþinjao sljedeüom
Sljedi dio sjeüanja Gsp. Nathan J. Mehl, reþenicom: ‘THERE IS NO WAY TO PEACE.
newsadmin-a za BBN Planet, koji pripovjeda PEACE IS THE WAY.” Kada je naznaþeno kako
nekako najpouzdaniju verziju dogaÿaja: je takvo ponašanje nepoželjno i neprihvatljivo,
“Moj prijatelj, koji üe ostati neimenovan, u dotiþni odgovara:’Ali ovo je bitno’.
svojim mlaÿim danima ,negdje oko 1985. Prvi pravi spam e-mail poslat je 1. maja ´78.
naletio je na orginalni Pern MUSH tokom od strane prodajnog osoblja Digital Equipment
njihovog Najsvetijeg Dogaÿaja – Izleganja. Corp. reklamirajuüi demonstraciju kompjute-
Pošto je pokušao razumno razgovarati sa dva – rske opreme. To je bio pokušaj da se isti e-mail
tri denizena, brzo je došao do zakljuþka da su pošalje svim Arpanet korisnicima na zapadnoj
svi obsesivni-kompulsivni idioti, bez života i obali SAD-a. Imajte na umu da je Arpanet tada
lliterarnog ukusa (vjerovatno istinito). Pa je, bio vojni projekt ameriþke vojste, i komercija-
pošto su se ‘jaja’ poþela ’izlegati’, napisao lna upotreba nije bila dopuštena. Tada još nije
makro koji je ispisivao liniju teksta: SPAM postojalo spam filteri e-mail sistema, pošto
SPAM SPAM SPAM SPAM SPAM SPAM SPAM spam još nije faktiþki ni postojao.
SPAM SPAM SPAM SPAM SPAM SPAM ... i pošao Pomenuta poruka je interesantna iz više
da je pokreüe svakih nekoliko sekundi, dok ga aspekata, i ovdje üemo spomenuti neke.
jedan od þarobnjaka nije napokon izbacio. ... i Poslata je sa SNDMSG, koja je imala ogra-
to bi vjerovatno bilo zadnje što bi þuli ili vidjeli niþeno polje za To i CC. Jadnik/ca kojem je za-
o tome, osim što se taj dogaÿaj toliko urezao u palo da tipka poruku, takoÿe je zapalo da tipka
sjeüanje PernMUSH-era, i zauvijek potom ostala i adrese, i oþigledno je da ta osoba nije bila
je legenda o “onom šupku koji nas je upoznata sa funkcijama SNDMSG-a.
spamovao”. Svako pomalo, ova priþa dospije do Tako je data osoba poþela da ukucava adre-
mog prijatelja, koji pokušava da održi ozbiljnu se u polje Subject, koje su potom pretekle u To
facu ...” header, koje su pretekle u CC header, i napo-
Sa MUD/MUSH scene, termin spam se kon u samo tijelo poruke. Potom je sljedila sa-
poþinje koristiti za pojavu Excessive Multi- ma poruka.
Posting (EMP - Eksesivno Multi-Postovanje) na Zaþuÿuüe, SpamAssassin prepoznaje datu
Usnet grupama. Usnet News Grupe su forumi poruku kao spam, djelimiþno zbog velikih slova,
gdje ‘autori’ mogu postavljati ‘þlanke’ koji drugi ali i zato što su headeri iz 1978 nevažeüi danas.
korisnici þitaju i diskutuju. Slabo ono što se Pošiljalac poruke je bio izvjesni Gary Thuerk,
postavi može spadati pod kategorijom ‘novosti’ agresivan uposlenik DEC-a, koji je mislio sa üe
(iliti news), ali se orginalna terminologija koristi Arpanet korisnici cijeniti þinjenicu da je DEC
i do današnjeg dana. U normalnim uslovima, integrisao Arpanet protokol podršku direktno u
korisnik bi postavio svoju poruku na jednu ili novu liniju DEC-20 i TOPS-20 OS
manji broj relevantnih newsgroupa, postavlja- SNDMSG je mogao primiti do 320 adresa.
juüi pitanje ili neko mišljenje. Koristeci software Ostatak se našlo u samom tijelu poruke. Kada
za automatizaciju procesa postavljanja poruka, su pronašli da poruka nije stigla svima kojim su
postalo je moguüe postaviti istu poruku na hi- namijenuli, poruku su ponovo poslali ostalim.
ljade newsgrupa, osiguravajuüi na taj naþin Po rijeþima Thuerka, nisu bili svijesni ‘address
þitalaštvo od stotine hiljada, þak i milione. file’ funkcije u mail programu koji bi omoguüio
Iduüi korak veü zalazi u vode koje su nama mailing listu.
nadasve dobro poznate. Spam kao nepoželjan U svakom sluþaju, pretpostavljao je da üe na
e-mail. osnovu date poruke primiti i negativnih reakci-
Preteþa spama, koji tada još nije imao ni ja, pa je o tome obavijaestio i svoje nadreÿene
ime, dolazi u vidu elektronske poruke poslate u DEC, mada nije oþekivao da to ispadne neu-
godno i oštro. O kako je samo bio u zabludi! bili bez pardona za svoje dijelo, i þak šta više,
Defense Communications Agency (DCA) koji je uživali kratkotrajnu slavu u svijetlu svojih
upravljao Arpanetom, nazvao je Thuerkovog ‘dostignuüa’.
šefa, bivšeg oficira avijacije, da registruje oštru Potom, naroþito opaki pojedinci su prokontali
pritužbu. Jedan korisnik sa fakulteta u Utah se da je moguüe upotrjebiti programe za masovno
žalio da mu je spam oborio kompjuterski si- slanje poruka, koje je bilo veü decenijama u
stem. Thuerk tvrdi kako su samo tri kopije po- upotrebi pri mailing listama, za slanje nepože-
ruke stigle na dati sistem, pa zakljuþuje da je ljnog e-maila velikom broju primalaca koji to ne
nesretna sluþajnost da mu je mailbox disketa žele biti. Termin je ubrzo postao popularan na-
bila skoro puna kada su poruke stigle. þin opisivanja te neželjene pošte, i zadržao se
Thuerik i dalje prodaje kompjuterske siste- do današnjeg dana.
me, mada mu je karijera spamera bila kratkog Interesantna je þinjenica u današnjem vaktu,
vijeka. Negativna reakcija na taj spam je osi- kada kompanije zubima i noktima i advokatima
guralo da problem ne pomoli svoju prljavu gla- pokušavaju saþuvati etikete od propasta i
vu dugi niz godina potom. blaüenja, da su HORMEL Foods, u svijetlu hala-
Popularizacija termina spam dolazi u aprilu buke oko spam-a, odluþili da se ne protive kori-
1994. Tada, naime, pravna firma iz Phenixa, štenju termina pri opisivanju nepoželjne e-
Canter & Siegel, reklamiraju svoje beskorisne pošte. Pitanje je koliko bi im uspijelo protivlje-
servise povodom dolazeüe ‘Green Card Lottery’ nje, kao i koliko bi ih to koštalo, pošto je ‘spam’
postavljajuüi poruke na nekoliko hiljada new- jedna od onih termina neta koja je pustila du-
sgrupa, i tim po prvi put automatizirano šalju gaþak korijen meÿu korisnicima. Jedina kvali-
ogroma broj komercijalnih poruka – spama! fikacija koju žele uspostaviti je da se nepože-
Poruku su postavljali nekoliko puta, ali 12. ljna e-pošta piše kao ‘spam’, dok se eksklu-
aprila, uznajmili su usluge programera plaüe- zivno za naziv njihovog proizvoda koristi
nika, da napiše jednostavnu skriptu koja üe ‘SPAM’. U svakom sluþaju po mom mišljenju
postaviti datu poruku na svaku od newsgrupa velikodušno, i vrlo lako ostvarljivo.
USENET-a. Pojedini su termin ‘spam’ koristili i Eto, sada znate nešto što do prije 15 minuta
za individualne nepoželjne poruke poslate mno- niste. Skupite raju, i poþnite prosipati podatke i
štvo puta, mada je opüenito korišteno za maso- zapanjite ih svojim znanjem na temu. Još kada
vno plavljenje primalaca jednom te istom poru- završite i ostale þlanke o spamu u ovom broju,
kom. Incident je populizitao termin spam, koja ima da postanete pravi struþnjak. Samo zapa-
je do tada bila eksluzivno u domenu MUD mtite, ovo znanje smijete koristiti samo u borbi
/MUSH korisnika. Spam se pojavio u dnevnoj na strani dobra, a protiv mraþnih zli sila spa-
štampi povodom ovog incidenta, i þinenica koja mera. I kao što bi rekli u HORMEL-u: “Use the
je umnogome razljutila korisnike neta je da su fork, Luke!”
Kako se zaštititi?
Š
ta je spam, i odakle naziv, sve to možete proþitatu u prethodnom þlanku koji
prati ovomjeseþnu temu broja. U ovom prilogu pokušat üu razraditi neke
naþine zaštite, koje mogu preduzeti svi korisnici.
Mislim da na ovoj planeti nema ni par proce- tnja u svakodnevnom radu. Od 20 poruka kojih
nata ljudi, koji posjeduju eMail adresu, da nije primite 10-15 nekada i više zna biti spam, dru-
primio bar jednu spam poruku u životu. Kao gim rijeþima smeüe. Stoga zaštita od ove epide-
spam ePoštu definišemo sve neželjene poruke, mije postaje sve važnija.
kojima nas bombardiraju tzv. Spameri, želeüi da Obeüavaju nam poveüanje izvjesnih organa,
nam prodaju neke šarenu lažu i samo takve glu- nude neke pare iz Nigerije, prodaju kojekakve
posti. gluposti. U Njemaþkoj se sedmiþno pošalje oko
Spam, ukoliko ste aktivni na mreži i imate više 500 miliona spam poruka! (www.eco.de)
adresa, vremenom može postati istinska sme-
Po nekim procjenama 40-60% svih email poruka zaraÿuju i provideri, tako da nekima od njih po-
koje se šalju su neželjene spam poruke. tpuno suzbijanje spama ne donosi ništa.
Poznata “kraljica spama” Laura Betterly Sam svoj majstor:
otvoreno kaže kako dobija novce za povratne
poruke. Po njenoj izjavi na 10 miliona spam po- Pod ovim vidom zaštite podrazumijeva se
ruka dovoljno je primiti 100 narudžbi da bi se razuman odnos sa vlastitim adresama. Što to
pokrili troškovi. To je dakle samo 0,001 % konkretno znaþi? Pa poznato nam je kako
reakcija, što nije nimalo neralan broj! Njena spameri dolaze do adresa, tako zvani grabing sa
tvrtka kako sama kaže godišnje pravi 1 milion $ web stranica, kupovinom od raznih preproda-
prometa. U njemaþkoj spameri tvrde da jedna vaþa… Prvi stupanj zaštite dogaÿa se upravo
akcija sa dialerom može donijeti i do 100.000 ovdje.
eura. Pametno je koristiti nekoliko adresa, jednu koju
Procjene kažu kako ameriþka privreda godi- koristitie za korespondenciju sa poznanicima ili
šnje pretrpi gubitak od 10 milijardi $, sve pro- poslovnim partnerima npr. i jedna ili više njih,
uzrokovano spamom. Uz prodaju proizvoda i na- po moguünosti kod mekih freemail servisa koju
rudžbe, veliki novci se zaraÿuju i prodajom adre- üete koristiti za prijave koje se pojavljuju na
sa. Jedna verificirana adresa košta i do 40 eura. raznim internet stranicama. Kada se onda te
No prvo pitanje koje se postavlja je kako se freemailer adrese “zaþepe” od spama jednosta-
zaštiti? Da li postoje programi koji nude 100% vno zaboravite taj account i otvorite si novi.
zaštitu. Kako biti siguran da nam važne poruke
neüe završiti u spam filteru. Zaštita pomoüu mail programa:
Postoji nekoliko aspekta iz kojih se ovaj pro-
blem mora promatrati i to u ovisnosti o tome da Veüina email programa standardno sa sobom
li se radi o privatnom korisniku ili o tvrtkama. donosi neku vrstu zaštite protiv spam-a.
Problem kod tvrtki postaje još izraženiji, jer sva- Navedimo samo primjerice The Bat ili MS
ka nepotrebna poruka, odvlaþi djelatnika od Outlook Express. Naime unutar programa je
posla. moguüe definirati odreÿena pravila za prijem
poruka, te tako sprijeþiti prijem neželjenih
Kako se zaštititi? email-ova.
No definisati pravila za svaki pojedini spam bilo
Prvi stupanj zaštite dogaÿa se veü kod pro- bi praktiþno nemoguüe, stoga se preporuþuje
videra, dakle tvrtke koja vam daje pristup inte- sljedeüa metoda:
rnetu i/ili daje email adresu na raspolaganje. x Definišite jedan dodatni direktorij unutar
Neki provideri veü pri samom prijemu poruke Outlook-a na primjer i nazovite ga spam.
pokušavaju da identificiraju spam poruke i da ih x Zatim kreirajte pravilo koje üe sve poruke
filtriraju. Jedna metoda je da server pri prijemu koje nisu adresirane direktno na vas
poruke od hosta kojeg ne poznaje, pošalje mail preusmjeravati u direktorij SPAM. Time üete
na taj host u svrhu kontrole da li host uistinu odstraniti dosta smeüa direktno iz Ulaznog
postoji. Osim toga postoji i filtriranje na osnovu direktorija, što üe vam olakšati þitanja
kljuþnih rijeþi, no tu provideri dolaze u konfliktnu poruka uvelike. Povremeno prekontrolišite
situaciju jer se nikada nemože znati koji korisnik spam poruke u sluþaju da neka važna
što i kada želi primati. Osim toga na spamu poruka nije možda zalutala meÿu neželjene.
SPAM EATER
Proizvoÿaþ: Spamhilator
URL: http://www.spamihilator.com/
Hardware zahtijevi: nema informacija, uspje-
Proizvoÿaþ: High Mountain Software šno testirano na Pentium raþunalu na 500Mhz
URL: http://www.hms.com/spameater.asp takt frekvencije
Hardware zahtijevi: Pentium raþunalo Software zahtjevi: Win 95, 98, ME, NT, 2000,
(500Mhz I više preporuþeno), 16MB RAM ili više, XP. IE 4.0 ili više.
4-6MB na tvrdom disku Ovo je besplatan anti spam program koji podli-
Software zahtjevi: Win 95, 98, ME, NT, 2000, ježe GNU/GPL licenci, kako proizvoÿaþ kaže radi
XP. IE 4.0 ili više. sa sljedeüim email programima:
Kako sam proizvoÿaþ kaže SpamEater neradi sa Outlook 2000/XP/Express, Eudora, Pegasus Mail,
Juno, MSN ili AOL adresama, no suraÿuje sa web Phoenix Mail, Opera, Mozilla, Netscape.
Ukoliko imate nekih pitanja u vezi sa ovim þlankom kontaktirajte me putem epošte
(zk@asdfdeveloper.com) ili putem našeg foruma koji na adresi:
http://forum.bhwebmasters.org
SPAMASSASSIN NA WINDOWSU
< Mirza Muharemagiþ >
I
nteligentni spamfilteri koriste nekoliko kriterija da bi odredili da li je email
spam ili ne. Ovih kriterija ima mnogo, poþev od "neželjenih" rijeþi u emailu
do kontrole header informacija emaila. Postoje i black i white liste koje sa-
drže informacije o sumnjivim mail serverima, hash zbirevima pojedinih email i još
mnogo toga.
Dnevno se borim sa preko 150-200 spam SpamAssassin (SA) [2] odnosno maksimalno
emaila. Prije 2-3 mjeseca sam sa kolegama vi- korištenje njegovih moguünosti u kombinaciji sa
jeüao o najboljem alatu za velike koliþine spa- internim filterom. SpamAssassin kombinira sve
ma (preko 100000 dnevno) i rješenje je bilo gore spomenute metode plus mnogo drugih.
Nakon 2-3 mjeseca, SA se pokazao odliþnim i Perl za instalaciju zahtjeva oko 55 MB prostora
odluþio sam instalirati SA na Windowsu radi na disku i morate biti administrator odnosno
internih testova i analize njegovog rada. Nakon imati administratorska prava. Ako ne koristite
nekoliko dana skupljanja informacija po dese- WindowsXP može se desiti da nemate MSI
tinama stranica (vidi kraj þlanka za više info- installer [4].
rmacija), SA je uspješno instaliran i konfigu- Nakon instalacije Perla, restartajte Windows,
risan na Windowsu i od testova je postalo inte- tako da Perl bude ukljuþen u tzv. Environment
nzivno korištenje. Ovaj þlanak üe Vam pokazati varijable (My Computer -> Properties),
kako da ga instalirate i kako da konfigurišete tako da postane globalna varijabla i da ga mo-
Vaše email klijente za rad s njim. žete direktno iz MS-DOS prozora startati ko-
mandom perl (ako Vam sluþajno zatreba ili želi-
Šta je SpamAssassin? te programirati u Perlu).
Umjesto moj.pop3.server upišite ime Vašeg header informacija u Vasem email programu ili
pop3 servera. Nakon što kliknete na ovaj ako otvorite source-code emaila:
shortcut, pop3proxy üe se startati i moüi üe te Na osnovu ovih informacija (pretežno subjecta)
ga prepoznati samo u Task Manageru je moguüe napraviti filtere u Vašem email
(Ctrl+Alt+Del - proces wperl). Još bolje bi bilo programu i tako sortirati emaile. O tome može-
da ovaj shortcut ubacite u autostart tako da te više þitati u sljedeüem dijelu ovog þlanka.
se u pri svakom startu Windows-a ukljuþi. Za kraj instalacije i konfiguracije Spam
Proxy iskljuþujete klikom na file kill_proxy.pl Assassina morate znati da u ovom sluþaju SA
koji se nalazi u pop3proxy direktoriju. I za radi sa standardnim opcijama. To je za veüinu
njega možete naravno napraviti shortcut. korisnika apsolutno dovoljno, meÿutim ako u
Ali prije nego što pop3proxy može da proþita kojem sluþaju želite da promjenite konfiguraciju
email Vi morate u Vašem email klijentu promje- (nakon testiranja), koristite za to file:
niti POP3 server i umjesto moj.pop3.server user_prefs.template
morate upisati 127.0.0.1. Time üe svaki email koji se nalazi u rules direktoriju (pop3proxy
prolaziti kroz filtere SpamAssassina. direktorij). Ovaj file možete ruþno editovati ili
Veoma je praktiþno što ni pop3proxy niti koristeüi program SAConf [8].
SpamAssassin ne vidite nigdje i oni rade svoj
posao apsolutno skriveni. Ako koristite samo
jedan email account, onda je i konfiguracija Email programi
gotova. Ako koristite više pop3 email accounta,
onda ih morate ruþno upisati u file Danas ima veoma puno email klijenata
hostmap.txt koji (ako ga nema) stavite u (programa) i u ovom þlanku nema mjesta za
pop3proxy direktorij. Hostmap.txt mora ovako sve njih. Meÿutim objasniüemo Vam ukratko
izgledati: princip rada odnosno korištenja Vaših email
klijenata sa emailima koje je SpamAssassin
55555 = pop3.yyy.com:110 definisao kao spam email.
55556 = pop3.zzz.com:110 U prošlom dijelu smo instalirali SpamAssassin i
pop3proxy i sada svaki email koji dolazi u Vaš
55557 = pop3.xxx.com:110 email program üe biti ispitan od SA. SA kao što
smo rekli mijenja header uvijek i ako je spam
55555 itd. su brojevi portova s kojih pop3proxy onda mijenja i subject polje emaila (moguüe je
þita emaile. 110 je standardni pop3 port. napraviti da mijenja i tekst emaila).
Time je instalacija našeg proxy-ja i spam Na osnovu ovog subject polja je moguüe u
filtera završena. SpamAssassin prati sada preko svim email programima sortirati emaile. Najko-
pop3proxy-ja Vaše emaile i prema svojim inte- rišteniji email program Outlook Express od
rnim kriterijima odreÿuje veoma uspješno da li Microsofta na žalost nije u stanju da sortira
se radi o spamu. SA ne briše emaile veü im prema header informacijama, ali to nije naro-
samo dodaje dodatne header informacije i pro- þito tragiþno, odnosno sortiranje pomoüu subje-
mjeni Subject ako je u pitanju spam. cta je za poþetak apsolutno dovoljno. Kreiranje
Ovako izgledaju dodatne header informacije, filtera za sortiranje u Outlook Expressu možete
koje možete vidjeti samo ukljuþite prikazivanje naüi pod Tools -> Message Rules -> Mail.
...
X-Spam-Status: No, hits=-1.4 required=5.0
tests=PGP_SIGNATURE,UPPERCASE_25_50
version=2.55
X-Spam-Level:
X-Spam-Checker-Version: SpamAssassin 2.55 (1.174.2.19-2003-05-19-exp)
...
Linkovi i literatura
[1] SpamAssassin homepage: http://www.spamassassin.org
[2] pop3proxy homepage: http://mcd.perlmonk.org/pop3proxy/
[3] ActiveState, Perl: http://www.activestate.com/Products/ActivePerl/
[4] Microsoft MSI Installer download: http://downloads.ActiveState.com/
contrib/Microsoft/MSI2.0/NT/InstMsiW.exe
[5] Perl instalacija: http://www.php.co.ba/?action=columns&main_id=16
[6] pop3Proxy Download: http://mcd.perlmonk.org/pop3proxy/pop3proxy.zip
[7] SpamAssassin download: http://www.spamassassin.org/released/
Mail-SpamAssassin-2.55.zip
[8] SAConf homepage: http://www.openhandhome.com/saconf.html
[9] BHWebmasters Forum: http://forum.bhwebmasters.org
[10] Konfiguracija email klijenata za SA: http://support.real-time.com/
open-source/spamassassin/
O
vaj þlanak je namjenjen prvenstveno onima koji posjeduju svoju web
stranicu na kojoj su upisali svoju email adresu u cilju ostvarivanja kontakta
sa posjetiocima, i na taj naþin postali meta spamerima.
Kako spameri prikupljaju mail adrese? predmetom trgovine (Kratki Historijat spama
na strani 8).
Veü ste vjerovatno upoznati sa terminima Na našim prostorima, spameri na sreüu ili na
email harvesting, spam robots, spambots isl. žalost, nemaju baš pogodno tlo za dobru zara-
Svi ovi termini se odnose na prikupljanje email du, obzirom na to koliko malo ljudi u BiH kroisti
adresa. Programi koji se nazivaju spam roboti Internet, a od toga broja korisnika, veoma mali
imaju zadatak da pretražuju web u potrazi za broj njih kupuje putem interneta. Ovo je razlog
email adresama, kada ih pronaÿu upisuju ih u više da nam ˝neželjene poruke˝ budu još ma-
bazu. To prikupljanje mail adresa je toliko uzelo nje poželjne. Naravno spameri i harvesteri to
maha da su se mnogi specijalizovali samo za taj ne znaju, niti ih interesuje, njima je cilj poslati
posao, od kada su baze email adresa postale poruke na što veüi broj adresa.
Kako sprijeþiti ?
drugi naþin je da svoju email adresu predsta-
U þlancima mojih kolega ste mogli proþitati vite u grafiþkom formatu tj napravite sliku na
neke od naþina zaštite od neželjenih poruka, to kojoj piše Vaša mail adresa, ovo je djelotvorno,
je veü stadij u kojem ste postali meta spamera i jer spam roboti tragaju za adresama samo u
pokušavate da se na neki naþin zaštitite, ja üu tekstu.
pokušati da vam ukažem ne neke od metoda
spreþavanja da Vaša email adresa uopšte završi treüi naþin je da Vašu email adresu prikrijete
u bazi nekog beskrupuloznog spamera. Neke od jednim JavaScriptom kao što je ovaj:
mjera predostrožnosti ste veü imali priliku da
proþitate u prethodnim þlancima, kao što je <SCRIPT LANGUAGE="javascript">
savjet da svoju primarnu email adresu ne <!--
upisujete na web stranicama, forumima ,news var prvi = 'ma';
groups itd.., ako baš morate, onda koristite var drugi = 'il';
neku adresu sa besplatnih mail servisa (aol, var treci = 'to:';
hotmail, yahoo itd.). Meÿu Vama poštovani var adresa = 'dl';
þitaoci sigurno ima dosta onih koji posjeduju var domena = 'asdfdeveloper';
svoju web stranicu, pri þemu vjerovatno imate var ext = 'com';
na njoj svoju kontakt email adresu. Zastita te document.write('<a href="');
kontakt mail adrese od dosadnih spamera je document.write(prvi+drugi+treci);
tema ovoga þlanka. document.write(adresa);
Kad svoju web stranicu “ pustite u svijet” document.write('@');
vjerovatno želite i da omoguüite posjetiocima document.write(domena);
da vas kontaktiraju, najþešüe se ostavlja link sa document.write('.');
mail adresom ili samo mail adresa u tekstualnoj document.write(ext);
formi. Bez obzira na koji naþin ste predstavili document.write('">');
svoju mail adresu, prije ili kasnije do nje üe document.write('KONTAKT</a>');
sigurno dospjeti neki spam robot, i tad ste veü // -->
u bazi nekog dosadnog tipa i možete oþekivati </script>
da üe koliþina spama rasti iz mjeseca u mjesec,
još ako budete pokretali linkove koji Vam se Ovaj script jednostavno postavite na mjesto
nude u tim porukama ili pokrenete link za gdje zelite da se nalazi kontakt link. Rezultat
navodno brisanje sa njegove mail liste (þime izvoÿenja ovog JavaScripta je:
üete mu samo potvrditi da je Vaša adresa
aktivna) možete oþekivati sve veüi broj neže- KONTAKT
ljenih poruka. Da bi ste izbjegli ovaku situaciju
evo nekoliko trikova kako da prikrijete svoju primjeüujete da je mail adresa isjeckana i pri-
kontakt email adresu na Vašoj web stranici. družena varijablama prvi, drugi, treci, adresa,
Najjednostvniji da ne kažem i “najprimitivniji “ domena, ext a znak @ se ispisuje pomoüu
koji sam davno vidjeo je bio u tome da se upiše @ , na taj naþin se spreþava spam robot da
pogrešna (nepostojeüa) adresa, a da se u preuzme Vašu email adresu.
nastavku da obješnjenje kako poslati email. Ova metoda je mnogo elegantnija od
npr: prethodnih jer korisnik jednim klikom pokreüe
svoj mail klijent sa upisanom Vašom adresom.
"pišite mi na nospam@bhwm.org (molim Vas
zamjenite "nospam" sa "dragan" u email ýetvrti naþin je da na mjestu gdje zelite da
addresi.)" korisnik pokrene email link , postavite Flash
dugme kojem je pridružena akcija mailto:
na ovaj naþin spam robot üe preuzeti neposto- vašeime@domena.com , spam roboti nisu u
jeüu adresu nospam@bhwm.org, naravno ova- stanju da proþitaju komande pisane u Flash
kav naþin nije nimalo elegantan i mnogi (koji filmovima (bar za sada) i ovo je priliþno
nisu upuüeni u problem spama) üe se zapitati elegantno riješenje jer Flash dugme može biti i
þemu to, kad je na mnogim stranicama dovo- dekoracija Vaše stranice
ljno samo kliknuti na link?
Scripting Aplikacije
PO ŽELJI KORISNIKA
< Sead Alispahiþ >
O
nog trenutka kada napravite instancu RBScript klase, otvorili ste vrata
moguünosti da se vaša aplikacija mijenja po želji korisnika
Nije loše za dva minuta programiranja. Ukoliko hoüete raditi neke matematiþke
jednaþine, samo pazite da sve što hoüete prikazati bude string. Recimo,
print(Str(2+5)) u txtInput i kliknite cmdRun. U txtOutput üe se pojaviti 7.
http://www.aframe.com.au/
OOP ZA 10 MINUTA
< Sead Alispahiþ >
N
e, OOP nije jednostavan, daleko od toga. Ali je jednostavan koncept i leži mu
ljenost programera.
U jednom od prošlih brojeva smo pokazali pravite jednu novu soluciju. Dodajte u njega dva
kako VB.NET priþa sa ostatkom .NET jezika. Ako nova projekta, jedan neka bude Windows
ste proþitali þlanak, možda ste izvukli sliþan za- Application i neka se zove Interface, a drugi
kljuþak kao ja, a to je da se potreba za mije- neka bude Class Library i neka se zove Business.
šanjem jezika u .NET okruženju svela na mini- Sada imate novu soluciju sa dva projekta unu-
mum. Prije nekoliko godina, interface se pravio tra. Ukoliko ste pogledali prošli broj, znate da
u VB-u, business logika ili u C++, ili ako je Interface more imati referencu na Business
sistem veü postojeüi, koji treba samo malo ulje- logiku.
pšavanja za modernog korisnika, þak i COBOL-u.
Danas u vrijeme .NET to se sve stapa u jedan OOP za 10 minuta
veliki lonac. Po mom mišljenju, .NET je poprili-
þno ukinuo potrebu za korištenjem više jezika u Bio bih vrlo nefer kada bih vam rekao da je
jednom projektu. Sada, ukoliko želite praviti OOP tako jednostavan da üete nakon današnjeg
nešto u .NET okruženju, izbor jezika pada na dana biti u moguünosti da budete arhitekta.
jedino liþne preference. Neki ljudi vole C-like Daleko od toga. Ovdje üu vam pokušati pokazati
jezike, kao što su C++, ili C#, dok drugi opet kako se stvari mogu rješavati u VB.NET koristeüi
vole takozvane blok jezike, kao što je BASIC, ili objekte, ali to nikako neüe biti dovoljno da
PASCAL. kažete da ste ih savladali. Nakon što proþitate
Ah, da, sada üe ljudi koji vole da se muþe reüi ovaj þlanak, posjetite:
da C++ ima gomilu stvari koje VB nema. Možda http://most-art.de/ctutorial/oop/1100.php
je to bilo pravilno u doba prije .NET platforme. gdje üete naüi vjerovatno najdetaljniji teþaj OOP
Sada, po mom liþnom zapažanju, što vi svi tre- na teritoriji bivše Yu. Ovdje üemo vam dati kick
bate uzeti sa dozom opreza, VB.NET ima sve start, dakle osnove OOP-a.
osobine pravog programskog jezika, i u svakom U osnovi, OOP leži ljenost programera. Nama
sluþaju može biti konkurent svim jezicima, pa i je mrsko sjediti pred raþunarom i pisati kod, ka-
JAVA-i. da možemo to isto vrijeme provesti pred raþu-
Danas üemo pogledati stvari koje su progra- narom pišuüi kod :) Da bi dobili što više slobo-
meri u VB-u do danas izbjegavali. Objekat Orije- dnog vremena, koje üe provesti pred raþunarom,
ntirano Programiranje je ovdje, vrijeme nam je programeri su izumili prvo proceduralno progra-
da ga nauþimo. miranje, ali to nije bilo to. Onda su neki pametni
i lijeni ljudi skontali OOP.
SVAKI POýETAK JE TEŽAK
PEGLA ýIKO
Ili, nije. OOP je vrlo jednostavan koncept, a
ako üemo pravo, puno je jednostavniji od proce- Prvo jedan mali detur, sta je to objekt u OOP?
duralnog koncepta. No, da ne dužim više, na- Objekt je instanca klase. OK, šta je to klasa?
Klasa je skup propertija i metoda koji prave plan Ispod ova dva membera upišite sljedeüu liniju i
za objekt. Da ja krenem od poþetka? pritisnite enter:
Selektirajte Business projekt u soluciji i onda
odaberite Project menu item i tamo odaberite Public Property Ime() As String
Add New Item. U Add New Item dijalogu odabe-
rite Class. U Name polje upišite clsOsoba.vb i
kliknite OK. Sada imate novu klasu u svom VB.NET je dovoljno pametan da napravi templa-
Business projektu. te za property. Napravite propertije za oba
membera i popunite ih da izgledaju ovako:
TABELA1
TABELA 2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Ucenik As Business.clsUcenik = New Business.clsUcenik()
Ucenik.Ime = "Sead"
Ucenik.Prezime = "Alispahic"
MsgBox(Ucenik.ObjektTip)
End Sub
TABELA 3
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Ucenik As Business.clsOsoba = New Business.clsUcenik()
Dim Ucitelj As Business.clsOsoba = New Business.clsUcitelj()
Ucenik.Ime = "Sead"
Ucenik.Prezime = "Alispahic"
Ucitelj.Ime = "Pegla"
Ucitelj.Prezime = "Davic"
MsgBox(CType(Ucenik, Business.clsUcenik).ObjektTip)
MsgBox(CType(Ucitelj, Business.clsUcitelj).ObjektTip)
End Sub
Je li dosta za ovaj put? Ako mislite da vam treba više OOP-a pišite, adresu znate.
STORED PROCEDURES
< Željko Kvesiþ >
U
ovom broju ponovo üemo se pozabaviti sa bazama podataka, no ovaj put
koristit üemo stored procedures da bismo vršili upite unutar MS SQL baze
podataka. Više o samom TSQL- pisat üemo u MS SQL teþaju.
U našem serijalu veü smo pisali o radu sa ba- šu bazu i kliknite na stored procedures posta-
zama podataka, o tome kako se vrše upiti unu- vku na lijevoj strani (pogledajte sliku 1.).
tar nje. No, sve smo radili kreirajuüi direktno Slika 1.
unutar ASP skripta naše SQL upite, i onda ih,
pomoüu osobine Source jednog recordset obje-
kta, “startali”.
Danas üemo se upoznati sa stored procedures
(pohranjeno procedure, u daljem tekst SP), te
kako ih pozvati iz ASP skripti.
Pojavit üe se prozor sa slike 3. u koji üete unijeti Kako uvezati SP unutar ASP skripti?
vaš kod, MS SQL veü dodaje standardni kôd i to
sljedeüe: Evo i dijela koji nam je najinteresantniji, a to
je riješiti pitanje uvezivanja SP-a u ASP skript.
CREATE PROCEDURE [OWNER].[PROCEDURE NAME] AS Nauþili smo veü da nam je za upite unutar baza
podataka potreban recordset, identiþno je i uko-
Slika 3:
liko se koristimo sa pohranjenim procedurama.
Dakle prvi korak je kreiranje recordset-a.
Dalje nam je potreban pomalo zaboravljeni com-
mand objekat.
Uzet üemo kao zdravo za gotovo da smo veü kr-
eirali naš Connection objekat, evo kako üe izgle-
dati kôd:
Kôd 2:
1: 'definišemo varijable
2: Dim objCmd,objRs,UserID,Source
3: Set objCmd = Server.CreateObject
("ADODB.Command")
4: Set objRs = Server.CreateObject
("ADODB.Recordset")
5: Set objCmd.ActiveConnection = objConn
6: ' dodajmo comand objektu SP naredbu:
7: objCmd.CommandText = "_insWebUser"
8: objCmd.CommandType = adCmdStoredProc
Mi üemo kreirati jedan upit za našu newsletter 9: ‘startajmo našu proceduru:
aplikaciju kojom üemo za odreÿeni link njegov 10: objCmd.Execute ,Value
counter poveüati za 1. Dakle realizacija obiþnog
REPORTING TOOL-a koji je minimum za newsle-
tter aplikacije. Znam znam, dugujem vam pojašnjenje. Krenut
Evo kôd-a koji üemo odmah pobliže objasniti: üu sa dna procedure..pitate se što je Value.
Uvijek prakticiram pri ovakvom startu SP-ova
Kôd 1: opozvati ih sa jednim nizom. Value je dakle biz
(array) koji sadrži dva moja argumenta, kreiram
CREATE PROCEDURE _upBackClicks ga ovako:
/* ovdje definisemo varijable */
dim Value (2)
@LinkID int, Value(0)= Request("LinkID")
@Counter int
AS Value(1)= Request("Counter")
/* ovdje vršimo update */
UPDATE BackClicks Vratimo se na poþetak, definišemo standardno
SET CounterClicks = @Counter varijable, kreiramo recordset i command obje-
WHERE (BackclickID = @LinkID)
/* ovime startamo procedure ovime kte. Dodijelimo command objektu njegovu vezu
procedura uvijek završava! */ sa bazom (metoda ActiveConnection) i dodje-
GO limo istom command objektu našu pohranjenu
proceduru. To radimo u retku 7, commandText
= ImeProcedure. Moramo još reüi o kakvoj se
Dakle što smo napravili, kreirali smo proceduru naredbi radi (da je rijeþ o SP), to je redak 8 i
koja se zove _upBackClicks i koja prima dvije sada možemo startati naš SQL upit.
varijable, dakle nju üemo nalik funkciji opozvati Vidimo da se iza svega ne krije mnogo koda i da
predajuüi joj dva argumenta i to LinkID i sam opoziv nije nikakvo þudo. No ovo je jedan
Counter. naþin startanja upita pomoüu SP-ova. Druga
Nakon AS slijedi SQL upit u ovom sluþaju jedan moguünost je pomoüu parametara. To je metoda
UPDATE query. Command objekta. Jednom objektu možemo
Gore navedeni kôd teoretski možete kopirati pridružiti jedan ili više parametara. Ti parametri
unutar prozora sa slike 3. i nakon klika OK. nisu ništa drugo nego argumenti s kojima üe SP
Ukoliko niste napravili grešku, bit üe kreirana biti startan. Evo kako to radimo konkretno:
nova procedura. Ovako kreirana procedura sada
se može koristiti u vašoj ASP aplikaciji.
To bi bilo sve za ovo izdanje našeg ASP serijala. Domaüi zadatak je da malo eksperime-
ntišete sa ovim procedurama i kreirate neke osnovne upite kako biste stekli osjeüaj za rad
sa njima.
Ukoliko imate nekih pitanja, primjedbi ili savjeta, pišite mi direktno putem e-Pošte na
adresu zk@asdfdeveloper.com , ili putem našeg foruma koji üete naüi na adresi:
http://forum.bhwebmasters.org
ZNAÿAJ DVOSMJERNE
KOMUNIKACIJE
< Nataša PaviĀeviþ >
Š
to je projekat složeniji, to je više ljudi angažovano, a samim tim su i veüe
šanse da se temperamenti i karakteri sukobe. Svi angažovani imaju zajedniþki
cilj – sprovoÿenje ideje u stvarnost, ali gledaju svijet kroz svoju prizmu
Rad na projektima je grupni rad. Ulozi voÿe mnogo više ideja vezanih, ne samo za aktuelni
projekta posvetiüemo se u nekom od iduüih bro- problem i projekat, veü i za buduüe projekte.
jeva, a za ovaj put fokusiraüemo se na uþesnike Razliþite metode rada kod pojedinih þlanova
u projektu. Naravno, polazimo od pretpostavke obogaüuju nas svkodnevno novim iskustvima.
da su suradnici na projektu kompetentni u svo- Ne manje bitna je i pozitivna atmosfera koja
jim oblastima, tj da imaju odgovarajuüe obrazo- daje dodatnu energiju svim þlanovima. Sve je-
vanje, znanje i iskustvo. Moram naglasiti da se, dan þlan je podjednako važan u grupi. Teško da
u daljem tekstu, pod grupom podrazumijeva možemo snositi odgovornost za ponašanje i
organizovana grupa, tj. Tim, a ne bilo koja sku- aktivnost ostalih þlanova grupe, meÿutim sigu-
pina ljudi istih ili sliþnih interesovanja. Grupni rno snosimo odgovornost za sopstveno ponaša-
rad, kao i sve drugo, ima svoje mane i predno- nje i angažovanost. Grupa üe biti efektivna i
sti. Cilj ovoga þlanka je ukazati i na jedne i na imati pozitivan uþinak samo ako svi þlanovi u
druge, te vam proširiti vidike i pomoüi u boljem potpunosti razumiju cilj i podciljeve projekta i
razumijevanju vaših suradnika. Dakle, prvo svoju ulogu shvate podjednako savjesno. Je-
pozitivne strane. dnostavno reþeno suradnici moraju:
x biti spremni da aktivno uþestvuju u konfli- Svaki pojedinaþni þlan jeste individua, ali je i dio
ktima u kojima üe, eventualno argume- grupe. Osjeüaj pripadnosti i prihvaüenosti je od
ntovano braniti svoje stavove i pokazati neprocijenjljive vrijednosti. Uspjeh je definitivno
spremnost da situaciju sagledaju objektivno postignut kada uþesnik u razgovorima o projektu
x biti spremni da prime i daju konsktruktivnu govori u prvom licu množine (mi) umjesto u
kritiku kao i da zajedno pohvale i proslave prvom licu jednine (ja). To ”MI”, koje ustvari
uspjehe ( feedback) predstavlja naša osjeüanja, ne nastaje preko
noüi, veü je rezultat emotivnog procesa u kojem
x imati osjecaj da je njihov rad bitan
smo sagledali situaciju, ocijenili i procijenili svoje
kolege u grupi i donijeli odluku gdje svoje JA
Motivacija je motor koji nas pokreüe. Da bi
stavljamo u podreÿeni položaj onome MI i
uložili sebe i bili aktivni mora postojati volja.
priznajemo sebi – “ja sam dio ove grupe“.
Volja sama po sebi je uvijek produkt potreba
Naravno, taj proces zahtjeva odreÿeno vrijeme, i
koje želimo zadovoljiti. Poznata je stepenica
na žalost, kolege mogu najþešüe priznati da se
potreba koju je formulisao Abraham Maslow,
poznaju tek po završetku nekog projekta. Iz tog
poznati istraživaþ u oblasti motivacije:
razloga se sve þešüe odvajaju posebni resursi za
upoznavanje suradnika prije poþetka konkretnog
Priznanje, rada na projektu. Na kraju krajeva, koliko god
samostalnost se u samom poþetku investiralo na razne akti-
Samopri-
znanje vnosti koje üe omoguüiti bolje upoznavanje i
zbližavanje suradnika, sigurno je manje od tro-
škova koji se neplanirano nameüu tokom rada,
Socijalne zbog neorganizovanosti ili konflikata meÿu sura-
potrebe
dnicima na projektu. Statistike govore da su
Sigurnost,
kontrola
konflikti meÿu ljudskim resursima uzrok kod þak
Fizicke 75 odsto neuspjelih projekata.
potrebe
PRVI SUSRET
Kakvi onda motivi mogu biti produkt gore nave-
denih potreba? U vremenu i uslovima u kojim Šta se onda dešava kada se prvi put sretnemo?
živimo, kao prvi motiv nameüu se ekonomske Prvi susret je jednako emotivno težak za sve
prednosti. Ne manje važni su interesantni zadaci suradnike iz prostog razloga što se svi osjeüaju
i problemi sa kojima se svakodnevno susreüe- nesigurnim. Koliko vremena nam je potrebno da
mo, a koji nam pomažu da se intelektualno una- se ”odomaüimo” i opustimo je veoma individu-
preÿujemo. Pozitivna atmosfera i povjerenje u alno, nekome je dovoljno samo par minuta pa
radne kolege ulivaju nam sigurnost. Naravno, tu da veü stvori prvi utisak o buduüim kolegama,
su onda i priznanje, ukazano nam povjerenje, dok je drugima potrebno puno više vremena.
podrška, povjerena odgovornost, te poštovanje Tokom prvog susreta svjesni smo da smo pre-
koje dobijamo pomažu samopotvrÿivanju i sa- dmet posmatranja, isto kao što i mi posma-
mopouzdanju. Efektivnost je usko povezana sa tramo druge. Sva þula (osim naravno ukusa) su
veliþinom grupe, uostalom to nam najbolje podjednako zastupljena u donošenju suda o
pokazuje sljedeüi dijagram: jednoj osobi; slušamo intonaciju, akcenat, boju
Efektivnost glasa, visinu tona, obraüamo pažnju na mimiku,
pojavu, hod,… pri rukovanju ocjenjujemo þovje-
ka po stisku ruke i naþinu rukovanja, dok miris,
u koliko se ne radi o nekom jaþem parfemu,
doživljavamo skoro 100 posto podsvjesno (to je
ona famozna hemija meÿu ljudima o kojoj se
toliko priþa). Na osnovu pokupljenih ”signala”
pravimo asocijacije i pripisujemo našim buduüim
suradnicima izvjesne osobine, a na osnovu tih
osobina svrstavamo ih u one koji nam ”leže” i
one koji nam ”ne leže”. Kasnije, kada smo se
veü bolje upoznali, imamo mnogo više ”mate-
Veliþina grupe rijala”, pa svoj prvobitni stav kristališemo ili
nerijetko, totalno mijenjamo. ýesto se govori o
3 5 7 9 11
ulogama koje þlanovi jedne grupe zauzimaju pri COMMUNICARE - ”RADITI ZAJEDNO”
prvom susretu. Uglavnom se istražitelji iz ove
oblasti fokusiraju na model sa þetiri standardna Komunikacija u grupi bi trebalo da izgleda
tipa: Dominantni, Povuþeni, Klovnovi i Agresivni. ovako:
Naravno da se svi ne možemo svrstati u jednu
od ove þetiri grupe ali pogledajmo ipak koje su
njihove karakteristike.
Vodite raþuna da ste konkretni, ostavljanje reagovanja teško može doprinijeti rješenju
nedoreþenih misli suradnicima na slobodnu ma- konflikta.
štu niþemu ne vodi. Svi mi imamo razliþito va-
spitanje, stepen obrazovanja i vrjednovanja, ne
postoji garancija da kolege sa kojima komuni- Borba
ciramo podrazumijevaju stvari na isti naþin kao
mi. Suradnja
Kompromis
KONFLIKTI
Prilagoÿavanje
Konflikti su neminovan dio svakodnevnice, a Izbjegavanje
pogotovo su uþestali u vještaþki stvorenim gru-
pama, gdje su ljudi razliþitih temperamenata,
karaktera i vrjednovanja prinuÿeni na suradnju. Naravno, svjesni smo da ne postoji jedinstveni
Razlog za nastanak konflikta je naša nemogu- recept za rješenje konflikata, ali postoji kultura
ünost ili nespremnost da ako ne shvatimo, ba- komunikacije, postoji dobra volja i par mome-
rem prihvatimo ljude koji se razlikuju od nas. ata koje ne bismo smjeli zanemariti bez obzira
Konflikti sami po sebi i nisu opasni, opasni su na koliþinu adrenalina koja nam udara u glavu:
uþesnici u konfliktu koji nisu spremni na analizi-
ranje problema i eventualna kompromisna rješe-
nja. Kad smo veü kod analize, mogli bismo malo
x Konflikti nisu negativni, konflikti su produ-
tivni, samo ako se rješavaju pravilno.
i obratiti pažnju na razloge zbog kojih dolazi do
konflikata: x Konflikti nastaju najþešce iz razloga što
suradnici ne znaju da riješe problem a ne
zato što neüe.
¾
Ciljevi x Imajte uvijek na umu da se negativna ene-
¾
Metode u ostvarenju ciljeva gija mora rašþistiti i da svi akteri u konfliktu
¾
ýinjenice moraju biti svjesni prvenstveno svoje odgo-
ornosti.
¾
e
x Kada veü doÿe do konflikta nikada ne govo-
¾
Moü - Vlast ite u tuÿe ime, jer kako god da stvari stoje,
¾
Vrednovanja opet su svi odgovorni (þitaj krivi ili pravi)
sai za sebe.
Razliþite reakcije meÿu suradnicima naknadno x konfliktu se mora govoriti ali samo konstru-
pogoršavaju situaciju. Obrambeni mehanizmi tivno, analizirajte uzrok a ne razlog.
veoma lako preuzimaju kontrolu. Kao što se x Mišljenje sve jednog pojedinca je podje-
kaže: ˝sto ljudi – sto üudi˝, tako se jedni služe nako važno i þak nije na odmet poslušati
projekcijom pa krivicu svaljuju na druge, ili re- mišljenje neutralnih kolega.
gresijom tj, totalnim povlaþenjem, ili pak raci- x Ne donosite preuranjene zakljuþke i budite
onalizacijom pa krivicu svaljuju na vanjske fa- spremni da ponovo razmislite.
ktore; drugi filozofiraju i razraÿuju problem do x Slušajte mišljenje vaših suradnika, oni se
iznemoglosti ili se služe asocijacijama, pa novo- obraüaju vama. Ne osuÿujte veü tražite
nastalu situaciju pokušavaju uporediti sa sliþnim arguete. Na kraju krajeva, možda i þujete
problemima iz prošlosti, dok treüi problem najra- nešto pametno!
dije strpaju pod tepih i kreüu dalje kao da se
ništa i nije dogodilo. Kako god sukob ovakvih
U
ovomjeseþnom izdanju bavit üemo se sa stored procedure-ima, kako se
izraÿuju, za što su potrebne, osnove sintakse. U daljem tijeku teþaja bavit
üemo se detaljnije sa TSQL-om.
Stored procedures prevodimo bukvalno kao b) brzina i performanse, brzina baze i samim
pohranjene ili snimljene procedure. No, što je to tim aplikacije je centralna i veoma važna tema.
ustvari? Objašnjeno jezikom ”obiþnih smrtnika”, Ovdje üu samo naglasiti da je pri odreÿenim
rekli bismo da su to SQL upiti pohranjeni na operacijama skoro pa i obavezno koristiti proce-
serveru centralno, koje možemo startati preko dure, jer time dobijate na brzini. No performa-
Querry Analyser-a ili iz naših vlastitih aplikacija. nse su tema za sebe i bit üe predmet jednog od
Na prvi pogled zvuþi jednostavno, no moram vas narednih izdanja.
upozoriti na samom poþetku, izrada ovakvih pro- Dakle, razloga ima dovoljno, a ovo su samo
cedura nije nimalo trivijalan posao. Planiranje, dva koja vam veü signaliziraju da je ovo pravi
modeliranje vaše baze, radnje dakle koje dolaze put. Postoje, naravno, situacije u kojima nije
prije programiranja stored procedure-a, iznimno moguüe pratiti ovaj princip, no moja preporuka
su bitni. je, ukoliko su moguünosti tu, iüi ovim “putem”.
U današnjem izdanju našeg MS SQL teþaja
bavit üemo se praktiþnim savjetima, kako dodati Kako kreirati prvu proceduru ?
novu SP, osnove sintakse TSQL-a, te navesti pri-
mjer ovakvih procedura. Da biste dodali jednu novu proceduru, sta-
rtajte Enterprise Manager (vidi prošlu lekciju u
ZAŠTO STORED PROCEDURES? ASDFDeveloper Broj 8.), te se “probijte” do vaše
baze (slika 1.)
Prije no što preÿemo na praktiþne savjete i Slika 1:
pozabavimo se izradom pohranjenih procedura,
ukazat üu vam na neke prednosti koje korištenje
sp-ova nosi sa sobom.Navest üu samo neke:
a) modularnost aplikacije, vaša aplikacija po-
staje modularna i vi odvajate DB logiku od kori-
sniþhkog interfejsa. Ovime ne dobijate samo na
preglednosti, veü su i eventualne promjene na
vašem programu mnogo jednostavnije.
Zamislimo, recimo, da smo u tablici Subscri-
ber, dodali novo polje i sada putem ASP aplika-
cije moramo i to polje popuniti. Onda je naravno
lakše proširiti našu proceduru, nego u nekoliko
skripti naüi odgovarajuüi SQL statement i tu izvr-
šiti promjenu.
Kliknite na stored procedures, na desnoj strani daje moguünost da vršite SQL upite, veü daje i
pojavit üe se sve procedure koje su pohranjene moguünost izrade kompleksnih funkcija, sve na-
unutar te baze. Ukoliko do sada na našoj bazi ni- ravno u sprezi sa bazom podataka.
ste radili ništa vidjet üete samo sistemske pro- No dosta teorije, napravimo našu prvu stored
cedure koje MS SQL automatski dodaje pri krei- procedure. Kao prvi primjer, izradit üemo sp koji
ranju baze. Desnim dugmetom miša kliknite na üe vršiti jednostavan upit unutar naše iz News-
desnoj strani gdje su i ostale procedure, pa u letter aplikacije veü poznate tablice Subscribers.
kontekst meniju koji üe se pojaviti kliknite na Uzet üemo jednostavan primjer i to našoj SP pr-
New Storeprocedure..(slika 2.) edat üemo kao argument ID korisnika (primarni
kljþ tablice, polje SubscriberID), a kao rezultat
Slika 2: üe nam naša procedura isporuþiti sve relevantne
podatke o korisniku.
kôd 1.(_qrySubscriber)
1:CREATE PROCEDURE _qrySubscriber
2: @SubscriberID int
3:/* 07-Jul-2003 ZK <- ovo je komentar
*/
4:AS
5: SELECT * FROM Subscriber
Pojavit üe se prozor sa slike 3. koji üe veü sa- 6: WHERE (SubscriberID = @SubscriberID)
držati sljedeüi kôd : 7:GO
Dakle, gdje je ID = varijabli koju smo predali Petlje su, izmeÿu ostalog, ono što TSQL-u daje
našoj funkciji. dimenziju programskog jezika. Time su mogu-
Naredbom u 7. retku startamo našu proceduru. ünosti koje nam ova alatka nudi nesluüene.
To bi dakle bila najjednostavnija procedura, koja Unutar procedura MS SQL-a moguüe je defini-
sadrži najvažnije osnove TSQL-a i odmah u sta- rati i varijable, dakle paralelno definiranju argu-
rtu nam pokazuje koji su koraci potrebni za menata. Varijable definišemo pomoüu naredbe
izradu jedne procedure. DECLARE, konkretno to izgleda ovako:
Ovo što smo do sada vidjeli þini samo mali DECLARE @ImeVarijable int
dio onoga što nam procedure u kombinaciji sa
TSQL-om nude. Evo nekih primjera koje üu Ovo üe nam kreirati varijablu ImeVarijable
navesti: tipa integer. Tip se uvijek mora obavezno nave-
sti i može imati vrijednost nekog od tipova koje
-IF petlja, unutar pohranjenih procedura nudi MS SQL.
moguüe je koristiti se sa IF petljama, oni unutar Za ovu prvu lekciju navest üu još jednu kori-
TSQL-a imaju sljedeüu sintaksu: snu moguünost, a to je izvoÿenje i startanje dru-
gih procedura unutar jedne procedure, time do-
IF (uvjet) bijate moguünost da prije kreirane procedure sa
BEGIN odreÿenim manje ili više kompleksnim funkcija-
--sql kôd ma ponovno koristiti i time sprijeþite duplicira-
END nje. Sa pohranjenim procedurama susretati üe-
Dakle uvijek sa BEGIN i END blokom. Izmeÿu se mo se još više puta tijekom ovog našeg teþaja.
može nalaziti proizvoljan SQL kôd. Ukoliko imate namjeru ili obavezu ozbiljnije
raditi sa MS SQL-om onda üe vam znanje za rad
-WHILE petlja, analogni su IF petljama samo sa njima biti neophodan.
što je razlika u kljuþnoj rijeþi (WHILE umjesto
IF).
To bi bilo sve za ovaj broj, a u narednom broju ASDFDeveloper.MSSQL teþaja pozabavit üemo
se sa querry analyser-om, još jednom važnom i korisnom alatkom. Nadam se da üete i u
ovim toplim ljetnim mjesecima naüi vremena za naše teþajeve. Ukoliko se pri tome pojave
bilo kakva pitanja, savjeti ili pak kritike osjeüajte se slobodnim da me kontaktirate putem
ePošte: zk@asdfdeveloper.com ili putem našeg foruma koji üete naüi na adresi:
http://forum.bhwebmasters.org
PHP sessions
K
ao što smo u zadnja dva þlanka vidjeli, sessions su veoma korisna opcija u
PHP-u, meÿutim one imaju i nekoliko kritiþnih taþaka. To se istiþe i u oficije-
lnom PHP manualu [1] na sessions stranici. Zato smo si za treüi dio serijala o
PHP sessions zadali zadatak da napravimo jednu sigurnu aplikaciju za rad sa
session-ima, tako sto üemo naþin funkcionisanja sessiona promjeniti. Naravno,
teško je govoriti o apsolutno sigurnoj aplikaciji, ali povisiti sigurnost na što viši
nivo, odnosno smanjiti rizik moramo u svakom sluþaju pokušati.
Ova komanda nam nudi moguünost da defi- pri startanju sessiona jer je onda njegova
nišemo naše session funkcije, a da i dalje može- vrijednost 100%. 100 nije optimalna vrijednost
mo koristiti standardne session komande. jer optereüava sistem nepotrebno i optimalna
vrijednost (zavisno od optereüenosti servera)
Kreiranje funkcija leži izmeÿu 1 i 10 (1%-10%).
Komanda session_save_set_handler() mora Kao što smo na poþetku rekli, session poda-
imati 6 obaveznih parametara. tke üemo snimati u file-ove. Snimanje u neku
Ovi parametri definišu imena funkcija za zapo- bazu funkcioniše na isti naþin i to üe te primjetiti
þinjanje sessiona, þitanje, brisanje itd. Zato je prilikom kreiranja funkcija.
najbolje odmah na poþetku odrediti funkcije: U našoj skripti neüemo modifikovati ni
session.gc_probability ni session.gc_divisor
Parametar Funkcija jer za tim nema potrebe, odnosno to možemo
Otvoriti ss_open() prepustiti konfiguraciji php.ini file-a. Vi naravno
Zatvoriti ss_close() možete koristeüi komandu ini_set() prilagoditi i
ýitati ss_read() ove vrijednosti po potrebi.
Pisati ss_write()
Brisati ss_delete() Primjer 1:
Garbage Collector ss_garbage()
<?php
Funkcijama smo dali imena na engleskom s tim
da je na poþetku dodan sufiks ss, kao skraüeni- /****************************************\
* ss_path - relativni session.save_path
ca za session. Vi možete naravno dati svoja * ss_name - session.name
imena funkcijama. Garbage Collector je fu- * ss_time - session.gc_maxlifetime
nkcija koja obavlja þišüenje starih odnosno * ss_cook - ime za dodatni sigurni cookie
\****************************************/
isteklih sessiona, tako da se ne desi da se $_SS_DATA = array(
sessions stare pola godine i danas još uvijek 'ss_path' => 'tmp_sess',
mogu koristiti. 'ss_name' => 'sid',
'ss_time' => 1440,
'ss_cook' => 'ss_special'
Na poþetku naše session aplikacije možemo (ne );
moramo) definisati odreÿene varijable važne za
sessions. Kao prvo, naravno: ?>
session.save_path, onda
session.gc_maxlifetime ,
koji odreÿuje koliko dugo nas session važi (va- Ovdje smo u jednom array-u definisali varijable
žno za gore spomenuti garbage collector), koju su relevantne za našu skriptu. U nastavku
session.name kojim definišemo ime za session moramo kreirati funkcije. Kao što se u array-u
i session.gc_probability koji definiše vjerova- vidi, session file-ovi üe biti snimljeni u poddire-
tnoüu s kojom üe svaki session startati garbage ktorij tmp_sess. Ta je lokacija relativni path u
collector. Standardna vrijednost je 1 (1%), što odnosu na skriptu. U skripti üemo onda ispraviti
bi znaþilo da üe u prosjeku svaki stoti session tu lokaciju na apsolutni path. Na direktorij sta-
startati garbage collector. Ova varijabla ovisi od vite chmod 600. tako da samo skripta sa se-
varijable session.gc_divisor koji standardno rvera može þitati i pisati u njega.
ima vrijednost 100, i to je ustvari samo dijelioc
za izraþunavanje ovog procenta (1/100 = 1%). Sada kreiramo našu prvu funkciju, koja je
Ako stavimo session.gc_probability na 100, ujedno i najvažnija.
onda üe garbage collector biti pozvan svaki put
Primjer 2:
<?php
function ss_open()
{
global $_SS_DATA, $_SS_SESS;
if (!isset($_COOKIE[$_SS_DATA['ss_cook']]))
{
/* kreiramo jedinstveni id i stavljamo ga u cookie i u var */
$_SS_SESS['ss_id'] = md5(uniqid(''));
setcookie($_SS_DATA['ss_cook'],$_SS_SESS['ss_id'],time()+$_SS_DATA['ss_time']);
}
else
{
$_SS_SESS['ss_id'] = $_COOKIE[$_SS_DATA['ss_cook']];
}
/* Session_file */
$_SS_SESS['file'] = $_SS_DATA['ss_path'].'/ss_'.md5($_SS_SESS['ss_id']);
if (!file_exists($_SS_SESS['file']))
{
fclose(fopen($_SS_SESS['file'],'w'));
$_SS_SESS['sess_data'] = '';
}
eelse
{
$fp = fopen($_SS_SESS['file'],'r');
$_SS_SESS['sess_data'] = fread($fp,filesize($_SS_SESS['file']));
}
}
?>
Funkcija ss_open() se poziva svaki put kada stiti session podatke. Ako je cookie veü poslan,
poþnemo session komandom session_start(). onda uþitavamo id iz cookija.
Array $_SS_DATA i $_SS_SESS (u njemu se
nalaze temporarni session podaci) uþitavamo u Sada dolazi interesantniji dio. Logiþno bi na prvi
funkciju. Nakon toga vršimo prilagavanje pogled bilo da se u funkciji za þitanje sessiona
$_SS_DATA[‘ss_path’] apsolutnoj lokaciji kori- nalaze komande kao fopen() i fread() kojima
steüi komadnu getcwd(). þitamo podatke iz session file-a, meÿutim mi to
radimo u funkciji za startanje sessiona. Ovim že-
Ovo je kljuþni dio, odnosno momenat kada limo da Vam pokažemo da sami možete modi-
sakrivamo odnosno mjenjamo ime cookija. Kao fikovati rad sessiona. Vi isto ovo možete uraditi
što smo rekli, cookie u svom imenu uvijek sadrži u funkciji za þitanje podataka ss_read(). Kao
session_id(), a mi to ne želimo. Zato üemo što vidite sadržaj session file-a se uþitava u
koristiti komandu md5() u kombinaciji sa varijablu $_SS_SESS['sess_data']. U toj varijabli
rand() i uniqid() tako da dobijemo jedan 32- se ubuduüe nalaze svi naši session podaci.
znakovni id. Ovaj id upisujemo u jedan novi
cookie ($_SS_DATA['ss_cook']). To znaþi da sa- Sada dolazi na red upisivanje vrijednosti u
da posjetioc mora imati dva cookija da bi session file. Za to koristimo standardne fopen()
session bio u redu, odnosno da bi mogao kori- i fwrite() komande.
Primjer 3:
<?php
function ss_write($id,$sess_data)
{
if ($fp = fopen($GLOBALS['_SS_SESS']['file'],'w'))
{
if (fwrite($fp,$sess_data))
{
fclose($fp);
chmod($GLOBALS['_SS_SESS']['file'],0600);
return true;
}
}
return false;
}
?>
Ovdje ne globalizujemo array $_SS_DATA, jer Treüa važna funkcija je ss_garbage(). Ona ja
se ionako sve nalazi u $GLOBALS. Ovdje zadužena za brisanje starih odnosno isteklih
jednostavno kao što vidite otvaramo session file sessiona. Za to koristimo vrijednost (Primjer 1.)
koji smo definisali u funkciji ss_open() i upi- iz varijable $_SS_DATA['time']. U ovoj funkciji
sujemo u njega session podatke, stavljamo odg- pregledamo sve file-ove, i ako je vrijeme za-
ovarajuüi chmod i vraüamo true vrijednost. U dnjeg korištenja file-a bilo prije više od broja
sluþaju greške vraüamo false. sekundi definisanih u gore spomenutoj varijabli,
onda brišemo file.
Primjer 4:
<?php
function ss_garbage()
{
global $_SS_DATA;
if ($ss_dir = @opendir($_SS_DATA['ss_path']))
{
while($file = readdir($ss_dir))
{
if ($file != '.' && $file != '..')
{
$tfile = $_SS_DATA['ss_path'].'/'.$file;
if (is_file($tfile) &&
time() > (@fileatime($tfile)+$_SS_DATA['ss_time']))
{
@unlink($tfile);
}
}
}
}
return true;
}
?>
echo $_SESSION['brojac']++;
?>
Komandom session_name() postavljamo standardne session funkcije, meÿutim ona se
naše ime za session, a session_set_save_ može još dosta modifkovati. Podatke možete
handler() identificira funkcije. Kada startamo npr. koristeüi mcrypt() komande kodirati itd.
Sve u svemu želimo Vam puno zabave sa session-ima. Za sva pitanja kontaktirajte autora
emailom ili posjetite BHWebmasters forum i u svakom sluþaju pregledajte oficijelne manual
stranice na PHP.net. ýitavu skriptu možete naüi na ASDFdeveloper.com serveru [3].
Linkovi i literatura:
[1] Oficijelni PHP.net manual za sessions:
http://www.php.net/manual/en/ref.session.php
[2] Session komande na našem jeziku:
http://www.php.co.ba/?action=phpcommands&cat=6
[3] ýitav source kôd skripte
http://www.asdfdeveloper.com/~asdf_mm/asdf8/session_skripta.php
Linux biblioteke
O
vo je moj prvi tekst koji sam napiso od osnovne škole. Do sada najteža tema o
kojoj sam pisao bila je "Kako sam proveo ljetni raspust". Veoma sam je
struþno obradio u 3. osnovne i dobio dvicu. ýitajuüi ovaj tekst možete osjetiti
vrtoglavicu ili muþninu u tom sluþaju obratite se u najbližu ambulantu i tražite da
vam daju þekiü koji üete koristiti 3x1 u predjelu glave. Puno više pišem nego sto
priþam. Šalu na stranu, moje literarne sposobnosti nisu tema ovog teksta, veü
programiranje.
Mnogi programeri žale se da na Linux pla- miþnih vrsta) grafiþka okruženja pod Linux-
tformi nema dobrog GUI okruženja u kojem bi om kao što su: GNOME - (koji je usput i
se moglo raditi. Istina je malo drugaþija; jedno- napisan uz pomoü GTK), KDE, Afterstep itd.
stavno su lijeni i draže im je praviti "Drag & Ovo znaþi da üe program, koji napravite
Drop" programe, nego napisati dvije tri linije ko- koristeüi GTK, moüi raditi na bilo kojem od
da (dobro možda dvjesto tristo hi hi). Prije nego ovih grafiþkih okruženja.
što i Vi odustanete, pokušat üu vam dokazati su- x Jednostavan je.
protno. Za Linux postoje mnoge biblioteke nami- x Meni se najvise sviÿa.
jenjene pravljenju GUI-a koao sto su Xlib, Qt, Iako je sve "divno-krasno" ne oþekujte þuda,
KDE, GIMP, GTK itd. sve je ipak do Vas i do toga, kako üete napisati
Ja sam izabrao GTK - GIMP Tool Kit (jest' to Vaš program. Prije nego sto poþnemo sa pro-
je onaj GIMP) iz više razloga: gramiranjem, treba objasniti da se ovdje ipak
x Besplatan je (što kod nas i ne igra veliku radi o G R A F I C K O M interfejsu koji, sa
ulogu, jer je sav software besplatan ili je 5 estetske strane, zahtijeva malo truda. Ne dopu-
KM - ipak üe jednog dana sve doüi na svoje, stite da Vam program izgleda kao da ga je
i ono što ste do sad besplatno koristili, mo- napravio dvanaestogodišnjak koji je usput i da-
rat üete otplatiti radeüi na površinskom kopu ltonista;ako se zagledate po šalterima banaka i
rudnika uglja Kreka-Banoviüi) ne samo za pošta vidjet üete o þemu je rijeþ (ljubiþasta slova
korištenje nego i za pravljenje komercijalne na žutoj pozadini, sve to ukrašeno zelenim
aplikacije za koju Vi uzimate pare (jes' al' ikonama i crvenim dugmadima). Ako niste sigu-
aha). Niste obavezni ništa da platite tvo- rni oko izbora boja koristite samo sive nijanse, ili
rcima GTK za njihovo trud i crnþenje koje su pitajte (nije sramota) profesionalne dizajnere ili
uložili. pripadnice ljepšeg spola (ne sve), sigurno bolje
x Dolazi uz sve poznatije distribucije Linuxa znaju koja boja ide sa kojom, i ne zaboravite
(Red Hat, SuSe itd.). Ne morate ništa zlatno praviilo - NE VISE OD 4 BOJE, inaþe,
instalirati, veü je sve tu, þeka na Vas. eksplodirat üe Vam ekran.
x - Vezan je samo za X Window System, to Ja sam koristio GTK+ 1.2.6 i gcc 2.91.66, a
jest, za trenutnu verziju X11R6 koji je grafiþko okruženje je KDE 1.1.2. Sve je priliþno
osnova za skoro sva (izuzev nekih ende- staro, znaþi, na novim verzijama radi još bolje.
#include <gtk/gtk.h>
int main(int argc, char *argv[])
{
GtkWidget *prozor;
gtk_init(&argc, &argv);
prozor = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(prozor);
gtk_main();
eturn(0);
}
Kompajlirajte ga sa:
#include <gtk/gtk.h>
void izlaz(GtkWidget *widget, gpointer data);
int main(int argc, char *argv[])
{
GtkWidget *prozor;
gtk_init(&argc, &argv);
prozor = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(prozor), "ASDFDeveloper Magazin");
gtk_widget_set_usize(GTK_WIDGET(prozor), 200, 75);
gtk_widget_show(prozor);
gtk_signal_connect(GTK_OBJECT(prozor), "destroy",
GTK_SIGNAL_FUNC(izlaz), NULL);
gtk_main();
return(0);
}
void izlaz(GtkWidget *widget, gpointer data)
{
gtk_main_quit();
}
Prvo što se primijeti, jeste deklaracija nove ono što je potrebno. Umjesto "prozor" može se
funkcije - izlaz. Ovo je funkcija koja üe obraditi
staviti bilo koji widget, za sada imamo samo
destroy event, to jest gašenje pritiskom na jedan. Event je - destroy, "destroy" kao const
dugme - X na prozoru. Da bi dana funkcija char* se prosljeÿuje funkciji.
mogla bilo šta uraditi, treba je "uvezati", a to se
Makro GTK_SIGNAL_FUNC(izlaz) prosljeÿuje po-
radi sa: kazivaþ na funkciju koja obraÿuje event (ovdje
je to funkcija - izlaz). Posljednja
vrijednost koja se prosljeÿuje za sada
gtk_signal_connect(GTK_OBJECT(prozor), "destroy",
GTK_SIGNAL_FUNC(izlaz), NULL); Vas se ne tiþe, pa je ostavite NULL.
Probajte umjesto "destroy" staviti
"key_press_event" i pritisnite neku
tipku kad se prozor otvori. Možete pretpostaviti
šta üe se desiti.
Navedena funkcija služi za "povezivanje" svih
Jedna napomena; sva "povezivanja" trebaju se
moguüih signala, to jest dogaÿaja na dati
obaviti prije poziva gtk_main(), inaþe nema
widget. U ovom slucaju widget je prozor. Makro
koristi.
GTK_OBJECT(prozor) brine se da se proslijedi
J
asno nam je svima da web designerima nije baš pravo kada moraju pored svih
tih kreativnih ideja i moguünosti koje im se pružaju prilikom ostvarivanja
jednog web projekta, misliti na one koji nemaju volje za tim svim multimedi-
jalnim cirkusom. Meÿutim, ne smijemo ignorirati da se Internet primarno koristi u
informativne svrhe
znim Browserima. Takvi trikovi ustvari, tjeraju bespotrebni servisi, koje je uz malo truda mogu-
webdesignere u nove zamke jer je vjerojatno da üe zaobiüi.
üe novi Netscape navigator poznavati neke od
tagova, ali možda ne ove þudne trikove… Detalji prilikom projektiranja stranica
rješenje u raznim java scriptovima, koji se lako sadržaja, stranica i dalje ostaje u potpunosti
mogu naüi na Internetu – oni kontroliraju da li funkcionalna. U suprotnom je vjerojatno da üe
se dokument kao dio jednog frameseta pokazuje taj, za tu stranicu neophodni multimedijalni
u cjelosti i po potrebi aktiviraju navigacijski fra- sadržaj, vlasnika stranice koštati odreÿeni broj
me. Ovakvo rješenje neüe naravno funkcionirati posjetioca.
ukoliko je deaktivirana podrška za java script. Iz
tog razloga je dobro u svakom framu navesti li- Ukratko
nk cjelokupnog frameseta.
Jasno nam je svima da web designerima nije
Overkill sprijeþiti baš pravo kada moraju pored svih tih kreativnih
ideja i moguünosti koje im se pružaju prilikom
Svima su nam poznata mjesta kao sto su ga- ostvarivanja jednog web projekta, misliti na one
lerije, muzeji i slicno. Takve prostorije su jedno- koji nemaju volje za tim svim multimedijalnim
stavno opremljene, bijeli zidovi, neutralni po- cirkusom. Meÿutim, ne smijemo ignorirati da se
dovi,… s dobrim razlogom. Prostorija muzeja ne Internet primarno koristi u informativne svrhe.
treba da stoji u centru pažnje, veü umjetnosti Naravno, možemo na design stranica gledati kao
koje su izložene. Od ovakvog koncepta trebaju na polje umjetnosti, ali ipak je ljepota za oko
profitirati i Webautori. Nasuprot tome, mnogi samo sekundarna – bar kod ovog medija.
dizajneri se trude ostvarivanju cjelokupne umje- Traženje perfektog designa bi možda prvo
tnosti. Ne postavljaju jasne akcente, veü se ra- trebali staviti “ad acta” – WWW još nije do tog
zbacuju nepotrebnim i suvišnim efektima, nivoa došao. Meÿutim, ako se Internet bude s
glasnim Schockwave filmovima i nejasnim Flesh ovakvim potencijalom i dalje razvijao, nesagle-
animacijama, dosadnom MIDI muzikom, nervo- divo je kada üe biti postignut nivo na kojem üe
znim GIF sliþicama ili agresivnim PopUp prozo- jedna stranica u svim web browserima isto
rþiüima koji se ne daju pozatvarati. Sreüom, izgledati.
mnogi Browseri nude moguünost sprijeþavanja Jasno nam mora biti da nije obzirno, a ni po-
multimedijalnih sadrzaja. sebno pametno, bez razmišljanja o gubicima
uvijek nove trendove pratiti, kao što to mnogi
web designeri rade. Kada su se pojavili prvi
televizori u boji, ni jedna tv kuüa nije bez kom-
promisa prešla na emitiranje programa samo za
vlasnike TV-a u boji, veü je uvjet bio ostvari-
vanje kompatibiliteta koji je još uvijek postojeüi.
Prilikom realizacije jednog web projekta, niko ne
misli na Netscape 1.x.
Na taj problem se ne smije gledati kao na
neko ograniþenje, veü kao na izazov koji treba
pobijediti. Okvir moguüeg prilikom web designa
još daleko nije dostignut. I ako izostavimo upo-
trebu raznih trikova i plugins – još ima mnogo
Jedna od naznaka za dobar web design je,
toga za otkriti i izuþiti…
ako nakon obustavljanja svih multimedijalnih
Literatura i linkovi
[1] John Walker: Demoroniser, Correct Moronic Microsoft HTML,
http://www.fourmilab.ch/webtools/demoroniser/
[2] W3C-Savjeti za ALT-Definicije
[3] DOM-Standard W3C
[5] Aktuelni Mozilla Milestone Builds
P
ravilnom upotrebom zvuka na web stranici, možete postiüi kompletan multi-
medijski ugoÿaj kod posjetilaca, na žalost možete postiüi i sasvim suprotne
reakcije, ukoliko ne vodite raþuna o tome kako koristite zvuk i ako ne pozna-
jete sve aspekte upotrebe zvuka u Flash filmu. Zato je veoma važno da budete
upuüeni u najosnovnije elemente upotrebe zvuka u Flash filmovima, a o ukusu
neüemo raspravljati. -
Flash koristi digitalizovane zvuþne zapise tj. imamo standardne sampling rate od 22,05 ;
uvezene zvuþne fajlove. Ova þinjenica zapravo 11,025 i 5,5125 KHz.
Vam govori da za potrebe Vašeg Flash filma Ukoliko u Flash uvezete zvuk sa nekim sampling
morate imati pripremljen zvuk u digitaliziranom rate-om , koji nije standardan (npr. 9,5 KHz) on
formatu, što znaþi da üete morati koristiti neku üe ga resamlovati na 11,025 KHz, o tome
aplikaciju za editovanje zvuka ili üete (ako ne- morate voditi raþuna jer se može desiti da zvuk
mate iskustva u ovom domenu) upotrijebiti neki koji ste uvezli u Flash izgubi svoje karakteristike.
veü gotov zvuþni zapis. Suština racionalne upo- Za potrebe Flash filmova na Webu je uobiþajno
trebe zvuka u Flashu je ponavljanje i modifi- da se koriste 22,05 KHz koji daje prihvatljiv
ciranje veü upotrebljenih zvuþnih zapisa, þime kvalitet zvuka i 11,025 KHz þiji se kvalitet može
neznatno uveüavate kapacitet konaþnog filma. porediti sa govorom ili sa AM radio kvalitetom.
Postoji dosta faktora, kada je u pitanju zvuk,
koji utiþu na veliþinu Flash filma, no krenimo Bit depth
redom.
Rezolucija zvuka u bitovima (bit depht) je
Osnovni pojmovi parametar koji definise broj bitova, koji se
koriste za zapisivanje jednog uzorku zvuka. Što
Sampling rate je rezolucija veüa (veüi bit depht) to je i digi-
talizacija zvuka vjernija u odnosu na zvuk koji se
Zvuk se digitalizuje , tako što se uzorkuje digitalizuje. Poveüanjem rezolucije zvuka pove-
(sample) u istim vremenskim intervalima, što je üava se i kapacitet fajla. Prilikom reprodukcije
veüi broj uzoraka u jedinici vremena (sampling digitalizovanog zvuka, zbog velikih uþestalosti,
rate), to je i zvuk kvalitetniji, ali je i kapacitet ljudsko uho zvuþne uzorke registruje kao konti-
fajla veüi. nuirani zvuk, zato nije potrebno zvuk digitali-
Standardni sampling rate za audio CD je 44,1 zovati sa velikom rezolucijom.
KHz, uobiþajeno je da se kod nižeg sampling Zvuk se obiþno digitalizuje u 8-bit i 16-bit
rate-a ide na djeljenje ovog sa 2, 4, 8 pa tako rezoluciji, pri þemu se za 8-bit rezoluciju koristi
Pored metoda upravljanja zvukom u Flashu , koje sam u ovom þlanku naveo, moguüe je
upravljati i manipulisati zvukom i pomoüu ActionScripta, no o ovom naþinu üe biti više rijeþi
u nekom od nastavaka ovog serijala, koji üe biti usmjeren ka iskusnijim flasherima.
Za iduüi put Vam pripremam þlanak o izvoženju (Export movie) Flash filmova i njihovom
objavljivanju na Webu (Web publishing), pozabaviüu se opcijama za objavljivanje Publish
Setting, kao i nekim od Flashovih šablona za objavljivanje na webu. Do tada ugodno
Flashiranje.-
Ako imate pitanja, savjete ili kritike osjeüajte se slobodnim da me kontaktirate na adresi:
dl@asdfdeveloper.com ili putem foruma na adresi http://forum.bhwebmasters.org