O grach

Kilka dni temu dotarła do mnie informacja o wydaniu nowej wersji gry NetHack, po 12 latach przerwy. Wzięło mnie na wspominki, więc z tej okazji wpis o grach. Po pierwsze Nethack czyli gra typu roguelike. Pamiętam zakład z M., który z nas pierwszy przekroczy barierę miliona punktów. Mam save z wizardem, który ma ponad milion punktów (sprawdziliśmy komisyjnie wychodząc z gry). Pewnie już nie włączę, bo wyszedłem z wprawy, więc zapewne zginąłby po kilku-kilkunastu ruchach. Tak czy inaczej „rogaliki” były fajne. Oczywiście bez save scummingu! A najważniejszy był właśnie NetHack.

Kolejna ważna gra, to CounterStrike. W wersji 1.5. I garażowe (i nie tylko) LAN party. W przeciwieństwie do innych FPS był dość „wolny” i dość taktyczny. Bardziej drużynowy, mniej oparty na refleksie. Trochę mi zamiłowanie do tego typu rozrywki zostało, o czym dalej. No i efektem ubocznym gry w CSa była nauka Perla – mieliśmy autorski system generowania statystyk, który momentami wyprzedzał to, co oferowały dostępne gotowce (ale tylko momentami, poza tym, był dostosowany do naszych „klanów”). Dziś pewnie przestraszyłbym się, gdybym zajrzał w kod, ale było to pierwsze praktyczne użycie Perla. I działało całkiem fajnie. IIRC z braku „prawdziwego” serwera WWW dystrybucja HTMLi odbywała się mailowo w plikach zip.

A dziś? Pogrywam czasami, choć coraz rzadziej, w drobiazgi z Humble Bundle. Godny odnotowania tytuł: Faster Than Light, który jest określany jako rougelike-like (IMO niezupełnie słusznie, choć jakieś echa w klimacie są). Poza sympatią do roguelikeów zostały mi nadal związki gier z programowaniem, np. bardzo spodobał mi się pomysł CodeCombat, czyli gry i jednoczesnej nauki programowania.

Numer jeden i chyba jedyna gra, w którą obecnie gram aktywnie, to World of Tanks. Trochę rozwinięcie CSa – jest pod wieloma względami podobny – i „wolny”, i taktyczny, i drużynowy. Choć niezupełnie FPS. Jest też parę trybów rozgrywki. Ostatnio odkryłem nowe warstwy: po pierwsze gra w klanie (amatorski, for fun, średnia wieku pewnie 30+), po drugie gra z ludźmi, którzy grają… nieźle. Nie jest to poziom ESL, ale jak się zobaczy w praktyce dobre rozstawienie, taktykę i wykonanie, to gra nabiera zupełnie nowego wymiaru. Polecam.

Ostatnią ciekawą grą, o której się dowiedziałem jest Minecraft Pi, czyli serwer Minecrafta przygotowany do uruchomienia na Raspberry Pi (i zapewne podobnych komputerach z ARM). Kolejny związek z programowaniem – ma uczyć programowania w języku Python. Niezupełnie tylko rozumiem, jak jest z licencjonowaniem i klientem – odwiedziłem sklep z grami i jest tam klient Minecrafta, ale czy jest on wymagany, żeby grać w klony typu Minecraft Pi? Trochę dziwi mnie brak alternatywnych, otwartych klientów, szczególnie na Linuksa. Chyba, że źle szukałem (przyznaję, pobieżnie)? W każdym razie jest plan, żeby także tą grą się pobawić, tylko to raczej przy jakimś dłuższym urlopie…

Tyle o grach komputerowych. O niekomputerowych innym razem.

Raspberry Pi Zero

Na rynku pojawił się nowy mini komputer z procesorem ARM. Raspberry Pi Zero, bo o nim mowa, posiada:

  • CPU BCM2835 1GHz (1 rdzeń)
  • 512 MB RAM
  • slot micro-SD
  • 1 micro USB
  • 1 mini HDMI
  • GPIO zgodne z poprzednimi modelami (wymagana przejściówka z pinami)

Największe zalety to jednak minimalne wymiary i równie minimalna cena. Ma ona wynosić $5 (zobaczymy ile w praktyce w Polsce).

Raspberry Pi Zero

Źródło: https://www.raspberrypi.org/

Choć uważam, że od Raspberry Pi ogólnie ciekawsze są Banana Pi czy Orange Pi, to Raspberry Pi Zero nawet mi się podoba. Świetna cena, możliwości porównywalne z pierwszymi Raspberry. OK, trzeba dołożyć kartę sieciową na USB, ale sensowne zasilanie to i tak aktywny hub USB, a rpi z tego co pamiętam i tak miało ethernet over USB.

Sprzęt trochę słaby, patrząc z punktu widzenia bardziej linuksowego/serwerowego, (słaby procesor, mało RAM), ale Cena Czyni Cuda. Poza tym, z tego co widzę, celowany bardziej w mniejsze projekty, wręcz wearables. Więc niezupełnie fair byłoby oceniać go z perspektywy linuksowo/serwerowej. Co ciekawe, nowy produkt będzie dołączony do grudniowego wydania MagPi.

Największa wada to oczywiście nadal architektura procesora. Jest to dokładnie ten sam model, co w pierwszych modelach rpi, tylko wyżej taktowany, co oznacza, że albo korzystamy z wynalazków typu Raspbian, albo z architektury armel w np. Debianie (i wydajność cierpi), bo niestety armhf nie zadziała.

Internet rzeczy nadchodzi

Internet rzeczy jest coraz bliżej. Coraz więcej sprzętów posiada interfejsy sieciowe, przez które można nimi zarządzać, przez które mogą one wymieniać dane i… przez które można się włamać. Rozmawiałem ostatnio z ludźmi bardziej siedzącymi w temacie i wygląda to źle. Sprzęt jest słaby (w sensie mocy obliczeniowej), przez co ograniczone są implementacje bezpiecznych protokołów. Brakuje jednego wspólnego standardu zarządzania – generalnie co produkt/producent, to autorski system komunikacji, co gorsza, rzeczy są wystawiane bezpośrednio do internetu, bez ograniczenia do wydzielonej sieci lokalnej[1].

Czasem mam wrażenie, że twórcy zbyt skupili się na aspekcie elektronicznym, a zupełnie pominęli część może nie tyle programistyczną, co sieciową. Rozumiem, że SNMP nie jest jakoś bardzo powszechne w świadomości, a możliwość ustawiania danych przy jego jest jeszcze mniej znana, ale IMO nadaje się do IoT idealnie. Zresztą, nawet ustandaryzowany JSON byłby OK, a pewnie bardziej strawny dla programistów.

Gdyby już istniał standard wymiany danych, to można by zrezygnować z wystawiania rzeczy na świat. Nie mam złudzeń, sytuacja z aktualizacją rzeczy będzie wyglądać jeszcze gorzej, niż w przypadku istniejących urządzeń, a przecież z routerami czy kamerami IP już w tej chwili jest dramat. O ile o aktualizacji oprogramowania w kamerze czy routerze jeszcze ktoś pomyśli, to co z lodówką, głowicą grzejnika czy żarówką? Jakoś wątpię, by były aktualizowane, nawet, jeśli producent przewidzi taką możliwość.

Mam wizję, że rolę bramy dostępowej, czyli centrum, które uwierzytelnia użytkownika i łączy się z rzeczami pełniłby router. Po pierwsze, i tak jest na brzegu sieci, więc warto by go zabezpieczyć, zaktualizować. Po drugie, z racji miejsca ma najlepsze połączenie z zewnętrznym światem. Po trzecie, routery są/bywają stosunkowo mocnym sprzętem, szczególnie w porównaniu z rzeczami, a nawet niekoniecznie ustępują słabszym desktopom. No i zawsze można jakąś płytkę z procesorem ARM wykorzystać. Do tego parowanie certyfikatów brama-rzecz przy pierwszym uruchomieniu i jest względnie bezpiecznie, oczywiście przy wyłączeniu możliwości komunikacji z innymi hostami po parowaniu i zabezpieczeniu (aktualizowaniu) bramy.

Na koniec taka refleksja, chociaż może to tylko moje odchylenie – czy naprawdę potrzebujemy wszystkiego zautomatyzowanego i podłączonego do internetu? Rozumiem proste timery załączające urządzenia np. do grzania wody czy czy termostaty elektroniczne do sterowania ogrzewaniem, ale czy włączanie żarówek przez internet jest tak naprawdę potrzebne? Albo czy lodówka musi informować, że mleko/piwo się skończyło?

W przypadku ogrzewania z jednej strony pewnie wystarczy automatyzacja na poziomie „w dni powszednie włączaj ogrzewanie o 6:30, w weekendy o 8:00”, z drugiej jednak, przy synchronizacji ze smartfonem, można by ustawić, żeby ogrzewanie załączało się zawsze pół godziny przed budzikiem, po prostu. No i zależy, czy mieszkanie, czy dom. IMO w domu sterowanie żaluzjami i trochę bardziej zaawansowana automatyka mogą mieć sens i ekonomiczny (konkretne oszczędności), i nie widać na pierwszy rzut oka, gdzie się światło świeci. W każdym razie ja wolę jednak bardziej manualne sterowanie i do IoT się nie spieszę.

[1] Co też nie do końca jest rozwiązaniem, ponieważ przy domyślnych danych (IP, login, hasło) atakujący jest w stanie wykonać atak z lokalnej przeglądarki użytkownika – wystarczy prosty JS…