"Wiem, że nic nie wiem" (37)

Ciekawe, jak odpalałem dzisiaj komputer, żeby zrobić przegląd minionego tygodnia, to miałem poczucie, że to nie był najbardziej produktywny tydzień. Jednak wyniki pokazują, że kluczowe zadania zrealizowałem na 125%, a dodatkowo 1,5h spędziłem na dokończeniu kursu JS z MMC School. Poza tym ogromną ilość czasu spędziłem nad tematami związanymi z programowaniem, ale nie będącymi na mojej liście zadań.

Trochę utknąłem z projektem własnej strony bloga, przez co sporo czasu spędziłem w internecie na poszukiwaniu odpowiedzi na napotkane problemy i nurtujące mnie pytania. Wydaje mi się, że znalazłem odpowiedzi i rozwiązania (dzisiaj sprawdzę, czy aby na pewno), ale może właśnie ta blokada spowodowała to uczucie, że to nie był najlepszy tydzień.

W tym tygodniu w końcu zabrałem się za najważniejszą część mojej strony: <main>, w której znajdować się będzie najważniejsza treść. Ostatecznie podjąłem decyzję, że nie będę robił żadnych sekcji bocznych i wszystkie treści głównej strony będą znajdowały się jedna pod drugą, a dostać się do nich będzie można albo scrollując zawartość, albo wybierając pozycję z menu, co automatycznie przesunie stronę do wybranego fragmentu.

Główna część strony będzie składała się z 3 sekcji: about, blog oraz projects.
W sekcji about znajdzie się krótki opis „O mnie” ze zdjęciem oraz linkiem do pierwszego wpisu na blogu.
Sekcja blog zbudowana będzie z trzech bloków: last-entrie (z najnowszym wpisem na blogu), prev-entries (z trzema wcześniejszymi wpisami) oraz older-entries (z linkami do dziesięciu starszych wpisów oraz z przyciskiem przenoszącym do podstrony z listą wszystkich wpisów).
Natomiast w sekcji projects znajdą się screeny z moich projektów będące jednocześnie linkami do nich oraz linki do właściwych repozytoriów na GitHub.

Pracując nad tą częścią strony, zacząłem się zastanawiać, w jaki sposób wyświetlane będą podstrony. Sądziłem, że wczytywanie przez przeglądarkę za każdym razem całego layoutu jest nieco bez sensu w kontekście wydajności. Wyobrażałem sobie, że powinno to działać jakoś na zasadzie podmiany części main na stronie. Mógłby do tego służyć jakiś skrypt w JS, ale tu nasuwa się pytanie, skąd ten skrypt miałby brać te dane. Okazało się, że nie jest to takie proste, jak przypuszczałem. Tego tupu rozwiązanie nazywa się SPA (Single-page application) i frameworki takie jak React, Vue.JS czy Angular zapewniają tworzenie strony jako SPA w zasadzie od ręki. Nie znam jeszcze żadnego z tych frameworków, a tworzenie SPA w czystym JS wydaje mi się jeszcze większą abstrakcją, więc na razie moje podstrony będą wczytywały się klasycznie.

Kiedy szukałem rozwiązania mojego problemu, okazało się, że jest jeszcze jedna trudność w stworzeniu w pełni funkcjonalnego bloga. Mianowicie, w jaki sposób będą powstawały kolejne podstrony z nowymi wpisami i jak będzie podmieniana treść na stronie głównej bloga. Znowu moje wyobrażenie tematu przerosło możliwości i umiejętności, jakimi dysponuję. Myślałem, że stworzę w JS-ie prosty edytor wpisów na blogu, w którym będę wybierał zdjęcie przewodnie, wprowadzał treść, edytował niektóre fragmenty tekstu i ewentualnie dodawał jakieś zdjęcia wewnątrz treści. Wszystko fajnie, tylko JS-em nie da się stworzyć nowego pliku HTML, a więc podstrony. Okazuje się, że jest to zadanie Backendu i można tego dokonać np. przy użyciu środowiska Node.JS.

To wszystko skłoniło mnie do pewnych przemyśleń. Po pierwsze „wiem, że nic nie wiem". Te moje wyobrażenia, jak coś mogę zrobić, to efekt nieświadomej niekompetencji, będącej pierwszym szczeblem na drabinie kompetencyjnej. To, że mam już świadomość tego, że nie da się tego zrobić, tak jak to sobie wyobrażałem, oznacza, że dotarłem na drugi poziom hierarchii kompetencji, jakim jest świadoma niekompetencja (wiem, że nic nie wiem). Kolejnym etapem jest świadoma kompetencja i jestem na dobrej drodze do jej zdobycia.

Kolejne przemyślenie to, że fajnie by było znać również technologie backendowe, żeby móc sobie, samemu takiego w pełni funkcjonalnego bloga stworzyć. Obejrzałem nawet krótki tutorial z Node.js i tę technologię zapisałem sobie na liście rzeczy, których chciałbym się w przyszłości nauczyć. Kto wie, może zostanę Full Stack JavaScript Developerem? Czas pokarze, a na razie trzeba zejść na ziemię i kontynuować pracę u podstaw. Niestety na tą chwilę, jedyne co mogę zrobić, to ręcznie tworzyć podstrony z nowymi wpisami do mojego bloga. Może chociaż uda mi się napisać skrypt, który odpalany ręcznie lokalnie podmieniałby linki i treść w moim pliku index.html po tym, jak utworzę nowy wpis (mam nadzieję, że to da się zrobić, jeszcze nie sprawdzałem).

Kolejna blokada pojawiła się podczas pisania bloku prev-entries w sekcji blog. W pewnym momencie nauki HTML i CSS uznałem, że do stylowania będę używał preprocesora SASS oraz że do nazywania klas zastosuję metodologię BEM (Block Element Modifier). W pewnym momencie tak się zaplątałem w tych wszystkich klasach, że cała sekcja blog mi się rozjechała. Przyczyną okazało się nie do końca zrozumienie i niewłaściwe stosowanie przeze mnie metodologii BEM. Cały weekend nad tym myślałem, w wolnych chwilach czytałem posty na blogach, oglądałem tutoriale na YouTube i w końcu zrozumiałem jak prawidłowo tę metodologię zaimplementować do swoich projektów (tak mi się przynajmniej wydaje, bo jeszcze nie miałem okazji tego sprawdzić w praktyce).

Kończę na dzisiaj pisanie, bo aż nogami przebieram, żeby zasiąść do Visual Studio Code i zobaczyć, czy rzeczywiście teraz wszystko będzie działało tak, jak to sobie zakładam.

 

"Patrząc zawsze przed siebie, myśląc o tym, jak zrobić jeszcze więcej, osiągniesz stan umysłu, w którym nie ma rzeczy niemożliwych." ~ Henry Ford

 "Błąd jest przywilejem filozofów, tylko głupcy nie mylą się nigdy" ~ Sokrates 

Komentarze

Popularne posty z tego bloga

Pracuje się, oj pracuje... (44)

No to do dzieła (21)

Kryzys wieku średniego (1)