Lekser Ego w Elixirze część II – preoptymalizacje

Jarek i Wiktor udostępnili swój kod na githubie. Pierwsza rzecz, która rzuciła mi się w oczy, to ilość pracy, jaką wykonali poza kamerą. Ich rozwiązanie wspiera już kod w wielu linijkach oraz liczby. To nadal są proste zagadnienia, ale nie są trywialne. Dlatego też, w tym wpisie zajmiemy się pewnymi preoptymalizacjami, które ułatwią nam pracę […]

Lexer Ego w Elixirze

Jarek Pałka i Wiktor Sztajerowski zaczęli z nudów cykl wykładów o tym jak stworzyć język programowania. Na tapetę trafiło jarkowe Ego, czyli język programowania przeznaczony do ćwiczenia programowania w dziwnych paradygmatach. Pierwszy wykład poświęcili na napisanie prostego lekseraW języka. Całość do obejrzenia poniżej: A ja postanowiłem, że pobawię się ich zabawką w trochę inny sposób. […]

O stringów w postgresie porównywaniu

Pracując na jednym z projektów, trafiliśmy na „ciekawe inaczej” wymaganie. Chodziło o to, by dodać wyszukiwanie po adresie email. Prosta sprawa, ale nie do końca. Gmail a wielkość znaków W adresie e-mail co do zasady ważna jest wielkość znaków. No, chyba że jesteś gmailem, to wtedy nie. Gmail jest usługą, która próbuje być cwana. Po […]

Hackerzy, oddajcie mi moje 400mln

W ostatnich dniach pojawiła się ciekawa informacja. Grupa czeskich aktywistów, w trakcie hackatonu, stworzyli prototyp elektronicznego systemu sprzedaży winiet. O samym projekcie możecie poczytać tutaj. W dużym skrócie z bodajże 18 elementów specyfikacji w czasie imprezy zaimplementowano 16, a te, których nie zaimplementowano to elementy powiązane z dostępem do informacji niejawnych. I można by w […]

Legendarny Osobomiesiąc – książka nie dla menadżerów

Tytuł: Legendarny Osobomiesiąc. Opowieści o inżynierii oprogramowania. Wydanie II Autor: Frederick P. Brooks Jr. Rok: 2019 (1995 EN) ISBN: 978-83-283-5090-8 Zgodnie z obietnicą krótka recenzja jednej z najciekawszych książek o zarządzaniu projektami IT, jaka kiedykolwiek powstała. Szczypta historii Autorem książki jest Frederick BrooksW, który był menadżerem projektu OS/360W z przyległościami. Zatem mamy tu do czynienia […]

Toss a coin to your Sapek

Poprzedni wpis był o finale GoT. Teraz będzie o netflixowej ekranizacji Wiedźmina. Za chwilę Karolina Korwin-Piotrowska zacznie mnie cytować. Wiedźmina historia krótka i moja Z opowiadaniami po raz pierwszy zetknąłem się gdzieś w 2000 roku, gdy w Lesku kupiłem „Ostatnie Życzenie”, wydane w ramach cyklu Polityka poleca dobrą literaturę. Mój brat wybrał sobie wtedy „Miecz […]

GoT pięknie się kończy

Jeżeli nie oglądałeś i nie chcesz spojlerów, to nie czytaj dalej. Wprowadzenie Prawie wszyscy narzekają, że piąty odcinek Gry o Tron nie trzyma się kupy i zniszczono serial. Rzecz w tym, że po ośmiu latach od premiery niektóre wątki już się zatarły. W dodatku część narzekających ludzi nie czytała książek, albo czytała je wiele lat […]

Perkele Trees – czyli kata TDD – część 0

Słówko perkele po fińsku oznacza „diabeł”. Ma też piękne brzmienie. Rzecz w tym, że w Finlandii, gdyby istniała, większość społeczeństwa to luteranie. Zatem słówko to jest traktowane jako taka nasza rodzima kurwa. Po tym krótkim wstępie przejdźmy do dzisiejszego tematu. Drzewa Merkle – wstęp Drzewa Merkle nazywane drzewami hashW są strukturą danych, która ma ułatwiać […]

Kim jest senior developer?

Ciekawe pytanie, prawda? Niby wszyscy potrafią na nie odpowiedzieć. Senior developer to 3 lata doświadczenia komercyjnego i dobra znajomość springa. Taki obraz wyłania się z ogłoszeń o pracę. Jednak nie o to chodzi. Senior developer/starszy programista powinien spełniać pewne warunki w trzech obszarach. Wiedza i doświadczenie Najbardziej oczywisty obszar obejmuje tak zwane umiejętności twarde. O […]

Używaj Varv.io mówili, będzie fajnie mówili

O ile oczywiście ładnie potniesz kod na mniejsze elementy, bo możesz spłodzić potwora: Listing 1. Generowanie losowego NRB public String generateNrb() { return concat( continually(() -> r.nextInt(10)).take(24), Stream.of(2, 5, 2, 1, 0, 0) ) .zip(NrbGenerator.WEIGHTS.toStream()) .unzip(t -> of(t._1() * t._2(), „” + t._1())) .map((crcOfDigits, digits) -> of( (98 – (crcOfDigits .collect( summarizingInt(Integer::intValue) ) .getSum() % […]