XUL ir PHP

PHPpatterns.com turi keletą įdomių straipsnių apie XUL ir PHP. Tiesa, tie straipsniai šiek tiek per daug subjektyvūs ir bando parodyti kad PHP yra pati geriausia kalba GUI kūrimui (na nežinau, man asmeniškai PHP-GTK neatrodo labai patogi ir per daug galinga. IM(NS)HO aišku). Pirmasis straipsnis – „XUL: rendering GUIs with PHP“ – daugiau kalba bendrai apie tai kas yra pats XUL ir kam jis naudingas (apie PHP ten užsimenama gana nežymiai, bet juk pati svetainė susijusi su PHP, tad turi kažką ta linkme parašyt).

Kitas, mano galva įdomesnis straipsnis yra „XUL to PHP-GTK“, kuriame apra6oma kaip galima be didelio vargo kurti PHP-GTK programas naudojantis XUL (idėja tame, kad pasirašai XUL aplikaciją su PHP vietoj JavaScript, perleidi per konvertavimo programėlę ir turi PHP-GTK aplikaciją). Vat šita idėja tai mane labai sudomino. Aišku aš iš kart mąstau kaip ją Perlui pritaikyt ;)

Dar keletas įdomių nuorodų, susijusių su XUL. Pirmiausia XUL Planet, kurioje yra neblogų tutorialų kaip pasidaryti XUL aplikaciją. Ten pat yra ir labai naudinga XUL reference. Kitas labai įdomus mano nuomone projektas yra XUL Channels. Jo pagalba galima skaityti RSS naujienas pačiame naršyklės sidebare.

Pasiskaitęs apie XUL dabar turiu idėją pasirašyti paprastą šios svetainės naujienų rašymo aplikaciją su XUL (kol kas visas naujienas kišu tiesiai per PHPMyAdmin į MySQL duombazę). Ta aplikacija turėtų bendrauti su svetaine per XML-RPC. Bet čia tik šiaip idėja. Laiko trūkumas spaudžia :)

Trumpas tipas apie Perlinį PHP mysql_fetch_assoc() atitikmenį

Vienam žmogui iš PerlMonks kilo panaši problemą kaip ir man, darant šią svetainę – jis, uždavęs MySQL užklausą SELECT * FROM users WHERE id=100 norėjo naudotis rezultatais pateiktais hešais (t.y. $user{username}, $user{email} ir panašiai). PHP tai būtų padaroma su mysql_fetch_assoc() funkcija. Perle pasirodo tai nėra nei kiek sudėtingiau (net šiek tiek gėda pačiam pasidarė, kad pats nesugalvojau) – my %user = %{ $sth->fetchrow_hashref } padaro tai ko reikia.

Visiems gi pasitaiko tokių proto nušvitimo akimirkų ;)

XHTML2

Situacija su HTML W3C akimis yra tokia: HTML4 mirė. XHTML1 yra tik pereinamoji stadija iš SGML į XML. Vienintelė ateitis slypi dar nebaigtame XHTML2 standarte.

XHTML2 pasižymi tuo, kad jis nėra „backwards-compatible“ su HTML. XHTML1 standarte reikėjo tik prisiminti uždaryti visus tagus ir gal būt pakeisti vieną ar kitą atributą. XHTML2 turi radikalių pokyčių: <img /> nebebus, jį reikės keisti <object />, nebebus lentelių, HTML formos bus pilnai pakeistos XFORMS, kurios bent jau dvigubai sudėtingesnės.

Radikalūs pokyčiai standartuose dažniausiai įgyvendinami negreitai. Tad turbūt kokius 5 metus HTML dar bus gyvas.

RSS data

Įdėjau į RSS naujienas ir <pubDate> lauką. Šiek tiek (ok, ne šiek tiek, o gerokai) buvau nustebęs, kad MySQL negali man automatiškai suformuoti RFC822 datos – teko rašyti DATE_FORMAT(kada, '%a, %d %M %Y %k:%i:%s EEST'). Negi nėra paprastesnio būdo? (ar aš blogai RTFM’inau?)

Kitas dalykas, kuris man atrodo negražus – tai tas laiko zonos hardkodinimas. O beje, kurioj mes zonoj gyvenam? EST? EEST? GMT+3?

Tiesa, dar įdėjau viską RSS į <![CDATA[ ...]]>. Pasibandymui kaip sakant ;)

RSS newsfeedai šioje svetainėje

Po šiek tiek vargų įdėjau RSS naujienas. Jos atitinka RSS 2.0 standartą ir jas galima rasti čia. Darant šitą dalyką iškilo ir šiek tiek kitokių problemų. Pirmiausia – svetainė automatiškai įdėdavo Content-Type: text/html headerį, tad teko tą kodą perkelt į atskirą subą. Kita, didesnė problema – HTML entities buvimas jau sugeneruotame XML’e. Visoje šioje svetainėje apostrofai yra &rsquo; ir XML parseriams tai nepatinka. Tiksliai nežinau kol kas kaip išspręsti šitą problemą (įdėti XHTML namespace į RSS newsfeedo XML?), bet teks pasižvalgyti standartuose ir dokumentacijose.

RSS koduotės

Bandant šiai svetainei padaryti RSS naujienas susidūriau su šiokia tokia dilema kokią koduotę naudoti. Visa svetainės informacija saugoma MySQL duomenų bazėje, o ji pilnai nepalaiko UTF-8 koduotės (na, bent jau 3-ia versija), tad duomenų koduotė yra Windows-1257. Galite paklausti kodėl ne ISO-8859-13 (juk ši svetainė atrodytų lyg koks technologijų bandymų laukas su XHTML ir grynai CSS dizainu) ir galiu pasakyti, kad IE sunkiai draugauja su ISO-8859-13 koduote. Šiaip reiktų visur pereit ant UTF-8 koduotės, bet kol kas problemos su MySQL.

Tai va… sustojau darydamas RSS šablonus ties <?xml version="1.0" encoding="?. Reiktų arba siųsti windows-1257 koduote (kuri kažkaip prie XML nelabai derinasi… nors turbūt vis tiek teks) arba perkoduot tekstą „on the fly“ į UTF-8 naudojantis kokiomis nors Perlo priemonėmis (čia irgi problemos… Perlas čia 5.6.1, UTF-8 palaikymas žymiai geresnis Perle 5.8.0, bet šitai galima be vargo atnaujint, tiesiog visa perkodavimo idėja jau iš tolo kvepia atgrąsumu ir šaukia „Remember KISS principle – Keep It Simple, Stupid – use UTF-8 everywhere“). Tad kol kas stoviu kryžkelėje (tik turbūt ne paskutinėje).

Beje, įdomu, ar yra lietuviškų svetainių su RSS žiniomis? Įdomu kokios koduotės pas juos – turbūt UTF-8.

Cut & Paste CSS

Pagaliau pradėjo atsirasti ir nemokamų CSS kodo gabalų. Iki šiol buvo tik krūvos JavaScript „Cut’n’Paste“ svetainių, bet ne tiek jau daug apie CSS (Tiesa, CSS aprašymų visokių tai nemaža yra, bet grynai snippetų kolekcijų dar neteko matyti). Tai vat štai čia visai neblogų CSS pavyzdžių svetainė.

Naujienų skaityklės

Šiandien sumaniau pasiieškoti kokio nors newsfeed readerio (mmm… skaityklės), nes sėdint su GPRS vaikščioti po kiekvieną weblogą ir žiūrėti ar niekas neatsinaujino yra gana brangu, tiek finansiškai, tiek laiko prasme. Aišku yra scooox, tamoshiauz ir godzhirra_da_mc projektėlis www.fenix.mes.lt, bet jis man ne visai tinka, mes man norisi turėti galimybę pačiam nusistatinėti ko man reikia.

Iš viso radau bent jau tris skaitykles Windows sistemai, tik jos visos kol kas alpha versijoje. Labiausiai man patikusi – FeedReader, yra atviro kodo. Tiesa, ji sukurta estų, ir taipogi kol kas tik „Alpha“ kokybės. Na, bet šiaip ne taip lyg veikia.

Beje, sekantis šios svetainės projektas kaip tik ir turėtų būti kokio nors Newsfeed’o generavimas. Galbūt net su XML-RPC. Jei tik bus laiko.