poniedziałek, stycznia 31, 2022

Sztuczki tropiciela błędów - breakpoint na sterydach 2 ;-)

Prawie 5 lat temu pisałem tutaj o tym jak można sobie skonstruować warunek dla breakpointa tak by działał tylko przy tym jak nasz kod jest wywoływany z jakiejś metody (gdzieś w stack trace), albo z jakiejś klasy.

Dziś to samo wymyśliłem ponownie ;-) ale jak te 5 lat temu nie działały tu lambdy to teraz działają ;-)

O takie w warunku breakpointa:

!(java.util.Arrays.stream(new Throwable().fillInStackTrace().getStackTrace())
.anyMatch(x -> x.toString().contains("Amazon")))

Sprawi, że breakpoint wywoła się tylko gdy na stack trace nie było żadnej klasy czy metody ze słowem Amazon w nazwie ;-)

Niby nic, a cieszy :-)




Podobne postybeta
Sztuczki tropiciela błędów - breakpoint na sterydach ;-)
OpenOffice.org2GoogleDocs 1.0.4
Sztuczki tropiciela błędów, part 2 ;-)
Sztuczki tropiciela błędów ;-)
Sztuczek Java'owy

wtorek, stycznia 25, 2022

Pixel 6 po ~2 miesiącach.... prawie nieodróżnialny od Pixela 4 XL ;-)

Mam od jakiegoś czasu Pixela 6 i nie narzekam, ale im dalej w las tym jakoś mniej się dla mnie różni od Pixel 4 XL.

Odczuwalne różnice to:

  • 128 GB robi różnicę względem 64 GB,
  • bardziej śliski jest,
  • cięższy jest,
  • Pixel 4 XL "otwierał się" kiedy zobaczył moją twarz, więc w wielu momentach gdy po prostu nań spoglądałem, znów w Pixel 6 jest ten "w ekranie" czytnik linii papilarnych i czasem wcześniej każe wpisać PIN, Pixel 4 XL wtedy widział moją gębę i uznawał, że OK, to możemy dalej, tutaj muszę się "cofnąć" gestem,
  • łatwiej w czasach bycia zamaskowanym ;-) w razie potrzeby odcisnąć się palce, niż wystawiać gębę z maski i mu się pokazywać.
Ale jak na 2 lata różnicy to szczerze jakoś tak to wszystko bardzo mało się różni. I dobre rzeczy są jakby przez te gorsze równoważone.
Niby jest lepszy aparat, bo w końcu pierwszy raz od 5 lat zmienili sensor i optykę, ale jakoś nie widzę tego w zdjęciach.

Lekki zawód czuję ;-) z racji tego, że Pixel 6 jest taki zwyczajny i taki jak Pixel 4. 

Teraz pytanie czy kupię Pixel'a 7, czy raczej iPhone'a 14, czy może zostanę na Pixel 6, albo przejdę na Pixel 6 Pro?

iPhone mnie kusi tym, że ma Shortcuts i możliwość wejścia w Apple Watch'a....



Podobne postybeta
Pixel 4 XL czy iPhone 11 Pro
Zakryj gębę....
No i mam Pixel 6 ;-)
Telefon lepszym aparatem niż prawdziwy aparat ;-)
Upgrade z iPhone 15 Pro Max na 17 Pro Max po tygodniu - ogólnie, nie widzę różnicy ;-)

niedziela, stycznia 23, 2022

COVIDowe Pentium Pro ;-)

Tak właśnie policzyłem i jutro minie 686 dni od dnia kiedy poszliśmy na jakiś czas pracować z domu bo po co ryzykować....

Jaki to ma związek z Pentium Pro? ;-) Bo Pentium Pro to Intel 686 ;-) [dokładniej 80686] ;-)

W skrócie, nie podoba mi się ten allegrowicz ;-)

Patrząc na to inaczej, przeciętnie mamy na tym świecie koło 4000 tygodni.

W ramach dystansu społecznego spędziliśmy już 98 tygodni, za chwilę będzie to 100 tygodni... czyli 2.5% "szacowanego czasu życia". 

Dla mnie to stanowi ponad 10% mojego dotychczasowego "życia zawodowego".



Podobne postybeta
Celeron M353 900MHz vs. Intel Atom 1.6GHz, czyli o tym czemu jest remis? ;-)
Filmy
ETA - liczymy szacowany czas zakończenia [przybycia ;-)]
Rok temu zmieniłem pracę - podsumowanie
BuffyPedia... wzięła i zniknęła ;-)

poniedziałek, stycznia 10, 2022

Jak ogarnąć ładowanie kilku iPadów i Macbooków, tak by nie były non-stop na ładowarce, ale by zawsze w nich było na tyle prądu by się ich choć trochę dało poużywać? ;-)

W końcu użyłem do czegoś Shortcuts ;-)

Mam w domu 2 iPady (Aira i Pro), do tego Macbooka Pro i Macbooka Air (do tego jeszcze parę telefonów z Androidem i tablet z Androidem...).

Macbook Pro jest cały czas włączony, ale cała reszta sobie leży i czasem ich używam. Oczywiście dość często jest tak, że akurat jak sięgam po iPada to ma tylko 15% baterii ;-) albo i mniej. 

Stąd od jakiegoś czasu myślałem nad tym jakby sobie w jednym miejscu zbierać stany baterii ;-)

I w przypadku sprzętów Apple znalazłem sposób ;-)

Skorzystałem z Shortucts :-)

Na iPadach mam takie coś:



Działa to tak, że jeśli poziom baterii spadnie poniżej 20% to w Todoist tworzy mi się task z informacją, że muszę danego iPada naładować ;-)

W przypadku MBA też użyłem Shortucts, ale że na macOS nie ma możliwości automatyzacji takiej, że shortcut uruchamia się przy zadanym zdarzeniu, to zrobiłem takie coś:


Nazwałem to Battery i do crontaba dodałem linijkę:

@hourly shortcuts run Battery

Dzięki temu przeciętnie raz na godzinę MBA uruchamia tego shortcuta i jeśli poziom baterii jest niższy niż 20% to tworzy mi się Reminder :-)

Niestety do teraz na żadnym z laptopów nie udało mi się dać dostępu Shortcuts do Todoista ;-)

Tzn dodaję sobie akcję z Todoista i mam tak:


Klikam na Allow Access i apka się ładnie pyta:


(przechodziłem to też z Safari)

Klikam na Continue i mam śliczną stronę od Todoista:


Klikam Agree i nic ;-) o takie:

Ale i tak z radością dziś dostrzegłem pierwszy raz Reminder z informacją, że mam załadować Macbooka Air :-)





Podobne postybeta
Potok świadomości - Machine Learning może tagować posty ;-), iPhone ssie, fajne książki, spać.....
Rube Goldberg machine do reminderów ;-)
W Androidzie przydałyby się nagrywalne intenty :-)
Żenienie Todoist z Obsidian przy pomocy Pythona ;-)
Alfred + Todoist i wysyłanie tasków do projektu, a nie tylko do Inbox'a ;-)

Łatwiej kupić AirPods Pro jako komplet niż jedną słuchawkę...

Tak się złożyło, że moja własna rodzicielka zgubiła jedną ze swoich słuchawek AirPods Pro.
I co jest wkurzające można kupić nową w miejsce zgubionej, ale z tego co widzę jedyną procedurą jest pójść do serwisu i tam zamówić...
Stąd aż mnie kusi by po prostu kupić jej nowe AirPods Pro....
Ciekawe czy taki jest powód tego, że trudniej kupić jedną ;-)

posted from Bloggeroid



Podobne postybeta
"Źródło Wszelkiego Zła?"
AirPods Pro rządzą
Jakie słuchawki z tłumieniem szumów wybrać?
AirPods Pro nie lubią się z hulajnogami ;-)
Cywlizacja? ;-)

piątek, stycznia 07, 2022

Czemu po szczepieniu miejsce gdzie nas szczepiono może boleć?

Nie wiem jak Wy, ale ja jestem po 3 Fauci ouchi* aka 3 dziabie ;-) albo jeszcze inaczej po 3 dawce szczepienia przeciw COVID-19.

No i chociaż to było 2 dni temu to jak dotknę ramienia to czuję ból (nie duży, ale jednak). Czemu?

Bo to jest potrzebne ;-) tzn. może nie tak ;-)
Ale w dużym uproszczeniu szczepionka dostarcza przykładów jak wygląda coś "złego" co układ odpornościowy powinien tępić.

To coś może dotrzeć w różnych postaciach, a to jako fragmenty wirusa (zabitego i pociętego), albo osłabiona wersja wirusa, albo jak w przypadku nowych seksownych szczepionek mRNA ;-) jako instrukcja dla komórek jak robić "kolce" COVID-19.

Ale sama obecność "przykładów" to nie jest wszystko. Bo jak to jest coś nowego to skąd układ odpornościowy ma wiedzieć, że to jest coś złego?

Po to w szczepionce bywa coś co wywołuje stan zapalny, wtedy komórki szaleją i wydzielają cytokiny które dla komórek dendrycznych znaczą, że coś się źle dzieje i, że trzeba zbierać próbki tego co w danym kawałku organizmu lata i jak się już uzbiera to trzeba to zanieść do najbliższych węzłów chłonnych gdzie próbki tego co się napatoczyło w okolicy ze stanem zapalnym są prezentowane limfocytom T.

I właśnie to "ała" to zwykle stan zapalny, który jest sygnałem dla układu odpornościowego, że coś jest nieteges i trzeba się przyjrzeć :-)

To oczywiście uproszczenie, uproszczenia :-) ale i tak dobrze wiedzieć :-)

Więcej w Immune: A Journey into the Mysterious System That Keeps You Alive :-) [i nie, nie kupujcie wersji Kindle, papierową się da czytać, a ta Kindle'owa nie działa np. na iPadach ;-)]


* - bardzo mi się podoba nazwa używana w USA czyli Fauci ouchi ;-) czyli "ała Fauciego" ;-)



Podobne postybeta
Państwo wybiórczo opiekuńcze ;-)
Fauci ouchie - mam i ja ;-)
Dobrze, że Tusk wygrał
Jak ogarnąć ładowanie kilku iPadów i Macbooków, tak by nie były non-stop na ładowarce, ale by zawsze w nich było na tyle prądu by się ich choć trochę dało poużywać? ;-)
Jest coraz gorzej i będzie jeszcze gorzej  Wasza nadzieja - ona znikąd pochodzi 

środa, grudnia 15, 2021

Log4J2 i zasada ograniczonego zaufania ;-)

W zeszły piątek wybuchła sprawa z Log4J2 i podatnością w nim*.
Chwilę po tym jak się pojawiły informacje, ktoś już wrzucił u nas na Slacka.
Zacząłem sprawdzać czy mamy podatność i okazało się, że tak, mamy.
Ale moje sprawdzanie nie polegało na sprawdzeniu tylko wersji biblioteki (wtedy 2.14, czyli najnowszej do "przed chwilą"), ale na wywołaniu podatności.
No to trzeba mitygować. Pierwsza nadzieja, tylko na pewnych JVMkach to się zdarza... ale kontrola i sorry, Corretto w tej wersji która niby ma być bezpieczna ma problem.
No to updatowanie biblioteki do 2.15.... i też nie pomaga.
Kolega wtedy wrzucił, że gdzieś podają jeszcze dodanie do parametrów JVM:

-Dlog4j2.formatMsgNoLookups=true

I to pomogło :-)
Więc od razu się podzieliłem z resztą, że sam update do 2.15 nie wystarczy, odpowiednia JVM nie wystarczy, trzeba jeszcze użyć -Dlog4j2.formatMsgNoLookups=true.

No i tak w ciągu 3, może 4h od ogłoszenia problemu już mieliśmy hotfixy :-)

Wniosek z tego taki, że trzeba ufać, ale sprawdzać ;-)

Inna sprawa, że gdyby kilka miesięcy wcześniej nie to, że chciałem mieć contextMap zamiast MDC to bym był nadal na logbacku i nie byłoby wcale problemu :-)


* - ktoś uznał, że fajnie by było jakby Log4J2 w razie potrzeby używał JNDI bo to by się mogło przydać, dostarczył kod i to zmergowano i nikt nigdy nie pomyślał, że może biblioteka do logowania nie powinna pewnych rzeczy robić ;-)



Podobne postybeta
Język ma znaczenie w kontaktach z ChatGPT
Surowe dane genetyczne i niebezpieczeństwa ich udostępniania
Szukanie czemu mi nie działa program na Java 17, a czemu działa na Java 8 ;-)
W końcu dane z M1, które w Java'ie mówią, że to jest ARM :-)
No i po wyborach... ehhh.... ale moja cisza wyborcza działa ;-)

czwartek, grudnia 02, 2021

Czy to jeszcze dynamic programming? ;-)

Takie coś przed chwilą popełniłem w ramach ćwiczenia dynamic programming ;-)

public static final int TYPE = 0;
public static final int PASTE = 1;
public static final int COPY = 2;
public static final int SELECT = 3;
Function<Integer,Integer> ADD_1 = k -> k+1;
Function<Integer,Integer> ADD_0 = k -> k+0;
Function<Integer,Integer> MUL_2 = k -> k*2;

private Function<Integer,Integer> max(Function<Integer,Integer> a, Function<Integer, Integer> b) {
if (a.apply(Integer.valueOf(2))>b.apply(Integer.valueOf(2))) return a;
return b;
}

public int howMany(int keystrokes) {
var dp = new Function[keystrokes][4];
dp[keystrokes-1][TYPE]=ADD_1;
dp[keystrokes-1][PASTE]=MUL_2;
dp[keystrokes-1][COPY]=ADD_0;
dp[keystrokes-1][SELECT]=ADD_0;
for (var i=keystrokes-2; i>=0; i--) {
dp[i][TYPE]=max(dp[i+1][TYPE].compose(ADD_1),dp[i+1][SELECT].compose(ADD_1));
dp[i][PASTE]=max(dp[i+1][TYPE].compose(ADD_1),dp[i+1][SELECT]);
dp[i][COPY]=dp[i+1][PASTE];
dp[i][SELECT]=dp[i+1][COPY];

}
return (Integer)dp[0][0].apply(Integer.valueOf(1))-1;
}

I nie wiem czy się jeszcze to liczy jako Dynamic Programming, czy już nie ;-)

Tu to samo jako obrazek ;-)

Ogólna idea jest taka, że składamy funkcje z innych funkcji i w razie czego liczymy "max" funkcji ;-)

Spełnia wg mnie wymagania dynamic programming, ale jest dziwne ;-)

Jakby co ma błąd, ale na razie mi bardziej zależało na sprawdzeniu koncepcji niż znalezieniu rozwiązania ;p



Podobne postybeta
Struktury danych vs algorytmy
Ile to jest 1+1 w Java'ie?
Java i liczby pierwsze, odsłona druga
Zdradliwa Java i 8 królowych ;-)
Ile z obligacji... odsłona 2 ;-)

piątek, listopada 26, 2021

No i mam Pixel 6 ;-)

No i mam Pixel 6 i jeszcze nie wiem co o nim sądzę.
Tak naprawdę na razie nie widzę jakichś znaczących różnic względem Pixel 4 XL :-)
To pewnie przez to, że na razie nie miałem zbyt wielu okazji robić zdjęć, a bądźmy szczerzy to jest chyba najważniejszy ficzer dla mnie w telefonie.
Rozmiarami Pixel 6 jest niemal dokladnie tych samych rozmiarów co Pixel 4 XL. Jest za to wyraźnie cięższy.
Nadal mam mieszane uczucia.
Nie żeby w Pixel 6 było coś złego, po prostu nie czuje aż takiego zachwytu jak między Pixel 3 XL, a Pixel 4 XL.
Chociaż może chodzi o to, że w przypadku 4 XL kupowałem po recenzjach mowiwcych, że jest taki sobie i spodziewałem się chyba czegoś gorszego od 3 XL, a było super.
W końcu znany jest wzór:
Wrażenia = oczekiwania - rzeczywistość

posted from Bloggeroid



Podobne postybeta
Pixel 6 po ~2 miesiącach.... prawie nieodróżnialny od Pixela 4 XL ;-)
Android 10 już jest :-)
Moto 360 v2 - to jest to :-)
Pixel 4 XL czy iPhone 11 Pro
Przechodzę na iPhone&amp;#39;a...

wtorek, listopada 09, 2021

Czego brakuje koderom ;-)

Duże firmy z FAANG* (czy teraz MANGA** ;-)) podobno bardzo lubią przyjmować "upadłych" twórców startupów (takich nieupadłych też ;-), ale tych jest po prostu mniej ;-)).

Jak rozumiem to dlatego, że oni zwykle mają ten dar którego brakuje większości developerów, PMów i ogólnie ludzi tworzących software.

Mają wbudowane optymalizatory RIO i drive do dowiezienia funkcjonalności, a do tego rozumieją, że software to coś żywego i jego los nie kończy się w momencie końca testów, to jest dopiero ten mniej ważny kawałek zakończony.
Umieją stwierdzić czy ficzer a jest ważniejszy od ficzera b nie na podstawie mglistego "bo za 2 lata", ale tego, że zwrot z inwestycji będzie większy. Rozumieją też, że jak coś dowozimy to lepiej dowieźć to wcześniej i w razie czego trochę poprawić czy zmienić, zamiast przekonać się po roku, że właściwie to nie jest to czego potrzebują userzy.
Wiedzą, że migracja danych to nie jest coś "co się zrobi później".
No i nigdy nie zgadzają się na prace nad czymś czego nikt później nie używa....

Zaczynam rozumieć czemu to takie ważne ;-)


* - FAANG - Facebook, Apple, Amazon, Netflix, Google***
** - MANGA - Meta (bo to teraz nazwa Facebooka), Apple, Netflix, Google, Amazon***
*** - wszystkie skróty Google nazywają Google, a nie Alphabetem...




Podobne postybeta
Jak apokalipsa to nie w Warszawie ;-)
Urodzeni koderzy
Brak weny
Dinozaur w domu ;-)
Moja teoria firm IT