CSS Zen Sodas

CSS Zen Garden yra labai gražus dizainerių projektas, kuriame naudojama ta pati HTML byla, bet skirtingas CSS. Šiuo metu ten galima pamatyti penkis radikaliai skirtingus dizainus. Tiesiog puiku. Tai puikiai parodo, koks galingas gali būti CSS. Beje, verta pasistudijuoti ir kodą.

Siemens buferio perpildymas

mr2 man persiuntė laišką iš bugtraq apie įdomų buferio perpildymą Siemens 45 serijos telefonuose. Pasiuntę specialiai suformuotą SMS žinutę į tokį telefoną galite jį išjungti be jokių girdimo signalo. Įjungus telefoną jis lyg veikia normaliai, tik neįmanoma nueiti į „Messages->Inbox“. Tai įvyksta dėl buferio perpildymo. SMS žinutėje paveiksliuko įterpimas yra žymimas %IMG_NAME, tačiau jei vietoj IMG_NAME įvesite 157 bet kokių simbolių, tai ir įvyks minėtas buferio perpildymas. Štai eksploito pavyzdys:

" %..........
............
............
............
............
............
............
............
............
............
............
............
............
... "

Beje, tokios žinutės negalima išsiųsti iš pačio Siemens telefono, nes siunčiant žinutę jis išsijungs. Kol kas neaišku kaip galima išvengti šitos klaidos. Turbūt teks palaukti kol Siemens išleis naujesnę programinės įrangos versiją.

[Originali e-pašto žinutė]

Microsoft .NET Passport pažeidžiamumas

Aptiktas Microsoft .NET Passport pažeidžiamumas, kuris liečia ir Hotmail paštą (dar kažkas juo naudojasi?). Bet kas gali pakeisti bet kurio vartotojo slaptažodį ir tada pasinaudoti jo vartotojo sąskaita. Šiaip pažeidžiamumas gana juokingas – .NET serverio galima paprašyti pakeisti slaptažodį (adresu https://register.passport.net/emailpwdreset.srf?lc=1033&em=auka@hotmail.com&id=&cb=&prefem=lauzhytojas@lauzhytojas.lt&rst=1), ir jis atsiųs nurodytu adresu (lauzhytojas@lauzhytojas.lt) URL (panašų į http://register.passport.net/EmailPage.srf?EmailID=CD4DC30B34D9ABC6&URLNum=0&lc=1033), kuriuo nuėjus galima pasikeisti slaptažodį. Nuėjus tuo URL ir užpildžius formą, slaptažodis bus pakeistas neįvedus senojo slaptažodžio. Smagumynai. Plačiau apie tai SecurityFocus

Update: Atrodo Microsoft susigriebė. Na bent jau dabar vietoj šios klaidos gausite 404 Page not found. Ir dabar iš vis nebegalite pasikeisti slaptažodžio ;)

Straipsnis apie PDF generavimą su PHP

Webmonkey turi gana neblogą straipsniuką apie PDF generavimą su PHP. Tiesa, pusė to straipsnio yra apie įdiegimą (kuris pasirodo yra baisiai sudėtingas), o kita — apie jo vartojimą.

Skaitant tą straipsnį iškilo man mintis ar Perle irgi taip įmanoma padaryti. Trumpas apsilankymas pas CPAN, perl -MCPAN -e 'install PDF::Create' ir jau turiu modulį PDF generavimui Perle. Štai Perlinis kodas, sugeneruojantis PDF dokumentą (pavyzdį galit matyti čia):

#!/usr/bin/perl
use strict;
use PDF::Create;
my $pdf = new PDF::Create('filename' => 'out.pdf',
                          'Version'  => 1.2,
                          'PageMode' => 'UseOutlines',
                          'Author'   => 'moxliukas',
                          'Title'    => 'Testas');
my $root = $pdf->new_page('MediaBox' => [0, 0, 612, 792]);
my $page = $root->new_page;
my $f1 = $pdf->font('Subtype'  => 'Type1',
                       'Encoding' => 'WinAnsiEncoding',
                       'BaseFont' =>'Helvetica');
$page->stringc($f1, 40, 306, 426, "Petras Kudaras");
$pdf->close;

Laikinoji atmintinė su PHP

Ši svetainė šiuo metu yra generuojama visiškai dinamiškai, t.y. užduodama krūva SQL klausimų, paimamas šablonas ir pagal jį sukonstruojamas puslapis. Visa tai labai gerai, kai lankytojų skaičius nedidelis (o lankytojų skaičius čia nėra didelis – apie 100-150 unikalių lankytojų per parą. Tad sumąsčiau, kad reikėtų pasidaryti šiokią tokią laikinosios atmintinės (kešavimo) sistemą, ir bent jau RSS naujienų negeneruoti dinamiškai. Kol kas to nereikia ta prasme, kad serveris puikiai dar viską paveža (nors tą serverį sunkiai apsiverčia liežuvis serveriu vadint – mano skaičiavimo mašinėlė turbūt greitesnė yra), tačiau kaip visada šioje svetainėje viską darau tik eksperimentuodamas ;)

Kaip tik radau aprašymą kaip Simon Willison išspręndė laikinosios atminties problemą su labai paprastu PHP skriptu. Štai visas šis kodas:

<?php
$cachefile = 'cache/index-cached.html';
$cachetime = 5 * 60;
// Jei atmintyje esantis puslapis yra jaunesnis nei $cachetime, tai pateikiame jį iš atminties
if (file_exists($cachefile) && time() - $cachetime < filemtime($cachefile)) {
    include($cachefile);
    echo "<!-- Kopija iš atminties, sugeneruota ".date('H:i', filemtime($cachefile))." -->\n";
    exit;
}
ob_start(); // Įjungiame išvedimo buferį

/* Čia įdedame kodą, kuris generuoja dinaminį puslapį */

// Įrašome visa tai kas sukaupta buferyje į atmintį (į bylą)
$fp = fopen($cachefile, 'w');
fwrite($fp, ob_get_contents());
fclose($fp);
ob_end_flush(); // Siunčiame išvedimo buferį naršyklei
?>

SMTP pakaitalas

DzHiBaS atsiuntė man nuorodą į straipsnį iš joelonsoftware.com apie tai, kad reikia iš esmės pakeisti SMTP (elektroninio pašto) protokolą, nes tai būtų vienintelė efektyvi priemonė kovoje prieš „spam’ą“. Naujasis protokolas turėtų būti saugus, pagrįstas sertifikatų sistema bei mikromokesčiais, kurie padarytų masinį laiškų siuntinėjimą tiesiog nepelningu. Problema slypi tame, kad priversti žmones pereiti prie naujo protokolo bus sudėtinga. Tam turi būti perrašytos visos elektroninio pašto klientų programos, bei serveriai, o tai kainuoja daug. Be to ir patys žmonės inertiški, tad vienintelis būdas būtų tiesiog nustatyti datą, nuo kada SMTP tiesiog nebeveiktų. Kažkaip kol kas skeptiškai žiūriu į tokią galimybę.. juk kol kas ir FIDONET sistema dar veikia ir gyvos galybės kitokių liekanų iš praeito tūkstantmečio.

Plačiau apie tai ZDNet straipsnyje.

Lietuviškas Weblogas apie technologiją

Užklydęs į BlogShares (kuris pats savaime yra atskiras projektas, reikalaujantis atskiro aprašymo) tarp geriausiųjų žaidėjų pamačiau ir lietuvišką pavardę – Edmundas Mišeikis. Pasirodo jis vilnietis ir netgi turi savo internetinį dienoraštį pavadinimu Whispering, kuriame rašo apie su technologija susijusius dalykus. Tiesa, liūdna, kad jis angliškas (aš pastaruoju metu pastebiu kad vis tampu kažkokiu didesniu patriotu ir esu visom keturiom už lietuviško interneto gerinimą ;). Štai pačios svetainės pateiktas apibūdinimas:

Whispering consolidates some knowledge in development of web applications. A personal notebook and a wiki based reference for friends and colleagues.

Na, kiek supratau interneto programų kūrimas čia pateikiamas iš Java programuotojo pusės. Šiaip ar taip, tai lietuviška (emmm… angliška)

Mozillos Prefbar įrankių juosta

Šiandieną gavau elektroninio pašto laišką iš Artūro Šlajaus, kuris man priminė, kad niekur savo svetainėje nesu minėjęs Mozillos PrefBar įrankių juostos. Džiugu, kai tavo svetainę pradeda lankyti ir ja domėtis ne vien tavo gerai pažįstami žmonės.

Mozilla PrefBar yra naudinga įrankių juosta, pritaikyta daugiau paprastiems naršytojams nei interneto programuotojams (kaip kad jau anksčiau aprašytas pnhToolbar). Aš pats PrefBar naudojuosi jau geras mėnuo, ir jis tikrai man pravertė. Pagrindinis PrefBar privalumas manau yra jo galimybė prisitiaikyti jį savo reikmėms. PrefBar’e galima nurodyti kiek jam suteikti funkcionalumo, o tas labai patogu, nes jei retai naudojatės kokia nors funkcija, ją galite tiesiog paslėpti, kad nesimaišytų po akimis. PrefBar atlieka su naršymu susijusias funkcijas: juo galima išvalyti laikinąją atmintinę (cache), naršymo istoriją, vienu spragtelėjimu išjungti paveiksliukus, flash, JavaScript ir iššokančius langus.

Tikrai vertas dėmesio dalykas.