Niedawno na Medium Productboarda pojawił się mój post opowiadający o tym, w jaki sposób dodaliśmy drugą bazę danych do naszej monolitycznej aplikacji w Railsach oraz skonfigurowaliśmy ją tak, aby nie marnować czasu CI i nie utrudniać życia tym deweloperom w zespole, którzy nie potrzebują nowej bazy do tworzenia swoich feature’ów.
Autor: Jan Bajena
Testowanie UI na różnych przeglądarkach za pomocą CrossBrowserTesting.com
W moim najnowszym poście piszę o tym, w jaki sposób zintegrować RSpec, ngrok, Capybarę i CrossBrowserTesting.com żeby testować interfejs użytkownika zdalnie na różnych przeglądarkach i systemach.
Post można przeczytać na blogu Leadfeedera TUTAJ
Jekyll, Liquid i kolorowanie składni
Ostatnio spędziłem kilka ładnych godzin pracując nad blogiem w Leadfeederze (blog stoi na Jekyllu). Moim celem było wyświetlenie customowego pliku w formacie Liquid. Pozornie prosta sprawa pochłonęła mnóstwo czasu. Z tego powodu postanowiłem opisać to w moim najnowszym poście tak, aby oszczędzić czasu innym „śmiałkom” podchodzącym do tego tematu.
Zapraszam do przeczytania w serwisie dev.to: LINK.
Bubble babble
W najnowszym poście opisałem ciekawe znalezisko w bibliotece standardowej Ruby’ego – algorytm Bubble Babble.
Zapraszam do lektury na dev.to: link
Dynamoid – gem wspomagający pracę z AWS DynamoDB
W najnowszym poście piszę o niedawno odkrytym przeze mnie gemie do obsługi DynamoDB w Ruby.
O tym jak zainstalować, skonfigurować i używać Dynamoida można przeczytać tutaj: https://dev.to/bajena/how-to-setup-dynamoid-in-ruby-projects-to-simplify-dynamodb-interactions-105d
Redis streams i LUA
Ostatnimi czasy pracowałem ze strumieniami w Redisie i trafiłem na następujący problem: jak usunąć N najstarszych elementów ze strumienia?
Okazuje się, że da się to zrobić w łatwy sposób za pomocą skryptu LUA. Zapraszam do przeczytania artykułu na dev.to: https://dev.to/bajena/removing-n-oldest-entries-from-a-redis-stream-5aob
Pet project: Symulator Enigmy
Jakiś czas temu, zainspirowany filmem The Imitation Game, zacząłem drążyć temat niemieckiej maszyny szyfrującej Enigma z II Wojny Światowej. Chciałem zrozumieć jej działanie i, być może, spróbować stworzyć moją własną, elektroniczną, wersję tego urządzenia.

Zrozumienie mechanizmu zajęło mi więcej czasu niż przypuszczałem. Bardzo pomógł mi w tym film na YT na kanale numberphile, w którym prowadzący objaśnia temat na prawdziwym egzemplarzu Enigmy.
Oprócz tego ciekawym dodatkiem z punktu widzenia historycznego okazał się rozdział o Enigmie z książki Łamacze Kodów – Historia Kryptologii Davida Kahna. Autor w zajmujący sposób opowiada o tym, jak maszyna ewoluowała w czasie tak, aby coraz bardziej utrudniać przeciwnikom łamanie szyfrów.
Ostatecznie okazało się, że nie jest to aż tak skomplikowane urządzenie. Powiedziałbym wręcz, że jest genialne w swojej prostocie. Wiedząc już jak działa Enigma zabrałem się za pisanie programu.
Napisanie samego algorytmu okazało się być naprawdę proste – całość logiki zamknęła się w 160 liniach Javascriptu.
Bardziej czasochłonne okazało się stworzenie UI – prawdopodobnie przez moje niezbyt wysublimowane umiejętności tworzenia arkuszy CSS oraz to, że postanowiłem jednocześnie nauczyć się obsługi webpacka 🙂
Uważam że całkiem fajnie wygląda też łączenie kabli w panelu w dolnej części aplikacji (plugboard) gdzie wykorzystałem pakiet https://github.com/sasza2/arrows który pozwala na rysowanie zakrzywionych (krzywe Beziera) linii bardziej przypominających kable niż zwykłe, proste odcinki.

Całość kodu i instrukcję można znaleźć pod tym adresem: https://github.com/Bajena/enigma a pobawić się można tutaj: https://bajena.github.io/enigma/index.html.

Hanami: Unobtrusive JavaScript
W moim poprzednim poście opisałem moje wysokopoziomowe przemyślenia na temat frameworka Hanami. Dzisiaj w ramach programistycznego „mięska” postanowiłem opisać jak użyłem biblioteki hanami-ujs
podczas tworzenia mojej aplikacji Flashcard Genius.
Post można znaleźć na Medium.
Hanami oczami Railsowca
Po kilku latach programowania w Ruby on Rails poczułem pewne wypalenie i zacząłem szukać jakiegoś urozmaicenia. Z tego powodu zdecydowałem się wziąć na warsztat jeden z konkurencyjnych Ruby’owych frameworków – Hanami.
Przez kilka miesięcy po godzinach bawiłem się Hanami i stworzyłem aplikację Flashcard Genius, która wspomaga mnie w nauce słówek z języka włoskiego. W najnowszym poście spisałem moje wrażenia na temat tego co podczas tworzenia tej aplikacji spodobało mi się w Hanami i o tym, czego mi w nim brakuje.
Ruby on C(ocaine) 💉
Od jakiegoś czasu chodziło mi po głowie stworzenie rozszerzenia w C dla języka Ruby. Po kilku wieczorach pracy stworzyłem mini biblioteczkę – MatrixBoost, która przyspiesza niektóre operacje (aktualnie mnożenie i odwracanie macierzy) klasy Matrix ze standardowej biblioteki Ruby’ego.
Post dostępny tutaj:
https://dev.to/bajena/ruby-on-c-ocaine-intro-to-c-extensions-for-newbies-40ib
