O temperaturze i dokładności


Za oknem ciepło i słonecznie, ale dzisiaj skupiłem się na temperaturze wewnątrz komputera. Wykresiki dot. dysku NVMe pokazywały takie dziwne, nieokrągłe końcówki:

# sensors nvme-*
nvme-pci-0100
Adapter: PCI adapter
Composite:    +36.9°C  (low  =  -0.1°C, high = +69.8°C)
                     (crit = +89.8°C)

Dokładnie to widać tu:

nvme-pci-0100
Composite:
  temp1_input: 36.850
  temp1_max: 69.850
  temp1_min: -0.150
  temp1_crit: 89.850
  temp1_alarm: 0.000

Co ciekawe, polecenie nvme smart-log /dev/nvme0 pokazuje „pełne” stopnie. Poprawienie wydruku lm_sensors jest trywialne, w konfiguracji wystarczy dopisać:

chip "nvme-pci-0100"
        # bump readings, all ends with *.85
        compute temp1   @+0.15, @-0.15

I od razu wartości wyglądają na bardziej ludzkie:

# sensors nvme-*
Composite:    +37.0°C  (low  =  +0.0°C, high = +70.0°C)
                       (crit = +90.0°C)

No dobrze. Ale dlaczego takie przesunięcie? Piętnaście setnych to nie jest np. ⅛, co od biedy możnaby podciągnąć pod zaokrąglenia bitowe.

Zacząłem od źródła, czyli specyfikacji Non-Volatile Memory Host Controller Interface Specification (NVMe). Stoi tam:

Composite Temperature: Contains a value corresponding to a temperature in degrees Kelvin that represents the current composite temperature of the controller and namespace(s).

Poza tym, że jest tu błąd – nie ma „stopni” Kelwina, są po prostu kelwiny – to zaczyna wyłaniać się logiczne rozwiązanie.

Jak wiadomo ze szkoły, początek skali, zero kelwinów to -273°C… nie! To -273,15°C. Dla wygody zazwyczaj pomijamy tę końcówkę. I stąd ta rożnica.

Szybkie spojrzenie w kod źródłowy wyjaśnia też różnice w prezentacji. nvme-cli operuje na liczbach całkowitych, odejmując od odczytanej ze sprzętu wartości 273, co daje temperaturę w stopniach Celsjusza.

Z kolei podsystem hwmon w Linuksie operuje na tysięcznych częściach stopnia, a do przeliczenia używane jest makro kelvin_to_millicelsius(). Oczywiście w tym przypadku końcówka piętnastu setnych jest stosowana. Niestety, dane wejściowe nie zapewniają wymaganej dokładności, i efekt jest nie do końca zadowalający. To taka ilustracja powiedzenia, że nadgorliwość gorsza od faszyzmu.

Bojkot Amazona


Amazon, firma najbogatszego czowieka świata, dostarcza ostatnio coraz więcej powodów do bojkotu. Napędza bezsensowny konsumpcjonizm, ale to nie jedyny grzech. W przejściowym okresie przed pełną robotyzacją wszystkiego zatrudnia ludzi (bądź zleca pracę ludziom). I traktuje ich kiepsko – żeby ratownik medyczny błądził po firmie 20 minut zanim trafił do poszkodowanej (która ostatecznie zmarła) – to skandaliczny, wręcza karalny poziom procedur BHP.

Nie jest to jednostkowy przypadek, raczej systematyczne podejście do zasobów^Wpracowników. Amazończycy w ramach protestu zwalniają się. Innym pozostaje bojkot.

Osobiście nie rozumiem sukcesu sklepu Amazona. Wyszukiwanie praktycznie nie działa, filtrów nie ma, pokazywana cena z dostawą potrafi drastycznie wzrosnąć po dodaniu do koszyka (albo nawet zalogowaniu się na konto!). Nic zachęcającego, a jednak są największym detalistą.

Bojkot Amazona ułatwia sama firma. Na stronie AWS IP address ranges wyszczególnione są wszystkie podsieci IP, które wystarczy zablokować na firewallu. Drobna trasformata pliku:

#!/usr/bin/python

import json

with open("ip-ranges.json", "r") as aws_ips:
    data = json.load(aws_ips)


for v4_net in data["prefixes"]:
    print(f"iptables --append AWS --source {v4_net['ip_prefix']} --match comment --comment {v4_net['region']} --jump koniec")


for v6_net in data["ipv6_prefixes"]:
    print(f"ip6tables --append AWS --source {v6_net['ipv6_prefix']} --match comment --comment {v6_net['region']} --jump koniec")

Wcześniej trzeba przygotować tablicę koniec, którą stosuje w celu poprawnego zamykania połączeń:

iptables --new koniec
iptables --append koniec --protocol tcp --jump REJECT --reject-with tcp-reset
iptables --append koniec --jump REJECT --reject-with icmp-port-unreachable

ip6tables --new koniec
ip6tables --append koniec --protocol tcp --jump REJECT --reject-with tcp-reset
ip6tables --append koniec --jump REJECT --reject-with icmp6-adm-prohibited

Teraz wystarczy to połączyć i dodać w tablicy FORWARD skok do AWS. I bum! Przestaje nam działać 1/3 internetu, w tym jakiś Netflix, Spotify, Adobe, Stripe i wiele innych. Prztykanie głównego gracz na rynku wiąże się z wyrzeczeniami.

Oszukany 😭


Lo and behold. Dałem się oszukać w internecie. Bycie kierownikiem zespołu IT w banku i picie wódki z Piotrem Koniecznym nie oznacza, że jestem odporny na na wszystki scamy.

Na OLX „zakupiłem” procesor, zapłaciłem, a kiedy upomniałem się o wysyłkę – konto sprzedającego już nie istniało. Email który mi podał również.

Patrząc wstecz, było kilka czerwonych flag, jednak i tak dałem się złapać. Na pewno moją czujność obniżyły: 100% sukcesów w dotychczasowych transakcjach na OLX i emocjonalne podejście „niezła okazja, trzeba brać”. Natomiast powinienem zwrócić uwagę na:

  • cena niższa o ok. 10% niż podobnych ogłoszeń; niby nic, zwłaszcza przy używanym CPU sprzed 7 lat, ale kieruje uwagę wprost na ogłoszenie oszusta

  • podane w opisie kontakt tylko przez OLX i brak telefonu; oszustowi ułatwia prowadzenie równocześnie wielu wałków, nam utrudnia weryfikację. Policja też wydaje się być bardziej obeznana z uzyskiwaniem danych klienta od telekomów, niż z serwisów internetowych

  • płatność przez PayPal i prośba o zaznaczenie opcji "przesyłam pieniądze znajomemu" aby uniknąć prowizji. Co jeszcze powoduje ta opcja? Brak możliwości założenia sporu via PayPal, bo to przecież nie sprzedaż tylko kasa dla ziomka. Podobnie, Policja rozumie płatność kartą i przelewy z konta, ma gotowe formularze na zwolnienie z tajemnicy bankowej, ale użycie pośredników płatniczych zbija z pantałyku

Oszustwo zgłosilem na komisariacie, potwierdzenie wysłałem z opisem sytuacji do OLX (mają więcej danych i mogą zablokować telefon/IP/tokeny/cokolwiek oszusta). Zgłoszenie chargeback w banku wymagało najwięcej zachodu, bo w BNP Paribas w dwóch oddziałach nie przyznają się do znajomości tego trybu. Dostałem kartkę A4 na której opisałem sytuację i zażądałem chargeback, teraz czekam.

Miejcie oczy otwarte i niech się komuś nie wydaje, że skoro klika w internety od 25 lat, to nie sposób go oszukać.