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
Autoboxing/Unboxing nie lubi sie z var - nadal ;-)
Potworność ;-) czyli mnożenie w 90 liniach ;-)
Nieoczywiste oczywistości ;-) podstępny autoboxing ;-)
Człowiek się uczy całe życie - źle rozumiałem cache'owanie Integerów :-)
Nie mieszaj wrapperów z prymitywami ;-)

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 ;-)
Jeden kawałek za mną ostatnio łazi ;-)
O szukaniu dziury w całym [układzie ;-)]
Skarpetki zamiast kapci ;-)

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
To Update or not to update? ;-)
Chciałbym Chromebooka
Mysaifu JVM - Java dla PocketPC
GCJ mnie przerosło ;-)
Gradle - narzędzie do artystycznego odstrzeliwania sobie stopy ;-)

poniedziałek, października 11, 2021

Komputer na korbę ;-)

Widziałem wideo o OLPC (One Laptop Per Child) które niby było wielką wtopą... ale tak naprawdę chyba trochę pokazało firmom, że jest nisza której nie dotykały i teraz tam są telefony, Chromebooki i podobne.

Ale nie o tym tutaj ;-)

OLPC miał korbkę :-) tzn było akcesorium, które pozwalało go "ładować" korbką i próbowałem tak oszacować ile by trzeba było kręcić by np mojego MBP15 z 2018 roku przez godzinę móc używać ;-)

Próbowałem szacować ile mocy jest w takiej korbie, ale jakoś mi nie wychodziło bo moje szacunki były między ~0.7 W, a 10 W. 

Internet mówi, że to jest między 5 a 15 W, czyli nie byłem aż tak daleko :-)

Godzina kręcenia taką korbą to między 5 a 15 Wh ;-) czyli między 0.005-0.015 kWh ;-)

Pojemność baterii w moim MBP15 z 2018 to na dziś 6710 mAh (co by znaczyło, że już nie ma pełnej pojemności ;-)), przeliczenie na Wh wymagałoby znajomości napięcia z baterii ;-)

Na szczęście Internet też zna odpowiedź na pojemność baterii w Wh.... ~84 Wh.

Co by znaczyło, że do "napompowania" baterii na full (załóżmy 100% skuteczność) trzeba by było kręcić korbką od 5:36 do 16:48 ;-) 
Powiedzmy, że laptop działa na baterii 5h (OK, podobno 11 czy jakoś tak, ale ja chyba inaczej używam ;-)).
Czyli by mieć mniej więcej 1h pracy trzeba by było kręcić korbą od ~1:08 do ~3:21 ;-)

Nie jest to jednak interes życia ;-)

A i tak istnieje szansa, że się gdzieś w obliczeniach walnąłem o jeden albo dwa rzędy ;-)



Podobne postybeta
2.6 drzewa na telefon komórkowy ;-)
ISS poraz kolejny :-) tym razem poprzedzona HTV :-)
No i po wyborach... ehhh.... ale moja cisza wyborcza działa ;-)
Czyżbym miał już zbyt wolny komputer? ;-)
Pociąg pociągowi nierówny ;-)

piątek, października 08, 2021

Struktury danych vs algorytmy

Gdy te 12 lat temu uczyłem się po raz pierwszy algorytmów i struktur danych z Introduction to Algorithms zauważyłem, że jakoś lepiej mi idą struktury danych niż algorytmy.

I tak jest do teraz ;-)

Łatwiej mi jest zaprojektować strukturę danych niż algo.

Może chodzi o to, że często i gęsto to jest po prostu składanie z prostszych klocków? 

A może chodzi też o to, że ze strukturami danych mamy tak naprawdę tylko interfejs i łatwiej jest mapować ten interfejs do skończonej liczby struktur? ;-)

W sensie, że jak się myśli o strukturze danych to można ją wyspecyfikować od strony tego jak będzie zasilana danymi, jak będzie odpytywana i teraz to już tylko zwykle zastanawianie się jakie klocki do tego pasują? 

Z algo jest tak, że też jest zwykle skończona liczba podobnych przypadków do tego, który się robi, ale jakoś łatwiej głupieję, a i tak w końcu się okazuje, że Dynamic Programming było odpowiedzią, a ja i DP jakoś nie jesteśmy w pełni kompatybilni ;-) tzn umiem użyć w wielu momentach, w wielu widzę, że "O! przecież to liczę wiele razy to DP by było jak znalazł" ale często mi brakuje tego "klucza" po którym będę szukał.

No ciekawe. Widać po prostu struktury danych są prostsze :-)



Podobne postybeta
iOS ssie i tyle ;-)
Studia - nie wiem czy użyłem w pracy kiedykolwiek czegoś ze studiów... poza angielskim ;-)
Proste, a potężne API to było coś...
Telewizyjne zastanawianie
Przeżycie artystyczne ;-)

czwartek, października 07, 2021

Kod jako insight w umysł ;-)

Ponad rok temu zacząłem z kimś robić zadania z książek, głównie z Cracking the Coding Interview i Elements of Programming Interviews in Java.

Były momenty robienia po 3 zadania dziennie i miesiące bez robienia zadań.

I tak czasem sprawdzam po zrobieniu zadania poprzednie rozwiązania swoje i tej osoby i ciekawa sprawa.

Jak często mamy inne rozwiązania, to zwykle nasze rozwiązania z teraz i np. sprzed roku są bardzo podobno lub identyczne... czasem nawet co do nazw zmiennych :-)

I zastanawiam się czy to wynik tego, że przy pierwszym kontakcie z zadaniem się znalazło sposób na rozwiązanie i teraz mniej lub bardziej świadomie się "jedzie z pamięci", czy może za każdym razem to jest oryginalny twór umysły i wynika z okablowania mózgu?

Czy może chodzi o mieszankę?

Wiem, że sam od momentu gdy zacząłem uprawiać blindfold programming dzielę sobie kod w głowie na chunki i możliwe jest, że pamiętam "chunka". Co by pasowało bo ja jestem zwykle bardziej "wierny" w kodzie temu co napisałem rok czy dwa lata temu.

Czasem też pamiętam fizyczną analogię problemu, czy to sam ją wymyśliłem czy ktoś mi opisał.

Mam jednak wrażenie, że patrzenie na czyjś kod (w tym swój ;-)) to taka forma insightu w umysł ;-)



Podobne postybeta
Czas wrócić do blindfold programming
Prakacje z kodowaniem ;-)
Jakie by tu zadanie zrobić? ;-)
Prefix vs suffix dla ++ i --
Mózg jako komputer

niedziela, września 05, 2021

Irracjonalna malpa ;-)

Kiedyś odkryłem, że dobrym sposobem na sprawdzenie co czuje jest rzucenie monetą czy wylosowanie liczby (wcześniej przypisując liczbom odpowiedzi).
Dostaje taką losową odpowiedź i sprawdzając co czuje na myśl, że mam wybrać tą opcję mogę ocenić jaki wynik bym wolał.
Problem w tym, że czasem mnie ponosi i chce tego samego sposobu użyć do rozwiązania wątpliwości wynikającej nie z tego, że nie wiem co ja czuję czy czego chcę, ale takiej gdzie chodzi o uczucia czy opinie innych ludzi, firm czy procesów ;-)
Coś jak kwiatek i "kocha, lubi, szanuje" ;-)
Dlatego trzeba uważać, bo zwykle jak się losuje więcej niż raz bo wyszło coś innego niż się chciało to jest sygnał, że już wiem czego chcę, ale musiałem pytanie sformułować tak, że naprawdę pytam nie o swoją ocenę, a o coś co jest poza mną ;-)
Bycie racjonalnym człowiekiem jest trudne, te miliony lat ewolucji nas strasznie irracjonalnymi zrobiły ;-)

posted from Bloggeroid




Podobne postybeta
Post drugie - bądź na tak ;-)
O wyższości podejmowania decyzji partiami zamiast per sztuka ;-)
Gdzie by się tu przenieść...
Smile Challenge - zapraszam do testów ;-)
Cud Tuska i Kopacz, polska medycyna bardziej wydajna niż niemiecka

sobota, września 04, 2021

Punkty uzależniają ;-)

Zauważyłem, że programy lojalnościowe potrafią jednak człowieka motywować/uzależniać ;-)

Jestem w IHG i mam tam tam teraz ponad 289 tysięcy punktów i status Spire Elite (prawie najwyższy) (nie wiem, ale tak na oko ponad 20-25k USD wydałem (nie swoich pieniędzy ;-)) w ciągu ostatnich 5 lat (a tak naprawdę 4 lat ;-))), plus jeszcze trochę swoich.
Wydałem już z 400 tysięcy punktów na Wenecję, Waszyngton, Londyn i Gdańsk ;-) (w takich Holiday Inn doba to tak max 20k punktów)

No i jak mi się zdarza rezerwować hotel spoza IHG to mam niemal dreszcze "nic z tego nie będę miał" ;-) (niestety, w takiej Juracie nie ma hotelu IHG ;-) (najbliższy jest w Gdańsku ;-)), a znów niektóre firmy w ramach rekrutacji nie chcą bookować innych hoteli niż tych z którymi mają umowę, choć Intercontinental od IHG jest zaraz przy ich biurze..... ;-)).

W pewien sposób dostępność hoteli od IHG decyduje gdzie spędzam wakacje... 

Inna sprawa, że choć mi się zdarzało w IHG sypiać w hotelach 3, 4 i 5 gwiazdkowych to szczerze nie widziałem nigdy AŻ takiej wielkiej różnicy między nimi ;-)


Podobne postybeta
9 nocy, 3 miasta, 3 hotele, 2 stolice ;-)
Woda, chyba lubię wodę..
Zaskoczenie
Nie lubię lini lotniczych
Wyłudzacze ;-)

czwartek, września 02, 2021

Oszczędzanie

W jednej z poprzednich firm był wielki ruch "save a million"... chodziło o to by biuro jakie całe obcięło 1 mln USD ze swojego kosztu.

Jedną z akcji którą prowadził jakiś aspirant na managera było "wszystkie laptopy w standby o danej godzinie".

Najpierw mi się pomysł spodobał, ale później policzyłem i wyszło mi, że to były naprawdę niewielkie oszczędności... nie pomnę, może 15k PLN w ciągu roku i to przy założeniu, że wcześniej wszyscy mieli laptopy włączone przez cały dzień na pełnej mocy.

Oczywiście aspirant na managera uważał, że warto bo to jednak 15k. Więc uznał, że nasze networki/helpdesk muszą napisać skrypty, przetestować je i tak dalej żeby to zrobić.

Zwątpił dopiero jak do niego dotarło, że ponieważ oni pracowali dla innej firmy koszt tej operacji będzie wyższy niż kilkuletnie oszczędności. Co nie powstrzymało go w próbowaniu pchania projektu ;-)

Tak mi się skojarzyło gdy zobaczyłem maila o oszczędności jakichś śmiesznych pieniędzy na zasobach wysłanego do 100 osób, gdzie koszty samego przeczytania tego maila były wyższe niż byłyby oszczędności, nie mówiąc już w ogóle o polowaniu na te zasoby i ich kasowaniu.

A wystarczyłoby odwołać kilka spotkań i oszczędności byłyby DUŻO wyższe :-)




Podobne postybeta
"Żarówki" Philips Hue są tańsze od klasycznych ;-)
Nie taka klasa konkretna straszna....
Bullshit Jobs jest słabe
Windows 7 - łał :-)
Jeszcze o Chrome OS... a mądrość ludu po premierze sugeruje porażkę Chrome...

Najlepszy rodzaj spotkań

Jest taki, te które się nie odbywają ;-)

W poniedziałek rano miałem wtorek pusty, ale w ciągu dnia zaczęły mi się pojawiać kolejne spotkania i zaczęły tworzyć taki blok 2h spotkań o niczym (za to 4 spotkań, każde po 30 minut).

Ale we wtorek zaczął się cud dziać, pierwsze spotkanie się odwołało, później kolejne, i jeszcze jedno i nagle odzyskałem czas i mogłem kodować :-)

To były dobre spotkania ;-)



Podobne postybeta
Android Nokia syndrome ;-)
COVID-19 = więcej meetingów w pracy....
IRQ jako analogia kultury spotkań w czasach pandemii ;-)
"Miejsce parkingowe" w Wenecji ;-)
Budżet na spotkania