Bobův Weblog

TOPlist

Přeskočit obsah k navigaci

Systém novinek v PHP a MySQL - úprava 1

Dnes jsem provedl úpravu v mém systému novinek v PHP a MySQL.

Celá úprava v podstatě spočívá jen v tom, že jsem upravil zobrazování seznamu novinek v administrační části tak, aby se seznam rozděloval na stránky po deseti záznamech. Hodnotu počtu záznamů na stránku je možné změnit v souboru dbconnect.php, kde je na to definována konstanta PAGELIMIT.

Zajímavý na celé změně může být snad jen kód, který jsem použil pro zobrazení stránkovače. Rozhodl jsem se, že budu zobrazovat maximálně pět odkazů na jednotlivé stránky, přičemž když bude stránek víc, tak se na začátku (případně na konci) stránkovače zobrazí tři tečky. Aktuální stránka bude zobrazena vždy (mimo případů ze začátku a z konce) zobrazena uprostřed stránkovače.

Nebudu zde opisovat celý kód, ale spíše jen teorii. Kdo bude mít zájem, může si projekt stáhnout a podívat se do zdrojů.

Nejdřív je potřeba si spočítat počet záznamů v tabulce novinek. Toho lze dosáhnout například následujícím SQL dotazem:

SELECT Count(id) as Pocet FROM bb_news;

Aktuální číslo stránky, která má být zobrazena si předáme v URL v parametru page. Ten pak vyčteme z proměnné $_GET. Pro stránkovač je nutné vědět, na kolik stránek budeme stránkovat (tedy počet stránek). Ten vypočítáme tak, že vezmeme podíl počtu všech záznamů a počtu záznamů na jednu stránku (viz konstanta PAGELIMIT):

$pocetstran = ceil($pocetvsechzaznamu/PAGELIMIT);

Pak je třeba ošetřit parametr zadané stránky:

//test cisla strany
if ($strana <= 0):
  //kdyz je mensi nebo rovno nule, nastavim prvni stranu
  $strana = 1;
else:
  if ($strana>$pocetstran):
//kdyz je vetsi nez pocet stran, nastavim posledni stranu
    $strana = $pocetstran;
  endif;
endif;

Pak je potřeba vypočítat číslo stránky, kterým bude stránkovač začínat a kterým bude končit:

//vypocet cisla stranky, kterym bude strankovac zacinat
if ($strana>3):
  //pokud je stranka vetsi nez 3
  if (($strana + 2) >= $pocetstran):
    //pokud je stranka + 2 vetsi nebo rovna poctu stran
    //je pocatecni hodnota rovna poctu stran minus 4
    $start = $pocetstran — 4;
  else:
  //jinak je pocatecni hodnota rovna stranka minus 2
    $start = $strana — 2;
  endif;
else:
  //neni vetsi ney 3, pocatek je 1
  $start = 1;
endif;

//vypocet cisla stranky, kterym bude strankovac koncit
//vzdy budou zobrazeny odkazy na maximalne 5 stranek
$cil = $start + 4;
//osetreni preteceni posledniho cisla stranky
if ($cil > $pocetstran): $cil = $pocetstran; endif;

Pak už jen v jednoduchém cyklu FOR od proměnné $start do proměnné $cil provedeme naplnění textového řetězce s odkazy na stránky, přičemž v případě, že se jedná o zvolenou stránku místo odkazu zabalíme číslo stránky do tagu STRONG:

//prirazeni retezce pro strankovac
$pager = ”;
for ($i=$start; $i<=$cil;$i++):
  if ($i<>$strana):
  //stranky ktere nejsou zvolenou strankou
    $pager.="" . $i . "";
  else:
  //zvolena stranka
    $pager.="" . $i . "";
  endif;
  //pokud nejsem na konci cyklu, pridam oddelovac
  if ($i<$cil):
    $pager.=" | ";
  endif;
endfor;

No a nakonec ještě přidám tečky na začátek a konec:

//pridani tecek na zacatek a konec strankovace, pokud je vic jak 5 stranek celkem
if ($pocetstran > 5):
  //pokud je aktualni stranka vetsi nez tri, znamena to, ze zacatek je nad jednickou
  //a musim tedy zobrazit tecky na zacatku
  if ($strana > 3):
    $pager="... " . $pager;
  endif;

  //pokud je rozdil poctu stran a aktualni strany vetsi nez 2, znamena to, ze do konce je vic
  //nez 2 stranky a musim zobrazit tecky na konci
  if (($pocetstran — $strana) > 2):
    $pager=$pager . " ...";
  endif;
endif; //pocetstran > 5

Generování náhodného hesla v ASP

Potřeboval jsem pro jeden projekt, který píšu v klasickém ASP (tedy nikoliv ASP.NET) mít možnost generovat náhodné heslo. Proto jsem si pro tento účel napsal následující funkci.

Je to velice jednoduchá funkce a píšu to sem jen proto, abych na to nezapomněl a pro to, že by se to třeba mohlo někomu hodit.

Zde je kód zmíněné funkce:

'*******************************************************************************
'Funkce pro vygenerování náhodného hesla zadané délky
'*******************************************************************************
Function RandomPassword(lLenght)
'mnozina znaku, ze kterych budu skladat heslo
'zamerne je vynechano velke pismeno O, nula a pismena Z a Y (mala i velka)
Const sPosChars = "abcdefghijklmnopqrstuvwxABCDEFGHIJKLMNPQRSTUVWX123456789"
'definice promennych
Dim lRnd 'nahodne cislo
Dim lPrev 'predchozi nahodne cislo
Dim sRand 'pomocny retezec

  'inicializace nahodnych cisel
  Randomize
  'default funkce
  RandomPassword = ""
  'osetreni delky hesla (default je 6)
  If (lLenght <= 0) Then lLenght = 6

  'pomocna promenna
  sRand = ""
  lPrev = 0
  Do
    'vygeneruju nahodne cislo od 1 do delka moznych znaku
    Do
      'a delam to tak dlouho, dokud se nahodne cislo nelisi od predchoziho nahodneho cisla
      'pro pripad, ze by bylo vygenerovano stejne jako predchozi
      lRnd = CLng((Rnd * Len(sPosChars)) + 1)
    Loop Until (lRnd <> lPrev)
    'ulozim aktualni nahodne cislo do jine promenne
    lPrev = lRnd
    'priradim retezec z pole povolenych znaku do pomocneho retezce
    sRand = sRand & Mid(sPosChars, lRnd, 1)
  Loop Until (Len(sRand) = lLenght)
  'priradim hodnotu funkce
  RandomPassword = sRand
End Function

Malá změna šablony

Vzhledem k tomu, že se mi na blogu poslední dobou množily komentáře, které sice vypadaly, jako že jsou k věci, ale ve skutečnosti jen měly zakrýt tu skutečnost, že se jedná o komentářový spam (adresa odkazu směřovala na stránky nějakého erotického serveru), rozhodl jsem se udělat nepatrnou úpravu do šablony blogu.

Zmíněná úprava spočívá v tom, že jsem zrušil aktivní (tedy klikatelný) odkaz na stránku autora komentáře. Adresu stránky zobrazuji, ale již to není odkaz, ale pouhý text. Tím docílím toho, že případné hodnotné odkazy budou vidět a bude možné si je zobrazit (ručním zkopírováním odkazu) a přitom zabráním tomu, aby můj blog sloužil pro zvyšování počtu zpětných odkazů na tyto servery a tím pádem ke zvyšování jejich PageRanku (a případně ke snižování mého PageRanku, protože bych mohl být penalizován za to, že odkazuju na takové servery). Zároveň jsem úplně zrušil zobrazování e-mailového kontaktu na autora komentáře. Stačí mi, že se ukládá do databáze.

Takže milí komentující. Pokud máte zájem uvést nějaký odkaz ve svém komentáři (pokud možno takový, který se nějak dotýká tématu), pak jej v textu komentáře uveďte ve tvaru mezera http://www.example.com/ mezera. Takový odkaz se převede na aktivní (klikatelný) odkaz. Rovněž berte na vědomí, že každý komentář prochází mojí osobní cenzurou a pokud dojdu k názoru, že se mi některý komentář nelíbí (například právě z důvodu použitých odkazů v něm) nemilosrdně jej vymažu a případně označím jako spam. Tím chci říct, že bude smazán i takový komentář, který sice bude k věci, ale bude obsahovat nevhodné odkazy (například odkazy na erotické servery, kasina apod.).

Zajímavé články na A List Apart

Dneska se mi ve čtečce objevily dva zajímavé články ze serveru A List Apart.

První článek — Prettier Accessible Forms — pojednává o způsobu, jak udělat formuláře přístupnějšími. Abych pravdu řekl, moc se mi nelíbí ten konec článku, kdy je pro prohlížeče typu Mozilla použit JavaScript pro změnu stylů prvnků, nicméně i tak je to zajímavý článek. Například by mě nikdy nenapadlo zabalit jednotlivé prvky formuláře do seznamu OL.

Druhý článek — Behavioral Separation — zase pojednává v podstatě o tom, jak by se měl kód určující vzhled prvků či funkčnost JavaScriptu oddělovat od HTML kódu. Je to docela zajímavé čtení. Nejsem sice zastáncem JavaScriptu (pokud je to možné, snažím se mu vyhýbat — už jen proto, že ho neovládám), ale ty informace v tom článku jsou rozhodně zajímavé.

Systém novinek v PHP a MySQL - administrační část

Po úspěšném provedení instalce systému novinek se, pokud jste dodrželi postup instalace, administrační část nachází na adrese:

  • http://AdresaVasehoWebu/news/

Kdykoliv potřebujete přidat novinku, zadejte tuto adresu. Systém zobrazí formulář pro zadání přihlašovacího jména a hesla (to jsou ty údaje, které jste zadávali při instalaci). Pokud zadáte správné údaje a odešlete formulář, systém se přepne do tzv. administrační části.

Administrační část

Administrační část se skládá z hlavičky, ve které se zobrazuje Vaše přihlašovací jméno a odkaz pro odhlášení, na dalším řádku se pak zobrazuje počet novinek a možnost přidání nové novinky. Pod touto hlavičkou se pak zobrazuje tabulka se seznamem všech novinek v databázi (verze 1.0 zatím nepodporuje žádné stránkování, proto se zobrazují všechny novinky uložené v databázi). Samozřejmě, že po instalaci systému v databázi žádná novinka není, takže se nezobrazuje ani tato tabulka (zobrazí se po založení první novinky).

Přidávání novinek

Ovládání systému je velice jednoduché. Klepnutím na odkaz Přidat novou novinku se zobrazí formulář pro přidání nové novinky. Ten obsahuje položky:

  • Datum
  • Nadpis novinky
  • Obsah novinky
  • přepínač zobrazovat datum novinky
  • přepínač formátovat obsah novinky

Povinné jsou položky Datum a Obsah novinky. Pokud vyplníte položky Datum a Nadpis novinky a ponecháte přepínač zobrazovat datum novinky zatržený, bude se při vypisování novinky zobrazovat jako její nadpis nejen datum, ale i zadaný nadpis (oddělený od data pomlčkou). Pokud vypnete zatržení přepínače zobrazovat datum novinky, nebude se při vypisování této novinky vypisovat zadané datum, ale položka Nadpis novinky se stane povinnou položkou pro vyplnění formuláře (bude se pak vypisovat místo data).

Přepínač formátovat obsah novinky slouží k tomu, aby se při vypisování novinky na stránkách povolilo (přepínač zapnutý) nebo zakázalo (přepínač vypnutý) formátování zapsaného textu převaděčem Texy (syntaxe viz Texy syntax), který můj systém používá. Doporučuji tento přepínač ponechat zatržený. Vzhledem k tomu, že můj systém umožňuje novinky zobrazovat ve třech módech, je potřeba na to myslet při vyplňování jejich obsahu. Dva zobrazovací módy zobrazují novinky jako seznamy (seznam definic DL a netříděný seznam UL) a při jejich použití je Texy nastaveno tak, aby obsah novinky formátovalo jako řádkový element, nikoliv jako odstavec. Odstavcové formátování obsahu novinek je nastavenou pouze při vypisování třetím módem (odstavce P). Při vypisování obsahu novinek v administrační části k žádnému formátování nedochází.

Editace novinek

Můj systém umožňuje nejen novinky přidávat, ale rovněž je editovat nebo mazat. K tomuto účelu slouží příslušné odkazy u každé novinky zobrazené v tabulce administrační části novinek. Funkčnost těchto odkazů snad není nutné popisovat — je pochopitelná z kontextu.

Systém novinek v PHP a MySQL - popis instalace

Takže celý systém novinek sestává z několika souborů a podadresářů zahrnutých do adresáře news. Před vlastní instalací na webový server je třeba udělat úpravu do souboru dbconnect.php, který se nachází v podadresáři inc. Tento soubor totiž obsahuje informace o připojení k databázi:

  • adresu serveru,
  • přihlašovací jméno k databázi,
  • přihlašovací heslo k databázi,
  • název databáze.

Po zapsání správných hodnot a uložení souboru je nutné nakopírovat celý obsah adresáře news (tedy včetně tohoto adresáře) na webový server (nejlépe do rootu Vaší webové prezentace). Instalaci pak spustíte zadáním adresy:

  • http://AdresaVasehoWebu/news/news-install.php

V prvním kroku se vytvoří příslušné databázové tabulky a ve druhém kroku Vás instalce vyzve k definici administrátorského účtu (jméno, heslo a e-mail — na zadaný e-mail se zadané informace odešlou). Tím je instalace hotova a můžete začít se systémem pracovat.

Systém novinek v PHP a MySQL - popis tabulek

Než začnu popisovat to, jak celý systém funguje, měl bych asi nejdřív popsat definice tabulek. Celý systém se skládá ze dvou tabulek — tabulka bb_users a tabulka bb_news, přičemž hlavní a nejdůležitější tabulkou je tabulka bb_news, ve které jsou uloženy všechny novinky.

Tabulka bb_users

Tabulka slouží pouze pro uložení přihlašovacího jména, hesla a e-mailu tzv. administrátora novinek. Vzhledem k tomu, že jsem ten systém dělal v podstatě pouze pro sebe, tak se mi nechtělo systém navrhovat moc sofistikovaně a rozhodl jsem se, že k němu bude mít přístup pouze jeden uživatel. Do budoucna to půjde případně rozšířit.

Tabulku jsem vytvořil následujícím SQL příkazem:

CREATE TABLE bb_users (
  id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  user VARCHAR(32) NOT NULL,
  pass VARCHAR(32) NOT NULL,
  mail VARCHAR(255) NOT NULL,
  PRIMARY KEY(id)
)

Obsahuje atributy:

  • id (jednoznačný identifikátor, automaticky se inkrementující),
  • user (jménoo uživatele),
  • pass (heslo),
  • mail (e-mailová adresa).

Tabulka bb_news

Tabulka slouží k uložení všech novinek. Vytvořil jsem ji nálsedujícím SQL příkazem:

CREATE TABLE bb_news (
  id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  date DATE NOT NULL DEFAULT '0000-00-00',
  head VARCHAR(50) NOT NULL,
  cont TEXT NOT NULL,
  showdate ENUM('0','1') NOT NULL DEFAULT '1',
  formatcont ENUM('0','1') NOT NULL DEFAULT '1',
  PRIMARY KEY(id)
)

Obsahuje atributy:

  • id (jednoznačný identifikátor, automaticky se inkrementující),
  • date (datum novinky),
  • head (nadpis novinky),
  • cont (vlastní obsah novinky),
  • showdate (přepínač toho, zda se má při vypisování novinky vypisovat datum novinky),
  • formatcont (přepínač toho, zda se má při vypisování novinky provádět formátování obsahu novinky).

Systém novinek v PHP a MySQL - úvod

Tak se mi dnes (snad) podařilo dokončit můj systém novinek naprogramovaný v PHP a využívající databáze MySQL, jak jsem o tom psal v předchozím příspěvku.

Bohužel teď nemám moc času na to, abych se o tom více rozepsal, takže jen uvedu, že systém bude, kromě přidávání nových novinek, umět novinky editovat i mazat. Zobrazování novinek na stránkách pak bude možné ve třech módech:

  • jako definiční seznamy — DL,
  • netříděné seznamy — UL
  • jako odstavce — P.

Víc o tom napíšu v příštím příspěvku (snad zítra).

Systém novinek v PHP a MySQL - představa

Začínám pomalu ale jistě pronikat do programování MySQL v PHP a rozhodl jsem se, že mým prvním "větším" projektem, na kterém se hodlám učit, bude projekt systému novinek. Abych nezapomněl na to, jakou mám představu, rozhodl jsem se napsat tento článek a možná ho později doplním o další články, ve kterých popíšu moje řešení.

Systém by měl fungovat tak, že bude rozdělen na administrační čast a na funkční část, přičemž funkční část bude obsahovat (asi) jen jednu funkci, řekněme GetNews([pocet]), která bude vracet buď seznam všech novinek v databázi (to v případě nezadání parametru) nebo nastavený počet novinek. Administrační část pak bude obsahovat možnost přihlášení (zatím uvažuju jen o jednom uživateli — viz dále) a po přihlášení možnost přidávání, editace a asi i mazání novinek.

Takže si to představuju zhruba tak, že budou existovat dvě tabulky. Tabulka uživatelů a tabulka novinek. Tabulka uživatelů bude obsahovat položky:

  • jméno,
  • heslo,
  • e-mail.

Tabulka novinek bude obsahovat položky:

  • datum,
  • název,
  • obsah,
  • zobrazit_datum (dvoustavový přepínač),
  • formatovat_obsah (dvoustavový přepínač).

Veškerý kód systému bude v jednom adresáři. Tento adresář bude stačit nahrát na server a pak ho bude možné používat (zadáním adresy www.example.com/news/. Instalace (vytvoření tabulek a registrace "administrátora") se provede při prvním přístupu do systému. Součástí instalce bude definice přihlašovacího jména a hesla administrátora. Zatím nemám v úmyslu umožnit registraci více uživatelů, ale pravděpodobně by se to pak později dalo rozšířit. Po provedení instalace pak již bude možné se sestémem začít pracovat, tedy hlavně přidávat novinky, případně pak editovat a/nebo mazat novinky.

Ještě jednou opakuji, že tento článek slouží spíš jen pro moji potřebu a nemám v úmyslu používat nějaká již hotová řešení. Chci se to naučit sám.

Trable s Internet Explorerem 7 Beta 2

Jako výchozí prohlížeč internetu používám Firefox, ale chtěl jsem si vyzkoušet jak budou vypadat některé moje stránky v prohlížeči Internet Explorer 7 Beta 2 a tak jsem si někde z internetu stáhl jeho verzi, která se nemusela instalovat, rozbalil a spustil. Myslel jsem si, že to bude fungovat stejně, jako například verze 5.5, 5.0, atd. Bohužel tomu tak nebylo.

Na první pohled vše fungovalo správně (pokud nebudu počítat to, že se občas zobrazilo nějaké chybové hlášení nebo že prohlížeč spadl — je to Beta, co bych chtěl), ale až do chvíle, kdy jsem chtěl pustit původně nainstalovaný Internet Explorer 6. Sice se spustil, ale když jsem chtěl otevřít nějakou stránku, tak se ji pokoušel otevírat do nového okna prohlížeče, ale nepodařilo se mu to a nějak se zacyklil. Řekl jsem si, že tedy tu verzi IE 7 Beta 2 smažu a že se tím problém vyřeší. Nestalo se. Jen místo otevírání okna Internet Exploreru se mi jakákoliv zadaná adresa otevřela ve Firefoxu (mám ho nastaven jako výchozí prohlížeč).

Bohužel pro svou práci potřebuju mít Internet Explorer funkční, protože některé aplikace, které používám ke své práci, v jiném prohlížeči nefungují úplně korektně (jedná se o aplikace napsané v ASP.NET a programátora k úpravě aplikace nedonutím — je zaměstnán jinými, důležitějšími projekty). Tak jsem si řekl, že si zkusím Internet Explorer 7 Beta 2 normálně standardně nainstalovat a používat ho, což jsem udělal, ale bohužel asi nepodporuje diakritiku jako parametr v URL a proto aplikace, kterou jsem potřeboval používat, nefungovala (bohužel předává do parametrů v URL i diakritiku a je to pro její funkčnost důležité).

Už jsem se bál, že si budu muset přeinstalovat systém, ale zkusil jsem ještě Operu a v té ta aplikace kupodivu fungovala (mám Operu verze 8.5). Jenže tohle nebylo systémové řešení, protože Internet Explorer stále nefungoval. Chtěl jsem dosáhnout toho, aby fungoval původní Internet Explorer 6. Naštěstí jsem našel na netu informaci, jak ho opět zprovoznit a nebylo to ani tak složité. Stačilo se podívat na IEBlog konkrétně na článek Frequently Asked Questions for the IE7 Beta 2 Preview, ve kterém byla odinstalace IE7 Beta podrobně popsána a kupodivu popis fungoval.

Rada pro všechny, kdo si chtějí Internet Explorer 7 Beta 2 vyzkoušet. Zkoušejte jak chcete, ale pokud možno na počítači, který nepotřebujete používat ke své práci. Je to zároveň i takové poučení pro mě osobně do budoucna.

Bobo - básničky

Za pecí

Potkali se, je to prima,
dívenka a chlapec.
On jí řekl: Je tu zima,
zalezeme za pec.

Za pecí nám bude líp,
řekl chlapec směle,
když rozepl její zip,
vlezli do postele.

Milovali se tam dlouze
dívenka a chlapec,
stačilo jim jen a pouze,
aby vlezli za pec.

Je-li dívce někdy zima
a je poblíž chlapec,
bude pro ni jistě prima,
zalézt si s ním za pec.

Bobo - básničky

Depresivní veselá básnička

Byla krásná, červená,
byla plná citu,
odřela si kolena
a namohla kýtu.

Bobo - básničky

Veselé Vánoce

Už je tady Štědrý den,
už jsou tady svátky,
nebude to žádný sen,
Vánoce jsou zpátky.
 
Až zazáří první hvězda,
až zazvoní zvoneček,
Ježíšek ti dárek dnes dá,
pod Vánoční stromeček.
 
Ať se na tě každý směje,
ať máš dárků plno,
to všechno ti Bobo přeje
s pusou jako Brno.

A List Apart - Thinking Outside the Grid

Ačkoliv moc angličtinu neovládám (vlastně ji v podstatě vůbec neumím — nikdy jsem se ji neučil), myslím, že se mi podařilo celkem porozumět článku, který včera vyšel na A List Apart.

Konkrétně se jedná o článek Thinking Outside the Grid, který (jestli jsem pochopil správně) pojednává o výhodách CSS layoutu oproti tabulkovému layoutu a myslím si, že to je jeden z dobrých příkladů PRO používání CSS layoutů. Proto bych chtěl na článek upozornit.

Bobo - básničky

Plamen lásky

Místo srdce nosíme si
v hrudi jenom kámen,
proto aby láska asi
nezažehla plamen.

Plamen lásky když zaplane
může někdy pálit
a srdce zamilované
moh' by celé spálit.

Navštívil mě spam

Donedávna jsem si myslel, že je systém bloguje.cz (který pro publikování mých článků používám a se kterým jsem víceméně spokojen) proti spamu imunní, protože donedávna se mi spam vyhýbal, ale vypadá to tak, že imunní není.

V posledních asi dvou dnech se u jednoho mého už poměrně hodně starého článku začaly objevovat cizojazyčné komentáře, které s příspěvkem neměly vůbec nic společného (píšu v češtině, tak proč by mi to někdo komentoval anglicky, navíc stylem, chtěl jsem ti jen napsat, že tu jsem, abys o mě věděl a odkaz na nějakou rakouskou banku nebo kam to vedlo). Naštěstí se zatím nejednalo o nějakou hromadnou akci, takže jsem nebyl nucen přistupovat k nějakým restrikcím a komentáře jsem jednoduše smazal.

Systém bloguje.cz umožňuje komentář smazat a označit jako spam, tak jsem zvědav, jestli to má skutečně i nějakou účinnost a jestli se mi podobné komentáře začnou vyskytovat i u jiných příspěvků nebo jestli zmizí.

Začal jsem se učit ASP.NET

V důsledku pracovních povinností jsem začal studovat ASP.NET a musím říct, že se mi to vůbec nelíbí. Teď nemám na mysli to vlastní studium, to je v pohodě — rád se naučím zase něco novýho, ale nelíbí se mi ASP.NET jako takové, respektive kód, který produkuje.

Zatím jsem se moc daleko nedostal, ale už teď mi dost vadí, že generovaný kód nemám vůbec pod kontrolou a pokud bych měl ASP.NET použít pro nějaký web, který by nebyl určen jen pro vnitřní potřeby firmy (kvůli tomu jsem se původně ASP.NET začal učit), tak bych ho raději nepoužil nebo ho používal tak jako standardní ASP, protože ten generovaný kód se nedá skoro vůbec ovlivnit a to mě na celém ASP.NETu štve.

Sice jsem našel nějaká řešení, ale nevím, jestli jsou to ty nejlepší metody. Naštěstí jsem nakonec tu aplikaci, kvůli které jsem se to vlastně začal učit, nebyl nucen programovat (dostal to za úkol jiný kolegy), takže jsem studium na čas přerušil (respektive čtu si v knížce jen ve volných chvílích, kterých moc není). Nicméně tu technologii úplně nezavrhuji, protože některé věci jsou naopak dobré, ale počkám si, až bude v oběhu ASP.NET 2.0 a pak se k tomu vrátím.

Redesign Matějka Koupelny

Dnes jsem provedl redesign stránek Matějka Koupelny, na kterém jsem pracoval několik dní.

Starý vzhled se mi už přestal líbit (byl takový moc barevný) a proto jsem se rozhodl stránky obléct do nového kabátku. Když už jsem byl v tom, tak jsem udělal zrovna dvě verze. Na stránkách budu ještě pracovat (je potřeba tam vystavit nějaké nové texty, atd.), ale vzhled už měnit nebudu. Možná časem přidám nějakou další verzi vzhledu.

Můj pohled na accesskey

Tento článek jsem se rozhodl napsat po přečtení článku Standardizace accesskeys podle britské vlády na serveru Přístupnost. Zmíněný článek je velice zajímavý a domnívám se, že zavedení nějaké standardizace v používání accesskey by mohlo být přínosem. Já bych však chtěl psát o něčem trošku jiném.

Chtěl bych se trošku rozepsat o problému v používání accesskey ze strany uživatele. Jako tvůrce několika málo stránek (viz moje reference) jsem accesskey moc nepoužíval a v současné době jsou použity jen na jednom projektu. Když si však chci jejich funkčnost vyzkoušet, narážím na problém.

Nevím, jaké operační systémy používají nevidomí či jinak postižení uživatelé, pro které je vlastně zavedení accesskey přínosem, ale já osobně používám operační systém Windows a české rozložení klávesnice (tedy písmena s diakritikou místo čísel). Když chci vyzkoušet funkčnost acceskey, tak se musím přepnout na anglické rozložení kláves a v tom je celý kámen úrazu.

Když si přepnu klavásnici, abych mohl využívat vymoženosti accesskey, tak přijdu o možnost psát česky. Pokud by se například na serveru vyskytoval nějaký formulář pro napsání komentáře či odeslání zprávy, jsem nucen znovu se přepnout na českou klávesnici. Tímto přepínáním rozložení klávesnice se vlastně zhoršuje použitelnost stránek v souvislosti s acceskey.

Nabízí se tedy otázka, zda používat pro accesskey čísla? Myslím si, že použití čísel na místě je, protože se tak dá vyhnout tomu, aby byla použitá klávesová zkratka v kolizi s jinou klávesovou zkratkou, která by mohla být definována v prohlížeči (ať už by se jednalo o vstup do menu nebo o nějakou konkrétní funkci). Jenže pokud se použijí čísla, tak je to zase v kolizi s nastavením klávesnice. Použití čísel na numerické klávesnici bohužel na systému Windows nepřichází do úvahy. Nevím jak na jiných systémech, ale ve Windows se po stisk kombinace Alt a čísel na numerické klávesnici považuje za zadávání ascii čísla nějakého konkrétního znaku (například Alt+0169 je znak &copy;).

Teď jde o to, co z toho je menší zlo? Myslím si, že lepší je používání těch čísel, tak jak to bylo uvedeno ve zmíněném článku. Pokud jde o přiřazení funkcí číslům, tak tam už to bude asi záležet na konkrétních případech. Navrhované rozvržení je poměrně dobré, ale nemusí vyhovovat všem.

UPDATE:
Jsem blb. Chyba byla samozřejmě mezi židlí a klávesnicí. Problém byl v tom, že jsem při testování místo klávesy Alt mačkal klávesu Ctrl a proto se mi zdálo, že to s klávesou Shift nefunguje. Při českém rozložení klávesnice je tedy nutné mačkat kombinaci kláves Alt+Shift+číslo.

Outlook Express a automatická komprimace složek

Používáte Outlook Express (dále jen OE) jako e-mailového klienta? Máte navíc Windows XP s instalovaným SP2? Pokud jste na obě otázky odpověděli ano, pak by Vás mohlo zajímat, jak vyřešit obtěžující chování OE.

Ten se chová tak, že automaticky spouští komprimaci složek při ukončování programu po určité době (konkrétně po stém spuštění OE). Toto chování mě velice obtěžuje, protože bych si chtěl sám určovat, kdy si složky zkoprimuji. Bohužel neexistuje žádná možnost toto chování OE vypnout.

Přišel jsem na řešení, které sice není úplně nejelegantnější, nicméně stoprocentně funkční.

V registru Windows (regedit.exe) se nachází větev HKEY_CURRENT_USERIdentities{xxx}SoftwareMicrosoftOutlook Express5.0 kde {xxx} je dlouhé hexa číslo (identifikátor CLSID nebo co to je). V této větvi je položka DWORD s názvem "Compact Check Count", která určuje počet spuštění Outlooku od poslední komrimace složek. Pokud před každým spuštěním Outlook Express tuto hodnotu nastavíte na nulu, pak se výše zmiňovaného chování zbavíte.

Jak toho dosáhnout? Vytvořil jsem si export zmiňované větve registru, který jsem si upravil tak, aby obsahoval jen zmíněnou položku nastavenou na nulu (soubor jsem nazval msimn.reg). Poté jsem si vytvořil soubor msimn.cmd, který obsahuje následující řádky:

regedit /s msimn.reg
msimn.lnk

Jako poslední krok jsem vytvořil zástupce na soubor msimn.cmd v adresáři aplikace msimn.exe (standardně v Program filesOutlook Express) a nastavil mu, že se má v tomto adresáři spouštět. Jako poslední krok jsem změnil odkazy v Nabídce Start a v liště rychlého spouštění aplikací (QuickLaunch) na tohoto zástupce.

Výše uvedeným způsobem jsem dosáhl požadovaného cíle. Výše zmiňovaná neelegantnost řešení spočívá v tom, že se před spuštěním OE na chvilku zobrazí "DOSové" okno, ve kterém probíhá vykonávání souboru msimn.cmd.

GTA SA

Včera jsem chvilku (asi od šesti odpoledne do půl dvanácté v noci) zkoušel hrát GTA SA (Grand Theft Auto: San Andreas). Když pominu trošku komplikovanější ovládání (na které se však dá po určité době celkem zvyknout), tak musím říct, že se u této hry docela bavím.

Rozhodně to není hra, kterou bych doporučil hrát mému nezletilému synovci. Myslím si, že by měla mít minimálně nálepku "do 15 let neprodejné", protože brutality a sprosťárny se hrou jen hemží (skoro v každé větě fuck, felace, štětky, atd.). Co mě pobavilo, byla realtivně dobrá "realičnost" hry, kdy se můj hrdina po snězení 10 pizz (od slova pizza — nevím, jak se to skloňuje) pozvracel :o) Rovněž chování některých kolemjdoucích, kteří si klidně bez ostychu na ulici zaflatulují (prdnou) a pak se za to omluví, je velice zábavné. Jsem zvědav, jak se bude hra dál vyvíjet.

Mlčení

Delší dobu jsem sem nic nenapsal. Nejdříve to bylo způsobeno mým pracovním vytížením a pak naopak tím, že jsem byl na dovolené (na Slovensku). Takže co je nového?

Rozbil se mi můj mobilní telefon Nokia 7250i (rozkousal ho pes), ale už mám nový mobil Nokia 6230i. Dále se mi podařilo ve spolupráci s Plaváčkem a Ivanou Bednářovou (komunikaci zajišťoval Plaváček) vytvořit nový vzhled stránek Školy pro výcvik vodicích psů. V současné době sice ještě není zveřejněn, ale už je hotov a o víkendu mám v plánu jej uvést do života (pokud mi do toho nic nevleze). Jakmile se mi to podaří, tak o tom napíšu.

Jinak se nic zvláštního nestalo. Rozbil jsem si zadní světlo u auta (už mám objednaný nový), párkrát jsem se opil (na Slovensku nic zvláštního), trošku jsem si spálil záda (ne moc, ale chvíli to pálilo) a opět jsem si ověřil, že to s ženskýma neumím (stejně ji mám pořád rád). No prostě nuda nuda, šeď šeď.

Zkušenosti s fotoaparátem Panasonic Lumix DMC-LZ1

Už jsou tomu více jak dva měsíce, kdy jsem psal o tom, že jsem si pořídil nový digitální fotoaparát Panasonic Lunix DMC-LZ1 (odkaz je na můj první článek). Nyní bych chtěl napsat stručně o tom, jaké jsou moje zkušenosti po dvou měsících.

Předně musím všechny případné čtenáře upozornit na to, že nejsem žádný odborník na fotografování, takže omluvte mé případné nedostatky v názvosloví.

S fotoaparátem jsem velice spokojen. Plně uspokojuje moje potřeby, které ve většině případů spočívají v zachycování momentek z různých oslav a akcí. Fotoaparát jsem zatím moc nepoužíval pro fotografování makro scén, ale těch pár, které jsem fotil, se zdály být dobré.

Fotoaparát má jednu velkou nevýhodu. Tou je skoro neviditelnost zachycované scény při fotografování ve špatných světelných podmínkách. Těmi špatnými světelnými podmínkami mám na mysli například prostředí diskotéky, ve kterém jsem jej zatím využíval asi nejvíc. V tomto prostředí by se hodilo nějaké světlo na osvětlení zachycované scény, protože na displeji přístroje (hledáček není přítomen) ve většině případů není skoro nic vidět a musíte fotit "po slepu". Výhodou je však to, že se jedná o digitál, takže dyž se fotka nepovede, smažu ji a fotím znovu.

Rovněž sjem měl možnost vyzkoušet tzv. nekonečné focení. Fotoaparát dokáže ukládat přibližně dvě až tři fotografie za sekundu (možná o jednu víc — neměřil jsem to), což se hodí například při fotografování spotovních událostí nebo (jako v mém případě) při fotografování ohňostrojů. Sice jsem pak z asi dvouset vyfocených fotek dobrých 150 smazal a ze zbytku by bylo i tak použitelných jen asi 50, ale to už není způsobeno chybou fotoaparátu, ale fotografa.

Velice se mi líbí možnost nastavení dvou uživatelských scénických programů, kdy na jedné pozici můžete mít nastaveno například fotografování krajiny a na druhé třeba noční portrét (podle toho, které dva scénické režimy používáte nejčastěji).

Záznam videa jsem zkoušel jen letmo. Fotoaparát vytváří celkem hezké video, ovšem prohlížel jsem si ho pouze na displeji fotoaparátu, kde vypadalo dobře. Na počítač jsem jej nahrávat nezkoušel. Osobně tuto funkci nepoužívám a přijde mi trošku zbytečná. Už jen proto, že fotoaparát neumí zaznamenávat zvuk. Video je možné vytvářet až do velikosti volné kapacity paměti.

Tak to je zruba asi tak všechno, co bych chtěl po dvou měsících používání napsat. Nevylučuji, že někdy v budoucnosti napíšu ještě nějaké pokračování.

Jára Cimrman

Erotika

Erotika, erotika,
proč se nás tak mocně týká?
Oč by bylo méně bolu,
kolem kamen, kolem stolu,
oč by bylo více síly
pro sekyry, dláta, pily,
pro lopaty, pro motyky
nebýti té erotiky.

Kde bydlím

Na základě výzvy Petra Weidy na jeho blogu ve spotu Kde bydlíte?, jsem se rozhodl rovněž ukázat letecký snímek mého bydliště. Ovšem nechci to dělat jako všichni ostatní, tedy tak, že bych ten obrázek i s odkazem zobrazil tady na mém blogu, ale rozhodl jsem se, že ho zapracuju do mých stránek na stránku s kontakty.

Myslím si, že to je lepší využití, než na nicneříkající stránce na blogu. Takto to bude mít alespoň svůj význam. Ovšem nezabránilo mi to v tom, o tom napsat :o) A jak to funguje? No docela dobře. Na serveru T-MapServer (http://mapy.crr.cz/) je zobrazena schematická mapka a jednoduchý formulář, do kterého je možné zadat ulici včetně čísla popisného. Po odeslání formuláře se zobrazí nové okno s vyhledanými možnostmi a s ikonkou zeměkoule, která směřuje na zobrazení daného bodu na mapě. Nevím, jak moc rozsáhlá je databáze, ve které se vyhledává, ale dům, ve kterém bydlím, to našlo, takže bude asi docela obsáhlá. Mapa navíc umožňuje různé druhy zobrazení. Myslím, že je to celkem zajímavá aplikace.

PHP slaví desetileté výročí

Je tomu deset let, co spatřilo světlo světa PHP verze 1.0 (via Google Groups).

Sice to výročí bylo už včera, ale to je detail. Myslím, že by se slušelo popřát tomuto skriptovacímu jazyku všechno nejlepší do další desítky. Nechť se rozvíjí k dokonalosti.

Google PageRank už je zase funkční

O tom, že nebyl funkční Google PageRank se psalo minulý týden hodně, ale o tom, že už je zobrazování PageRanku zase v provozu nenapsal nikdo (alespoň jsem si žádného takového článku nevšiml).

Proto jsem se o tom rozhodl napsat alespoň tento kraťoučký spot. Podle mého názoru je Google PageRank, který se zobrazuje na Google Toolbaru, opět v provozu (já ho tam vidím).

Bobo - básničky

Moje zlato

Kdybys byla moje zlato,
pak by stál můj život za to.

Toho štěstí bych si vážil,
jako poklad bych tě strážil.

Byl bych šťastný jako dítě,
to protože miluji tě.

Moderní web - změna metodiky hodnocení

Teprve dnes jsem si všiml, že na Moderním webu došlo ke změně hodnotící metodiky a přitom k ní došlo už 18. 4. 2005. Myslím si, že to je způsobeno tím, že RSS export, který Moderní web nabízí neodkazuje na stránky Moderního webu, ale přímo na konkrétní weby, které se do galerie MW zařadily.

Pokud jde tu zmíněnou novinku, tak si myslím, že je to dobrý krok. Autoři webů, jejichž weby se do galerie zařadí, si můžou udělat alespoň přibližnou představu o tom, co by ještě měli změnit. Zvláště, pokud se ke svému hodnocení vyjádří i ti, kdo hodnotili.

Bobo - básničky

Tvoje oči

Mám rád tvoje krásné oči,
hlava se mi z toho točí.
Když se do nich podívám,
nevím co pak udělám.

Nejraděj bych v tuto chvíli,
dospěl mými ústy k cíli,
jímž jsou zase tvoje ústa,
tohle nejsou slova pustá,
to není jen luční kvítí,
tohle je co k tobě cítím.

Design a kód: Bohumír Bednařík (BoboCop), prohlášení přístupnosti