Friday, March 14, 2014

DietOnJava - JavaFX desktop app


Well, this is my project and this post is an overview of it, I'll explain the basics although it's pretty straightforward as you can tell from the GUI.

I'm making an application for a friend of mine, he's a dietitian and asked me if I could make him an app to create diet programs for his clients. Yes, there are many similar programs (professional ones) out there but he wanted a specific GUI and also this would be a great exercise for me, although I'm a noob Java programmer.

Do NOT expect awesome code and such, I have some experience with Java yes, but this will be my first full-application with JavaFX, GUIs, DBs etc. Also, I haven't implemented any functionality yet, I'm questioning whether I should continue like this or re-write it with another approach, you tell me.

Dev Environment:

I've started building the application on NetBeans 7.4 (now using 8 RC1), Java7 SE and Scene Builder 1.1. Scene Builder was used to create the FXML layout, it's extremely easy this way.

I have an SQLite database that holds the food data, it's a single huge table with all the data, certainly not the most optimal solution but hey, this is my first try on developing something like this.

Functionality:

The Main DB tableview, shows the SQLite database. The buttons below it are self-explanatory, they add, edit and delete entries from the database.

Above the tableview, the client's info are entered and you can select a picture if you like.

The tableviews to the left constitute the diet for each day, you have 5 meals for each day plus a tableview that holds the total sums for each nutrient (total water, total iron, total cholesterol etc).

Foods are added to the meals by dragging and dropping from the main database, to delete foods from the meals maybe double clicking, I'm not sure yet.

This whole screen will be saved probably to XML documents, you'll have a single XML document for each diet schedule. Or JSON, I don't know. I've found libraries that do that so it'll be easy I guess.

Feedback.

That's basically it. There are no "blueprints", no UML, nothing. I look at the GUI and try to see what needs to be done. Since it's object interaction, it's kind of clear what I need to implement.

I haven't worked on the application for a couple of months due to uni exams, I'm really excited to pick it up again but I'm debating whether I'm on the right thought process or not.

ANY kind of feedback would be extremely helpful, I'm here to learn anyway. I have the project on GitHub under a Creative Commons license so feel free to take a look at my (now quite nonexistent code).

Tuesday, March 4, 2014

Και στ' Αγγλικά παρακαλώ...

Δεν ξέρω από πότε ακριβώς αλλά κάποια posts περί προγραμματισμού θα γράφονται στ' αγγλικά από δω και πέρα.

Είτε θα είναι σε φάση tutorial είτε σαν απλό post, θα τα γράφω στ' αγγλικά γιατί σκοπεύω να έχω πάρε δώσε με κάποια άτομα και είναι καλό να υπάρχουν blog posts για προγραμματισμό.

Αρχικά η σκέψη ήταν να φτιάξω ένα δεύτερο blog καθαρά γι' αυτό το σκοπό, δεν υπάρχει λόγος όμως, κι αυτό το blog μια χαρά την κάνει τη δουλειά του.

See ya later!

Saturday, February 8, 2014

*facepalm*

Γιατί ρε γαμώτο ο κόσμος είναι απλά ΗΛΙΘΙΟΣ;

Είναι δυνατόν να θες να προγραμματίσεις Android εφαρμογές χωρίς να ξέρεις Java; 

Να πας να τρέξεις το οποιοδήποτε IDE μες απ' το zip χωρίς να κάνεις αποσυμπίεση; Και να μην ξέρεις πως να κάνεις αποσυμπίεση ένα αρχείο;

Να τα περιμένεις όλα "στο πιάτο" χωρίς να ψάχνεις να βρεις μόνος σου τη λύση στο γαμημένο API; Ή στο Google, τα πάντα βρίσκει!

Δε λέω, καλό είναι να θες να μάθεις πράγματα επειδή είναι το "hot stuff" της εποχής αλλά μην τρελαθούμε, υπάρχουν κάποια προαπαιτούμενα για κάποιο λόγο!

Φυσικά για online μαθήματα μιλάω και για όλους εκείνους τους ηλίθιους που παραπονιούνται ότι δε δίνονται αρκετές πληροφορίες για τις εκάστοτε εργασίες. Αν εσύ δεν ξέρεις βασικά πράγματα στον υπολογιστή και δεν έχεις ιδέα από προγραμματισμό ή Java, μη τα ρίχνεις στα "μαθήματα που είναι ελλειπή!"

Thursday, January 16, 2014

Usability & Portability


Απ' την αρχή ήμουν ιδιαίτερα σκεπτικός για τα tablet, ποιά η χρησιμότητά τους, το πεδίο που στοχεύουν, το αγοραστικό κοινό... Φυσικά δεν είμαι tech guru οπότε έπεσα τελείως έξω μιας και τα tablets κάνουν τρελές πωλήσεις, είτε πρόκειται για iPad ή Android tablet.

Επειδή πρόσφατα ήρθε στην κατοχή μου ένα 7άρι Samsung με Android, έκατσα να δω με ποιους τρόπους μπορώ να το χρησιμοποιήσω χωρίς να "πάει χαμένο". Με λίγη σκέψη και ψάξιμο, άλλαξαν αρκετά οι εντυπώσεις που είχα για τα tablet, όχι όμως σε βαθμό να είμαι tablet-convert απ' τη στιγμή που εδώ και δύο χρόνια περίπου έχω Android κινητό με αξιοπρεπή οθόνη. Άρα ό,τι κάνει το tablet το κάνει και το κινητό μου, απλά με μεγαλύτερη οθόνη.

Φορητότητα
Έχεις μια συσκευή σε μέγεθος μικρού πιάτου που μπορείς να κουβαλάς μαζί σου χωρίς καλώδια, ποντίκια κλπ. Καναπές, κουζίνα, κάλεσμα της φύσης μπλα μπλα μπλα

Εφαρμογές
Υπάρχουν ΤΑ ΠΑΝΤΑ στο Play Store, ως και IDE για προγραμματισμό βρήκα, interpreter για Ruby, επξεργασία εικόνας/βίντεο, office suites, παιχνίδια...

Δεύτερη οθόνη
Γιατί όχι; Κάνεις τι κάνεις στο pc σου, έχεις ένα άλλο site να τρέχει στο tablet, ή μια άλλη εφαρμογή.

Skype
Αν έχεις οποιοδήποτε θέμα με το Skype στον υπολογιστή (όπως εγώ τώρα τελευταία), το τρέχεις  στο tablet. Κι ειλικρινά μ' αρέσει περισσότερο έτσι.

Mobile view
Προσωπικά προτιμώ μερικές σελίδες ή/και εφαρμογές στο Android (στην προκειμένη) λόγω streamlined design.

Laptop look-alike
Αν δεν έχεις συγκεκριμένες απαιτήσεις από έναν υπολογιστή, και το tablet μια χαρά σε καλύπτει! Bluetooth πληκτρολόγιο, ποντίκι δεν χρειάζεσαι (αν κι έμαθα ότι μπορεί να συνδεθεί και ποντίκι), θήκη για να στέκεται όρθιο, κατεβάζεις τις εφαρμογές που θες κι είσαι golden!

Άνετα το παίρνεις στη σχολή για να κρατάς σημειώσεις χωρίς να κουβαλάς το 15άρι λαπτοπ στην τσάντα. Με ένα ή δύο καλώδια συνδέεται σε προτζέκτορα για να κάνεις παρουσίαση (Google Docs yo!). Δε χάνεις κανένα Facebook update (γιατί είσαι τόσο κοινωνικός ρε παιδί μου) λόγω 3G.

Τώρα δε μπορώ να σκεφτώ άλλα (έπρεπε να τα 'χα σημειώσει), αλλά θα μου 'ρθουν.

Υπάρχουν και τ' αρνητικά βέβαια που δεν είναι ασήμαντα. 

Multi-tasking
Κατά βάση έχεις μια μόνο εφαρμογή ανοιχτή τη φορά, μετά την κλείνεις κι ανοίγεις άλλη κι ούτω καθ' εξής.

Πολλαπλοί χρήστες
Ναι μεν ένα tablet μπορούν να χρησιμοποιούν όλα τα άτομα μιας οικογένειας, δεν υπάρχει σαφής διαχωρισμός των δεδομένων των χρηστών όμως. Απ' όσο ξέρω, μπορείς απλά να συνδέσεις πολλαπλούς λογαριασμούς (Google πχ) όχι όμως και να διαχωρίσεις τα δεδομένα (email, επαφές κλπ). Σ' αυτό μπορεί να είμαι τελείως λάθος.

Τώρα πάλι δε μπορώ να σκεφτώ κάτι παραπάνω :Ρ αλλά δεν προσπαθώ να κάνω review οπότε και μ' αυτά που έγραψα είμαι εντάξει.

Δεν πιστεύω ότι θ' άλλαζα εύκολα ένα λαπτοπ μ' ένα tablet. πιθανότατα θα πήγαινα για ένα 13.3" λαπτοπ, best and worst of both worlds.

Wednesday, January 15, 2014

Τι χρονιά έχουμε;

Πώς γίνεται ρε γαμώτο εν έτει 2013-2014, ένα συγκρότημα να 'χει για site ένα απλό HTML "πράγμα" με οβάλ gradient εικόνες (μην κάνεις ότι δε θυμάσαι) για navigation; CSS και JavaScript δεν ξέρουμε τι είναι;

Και τώρα να ξεκίνησες, και λεφτά να μην έχεις, και κάποιος γνωστός να ξέρει HTML, ε δεν κάνεις για ιστοσελίδα αυτά που κάναμε όταν ήμασταν παιδάκια κι ανεβάζαμε σε κάτι δωρεάν hosts με κατάληξη tk.

Γι' αντίλογο θα πεις "ε και ποιός μπαίνει τώρα στο official site, όλοι Facebook κλπ", ναι αλλά ρε μεγάλε έδωσες που έδωσες λεφτά για το hosting και το domain (στην κυριολεξία "ψιλά" αλλά τα 'δωσες), πλήρωσε κάποιον να σου κάνει ένα site της προκοπής. Είπαμε, τα τελευταία χρόνια το web design έχει γυρίσει στο πολύ minimalistic ή/και one-page στυλ, το site σου όμως είναι για τ' ανάθεμα!

Είμαι εντελώς υπέρ του DIY σε τέτοιες περιπτώσεις, και για το κόστος αλλά και για το γαμώτο της υπόθεσης. Αυτό όμως είναι...

Thursday, November 7, 2013

e-Library


Τώρα πια με το Internet, είναι πανεύκολο να βρεις βιβλία οποιασδήποτε θεματολογίας. Εγώ φυσικά αναφέρομαι στο δικό μου τομέα, αλλά πάνω κάτω τα ίδια ισχύουν για όλους τους τομείς, αρκεί να ψάξεις.

Θες για παράδειγμα να βρεις το τάδε βιβλίο προγραμματισμού, ψάχνεις και μετά από λίγο στρογγυλοκάθεται στο δίσκο σου. Βρίσκεις κι ένα άλλο, και μετά ένα άλλο και πάει λέγοντας. Κι έχεις μαζέψει ένα σωρό pdf, ταξινομημένα στους εκάστοτε φακέλους και σκέφτεσαι "Α ωραία, έχω πολύ υλικό".

Αντί να 'χεις δώσει 200-300 ή και παραπάνω ευρώ για τα συγκεκριμένα βιβλία, ξόδεψες μερικά λεπτά της ώρας για να τα κατεβάσεις (ναι, τα βιβλία πληροφορικής είναι κατά βάση πανάκριβα).

Έλα όμως που άρχισα να καταλαβαίνω ότι δε με βολεύει αυτό το στυλ διαβάσματος. Προτιμώ το φυσικό βιβλίο, αυτό με τις άσπρες σελίδες που μπορεί να σε κόψει στο δάχτυλο και ν' ανατριχιάσεις.

Παίζει λίγο ρόλο και το "ρομαντικό" της υπόθεσης, να 'χεις δηλαδή τη βιβλιοθήκη σου. Να πας να ψάξεις τι θα διαβάσεις.

Κυρίως όμως καταλαβαίνω ότι δε μπορώ να κάθομαι να διαβάζω στον υπολογιστή, μου είναι πιο εύκολο να 'χω το βιβλίο μπροστά μου, να διαβάζω και να κάνω τι κάνω στον υπολογιστή. Και προγραμματισμός να είναι και να πρέπει να γράψω κώδικα, πάλι με βολεύει καλύτερα το φυσικό βιβλίο.

Κι εν μέρει λόγω αυτού, δεν έχω ασχοληθεί με σχεδόν κανένα απ' τα βιβλία που έχω στο δίσκο μου.

Η λύση; Να επιλέξω κάποια και να πάω να τα εκτυπώσω, δεν πιστεύω πως θα κάνω δουλειά με άλλο τρόπο.

Οι guides και τα tutorials στο Internet είναι δομημένα με τέτοιο τρόπο ώστε να μη χρειάζεται να 'σαι καρφωμένος για ώρες στην οθόνη, συνήθως έχουν μικρά και περιεκτικά κείμενα. Το βιβλίο όμως είναι αλλιώς, έστω και σε ψηφιακή μορφή.

Επομένως 2-3 pdf στο φλασάκι κι εκτύπωση.

Herp derp...

Αν το μυαλό του Βασιλάκη δε στροφάρει και δε βλέπει πρώτα-πρώτα αν απενεργοποιήθηκαν οι SATA controllers απ' το BIOS, δε του φταίει κανένας που έχασε πόσες ώρες βάζοντας-βγάζοντας δίσκους και ψάχνοντας δισκέτα(!!!) για να εγκαταστήσει τους drivers της μητρικής...

"Εγκώ ξέρει από πιτσί, τέλει φτιάξει ντικό σου;"