MyEgo.cz - Radek Hulán webzine

MyEgo.cz

home foto blogy mywindows.cz kontakt

Zpráva o stavu internetu v Čechách

Technologie 27.10.2004
Nokia

V posledních několika týdnech elektronická média a weblogy hodně spekulují o tom, jak moc je potřeba rychlý internet, a jak moc lidem chybí. Také jsem zastával tento názor. Nicméně, dnes jsem si jej poněkud přetvořil.

Pro rychlý internet chybí obsah, není na něj čas, a není po něm masová poptávka. Rychlý internet potřebuje (kromě profesionálů a internetových maniaků) primárně zloděj na P2P sítích, který krade ripovaná DVD do DivX, popřípadě programy a hudbu na DC++ či BitTorrentu.

Normální člověk rychlý internet nepotřebuje, tomu stačí dial-up. Uvedu dva příklady, proč tomu tak je.

Přijel jsem dnes, po delší době, s dcerou, šestiletým prvňáčkem, na Moravu, na prodlužený víkend k rodičům. Máma měla předělanou kuchyň, a v ní nové spotřebiče, troubu, myčku, a pár dalších věcí. Vše kvalitní značky, nerez ocel, trojité sklo, a tak dál…

“Kde jsi to kupovala?”, zeptal jsem se jí. “No přece na internetu, je to tam levnější!”, automaticky odpověděla. “A poradila jsem to i lidem z práce, mají radost, že ušetřili…”, dodává… Moji rodiče, máma 50 let, táta 56 let, co mají doma počítač hlavně kvůli mě (a ode mě), abych nedostal bez-internetový absťák, když tam občas přijedu, a používají internet 2 hodiny týdně, přes dial-up, si automaticky jdou sice vyhlédnout a vyzkoušet zboží do kamenného obchodu, ale pak přes google.com a seznam.cz hledají, kde to samé zboží koupí o 30% levněji, a s dovozem zdarma příští den.

Mám rád Tesco!

Tesco

V poslední době naši socialisté často diskutují o různých omezeních. Socialisté totiž chtějí programově omezovat naši osobní svobodu… Jedním z takovýchto nepochopitelných omezovacích blábolů je i návrh na změnu 24-hodinové otevírací doby v supermarketech Tesco. Tedy, pod tou změnou je míněn prachsprostý zákaz ;)

Jejich argumentace? Prý je to dobré pro zaměstnance… Aha. To je ale podivný důvod… Dobré pro zaměstnance? V čem proboha???

Žádný zákaz, žádné omezení svobod, žádné omezení volby člověka zákonem (volby, která neškodí někomu jinému) není a nemůže být, principiálně dobré. Jen… komunisticky hloupé. Zakážeme-li Tescu mít otevřeno po 10:00 hodině večerní, tak… pár lidí přijde o práci! Pár lidí, co dělají až do pozdního večera (a je jich dost!), si nebude moci nakoupit. A jeden hloupý poslanec bude rád, že… on něco prosadil. Bude rád, že omezil naše svobody.

V této stranické linii bychom mohli rovnou zakázat jezdit taxíkářům v noci (vždyť ti chudáci by se měli vyspat, ne?), jezdit vlakům, zakázat práci i řidičům tramvají, řidičům metra, ba i osobní dopravu autem bychom po 10:00 hodině večerní měli zakázat. Připomíná Vám to stanné právo? No jasně! Pracovat v noci dle některých (post-komunistických) poslanců není dobré, a zvláště v Tescu ne!! Poslanci to vědí nejlépe.

V čem je Tesco tak odlišné oproti těm mnoha a mnoha jiným profesím, které v noci normálně pracují??? V čem je jiné, když taxíkář, lékař, policista, majitel restaurace, majitel diskotéky, či barman, nebo i programátor, a mnozí další, v noci normálně pracují, ale prodavačka v Tescu, to ne!! To je špatně!!

Není to špatně. Možnost volby je vždy dobrá. Vždy!

Já osobně většinou nakupuji ve 2:00 hodiny ráno. Mám Tesco moc rád. Bydlím sice na Praze 1 (pro nepražáky, v centru), ale i tak jedu autem na Zličín (pro nepražáky, dálnice na Plzeň), a v pohodě, bez front a spěchu, nakoupím. A ve 3:00 ráno jdu spát.

Pokud opět budete číst o nějaké (stupidní) regulaci, tak zkuste přemýšlet, k čemu je to vlastně dobré a komu to slouží. Dle mého názoru, tento konkrétní návrh na omezení svobod občanů pochází od konkurence Tesca :) A většina jiných návrhů na omezení svobod a práv občanů pochází z touhy po moci. Ne z touhy sloužit lidem.

Mám rád Tesco. Mám rád svobodu a možnost volby.

Funkce SQLite se rozšiřují pomocí PHP

PHP 23.10.2004

SQLite je ještě lepší, než jsem čekal. Nejenom má v 200KB podporu pro triggery a views, ale její SQL příkazy a funkce je díky integraci s PHP možno rozšiřovat o libovolné callbacky (na PHP funkce).

Pokud tedy SQLite nemá funkci UNIX_TIMESTAMP(), která převede string na UNIX-like datum (počet sekund od 1.1.1970), tak si ji nadefinujete v PHP, registrujete pro SQLite, a používáte ji potom zcela normálně ve Vašich SQL příkazech.

Například takto můžete SQLite rozšířit o podporu pár funkcí, které oproti MySQL nativně nemá:

sqlite_create_function($db,'UNIX_TIMESTAMP','strtotime',1);
sqlite_create_function($db,'NOW','time',0);
sqlite_create_function($db,'DAYOFMONTH','_day',1);
sqlite_create_function($db,'MONTH','_month',1);
sqlite_create_function($db,'YEAR','_year',1);
sqlite_create_function($db,'SUBSTRING','substr',3);

function _day($time) {
	return date("d",strtotime($time));
}
function _month($time) {
	return date("m",strtotime($time));
}
function _year($time) {
	return date("y",strtotime($time));
}

Pohádka o spravedlivé daňové soustavě

Tento příběh (zaslaný od jednoho čtenáře) poměrně pěkně vykresluje, proč současný daňový systém nefunguje. Zkusím jej vyprávět dceři jako pohádku na dobrou noc, uvidíme, co na to bude říkat, její smysl pro spravedlnost je poměrně široce vyvinutý, a tudíž, pravicový :-) Mimochodem, říká Vám něco myšlenka rovné daně?


Taxopyer

Milé děti, dnes si povíme něco o daňových úlevách. Nebojte se toho názvu, vysvětlíme si to tak, že tomu bude každý rozumět.

Žilo bylo 10 pánů, kteří spolu chodili každý den do restaurace na oběd. Za oběd měli pokaždé zaplatit dohromady přesně 1000 korun.

Pánové se dohodli na tom, že se na té tisícovce budou podílet tak, jak platí daně. Takže první čtyři, ti nejchudší, neplatili nic. Pátý zaplatil 10 korun, šestý 30 korun, sedmý 70 korun, osmý 120 korun, devátý 180 korun a desátý, ten nejbohatší, 590 korun.

Takhle to šlo celé roky a nikdo si nestěžoval.

Až jednou hostinský přišel s tím, že jim dá slevu a bude po nich chtít každý den za oběd jen 800 korun místo 1000, protože jsou to stálí zákazníci. To bylo od něho moc hezké. Jak si ale rozdělit těch ušetřených 200 korun? Kdyby každý z deseti pánů platil o 20 korun méně, prvních pět pánů by dokonce dostávalo peníze za to, že chodí na oběd. Hostinský jim navrhl se o úsporu podělit tak, v jakém poměru platí za oběd.

Vzal si papír a tužku a začal počítat.

Vyšlo mu toto: Pátý pán už nebude muset platit nic, stejně jako první čtyři, takže 100% úspora. Šestý bude platit 20 korun, místo 30, ušetří 33%. Sedmý bude platit 50 místo 70 korun, ušetří 28%. Osmý pán zaplatí 90 místo 120 korun a ušetří 25%. Devátý zaplatí 140 místo 180 korun, takže ušetří 22%. Desátý pán, nejbohatší, bude platit 490 místo 590 korun. Úspora 16%. Každý z těch šesti na tom bude lépe, než předtím, a ti první čtyři mohou i nadále jíst zadarmo.

Jak se ale vzápětí ukázalo, velké nadšení ten návrh nevyvolal.

“Takže já z těch 200 korun dostanu jen 10?”, křičel šestý pán, ukázal na desátého, nejbohatšího, a pokračoval: “A tenhleten dostane hned 100!”

“To je pravda!”, křičel pátý pán, “Já ušetřím jen 10 korun, ale on desetkrát víc!”. “Opravdu!”, přidal se sedmý, “takže jemu stovku a mně jen dvacku?!”.

Rozkřičeli se i první čtyři pánové: “A my nedostaneme vůbec nic? Jak k tomu přijdeme? Zase jsou na tom nejhůř ti nejchudší, jako vždycky!”

A všech devět se vrhlo na toho desátého a ztloukli ho.

Příštího dne se desátý pán u oběda neobjevil. Nijak jim to nevadilo, prostě si sedli a jedli bez něho. Když ale došlo k placení, zjistili zajímavou věc: Všichni dohromady neměli ani na polovinu sumy, kterou zrovna projedli. A pokud mezitím neumřeli hlady, tak se tomu diví dodnes.

A takhle, milé děti, funguje daňový systém. Pokud dojde k daňové úlevě, mají z toho nejvíc ti nejbohatší. Pokud by ale museli platit příliš, může se stát, že se příští den u našeho stolu neobjeví. Ve Švýcarsku, v Karibiku a i jinde na světě je spousta pěkných restaurací…


V praxi je to ještě poněkud složitější, vysoké daně a progresivní daně znamenají nejen odliv těch bohatých jinam (registraci společností v danově výhodnější cizině), ale také to, že menší podnikatelé zaměstnávají mnohem méně zaměstnanců, dávají jim nižší platy, a tím je tedy nutně nižší i životní úroveň těchto řadových zaměstnanců (protože kvůli vysokému daňovému zatížení si nikdo expanzi nemůže dovolit).

Vysoké daně jsou totožné s kolapsem ekonomiky. Nízké daně s ekonomickým rozvojem.

SQLite nebo MySQL?

PHP 22.10.2004
SQLite

V PHP 5 je zahrnuta nativní podpora pro SQLite. SQLite je velice zajímavá databáze. MySQL 4.1 má 25MB, zatímco SQLite má jen 200KB (ano, dvěstě kilobajtů). Navíc, nemusíte ji nijak instalovat, pokud máte PHP 5, máte i SQLite. Dlouho jsem tuto databázi ignoroval, nicméně, včera jsem si napsal databázový layer pro BLOG:CMS, podporující MySQL 4.0 (mysql) a MySQL 4.1 (mysqli), a začal jsem přidávat i SQLite.

Musím říci, že SQLite je fantastická databáze. Jaké jsou její hlavní výhody?

  • SQLite se nemusí instalovat, je integrována přímo v jádře PHP 5,
  • SQLite umí to samé, co MySQL, a navíc má podporu pro transakce (což MySQL pro MyISAM engine nikoliv), views a triggery (!),
  • SQLite umí in-memory tabulky, což je fantastická věc pro dočasné tabulky a některé složitější operace,
  • SQLite má k dispozici nástroje jako SQLite Control Center, či SQLite Web Admin.

Je zde ovšem i pár nevýhod, nelze například použít FULLTEXT klíč, je nutné používat SELECT LIKE ‘%slovo%’, a kromě verze 3.0 (kterou ale zase neumí PHP 5.0.2) zde není nativní podpora UTF-8 (což ostatně neumí ani MySQL 4.0, umí to až 4.1).

Každopádně, podpora pro triggery a views a velikost jen 200KB SQLite je dobrým důvodem, abych SQLite začal používat místo MySQL pro své projekty.

SQLite je prostě fantastická a efektivní “příruční databáze”, navíc pro SELECT příkazy má být rychlejší než MySQL.

PHP na Windows - CGI, FastCGI nebo modul?

PHP 19.10.2004

Webdesignérská komunita se asi shodne na tom, že nejrychlejší implementace PHP pro Apache, z možností CGI, FastCGI a modulu, by měl být právě modul, protože PHP modul pro Apache je psán pro nativní API Apache 2.0 serveru. Odtud tedy ona rychlost…

CGI naopak v teorii znamená, že CGI skript musí při každém použití PHP vyhledat a parserovat php.ini, spustit php-cgi.exe a natahovat spousty dll knihoven (extensions). To je pomalé, nicméně, vzhledem k tomu, že jsou stejně všechny dll knihovny v RAM paměti, a vzhledem k výkonu testovacího stroje (3.2GHz Pentium-4/HT procesor, 1GB RAM), nebude to zpoždění až tak zásadní.

FastCGI ovšem CGI zlepšuje v tom, že při startu Apache serveru spustí definovaný počet php-cgi.exe procesů v paměti a nechá je běžet po celou dobu, a při požadavku na PHP interpret jim tento dotaz předá ke zpracování.

Tolik tedy teorie. Rozhodl jsem se v praxi otestovat, jak je Apache/PHP kombo rychlé v reálném provozu v režimech CGI, FastCGI a modul.

Testoval jsem funkci, která 1000x za sebou provede vytvoření dlouhého řetezce znaků. Práce s textem je základem PHP.

PHPeclipse - splněný sen programátora / webdesignéra

PHP 18.10.2004
PHPEclipse

O eclipse.org, open-source projektu v čele s IBM (podílí se na něm ale i Borland, SUSE, Red Hat, a mnozí další), každý již asi někdy slyšel. Eclipse.org je naprosto dokonalé vývojové prostředí, framework, multiplatformní, a to nejen pro Javu. Za pomocí pluginů je Eclipse možno rozšířit i o podporu například PHP, na což se zaměřuje projekt PHPeclipse.de.

Nutno říci, že Eclipse je skutečně dokonalé IDE. S editací PHP / CSS / SQL / XHTML zdrojového textu v editoru se to nedá srovnávat. Můžete používat PHP debugger, code browser Vám po stisku Ctrl+Space nabídne nejen vestavěné funkce PHP, ale i veškeré funkce, které si Vy deklarujete v include / require souborech, a jejich popis z PHPDoc kompatibilních komentářů (!), nabízí "Resource" a "Debug" perspektivu, real-time prohlížení PHP výstupu ve vestavěném browseru, real-time PHP parser, skvělou správu projektu, integrovanou spolupráci s CVS, včetně podpory pro ssh, přímý import projektu z CVS, podporu a code browser pro nejen PHP, ale i CSS (včetně CSS 2.0), XHTML, a SQL, a mraky dalších funkcí.

PHPEclipse je prostě splněný sen programátora / webdesignéra.

Instalace PHPeclipse a konfigurace debuggeru u celého tohoto komplexu je poněkud náročnější, ale vyplatí se.

Nejlepší na tom je, že tento skvělý projekt je k dispozici jako open-source. Projekt, se kterým se například Dreamweaver MX 2004, či FrontPage 2002 nemůže vůbec měřit. Nikdy. Tolik funkcí, skvěle podaných, prostě jiné IDE / Framework nenabídne.

Okamžité spouštění JEditu

Technologie 18.10.2004

JEdit je aplikace psaná v Javě, extrémně rychlá při práci, ale poměrně pomalá na spouštění. Spouštění JEditu i na P-IV/HT/3.2GHz s 1GB RAM zabere cca 6-7 sekund. A to je přece jenom dost, pokud potřebujete zrovna editovat jen pár řádek textu.

Nicméně, existuje jednoduchý způsob, jak JEdit ponechat i při zavření jeho okna v operační paměti, v pozadí. Při dalším spuštění tak JEdit naběhne již během setin sekundy, dokonce rychleji než neuvěřitelně primitivní Notepad ve Windows.

Pokud tedy máte dost RAM paměti, spouštějte JEdit takto:

"C:\Program Files\j2sdk\bin\javaw.exe" 
  -Xms32m
  -mx64m 
  -jar "C:\Program Files\jEdit\jedit.jar" 
  -background

Pokud si na tento shortcut vytvoříte klávesovou zkratku, třeba Win+J, bude Vám JEdit nabíhat ještě dříve, než si to stačíte uvědomit. ;-)

Integrace a nastavení editoru JEdit a PHP

Technologie 18.10.2004
JEdit

JEdit je nejlepší programátorský editor, navíc multiplatformní. Je řádově lepší než oblíbený PSPad, protože je psaný Java programátory pro (nejen-Java) programátory, obsahuje podporu pluginů, skriptovacího jazyka, podporu více než 40 různých kódování, včetně utf-8, a mnohé další.

Pokud programujete v PHP, můžete si enhanced chm manuál k PHP integrovat do JEditu. Funguje to potom tak, že si v textu označíte klíčové slovo, stisknete předvolanou kombinaci kláves, třeba Ctrl+Alt+P, a ihned se Vám otevře stránka PHP manuálu k dané funkci. Velice užitečné, zvláště ve spojení s pluginy CodeBrowser, JTidyPlugin, a PHPParser.

Jak na to? V adresáři JEdit/Macros si vytvořte pod-adresář PHP a v něm soubor nazvaný Otevřít_v_PHP_manuálu.bsh s tímto obsahem:

CHM_location = "C:\\Dev\\Manual\\PHP\\php_manual_en.chm";
selections = textArea.getSelection();
if(selections.length > 0) 
  CHM_location += 
    "::/_function.html#" +
	textArea.getSelectedText();
exec("HH " + CHM_location);

Následně si stáhněte nejnovější dokumentaci k PHP, a umístěte ji do adresáře C:\Dev\Manual\PHP\.

Potom si v menu Utilities / Global Options / sekce Shortcuts / podsekce Macros přiřaďte pro makro Otevřít_v_PHP_manuálu klávesovou zkratku třeba Ctrl+Alt+P.

Úprava PHP skriptů pro MySQL 4.1 (mysqli)

PHP 18.10.2004

Včera jsem psal o tom, že skripty psané pro MySQL 4.0 (mysql PHP rozšíření) nejsou kompatibilní s MySQL 4.1 a vyšší (mysqli PHP rozšíření). Nicméně, úprava aktuálních PHP skriptů tak, aby byly funkční s libovolnou verzí MySQL a PHP, je vcelku triviální.

Upravil jsem pro použití MySQL 4.1.6-gamma i manuály pro kompilaci a instalaci Apache, MySQL a PHP:

  • Instalace Apache 2.0.52, MySQL 4.6.1-gamma a PHP 5.0.2 na Windows,
  • Kompilace Apache 2.0.52, MySQL 4.6.1-gamma a PHP 5.0.2 na Linuxu,
  • Compile from source Apache 2.0.52, MySQL 4.6.1-gamma and PHP 5.0.2 on Linux.