Mój idealny nauczyciel programowania Mojego idealnego nauczyciela programowania poznałem na pierwszym roku studiów. Nigdy mnie nie oszukał. Nigdy się nie niecierpliwił. Nigdy na mnie nie podniósł głosu. Zawsze był dla mnie dostępny. Zawsze miał dla mnie nowe zadanie. Zawsze ze spokojem pokazywał, gdzie mam błąd. Miał tylko jeden mały problem… Tak. Nie był to człowiek. Był to program komputerowy. Zawdzięczam mu jednak bardzo dużo. To dzięki jego „cierpliwości” nauczyłem się podstaw programowania. Jedną z cenniejszych lekcji, jakie wyniosłem z tego okresu – była nauka programowania przez…
ROT13 – to jeden z najprostszych i jednocześnie najstarszych szyfrów używanych do szyfrowania tekstu. Obecnie nie powinien być już wykorzystywany jako podstawa zapewnienia bezpieczeństwa, świetnie jednak nadaje się do nauki podstaw programowania oraz kryptografii. ROT13 ROT13 polega na przesunięciu każdej litery alfabetu o stałą liczbę pozycji – 13. ROT13 jest jedną z najprostszych technik szyfrowania. Jest to rodzaj szyfru podstawieniowego, w którym każda litera tekstu jawnego (niezaszyfrowanego) zastępowana jest inną, oddaloną od niej o stałą liczbę pozycji w alfabecie literą (szyfr monoalfabetyczny). Zobaczmy to na przykładzie.…
Szyfr Cezara – to jeden z najprostszych i jednocześnie najstarszych szyfrów używanych do szyfrowania tekstu. Wykorzystywany był jeszcze zanim ktokolwiek słyszał o programowaniu 🙂 Szyfr Cezara Szyfr Cezara polega na przesunięciu każdej litery alfabetu o stałą liczbę pozycji w prawo lub w lewo. Szyfr Cezara jest jedną z najprostszych technik szyfrowania. Jest to rodzaj szyfru podstawieniowego, w którym każda litera tekstu jawnego (niezaszyfrowanego) zastępowana jest inną, oddaloną od niej o stałą liczbę pozycji w alfabecie literą (szyfr monoalfabetyczny). W podstawowej wersji tego algorytmu –…
Witaj w 23. odcinku podcastu SprawnyProgramista – jego tematem będą negocjacje! 🙂 Pierwsze rozmowy rekrutacyjne na stanowisko programisty już za Tobą. Dostałeś kilka telefonów i maili z informacją, że firma nie zaprosi Cię do następnego etapu. Ale nie poddajesz się i próbujesz dalej! W końcu po zadaniu i rozmowie rekrutacyjnej stajesz przed trudnym wyzwaniem — musisz odpowiedzieć na pytanie: ile właściwie chcesz zarabiać? Nieśmiało podajesz kwotę, a firma zgadza się na nią. Brawo! Zaczynasz pracę i po kilku miesiącach to pytanie wraca. Na początku kariery…
Tracking down not resolving constants in Ruby with parser Lately, we have been working on upgrading an obsolete stack of one Ruby app. This application was running on Ruby 2.4. After dropping 50 unused gems, performing security updates, and eliminating deprecation warnings, we decided it was time for a Ruby upgrade. This is where the story REALLY begins, and I encourage you to keep reading even if you are not interested in the old Ruby version’s internals. In the end, I will give you a powerful tool to help you track down not resolving constants in your codebase.
Niektóre rzeczy w webdevie wydają się nie być przesadnie ekscytujące. No bo czymże może nas zaskoczyć atrybut [onclick]? Cóż, okazuje się, że wieloma rzeczami.
Praktycznie każdy dzień pracy programisty to możliwość zdobycia nowej umiejętności. Wiele z wykonywanych zdań wymaga od nas poznania czegoś nowego, eksperymentowania czy rozmowy z kolegą z zespołu. Czasem to my stajemy się źródłem wiedzy, mentorem czy ewangelistą jakiegoś rozwiązania. Pamiętam jak postawiono mnie przed nie lada wyzwaniem – stworzeniem szkółki dla młodych adeptów programowania. Musiałem […]
Jak logować wywołanie każdej metody z parametrami? DispatchProxy jako proste AOP How to log every method call with params. DispatchProxy as a simple AOP soulution
Chmura coraz częściej jest miejscem docelowym życia naszych aplikacji. Obsługujemy w niej wdrożenia testowe, stage i produkcyjne. Nie raz są to rozbudowane systemy składające się z wielu współpracujących ze sobą aplikacji. Byłem świadkiem sytuacji, gdzie aplikacja lokalnie działała bezbłędnie. Jednak po opublikowaniu nowej wersji użytkownikom, zaliczyliśmy wpadkę – przeglądarka użytkownika nie dostawała nawet odpowiedzi. Jak […]
Realtime Database to jedna z funkcjonalności platformy Firebase, która umożliwia tworzenie i przechowywanie danych w formie bazy danych NoSQL. Co wyróżnia Realtime Database, to fakt, że wszystkie zmiany wprowadzone do bazy danych są automatycznie synchronizowane i dostępne dla wszystkich użytkowników w czasie rzeczywistym, bez potrzeby przeładowywania strony. To doskonałe rozwiązanie dla aplikacji, które wymagają szybkich … Continue reading "Czym jest Realtime Database w Firebase i do czego służy?"
Offloading write side with a read model Imagine the following business requirement: All the products should be reserved for a customer on order submission. Simply adding items to the cart does not guarantee product availability. However, the customer should not be able to add a product that is already unavailable.
Co dzień jak co dzień programuje się komputery, telefony czy bardziej zaawansowane systemy w architekturze rozproszonej, ale można zadać sobie pytanie czy można np. zaprogramować mózg, okazuje się, że tak. Mózg oraz cały system nerwowy to jakby nie było tak trochę bardzo zaawansowany system informatyczny, który ma swoje specjalizowane obwody, systemy zwrotne, pamięć itd., nie […]
Parę lat temu wszystko, co było związane z danym projektem, trzymałem w jednym repozytorium – coś na wzór dzisiejszego określenia monorepo. Potem nadszedł czas dzielenia projektów na mniejsze części — zafascynowanie mikroserwisami. Każdy serwis w naturalny sposób, od razu lądował w nowym repozytorium. Takie rozbijanie powodowało kilka problemów np. wersjonowanie i kompatybilność, duplikacja kodu, zależne […]
W czerwcu 2021 opisywałem nieco mój pomysł na pakiet testowy dla reszty moich projektów. Ostatecznie jednak postanowiłem, że nie będę go dłużej rozwijał, pon...
First class json(b) handling in Rails Event Store Recently, in Rails Event Store v2.8.0 PreserveTypes transformation has been introduced. v2.9.0 release brought RailsEventStore::JSONClient. It’s a set of great improvements for RES users who plan to or already use PostgreSQL with jsonb data type for keeping events’ data and metadata.