•  

    Próbuje w końcu pisać testy, może ktoś zerknąć czy te są ok?
    kod
    #java #junit #testyjednostkowe #naukaprogramowania

    •  

      @Cheessys:
      Trochę wszystko poplątane jest ze sobą. Na początku jest wygodnie mieć referencje we wszystkie strony, ale potem i tak trzeba będzie to usunąć. Artykuł zawiera głosy, czy głosy zawierają artykuł? Przy większej ilości zamienisz wszystko na LAZY, a potem i tak trzeba będzie to pobierać oddzielnie ze stronnicowaniem. Można to oddzielić zupełnie, jak np. podłącza się komentarze z facebook na stronie internetowej. One mają referencje do podstrony, ale nie muszą wszystkiego wiedzieć. Tak samo można zrobić z głosowaniem - może wystarczy nam samo ID activity, może jeszcze typ? Wtedy trzymasz wszystko od głosowania w w pakiecie io.spring.wypok.vote (czyli wydzielony controller, repozytorium itd) i wewnętrzne klasy NIE MAJĄ żadnej referencji do klas z innych pakietów. Jeżeli to jest tylko testowy projekt, to z drugiej strony dobrze jak napotkasz wszytkie wyzwania po drodze, a po roku będziesz próbował połapać się w spagetti kodzie ;)
      Nie, bazując na tym, co masz teraz, lepiej pobrać elementy wg autora komentarza (select postComment form PostComment postComment join PostComment.vote join postComment.vote.user where postComment.vote.user=:user). Zastanów się, gdzie masz sesję jpa i gdzie transakcje i co się może stać, jak pozmieniasz sobie w środku takie entity, czy zsynchronizuje się z bazą na koniec? Co jak dodasz Transactional na serwisach?
      Nie powinno się nic robić dotkowo tylko do testów.
      Testy można rozwiązać na dwa sposoby: pokrycie wszystkich metod i branchy, ale często kończy się tym, że testy sprawdzają implementację a nie zachowanie (zwłaszcza z rozszerzonym mockowaniem), albo rozdzielenie projektu na moduły i wtedy można sobie pozwolić na testowanie fasady (API) modułu według wymagań biznesowych.
      Np. dla głosowania, jako użytkownik (use cases)
      - jako ja mogę zagłosować na Activity.id (nie ważne jakie)
      - jako ja mogę cofnąć głos
      - jako ja mogę zmienić głos
      - jako ja mogę pobrać listę swoich głosów
      - każdy może pobrać listę głosów z danego Activity.id
      Z tego powstaje API:
      - vote(activityid, userid, type)
      - findMyVotes(userid)
      - findActivityVotes(activityid)
      + ewentualne parametry do stronnicowania
      Wtedy testujesz use-cases wraz z warunkami brzegowymi (wyjątki itp) i nie obchodzi Cię jak to jest w środku zrobione póki zachowuje się według wymagań. Dodatkowo oczywiście można dopisac testy wewnętrzne, ale to już nie jest wymagane. Trzeba coś zmienić? Powstaje nowy use-case lub zmienia się istniejący? Test to pokrywa i implementujesz, żeby było zielono. Jest błąd? Dopisujesz test, który go odtwarza i doprowadzasz do zieloności. W środku może być nawet syf ale nie obchodzi Cię nic oprócz API do podczepienia innych klocków, bo jest zamknięty w pudełku odpowiedzialnym za jedną rzecz i działa, a nie rozsypuje się po całym projekcie.
      Pojedyncza odpowiedzialność - też słowo klucz. UserController powinien się nazywać MasterController, bo robi wszystko. Tak naprawdę nie ma czegoś takiego jak User - Użytkownik to jest aktor, ktoś, kto siedzi przed monitorem, a w systemie jest jego Profil, Artykuły, Komentarze, Głosy. Spójrz w ten sposób, a łatwiej Ci będzie oddzielić odpowiedzialności klas. To jest pierwszy element z SOLID.
      pokaż całość

    •  

      @Cheessys: Widzę progres. Chcę zobaczyć wszystko o postach, wchodzę w pakiet z postami i znajduję tylko to. Przy zależnościach między serwisami trzeba uważać tylko na cykle (nie może być referencji w dwie strony).
      Jeszcze np. tagi zostały w user service i możesz się zastanowić, ile zależności między pakietami (serwisami z różnych pakietów) można zlikwidować.
      Spotkasz jeszcze dużo projektów pisanych bez przemyślenia struktury (wielkie pakiety controller, services itp), ale zastanów się teraz, co jest lepsze?
      Przy okazji polecam godzinkę poświęcić na architekturę
      https://dev.tube/video/o_TH-Y78tt4
      pokaż całość

    • więcej komentarzy (23)

  •  

    Panowie, wziąłem się na poważnie za #docker, mam kilka pytań na jego temat.

    Nie używałem Docker-composer ponieważ w książkach jest słabo opisany oraz więcej info jest na temat dockerfile.
    Posiadam konfiguracje Windows->wirtualka ( na której jest Debian i Docker) łącze się przez SSH do wirtualki.

    1. Jaka praktyka jest stosowana w robieniu obrazu?
    Stworzyłem obraz Debiana przez Dockerfile wraz z apach2 + mysql + php7 czy powinienem to jednak rozrzucić na 3 obrazy i je konteneryzować i linkować czy zostawić całą paczkę w jednym go i konteneryzować?

    2. Jak już stworzyłem sobie ten obraz, podpiąłem pod niego volumen z projektem to tylko podczas uruchomienia aktualizuje mi zawartość tego volumenu, a chciałbym w czasie rzeczywistym (np. na zapis projektu). Da się to zrobić przez Dockerfile?

    3. Chciałbym na stałe przypisać jakiś adres ip do danego kontenera, ale nie chciałbym przy każdym jej starcie wpisywać
    Docker run -it -d -p 192.168.1.25:89:80 Debian
    Ponieważ mam kilkadziesiąt projektów i do każdego chciałbym stworzyć osobny ekosystem, teraz zapamiętać który na czym stoi po restarcie systemu chwile zajmuje.

    Każde sugestie byłby dla mnie pomocą.

    pokaż spoiler (╭☞σ ͜ʖσ)╭☞
    Pozdrawiam zespół
    @Wybredny_Marian
    #pdk


    #pytanie, #docker, #programowanie
    pokaż całość

  •  

    Cześć! Poszukuję jakiegoś projektu po-godzinach, gdzie mógłbym popisać coś w javie i pomóc przy jakimś fajnym projekcie. Ktoś coś? Poziom mida.
    #java

    •  

      @mpisz: Poszukaj w necie informacji o hackatonach - tam czasami spotykają się ludzie, żeby poprawić coś w opensource projektach. Zobacz jakie tematy podejmowali i wybierz sobie coś. Bywało np. dopisywanie testów do bazy Cassandra. Popatrz sobie na pliki CONTRIBUTE.md na github jakiś fajnych projektów, np: https://github.com/debezium/debezium/blob/master/CONTRIBUTE.md jak są otwarci na welcome everyone .. code changes to siadasz i robisz. Chyba, że zależy Ci na bardziej intensywnym projekcie, to pytaj na wykopie ;) pokaż całość

  •  

    #programowanie #java

    mirki da się przekierować logi z np log4j do String lub jakiejś listy? najlepiej chce żeby po odpaleniu programu mi dopisywało do listy kolejne linie logów. Da się to zrobić? Potem ewentualnie będę zapisywać te logi do pliku lub bazy.

...to tylko najnowsze aktywności użytkownika cypo

Zobacz wszystkie dodane znaleziska, komentarze i wpisy korzystając z menu powyżej.