xom`s pinion - Tom Hnatovsky Blog
KHTML na Windows? Zatím jen Swift!
Safari, jé! Uvidíme žirafy, lvy a rosomáky!
Kdepak, většina uživatelů českých Windows XP a dle reakcí i některých Windows Vista si Safari ani nespustí. Předevčírem vydalo Apple svůj internetový prohlížeč Safari i ve verzi pro Microsoft Windows – zatím se jedná o první veřejnou betu. Zpráva, že velká společnost vydává prohlížeč postavený na KHTML jádře, je na první poslech výtečná. Na druhý poslech již tolik ne, vzhledem k problémům uživatelů vůbec Safari pustit.
Win Safari jsem také nespustil, ale stále mám kde své výtvory kontrolovat – již kolem roku sleduji vývoj prohlížeče Swift, který je momentálně dostupný v mnohem stabilnější verzi a má problémy s vykreslováním u méně elementů než Safari..

Pokud chcete na Windows zkoušet náhledy stránek vykreslené KHTML jádrem a nechcete instalovat virtuální linux operační systém, tak si stáhněte Swift – alespoň ho spustíte, narozdíl od Apple pokusu..
Pod čarou: Uvedení Safari pro Microsoftí systém mně připadá jako předvoj expanse Applu i na počítače, jejichž case nezdobí nakouslé jablko. Upřímně řečeno, předvoj ztroskotal v první zatáčce závodní trati. Budoucnost ukáže jak bude Apple ještě dlouho kopat kolem sebe, jeho poslední kroky na poli velkých počítačů nebyly zrovna slavné..
Ukázkový obrázek seznam.cz na Safari jsem si půjčil z conBlogu Jiřího Bureše.
Levná a kvalitní myš Canyon NRMSL5
Tak jsem si před 3 nedělemi koupil novou myš k notebooku. Ta stará Genius Mini Traveler začala mít problémy s přerušeným kabelem – nejspíš následek samo navíjecího systému. Hlavní podmínkou bylo, že si koupím k nahrazení starého elektronického hlodavce něco levného, abych nebyl naštvaný, až mi zase udělá pápá.
Objednal jsem si Canyon CNRMSL5. V CzechComputeru asi museli být šťastni z toho, jak jsem takřka 14 dní trval na tom, že si chci koupit právě tuto myš za 150 korun a žádnou jinou. Canyon myšku nějak neměli skladem, ale já jsem vytrval. Když jsem si ji přebíral, tak jsem byl překvapen růžovou krabicí, nu což, alespoň to má krabici. Myš překvapila – na obrázcích vypadá větší než ve skutečnosti je, k notebooku má takřka ideální velikost – akorát do přihrádky v mé brašně.
Tvar je velice příjemný, má ruka na myši krásně sedí, problém bych viděl s užíváním v levé ruce. Povrch je matně černý a zachycuje mnoho otisků prstů, jakékoliv zašpinění je vidět. Na levém boku, kde budete mít palec, je vložena zvrásněná guma, která zlepšuje vedení myši. Plošky (nožičky) po kterých Canyon klouže nemají žádný problém s hladkými povrchy, ale zaznamenal jsme drobné potíže s trháním na drsnějším látkovém podkladu. Myš disponuje 7 tlačítky (pokud počítám i možnost mačkat kolečko) a nebyl jsem si před koupí úplně jist, jestli budu přídavná tlačítka využívat. Nyní mohu prohlásit, že jsem závislý. Levé horní tlačítko obsahuje v části u kolečka červené tlačítko, které simuluje dvojklik. Umístění tlačítka mě zlenivěla natolik, že již prakticky neumím dvojklikat.
Na levém boku myši jsou další dvě tlačítka – ideálně na ně směřuje palec. Standardní nastavení je ovládání historie v internetovém prohlížeči. Super funkce, chci jít o stránku zpět a nemusím přejíždět kurzorem přes celou stránku či sahat na backspace klávesnice.. Na hřbetu myši je ještě netradiční tlačítko Office, které otevírá speciální nabídku, do které si můžete přidat tlačítka na rychlé spouštění programů. Vzhledem k umístění i funkci toto tlačítko ignoruji a zcela bych se bez něj obešel.
V intuitivním programu pro nastavení myši se dají veškeré akce na jednotlivých tlačítcích nastavit dle vaší libosti.
Myš pracuje na laserové technologii s vyšším rozlišením než klasické optické myši a toto řešení si také velice pochvaluji – myš pracuje spolehlivěji na více typech povrchů a je i trochu přesnější – ne zas o tolik. Znatelné rozdíly v přesnosti bych očekával až u herních modelů s 2000dpi.
Jsem spokojen, nečekal jsem to, ale je to tak. Canyon vyrobil výbornou myš, která je super levná, ale zároveň velice kvalitní. Tak přemýšlím, proč bych měl někdy platit za nějakého drahého hlodavce např. od Logitechu, když si mohu dopřát stejnou muziku za méně peněz.
Můj malý údiv na závěr: Připojení myši nezkontrolujete tím, že svítí - ona totiž nesvítí, alespoň ne na frekvenci, kterou by lidské oko vidělo.
SQL cvičení - Výběr aktualních komentářů
Mějme modelový projekt, předpokládejme, že máme články a k těm je možno přidávat komentáře. Součástí aplikace je zároveň funkce, která vrací poslední tři komentované články – nikoliv poslední 3 komentáře, ale poslední články.
Jak na to SQL příkazem, abychom nemuseli třídit data externě?
V tabulce article máme 3 články:
id | name |
---|---|
1 | Nový článek |
2 | Jiný článek |
3 | Další článek |
V tabulce comment máme 4 komentáře z různých dní:
id | id_article | date | author |
---|---|---|---|
1 | 3 | 2007-03-02 | xom |
2 | 1 | 2007-03-03 | myff |
3 | 2 | 2007-03-04 | xom |
4 | 2 | 2007-03-05 | lada |
Nelezl jsem dvě řešení, přesně nevím, které z nich je optimálnější, možná mi pomůžete v komentářích nebo vás napadne další možnost řešení.
První řešení je následující:
Použijeme funkci MAX
, která nám vybere nejnovější datum a zároveň výsledek zgroupujeme podle názvu článku a srovnáme podle data.
SELECT
MAX(comment.date) AS date,
article.name
FROM
article LEFT JOIN comment ON article.id = comment.id_article
GROUP BY
article.name
ORDER BY
date DESC
LIMIT
3
2007-03-05 | Jiný článek |
2007-03-03 | Nový článek |
2007-03-02 | Další článek |
No jo, ale co když potřebujeme vybrat více položek z komentáře, pokud bychom chtěli primární klíč – id, tak není problém, jelikož se předpokládá, že bude mít nejvyšší číslo klíče pole, které má zároveň nejnovější – nejvyšší datum.
Funkci MAX(comment.id)
musíme uvést, jelikož chceme filtrovat výsledky dle tabulky article
, pokud bychom selectovali čistý comment.id
, tak bychom ho museli zahrnout do definice GROUP BY
. Tím by se nám výsledku znehodnotili na něco podobného:
2007-03-05 | Jiný článek | 4 |
2007-03-04 | Jiný článek | 3 |
2007-03-03 | Nový článek | 2 |
S použítím MAX(comment.id)
a nezahrnutím do GROUP BY
je výsledek optimální:
2007-03-05 | Jiný článek | 4 |
2007-03-03 | Nový článek | 2 |
2007-03-02 | Další článek | 1 |
Problém by nastal, pokud bychom chtěli vybrat jméno komentujícího comment.author
, při použití funkce MAX
by databáze přiřazovala k výsledku jméno, které by nemuselo patřit k vracenému datu komentáře.
Dostali jsme se nejspíš do slepé uličky v modifikaci této metody.
V SQL existuje deklarace DISTINCT
, která odstraňuje duplicitní hodnoty. V příkladu:
SELECT DISTINCT
id_article
FROM
comment
Tento select by nám vrátil
1 |
2 |
3 |
Jenže při použití na náš příklad by nespatřoval žádný výsledek jako duplicitní, protože vybíráme hodnoty, které se nikdy nepřekrývají úplně.
Postgre SQL má funkci DISTINCT ON
, která umožňuje filtrování duplicit přes definované sloupce.
Jasnou volbou je, že nechceme mít duplicitní hodnotu id_article
, která je vzdáleným klíčem tabulky article
.
SELECT
DISTINCT ON (comment.id_article)
comment.date,
article.name,
comment.author
FROM
article JOIN comment ON article.id = comment.id_article
ORDER BY
comment.id_article,
comment.date DESC
LIMIT
3
Nevýhodou tohoto řešení je nutnost uvést parametr funkce DISTINCT ON
na prvním místě v deklaraci ORDER BY
, což znamená, že máme ve výsledku 3 poslední komentáře 3 různých článků, ale neseřazených dle data.
2007-03-03 | Nový článek | myff |
2007-03-05 | Jiný článek | lada |
2007-03-02 | Další článek | xom |
Seřazení dle data jsem provedl vnořeným selectem..
SELECT
*
FROM (
SELECT
DISTINCT ON (comment.id_article)
comment.date,
article.name,
comment.author
FROM
article JOIN comment ON article.id = comment.id_article
ORDER BY
comment.id_article,
comment.date DESC
LIMIT 3
) AS tabulka
ORDER BY
date DESC
LIMIT
3
A výsledek je:
2007-03-05 | Jiný článek | lada |
2007-03-03 | Nový článek | myff |
2007-03-02 | Další článek | xom |
Vybrali jsme z databáze 3 nejnovější příspěvky ke 3 různým článkům v pořadí od nejnověji přidaného.
Znáte nějaký lepší způsob? Komentáře jsou k dispozici..