Suimtas MSBlaster.B kūrėjas

New York
Post
rašo, kad suimtas Windows MSBlaster.B viruso (kirmino) kūrėjas.
Tai aštuoniolikmetis 145-kilograminis Bilo Geitso fanatikas ir vienišius
(kaip skaičiau viename dienoraštyje, vertimas paprastai visuomenei:
jis atrodo kaip eilinis kompiuterastas, jūs nesuklydote, jie visi
visuomenės atstumti, labai protingi ir riebaluotais pirštais
).
Tiesa, čia ne jis parašė MSBlaster, jis tik modifikavo jį
(vertimas visuomenei: gal jis ne toks ir protingas… protingieji vis
dar nerasti ir dabar jau galanda kompiliatorius ir ruošiasi smogti naują
smūgį
). Kiek pamenu Slashdot diskusijoje irgi dominavo
nuomonė, kad MS virusus kuria ne kokie linuksistai, kurie norėtų taip
diskredituoti Windows saugumą, o vaikai Microsoft fanatikai su
nusipiratautomis MS Visual Studio kopijomis savo rūsiuose.

Beje, šito vaikio pravardė buvo t33kid (kitur –
teekid). Ot skript-kiddies su savo
leet-speak.

Nežymūs WAP pakeitimai

Šiandien patobulinau lietBlogs WAP’inę versija. Pagrindinis
naujas dalykas yra dienoraščių įrašų rodymas (imama iš XML viskas).
Kartu pataisyti ir du riktai – pataisiau nuorodas į
wmlproxy bei patobulinau HTML entities (būdavo
problemų, kai ateidavo XML’e pačiame jau & tai
sugriaudavo XML struktūrą). Kaip visada, kodą galima rasti http://lietuvoje.lt/~moxliukas/files/lietBLOGS-wap-030827.tar.gz.

Taip pat turbūt teko pastebėti, kad perdarytos nuorodos kairėje.
Pamaniau, jog nebetenka prasmės kolegų dienoraščių nuorodų rašymas, kai
visas tas nuorodas (ir dar daugiau) galima rasti pačiame http://dzhibas.php.lt/blogs/

Galvosūkiai su ++

Vat Perlmonksuose radau tokį įdomų
klausimėlį . Štai kodo gabaliukas, pabandykit pasakyt ką jis spausdins
(jo nepaleidę):

$a = $b = $c = 1;
$a = $a++ + $a++;
$b = $b++ + $b  ;
$c = $c   + $c++;
print "$a $b $c";

Na, aš teisingai atsakiau ką spausdins tik du ;) (na, jei PHP
taisyklėmis – tai visus tris). Atrodo kad Perlas čia skiriasi nuo
PHP. PHP spausdina kaip ir tikėjausi 3 3 2, tuo tarpu
Perlas – 3 3 3. Paaiškinti KAIP tai įvyksta
ant Perlo nesunku, bet KODĖL yra sunkiau (dokumentacija rašo, kad
tokiais atvejais rezutatas gali būti neapibrėžtas – tai yra vieną
kartą būti vienoks, o kitą kitoks)

moxliukas@www:~$ perl -MO=Deparse,-p
$a = $b = $c = 1;
$a = $a++ + $a++;
$b = $b++ + $b  ;
$c = $c   + $c++;
print "$a $b $c
";
^D
($a = ($b = ($c = 1)));
($a = (($a++) + ($a++)));
($b = (($b++) + $b));
($c = ($c + ($c++)));
print("$a $b $c
");
- syntax OK

lietBLOGS WAP versija

Vakar vakare padariau Džibo
lietBLOGS
WAP’inę versiją. Su WAP didžiausia problema yra ta,
kad ribojamas puslapio dydis (kažkur iki 1200 baitų?). taip pat teko
pasukt galvą dėl lietuviškų koduočių (WML Unikodas atrodo gana gerai
palaikomas, tik reikia paduoti jį koduotą HTML entities (stiliumi
ģ). Džibo XML yra paduodamas
windows-1257 koduote, tad tenka jį konvertuotis į
utf-8 (hmm.. kaip būtų paprasta jei visas pasaulis gyvenatų
su viena koduote :)

Šiaip tai trūksta dienoraščių autorių vardų Džibo pateikiamame XMLe,
tikiuosi tai bus pataisyta. WAPinę versiją kol kas galite pasiekti http://lietuvoje.lt/~moxliukas/wml/index.pl.
Pradinį kodą galite parsisiųsti iš http://lietuvoje.lt/~moxliukas/files/lietBLOGS-wap-030826.tar.gz.

Išleistas PHP4.3.3

Štai ir išleistas PHP
4.3.3
. Patobulinimai vėlgi gal daugiau kosmetiniai (daugiausia
bibliotekų atnaujinimai) ir daug riktų pataisymų. Įdomiausi riktai yra
keletas skaičių ir buferių perpildymų, kurie gali būti
pavojingi saugumui
“ ir „multibaitinių simbolių su
0x5c antrame baite susigadinimas
“. Siūloma visiems
saugumo sumetimais pereiti prie naujos versijos. Hmm… vis ta
nestabilioji 4.3.x šaka…

Komentarų jubiliejus

Šiuo metu kai rašau šitai šioje svetainėje yra 999 komentarai. Galima
sakyt kaip ir koks nedidelis jubiliejus ;) Ta proga padariau šone ten
trijų paskutinių komentuotų temų sąrašą – tikiuosi bus lengviau
sekti kas ką kur pakomentavo ;)

Ta pačia proga išsitraukiau ir statistiką kas čia daugiausiai mėgsta
komentuoti – kadangi kompiuteristai dažnai yra statistikos
maniakai tai manau bus įdomu:

+-----------------+------+
| Vardas          | kiek |
+-----------------+------+
| moxliukas       |  199 |
| NB              |   70 |
| EnC             |   47 |
| anonimas        |   41 |
| scooox          |   30 |
| Lakunas         |   27 |
| arturaz         |   26 |
| Brat            |   24 |
| godzhirra_da_mc |   22 |
| ic              |   20 |
| DzHiBaS         |   19 |
| azero           |   19 |
| oryx            |   16 |
| Emilis          |   16 |
| Liuksas         |   15 |
| matis           |   15 |
| shvln           |   15 |
| pukomuko        |   14 |
| dirty_dozen     |   10 |
| Pumba           |   10 |
+-----------------+------+

PHP simbolis – drambys?

Atrodo, kad phpclasses.org siūlo
PHP simboliu padaryti dramblį (elePHPant). Kai tik skaičiau
naujieną apie tai, tai galvojau kad dramblys didelis, nejudrus ir dėl to
gi nelabai turėtų tikti PHP (na, Perlo simbolis kupranugaris irgi ne
pats greičiausias – bet Perlo simbolis buvo parinktas ne Perlo
bendruomenės, o O’Reilly korporacijos knygos viršeliui). Bet paskui
prisiminiau jog Linuxo pingvinas irgi ne pats greičiausias gyvūnas
pasaulyje. Na, man dar dramblys asocijuojasi su žodžiu
„didelis“ tad gal čia norima pasakyti jog PHP yra daug kur
naudojamas daiktas. Hmm, nežinau.

Tiesa, tokie pamąstymai visiškai pasikeitė, kai tik pamačiau tą tikrąjį
dramblio logo
. Neatrodo jis nei didelis, nei nejudrus. Kaip tik,
atrodo jame amžinai įsispaudusi idiotiška šypsena ir pakelta uodega
sako, jog „esu dar mažas, ir atleiskit jei ką pridirbau“.
Na, bet iš manęs meno kritikas menkas, o apie marketingą irgi mažai ką
nutuokiu. Dar galėčiau pasiskųsti apie baisų phpclasses.org dizainą, pilną keistų
reklamų, mirksinčių daiktų ir reikalavimų registruotis norint siųstis
nemokamas klases, bet reikia eit dirbt ;)

Rikiavimas Ruby kalba

Perlo rikiavimo pavyzdžiai gali atrodyti sudėtingi, nes Perlo sintaksėje daug visokių @$%{},
o ir patys objektai iš tikrųjų tėra tik asociatyvieji masyvai, magišku būdu žinantys kokiam paketui jie
priklauso. Tad štai rikiavimo Ruby kalba pavyzdžiai.

Paprastas rikiavimas.

a = [0,3,5,3,1,2,4,6,2,4,5,7,3]
a.sort!
a.each{|i| print i, ' '}

(Galima tiek Perle, tiek Ruby rašyti tiesiog print a, bet tai išves masyvo narius neatskiriant juos tarpais.
Pitonas matyt dumpina visą struktūrą tokiu atveju)

Rikiavimas su funkcija:

a = [0,3,5,3,1,2,4,6,2,4,5,7,3]
a.sort! { |x, y| x - y }
a.each{|i| print i, ' '}

Hešų masyvo rikiavimas:

a = [{'item' => 6, 'zodis' => 'ka'},
     {'item' => 2, 'zodis' => 'kva'},
     {'item' => 5, 'zodis' => 'kre'}]
a.sort! { |x, y| x['item'] <=> y['item'] }
a.each{|i| print "item: #{i['item']}, zodis: #{i['zodis']}\n" }

Objektų rikiavimas:

class Objektas
def initialize(skaicius) @skaicius = skaicius end
def kasastoks() print "Esu objektukas nr. #{@skaicius}\n" end
def skaicius() @skaicius end
end
a = [Objektas.new(3), Objektas.new(2), Objektas.new(19), Objektas.new(1)]
a.sort! { |x, y| x.skaicius <=> y.skaicius }
a.each { |i| i.kasastoks }

Verta pažymėti, jog Ruby laikosi visų objektinio programavimo principų, ir visi klasės kintamieji
yra privatūs (t.y. skirtingai nuo Python, juos galima pasiekti tik iš pačios klasės aprašymo)

Rikiavimas Perlo programavimo kalboje

Prieš savaitę Džibas aprašė rikiavomus Python kalba, tad sumaniau jog nereikia atsilikti, ir bandysiu pateikti analogiškus Perl rikiavimo būdus ;)

Paprasčiausiai rikiuoti masyvo elementus didėjimo tvarka užtenka iškviesti funkciją sort:

@a = (0,3,5,3,1,2,4,6,2,4,5,7,3);
my @a = sort @a;
print "$_ " for @a;

Spausdina:

0 1 2 2 3 3 3 4 4 5 5 6 7

Kaip ir Pitone, galima pasirašyti savo rikiavimo funkciją:

my @a = (0,3,5,3,1,2,4,6,2,4,5,7,3);
@a = sort { $a - $b } @a;
print "$_ " for @a;

Spausdins tą patį kaip ir prieš tai.

Toliau Džibas parodė kaip rikiuoti hešų hešus (hmm… ten šiaip gi logiškai turėtų būti hešų masyvas…). Taigi toks pat pavyzdys su Perlu (tik su hešų masyvu):

my @a = ( { 'item' => 6, 'zodis' => 'ka' },
          { 'item' => 2, 'zodis' => 'kva'},
          { 'item' => 5, 'zodis' => 'kre'} );
@a = sort { $a->{'item'} <=> $b->{'item'} } @a;
print "item: $_->{'item'} zodis: $_->{'zodis'} \n" for @a;

Spausdina:

item: 2 zodis: kva
item: 5 zodis: kre
item: 6 zodis: ka

O va taip rikiuojami objektai:

package Objektas;
sub naujas {
	my ($self, $skaicius) = @_;
	bless {'skaicius' => $skaicius}, $self;
}
sub kasastoks {
	my $self = shift;
	print "Esu objektukas nr. $self->{'skaicius'}\n";
}
package main;
my @objMasyvas = (Objektas->naujas(3),
		  Objektas->naujas(2),
 		  Objektas->naujas(19),
		  Objektas->naujas(1));
@objMasyvas = sort { $a->{'skaicius'} 
                          <=> 
                     $b->{'skaicius'} } @objMasyvas;
$_->kasastoks() for @objMasyvas;

Tai spausdina:

Esu objektukas nr. 1
Esu objektukas nr. 2
Esu objektukas nr. 3
Esu objektukas nr. 19

O pasižaidimui, šiek tiek sutrumpintas kodas, darantis visiškai tą patį :)

package Objektas;
sub naujas    { bless {'skaicius' => $_[1]}, $_[0]; }
sub kasastoks {	print "Esu objektukas nr. $_[0]->{'skaicius'}\n"; }
package main;
my @objMasyvas = map { Objektas->naujas($_) } (3,2,19,1);
@objMasyvas = sort { $a->{'skaicius'} <=> $b->{'skaicius'} } @objMasyvas;
$_->kasastoks() for @objMasyvas;

Standartai dienoraščiuose

Pasižiūrėjau kad puikusis naujasis Džibo projektukas „lietuviški
dienoraščiai“
kažkaip keistai bendrauja su mano įrašų datomis
(laikas rodomas penkiomis valandomis vėlesnis – dėl to mano įrašai
puikuojasi visą laiką kaip patys naujausi ;)

Esmė tame, kad visuose dienoraščiuose naudojamos dvi datų versijos
Dublin Core datos formatas (einantis
<dc:date> lauke ISO 8601 formatu) ir standartinė
Netscape (tais gūdžiais laikais kai buvo formuojami pirmi RDF
standartai) įvesta RFC822 data (lauke <pubDate>).
Aišku prie viso to prisideda dar tie visi džiaugsmai vadinami laiko
zonomis. Plačiau apie laikų istoriją ir panašiai galima pasiskaityti pas
Dive into Mark
.

Peržiūrėjau RSS esančius Džibo lietuviškų dienoraščių sąraše ir radau
kad dauguma naudoja ISO 8201 datą (su Dublin Core). LiveJournalininkai
savaime suprantama naudoja GMT laiką, bet čia Džibo svetainė manau
turėtų tą laiką paversti į EET. Labai keistai datą perdavinėja visi iš
*.php.lt (kaip UNIX timestampą – ar tai atitinka
standartus?) Kai kurie neperduoda iš vis laiko zonos, bet tai leidžiama
pagal standartus.

Beje, beside,
pukomuko
ir araki vis dar nustato
Content-type į text/html, kas labai negražiai
atrodo Mozilloj ;) Juk turėtų būti text/xml