Android SDK
Moderátor: Moderátori
- Kiwi
- Príspevky: 2072
- Dátum registrácie: Ut Feb 13, 2007 4:18 pm
- Bydlisko: Sobrance
- Kontaktovať používateľa:
Android SDK
http://developer.android.com/sdk/index.html
Viete o niecom lepsom, pre 64-bit Ubuntu ?
Viete o niecom lepsom, pre 64-bit Ubuntu ?
Re: Android SDK
Neviem, co lepsie by si potreboval. Android SDK funguje a funguje dobre. Das to do hocijakeho adresara, tam to rozbalis, spustis, naklikas ktore verzie platformovych suborov ma postahovat, potom pouzivas. Akurat este musis mat Javu a celkom uzitocne je aj Eclipse, ale to je vsetko v navode na webe...
- Kiwi
- Príspevky: 2072
- Dátum registrácie: Ut Feb 13, 2007 4:18 pm
- Bydlisko: Sobrance
- Kontaktovať používateľa:
Re: Android SDK
Zacinam robit pre Android, tak som si dal ulohu urobit "kalkulacku".
Vyzera to asi takto: / obr. v prilohe /
MainActivity.java vyzera takto: / pozri prilohu /
Je tam urobeny parser, ktory je volany funkciou eval_expr ( StringC );
Odovzdava sa ukazovatel na strukturu, ktora obsahuje retazec in.
Parser postupne vola rekurzivne funkcie eval_expr, eval_term, eval_factor a este funkciu eval_num
podla tejto schemy:
Expr ::= Term ('+' Term | '-' Term)*
Term ::= Factor ('*' Factor | '/' Factor)*
Factor ::= ['-'] (Number | '(' Expr ')' | Factor '^' Factor)
Number ::= Digit+
Zatial funguje vsetko, okrem | x | a x !.
Je tento kod "rozumny" a da sa dalej rozsirovat na dalsie funkcie napr. cos, sin, tan, cot, div, mod, e na x, log x, komplecne cisla s i=-1 ?
Alebo je ten kod uplne zly a treba to robit inak ? Nenarastie potom funkcia eval_factor tak, ze tam bude tolko if-ov a else-ov
ze v tom uz clovek bude stracat prehlad ?
Problem je napr. s sqrt (x), ked nutne zadat napr. (4+2) a znak odmocniny, a do retazca sa ulozi (4+2)^(1/2) co je presne opacne,
lebo bezne sa to zadava najprv znak odmocniny, potom (4+2).
Vyzera to asi takto: / obr. v prilohe /
MainActivity.java vyzera takto: / pozri prilohu /
Je tam urobeny parser, ktory je volany funkciou eval_expr ( StringC );
Odovzdava sa ukazovatel na strukturu, ktora obsahuje retazec in.
Parser postupne vola rekurzivne funkcie eval_expr, eval_term, eval_factor a este funkciu eval_num
podla tejto schemy:
Expr ::= Term ('+' Term | '-' Term)*
Term ::= Factor ('*' Factor | '/' Factor)*
Factor ::= ['-'] (Number | '(' Expr ')' | Factor '^' Factor)
Number ::= Digit+
Zatial funguje vsetko, okrem | x | a x !.
Je tento kod "rozumny" a da sa dalej rozsirovat na dalsie funkcie napr. cos, sin, tan, cot, div, mod, e na x, log x, komplecne cisla s i=-1 ?
Alebo je ten kod uplne zly a treba to robit inak ? Nenarastie potom funkcia eval_factor tak, ze tam bude tolko if-ov a else-ov
ze v tom uz clovek bude stracat prehlad ?
Problem je napr. s sqrt (x), ked nutne zadat napr. (4+2) a znak odmocniny, a do retazca sa ulozi (4+2)^(1/2) co je presne opacne,
lebo bezne sa to zadava najprv znak odmocniny, potom (4+2).
- Prílohy
-
- MainActivity.txt
- (9.64 KiB) 454 stiahnutí
Re: Android SDK
Kiwi, mozno to bude zniet prilis drsne, ale keby sem nejaky novoregistrovany postol to co ty, tak ho mam po 3 sekundach pozerania do "kodu" za trola, pretoze:
- Tento subor nemoze byt v takejto podobe kompilovatelny, chybaju tomu zakladne veci
- Kazda Activity (obzvlast hlavna) musi mat implementovane zakladne prvky - a tu skratka nie su
- Activity ma byt na zakladny interface, back-end sa dava do samostatnych tried
- Nie su tam absolutne ziadne poznamky
- Je tam plno zbytocneho balastu, hyri to tam programatorskymi perlami ako napriklad "public static class StringC { public String in; };"
Skratka by som pri neznamom cloveku usudil, ze dotycny naschval nabusil rychlo nejaku uplnu somarinu a nejde mu o deklarovany vysledok, ale sa ide vytesovat na tom, ze niekto sa mu v dobrej viere snazi pomoct a zaberie mu to strasne vela casu a uplne zbytocne...
Skontroloval som znova datum a NIE JE prveho aprila. Takze vtip to nie je, aj ked ako velmi zly vtip to posobi.
Takze... odpoved na tvoju otazku je: Ten kod je naozaj uplne zly a treba to robit uplne inak:
- Naucit sa Javu a OOP celkovo (na zaciatok skus http://www.mindviewinc.com/Books/downloads.html)
- Prejst si tutorialy z developer.android.com a oboznamit sa tam so zakladmi aplikacii pre Android
- Strukturovat kod a rozumne ho okomentovat
- Oddelit uzivatelske rozhranie od vypoctov
- Neobjavovat zbytocne Ameriku. Mame napriklad triedu java.lang.Math. Robit uplne vsetko od zakladu je nerealizovatelne, udusis sa elementarnymi ulohami a aj tak to nespravis tak kvalitne, ako je to uz implementovane v knizniciach (v tvojej implementacii budu chyby a vysoko pravdepodobne to bude pomalsie). Obzvlast v pripade treningovej aplikacie (co kalkulacka nepochybne je).
Finta pri tvorbe mobilnej aplikacie je v pospajani jednotlivych casti do funkcneho celku a pripadnom dorobeni toho, co zatial nie je k dispozicii (nikto to zatial nevyrobil).
- Tento subor nemoze byt v takejto podobe kompilovatelny, chybaju tomu zakladne veci
- Kazda Activity (obzvlast hlavna) musi mat implementovane zakladne prvky - a tu skratka nie su
- Activity ma byt na zakladny interface, back-end sa dava do samostatnych tried
- Nie su tam absolutne ziadne poznamky
- Je tam plno zbytocneho balastu, hyri to tam programatorskymi perlami ako napriklad "public static class StringC { public String in; };"
Skratka by som pri neznamom cloveku usudil, ze dotycny naschval nabusil rychlo nejaku uplnu somarinu a nejde mu o deklarovany vysledok, ale sa ide vytesovat na tom, ze niekto sa mu v dobrej viere snazi pomoct a zaberie mu to strasne vela casu a uplne zbytocne...
Skontroloval som znova datum a NIE JE prveho aprila. Takze vtip to nie je, aj ked ako velmi zly vtip to posobi.
Takze... odpoved na tvoju otazku je: Ten kod je naozaj uplne zly a treba to robit uplne inak:
- Naucit sa Javu a OOP celkovo (na zaciatok skus http://www.mindviewinc.com/Books/downloads.html)
- Prejst si tutorialy z developer.android.com a oboznamit sa tam so zakladmi aplikacii pre Android
- Strukturovat kod a rozumne ho okomentovat
- Oddelit uzivatelske rozhranie od vypoctov
- Neobjavovat zbytocne Ameriku. Mame napriklad triedu java.lang.Math. Robit uplne vsetko od zakladu je nerealizovatelne, udusis sa elementarnymi ulohami a aj tak to nespravis tak kvalitne, ako je to uz implementovane v knizniciach (v tvojej implementacii budu chyby a vysoko pravdepodobne to bude pomalsie). Obzvlast v pripade treningovej aplikacie (co kalkulacka nepochybne je).
Finta pri tvorbe mobilnej aplikacie je v pospajani jednotlivych casti do funkcneho celku a pripadnom dorobeni toho, co zatial nie je k dispozicii (nikto to zatial nevyrobil).
- Kiwi
- Príspevky: 2072
- Dátum registrácie: Ut Feb 13, 2007 4:18 pm
- Bydlisko: Sobrance
- Kontaktovať používateľa:
Re: Android SDK
No diky za komentar.
Samo, ze su tu aj ine casti toho suboru a este dalsich 7 suborov, ale na co ich tu budem davat,
islo mi len o to, ci /logicky / spravne volam funkcie eval_[term, expr, factor]
a ci sa neda napr. napisat kratsi, krajsi a prehladnejsi kod tychto funkci, vzhladom
na buducu rozsiritelnost, napr. o abs. hodnotu, faktorial, komplex. cisla, mat. funkcie atd.
To ze to je v jednom subore a potom ked to funguje sa to da do jednej triedy + jej metody,
to teraz neriesim, lebo to nie je projekt so 100-kami objektov a metod.
Ale vzhladom na mnozstvo tutorialov, ktore som presiel,to moholi autori aspon spoment,
ze je taky uzus, ze vsetko sa dava do samostatnych suborov.
No nie su tam poznamky, ale ked napisem / eval_factor/, tak co tam dam do poznamky ? ze pocita factor ? -
ved to je jasne z tych volani, parsuje to string v c.in a vola jednotlive funkcie , podobne komentovat
vypocet cisla cez eval_num je asi zbytocne, je to tak jednoduchy kod, ze ked sa na to hocikto pozrie,
tak je to jasne, keby to bol zlozity kod, kde nie je jasne co robi, tak tam by boli komenty nutne, napr,
10000 riadkovnie co ako :
.section .rodata
string:
.ascii "Ahoj,svet!\n"
length:
.quad . -string
.section .text
.globl _start
_start:
movq $4, %rax
movq $1, %rbx
movq $string, %rcx
movq length, %rdx
int $0x80
movq %rax, %rbx
movq $1, %rax
int $0x80
V dalsom tutoriali som videl, ze najlepsia cast ako predat retazec je:
"public static class StringC { public String in; };"
boli tam spomenute aj 2 ine moznosti, ale ta bola odporucana, tak neviem preco jeto zle,
ked to funguje.
No Javu a OOP sa ucim z tutorialov, ale asi jedina vec ako sa to naucit, je nieco nakodovat.
Uzivatelske rozhranie ma teraz az tak nezaujima, lebo sa vzdy meni sposob, v zavislosti od platformy,
a ja neviem ci budem robit pre Android, iOS, Wphone, C++, C#, linux_API (GTK+, Qt), win_API ...(Visual C++)
V java.lang.Math som nenasiel ani jednu funkciu pre parser a lexer, ani nejaku sablonu, jak to niekto ini urobil,
asi este neviem dobre hladat.
Len tiez neviem ci to niekto implementoval tak ako to ja potrebujem,napr. aby ta a kalkulacka pocitala PRESNE
aj cisla ako 300! s presnostou na vsetky platne cislice, ci napr. des. cisla s presnostou na napr. 4096 platnych des. cislic.
Tiez by to malo byt rozsiritelne na "velke" prvocisla.
Tam uz to asi s implementaciou Math nepojde, lebo to nepocita s 32768-bitmi, ale max. s 80-bitmi.
Potom bude treba tie funkcie optimalizovat na konkretne CPU, ak ho aplikacia deteguje, co sa bez ASM nezaobide,
tiez to nejako spojit so serverom, aby tie vypocty vedel robit napr. iny pocitac s konkretnym CPU.
No nic, clovek sa asi dnes nikde nic nenauci, a musi si to proste odsediet a odprogramovat, lenze na to treba zdravie
a to ja nemam.
Este ma v Eclipse Indigo zaujima, ze ako debugovat, pretoze stale rozmyslat ci stlacit F5 a F6 je dost unavujuce
a ked stlacim F5 a ma to vykonat nejaky kod, ktory nie je moj, ale je v java knizniciach, tak vypise nejaku hlasku,
ze nemoze najst zdrojovy kod napr. ret = ret2.substring( i+1 ); a debuger zostane stat.
Potom niekedy sa mi stava, ze pocas debugovania prestane reagovat Eclipse,neda sa dostat do menu a pouzit terminate,
neda sa ani editovat nejaky text v zdrojakoch. Restartnem Eclipse a znova to iste, musim restartnut cely comp,
zatial som skusal len v Eclipse Indigo v Ubuntu 11.xx, neviem ci sa to sprava podobne aj pod Win7.
Samo, ze su tu aj ine casti toho suboru a este dalsich 7 suborov, ale na co ich tu budem davat,
islo mi len o to, ci /logicky / spravne volam funkcie eval_[term, expr, factor]
a ci sa neda napr. napisat kratsi, krajsi a prehladnejsi kod tychto funkci, vzhladom
na buducu rozsiritelnost, napr. o abs. hodnotu, faktorial, komplex. cisla, mat. funkcie atd.
To ze to je v jednom subore a potom ked to funguje sa to da do jednej triedy + jej metody,
to teraz neriesim, lebo to nie je projekt so 100-kami objektov a metod.
Ale vzhladom na mnozstvo tutorialov, ktore som presiel,to moholi autori aspon spoment,
ze je taky uzus, ze vsetko sa dava do samostatnych suborov.
No nie su tam poznamky, ale ked napisem / eval_factor/, tak co tam dam do poznamky ? ze pocita factor ? -
ved to je jasne z tych volani, parsuje to string v c.in a vola jednotlive funkcie , podobne komentovat
vypocet cisla cez eval_num je asi zbytocne, je to tak jednoduchy kod, ze ked sa na to hocikto pozrie,
tak je to jasne, keby to bol zlozity kod, kde nie je jasne co robi, tak tam by boli komenty nutne, napr,
10000 riadkovnie co ako :
.section .rodata
string:
.ascii "Ahoj,svet!\n"
length:
.quad . -string
.section .text
.globl _start
_start:
movq $4, %rax
movq $1, %rbx
movq $string, %rcx
movq length, %rdx
int $0x80
movq %rax, %rbx
movq $1, %rax
int $0x80
V dalsom tutoriali som videl, ze najlepsia cast ako predat retazec je:
"public static class StringC { public String in; };"
boli tam spomenute aj 2 ine moznosti, ale ta bola odporucana, tak neviem preco jeto zle,
ked to funguje.
No Javu a OOP sa ucim z tutorialov, ale asi jedina vec ako sa to naucit, je nieco nakodovat.
Uzivatelske rozhranie ma teraz az tak nezaujima, lebo sa vzdy meni sposob, v zavislosti od platformy,
a ja neviem ci budem robit pre Android, iOS, Wphone, C++, C#, linux_API (GTK+, Qt), win_API ...(Visual C++)
V java.lang.Math som nenasiel ani jednu funkciu pre parser a lexer, ani nejaku sablonu, jak to niekto ini urobil,
asi este neviem dobre hladat.
Len tiez neviem ci to niekto implementoval tak ako to ja potrebujem,napr. aby ta a kalkulacka pocitala PRESNE
aj cisla ako 300! s presnostou na vsetky platne cislice, ci napr. des. cisla s presnostou na napr. 4096 platnych des. cislic.
Tiez by to malo byt rozsiritelne na "velke" prvocisla.
Tam uz to asi s implementaciou Math nepojde, lebo to nepocita s 32768-bitmi, ale max. s 80-bitmi.
Potom bude treba tie funkcie optimalizovat na konkretne CPU, ak ho aplikacia deteguje, co sa bez ASM nezaobide,
tiez to nejako spojit so serverom, aby tie vypocty vedel robit napr. iny pocitac s konkretnym CPU.
No nic, clovek sa asi dnes nikde nic nenauci, a musi si to proste odsediet a odprogramovat, lenze na to treba zdravie
a to ja nemam.
Este ma v Eclipse Indigo zaujima, ze ako debugovat, pretoze stale rozmyslat ci stlacit F5 a F6 je dost unavujuce
a ked stlacim F5 a ma to vykonat nejaky kod, ktory nie je moj, ale je v java knizniciach, tak vypise nejaku hlasku,
ze nemoze najst zdrojovy kod napr. ret = ret2.substring( i+1 ); a debuger zostane stat.
Potom niekedy sa mi stava, ze pocas debugovania prestane reagovat Eclipse,neda sa dostat do menu a pouzit terminate,
neda sa ani editovat nejaky text v zdrojakoch. Restartnem Eclipse a znova to iste, musim restartnut cely comp,
zatial som skusal len v Eclipse Indigo v Ubuntu 11.xx, neviem ci sa to sprava podobne aj pod Win7.
Re: Android SDK
Kiwi, len technicka poznamka:
Ked uz si od niekoho vyziadas spatnu vazbu, tak akokolvek sa ti ta spatna vazba nepaci, snazit sa jej oponovat je velmi zly napad. Potom to totiz vyzera tak, ze ta ta spatna vazba vlastne nezaujima, ze ti vobec nejde o zlepsenie (k comu napomaha prave negativna spatna vazba), ale chcel by si pocut len akesi "potlapkanie po pleci, ako si to skvelo urobil"... a to je skvely sposob ako nabuduce nedostat vobec ziadnu spatnu vazbu. Podobne aj zmena temy (najprv "zacinas robit pre Android" a teraz zase "este nevies, ci to bude Android, iOS, WP,...", najprv sa pytas na kod vseobecne a potom zrazu potrebujes superpresne vypocty) posobi ako vykrucanie a v dosledku vlastne ako odmietanie spatnej vazby - co taktiez odradza od dalsieho poskytovania spatnej vazby v buducnosti.
Skus sa na to pozriet z pohladu toho, co tu spatnu vazbu dava: Niekto ta poziada o radu, ty sa mu snazis poradit najlepsie ako vies, no a na to sa dozvies, ze ta tvoja rada nie je pre neho dobra a ze vlastne on ma aj plno inych problemov... No co myslis, budes sa aj nabuduce snazit poradit mu co najlepsie?
Okrem toho, vzajomnym oponovanim sa pravdepodobne rozputa dost ohniva debata, ktora k nicomu nevedie a ktora vobec nebola cielom.
Preto sa uz nebudem vracat k tomu, co som predtym okomentoval. Mojim cielom totiz nie je a ani nebolo presviedcat ta. Poskytol som ti moj pohlad a pridal nejake rady. Ja som ti svoje povedal a ked sa ti to nepaci, nechaj tak, je to tvoja vec a mna to nema co trapit. (Ale naozaj je v takom pripade lepsie nechat si detaily pre seba a maximalne sa za spatnu vazbu podakovat - vid neziaduce dosledky popisane vyssie.)
Snad este jeden vseobecny dodatok k programovaniu: Tutorialy su dobra vec, ale len vtedy, ak pochopis, preco su jednotlive veci implementovane danym sposobom. Okopirovat otrocky nejaky fragment z jedneho tutorialu (bez jeho plneho porozumenia) vo vacsine pripadov nevedie k ziadanemu vysledku.
Ked uz si od niekoho vyziadas spatnu vazbu, tak akokolvek sa ti ta spatna vazba nepaci, snazit sa jej oponovat je velmi zly napad. Potom to totiz vyzera tak, ze ta ta spatna vazba vlastne nezaujima, ze ti vobec nejde o zlepsenie (k comu napomaha prave negativna spatna vazba), ale chcel by si pocut len akesi "potlapkanie po pleci, ako si to skvelo urobil"... a to je skvely sposob ako nabuduce nedostat vobec ziadnu spatnu vazbu. Podobne aj zmena temy (najprv "zacinas robit pre Android" a teraz zase "este nevies, ci to bude Android, iOS, WP,...", najprv sa pytas na kod vseobecne a potom zrazu potrebujes superpresne vypocty) posobi ako vykrucanie a v dosledku vlastne ako odmietanie spatnej vazby - co taktiez odradza od dalsieho poskytovania spatnej vazby v buducnosti.
Skus sa na to pozriet z pohladu toho, co tu spatnu vazbu dava: Niekto ta poziada o radu, ty sa mu snazis poradit najlepsie ako vies, no a na to sa dozvies, ze ta tvoja rada nie je pre neho dobra a ze vlastne on ma aj plno inych problemov... No co myslis, budes sa aj nabuduce snazit poradit mu co najlepsie?
Okrem toho, vzajomnym oponovanim sa pravdepodobne rozputa dost ohniva debata, ktora k nicomu nevedie a ktora vobec nebola cielom.
Preto sa uz nebudem vracat k tomu, co som predtym okomentoval. Mojim cielom totiz nie je a ani nebolo presviedcat ta. Poskytol som ti moj pohlad a pridal nejake rady. Ja som ti svoje povedal a ked sa ti to nepaci, nechaj tak, je to tvoja vec a mna to nema co trapit. (Ale naozaj je v takom pripade lepsie nechat si detaily pre seba a maximalne sa za spatnu vazbu podakovat - vid neziaduce dosledky popisane vyssie.)
Snad este jeden vseobecny dodatok k programovaniu: Tutorialy su dobra vec, ale len vtedy, ak pochopis, preco su jednotlive veci implementovane danym sposobom. Okopirovat otrocky nejaky fragment z jedneho tutorialu (bez jeho plneho porozumenia) vo vacsine pripadov nevedie k ziadanemu vysledku.
- Kiwi
- Príspevky: 2072
- Dátum registrácie: Ut Feb 13, 2007 4:18 pm
- Bydlisko: Sobrance
- Kontaktovať používateľa:
Re: Android SDK
Ja som rad, ze som dostal aspon taku odpoved aku som dostal a vazim si to, ze si ma skritizoval.
Ale predstavoval som si to takto,povies, je to uplne zle,OK, beriem, lenze by som potreboval nejaky
link alebo cast kodu, "ma sa to robit takto".
Mam problem s vyberom tutorialov, lebo je toho vela, a neda sa vyberat ani podla poctu prezreti tutorialu
ani podla poctu likeov/disl..
Takze vlastne ak si zle vyberiem autoritu, podla ktorej budem robit, tak vysledok zavisi len od mojho
zleho/dobreho vyberu tutorialu a potom to aj tak vyzera, lebo ak niekto v tut. povie: "toto sa robi
tak a tak, berte to ako to je, nebudem to teraz vysvetlovat, tak ja to zoberiem ako to je a potom mi
ty napises, ze to je zle". Tak potom komu verit, aky tutorial si vybrat ?
Tie tutorialy su dost vseobecne a onicom, nevenuju sa konkretnemu problemu, takzeje v nich
sice spomenute co su triedy, metody, konstruktory, destruktory, enkapsulacia, pretazenie,
co su staticke a virtualne metody, ale ked uz robim konktretnu vec, tak neviem ci mam prave
urobit viac tried s mensim poctom metod, alebo jednu triedu a k nej viac metod, to sa
v tych tutorialoch uz nespomina, je tam len "AKO" ale nie je tam "PRECO" a matematicky
dokaz, ze to "PRECO" je jedine spravne a efektivne riesenie.
Tak som dnes stravil cely den hladanim, bolo tam vela balastu, ale nakoniec som nasiel nieco,
co by som chcel spravit, len neviem ci je to v mojich silach.
https://play.google.com/store/apps/deta ... calculator
Takze doplnil som svoj kod o vypocet faktorialu a som v koncoch, lebo pri vyraze
3!^(3!^3!) mi hodi do retazca "infinity" pricom by malo hodit 2,659119772*10na36305
Takze tu Math trieda konci a zacina programatorska robota alebo zase hladat ako
to niekto vyriesil predomnou.
Ale predstavoval som si to takto,povies, je to uplne zle,OK, beriem, lenze by som potreboval nejaky
link alebo cast kodu, "ma sa to robit takto".
Mam problem s vyberom tutorialov, lebo je toho vela, a neda sa vyberat ani podla poctu prezreti tutorialu
ani podla poctu likeov/disl..
Takze vlastne ak si zle vyberiem autoritu, podla ktorej budem robit, tak vysledok zavisi len od mojho
zleho/dobreho vyberu tutorialu a potom to aj tak vyzera, lebo ak niekto v tut. povie: "toto sa robi
tak a tak, berte to ako to je, nebudem to teraz vysvetlovat, tak ja to zoberiem ako to je a potom mi
ty napises, ze to je zle". Tak potom komu verit, aky tutorial si vybrat ?
Tie tutorialy su dost vseobecne a onicom, nevenuju sa konkretnemu problemu, takzeje v nich
sice spomenute co su triedy, metody, konstruktory, destruktory, enkapsulacia, pretazenie,
co su staticke a virtualne metody, ale ked uz robim konktretnu vec, tak neviem ci mam prave
urobit viac tried s mensim poctom metod, alebo jednu triedu a k nej viac metod, to sa
v tych tutorialoch uz nespomina, je tam len "AKO" ale nie je tam "PRECO" a matematicky
dokaz, ze to "PRECO" je jedine spravne a efektivne riesenie.
Tak som dnes stravil cely den hladanim, bolo tam vela balastu, ale nakoniec som nasiel nieco,
co by som chcel spravit, len neviem ci je to v mojich silach.
https://play.google.com/store/apps/deta ... calculator
Takze doplnil som svoj kod o vypocet faktorialu a som v koncoch, lebo pri vyraze
3!^(3!^3!) mi hodi do retazca "infinity" pricom by malo hodit 2,659119772*10na36305
Takze tu Math trieda konci a zacina programatorska robota alebo zase hladat ako
to niekto vyriesil predomnou.
Re: Android SDK
Tak toto uz bola vyrazne lepsia reakcia
Cez ten link co som uviedol predtym sa dostanes po elektronicku knihu "Thinking in Java", druha edicia je na stiahnutie zadarmo, teda je to vhodne pre zaciatocnika ktory si este nie je isty, ci z jeho snahy nakoniec nieco bude (netreba vopred davat peniaze na neistu zalezitost). Pokial sa pamatam, su tam vysvetlene aj zaklady OOP, takze sa to hodi aj pre tych, co sa s OOP este vobec nestretli. A veci su tam naozaj vysvetlene, je to rozumne clenene na kapitoly, takze to nie je len par izolovanych tutorialov, ale je to ucelene a povedal by som ze "cesta za poznanim prijemne plynie".
A je toho celkom dost, necakaj ze to prebehnes za den alebo za tyzden. Kym ale neabsorbujes to co je tam napisane, je dost tazke davat ti konkretne rady ku konkretnemu kodu. A ked to naozaj prejdes, tak odpovede na niektore otazky by sa ti mali vynorit same (aj preto som bol v tomto smere "pomerne strucny"). Napriklad, ze neexistuje univerzalne riesenie, ktore by platilo pre vsetky pripady. Niekedy je lepsia implementacia jednym sposobom, inokedy inym sposobom. Vyrobit velku megatriedu s mnozstvom metod, ktora robi vela veci je jeden extrem, rozdelit vsetko na vela malych/jednoduchych tried je zase iny extrem. Vacsinou sa voli nejaka zlata stredna cesta, ale niekedy maju vyznam aj tie extremy. A niekedy clovek urobi vec nejako, ono to aj celkom funguje, ale neskor pri rozsirovani sa zisti, ze treba urobit nejaky refactoring istych casti a potom je to lepsie. (A tie komentare v kode su aj na popisanie toho, preco bolo zvolene dane riesenie, ci uz sa komentar vztahuje na kratky kusok kodu, celu metodu alebo celu triedu.)
Podstatne v pripade Javy je dostat do hlavy to objektove uvazovanie. Potom nie je problem neskor preskupit niektore veci podla potreby. Vo vseobecnosti ale nie je dobre miesat nesuvisiace veci spolu - a k tomu smeroval ten moj prvotny komentar, ze v Activity by nemala byt vypoctova cast.
No a ked nejakej "finte" v tutoriali nerozumies (pravdepodobne preto, ze nebola dostatocne vysvetlena) a ide to aj bez nej, tak tu fintu skratka nepouzivaj a urob to len jednoducho, bez nej. KISS princip. Vylepsit kod fintami dodatocne sa da vzdy (napriklad ak sa to neskor ukaze ako odovodnene) a je to omnoho lahsie, nez zbavovat kod zbytocneho balastu.
Co sa tyka tvojej kalkulacky, tam ti uplne konkretne rady nedam. Ale... Pre Android existuje velmi vela kalkulaciek a ja necitim potrebu travit cas tym, ze budem robit dalsiu. Vidim len 2 zmysluplne dovody:
1. Je to len trening vyroby aplikacie. V tom pripade ma ale nebude trapit presnost na X desatinnych miest a hypervelke cisla. Pre treningove ucely staci na zaciatok zbuchat nieco s limitovanymi vypoctami a pripadne potom tu vypoctovu cast vylepsit.
2. Chcem urobit taku super kalkulacku, aku este nikto neurobil. Najlepsiu na svete. V tomto pripade je ale latka nastavena poriadne vysoko a musim byt fakt bohovo dobry, aby som to dokazal doviest do uspesneho konca. To by som ale mal byt davno za levelom kde sa riesia zaciatky programovania. Tiez musim pocitat s tym, ze to nebude hned, ale ze to bude trvat dlho. A takisto mi pravdepodobne nikto nepomoze, to je udel tych co sa riadia heslom "To boldly go where no man has gone before".
Len tak mimochodom, standardna kalkulacka tuto vo Windoze 7 (co mam tuto v robote) mi tu na otazku 6^(6^6) vystrcila prostredny prst z obrazovky (ehm, napisala "Overflow").
Inak ked si vsimnes, tak som vo svojom predoslom odporucani napisal "napriklad triedu java.lang.Math" a uz vtedy som slovo napriklad zvyraznil kurzivou. Cim som chcel povedat, ze to nie je jedine riesenie. Ale podla mna ako prve priblizenie v ramci zaciatku je to dostatocne. Nie az tak "daleko" od toho je totiz (neprekvapivo), trieda java.math.BigInteger (pripadne java.math.BigDecimal na desatinne cisla), v pripade ze sa chces pohybovat mimo rozsahu integer/long/float/double. A to sa bavime o zakladnej Jave, teda to este stale nie je ziadna vysokospecializovana kniznica. Ako dalsi krok dobre (a mozno aj plne postacujuce na tvoju kalkulacku). Ale ked uz by si chcel este nieco lepsie a napisat si vlastnu super-duper kniznicu, tak tieto triedy su celkom dobry odrazovy mostik (v tom, ako by nakoniec mohli vyzerat triedy ktore to budu zabezpecovat)...
Ako som uz spominal, netreba znova objavovat Ameriku.
Cez ten link co som uviedol predtym sa dostanes po elektronicku knihu "Thinking in Java", druha edicia je na stiahnutie zadarmo, teda je to vhodne pre zaciatocnika ktory si este nie je isty, ci z jeho snahy nakoniec nieco bude (netreba vopred davat peniaze na neistu zalezitost). Pokial sa pamatam, su tam vysvetlene aj zaklady OOP, takze sa to hodi aj pre tych, co sa s OOP este vobec nestretli. A veci su tam naozaj vysvetlene, je to rozumne clenene na kapitoly, takze to nie je len par izolovanych tutorialov, ale je to ucelene a povedal by som ze "cesta za poznanim prijemne plynie".
A je toho celkom dost, necakaj ze to prebehnes za den alebo za tyzden. Kym ale neabsorbujes to co je tam napisane, je dost tazke davat ti konkretne rady ku konkretnemu kodu. A ked to naozaj prejdes, tak odpovede na niektore otazky by sa ti mali vynorit same (aj preto som bol v tomto smere "pomerne strucny"). Napriklad, ze neexistuje univerzalne riesenie, ktore by platilo pre vsetky pripady. Niekedy je lepsia implementacia jednym sposobom, inokedy inym sposobom. Vyrobit velku megatriedu s mnozstvom metod, ktora robi vela veci je jeden extrem, rozdelit vsetko na vela malych/jednoduchych tried je zase iny extrem. Vacsinou sa voli nejaka zlata stredna cesta, ale niekedy maju vyznam aj tie extremy. A niekedy clovek urobi vec nejako, ono to aj celkom funguje, ale neskor pri rozsirovani sa zisti, ze treba urobit nejaky refactoring istych casti a potom je to lepsie. (A tie komentare v kode su aj na popisanie toho, preco bolo zvolene dane riesenie, ci uz sa komentar vztahuje na kratky kusok kodu, celu metodu alebo celu triedu.)
Podstatne v pripade Javy je dostat do hlavy to objektove uvazovanie. Potom nie je problem neskor preskupit niektore veci podla potreby. Vo vseobecnosti ale nie je dobre miesat nesuvisiace veci spolu - a k tomu smeroval ten moj prvotny komentar, ze v Activity by nemala byt vypoctova cast.
No a ked nejakej "finte" v tutoriali nerozumies (pravdepodobne preto, ze nebola dostatocne vysvetlena) a ide to aj bez nej, tak tu fintu skratka nepouzivaj a urob to len jednoducho, bez nej. KISS princip. Vylepsit kod fintami dodatocne sa da vzdy (napriklad ak sa to neskor ukaze ako odovodnene) a je to omnoho lahsie, nez zbavovat kod zbytocneho balastu.
Co sa tyka tvojej kalkulacky, tam ti uplne konkretne rady nedam. Ale... Pre Android existuje velmi vela kalkulaciek a ja necitim potrebu travit cas tym, ze budem robit dalsiu. Vidim len 2 zmysluplne dovody:
1. Je to len trening vyroby aplikacie. V tom pripade ma ale nebude trapit presnost na X desatinnych miest a hypervelke cisla. Pre treningove ucely staci na zaciatok zbuchat nieco s limitovanymi vypoctami a pripadne potom tu vypoctovu cast vylepsit.
2. Chcem urobit taku super kalkulacku, aku este nikto neurobil. Najlepsiu na svete. V tomto pripade je ale latka nastavena poriadne vysoko a musim byt fakt bohovo dobry, aby som to dokazal doviest do uspesneho konca. To by som ale mal byt davno za levelom kde sa riesia zaciatky programovania. Tiez musim pocitat s tym, ze to nebude hned, ale ze to bude trvat dlho. A takisto mi pravdepodobne nikto nepomoze, to je udel tych co sa riadia heslom "To boldly go where no man has gone before".
Len tak mimochodom, standardna kalkulacka tuto vo Windoze 7 (co mam tuto v robote) mi tu na otazku 6^(6^6) vystrcila prostredny prst z obrazovky (ehm, napisala "Overflow").
Inak ked si vsimnes, tak som vo svojom predoslom odporucani napisal "napriklad triedu java.lang.Math" a uz vtedy som slovo napriklad zvyraznil kurzivou. Cim som chcel povedat, ze to nie je jedine riesenie. Ale podla mna ako prve priblizenie v ramci zaciatku je to dostatocne. Nie az tak "daleko" od toho je totiz (neprekvapivo), trieda java.math.BigInteger (pripadne java.math.BigDecimal na desatinne cisla), v pripade ze sa chces pohybovat mimo rozsahu integer/long/float/double. A to sa bavime o zakladnej Jave, teda to este stale nie je ziadna vysokospecializovana kniznica. Ako dalsi krok dobre (a mozno aj plne postacujuce na tvoju kalkulacku). Ale ked uz by si chcel este nieco lepsie a napisat si vlastnu super-duper kniznicu, tak tieto triedy su celkom dobry odrazovy mostik (v tom, ako by nakoniec mohli vyzerat triedy ktore to budu zabezpecovat)...
Ako som uz spominal, netreba znova objavovat Ameriku.
- Kiwi
- Príspevky: 2072
- Dátum registrácie: Ut Feb 13, 2007 4:18 pm
- Bydlisko: Sobrance
- Kontaktovať používateľa:
Re: Android SDK
Dik za odpoved.
No kalkulacku som si vybral,lebo som niekedy tento problem chcel riesit, /este pred 25 r., ked sme dostali
na gympel Borland Turbo Pascal / aj OOP /, Turbo / C++ /, Turbo Assembler, Turbo Debugger a Turbo Profiler.
Dali sa v tom napisat rozne veci, ci OOP, alebo potom pustit Debugger a Profiler a potom sledovat,
ako danu proceduru/funkciu prelozil compilator a ako to clovek potom napisal sam v ASM.
A ta uspora casu a velkosti kodu bola obrovska.
To som travil cele letne prazdniny v ucebni informatiky a robil kopu veci, napr. stealth kod pod DOS-om,
ci rozne typy komprimacnych algoritmov. Vtedy sa dala napr. cez heap alokovat v Turbo Pascale
cela extended memory, a to ked mal clovek 20 MB, to bola parada oproti 640 kB na starych PC.
Lenze veci sa odvtedy uplne zmenili, co clovek urobil niekedy s 1024 B kodu, dnes ma kB.
Taktiez ma zaujimali rozne mat. funkcie, ci uz Madelb. mn., alebo rozne 3D funkcie a chcel som
urobit taku graficku kalkulacku v 2D/3D, robil som aj vektorovu grafiku a rozne projekcie, lenze
ked to taky vektorovy most malo zobrazit + prepocitat z nejakeho pohladu, tak to na 16 MHz PC
trvalo minuty.
Takza mozno kalkulacka nie je zvolena racionalne ako vhodny priklad na ucenie, ale potom co ine ?
Kamosovi som spominal app, ktora by napr. autam s Android navigaciou, ci s Android phonom,
oznamovala, ze v tme/hmle sa pred autom niekto na ceste vyskytuje.
Tak taku app, kde by sa realtime odosielala info o polohe subjektu a iny subjekt by tu informaciu
mal ihned naobrazovke, si neviem ani predstavit, vzhladom na latenciu GPS/Glonasu, latenciu
G/E/H-pripojenia Androidu oboch subjektov, toto by som urcite nezvladol.
No este by ma zaujimalo, ako v Eclipse udrziavat napr. poslednych 10 verzii jedneho zdrojoveho kodu
+ kombinacie s dalsimi xx subormi, napr. MainActivity.java, Class_xx.java, Class_xy atd.
A este ako ziskat testovacie retazce na kalkulacku,resp. podla akej kalkulacky sa riadit, pretoze
nie vsetky kalkulacky maju asociativnost operatorov zlava/sprava rovnaku pre vsetky operatory.
No kalkulacku som si vybral,lebo som niekedy tento problem chcel riesit, /este pred 25 r., ked sme dostali
na gympel Borland Turbo Pascal / aj OOP /, Turbo / C++ /, Turbo Assembler, Turbo Debugger a Turbo Profiler.
Dali sa v tom napisat rozne veci, ci OOP, alebo potom pustit Debugger a Profiler a potom sledovat,
ako danu proceduru/funkciu prelozil compilator a ako to clovek potom napisal sam v ASM.
A ta uspora casu a velkosti kodu bola obrovska.
To som travil cele letne prazdniny v ucebni informatiky a robil kopu veci, napr. stealth kod pod DOS-om,
ci rozne typy komprimacnych algoritmov. Vtedy sa dala napr. cez heap alokovat v Turbo Pascale
cela extended memory, a to ked mal clovek 20 MB, to bola parada oproti 640 kB na starych PC.
Lenze veci sa odvtedy uplne zmenili, co clovek urobil niekedy s 1024 B kodu, dnes ma kB.
Taktiez ma zaujimali rozne mat. funkcie, ci uz Madelb. mn., alebo rozne 3D funkcie a chcel som
urobit taku graficku kalkulacku v 2D/3D, robil som aj vektorovu grafiku a rozne projekcie, lenze
ked to taky vektorovy most malo zobrazit + prepocitat z nejakeho pohladu, tak to na 16 MHz PC
trvalo minuty.
Takza mozno kalkulacka nie je zvolena racionalne ako vhodny priklad na ucenie, ale potom co ine ?
Kamosovi som spominal app, ktora by napr. autam s Android navigaciou, ci s Android phonom,
oznamovala, ze v tme/hmle sa pred autom niekto na ceste vyskytuje.
Tak taku app, kde by sa realtime odosielala info o polohe subjektu a iny subjekt by tu informaciu
mal ihned naobrazovke, si neviem ani predstavit, vzhladom na latenciu GPS/Glonasu, latenciu
G/E/H-pripojenia Androidu oboch subjektov, toto by som urcite nezvladol.
No este by ma zaujimalo, ako v Eclipse udrziavat napr. poslednych 10 verzii jedneho zdrojoveho kodu
+ kombinacie s dalsimi xx subormi, napr. MainActivity.java, Class_xx.java, Class_xy atd.
A este ako ziskat testovacie retazce na kalkulacku,resp. podla akej kalkulacky sa riadit, pretoze
nie vsetky kalkulacky maju asociativnost operatorov zlava/sprava rovnaku pre vsetky operatory.
Re: Android SDK
Kalkulacka je na vyukove ucely celkom vhodna, myslel som ze v mojom predchadzajucom prispevku to bolo viditelne.
Pre ucenie nie su az take podstatne detaily (napriklad aku presnost/rozsah budu mat vypocty alebo mnozstvo podporovanych operatorov). Ale mas tam vstupy, vystupy, vypocty na pozadi, pripadne aj vykreslovanie grafu - a to su veci, ktore sa zidu vo vacsine aplikacii.
Eclipse je "len" vyvojove prostredie. Na udrziavanie verzii sluzia verzovacie systemy, napriklad subversion, git, mercurial... Pre AndroBOINC pouzivam subversion, pretoze je jednoduchy, vhodny na male projekty, je podporovany na GoogleCode a ma funkcny plugin pre Eclipse. Nie je najnovsi a mnohi nad nim ohrnaju nos, ale pre moje ucely sluzi vyborne. Verzovacie systemy su ale problematika sama o sebe - a napriklad zdrojaky BOINC boli najprv v cvs, potom nejaky cas v svn a najnovsie su v git-e . Nakoniec je ale dolezitejsie, ci mas v strome poriadok a verzie su dobre ocislovane/otagovane/rozvetvene, alebo ci je v tom totalny bordel.
Subversion je dobre popisane tu: http://svnbook.red-bean.com/, na jednochlapove projekty podla mna staci.
Pre ucenie nie su az take podstatne detaily (napriklad aku presnost/rozsah budu mat vypocty alebo mnozstvo podporovanych operatorov). Ale mas tam vstupy, vystupy, vypocty na pozadi, pripadne aj vykreslovanie grafu - a to su veci, ktore sa zidu vo vacsine aplikacii.
Eclipse je "len" vyvojove prostredie. Na udrziavanie verzii sluzia verzovacie systemy, napriklad subversion, git, mercurial... Pre AndroBOINC pouzivam subversion, pretoze je jednoduchy, vhodny na male projekty, je podporovany na GoogleCode a ma funkcny plugin pre Eclipse. Nie je najnovsi a mnohi nad nim ohrnaju nos, ale pre moje ucely sluzi vyborne. Verzovacie systemy su ale problematika sama o sebe - a napriklad zdrojaky BOINC boli najprv v cvs, potom nejaky cas v svn a najnovsie su v git-e . Nakoniec je ale dolezitejsie, ci mas v strome poriadok a verzie su dobre ocislovane/otagovane/rozvetvene, alebo ci je v tom totalny bordel.
Subversion je dobre popisane tu: http://svnbook.red-bean.com/, na jednochlapove projekty podla mna staci.
- Kiwi
- Príspevky: 2072
- Dátum registrácie: Ut Feb 13, 2007 4:18 pm
- Bydlisko: Sobrance
- Kontaktovať používateľa:
Re: Android SDK
Dik za odpoved.
Este mam otazku ako urobit spustitelny subor pre Huawei s CPU
Qualcomm MSM7227A 800MHz ARM Cortex-A5 a Android 2.3,
ak mam emulator pre x86 CPU ? Treba do Eclipse doinstalovat
dalsie moduly, pre toto CPU a pre tuto verziu OS ?
Potom uz len preniest .apk na SD kartu cez USB a fon si to sam
rozbali a nainstaluje ?
Este mam otazku ako urobit spustitelny subor pre Huawei s CPU
Qualcomm MSM7227A 800MHz ARM Cortex-A5 a Android 2.3,
ak mam emulator pre x86 CPU ? Treba do Eclipse doinstalovat
dalsie moduly, pre toto CPU a pre tuto verziu OS ?
Potom uz len preniest .apk na SD kartu cez USB a fon si to sam
rozbali a nainstaluje ?
Re: Android SDK
x86 emulator vobec nepotrebujes, ja som ho nikdy nepouzil. Iba keby si robil specialne pre x86 zariadenie. Android SDK standardne vyraba baliky pre ARM (kedysi len pre ARM, x86 pribudlo az neskor - vsetky Nexusy su ARMy).
V AVD si pri vytvarani emulovaneho stroja mozes vybrat, ake zariadenie chces emulovat a ARM je tam vzdy (a ked nerobis nieco vyslovene na x86, tak v SDK managerovi mozes uplne odinstalovat tie casti tykajuce sa x86, aby ta to zbytocne neplietlo).
Alebo si pripojis realny telefon cez USB a (v menu telefonu) zapnes USB-debugging, potom namiesto emulatora pouzivas rovno realny telefon, nahras don aplikaciu, tapkas si po displeji atd... A vsetko sa da obsluhovat rovno z Eclipse ktore nahra .apk do fonu aj ho spusti. Je to popisane priamo v navodoch: https://developer.android.com/training/ ... g-app.html, kedze je to uplny zaklad pre zaciatocnikov.
V AVD si pri vytvarani emulovaneho stroja mozes vybrat, ake zariadenie chces emulovat a ARM je tam vzdy (a ked nerobis nieco vyslovene na x86, tak v SDK managerovi mozes uplne odinstalovat tie casti tykajuce sa x86, aby ta to zbytocne neplietlo).
Alebo si pripojis realny telefon cez USB a (v menu telefonu) zapnes USB-debugging, potom namiesto emulatora pouzivas rovno realny telefon, nahras don aplikaciu, tapkas si po displeji atd... A vsetko sa da obsluhovat rovno z Eclipse ktore nahra .apk do fonu aj ho spusti. Je to popisane priamo v navodoch: https://developer.android.com/training/ ... g-app.html, kedze je to uplny zaklad pre zaciatocnikov.
- Kiwi
- Príspevky: 2072
- Dátum registrácie: Ut Feb 13, 2007 4:18 pm
- Bydlisko: Sobrance
- Kontaktovať používateľa:
Re: Android SDK
Mam taky problem, ze ked testujem app. na emulatore, tak ten jev anglickej lokalizacii a niektore funkcie
an kalkulacke, napr. recall z M1, M2 atd. pamate, davaju cisla s desatinnou bodkou.
No ked to nahram na svoj fon s ceskou lokalizaciou, tak ten isty button na kalkulacke
vracia retazec s desatinnou ciarkou, ale funkcie na prevod retazca neprevedu spravne cislo
s des. ciarkou, len s des. bodkou.
Tak ako pisat funkcie v zavislosti na tom, aka je lokalizacia telefonu ?
Ako sa to ma spravne robit ?
an kalkulacke, napr. recall z M1, M2 atd. pamate, davaju cisla s desatinnou bodkou.
No ked to nahram na svoj fon s ceskou lokalizaciou, tak ten isty button na kalkulacke
vracia retazec s desatinnou ciarkou, ale funkcie na prevod retazca neprevedu spravne cislo
s des. ciarkou, len s des. bodkou.
Tak ako pisat funkcie v zavislosti na tom, aka je lokalizacia telefonu ?
Ako sa to ma spravne robit ?
Re: Android SDK
To znie ako velmi trivialna zalezitost...
- Kiwi
- Príspevky: 2072
- Dátum registrácie: Ut Feb 13, 2007 4:18 pm
- Bydlisko: Sobrance
- Kontaktovať používateľa:
Re: Android SDK
Mam nadefinovany layout v activity_layout.xml a vyzera ako na obrazku, t.j je to OK, ak je telefon "na vysku".
Ak si vsak user zapne auto otocenie, a otoci mobil o 90*, tak to zobrazi tak isto a spodok kalkulacky nevidno.
Ako to urobit, aby pri otoceni app nacitala novy layout ?
Kde sa o tom da docitat resp. aky tutorial si pozriet ? Lebo vobec nemam sajnu ako to mam hladat.
Ak si vsak user zapne auto otocenie, a otoci mobil o 90*, tak to zobrazi tak isto a spodok kalkulacky nevidno.
Ako to urobit, aby pri otoceni app nacitala novy layout ?
Kde sa o tom da docitat resp. aky tutorial si pozriet ? Lebo vobec nemam sajnu ako to mam hladat.