Category Archives: Uncategorized

Instalace Cyanogen Mod 6 na G1 (Dream)

Update: Po pár týdnech užívání se ukázalo, že je Cyanogen přeci jen náročnější než původní OS. Běží to, ale při určitých operacích je to přeci jen znatelně pomalejší. Takže se do celé operace pouštějte, jen když víte co děláte.

Chci si tu jenom sepsat postup, kterým se mi po několika hodinách podařilo s potem v tváři nainstalovat Cynanogen Mod 6 na moji starou G1. Pokud tento postup budete následovat, vězte, že tak děláte na vlastní nebezpečí. Riskujete ztrátu dat nebo i to, že se z vašeho telefonu stane cihla. Navíc netvrdím, že to je nejlepší postup, možná existuje i lepší. Také uvědomte, že tím pravděpodobně přijdete o záruku a pokud se nacházíte v “civilizovanější” zemi, tak pravděpodobně pácháte hrdelní zločin.

Mě ten postup fungoval, mám takový ten bílý model, ten co se u nás prodával jako první (PVT 32B). Váš telefon se ale může lišit jak hardwarem tak i firmwarem. Spousta kroků mi také nezabrala na první pokus. Kupodivu ale pomohlo je úplně stejně zopakovat. Jak je to možné netuším, ale je to tak.

Takže jak na to?

  1. Všechno si zazálohujte. Kontakty a maily máte asi někde na serveru. Ale třeba poznámky a úkoly jsem musel uložit na SD kartu. Smsky jsem zazálohoval pomocí aplikace SMS Backup, která je ke stažení zdarma na marketu. Je také dobré si zapamatovat jaké aplikace máte nainstalovány a kde máte jakou ikonku. Je téměř jisté, že se všechno co máte na telefonu vymaže, takže tomuto kroku věnujte velkou pozornost.
  2. Zazálohujte SD kartu, je pravděpodobné, že ji budete muset zformátovat. Já jsem jednoduše zkopíroval všechno z SD karty někam na disk na počítači.
  3. Také jsem do telefonu šoupnul nefunkční starou SIM kartu a svoji jsem dal do jiného. Byl jsem tak celou dobu instalace na příjmu.
  4. Budeme potřebovat získat root práva. To se dělá tak, že se nainstaluje úplně první verze OS, která v sobě měla bezpečnostní díru. Té díry využijeme. Abychom ale mohli na G1 vůbec něco instalovat, potřebujeme si vyrobit tzn. goldcard. To je SD karta, které telefon věří a nechá nás z ní ten software nainstalovat. Podrobný návod jak to udělat najdete zde. Pozor, přestaňte podle toho návodu postupovat v části „Downgrade + získání root právat“, v bodě čtyři. Budeme pokračovat jinak. Skončíme u “Naběhne vám telefon a bude chtít znova aktivaci přes Google účet…” (Pokud máte na počítači Linux, můžete zkusit třeba toto, ale já jel podle toho návodu na Windows. )
  5. Teď bychom měli být ve stavu, kdy máme na telefonu nainstalovanou děravou verzi Androida. Potřebujeme se zaregistrovat do Googlího účtu. Pokud máte v telefonu nefunkční SIM jako já, potřebujete spustit WI-FI. Návod najdete zde. Pokud nemáte WI-FI, musíte použít SIMku s aktivním datovým tarifem, ideálně T-Mobilí.
  6. Takže jsme zaregistrováni a můžeme si hrát s dřevním Androidem.
  7. Stáhneme z internetu recovery image, který nám následně usnadní práci. Uložíme ho do kořenu SD karty pod názvem recovery.img.
  8. Na marketu stáhneme aplikaci „telnet“. Poté vlezeme na domovskou Androidí obrazovku a napíšeme telnetd a stiskneme enter. Nelekejte se, že to hledá v kontaktech ono to zároveň píše i na shell. (Zkuste hádat, co se stane, když napíšete reboot?) Zkusíme spustit telnet aplikaci a připojit se na localhost. Pokud se to podařilo, skvělé. Pokud ne, zkuste spustit telentd znovu.
  9. V telnetu zadejte příkaz mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system a potvrďte Entrem.
  10. Zadejte příkaz cd /system a potvrďte Entrem
  11. Zadejte příkaz cat /sdcard/recovery.img > recovery.img a potvrďte Entrem
  12. Zadejte příkaz flash_image recovery recovery.img a potvrďte Entrem
  13. Teď bychom měli mít root práva přeinstalovaný recovery program, který budeme používat v dalších krocích. Mě párkrát záhadně po restartu zmizel, takže jsem musel instalaci opakovat. Nemám tušení proč se to dělo, ale oprava je relativně snadná. Jednoduše vlezete do telnetu a zopakujete body 10-12 (se spuštěným telnetd).
  14. Teď jde do tuhého, tady se to může ošklivě pokazit. Pečlivě si prostudujte a pak následujte tento návod. Instaluje se tam SPL (čertví co to je) a upgraduje se tam firmware pro tu část telefonu co telefonuje. Non US verze 2.22.19.26i mi funguje bez problému, ale vy si radši ověřte, že máte kompatibilní typ telefonu.
  15. Teď už nás čeká poslední krok, instalace samotného Cyanogenu. Ta je pěkně popsána zde. Jen si dejte pozor, abyste použili tu správnou verzi Google Apps. Mě se to povedlo až na třetí pokus. Potřebujete tiny verzi pro MDPI pro Cyanogen 6. U mě to byl tento soubor.
  16. A to je vše. Teď už byste měli mít nejnovější systém Froyo na nejstarším Androidím telefonu. Krása, že?

Zatím to tak mám pár dnů a všechno funguje jak má. Subjektivně mi to připadá podobně rychlé jako před upgradem, po chvilce ladění možná trochu rychlejší. Narazil jsem jen na pár problémů v galerii fotek, ale tu stejně nepoužívám, takže jsem celkem spokojen.

Co mě štve na Javě

Dnes dopoledne jsem si hrál s Google App Enginem. Protože mám v plánu napsat víc než jen Hello Word, chtěl jsem do hry zapojit i Maven. Hlavně tedy proto, aby se mi staral o závislosti. Nějak jsem si už odvykl kopírovat ručně JARy a hledat jejich závislosti.

A narazil jsem na to, co mě na serverové Javě štve už dlouho, ale teprve dneska mi to tak nějak docvaklo. Dá se to shrnout ve dvou bodech.

  1. Pro jakoukoliv netriviální věc potřebujete hromadu volitelných knihoven a nástrojů.
  2. Je složité je dát dohromady tak, aby spolu fungovali.

Jak se to projevuje? Třeba tak, že strávíte několik krásných a zábavných hodin hledáním, které verze, kterých produktů spolu kamarádí. Já mám o Javovském světě docela přehled, s Mavenem si tykám, Eclipse znám jako své boty, ale i tak mi to zabralo skoro celé dopoledne. Jeden z nejpopulárnějších článků na mém blogu byl ten, kde jsem popisoval jak rozjet Hibernate jako JPA provider. Lidé děkovali, že jsem odhalil, které knihovny přidat, aby to všechno běželo.

Jsou dokonce kombinace, o kterých vím, že je dohromady spustit nedokážu. Traumatizující detaily už jsem vytěsnil z paměti, ale myslím že v tom byl zapletený Maven projekt složený z více podprojektů a Eclipse WTP.

A to nemluvím o tom, co se stane když člověk narazí na technologii s kterou nemá tolik zkušeností. Třeba vývojové prostředí, v kterém dokáži bez problému spustit test napsaný ve Scale jsem hledal také pěkných pár hodin. Nakonec jsem skončil u Idei, ale i tam jsem musel do projektu explicitně naimportovat závislost na Scale. Prostě hrůza. A teď si představte člověka, který s Javou jen začíná. Troufám si říci, že nemá šanci.

Nechce se mi končit tak negativně, tak se na tom pokusím najít i pár pozitiv. Hmm. Možnost volby je samozřejmě dobrá věc. Ale chtělo by to lepší podporu. Třeba Maven hodně pomáhá, ale i ten má i po letech pořád svoje dětské nemoci. Navíc jednotlivé projekty si také moc nedávají práci s definicí svých závislostí. To se naštěstí pomalu zlepšuje.

Ono ten problém obecně není jednoduchý. Zkoušíme zkombinovat tři vývojová prostředí, tucet možných aplikačních serverů, několik možných MVC frameworků, několik platformem na backend, několik ORM poskytovatelů a desítky možných databází. Do toho se nám začíná míchat Scala, Groovy, OSGi a Google App Engine, které to všechno komplikují ještě v jiné dimenzi. Skoro si začínám myslet, že se vyplatí být hodně konzervativní a nechat ostatní, ať si ty problémy vyžerou za mě. Ještě že máme ten Open Source a Google. Člověk po čase většinou nějaké to řešení najde. Nedovedu s představit něco podobného řešit na proprietárních platformách, které používá jen pár bohatých zákazníků. To musí být na mašli.

Teď jsme si jedno pozitivum uvědomil. Firmy prostě potřebují lidi, jako jsem já, kteří mají zkušenosti a hlavně žaludek na to se v tom všem brodit. Hurá. Dokonce si tu i přihřeji polívčičku. A to jsem to ani původně neměl v plánu:

Takže pokud máte podobné problémy a potřebujete je vyřešit, neváhejte mě kontaktovat. Desítky let zkušeností, stovky děkovných dopisů. Záruka vrácení peněz samozřejmostí. Bonbóny pro vaše vývojáře v ceně.

Jak to bude s Javou 7?

Vrátil jsem se po měsíci z Číny a tak o tom tady chci dát vědět. Nezbývá mi tedy než se trochu zamyslet na Javou 7, ne kterou čekáme už skoro pět let.

Poslední informace o aktuálním vývoji vypustil minulý týden ve svém blogu Mark Reinhold. Kupodivu stále mají problém s closures (projekt Lambda) a s modularitou (projekt Jigsaw). Kdo by to byl čekal. Jestli to nebude tím, že jsou to oboje dost zásadní změny. Přitom třeba slavný Jigsaw mi ještě letos na jaře připadal stále dost nedomyšlený. V zásadě se zamýšlejí na dvěma variantami.

Plán A: Vydat Javu 7 tak jak ji známe v polovině roku 2012.
Plán B: Vydat Javu 7 bez problematických částí příští rok. Zbytek pod jménem Java 8 v roce 2012

V diskuzi pod blogem se většina lidí přiklání k variantě B. Chtějí alespoň něco hned. Nechtějí čekat dalších pár let na něco, co často ani nepotřebují.

Podle tohoto blogu by plán B znamenal, že za rok bychom dostali:

  • Performance enhancements and bug fixes
  • Automatic resource management
  • NIO.2 (the new new I/O)
  • The fork/join framework
  • Diamond operator
  • Annotations in more places
  • invokedynamic and an API for method handles.
  • AWT/Swing tweaks: JLayer, translucent and shaped windows, and an “improved” security dialog
  • Minor language tweaks: strings in switch, underscores in literals, binary literals
  • Nimbus

Až v Javě 8, pokud někdy spatří světlo světa, by přišlo

  • Closures
  • The parts of the fork/join framework that depend on closures to be user-friendly
  • [] notation for lists and maps
  • Modularity (AKA “Project Jigsaw”)
  • Everything that already got dropped along the way for “lack of time”, such as the Swing Application Framework, bringing SwingX controls to the core API, date/time API

(vysvětlení jednotivých položek například zde)

Musím se přiznat, že pro mě je plán B velmi lákavý. Z Jigsawu mi vstávají vlasy hrůzou na hlavě. Closures by se mi sice hodily, ale obejdu se bez nich. On třeba i ten automatic resource management by byl elegantnější s closures. Trochu je mi líto toho date/time API, nechápu co může být na zkopírování knihovny Joda náročného.

Trochu mi ta situace připomíná Windows Vista aka Longhorn. O tom se taky hrozně dlouho mluvilo, měl mít spoustu krásných funkcí, několikrát se to odkládalo a všichni víme jak to dopadlo. Doufejme, že to se v Javě nestane. V programovacím jazyku je mnohem těžší říci „na tuto verzi zapomeňte, přejděte na vyšší“.

No nanejhůř se na Oracle vykašleme úplně, využijeme plánovanou funkci invokedynamic a přejdeme k nějakému novějšímu jazyku. Ale to bych opravdu nerad.