Ergonomia maca – system i software

W poprzednim wpisie o podobnym tytule było o hardware maców, pora zająć się softem i systemem. Będzie z ponad półrocznej perspektywy, ale muszę przyznać, że niewiele się od pierwszego wrażenia zmieniło. A nie ukrywam, że jestem rozczarowany. Mocno rozczarowany.

Pierwsze na co się naciąłem korzystając z macowego filesystemu to fakt, że jest prawie case sensitive. Prawie. Otóż lubię robić symlink download -> Download, bo wygodniej się wpisuje bez shift w konsoli. I co? I nie da się. Nawet nie ma sensownego komunikatu o błędzie.

Spotkałem się z opiniami, że maci są wygodne, dopracowane, a system jest przyjazny. Tymczasem konfiguracja wyglądu kuleje i nie daje miejsca na dostosowanie do indywidualnych preferencji, nawet w podstawowym zakresie.

Pasek z zegarkiem, statusem Wi-Fi, stanem baterii itp. musi być u góry. Nie da się przesunąć go na dół i sprawdzić, by zawsze był widoczny. Nie i już – musi być u góry, a o tym, że ktoś chciałby cały czas mieć dostęp do zegarka itp. również jakby nie pomyślano – o tym niżej.

Na dole jest z kolei dock, który IMO jest totalnie nieprzydatny i – jak pisała Yzoja – zachowuje się dziwnie i nielogicznie. Na szczęście da się skonfigurować jego ukrywanie, więc kontakt z nim ogranicza się w zasadzie do „skaczących” powiadomień. Może są one ładne, ale na dłuższą metę irytujące. Na szczęście nie wyskakują często.

Przyciski do maksymalizacji, minimalizacji okien są po lewej stronie belki okna i nie da się tego zmienić. Dodatkowo brakuje przycisku do maksymalizacji okna takiej, aby pasek statusu był widoczny. Da się to osiągnąć klikając na belce okna, ale przycisku nie ma, a domyślna maksymalizacja ukrywa pasek z zegarkiem i nie da się tego zmienić konfiguracją. Jak dla mnie poświęcenie kikunastu pikseli ekranu to niewielka cena za stały dostęp do skrótu uruchamiania programów, statusu programu i kilku innych informacji.

Systemowy zegarek. Gdy zobaczyłem, że kliknięcie w zegarek nie pokazuje kalendarza, zupełnie zwątpiłem w zdrowy rozsądek twórców systemu. Funkcja bardzo przydatna, obecna i w Linuksie, i w Windows, nawet nie sądziłem, że tak często z niej korzystam. Nie znalazłem fajnego darmowego rozwiązania, które naprawia ten problem, ale przyznaję, że szukałem pobieżnie – i tak mam cały czas w pracy otwarty Google Calendar.

Przełączanie między programami – pisałem, że mi się podoba, bo przełącza nie kolejno, tylko na ostatnio używane, co jest nawet fajne. Niestety, jeśli mamy uruchomione dwie instancje tego samego programu, np. Firefox z dwoma różnymi profilami, to przełączanie cmd-tab nie działa między nimi i trzeba korzystać z innego skrótu: cmd-`. Czyli najpierw cmd-tab, by wybrać Firefoksa, potem cmd-`, by wybrać instancję. Korzystam na szczęście rzadko, bo jest to wyjątkowo niewygodne. Oczywiście możliwości zmiany zachowania brak. Jak cmd-c i cmd-v działające między wszystkimi aplikacjami są plusem, tak ww. jest analogicznym minusem. IMO bardziej upierdliwym.

Aplikacje i ich instalacja. Yzoja nazwała instalator aplikacji żartem dla kilkulatków. Faktycznie jest fatalnie. Oczywista wada w stosunku do Linuksa to brak centralnego zarządzania pakietami – nie da się jednym poleceniem/kliknięciem zaktualizować wszystkich aplikacji – wymagana jest instalacja każdego programu z osobna, a aktualizacje żyją własnym życiem. Miało być łatwo (przeciągnięcie w celu instalacji), wyszło koślawo, bo każda aplikacja realizuje to trochę inaczej (np. pozwalając na różne wersje tej samej aplikacji lub nie), są też aplikacje instalowane zupełnie inaczej (brew, macports). Czyli nie jest to jeden sposób instalacji. Dodatkowo kwestię instalacji nowych wersji komplikuje wymuszanie zamknięcia działających instancji. A czasem po prostu wygodniej jest zainstalować nowszą wersję, dokończyć pracę w starej i dopiero wtedy zrobić restart.

Stabilność aplikacji pozostawia wiele do życzenia. LibreOffice Calc z arkuszem kalkulacyjnym, nawet pustym, wiesza mi się po kilkunastu sekundach. Na szczęście nie potrzebuję arkusza, tj. mam online. Może reinstalacja pomoże, tylko zastanawiam się, co poszło nie tak, bo wersję mam najnowszą…

Virtualbox nie jest szybki (w porównaniu z natywnym linuksowym KVM), ale to jakby niekrytyczne i jestem w stanie wybaczyć. Za to po wybudzeniu z uśpienia zużywał 100% CPU i powodował radosne wycie wiatraków, a tego wybaczyć nie mogę. Drążyłem temat, dobrzy ludzie z supportu desktopów w firmie podpowiedzieli polecenia diagnostyczne (konsola, dużo konsoli), w logach padały często odniesienia do dźwięku i faktycznie – po wyłączeniu dźwięku w wirtualkach jest spokój. Ponieważ moje VMki to raczej serwery, to brak dźwięku w nich mnie nie boli, ale wada pozostaje wadą.

Skoro przy dźwięku jesteśmy to kolejna sprawa. Korzystam ze stacji dokującej (Belkin), do której podłączone mam słuchawki. Po odłączeniu od stacji dźwięk przełącza się na wbudowane głośniki, po podpięciu z powrotem do stacji wraca na słuchawki. Prawie zawsze, bo czasem nie wróci i trzeba klikać w ustawieniach systemowych. Urządzenie jest widoczne, więc nie wiem o co mu chodzi.

Ja rozumiem, że I don’t like the bugs, but the bugs like me zobowiązuje, ale jak dla mnie macOS łączy najgorsze cechy Windowsa i Linuksa i zdecydowanie daleko mu do wygodnego, bezproblemowego systemu, działającego OOTB, jak niektórzy próbują go przedstawać. YMMV

Taskwarrior

Istnieją różne sposoby doprowadzania do realizacji celów/zadań i narzędzia wspomagające to zadanie. Nie fetyszyzuję realizacji zadań[1], nie przepadam za poradnikami i metodykami, chyba w życiu nie przeczytałem poradnika w formie książki. Bardziej jestem zwolennikiem zapoznania się jak ktoś coś robi i wyciągnięcia własnych wniosków, ew. przyjęcia fragmentów rozwiązań. Czyli luźna inspiracja.

Zdarzają się jednak sytuacje, kiedy na realizacji czegoś zależy mi trochę bardziej. Rzeczy ważne, ale nie pilne, albo zwyczajnie takie, które wylatują z głowy. Albo takie, które chciałbym zrealizować, jeśli akurat będę miał czas. Niezależnie od typu zadań i motywacji (prywatnie czy zawodowo), zawsze wysoko na liście narzędzi wspomagających była u mnie lista. Zwykła lista na kartce papieru, gdzie zadania są wykreślane/odptaszkowywane[2]. Bez większej filozofii, czy lista ma być numerowana, czy zadania sortowane wg priorytetu, a papier czysty czy w kratkę. Po prostu lista, idealnie jeśli mieści się na pojedynczej kartce – od razu widać co jest do zrobienia.

Taskwarrior lista zadań w wersji z priorytetami i datami; theme dark-16. Źródło: https://taskwarrior.org/docs/themes.html

Okazało się, że istnieje narzędzie open source Taskwarrior, które dobrze wpisuje się w takie podejście w wersji komputerowej. Działa także w konsoli. Opcji tak naprawdę jest znacznie więcej, jeśli ktoś potrzebuje, ale w najprostszej wersji jest to właśnie elektroniczny odpowiednik wykreślanej listy, równie prosty w użyciu. Taskwarrior nie jest związany z żadną konkretną metodyką realizacji projektów i… jeśli ktoś chce, to pozwala na trochę więcej, niż zwykła lista.

Z taskwarriora zacząłem korzystać ponad rok temu, używam go głównie do rzeczy nie posiadających własnej listy TODO[3], które łatwo zrealizować, jeśli się o nich akurat pamięta i ma chwilę czasu, a zapisanie zajmuje znacząco mniej czasu, niż realizacja. Ostatni warunek to mały prztyczek w nos dla różnych metod, które mają narzut porównywalny z zadaniami, których realizację „wspomagają”. Do narzutu zaliczam zapoznanie się z metodą i jej naukę. 😉

Z taskwarriora można korzystać w wersji standalone[4], można jednak mieć wspólne dane za pośrednictwem taskserver AKA taskd. Również jest open source, daje niezależność od zewnętrznych dostawców, więc chroni naszą prywatność – żadna duża firma nie ma wglądu, czym się zajmujemy i nie będzie nas profilować. Możemy uruchomić go na dowolnym serwerze w sieci, albo nawet z domu. Konfiguracja serwera jest nieco długa/skomplikowana, ale także tu pomaga dobra dokumentacja projektu. Istnieje appka dla Androida, ogłoszona w 2016.

Użycie taskwarriora w najprostszej postaci można sprowadzić do kilku oczywistych poleceń:

  • task add – dodanie zadania
  • task done – oznaczenie jako wykonane
  • task list – wyświetlenie listy zadań
  • task delete – usunięcie zadania z listy (bez realizacji)

Więcej ciekawych poleceń, zwł. dotyczących zestawień wykonanych zadań można obejrzeć na stronie projektu w dziale motywów kolorystycznych. Ładny dodatek, ale bez wpływu na podstawową funkcjonalność.

Jeśli ktoś nie zna, a lubi wspomagać się listą zadań, to polecam wypróbowanie tego oprogramowania. Bardzo niska bariera wejścia, open source. Jeśli ktoś potrzebuje więcej możliwości typu kolejność zadań, grupowanie w projekty, tagowanie, uwzględnienie dat czy zestawienia, to również są takie opcje.

[1] Wiadomo, że są zadania, które trzeba zrealizować, na dodatek w określonym terminie np. odnowienie ubezpieczenia samochodu. Część z nich jednak jest dyskusyjna, np. przetestowanie Cloudflare na blogu. Fajnie byłoby to zrobić, ale nie jest to niezbędne. Ogólnie wiele rzeczy nie jest niezbędne, czasem zwyczajnie warto odpuścić i poczytać książkę w tym czasie.
[2] Tak, dla ortodoksów to już pewnie dwa sposoby, tym bardziej, że wersję odptaszkowywaną stosuję w wersji z trzema wariantami: zrobione (v), częściowo/w trakcie (~) i nie wykonane/porzuć (-).
[3] Np. notatki dla bloga mają swoje TODO w postaci szkiców, więc na listę taskwarriora raczej nie trafią, chyba że jakieś wyjątkowo ważne, powiązane z zadaniem lub do zrobienia w określonym terminie.
[4] I właśnie z wersji standalone w konsoli korzystam. Konsolę mam zawsze pod ręką, jeśli jestem przy komputerze.

Advent of Code

Dowiedziałem się, że jest coś takiego jak Advent of Code. Czyli kalendarz adwentowy, tylko zamiast łakoci są zadania programistyczne do rozwiązania. Dwa dziennie, liczy się i fakt rozwiązania, i czas. Rozwiązywać można w dowolnym języku, weryfikacja rozwiązania jest przez podanie wyniku.

Podobno maja być z różnych dziedzin i o różnym poziomie trudności – dziś były bardzo proste. Zrobiłem w Pythonie, potem lepszą wersję, potem jedno w Perlu, jako krótki oneliner.

Jest rywalizacja globalna, ale można też tworzyć prywatne rywalizacje i porównywać się ze znajomymi. Ja bawię się z ludźmi z pracy, choć sporo z nich utrudniło sobie wyzwanie i poznaje przy okazji nowy język. Ale ja nie jestem programistą… 😉

Trochę skojarzenie z konkursami programistycznymi, którymi bawiłem się na studiach. Żeby nie było samych zalet – mimo, że każdy uczestnik ma inne dane wejściowe, to czas rozwiązania liczy się od publikacji zadania, które ma miejsce o północy w dziwnej strefie czasowej, co pewnie faworyzuje niektóre lokalizacje geograficzne. Ale nie ma to większego znaczenia w przypadku zabawy ze znajomymi.

Polecam zerknięcie – można sobie odświeżyć umiejętności programistyczne, poćwiczyć i przede wszystkim pobawić się.

Lynis – narzędzie do audytu bezpieczeństwa systemów Linux

Czasem zdarza się, że znajdę jakieś stare, fajne narzędzie, którego nie znałem wcześniej. Tak jest w przypadku Lynis – programu open source napisanego przez CISOfy służącego do audytu bezpieczeństwa systemu na podstawie bieżących ustawień. Przypadkiem, na komórce w tramwaju mignął mi wpis o nim gdzieś w sieci, opis był ciekawy, więc postanowiłem dać szansę, choć od dłuższego czasu nie interesowałem się podobnymi programami. Kiedyś, na początku przygody z Linuksem bawiłem się Bastille Linux i to w zasadzie wszystko, jeśli chodzi o automaty.

Działanie Lynis sprawdzałem tylko na Debianie i Ubuntu – działa bardzo sprawnie, generuje sensowne raporty z uwzględnieniem specyfiki dystrybucji. Przy każdym raporcie jest link do krótkiego opisu z wytłumaczeniem danej opcji. Dla początkujących jest to dobra okazja do poczytania nt. ustawień i ich wpływu na bezpieczeństwo systemu, dla zaawansowanych automat, który sprawdzi, czy czegoś nie przeoczyliśmy lub nie zapomnieliśmy włączyć np. po testach.

Program jest dostępny jako pakiet, więc instalacja sprowadza się do:

apt-get install lynis

Uruchomienie audytu również jest proste:

lynis audit system

Polecam dodanie przełącznika -Q. Program jedynie generuje raport, niczego nie zmienia w systemie, więc uruchomienie jest bezpieczne. Wynik wyświetla na ekran oraz do logu, znajdziemy tam zarówno znalezione błędy, ostrzeżenia, jak i wskazówki do hardeningu systemu.

Narzędzie ma zastosowanie raczej dla systemów, prywatnych,  utrzymywanych ręcznie – te konfigurowane automatycznie raczej nie mają miejsca na powstanie błędu, a forma raportu jest raczej przyjazna dla ludzi, niż maszyn.

Oczywiście przy domyślnej konfiguracji zgłosi także odstępstwa od normy, które są zamierzone albo nieistotne, więc wynik będzie nieco przegadany. Mimo to polecam wypróbowanie samodzielnie.

Mail RBL checker (Python)

Tak się zdarzyło w ostatnim czasie, że w paru miejscach pojawiły się problemy z dostarczaniem maili. Prawdopodobna przyczyna niedocierania poczty była ta sama – obecność IP serwera pocztowego na RBL. Przypomniały mi się stare czasy i walka z wypisywaniem IP z RBL oraz różne metody zapobiegania dostawania się na RBLe.

Zanim jednak zaczniemy cokolwiek robić, trzeba wiedzieć, że jesteśmy na RBLu, czyli monitorować obecność IP serwera pocztowego na RBL. Do szybkich, ręcznych, doraźnych sprawdzeń pojedynczych IP polecam stronę Multi-RBL Check, nie rozwiązuje to jednak tematu ciągłego, automatycznego monitoringu obecności IP na RBLach, np. przy pomocy Zabbiksa.

Sam monitoring jest trywialny – wystarczy odpytywać przy pomocy DNS, warto to jednak jakoś „opakować”. Napisałem to ze dwa razy w życiu (IIRC oba w Perlu), napiszę więc i trzeci, tym razem w Pythonie. Oczywiście podobnych rozwiązań na GitHubie jest wiele, ale w każdym coś mi nie pasowało – albo język, albo rozbudowane zależności, albo sposób przekazywnia informacji. To ostatnie to w sumie detal, łatwo można przefiltrować informacje przy pomocy grep lub awk.

W każdym razie, wczoraj opublikowałem mail-rbl-monitor. Zdecydowanie nie jest skończony, a struktura wynika z przygotowania pod przyszłe funkcje. Znaczy sprawdzanie listy IP pobieranej z pliku.

Wkrótce temat pokrewny, ale nieco trudniejszy – monitoring reputacji IP serwerów pocztowych.