Chciałbym zabrać Cię, czytelniku w małą podróż sentymentalną. Gdy byłem małym chłopcem, mój Tata opowiedział mi o programie telewizyjnym „Zrób to sam”. Dowiedziałem się, iż pokazywano w nim, jak tworzyć przedmioty codziennego użytku z ogólnie dostępnych materiałów i narzędzi. Niestety w tamtym momencie program nie był już emitowany od ponad 25 lat. Nie minęło jednak wiele czasu, gdy tata wręczył mi starą, lekko rozpadającą się książkę z pożółkłymi kartkami…
„Aby budować, trzeba poznawać, aby poznawać, trzeba po prostu być ciekawym. Współczesny świat techniki jest nie mniej interesujący niż świat opisany w dawnych najpiękniejszych baśniach. Ale tą techniką kierują przeważnie „zręczne ręce” odpowiednio przeszkolonych ludzi”.
Adam SłodowyTymi słowami Adam Słodowy wita czytelnika swojej książki „Lubię Majsterkować”. Choć pierwszy raz została wydana w roku 1963 do tej pory zaciekawia ponadczasowością. „Współczesny świat techniki” wtedy i dziś oznacza wprawdzie całkiem inny świat. Obecnie, szczelnie zamknięte obudowy skrywają gęsto upakowaną elektronikę. Przedmiotów codziennego użytku już nie opłaca się naprawiać, ponieważ są tanie i łatwo dostępne, a nowinki technologiczne są dostępne w każdym sklepie z elektroniką.
Co ma majsterkowanie do programowania? To łatwe. Wystarczy zamienić zabawki i narzędzia użytkowe na skrypty i programy ułatwiające codzienną pracę oraz obowiązki. Cel mojego artykułu jest bardzo podobny do przesłania płynącego ze wspomnianej książki – pobudzenie wyobraźni twórcy i budowanie kompetencji przez małe wyzwania. Niezależnie od tego, czy jesteś studentem, juniorem czy doświadczonym programistą na każdym poziomie programowania możesz poczuć zew majsterkowicza. Każdy z nas konfiguruje swoje IDE, środowisko czy narzędzia pracy. Ile razy zdobywamy się na zrobienie czegoś samemu, zdając się na własną pomysłowość? Ile razy uzupełniamy narzędzia o brakującą funkcjonalność? Albo robimy „po swojemu”, bo, po prostu, możemy?
Zachęcam, aby szukać okazji do technicznego majsterkowania. A w międzyczasie, poznaj moje mikro-projekty, które po maksymalnie kilkugodzinnym nakładzie pracy wyręczają mnie w codziennie powtarzanych czynnościach.
Pull Requesty
W ecomie podczas prac projektowych korzystamy z serwera Bitbucket. Umożliwia on sprawną pracę na repozytorium gitowym kilku zespołów developerskich jednocześnie. To nieoceniona pomoc przy wielopoziomowych projektach. Po napisaniu kodu związanego z zadaniem, należy utworzyć Pull Request do odpowiedniego brancha (czyli prośbę o ściągnięcie kodu do odpowiedniej gałęzi).
Serwer po utworzeniu Pull Requesta nie wskazywał brancha źródłowego i docelowego. Utrudniało to rozróżnianie poszczególnych Pull Requestów przy Code Review. Najprostszym rozwiązaniem zdała się być funkcja uzupełniania nazwy przy tworzeniu PR, która była wyświetlana. I tak zrobiłem. Proces ten zautomatyzowałem korzystając z rozszerzenia do Chrome – Tampermonkey.
Jak to działa? Kilka linii skryptu odnajduje w drzewie DOM nazwy branchy, łączy je i uzupełnia pole z nazwą nowego PRa. Pozwala to zaoszczędzić cenny czas i nerwy. Żmudne wpisywanie nazw branchy przy każdym nowym Pull Requeście to już historia. Takie rozwiązanie wprowadziło spójne nazewnictwo, ponieważ nazwa zawsze jest formatowana w ten sam sposób. w tej chwili twórcy Bitbucketa dodają nazwę brancha docelowego do listy PRów. Kto wie, może usłyszeli o naszym wyzwaniu i zaproponowali własne rozwiązanie?
Przed
Po
TeamCity
Serwer TeamCity, który zarządza buildami i Continuous Integration prezentuje listę zakolejkowanych buildów. Developerzy często poszukują tych, które zawierają lub są wywołane przez zmiany w kodzie źródłowym.
Przy użyciu tego samego rozszerzenia do przeglądarki, co w poprzednim punkcie (tj. Tampermonkey), automatycznie dodawane są style do wiersza, który najbardziej nas interesuje. Ten sposób można wykorzystać do dostosowywania dowolnych stron internetowych. Dzięki temu choćby w przypadku najdłuższej listy możemy z łatwością dostrzec wiersz, którego szukamy. Szybciej niż najbystrzejsze ludzkie oko w biurze.
Randoman
W moim zespole developerskim często pojawiają się sytuacje, kiedy to trzeba wyznaczyć jedną osobę odpowiedzialną za jakieś zadanie. A zdarza się, iż chętnych jest więcej niż rzeczywiście potrzeba. Do tej pory korzystaliśmy ze stron internetowych, które generują losowe liczby. Takie loteryjne rozwiązanie pozwalało niezawiśle podejmować decyzje. Niestety, podczas spotkań nie było to zbyt wygodne – otwarcie przeglądarki, szukanie strony internetowej i wpisywanie danych wejściowych.
Na to wyzwanie również znalazłem rozwiązanie. Odpowiedzią okazał się prosty ChatBot zintegrowany z naszym ogólnofirmowym komunikatorem Microsoft Teams. Wystarczy do niego napisać wiadomość z zakresem liczb lub listą imion. W odpowiedzi otrzymamy wylosowaną wartość.
Forum checker
Na dziecięcym podwórku nie brakowało miejsc do gry w piłkę nożną. Na moją niekorzyść ja marzyłem o graniu w kosza. W tym przypadku infrastruktura nie była tak rozbudowana, jak boiska z dwoma bramkami. Dopiero niedawno trafiłem na grupę społecznościową, która wynajmowała halę do gry w kosza i z największym zapałem, co tydzień spotykała się na rozgrywkę. System rezerwacji opierał się o forum dyskusyjne. Polegało to na tym, iż administrator dawał znać o terminie najbliższej rezerwacji i… następował wyścig. Miejsc było 12, a chętnych drugie tyle. Na niekorzyść chętnych, nikt nie znał dnia ani godziny otwarcia zapisów. A ja nie mogłem pozwolić sobie na czekanie i odświeżanie strony z nadzieją na otwarcie zapisów. Dlatego postanowiłem rozwiązać tę sytuację.
Z pomocą przyszły Azure Functions. Pozwalają one, nie ingerując w infrastrukturę, pisać kod w chmurze. Wystarczy napisać kawałek kodu w np. JavaScript lub C# i wybrać sposób wywoływania funkcji (np. zgodnie z harmonogramem lub dzięki HTTP Requestu). W określonych przedziałach czasowych sprawdzane były otwarte wątki na forum. W momencie, kiedy pojawiał się nowy termin rozgrywek, natychmiast otrzymywałem powiadomienie i mogłem się zapisać. Niestety taką przewagę miałem tylko podczas zapisów – na boisku musiałem biegać jak inni.
Podsumowanie
Lubię majsterkować w IT, a powyższe rozwiązania to zaledwie część moich projektów „na boku”. Nie są idealne, czasami na wyrost, ale to, co je łączy to satysfakcja, jaką czerpię z ich tworzenia. Nie miałem okazji oglądać programu Adama Słodowego w telewizji, ale mimo to, jego postać zainspirowała mnie do majsterkowania w domowym warsztacie i rozbudziła dziecięcą wyobraźnię. Z tego miejsca chciałbym zachęcić do majsterkowania przy użyciu klawiatury, a nie tylko wiertarki i młotka.
"Każdy z Was, budując zabawkę czy sprzęt użytkowy jest samodzielnym konstruktorem. Konstruktor w prawdzie korzysta z cudzych doświadczeń i wzorów, ale swoją budowę przystosowuje do indywidualnych potrzeb i możliwości materiałowych"
Adam Słodowy