Posts

Showing posts from September, 2017

Na czym spędzamy najwięcej czasu pisząc kod?

Image
Zastanawialiście się kiedyś na czym spędzamy najwięcej czasu w czasie pisania kodu? Czy to na na samym pisaniu? Na testowaniu? A może na zrozumieniu dokumentacji oraz specyfiki zadania? Ja długo się zastanawiałem nad tym i postanowiłem to sprawdzić. O wynikach właśnie chcę napisać w tym wpisie. Zrozumienie specyfiki zadania, dokumentacji To zajmuje bardzo dużo czasu, ale nie najwięcej. Owszem projektowanie może zająć bardzo dużo czasu, ale w wpisie ten temat pomijam. Zajmujemy się etapem już po zaprojektowaniu. Najczęściej zaczynamy implementować bardzo szybko zaraz po przeczytaniu dokumentacji i ewentualnie po jakimś czasie idziemy dopytać o szczegóły. Tutaj nie marnujemy zbyt dużo czasu, chociaż pewnie zależy to od projektanta ;). Pisanie testów lub testowanie kodu Zauważyłem, że nie stosując TDD sama implementacja testów zajmuje, więcej czasu niż implementacja samego kodu. Musisz wymyślić przypadki użycia, aby sprawdzić każdą ścieżkę funkcji. Im gorzej napisana metoda tym gorzej

Kryptowaluty - sieć i zabezpieczenia

Image
Jak wspomniałem w poprzednim poście , pomimo dobrego zabezpieczenia łańcucha przed zmianą danych centralizowanie takiego mechanizmu nadal jest niezaufane. Spowodować to może zmianę struktury całego łańcucha przez tą jednostkę. Brakuje walidatora tej jednostki. Problem polega jedynie na tym, że chcielibyśmy mechanizm, który nie jest sterowany przez osoby trzecie oraz pozwala na zautomatyzowanie takiego mechanizmu. Kryptowaluty zabezpieczyły się przed tym i stworzyły sieć oraz zasady w nim obowiązujące. Jak pracuje sieć? Do utworzenia sieci potrzeba co najmniej 3 jednostek. Dla dwóch jednostek mogłyby powstać konflikty pomiędzy nimi i brakowałoby weryfikatora. Wszyscy w sieci posiadają swój łańcuch oraz aktualny blok. W ramach bloku mieści się określona ilość transakcji. O każdej zostaje poinformowana cała sieć i każdy zapisuje ją w ramach swojego aktualnego bloku. Wraz z zapełnieniem bloku danymi, zostaje obliczony kod bloku o którym wspominałem w poprzednim wpisie . Pierwszy węzeł, k

Kryptowaluty - blockchain w praktyce

Image
Na swoim blogu wspominałem już o rosnącej popularności tytułowego bohatera. W tym poście zagłębimy się w tą tematykę bardziej. Przedstawię Wam działanie tej technologii w praktyce w bardzo prostej postaci. Dowiecie się dlaczego metodę tą uważa się za bezpieczną oraz prostotę mechanizmu. Co to jest blockchain? Jak sama nazwa wskazuje są to bloki połączone ze sobą tworzące łańcuch. Łączeniem bloków jest kod wygenerowany na podstawie danych poprzedniego bloku. Celem tego zabiegu jest zabezpieczenie przed zmianą danych poprzednich bloków. Czym jest wygenerowany kod bloku? Jest to utworzony kod na podstawie danych bloku. Algorytmy wygenerowania takiego kodu mogą być bardzo różne. Im trudniejszy algorytm do odwrócenia tym łańcuch jest bezpieczniejszy. Jednocześnie kod powinien się generować w miarę szybko, aby nie zajmować zbyt dużo zasobów. W Bitcoin'ie jest zastosowany podwójny SHA256, czyli SHA256(SHA256(Block_Header)). Znalezienie danych dla bloku, który będzie tworzył identyczny

Konwencja nazewnicza getterów i setterów w JavaBean - ciekawostka

Image
Spotkała mnie ostatnio taka ciekawostka ze strony Javy. Zastanawiałem się dlaczego tworząc zmienne dla wartości tj. uId, dId, pAd gettery i settery wyglądają getuId itd. a nie getUId. Dużo framework'ów radzi sobie z obydwoma stylami, ale niektóre przyjmują wersję tylko pierwszą. Poszukałem troszkę w internecie i dopadłem się do dokumentacji JavaBean. Okazuje się, że jest stworzona konwencja nazewnicza tych funkcji. Zasada jest taka, że zamieniamy pierwszą literę na dużą jeżeli, dwie pierwsze są małe. W innych przypadkach zostawiamy nazwę taką jaka jest. Myślę, że taka ciekawostka może przydać się każdemu.