Zdjęcie w tle
Java

Społeczność

Java

69

Dla programistów Java

    Hejtownicy potrzebuje małej podpowiedzi bo nigdzie nie mogę znaleźć satysfakcjonującej odpowiedzi.
    Mam projekcik w któym mam encję która ma 11 pól i ostatnie pole jest plikiem pdf. W jaki sposób prawidłowo powinienem przechowywać w DB dokument? Czy mam zakładać jakąś bazę plikową czy może przechowywać ścieżki na AWS (nigdy nie miałem doczynienia z tym).
    Technologie Java, spring, mysql
    #java
    #programowanie
    2

    @toord Rób tak jak łombat powiedział, mądrze prawi.

    Zaloguj się aby komentować

    Mikroserwisy, wszędzie mikroserwisy. Tylko jak testować to w praktyce? Podejść jest wiele, jedno z nich to testy integracyjne. W ramach teorii tak zwanego "black box testing" nie powinniśmy ingerować w wewnętrzne komponenty systemu a jedynie weryfikować wejście i wyjście z systemu.
    Oczywiście jest to łatwe w teorii, nieco trudniejsze w praktyce. Jak więc poradzić sobie z wyzwaniem pt. po wywołaniu HTTP powinien być komunikat w Kafce? Na przykład przy pomocy biblioteki testcontainers: https://www.testcontainers.org/, która pozwala uruchomić wasz serwis oraz jego zależności w postaci kontenerów. Naturalnie symulowanie całego klastra np. kubernetes mija się z celem, natomiast z powodzeniem można dorzucić przynajmniej tę część infrastruktury, która zapewnia komunikację.
    Testcontainers poza podstawową funkcjonalnością pozwalającą na uruchomienie dowolnego kontenera z kodu Javy, dostarcza również moduły dla PostgreSQL, MySQL, Cassandra czy też ElasticSearch - lista kontenerów do przejrzenia: https://mvnrepository.com/artifact/org.testcontainers. Z ciekawszych rzeczy - można uruchomić z testem również selenium, które działa w kontenerze, bez konieczności aranżowania wszystkich zależności systemowych potrzebnych do uruchomienia przeglądarki. Brzmi świetnie, nieprawdaż?
    #java #docker
    6

    @Kazix Chodzi głównie o przygotowanie testu w trakcie którego zamieniając komponent na potrzeby testu z docelowego (np. baza danych, kolejka JMS lub topic Kafki na implementację in-memory) pośrednio ingeruje się w zachowanie systemu. Twój test wciąż jest integracyjny, ponieważ wchodzić w interakcję na wyższych warstwach, ale do weryfikacji wyników wymaga wymiany warstw niższych.

    ale nie da rady ogarnąć kolejek


    @splatch dlatego napisałem przy wiremocku rest call. Te 2 narzędzia się uzupełniają - testcontainers do stawiania faktycznej bazy/kolejki itd, wiremock do "mockowania" innych mikroserwisów z których korzysta testowany komponent.

    @splatch testcontainers zjada hibernate na śniadanie i wyplówa pestki. Jest sztos.

    Zaloguj się aby komentować

    Jedna z rzeczy, która mnie bardzo irytuje w Javie to toporność interakcji z systemem operacyjnym. Rozumiem, że JVM jest przenośne i tak dalej, ale ile trzeba się naszarpać, żeby wywołać coś z biblioteki SO/DLL przekracza ludzie pojęcie. Mam nadzieję, że zmiany z FFI (foreign function interface) do użycia i wywołanie funkcji z bibliotek systemowych przestanie być udręką.
    Dla jasności programiści JVM mają do dyspozycji JNI, które wymaga kompilacji kodu natywnego, żeby ten można było wowłać z poziomu JVM. Z mniej topornych opcji mam JNA (oparte o libffi), które jest dość wolne, oraz nieoficjalne api jnr-ffi.
    Dla zainteresowanych https://openjdk.org/jeps/424 i https://github.com/jnr
    2

    @DexterFromLab To prawda, z tym że jako język/platforma nadaje się do GUI i aplikacji wysokopoziomowych. Niekoniecznie jest w tym dobra, ale ma tę przewagę nad innymi platformami, że zmiana architektury procesora czy systemu operacyjnego nie ma dużych implikacji. Druga kwestia, że jest sporo aplikacji wysokopoziomowych typu klient/server, w których można z powodzeniem wykorzystać JVM.

    Zaloguj się aby komentować