xom`s pinion - Tom Hnatovsky Blog

SUM intervalů v PostgreSQL

10. ledna 2015 PostgreSQL nekomentováno

PostgreSQL tutoriálNěkterá data a agregace dat lze z databáze dostat jednoduše, jiné složitěji. Ale prakticky vše má své řešení, jak jsme si zde již párkrát ukázali.

Dnes tu máme aplikaci pro evidenci pracovní doby, ve které je nutné pracovat s rozdíly časů a čas od času se vyskytne i potřeba součtu všech rozdílů z dceřinné tabulky.

Rozdíl datových typů timestamp, time či date lze jednoduše získat použitím prostého rozdílu.

SELECT time_to - time_from FROM workers

Výsledkem je hodnota typu interval, se kterým pracuje mnoho dalších metod v Postgre.

A teď k té sumě

Pokud ale jsou odpracované hodiny uloženy v dceřiné tabulce, tak potřebujeme provést agregaci dat, která se nám jednoduše s intervalem nepovede.

SUM(time_to - time_from)

bude vracet null.

Jako nejjednodušší řešení mi přijde volba jednotky, ve které chci agregovaná data mít - nám budou stačit minuty, které si z intervalu vytáhneme pomocí date_part funkce.

SELECT SUM( date_part('hour', work.time_to - work.time_from)*60 + date_part('minute', work.time_to - work.time_from) ) FROM work WHERE id_worker = 1

Výsledkem bude double obsahující součet rozdílů časů v minutách.

Rozdělení jména a příjmení v PHP

4. ledna 2015 PHP 1 komentář

Na základě článku Marka Prokopa o Lazy registration v e-shopu jsem se zamýšlel nad myšlenkou dělení celého jména na křestní jméno a příjmení.

Hledal jsem možné hotové PHP knihovny, které by si s tímto úkolem poradily, ale nic jsem nenašel, tak jsem si o Silvestru místo juchání napsal svou, o kterou se chci nyní podělit.

Základní idea

Knihovna pracuje s databází křestních jmen a má jednu metodu, která z jednoho stringu vrací pole obsahující oddělené jméno a příjmení.

Stažení a ukázkový kód

Knihovna je volně ke stažení na bitbucket.org/xomax/namesplitter

require 'NameSplitter.php'; $splitter = new NameSplitter; var_dump($splitter->splitName('Ta Duc Trunc')); // vypíše array(2) { ["firstName"]=> string(6) "Ta Duc" ["surname"]=> string(5) "Trunc" }

Jednoduché a nezávislé na frameworku, redakčním systému, použitelné všude.

Databáze jmen

Jako databázi křestních jmen jsem použil seznam z webu MVČR, který obsahuje téměř 600 tisíc záznamů, mezi kterými je i mnoho exotických jmen. Pro použití v Česku je to dostačující, při použití v zahraničním projektu bych doporučil se poohlédnout po jiné databázi.

Poznámka: Jména jsou v databázi velkými písmeny abych zachoval možnost jednoduché aktualizace přímo ze zdrojů MVČR, kde je takto mají vedeny.

Další vývoj

Budoucí verze by měla obsahovat podporu pro akademické tituly (další položka návratového pole).

Také si pohrávám s myšlenkou vracet pole hodnot namísto sloučeného stringu křestních jmen / příjmení.

Poslední věcí, která mě trápí jsou jména, která neobsahují jméno z databáze nebo všechna jména jsou v ní obsažena. První případ nyní vrací celé jméno jako příjmení a křestní jméno zůstává nevyplněno. Druhý případ je složitější - jak vybrat správné jméno, které má být příjmením? Nyní to funguje tak, že se vrací poslední jméno jako příjmení. Napadlo mě, že by šlo u křestních jmen držet jejich četnost a na základě porovnání četnosti se rozhodnout, co je pravděpodobnějším křestním jménem, ale to by prostě nefungovalo - dříve nebo později by došlo k omylu.

Znáte jiné řešení?

Pokud znáte nějakou jinou funkční knihovnu, podělte se. Dost pravděpodobně bude propracovanější.
Pokud na nic jiného nenarazím, budu pokračovat v údržbě NameSplitteru.

Chybějící náhledy souborů v Adobe Photoshop CS6

28. srpna 2012 Web designAdobe nekomentováno

Náhledy souborů ve Photoshopu CS6

Adobe Photoshop CS6 postrádá zobrazení náhledů PSD souborů v dialogovém okně pro otevření souboru. Na Macu to není nejmenší problém, Finder umí náhledy zobrazit, ale Průzkumník ve Windows to nezvládne.

Naštěstí existuje několik prográmků, které umí náhledy v Průzkumníku zobrazit.

SageThumbs 2

SageThumbsProgram je malý, instalátor má 2MB a samotný programu je svižný a neukusuje mnoho paměti. Prvotní generování náhledů ve složce trvá několik sekund, ale později se obrázky načítají z cache.

SageThumbs se mi moc líbí, je postaven na GFL knihovně (vyvinutou pro prohlížeč XnView), licence je zdarma, ale neumí zobrazit náhledy pro nejnovější verzi PSD, kterou produkuje Photoshop CS6.

Stránky výrobce SageThumbs

Pro:
+ Zdarma
+ Rychlost
+ Malá velikost

Proti:
- Nezvládá formát PSD CS6

FastPictureViewer Codec Pack 3.3

FastPictureViewer codec packDruhý testovaný program je o poznání větší (instalátor má 20 MB), ale s pamětí pracuje na nižších úrovních než SageThumbs. Generování náhledů ve složce je o trochu svižnější než u předchozího programu, obrázky se později načítají z cache.

Program umí zobrazit i poslední verzi PSD a jeho licence stojí $15, což není mnoho i vzhledem k podpoře RAW formátů různých fotoaparátů (fotky z Nikonu D300s zobrazil velice rychle).

Stránky výrobce FastPictureViewer Codec Pack

Pro:
+ Rychlost
+ Zvládá formát PSD CS6

Proti:
- Není zdarma (což se ale pozitivně odrazí na aktualizacích pro novější grafické formáty)

MysticThumbs 3

MysticThumbsTřetím program v testu má instalační balík velký 10 MB a při instalaci si ještě vyžádá stažení GhostScriptu pro zobrazování náhledů PDF. Generování náhledů ve složce mi přišlo o něco málo pomalejší než předchozí testované programy, náhledy ale obsahují i vizualizaci průhlednosti a poloprůhlednosti (pokud nemají vyplněné pozadí).

Program umí zobrazit i poslední verzi PSD a jeho komerční licence stojí $29. Ostatní testované programy běželi jako systémové pluginy, MysticThumbs ke svému běhu ještě využívá externí program, který umí zobrazit např. náhled souboru.

Stránky výrobce MysticThumbs

Pro:
+ Zvládá formát PSD CS6

Pro:
- Nejdražší
- Na pozadí běží více obslužných procesů

Na základě zkušeností s trial verzemi mi byl nejsympatičtější program FastPictureViewer Codec Pack, proto jsem zakoupil jeho licenci (vše proběhlo přes PayPal rychle a bez zádrhele). Výrobce tohoto programu je aktivní, každý měsíc přibude nějaké vylepšení (dle changelogu), a díky Adobe mu zákazníci jenom porostou.

© 2004-2012 Tom Hnatovsky - Všechna práva vyhrazena