DevLog #3
Minął już czwarty tydzień pracy nad Workdone.
Stop. Coś jest nie tak
Gdy na początku tygodnia po krótkiej przerwie powróciłem do projektu poczułem, że coś jest nie tak. Wydało mi się, że projekt jest trudny do ruszenia. Przejrzałem projekt i zauważyłem dwa problemy.
Pierwszy to moje encje, które stworzyłem stanowczo za mało myśląc o rzeczywistej implementacji np. pole expReward
w Habit
było
typu float
ale to by oznaczało, że użytkownik może sobie ustalać ile dokładnie będzie otrzymywał doświadczenia co absolutnie nie ma sensu w kontekście zdobywania poziomów. Lepszym rozwiązaniem było użyć typów wyliczeniowych (enum) i później w backendzie zrobić odpowiednie przeliczniki. Użytkownik dalej może wybrać jak bardzo chce być nagrodzony, ale teraz łatwiej będzie mu to ustalić, bo liczby nic nie mówią, słowa, ikony tak.
Drugi problem to niezrozumienie przykładowej budowy aplikacji w Vue.js. Próbowałem zrobić coś przeciwko frameworkowi, co oczywiście rzadko kiedy wychodzi na dobre.
Refactoring
Zanim przystąpiłem do naprawy, zrobiłem sobie krótką specyfikację encji w mojej aplikacji. Prosty plik .txt, wymienione pola i typy tych pól z różnymi opisami. Przydatne aby nie stracić tej wizji.
Wprowadzenie walidacji przez dodatkowy Validator
, wprowadzenie enumów, zmiany w strukturze encji, kolorki! Wszystko to
w commitcie 12619d.
Vue.js
Jak już wspomniałem na początku miałem spore problemy z strukturą w Vue.js, ale ten przykład TodoMVC mnie oświecił. Pokazał mi jak wykorzystując wszystkie zdolności frameworka można łatwo uporządkować działanie apki.
Commit 965008d to początek mojej
małej rewolucji JavaScriptowej. Po pierwsze, przeniosłem kod do osobnego pliku. Po drugie, usunąłem naprawdę brzydkie funkcje. Po trzecie, zepsułem szablony thymeleaf. Serio? <text>
w <head>
, opcje automatycznego refactoringu jak zawsze pomocne :)
Stream
Na końcu wisienka na torcie.
Zacząłem streamować to jak koduje i prawdopodobnie w tym miejscu byłaby ramka YouTube gdyby nie to, że pierwsza próba streamowania nie wychodzi najlepiej.
Po pierwszej próbie streamowania. W roli statywu: Harry Potter i Zrozumieć programowanie @gynvael pic.twitter.com/R6FlDt1xWs
— Bartosz Wiśniewski (@pr0gramista) 24 marca 2017
Od streamowania uciekałem bardzo długi czas, ale miałem też logiczne powody do tego.
- Kiedyś miałem drugi monitor, który jest prawie must-have jeśli chodzi o streamowanie, ale monitor się zepsuł
- Aby pokazać twarz chciałem użyć kamerki, ale mimo szukania po sklepach nie mogłem jej kupić, nawet jak byłem na chwile we Wrocławiu to wielki sklep z elektroniką, klawiatury mechaniczne, dwadzieścia tosterów, a jednej kamerki nie było
- Używanie telefonu jako kamery nie jest najlepsze, bateria się wyczerpuje (mimo ładowania) a jakość jest taka sobie (a przez brak wersji Pro DroidCam'a ekspozycja wariuje i dlatego przez część nagrania jestem prześwietlony)
W końcu powiedziałem sobie: jeśli nie spróbujesz zrobić tego nawet w najgorszych warunkach, to zapewne nigdy tego nie zrobię. Ustawiłem piękną konstrukcje widoczną na tweetcie, pożyczyłem laptopa, użyłem telefonu jako kamerki i muszę powiedzieć: nie było tak źle.
Zaskakujące jest to jak bardzo taki stream sprawił, że nie dałem się zdekoncentrować. Świadomość tego, że ktoś może Cię obserwować może trochę przeszkadza, ale za to niesamowicie motywuje do działania. Dodatkowo opowiadanie o tym co się teraz robi pomaga unikać błędów.
EOF
Nagrania nie opublikuje, bo po prostu jest niezbyt ciekawe a wiem, że mogę zrobić to lepiej. Nie mogę się doczekać aż będę miał wolny czas aby sobie postreamować :) W końcu jakoś trzeba się zabrać za Todo
.