Tydzień 36

Kolejny tydzień, kolejny projekt zakończony. Ten wymagał ode mnie prawdziwej gimnastyki umysłowej i wielu godzin pogłębiania wiedzy z JavaScript, ale ostatecznie udało się i aplikacja do liczenia wypitych szklanek wody działa.

Biorąc udział w kursach można wybrać opcję minimum: robię tylko podstawy, byle iść dalej i można wybrać opcję „idź na całość”. Oczywiście mój charakter nie pozwala mi ślizgać się po tematach, chyba że terminy gonią. Jednak w przypadku kursu „WTF Co ten frontend” wakacje wymusiły opóźnienie w realizacji kursu i tak dochodzimy do punktu, w którym jeden tydzień nauki w ramach WTF zamienił się w miesiąc, a potem kolejny tydzień w kolejny miesiąc. Jak to możliwe?

Wszystko przez to, że uwielbiam zgłębiać poszczególne zagadnienia. Na kursie WTF Maciek pokazał jak coś działa i z czym się to je, a ja postanowiłem pogłębić tą wiedzę. Problem polega na tym, że w programowaniu można tak drążyć bez końca. Z jednej strony to spowodowało spore opóźnienia w nauce, ale z drugiej strony pozwoliło mi stworzyć aplikację HydroApp, która ma pełną zakładaną funkcjonalność. Codziennie zlicza wypite szklanki wody. Można je dodawać i odejmować od 0 do 99. Można przeładowywać stronę, a dzienny wynik nie zniknie i można odtworzyć historię do 7 dni wstecz. Do tego ma kilka bajerów, których się nauczyłem z kursu Advanced CSS.

Największy problem w tworzeniu tej aplikacji polegał na tym, że historię należało przechowywać za pomocą localStorage. Takie wymaganie dał prowadzący, bo localStorage świetnie nadaje się do przechowywania par: klucz – wartość. Problem zaczyna się wtedy, kiedy chcesz wyświetlić użytkownikowi historię wypitych szklanek z tak zapisanych danych. Oczywiście można iterować po parach klucz – wartość i wyświetlić wszystko co zostało zapisane, ale w którymś momencie zaczną się dziać rzeczy, bez naszej kontroli. Załóżmy, że użytkownik będzie sumienny i codziennie przez 30 dni będzie korzystał z aplikacji. Czy layout który zaprojektowaliśmy do aplikacji nadal będzie użyteczny? Czy będzie się dobrze prezentował? Czy będzie użyteczny dla użytkownika? Według mnie nie. Uznałem, że należało by kasować historię powyżej 7 dni. Ta decyzja mocno skomplikowała projekt.

Zacząłem się męczyć z obsługą danych zapisywanych w localStorage. Zaciąganie ich do wykorzystania jeszcze szło sprawnie, ale ponowny zapis zaczął sprawiać problemy o których nawet Stack Overflow nie słyszał. To był dla mnie znak, że da się to zrobić prościej. Po długich poszukiwaniach, przeglądaniu dokumentacji itp. okazało się, że JavaScript pozwala na łatwą konwersję obiektu typu string do obiektu typu Array. To był prawdziwy przełom. Skoro w localStorage mogę zapisywać dane w postaci klucz – wartość jako string, to wystarczy na wejściu zamienić string na Array, a na wyjściu Array na string i problem rozwiązany.

Po rozwiązaniu głównego problemu pozostało jeszcze dopisać kilka linijek kodu do prawidłowej obsługi całego mechanizmu i gotowe. Aplikacja działa, a ja mogę pójść dalej ze szkoleniem WTF. Satysfakcja bezcenna.

Co do dalszej drogi, to na pewno chciałbym dokończyć WTF, tyle tylko że nie ma pewności czy kolejny tydzień nie przyniesie jakieś nowej drogi, która odciągnie mnie od kursu na kolejny miesiąc. W najbliższym czasie chciałbym także napisać kolejną część dotyczącą konfiguracji serwera linux na własne potrzeby, a na to też potrzeba czasu. W tym tygodniu na programowaniu spędziłem 6 godzin, w całości zajmując się projektem HydroApp. W sumie realizacja projektu zajęła mi 16 godzin.

Projekt dostępny na stronie:
https://krzysztofnyrek.pl/hydroapp

No comments
Krzysztof NyrekTydzień 36

Related Posts

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *