Android SDK Manager a Java Portable

tl;dr: http://stackoverflow.com/questions/14504325/cant-get-android-sdk-manager-to-open 1. odpověď.

Nemám rád instalace, co sviní počítač zbytečnostmi. Proto dávám přednost distribucím bez instalace (má to svoje nevýhody a nemůžu to doporučit každému). Proto když jsem se rozhodoval, jakou variantu Androidího SDK stáhnu (potřeboval jsem pro ADB), SKD tools v ZIPu byly jasnou volbou.

Jenže po rozbalení a pokusu o spuštění SDK managera jenom probliklo okno a dál nic. Samozřejmě byl problém v Javě, kterou manager potřebuje a kterou taky nemám řádně instalovanou. Takže se o ní neměl jak dozvědět. Naštěstí jsem celkem rychle narazil na řešení – viz odkaz v tl;dr.

Je potřeba upravit soubor find_java.bat ve složce SDK/tools/lib/ přidáním podtrženého řádku (mezi ty nepodtržené)

...
rem Check we have a valid Java.exe in the path. The return code will
rem be 0 if the command worked or 1 if the exec failed (program not
found). for /f %%a in ('%~dps0\find_java.exe -t') do set java_exe=%%a
set java_exe="cesta_k_souboru_\java.exe"
if not defined java_exe goto :CheckFailed
...

Jednoduché, jen vědět, kam šáhnout, že?

Android: Nespecifikovaná chyba při kopírování z SD karty

tl;dr: adb pull /sdcard/ „C:/Users/Username/Desktop/Zaloha“

Když chcete zálohovat uživatelská data z Androidu a nemáte ROOT, nejjednodušší cesta vede přes zkopírování celého obsahu SD karty. Takto se dají zálohovat i data aplikací (nikoliv samotné aplikace*).

Jenže se vám (stejně jako mně) může při kopírování objevovat nepříjemná hláška, kterou kopírování skončí, ještě než pořádně začne:

Chyba při kopírování souboru nebo složky – Nespecifikovaná chyba.

android-kopirovani-nespecifikovana-chyba

Pokud máte v telefonu klasickou externí SD kartu, můžete se poťouchle pousmát, odpojit ji (Nastavení > Úložiště > odpojit SD kartu) a načíst pomocí čtečky. Popř. připojit zařízení jako Mass Storage, to taky většinou pomůže, jen to zařízení musí umět.

Ovšem, pokud jste si nechali vnutit zařízení bez vyjímatelné karty, nebo ji máte zformátovanou jako interní v Androidu 6 (a vyšším), tak lehké to nebude. Naštěstí cesta existuje.

Budeme potřebovat ADB (Android Debug Bridge). Jak nainstalovat a stáhnout vše potřebné jsem už popsal dříve v článku o „odcihlování“ Huawei Y300 v kapitole Stavíme mosty. Většina informací zůstává stejná, jen odkaz pro stažení SDK tools package teď schovali do tabulky úplně dole na stránce – není potřeba stahovat celé Android Studio, SDK tools package má vše potřebné.

Až přes Android SDK Managera stáhnete Android SDK Platform-tools (nic dalšího netřeba stahovat – všechno ostatní s klidným srdcem odškrtněte). Najděte umístění programu adb.exe typicky:

C:\Users\Uživatel\AppData\Local\Android\android-sdk\platform-tools

A otevřete tam příkazový řádek

C:\Users\Uživatel\AppData\Local\Android\android-sdk\platform-tools>

Popř. stačí pomocí kláves WIN+R vyvolat dialog Spustit…, zadat cmd a potvrdit. Otevře se příkazový řádek a tam zadat.

CD "C:\Users\Uživatel\AppData\Local\Android\android-sdk\platform-tools"

(v příkazovém řádku nefunguje ctrl+v, vkládá se pravým myšítkem)

Teď připojte (pokud jste ho měli připojený už před tím, nic se neděje) telefon a zapněte Ladění přes USB. Bývá v Nastavení > Vývojářské nástroje, ale u některých telefonů jsou vývojářské nástroje skryté a zobrazí se až po tom, co 7x ťápnete na číslo sestavení v informacích o zařízení.

Je na čase vyzkoušet, jestli je telefon viditelný – do příkazového řádku zadejte

adb devices

Pokud to vypíše něco podobného, je vše v pořádku.

List of devices attached
HQB0D5C96S533U49 device

V opačném případě je chyba nejspíš v chybějícím USB ovladači – bude zapotřebí jej stáhnout přes stránky výrobce. Popř. zkusit univerzální od Googlu (dá se stáhnout přes SDK Managera).

A teď záloha samotná – příkazem:

adb pull /sdcard/ "C:/Users/Username/Desktop/Zaloha"

Toto začne stahovat celý obsah SD karty do složky Zaloha na ploše uživatele Username – cestu lze změnit, dopředná lomítka nejsou chyba.

Průběh stahování je vidět v příkazovém řádku a v závislosti na objemu dat to může nějakou dobu trvat (i desítky minut).

Takto vytvořená záloha se dá nahrát zpátky pomocí příkazu

adb push "C:/Users/Username/Desktop/Zaloha" /sdcard/

Na závěr snad jen poznámka, že se může stát, že SD karta se v zařízení nebude nacházet ve složce /sdcard/. Potom je nutné umístění vyhledat. Ale tady je zapotřebí znalost Linuxových příkazů cd, ls pro práci v Shellu po zadání příkazu:

adb shell

A taky vědět, že ADB Shell se ukončuje příkazem exit.

*Ale můžete si zálohovat instalační balíčky aplikací – pro tyto účely můžu doporučit skvělý AppWereRabbit.

Jak nainstalovat tiskárnu/skener od HP bez zbytečných programů navíc

tl;dr: Vyhledat ovladače na dodávaném CD (přes Správce zařízení) nebo ze souborů extrahovaných z instalátoru staženého ze stránek.

Jakožto vlastníka tiskárny se skenerem od HP mě jimi dodávaný software vytáčí (přesněji vytáčel) k nepříčetnosti – nejdřív to chtělo hledat aktualizace (stejně žádné nevydali), potom to od poloviny cartrige řve, že je málo inkoustu a o tom, že to spouští plno procesů po startu ani nemluvě. Pohár trpělivosti přetekl a začal jsem přemýšlet co s tím…

Přeci není možný, aby blbá tiskárna potřebovala ke svému chodu půl giga dat. No, zkusil jsem malej trik. Přeci když připojíte nový HW, Windows se vás zeptají, na umístění ovladače (což bývají pár KB soubory a něco takového se na CD přeci taky nachází!

Takže:

  1. Odinstalovat všechno* od HP (*co se týká tiskárny, protože pokud máte počítač od HP, můžete odstranit i neco, co nechcete)
  2. Připojit tiskárnu
  3. Počkat až vyskočí automatické hledání ovladačů a (pokud to nenajde nic na Windows Update, což u staršího HW nenachází), to nabídne možnost vyhledání ovladačů ručně. Vyberte umístění – CD/DVD mechaniky, kde je instalační CD a dejte vyhledat.
  4. Ovladače by měly být vyhledány a zařízení připravené k používání :)

Ovšem co když instalační CD není k dispozici (a Windows nenajde ovladače automaticky)?

  1. Stáhnout ovladače (instalátor) ze stránek výrobce (nelekat se velikosti souboru, nepoužijeme celý ;) )
  2. Instalátor nespouštět! Ale místo toho otevřít pomocí programu pro práci s archivy (jako je můj oblíbený 7zip) a instalátor někam „vybalit“ (podrobně je to popsané v článku Fallout 2 + High Resolution Patch pod Windows 8/8.1)
  3. Dát vyhledat ovladače ve složce, kde je vybalený instalátor.
  4. Hotovo :)

PS: Možná vám bude „chybět“ program pro skenování. A já vím, že ten od HP nechcete! Řešení: NAPS2 – když je skenování s HP utrpením

30 FPS musí stačit každému

tl;dr: Článek má sloužit (nejen) jako univerzální odpověď do diskuzí u lživých či zavádějících článků ohledně významu snímkovací frekvence ve videohrách.

Předmluva

V tomto článku bych rád probral celou problematiku a k závěrům se dostal logickou cestou, aby nevznikl prostor pro špatné interpretace a celé to dávalo smysl. Bohužel to znamená nějaké odskoky bokem a hromadu textu. Pokusím se proto celý text rozdělit do několika kapitol a přidat odkazy na přeskočení některých ne tak zásadních částí, takže pokud vás nezajímají detaily, můžete je využít a přesunout se dál.

Také jsem se snažil vyhnout zbytečnému natahování textu zabíháním do některých ne tolik podstatných technických detailů a vysvětlil je zjednodušeně. Některé odborníky na dané téma to může tahat za oči, ale než mi to vpálíte do tváře, změřte se prosím na to, jestli podstata sdělení byla zachována.

Film versus hra

„Hodnoty FPS vyšší než 30 nenabízí takový filmový zážitek, jen se podívejte na film Hobit, kde byla dvojnásobná snímkovací frekvence terčem kritiky.“

Argument výše může na první pohled působit logicky, ale jde o typický příklad míchání jablek s hruškama – vysvětleme si rozdíl mezi hrou a filmem.

Film

Asi víte, že dojem pohybu je u filmu vytvářen rychlým promítáním jednotlivých obrázků, dříve zaznamenaných na filmovém pásu. U filmu se používá cca 24 snímků za sekundu. Proč? Je to dáno historicky. Jednotlivé snímky filmu jsou vlastně fotografie a (analogová) fotografie vzniká tak, že se světlocitlivý materiál filmu osvítí po určitou dobu světlem přicházejícím skrze objektiv a scéna se tak „vypálí“ na políčko. Aby byl snímek dostatečně kvalitní, je třeba, aby na políčko dopadlo určité množství světla. Když ho bude málo, bude snímek nezřetelný, a když moc, bude přesvícený. Přesvícení se dá zabránit snížením světelnosti objektivu, ale nedostatek světla je větší problém, musíte scénu buď víc nasvítit (všimněte reflektorů při natáčení filmů) nebo osvětlovat snímek delší dobu.

No a filmaři hledali takový počet snímků, aby obraz působil ještě plynule, ale snímek byl osvětlován co nejdéle – vyšlo jim z toho 24 FPS. (Ve skutečnosti hledali nejnižší možný počet snímků za sekundu, aby se na to ještě dalo dívat, protože více snímků za sekundu = větší spotřeba filmového pásu, který není zrovna levná záležitost). Dnes se sice natáčí digitálně, ale princip zůstává podobný.

Výsledkem je tedy hromada na sebe navazujících obrázků, kde každý zachycuje scénu po (a to je velmi důležité) celou 1/24 sekundy. Proletí-li tedy před kamerou míč takovou rychlostí, že celé zorné pole přeletí za právě za 1/24 sekundy, na příslušném políčku bude šmouha přes celý snímek – pro názornost: při zorném úhlu 60° (běžný zorný úhel na konzolích [zdroj]) je to míč letící rychlostí 60 km/h ve vzdálenosti 0,7 m od pozorovatele (fotbalisti kopou i 150 km/h [zdroj]).

Míč rozmazaný přes celý snímek (obrázek není dokonalý, nejsem grafik, ale pro představu poslouží)(Ve skutečnosti by to vypadalo jinak, ale nejsem dobrý grafik)

Pokud byl letěl poloviční rychlostí, dostaneme dva snímky se šmouhou přes půl snímku, ale ani na jednom nebude balón ostře (!). Kdyby letěl třetinovou máme šmouhu přes třetinu atd. Důležité je, že nikdy nedostaneme ostré snímky zachycující pohyb.

Hra

Pohyb ve hře se skládá také z jednotlivých obrázků, které generuje program (engine). Na rozdíl od filmu ale tyto jednotlivé obrázky nezachycují dění za určitý čas, nýbrž ukazují stav zobrazované scény v určitém čase. A počet snímků za sekundu je omezen z jedné strany rychlostí zobrazovače (viz kapitola) nebo nastavením programu a z druhé rychlostí HW – čím rychleji je schopen vyrenderovat snímek, tím více jich dostaneme a tím více FPS dosáhneme.

Všechno, co se děje ve hře nejede plynule (spojitě), ale děje se ve skocích (diskrétně). Když jsou tyto kroky dostatečně malé, vytváří se iluze plynulosti. Důležité je, že každý snímek je zachycením statické a dokonale ostré scény však si udělejte screenshot (rozmazání se věnuje podkapitola). Kdyby byla hra film, jedno políčko by představovalo 1/nekonečno sekundy, což by bylo super, kdyby se nám jich přehrálo nekonečno za vteřinu – obraz by byl dokonale plynulý, ale také bychom potřebovali nekonečně rychlý počítač. Jenže to ve skutečnosti to vypadá tak, že zobrazujeme jen pár z těchto nekonečna snímků za sekundu. Ostatní neexistují.

Kdybychom měli stejný míč letící ve stejné vzdálenosti stejnou rychlostí jako v příkladu u filmu (60 km/h; 0,7 m od nás) a hra jela ve stejné snímkovací frekvenci (24 FPS), blikne nám někde na monitoru během 1/24 sekundy. Pokud by frekvence byla 30 FPS, blikne jednou uprostřed, nebo dvakrát (vždy u jiného kraje) na 1/30 s. Při 60 FPS blikne dvakrát nebo třikrát na 1/60 s atd.

Snímek ve hře

Čím více snímků za sekundu, tím víckrát a na kratší čas by se nám objevil a mozek by tento pohyb bral jako souvislejší.

Rozmazání a další triky

Pozn. Tuto kapitolu lze přeskočit, vysvětluje některé technické detaily, ale pro pochopení problematiky není úplně zásadní.

Stejně jako u filmu doporučuji si vytípnout obrázek ze hry, aby bylo vidět, že scéna je statická a ostrá. Nemusí to tak být ve všech případech, v poslední době se v hrách využívá rozmazání obrazu, aby pohyb vypadal plynule i při nízkých FPS. Pro některé je to ultimátní argument obhajující nízké snímkovací frekvence pro dojem filmovosti. Bohužel toto rozmazání není všespásné. Ptáte se proč? Tak se mi to líbí!

Jak jsme se řekli dříve, ve hrách se všechno děje po skocích. Pokud bychom chtěli dosáhnout 100% filmového vzhledu, museli bychom mít hromadu snímků za sekundu a ty jednou za 1/FPS sekundy sloučit a zobrazit. Na to však nemáme výkon, budeme potřebovat nějaký trik. Scéna se většinou nepohybuje celá, takže stačí rozmazávat jenom něco. Když to uděláme chytře, můžeme na to potřebovat méně výkonu než na vyrenderování celého snímku a zachovat dojem plynulosti.

Například balón z předchozích příkladů. Zobrazí se nám na jednom snímku a pamatujeme si jeho polohu na snímku předchozím. Celý obraz necháme jak byl, jen oblast kudy míč přiletěl přeplácneme jeho rozmazaninou. Jde o celkem jednoduchý výpočet – vše je lineární. Ušetřili jsme hromadu výkonu, kterou bychom potřebovali na vykreslení celé scény při dvojnásobné frekvenci a přitom jsme docílili krásně filmového snímku.

To je bezva, co? Jenže zkusme další příklad: Máme kuličku, která před námi opisuje kruh určitou rychlostí. Řekněme, že zvládne obletět celý kruh za dobu jednoho snímku. Klasický film bude mít na snímku rozmazaninu ve tvaru kruhu (něco jako když ve tmě máváte doutnajícím klackem). Hra bez rozmazání bude mít tečku vždy v jednom bodě (mezi snímky urazí celý kruh, takže blikne na stejném místě). A hra rozmazávaná stejným způsobem jako v předchozím příkladu zobrazí… počkejte si na to… úplně to samé! Proč? No, známe polohu kuličky na minulém snímku a na současném, tak kde ji chcete rozmazávat?

Ano, je několik způsobů jak to řešit. Pokud víme, že tam tak kulička lítá pořád dokolečka, můžeme jí prostě dát rozmazání natvrdo. Nebo můžeme počítat její polohu rychleji – řekněme na dvojnásobku FPS – pro každý snímek pak budeme mít dvě polohy, které mezi sebou rozmázneme – udělá nám to místo kruhu rovnou čáru mezi dvěma body – tudy cesta taky nevede. Tak co kdybychom si kromě polohy zaznamenali taky směr a velikost rychlosti a rozmazání provedli na tečné kružnici mezi těmito dvěma vektory (každá křivka se dá nahradit hromadou oblouků a přímka je kružnice o nekonečném průměru). Bingo, vykreslilo nám to krásné filmově rozmazané políčko! Jenže ouha počítání kruhového rozmazání je daleko (!) náročnější než lineární (přímé), grafické kartě to trvalo déle a místo 30 FPS jsme na 15, kde to ani sebelepší rozmazání nezachrání.

Takže ano, v některých případech jako je rychlý přímočarý pohyb, nebo rozmazání celé scény při rozhlížení (to je taky lineární) můžeme za relativně málo výkonu získat hodně muziky, ale jindy je lepší vykreslit místo jednoho rozmazaného snímku čtyři nerozmazané a dosáhneme lepšího výsledku. A to i ohledně tzv. input lagu, který je u her zásadní.

Vysvětlili jsme si, jaký je rozdíl mezi snímaným filmem a renderovanou (herní grafikou) a je na čase vrátit se k citátu ze začátku kapitoly. Proč se někomu nelíbil Hobit v 48 FPS, když u her je vyšší FPS lepší? Odpovědí může být něco, čemu pracovně říkám syndrom HD porna. Jde o to, že někdy vám může vyšší kvalita pěkně zkazit zážitek. Například video s nižším rozlišením může skrýt mnoho rušivých až nepříjemných prvků (beďary na prdeli) a zkazit tak výsledný dojem. Vyšší snímkovací frekvence nejen, že odhalí některé nedokonalosti, které nám dříve zůstávaly skryté, ale taky způsobí, že pohyb ve filmu vypadá jinak a mozek na to není připravený a může se dostavit nevolnost (zvlášť pokud sledujeme velké plátno). Mozek něco vidí, vypadá to hodně reálně, ale ostatní senzory říkají, že to není pravda (může jít o lehčí formu kinetózy). Některé malé děti toto zažívají i při delším sledování televize. Je to hodně o zvyku.

Hry mají oproti filmu výhodu v tom, že hráč ovládá to, co se před ním děje, čímž se odbourává část problému a vyšší snímkovací naopak přispívá k lepší odezvě hry snižováním prodlevy ovladání. Tomu se věnuje kapitola o tzv. input lagu.

30 vs 60 – a proč ne 42?

Některé by mohlo zajímat, proč se tolik diskutuje 30 a 60 FPS, jako by jiná čísla ani neexistovala. Nuž, vysvětlíme. Opět musíme do historie. Do časů dávných, kdy byla objevena bedýnka s trubadúry (televize). Staré televize a CRT monitory zobrazovaly obraz tak, že proti stínítku (vnitřní strana zobrazovací plochy) byl vystřelován paprsek elektronů. Ten byl tak široký, že dokázal osvítit velikost jednoho pixelu (vím, že pixely sem moc nepatří, ale pro vysvětlení to stačí). A tento paprsek kmital vždy po řádcích od shora dolů. A celou obrazovku musel přejet tak rychle, aby oko/mozek nezaznamenal, že body už nesvítí. Součástka, která ovládala paprsek (vysokofrekvenční trafo) nebyla zrovna levná a aby se ušetřilo, bylo pro směrování paprsku ve svislém směru použito frekvence elektrické sítě. No a americká elektrická soustava má 60 Hz (v Evropě máme 50 Hz).

Jelikož počítače a standardy pro ně se rozvíjely především v Americe, byla tato hodnota obnovovací frekvence standardizování (hledejte NTSC). Tím se dostala podpora 60 Hz do počítačů. I když na počítačový CRT monitor je to žalostně málo a bolí z toho oči. A kvůli zachování zpětné kompatibility se 60 Hz přeneslo i na LCD displeje, které používáme dnes.

Jak to souvisí s FPS ve hrách? Dostaneme s k tomu, ale nejdřív si vysvětlíme pojem tearing.

Tearing je chyba v obrazu, která vzniká při nesynchronizaci mezi výstupem z grafické karty a obnovovací frekvencí monitoru. Není to tak hrozné, pamatujete na CRT monitory, jak tam lítal paprsek a po řádcích vykresloval obraz? I u dnešních LCD to funguje podobně. Body jsou postupně vykreslované po řádcích odshora dolů nejčastěji 60x za sekundu (60 Hz, některé herní monitory umí i víc). Pokud monitoru dodáváme snímky vždy na začátku vykreslovacího cyklu, je vše v pořádku. Ale když mu je dodáme v průběhu, začne nový snímek ihned vykreslovat.

Představme si příklad s letícím míčem. Zrovna máme snímek, kde se nachází uprostřed scény a monitor zrovna začíná vykreslovat vlevo nahoře. Vykresluje, vykresluje a už se dostal do poloviny snímku (řekněme, že míč je uprostřed). Jenže máme rychlý HW a grafická karta nám už stihla vypočítat další snímek, kde je míč u kraje. Monitor nám ho tedy začne vykreslovat. Až doběhne na konec svého cyklu (vpravo dolů), máme v horní polovině obrazovky míč uprostřed a ve spodní na kraji. Tomu se říká tearing.

Zabránit tearingu se dá (HW řešení jako nVidia gSync vynechám – televize to stejně neumí) tak, že nebudeme monitoru dávat snímky v průběhu vykreslovacího cyklu. Vždy jen na začátku. Ideálně tedy když na každý cyklus dostane jeden snímek. Chvíle počítání a máme 60 FPS. Nebo, když nestíháme renderovat, můžeme nechat jeden snímek zobrazený přes dva obnovovací cykly… 30 FPS. Nebo přes tři = 20 FPS, jenže 20 FPS připomíná spíš promítání fotek než plynulý pohyb, takže pokud nechceme tearing, musíme se vejít do těchto dvou frekvencí. V PC hrách se o to stará nastavení vertikální synchronizace.

Prodleva v ovládání – input lag

Možná se vám někdy stalo, že hra (telefon, Windows…) sice běžela, ale přesto reagovala zpomaleně. Gratuluji, měli jste čest s tzv. input lagem česky prodlevou ovládání. Jde o dobu, která uběhne mezi stisknutím tlačítka a provedením příslušné akce na monitoru. Tuto prodlevu ovlivňuje několik faktorů a nikdy se jí nezbavím, můžeme ji jen minimalizovat.

U typické PC hry to funguje nějak takto: Nejprve dojde ke stisknutí tlačítka, elektronika v ovladačí (klávesnici/myši/gamepadu) jej zakóduje a pošle do počítače. Tam je dekódován a předán systému. Systém jej předá enginu a ten vyhodnotí akci a její vliv na hru. Je vypočítaná scéna odeslaná na render. Grafická karta scénu vyrenderuje a pošle na monitor, kde signál přelouská elektronika monitoru a začne vykreslovat (po řádcích).

Pokud máte bezdrátové periferie přičtěte si čas potřebný k zakódování a dekódování bezdrátového signálu a pokud je zobrazovadlem televize s funkcí vylepšení obrazu, tak ještě čas potřebný pro tuto úpravu relativně pomalou elektronikou televize (proto mají televize většinou herní mód, který tyto věci vypíná).

Jak vám asi došlo, dobu nutnou pro dekódování obrazu monitorem, a zpracování signálů v ovladači, jejich přenosem a dekódováním na straně počítače (konzole je taky počítač). Nemáme moc šanci ovlivnit, ty může považovat za stálé. Co ale můžeme ovlivnit (dobře, my ne, ale vývojáři) je zpoždění na straně enginu. A nemusím snad zdůrazňovat, že vyšší snímkovací frekvence má jen pozitivní vliv.

Například v závodní hře při rychlosti 200 km/h je vzdálenost, kterou auto urazí mezi snímky při 30 FPS téměř dva metry (1,85), při 60 FPS už jen (0,93). Ale abych byl fér, pokud máte brzdu někde cestou (hlavně televize), můžou se rozdíly v odezvě dost snížit. (Plynulost obrazu bude samozřejmě vyšší v druhém případě.)

Pár slov závěrem

Pokud jste se prokousali až sem, gratuluji. Už snad chápete, že kecy o filmových 30 FPS jsou jen výplod chorého (vychcaného) mozku kravaťáka zakrývající špatnou optimalizaci her či nedostatečný výkon konzolí. A je smutné, jak tyto lživé výroky nedostávají žádnou zpětnou vazbu z řad herních magazínů, kteří by (dle mého) měli nad svými chlebodárci – čtenáři (pokud tedy říkají pravdu a nejsou na výplatní pásce vydavatelů) držet ochrannou ruku. O tristním stavu (českých) herních magazínů se možná rozepíšu někdy v budoucnu.

Doufám, že tento článek pomůže k osvětě v tomto tématu a budu rád, když se jej nebudete bát použít v boji s nesmysly na toto téma.

PS: Netvrdím, že 30 FPS je nepoužitelných. Několik her jsem dohrál i tak, že jsem se na toto číslo nedostal a užil jsem si je, jen odmítám souhlasit s tím, že méně FPS je lepších.

PPS: Webová aplikace pro porovnání pohybu při různých snímkovacích frekvencích (na některých HW a prohlížečích nemusí být průkazné) – Compare frames per second: which looks better?

PPPS: Kdybyste věděli jak udělat ilustrační obrázky k dalším popisovaným vědcem, dejte vědět.

Kontrolní součty pomocí MD5 a SHA1

Pro začátek si vypůjčím definici kontrolního součtu z Wikipedie:

Kontrolní součet je doplňková informace, která se předává spolu s vlastní informací a slouží k ověření, zda je vlastní informace úplná a zda při jejím přenosu nedošlo k chybě. Kontrolní součet je výsledkem nějaké předem určené operace, provedené s vlastní informací. Příjemce informace má možnost sám kdykoliv spočítat svůj vlastní kontrolní součet. Jakmile vypočtený kontrolní součet nesouhlasí s předaným kontrolním součtem, znamená to, že během přenosu došlo k poškození zprávy nebo k poškození kontrolního součtu.

Z definice také vyplývá použití – když si chcete rychle ověřit jestli dva soubory jsou stejné. To se hodí nejenom pro kontrolu, jestli nebyl soubor poškozen při přenosu, ale také když si chcete ověřit jestli dva stejně vypadající soubory na disku jsou opravdu ty samé nebo jestli vaše váš soubor je opravdu ten, za nějž se vydává. Existuje několik metod pro tvorbu těchto součtů. Na Internetu se nejčastěji setkáte s MD5 a SHA1. Když pomocí nich vytvořím kontrolní součty textu výše citované definice, budou vypadat takto:

SHA1: eb683281c095bb86659d1dc684b4053e8495fa3b
MD5:  f2a26fefbbeafade26ce10875c8d3fa9

Jak vidíte, jde o celkem krátké textové údaje. Podobně by vypadaly i kdybych vytvořil kontrolní součet daleko většího objemu dat. Tak například kontrolní součty pro ISO obraz linuxové distribuce Lubuntu 13.10 (696 MB) vypadají následovně:

SHA1: 10a2cd7e9a037a81248e0a777b7ed7da42525e11
MD5:  5e85e368b6eaf1b9f5cf88467c6570f5

Určitě už někoho z vás napadlo, že informace uložená v kontrolním součtu neobsahuje tolik dat, aby popsala celý soubor, pro který je součet spočítán. Je to pravda a proto se taky může stát, že různé soubory mohou mít stejné kontrolní součty. ALE není to problém. Algoritmy jsou navrženy tak, aby při velmi podobných vstupních datech byly výstupy velmi rozdílné a naopak. Takže pokud budou mít dva soubory stejné součty, budou na první pohled úplně jiné (např. malý textový soubor a obrovský archiv). Navíc soubory se stejným MD5 nebudou mít stejný SHA1 (nebo alespoň pravděpodobnost takové kolize je velmi blízká nule). Na druhou stranu, pokud vezmu v předchozím případě použitou definici z Wikipedie, a první výskyt písmene l nahradím 1 (tohoto si u některých fontů vůbec nevšimnete), budou se kontrolní součty od původních výrazně lišit (nahoře je vždy původní verze, dole upravená):

SHA1: eb683281c095bb86659d1dc684b4053e8495fa3b
SHA1: 264abc4ebbe813e704a1e2b3717809fd0d188fda
MD5: f2a26fefbbeafade26ce10875c8d3fa9
MD5: 0daa880e05a112eb67fdb8d6b8e4e5d5

Jak vidíte, nepatrná změna na vstupních datech se opravdu projevila výraznou změnou kontrolního součtu. Ve světě Open Source je dobrým zvykem udávat kontrolní součty ke stažitelným souborům. Má to svoji logiku. Jelikož se jedná o díla volně šiřitelná, je možné si je obstarat z více zdrojů a pokud si soubor (typicky program) stáhnete odjinud než z autorova serveru, je dobré ověřit si, jestli je opravdu tím, za co se vydává. (Toto souvisí i s mým varováním ohledně (ne)stahování systémových souborů z neoficiálních zdrojů v článku Fallout 2 + High Resolution Patch pod Windows 8/8.1.)

Aktualizováno 30. 12. 2020
Jak takový hash získat, popisuje článek: Jak ve Windows zjistit (nejen) MD5 hash souboru bez dalších programů.

Programů pro výpočet kontrolních součtů existuje celá řada. Pod Windows se mi osvědčil Rapid CRC Unicode Portable.

Opět, budu rád, když v diskuzi doporučíte další nástroje i pro jiné systémy.

Synchronizace uložených pozic (savů) mezi počítači

tl;dr: Zkopírovat složku se savy do složky Dropboxu a v původním umístění vytvořit symlink. mklink /d [původní_umístění] [složka_na_DB]

Jestli používáte víc počítačů a zároveň hrajete hry, možná jste, stejně jako já, zatoužili po možnosti pokračovat ve hře na jiném stroji. Možná vám tuto službu nabízí Steam (nemám, neznám, můžete mě poučit v diskuzi), nebo jiný klient pro nakupování a správu her. Možná si vždy po dohrání nakopírujete složku s uloženými pozicemi na flashku a na druhém počítači je zase nakopírujete do hry. A možná vás to nebaví…

Mě to taky nebavilo + mám nepříjemnou vlastnost ukládat flashdisky tak, že čas vyhrazený na hraní jsem strávil jsem strávil jejich hledáním. Proto jako hlavní nástroj na přenos menších objemů (nikoliv citlivých) dat používám Dropbox. Proč tedy nepoužít pro přenos pozic právě ten? Jenže drtivá většina her neumožňuje jednoduše změnit umístění složky s pozicemi. A tady nastupují symbolikcé odkazy – Symlinky. Ve zkratce: Jde o vlastnost souborového systému (ve Windows NTFS) přistupovat k jednomu obsahu ze dvou různých míst. Takže můžete mít složku s uloženými pozicemi ve složce Dropboxu a zároveň v původním umístění a obě tyto složky budou obsahovat ten stejný obsah (který bude na disku jen jendou, takže nebude zabírat 2x více místa).

Dost terorie, jdeme si ukázat jak na to!

Windows Vista a vyšší už v základu obsahují nástroj na tvorbu symlinků. Je to program mklink a ovládá se z příkazové řádky. (Budete potřebovat administrátorká oprávnění). We Windows XP se mklink nenachází, ale já jsem s úspěchem používal Junction (díky, Ziki), který funguje obdobně.

Postup

  • Zálohujeme :)
  • Přesuneme složku (např.: c:\hra\savegame)  s pozicemi do složky Dropboxu (např.: c:\dropbox\hra)
  • Otevřeme příkazový řádek jako administrátor a zadáme: mklink /d „c:\hra\savegame“ „c:\dropbox\hra\savegame“ a potvrdíme enterem.
  • Ve složce, kde se dřív nacházela složka s pozicemi (c:\hra) se objeví nová složka se jménem savegame (na WinXP bude mít ikonu složky, na Win8 má ikonu zástupce složky), obsahující to samé, co složka na Dropboxu.

Image

Pár poznámek na závěr

Někoho určitě napadlo, že je zbytečné přesouvat složku savegame do složky Dropboxu, když by stačilo ve složce Dropboxu vytvořit odkaz na původní umístění savegame ve složce hry. Bohužel to nepůjde, protože Dropbox nesynchronizuje obsah složek, jež jsou pouze symlinky.

Program Junction má oproti mklinku prohozené pořadí složek junction [složka_na_DB] [původní_umístění]

Cesty je vhodné uzavírat do uvozovek, protože pokud by měla nějaká složka v názvu mezeru způsobilo by to, že by mklink vrátil hlášku o neplatném umístění.

Parametr /d značí, že bude vytvořen symlink na složku – v základním nastavení se vytváři symlinky na soubory (více).

Dropbox zálohuje data na něj nahraná, takže kdyby se vám náhodou stalo, že si savy omylem smažete/přepíšete, můžete si přes webové rozhraní obnovit starší verzi.

Nemusíte používat přímo Dropbox, stejný postup by měl fungovat pro všechna podobná úložiště. (Opět, budu rád, když se v diskuzi podělíte o zkušenosti.)

Fallout 2 + High Resolution Patch pod Windows 8/8.1

tl;dr: Stáhnout Fallout2 High Resolution Patch, zkopírovat d3dx9_31.dll z instalačky DirectX9.0c do složky hry.

Jelikož před nějakou dobou vyšel (po deseti letech vývoje!) Fallout 1.5 Ressurection, což je mod pro Fallout 2. Řekl jsem si, že by nebylo od věci vrátit se do Pustiny a vyzkoušet si toto kladně přijímané dílo na vlastní kůži. Doba však od vydání Falloutu 2 pokročila společně s rozlišením a hlavně plochou monitorů, toto způsobuje, že hra v původním rozlišení 640×480 roztažená na celou plochu více než 20“ monitoru nevypadá příliš vábně. Všudypřítomné zuby a viditelná ditherace jsou daleko viditelnější než dříve na 15“ obrazovkách. Naštěstí komunita kolem Falloutu je stále živá a nebyl problém najít patch umožňující běh Falloutu 2 ve zvoleném rozlišení. Instalace je jednoduchá. Stačí rozbalit stažený archiv do složky s hrou, spustit f2_res_Config.exe a tam si nastavit požadované parametry. Obrázek

Tolik čisté teorie, praxe je poněkud složitější. Předně se dle internetů vyskytují problémy se samotným spuštěním hry. Ty by měly být většinou řešitelné nastavením kompatibility programu fallout2.exe na Windows 98/Me. Kupodivu to v mém případě (Windows 8.1 32-bit) nebylo zapotřebí, hra běžela normálně hned po istalaci. Problémy nastaly až při rozcházení vyššího rozlišení. Nastavení z kofigurátoru patche se neprojevovalo ve hře. Zkoušel jsem všechno možné a bez výsledku. Pouze jsem zjistil, že když nastavím grafický mód na cokoliv jiného než DirectX9, dojde k hroznému zpomalení v menu hry. Už jsem začínal být zoufalý, ale napadlo mě podívat se ještě přímo do konfiguračního souboru patche. Je to f2_res.ini.

Tam jsem nastavil UAC_AWARE=0, což znamená, že nastavení se bude ukládat přímo ve složce Falloutu a ne v systémové složce s nastavením (přeci jen f2_res.ini se nachází právě zde). Krom toho jsem na řádku s nastavením rozlišení našel 1024×768 (SCR_WIDTH=1024 a SCR_HEIGHT=768), což bylo asi způsobené tím, že doteď se nastavení ukládaly právě v systémové složce. Přepsal jsem jej tedy na mnou žádaných 1600×1200. Uložil jsem a znovu se pokusil spustit Fallouta. Vyskočila hláška, že chybí d3dx9_31.dll, po jejím odkliknutí se Fallout rozjel, avšak stále v základním rozlišení.

Obrázek

Z názvu knihovny d3dx9_31.dll mi došlo, že by je to knihovna DirectX 9.0. To mě poněkud zarazilo, protože ve v počítači mám DirectX 11 a Directy by měly být zpětně kompatibilní. Rozhodl jsem se tedy doplnit tuto chybějící knihovnu. Silně nedoporučuji stahovat takovéhle soubory z Uložta nebo podobných filehostingů. Já jsem šáhnul po oficiálním instalátoru DirectX 9.0c (popř. můžete věřit Slunečnici), který ale není potřeba instalovat celý – stačí soubor d3dx9_31.dll.

Instalátory mají jednu málo známou vlastnost, když z nich chcete dostat soubory, ve většině případů je nemusíte spouštět. Jsou to vlastně obyčejné archívy (jen mají integrovaný obslužný program), takže k otevření stačí nějaký program pro správu archívů. Já používám velmi šikovný a zdarma dostupný 7zip. Po otevření instalátoru v 7zipu se ukázalo, že obsahuje hromadu dalších archívů (soubory s koncovkou .cab) obsahující různé verze knihoven DirectX. Hledal jsem tedy d3dx9_31.dll, která se v něm však nenachází! (Takže s nejvyšší pravděpodobností by obyčejná instalace neměla žádný efekt).

Obrázek

Zkusil jsem tedy archiv s nejbližší vyšší verzí (DEC2006_d3dx9_32_x86.cab) a v něm našel d3dx9_32.dll, který jsem nakopíroval do složky Falloutu a přejmenoval na d3dx9_31.dll. Od teď mi Fallout běhá v rozlišení 1920×1200.

Oprava: Jsem slepoň d3dx_31.dll se v instalátoru nachází (název archívu: OCT2006_d3dx9_31_x86.cab). Takže odpadá přejmenování. A vlastně by měla zabrat i instalace celého balíku DirectX 9.0c.

A nakonec pár obrázků ze hry v pořádném rozlišení:

fallout2_menu

fallout2_ingame

fallout2_boj

Multimediální klávesy a VLC

tl;dr: Nastavit si globální zkratky

Řešil jsem tuhle zapeklitý problém. Mám klávesnici s multimediálními klávesami (play/pause, stop, další/předchozí). A k tomu přehrávač VLC. Jsem zvyklý mačkat tlačítka an klávesnici místo lovení tlačítek na obrazovce. Jenže ve VLC někdy fungovaly a někdy ne. Nějakou dobu jsem si s tím lámal hlavu a přišel jsem na to, že fungují jen tehdy, pokud je aktivní okno VLC. Pokud si hovělo někde na pozadí a chtěl jsem si pauznout hudbu, musel jsem aktivovat.

Inu, vydal jsem se do nastavení a hned bylo jasno. VLC nemělo nastavené žádné globální klávesové zkratky (v české verzi VLC nazývané „Všeobecné“).

Pro neznalé, globální klávesová zkratka je taková, která bude registrována i když bude její program spuštěn pouze na pozadí. Jako příkald poslouží například CTRL + ALT SHIFT + ESC. Ve Windows vyvolá správce úloh, ať je aktivní aplikace, jaká chce. Na druhé straně jsou zkratky místní (lokální), fungující jen pokud je obsluhující aplikace aktivní. Příkaldem může být CTRL + L. Když ji zmáčknete třeba tady na blogu, měl by se vám označit adresní řádek (výchozí nastavení většiny prohlížečů). Pokud však kliknete mimo okno prohlížeče a stisknete tuto zkratku, nestane se buďto nic, nebo – pokud máte štěstí – provede se přiřazená akce v aplikaci, kterou jste předchozím kliknutím aktivovali.

Takže pokud chcete ovládat VLC vašimi multimediálními klávesami i na pozadí, stačí si je nastavit jako všeobecné zkratky. Postup je následující:

  1. Ve VLC stiskně te CTRL + P, nebo jděte do nabídky Nástroje > Nastavení.
  2. V levé části vyberte Klávesové zkratky (platí pro jednoduché zobrazení nastavení)
  3. V sezanamu najděte akci, k níž chcete přiřadit klávesu a dvakrát klikněte do jejího řádku ve sloupci všeobecné.
  4. Vyskočí dialog pro zadání zkratky. Zmáčkněte požadovanou klávesu, nebo vynulujte nastevení pomocí tlačítka „Nenastaveno“.

Obrázek

Normální nápověda v MS Office 2013

tl;dr: V okně nápovědy kliknout na šipku u nadpisu a vybrat nápovědu z počítače

Pokud vás stejně jako mě vytáčí nápověda v nových verzích MS Office, která hledá řešení na internetu (pomocí Bingu) a vrací nerelevantní výsledky, nezoufejte. Stačí přehodit na offline režim a z nápovědy se znovu stane použitelná refernční příručka. V MS Office 2010 je řešení podobné – obdobná nabídka se nachází v rozšířené nabídce tlačítka hledání a musí se vybírat při každém novém hledání znovu. Vždycky se mi to přehodilo zpátky na vyhledávání online (pokud někdo ví, jak to přehodit základně na offline, šup s tím do komentáře).

Obrázek

Více profilů a instancí ve Firefoxu

tl;dr: Seznam parametrů

Firefox asi netřeba představovat. V základu celkem jednoduchý prohlížeč, který lze rozšířit hromadou doplňků. V poslední době mu sice z tržního podílu ukusuje agresivní Chrome od Googlu, ale podle mého tu s námi bude hořící liška (vím, je to panda červená) ještě pěkných pár let.

Jestli, stejně jak já, používáte několik různých účtů u jedné webové služby, asi jste řešili problém, jak být nalogovaní v těchto účtech zaráz. Ano, dá se to řešit pomocí režimu anonymního připojení, nebo více prohlížeči (ti nejdrsnější mají více Firefoxů Portable), jenže tohle všechno je zbytečné, když víte, že Firefox podporuje profily. Takový profil si můžete představit jako uživatelský účet např. ve Windows. Uživatel tam má svoje nastavení, svoji histori, svoje záložky… No prostě všechno. Přitom nemusíte mít další instalaci FIrefoxu. Není to skvělé? Je to skvělé!

Jenže v nastavení o tomto není ani zmínky (alespoň v normálním, v about:config jsem to nehledal), tak jak to sakra funguje? Jednoduše… I když mno, podívejme se na to:

V zákaldním nastavení používáte profil s nečekaným jménem default. Složka s jeho daty se (ve Win.) základně nachází v C:\Users\Uživatelské_jméno\AppData\Roaming\Mozilla\Firefox\Profiles, kde uživatelské_jméno je jméno vašeho účtu ve Win a má nějaké nesmyslné jméno (TIP: můžete si zkráti cestu napáním %appdata% do adresního řádku Průzkumníka, to vás teleportuje do složky AppData).

Nové profily se nejlehčeji tvoří pomocí ProfileManageru. Nehledejte, kde ho stáhnotu, je součástí Firefoxu. Stačí ho spustit Firefox s parametrem -p. Pokud máte klasickou instalaci Firefoxu ve Windows, je nejjednodušší postup následující:

  1. Na klávesnici stiskněte win + R
  2. Zapište firefox -p -no-remote a potvrďte enterem

Obrázek

(parametr -no-remote znamená, že se spustí nová instance Firefoxu. Kdybyste měli už jedno okno otevřené a spustili pouze s parametrem -p, otevře se nové okno aktivní instance – profilu)

Pozn.: Pokud vás Windows seřvou, že nemůžou najít položku, budete muset místo firefox napsat kompletní cestu k souboru firefox.exe.

Po zdárném spuštění s argumentem byste vidět výběr profilu uživatele

Obrázek

Zde můžete dělat základní operace s profily viz tlačítka. Zajímavější je však zatržítko Neptat se při startu. Pokud jej zatrhnete, bude se základně spouštět poslední vybraný profil. Pokud jej necháte prázdné, při každém spuštění se zobrazí výběr profilu. Někomu to může vyhovovat, ale je tu i příjemnější varianta – vytvořit si zástupce pro každý profil.

Stačí si vytvořit zátupce Firefoxu, zobrazit si jeho vlastnosti a do políčka cíl připsat parametry. Opět viz obrázek:

Obrázek

No a konečně se dostáváme k výpisu užitečných parametrů:

  • Zobrazení výběru profilu: -p nebo -profilemanager
  • Spuštění další instance FF: -no-remote
  • Spuštění v safemodu (bez doplňků): -safemode
  • Spuštění určitého profilu: -p „název_profilu“

Nejoblíbenější parametr bude tedy: -p „název_profilu“ -no-remote. Jen pozor na velká a malá písmena. I když je Windows v příkazovém řádku nerozlišují, u jména profilu hrají roli.

TIP: Když chcete zálohovat profil, zkopírujte jeho složku a v nové instalaci si pak vytvořte nový profil a jako cestu k jeho složce zadejte cestu ke kopii té zálohované. Nebojte, nepřepíše se (ale pro jistotu to vždy provádějte se zálohou :) ).