Στο παρακάτω βίντεο κάνω μια ακόμη προσπάθεια για παρουσίαση. Αυτή τη φορά έχω λύσει το πρόβλημα του ήχου, βρήκα σχετικό φίλτρο στο OBS που αφαιρεί τον θόρυβο στο μικρόφωνο.
Τα θαλάσσωσα όμως στην ανάλυση του βίντεο, επειδή έγραφα σε 2560×1080. Οπότε φαίνεται τώρα με μαύρα πλαίσια πάνω και κάτω. Θα την βρω την άκρη στο επόμενο…
Στο βίντεο αυτό κάνω ένα demo πως φτιάχνεται μια απλή Vue εφαρμογή. Συγκεκριμένα το εργαλειάκι που έκανα προχθές για δημιουργία Gantt διαγραμμαων.
Δείχνω τα στοιχεία που έχει μια Vue εφαρμογή και πως λειτουργούν στο περίπου τα components. Όπως και ποια είναι η λογική πάνω-κάτω του συγκεκριμένου κώδικα.
Δεν είναι tutorial για εισαγωγή στην Vue. Δεν δείχνω αναλυτικά το συντακτικό και πολλές λεπτομέρειες για το framework. Δείτε το απλά σαν ένα demo, για να πάρει κάποιος μια ιδέα. Πόσο εύκολο είναι να φτιαχτεί μια τέτοια εφαρμογή, που χρειάζεται να έχει ένα reactivity, μεταξύ των διάφορων components από τα οποία αποτελείται.
Ελπίζω να το καταφέρνω αυτό. Αλλιώς πάμε στο επόμενο 🙂
Ο κώδικας για το συγκεκριμένο project είναι εδώ.
Χρειάστηκα ένα εργαλείο για δημιουργία Gantt διαγραμμάτων για εργασία στο ΕΑΠ, στα Λειτουργικά Συστήματα. Δεν βρήκα κάτι που να μου αρέσει, οπότε τι πιο λογικό. Έφτιαξα ένα 🙂
Στο εργαλείο βάζεις τις διεργασίες και τον χρόνο που τελειώνει κάθε μία από αυτές. Από κάτω εμφανίζεται το τελικό Gantt διάγραμμα.
Το έφτιαξα σε Vue και τον κώδικα μπορείτε να τον βρείτε εδώ.
Μπορείτε να το χρησιμοποιήσετε στην διεύθυνση http://gantt.apps4net.eu
Πριν πολλά φεγγάρια ήθελα να πακετάρω μια web εφαρμογή μου, για να μπορεί να την πάρει κάποιος και να την εγκαταστήσει εύκολα. Μαζί με όλες τις… παραξενιές που απαιτούσε. Μου λέει ένας φίλος “βάλε Docker να γουστάρεις“.
Πάω κι εγώ να βάλω Docker, χωρίς να το ψάξω και πολύ, με την αίσθηση ότι είναι κάτι σαν Virtual Machine. Αυτό ήξερα, αυτό εμπιστευόμουν. Φυσικά δεν έβγαλα άκρη, αφού πήγα κι εγώ να στήσω Ubuntu με τα πάντα όλα μέσα. Χώσε και Apache, χώσε και PHP, χώσε και mySQL, χώσε και το απαραίτητο third party software. Κάνω restart το container, άφαντα τα data μου.
Με κορόιδεψαν με αυτή τη σαχλαμάρα, είπα. Τι περίεργα μαγικά είναι αυτά; Και άφησα το Docker κατά μέρους. Μέχρι που μετά από καιρό το έπιασα σωστά αυτή τη φορά. Διάβασα σχετική αρθρογραφία, είδα tutorials και μπήκα στο νόημα. Δεν ξανακοίταξα ποτέ πίσω. Και χάθηκα στο ηλιοβασίλεμα…
Τι είναι όμως το Docker; Το Docker όντως είναι κάτι σαν Virtual Machine. Αλλά δεν είναι. Μια Virtual Machine τρέχει μέσα σε ένα λειτουργικό (π.χ. Linux) και είναι η ίδια ένα ολόκληρο λειτουργικό. Είναι ένα ολόκληρο λειτουργικό, μέσα σε ένα ολόκληρο λειτουργικό. Και όλοι μαζί καταναλώνουν resources σαν να μην υπάρχει αύριο.
Ένα Docker container όμως από την άλλη, χρησιμοποιεί το host λειτουργικό. Χρησιμοποιεί τον πυρήνα του host. Δεν έχει δικό του πυρήνα. Με αποτέλεσμα να είναι πολύ ελαφρύ και να ξοδεύει μόνο τα αναγκαία resources, για να τρέξουν τα services που θέλει. Κάθε container είναι πλήρως απομονωμένο από το host λειτουργικό και από άλλα containers.
Η λογική του Docker, είναι ότι σηκώνουμε ένα container για κάθε service που θέλουμε. Θέλουμε Apache; Σηκώνουμε ένα container με Apache. Θέλουμε mySQL; Σηκώνουμε ένα container με mySQL. Και πάει λέγοντας. Φυσικά μπορούμε να τα χώσουμε όλα σαν ένα ενιαίο λειτουργικό σύστημα, αλλά δεν έχει κανένα νόημα όλο αυτό. Ένα γατάκι πεθαίνει κάθε φορά.
Μπορούμε επίσης να χρησιμοποιούμε διαφορετικές εκδόσεις ενός service σε ξεχωριστά containers. Θέλουμε PHP 5.6; Σηκώνουμε container με PHP 5.6. Θέλουμε με 7.4; Σηκώνουμε με 7.4. Αλλάζουμε πολύ εύκολα τις εκδόσεις και μπορούμε να δοκιμάζουμε την εφαρμογή μας σε διάφορα περιβάλλοντα.
Κάθε container δεν κρατάει δεδομένα μέσα του. Δηλαδή αν τρέχουμε ένα container με mySQL, τα δεδομένα της βάσης θα χαθούν αν κάνουμε restart το service. Γι’ αυτό τον λόγο κάνουμε αντιστοίχιση φακέλου του host μηχανήματος με φάκελο του container. π.χ. αντιστοιχούμε τον φάκελο /mysql/data από το host, στον φάκελο /var/lib/mysql εσωτερικά του container. Έτσι τώρα, τα δεδομένα της βάσης θα σώζονται στον φάκελο /mysql/data και θα συγχρονίζεται το container με αυτά.
Με το Docker μπορούμε να πακετάρουμε μια εφαρμογή μας, να μπορεί κάποιος να την χρησιμοποιήσει, είτε για development, είτε για κανονική χρήση. Το μόνο που χρειάζεται, είναι ένα αρχείο που περιγράφει ποια containers και πως θα σηκωθούν. Η εφαρμογή θα έχει στην διάθεση της όλα τα services που χρειάζεται, στην έκδοση που τα χρειάζεται, όπως τα χρειάζεται.
Προγραμματιστές που δουλεύουν ταυτόχρονα μια εφαρμογή, μπορούν να έχουν όλοι πανομοιότυπο development περιβάλλον, ανεξάρτητα σε πιο host μηχάνημα δουλεύουν. Ακόμη και σε διαφορετικά λειτουργικά (Linux, Mac OS, Windows)
Ενώ και το τελικό deploy της εφαρμογής σε κάποιον server μπορεί να γίνει πανεύκολα, σηκώνοντας κι εκεί όλα τα Docker containers που χρειάζονται.
Το Docker είναι σήμερα από τα βασικότερα εργαλεία ενός προγραμματιστή. Πραγματικά όποιος αρχίσει να το χρησιμοποιεί, απορεί μετά πως στο διάολο δούλευε χωρίς αυτό τόσα χρόνια. Απλοποιεί τόσο πολύ διάφορες καταστάσεις και διαδικασίες, που είναι μαζοχισμός να μην το χρησιμοποιείς.
Κι αν εγώ δεν σας τα εξήγησα ωραία, έχετε μια δεύτερη ευκαιρία. Ο τύπος στο παρακάτω βίντεο τα εξηγεί πολύ πιο ωραία (σαν τον Αλέφαντο). Νομίζω είναι το καλύτερο βίντεο που έχω δει για εισαγωγή στο Docker.