Projekt do CV - Java Spring RESTful

Projekt do CV - Java Spring RESTful
bezikan
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 2 lata
  • Postów:42
0

Czy ten projekt nadaje się do CV?
https://github.com/bezikan/pharmacy

TD
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 4 lata
  • Postów:380
0

Projekt jakich wiele. Mógłbyś sklonować jakiś spring-crud-example, pozmieniać nazwy i wyjdzie coś takiego. Do CV średnio.

bezikan
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 2 lata
  • Postów:42
0

co w takim razie polecasz innego?

TD
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 4 lata
  • Postów:380
0

Coś bardziej rozbudowanego. Coś o czym potem mowiesz opowiedzieć, co ma jakąś (skomplikowaną) logikę lub rozwiązuje jakiś techniczny problem. Zastanów się, co możesz na rozmowie powiedzieć o tym projekcie? Czego się nauczyłeś i jakie ciekawe rozwiązania tam zaimplementowałeś?

au7h
  • Rejestracja:ponad 11 lat
  • Ostatnio:12 miesięcy
  • Postów:215
0

A podobno 90% osób nie robi w pracy skomplikowanych rzeczy tylko pisze crudy, to po co coś innego?
Nie każdy chce być w tych 10% i pisać sterowniki do głowic nuklearnych (o ile takie coś istnieje) :-D

edytowany 1x, ostatnio: au7h
TD
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 4 lata
  • Postów:380
0

podobno. Umieszczając projekt w CV chciałbyś raczej żeby pomógł on wybić Ci się z tłumu. Po pięcioletnich studiach ludzie mają znacznie ciekawsze projekty w CV niż CRUD w springu, więc takie coś może zadziałać wręcz odwrotnie do zamierzonego celu.

Zobacz pozostałe 7 komentarzy
Cr0w
dla @au7h lub innych to tak wygląda... Mam wrażenie że za dużo Shalom się naczytałeś.
TD
W sensie ja za duzo sie naczytalem? Pracuje juz kolejny rok i robilem różne rzeczy, nie było to rocket science, ale tez nie crudy. Wiem też jakie rzeczy sie robi w innych projektach i tez nie są to crudy. Wiem tez jakie projekty robili ludzie na studiach z którymi pracuje, ale o tym juz przeciez mowilem. Odpowiadając na forum zazwyczaj zakładam, że ktoś ma jakieś tam ambicję. Jeżeli tak nie jest to warto to zaznaczyć, żeby sie nikt nie produkował niepotrzebnie.
au7h
Hee, a ty najwyraźniej masz Efekt Dunninga-Krugera :P Ja pisałem o tym co robi się u mnie na studiach w Krakowie i jakie są propozycje tematów prac. CRUD + zalążki analizy obrazu, parsowanie jakichś tam stron jsoupem, reszta to prace z grafiki gdzie trzeba zaprojektować galerię handlową w Autodesk Maya itp itd lub prace z elektroniki np. Budowa drukarki 3D. W domu można sobie pisać nawet i os'a. Np. moja praca to łączenie z zewnętrznym api, pobieranie danych, mapowanie na klasy, jakieś tam obliczenia i wizualizacja wyników w postaci latających "kropek" na mapie radaru :-D
TD
O co Ci właściwie chodzi bo już nie rozumiem? Dałem kilka rad i pomysłów na projekty, które mocno zwiększają szanse na bycie zauważonym, choćby w Krakowie w ktorym tez mieszkam, bo do jakiegoś Google może być za mało. Nikt nie musi z nich korzystać, zawsze można próbować szczęścia z crudem z generatora.
WN
@au7h: zanim zarzucisz komuś, że padł ofiarą efektu Dunninga-Krugera, upewnij się, że sam nie jesteś jego ofiarą. Rzeczywistość w projektach wygląda tak, że zawsze znajdą się części, które są typowym CRUD'em oraz te bardziej skomplikowane z logiką, jak sam to zauważyłeś zresztą. Wspomniane prace inż. są tu doskonałym przykładem. Podobnie jest w projektach komercyjnych, gdzie jedna część systemu to CRUD, a inna może zawierać reguły biznesowe. Dlatego ślepe podejście typu CRUD/"Encje na twarz i pchasz" to jedna z przyczyn, dla których finalnie otrzymuje się big ball of mud.
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:3 minuty
  • Postów:4886
0

A co to jest, bo README nie widzę.


TD
CRUD. Zapisuje kilka encji o różnych nazwach do bazy.
W1
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 5 lat
  • Postów:49
1

Nie ma testów, nie ma frontu, nie korzystasz z dockera. Jeszcze długa droga przed tobą do juniora/stażysty. Tak jak kolega wyżej napisał, twój projekt nie różni niczym od projektów ludzi po bootcampach, więc zginiesz w tłumie miernych CV. Wygląda jak lekko zmieniony Spring CRUD example.

Polecam robić własne projekty od zera. Nie musi to być nawet oklepany CRUD w springu i hibernate. Twój projekt robi tyle co zwykła TODO-lista. Jak chcesz zdobyć pracę i mieć coś ciekawego do CV to postaraj się i zrób coś kreatywnego i użytecznego. Mój znajomy ostatnio się przebranżawiał i robiłem mu mały code-review. Zrobił prostą aplikację wielowątkową: porównywarkę cen danego produktu(z allegro, ebay, amazon itd), która odpalała się co określony czas (np raz na tydzień). Łączyła się z różnymi API, jeżeli cena była w innych walutach to łączył się również z kantorem i obliczał, zapisywał do bazy a potem generował raport w postaci pliku excela jak cena zmieniała się w czasie. Nie było to łatwe wyzwanie i czasami gdy nie miał dostępu do publicznego API używał parserów HTML typu JSoup.

Mając taką prostą aplikację w CV z łatwością dostał się na staż i z tego co wiem jest zadowolony i jakoś sobie radzi. Bo na temat takiej aplikacji mógł sobie porozmawiać na rozmowie, rozwiązał kilka problemów, które musiał sam rozwiązać, bo nie było do nich "tutoriala". O twojej apce nie ma zbytnio co rozmawiać, więc jak już chcesz robić takie aplikacje CRUDowe to rób je porządnie tzn.
**- zawsze rób testy!!! (jednostkowe bez mockowania, integracyjne)
- jeśli chodzi o pakiety to masz układ typowo z tutoriala, poczytaj o package by feature http://www.javapractices.com/topic/TopicAction.do?Id=205
- dodaj front np: w thymeleafie, angularze lub reactcie
- naucz się i korzystaj z dockera
*- dodaj trochę operacji i logiki biznesowej do tego CRUDa, żeby ta aplikacja nie opierała się tylko na operacjach na bazie danych. Przykładowo: wysyłanie maili, generowanie statystyk, cokolwiek fajnego sobie wymyślisz *
*- zamiast robić dużo małych aplikacji zrób 1-2 większe, nad którymi posiedzisz kilka miesięcy i przyłożysz się do jakości i czystości kodu ***

popatrz np: tutaj: https://github.com/bezikan/pharmacy/blob/f062bb189eb1efeab99a2cb4b1a0913f25350647/src/main/java/com/example/pharmacy/controller/DiseaseController.java#L74

Jaki sens mają te puste linie? Świadczy to tylko o twoim niedbalstwie w kodzie.

edytowany 2x, ostatnio: witold12
au7h
Nie każdy w domowych warunkach musi korzystać z dockera. Widziałem wiele ciekawych projektów odpalanych z IDE i na tym poprzestawały. Myślę, że armata na wróble jest niepotrzebna
DA
  • Rejestracja:ponad 10 lat
  • Ostatnio:2 miesiące
  • Postów:176
0

Rzuciłem okiem na kod, endpoint do zapisywania chorób:

Kopiuj
@PostMapping("/diseases")
    public ResponseEntity<?> createDisease(@RequestBody Disease disease) {
        if(diseaseRepository.findById(disease.getId()).isPresent()) {
            logger.info("choroba istnieje w bazie");
            return new ResponseEntity<>(HttpStatus.CONFLICT);
        }
        return  new ResponseEntity<>(HttpStatus.CREATED);
    }

Gdzie tu jest zapis? :D No i unikałbym stosowania ? w konkretnym, nie-generycznym kontrolerze.

W1
Efekt ignorowania testów jednostkowych
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
1

@witold12

Ja osobiście się z tym podziałem package by feature nie zgadzam, szczególnie z takim jak pokazany w tym artykule. Moim zdaniem podział na zasadzie moduły by feature a wewnątrz modułu podział na warstwy jest dużo sensowniejszy, bo z jednej strony masz moduły odpowiedzialne za niezależne ficzery, a z drugiej strony masz oddzielone pakiety infrastrukturalne (jak kontrolery i repozytoria) i pakiety z logiką domenową. Ale nawet i to ma sens tylko jeśli serio masz tam rozbudowaną logikę i coś się tam faktycznie dzieje, bo jak ktoś ma 3 klasy i robi z tego projekt na 5 modułów i 50 pakietów to czasem brakuje słów.

  • naucz się i korzystaj z dockera

gdzie tam jest miejsce na dockera w ogóle?


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
Zobacz pozostałe 8 komentarzy
danek
ukrycie klas, tak żeby na zewnątrz modułu/pakietu było widać tylko to co chce a nie wszystko. Przy zwykłych javowych pakietach często szybko okazuje się, ze w jednym pakiecie siedzi po prostu dużo rzeczy
baant
Po 1 w typowym projekcie jak dobrze se to podzielisz to wcale nie jest tak dużo :) Po 2 co za różnica czy masz w pakiecie 20 klas, czy porobisz sobie w nim 5 podpakietów po 4 klasy. Jedyny plus to estetyka w drzewku klas w IDE a właśnie tracisz przez to hermetyzację
danek
zależy też od zakresu pakietu. Nie mniej dopiero eksperymentuje z różnymi podejściami
TD
@baant dużo łatwiej wdrożyć się w projekt kiedy podział na pakiety jest dobrze zrobiony. W Scali można np. stworzyć klasę która jest widoczna tylko w paczce wyżej, ale nie dalej, jest to imo całkiem sensowne rozwiązanie.
baant
zgadza się, niestety brakuje tego w javie i trzeba sobie z tym radzić :c
TD
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 4 lata
  • Postów:380
1

W sumie ciężko na tej stronie znaleźć kto w ogóle za nią stoi, nie wiem więc czemu ktoś miałby brać te porady na poważnie.

Poza tym, ze wszystkimi tymi poradami typu package by feature, package private i fasady czy DDD problem jest taki, że ludzie którzy promują te idee prezentują je na bardzo prostych przykładach i nieskomplikowanej domenie. W realnym świecie domena jest często na tyle zawiła, że nie da się tak łatwo wydzielić niepowiązanych ze sobą features.

bezikan
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 2 lata
  • Postów:42
0

@witold12 @tdudzik Ok, dzięki :)
Hmmm... więc brakuje logiki i testów w tym projekcie... coś poza tym?

Mam POMYSŁ ! :)
Czy aplikacja webowa komunikujący się z zewnętrznym api będzie dobrym pomysłem? np. Yahoo - restowe zapytania do wyciągania notowań akcji spółek giełdowych + prosta 2-stronicowa warstwa frontendowa w react albo angular

edytowany 1x, ostatnio: bezikan
TD
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 4 lata
  • Postów:380
0

Osobiście nie jestem fanem side projectów i mam problemy z wymyślaniem czegoś ciekawego. Załapałem się do branży jak jeszcze było łatwo, a w CV miałem jakiś system rezerwacji w JEE (z webowym interfejsem, lekką logiką i testami) i jakiś niedokończony poker (z TDD). Wtedy wystarczyło, a teraz już nie mam żadnych projektów w CV i daje radę.

Z jakichś pomysłów, które może nie są świetne, ale lepsze niż CRUD to np:

  • collaborative LaTeX editor - możesz wykorzystać np. serwer LSP (https://texlab.netlify.com/), algorytm OT (https://en.wikipedia.org/wiki/Operational_transformation) i jakieś ciekawe technologie frontendowe, backendowe pewnie też,
  • turowa gra multiplayer, np. statki czy poker - tutaj można poszaleć na backendzie + np. frontend oparty o websockety, można też rozważyć JSON-RPC, gRPC czy protobuf
  • mobilna, aplikacja do zdalnego sterowania samochodem (samochodzikiem) - tutaj też można poszaleć, zarówno po stronie mobilnej (można skorzystać z jakichś sensorów), ale też choćby z elektroniką i dodać np. automatyczne hamowanie kiedy utracona jest łączność.

Nie są to co prawda typowe projekty pod Springa, ale nie wiem też czemu się tak ograniczać i na mnie coś takiego zrobiłoby większe wrażenie niż kolejny CRUD. Każdy z nich pokaże, że się przyłożyłeś, zaimplementowałeś jakiś algorytm lub rozwiązałeś techniczny projekt, potrafiłeś zrozumieć różne technologie i zagłębić się w rózne specyfikacje. Może też pokazać, że umiesz pisać dobry kod, jeżeli komuś będzie chciało się wejść na githuba i go przeglądać. Prawda jest jednak taka, że na staż umiejętność pisania pięknego kodu nie jest kluczowa i wiele osób przekona sam opis projektów, a reszta wyjdzie na rozmowie.

edytowany 1x, ostatnio: tdudzik
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)