7 dôvodov prečo je Illustrator na prd

napísal , 15 Feb 2011

No dobre, Illustrator určite nie je úplne "na prd", veď sa v ňom dajú robiť pekné obrázočky. :) Existuje však kopec nedotiahnutých detailov, kvôli ktorým sa jeho používanie miestami mení na zápas s vašou trpezlivosťou.

Najzaujímavejším na tom všetkom je, že Photoshop má každú vec, ktorú teraz spomeniem, spravenú úplne v poriadku. Pozoruhodné je to z dôvodu, že oba programy sú v Adobe vyvíjané súbežne už 20 rokov, do značnej miery kopírujú svoj interface a filozofia ovládania je celkovo veľmi podobná.

S každým jedným na nervy lezúcim detailom som sa stretol nespočetne veľakrát. Po prvých pár desiatkach som zažíval rôzne pocity typu FFFFFFFFUUUUUUUUU, po stovke som si chyby začal zapisovať a teraz ich ukážem celému svetu:D, aby ste vedeli čomu sa vyhnúť pri návrhu UI aplikácií, ak chcete, aby vaši používatelia neprišli o veškeré duševné zdravie.

1. Zoomovanie s kolieskom iba s ALTom

Illustrator zooming and mouse wheel

Keď pohýbete v Illustrátore s kolieskom myši, plocha sa posunie hore/dole o zodpovedajúci počet pixelov. NAČO BY TOTO KOMU KEDY BOLO?? Kto by sa už len chcel posúvať po pixeloch, keď stačí stlačit medzerník a ťahať? Seriously...

Horšie je, že kým vo Photoshope môžete zoomovanie s kolieskom zapnúť, v Illustratore sa autori, ako vidíte na obrázku, na to akosi vykašlali. Zoomovať sa dá našťastie podržaním ALTu, ale z toho vyplýva jedna veľmi nepekná vlastnosť (okrem toho, že musíte zbytočne stláčať ALT:) :

2. Po zoomovaní je 50% šanca, že nebudú fungovať skratky

Illustrator keyboard shorcuts won't work after zooming

Keďže ste na zoomovanie potrebovali ALT, podľa toho, či ste zoomovali nepárny alebo párny počet razov, zostane/nezostane označené horné menu. Ak je označené, nefungujú, pochopiteľne, klávesové skratky. Čiže keď si po zoomovaní chcete vybrať napríklad základný select tool (skratka v), rozbalí sa namiesto toho menu View.

Toto je podľa mňa zďaleka najhoršia vec na Illustratore a nechápem ako je možné, že je prítomná aj v dnešnej 12-tej verzii. Dalo by sa argumentovať tým, že môžem používať aj zoom tool (lupu), ale neviem prečo by som si mal komplikovať život používaním ďalšieho nástroja keď mám KOLIESKO. Načo mi inak bude? Aby som si s ním točil z dlhej chvíle?

Achievement unlocked!

napísal , 25 Jan 2011

Awww, chudák náš úbohy blog, nejak sme ho v poslednej dobe ignorovali. Za to všetko môže evil škola! (a zajtra.sk ;) But we're back in business a povieme si ako v PHP spraviť nejakú riadnu sprostosť - napríklad achievement generator™.

Myšlienka za ním bola asi taká, že pokiaľ sa niekto zvykne velice chváliť nepodstatnými blbosťami a lezie s tým na nervy, pošlete mu takýto obrázok a možno to bude mať zaujímavý efekt. Pokiaľ ste za posledných pár rokov hrali nejakú novšiu hru, určite vašej pozornosti neuniklo, že vás zasypávajú kadejakými trofejami a achievementami pri každej príležitosti. (Niekoho to akože aj reálne teší? Podľa mňa je väčšina vývojárov dosť slabých psychológov, súdiac podľa toho aký majú achievementy na mňa efekt. :p)

Demo - brm achievement generator™!

Čo sa týka programovania, budeme chciet písať text na obrázok pomocou knižnice GD a odosielať ho ako PNG, plus využijeme nejaký ten URL shortener, aby vaša "obeť" nevidela čo jej to posielate. Všetko samozrejme pôjde cez AJAX.

System Shock 2 - My nightmare before xmas

napísal , 23 Dec 2010

System Shock 2
System Shock 2 (1999)
by Irrational Games & Looking Glass Studios

Keby sa ma niekto spýta aký je môj jeden najobľúbenejší film, album alebo kniha, nevedel by som mu ani za boha odpovedať. :) Pri hrách by mi však bez váhania prišiel na rozum jeden názov.

Nie že by som hral málo hier a preto si bol taký istý, skôr naopak, keby zrátam všetok čas strávený hraním, vyšplhal by sa zrejme na znepokojivo vysoké číslo. No a napriek tomu je SS2 pre mňa jasná voľba.. čím to je?

System Shock 2 je niečo, čo by som reálne označil za kultovú hru - nie je pre každého, ale komu sa páči, je veľká šanca, že bude z nej celý bez seba. :) Za jeho hlavnú zložku považujem atmosféru magnitúdy, s akou som sa doteraz nikde nestretol a ktorá tvorí spolu s unikátnym príbehom a hrateľnosťou neskutočne silný celok. Presnejšie ide o kombináciu hororovej FPS + RPG zasadenú do cyberpunkového sveta výskumnej vesmírnej lode Von Braun, na ktorú ste boli poslaní ako vojak/hacker, čo má pomôcť vyriešiť vzniknutú situáciu po tom, ako posádka vyslala núdzový signál.

Slovo hororová myslím úplne vážne a narozdiel od všetkých iných wannabe strašidelných hier je System Shock 2 jediná, kvôli ktorej som reálne nemohol spávať. Pamätám si ako som si vždy v noci hovoril, že to už na druhý deň určite nezapnem a ráno som hneď utekal k PC. :)

Jednoduchý export z PHP do Excelu

napísal , 9 Dec 2010

Je veľká šanca, že pokiaľ robíte webovú aplikáciu s akýmikoľvek tabuľkovými dátami, ktorá je určená pre ne-IT ľudí, budú od vás chcieť export údajov do Excelu. Ak nemajú veľmi obskúrne požiadavky (grafy, farebne odlíšené políčka, ...), môžete im pomerne jednoducho spraviť radosť - here's how:

V prvom rade nebudeme používať .xls, lebo to je škaredý binárny formát :), ale primitívny formát .csv (comma-separated values), ktorý vie Excel čítať a basically vyzerá takto:

Stlpec1,ďalší stĺpec,ešte stĺpec...
10,12,42
32,23,64
128,0,256

Na stránke asi používate UTF-8, takže samozrejme bude v Exceli problém s diakritikou a špeciálnymi znakmi. Problémy s enkódovaním sa dajú riešiť tak, že zakódujete súbor do Unicode a ako oddeľovače použijete taby (namiesto čiarok). Unicode sa dá vyjadriť veľa spôsobmi (UTF-8 je jedným z nich), ale Excel a Windowsovské veci vo všeobecnosti rozumejú iba UCS2/UTF-16 with BOM, čo znamená, že všetky znaky sú 16-bitové a súbor má na začiatku špeciálny znak (Byte Order Mark) udávajúci usporiadanie bitov (Big Endian alebo Little Endian - Windows používa ten druhý).

Vygenerované .csv nakoniec treba browseru odoslať ako súbor (inak by sa namiesto download okna zobrazil obsah súboru v prehliadači), na čo stačí zmeniť HTTP hlavičky.

$export = "Stlpec\tĎalší stĺpec\tEšte stĺpec\n";
while ($o = mysql_fetch_object($res)) $export .= "$o->stlpec\t$o->dalsi\t$o->este\n";

header('Content-type: text/csv');
header('Content-Disposition: attachment; filename="drist.csv"');
echo chr(0xFF).chr(0xFE) // BOM pre Little Endian
     .mb_convert_encoding($export, "UCS-2LE", "UTF-8"); // konvertujeme z UTF-8 do UCS2/Little Endian

Pro tip: ak by sa v samotných hodnotách mali objaviť taby (čo to máte pre boha za údaje? :), treba celú hodnotu dať do úvodzoviek:

"I can has	tabs"	bla	dríst

Lifechanging revelations

napísal , 29 Nov 2010

Donedávna som žil v magickom svete, kde boli fonty dokonale symetrické a nechápal som ako ich ľudia robia tak vymakane. Vyžaduje to nejaké špeciálne nástroje? alebo prudké skillz? Well, vyžadovalo to hlavne pozrieť sa na vec zbližša, aby som zistil, že pravda je niekde inde.

Tak som si otvoril legendárny font fontov - Helvetica (pre tých, čo nevedia - používa sa prakticky všade a napríklad Arial je jeho shameless napodobeninou:) a začal ho podrobne skúmať. No a tu som zistil, že to, čo navonok pôsobí ako perfektné tvary, je vlastne dosť asymetrický bordel, kde "dokonalosť" niekto neriešil. Pozrite sa na toto:

Helvetica - asymetrické v

Klikni pre zväčšenie

Čiernou farbou je napísané normálne "v" a priesvitnou zelenou je zrkadlovo obrátené a vycentrované "v". Ako vidíte, tvary vôbec nesedia a keď už ani len obyčajné posraté jednoduché "v" v Helvetice nie je symetrické, tak potom naozaj už nič nemusí byť! :)

Helvetica - asymetrické v

Klikni pre zväčšenie

Druhý príklad, kde dobre vidieť asymetriu, je číslica 8. Všimnite si vyznačený stred a ako je každý bod krivky posunutý niekde inde. O tom, že každý bod má iné parametre zakrivenia ani nehovorím..

Takže čo z toho vyplýva? Ak ste takí perfekcionisti ako ja, vykašlite sa na to, všetko robte kľudne od oka - stačí aby to vyzeralo dobre. Mimochodom aj tieto moje screenshoty majú dosť "vadné" veľkosti (903x1038) a všetci sme to prežili. ;)

Dojmy z TEDx Prague

napísal , 22 Nov 2010

TEDxPrague

TED je pozoruhodná konferencia "o nápadoch", ktorá sa každoročne koná v Kalifornii. Heslo TEDu "Ideas worth spreading" je asi najvýstižnejšou definíciou, pretože témy prednášok sú tak rôznorodé ako málokde. Celá konferencia je skutočne o nápadoch hodných šírenia, ktoré môžu zmeniť vás, vaše vnímanie, ľudí, rôzne oblasti výskumu a možno aj celý svet.

Väčšina prednášok je natoľko inšpiratívna, že sú z nich zverejňované videá (TED talks), ktoré v súčasnosti dosahujú hranicu okolo 300 miliónov pozretí. TED ale nie je len o prednáškach, je predovšetkým o zaujímavých ľuďoch a otvorenej atmosfére. Medzi blokmi prednášok je priestor na diskusiu, v ktorom sa môžete rozprávať so všetkými účastníkmi o čom chcete a aby to bolo jednoduchšie, každý má menovku s tromi témami, ktoré ho zaujímajú.

Problém je, že účastníkov môže byť len limitovaný počet a aj cena lístka je pre väčšinu ľudí úplne nereálna - $6000. Preto vznikol formát TEDx (x = independently organized TED event), ktorý spočíva v tom, že dobrovoľníci môžu organizovať menšie lokálne "polooficiálne" konferencie, ktoré sa nesú v duchu veľkého TEDu a podliehajú zopár jeho pravidlám (hlavne čo sa týka formátu a konceptu). Takáto dobrovoľníkmi organizovaná konferencia bola zrovna predvčerom v Prahe.

Po výborných zážitkoch z jarného TEDx Bratislava som neváhal ani minútu a hneď kupoval lístok na pražský TEDx. Bratislavský TEDx mal neuveriteľne príjemnú a inšpiratívnu atmosféru a bol tak dobre organizovaný, že som ani nečakal, že ho može aktuálny pražský prekonať. Nuž, popravde sa vôbec nedokážem rozhodnúť ktorý bol lepší :), iba viem, že na žiadny iný event sa mi neoplatilo ísť viac na ako tieto dva.

Na pražskom TEDx-e (s podtitulom ReSTART - začněme jinak) sa zišlo 450 ľudí, prednášalo cca 20 speakerov a bol štruktúrovaný do troch blokov prednášok na témy Rekreace a znovu(s)tvoření, Naděje - děti a vzdělávání a Recyklace civilizace a hodnot. V každom bloku boli speakeri z Česka aj zahraničia a púšťalo sa jedno video TEDtalk.

Informácie o prehliadači v kontaktnom formulári

napísal , 14 Nov 2010

Kompatibilita prehliadačov je stále lepšia, ale ešte stále sa môže veľmi ľahko stať, že návštevníkom vašej stánky bude blbnúť nejaký prvok. Hlavne pokiaľ je určená netechnickým ľudom, ktorých absolútne netrápi, či majú nový prehliadač, prípadne čo to ten prehliadač vôbec je.

Pri troche šťastia sa vám pôjdu niektorí ľudia posťažovať, že im niečo nefunguje, napíšu napríklad cez kontaktný formulár a vy sa budete ako správny developer snažiť opraviť chybu. Pokiaľ vám všetko fungovalo, daný človek musí mať určite iný prehliadač. Ale aký? ..no to sa od netechnického človeka dozviete veľmi ťažko :p

A tu prichádza na rad tento malý tip.

Do kontaktného formulára (a v postate hocikde, kde je šanca, že sa používatelia môžu na vašu stránku sťažovať:) pridajte takéto skryté pole a ušetríte si kopu starostí:

<?php
	$dbg = (count($_COOKIE) ? 'cookies: on' : 'COOKIES: OFF!').', '
		.'browser: '.$_SERVER['HTTP_USER_AGENT'].', '
		.'ip: '.$_SERVER['REMOTE_ADDR'].', '
		.'js: OFF!';
?>
<input type="hidden" name="extra" id="extra" value="<?=$dbg?>">
<script>
$(function()
{
	$("#extra").val( 
		$("#extra").val().replace("JS: OFF!","JS: on")
		+"; resolution: " + screen.width+"x"+screen.height
		+", document: "+window.innerWidth+"x"+window.innerHeight 
	);
});
</script>

Vďaka tomuto políčku budete hneď po kontaktovaní vedieť aký ma človek prehliadač, IP adresu, rozlíšenie displaya, veľkosť okna browsera a či má zapnuté cookies a Javascript. Podľa potreby môžete pridať kontrolu Flashu, Javy, premenných zo $_SESSION a kadečoho iného. Kontrola cookies cez PHP funguje samozrejme iba v prípade, že ich používate. ..ale pokiaľ ich nepoužívate, asi vás ani nebude trápiť, či používateľovi fungujú :)

Pre lepšiu predstavu - výstup vyzera približne takto:

cookies: on, browser: Opera/9.80 (Windows NT 6.1; U; en) Presto/2.6.30 Version/10.63, IP: 78.98.13.37, JS: on; resolution: 1600x900, document: 1600x815

Aby sme neobišli bez nejakých tých zrád, tak Opera/9.80 je v skutočnosti 10.xx a Windows NT 6.1 je Windows 7 :)

Kontaktný formulár by mal aj niekoho kontaktovať, na čo sa dá použiť PHPčková funkcia mail(), ktorej ale treba trocha pomôcť, aby sa v maile zobrazoval správny odosielateľ a diakritika.

$header = "MIME-Version: 1.0\n"
	."Content-type: text/plain; charset=UTF-8\n"
	."From: vasa@stranka.sk\n"
	."Reply-to: ".$_POST['email']."\n";

$predmet = '=?UTF-8?B?'.base64_encode('[kontaktný formulár] správa od: '.$_POST['meno']).'?=';

$sprava = $_POST['sprava']."\n-------------------\n".$_POST['extra'];

mail("sem.chcem.dostavat@maily.sk", $predmet, $sprava, $header);

V takomto prípade v pohode stačí plaintextový mail. Ak ale chcete byť fancy, k dispozícií sú HTML maily o ktorých si povieme nabudúce. :)