Posty

nowy blog - po angielsku!

Założyłem nowego bloga: blog.jsbe.fun Będzie on różnił się od tego, że będzie po angielsku i będą bardziej konkretne notki. Konkretne, tzn. na przykład opisujące konkretną bibliotekę, konkretne problemy techniczne i sposób ich rozwiązania, przykłady kodu itp. Przynajmniej taki mam zamysł, ale to będzie ewoluować jeszcze Tego bloga dalej będę pewnie prowadził, chociaż powiedzmy sobie szczerze, że rzadko tu piszę ostatnio. Ale pewnie jeszcze niejedną rozkminę napiszę. Natomiast teraz JS be fun! będzie tym blogiem, na którym będę chciał się skupić i tworzyć content bardziej regularnie - na pierwszy rzut idzie biblioteka Plotly.js , która pozwala robić fajne wykresy.

OpenLayers

Obraz
Nie samym 3D człowiek żyje :) Czas na mapy. Ostatnio zacząłem poznawać bibliotekę o nazwie OpenLayers . Generalnie polega to na tym, że tworzysz mapę z takich warstw. Dlatego nie dziwne, że nazwali to "layers". Masz np. warstwę, która ci nakłada samą mapę, masz warstwę, która nakłada ci nazwy ulic i tak dalej. Czyli elastyczne, szczególnie biorąc pod uwagę, że warstwy mogą być z różnych źródeł. Np. możesz zaimportować warstwę mapy z OpenStreetMaps. I to działa z pudełka. Nie trzeba żadnego konta zakładać, czy tokenów (nie wiem, czy na OSM trzeba to robić, ale w Google Maps kiedyś pisałem i trzeba było się w to bawić). No i też są różne ciekawe źródła map, np. Stamen. To jest mega. Tak jakby ktoś malował coś: I tu macie przykład na żywo tego Stamen . Dużo jest też innych przykładów . Wygląda na to, że dużo da się zrobić w tej bibliotece. I wydaje się w miarę łatwa do ogarnięcia (chociaż tylko godzinę spędziłem w weekend na jej ogarnianiu, ale już po 13 minutach udało...

Plany nauki (Three.js) i refleksje na temat (nie)wiedzy

Co do Three.js - wiele rzeczy nie ogarniam xD Np. materiałów do końca nie umiem robić. Bo jest zbyt wiele rodzajów i parametrów, ostatnio próbowałem się w to zagłębić (będę o tym jeszcze wspominał w kolejnych notkach). I kiepsko mi idzie budowanie własnych shaderów, no ale na szczęście być może nie będzie to aż tak bardzo potrzebne, bo teraz są node materials, że łączysz wiele materiałów w taki graf (podobnie jak w Blenderze). Wśród materiałów szczególnie lustro czy szyby - to fajnie wygląda, a nie za bardzo mi się to udawało, jak próbowałem robić. Ogólnie też miałem problem z eksportem z Blendera do Three.js i załadowaniem poprawnie siatki (tj. materiały się rozjeżdżały i np. szyby nie były przezroczyste. Albo tekstury wyglądały dziwnie, tak jakby miały inne mapowanie UV). Pewnych rzeczy z matmy nie ogarniam, np. kwaternionów ( Quaternion ). Widziałem w źródłach, że ludzie ich używają do obrotów, a ja póki co jadę na obiektach Euler , które ponoć są mniej elastyczne. Buffer geo...

Three.js czy React jako projekt do portfolio?

Obraz
Three.js to cool biblioteka, można w niej robić grafikę 3D. Lans na całego. Ale React to też lans, bo jakieś tam SPA, czy coś tam można robić, takiego bardziej "profesjonalnego", więc też warto pokazać znajomość Reacta, prawda? Cóż, miałem niedawno rozmowę o pracę, w której poproszono mnie o stworzenie projektu od zera w Three.js i wyświetlenie czegoś na ekranie. Proste prawda? Niby tak, ale i tak co chwila coś się nie chciało wyświetlić (wiadomo jak to jest z Three.js. Zapomnisz o czymś, np. o dodaniu światła i masz czarny ekran). I tak przez około godzinę. Czułem, że wypadam bardzo źle. No ale na codzień nie piszę projektów od zera, tylko wykorzystuję już istniejący kod. Jednak rozmowy o pracę to dość specyficzna sytuacja, gdzie robi się rzeczy odrealnione od tego, co się naprawdę robi i w sytuacji sztucznych ograniczeń . Więc przypuszczam, że wypadłem źle. Przypuszczam, bo nie dostałem jeszcze odpowiedzi. Kto wie, może akurat się mylę i dobrze wypadłem? :) edit: Aku...

Nauka Three.js

Obraz
Ostatnio (od stycznia) mocno wszedłem w temat Three.js. Masę rzeczy się nauczyłem. No i zrobiłem taki edytor . chociaż on jeszcze nie skończony jest. Tylko, że w międzyczasie inne pomysły mnie naszły, więc z jednego projektu w Three.js zrobiłem kilka projektów. Wydzieliłem "silnik" oraz rzeczy specyficzne dla projektu i jakby robię kilka apek na jednym silniku (nawet w jednym repo wszystko jest, tak wygodniej). Poza tym: nauczyłem się operować na wierzchołkach, tworzyć własną geometrię. W ten sposób tworzę teren: https://github.com/hex13/tileterrain/ . Jest on inspirowany terenem, jaki miały gry izometryczne z lat 90 stworzyłem własny shader. I dzięki temu mam inny kolor terenu na różnych wysokościach (na górze śnieg, niżej skały, niżej trawa, a najniżej piasek). A przedtem to shaderów się bałem. poznałem wiele dziwactw Three.js. Niestety jest to biblioteka, która ma wiele rzeczy nieintuicyjnych i trzeba naprawdę uważnie czytać dokumentację + uczyć się na własnych błęda...

Jak nie sprawdzać wiedzy technicznej: platformy online

Obraz
Platformy quizzowe dla programistów (Codility czy inne). Hit czy kit? Teoretycznie obiecują szybkie sprawdzenie wiedzy i weryfikację, czy kandydat jest dobry. Teoretycznie. Bo teoria często rozmija się z praktyką. Poczytajcie szokującą relację ze zdawania testów na platformach on-line. Zadania zamknięte gone wrong Kiedy pytania zamknięte są do dupy? Wtedy, kiedy pytanie jest źle sformułowane i nie wiadomo co wybrać (pomimo posiadania wystarczającej wiedzy). Kiedy pasuje kilka odpowiedzi naraz. Szczególnie jeśli to zadanie, które bada rzeczy subiektywne. Np. który CSS bardziej pasuje? (pytanie raczej z webdesignu, projektowania graficznego stron, niż sprawdzające wiedzę techniczną). Wybrałem odpowiedź, która wydała mi się najbardziej rozsądna, i używała stonowanych kolorów.  I figa, okazuje się, że wg nich źle wybrałem, bo "prawidłową" odpowiedzią było wybranie CSSa w bardzo jaskrawo-oczojebnych kolorach. Aha. To dużo tłumaczy. Zakładam, że jeśli to była prawi...

Co jeśli nie mogę znaleźć nazwy?

Co jeśli nie możesz znaleźć nazwy dla funkcji? (ew. dla zmiennej, klasy itp.). Zadaj sobie pytania - co funkcja robi? Jakie jest jej przeznaczenie? Jaka jest metafora, która by pasowała (wszystko jest pewną metaforą)? Czasem też sprawdza się taka metoda, żeby najpierw pomyśleć o metaforach/koncepcjach, tzn. najpierw wymyślić nazwę dla funkcji, jej argumenty, sposób wywołania, a dopiero potem zabierać się za implementację. Ja jak mam zrobić "publiczne" API  (przez publiczne mam na myśli wszystko to, z czego się używa w wielu miejscach - np. klasa, która będzie używana przez 20 różnych modułów w projekcie) - to najpierw staram się wymyślić ładne i wygodne API, wtedy myślę o abstrakcjach, nazwach itp. Otwieram sobie oddzielny plik i po prostu "piszę na sucho" przypadki użycia danej funkcji (w momencie kiedy jeszcze implementacja nie jest napisana). A potem staram się dostosować implementację do nazw i do API, które sobie wymyśliłem. (zauważ, że im bardziej ...