czwartek, października 29, 2020

[SOLVED :-)] Google kłamie ;-) co do tego jak często odświeża subskrypcję kalendarzy

Update:

Okazuje się, że jest sposób, trzeba iść na stronę https://calendar.google.com/calendar/u/0/syncselect i tam zaznaczyć takie kalendarze by się synchronizowały :-)

Jest tak, w pracy mam Outlooka, prywatnie używam Google Calendar.
Chciałbym móc "w domu"* widzieć spotkania w kalendarzu**....

No to mam wyeksportowany kalendarz firmowy z Outlooka do pliku ICS, mam ten plik zaimportowany w Google Calendar... i nic, spotkanie się nowe nie pojawiają, tylko te które były w momencie subkrypcji.

Najpierw myślałem, że to Microsoft coś popsuł, ale nie, jak sobie pobieram ten plik cURLem to widzę jak mi dochodzą nowe spotkania....

Szukałem po Internecie i Google twierdzi, że robi refresh takich kalendarzy co 8 godzin....

I nie robi, wrzuciłem sobie do sieci swój plik ICS i widzę w logach, że ostatni raz Google Calendar dotykał się go mniej więcej 25 godzin temu i od wtedy cisza...

Będę monitorował sytuację i zobaczę czy w końcu jednak odświeży ten kalendarz, czy może jednak nie ;-)



* - nawet na WFH na którym jestem (jak i wielu innych) od połowy roku w domu to wtedy jak nie pracuję.

** - głównie dlatego, że od tego pół roku szczególnie, a wcześniej też dość często masa innych ludzi wie lepiej co powinienem ze swoim czasem robić ;-)***

*** - do teraz pracując z domu nie miałem czasu żeby pójść nowe okulary kupić!!



Podobne postybeta
Wpisy z Bloggera jako eventy w Google Calendar, odsłona 3 - Aplikacja ;-)
Gupia pandamie
Agent by Agent ;-) czyli o tworzeniu agenta AI agentem AI ;-)
[Updated] Największe zagadki wszechświata - imieniny, kto ustalił, że taka Grażyna ma imieniny 1 kwietnia?
Ucieczka z Evernote - wersja 0.0.1 ;-)

piątek, października 23, 2020

Powrót laptopa :-)

Wrócił do mnie mój laptop, którego bateria mocno zgrubła ;-)

Teraz dostałem nową :-) co ciekawe, załapałem się na program Apple dzięki któremu bateria w moim laptopie została wymieniona za darmo :-)

W trakcie gdy laptop był chory używałem mojego Macbooka Air jako "głównego" komputera i był problem...

Jest jednak zauważalna różnica między:


Z Macbooka Air, a:


Z Macbooka Pro :-)

Może to przez to, że w mojej przeglądarce jest zawsze cała masa zakładek i z racji ćwiczenia zadanek mam ostatnio zawsze otwartego IntelliJ'a :-)

Ale laptop wrócił, został zdezynfekowany i działa :-)

A Macbook Air aka Maleństwo wrócił do bycia maszyną kanapowo-łóżkową :-)



Podobne postybeta
Pierwsze hack'i pamięta się najlepiej ;-)
Power ;-)
Z placu boju z Bloggeroidem ;-)
Nadal jestem zachwycony moim Macbookiem Air z M4 :-)
Pożar...

poniedziałek, października 19, 2020

Nieoczywiste oczywistości ;-) podstępny autoboxing ;-)

Java jest prostym językiem, ale dodawanie kolejnych ficzerów powoduje, że staje się coraz bardziej skomplikowana.

Jakoś tak milion lat temu w Java 5 dodano autoboxing i auto unboxing. I to bardzo ułatwia życie, tak naprawdę mało kto teraz pamięta w trakcie kodowanie, że int i Integer to dwie różne rzeczy i zwykle po prostu ludzie pamiętają, że Integer to taki "specjalny" int który można trzymać w kolekcjach.

I stąd są problemy....

Bo co się stanie w sytuacji gdy z mapy albo listy pobieramy Integer'y i porównujemy je z czymś przy pomocy ==?

To zależy czy to z czym porównujemy to int czy Integer ;-)
Jeśli int to kompilator w trakcie kompilacji zrobi nam auto unboxing naszego pobranego Integer'a.
Jeśli Integer to zależy.... gdy to jest Integer w zakresie -128..127 to zwykle powinno działać == tak jakby zadziałało equals.... przy założeniu, że oba te Integer'y zostały poprawnie "stworzone", czyli nie przez new Integer(int).
Jeśli coś wyższego niż 127, albo niższego niż -128 to raczej nie zadziała == jak equals.

Niby to wszystko to żaden problem, ale.....

Idźmy dalej, a co jak mamy takie 2 z overloadowane metody:

boolean test() {
return isEven(10);
}

boolean isEven(int x) {
return x%2==0;
}

boolean isEven(Integer x) {
return x%2==0;
}

To która zostanie zawołana gdy wykona się metoda test? ;-)

Wiadomo, że isEven(int), ale jeśli usuniemy metodę isEven(int) to kod nadal się będzie kompilował i nadal będzie działał ;-)

Tu niby problem nie jest z autoboxingiem i unboxingime chociaż trochę jest ;-) bo jak kompilator decyduje którą metodę zawołać? No szuka metody najbardziej "szczegółowej". 

Czyli tutaj w metodzie test ma 10, a 10 to int, więc wie, że ma zawołać isEven(int), ale jeśli nie będzie metody isEven(int) to popatrzy i znajdzie metodę isEven(Integer) więc dokona auto boxingu tego 10 do Integer.valueOf(10) i wrzuci je do tej metody...
Jakby nie było tej metody, ale byłaby metoda isEven(Object) to ona by została zawołana....

To niby są wszystko oczywistości, ale takie nie do końca oczywiste ;-)

A patrząc jak ludzie chętnie dodają do API nowe metody to takie problemy się po prostu muszą zdarzać ;-)





Podobne postybeta
Autoboxing/Unboxing nie lubi sie z var - nadal ;-)
Człowiek się uczy całe życie - źle rozumiałem cache'owanie Integerów :-)
Ile to jest 1+1 w Java'ie?
var bywa niebezpieczne :-)
Nie mieszaj wrapperów z prymitywami ;-)

sobota, października 17, 2020

Kiedy następny on-call?

 OK, już się skarżyłem, że mam znów on-call'a ;-)

To napisałem sobie dziś narzędzie, które pokazuje mi ile mi jeszcze zostało czasu do końca on-call'a:


A jak nie mam on-call'a to ile mam do kolejnego:


To sobie siedzi w zasobniku macOS'a i pokazuje ile jeszcze czasu ;-)

Jak kropka jest czerwona, znaczy że jesteśmy w trakcie, jak zielona to czekamy ;-)


Skąd programik wie kiedy mam on-call'a?

A bo możemy go skonfigurować wybierając Configure:


Które otworzy "przepiękne" okienko gdzie można wkleić link do kalendarza z on-call'em.

PagerDuty coś takiego ma.

Teoretycznie może to być dowolny kalendarz, ale lepiej żeby miał tylko proste event'y ;-) bo z innymi sobie mój kod nie radzi ;-)

Jak ktoś zainteresowany do zapraszam do repo ;-) [jest tam też DMG]

https://github.com/przemelek/next-on-call



Podobne postybeta
Electron + Airly = wskaźnik jakości powietrza w pasku ;-) - part 2, źródła ;-)
Ostatni on-call ;-)
On-call....
Zgubiłem dźwięk...
9 miesięcy bez on-call'a - to jest super :-)

Feature Request do OSów ;-)

 Mój główny komputer, czyli mój Macbook Pro z 2018 roku nabawił się spuchniętej baterii...

Wygląda to nie najlepiej:


Tak, to na dole/z tyłu to tył Macbooka który się wziął i wygiął, a laptop się nie da zamknąć ;p

Stąd od razu jak to zauważyłem (drań stoi sobie zawsze podpięty do monitora więc go nie oglądam za często, tym razem po prostu przestała działać mysza i klawiatura i trzeba było odłączyć hub od MBP i wtedy to zauważyłem) został zgłoszony do Apple, które wskazało mi serwis, który jest w odległości 200 metrów od mojego mieszkania ;-)

Więc teraz używam mojego Macbooka Air jako komputera, który jest podpięty do monitora.

Jest to więc też moja maszyna do kodowania ;-)

No i są problemy, bo co chwile się okazuje, że nie mam a to wget'a, a to Midnight Commandera, a to ForkLift jest inaczej skonfigurowany.

A co gorsza okazuje się, że nie wszystkie moje źródła mam na repach ;p więc teraz jak piszę sobie narzędzie do pokazywania mi kiedy mam następnego on-call'a (albo kiedy mi się skończy ;-)) nie mam skąd kopiować kodu ;p

Przydałoby się mieć coś w stylu "shared profile" które można by było dzielić między komputerami, idealnie by dało się to podzielić na installed apps, files stored on drive i profiles in apps ;-)
A i by można było mieć też na 1 komputerze kilka profili.



Podobne postybeta
Kabelkologia stosowana ;-)
Trochę się boję spróbować Arc Browser ;-)
Zły provider, albo głupi ja ;-)
Google+
Ingress i moje portale... ;-)

On-call....

Od 1:00 do 13:00 mam on-call'a, nic się niby nie powinno zdarzyć, ale już mi odbija. 

Mam słuchawki na uszach to przyniosłem sobie telefon z PagerDuty na biurko, żeby w razie czego zobaczyć jak będzie wyło i błyskało....

Coś czuję, że jak będę szedł pod prysznic to też będę brał.

Fuck..... chciałbym umieć ciut bardziej olewać.



Podobne postybeta
Ostatni on-call ;-)
Chyba zabiłem mojego Pocket PC....
Zgubiłem dźwięk...
Czemu prysznic jest bardziej eco(nomiczny) i eco(logiczny) ;-)
Kiedy następny on-call?

sobota, września 26, 2020

Człowiek się uczy całe życie - źle rozumiałem cache'owanie Integerów :-)

Tak się bawię nowym IntelliJ i jak używa się var to próbuje podpowiedzieć jaki będzie wywnioskowany typ.

Działa to różnie:


Ogólnie zasada chyba jest taka, że parser Java'y w IJ potrafi wywnioskować typ na podstawie zwracanego typu (to ma przy metodach) i czasem jak przypisanie jest z prostej deklaracji z typem.
Nie jest więc tak wszechstronny jak kompilator Java'y, ale kompilator wie więcej.

Ale ja nie o tym tutaj ;-)

Bawiąc się tym zauważyłem, że konstruktor dla Integer jest deprecated, sprawdziłem i to prawda od wersji 9.
I tak się zacząłem tym bawić i okazuje się, że przez ostatnie ~16 lat żyłem w błędnym przekonaniu....

Zawsze pamiętałem, że JVM ma optymalizację by nie przeginać z ilością Integer'ów, i że np. dla 1 jest dokładnie 1 obiekt w pamięci, a wszystkie zmienne które trzymają Integer'a o wartości 1 mają referencję do tego jednego jedynego.... i że JVM od Oracle'a ma to dla liczb od -128 do 127 (choć teraz jak to widzę to jest konfigurowane).

I zawsze tu zakładałem, że JVM ogarnia jakoś wołanie new Integer(x), czy może bardziej kompilator jak się zastanowić...

No i byłem przekonany, że:

wypisze true...

A tu "dupa", nie, wypisze false, bo new stworzy dwa całkiem nowe obiekty. Żeby cache zadziałał trzeba użyć Integer.valueOf....

Fakt, sam używam "od zawsze" Integer.valueOf(int), ale przyznam, że coś mi się porobiło w głowie jak do mnie dotarło jak błądziłem.

Choć niech mnie tłumaczy, że jak mi się zdarza pracować z Integer to właśnie przez Integer.valueOf, albo przez autoboxing, a:
Zadziała tak, że wypisze true.

Jak na to spojrzeć to to ma pełen sens, bo skąd biedna JVM ma wiedzieć, że nowo tworzony obiekt Integer wskazuje na już istniejący? Albo kompilator by musiał generować tu specjalny kod do obsługi tego dla new, albo sama JVM w momencie "zobaczenia wołania" w stylu:

musiałaby nie wołać konstruktora, ale zaglądać do cache.... i jak sprawdziłem nawet Java 8 nie robiła takich cudów :-)



Podobne postybeta
Nieoczywiste oczywistości ;-) podstępny autoboxing ;-)
Nie mieszaj wrapperów z prymitywami ;-)
Ile to jest 1+1 w Java'ie?
var bywa niebezpieczne :-)
Autoboxing/Unboxing nie lubi sie z var - nadal ;-)

środa, września 23, 2020

Magia w Java'ie ;-)

Jaki jest maksymalny rozmiar tablicy w Java'ie? ;-)

Niby wydaje się, że ma to coś z int wspólnego, ale nie będzie to pełny zakres int, bo w Java'ie int jest signed, więc Integer.MAX_VALUE wydaje się być rozsądnym kandydatem...

Ale jak wrzucimy kod w stylu:

var array = new int[Integer.MAX_VALUE];

To poleci nam:

Exception in thread "main" java.lang.OutOfMemoryError: Requested array size exceeds VM limit

nawet gdy uruchomimy JVM z odpowiednim zapasem RAM (8GB, a testowałem z 24GB dla pewności ;-)).

Podobnie:

var array = new int[Integer.MAX_VALUE-1];

wyrzuci taki sam wyjątek.

Ale już:

var array = new int[Integer.MAX_VALUE-2];

zadziała :-)

Przyznam, że próbowałem kiedyś dotrzeć w źródłach JVM do miejsca gdzie to jest zakodowane, a dokładniej gdzie widać skąd to magiczne 2.... ale sam limit chyba znalazłem, ale nie pamiętam powodu.

No chyba, że po prostu te 8 bajtów jest na długość albo opis obiektu? 

Chyba mam coś do poszukania :-)



Podobne postybeta
Android - nawet platofrma potrafi przeciwko Tobie knuć ;-)
Distinct (albo unique) w JavaScript
2016 będzie rokiem "nietypowym"
Distinct w JavaScript #2
Nie mieszaj wrapperów z prymitywami ;-)

Zabawy z Zoomem - ikonki ;-)

 Możliwe, że jestem dziwny, ale gdy biorę udział w jakimś spotkaniu przez Zooma (które mi zabierają zwykle ponad 50-60% czasu pracy w ciągu dnia....) i ktoś dzieli się swoim ekranem to ślepie w poszukiwaniu ikonek aplikacji których nie znam ;-)

Albo w pasku, albo w Docku, choć dość dużo osób podobnie jak ja ukrywa Docka (ale fakt, większość nadal ma Docka na dole, a nie po lewej ;-)).

Co dziwne to choć patrzę i szukam to nie znalazłem jeszcze w taki sposób żadnej ciekawej apki.... ale mam ciągle nadzieję ;-)






Podobne postybeta
Bliskie spotkanie jeleniego stopnia ;-)
Ciekaw jak Zoomowe interview wpływają na to kogo się rekrutuje ;-)
Jowisz na zdjęciu :-)
Motorola Mileston 2 fajna jest ;-)
Uber - jaka za tym musi stać fajna matematyka

wtorek, września 15, 2020

API ssie w świecie walled gardens

Przez ostatnie kilkanaście lat napisałem (prywatnie} trochę softu, który ułatwiał mnie i innym życie.
Napisałem w tym czasie:
Gadacza - wtyczkę do PowerGG która czytała przez syntezator mowy to co ktoś do nas pisał (a jak chcieliśmy to też co my pisaliśmy do kogoś) na Gadu-Gadu,
OOo2GD, czyli OpenOffice.org2GoogleDocs - które było wtyczką do OpenOffice pozwalająca na wysyłanie i pobieranie dokumentów do i z Google Docs (oraz Zoho I serwerów WebDAV),
Bloggeroid - apka do Androida, która pozwalała na podanie postów na blogu prowadzonym na Bloggerze i umieszczenie w nich obrazków które były wysyłane do Picassa,
Chrome2Chrome - wtyczka do Chrome, która pozwalała przesyłać strony między różnymi instytucjami przeglądarki.

Było też parę innych, ale te były dość popularne i co ważne wszystkie robiły za klej miedzy różnymi aplikacjami. I gadały z różnego rodzaju API...
No i jak właściciele usług z których korzystałem zmieniali swoje modele biznesowe to i moje projekty przestawały działać albo były ograniczane w swym działaniu.

To pokazuje, że nie do końca warto podpinać się pod istniejące cudze usługi.
Bo ten ktoś może nam zrobić numer i po prostu usługę wyłączyć, albo ograniczyć.
Do tego wydaje się, że cały biznes idzie w kierunku walled gardens.
Kiedyś gdy Android zaczął być popularny i spopularyzował idee intentów pojawił się pomysł na WebIntents. Strony www mogłyby emitować lub rejestrować się na odbieranie różnych intentów przez co komunikacja między nimi byłaby prostsza. Łącznikiem miała być przeglądarka.
Specyfikacja się zaczęła pisać, Google było jednym ze sponsorów... I dość szybko projekt upadł bo za bardzo by to wszystko było interoperacyjne.
Jeszcze nie daj boże ktoś by używał strony A do tworzenia intentów obsługiwanych przez stronę B... I jaki interes w tym miałby ktoś ze strony A?

To samo w sieciach społecznościowych, na początku wszyscy poza Google Plus mieli otwarte API do prostowania i pobierania postów, były więc repostery. Publikowało się na jednej sieci, a inne dostawały kopię...
Też już tego nie ma.

Apple wprowadza Apple Silica i plotka głosi że na tych nowych Macach będzie można mieć tylko apki z AppStore....

W serwisach streamingowych też mamy wszystko osobno.
Już nawet plotki są, że podcasty zaczną być zamykane....
Niefajnie to.

posted from Bloggeroid



Podobne postybeta
Dostaję coraz więcej screenshotów
Disconnect, Facebook, PayPal i wykop, czyli 1 plus i 3 minusy ;-)
Spróbowałem Wintela w wersji od Dell'a i to jednak nie jest mój styl
Kto mi podmienia certyfikat do GMAILa? ;-) A bardziej - jak? ;-)
Web 2.0, czyżby opowieść o tym jak oddaliśmy Internet idiotom?