Archive

Archive for March, 2008

jQuery JavaScript toolkit - korisni linkovi

March 20th, 2008 Senko 4 comments

Moj JavaScript weapon of choice je odnedavna jQuery. Malen je (barem što se tiče API-ja, nisam uspoređivao veličine datoteka), način razmišljanja mi se totalno sviđa (razdvojenost HTML-a, CSS-a i JS-a, korištenje standardnih CSS selektora za dohvaćanje DOM elemenata), a CSS selektori i chainanje filtera i naredbi su premoćni. Ako već niste upoznati s jQueryem, preporučam da pogledate tutorial te prošvrljate i ostatkom dokumentacije koja je prilično iscrpna.

Osim glavne stranice projekta, naišao i sam na još hrpu korisnih stvari vezanih uz jQuery. Moj osobni izbor:

  • jQuery in Action knjiga. Nedavno pročitao, odličan uvod, dobro objašnjavanje osnovnih koncepata, standardnih trikova i naprednijih stvari tipa pisanja vlastitog plugina.
  • Learning jQuery blog. Korisni tips’n'tricks, da se svašta naučiti.
  • jQuery UI, set standardnih, kvalitetnih i prilagodljivih UI pluginova.
  • jQuery Enchant, hrpa zgodnih i nenameljivih (većinom) efekata i animacija.
  • AJAX Form plugin, skroz jednostavno ajaxiziranje formi.
  • facebox plugin, simpatičan Facebook-lookalike Lightbox klon koji za razliku od originala ne ubije Firefox2 na Linux platformi.
  • rudimentarni rich text editor plugin - less is more, ovih par featureva koje podržava su mi dovoljni u 90% slučajeva (za ostatak je tu TinyMCE)
  • UI datepicker - uvijek dobro dođe
  • SuperFish, jQuery Deluxe verzija čuvenog AListApartovog SuckerFish dropdown sustava
Categories: Croatian Tags:

Yahoo!, TraZhi, LinkedIn

March 17th, 2008 Senko 5 comments

Čuli ste za Slashdot ili Digg efekte, kratkotrajnu pojavu s potencijalno dugotrajnim posljedicama u kojoj se vaš site u jednom trenu nađe na nekom od ovih siteova i onda milijuni korisnika pohrle prema vama, nadajmo se napune vaš AdSense account, ali isto tako vjerojatno i pretvore vaš server u hrpu spaljenog silicija?

E pa, Slashdot, Digg i ostali wannabeei neka se sakriju, jer dolazi pravi faca Yahoo! Buzz efekt. Ako vas taj zatrefi, posjetitelje ćete brojati u stotinama tisuća. A ako izdržite više od par minuta, možda i milijunima…

TraZhi, dva tjedna kasnije: manji broj znatizeljnika kliknuo, isprobao (bilo je par zanimljivih searcheva tipa “aaa’aaaa” ili “%s”, drago mi je reći da se nije zblesavio na to), i vjerojatno rekao “ok, whatever”. Ekipa iz emisija.tv podcasta također je spomenula u fusnoti i TraZhi. Recenzija je bila poprilično negativna, ali nisu bili baš konkretni, pa ću to pripisati općenitom “a kaj će to nama” stavu. Istina, TraZhi kakav je sad ne nudi previše razloga zašto bi ga netko koristio (heavy-mobile useri vjerojatno nisu nit čuli za nj, a za ostale nema dodatnih goodiea).

Zato će slijedeća faza u mom eksperimentiranju biti istraživanje kako se tražilica može nadograditi da bude korisnija (ili relevantniji podaci, ili više korisnih podataka na neki način). Prvi korak u tom smjeru je testiranje SnapIt-a, koji omogućava pregled (skrinšota) stranice prije odlaska na nju, a aktivira se onmouseover. Vidjet ćemo koliko će se to pokazati dobrim…, također ako imate kakvu ideju što je dobro staviti u tražilicu (u smislu “e da bar google s rezultatima može napraviti XYZ…”), javite. Da ponovim, smisao cijelog pokusa je da je to pokus.

Inače, stavio sam si TraZhi kao default tražilicu i odmah našao par annoying bugova, ali sam još uvijek pri odluci da ga koristim, a bugove ispravim kako dolaze.

I zadnja stvar, uspio sam napokon 100%-iti svoj LinkedIn profile. Yay! Još nisam imao neke koristi od umrežavanja gore, ali valjda budem…ako ništa drugo, bar me ne gnjavi sa “poke” i “peek” i “sys 64738″ i tko zna čim kao Facebook.

Categories: Croatian Tags:

TortoiseDarcs

March 5th, 2008 Senko 2 comments

Ponukan Dobričinim postom o SVNu, da i ja napišem koju.

Mi u firmi trenutno evaluiramo darcs, a kako nismo svi na Linuxu, pokazala se potreba da i ekipa sa Windowsa može jednostavno koristiti ovaj alat. Nema nikakvih problema u korištenju komandnolinijskog darcsa, ali kako sam našao na ‘Netu darcs verziju popularnog Tortoise{CVS,SVN,Git,Darcs} alata, odlučili smo to isprobati.

Nažalost TortoiseDarcs bundla nešto stariju verziju softvera a i nema baš sve featureve koji nam trebaju (recimo autorizacija prilikom korištenja SSHa za push/pull), no uz malo “hakeriranja” i tweakanja stvar se da složiti. Daklem, slijedi howto:

  1. Skinite i instalirajte TortoiseDarcs (neka vas naziv ne brine :)
  2. Skinite novu verziju darcsa i sve .EXE-ove iz darcsdir-win32 prekopirajte u Tortoise instalacijski dir (preko starih verzija)
  3. Ako već ne koristite Putty, najbolji SSH client za Windowse, ovom prilikom ga također skinite i stavite u neki direktorij (svejedno gdje, ako vam treba samo za Tortoise, najbolje u Tortoise install dir)
  4. Pokrenite puttygen.exe, defaultsi su dobri, kliknite na generiranje keya, mičite mišem (you will know it when you see it:)
  5. Public key kopipejstajte na server gdje imate SSH account i stavite u ~/.ssh/authorized_keys datoteku. Napomena, cijeli pubkey i dodatne informacije o njemu moraju biti u jednoj liniji, a authorized_keys datoteka ne smije biti čitljiva nikom osim vama (chmod 600).
  6. Private key spremite negdje na disku, recimo kao privatekey.ppk u Tortoise dir. Nemojte ga kriptirati (ako ste paranoični, kriptirajte cijeli disk i nadajte se da nitko zloban nema tekući dušik pri ruci :)
  7. Pokrenite putty.exe. Kreirajte novi session, podesite server, tip veze (SSH), te pod Auth postavite privatni key koji treba koristiti za vezu. Session nazovite nekako jednostavno, bez razmaka i čudnih slova, recimo mi smo koristili ‘reidev’. Sejvajte (ne mogu reć ’spremite’ kad ostaje selektiran :) session, i onda ga otvorite. Ukoliko ste private i public key dobro postavili, trebali biste se ulogirati uz samo unošenje logina.
  8. Napokon u tortoise darcsu možete koristiti sigurni ssh. Desni klik u neki dir, “get” (ili pull ili push, već što radite), kao server unesete naziv sessiona, username svoj koji već imate, a path je path do darcs repozitorija na serveru.

Časak posla kad imate recept, ali treba malo duže da se napikne dobra kombinacija. Eto sad i vama i meni za referencu.

PS. O da, napisao sam post o tome kako na Windowsima napraviti nešto. Ajme meni…;-)

Categories: Croatian Tags:

Trazhi

March 3rd, 2008 Senko 2 comments

Zadnjih par mjeseci se zbog količine obaveza slabo bavim vlastitim projektima, ali tu i tamo stignem posvetiti koji sat igranju i eksperimentiranju. Jedna od stvari s kojima sam se zabavljao došla je dovoljno daleko da može ugledati svjetlo dana. Radi se o eksperimentu sa web tražilicama.
Zašto igrarija s tražilicama kad je tu Google? Evo nekoliko razloga:

Korisnost prikazanih podataka


Koliko vam ovo ima smisla? Hoćete li baš tolko rezultata gledati? Da, psihološki djeluje impresivno, ali ono, rat tražilica je gotov, ‘ajmo biti malo realni i davati korisne podatke. Osobno mislim da je korisnije dati relativno mali broj rezultata (recimo do 100) za koje tražilica misli da su relevantni, te uz svaki od njih napisati i koliko su otprilike relevantni. Tako ako prva dva rezultata imaju preko 90% relevantnost, a treći ima 30%, očito je gdje je otprilike “granica” dobrih rezultata. Zasad tražilica daje sve rezultate koji imaju relevantnost nekih 5% (što u praki ispadne oko 100njak rezultata), što je prilično konzervativno i vjerojatno se granica može pomaknuti na 30%).

Iskorištavanje prostora na malim ekranima


Količina korisnih informacija na jednom ekranu, kod mobilne inačice pretraživača. (Napomena: kako bi dobio screenshotove, koristio sam OperaMini demo sa Operinih stranica, jer fotografiranje Symbian telefona sa upaljenim browserom ne daje baš kvalitetnu sliku. Pokušao sam uspoerdno dati i prikaz Pogodka, ali iz nekog razloga on ne smatra OperuMini mobilnim browserom, pa se učita standardna stranica).

Minimalizam

Ukoliko se usredotočimo samo na pretraživanje weba, onda dosta “zgodnih detaljčića” koje postojeće web tražilice imaju postaju suvišne. Za usporedbu, pogledajte Google, Pogodak i TraZhi. Osobno volim minimalizam, te mi je ljepše ako web tražilica nije polu-portal, nego je, well…web tražilica. Jedna od krajnosti u koju smo išli je složiti dizajn bez ikakvih slika (favicon ne računamo, jer ga se nigje u HTMLu ne poziva. Browseri ga učitavaju na vlastiti rizik :), tj uz korištenje samo stvari koje nam CSS pruža. Tu još ima mjesta za dorade, ali overall ideja je minimalizam i jednostavnost.

Bandwidth

Kao jedna od posljedica minimalizma, ali i zbog različitih optimizacija koje sam isprobavao (minimiziranje htmla i css-a, gzipanje, nekorištenje nikakvih slika, itd - pritom je je YSlow bio iznimno koristan) uspio sam postići da se izuzetno malo podataka mora prenijeti do browsera. Za primjer pretraživanja za “britney” (na normalnoj tražilici, dakle ne mobilnoj verziji) potrebno je prenijeti 2KB, dok za isti takav query na Googleu prebaci 21KB ukoliko stranica (tj slike) nije u cacheu, a 5KB ukoliko je. U sva tri slučaja, sam sadržaj stranice je gzipan.

Višestruki izvori

Zašto pitati samo jednu tražilicu (pa makar ona bila i najbolja na svijetu) ako možete pitati više njih (pod uvjetom da su i ostale kvalitetne) i napraviti prosjek? Za svaki query korisnika, tražilica se raspita na par mjesta, pozbroji dobivene podatke, i da skupne rezultate. U mom eksperimentiranju i subjektivnom istraživanju pokazalo se da rezultati iz više izvora budu jednako ili više relevantni za pojam. Osim toga, ovakvo “peglanje” rezultata osigurava i da zlonamjerne ciljane Google SEO optimizacije ne dolaze toliko do izražaja (jer ciljaju samo Google), a za paranoike je dobro znati da Google koliko god postao zao ne može jednostavno “isključiti” neku (relevantnu) stranicu iz rezultata, jer će je ostali izvori pokazati.

Nema reklama i bannera

Provjereni recept s Naslovnice, ovog puta doveden do ekstrema. Kako se radi o eksperimentalnom projektu iz gušta, nema nikakvih reklama, bannera, sponzorstava i tome slično. Jedina tome slična stvar je jedan link na stranice Rei.

Problemi

Naravno da cijela stvar ima i par (ozbiljnih) problema. Neke od njih nadam se s vremenom rješiti, odnosno ima lijeka samo treba vremena i još malo rada na sustavu, dok za neke trenutačno ne vidim pametan način da ih se zaobiđe.

  • Latencija — Količina prenesenih podataka tj potrošeni BW stvarno je minimalna, ali se rezultate čeka dulje nego kod drugih tražilica, iz jednostavnog razloga što u većini slučajeva moja tražilica mora pitati dalje za podatke, i tek nakon dolaska podataka i skupne obrade ih prikazuje. U praksi to znači da je moguće čekanje do 6s. Ukoliko se rezultati već nalaze u cacheu (recimo kod pregledavanja druge stranice rezultata, ili kod popularnih pojmova), vrijeme odaziva je manje.
  • Oslanjanje na druge tražilice - ukoliko “upstream” tražilica zabrlja, i mi zabrljamo. Neki od izvora također parsiraju druge izvore, pa im se ponekad zalomi da krivo to protumače i onda u naslovu stranice bude i “[Translate This Page]” :)

Isprobajte

(Dosadašnji) rezultat eksperimenta se zove TraZhi - a lightweight search engine, pozivam vas da ga isprobate i javite kako vam se čini. Sve sugestije su dobrodošle, ovdje smo da se igramo :)

P.S.

Web server je custom asinkroni single-threaded pisan u TwistedPython frameworku, uz Apache kao reverse-proxy ispred njega. Više o korištenim izvorima možete naći na About TraZhi stranici.

Categories: Croatian Tags: