czwartek, sierpnia 29, 2013

Hack of the day ;-) oszczędzamy gniazdka.

Do niedawna miałem 4 ładowarki, które nie mieściły się w 3 gniazdkach... A jeszcze laptopy...
Ale teraz to już nie problem ;-)

Dwa urządzenia obsługuje jedna ładowarka..



A dwa następne druga...



I tak świat stał się troszkę lepszy ;-)

posted from Bloggeroid




Podobne postybeta
[Lifehack] Jak połapać się w ładowarkach ;-)
Reset
Hack Day - task completed ;-)
A takie tam narzekanie ;-)
Moto 360 v2 - to jest to :-)

Remindery Google Keep i ich ikonki ;-)

Google Keep dostało ostatnio genialny ficzer, przypominajki dla czasu i miejsca.

Działa to tak (w Androidzie).
Wybieramy rodzaj notatki klikając na odpowiednią ikonkę:


Gdy pojawi się notatka:


ujrzymy u jej dołu dzwoneczek, który po kliknięciu zmieni się w godzinę:


Dzięki czemu możemy ustawić przypomnienie na czas... ale gdy klikniemy zegar:


Będziemy mogli wybrać warunek przypomnienia.
Gdy wybierzemy miejsce, zostaniemy poproszeni o podanie lokalizacji:


A gdy ją już wybierzemy będziemy mieli o tym informację:


Filozofii nie ma, ale możliwości całkiem duże.

To co wyżej jest proste i umieściłem to głównie po to żeby nie było wątpliwości.

Dziwnie się jednak robi później w interfejsie webowym, bo obok naszych reminderów zobaczymy różne ikonki, które nie są do końca jasne.

Niby każdy wie, że to alarm dla lokalizacji, zaś dla czasu. Ale co oznacza  ?

Odpowiedź jest prosta ;-) oznacza, że dana przypominajka już była przypomniana ;-)

A co się dzieje gdy zachodzą warunki alarmu?

To proste, robi się "tada" i pokazuje ikonka żarówki w notyfikacjach:





Podobne postybeta
Wysyłamy naszą e-bibliotekę do Google Play Books :-)
Ej Google, ja się tak nie bawię
Bez cukierków i Coli
Twitter
Chrome2Chrome 0.7.2 - OAuth w akcji ;-)

Spłuczka edukacyjna...

Z racji tego, że mam teraz schizę na punkcie wody z powodu dzyngla w spłuczce to już wiem, że w takim Krakowie:

  • 1 PLN kosztuje woda na około 440 szklanek herbaty,
  • jedno spłukanie wody w toalecie to 5 groszy,
  • jedna kąpiel w wannie to tak od 1.35 do 1.8 PLN,
  • jedno mycie (oszczędne) zębów to mniej niż 0.5 grosza,
  • 1.5 litrowy dzbanek herbaty to trochę ponad 1 grosz.
I pomyśleć, że tak samo z siebie zrobiło się tyle spłukań w spłuczce ile przeciętny człowiek zrobiłby tak na oko w ciągu 2.5 lat ;-)



Podobne postybeta
Zabawa z kodem Chromium wymaga cierpliwości ;-)
Czemu prysznic jest bardziej eco(nomiczny) i eco(logiczny) ;-)
Liliputer - istnieje coś takiego? ;-)
Książki są złe!!!!
Pożerany przez dinozaura

piątek, sierpnia 23, 2013

Ej Google, ja się tak nie bawię

W najnowszym Google Keep pojawiła się możliwość tworzenia przypominajek związanych z lokalizacją.

Można je obejrzeć w samym Google Keep, ale pojawiają się też w Google Now.... no właśnie nie do końca się pojawiają.

Gdy interfejs mamy ustawiony na angielski to widzimy te remindery w Google Now:


Gdy spojrzymy na ustawienia:


Widać, że różnicą jest brak odpowiednika Reminders w polskiej wersji..

Ja rozumiem, że u nas nie można głosowo stworzyć remindera (w wersji angielskiej wystarczy np. "wake me up in 8 hours" i stworzy się reminder), chociaż nie do końca to rozumiem, ale skoro istnieje Google Keep, które pozwala na tworzenie reminderów bez gadania, to może by jednak w Google Now dla Polski włączyć ich widoczność?

No Google? Nie bądź takie ;-) Włącz nam ;-)

[No chyba, że już włączyli w najnowszej updacie a ja jej po prostu jeszcze nie dostałem ;-)]


Podobne postybeta
Remindery Google Keep i ich ikonki ;-)
GPT + Python = sprawdzanie czy 5 książka z Bobiverse już jest dostępna ;-)
"wake me up in 20 minutes" - ja chcę Google Voice Actions po polsku....
Nowy Gadacz v0.2
Statystyki Android Marketu mijają się ciut z prawdą ;-)

środa, sierpnia 21, 2013

"Promocja homoseksualizmu" co to niby ma być?

Prawica wymyśliła sobie taki termin jak "promocja homoseksualizmu"...

Zachodzę w głowę co by to miało być.

Czy chodzi o promowanie tego, że homoseksualizm istnieje i że "pedał czy lesba to też człowiek"? Czy może o zachęcanie do bycia homoseksualistami?

To pierwsze to by była promocja tolerancji (tak samo toleruję homoseksualistów jak prawicowców, tych i tych nie rozumiem, ale jak im z tym dobrze to mnie to nie przeszkadza). To drugie jest niemożliwe.

Po prostu niemożliwe. Na kogoś hetero nawet najbardziej udana promocja homoseksualizmu nie podziała, tak samo jak przypuszczam na kogoś homo nie podziała najbardziej udana promocja heteroseksualizmu.

Prosty test, jak przeciętny facet dostanie prawo pójścia na randkę z Natalie Portman a jakimś uznanym za najpiękniejszego faceta facetem to z kim pójdzie?
Ba, jak będzie miał wybór pójść na randkę z dowolnie wybraną kobietą z tej samej grupy wiekowej i wagowej co on sam, a najpiękniejszy facetem to kogo wybierze?
Większość wybierze kobietę bo po prostu wolą kobiety. Tego się nie da zmienić. To siedzi głęboko w mózgu i jak wskazują badania ma najpewniej podłoże biologiczne (nie genetyczne, a biologiczne).

Promocja homoseksualizmu podziałać może tylko na ludzi, którzy mają takie skrywane tendencje w tym kierunku. Ale wtedy to chyba dobrze, że się zdecydują pójść za głosem serca, nie?

I teraz pytanie czy taki przeciętny prawicowy felietonista piszący o promocji homoseksualizmu stwierdzi, że na niego by podziałała taka promocja?
Jeśli tak to może czas się zastanowić nad sobą?
A może uważa, że on/ona jest odpowiednio silny/silna, ale zwykli ludzie są słabi? To może w takim przypadku przydałoby się nabranie lekkiego dystansu do swojego napuszenia?

Wegetarianizmu się zbytnio nie da promować bo ludzie lubią mięso i trzeba naprawdę wielkiego wysiłku by się "odzwyczaić" od mięsa, a homoseksualizm miałby być promowany? Niby jak?

Czego by było trzeba by Ciebie drogi hetero czytelniku lub droga hetero czytelniczko przeciągnąć na stronę homoseksualizmu?
A czego by trzeba było drogi homo czytelniku czy droga homo czytelniczko by przeciągnąć Cię na stronę hetero?
Umiecie sobie coś takiego wyobrazić? Ja nie.

Btw. nawet jakby istniał jakiś skuteczny sposób to wyjście w lato na zewnątrz rozwiałoby to działanie w mniej niż 30 sekund ;-) [czyli do momentu zobaczenia pierwszej kobiety w minispódniczce albo szortach ;-)]


Podobne postybeta
Nienawiść
Prawo wyboru
Po Google I/O - TensorFlow, App Maker, Kotlin i Firebase ;-)
Szybki hack dla podejmowania decyzji
Kto chce mieć szare życie?

Kiedy tablet zmieni się w dobry kalkulator?

Okazuje się, że Nexus 7 (stary) ma podobne wymiary do mojego kalkulatora Algebra FX 2.0 Plus....


To rodzi pytanie, kiedy, ach kiedy na tabletach pojawią się prawdziwe programowalne kalkulatory?
Próbowałem kilku i żaden mi nie podszedł.

A przecież jest olbrzymie pole do popisu tutaj.
Po pierwsze szybkość, procesorki kalkulatorów mogą się schować.
Po drugie ekran, jest większy, ma większa rozdzielczość.
Po trzecie, wprowadzanie, chociaż są pewne wady ekranu dotykowego to jednak daje on większe możliwości, można np. sobie wyobrazić dotykowe graficzne rozwiązywanie równań.
Po czwarte, sieć... wrzucamy masę danych o wzorach i stałych, oraz linki do Wikipedii.
Po piąte, in app purchase, toć to można zrobić olbrzymią bazę dodatków.

Do tego dochodzi możliwość robienia rzeczy kompletnie kosmicznych, jak np. wykorzystanie rysowania i bibliotek w stylu Phys2D do np. rozwiązywania zadań ;-)

Rozumiem pewne powody braku, jednak to nie jest soft dla każdego, nie jest też to soft, który każdy potrafiłby napisać. Dodatkowo takie Casio, TI czy kto tam jeszcze robi takie kalkulatory wolą wydać taki sprzętowy za 200 USD czy więcej, niż aplikację, która kosztowałaby 150 USD ;-)
Dodatkowo mogą kosić za dodatki.

Sam bym chętnie napisał coś takiego, miałem już nawet parę pomysłów (zaczęło się w czasach PocketPC, tak w 2005-2006 roku ;-)), ale bądźmy szczerzy brakuje mi wiedzy do napisania czegoś takiego.
Samo UI też nie jest takie proste...
Stąd czekam jak ktoś napisze, albo aż ja zdobędę potrzebną wiedzę ;-)

Tak się zastanawiałem i za dobry, poświadczony np. przez SciAm albo właśnie Casio czy TI, kalkulator byłbym pewnie w stanie zapłacić z 30 USD.
Teraz tylko pytanie czy komuś się opłaci za tyle zrobić dobry kalkulator? ;-)

A może już jakiś istnieje i po prostu go przegapiłem?


Podobne postybeta
Kalkulator marzeń ;-)
Pensje w IT są trudne
To (kalkulator) żyje :-)
Kalkulator
Takie tam przemyślenia i refleksje ;-)

wtorek, sierpnia 20, 2013

Wysyłamy naszą e-bibliotekę do Google Play Books :-)

Parę dni temu podsumowując pierwszy miesiąc Google Books w Polsce pisałem, że podobno da się wrzucić do Google Books swoje książki, ale przypuszczałem, że nie jest to bezszwowe.

Okazuje się, że nie jest wcale tak źle.

Wystarczy, że pójdziemy pod adres https://play.google.com/books/uploads i klikniemy Upload files (używam w większości usług Google angielskiego interfejsu).

Możemy wrzucić książki z lokalnego dysku albo z Google Drive:


Gdy już wrzucimy swoje książki to po jakimś czasie pojawią się one w interfejsie webowym:


A w Androidzie zobaczymy powiadomienie o tym, że pobrano nowe książki:


Czy jest to tak wygodne jak w Kindle Store? I tak i nie, nie trzeba nic wysyłać na maila w domenie kindle.com, wystarczy pliki po prostu wrzucić do Google Play. Z drugiej strony jest to trudniejsze niż przyciśnięcie "Wyślij do Kindle", który to guziczek jest dostępny w kilku polskich księgarniach.


Podobne postybeta
Remindery Google Keep i ich ikonki ;-)
Traf to za userem... ;-)
OOo2GD 1.9.0 w kierunku bezszwowości ;-)
Harry Potter po polsku jako ebook - jak i gdzie użyjesz
Oko czasu

Chrome2ChromeV2, TabCast czy może TabHermes albo Tabcury? ;-)

Myślę nad nową nazwą dla Chrome2Chrome w nowej wersji.
Chrome2Chrome jest fajne i mi się podoba, ale zawsze istnieje ryzyko, że Google dostrzeże Chrome2Chrome w Google Web Store i uznają, że im się nazwa nie podoba ;-)
Wolę dmuchać na zimne stąd myślę o nowej nazwie.
TabThrow, TabCast, Throw a Tab, Send a Tab, TabSender i tak dalej już przemyślałem i nie mam zdania, teraz po głowie mi chodzi coś z Hermesem, albo Merkurym.
Może TabHermes, albo Tabcury (połączenie Tab i Mercury ;-))

Na Google+ spytałem, ale chyba tylko 2 osoby zareagowały, może tutaj odezwie się też ktoś :-)

Nazwa powinna pokazać, że można z jednej przeglądarki przesłać coś do drugiej i że tym cosiem jest strona lub tabka, nawet bardziej tabka....

Ktoś ma jakiś pomysł?


Podobne postybeta
Zaćmienie Księżyca :-)
Chrome2Chrome 0.7.2 - OAuth w akcji ;-)
3 Home w jednym domu ;-)
A może zarwać noc?
Chrome2ChromeV2 na GitHub :-)

niedziela, sierpnia 18, 2013

Chrome2ChromeV2 na GitHub :-)

Właśnie wrzuciłem do repozytorium pierwszą wersję Chrome2ChromeV2.

Kod jest prosty i wydaje mi się, że warto zajrzeć doń by obejrzeć jakie cuda można robić w Chrome :-)

Rozszerzenie składa się z 8 plików.

manifest.json - tutaj znajduje się opis rozszerzenia, plik ten jest niezbędny, to dzięki niemu Chrome wie co to za rozszerzenie.
background.js i background.html - to skrypt i strona tła, strona jest niepotrzebna bo samo Chrome by ją potrafiło wygenerować. W background.js najpierw sprawdzamy czy w localStorage jest już nazwa lokalnego komputera (localStorage jest lokalne dla każdego rozszerzenia czy strony), jeśli nie ma tej nazwy w localStorage to następuje przekierowanie do options.html, następnie jest robiona najważniejsza rzecz, czyli rejestrowany jest listener, który słucha co się dzieje z chrome.storage. W tym miejscu odbywa się cała magia.
options.js i options.html - komputer musi mieć nazwę, tutaj mu ją możemy nadać :-)
chrome2chrome.js i chrome2chrome.html - strona widoczna pod ikonką. To tutaj tworzony jest dialog z listą komputerów, tutaj też pobierana jest informacja o aktualnie otwartej stronie, a następnie zapisywana jest do chrome.storage.sync.
chrome2chrome.png - straszna ikonka rozszerzenia ;-)

Same prace nad rozszerzeniem odbywają się raz na Chromebooku, raz na laptopie ;-)
Problemem jest tylko synchronizacja, bo niestety w Chrome OS nie można sprawić by jakiś katalog widoczny jako lokalny (czyli taki w którym można trzymać kod rozszerzenia czy Packed App) był synchronizowany z Google Drive. Trzeba ręcznie przenosić pliki, a to trochę wkurzające. (programik, który to będzie robił chodzi mi po głowie, ale nie wiem czy się skuszę)
Brakuje jeszcze git'a na Chromebooku, przez co nie mogę wrzucać plików bezpośrednio do repozytorium.



Podobne postybeta
ToDo od Trello jako "oddzielna aplikacja"
Chrome2ChromeV2 - działamy przez chrome.storage.sync :-)
Robimy widget do Windows 7 :-)
Rozszerzenia Chrome - Content Script nie wszystko może...
A może by wrócić do używania Google Drive do przesyłania komunikatów między przeglądarkami?

Chrome2Chrome, mam dylemat

Nowa wersja Chrome2Chrome działa całkiem rozsądnie i jest prawdę mówiąc gotowa do publikacji.
Problem jest w tym, że jest całkowicie niezgodna z poprzednią wersją.
Niby mógłbym dodać kod, który starałby się zmigrować dane, ale nie wydaje mi się to być właściwą drogą.

Opcja pierwsza jest taka, że nowe Chrome2Chrome trafi pod inną nazwą do Chrome Web Store, a obecne Chrome2Chrome otrzyma update do wersji 0.7.4, która przy pierwszym uruchomieniu pokaże info, że jest lepsza wersja, która korzysta z lepszego mechanizmu, ale nie jest kompatybilna z obecną i jak ktoś chce przejść do zapraszam do pobrania nowej wersji i skasowania obecnej.

Opcja druga jest taka by próbować migrować dane, ale jak pisałem nie podoba mi się, głównie przez to, że nie ma gwarancji, że akurat na danym komputerze są wszystkie znane maszyny. To też można obejść ale komplikuje to kod, a chciałbym zachować jak najbardziej nieskomplikowany.

Opcja trzecia to po prostu zmigrować do nowszej wersji i poinformować usera, że "Sorry Winnetou, nowa wersja jest fajniejsza od starej, ale nie migruje danych".

Najprostsza jest opcja numer trzy, najlepsza dla userów opcja dwa z działającą migracją danych.
Sam skłaniam się ku opcji numer jeden.

Wychodzi na to, że rzeczywiście w tworzeniu czegoś dla innych niż sam programista samo programowanie to najprostsza i stosunkowo nieistotna sprawa ;-)


Podobne postybeta
Ewolucja Buzz Troll Remover'a ;-) - czyli nad czym teraz pracuję
FeedBurner -> Google = (no title) ?
Wersjonowanie Rest API - pytanie filozoficzne
Sztuczki tropiciela błędów - breakpoint na sterydach ;-)
Macbook PRO Retina i OS X po 2* tygodniach

sobota, sierpnia 17, 2013

Google Books vs Kindle Store

Tak mniej więcej miesiąc temu Google otwarło u nas w Polsce Google Books.

Po miesiącu wypadałoby porównać Google Books z Kindle Store ;-)

Ceny.
Jeśli chodzi o ceny to jestem zaskoczony. Bo jest podobnie, z lekkim wskazaniem na Google Books.
Na 14 książek które sprawdziłem (Terry Pratchett, Arthur C. Clarke, Isaac Asimov, Orson Scott Card i Richard Dawkins) w 7 tańsze było Google Books, w 7 Kindle Store, ale łączna cena w Google Play wyniosła 431.5 PLN, a w Kindle Store 445.5 PLN.
Z obserwacji jeśli chcemy kupić nowsze książki Pratchetta to w Google Books, jeśli Orsona Scott Card to w Kindle Store.

Wynik: 60 do 40 dla Google Play.

Wybór.
W tym asortymencie który sprawdzałem wygrywa Kindle Store, więcej Pratchetta i Dawkinsa :-) Ale ogólnie jest porównywalnie.

Wynik: 70 do 30 dla Kindle Store.

Czytnik webowy.
Idą łeb w łeb.
Sam chętniej używam tego z Amazonu, ale to chyba przez to, że mam tam więcej książek.


Czytnik od Google wygląda "czyściej".


W Czytniku Kindle przy każdym ruchu myszą wyskakują paski.

Kindle wygrywa w nawigacji po książkach i dzięki słownikowi, w Google Books po najechaniu na "human" dostałem informację "brak definicji" co mnie trochę przeraziło ;-)
Możliwe, że to przez to, że Google Books starają się być po polsku i chcą sprawdzać definicję w polskim słowniku, co nie ma zbytniego sensu w przypadku angielskich słów.

Wynik: 70 do 30 dla Kindle Store

Czytnik mobilny (dla Androida).
Google Books są ładniejsze, pozwalają też na umieszczenie na ekranie skrótów do książek.
Jednak w odróżnieniu do Kindle nie działa mi w ogóle synchronizacja. Gdy czytam na Nexus 10, a później przechodzę na Nexus 7 czy Nexus 4 to muszę ręcznie przewijać kartki.

W przypadku Kindle wszystko działa, a jak nie działa, to wystarczy sięgnąć po ostatnio używane urządzenie, przesunąć 1 stronę i już działa.

Wynik: 70 do 30 dla Kindle.

Czytnik.
Nie ma co porównywać, istniał podobno czytnik dla Google Books, ale dawno i nikt go już nie pamięta.
Kindle tu wygrywa.

Wynik: 100 do 0 dla Kindle.

Polskie księgarnie.
Wszystkie polskie księgarnie wspierają mobi i zwykle pozwalają na wysłanie zakupionych książek wprost do chmury Amazona.
W Google Play podobno da się to zrobić, ale nie mam pojęcia jak. Nie działa to na pewno tak bezszwowo.

Wynik: 100 do 0 dla Kindle.

Ogólny wynik to 450 do 150 dla Kindle.

Google Books nie wypada najlepiej, jednak jeśli usunąć czytnik i polskie księgarnie to mamy 250 do 150 dla Kindle, nadal nie najlepiej, jeśli jednak w Google Books pojawią się polskie tytuły to wtedy walka się wyrówna ;-)


Podobne postybeta
Wysyłamy naszą e-bibliotekę do Google Play Books :-)
Książkowa faza - stare hard SF :-)
O! "Ostatnie Twierdzenie" Arthura C. Clarke'a po polsku :-)
Harry Potter po polsku jako ebook - jak i gdzie użyjesz
Ewolucja technologii i obyczajów w SF

piątek, sierpnia 16, 2013

Chrome2ChromeV2 - działamy przez chrome.storage.sync :-)

Trochę przygnębiająco na człowieka działa sytuacja gdy zda sobie sprawę, że jego ciężka praca, kombinowanie i wiele godzin znoju można zastąpić czymś dużo prostszym ;-)

Ja się tak czuję teraz.

W ramach zabaw z Chrome OS i chrome.storage.sync wyprodukowałem nowszą, lepszą i prostszą w użyciu wersję Chrome2Chrome ;-)

Na razie zowie się ona Chrome2ChromeV2 i nie używa w ogóle Google Drive, a chrome.storage.sync.

Zamiast tworzyć i zarządzać katalogami i plikami w Google Drive, wtyczka po prostu wrzuca do synchronizowanego obiektu info o stronach do otwarcia, a już magia Chrome robi resztę.
Dodatkowy bonus jest taki, że w momencie gdy "wysyłamy" stronę nie musimy być w sieci.
Oryginalna wersja Chrome2Chrome tego nie potrafi.

Chociaż oryginalna wersja jest w czymś lepsza, ta tutaj nie poradzi sobie z sytuacją gdy w tym samym czasie na 2 komputerach zaordynujemy przesłanie strony, jest duża szansa, że polecenia wzajemnie sobie przeszkodzą.
W przypadku wersji korzystającej z Google Drive obie rzeczy się zapiszą...

Teraz powstaje pytanie czy powinienem po prostu porzucić moją wersję z Google Drive i zastąpić ją tą nową wersją? ;-)
Trochę szkoda, ale chyba tak będzie trzeba..

Na razie kodu nie ma na GitHub, ani wtyczki w Chrome Web Store, ale jakby ktoś chciał to tutaj jest CRX.
Pobieramy na dysk, po czym w Chrome otwieramy Rozszerzenia, teraz przeciągamy pobrany plik do Rozszerzeń.
Jeszcze tylko pytanie o nazwę komputera/przeglądarki i voila!
To samo powtarzamy na innych komputerach.

Od teraz powinna być możliwość przesyłania stron pomiędzy nimi ;-)


Podobne postybeta
Chrome2ChromeV2 na GitHub :-)
Zabawy z Chrome, chrome.storage.sync jest wielkie :-)
Chrome2Chrome 0.7.2 - OAuth w akcji ;-)
A może by wrócić do używania Google Drive do przesyłania komunikatów między przeglądarkami?
Co bym chciał dostać na Google I/O 2014

czwartek, sierpnia 15, 2013

Zabawy z Chrome, chrome.storage.sync jest wielkie :-)

W ramach zabawy z kodowaniem na Chrome OS bawiłem się dziś z chrome.storage.sync i przyznaję, że jest to świetna sprawa :-) Aplikacja w 1 przeglądarce używa kodu jak ten:

chrome.storage.sync.set({"msg":text});

A w drugiej przeglądarce zarejestrowany jest listener o takim kodzie:

chrome.storage.onChanged.addListener(function (changes, namespace) {
for (key in changes) {
var storageChange = changes[key];
var t = "Storage key "+key+" in namespace "+namespace+" changed.";
t+="Old value was "+storageChange.oldValue+", new is "+storageChange.newValue;
$("msg").innerHTML=t;
}

Efekt wygląda tak:

Oczywiście oba kawałki kodu są w tej samej aplikacji, która działa w różnych przeglądarkach.
Przeglądarki mogą być na różnych komputerach :-)

Tutaj w filmie to ten sam komputer i 2 Chrome'y.

Sam kod powstał na Chromebooku, ale filmik musiałem nagrać na Windows :-)

Teraz przymierzam się do Chrome2Chrome bez używania Google Drive ;-) na razie nie chce to działać tak jakby chciał, ale kodowałem to może z 30 minut.


Podobne postybeta
Chrome2ChromeV2 - działamy przez chrome.storage.sync :-)
Jak zrobić plik OVPN (dla OpenVPN) w wersji unified format?
Chrome2ChromeV2 na GitHub :-)
EEE Storage - czyżby nie dla wszystkich?
ToDo od Trello jako "oddzielna aplikacja"

środa, sierpnia 14, 2013

Programowanie na Chromebooku :-)

Da się :-)

Okazuje się, że na Chromebooku dość swobodnie można pisać Packaged Apps dla Chrome.

Wystarczy zainstalować z Chrome Web Store aplikację Text.


Jak widać na zrzucie ekranu, pliki przechowujemy sobie na dysku Chromebooka (można też na Google Drive, chociaż lokalny dysk ma przewagę polegającą na tym, że można lokalnie testować aplikacje przechowywane na lokalnym dysku :-))
Tworzymy sobie odpowiednie pliki, polecam użyć HelloWorld z przykładów dla Packaged Apps.

Teraz trzeba jeszcze przejść do rozszerzeń i zaznaczyć tam checkbox Trybu programisty.
Po zaznaczeniu tego checkboksa ujrzymy 2 guziczki, "Wczytaj rozszerzenie bez pakietu..." i "Umieść rozszerzenie w pakiecie...".
Używamy pierwszego, czyli "Wczytaj rozszerzenie bez pakietu..." i nawigujemy do katalogu z naszym kodem.

I od teraz możemy uruchamiać aplikację, którą developujemy.

Tak samo można pracować z rozszerzeniami dla Chrome :-)

Praktycznie to samo można zrobić w każdym Chrome, nie tylko w Chrome OS.


Podobne postybeta
Zamotka
Olśnienie... chyba wiem jak zrobić R-Drive [czyli dysk R:\ będący "obrazem" Google Docs ;-)]
Bloggeroid na Chrome OS - to działa... czasami ;-)
Chrome2ChromeV2 na GitHub :-)
Chromebook vs netbook z Windows 8 ;-) - pierwsze wrażenia

wtorek, sierpnia 13, 2013

Programowanie trudne ;-)

Właśnie wypuściłem nową wersję Bloggeroida, która poprawi najczęstszy problem z Bloggeroidem....

Bloggeroid używa OAuth2, robi to przez Google Play Services, które zwracają mu po prostu token, który trzeba wstawić do nagłówka requestu HTTP.
Ale token czasem jest przeterminowany, wtedy serwer zwraca 401 i trzeba unieważnić istniejący token i poprosić o nowy.
Dość logiczne.

Niestety ja używałem tego mniej więcej tak ;-)
 URL url = new URL("https://www.blogger.com/feeds/default/blogs");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Authorization", authType+token);
[...]
int tries = 0;
while (tries<3) {
           try {
             parseAnswer(conn);
           } catch (PublishException pe) {
             tries++;
             if (tries==3) throw pe;
             invalidateToken(token);
             token=getNewToken();
           }
        }
Niby wszystko OK.... jest zła rzecz, czyli jakaś tam forma sterowania przepływem przy pomocy wyjątków, ale spoko.
Jak nie wychodzi ze starym tokenem, to go unieważniamy i tworzymy nowy....

Dopiero po czasie dostrzegłem dość oczywisty błąd w tym kodzie ;-) [tu jest go łatwiej dostrzec bo explicite wywaliłem tu autoryzację ;-)]

Co mi da zmiana tokena, jak nadal operuję na tym samym połączeniu, które zostało nawiązane ze starym tokenem ;-)

 Dopiero przerobienie kodu na taki:

int tries = 0;
while (tries<3) {
try {
URL url = new URL("https://www.blogger.com/feeds/default/blogs");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Authorization", authType+token);
[...]
          parseAnswer(conn);
          break;
        } catch (PublishException pe) {
           tries++;
           if (tries==3) throw pe;
           invalidateToken(token);
           token=getNewToken();
        }
     }

rozwiązało problem ;-)

Jedyne co mnie tłumaczy to fakt, że ten kod działał wcześniej dla innego typu autoryzacji, później dodałem OAuth2, który działał, ale czasem nie... i widziałem czemu, ale nie umiałem tego zreprodukować, więc poprawiłem kod bez sprawdzenia czy rozwiązuje problem (bo go sam nie widziałem)... nie rozwiązywał i dopiero teraz się nauczyłem to reprodukować, zreprodukowałem, zacząłem testować i w końcu znalazłem rozwiązanie... banalne ;-)


Podobne postybeta
Wredne Google Docs
Toperz ;-) czyli OCR + Android odsłona 2 albo któraś tam
PROPFIND, czyli jak przechytrzyć HttpURLConnection
Wyniki do Sejmu na podstawie wyników do PE
Google Play Services dobre jest :-)

Po co komu "sklep Internetowy" jak odbiór jest możliwy tylko osobiście? ;-)

"Nie prowadzimy sprzedaży wysyłkowej.  Pilota można kupić tylko osobiście we Wrocławiu"....

Osobiście to ja uważam, że powinien być przepis, że jak firma oferuje sprzedaż czegoś co nie jest wielkogabarytowe lub przywiązane do miejsca (np. dania w restauracje takie mogą być, albo usługi takie są), a nie prowadzi sprzedaży w Internecie to nie powinna mieć strony WWW ;-)

A tak na poważnie, to co by szkodziło po prostu dać wysoką cenę za przesyłkę? Niech będzie nawet 100 PLN czy więcej, byle była możliwość zakupu. Nawet jak klient odeśle i zażąda zwrotu pieniędzy to nie trzeba zwracać za przesyłkę.


Podobne postybeta
Nienaturalne....
Różne rodzaje turystyki
Rekrutacja w czasach pandemii ;-) - a może poszerza liczbę firm?
Duża grywalność
Kierowca bombowca ;-)

poniedziałek, sierpnia 12, 2013

Chodzi za mną nowy Nexus 7....

Posiadanie nazwiska na R ma swoje wady ;-) jako, że w szkole musiałem zawsze długo czekać aż mnie wyczytają (OK, no chyba, że wg. ocen czytali to zawsze miałem te z okolic najwyższych ;-)) i przez to jestem strasznym maniakiem gadżetów.

Teraz choruję na nowego Nexus 7. Mam starego i działa całkiem sprawnie, choć do czytania zastępuje go zwykle Nexus 10.
W nowym podoba mi się lepszy telewizor i wąskość, rzeczywiście takiego N7 będzie łatwiej włożyć do kieszeni spodni.

Już się w Polsce w sklepie pojawił, sprowadzany z USA, w tym samym sklepie kupiłem w tym roku N4, N10 i Chromebooka... teraz kusi mnie N7 ;-)

Na razie wytrzymuję bez, ale kto to wie czy mi jednak nerwy nie puszczą ;-)

A stary N7 pójdzie do służby jako urządzenie do developmentu, na razie służy za takowe EEE Pad Transformer i trochę niewygodny do tego jest ;-)


Podobne postybeta
Moto 360 i Lollipop na Nexusach
I znów nie rozumiem....
I znów widziałem The Internship :-)
Serce czy rozum?
Gadżetomania...... tak, jestem na nią chory

To Update or not to update? ;-)

Gdy zaczynałem pracę wdałem się w dyskusję z jednym ze starszych kolegów o oprogramowaniu.
Wyszło wtedy, że on czekał na stabilną wersję softu i dopiero wtedy ją instalował, ja ściągałem bety i ich używałem.
Niemal co tydzień wchodziłem na serwery firmy UX i sprawdzałem czy nie mają czasem najnowszego OpenOffice.org, Firefoksa zainstalowałem w okolicach wersji 0.4 (albo 0.7? Ale chyba 0.4) gdy jeszcze Firefox zwał się Phoneix, a później Firebird... by w końcu zostać Firefoksem ;-)
W Moto byłem chyba pierwszym oficjalnym użytkownikiem Firefoksa i networkom o nim opowiadałem pytając czy mogę go zainstalować.
Gdy pojawiała się nowsza wersja Eclipse'a to od razu ją instalowałem....
Co tydzień albo dwa sprawdzałem czy nie ma nowych sterowników do karty graficznej...

A teraz? Wszystko się samo updatuje, Windows sam, Chrome samo, Android sam i Chrome OS sam.
Aż byłem dziś z lekka zniesmaczony tym, że w Windows 7 musiałem sam zaklikać, że chcę zrobić updaty sterowników do kart graifcznych (takie czasy ;-) że laptop ma 2 karty graficzne ;-))

Z drugiej strony Eclipse'a to updatuję od wielkiego dzwona ;-) za to Android Studio updatuje się samo...

Lenistwo, starość czy rozsądek? ;-)


Podobne postybeta
A może by tak potrząsnąć drzewem zależności? ;-)
Jak Chrome Firefoksa ruguje.....
Chrome staje się lepszy
10 milionów pięter...
Coraz bardziej zapomniany gadżet - USB Stick aka pendrive

piątek, sierpnia 09, 2013

Z pamiętnika developera... Do czego służy programista?

Podobno programista służy do przerabiania pizzy i kawy na kod....

Nic bardziej mylnego.
To plotki wynikłe z błędnego założenia, że programista służy ni mniej ni więcej do pisania kodu.

W większości przypadków programista służy do nie pisania kodu.
Bo gdy kod zostanie napisany to zaczynają się problemy.
Inspekcje (jak kto robi), na które trzeba spraszać ludzi, później testy, poprawianie, pisanie release notes'ów, update dokumentacji. Cała masa roboty tylko przez to, że programista coś zakodował.

Ba jeszcze się może okazać, że BA źle stworzyli specyfikacje... A na końcu jest klient, który i tak skrytykuje, że mu nie działa, że po co zmieniali jak działało?

Widzicie więc wyraźnie, że z kodowania są same kłopoty. Gdyby zabrakło programistów to cała ta masa ludzi nie musiałaby robić tego co robią...

Alternatywnie. Programista służy do tego by z jego pracy żyli: menedżerowie, BA, testerzy, technical writterzy, księgowi, handlowcy i osoby, które sprzątają biuro ;-)
Wszystko, cała przyszłość, spoczywa na ich/naszych ramionach! ;-)

posted from Bloggeroid




Podobne postybeta
Jak utrudnić życie złodziejom kart ;-)
Pan Euroentuzjasta ;-)
"Dziennikarze" to debile
Z pamiętnika developera... Podstawowe szkolenie w firmie IT
AirPods Pro nie lubią się z hulajnogami ;-)

Z pamiętnika developera... Podstawowe szkolenie w firmie IT

Gdy zaczynałem prace w Motoroli moja szefowa (a dokładniej szefowa mojego szefa) przeprowadziła mi najważniejsze szkolenie dla programisty.

Zaprowadziła do kuchni, pokazała gdzie są kubki, herbata, czajnik, cukier i ekspres do kawy ;-)

Bo nic nie jest ważniejsze od dobrego nawodnienia organizmu w trakcie kodowania ;-)

posted from Bloggeroid




Podobne postybeta
Google Talk i herbata... eksperyment ;-)
Z pamiętnika developera... Do czego służy programista?
Papa smalczyku :-(
Kraków to jednak ładny jest ;-)
Prawo jazdy i profesor Rawa ;-)

I znów widziałem The Internship :-)

Byłem dziś drugi raz w kinie na The Internship i nadal mi się ten film podoba :-)

Przyjrzałem się dziś komputerom i ciekawa sprawa, nawet komputery na których bohaterowie przeglądali kod aplikacji były z Chrome OS ;-)

To, że często i gęsto występują w filmie Chromebooki jest zrozumiale, ale czemu głównie, jeśli nie jedynie te z ARMem od Samsunga? ;-)

Jest parę Mac'ów, ale nie wydaje mi się by było widać ich ekrany.

No i są Nexus'y 7 :-) [jest też Galaxy Nexus w rękach jednego z bohaterów].
Tak i się te Nexusy 7 spodobały, że aż swojego N7 wyjąłem z futerału i zacząłem używać ;-)
O tak go używam :-) do słuchania podcastów :-)


A i teraz choruję na nowego Nexus 7 ;-)


Podobne postybeta
Czyżby nowy Macbook się zbliżał? ;-)
Z Nexusów do Pixeli
Przemek w krainie Stefanów ;-)
Chodzi za mną nowy Nexus 7....
Komputer na korbę ;-)

wtorek, sierpnia 06, 2013

Czemu Writer nie jest interfejsem?

No właśnie, czemu? ;-)

OK, rozumiem, że ma dużo funkcji, które są przydatne i najprościej było zrobić zeń klasę abstrakcyjną, ale mimo wszystko fajniej by było gdyby tą klasą był jakiś WriterAdapter.... chociaż wtedy byłoby wszystko bardziej skomplikowane.

A skąd moje żale? ;-)

Bo chciałem zrobić rzecz złą i wcisnąć Proxy między Writera, a to co go woła (chodziło o to by póki nikt nie zacznie pisać do Writera móc mu robić co mi się żywnie podoba, ale jak już ktoś tam zacznie pisać to nic złego nie robić) i wszystko byłoby fajne gdyby Writer był interfejsem ;-) A tak powstała mi klasa implementująca interfejsy Writera, ale jej rzutowanie na Writera nie działało bo trudno coś wywiedzionego z Object zrzutować na Writer'a ;-)

A po co to?

Bo jeden z elementów sieciowych który stoi między nami, a Internetem ma dziwne podejście do Keep-Alive, dla niego jak przez 5 minut nie ma transmisji to jakie by sobie to Keep-Alive było to on i tak połączenie zamknie ;-)


Podobne postybeta
Spisek ClassLoader'ów ;-)
Google Docs i Zoho niszczą wzory
Eksperymentalna wersja 0.5 OpenOffice.org2GoogleDocs
Code smellsy ;-) protected i abstract
"Czy uważasz, że powinien zarabiać tyle co Ty?" ;-)

poniedziałek, sierpnia 05, 2013

Moto zakład

Z Moto X, Motorola, ale i Google postawili na to, że Android i sprzęt dla niego są już na takim etapie, że nie trzeba szpanować specyfikacji.

Ciekaw jestem czy mają rację.

Wydaje mi się, że tak, ale pewności nie mam ;-)

Procki już od Tegra 2 są całkiem znośne i problemem dla takiego Nexus S (który miał nawet słabsze CPU) nie było CPU, a mały RAM.

Moto X ma 2 GB RAM, czyli pewnie domyślna sterta dla aplikacji to 192 MB tak jak w Nexus 4 i choć oczywiście nic nie stoi na przeszkodzie by to zapchać to jednak większość aplikacji się w takiej pamięci spokojnie zmieści. Przy tej wielkości sterty programowanie mobilne upodabnia się do programowania dla desktopa. Nie trzeba już zwalniać wszystkiego jak szybko się da, można trzymać dane w cache'u.

Można więc zaryzykować twierdzenie, że chociaż może i za półtora roku telefony będą miały 4 albo i 6 GB RAM to te z 2 GB RAM nie powinny jakoś szczególnie lagować. W PC 2 GB były przez blisko 7 lat optymalnym rozmiarem RAM (głównie przez to, że Windows XP w 32 bitach nie był w stanie obsłużyć więcej niż 2.9 GB ;-)).

Na tym opieram swoja wiarę w to, że Motorola i Google słusznie zakładają, że nie trzeba już szpanować specyfikacji.

Ciekawe jest też to, że w Moto X kilka rzecz, które do teraz byłyby robione software'owo i zżerałyby masę energii zdecydowano się użyć specjalnych rozwiązań sprzętowych.

To by sugerowało, że "zakład Moto" ;-) o to, że nie ma co już tak szpanować specyfikacji wynika też z tego, że w obecnej chwili problemem nie jest moc CPU, a to że CPU pracując nawet na ćwierć gwizdka zżera zbyt dużo baterii i przez to wiele potencjalnych pomysłów nie może być realizowanych bo na przeszkodzie stoi nie moc CPU, a energia. Nie ma więc co pakować kasy w mocniejsze CPU, ale lepiej ubrać w sprzęt te ficzery, które chce się zrealizować.

Jestem za ;-)


Podobne postybeta
Robimy z telefonu/tabletu z Androidem serwer WebDAV ;-)
Wybór laptopa w firmie
Spectre powinno działać nawet w Java'ie ;-)
Android + Google Docs OCR = zestaw dla szpiega? ;-)
Proste jest lepsze

niedziela, sierpnia 04, 2013

Skoro Deep Web jest potrzebny by zapewnić wolność słowa, ale jest wykorzystywany do szerzenia niecnych treści, to może rozwiązaniem jest ograniczenie technologii takiej sieci tak by tylko przekazywała tekst?

Na HackerNews trąbią o tym, że na wniosek FBI w Irlandii aresztowano kogoś związanego z Tor'em (jak rozumiem to to jest sieć w sieci) i że podobno część stron w Tor'ze jest zarażona jakimś świństwem.

Tego gościa w Irlandii aresztowano za coś związanego z publikowaniem pornografii dziecięcej, albo coś podobnego.

No bo jest tak, z jednej strony chyba rzeczywiście potrzeba sieci wewnątrz sieci w której np. chińscy dysydenci mogliby opisywać co się dzieje w kraju, tak by byli trudni do wykrycia, tak by mogły w tej "sieci w sieci" istnieć strony w stylu wikileaks (choć w pełni rozumiem amerykańskie chęci by tą stronę zamknąć). Z drugiej jest tak, że prawie na 100% bardzo szybko taka sieć zostałaby zalana materiałami pedofilskimi.
Zresztą jakbym był rządem jakiegoś kraju i chciałbym taką sieć zniszczyć to postarałbym się o to by była tam masa takich materiałów by mieć powody do walki z taką siecią (ale nie, nie uważam by rządy to robiły, nie muszą, w sieci jest masa głupich ludzi, którzy to zrobią).

Ale gdyby udało się zbudować "sieć w sieci" w oparciu tylko o tekst?

Np. zamiast przesyłać pliki binarne czy tekstowe to przesyłałoby się pliki MP3, albo skompresowane jakimś dobrym kodekiem do mowy? Gdyby wyglądało to tak, że strona byłaby "czytana" w trybie 16, później pakowałby to jakiś dobry kodek do mowy i następnie szyfrowany byłby taki plik? Wtedy można by było przesyłać tekst, w dowolnym języku, ale obrazki czy filmy byłyby praktycznie niemożliwe do przesłania z racji rozmiaru.

Po drugiej stronie plik byłby rozszyfrowywany, rozpakowywany, następnie mechanizm rozpoznawania mowy zmieniałby go w plik tekstowy i pokazywałby go. Ponieważ musiałby się ten system rozpoznawania mowy ograniczyć do 16 wzorców to nie byłoby problemu w zrobieniu systemu zdolnego do 100% rozpoznawalności (szczególnie gdyby kompresja była w pętli w której większy stopień kompresji byłby możliwy tylko w przypadku gdyby proces dekompresji i rozpoznawania nie  dawałby złych wyników).

Taki deep web umożliwiałby to do czego podobno istnieje, czyli nieskrępowane wymienianie myśli nawet w tematach niemiłych rządom, z drugiej zaś byłby odporny na niecne wykorzystanie.

Dodatkowo gdyby taka sieć była odporna na zalanie złymi materiałami to demokratyczne rządy nie miałyby zbyt dobrej prasy i PRu atakując taką sieć.

Może więc część mocy intelektualnych twórców takich sieci należałoby przerzucić na wprowadzenie takiego mechanizmu ograniczającego?


Podobne postybeta
Co lubie :-)
GZIPem w plika z pomocą ChatGPT ;-)
"Semisubiektywna" klasyfikacja dokumentów ;-)
Niezawodność
W co tu ręce włożyć?

Odsłaniać okna na noc w gorące noce, czy nie odsłaniać? Oto jest pytanie....

Jako, że jest straszliwie gorąco to chwytam się każdego pomysłu by zrobić w miejscu spania choć trochę chłodniej.
Wpadłem np. na to by odsłonić zasłony, bo jak to sobie tłumaczę, gorące powietrze z miejsca spania promieniuje cieplnie, to na dworze też, ale mniej, więc jak odsłonię okna to więcej promieniowania podczerwonego wyjdzie stąd, niż przyjdzie, przez co więcej energii sobie pójdzie precz...
Nie wiedziałem ile tego będzie.
Próbowałem zrobić całkę, która to opisze, ale się pogubiłem.

Napisałem więc program ;-)

Działa tak, że zaczyna od temperatury w pomieszczeniu, czyli 28 stopni Celsiusza i 23 na dworze. Do tego program ma pętlę od 0 do 3600 sekund, w której najpierw na podstawie temperatury w środku i na zewnątrz liczy strumień promieniowania na m2 używając prawa Stefana Boltzmana, później liczy ile energii przejdzie przez powierzchnię okien w ciągu 1 sekundy, później na podstawie objętości pomieszczenia, gęstości powietrza i ciepła właściwego powietrza liczy zmianę temperatury i używa jej do zmiany wartości temperatury w pomieszczeniu....

Wynik nie zgada się z obserwacją ;-) bo powinno ubyć 2 stopnie Celsiusza prawie, a nie ubywa ;-)
Ale rozumiem, że nie każde promieniowanie przejdzie przez szyby, do tego jeszcze ściany i inne pomieszczenia i przyjmuję, że powiedzmy ujdzie tak tylko 10% tej energii, której bym się spodziewał...
Wtedy powinna temperatura spaść o 0.4 stopnia Celsiusza w ciągu godziny. W ciągu 4 o 1.5 stopnia Celsiusza.

Rzeczywiście spadał o jakiś 1 stopień w ciągu godziny, ale z otwartym oknem i wiatrakiem, który wypycha stąd powietrze ;-) i nie wiem czy to raczej nie wynik tego zabiegu ;-)

Ale i tak będę się upierał, że odsłonięcie okien powinno pomóc obniżyć temperaturę ;-)


Podobne postybeta
Zadanie - czyżbym znalazł rozwiązanie po 10 latach od momentu gdy je zobaczyłem? ;-)
Im hotel wyższy, tym pokój większy? ;-)
Czemu małe pieski noszą ubranka, a duże psy nie?
A mnie tam jednak prosty model klimatyczny przekonuje do twierdzenia, że mamy wpływ na zmiany klimatyczne i że globalne ocieplenie może być faktem
A ci dalej o jodynie....

sobota, sierpnia 03, 2013

Do the right thing, Wait to get fired - to jednak ma sens

W tamtym roku przeczytałem to stwierdzenie pierwszy raz i go nie zrozumiałem, teraz chyba zaczynam rozumieć.
Idzie to po polsku mniej więcej tak: "pracuj najlepiej jak potrafisz i czekaj aż Cię zwolnią".

Brzmi dziwnie, ale chyba dostrzegam sens w tym zdaniu. Chodzi o to by pracować czy żyć tak jak potrafi się najlepiej i nie przejmować się tym co inni o nas myślą, albo czego oczekują. Jeśli nie spełnimy tych wymagań, a pracowaliśmy/żyliśmy najlepiej jak potrafimy to albo nie potrafimy jeszcze tak dobrze pracować/żyć jak to możliwe, albo ktoś ma nierealne wymagania. W pierwszym przypadku trzeba spróbować się nauczyć, w drugim nie warto się kopać z koniem.
Nie baw się w politykę, nie planuj zemsty, nie martw się. Po prostu staraj się, myśl, rób jak najlepiej potrafisz.

Jest w tym jakiś głębszy sens. Zamiast godzinami myśleć o niesprawiedliwości, która nas spotkała, lepiej ten czas spędzić produktywnie.

Co, jakby to co wyżej sensownie nie brzmiało, jest strasznie trudne ;-)

Dlatemu trzeba walczyć ze sobą i próbować to wdrażać w życie ;-)


Podobne postybeta
Alice... i nie tylko....
Jak ukraść kraj?
Wybory mi poprawiły humor ;-)
No i gdzie jest mój tablet? Gdzie?
Działamy

piątek, sierpnia 02, 2013

"wake me up in 20 minutes" - ja chcę Google Voice Actions po polsku....

Na jednym z filmów reklamujących Moto X jakiś zaspany pan mówi "wake me up in 20 minutes" i telefon ustawia alarm na za 20 minut....
Sprawdziłem, działa...

I chcę tego. Co prawda gadanie do telefonu, by wydać mu jakieś polecenie nie jest pierwszą rzeczą jaką bym chciał robić, ale ten jeden ficzer jest genialny i zmienia moje nastawienie.

Od czasów pracy w Motoroli czekam na seamless mobility, które w 2005 albo 2006 roku było hasłem Motoroli... i Google Voice Actions, czy ogólnie Google Now daje nadzieje na to semless mobility.

Dlatemu, Google, weźcie się postarajcie i dodajcie nam Google Voice Actions dla języka polskiego.... bo sam znam 1 osobę która z powodu GVA używa angielskiego interfejsu i sam się zaczynam nad tym zastanawiać :-)


Podobne postybeta
Majel vs. Siri
Google Actions działają już w Google Assitant nie tylko na Google Home, ale i w innych jego inkarnacjach :-)
Zwłoki na plakatach... brrr...
T-Mobile, weźcie się odczepcie...
Ej Google, ja się tak nie bawię