Šūsnys naujienų iš pasaulio

Šiandien kaip niekad pilna įdomių straipsnių ir naujienų apie mokslą ir technologijas (apie programavimą kažkaip neišėjo kol kas šiandien paskaityt). BBC rašo, kad šiandien sukanka 50 metų kai buvo atrasta DNR – jei jum teko šiandien naudotis Google, tai ir jis šiandieną pasikeitęs pažymint šią progą.

Vėlgi krūva bugų aprašymų iš Microsoft: čia, čia ir čia. Paveikta Windows NT, IE ir Outlook Express.

Slashdot diskutuoja ar HTML gali būti menas. Man labiausiai patiko komentaras „In my experience, if a person doesn’t understand why HTML isn’t a programming language, it’s not worth my while to explain it“.

Taipogi radau seną bet įdomų puslapį apie didžiulį raudoną mygtuką, kuris nieko nedaro. Ech, seni geri laikai kai tik atsirado galimybės įdėti paveiksliukus į HTML ;)

mod_rewrite ir mod_perl

Šiandieną nemažai laiko praleidau skaitinėdamas apie Apache modulį mod_rewrite, mat užsinorėjau šioje svetainėje gražių URL’ų (Tarkim http://www.lietuvoje.lt/~moxliukas/browse/42 vietoj įprastinio http://www.lietuvoje.lt/~moxliukas/index.pl?id=42). Galingas daiktas.

Benaršydamas Apache modulių aprašymus radau labai neblogą svetainę refcards.com, kurioje galima atsisiųsti glaustus Apache, o svarbiausia mod_perl komandų sąrašus. Labai naudinga turėti pasidėjus po akimis. Hmmm… reiktų ir Perl bei PHP kažką panašaus padaryt… Ir aišku apie regexpus.

Perl požiūris į naujokus

Benaršydamas internetą atradau gana didelį fleimą apie Perl
bendruomenės požiūrį į naujokus. Su kai kuriais punktais gal ir galima sutikti, bet ne su visais.

Pirmiausia, Perl bendruomenė apkaltinama elitiškumu (Lietuvoje turbūt atvirkščiai – PHP bendruomenę kartais galima tuo apkaltinti). Tiesa, atsakymai į šį kaltinimą buvo įvairūs: nuo nuolankaus „bet juk jei neperskaitė naujokas dokumentacijos, tai negalima jam visko aiškint“ iki „ir labai gerai kad naujokų nėra, nes jie tik trukdo savo kvailais klausimais“.

Be to, iškeliama mintis, kad Perlo dokumentacija per sunki pradedančiajam. Va čia galbūt galima sutikti. Ir dar: tos dokumentacijos daug. Ir visi tingi skaityti ;)

Svetainės atnaujinimai

Atrodo sutvarkiau tą „F5“ klaidą, dėl kurios dažnai dubliuodavosi komentarai (tiesa, man pačiam visada Mozilla ir IE paklausdavo ar tikrai noriu antrą kartą submitint – gal galit patestuot ar pas jus reikalai pagerėjo?)

Pradėjau loginti vartotojų IP. Na iki šiol buvo kuriamos tik tuščios sesijos, tad bent jau IP dabar kartu išsaugos. Tiesa, su tom sesijom ten įdomiai… Viskas saugoma MySQL, bet binariniame formate (matyt taip greičiau) – teko truputį pasinervuot manant kad tos sesijos neveikia, nes pačiame MySQL kaip ir nieko nematydavau.

Kitas dalykas – puslapiavimas. Nutariau, kad būtų paprasčiau turėti tik tarkim 25 paskutinius įrašus pirmame puslapyje, ir visą pilną ilgą sąrašą kažkur kitur (o vat jau tą ilgą sąrašą bus galima puslapiuot po kokį 100 įrašų, mat ten bus pateikta tik pavadinimai ir data). Kol kas limitą 25 įrašams uždėjau, bet dar nepadariau pilno sąrašo. Šiandie padarysiu, jei viskas vyks pagal planą ;)

Sudie IRC, einu dirbt

Štai ką šiandie patyriau:

<-psyBNC> Tue Apr 22 21:47:25 :User JAPH () got disconnected (from irc.delfi.lt) 
Reason: Closing Link: 193.219.82.175 (SVSKilled: GHOST command used by perl_rulz)
--- [perl_rulz] (~mazafaka@81.7.111.254) : qrva
--- [perl_rulz] irc.takas.lt :Tue Apr 22 21:46:24 2003
--- perl_rulz :End of WHOWAS
-NickServ- List of entries matching *@81.7.111.254:
-NickServ-     moxliukas             [Hidden]
-NickServ-     vYtiZ                 [Hidden]
-NickServ-     Waidazz               [Hidden]
-NickServ- End of list - 3/3 matches shown.
--- [vYtiZ] (~vytis.v@81.7.111.254) : vYtiZ
--- [vYtiZ] @#db_rulez @#super-krepsinis @#krepsiukas @#lol @#lebron @#deadeye #Zalgiris #jablonskine #gentoo 

Trumpai drūtai – mane nusnifino. Nežinau, ar čia kuo dėtas vYtiZ, tačiau moxliukas nebeegzistuoja ir nereiktų pasitikėt juo. Meskit mane iš visų access listų ir panašiai ;)

Tiesą sakant, gal tai ir į gerą. Reikės mažiau laiko praleisti IRC ir daugiau laiko paskirti darbams, kurie jau spėjo susikaupt.

Teisinga tipografija svetainėms

Skaitinėjant savo mėgiamiausią svetainę apie interneto programavimą (aišku neskaitant PerlMonks :) aptikau senoką straipsnį apie teisingą tipografiją internete, kuris privertė šiek tiek susimąstyti. Brūkšnelių ilgis pasirodo labai svarbus.

Pačioje interneto pradžioje kompiuteriai buvo panašesni į rašomąsias mašinėles, ir tekstas konsolės ekrane tikrai buvo nepanašus į gražiai suformuotą tipografinį tekstą, kurį galima sutikti knygose ar kituose spausdintiniuose leidiniuose. Problema daugiausiai buvo tame, kad neįmanoma buvo pavaizduoti galybės simbolių, tad teko apsiriboti ASCII. Bet štai dabar jau Unikodo laikai ir turime galybes simbolių gražaus teksto formatavimui, ir galime atskirti „en-dash“ nuo „em-dash“ ir tiesias kabutes nuo riestų. Tad perskaitęs tą straipsnį ir aš užsinorėjau viską daryti gražiai ir pagal standartus.

Beje, lietuviškas „ISO-8859-13“ standartas kaip tik ir skiriasi nuo „Windows-1257“ koduotės tomis nelemtomis kabutėmis. Be to, kažkaip sunkoka jas reikiamai įvesti naudojantis Notepad. Kol kas pabandysiu naudot Unicode decimal entity notation, kur atsidaranti kabutė („) yra &#8222;, o užsidaranti (“) – &#8220;

Perl vs PHP (subjektyvus asmeninis požiūris)

Nemėgstu PHP. Ir turbūt jau pats laikas pasiaiškinti kodėl. Dauguma mane mato kaip Perl fanatiką, nors tas fanatizmas tikrai išpūstas. Mėgstu Perl, bet kartu mėgstu ir Python, ir Ruby, ir hmmm.. kartais netgi Java. Tiesiog Perl yra mano „language of choice“, nes ją geriausiai moku (PHP irgi moku neblogai, bet jos paprasčiausiai nemėgstu). Gerbiu žmones, mėgstančius Python ar Ruby, bet tie, kas skelbia jog PHP yra geriausia kalba nuo pat Kristaus gimimo man sukelia šiokią tokią šypseną. Mano įsitikinimu neišvengiamai toks programuotojas arba subręs ir atras geresnę kalbą, arba bus amžinai pasmerktas knistis didelėje HTML ir PHP kodo košėje, iš kurios nematyt nei gražaus kodo, nei naujausių technologijų.

Tad kuo tas PHP blogas? Galbūt ir niekuo. Visa tai, ką čia rašau yra mano subjektyvi nuomonė. Pirmiausia PHP man asocijuojasi su pradedančiaisiais programavime, kurie net nežino kas tai yra „kintamasis“. PHP lengva įdiegti. PHP lengva pradėti rašyti, mat paprasčiausios PHP programos nesiskiria nuo HTML. Tuo tarpu Perl sudėtingas. Sunku juo programuoti Windows platformoje, ypač pradedantiesiems. Vien norint paleisti Perl programą per CGI, reikia padaryti „chmod“, išvesti reikiamą HTTP headerį, o tai sudėtinga žmogui, niekada nesusidūrus netgi su komandine eilute. Perl gal būt ir atrodo per sudėtingas, bet mano nuomone, jis priverčia susimąstyti. Priverčia pagalvoti kodėl reikia spausdinti būtent tokį headerį, o ne kitokį, priverčia užduoti klausimą „kodėl?“. Tiesiog PHP laikau vaikišku žaidimiu, palyginus su Perl (tiesą sakant nebūtinai su Perl… su bet kuria rimtesne programavimo kalba)

PHP meturi savo filosofijos. Arba jo filosofija yra padaryti kalbą kuo paprastesnę naudojimui internete, bet tam reikia skolintis idėjas iš to paties Perl. Tik skolintas ir kopijuotas daiktas niekada neprilygsta originalui. PHP turi daug ką, ko turi ir Perl, bet tai padaryta taip negrabiai kad net nesinori to naudoti. Tarkim regexpai. Krūvos preg_* funkcijų tikrai nepalengvina gyvenimo. O kaip būtų paprasta, jei regexpai būtų pačios kalbos dalis, o ne „prihakintas“ dalykas per funkcijas.

PHP neturi bendros vieningos funkcijų pavadinimų sistemos. is_array(), is_numeric(), is_null() ir isset()… kur dingo brūkšniukas? Be to pats sprendimas absoliučiai viską daryti per funkcijas (o kad bent ta funkcijų iškvietimo sintaksė būtų lankstesnė!) yra tiesiog atgrąsus. Štai yra ir funkcija array_map() (beje, kam tas „array_“ prieš visas masyvų funkcijas? Kad ilgesnės programos būtų?) — Perle map yra mano mėgstamiausia funkcija — bet ar kada kas naudoja tą array_map()? Ne, nes parašyti kodą su visais callback‘ais užima pernelyg daug laiko ir pastangų. Visiškai priešingai nei Perle, kur map labai patogu naudoti vietoj for ciklo: @foo = map { $_ * 2 } @bar;

PHP neturi paprastų masyvų. Yra keisti asociatyvūs masyvai, bet su jų normaliai negalima nei shift’inti, nei pop’int. Galbūt aš per daug stengiuos kad PHP būtų Perlas, bet patys PHP kūrėjai pripažįsta, kad daug idėjų ėmė iš ten. Deja, kopija skiriasi nuo originalo.

O kas toliau? PHP5 labai keistai ir įtartinai panašus į Java. Kaip sau norit, bet tai ne mano svajonių kalba. Perl6 — visai kitas žvėris. Tai jau nebe kalba, o metakalba, suteikianti visišką laisvę programuotojui. Jei tik jis žino ką daro.