"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
Prześlij komentarz