sobota, czerwca 22, 2019

Java 8 + lambdy = wolno ;-)

Używamy w pracy Codility to testowania kandydatów, używamy go też czasem w ramach konkursów na różnych konferencjach.
I okazuje się, że Codility niechcący kara ludzi, którzy znają nowszą Java'ę ;-)

Jeśli ktoś operuje na kolekcji przy pomocy pętli to może dostać ocenioną złożoność O(n), jeśli użyje strumieni i lambd to może dostać ocenioną złożoność O(n*log(n)).

A wszystko przez to, że w Java 8 lambdy nie są najszybsze.

Widać to świetnie gdy używa się computeIfAbsent, zamiast getOrDefault w mapach.
Bo kod z computeIfAbsent wykonuje się zwykle wolniej, mimo tego, że getOrDefault tworzy nowy obiekt za każdym razem gdy jest wołane.

A wszystko przez to, że lambda musi być najpierw zbudowana ;-) i po to kompilator dodaje wywołanie metody LambdaMetafactory.metafactory, które jest wołane przy pomocy invokedynamic.

A w Java 8 wywołanie tego trwa wieki....
Coś co wykonuje się w mniej niż 10 ms, może się wykonywać nawet 80 ms.

Na szczęście w Java 11 wydaje się, że wszystko jest szybsze i nie widać znaczącej różnicy w wykonaniu kodu z lambdami i bez.


Podobne postybeta
Zaczynam woleć Map nad Map ;-)
Sztuczki tropiciela błędów - breakpoint na sterydach ;-)
No i z lambdy nici
Wyniki do Sejmu na podstawie wyników do PE
Java 32 bit vs. Java 64 bit

czwartek, czerwca 13, 2019

Upał promuje mniejszych?

Kiedyś tłumaczyłem tutaj czemu małe pieski noszą w zimę ubranka.

Przypomniało mi się to i tak się zacząłem zastanawiać czy rozmiary mają wpływ na radzenie sobie z upałem....

Przyjmijmy, że mamy dwie osoby, jedną o wzroście 184 cm, drugą 161 cm.
Przyjmijmy, że mają obie te osoby BMI równe 22.5.

Czyli pierwsza waży 76.2 kg, druga 58.3 kg.

Dla ułatwienia przyjmijmy, że każda z tych osób ma gęstość 985 kg/m3.

I zamodelujmy obie osoby jako cylindry ;-)

Pierwsza osoba ma promień 11.6 cm, druga 10.8 cm.

Obie mają temperaturę 36.6 stopni C.

Powierzchnia 1 osoby to 1.43 m2, drugiej to 1.16 m2. To daje strumień całkowity mocy z pierwszej osoby 61.4 W, a z drugiej 50.2 W (strumień wychodzący-strumień wchodzący, w końcu powietrze ma 30 stopni C).

Teraz policzmy ile, gdyby nie utrzymywały temperatury, ile by im ubywało... przyjmiemy ciepło właściwe dla człowieka równe 3.49 kJ/(kg*K).

Mamy w końcu, że w ciągu sekundy mniejsza osoba straciłaby o 1.6 stotysięcznej stopnia więcej od osoby większej.

Znaczy to, że małym lepiej w upale, szybciej się chłodzą.


Podobne postybeta
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
Kupić bilet czy nie kupić? Oto jest pytanie....
I tak żle i tak niedobrze
Pokrowiec - zdeużytecznik ;-)

wtorek, maja 28, 2019

Wyniki do Sejmu na podstawie wyników do PE

To mieliśmy wybory do Parlamentu Europejskiego.
Wynik mi się nie podoba, ale cóż.

Co gorsza, jakby przełożyć wyniki z wyborów do PE na wybory do Sejmu... to Sejm wyglądałby mniej więcej tak:

PiS 253 mandaty
Koalicja Europejska 198 mandatów
Wiosna 9 mandatów

To wyżej obliczone przy założeniu, że ludzie w wyborach do Sejmu głosowaliby identycznie jak w wyborach do PE, że głosy rozłożyłyby się dokładnie tak samo po obwodach (dokładniej po gminach/terytach).

Czyli najpierw znając liczbę głosów w każdym terycie, liczymy liczbę głosów danym okręgu, a później szukamy w skali kraju "biorących" i rozdzielamy mandaty wg metody D’Hondta.

Niefajnie. PiS zbliża się niebezpiecznie do większości konstytucyjnej (chociaż na razie im brakuje).


Podobne postybeta
A co gdyby głosy z wyborów samorządowych potraktować jako głosy w wyborach do Sejmu? ;-)
Ważne kto i jak liczy głosy....
Jak można przegrać wybory gdy się je wygrywa?
Programowanie trudne ;-)
Rycerz na białym koniu? ;-)

niedziela, maja 05, 2019

Znaczek Vege

Wróciłem z Wenecji, fajnie było. Ogólnie lubię Wenecję.

Ale tam znów był problem, który mam od czasu gdy nabawiłem się wegetarianizmu*.

Jak mam filtrować menu w poszukiwaniu czegoś co jest vege to mi się odechciewa i idę dalej ;-)
Stąd wydaje mi się, że fajnie by było gdyby wprowadzić sugestię oznaczania w odpowiedni sposób dań wegetariańskich (i wegańskich).

Chociaż z drugiej strony, ja nie jestem foodie, w życiu nie spędziłbym więcej niż 30 sekund na przeglądaniu menu. Może więc są jakieś subtelne znaki, których po prostu nie widzę ;-)
Dla mnie najprościej by było gdyby był listek przy nazwie, a jeszcze lepiej jakby było na zielonym tle i większymi literami ;-)


* - tak koło roku 100%, wcześniej przez jakieś pół roku 95% ;-)


Podobne postybeta
Słaba pamięć, słaba
Przyroda...
Testowanie złe...
Poszlaki o GDrive... Jak ludzie je znajdują????
Jakiś coś do szybkiego tworzenia małych apek dla Androida by się przydał...

sobota, kwietnia 27, 2019

Jak zakitrać tabki ;-) - czyli o tym jak rozszerzeniem do Chrome można walczyć z makabryczną ilością tabek w przeglądarce ;-)

Czas przyznać, jestem hoarderem (aka rupieciarzem/zbieraczem) jeśli chodzi o tabki w przeglądarce.
50-60 tabek? To dla mnie nie problem, raczej norma.

To jest tak, że coś robię, otwieram tabkę, bo to akurat ciekawy link z HackerNews, albo po prostu czegoś szukałem i tam trafiłem, po czy otwieram kolejny i kolejny i kolejny...
Jak kończę z jakąś sprawą to po prostu zamykam tabkę, ale z czasem między przypiętymi tabkami, a tą aktualną mam całą masę takich, które niby mnie teraz nie interesują, ale mogą się przydać....

Raz na jakiś czas zbieram się i zamykam niektóre, ale robię to z bólem.

Dlatego stworzyłem sobie wczoraj wtyczkę do Chrome, która ma mi pomóc ;-)

Działa tak, że po pierwsze wyświetla liczbę aktualnie otwartych tabek:
Ale po jej kliknięciu pokazuje się lista otwartych tabek:


Które są posortowane wg tego jaki procent czasu dana tabka była aktywna.
Na górze są tabki które, były aktywne przez większość swojego życia*, na dole te które były najmniej aktywne.

Teraz patrząc na listę tabek mogę taką tabkę zamknąć albo zakitrać ;-)

Co oznacza zakitranie tabki?

Po pierwsze trafia na drugą listę:


Z której to listy można tabkę otworzyć, wtedy zniknie z listy zakitranych.
Po drugie, link trafia do zakładek Other Bookmarks -> Stashed links.


Dzięki temu, nawet jeśli zamknę taką tabkę, to zawsze mam ją jeszcze wśród zakitranych linków w zakładakach ;-)

Uznałem, że lepiej będzie gdy lista w rozszerzeniu będzie "lokalna", czyli linki są tylko dostępne w samym rozszerzeniu na danym komputerze w aktualnym profilu Chrome.
Zakładki są globalne, więc wszystkie Chrome'y z danym profilem je widzą.

Jeszcze nie do końca zdecydowałem czy wrzucić rozszerzenie do Chrome Web Store ;-) bo pewnie nikt poza mną go i tak nie będzie używał ;-) ale liczę, że pomoże mi zapanować nad moimi tabkami :-)

TabsStash na GitHub'ie




* - w danej sesji.


Podobne postybeta
Złe architekty ;-)
Chyba wybiorę OS X
Sposób na upierdliwych użyszkodników
Wolne komputery nie pozwalają się skupić....
Gadające Gadu-Gadu

sobota, kwietnia 06, 2019

Electron + Airly = wskaźnik jakości powietrza w pasku ;-) - part 2, źródła ;-)

Jakiś czas temu pisałem o tym, że zrobiłem sobie narzędzie, które pokazuje mi aktualny indeks jakości powietrza (od Airly) w pasku :-)
Wygląda to tak:




Ale dziś udało mi się już zapewnić bym mógł je pakować do DMG i by działało tak jak chcę ;-)
Wrzuciłem też na GitHuba :-)

Testowałem jak na razie tylko na macOS, jeden kawałek może nie działać na innych systemach, ukrywanie w Doca, bo to jest podobno tylko w macOS.

Przy pierwszym uruchomieniu aplikacja stwierdza, że nie ma lokalizacji (długości i szerokości geograficznej), dlatego otworzy przeglądarkę pod adresem https://rmk-hrd.appspot.com/file/geoHelper.html, która to strona poprosi o zgodę na pobranie geolokalizacji, jeśli ją otrzyma to przekieruje do lokalnego serwera, który otwiera apka tak by sobie przekazać Twoją lokalizację.
Serwerek stoi na porcie 8000 i jest uruchamiany tylko gdy potrzeba pobrać dane o lokalizacji, czyli przy pierwszym uruchomieniu i jeśli user wybierze "Update location data".

Jeśli ktoś to chce uruchomić to będzie potrzebować też apikey od Airly, który można dostać tutaj https://developer.airly.eu/.
Niestety klucz starcza tylko na 1000 requestów dziennie :( więc nie dzielę się nawet apką w postaci zdolnej do instalacji bo nie chcę by ktoś używał mojego apikey ;-)

Po pobraniu repa, trzeba zainstalować sobie Electrona, co robimy wywołując komendę (w katalogu gdzie jest klon repo):

npm install --save-dev electron

póżniej:

npm start

i aplikacja powinna działać :-)

Jeśli chcemy spakować ją do postaci wykonywalnej to:

electron-packager . --overwrite --platform=darwin --arch=x64 --prune=true --out=release-builds --icon=air.icns

I jeśli chcemy zrobić z tego DMG dla macOS to:

electron-installer-dmg --overwrite ./release-builds/AirQualityInfo-darwin-x64/AirQualityInfo.app/ AirQualityInfo

Oczywiście trzeba w razie potrzeby zainstalować electron-packager i electron-installer-dmg, to pierwsze robimy przez:

npm install electron-packager -g

To drugie przez:

npm i electron-installer-dmg -g


Podobne postybeta
Electron + Airly = wskaźnik jakości powietrza w pasku ;-)
Airly + Python + Oczyszczacz Powietrza = lepsze oddychanie ;-)
Rant po toolach w stylu Mavane, Gradle, Bowera i całej tej hałastry
PayPal - rozczarowuje
Moja własna akcja w Google Home ;-)

piątek, kwietnia 05, 2019

Moja możliwa zemsta za zamknięcie Google+ ;-)

4 rzeczy, zamknięcie Google+ i Inboxa, podcast Sama Harrisa z Roger'em McNamee, i podcast Tima Ferrissa z Neilem Geimanem.

Zamknięcie Google+ i Inboxa sprawiło, że ja, fanboy Google zacząłem inaczej na Google patrzeć.
To jest firma jak wszystkie inne i przez dość istotne staje się pytanie jest jak jej płacę i czy powinienem płacić w taki sposób.
Z podcastu Sama Harrisa jest to, że Facebook i Google naprawdę napędzają się wiedzą o nas userach i robią rzeczy, których nie muszą, ale ponieważ dzięki temu będzie ciut więcej dolarów to jednak to robią.
Z podcastu Tima Ferrissa słowa Neila Geimana o tym, że żeby pisać ma jedno miejsce gdzie sam uznał, że wolno mu albo pisać, albo nic nie robić, ale nic poza tym. Czyli jak jest w tym miejscu to nie wolno mu czytać, przeglądać internetu, nic, poza pisaniem, albo nic nie robieniem.

I tak się zacząłem zastanawiać.

A gdyby tak podzielić swój ruch w Internecie na kilka przeglądarek?

Narzędzia od Google jak GMAIL, Kalendarz, YouTube i podobne w Chrome z zalogowanym userem.

Facebook/Twitter w Safari.

Internet, bez logowania do Google w Firefoksie.

Chociaż te dwie ostatnie można odwrócić, bo Safari mocno przestrzega wysyłania do not track, do tego robić co jakiś czas czyszczenie ciasteczek.

Do tego np. Opera do pracy.

I tak, w pracy wszystko poza Operą zamknięte.

Mamy kilka aspektów weba rozdzielone pomiędzy różne miejsca, jak pracujemy to nie wejdziemy na FB w tej przeglądarce, bo ona nie zna hasła.

Do tego ani Google, ani FB, ani Twitter nie są w stanie zbudować zbyt dobrego profilu naszej osoby bo widzą co najwyżej pewne aspekty, a że w przeglądarce "do Internetu" czyścimy co jakiś czas ciasteczka to ten obraz będzie dość płytki, a że w przeglądarce "do Internetu" nie jesteśmy nigdy zalogowani to trudno to będzie połączyć z osobą, więc skanowanie maili czy wiadomości na FB nie powinno pomóc jakoś bardzo.

Nie przemyślałem jeszcze całej mechaniki i nie wiem czy to będę robił, ale kiedyś miałem podobny układ i działał.
Do narzędzi Google używałem nowej wtedy przeglądarki, czyli Chrome'a, a do Internetu Firefoksa.
Może czas wrócić do takiego układu?


Podobne postybeta
.NET jest dziwny
Książkowo
Przewidujemy wyniki wyborów ;-) - wyniki
Moje "odkrycia" 2014 roku :-)
A może by tak odstawić newsy?

niedziela, marca 31, 2019

Rant śmietnikowy ;-)

Od jutra w Krakowie trzeba mieć 6 koszy na śmieci....
Oficjalnie wystarczy 5, ale 6 na odpady zielone, jak liście i gałęzie też się może przydać.

Dzięki temu gdy będziemy coś wyrzucać to zawsze będziemy mieli łamigłówkę.

Ogryzek ląduje w brązowym bo to resztka jedzenia, ale np. kości z kurczaka już w szarym na odpady zmieszane.
Rolka papierowych ręcznika do niebieskiego, ale już sam papierowy ręcznik do szarego na odpady zmieszane.

A co z torebką po herbacie?
Niby zmieszane bo resztki jedzenia, ale przecież na końcu nitki jest kawałek tektury, który jest suchy, czyli niebieski, ale znów może jest lakierowany, wtedy jednak szary, ale jest jeszcze tam kawałek metalu czasem, to wtedy ten kawałek metalu do żółtego....

U części ludzi ten mentalny overload zrobi, że po prostu będą starali się nie śmiecić, u innych tyle, że wszystko będzie lądowało w szarym...

A, i kubły mają być w odpowiednim kolorze, chociaż zapis o tym, że do 30 czerwca 2022 można używać na odpady zmieszane dowolny kolor kubła brzmi bardzo optymistycznie, bo wynika z niego, że twórcy tego przepisu zakładają optymistycznie, że w 2022 jeszcze będziemy dzielili śmieci na te 5/6 koszy, a nie np. na 12 ;-)


Podobne postybeta
Chcę ultrabooka!
Hack Day i zapomniana buła
Szycie....
Rant po toolach w stylu Mavane, Gradle, Bowera i całej tej hałastry
Złapałem lenia....

piątek, marca 29, 2019

Samung Galaxy Watch - pierwsze wrażenia marne.....

Moja moto 360v2 niedomaga i uznałem, że czas zmienić zegarek.
Wybór padł w końcu na Samsung Galaxy Watch...

Wygląda to to tak (to ten po prawej, ten po lewej to moto 360v2)


No i jestem nie do końca zadowolony ze zmiany.

Wygląda gorzej niż moto 360v2, ma mniejszy telewizor, Tizen jest o wiele bardziej zamotany niż Wear OS, do tego Samsung uważa, że "umi w programowanie" więc stworzyli całą masę programów które musiałem zainstalować wraz z zegarkiem.....

Na razie czekam na Pixel Watcha i coraz częściej spoglądam w kierunku iPhone + Apple Watch.....


Podobne postybeta
E! Gdzie jest mój następny smartwatch?
Tagi NFC w ubraniu..
Android Wear.... jaki zegarek po Moto 360 v2?
Piszę sobie...
Moto 360 i Android Wear po paru godzinach używania....

środa, marca 27, 2019

Laptop - not disturb mode ;-)

Będąc w Stanach w pracy używałem zawsze tylko laptopa, bez monitora zewnętrznego, klawiatury zewnętrznej czy myszy.
I byłem bardzo produktywny.


Po powrocie tak w domu jak w pracy wróciłem do zewnętrznego monitora, zewnętrznej klawiatury i takiejż myszy i szczerze, wydajność mi spadła.

I tak się zastanawiam czy sam ekran laptopa, bez dodatków nie stał się dla mnie takim swoistym "not disturb mode" ;-)

Teraz gdy w pracy dostałem nowego laptopa to mam z powodu którejś przejściówki problem i mysza dostaje mi czkawki, wszystko ładnie jedzie i tak na 0.2-0.5 sekundy się zatrzymuje i jedzie dalej. Może nawet bliżej 0.05-0.1 sekundy.
Stąd przełączyłem się dziś na używanie w pracy tylko laptopa i zobaczymy czy to wpłynie na moją wydajność ;-)
A jeśli tak to jak ;-)


Podobne postybeta
Hackowanie dysku ;-)
Klasa statyczna - ki diabeł?;-)
Motorola Rulez, czyli Motorola Atrix 4G rządzi :-)
Google vs terroryści
Dziwna konkurencja