Rozrzutnik obornika

Dziś do końca dnia trzeba było zadeklarować przepracowane godziny za cały czerwiec.

Tak, do końca miesiąca jeszcze tydzień, ale życie korporacji ma swoją specyfikę: przepchnięcie wszystkich papierków, żeby przeliczyć, zatwierdzić i zadekretować wypłaty, wymaga kilku dni. No więc musimy dzisiaj wiedzieć, ile czasu przepracujemy każdego kolejnego dnia – aż do końca miesiąca.

Różne firmy różnie rozliczają czas pracy – bywałam w takich, gdzie każde pięć minut musiało wpaść w odpowiedni projekt, a pracowaliśmy przy kilku czy kilkunastu projektach równocześnie.

Tu jednak wrzucam wszystkie moje godziny w jeden ogólny projekt, więc do każdego dnia dodaję komentarz, co robiłam.

Teoretycznie codziennie wpisuję sobie czas pracy w papierowy kajecik oraz dodatkowo do zeszytu w OneNote, gdzie zaplanowałam sobie zapisywać, co danego dnia robiłam, na co ciekawego trafiłam, różne sztuczki konfiguracyjne i pomysły na później.

W praktyce jednak to nie zawsze działa – czasem jest taki zapiernicz, że nie ma czasu taczek naładować.

Ale mam git logi. 🙂

Za każdym razem, jak wrzucam jakąś zmianę czy nowy kawałek kodu do repozytorium, muszę jakoś opisać, co to i po co. Repozytoriów mam kilka, w każdym kod ma ileś gałęzi, w których pracuję nad różnymi rzeczami, dziennie zdarza się nawet kilkanaście wpisów, które można potem podejrzeć jednym poleceniem.

Jednym poleceniem – ale dla danej gałęzi kodu i w danym repozytorium. Jak tego jest kilka razy kilka(naście), to robi się trochę dużo.

Ale w końcu programuję zawodowo, a nie takie rzeczy robiliśmy ze szwagrem! (Jak ktoś nie zna historii o wierceniu dziur w stalowych rurach, to niech się kiedyś upomni. No ale do brzegu…)

Logi gita to duuużo ustrukturyzowanego tekstu. Można je automatycznie wygenerować, przefiltrować, przerobić na coś łatwiejszego do przeglądania i posortować.

No więc siadłam i napisałam sobie przez trzy i poł godziny całkiem zmyślny skrypt, który automatycznie wyciąga opisy zmian z logów każdej gałęzi kodu w repozytoriach, w których wprowadzałam w danym miesiącu jakieś zmiany, a następnie sortuje je po datach – i w ten sposób mam prawie gotową informację do wpisania w komentarze do każdego dnia.

Tyle że komentarz może mieć ze 250 znaków, a na jeden dzień przypada czasem kilkanaście wpisów, więc musiałam to jakoś poskracać i napisać syntetycznie.

Jednakowoż przy tej okazji nauczyłam się paru sztuczek w awku.

Otóż awk to taki bardzo niszowy język programowania z bardzo pokręconą składnią, którego jedynym zastosowaniem jest manipulacja plikami tekstowymi typu CSV – można przy jego użyciu zmieniać kolejność kolumn, sumować czy w inny sposób przetwarzać poszczególne kolumny w wierszach i robić dużo pokręconych rzeczy.

Ogólnie awk to taki Excel z czasów, kiedy o Excelu nikt jeszcze nie marzył. A obecnie starzy, brodaci i brzuchaci programiści używają go czasem do robienia różnych rzeczy i denerwowania młodych, chudych i pryszczatych programistów, którzy poznają tylko nowsze języki – i dla których Java, Python czy Javascript to starocie. xD

Mam podejrzenie graniczące z pewnością, że to właśnie na bazie awka (i seda oraz różnych uniksowych shelli) powstał Perl – i odziedziczył po nich pewne zawiłości składni, które powodują, że większość programistów ucieka od niego jak najdalej. Mnie to nawet do pewnego stopnia pasuje, bo powoduje, że moje kwalifikacje są unikatowe i wysoko wyceniane. 😉

Jak dotąd niespecjalnie awka potrzebowałam – ale dziś tak mi przyszło do głowy, że w sumie czemu by nie spróbować. I okazało się, że on nawet działa. A w przyszłym miesiącu wystarczy tylko odpalić skrypt i wszystko będzie jasne. 😀

Ale żeby nie było: nie jestem jeszcze aż tak zwariowana, żeby cały ten kod napisać w awku (choć pewnie by się dało – skoro można napisać serwer internetowy w języku do sterowania drukarkami…) Większość skryptu to bash. Pewnie, mogłam go napisać od początku do końca w Perlu, ale czasem warto nauczyć się czegoś nowe… no dobra, czegoś innego. 🙂

_______________

A dlaczego rozrzutnik obornika? – zapytasz.

Dawno temu – z piętnaście lat? – pisałam jakiś większy kawałek kodu, który robił coś, co nie miało sensu, utrudniał mi tylko życie, ale z jakichś przyczyn musiał zostać napisany.

Niewiele wcześniej mieliśmy niezłą aferę, bo ktoś – możliwe że klient, ale chyba raczej nawiedzony sprzedażowiec – odkrył, że w komentarzach w kodzie jednego z projektów są wyrazy powszechnie uznawane za obelżywe, i że ojejku, laboga, co będzie, jak ktoś z klientów to zobaczy?!

No więc nazwałam tamten kod rozrzutnikiem obornika – bo bardziej dosadnie nie wypadało.

Ten tu robi coś w sumie równie niepotrzebnego (bo nikt mi nie kazał tych komentarzy wypełniać). Ale tak naprawdę po dwóch godzinach od napisania już nie pamiętam, jak go nazwałam, a nie chce mi się sprawdzać. 😛

A przy okazji, droga osobo czytająca, masz dwie opowieści zamiast jednej.

I potencjalnie trzecią, wspomnianą wcześniej – w bonusie dla odważnych. 😀

Jedna odpowiedź do „Rozrzutnik obornika”

  1. Hm…. bash+sed+awk były używane na początku lat 90-tych (i wcześniej) do tego do czego Wall wymyślił perla. Jako języki skryptowe do szybkiej rzezby są ok, ale do większych rzeczy nie za bardzo sie nadaja….

    Polubienie

Dodaj komentarz