PuTTY - nutný bezpečnostní upgrade
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
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)
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
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.
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.
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
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}; )/ |
&$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ů |
Kvalitní web je navštěvovaný web! Co Vaše SEO?
Je SEO jenom módní slovo? Na Lupě.cz v poslední době vychází pár článečků o SEO. Ano, SEO je módní, je to zvučná zkratka, a pár lidí si na tom vydělá nějakou tu tisícikorunu. Nebo i mírně více, pokud je klient hloupý. Zajímavé je, že jen málo firem nabízejících SEO a webdesign se může prakticky pochlubit tím, že její webové prezentace jsou v top-10 českého internetu.
Každá solidní web designérská firma ví, že dobrý web je především dobrá novinařina, titulek musí zaujmout, a přivést lidi na web, ale taky je to o dodržování pár triviálních zásad pro návštěvnost webu, jako jsou klíčová slova v TITLE, H1-H3, v URL a jejich opakování v různých článcích, na sobě nezávislých.
Každý solidní web-designér poradí klientovi, aby článek nenazval „Velké letní slevy“, jak to původně udělal, ale třeba „Hubnutí - rychle, levně, a především trvale“ a jeho redakční systém tento titulek automaticky dá do onoho TITLE, URL, H1-H3, kategorií, a umožní zadat i další varianty slova hubnutí, nejenom do textu článku, ale i skrytě. Triviální.
Každý solidní webdesignér dělá validní web, s minimem tagů a s maximálním využitím CSS, tedy s maximem skutečného textu, protože takovýto web je nejenom rychlejší pro načtení, ale i vyhledávače jej preferují.
Každý solidní web-designér poradí klientovi, že pravidelné psaní článků s titulkem a obsahem zohledňujícím vybraná klíčová slova je dlouhodobě mnohem efektivnější, a pro návštěvnost (=ziskovost) webu přínosnější, než týdenní reklama na seznam.cz a statická webová prezentace, kde návštěvník vidí měsíc co měsíc stále stejnou titulku. Na statické stránky se lidé nevracejí. Pokud se nevracejí, ani nenakupují.
SEO není speciální obor. Existují jen dobré web-designérské firmy, a dobré redakční systémy (používané na více než 1.000 webech) a ty, ehm, druhé.
Řada web-designérů jsou jen technici, a řada jsou dokonce jen špatní technici. Web není jen technika. Web je i novinařina, marketing, prodej, komunikace, finance, prostě velice komplexní problematika. Jenže, kolik lidí v ČR má znalosti pro takovýto dobrý a ziskový web?
Klávesnice - velký test!
Klávesnice je hodně podceňovaná periférie. Neprávem. Rychlá grafická karta, větší hard-disk, či rychlejší DVD-RW vypalovačka Vám peníze nevydělá. Pokud jste programátor, nebo alespoň profesionální uživatel, je špičková klávesnice tím nejdůležitějším, co ke svému počítači připojíte.
Doma se mi povaluje, jak jsem již psal dříve,Chicony KUP-0108, Logitech Internet Keyboard, a pravidelně používám Logitech Internet Navigatora nově taky (ve firmě) Microsoft Elite Desktop Executive Edition.
Protože jsem všechny klávesnice, ale i jejich zapůjčené varianty, podrobil hodně rozsáhlé zatěžkávací zkoušce (na každé jsem napsal tak 30-50kB kódu), nabízím Vám moje srovnání těchto klávesnic. Upozorňuji, že je z pohledu náročného uživatele, programátora, a bez ohledu na cenu těchto periférií. Pokud nelze jinak, je klávesnice uváděna i s myší, se kterou se prodává. Onen komplet je nakonec často i finančně zajímavě zvýhodněn, pokud chcete i novou myš, komplet jednoho výrobce dává smysl.
Odkazuji se na alzasoft.cz, který používám, nicméně, řada prodejců nabízí to samé, případně i levněji. Ceny jsou uvedeny včetně DPH.
levý velký, pravý malý, celá nízká
Levý je tu pro malíček. Jinak to nejde. Pravý nechápu k čemu je. Nepoužívám jej. A taky musí být nízký profil. Hodně nízký. A vysoký zdvih, ale malý odpor. Stisku kláves. Ano, mluvím tu o klávesnici, dobré klávesnici, základním poznávacím prvku špičkového programátora.
První jsem si chtěl koupit klávesnici, Microsoftí, je velice dobrá, levý velký (ano, Shift), pravý tam taky někde je. Nicméně, oni nám ji prodávají jen v setu. Jenže já Microsoftí myš nechci, Logitech MX700 je podstatně lepší. Copak se dnes už nedá koupit klávesnice samostatně??? Takže MS ne. I když, s mojí na věčnost se poroučející Microsoft Natural Keyboard (ano, to je taková ta rozlomená), jsem byl spokojen. Ale to bylo v době, kdy se klávesnice ještě prodávaly bez myší. Ach jo.
Docela zajímavě vypadala Chicony KUP-0108. Tak jsem si ji koupil, včera ráno, pak jsem na ní celý den psal a psal a psal, tak 50 kB programového kódu, a.. docela to šlo. Ale je moc vysoká. A klávesa má přitom sice relativně správný zdvih, ale špatný odpor. Škoda. Večer mě bolelo zápěstí. Přestože má ta klávesnice opěrku ruky.