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
Alfred + Todoist i wysyłanie tasków do projektu, a nie tylko do Inbox'a ;-)
Workflow dla Alfreda do dodawania tasków z projektami i labelkami do Todoista :-)
W Androidzie przydałyby się nagrywalne intenty :-)
Ej Google, ja się tak nie bawię
Czemu po szczepieniu miejsce gdzie nas szczepiono może boleć?

Ł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
AirPods Pro rządzą
"Źródło Wszelkiego Zła?"
AirPods Pro nie lubią się z hulajnogami ;-)
AirPods Pro po 5 miesiącach
Lep na odwiedzaczy ;-) - plan lekcji

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 ;-)
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ć? ;-)
Fauci ouchie - mam i ja ;-)
Dobrze, że Tusk wygrał
Jest coraz gorzej i będzie jeszcze gorzej 

ś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
W końcu dane z M1, które w Java'ie mówią, że to jest ARM :-)
Surowe dane genetyczne i niebezpieczeństwa ich udostępniania
Czas = uwaga = zainteresowanie ;-)
Światełko w tunelu :-)
Budżet na spotkania

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
Człowiek się uczy całe życie - źle rozumiałem cache'owanie Integerów :-)
Zdradliwa Java i 8 królowych ;-)

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
Android 10 już jest :-)
Pixel 4 XL czy iPhone 11 Pro
Moto 360 v2 - to jest to :-)
Pixel XL jest genialny
Z Nexusów do Pixeli

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

wtorek, października 26, 2021

var bywa niebezpieczne :-)

Robię sobie zadania na LeetCode i odkrywam, że choć var mi bardzo życie ułatwia to też i utrudnia ;-)

Głównie gdy operuję kolekcjami i trzymam w nich rzeczy ws tylu Integer'ów ;-)

Często i gęsto mam w kodzie coś takiego:

        void remove() {
var val = q.pollFirst();
if (maxes.peek()==val) maxes.pollFirst();
}
(co jest fragmentem impelmetnacji kolejki z max)

I niby wszystko jest fajnie... ale przez to var i == są problemy.
Gdyby kod był:
        void remove() {
int val = q.pollFirst();
if (maxes.peek()==val) maxes.pollFirst();
}
To w linii z q.pollFirst() doszłoby do autounboxing'u i w kolejnej linii porównywałbym int'y, a tak jak jest var to do val wędruje Integer i w kolejnej linii == porównuje instancje obiektów...

Co najgorsze, przez to, że to Integer to to będzie działać dla wielu przypadków ;-) (w większości JVMek dla -128 do 127 ;-)) 

Już się drugi raz tak zrobiłem w ciągu ostatnich 2 dni....



Podobne postybeta
Nieoczywiste oczywistości ;-) podstępny autoboxing ;-)
Potworność ;-) czyli mnożenie w 90 liniach ;-)
Człowiek się uczy całe życie - źle rozumiałem cache'owanie Integerów :-)
Bug w debugu ;-)
Ile to jest 1+1 w Java'ie?

sobota, października 23, 2021

On-call i sąsiedzi którzy robią remont się nie łączą zbyt dobrze :-)

Wczoraj poszedłem spać tak koło 4 w nocy uznając, że i tak mam on-calla to nie ma co iść wcześniej spać.
No i z drugiej strony trochę później wstanę i będzie Ok.
I do 8:15 było, ale wtedy jakiś szaleniec zaczął wiercić dziury...
Normalnie bym zaklął i założył AirPods Pro albo i Max... i pospał dzięki magii noise cancelling.... Ale jakbym to zrobił to w razie czego nie usłyszałbym wycia on-calla...

posted from Bloggeroid




Podobne postybeta
AirPods Pro rządzą
1 plus braku tramwaju ;-)
"Dziennikarze"
Jeden kawałek za mną ostatnio łazi ;-)
On-call....

czwartek, października 14, 2021

A może by tak potrząsnąć drzewem zależności? ;-)

Jest tak, mam microservice który został zbudowany w oparciu o coś co trzeba by było updatować, ale to coś przepisuje masę kodu, który też jest ręcznie zmieniany więc z tym się nie da żyć, więc tego nie updatuję.

Poprawki bezpieczeństwa w postaci updatów bibliotek załatwiam "obok", co zabawne większość bibliotek które musiałem updatować (bo jeden albo drugi skaner stwierdziły, że dana wersja jest be) to rzeczy, których nie używam...

I mnie tak kusi by puścić analizę taką, popatrzeć na skompilowany kod i wszystkie klasy które woła, później przejść przez wszystkie JARy które mam na ClassPath (ClassPath długo nie umrze ;-)) i spróbować namierzyć te JARy, których kodu nie używam :-)

To może być ciut zbyt entuzjastyczne przez te głupie pomysły jak to co robi JDBC (akurat nie mam ;-)), czy implementacje SLF4J, bo tam jest ten brzydki sposób z rejestrowaniem się, które momentami odwraca to co kto woła (w SLF4J jest chyba tak, że skanuje w poszukiwaniu implementacji? Nie pomnę, ale problemy robiło)
Do tego jakieś straszne miejsca gdzie są używane refleksje... 

Ale mnie kusi, tylko jeszcze by się przydało mieć z 2-3 dni takiego luzu by się w to pobawić... a o to będzie trudniej ;-) 




Podobne postybeta
Gradle - narzędzie do artystycznego odstrzeliwania sobie stopy ;-)
To Update or not to update? ;-)
Chciałbym Chromebooka
GCJ mnie przerosło ;-)
Mysaifu JVM - Java dla PocketPC