MyEgo.cz - Radek Hulán webzine

MyEgo.cz

home foto blogy mywindows.cz kontakt

Dobrý kód je poezie

Technologie 12.08.2004
poetry

I když moje oficiální práce není programátor, programování mě baví. I proto pracuji stovky a stovky hodin na BLOG:CMS. Psát dobrý kód, je něco jako psát kvalitní poezii. Správná báseň má být well-formed. Stejně tak jako XML kód. Většina redakčních systémů generuje kód, který poezii nepřipomíná ani vzdáleně. Mrzí mě to. A taky jsem s tím něco udělal. Podívejte se třeba do kódu tohoto článku. Je to generovaný kód. Včetně komentářů. Ne, není to ještě dokonalý kód, je to teprve mladá báseň, je nutné ji ještě pilovat, ale již je to docela podobné (modernímu) umění :-)

V kódu, který vypadá jako báseň, se dá mnohem lépe vyznat. Špičkový programátor musí být zároveň i umělec. Nevytváří jen věci funkční, ale i hezké. Krásno je možno spatřovat v tolika věcech, ne? :-)

A zde je hlavní rozdíl mezi text/html, a application/xhtml+xml.

HTML postrádá jakýkoliv, byť jen náznak, poezie. HTML je "tag soup", písmenková polévka, bez smyslu a výrazu. XML je mnohem více. Nejedná se o neuspořádanou, náhodně zamíchanou směs písmenek, směs bez pravidel, jedná se o strukturu, která je v podstatě samo-popisná. XML je poezie, HTML nikoliv. Někteří lidé nechápou, jaký je mezi XML a HTML rozdíl. Někteří lidé prostě nerozumí poezii.

SonyEricsson K700i - nový telefon

Technologie 11.08.2004

Mám moc rád SonyEricsson telefony. Měl jsem T39i, T68i, T610, T630. Na rozdíl od primitivních a kazových Nokií pro teenagery (až na vyjímky jako Nokia 7610), či předražených Samsungů bez základních funkcí, je SonyEricsson zaměřen na profesionální uživatele. Každý SonyEricsson telefon má mimo jiné i Bluetooth, až vyzkoušíte BT spojení s počítačem a BT handsfree (HBH-65), nebudete chtít jinak. Bluetooth několikanásobně zvyšuje hodnotu mobilu.

K700i je špičkové zlepšení již tak velice dobré a populární T610/630, je tu nádherný aktivní displej, 40MB paměti, samozřejmě Bluetooth, ne bez zajímavosti je FM rádio, a mraky dalších věcí. Jedná se bezesporu o nejlepší telefon současnosti. Na rozdíl on Nokie, se SonyEricsson nesoustředí tolik na marketing, jako na kvalitu telefonů. Vřele doporučuji!

SEO (optimalizace pro vyhledávače) v praxi

Technologie 11.08.2004

F-ART AGENCY před 2 týdny dokončil nový web www.avicenna.cz. Samozřejmou součástí nového webu je, kromě špičkového redakčního systému, i optimalizace pro vyhledávače. Jedná se přitom o optimalizaci na stovky slov a spojení, s cílem podpořit nárůst prodeje a ziskovost firmy. Jak se tato optimalizace povedla? Během 2 týdnů je www.avicenna.cz na řadu sledovaných výrazů v první desítce z několika tisíc, a to jak na seznam.cz (nejpodstatnějším pro český trh), tak na google.com. Stejné nebo lepší pozice jsou realizovány i na atlas.cz, centrum.cz a quick.cz.

Jak tedy vypadají konkrétní klíčová slova?

Vyhledávač Slovo Pozice Celkem nalezeno
seznam.cz slinivka 3 5.863
seznam.cz menstruace 6 25.988
seznam.cz vláknina 2 10.317
seznam.cz cukrovka 24 68
seznam.cz celulitida 6 23.496
seznam.cz dýchací cesty 2 24.364
seznam.cz močový měchýř 6 9.730
seznam.cz revmatoidní artritis 2 42
seznam.cz nadýmání 3 9.253
seznam.cz withania 2 182
jyxo.cz hemeroidy 2 9.914
google.com krevní tlak 6 20.200
google.com elastitica žil 1 10
google.com svaly 3 38.800
google.com poruchy trávení 1 8.440
google.com peristaltika 1 734
google.com menopauza 3 14.400
zoohoo.cz relaxace 10 6.000

O tom, jaké technologie jsou na webu použity, jsem psal již dříve v článku "Jak kvalitní je Vaše SEO?", zajišťuje je přitom zcela automaticky redakční systém F-ART COMPANY.

PuTTY - nutný bezpečnostní upgrade

Technologie 08.08.2004

Pokud používáte PuTTY (telnet/ssh klient), je nutné provést upgrade na verzi 0.55, protože verze 0.54 obsahuje zásadní bezpečnostní problém.

PuTTY 0.55, released today, fixes a serious security hole which may allow a server to execute code of its choice on a PuTTY client connecting to it. In SSH2, the attack can be performed before host key verification, meaning that even if you trust the server you think you are connecting to, a different machine could be impersonating it and could launch the attack before you could tell the difference. We recommend everybody upgrade to 0.55 as soon as possible.

DOCTYPE neříká nic, podstatný je MIME type

Technologie 06.08.2004

Spousta lidí kolem webdesignu se zjevně pyšní tím, že jejich web je občas XHTML 1.0 STRICT validní. Někam si dají ikonku XHTML 1.0 valid a jsou tak moc moderní... Fakt je ale ten, že prakticky žádný český web skutečně v XHTML nejede. Podstatný je totiž MIME type, který posílá server, nikoliv DOCTYPE v (X)HTML kódu. Pokud je hlavička typu text/html, jako tomu je u naprosté většiny českých blogů, a nikoliv application/xhtml+xml, tak si na XHTML jen hrají, ale každý prohlížeč jejich blog zpracovává jako obyčejné 15 roků staré HTML.

Pojďme se podívat na pár nejnavštěvovanějších blogů dle toplist.cz/weblogy.

Web DOCTYPE MIME type Komentář
5. Pixylophone XHTML 1.0 Strict text/html web je zpracováván jako 15 roků staré HTML, nicméně přesto má ikonky na XHTML validaci, zcela nesmyslnou, nejedná se application/xhtml+xml, která je pro XHTML požadavkem
8. WELL.DONE Radka Hulána XHTML 1.0 Strict application
xhtml+xml
web je jako jediný zpracováván jako moderní XHTML, není problém z něj XSL transformací generovat třeba WML, či verzi pro PDA, při jediné chybě je zpracování zastaveno (není tedy nutné ani ukazovat validační ikonky), klade to ovšem mimořádný důraz na kvalitu redakčního systému
13. Blog počítačového nadšence XHTML 1.0 Transitional text/html přestože tento web používá velice benevolentní normu Transitional a je zpracováván jako 15 roků staré HTML, není ani podle ní validní... nicméně, alespoň se nepyšní (ani nemůže) odkazy na w3c.org validátor
16. About newslog a weblog XHTML 1.0 Strict text/html web je zpracováván jako 15 roků staré HTML, mírné plus ovšem je, že Petr se nepyšní nesmyslnými ikonkami XHTML valid, chápe, že používá obyčejné HTML
23. Internetový Oříšek XHTML 1.0 Strict text/html web je zpracováván jako 15 roků staré HTML, mírné plus ovšem je, že Tomáš se nepyšní nesmyslnými ikonkami XHTML valid, chápe, že používá obyčejné HTML
36. Přístupnost XHTML 1.0 Strict text/html web je zpracováván jako 15 roků staré HTML, mírné plus ovšem je, že David se nepyšní nesmyslnými ikonkami XHTML valid, chápe, že používá obyčejné HTML

Samozřejmě, Microsoft Internet Explorer application/xhtml+xml nezpracuje, je nutné mu servírovat jen text/html. Jak toto zařídit jsem popisoval v jednom z předchozích článků. Na svém WELL.DONE chystám, pomocí XSLT, rovněž WML verzi a PDA verzi. Je to samozřejmě rovněž možné toto dělat jako skin redakčního systému, a bylo by to i rychlejší, nicméně, pomocí XSLT je to zábavnější :-)

VoIP, telefonování zdarma a CDMA (EV-DV)

Technologie 05.08.2004

Pokud mi chcete zdarma zavolat, stáhněte si Skype! Skype je program, který používá cca 18 miliónů uživatelů (Patricku, díky za tip!), a umožňuje v reálném čase nejenom hlasovou komunikaci, ale i konference a instant messaging (cosi jako ICQ). Celá aplikace vypadá velice podobně jako Yahoo! Messanger, či MSN Messanger, a jak jsem se již zmínil, kromě hlasové komunikace podporuje i zasílání zpráv. Pokud se registrujete a uvedete své číslo kreditní karty, můžete volat i na normální telefonní linky, nicméně, na to mám přece jenom raději klasický mobil a Bluetooth headset. Mimochodem, ten Bluetooth headset mi funguje i pro Skype, Bluetooth mikrofon a sluchátko (Sony Ericsson Bluetooth HBH-65, handsfree) tak najednou získává daleko větší použitelnost! Doporučuji!

Pokud mi tedy chcete zavolat, můžete mě kontaktovat nově i přes Skype, a to na id radekhulan. S CDMA, které doma používám vše běží naprosto plynule a bez nějakých znatelných zpoždění, dokážu si představit, že pro komunikaci s klientem, support-line a další je to mnohem efektivnější forma komunikace, než psát stovky a stovky slov na ICQ / Mirandě.

Eurotel CDMA - praktické zkušenosti a srovnání s GPRS

Technologie 05.08.2004
CDMA rulez!

Ke svému nonstop tarifu GPRS od Eurotelu a nonstop tarifu GPRS od T-Mobile jsem si pořídil, dlouho očekávané, a Žlutým Molochem zdržované, CDMA od Eurotelu. CDMA nabízí teoreticky rychlost až 2.400kbs, v případě Eurotelu je to zatím omezeno pro 800Kbs pro download, a 153kbs pro upload (via mobilmania.cz), což je v praxi cca 10x lépe než GPRS, a přitom za cenu jen o 20% vyšší!

Volba je tedy jasná, ADSL s F.U.P. Molocha (fuck-users policy), a agregací 1:50 až 1:200 a omezeným přenosem dat získalo konkurenci za pouhých 899 Kč (+DPH) měsíčně, kde přenos dat není omezen, rychlost je oproti GPRS neuvěřitelná, a dostupnost pro většinu obyvatelstva perfektní.

Modem GPC-6420, co Vám Eurotel nabídne, je velký zhruba jako SonyEricsson T630 a připojuje se k počítači přes USB 1.1 nebo 2.0 (doporučeno) rozhraní. Je k němu přiložena i slušná externí anténa, USB kabel, USB prodlužovací kabel, baterka a AC/DC nabíječka.

První problém na mě čekal při instalaci modemu. Instaloval jsem software z přiloženého CD, na Windows XP, spustil jej a ... žádný signál. Bylo nutné cca 2 hodiny počkat pro zprovoznění, Eurotel totiž CDMA registrace zatím posílá postaru, jako v roce 1996, tedy faxem na centrálu, softwarové pokrytí této úřednické operace zatím připravují. Alespoň tak mi to sdělila velice sympatická blonďatá Renata na místní prodejně Eurotelu :)

Užitečné funkce pro PHP - díl 2.

PHP 31.07.2004

V tomto díle seriálu publikuji skript na základní a automatizovanou kontrolu formulářů na straně serveru, a jejich před-vyplňování, v případě, že formulář nebyl vyplněn korektně, a je nutné je opravit.

function check($field,$type,$chars=''){
 $field=htmlspecialchars(trim($_POST[$field]));
 $error='';
 switch ($type){
  case 'email':
   if (preg_match(
    '/^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+.[A-Za-z]{2,5}$/', 
    $field)) return;
   $error='Emailová adresa není platná.';
   break;
 case 'string':
   if (!isset($chars)) $chars=2;
   if (strlen($field)>=$chars) return;
   $error="Tato položka musí mít minimálně $chars znaků.";
   break;
 case 'number':
   if (!isset($chars)) $chars=0;
   if ($chars==0 && !is_numeric($field)) 
     $error="Položka nebyla zadána správně.";
   if ($chars==0 && is_numeric($field) && intval($field)<0) 
     $error="Položka nebyla zadána správně.";
   if ($chars>0) 
   if (!preg_match("/d{".strval($chars)."}/",$field)) 
     $error="Toto číslo musí mít právě $chars znaků.";
   break;
 case 'ico':
   if (!is_numeric($field)) 
     $error='IČ nemá správný formát.';
   break;
 case 'equal':
   if (!isset($field) || !isset($_POST[$chars])) 
     $error='Položka není shodná s předchozí';
   if (strcmp($field,$_POST[$chars])!=0) 
     $error='Tato položka ('.
       $field.
       ') není shodná s předchozí ('.
       $_POST[$chars].')';
   break;
 default:
   die('Chybná konfigurace systému');
   break;
 }
 if (!empty($error)) {
 echo "<p style='color:red'>Chyba: <em>$error</em></p>n";
 $this->isok=false;
 }
} /* end check */

Uvedenou funkci poté můžeme používat pro kontrolu stringových, numerických položek, emailů, IČ organizace (musí být modulo 11), případně rovnosti 2 vložených položek (například 2x vkládaného emailu či hesla).

Užitečné funkce pro PHP - díl 1.

PHP 29.07.2004

V tomto seriálu budu publikovat jednoduché funkce v PHP, které jsou ovšem velice užitečné pro běžné programování redakčního systému.

Vytvoření náhodného hesla pro uživatele

function createPassword($length){
 $vowels = array('a', 'e', 'i', 'o', 'u');
 $cons = array('b', 'c', 'd', 'g', 'h', 'j', 'k', 'l', 
               'm', 'n', 'p', 'r', 's', 't', 'u', 'v', 
               'w', 'tr', 'cr', 'br', 'fr', 'th', 'dr', 
               'ch', 'ph', 'wr', 'st', 'sp', 'sw', 'pr',
               'sl', 'cl');
 $num_vowels = count($vowels);
 $num_cons = count($cons);
 $password = '';
 for($i = 0; $i < $length; $i++)
   $password .= 
     $cons[rand(0, $num_cons - 1)] . 
     $vowels[rand(0, $num_vowels - 1)];
 return substr($password, 0, $length);
}

Zaslání hlaviček (pokud je příjemce umí)

function serverVar($name) {
 return $_SERVER[$name];
}
function sendContentType($contenttype, $charset = 'utf-8') {
 $accept=false;
 if ($contenttype == 'application/xhtml+xml') {
  if (stristr(serverVar("HTTP_ACCEPT"),"application/xhtml+xml")) {
   if (preg_match("/application\/xhtml\+xml;q=0(\.[1-9]+)/i",serverVar("HTTP_ACCEPT"), $matches)) {
    $xhtml_q = $matches[1];
    if (preg_match("/text\/html;q=0(\.[1-9]+)/i",serverVar("HTTP_ACCEPT"), $matches)) {
     $html_q = $matches[1];
     if($xhtml_q >= $html_q) $accept=true;
    }
   } else
   $accept=true;
  }
  if (stristr(serverVar("HTTP_USER_AGENT"),"W3C_Validator")) $accept=true;
 }
 // cannot accept xhtml+xml
 if (!$accept && ($contenttype == 'application/xhtml+xml')) $contenttype='text/html';
 // content type
 header('Content-Type: ' . $contenttype . '; charset=' . $charset);
}

RegExp - příklady z praxe

Technologie 27.07.2004

Regulární výrazy v PHP jsou základem pro snadnou a rychlou manipulaci s textem. Základní věc pro web. V tomto článku bych chtěl uvést pár RegExpů, které používám, předpokládám, že se budou hodit i ostatním.

Syntaxe použití:

$text = preg_replace($from, $to, $text);

Vlastní výrazy:

From: To: Popis:
|<br />s*<br />| nn záměna dvou po sobě jdoucích BR tagů, i s white space, za enter, následně je to možné použít pro převod na P tagy
/(rn|r)/ n převod UNIX-like konců řádků na n
/nn+/ nn odstranění 3 a více line-breaks
/n?(.+?)(?:n
s*n|z)/s
t<p>
$1</p>n
převod line-breaks na formátované odstavce - základní funkce redakčního systému
/&([^#])
(?![a-z]{1,8}; )/
&amp;$1 převod ampersandu na jeho entitu
/^[a-zA-Z0-9._-]+@[a-zA-Z0-9
._-]+.[A-Za-z]{2,5}$/
jednoduchá kontrola emailové adresy
/[b](.*?)[/b]/si <b>\1</b> převod pseudo-tagů na tagy
/<%[a-zA-Z]+%>/ nic výmaz nepárových <% ..%> tagů
/?$/ nic URL bez parametrů