Dar vieno analitiko svetainė

Petras Kudaras

Perl

Reikalingi Perlo dokumentacijos vertėjai

Vakar gavau laišką iš žmogaus, kuris ruošiasi standartizuoti Perlo programavimo kalbos dokumentacijos vertimo sistemą. Kadangi prieš kokius trejus metus aktyviai tame reiškiausi, tai jis pakvietė mane prisidėti: I am currently planning to create a platform/repository for the translation of the Perl documentation. I would like to invite you to join the “core team” that does the initial planning and will hopefully co-ordinate the translations as well as contribute to them. Skaityti toliau…

Kwiki, Perlinis wiki

Šiandien darbe pasikūriau dar vieną nedidelę wiki sistemėlę visokiems greitiems užrašams susikategorizuoti. Savaime suprantama (na, savaime suprantama, jeigu pažįstate mane), ji rašyta Perlu. Labiausiai maloniai nustebino jos įdiegimas. Tereikia instaliuotis modulį per CPAN ir parašyti tris eilutes konsolėje: moxliukas@bluecarrot:~$ mkdir public_html/kwiki moxliukas@bluecarrot:~$ cd public_html/kwiki moxliukas@bluecarrot:~/public_html/kwiki$ kwiki-install Kwiki software installed! Point your browser at this location. Paprasčiau nebūna. Beje, ši wiki sistema vadinasi Kwiki, o ją galima rasti čia.

Perl klaida

Pastarąją savaitę Perl susirašinėjimo sąrašuose labai aštriai diskutuojama viena Perl klaida, kuri ką tik buvo ištaisyta. Kai kurie sako, kad tai visai ne klaida, kad viskas turėtų būti palikta kaip ir buvo. Na, gal kas galit pasakyti, kur čia klaida šitame sakinyje: my $foo = 1 if $bar; Problema yra tame, kad $foo yra leksinis kintamasis, ir nelabai aišku, kaip apibrėžti jo galiojimo sritį. Jeigu tą patį perrašysime kitaip, tai srities ribos žymiai paaiškės: Skaityti toliau…

Perl konferencija?

Po PHP konferencijos jau kokie trys žmonės manęs teiravosi, ar aš nesiruošiu daryti kokios nors atsakomosios konferencijos Perl tema. Tiesą sakant tokia maža ir neryžtinga mintis buvo kilus, paskui labai greitai jos atsisakiau, o vat dabar tie klausinėjimai vėl privertė ją prisiminti. Konferenciją suorganizuoti gal ir nėra taip sudėtinga, tačiau pats neaiškiausias dalykas būtų tokios konferencijos reikalingumas (na… kiek žmonių iš vis tai būtų įdomu… Lietuvoj ta Perlo kalba yra primiršta ir entuziastų kaip ir nedaug) bei jos kokybė (Tarkim Perlo pradmenis aš moku gal ir neblogai, bei moku pritaikyti jį web aplinkoje, bet su sistemų administravimo moduliais nesu dirbęs… ir ar atsirastų žmonių kurie sutiktų aukoti savo laiką ir būtų pasiruošę pašnekėti apie vieną ar kitą niuansą). Skaityti toliau…

Parrot bei egzegezės

Vakar išleista pirma jau kiek rimtesnė Parrot versija – v0.1.0. Parrot yra platforma, šiek tiek panaši į .NET bei JVM, skirta interpretuojamoms kalboms kaip PHP, Ruby, Python, TCL, Basic, LISP, o ypač Perl6. Šioje naujoje versijoje svarbiausi pokyčiai yra gijų palaikymas (threads), bei svarbiausia – objektai. Taipogi atsirado daug daugiau dokumentacijos. Parsisiųsti galima adresu http://www.cpan.org/authors/id/L/LT/LTOETSCH/parrot-0.1.0.tar.gz, o daugiau apie patį Parrot – http://parrotcode.org. Tuo tarpu Damian Conway išleido septintą egzegezę (Perl6 sintaksės aprašymą) apie tai, kas Perl6 pakeis Perl5 formatus. Skaityti toliau…

Perl poezija

$you->said("Who needs tommorow?") while $we->have($tonight); $I = shift @closer for @love; Berods įsimylėjau.

Naujos versijos

Keletas naujienų iš naujų versijų pasaulio: ką tik išleistas Perl 5.005_04. Tai labai senas perlas, tačiau jei kartais sėdite prie senų dinozaurų, tai atsinaujinimas nepakenks. Daugiausia šioje versijoje yra klaidų pataisymai, bei pritaikymai naujesniems kompiliatoriams. Kita, įdomesnė naujiena, yra Subversion 1.0 išleidimas. Subversion yra bylų versijų kontrolės sistema, kuri ruošiasi pakeisti CVS. Subversion išsprendžia problemas, nuo kurių kenčia CVS – ji palaiko bylų pervadinimą, direktorijų struktūros pokyčius, dvejetaines bylas, metaduomenų pokyčius ir t. Skaityti toliau…

Perliška vartotojų sistema

Skaičiausi čia neseniai apie Perlo modulį Class::DBI ir šiandieną sumaniau jį šiek tiek išbandyti. Šis modulis yra duomenų bazės objektinė abstrakcija, ir viską daro tokiame aukštame lygyje (t.y. taip toli nuo pačios duomenų bazės), kad norint ja naudotis net nereikia mokėti SQL (OK, OK, SQL visada pravartu mokėti, bet labai paprastiems dalykams gali to ir neprireikti). Taigi išbandymui sugalvojau pasirašyti vartotojų prisijungimo sistemą. Class::DBI priverčia viską apgalvoti ir išdėlioti objektiškai, į atskirus modulius, tad atsiranda krūvos mažų failiukų, kuriuos reikia dėti kažkur į atskirą lib direktoriją. Skaityti toliau…

Sitepoint apie PHP::Strings

Harry Fuecks, PHPPatterns kūrėjas ir sitepoint PHP weblogo savininkas, pastebėjo minėtame webloge mano dabar palaikomą Perlo modulį PHP::Strings. Harry klaidingai mano, jog perlininkai priešiškai nusiteikę prieš PHP dėl to, kad pavydi jam sėkmės. Kiek teko bendrauti su viso pasaulio perlininkais, tai požiūris į PHP visada būdavo neigiamas ne dėl pavydo, o dėl to, kad PHP nelaikoma rimta kalba (dėl tokio įsitikinimo teisingumo, aišku, galima ginčytis, bet enterprise lygyje PHP vis dar neturi tokių stiprių pozicijų kaip Perl, Java ir panašiai). Skaityti toliau…

Smarty ant Perl?

Perlo konferencijoje buvo iškeltas pasiūlymas, kad į standartinius Perlo modulius reiktų įtraukti ir kokią nors šablonų sistemą. Tiesa, ši idėja priimta nelabai gerai, nes paskutiniu metu stengiamasi Perlą sumažinti kiek įmanoma paliekant tik svarbiausius modulius, kurių reikia pačiam Perlui bei kitų modulių pasiėmimui per CPAN. Tačiau šioje diskusijoje iškilo dar viena labai idomi idėja – galbūt reikėtų nuportinti Smarty ant Perl. Štai citata: By the way, has anyone written a perl module to correctly interpret the Skaityti toliau…

PHP::Strings

Paskutinėmis praeitų metų dienomis staiga mirė vienas iš Perlo programuotojų, perlreref autorius (lietuviškas vertimas čia) Iain „Spoon“ Truskett. Jam tebuvo tik 24 metai. Taip viskam atsitikus, liko keletas jo CPAN modulių, ir Perlo bendruomenė pradėjo rūpintis, kad jie nebūtų apleisti. Vienas modulis patraukė mano dėmesį, nes panašių minčių turėjau ir aš. Tai PHP::Strings, kuriuo implementuojama daugelis PHP funkcijų Perlu. Pasisiūliau jį prižiūrėti, jei neatsiras kas nors labiau patyręs ;-) Pačiame modulyje yra keletas įdomių nuorodų, kur aprašomi PHP trūkumai, štai jie: Skaityti toliau…

Perl 5.8.3

Vakar vakare buvo išleistas Perl 5.8.3. Didelių problemų su Release Candidate lyg ir nebuvo, tad nėra ir didelių pakeitimų. Lietuvišką pokyčių aprašymą galite rasti čia (HTML variantas)

perl583delta.pod

Kadangi jau turbūt ryt ar poryt bus išleistas pirmas Perl 5.8.3 Release Candidate, tai išverčiau pokyčių sąrašą, kurį galima pamatyti adresu http://moxliukas.esu.as/download/doc/perl583delta.pod

Asmens::Kodas

The URL http://moxliukas.esu.as/download/src/Perl/Asmens-Kodas-0.01.tar.gz has entered CPAN as file: $CPAN/authors/id/K/KU/KUDARASP/Asmens-Kodas-0.01.tar.gz size: 1859 bytes md5: 14269ea9efca41e0559951ac20152858 No action is required on your part Request entered by: KUDARASP (Petras Kudaras) Request entered on: Mon, 29 Dec 2003 09:07:23 GMT Request completed: Mon, 29 Dec 2003 09:09:13 GMT Thanks, -- paused, v460 Reikės dar padaryt normalesnį datų tikrinimą Asmens kodui :/

Perlo gimtadienis

Pagal perldoc perlhist šiandien yra 16-asis perlo gimtadienis. Šia gimtadienio proga Richard Clamp nubraukė dulkes nuo senojo perlo ir išleido 1.0_16 versiją (su pataisymais, kad kompiliuotųsi ant gcc 3.3)

Perl Oksfordo žodyne

Dar viena naujiena iš Perl pasaulio svetainėje http://use.perl.org: žodis „Perl“ įtrauktas į Oksfordo anglų kalbos žodyną. Įraše sakoma, jog nereiktų rašyti PERL, kad Perl yra kalbos pavadinimas, o perl – interpretatoriaus, kad pirmą kartą žodis oficialiai panaudotas Larry Wall Usenet žinutėje 1987 metų gegužės 13 dieną.

Perthon

Va ką šiandien užtikau: Posted today on PerlMonks was an interesting tool. Eventually, I hope you Python monkeys will come to your senses and turn to Perl for sanity. To ease such transition, see the Perthon project: /http://perthon.sourceforge.net Now, your Python code can be reborn as the Perl it always should have been. Komentarų turbūt nereikia ;-) Šiaip įdomus projektukas (bet kaip ir dauguma kalbų vertėjų turbūt nelabai pritaikomas praktikoje)

Perlo objektai: antra dalis

Pagalvojimai apie ateitį: geresni konstruktoriai Nors šiuo metu dar gal ir nežinote kas yra paveldimumas, bet kažkada ateityje matyt teks su tuo susidurti. Tam, kad paveldimumas veiktų kaip turėtų, reikia naudoti bless() sudviem argumentais. Antruoju argumentu yra perduodama klasė, į kurią bus „palaiminama“. Tuo pačiu padarysime konstruktorių lankstesnį, kad būtų jį galima iškviesti tiek kaip klasės, tiek kaip ir objekto metodą. T.y. kad būtų galima rašyti: $as = Asmuo->naujas(); $ji = $as->naujas(); Viskas ką mums reikia padaryti, tai patikrinti ar į konstruktorių buvo perduota nuoroda (reference) ar ne. Skaityti toliau…

Perlo Advento kalendorius

Kaip ir pernai metais, Mark Fowler sudarė perlinį advento kaledorių, kuris kiekvieną dieną iki Kalėdų pasakos apie vis naują Perlo modulį ir aiškins kaip jsuo naudotis. Kalendorių galima rasti adresu http://www.perladvent.org/2003/

Perlo objektų pradžiamokslis: pirmoji dalis

Objekto vaizdavimas Dažniausiai Perle Paskalio įrašas arba C struktūra, arba C+ klasė yra saugoma anoniminio asociatyvaus masyvo (hešo) pavidalu. Taip saugoti yra patogu, nes heše galima saugoti neribotą kiekį elementų, kuriuos galima pasiekti per unikalų hešo raktą. Jeigu tik norite kažko panašaus į C struktūrą, tai galima daryti taip: $irasas = { vardas => "Petras", amzius => 21, kolegos => [ "Juozas", "Nikolajus", "Vaidas"], }; Jeigu norite lengviau perskaitomo kodo, galite hešo raktus Skaityti toliau…

Perlinio modulio pavyzdys

Vakar IRC buvau paklaustas, kaip yra daromi objektiniai Perlo moduliai. Parašiau ir paprastą moduliuką, kuris parodo kaip veikia visas Perlo objektiškumas. Štai modulis Modulis.pm: package Modulis; use strict; use warnings; sub naujas { bless {}; } sub vardas { my $self = shift; $_[0] ? $self->{'vardas'} = $_[0] : $self->{'vardas'}; } 1; Modulis prasideda paketo apibrėžimu (package Modulis;) bei aprašo dvi funkcijas (tiksliau vieną funkciją ir vieną metodą). Funkcija naujas sukuria ir grąžina naują objektą Modulis. Skaityti toliau…

Šventasis moxliukas

Nagi šiandien tapau 236-uoju Perlmonks šventuoju. Tai vat. Pasigyriau.

Acme::Apache::Werewolf

Acme::Apache::Werewolf yra naujas ir labai naudingas Perlo modulis, kuris leidžia apsaugoti Apache serverio direktorijas nuo vilkolakių. io modulio pagalba galima uždrausti priėjimą prie Apache direktorijų mėnulio pilnaties metu, tereikia į httpd.conf įrašyti: <Directory /fullmoon> PerlAccessHandler Acme::Apache::Werewolf PerlSetVar MoonLength 4 </Directory> Tris kart valio CPAN, nes dabar mano Apachei nebaisūs jokie vilkolakiai.

Perl 5.6.2

Šeštadienį buvo išleista 5.6.2 Perlo versija. Perlo 5.6.x šaka nėra mirusi, ji vis dar palaikoma. Pagrindinis šios versijos tikslas buvo galimybė sukompiliuoti Perlą su naujais įrankiais (kaip kad gcc 3.3) ir operacinėmis sistemomis, kurios atsirado jau po Perl 5.6.1 išleidimo (AIX 5 ir Mac OS X). Tuo pačiu buvo atnaujinti ir kai kurie moduliai. Parsisiųsti 5.6.2 galima iš čia.

Moblogas

Vakar naktį pasidariau moblogą. Tai turbūt vienas iš tų projektų kur dariau nes galiu padaryt, o ne todėl kad reikia. Faktiškai Perlo kodo rašymas visada malonus, net jei ir nepildysiu to moblogo ateityje – iš manęs fotografas tai kaip iš mano bobulės perlininkė. Visam šitam daiktui tiesiog persikopijavau savo svetainės kodą į kitą direktoriją, šiek tiek pataisiau šablonus (bet ne iki galo, nes vakar jau labai norėjosi miego), sukūriau porą SQL lentelių, pataisiau kodą, kad dirbtų su tomis naujomis lentelėmis ir parašiau el. Skaityti toliau…

Įdomūs lingvistiniai pastebėjimai

Pastarosiomis dienomis internete sklando šis tekstas: Aoccdrnig to a rscheearch at an Elingsh uinervtisy, it deosn’t mttaer in waht oredr the ltteers in a wrod are, the olny iprmoetnt tihng is taht frist and lsat ltteer is at the rghit pclae. The rset can be a toatl mses and you can sitll raed it wouthit a porbelm. Tihs is bcuseae we do not raed ervey lteter by it slef but the wrod as a wlohe. Skaityti toliau…

HTML::Mason ir Perl.lt

Jau keletą kartų esu minėjęs Perlo modulį HTML::Mason, kurio dėka galima rašyti web skriptus PHP stiliumi. HTML::Mason geriausiai veikia ant mod_perl, bet tik ant pirmos Apache versijos. Nežinau ar tai gerai, bet stengiuosi po truputį pereiti prie Apache2, o ten pasirodo HTML::Mason dar nėra palaikomas per mod_perl. Bet visgi sprendimas yra – naudotis CGI sąsaja. Beje, Oreilly knyga apie HTML::Mason kabo nemokamai internete adresu masonbook.com. Tai šiandieną turbūt paskirsiu jos skaitymui (nors ir gimtadienis mano ;). Skaityti toliau…

Įpraiškų variklio paaiškinimas

Bevaikštinėdamas po interneto svetaines aptikau nuorodą į labai puikų skaidrių rinkinį, kuris labai aiškiai paaiškina, kaip veikia įpraiškų variklis Perle (na, ar bet kur kitur, kur veikia Perlo įpraiškos). Jeigu naudojatės įpraiškomis, bet tiksliai nežinote kaip jos veikia, tai labai naudinga pasiskaityti. Skaidres galima ir parsisiųsti.

Perlo „range“ operatorius

EnC manęs PHP forume paprašė paaiškint, kaip veikia Perlo „range“ operatorius. Nesinori PHP forumą teršti perliniais dalykais, tad bandysiu tai paaiškinti čia. Beje, visa tai ką čia rašau galima rasti Perlo dokumentacijoje (konsolėje tereikia surinkt perldoc perlop). Perlo „range“ operatorius žymimas dviem taškais, ir reiškia faktiškai du dalykus. Pirmoji reikšmė yra labai paprasta – parašius 1..10 gausime reikšmių nuo 1 iki 10 sąrašą (list). Būtent ši operatoriaus reikšmė naudojama masyvų kontekste (list context – kai reikia jog išraiška grąžintų masyvą, o ne skaliarą). Skaityti toliau…

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ų ;)

Svetainė Perl pradedantiesiems

use.perl.org rašo apie naują svetainę pradedantiems mokytis Perl. Ši svetainė bando surinkti visas nuorodas į pradžiamokslius, straipsnius, dokumentaciją, Perlo portus, modulius, knygas ir daug daugiau. Tiesą sakant, ta svetainė labai panaši į mano lietuviškos svetainės apie Perl viziją (maniškė vizija dar turi kažkokį „naujienų“ skyrelį pirmame puslapyje).

Apache::DBI

Hmm… aišku bėdos su MySQL nesibaigia. To $dbh ||= triuko nepakako, teko skripto gale nutraukinėt ryšį su MySQL naudojant $dbh->disconnect; — tai veikia gerai, bet niekas nebekešuojama. Ir čia į pagalbą atėjo Apache::DBI. Pasirodo užtenka jį užkrauti httpd.conf failiuke ir magiškai visos jungtys su MySQL tampa ‘persistant‘. Smagu ;)

Šios dienos svetainės pakeitimai

Šiandien čia padariau nemažai pakeitimų, bet ne viskas taip gerai ėjosi, kaip būtų galima pagalvoti. Pirmiausia tai ką tik baigiau tvarkyti (atrodo lyg sutvarkiau) MySQL serverio problemą, mat jis ėmė ir užlinko. Na, čia aišku yra mano programavimo klaida, nes pirmą kartą Perlu darau webinę aplikaciją, kuri nėra rašyta CGI. Ši svetainė naudoja mod_perl, o tai reikškia, kad automatiškai visas Perl kodas (ir ne tik kodas) yra kešuojamas. Svetainės kodą aišku rašiau kaip CGI aplikaciją, nekreipdamas jokio dėmesio į tai kad viskas kešuojama. Skaityti toliau…

Įprastinių išraiškų straipsnio papildymai

Taip, žinau. Vis neprisiruošiu pabaigti normaliai to straipsnio apie RegExpus. Iki šiol jis buvo labai nepilnas. Šiandien bent jau pabandžiau labai labai (na tikrai jau labai) trumpai sudėti informaciją apie tai, ko dar neminėjau jame. Ten faktiškai gale tik krūva pavyzdžių (netgi ne krūva… tiesiog keletas) dabar. Reikėtų juos aprašyt normaliai. Na o po to reiktų ir antrą dalį parašyt, apie ‘extended’ sintaksę. Ir pritaikyt viską Perlui ;).

PHP kodo tvarkyklė Perlu

Molotov davė man nuorodą į PHP kodo tvarkymo programą, rašytą Perlu (kažkas panašaus į visiems programuotojams žinomas lint programas). Ši programa gana gražiai parodo Damian Conway rašyto Parse::RecDescent modulio galimybes. Yra tik vienas trūkumas. Ji lėėėėta. Pasak kūrėjų “several hours for one of our 800 line examples on a gHz CPU“. Manau galima ta programėlę dar rimtai paoptimizuoti, nes pora valandų 800 eilučių kodui iš tikrųjų daugoka. Ech, jei tik turėčiau laisvo laiko… Skaityti toliau…

Perlas vis tiek atgis

Pastarieji metai Lietuvos Perlo programuotojams turbūt buvo apsnūdimo metai (Na, aišku aš galiu kalbėti tik apie IRC bei konferencijose dalyvaujančius žmones). Interneto programavime stipriose pozicijose įsitvirtino PHP, ir tam didelės reikšmės turėjo ir stipri Lietuvos PHP bendruomenė. Daugelis pripažįsta, kad PHP lengvai išmokstama kalba, labai tinkanti pradedantiesiems, bet dideliems projektams ji netinka. Tuo tarpu Perlas – galinga, bet sudėtinga kalba. Norint išpopuliarinti Perlą reikia bent paprastos lietuviškos jo dokumentacijos bei straipsnių pradedantiesiems – Perlas ir taip sudėtinga, vos ne „write-only“ kalba. Skaityti toliau…