MSDN: PHP vs ASP

Pasirodo, Microsoft turi PHP ir ASP.NET palyginimą. Aišku tas palyginimas labai vienpusis, bet ganėtinai keista, jog Microsoft naudoja tuos pačius argumentus prieš PHP kaip ir aš dažnai vartoju: lėtumas, funkcijų vardų nepastovumas, sudėtingas duomenų bazių naudojimas. Na, tas straipsnis bent jau parodo kad Microsoft rimtai žiūri į PHP kaip į konkurentus.

Jeffrey Zeldman knyga apie interneto dizainą laikantis standartų

Gegužės 12 dieną įžymusis Jeffrey Zeldman išleidžia savo knygą „Designing with Web Standards“. Jeffrey Zeldman yra vienas žymiausių apie interneto dizaino technologijas rašančių žmonių ir stipriai palaiko visus naujausius standartus. Ši knyga yra apie tai kaip galima padaryti internetinės svetainės dizainą su CSS. O pats šauniausias dalykas, kad keletą skyrių galima parsisiųsti PDF formate.

Išleistas Linky 1.6.0

Šiandien išleista Mozillos priedo Linky 1.6.0 versija. Didžiausias skirtumas nuo ankstesnės versijos yra tas, kad jis dabar veikia ir Mozilla Mail pašto kliente. Ką daro Linky? Jis gali atidaryti visas puslapio nuorodas naujuose kortelėse arba languose, gali paprastu tekstu parodyti visas puslapio nuorodas, gali atidaryti visus puslapio paveiksliukus atskiroje kortelėje ir panašiai. Mažas naudingas daikčiukas.

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.