android, programowanie, ksiązki

Z czego się uczyć? To dobre pytanie, można czytać developer.android.com, można szukać na google, można zapytać kolegi, lub zobaczyć co jest np na amazon do przeczytania i kupić sobie książkę. Ja przejrzałem to co oferuje apress, na google book można znaleźć sporą część książki, zdecydowanie nie polecam. Jak dla mnie jest pisana zbyt chaotycznie, jakoś źle mi się to czytało. Natomiast ponownie jestem pod wrażeniem wydawnictwa wrox i takiej książki autorstwa Reto Meier. Wszystko jest tłumaczone, przykłady pisze się samodzielnie, a nie ściąga ze strony wydawnictwa. Wcześniej czytałem coś o programowaniu w c# i .net framework 3.5 i również uważam, że książka była dobrze napisania.
Nauka na przyszłość jak będzie potrzeba przeczytania i nauczenia się jakiejś nowej technologi napewno zacznę naukę od sprawdzenia co oferuje wrox

ps
Post niestety nie jest sponsorowany.

test pass

Tutaj na zesłaniu poznałem dziwną i niezwykle innowacyjną sztukę testowania, właściwie to chodzi o podejście jakiego się używa podczas fazy testowania. Framework z którego korzystam, które jest autorstwa firmy z którą aktualnie współpracuje, nie zawsze nadąża za aplikacją która jest testowana, szczególnie na maszynach z więcej niż jednym rdzeniem. W związku z tym, stosuje się sztuczki, np. zwiększenie priorytetu dla aplikacji testującej, czy też odpowiednie ustawienie affinity [wikipedia] dla aplikacji testowanej i testującej plus dodatkowe ostrzeżenie od testera, który miał już z tym do czynienia “don’t touch anything now”. Szczerze mówiąc do tego momentu jestem jeszcze w stanie wszystko zrozumieć. Ale! Dodał o jedno stwierdzenie za dużo: “Jeżeli się nie uda, to odpal jeszcze raz i jeszcze raz, aż przejdzie”. WTF? Jakiej jakości będzie/jest ten kod? Czy testy się pisze z nadzieją, że może sie uda? Czy może po to żeby znaleźć i wyeliminować błędy? Czy jedna na dziesięć prób , która się powiedzie mówi że wszystko jest ok, czy jedna nieudana na dziesięć udanych mówi, że powinieneś się zastanowić, bo chyba czegoś zapomniałeś w kodzie zrobić jak należy.
A ty po ilu testach się uśmiechniesz?

Środowisko programistyczne

Jak pisałem uczę się Androida i jednocześnie piszę mały projekcik w C#, mam więc dobrą okazję do porównani dwóch środowisk programistycznych. Projekt w C# pisany jest w msvc2k8, do nauki Androida używam Eclipse 3.4 plus pakiet ADT od Google. Od razu powiem, że nigdy nie przepadałem za Eclipsem, ale postaram się być obiektywny i dać mu szansę.

Edytor to w zasadzie kwestia gustu i dobrania kolorów, co kto lubi i co uznaje za wygodne. Szybkość edytora i działanie inteli-sens jest w obu przypadkach w porządku, na plus Eclipsa wypada dobry system podpowiedzi generowany z dokumentacji znajdującej się w kodzie. Nie korzystam z tej funkcjonalności, ale doceniam ją i co najważniejsze nie przeszkadza w pisaniu. Microsoft w VC2k8 postarał się o edytor dla C# i pisanie kodu dla tego języka to czysta przyjemność. Szybkie podpowiedzi, generowanie stub funkcji dla delegatów czy innego ustrojstwa to piękna sprawa.

Kompilacja/build w obu IDE edytor na bieżąco informuje o problemach ze składnią czy literówkach. Eclipse pozwala na wyłączenie tej opcji w VC nie wiem, nie sprawdzałem bo nie miałem takiej potrzeby. Niestety w Eclipse domyślne ustawienia CTRL+B dla builda nie chce tak do końca dobrze działać z każdego miejsca w edytorze i często trzeba i tak kliknąć opcje build z menu żeby ruszy – ale to pierdółki.

Debug/runtime tutaj niestety często kończy się moja cierpliwość dla Eclipse. Szczegóły: wybieram opcje Project->Run i okazuje się, że jednak pomimo tego, że jakimś cudem udało się zbudować projekt nie wszystko jest poprawnie i trzeba poprawiać. Nie wiem, nie znam się, może to wina ADT – nie interesuje mnie to. Dla mnie i tak jest to Eclipse. Dalej – aplikacja po dłuższej walce i poprawkach pozwala wreszcie na uruchomienie się na emulatorze. Pojawia się komunikat jak z poprzedniego posta – nie wiem o co chodzi, szukam, walczę, pocę się nie miłosiernie, nic nie kumam. Znowu mija czas. Wreszcie po przełączeniu się na odpowiedni widok jest jakaś informacja o tym co poszło nie tak. To chyba nie to chodzi? Środowisko powinno ułatwiać pracę , a nie przyprawiać go o ataku szału. Możemy sobie psioczyć na Microsoft, ale uważam i pewnie długo jeszcze będę tego zdania, że Visual Studio to najlepszy pakiet programistyczny z jakim dane mi było pracować. Tam wszystko działa tak jak powinno, pracuje mi się z tym bardzo intuicyjnie, jeżeli coś nie działa to wszystkie informacje znajduję w jednym okienku.

Cena – jasne, za pakiet z ms trzeba zapłacić jeżeli chce się mieć wypasioną wersje. Choć teraz można korzystać całkiem przyjemnie z VC w wersji express, która też sprawuje się całkiem przyjemnie. Eclipse jest całkowicie za darmo i fajnie. Ale jak przeczytałem gdzieś na dzone (o ile dobrze pamiętam) – na rzeczy i usługi, które otrzymujemy za darmo patrzymy z lekkim podejrzeniem. Tutaj zapożyczę sobie przykład, który brzmi mniej więcej tak: “czy oddalibyście bliską osobę do chirurga, który wykona operacja za przysłowiowego browara czy tego który będzie żądać od was jakieś opłaty za przeprowadzenie operacji” i od siebie: wszystko co dobre kosztuje.

Nie chce wystawiać oceny żadnemu z tych programów, moje negatywne nastawienie do Eclipse, to pewnie wina tego, że nie zdążyłem się jeszcze z nim w pełni zapoznać. Może musi minąć trochę czasu i odkryje wreszcie cały wypas, który kryje się gdzieś tam – ukryty pod milionami opcji.

Przydatne linki:
Eclipse
Visual Express 2008

I co wy na to?

Sorry! The application has stopped unexpectedly

Z racji tego, że uczę się jak programować na piekielny system Androida, w moim życiu pojawiają się nowe problemy. Np. przy uruchomieniu przykładu android robi tylko “Sorry! The application XXX (process com.xxx) has stopped unexpectedly. Please try again”. Jeżeli jesteś ciekawy co jest nie tak, przełącz się (mówię o Eclipse) na perspektywę DDMD i kliknij LogCat. Znajdziesz tam informacje o brakującym ListView, które musi mieć specyficzne ID, brzmi to tak: ‘Your content must have a listview whose id attribute is ‘android.R.id.list’. Jeżeli w pliku ui.xml masz taki odpowiedni wpis lub przynajmniej wydaje ci się że masz, upewnij się że wartość id jest ustawiona na android:id=”@android:id/list”. Otóż ja wczoraj straciłem trochę zdrowia na tym, że miałem android:id=”@+id/list” – co niestety nie jest poprawne. No ale po co o tym pisać w książce czy w przykładach.

gps2kml

Nowy projekt zaczęty.
Główna idea to konwersja pliku, który otrzymuje z automapy (zapis trasy) w formacie .gps, na plik .kml do google earth. Wiem że są gotowe aplikacje, ale jak zawsze czegoś im brakuje lub co gorsza mają jakieś wady np. maksymalny plik to 3MiB, jakaś reklama gdzieś się pojawia, etc.
Wątki poboczne aplikacji: naprawienie problemów z punktami, gdzie był słaby sygnał i koordynaty zostały ustawione na 0,0. Czy dodanie własnych ikon dla punktów, lub inne pierdółeczki które możliwe są do zapisania w kml.

Jeżeli ktoś tutaj kiedyś trafi i będzie zainteresowany źródłami, są dostępne tutaj. Projekt stworzony w msvc2k8.
Dodatkowo informacje o projekcie i postępach można zobaczyć tutaj.

Jeżeli to czytasz i masz pytania, propozycje, uwagi pisz śmiało.