Spacja w system properties, małpa i inne zawiłości komendy 'java’

Jest to raczej rzadka sytuacja, ale może zdarzyć się, że potrzebujecie do Javy przekazać system property, w którym jest spacja. Niestety, może być z tym kłopot. Czasem na drodze stoją Dockery, zmienne środowiskowe i shellowe skrypty uruchamiające. Na wypadek tak niekorzystnych warunków zaprezentuję opcję @, która pozwala uciec od shellowych zawiłości i wczytać opcje Javy z pliku.

Czytaj dalej „Spacja w system properties, małpa i inne zawiłości komendy 'java’”

Anki w nauce terminala, edytorów i programowania

Anki to popularny, darmowy program do nauki języków obcych metodą spaced repetition, czyli „fiszek”. W dużym skrócie, to takie „karty” do nauki, po jednej stronie mamy słowo po polsku, po drugiej po angielsku. Oglądamy jedną stronę, szukamy w głowie odpowiedzi, potem patrzymy na drugą stronę i sprawdzamy, czy odpowiedzieliśmy dobrze.

Czy taka metoda nauki dobrze sprawdzi się do nauki programowania?

Używam Anki od 15 lat i uważam, że bardzo pomaga w językach obcych, ale do niedawna byłem sceptyczny co do zastosowania na innych polach. Mimo że czytałem o ludziach używających programu do nauki matematyki (stąd wbudowana obsługa równań w TeXu) lub przygotowania do egzaminów na studiach medycznych.

Wydawało mi się, że pamięciowe wkuwanie nie ma nic wspólnego z zawodowym programowaniem (szkoda, że przeciwne podejście wciąż zdarza się w kuriozalnych procesach rekrutacji, ale to osobny temat). Tak było do czasu, aż złapałem się, że szukam na własnym blogu, jak wkleić parametr w Zsh, albo zaglądam do notatek, żeby sprawdzić, jak sprawnie przesuwać kursor w vimie. Co mi ze skrótu, jeśli muszę czytać objaśnienia, zanim go użyję? Tak nie może być. Postanowiłem użyć Anki do nauki poleceń, których nie mogę zapamiętać.

Okazało się, że narzędzie sprawdza się dobrze również w nauce ezoterycznych kombinacji klawiszy. Postęp był widoczny szybko: po kilku dniach zacząłem w prawdziwej pracy używać skrótów, które wcześniej omijałem, bo nie mogłem sobie ich przypomnieć. Zapamiętałem też tą metodą zupełnie inne rzeczy.

W dalszej części opowiem krótko, jak skonfigurowałem Anki, oraz trochę więcej o tym, czemu uważam, że to dobre narzędzie do nauki takich skrótów.

Czytaj dalej „Anki w nauce terminala, edytorów i programowania”

Plik .env do tajnych kluczy w IntelliJ i konsoli

Czasem zachodzi potrzeba pracy przez krótki czas z zasobami, do których nie mamy na co dzień dostępu. Coś zachowuje się dziwnie, dostajemy tymczasowy dostęp do jakiegoś API, żeby móc wysyłać zapytania z naszego laptopa i szybciej dojść, co poprawić. Mamy jedno tajne hasło, albo coś bardziej rozbudowanego, na przykład zestaw 7 różnych parametrów: client ID, client secret, jakiś token, jakiś specjalny URL i inne cuda niewidy.

Jak wygodnie pracować w takich warunkach?

W artykule krótko opowiem o jednym z rozwiązań: plikach .env . Jaki mają format, jak z nich korzystać (w terminalu i IDE, na przykład odpalając testy albo inne taski z wykorzystaniem Gradle’a), czemu są wygodne.

Czytaj dalej „Plik .env do tajnych kluczy w IntelliJ i konsoli”

Wyciąganie danych z HTML-a za pomocą htmlq

Pisałem wcześniej o yq, czyli programie w stylu awka/seda do wyciągania danych z YAML-a. Do JSON-a jest znany szerzej jq. Przydają się do drobnych automatyzacji na własny użytek, ale też do skryptów uruchamianych na CI. Szukałem ostatnio czegoś takiego do HTML-a i zdziwiłem się, bo większość odpowiedzi sugerowała odpalanie jakichś długaśnych one-linerów ręcznie kasujących tagi HTML. Nie, dziękuję! Na szczęście, 2 lata temu (dopiero??) pojawił się projekt htmlq, reklamujący się bardzo trafnym sloganem:

Like jq, but for HTML. Uses CSS selectors to extract bits of content from HTML files.

Brzmi nieźle, prawda?

W dalszej części pokażę krótko, na ile wygodne jest użycie, co robi się łatwo, a co nie.

Działamy w terminalu, więc pojawią się też inne narzędzia, jak awk, którym usuniemy puste linie psujące czytelność (nieoczywista sztuczka, którą moim zdaniem warto znać). Nasz „query language” to CSS, co z jednej strony ma zalety (każdy używał kiedyś CSS-a), ale też wyjdą pewne problemy (bo to CSS).

Czytaj dalej „Wyciąganie danych z HTML-a za pomocą htmlq”

Zaoranie mockowania w 20 linijkach kodu

– Co znowu?
– To duży błąd, że ludzi uczy się pisania testów, każąc im używać mocków. Przydatność mocków jest bardzo ograniczona. Zazwyczaj powodują jedynie, że test przepuszcza niedziałający kod. Większość tworzonych na co dzień testów w ogóle nie powinna używać mocków.
– Co za wymysły, to jakaś kompletna bzdura! Pokaż dowody!
– Proszę bardzo.

Czytaj dalej „Zaoranie mockowania w 20 linijkach kodu”

Gdy DNS nie pozwala połączyć się z chmurą AWS

Nie mogę połączyć się z produkcją, co robić, ratunku! Czy to dlatego, że VPN nie działa na Linuksie? Niekoniecznie. Być może winny jest twój dostawca Internetu.

Opisywany problem dotknął mojego peceta z Ubuntu, ale wkrótce okazało się, że przeszkadza też koledze z Makiem. Może dotknąć też ciebie, o ile korzystasz z usług popularnej firmy, której nazwa zaczyna się na T, a kończy się na A.

W dalszej części opiszę, jak sprawdzić, że masz właśnie ten problem, oraz jak go obejść (bez wypowiadania umowy, zostaniemy przy konfiguracji własnej maszyny). Ogólne instrukcje zostały przetestowane i pomogły na MacOS-ie, ale najwięcej szczegółów będzie dotyczyło sprzętu, do którego mam dostęp, czyli Ubuntu.

Opiszę też, jak z poziomu konsoli dowiedzieć się, jaki tak naprawdę DNS jest używany w systemie. Przez ostatnie zmiany w Linuksie panuje zamieszanie i stare metody przestały działać.

Czytaj dalej „Gdy DNS nie pozwala połączyć się z chmurą AWS”

Walidacja kraju czyli ISO 3166 country codes w praktyce

Być może mamy bazę kontrahentów z różnych stron świata. Albo obsługujemy zakładanie konta użytkownika i wymagamy podania miejsca zamieszkania. Nawet jeśli nie pracujemy w Netfliksie, wcześniej czy później pewnie będziemy musieli zająć się przetwarzaniem danych o krajach.

Jak to przechować? Pole typu „dowolny string” spowoduje, że nasi użytkownicy wkrótce wrzucą tam zarówno „United States”, jak i „U.S.”, „U.S.A”, a nawet „Niemcy” (przynajmniej ja przeszedłem przez takie nieprzyjemne odkrycie). Lepszym wyjściem jest reprezentowanie kraju przez jednoznaczny identyfikator. Na szczęście istnieje ogólnie akceptowalny standard, ISO 3316, czyli w dużym uproszczeniu to, co widzimy w URL-ach albo na tablicach rejestracyjnych: „PL” to Polska, „DE” to Niemcy i tak dalej.

W dalszej części bardzo skrótowo objaśnię kody krajów w ISO 3316. Opiszę też, jak zaprogramować walidację poprawności kodów. Proponuję dwie opcje: z użyciem klasy Locale dostarczanej z JVM oraz przez zewnętrzną bibliotekę nv-i18n.

Czytaj dalej „Walidacja kraju czyli ISO 3166 country codes w praktyce”

Boiling Frogs 2022

Na Boiling Frogs warto być. Wcześniej wrocławska konferencja punktowała tym, że była (tak mi się zdaje) pierwszą polską konferencją roku kalendarzowego – często prelegenci przywozili premierowe tematy, które potem powtarzali gdzie indziej. W tym roku „żaby” miały podwójne pierwszeństwo, była to dodatkowo pierwsza od lockdownu konferencja w 100% po staremu, z widownią na miejscu i bez uczestników online. Do tego organizatorom udało się ułożyć ciekawy program.

Niżej podrzucam subiektywny przegląd agendy. Linkuję do slajdów tam, gdzie podzielili się nimi autorzy. Dodałem też zdjęcia od użytkowników Twittera. Nagrań jeszcze nie ma, spodziewam się ich w drugiej połowie maja na kanale YouTube konferencji.

Otwarcie: Wszechobecne idiomy (Tomasz Kaczmarzyk)

W poprzednich latach za każdym razem byłem pod wielkim wrażeniem tematów otwierających. Nie inaczej było teraz. Tomek ciekawie opowiadał o tym, jak etykiety i nazwy przyczepiane do nowych idei stają się ciężarem, prowadzą do wypaczania oryginalnego pomysłu i zradykalizowanych postaw. Propozycja: warto eksplorować obszary pomiędzy przesadną fascynacją a pełnym odrzuceniem, warto brać z nowych idei przydatne rzeczy, a nie traktować je zerojedynkowo.

Czytaj dalej „Boiling Frogs 2022”

Podcast Dev Story: Czym jest Clean Code?

Ukazał się odcinek podcastu Dev Story (devstory.pl), gdzie z gospodarzem, Jarkiem Jarzębowskim, dyskutuję o czystym kodzie. Rozmowa trwa 20 minut, można ją przesłuchać m.in. na Apple Podcasts i Spotify.

Wśród poruszonych tematów między innymi jak przez ponad 10 lat kariery może zmienić się stosunek do reguł od Wujka Boba, utrzymywania testów, code review.

Creative Commons License
Except where otherwise noted, the content by Piotr Kubowicz is licensed under a Creative Commons Attribution 4.0 International License.