• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Game of Life - Automat komórkowy - project MERN - Review

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
195 wizyt
pytanie zadane 10 lipca 2017 w JavaScript przez Frozenfroggie Użytkownik (990 p.)

Witam serdecznie,

postanowiłem stworzyć projekt który pozwoliłby mi na usystematyzowanie dotychczasowej wiedzy a więc wykorzystujący Mongo Express React Node. Mój wybór padł na zrealizowanie automatu komórkowego Game of Life, nie będę się nad tym rozwodził bo w zakładce About można o tym poczytać. W "grze" można wczytywać struktury już zapisane przezemnie, tworzyć własne struktury a po zalogowaniu także zapisywać je do local storage, poza tym można zmieniać ilość pożądanych fps i wielkość planszy. W trakcie tworzenia pojawiało się w mojej głowie wiele pytań m.in.:

1) Memory leaks- w dokumentacji express-session jest napisane żeby go nie używać w produkcji bo używa MemoryStore a ten powoduje "memory leaks", dlatego użyłem MongoStore aczkolwiek nie do końca to rozumiem. Na msdn jest napisane, że każda aplikacja musi "oczyszczać" dynamicznie alokowaną pamięć kiedy kończy jej używać a jeśli tego nie robi to wtedy właśnie pojawia się memory leak. Natomiast z dawnej nauki c++ pamiętam, że określało się z góry wielkość tablicy a jeśli się nie wiedziało jaka tablica jest potrzebna to wtedy właśnie używało się dynamicznie alokowanej pamięci. Natomiast w js nie określamy wielkości tablicy, czyli co, zawsze używa się dynamicznie alokowanej pamięci i ona jest jakoś automatycznie oczyszczana? Jeśli pisze tu herezje to wybaczcie ale trochę się pogubiłem w tym temacie i prosiłbym o wyjaśnienie.

2) Optymalizacja- na moim kompie (i5-6200U, 8gb ram, dysk ssd) i przeglądarce Google Chrome ver. 59.0.3071.115 przy największej planszy (50x60) chodzi z największa możliwą do ustawienia prędkością- 20fps. Natomiast już na Mozilli ver. 54.0.1 wydajność drastycznie spada (max. 10fps), już nawet na Microsoft Edge jest więcej (~15fps). Dlatego chciałem zapytać czy to jest moja wina jako programisty? Powininem to jakoś zoptymalizować? W trakcie pisania kodu starałem się zwracać uwagę na optymalizację i np. wiązałem istotne dla działania silnika gry funkcje z kontekstem wywołania już w konstruktorze zamiast używać arrow functions bo czytałem, że to zwalnia program, tak samo w webpack.prod.config.js dodałem pluginy które mają pomóc zoptymalizować apke. Na co jeszcze powinienem zwrócić uwagę?

3) Testy- czy na tym poziomie zawracać sobie wgl tym głowę? Próbowałem z Mocha i Chai ale konfiguracja dla React'a wydawała mi się strasznie skomplikowana.

4) PropTypes- czy konieczne jest ich określanie dla każdego komponentu React? To bardzo uciążliwe..

Zdaje sobie sprawę, że kod się trochę rozrósł a każdy z Was ma swoje rzeczy do roboty i nie będzie mi wszystkiego przeglądał lecz będę wdzięczny za każdy feedback, co mam nie tak w kodzie, co mógłbym zrobić lepiej, co poprawić, a może jakieś rady czego teraz powinienem się nauczyć? Co jeszcze potrzeba do pracy jako junior-fullstack-webdeveloper? Z góry dziękuję za każdą opinię, poradę!

Linki:

Github repository

App

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+4 głosów
2 odpowiedzi 648 wizyt
0 głosów
0 odpowiedzi 440 wizyt
pytanie zadane 12 grudnia 2016 w JavaScript przez pietrzakacper Mądrala (7,480 p.)
0 głosów
0 odpowiedzi 235 wizyt

93,434 zapytań

142,429 odpowiedzi

322,662 komentarzy

62,798 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...