Zatrzymanie planety

Niedawno napisałem, że planeta weszła na dach. Jest to nawiązanie do pewnego dowcipu, który w jednej z późniejszych odpowiedzi zacytowałem. Dowcip najbardziej kojarzę z ostatniego odcinka drugiego sezonu serialu Przystanek Alaska pod tytułem Slow dance i jest tam genialnie podany.

Jednak do rzeczy. Planeta Joggera została uruchomiona prawie równo dziewięć lat temu. Już wtedy Planet Venus, czyli oprogramowanie, o które jest oparta, wyglądało na nierozwijane. Ale znałem je i były pakiety w Debianie, więc uznałem, że jest to jakoś utrzymywane i łatwo dostępne. Liczyłem, że w tak zwanym międzyczasie znajdę jakąś rozwijaną alternatywę. Albo sam wprowadzę zmiany.

W międzyczasie zauważyłem, że są problemy z kodowaniem, które zwalałem na obsługę UTF-8 w Pythonie 2. Nawet robiłem jakieś podejście do naprawy, bez sukcesu. A na przepisywanie na Pythona 3 nie miałem czasu.

Fast forward. Zgłoszenie błędu pewnie jest bliższe prawdy. Problem nie jest z UTF-8, a z emoji. Jednak nie w tym rzecz. Silnik działa na Pythonie 2, który jest nierozwijany od lat. Debian, na którym jest to aktualnie uruchomiony, jest prehistoryczny, bez wsparcia bezpieczeństwa. Zaraz wychodzi kolejna wersja i będzie mnie to uwierać jeszcze bardziej. Nie jest to coś, co chcę mieć uruchomione na serwerze, nawet w kontenerze.

Próbowałem napisać własny prosty parser feedów w Pythonie. W końcu robiłem to parę razy. Nie jest to niby trudne, ale… Formatów feedów jest wiele. I czym innym jest pobranie informacji z feedu, co robiłem dotychczas, a czym innym pobranie HTML. W grę wchodzą błędy bezpieczeństwa (XSSy i podobne atrakcje), konieczność poprawy linków na bezwzględne. Format niby jest standardowy i jest do tego feedparser, ale różni się znacznie między feedami blogów z których składa się planeta. Last but not least, jeden feed to nie zbiór feedów, jakiś cache by tu się przydał.

Wspominałem, że popularna i polecana biblioteka do tzw. sanityzacji HTML w Pythonie bleach, nie jest już rozwijana? Nadal działa, ale… No i nie korzysta się z tego tak po prostu. Co z tego, że zrobię sanityzację linków do obrazków, jeśli zamiast zdjęcia wyświetli się kod HTML. Wygląda to fatalnie. Mogę usunąć te tagi i wtedy po prostu nie będzie zdjęć. Też średnio.

Kolejna sprawa: ruch. O ile planeta ma stały ruch – i przyznaję, że sam często korzystam w ten sposób – to jest on niewielki.

Ostatnia sprawa: czas. Po tym, jak znowu spędziłem z godzinę na szukaniu alternatyw i kolejną na próbach napisania własnego parsera stwierdzam, że nie mam czasu. OK, nauczyłem się nieco o parsowaniu feedów i sanityzacji w Pythonie. Znalazłem alternatywny soft w Ruby, nierozwijany od raptem 5 lat, czyli w porównaniu – nówka. No ale nie jestem przekonany do niego. I nie mam teraz czasu na zabawę.

Co wchodzi w grę dalej:

  • Uruchomienie planety na innej domenie, niezależnie od wybranego silnika. Rozwiązuje – w sumie tylko mój – problem z XSS itp. Nawet mam domenę i serwer. Mógłbym luźniej podejść do sanityzacji. Tylko nadal, to będzie słaby, niebezpieczny soft. I trzeba go napisać.
  • Prosta planeta, gdzie będą tylko tytuły i daty wpisów. Może tekstowy fragment opisu, bez formatowania HTML. Przyznaję, że ma to swoje zalety, jeśli chodzi o pisanie kodu i jest mi blisko do tego rozwiązania. Nadal, trzeba napisać, przetestować, uruchomić.
  • Ktoś z większym zapałem przejmuje planetę. W sumie oczywista oczywistość, cała konfiguracja i wszystkie potrzebne pliki są dostępna na GitHub.

Tymczasem w najbliższym czasie Planeta przestanie aktualizować wpisy. Nie wyłączam zupełnie, bo jest tam trochę linków do blogów. Nie podjąłem decyzji o wyłączeniu (w końcu finalnie to statyczny plik HTML, więc co tu wyłączać). Jako ołtarzyk – zostaje.

Debian Bookworm

Debian 12 o nazwie Bookworm został wydany niemal dwa miesiące temu. Zapomniałem o wpisie z tej okazji, choć większość systemów (kilka desktopów, kilka serwerów) już zaktualizowałem. Może dlatego, że aktualizacja bezproblemowa, żeby nie powiedzieć nudna. Zatem zgodnie z tradycją, wrażenia z aktualizacji.

Przy aktualizacji do Bookworm warto pamiętać o dwóch istotnych zmianach:

  1. Niewolne firmware zostały przeniesione z non-free do non-free-firmware. Jeśli korzystamy, to warto dodać stosowny wpis w sources.list. I przy okazji można pomyśleć, czy potrzebujemy non-free. Jeśli nie, można usunąć.
  2. W związku ze zmianami w pakietach, pojawił się osobny pakiet systemd-resolved. Teoretycznie nie powinien być potrzebny, bo w domyślnej konfiguracji rozwiązywanie nazw nie korzystało z rozwiązania systemd. W praktyce na paru – ale nie wszystkich – VMkach resolvowanie DNS przestało mi działać, a doinstalowanie systemd-resolved rozwiązało problem. Polecam zatem pobranie go przed rozpoczęciem aktualizacji[1]:

wget http://ftp.de.debian.org/debian/pool/main/s/systemd/systemd-resolved_252.12-1~deb12u1_amd64.deb

Gdyby rozwiązywanie nazw nie działało po aktualizacji, będzie pod ręką i wystarczy wtedy

dpkg -i systemd-resolved_252.12-1~deb12u1_amd64.deb

W przeciwnym razie będziemy zmuszeni do drobnej kombinacji z dostarczeniem pakietu przy nie do końca działającej sieci. Co nie jest trudne, ale nieco bardziej niewygodne.

[1] Wersja dla amd64, pozostałe architektury dostępne na https://packages.debian.org/bookworm/systemd-resolved

Instalacja drukarki HP DeskJet 920c na Linuksie

Zauważyłem skandaliczne zaniedbanie: nie mam żadnego wpisu o Linuksie i drukarkach na blogu. Jest jeden jedyny ślad w postaci opisu zużycia prądu przez HP DeskJet 854c na eksperymentalnym blogu wattmeter. A przecież drukarki to taki wdzięczny temat. Można pisać tomy o praktykach rynkowych producentów, czyli dymaniu konsumentów, o wolności, o ekologii… Last but not least drukarka miała ważny wkład w powstanie wolnego oprogramowania. Przy okazji, jeśli ktoś nie czytał Free as in Freedom, to polecam, jest dostępne za darmo.

Tym razem jednak będzie nieco mniej wodolejstwa, a więcej techniki. Nowoczesny sprzęt nieco odmówił posłuszeństwa i musiałem wrócić do korzeni, czyli tytułowej drukarki. W dodatku instalując ją na nowym sprzęcie. Instalacja drukarki na Linuksie jest prosta, ale system działa latami bez reinstalacji, więc stwierdziłem, że po prostu nie pamiętam jak to zrobić. Świetny pretekst do zrobienia wpisu.

HP deskjet 920c

Źródło: https://www.recycledgoods.com/

O DeskJet 920c słów parę

HP DeskJet 920c to stara drukarka atramentowa. Ma te same kartridże co 854c, ze zintegrowanymi głowicami, co przeważyło o jej przyjęciu. Trafiła do mnie bowiem jako sprzęt przestarzały moralnie. Ot, kiedyś ktoś w firmie kupił nowy, lepszy sprzęt i oddawał stary. Tymczasem ja drukuję niewiele, a wieki temu nauczyłem się szybko i skutecznie napełniać kolor czarny w tych kartridżach i od tej pory jestem wierny HP. Tym bardziej, że tolerancja na różne tusze uzupełniające też jest spora. Co prawda staram się trzymać w miarę możliwości przeznaczonych do tego modelu lub linii, ale różnie z tym bywało. A drukuje zawsze dobrze, cokolwiek wleję.

Kolor niby napełnia się analogicznie, ale wychodziło mi to gorzej i drukowało zawsze nieidealnie – jakieś przerwy, paski itp. Może mniej używane i głowica zaschła? W każdym razie dwa czy trzy razy podchodziłem do tematu i mimo różnych tricków, które działały dla tuszu czarnego, nigdy nie było dobrze. Ponieważ niespecjalnie potrzebowałem koloru, zniechęciłem się i zaprzestałem dalszych prób.

Podłączenie i instalacja

Instalacja przeprowadzona została na Debianie Bullseye, ale z tego co pamiętam wcześniej wyglądała analogicznie.

Po podłączeniu drukarki lsusb pokazuje:

Bus 003 Device 006: ID 03f0:1504 HP, Inc DeskJet 920c

natomiast dmesg:

[ 165.918646] usb 3-1.4: new full-speed USB device number 6 using ehci-pci
[ 166.079696] usb 3-1.4: New USB device found, idVendor=03f0, idProduct=1504, bcdDevice= 1.00
[ 166.079706] usb 3-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 166.079712] usb 3-1.4: Product: DeskJet 920C
[ 166.079715] usb 3-1.4: Manufacturer: Hewlett-Packard
[ 166.079719] usb 3-1.4: SerialNumber: CN1596C025BI
[ 166.111410] usblp 3-1.4:1.0: usblp1: USB Bidirectional printer dev 6 if 0 alt 0 proto 2 vid 0x03F0 pid 0x1504

Najpierw instalujemy pakiety, a w zasadzie pakiet. CUPS zostanie doinstalowany w ramach spełniania zależności.

apt install hplip

Następnie dodajemy wybranego użytkownika USER do grupy z uprawnieniami administracyjnymi do drukarki.

adduser USER lpadmin

Resztę można wyklikać. I tak jest najłatwiej. Aby dostać się do interfejsu zarządzania CUPS, w przeglądarce wchodzimy na http://localhost:631 Przechodzimy do administration, wybieramy add printer. Uwierzytelniamy się jako użytkownik, któremu wcześniej przyznaliśmy dostęp. I działamy, czyli w zasadzie klikamy continue. Seria zrzutów ekranu poniżej.

Wybieramy lokalną drukarkę:

CUPS wybór drukarki HP DeskJet 920c

Ustawiamy jej nazwę:

CUPS - nadanie nazwy drukarki

Jeśli chcemy, możemy także w tym miejscu ustawić udostępnianie drukarki.
Następnie wybieramy sterownik drukarki:

CUPS - wybór sterownika

Nie wiem, czemu pokazał tyle sterowników. Wybrałem pierwszy z brzegu.
Na koniec ustawiamy domyślne ustawienia drukowania:

CUPS - wybór domyślnych ustawień drukowania

I to tyle, jeśli chodzi o instalację HP DeskJet 920c na Linuksie. Od tej pory możemy korzystać z drukarki.