niedziela, lutego 23, 2020

W klocki ;-)

Bawiłem się dziś w klocki ;-)
Tak trochę na początku do tego podszedłem, że to odbębnię i będę miał z głowy.
Okazało się, że nie było tak źle ;-)

Na początku było pudełko, po 3 godzinach (4, ale z przerwami na Telegram'a i "gotowanie") pojawił się lądownik księżycowy ;-)



W drugim ujęciu w swojej "gablotce" w towarzystwie kawałków soli z Wieliczki i kamienia z nad morza, albo znad Pacyfiku.... nie pomnę ;-)

Ogólnie nie było to takie straszne.
Nie jest to może coś co jest jakoś szczególnie ekscytujące, ale miło patrzeć jak to wszystko rośnie :-)


Podobne postybeta
Wycieczka po LA ;-)
A może by tak w klocki Lego? ;-)
Kosmiczne klocki :-)
Prawicowa logika ;-)
clickBaitDetector - wiem czemu nie działa ;-)

piątek, lutego 21, 2020

Czemu trzeba pomagać Jacksonowi? ;-)

Jeśli używasz w swoim projekcie Jacksona to pewnie zdarzyło Ci się zrobić pewien błąd.
Najpierw stworzyłeś lub stworzyłaś klasę z polami publicznymi, bo to przecież taki tylko obiekt do zmiany w JSONa i z powrotem.
I wszystko działało.
Aż tu nagle, dodajesz konstruktor i zmieniasz widoczność pól i nagle choć serializacja nadal działa to deserializacja przestaje.

Patrzysz na kod i w końcu dociera do Ciebie, że trzeba opisać konstruktor annotacją @JsonCreator.

I czasem kod działa :-)

A czasem jednak nie. I znów dociera do Ciebie, że trzeba dodać do parametrów annotacje @JsonProperty z nazwą.

Tu możesz się zacząć zastanawiać czemu jak pole było publiczne to nic nie trzeba było annotować, a jak jest prywatne i dostarczasz konstruktor to nagle trzeba już dodać annotację z nazwą...

Reflejske się tu kłaniają ;-)

Jackson używa do serializacji i deserializacji mechanizmu refleksji.

Pola sobie może odczytać bez problemu, robi na naszym serializowanym obiekcie obj.getClass().getDeclaredFields() i obj.getClass().getFields() i ma listę pól z ich nazwami i typem.

Ale jak jest konstruktor to sprawa się komplikuje.... bo co prawda przy pomocy refleksji można zdobyć info o konstruktorach, a nawet o ich parametrach.... to ich nazwy są tracone w trakcie kompilacji ;-)

Można to zobaczyć uruchamiając poniższy program:

import java.lang.reflect.Constructor;
import java.lang.reflect.Parameter;

public class ReflectionTest {

ReflectionTest(String id, String name) {
System.out.println(id);
System.out.println(name);
}

public static void main(String[] args) {
Constructor<?>[] constructors = ReflectionTest.class.getDeclaredConstructors();
for (Constructor<?> constructor:constructors) {
Parameter[] parameters = constructor.getParameters();
for (Parameter parameter:parameters) {
System.out.println(parameter.getName());
}
}
}
}

Co wypisze? ;-)

Spodziewalibyśmy się, że:
id
name

a tak naprawdę wypisuje:
arg0
arg1

 ;-)


Podobne postybeta
Niecne wykorzystanie refleksji... czyli jak poszukać tekstu w drzewie obiektów? ;-)
Refleksje i serializacja w Java'ie - podstawy i obalanie mitów ;-)
Sztuczki tropiciela błędów, part 4
Serializacja w Java'ie - revisited ;-)
Konstruktory

środa, lutego 19, 2020

Lubię mieć wybór, ale nie lubię wybierać ;-)

Pewnie jestem dziwny, ale zauważam, że o wiele fajniej jest mieć otwarte pewne opcje, które może nie są pewna, ale jest ich kilka, niż mieć dwie, które są ostateczne w jakimś horyzoncie czasowym ;-)

Bo takie mgliste opcje dają pewną swobodę czy nadzieję, a konkretne wybory zmuszają do podjęcia decyzji.

Chociaż może jeszcze inaczej. Bardzo mi się podoba analogia z podejmowaniem decyzji, którą podobno lubi posługiwać się Jeff Bezos (ten od Amazona), że są 2 rodzaje decyzji, takie które można wyobrazić sobie jako drzwi przez które można tylko raz przejść i takie przez które w razie czego można wrócić.
Ja zdecydowanie przoduję w używaniu tych drugich ;-)

Pewnie przez to lubię np. w kodowaniu używać metod gdzie mam dużą swobodę w zmianie podejścia. Nie lubię się betonować i stąd zamiast wybrać "jakąś technologię" wolę często zostać przy czymś bardziej podstawowym.
Mogę użyć Springa jak mi wyjdzie, że mi jest potrzebny, a może użyję Guice, a może na początku w ogóle nie potrzebuję niczego takiego.
To samo z bazą danych, jak długo mogę to będę zapisywał dane do pliku tekstowego czy serializował jakąś strukturę na dysk.

Chociaż to się chyba bierze z tego, że w przypadku tych decyzji odwracalnych, czy tych decyzji gdzie brak decyzji nie powoduje zamknięcia dróg, a może czyni je trudniejszymi, koszt jest mniejszy.
Gdy wybiera się opcję a zamiast b, to traci się możliwość wyboru opcji b. To jest chyba przypadek problemu kosztów alternatywnych ;-)
Gdy nie umiemy określić zysków z a i b to podejmowanie decyzji jest oparte na intuicji, która ma chyba tendencje do trzymania się tego co znane.
Niby można zrobić research, ale ten jest zwykle dość powierzchowny. Siłą rzeczy, jeśli decyzja dotyczy czegoś co ma potencjalnie duże koszty to jest to zwykle decyzja trudna i prosty research może dać nam tylko ułudę posiadania opinii.
Dlatego zresztą choć sam piszę bloga, to zbytnio żadnych nie czytam ;-) tzn. czytam by poznać jakieś sposoby myślenia, ale raczej nie wierze w zachwyty nad nową technologią czy czymś podobnym.

W ogólności, lubię mieć wybór, nie lubię wybierać ;-)


Podobne postybeta
O wyższości podejmowania decyzji partiami zamiast per sztuka ;-)
Ja długo przygotowywać się do rozmowy? (kwalifikacyjnej w IT ;-))
Branche i Scrum to taki security blanket dla programistów
"Nowy" java.net.http.HttpClient jest cool :-)
Mam milion rzeczy na głowie... co robić?

czwartek, lutego 13, 2020

A może by tak w klocki Lego? ;-)

Ostatnio mi się potrafi nudzić w weekendy między 14 a 18 ;-) i nie mam wtedy pomysłu co robić.

Ale mam 2 IronMan'ów do zbudowania z Lego, może tym by się zająć?
A wtedy może np. ISS z Lego? ;-)
A dwaj IronMan'owie wyglądaja tak ;-)




Podobne postybeta
SUVy ;-)
W klocki ;-)
ISS - zbudowana :-)
Stróż biurka ;-)
Dziwne ;-)

niedziela, lutego 09, 2020

Pensje w IT są trudne

Zarobki w IT są trudne.

Wysokie też, ale nie o wysokości teraz będzie mowa ;-)

Będzie o tym, że pensje w IT są skomplikowane.

Jeśli pracujesz na umowę o pracę to kilka lat temu było prosto.
Była pensja zasadnicza, czasem premia i premia roczna.

Oczywiście wszystko to było znane w wersji brutto... ale ile to było "na rękę"?

Wystarczyło policzyć 2/3 i było mniej więcej to co się dostaje "na rękę".

Jednak pensje w IT poszły w górę i nagle zaczęło się wpadać w II próg i jednocześnie przekraczać 30x co oznacza koniec płacenia składek emerytalnych.

Dowolny kalkulator podatkowy potrafił to jednak policzyć.

Wejście autorskich kosztów uzyskania przychodu zaczęło komplikować sprawę...

Gdy "masz szczęście" i pracujesz dla którejś z firm, które nie płacą żadnej premii to są w sieci kalkulatory, które Ci pozwolą policzyć ile zarobisz "na rękę". (inna sprawa, że jak nie płacą premii to też pewnie nie ma w nich autorskich kosztów uzyskania przychodu...)

Problemy zaczynają się jak Twoja pensja to nie tylko baza, ale też premia, lub premie, a do tego akcje lub LTI.

Wtedy część kwoty, zwykle procent bazy liczy się do autorskich kosztów uzyskania przychodów, premie i LTI, czy signing bonusy się nie liczą.

Tego nie ogarniają już on-line'owe kalkulatory....

Poza moim ;-)


Który potrafi policzyć pensję "na rękę", do tego brutto i jeszcze informacje o tym ile zapłacimy składki zdrowotnej i emerytalnej ;-)

Do tego liczy to w 2 wariantach, z 30x limitem na płacenie składki emerytalnej i bez tego limitu (bądźmy szczerzy wcześniejsza wersja tego kalkulatora już była kiedyś linkowana ;-))
Każdy z wariantów można sobie pobrać też jako CSV ;-)

Kalkulator wszystko liczy w przeglądarce i nic nie wysyła do serwera.
Jeśli chcesz mieć pewność to możesz sobie pobrać kalkulator, obejrzeć kod, albo uruchomić lokalnie na komputerze bez Internetu :-)


Podobne postybeta
Bonusy, koszty autorskie i limit 30 krotności...
Dobrze być programistą w Polsce ;-)
Giganci produktywności w IT ;-)
Kiedy tablet zmieni się w dobry kalkulator?
Taniej :-)

czwartek, lutego 06, 2020

AirPods Pro rządzą

Dziś mi przyszły i wracałem w nich z pracy.
Podpięte do mojego Pixela działają nieziemsko. Nic w okolicy nie słychać :-)

Sparowanie z Androidem było proste, nawet nie podpinałem ich do mojego Macbooka Pro czy iPada Pro, bo po co? (btw. Pro w przypadku produktów Apple takich jak laptopy znaczy "zdatny do użycia" ;-) w przypadku iPadów używać się da też tych nie Pro ;-))

Mam niemal wrażenie, że ten noise cancelling działa lepiej niż w moich dużych Sony. Może nawet działa za dobrze ;-)
Bo jak założyłem lewą słuchawkę tylko, a prawej jeszcze nie to wydawało mi się, że "straciłem lewą stronę".

Ogólnie dobry produkt.

(tak, to pewnie moja droga w kierunku iPhone'a, choć przyznam, że jestem zachwycony Pixelem 4 XL)


Podobne postybeta
On-call i sąsiedzi którzy robią remont się nie łączą zbyt dobrze :-)
Łatwiej kupić AirPods Pro jako komplet niż jedną słuchawkę...
AirPods Pro po 5 miesiącach
Projektowane dla Kalifornii ;-)
Jakie słuchawki z tłumieniem szumów wybrać?

niedziela, lutego 02, 2020

Dziwne skojarzenia

Jak rozumiem mózg jest dziwny ;-) ale czasem niektóre skojarzenia mnie dziwią.

Np. ostatnio nauczyłem się układać kostkę Rubika i często jak układam kostkę Rubika to mi się przypomina iście obok Hali Oliwy w Gdańsku (a szedłem tam łącznie 6 razy ;-) zawsze w związku z interview w Amazonie (miałem 2, i dostawałem zawsze ofertę, ale nie taką jak chciałem ;-)).



Albo jak robiłem kurs z Machine Learning to mi się często przypominało właśnie w trakcie tego kursu jak rok wcześniej czy coś szliśmy z kolegą przez Mountain View od Googlepleksu i źle skręciliśmy do stacji Caltraina.

Jest jeszcze parę rzeczy, które mi się podobnie kojarzą, coś mi się kojarzy z chodzeniem nad zatoką San Francisco, albo z moim spacerem przez Chorzów gdy byłem na koncercie Rammstein'a.

Ale to są takie dziwne skojarzenia, że te rzeczy do siebie nie pasują.
Szczególnie ta kostka do Hali Oliwy ;-)

Aż sobie może będę próbował zapisywać takie skojarzenia ;-)


Podobne postybeta
Rammstein :-)
Przemek w krainie Stefanów ;-)
W przemyśle filmowym muszą pracować idioci...
W 2023 będę na Rammstein 2.... wróć 3 razy ;-)
Względność ceny - czemu bezdomni w USA miewają iPhone'y?