Podobne postybeta
32 bity... wrrrrr....
Elektryczna kanapka....
Przydatne i nieoczywiste "narzędzia" czy rzeczy, które pomagają w podróżach
Jak się topologicznie wprowadzać ;-)
Magia w Java'ie ;-)
Tak do mnie dotarło, że jak Google+ istniało to oglądanie social media było ciekawe, jakieś fajne strony tam można było znaleźć, ciekawe stwierdzenia.
A teraz? Na Twitterze algorytmy aktywnie działają żeby rozpętać wojnę między plemionami (Elon musiał kazać im przekręcić na maxa pokrętło "negative engagement", czyli specjalista od szczepionek będzie dostawał sam bełkot antyszczepionkowców, a antyszczepionkowcy tylko rzeczy o szczepionkach, wyborca Koalicji 15 października widzi praktycznie tylko polityków PiS, pewnie wyborca PiS tylko tych Koalicji 15 października).
Na Facebooku zaś algorytm nie mogąc mi pokazywać reklam i niewiele wiedząc o mnie poza demografią (bo używam Facebook Container) ciągle pokazuje mi jakieś dowcipy, co jakiś czas próbuje wciskać AIowe grafiki z aktorkami i tyle...
Aż człowiek chciałby mieć tyle samozaparcia by to wszystko skasować ;-)
A są jeszcze Instagram - którego NIE ROZUMIEM, Threads - którego nikt chyba już nie używa i TikTok, ale jednak narzędzia CCP nie będę używał ;-) (ja mam taką schizę, że raz na jakiś czas sprawdzam gdzie lecą połączenia z mojego komputera i jak lecą do Chin czy Rosji/Białorusi to próbuję aktywnie kasować to co może te połączenia robić).
Google+ było fajne...
Chciałem dziś popsuć LinkedList, ale wychodzi na to, że mam za mało pamięci w komputerze ;-)
Popsucie miało wyglądać mniej więcej tak:
var list = new LinkedList<Integer>();
doMagic(list);
System.out.println(list.size()); // return negative number!!!
Gdzie doMagic miało wyglądać jakoś tak:
static void doMagic(LinkedList<Integer> l) {
for (var i=0L; i<Integer.MAX_VALUE+1000L; i++) {
l.add(Integer.valueOf(0));
}
}
No bo jeśli spojrzymy na implementację LinkedList to implementuje ona List, a List ma metodę size() która zwraca int, ale LinkedList nie ma ograniczenia na rozmiar innego niż pamięć, w samej metodzie linkLast(E e), która wołana jest z add(E e) mamy:
void linkLast(E e) {
final Node<E> l = last;
final Node<E> newNode = new Node<>(l, e, null);
last = newNode;
if (l == null)
first = newNode;
else
l.next = newNode;
size++;
modCount++;
}
Co znaczy tyle, że jeśli mamy odpowiednio dużo pamięci to w pewnym momencie przekręcimy licznik ;-)
Czyli jakbyśmy zawołali size() to zwróci liczbę ujemną, ale jeśli policzymy wszystkie elementy kodem:
var count = 0L;
for (var n:list) {
count++;
}
To w count będziemy mieli 2147484647 ;-)
Co ciekawe zawołanie get(int) w takim przypadku wyrzuciłoby IndexOutOfBoundsException pokazując ujemną liczbę ;-)
Chyba znalazłem uzasadnienie dla kupienia Macbooka z M3 Max ;-) Bo chciałbym naprawdę sprawdzić czy to się tak zachowa ;-)
Inna sprawa ile byśmy potrzebowali RAMu żeby móc ten problem osiągnąć ;-) Tak jeden Node to powiedzmy między 48 a 64 bajty.... co daje dolną granicę najmniej 96 GB RAM ;-) ale podejrzewam, że tak naprawdę to by było jakieś 170 GB ;-)
Jeszcze chwilę potrwa nim będziemy mieli takie laptopy ;-)
Największy Macbook Pro to teraz 128 GB RAM ;-)
[update]
I chyba nie muszę kupować takiej maszyny dużej ;-) bo nadal mogę ustawić rozmiar heapy na 150 GB ;-)
I wtedy gdy robię list.get(10) po dodaniu 2147484647 objektów to dostaję wyjątek:
[next update ;-)]
Czyli wypisanie list.size() dało wynik -2147482649, ale już fragment:
var count = 0L;
for (var n:list) {
count++;
}
Nie zadziałał w ogóle, bo już w linii z for poleciał wyjątek ;-), okazuje się, że gdy jest produkowany iterator to wołany jest gdzieś w środku range check i ten wywala wyjątek dla Index: 0 ;-)
Czyli LinkedList po przekręceniu licznika nie nadaje się nawet do iterowania ;-) ale co ciekawe można kasować elementy z przodu i tyłu aż nam wróci size do pozytywnych int'ów i można iterować ;-)
OK, to przeprowadziłem sobie wybory z 15 października 2023 symulując, że KO+3D+Lewica byłyby jedną listą i wszyscy ich wyborcy by nadal na tą listę głosowali.
Mielibyśmy wtedy taki Sejm:
Jedna Lista - 265 mandatów,
PiS - 183 mandaty,
Konfederacja - 12 mandatów
W wyborach mieliśmy:
Prawo i Sprawiedliwość - 194 mandaty
Koalicja Obywatelska - 157 mandatów
Trzecia Droga - 65 mandatów
Nowa Lewica - 26 mandatów
Konfederacja - 18 mandatów
Czyli partie "Jednej Listy" mają teraz 248 mandatów.
Te 265 nadal by nie wystarczyły do pokonania weta, ale byłyby bliżej potrzebnych 276 mandatów.
Jeszcze z innych wariantów, gdyby Lewica poszła z KO.
Jedna Lista (KO+Lewica) - 194 mandaty,
PiS - 188 mandatów,
Trzecia Droga - 63 mandaty,
Konfederacja - 15 mandatów.
Jedna Lista jako KO+3D:
Jedna Lista (KO+3D) - 234 mandaty (nie potrzebowaliby nawet Lewicy ;-)),
PiS - 188 mandatów,
Lewica - 25 mandatów,
Konfederacja - 13 mandatów.
No i w końcu Jedna Lista jako 3D+Lewica:
PiS - 187 mandatów,
KO - 151 mandatów,
Jedna Lista (3D+Lewica) - 109 mandatów,
Konfederacja - 13 mandatów.
To sprawdźmy jeszcze co by było gdyby PiS poszedł z Konfederacją....
PiS+Konfederacja vs KO, 3D i Lewica osobno:
Prawica (PiS+Konfederacja) - 226 mandatów (nie mogliby stworzyć rządu bez podebrania posłów),
KO - 146,
3D - 62,
Lewica - 26
Teraz PiS+Konfa vs KO+3D+Lewica:
Jedna Lista (KO+3D+Lewica) - 258 mandatów,
Prawica (PiS+Konfa) - 202 mandaty
No i najgorszy możliwy scenariusz, gdyby PiS+3D+Konfa szły przeciwko KO+Lewica:
Prawica (PiS+3D+Konfa) - 285 mandatów,
Jedna Lista (KO+Lewica) - 178 mandatów.
To znów nie był mój miesiąc jeśli chodzi o książki. Zacząłem z prequelem Hunger Games, czyli The Ballad of Songbirds and Snakes. Tak jak pisałem jeszcze w podsumowaniu listopada nie byłem pewien czy to przeczytam i nie przeczytałem. Mam jakąś fazę, że cokolwiek gore czy takiego nie do końca optymistycznego mnie męczy....
Przeczytałem za to: