piątek, maja 25, 2012

Paradoks samochodowy ;-)


Ludzie kupują droższe/lepsze samochody niż ich stać by być szczęśliwszymi z ich posiadania.
Jak je już mają to są ciągle nieszczęśliwi bo "te chamy źle jeżdżą", "paliwo za drogie", "znów się popsuł" albo "ktoś zarysował".

Może ja mam coś z oczami, albo wnioskowaniem, ale ja tu widzę pewną sprzeczność ;-)


[Go to original post on Google+]




Podobne postybeta
"Arystokraci" od siedmiu boleści
Różnica między Seniorem i Juniorem ;-)
Atom
Paradoks autostradowy ;-)
Cena benzyny w górę, wydatki na paliwo w dół ;-)

niedziela, maja 20, 2012

I jak "po bożemu" zrobić updatowanie widoku na podstawie danych z sieci w Androidzie?

Już trochę kodu dla Androida napisałem, ale nadal jest jedna rzecz której nie wiem.
Tzn. wiem jak to coś zrobić na wiele sposobów, ale nie wiem nadal jak to się powinno robić "po bożemu", albo zgodnie z księgą....

O co chodzi?

O banał.
Mamy aktywność, która np. wyświetla kurs akcji i chcemy co jakiś czas to zupdatować...

Zrobić to można na wiele sposobów.

Pierwszy, prosty z pozoru, choć bardzo zły i nieandroidowy to stworzyć sobie wątek, który pogada z siecią po czym wyświetlić.
Zaleta jest taka, że jest prosto, wad jest sporo.
Najistotniejsza taka, że jak nam ktoś w momencie gdy pytamy sieć zmieni orientację ekranu to aktywność zginie śmiercią tragiczną, a wątek zostanie i się dopiero wykrzaczy jak będzie próbował zrobić update na UI. Do tego odpowiednio kręcąc urządzeniem możemy sprawić, że będzie ono non-stop atakować serwery i prosić o dane, serwery będą ciągle to przysyłały, a user i tak nie zobaczy ;-)

Można też powołać do życia serwis, zarejestrować BroadcastReceiver, odpalić serwis i czekać. Serwis się z siecią połączy, pobierze dane, podeśle je do aktywności przez broadcast... oczywiście problem będzie znów jak ktoś nam zmieni orientację bo zarejestrowany BroadcastReceiver jest połączony z tą aktywnością która zginie.... Można by niby tutaj (i w poprzednim podejściu) dodać callbacka, a sam BroadcastReceiver zrobić statyczny.... ale też to takie sobie jest.

Można bawić się z serwisem i bindowaniem tego serwisu z aktywnością......

Można bawić się z ContentProviderem.

Można coś robić na poziomie aplikacji (taki singleton, który nam oferuje środowisko).....

I tylko problem jest taki, że nie wiem jak autorzy Androida chcieli by to załatwiać...

Ktoś wie? ;-)


Podobne postybeta
Google Play Services dobre jest :-)
Androidowe boje... ale nie takie morskie ;-)
O tym w czym iOS jest lepszy od Androida
Serwis dobry na wszystko ;-)
Wszyscy hackują Androida ;-)

Nie kijem go to pałką ;-) czyli resumable upload do Google Docs z Androida i jak uniknąć 411 Length Required :-)

W skrócie jest tak.
W API 3.0 do Google Docs pliki wysyła się (czy to po raz pierwszy, czy po to by je zupdatować) w kawałkach.
Najpierw pod specjalny adres wysyła się info o pliku, serwer zwraca lokalizację gdzie trzeba wszystko wysyłać.

Taka jest teoria. I w większości miejsc się sprawdza ;-)

Ale nie w Androidzie. Tutaj po wysłaniu PUT do pierwszego adresu zamiast lokalizacji przychodzi błąd 411 Length Required.

Czemu?

Bo w niektórych wersjach Androida był błąd powodujący, że ustawienie Content-Length na 0 sprawiało, że ten nagłówek nie był ustawiany...... [co najlepsze czasami].
Walczyłem, szukałem po sieci i nic.
Na PC działa, na Androidzie 1.6 nie działa. Na 2.2 działa......

I w końcu znalazłem rozwiązanie ;-)
Skoro Content-Length nie jest dodawane gdy jest równe 0 to może by ustawić je na 1 i wysłać w tym pierwszym requeście dokładnie 1 bajt? :-)
Spróbowałem i działa :-)


Podobne postybeta
Naprawdę uwielbiam...
Ha! Ochidna Echidna potrafi updatować pliki :-)
iCloud jest podły....
Programowanie jest stresujące
Czy psy lubią gdy zwraca się na nie uwagę?

czwartek, maja 17, 2012

Maniacki pomysł na inteligentny dialer ;-)

Przypomniało mi się gdy pisałem poprzedniego posta.
Tak czytając Machine Learning in Action szukałem sobie miejsc gdzie by można było tego użyć w mobile i wyszło mi że można by było spróbować zrobić do telefonu dialer, który by się uczył.
Normalnie w takim Androidzie dialer podaje listę ostatnio wykonanych połączeń.
A co gdyby nad tą listą był jeden, może dwa item ze "zgadniętymi" numerami, które w oparciu o czas, a może i lokalizację wydają się być w danym momencie najbardziej prawdopodobnymi numerami?
Oczywiście widzę wady takiego pomysłu ;-) np. po zerwaniu telefon dość długo by proponował dzwonienie do byłej dziewczyny ;-)

Jeden problem w przetestowaniu tej idei jaki teraz mam to to, że na razie znam z uczenia maszynowego tylko algorytmy, które musiałyby dostawać odpowiednio spreparowane dane, a tego wolałbym uniknąć i wolałbym by bazowały tylko na gołych danych i same starały się je zrozumieć... ale możliwe, że AdaBoost użyta na kNN i naiwnym klasyfikatorze bayesowskim by dała radę? Nie wiem, będę to musiał przetestować.... co znaczy, że muszę dopisać kolejną rzecz do tego nad czym mam pracować ;-)


Podobne postybeta
Dwie książki komputerowe na długi weekend :-)
Przymiarki do nowego Bloggeroida
Zwłoki na plakatach... brrr...
Informacja źródłowa
Śmierdząca ryba wolności ;-)

Geolokalizacja ma problemy

Stwierdzam, że wszystkie twory w stylu Foursquare, czy meldowanie się w Google Maps to ściema i strasznie niewygodna rzecz.
Lekko licząc trzeba na to zmarnować z 30 sekund, z których większość spędzimy na czekaniu na lokalizację lub operacje sieciowe.
Po tym czasie zaś jedyną nagrodą jest to, że jesteśmy gdzieś zameldowani....
Próbowałem przez miesiąc czy coś koło tego i stwierdzam, że to nie jest dobra droga. Za długo trwa, a za mało daje by marnować na to czas.
Gdyby np. można było by dostać za logowanie zniżkę to może by się chciało. Bez tego jedynym rodzajem zachęty jest nuda po wejściu do danego miejsca, lub chęć pokazania się.
Mnie najwięcej radości meldowanie dało jak w Dallas siedziałem w restauracji i jakoś nie było tematów do rozmów z innymi osobami przy stole...
Żeby draństwo przyspieszyć trzeba by pokombinować z częstrzym ustalaniem położenia (co będzie źreć baterię..) albo z cacheowaniem miejsc w oparciu o zgrubną lokalizację.
Może jeszcze np. coś bazującego na uczeniu maszynowym? Większość ludzi jednak żyje wg. pewnego schematu i zapewne w środę koło godziny 18 będą w tym samym miejscu w którym byli przez większość śród o tej porze ;-)

posted from Bloggeroid


Podobne postybeta
Komputer bez sieci nie ma już sensu
Ostatnie wolne wybory już były?
Pomodoro z positive reinforcement? ;-)
Śledzimy geolokalizację ;-)
Social media to nie jest świat dla introwertyków/ambiwertyków ;-)

wtorek, maja 15, 2012

Malutki serwerek HTTP - dziełko, albo potworek ;-)

Zapragnąłem posiadać malutki serwerek HTTP/WWW, który działałby mi w trayu Windowsa i w razie konieczności mógłbym go włączyć klikiem.
No to sobie takowy skleciłem :-)

Nie prezentuje się okazale:


Ale za to zżera na starcie "tylko" 30 MB co i tak sprawia, że prawie go nie widać ;-) [sam plik wykonywalny ma około 12 KB ;-)]
Protokół HTTP tak sobie interpretuje. Działa w nim tylko GET, ale jak zauważyłem do większości rzeczy działa całkiem znośnie. Nawet można nim serwować strony ;-) [choć to najmniej lekkie szaleństwo]. Ale np. jak serwuję strony z Windows do Ubuntu w VMware Player to tak sobie to działa ;-)

Plusem tego, że to jest Java powinno być działanie serwerka tak na Windows jak i na Linuksie a pewnie i Mac OS X, albo Solarisie ;-)

Jeśli ktoś chciałby się pobawić to tutaj jest pliczek wykonywalny. A nóż wam zadziała? :-)

Update: jakby to kogo interesowało to serwerek uruchamia się na porcie 8000.


Podobne postybeta
Lepsze jest wrogiem dobrego
Nowy potworek na tapecie ;-)
Giń konstruktorze! Giń! ;-)
Uspokajacz
Electron + Airly = wskaźnik jakości powietrza w pasku ;-) - part 2, źródła ;-)

piątek, maja 11, 2012

Mobile jest głupi..... przynajmniej w pracy/ważnych sprawach ;-)

Macie ważną sprawę do kogoś.
Piszecie maila. Po kwadransie otrzymujecie odpowiedź z jakiegoś urządzenia mobilnego......
Niby wszystko super.... ale....
Jeśli pytacie o jakieś dane to w najlepszym przypadku dostaniecie info "jak dotrę do komputera to przyślę", jeśli pytacie o coś co ustalono jakiś czas temu w innym mailu to w najlepszym przypadku dostaniecie tekst "jak dotrę do komputera to przejrzę pocztę". Zwykle jednak dostaniecie odpowiedź, która nie ma żadnej wartości bo autor nie ma jak dokładnie odpisać i nie ma na czym oprzeć swojej odpowiedzi.

Teraz spójrzcie na to z drugiej strony.
W telefonie macie włączoną synchronizację maila. Przychodzi mail, to klikacie by go przeczytać. Na szybko go skanujecie (przecież w koło są ważniejsze rzeczy do zrobienia) i jeśli to coś ważnego to odpisujecie, a zwykle stwierdzacie coś w stylu "jak będę przy komputerze to odpowiem"... i pewnie dość szybko zapominacie o tym mailu, a później zapominacie nań odpowiedzieć.

Tak sobie więc myślę, może warto wyłączyć synchronizację maila z telefonem i tabletem? Przecież to tylko powoduje, że w ciągu ostatnich 2 lat nie odpowiedziałem na całą masę maili bo o nich po prostu zapomniałem ;-)

Ktoś już wyłączył? ;-)


[Go to original post on Google+]




Podobne postybeta
Nimbus vs. Ocean - nowy Look And Feel w Swing
Człowiek to dziwne zwierze....
"We skrócie"
"i ma Office'a...."
Dołożę się do budżetu Rybnika ;-)

środa, maja 02, 2012

Dwie książki komputerowe na długi weekend :-)

Na długi weekend polecam 2 książki ;-)

Pierwsza to "Machine Learning in Action" (a tu w Amazon.co.uk). Dawno nie czytałem tak wciągającej książki "komputerowej", zwykle po paru stronach jest nudno, a tutaj jestem w 5 rozdziale i nadal jest ciekawo :-)
Wiem też już jak robi się drzewa decyzyjne przy pomocy algorytmu ID3 (użycie entropii jest po prostu genialne :-)), jak użyć naiwnego klasyfikatora Bayesa, albo jak użyć algorytmu kNN. Szczerze to dwa ostatnie znałem choć z tym Bayesem miałem zawsze pewne problemy.
Do wszystkiego są przykłady w Pythonie, co jest wg. mnie jednym z powodów dla których książka tak wciąga :-) człowiek musi wkładać ręce w "bebechy" i widzi efekty.

Druga książka to "Professional Android 4 Application Development" o jak łatwo się domyśleć pisaniu dla Androida.
Tutaj trudno mi wytłumaczyć co mi się podoba, chyba głównie to, że całą sprawę zaczynają przedstawiać od dobrej strony. Może to przez to, że już wiem jak coś trzeba robić? Ale zamiast tysięcy linii nieczytelnych listingów jest ich mniej, ale jakby dokładniejszych. Najtrudniejsza dla mnie część Androida czyli zrozumienie LayoutManagerów nie ogranicza się do 1 czy 2 stron ale do 5-10 ;-) różnica może nie duża, ale znacząca.
Wg. teorii znajdziemy tu to samo co w dokumentacji do Androida, ale prowadzone z jakąś myślą przewodnią.
Mnie się podoba :-)


Podobne postybeta
Maniacki pomysł na inteligentny dialer ;-)
ClickbaitDetector - to działa :-)
Odyseja Czasu - Burza Słoneczna
Logistic Regression wykrywa clickbaity lepiej od Bayesa ;-)
The Shepherd's Crown