Podsumowanie DSP2017

No i po pierwszej rundzie DSP2017. Zgodnie z przewidywaniami nie dostałem się do rundy drugiej. Cieszy mnie, że dostało się tam dwóch z trzech kandydatów, na których głosowałem. Szkoda tylko, że nie było opublikowanych pełnych wyników pierwszej tury, a jedynie wyniki top25, czyli przechodzących do tury drugiej. Chętnie bym zobaczył rozkład ilości głosów.

Zadowolenie z konkursu? 75% – zmotywował mnie do urzeczywistnienia abcc, którego będę używał, nauczyłem się paru rzeczy związanych z Pythonem, poprawiłem środowisko do kodowania w domu (czytaj: pluginy do Atoma). Na mój gust nieco za dużo obowiązkowego blogowania jednak. No i projekt nie otrzymał zamierzonej formy. To ostatnie jest poniekąd spowodowane wymogiem pisania postów – parę razy było tak, że wybierałem między obowiązkową notką a napisaniem kawałka kodu…

Czy wezmę udział w kolejnej edycji (o ile będzie)? To zależy od trzech czynników. Pierwszy, to czy będę miał jakiś pomysł. Drugi, czy będzie wymagane aż tyle wpisów. Ostatni – termin. Jest wiosna, ciepło, nie ma sensu siedzieć w domu przy kompie, lepiej wyjść na zewnątrz i poruszać się trochę.

MVP

Wygląda, że projekt abcc mający za zadanie automatyczny wybór najlepszego łącza pod Linuksem właśnie stał się MVP. Znaczy można zdefiniować konfigurację, wrzucić do crona (na razie to skrypt, nie demon) i… powinno działać wg konfiguracji. Czyli można testować. 🙂

Jak pisałem w poprzednim wpisie, nie jest to wersja w 100% zgodna z założeniami, czyli nie jest skończona, ale… działa. Przynajmniej teoretycznie. Poza tym, co jest w issues.

W poprzednim wpisie celowo nie poruszyłem tematu stacji testowej. Doszedłem do wniosku, że to overkill. Jest za to mocne postanowienie uruchomienia tego na produkcji. Tak zwyczajnie i po prostu, tylko muszę najpierw poprawić konfigurację routera u rodziców, by mieć do niego zdalny dostęp.

W najbliższym czasie jeśli będą zmiany, to raczej dotyczące stylu, niż funkcjonalności. A z wpisów na blogu w tej kategorii – chyba już tylko podsumowanie DSP2017.

W zasadzie koniec

DSP2017 kończy się w najbliższą środę. W moim projekcie zastój i marazm – trochę bardziej zmęczony z pracy przychodzę w tygodniu, trochę za dobra pogoda w pozostałym czasie, trochę co innego zaprząta głowę, kupiłem też trochę książek…

Ostatnio został dorobiony licznik postów i… pojawił się mały motywator, bo okazało się, że na liczniku jest 19 postów. Znaczy być powinno, bo okazało się, że są problemy ze zliczaniem. Pojawiła się prośba o zwiększenie ilości postów w feedzie ale oczywiście Blox na takie fanaberie nie pozwala. Z kolei mój skrypt do tworzenia feeda dla pojedynczej kategorii[1] nie został niestety wyposażony w logowanie wyjścia. Co po namyśle uznałem za średnio roztropne, ale trudno, mleko się rozlało. Gdybym miał teraz koniecznie wygenerować pełny feed to albo muszę napisać generator, albo tymczasowo wyeksportować bloga z Blox na WordPressa (ma się sposoby ;-)). No ale wygląda, że nie jest to konieczne – wystarczyło zgłosić.

Tak czy inaczej, zakładając, że pozostałe posty spełniają wymogi konkursu (a powinny, bo tylko takie powinny być w kategorii), to ten wpis zamyka wymagane minimalne dwadzieścia wpisów.

Co się zmieniło? Skrypt nadal nie jest skończony, nawet w wariancie minimalnym, ale dowiedziałem się, że nieprawidłowo korzystałem z logowania. Pozbyłem się też tymczasowych printów na rzecz logowania, dodałem krótkie opcje, wygodniejsze w użyciu.

Co dalej? Na pewno chciałbym w ten weekend osiągnąć wersję minimalną, używalną z crona i aktualizacja opisu i dokumentacji. Kolejnym planowanym krokiem jest doczytanie o docstringach, dokonfigurowanie domowego Atoma i systemu tak, żeby działało sprawdzanie składni (włączyłem to w pracy – kosmos) i poprawki pod tym kątem. Raczej nie planuję skończyć przed wakacjami projektu w pierwotnie zakładanej formie – zwykle na urlopie mam dużo wolnego czasu wieczorami, więc może wtedy…

[1] Swoją drogą już niepotrzebny, bo opcja feeda dla pojedynczej kategorii wróciła na Blox.

Porównywanie tras

Dodałem porównywanie tras i poprawiłem logowanie, by było bardziej zgodne z założeniami. Nie jest to fragment kodu, który mi się szczególnie podoba i nawet nie testowałem go w praktyce (ech, przydałaby się stacja testowa…), ale oznacza to, że w zasadzie całość jest gotowa – zostało przełączenie routingu dla danej trasy, jeśli jest taka potrzeba i zrobienie demona. W zasadzie przełączenie może być analogiczne jak przy tymczasowej zmianie routingu dla pojedynczego IP – jeszcze przemyślę, czy na pewno tak jest.

Czytanie aktualnego routingu

Dodałem czytanie aktualnego routingu. Żadnej magii – wywołanie ip route i parsowanie regexpem tylko tych, które mają via. Raczej PoC i będą wymagane testy. I poprawki. Na pewno przydałoby się sprawdzanie, czy dana trasa jest zdefiniowana dokładnie raz. Zastanawiam się, czy słusznie używam check_output. W sumie bezpieczniej chyba przyjąć cokolwiek i najwyżej nie mieć dopasowania już po stronie skryptu, niż dostać wyjątek. Do przemyślenia później, na razie jest z czym iść do przodu.

PS Stacji chwilowo nie robię – naszło mnie na kodzenie.