Ako ste programer, i to u web vodama, jedna od (meni vrllooo dosadnih) akcija koja je obavezna u razvoju web aplikacija (sajtova) je provera kako sajt na kome radite, vaša dika i ponos, izgleda u moru raznih browsera (pregledača): IE6, IE7, IE8, FireFox, Safari, Opera, Chrome (da pomenem samo neke).
Najveća muka i nevolja je bilo upravo testiranje u svim mogućim IE verzijama – uz neverovatna dovijanja da dobijete sve verzije na računaru.
Expression Web ekipa je odlučila da SuperPrevew za IE bude besplatan dodatak koji vam omogućava do skora neverovatne stvari:
Prikaz sajta u IE6, IE7, IE8 (ako imate IE8 instaliran na mašini)
Izbor koja je od ova tri browsera baseline (primarni)
Izbor ciljne rezolucije (dole desno)
Prikaz DOM stabla
Panning mode (sinhronizovano skrolovanje u svim browserima)
Overlay (preklapanje) prikaza iz jednog i drugog browsera (slaganje do u pixel)
Overlay (preklapanje) prikaza iz browsera i učitane slike (slaganje sa dizajnom koji ste dobili)
Svi detalji o html elementima ispod, uz naznačene pozicione elemente koji se razlikuju (crveno 85 i 399 u screenshotu)
SuperPreview za Expression Web će podržavati i gomilu drugih stvari (i browsera – sve koje imate instalirane na mašini, plus neke preko web servisa) ali i ovaj besplatni dodatak za IE zlata vredi, ako ste u developer vodama. Topla preporuka.
Na kraju samo malo upozorenje: SuperPreview je u beti, pa su mogući neki problemli (ja ih nisam imao). Nevezano za probleme 🙂 i finalna verzija plugina će biti besplatna.
Za programiranje, sem želje, puno učenja i malo talenta, neophodni su i razni alati. Ti alati zavise prvenstveno od operativnog sistema, kao i ciljne aplikacije koju želite da razvijete.
Danas sve više ima smisla razvijati web aplikacije, umesto klasičnih desktop (korisničkih) aplikacija; prednosti i sa strane korisnika i sa strane programera su očigledne:
Sa strane korisnika:
za pristup aplikaciji je dovoljan browser na računaru ili čak na mobilnom telefonu
dostupnost aplikacije je praktično sa bilo kog mesta na kome postoji pristup Mreži
nema instaliranja nikakvih DLL-ova, ActiveX komponenti i ostali džidža-bidža – to praktično prelazi u održavanje aplikacije na serveru i to je zaduženje programera a ne korisnika
Istina, gornje će se platiti osiromašenim korisničkim interfejsom, ponekad slabijom funkcionalnošću, ali su sve to minorni nedostaci – činjenica je da već sada najviše vremena provodite u browseru, a to je dobar dokaz da su ovi nedostaci zaista manje bitni.
Sa stanovništva programera, razvijati web aplikacije takođe ima sve više smisla:
postavljanje aplikacije (hosting) je relativno jevtin (od 7-8$ mesečno za osnovni tj. shared hosting pa od 40$/mesečno za VPS hosting)
potencijalno mnogo veća publika, a time korisnici kao i dobit (ili novčana, ili reklama, ili popularizacija samog programera)
ispravljanje bagova i problema se daleko lakše radi – samo na jednom mestu, na samom serveru gde je i aplikacija
kontrola pristupa (ko koristi aplikaciju i da li na to ima prava) je daleko lakša
Ok, šta je sve potrebno programeru koji se odlučio za razvoj Asp.Net aplikacija na Windows platformi? Da pokušam da nabrojim:
Windows operativni sistem (preporučeno Vista ili XP Professional ali može i XP Home verzija) – originalni
.Net Framework (preporučeno 3.5 SP1, ali može i 2.0 SP1)
SQL Express baza (preporučeno SQL Express 2008 ali može i SQL Express 2005)
Sve gore, sem operativnog sistema je potpuno besplatno.
Sad, moguće je sve od ovoga skinuti odvojeno, ali zašto komplikovano kada može i jednostavnije? Tom delu “jednostavnije” je upravo namenjen Microsoft Web Platform Installer – sistem za instalaciju svega što vam je potrebno za razvoj.
Postupak je vrlo jednostavan: pobrinite se da imate barem .Net 2.0 instaliran; zatim odete na Microsoft Web Platform Installer i skinete/startujete malo programče; posle kraćeg ispitivanja, ponudiće vam razne opcije za instalaciju (značajno različite u zavisnosti da li ovo radite na XP, Windows Server 2003/2008 ili Vista operativnim sistemima):
Ako niste sigurni, izaberite ASP.NET ili Complete za instalaciju svega što se nudi (ipak, reč upozorenja: Complete je veliki download – oko 150 Mb), prihvatite nekoliko Terms & Conditions i sačekajte da se završi instalacija.
Kako procedura (ako na mašini nema ništa već instalirano) zna da potraje, preporučujem da ovo radite kada je dobra veza 🙂 a vi radite nešto drugo (instalacija može da zahteva restart ili dva, za .Net Framework 3.5 SP1 i Windows Installer 4.5):
U svakom slučaju, ovo je zaista najjednostavniji način da vaš računar pretvorite u vrlo pristojnu razvojnu stanicu i to potpuno besplatno. Ako ste Web programer na Microsoft platformi, toplo preporučujem da pogledate i ovaj pristup.
(e da, da ne zaboravim: MS WPI je u Release Candidate statusu tj. nije potpuno završen proizvod, pa stoji standardno bla-bla “krivi ste ako instalirate a nešto ne bude radilo itd, itd” 🙂 )
Tehnologija napreduje džinovskim koracima, posebno u Web područjima; direktna posledica toga je da sve više ljudi mogu da je koriste, a još direktnija je inflacija takozvanih programera iza ćoška koji će “odraditi sajt za 100€”.
Ovaj tekst nije namenjen programerima iza ćoška već web programerima ili onima koji to žele da postanu.
Nekoliko razloga su me podstakli na ovaj post:
programer sam (i tim se dičim 😉 ) i trudim se da svoj posao obavljam profesionalno i odgovorno
radim sa velikim brojem drugih programera i mislim da sam u stanju da dam generalnu ocenu kvaliteta rada na tom polju
Uža specijalnost mi je ocena upotrebljivosti i pristupačnosti sajtova (komercijalnih pre svega)
Oktobar je mesec knjige 🙂 i tada visim po knjižarsko/izdavačkim sajtovima birajući šta da kupim na Sajmu – zato stoji ono “knjižare” mada se može primeniti na većinu sajtova.
Napraviti komercijalan sajt je ozbiljan posao: u količini vremena potrebnoj da se sagledaju svi zahtevi, zatim da se to napravi, istestira i postavi live; napraviti upotrebljiv komercijalan sajt je još veći posao – postoje gomila knjiga, studija, kurseva gde sve sve krupne i sitne stvari uče.
No, čak i ako nemate para da sebi priuštite obrazovanje tog tipa, tu je Mreža, Google i na kraju krajeva, vaša zdrava pamet šta gde i kako treba postaviti. Na kraju, uvek možete platiti (vi ili naručilac posla) pravu studiju o upotrebljivosti.
Zašto ovo uopšte pišem? Najbolje da vam pokažem kroz primere (da ne bude zabune: nisam nikakav stručnjak za dizajn, sve primedbe će biti sa funkcionalne stane).
Prva strana / Home page
Naslovna / Prva / Home Page – kako god da je nazovete, ovo je NAJVAŽNIJA strana na sajtu; ako je loše urađena, ako nije pregledna, ako običnom (naglašavam: običnom) korisniku nije jasno kako da nađe ono zbog čega je došao na vaš sajt, izgubili ste jednog potencijalnog kupca.
– Centralni deo strane zauzet je velikim banerom koji obaveštava o velikom popustu na Sajmu; znači, ono što je vremenski ograničeno i vezano za vreme i mesto treba jasno staviti do znanja i to sa minimumom informacija: “60% popusta na Sajmu knjiga” – sve rečeno i definitivno dovoljno intrigantno da kliknete na baner.
– Redovni kupci: ako ste redovan kupac, i dolazite periodično na sajt, treba vas obavestiti o novim knjigama (kao potencijalnim metama za kupovinu) – odmah ispod centralnog banera
– Jasno izdvojena (crvenom bojom) korpa gore levo stavlja do znanja da je naručivanje knjiga moguće tu, odmah sa sajta; Visa / Master dole levo potvrđuje ne samo da je moguće naručivanje već i plaćanje, što je na našim sajtovima itekakva retkost.
– Čista i jasna navigacija na vrhu daje najčešće oblasti sajta koje zanimaju najveći broj kupaca (mada, primedba: da sam se ja pitao, ovde bi išao i “Kontakt” link, a ne u dnu stranice)
– Top liste (i generalno razne liste) su uvek veoma atraktivan način privlačenja pažnje (i potencijalne kupovine)
– Pretraga: sajt knjižarskog tipa bez vrlo dobre pretrage je prosto besmislen.
Iako relativno redovno kupujem Solarisova izdanja, njihova prezentacija je među najgorim prezentacijama knjižara i/ili izdavačkih preduzeća:
Prosto je neverovatno da se neko u 2008. godini sa toliko nemarnosti odnosi prema svom web prisustvu.
Ne znam gde pre da počnem:
– Obaveštenje o on-line prodavnici u vidu “šetajućeg” teksta (marquee) na potpuno nečitljivoj pozadini. Obratite pažnju da se on-line prodavnica nalazi na sasvim drugoj adresi – zar je toliki problem integrisati ova dva sajta u jedan, funkcionalniji i bolji?
– Cena, kao esencijalni deo informacije o knjizi je “iščupana” i stavljena u PDF datoteku koju morate da skinete i da imate čitač za PDF (znam da ga skoro svi imaju, ali to nije ideja). Zar je jednostavnije uraditi ažuriranje Word dokumenta, prebaciti ga u PDF, okačiti na sajt od prostog unosa cene PORED KNJIGE na samom sajtu?
– Leva strana sajta je potpuno neiskorišćena
– Nema pretrage.
Pretraga
(Znam da svi znate 🙂 ali čisto da pomenem. Ako želite da nađete nešto po određenom sajtu, a na sajtu nema pretrage, uvek možete da pozovete Google u pomoć; unesite termin, a zatim site:ime_sajta iza termina:
Posećenost bloga site:vesic.org
Google će ograničiti svoju pretragu samo na taj sajt. Tačno je da pretraga ne mora da bude potpuna (ako Google retko obilazi sajt pa je u međuvremenu dodata neka nova strana / promenjena stara) ali s obzirom da sajt nema pretragu, bolje išta nego ništa 🙂 )
Pretraga je danas osnov nalaženja informacija; pri tome, naravno Pretraga = Google. Da bi Google našao određeni sajt, nekoliko stvari treba da se dese:
Naravno, sadržaj treba da je lako pretraživ (čitaj: što više teksta, što manje slika / Flash objekata)
Naravno, potrebno je i vreme (nekada i do mesec – dva) da se sajt nađe u Google indeksu; u svakom slučaju, to vreme je van vaše kontrole.
No, pretpostavimo da je korisnik nekako došao do vašeg sajta; sada imate dve mogućnosti:
Lokalna pretraga
Svaki komercijalni sajt mora da ima efikasnu i jednostavnu pretragu – mislim da ovo ne treba dalje objašnjavati.
Sama realizacija pretrage (sa programerske strane) nikada nije jednostavna i ne treba potcenjivati broj mogućih problema na koji možete da naiđete. Iako većina boljih sistema za upravljanjem podataka (MySQL, Oracle, MS SQL Server) podržavaju takozvani full text search, njihova implementacija (sa posebnim osvrtom na ћирилично / latinične probleme, i naša šđčćž slova) nikada nije trivijalna.
Doduše, to vas ne sme odvratiti od izrade pretrage – sajt to mora posedovati.
Google Custom Search
Elegantan način da se gore navedeni problemi zaobiđu je Google Custom Search – mogućnost da sav taj problematični posao prebacite na Google.
Ideja je više nego jednostavna – registrujete GCS, integrišete ga u sajt (što se svodi na ubacivanje dve ili tri JavaScript datoteke uz minimalne kozmetičke promene) i zaboravite – Google je ionako vrlo specijalizovan za pretrage 🙂
Kvaka u ovom rešenju je ono što sam pomenuo gore – ako Google ne zna da je došlo do promene sadržaja, ili retko obilazi vaš sajt (jer u početku ima malo linkova koji pokazuju na njega) GCS neće biti baš precizan. Da li je ovo razlog protiv GCS – to morate vi ili naručilac posla da odlučite. Iskustvo je pokazalo da posle 3 – 4 meseca (što je inače period kada ispravljate greške, stavljate novu verziju sajta itd) GCS sasvim lepo radi posao (naravno, koristite Sitemaps, uz propisan ping Google-tu svaki put kada se sadržaj promeni).
Interfejs
Jednom isprogramirana, pretraga treba da dobije i odgovarajući interfejs prema korisniku. Laguna radi to ovako:
Ovo nije dobar primer za pretragu – za običnog korisnika, dodatna podela (naslovi / pisci / sadržaj) će samo smanjiti šansu da ono što ga zanima i pronađe na sajtu; bolje je dati više rezultata pretrage, nego manje.
Nije loše da postoje dve vrste pretrage: osnovna i napredna (gde možete dati mnogo finiju granulaciju: po imenu i prezimenu, po ISBN broju, itd itd), ali osnovna pretraga treba da bude efikasna i jednostavna – baš kao Google pretraga.
Kategorizacija
Znam da kategorizacija knjiga u određene žanrove i/ili oblasti nije dovoljno niti dobro standardizovana; no, to ne treba da vas spreči da napravite listu žanrova koja će potencijalnom kupcu olakšati a ne otežati kupovinu. Kako slika govori više od ne znam koliko reči, evo primera sa tri razna sajta:
(klikni za veću sliku)
Koja kategorizacija vama leži?
Ovo ne znači da “očigledna” kategorizacija treba da bude jedna i jedina, daleko od toga – ništa vas ne sprečava da imate i druge kategorizacije na sajtu; samo smatram da “očigledna” treba da bude osnovna i pri tome lako razumljiva.
Kontakt
Iako možda izgleda kao trivijalni element sajta, ovo je jedan od najvažnijih, i iz meni nepoznatih razloga, većina ga ne uradi kako treba.
Lagunin primer:
Dosta dobar: pregledan, sa gomilom podataka. Na telefone i e-mail poruke uredno odgovaraju, što je veliki plus i postavljeno je radno vreme, što je vrlo bitno kada morate da odete i lično kupite / preuzmete robu.
No, može i bolje:
Adresa – nije jasno da li je to adresa od redakcije ili kluba čitalaca? Pogotovo što na dnu strane stoji druga adresa.
e-mail je u starom formatu; sajt postoji na .rs domenu, email adresa je i dalje na .co.yu – ovakve nedoslednosti bi trebalo ispraviti
Mapa je ok; no definitivno treba dodati i linije prevoza kao i stanice u blizini kluba; to je mali napor a veoma olakšava planiranje puta do kluba.
Sada na Solarisov primer:
Prvi problem je što postoji očigledna razlika između domena na kojoj je prezentacija (http://www.solaris-ns.com) i mail adrese ( office@solarisns.com ) – moja prva misao je bila: da nije greška? Drugi domen zaista postoji, ali na tom domenu nema nikakve prezentacije. Na stranu što na mail nisu odgovorili dva dana.
Prosto ne mogu da smislim razlog zašto bi neko unosio ovakvu vrstu zabune u komercijalni sajt – na jednom domenu prezentacija, na drugom domenu mail a na trećem domenu on-line prodavnica (više o tome malo kasnije).
Drugi problem je što nema poslovnih podataka o firmi (PIB, matični broj i slično) kao ni mape i gradskih linija.
Online kupovina
Laguna – kupovina
Da vidimo kako ide sa kupovinom; recimo da želim da kupim “RIZNICA OBMANA” od Majkla Farkvara:
unesem “riznica” u polje za pretragu i lupim enter
kliknem na nađenu knjigu
kliknem na Dodaj u korpu i bez osvežavanja strane (Ajax), knjiga je u korpi
klikom na “Završi kupovinu” dajem podatke i knjiga je kupljena:
(klikni za veću sliku)
Čisto, pregledno, jednostavno.
Čak i da nema direktne pretrage, knjigu sam mogao da nađem preko žanra ili autora.
Solaris – kupovina
Hajdemo sada na poznati negativan primer – želim da kupim prvo Solarisovu knjigu: Daglas Preston & Linkoln Čajld – “KABINET ČUDESA”, kao i da vidim koje sve još knjige imaju od ovih autora.
Odlazim na sajt, zatim Autori (obratite pažnju da ne postoji NIKAKVA kategorizacija), lociram peške ova dva autora da bih ustanovio da nikako ne mogu da lociram njihove knjige:
(klikni za veću sliku)
Ovo je čist tekst bez ijednog jedinog linka! (a podsetiću, linkovanje informacija je glavna prednost html-a u odnosu na običan tekst 😉 )
Ok, pošto ne odustajem tako lako, lociram knjigu preko prostog spiska knjiga, opet bez ikakve kategorizacije i selekcije, kliknem na detalje i:
(klikni za veću sliku)
opet završim na stranici bez ijednog linka, čak ni prema autorima!
Do sada sam već ukapirao da ovde ne mogu da kupim knjigu 😉 pa idem na sasvim novu adresu prodavnice koja se reklamira svuda po sajtu (uključujući i kontakt stranicu), koji ‘fala bogu ima search:
Hajde da zanemarimo (bezobrazan komentar u 2008-oj godini) “Nemojte da koristite naša slova” i da probamo da nađemo knjigu:
– Uneo “Daglas Preston“; hm, samo jedna knjiga i to ne ona koja mi treba 😕 – pa da, kako ne znam da su ime jednog od autora skratili.
Pokušajte malo da surfujete po kategorijama:
na stranu što je podela vrlo čudna, kakva je svrha pokazivati podkategorije koje nemaju ni jednu knjigu?
Na kraju
O oba sajta bi moglo još mnogo šta da se kaže (posebno o Solarisovom) ali sam već sada preterao sa dužinom teksta 🙂
Ne znam da li je ovo dovoljno detaljno da zasluži naziv “studije”; samo se nadam da sam uspeo da barem malo skrenem pažnju / objasnim stvari na koje bi svi koji prave sajtove (i naručioci i izvođači) definitivno morali da uzmu u obzir. Danas više nije 2000-ta i ne treba zanemariti broj ljudi spremnih da odu na vaš sajt i kupe to što nudite. Zato smatrajte novac uložen u izradu dobrog i upotrebljivog sajta investicijom (koja će vam se brzo vratiti kroz kupce koje privuče) a ne troškom 🙂
Već se odavno spremam da napišem (očigledno poduži) članak na temu Open Source protiv Commercial source ili kako bi neki koji me znaju rekli protiv “zlog Microsoft-a koji stalno promovišeš a da te ni ne plaćaju 😉 “.
…pretpostavljam da si pobornik “Prozora” a to mi sa obzirom na tvoje znanje ne ide u glavu!
Postoje dva aspekta ove priče (odnosno, ima ih mnogo više, pričaću o dva): Open Source u aplikacijama/programiranju i Open Source u operativnim sistemima.
Open Source u aplikacijama/programiranju
Za početak, pozicija: ja sam programer i od programiranja živim: od onih malih nula i jedinica koje nastaju prevođenjem elegantnih (po mom skromnom mišljenju 😉 ) linija koda, najčešće u C#.
Open Source filozofija kaže: sve što napravim, treba da stavim u javno dobro; time mi se otvara mogućnost da bez ograničenja ugrađujem već napravljene stvari (kod) koje su takođe pod Open Source licencom i time smanjim vreme od ideje do proizvoda.
No, ovakva filozofija za profesionalne programere ostavlja jako malo mesta za nešto sebično: zaradu, koja mi omogućava trivijalne stvari kao što su stan, hrana, hardver, hosting. Objašnjenja koja sam dobio od OS poklonika: “možeš da zarađuješ prodajući podršku ljudima koji koriste tvoj Open Source program” su skoro uvredljiva; ja ne želim da prodajem podršku, ja želim da dajem podršku za programe koje sam sam izradio i (nadam se) prodao korisnicima. Tu udela ima i ne mala sujeta i dobar osećaj kada znate da je neko spreman da plati novac za vaš proizvod – to je drugi deo aspekta “ja sam programer” i to vrlo važan; džaba što uživate u prvom delu “ja od praznog ekrana u editoru stvaram nešto što će koristiti” ako to nešto niko ne koristi.
To ne znači da mrzim Open Source filozofiju; ja itekako učestvujem u Open Source projektima, pogotovo u onima koje koristim: u forumima, prijavi bagova, testiranju. Smatram da je sasvim u redu da ono što je sada veoma skupo (moje slobodno vreme, jer ga tako malo ima) dam nazad zajednici koja mi je dala neke vrlo dobre Open Source proizvode.
Open Source markica na proizvodu (aplikaciji, programu) ne garantuje nikakav dodatan kvalitet; to prosto znači da je izabran jedan model za proizvodnju. Većini korisnika mogućnost da pogleda kod kako je taj proizvod napisan ne znači ništa. Sa druge strane, ima vrlo dobrih Open Source proizvoda:
Da li su ovi proizvodi bolji zato što su Open Source? Ili zato što imaju posvećenu grupu talentovanih programera / cele fondacije koji o njima brinu?
Kada nađem kvalitetnu Open Source aplikaciju za određenu potrebu, uvek ću je prvo preporučiti, pre komercijalne varijante; no, ako takve Open Source aplikacije nema (recimo, alternativa Total Commander-u, prvoj aplikaciji koju sam platio) onda nije sramota platiti za nešto što vam treba.
Podnaslov sugeriše da je jedan izbor bolji; naravno da nije 🙂 – izbor operativnog sistema (bilo open-source bilo komercijalnog) je kao izbor bilo kog alata – birate onaj koji odgovara vašim potrebama, tekućem znanju kao i problemima koje nameravate da rešite.
Komercijalan operativni sistem (Vista recimo) nije “zao” zbog toga što ga “zli” Microsoft prodaje i kontroliše; to je samo još jedan OS. Takođe, Linux nije savršen operativni sistem zato što puca od slobode i open source-ta; to je samo još jedan OS.
Ono što treba imati u vidu je da je izbor operativnog sistem kobinacija iskustvenih priča onog ko ga instalira i onog ko će ga koristiti; ako nemate nikakvo iskustvo kao korisnik, vama će svejedno biti da li je operativni sistem Windows ili Linux, sve dok imate nekog ko vam oko toga može pomoći (i u početku, a bogami i kasnije). Taj koji pomaže će opet izbor napraviti prema svom iskustvu i znanju a ne prema filozofiji (inače je nadrljao).
Moje iskustvo sa Dos (ko ga se seća 😉 ) / Windows operativnim sistemima je dugo i duboko; smatram da je Windows Vista izuzetan desktop sistem koji će pokriti potrebe najvećeg broja korisnika (e da, molio bi da eventualno pljuvanje Viste bude ako ste ga zaista koristili 2 ili više meseca, a ne instalirali na dva sata da bi mogli da ga pljujete 😉 )
Sa druge strane, Linux kao desktop operativni sistem ima da pređe još jako dug i bolan put pre nego se neko usudi da ga instalira kod svoje mame 🙂 Standardizacija je ono što očajnički treba Linux Desktopu – svaki izbor koji možete napraviti (distribucija, zatim Kde ili Gnome za upravljanje prozorima) drastično smanjuje grupu korisnika kojima je namenjena – ako ne verujete, probajte da običnom korisniku razliku između distribucija i Kde/Gnome – ako niste dobili prazan pogled, onda to nije običan korisnik 🙂
Kompjuter je mašina; napredna mašina i ima malo više programa od veš mašine 😉 ali u principu služi za određene zadatke: surfovanje Mrežom, pisanje mailova, obrada fotografije, komunikaciji sa ostalim uređajima; ako izabrani operativni sistem sve to omogućava, zar je bitno da li je plaćen 8000 dinara ili došao besplatno na DVD-u?
Kada započinjete diskusije na ovu temu, probajte da se izmestite u “stvarni” svet; svi mi koji pišemo blogove, čitamo blogove, bavimo se kompjuterima i Mrežom imamo daleko, daleko drugačiji pogled od običnog korisnika. Instalacija operativnog sistema nije težak posao … ako znate kako. Ako pak, ne znate da programirate video rekorder za snimanje u određeno vreme, šta mislite kako je instalirati operativni sistem?
I dva saveta potpunim Open Source poklonicima (naglasak na potpunim):
– ako se neko odlučio da kupi komercijalan proizvod ili operativni sistem, to znači da je procenio da mu vreme i uložen trud za alternativu više znače od iznosa novca a ne da je glup jer nije čuo da postoje Linux i Open Office
– umesto što trošite tone i tone vremena pljujući po Microsoftu i Windowsu (kada ste čuli za obrnuto?) utrošite to vreme da proširite OS filozofiju na praktičnom primeru: u instalacijama, podešavanjima i podršci tog istog OS okruženja i aplikacija (Miff i Punky, samo napred 🙂 )
Jedan od zadataka koji ide “uz posao programera / onog što zna kompjuKtOre” je servisiranje i održavanje računara prijatelja, rođaka, poznanika, rođaka od poznanika …
Iako je svaki od tih slučajeva nekako “poseban”, obično se akcija svodi na:
Proveri da li si sačuvao SVE podatke – mašta korisnika gde se sve dokument može smestiti je neverovatna 🙂
Reinstaliraj Windows*
Reinstaliraj sve ostale neophodne programe
Vrati podatke
U principu, to je jednosmeran i jednostavan posao, pogotovo ako snimite/pripremite upravljačke programe (drajvere) za sve uređaje koji su u sistemu. No, to je i zamoran i dugotrajan posao – iako tu ima malo interakcije sa računarom, ima puno čekanja (instalacija, restart, zakrpe, restart, novi programi, restart, zakrpe za nove programe, restart …) i odvlači vam pažnju sa bilo čega bitnog što uz put radite.
No, nekim ljudima se to prosto ne može odbiti 🙂 – tako da i ne odbijam, no uradim. Bitna razlika (u poslednjih nekoliko godina – valjda se omatorelo, naučio da cenim slobodno vreme, priklonio se udobnostima, šta li) je da celu akciju počinjem sa:
* “Da li imate legalan Windows?” – ne zato što radim za Microsoft (ne radim) ili zato što isterujem pravdu (ne isterujem) no se ceo gornji proces daleko lakše odradi ako je Windows legalan, ako se sve potrebne zakrpe mogu skinuti sa Windows Update sajta, ako se svi novi programi (Internet Explorer 7, Windows Media Player 11, Windows Defender) mogu bez problema instalirati na mašinu.
Tu onda ide oko pola sata objašnjavanja “kako se to proverava, a šta će mi” itd. Kada se potvrdi da od legalnog Windowsa nema ni “L” onda ide teži deo – “srediću, a vi samo kupite za 7.400 dinara Windows Home” – i karambol počinje:
P1: “Pa zašto to da platim?”
O1: “Zato što ga koristite”
P2: “Pa zar to nije došlo sa računarom?”
O2: “Proverite sa Vašim prodavcem” (99% šanse da nije, jer “mali sa ćoška koji je imao konfiguraciju jevtiniju za 2,3€ nije ni čuo za OEM Windows”)
P3: “Pa zašto je to toliko skupo?”
O3: E ovde ne može da dođe odgovor-od-jedne-linije 🙂
Ne samo kod kupovine Windows-a, vrlo često i u poslu dobijam pitanja “a zašto su programi _tako_ skupi?”; niti se prave od metala, niti se bruse, to je samo gomila nula i jedinica narezanih na CD koji se prosto kopira.
Prvi razlog ili prvi razlozi su očigledni: programeri (oni ljudi iza kompjutera) moraju da plate stanarinu, bicikl, računar na kome razvijaju program, klopu za porodicu 🙂 No, to je i posao, komplikovan koliko i bilo koji drugi, koji zahteva mnogo truda, mnogo rada, sinhronizaciju gomile ljudi raznih specijalnosti i sposobnosti.
Izgleda da lakoća korišćenja programa (onih koji se zaista lako koriste – a to su najbolji programi) nameće osećaj korisnicima da je te programe lako i napisati (“to je samo igra sa kartama – koliko je to teško napisati?”).
Da vidimo šta je sve potrebno za pisanje programa:
Ako ste firma (a veliki programi obično jesu rezultat timova a ne pojedinaca), pogodiće vas svi uobičajeni troškovi:
Ako ste softverska firma, pogodiće vas i gomila ne-tako-poznatih problema i troškova:
Debeli internet linkovi
Gomile i gomile hardvera – serveri, štampači, UPS-ovi, radne stanice, ruteri, svičevi, veliki diskovi, generatori, trake…
Planiranje šta proizvod / program treba da radi
Kreiranje prototipa, diskusija sa potencijalnim korisnicima, kreiranje još prototipa, još diskusija, kreiranje proto…
Sama proizvodnja programa i sve frustracije koje uz to idu:
Nejasne i nedovršene specifikacije
Kratki rokovi
Nedostatak novca
Često menjanje ionako nejasnih specifikacija u hodu
Programeri hoće da ubiju menadžment zbog svega gornjeg
Menadžment mrzi programere jer su “plaćene primadone sa po dva 19" TFT monitora na stolu a opet sve kasni”
Testeri mrze programere jer ovi nisu napisali dobra uputstva za testiranje
Programeri mrze testere jer su ovi našli “baš specifičnu grešku u programu a na mom računaru sve lepo radi”
Prvi korisnici mrze sve jer su dobili nešto što liči na špageti papazjaniju a ne lep i šaren program koji su oni baš eto zamislili
Programeri mrze korisnike jer njihovo super-ekstra-izuzetno-delo moraju da pišu ponovo jer zaboga ne zadovoljava neke sitne poslovne zahteve
Testeri mrze … i tako sve u krug 🙂
Ako postoji i mala nada da će program ikada ugledati svetlo dana, treba spremiti reklamu, odabrati ciljnu grupu, naći nekog normalnog ko može da proda program (programeri tu ne dolaze u obzir – ako su dobri programeri onda su loši prodavci i obrnuto)
Ako program ikada i ugleda svetlo dana, treba spremiti dokumentaciju
Tu su i pakovanje, distribucija, sistemi za naručivanje i plaćanje
Ako program ikada ugleda i prvu mušteriju, treba spremiti i podršku da pruži podršku toj mušteriji
No, to nije sve – programe je teško pisati. Iako ni pravljenje/popravljanje kola nije lako, iako podizanje garaže nije lako, u svim tim zadacima teško da ima misterije – nađete plac, označite, kupite cigle i malter i krenete sa garažom. Kod programiranja, sednete za prazan ekran i od toga treba napraviti nešto što će korisniku zaustaviti dah (= nikada se ne dešava 🙂 ) ili mu barem olakšati dnevni posao. Kompjuter sa druge strane vam u tome uopšte ne pomaže – to je jedna krajnje glupa sprava, koja radi ama baš sve što mu kažete, bilo to dobro ili ne. Tu glupu spravu morate naučiti svemu – i šta znači tekući račun, i šta znači devizni račun i šta je kursna lista, jer (rekoh li već?) ta glupa sprava ne zna ništa. Apstrakcija (i živci potrebni) da ovo izvedete na prostom (iako jako brzom) kalkulatoru nula i jednica je zametnost kojoj većina ljudi nikada se ne prepusti. Što je zadatak teži, treba više vremena i više programera da glupu spravu nauči svim trikovima potrebnim da najnoviji program isped vas izgleda lepo, koristi se jednostavno i prosto se uklopi u vašu dnevnu rutinu.
Da nije sve tako crno, nije – programiranje je krajnji čin stvaranja – iz ničega stvarate delo koje će nekom služiti; prateći kruta pravila (jezika/mašine) kucajući gomile teksta, na kraju završite sa nečim što ima sopstveni život, što će koristit 1, 5, 10, 1.000 ljudi – a to je krajnji cilj programiranja – delo za druge.
U svakom slučaju, kada se požalite na 7,400 dinara za Windows ili kada kada pomislite da nekog čudaka sa naočarima (to je uvreženo mišljenje, iako gomila nas programera ne nosi naočare – evo ja 🙂 ) maltertirate sa: “zašto zaboga to šareno na CD-u toliko košta” setite se ovog teksta … i možda ga poštedite 🙂
Jedan od uobičajenih problema u svakodnevnom radu Web programera je provera njegovih ruku dela u najzastupljenijim browserima.
To uključuje Internet Explorer 6, Internet Explorer 7, Firefox, Opera, Safari … (neke važne sam sigurno zaboravio).
Ono što je mali problem je kako testirati u IE6 jednom kada ga IE7 pregazi (a kako je to zakrpa visokog prioriteta, pregaziće ga pre ili kasnije na vašoj mašini).
Sad, postoje razno-razne magije kako izvesti koegzistenciju oba Internet Eksplorera na jednoj mašini; neke uspešnije, neke manje uspešne. Recimo: http://tredosoft.com/Multiple_IE; na žalost, ovo nije savršeno rešenje.
No, kako je i sam Microsoft prepoznao ovakvu potrebu, problem su elegantno razrešili:
Znate one situacije kada se savršeno napisan program ponaša potpuno suludo? Kada satima buljite u vaš elegantni kod koji _ne radi_ ono što ste zamislili? I kada posle sata i sata Guglanja na Mreži nađete link na Microsoft sajtu koji kaže nešto otprilike:
“A supported hotfix is now available from Microsoft. But the hotfix is intended only to correct the problem that is described in this article. Contact support …”
Grrr, od takvih reči se naježim. Tačno je da zvanjem srpskog MS-a možete da izvučete sam hotfix, ali to je posle ubeđivanja, davanja pola litra krvi i zalaganja jednog bubrega 🙂 – stvarno, to je samo jedna zakrpa zaboga 🙂
Nova inicijativa, DevDiv HotFix Pilot program (deo Microsoft Connect inicijative za brži i bolji odziv MS-a na prijavljene probleme / predloge), gleda da to promeni – najvažnije zakrpe za .Net Framework i Visual Studio 2005 su dostupne odmah i besplatno … dobro, morate da imate MSN/Live nalog (ako koristite MS Messenger, imate ga), da koristite IE za skidanje zakrpa (instaliraće se Microsoft Transfer Manager, na slici), ali je sve to pesma u odnosu na prethodne muke 🙂
Jedna od retko uspešnih Web 2.0 kompanija je upravo 37 Signals; da li je to do njihovih proizvoda (najvažniji je BaseCamp, web aplikacija za upravljanje projektima, koja je uzgred budi rečeno dobila sasvim dostojnog konkurenta: activeCollabIlije Studena), do dobro odrađenog marketinga ili nečeg trećeg – tek, oni su prvi posle velikih igrača (Google, Yahoo, eBay) koji mi padnu na pamet kada se pomene “uspešna Web 2.0 kompanija”.
Jedan od njihovih proizvoda je i Getting Real knjiga – u nedostatku inspiracije, prevod bi bio “Napravi je (aplikaciju)” ili “Just *ucking do it”. Ako smem da citiram (a što ne bih smeo, moj je blog ;-)):
Getting Real is about skipping all the stuff that represents real (charts, graphs, boxes, arrows, schematics, wireframes, etc.) and actually building the real thing.
Getting real is less. Less mass, less software, less features, less paperwork, less of everything that’s not essential (and most of what you think is essential actually isn’t).
…
Getting Real delivers better results because it forces you to deal with the actual problems you’re trying to solve instead of your ideas about those problems. It forces you to deal with reality.
Sama ideja je “radikalna” – da razvoj web aplikacije krene od samog kraja: od ekrana koji će se naći pred korisnikom i odatle krenuti “unazad”, poštujući rokove isporuke i budžet, na uštrb funkcionalnosti.
Kroz 16 poglavlja (Introduction, The Starting Line, Stay Lean, Priorities, Feature Selection, Process, The Organization, Staffing, Interface Design, Code, Words, Pricing and Signup, Promotion, Support, Post-Launch, Conclusion), knjiga vas vodi kroz sve procese koje prate razvoj jedne web aplikacije.
Do sada se knjiga prodavala u dva formata: kao PDF za skidanje (19$ – do sada preko 20,000 kopija) i kao prava papirna knjiga (29$) a od juče je Getting Real dostupna on-line, besplatno: http://gettingreal.37signals.com/.
Toplo je preporučujem svakom ozbiljnom web developeru (iako se ne slažem sa baš svakom iznetom idejom / savetom).
Moderni razvojni sistemi (.Net Framework sa pratećim Visual Studio 2005 razvojnim okruženjem) omogućuju vrlo brz razvoj aplikacija sa mnoštvom funkcija već ugrađenih u samo okruženje.
No, to ne znači da se programer može opustiti i zaboraviti na “osnovne” stvari – sigurnost aplikacije i podataka kojima ta aplikacija barata. U današnje vreme, kada je dobar deo aplikacija Web tipa, kada pristup aplikacijama ima svako ko ima konekciju ka Mreži, ovaj aspekt je vrlo, vrlo važan.
U sklopu inicijative za što sigurnije aplikacije, Microsoft je objavio “Developer Highway Code” – Putokaze za sigurno kodiranje – mala knjižica (147 strana, PDF format, oko 5 Mb) koja nema puno teksta, već je skup instrukcija, listi za proveru (checklists), i recepata u oblasti sigurnosti.
Knjigu posmatrajte baš tako: kao putokaz i brza referenca na stvari na koje ste trebali da obratite pažnju. Ako vam neki zahtevi nisu najjasniji, potražite dodatne informacije na Patterns and Practices sajtu.
Veoma dobar izvor praktičnog znanja za .Net programera je Microsoft Pattern & Practices (“Obrasci i rešenja”? Ideje za bolji prevod?) sajt.
P&P je skup Microsoft preporuka kako da dizajnirate, razvijete i distribuirate kvalitetne aplikacije na Microsoft platformama.
Pored saveta, tu je i izvorni kod, potekao iz iskustva, proveren od strane arhitekata, programera, i gomile drugog stručnog naroda.
Postoje 4 tipa P&P:
Software Factories (Softverske fabrike) – kolekcija softverskih parčića koji programeru omogućavaju da brzo kreira aplikacije određenog tipa
Guides (Uputstva) – pisane smernice, sa detaljima o tehničkom problemu i mogućim rešenjima
Reference Implementations (Referentna rešenja) – gotove aplikacije koje demonstriraju P&P uživo
Application Blocks (Aplikacioni blokovi) – biblioteke koje rešavaju određen skup problema i koje se mogu koristiti takve kakve su ili promeniti / proširiti. One rešavaju probleme kao: pristup bazi, logovanje, kreiranje korisničkog interfejsa
E sada, ostaje praktičan problem: kako najlakše pristupiti toj riznici znanja?
Tu na scenu stupa Guidance Explorer, alat koji vam omogućava pregled:
– principa dizajna aplikacija
– proverenih rešenja
– primere koda
– liste za proveru (checklists)
– uputstva za rešavanje uobičajenih problema.
Takođe, alat možete koristiti i za kreiranje vaših elemenata, na nivou vašeg tima.