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ź na “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 odpowiedź do futrzak Anuluj pisanie odpowiedzi