Wpis z mikrobloga

Mirki, trochę się ogarnąłem z #java i stwierdziłem, że projekt, który rozgrzebałem jest ponad moje siły, jak na pierwszy projekt początkującego - prosty menadżer magazynu sklepowego okazał się być wcale nie tak prosty. Postanowiłem zrobić zatem inną, mniej skomplikowaną apkę.
Docelowo TimeKeeper, bo tak się nazywa, ma być zegarem/timerem do śledzenia czasu poświęconego na pracę nad danym zadaniem (inspiracją był blogowy wpis @JavaDevMatt). Jeśli chodzi o rozwiązania projektowe: dane przechowywane są w pliku .csv, ale podłączenie bazy danych przez np. Hibernate nie powinno być problemem (podmiana implementacji interfejsu + dodanie adnotacji, albo pliku xml). Każda część GUI jest obsługiwana przez odrębny kontroler. Dzięki temu nie ma jednego wielkiego pliku FXML, tylko kilka odrębnych mniejszych, a i sama klasa kontrolera jest znacznie mniejsza. DI jest rozwiązane bez framework'u, w głównym pliku FXML, który instancjuje kontrolery poszczególnych elementów UI i wstrzykuje do głównego kontrolera.

Apka ma też dawać możliwość zwinięcia do paska systemowego, ale póki co JavaFX nie pozwala na to (tzn. jest obejście z wykorzystaniem Swing'a, ale wolałbym go uniknąć). Na chwilę obecną zaimplementowana jest podstawowa funkcjonalność, tj. mierzenie czasu od dodania zadania do jego ukończenia z możliwością zapauzowania. Zmiany zapisywane są automatycznie co minutę plus przy każdym zapauzowaniu zadania Chcę dodać w najbliższym czasie kolumnę z ikonami (uruchomiona, zatrzymana, zakończona, +1h, +3h, +5h, +10h), pasek statusu i legenda u dołu i tooltipy oraz ogarnąć do końca wygląd okna i poszczególnych elementów. Mój #rozowypasek zasugerował, żeby dodać też opcję timer'a (odliczanie czasu od zadanej wartości do zera i później czasu ile przekroczono zadaną wartość).

Czego się nauczyłem przy tym projekcie:
1. Nie warto pchać się w naukę dużych frameworków (Spring, Hibernate itd.) dopóki nie ogarnie się podstaw OO.
2. Dobrze przemyślany design zawsze pozwoli w odpowiednim momencie framework dołączyć.
3. JavaFX jest mocno zniuansowanym API o czym przekonałem się na przykładzie ogarniania TableView.
4. Prostą współbieżność (np. odliczanie czasu dla kilku zadań na raz) można w JavaFX rozwiązać prosto dzięki klasie Task.
5. Długo by wymieniać :-)
6. Wydaje mi się, że nieco ogarnąłem po co i jak używać interfejsów.
EDIT 7. Lambdy i method calls, to bardzo wdzięczne dodatki do języka, moim zdaniem. Czynią kod dużo czytelniejszy.

Roboczy kod dostępny jest na GitHubie: https://github.com/Kitke/time-keeper/ Z jakiegoś powodu GitHub psuje kodowanie znaków (w projekcie jest Windows-1250, ale jak tak dalej pójdzie będzie UTF-8).

Szykuję klatę na przyjęcie krytyki wskazówek i porad od zawsze życzliwych wykopowych mirków ;-)

#programowanie #java #javafx #naukaprogramowania #odzeradodevelopera #kitkeprogramuje

Screen:
k.....e - Mirki, trochę się ogarnąłem z #java i stwierdziłem, że projekt, który rozgr...

źródło: comment_vqhD1LY0shp2YTcXGuCrfmDCwZhJGies.jpg

Pobierz
  • 23
  • Odpowiedz
@oxern: Dzięki :-) Myślę, że tego rodzaju apka, dla ogarniętej osoby jest do zrobienia znaaacznie szybciej.

Nie szukam jeszcze niczego. Z paru powodów. Ze względu na sytuację życiową (30 lvl, #zona i bobo, kiepsko płatna, ale stała praca z umową na czas nieokreślony) w grę wchodzi jedynie płatna opcja (a więc praca). A żeby szukać pracy jako junior jestem jeszcze za wąski. Plan jest taki, że dopieszczam TimeKeeper'a, robie jeszcze dwa
  • Odpowiedz