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.

Drobne zmiany na planecie

Tak jest zawsze. Wszystko może działać od wieków stabilnie, ale jeśli tylko zrobię restart maszynki, mając mało czasu, to wychodzą kwiatki. Tak było i wczoraj z routerem (o tym kiedyś…), tak było i dziś z planetą Joggera. Restart dedyka przed wyjściem do pracy (o dziwo wstał bez problemu), bo już trochę długo działał i kernel stary, a ciągle zapominałem, odpalam stronę w tramwaju w drodze do pracy i… już gdzieś to widziałem.

Okazało się, że skrypt zaciągnął stare wpisy z jednego z feedów[1]. Początkowo podejrzewałem czyszczenie cache planety, który leżał w /tmp albo cache lighttpd (w ramach motywacji: wkrótce przejście na nginx), ale szybko wykluczyłem tę drugą możliwość. Cache planety był w /tmp i z tym nic nie zrobię, bo /tmp jest czyszczony przy restarcie, więc pomyślałem, że trudno i wkrótce się wyrówna.

Ale po powrocie do domu siadłem jednak do debugu. Na oko dziwna struktura feedu, który lądował na początku, ale validatory mówią, że tak może być i generalnie feed poprawny. Jedyne co się rzuca w oczy to lastBuildDate równe z datą pobrania pliku. Nie wiem, czy błąd, czy home made SEO, w każdym razie w połączeniu z brakiem informacji o dacie publikacji poszczególnych postów skutecznie chwilowo popsuło planetę[2].

W ramach mitygacji (nie kalkując z angielskiego: łagodzenia) zrobiłem dwie rzeczy. Po pierwsze, liczba postów na planecie z danego feedu jest ograniczona do trzech. Po drugie (i tego w repo nie będzie), cache wylądował poza /tmp. Czy się sprawdzi? Pożyjemy, zobaczymy. Gdyby ktoś zauważył jakieś problemy z ilością wpisów z feedu – proszę o kontakt.

[1] Dokładnie http://karbownicki.com/rss.xml

[2] Jeśli to możliwe, proszę o poprawienie tej daty.

Planeta Joggera

Jak było wspominane, Jogger się zamyka. Padł pomysł, żeby nie rozleźć się całkiem i jakoś zachować kontakt. Tym bardziej, że część ludzi się przeniosła z blogami w inne miejsce i nadal pisze. Poza tym, ma to być taki trochę pomniczek, czy też – dla wierzących/kultywujących – ołtarzyk.

Ponieważ jakieś tam doświadczenie z tworzeniem tzw. planet miałem, a niespecjalnie coś się, mimo zapowiedzi, działo ze strony oficjalnej i w ogóle pojawiły się głosy wątpiące, że coś się ruszy, to stwierdziłem, że zrobię planetę. W końcu to moment, bo gotowce gdzieś mam, wystarczy zebrać URLe. Tak powstała Planeta Joggera. Z założenia miało być open source (GitHub coraz bardziej mi się podoba, wielowymiarowo, w końcu jakiś social network z sensem…). Czyli jak się właścicielom spodoba, to skorzystają, więc powstało stosowne repozytorium na GH. A tymczasem może wisieć u mnie – serwer mam tak czy inaczej, zasobów wiele to nie potrzebuje.

Odgrzebałem stare skrypty i konfigi dotyczące planety. Zakląłem. Potem zainstalowałem planet venus i zakląłem wiele razy… Jakąś wersję udało się ostatecznie sklecić. IMO wygląda to nawet znośnie i estetycznie i robi swoją robotę, ale niesmak dot. planet venus pozostaje. Skrypt, który niby ma umieć skracać artykuły średnio chce działać. Przynajmniej dla treści strony, przynajmniej z takim formatem template, jaki jest używany. A specjalnie grzebać przy frontendzie nie chce, jednak, szczególnie, że miałoby to być tak samo, ale inaczej. Chociaż troszkę pogrzebałem i mój skill dot. CSS gwałtownie wzrósł.

Mniejsza jednak nawet o ten skrypt. Ogólnie HTTPS zwykle działa, ale dla niektórych kanałów RSS… nie działa. Zresztą, jest jeden URL, z którym jest zawsze problem, czy to po HTTP, czy po HTTPS. A nic wymyślnego – WordPress. Jeden z wielu. Jeśli myślicie, że chce mi się debugować pythonowy kod, który ostanie commity na GH ma parę lat temu, to źle myślicie. Ogólnie być może warto zmienić silnik, ale ten po pierwsze już jest. Po drugie jakoś działa, więc może kiedyś (czytaj: pewnie nie). Gdyby ktoś rozważał stawianie planety i nie miał doświadczenia z żadnym silnikiem, ani gotowców, to sugeruję raczej nie tracić czasu na testowanie planet venus, tylko przejść do innych rozwiązań. Chociaż planeta Debiana jest właśnie na tym oparta i jakoś działa…

Tak czy owak, bunkrów nie ma, ale i tak jest zajebiście i jestem zadowolony z efektu, który można zobaczyć tutaj. Można pomóc! Jest parę issues otwartych na GH, wiem, że może tego bloga czytać parę osób, które niekoniecznie zaglądają na Joggera, ale które miały tam blogi, albo chociaż czytały, więc drobny apel tutaj. Przejrzyjcie czytniki RSS i jeśli znacie jakichś bloggerów, którzy zaczynali na Joggerze, a teraz piszą gdzie indziej, to dajcie im znać. I zapraszam do dołączenia ich blogów do planety (pull request pls!). Planeta Joggera jest zrobiona maksymalnie tak, by nie kraść treści (noarchive, noindex). Więc raczej nikt nie powinien mieć nic przeciwko obecności na planecie. Ale zapytać oczywiście wypada.