Opublikowane 25 marca 2017 5 minut
bookmark_border

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.

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.

Przydatny był tryb prezentacji w IntelliJ

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.

Bartosz Wiśniewski

Full Stack do wszystkiego (serio). Z programowaniem mam do czynienia już od ponad 5 lat. Zajmowałem się tworzeniem aplikacji mobilnych i gier. Lubię Pythona, Go i JavaScript (ale tą dobrą stronę). Czasem buduję zabawki z Arduino.