Aktywne Wpisy
suleD +216
Nienawidzę Rosji. Jedyne co świat zawdzięcza temu wrzodzie na dupie świata to śmierć, gwałty, głód, choroby, bieda, zniszczenie, przemoc, rozbijanie społeczeństwa. #ukraina
Igrekpl +85
Po półtora roku od założenia mojego 125L akwarium, choroba zaczęła postępować, i właśnie w mieszkaniu zameldował się drugi baniaczek o pojemności 400L ( ͡º ͜ʖ͡º) wrzucę zdjęcia jak będzie gotowe :D #akwarystyka
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:
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