RSS Bandit – jedan dobar RSS čitač

Za uspešno praćenje web dnevnika vam definitivno treba odgovarajući program. Tačno je da sve dnevnike možete pratiti i preko običnog web čitača, ali time gubite iz vida bitnu prednost RSS protokola: svi članci na jednom mestu.

Kao što sam u nekom od prvih postova pomenuo, moj izbor do skora je bio SharpReader – pomalo spartanski, malo zahtevniji (guta solidnu količinu memorije) ali je besplatan i radio je posao. No, kako se povećavao broj dnevnika koje pratim, primetio sam jednu veliku manu: SharpReader nije čitao WordPress dnevnike kojih je svakim danom sve više.

Takvo ponašanje sam uredno prijavio autoru pre nekoliko meseci, ali je autor Luke Hutteman izgleda prezauzet – došlo je vreme da potražim alternativu. Uslovi koje sam postavio nisu mi izgledali previše teški za ispunjenje: nekomercijalan program (Freeware / Open Source), udoban korisnički interfejs i lako prenošenje dnevnika koje pratim s jednog mesta na drugo (čitaj: posao / kuća).

Od jednostavnog zadatka je ispao posao od solidne dve nedelje – oko 10-ak programa koje sam skinuo, probao, maltretirao; na kraju se ubedljivo izdvojio jedan:

RSS Bandit

Nastao kao vežba na MSDN sajtu tj. primer o lakoći korišćenja novih tehnologija u .Net okruženju, RSS Bandit je sada udoban, brz, solidan program i uz to Open Source projekat – izvorni kod vam je dostupan bez ograničenja. Ako vas zanimaju tehnike programiranja, toplo savetujem da bacite pogled na ovaj kod.

Ako niste zadovoljni vašim čitačem, ili želite da probate alternativu, neka vam RSS Bandit bude u vrhu liste 🙂

Blog spam – pošast na pragu

Nije dugo trajalo, ni dva meseca a blog spameri su pronašli moj blog 🙁 – to se može lako desiti i vama, jer po web logovima vidim da su me našli preko Planetoida.

No, ne očajavajte 🙂 Postoji puno načina da ih sprečite ili barem umanjite štetu koju prave. Kao što sam rekao u jednom od ranijih članaka WordPress je moj izbor za pogon ovog dnevnika. I u osnovnoj instalaciji postoji način za borbu protiv spama, ali se na kraju svodi na kontrolisanje svih komentara tj. ručno odobravanje, koje može biti jako zamorno, ako komentari dolaze tempom 1 po minuti.

Na sreću, WP je pisan kao vrlo otvoren sistem, sa dobrim mogućnostima za proširivanje; rečeno – učinjeno: instalirao sam WordPress Hack: AuthImage, i uz modifikacije iz komentara 5 (Verat ne podržava Freetype biblioteku kao ni mod rewrite) naterao ga da proradi.

Znam da ovim komentarisanje članaka činim za nijansu neugodnijim (morate uneti autentikacioni kod), ali od kada sam aktivirao AuthImage (pre sat) ni jedan spam nije prošao.

Redirekcija sa .htaccess

Po završetku redizajna sajta, i kompletnom prelasku sa statičkih .html na dinamičke .php stanice, pogledao sam log sajta, da bih se uverio da je sve na svom mestu (ako ste i vi kod Verata, to je /log/ime-domena-err datoteka).

Užasnuo sam se gomilom grešaka 🙁 prvenstveno HTTP/404 Page not found. Normalno, više od polovine pogodaka na moj sajt dolazi sa raznih pretraživača, a oni ne osvežavaju sadržaj keša preterano često – Google ima keširan sajt od pre mesec dana. Ok, trebalo je rešiti pitanje šta sa starim adresama, koje su se negde zadržale (a u svetlu inicijative “no broken links”).

Jedna od opcija je kreiranje svih strana koje su i ranije postojale, sa kodom za redirekciju na novu stranu (meta tag) ili linkom koji vodi na novu stranu za slučaj da pregledač ne poštuje meta direktive. No, to je bilo krajnje ružno rešenje; posle malo guglovanja, uz činjenicu da je web server Apache, našao sam idealno rešenje: .htaccess datoteka! (o kojoj ama baš nigde ništa ne piše na Veratovom sajtu).

.htaccess je obična tekstualna datoteka, namenjena kontroli ponašanja web servera na direktorijum nivou; primenjuje se u direktorijumu gde je, kao i u svim poddirektorijumima ispod koji nemaju svoju .htaccess datoteku.

Pomoću ovde datoteke moguće je postavljati prava pristupa, kontrolisati redirekciju kao i koja strana odgovara na HTTP greške. Korišćenje je vrlo jednostavno; otvorite je u tekst editoru i postavite:

redirect 301 /index.html http://www.vesic.org/index.php

redirect definiše tip komande, 301 kod koji će se poslati pregledaču (Moved Permanently, za slučaj da je pretraživač u pitanju, znaće da tražena stranica nije važeća i staviće novu u red za keširanje) kao i ciljni URL na koji treba preusmeriti pregledač. Ovo je client-side redirekcija; ako želite da radite server-side redirekciju (brže, ali nema informacije za korisnika da je do promene došlo) koristite Rewrite direktive (rewriteEngine, rewriteCond, rewriteRule).

Kada već menjamo fajl, nije loše dodati i ovo:

ErrorDocument 404 /404.php

Ovako sve HTTP 404 greške preusmeravamo na našu stranu, i time izbegavamo standardnu stranu od provajdera. Za više detalja o .htaccess datoteci, molim pogledajte ovde.

WordPress i lokalizacija

Kada sam odlučio da krenem sa blogom, ispitao sam 4 rešenja za Linux/Apache/Php.

WordPress je bez daljnjeg daleko ispred tih rešenja: izuzetno laka konfiguracija, udoban i efikasan interfejs i minimalni zahtevi:

  • PHP version 4.1 ili noviji (PHP 5 se još ne preporučuje)
  • MySQL version 3.23.23 ili noviji

Ono što je bitno, WP podržava i lokalizaciju; recimo, izmenom fajla wp-includes/locale.php možete podesiti nazive meseci i dana u nedelji. No, šta da radimo sa Četvrtkom 🙂 (jedini pomenuti ima naša slova u nazivu)?

Akcija zavisi od vaše oduke: koji kodni raspored želite na stranicama? Kod nas su uobičajeni osmobitni standardi Windows 1250 (ne preporučujem, iako je lakše pripremati stranice u ovom rasporedu na Windows platformi) i ISO 8859-2 (daleko bolji izbor).

No, više nema razloga da ne koristite neki potpuniji standard, koji vam neće vezivati ruke, ni vama ni vašim posetiocima koji ostave eventualni komentar 🙂 – Unicode.

Unicode definiše tačan raspored karaktera, ali ne i njihovu prezentaciju (zapis) u odgovarajućem mediju. Za to su i dalje odgovorne kodne strane; za Unicode, prirodan izbor je UTF8, Unicode Transformation Format-8, način da Unicode karaktere predstavimo preko 8 bita (ako vas ovo zanima detaljnije, predlažem odličan članak Marka Dejvisa)

Ok, odlučili ste se za UTF8. Potrebne su dve stvari:

1. da pregledaču (browseru) posetioca vašeg sajta "kažete" da je strana zapisana u UTF8 kodnoj strani:

U okviru <head> … </head> sekcije strane, dodajte ovaj meta tag:

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">

2. da sadržaj na strani zaista i bude zapisan u UTF8 formatu

Stavka dva zna da bude problem; prvo, "prava" UTF8 datoteka ima na početku tri bajta ili UTF8 signature (xEF xBB xBF) koje znaju da zbune neke tekst editore. Drugo, ako je to datoteka izvornog koda (.php / .asp strana), server može da pravi problema oko tako zapisane strane.

Da se vratimo na primer kojim smo počeli: locale.php; tu je četvrtak zapisan kao:

$weekday[4] = __(‘Četvrtak’);

No, kako zapisati Č? Tip fajla ne može da bude UTF8 jer se php uguši sa ovakvim fajlom a ni jedna od osmobitnih kodnih strana ne vrši posao. Srećom, neko je i na to mislio 🙂 Iskoristio sam HTML kodiranje (&#) bilo kog karaktera; tako gornji red postaje:

$weekday[4] = __(‘&#268;etvrtak’);

zapisan na stari način (osmobitni karakteri) a prikazan kako treba (pogledajte kalendar desno). Prihvatam da ovakav način zapisa izgleda rogobatno, ali rešava mnogo više problema no što ih uvodi.

Zaključak: ako radite u datotekama izvornog koda, koristite gornji način; ako direktno editujete neku statičku HTML stranicu, koristite editor koji to podržava, kao što je recimo Scite. Evo tabele najinteresantnijih karaktera za naše podneblje:

&#262;  Ć   &#263;  ć   &#268;  Č   &#269;  č
&#272;  Đ   &#273;  đ   &#352;  Š   &#353;  š
&#381;  Ž   &#382;  ž   &#128;  €   &#174;  ®

a kompletnija tabela je ovde: http://www.tony-franks.co.uk/UTF-8.htm

CSS, PHP, Smarty na delu

Jako dugo vremena sam zapostavljao Vesic.org i po pitanju sadržaja a i po pitanju samog html koda koji je prikazivao sajt.

Igrom slučaja (čitaj: razboleo se na odmoru ;)) dobio sam malo vremena koje sam posvetio kompletnoj obnovi sajta; uz Aleckovu pomoć, kompletan HTML kod je prepisan po CSS2 standardima što je sledeći korak daleko olakšalo: upotreba šema (templates).

Ono što je za svaki sajt karakteristično je da sve strane slede neki definisani dizajn, i da se samo radni (obično središnji deo) deo menja u zavisnosti šta je potrebno na toj strani prikazati. Ostatak strane je identičan, do nivoa referenci na ostale objekte (skriptove, css datoteke, slike) koje se menjaju u zavisnosti od “dubine” na kojoj se dotična strana nalazi u strukturi sajta.

Za održavanje tog zajedničkog dela postoje ručni 😉 metod, i metod šema – uz pomoć nekog programa obeležite zajedničke delove strane, markirate ih, a taj program se brine o tome da se pri promeni zajedničkog dela to propagira kroz sve stranice koje koriste tu šemu. U početku, taj posao je obavljao jako dobro Dreamveawer, izuzetno dobar, zahtevan i skup program.

No, kako sam ja programer i daleko lakše koristitim čist tekst editor, a moj provajder Verat u okviru web paketa besplatno omogućava Php i MySQL, ideja se sama nametnula – probati nešto novo. Na savet kolege Marjana, pogledao sam Smarty, odličnu php biblioteku šema: stabilna, dobro urađena i laka za korišćenje. Malo programiranja, malo premeštanja stranica po sajtu, izdvajanja zajedničkih delova (navigacije) za grupe stranica i sada je održavanje sajta milina; dve šeme, header.tpl i footer.tpl i set stranica koje izgledaju otprilike ovako:

< ?php
$selectedLink = 1;
$selectedSubNavLink = 0;
include 'subnav.php';
?>

i to je sve 🙂 subnav.php čuva navigaciju za taj direktorijum a sam sadržaj stranice (centralni deo) je u posebnim datotekama, koje su oslobođenje bilo kakve navigacije i formatiranja (tnx to CSS2 i Aleck :)).

Rezultat je pred vama: mnogo brži sajt (Smarty podržava keširanje jednom izvršene strane), i daleko lakše održavanje sajta (što znači više vremena za kvalitetan sadržaj).