loading...

Jiří Hýsek

nájemný programátor
 

Blogu většinou o programování mobilních aplikací - pro iOS v Rubymotion, multiplatformních mobilních her Corona SDK a webových aplikací v Ruby on Rails.

Icon

QRCode Ninja: čtečka QR kódů

Právě byla vydána další čtečka čárových kódů pro iOS, sláva! Ale tahleta je vlastně docela dobrá. Je jednoduchá, rychlá, je trochu nenápadná, ale to, co se od ní čeká, dělá dobře a bez zbytečných keců. Je kompletně v češtině (nebo slovenštině nebo angličtině) a je úplně zadarmo. Myslím tím opravdu zadarmo - bez reklam, bez omezení funkcionality. 

Používá se snadno. Stačí spustit a namířit kameru na QR kód. Dole se vysune pár tlačítek, přičemž většinou stačí zmáčknout to největší, zelené. Jeho akce se mění podle toho, co...

zobrazit celý článek ...
Rubymotion-gems

Použití běžných gemů v RubyMotion

RubyMotion je skvělý framework pro Ruby programátory, kteří chtějí psát mobilní aplikace. Umožňuje využívat např. bundler a gemy, úplně stejně, jak jsem např. zvyklý z Ruby on Rails. Jenže gemy musí být psané speciálně pro RubyMotion. A komunita zatím není tak velká, takže těch gemů není zdaleka tolik (hledat se dají např. na http://motion-toolbox.com, což je obdoba http://ruby-toolbox.com).

Pokud ale gem nevyžaduje nějaké externí knihovny a nespolupracuje se systémem, je psaný v čistém Ruby, tak není důvod, aby nešel použít i v RubyMotion.

Takto jsem například potřeboval něco, co parsuje VCARD...

zobrazit celý článek ...
Drawer

Vysouvací menu v RubyMotion

V tomto článku ukážu, jak v Rubymotion využít externí knihovnu MMDrawerController, pomocí které se dá snadno vytvořit boční vysouvací menu, které se dá vysunout pomocí gesta. Knihovna umí menu jak vlevo, tak vpravo. A používá se snadno. Trik je jen v tom, že není dokumentace pro RubyMotion, ale pro Objective C. Ale přepis je celkem přímočarý.

Knihovnu připojíme k projektu přes CocoaPods. Proto do Gemfile přidáme pár gemů:

 gem "motion-cocoapods", '~> 1.5.0' gem "cocoapods", '~> 0.32.1'
Narazil jsem na komplikaci s nekompatibilními verzemi cocoapods a motion-cocoapods, proto...
zobrazit celý článek ...
Multiplafromgamecorona

Multiplatformní mobilní hra krok za krokem, část 2

V předchozím díle jsme si nastavili vývojové prostředí a řekli něco o pozicování a škálování. To dnes budeme potřebovat. Vložíme si na obrazovku oba obrázky, ve kterých budeme hledat rozdíly, samozřejmě s ohledem na různá zařízení a rozlišení.

Nejprve si připravíme obrázek a jeho variantu s rozdíly. Já si koupil ve fotobance obrázek s dinosaury a v Gimpu si udělal upravenou variantu s pěti rozdíly. 

 

Zkopíruji si je do assets/img1.jpg a assets/img2.jpg.

A protože žádné menu dělat nebudeme, přejmenujeme si app/menu.lua na app/game.lua. Pak nezapomeňme v main.lua...

zobrazit celý článek ...
Multiplafromgamecorona

Multiplatformní mobilní hra krok za krokem, část 1

Připravil jsem krátký seriál o tom, jak udělat jednoduchou mobilní hru, která poběží na Androidu i na iOS. Bude se dobře zobrazovat nezávisle na velikosti obrazovky nebo poměru stran.

Seriál je určen lidem, kteří zatím mobilní hru nebo aplikaci neprogramovali a třeba myslí, že to bude kdoví jak složité. Nebude. Projdeme si to od začátku pěkně krok za krokem a uvidíte.

Protože chci hlavně vysvětlit postup a použitou technologii, samotná hra nebude moc složitá. Budem dělat hledání pěti rozdílů mezi dvěma obrázky. Angry Birds si třeba uděláme později, až budete mít v malíčku tohle :) 

V tomhle prvním...

zobrazit celý článek ...
Courseamotion

Android na Coursera.org, týden 2

Jak jsem psal posledně, chtěl jsem nějaké příklady z kurzu programování Android aplikací na Coursera.org přepisovat do RubyMotion.

 

Chtěl jsem přepsat příklad MapLocation, o kterém se v přednášce mluví. Povedlo se načíst layout, povedlo se napojit akci na tlačítko a vytvořit intent. Dohledal jsem přímo v dokumentaci Androidu všechny třídy, přepsal tak, aby tomu rozumělo RubyMotion, zjistil, že pro mapy musím přilinkovat další knihovu Google Play Services, nastavit oprávnění a podobně...  ale když se pokusím otevřít mapu přes startActivity, spadne to jen s hláškou "VM aborting". Kód...

zobrazit celý článek ...
Tdd

Co jsou to ty testy?

V tomto článku bych chtěl stručně vysvětlit, k čemu slouží automatické testy softwaru. Co nejjednoduššeji bez zabíhání do detailů - tento článek je určen neprogramátorům, například zadavatelům software (klientům). Ne že by to vyloženě museli vědět, ale aspoň mí klienti se tomu málokdy vyhnou. Takže shrnu, v čem spočívají výhody pro ně, co od toho čekat a co od toho nečekat. 

Co jsou softwarové testy?

Test je program nebo chcete-li skript, který ověřuje, jestli nějaká konkrétní funkcionalita aplikace funguje správně. Například vám řekne, jestli se uživatel se správně zadanými...

zobrazit celý článek ...
Courseamotion

Aplikace pro Android → RubyMotion pro iOS + Android.

Před pár týdny mě na coursera.org zaujal předmět “Programming Mobile Applications for Android Handheld Systems”
 
I když se v přímo v Javě pro Android programovat v nejbližší době nechystám (i když člověk nikdy neví), myslím, že je dobré se to naučit, pomůže to líp rozumět jiným technologiím pro tvorbu mobilních aplikací. Konkrétně pracuji s RubyMotion. Donedávna bylo určeno pouze pro vývoj aplikací pro iOS a OSX,  ale protože teď přidali podporu Androidu, tak si kurz trochu zpestřuji - příklady ze zmíněného kurzu se snažím přepisovat do RubyMotion. A nejen variantu pro Android, ale i obdobnou aplikaci...
zobrazit celý článek ...
Corona

Minimální šablona prázné aplikace v Corona SDK

Dal jsem na github Minimal-Corona-SDK-Template. Osekal jsem to na minimum, které je potřebuju snad vždycky. Mám k tomu ještě nějaké další komponenty, ale ty si tam přidávám až podle potřeby. Postupně je taky uvolním.

Samo o sobě to nedělá nic. Je to ale předkonfigurovaná prázdná aplikace pro multiplatformní použití - build.settings počítá s iOS i Androidem, config.lua je nastaven tak, aby aplikace při různých poměrech stran obrazovky neměla na bocích černé pruhy a aby se obraz nijak ve snaze pokrýt celou obrazovku nedeformoval, v main jsou předdefinované proměnné, které se hodí pro responzivní...

zobrazit celý článek ...