Giter VIP home page Giter VIP logo

sw-final_report's Introduction

ΤΕΛΙΚΗ ΑΝΑΦΟΡΑ

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ

ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΧΡΗΣΤΟΣ ΔΗΜΑΣ

Α.Μ.: Π2017204

ΠΡΟΣΩΠΙΚΟ ΑΠΟΘΕΤΗΡΙΟ: link

Σύνοψη:

Στα πλαίσια του μαθήματος Τεχνολογία Λογισμικού πραγματοποιήθηκαν 7 ασκήσεις, πέντε από τις οποίες έγιναν κομίτ στο προσωπικό αποθετήριο στις 29 Μαρτίου και οι υπόλοιπες 2 στις 9 Απριλίου. Σε κάποιες ασκήσεις, μετά το πρώτο κομίτ, έγιναν κάποιες διορθώσεις και σε κάποιες άλλες βελτιώσεις με νέο κομίτ. Η πρώτη άσκηση είχε θέμα "try different terminals and shells", η δεύτερη "use the terminal as the IDE", η τρίτη "set-up continuous integration", η τέταρτη "set-up cloud services", η πέμπτη "send notifications to your desktop-mobile", η έκτη "performance monitoring" και η έβδομη "create a docker image for your development stack".

Σύντομη Εισαγωγή:

Για να εκπονηθεί η πρώτη άσκηση έγινε η εγκατάσταση και η χρήση του fish shell και 4 διαφορετικών τερμινλς: guake, tilda, yakuake, terminology. Για την εκπόνηση της δεύτερης άσκησης χρησιμοποιήθηκε το vim σε συνδιασμό με το Python-mode και το Pylint, τα οποία εγκαταστάθηκαν μέσω του vim-plugin. Στη τρίτη άσκηση έγινε αποκλειστικά η χρήση του Github. Στην τέταρτη άσκηση, εγινε η εγκατάσταση και η χρήση του ssh σε συνδιασμό με την ενεργοποίηση του ssh του raspberry pi 4b. Στην πέμπτη άσκηση, έγινε η εγκατάσταση και η χρήση του ntfy σε συνδυασμό με το κατέβασμα ενός βίντεο μεσω του τέρμιναλ. Στην έκτη άσκηση έγινε η εγκατάσταση και η χρήση του hyperfine μάζι με τη χρήση 2 python scripts. Τέλος, στην έβδομη άσκηση πραγματοποιήθηκε η εγκατάσταση του docker, όπου και έγινε η χρήση του.

Σύντομη Ανάλυση σχετικών Έργων και Εργαλείων

H εκπόνηση των ανωτέρω ασκήσεων πραγματοποιήθηκαν στο λειτουργικό Ubuntu 16.04.3 LTS και με τη χρήση του τέρμιναλ έγινε η διεκπαιρέωση των 7 αυτών ασκήσεων. Αρχικά έγινε η αλλαγή του hostname του υπολογιστή και η αντικατάστασή του με τον αριθμό μητρώου μου P2017204 με την εξής εντολή: sudo hostnamectl set-hostname P2017204. Επόμενο βήμα ήταν να γίνει η εγκατάσταση της εφαρμογής asciinema δες εδώ, ώστε να πραγματοποιηθεί η καταγραφή του τέρμιναλ για την επίδειξη του εκάστοτε παραδοτέου. Στις περιπτώσεις όπου δεν ήταν αποτελεσματικό το demo του asciinema για την επίδειξη της διαδικασίας που ακολουθήθηκε, τότε χρησιμοποιήθηκαν και screenshots για την καλύτερη απεικόνιση των αποτελεσμάτων και της διαδικασίας. Τέλος, για τη διεκπαιρέωση μίας άσκησης χρησιμοποιήθηκε και ένα raspberry pi 4b, που έτρεχε λειτουργικό raspbian.

Μέθοδος και Τεχνικές Ανάπτυξης:

Αρχικά, στην πρώτη άσκηση δημιουργήθηκε ένας φάκελος με το όνομα του κάθε τέρμιναλ και του shell fish που χρησιμοποιήθηκε κάθε φορά, όπου στον κάθε φάκελο δημιουργήθηκε ένα αρχείο hello.py, με κύριο στόχο να δώ το περιβάλλον του κάθε τέρμιναλ καθώς επίσης και τις δυνατότητες που έχουν. Οι διαφορές κυρίως μεταξύ τους είναι μικρές και εστιάζονται περισσότερο στην εμφάνιση και λιγότερο στις δυνατότητες. Αντίθετα, το fish shell έχει κάποια χαρακτηριστικά, τα οποία βοηθούν σημαντικά τον χρήστη σχετικά με τις εργασίες στο τέρμιναλ και αυτά έιναι η αυτόματη συμπλήρωση και ιστορικό εντολών, χρωματισμός εντολών (κόκκινο όταν είναι λάθος η εντολή και μπλε όταν είναι σωστή), μαθηματικές πράξεις (math + αντίστοιχες πράξεις), προβολή εντολών (tab + κάποιο αρχικό γράμμα) κτλ. Για την εγκατάσταση του fish shell δες εδώ. Στη συνέχεια, για τη δεύτερη άσκηση δημιουργήθηκε ένα αρχείο hello.py με κύριο στόχο να το τρέξω στο vim σε συνδιασμό με το Python-mode. Αφού, μπήκα στο αρχείο hello.py, με το χαρακτήρα "i" έγραψα print("hello world") και το έτρεξα μέσα στο vim πατώντας r. Τέλος, γράφοντας την εντολή PymodeLint κοίταξα αν υπήρχαν σφάλματα και ειδοποιήσεις. Για την εγκατάσταση του vim-plugin δες εδώ. Στην τρίτη εργασία, έκανα clone το repository Mysite, το οποίο έχει μέσα το βιογραφικό μου και το οποίο χρησιμοποιώ σαν site. Κάθε φορά που θέλω να κάνω κάποια αλλαγή στο site, μπορώ μέσω του τέρμιναλ και πιο συγκεκριμένα μέσω του αρχείου README.md να τροποποιήσω ότι θέλω ή και να προσθέσω κάτι νέο. Με αυτο τον τρόπο επιτυγχάνω να έχω ένα στατικό site και να κάνω αλλαγές δυναμικά σε αυτό. Στην τέταρτη εργασία, χρησιμοποίησα ένα λάπτοπ με λειτουργικό Ubuntu 16.04.3 LTS και ένα Raspberry pi 4b με λειτουργικό Raspbian. Αφού πρώτα ενεργοποίησα το ssh στο raspberry pi με την εντολή sudo raspi-config, χρησιμοποίησα το username του raspberry pi 4b και την διευθυνση ip ([email protected]) και με τη χρήση του ssh έγινε η σύνδεση του laptop με το raspberry pi, όπου και δημιούργησα ένα αρχειο cv στο raspberry pi, το οποίο περιείχε το βιογραφικό μου. Με αυτο τον τρόπο μπορούμε να δημιουργούμε απομακρυσμένα αρχεία και να τα αποθηκεύουμε, δημιουργώντας έτσι υπηρεσίες cloud services. Για την εγκατάσταση του ssh δες εδώ. Στην πέμπτη άσκηση, χρησιμοποίησα το ntfy σε συνδιασμό με το youtube-dl, όπου και κατέβασα ένα βίντεο. Στόχος της άσκησης αυτής ήταν μετά το τέλος του κατεβάσματος του βίντεο να με ειδοποιήσει ότι το βίντεο κατέβηκε. Μέτα το τέλος της δραστηριότητας αυτής στάλθηκε μηνυμα ότι το βίντεο κατέβηκε επιτυχώς σε ένα όρισμένο χρόνο. Για την εγκατάσταση του ntfy δες εδώ. Στην έκτη άσκηση, έγινε η χρήση του hyperfine, όπου σε συνδιασμό με τη χρήση 2 python scripts (example1.py και example2.py), μπορούσα να παρατηρήσω ποιο απο τα 2 scripts έτρεξε πιο γρήγορα, πόσες φορές έτρεξε το καθένα καθώς επίσης και άλλα στατιστικα στοιχεία από το κάθε script ξεχωριστά. Η εντολή που χρησιμοποιήθηκε για την εκτέλεση του συγκερκιμένου λογισμικού ήταν " hyperfine 'pyhton3 example1.py' 'python3 example2.py' ". Για την εγκατάσταση του hyperfine δες εδώ. Τέλος, στην έβδομη άσκηση χρησιμοποίησα το docker για τη δημιουργία εικόνας Apache σε php. Αυτό επιτεύχθηκε με 2 τρόπους, ο πρώτος τρόπος ήταν δημιουργία εικόνας χωρίς αρχείο dockerfile με την εντολή " docker run -d -p 80:80 --name my-apache-php-app -v "$PWD":/var/www/html php:7.2-apache ". Δημιούργησα ένα φάκελο docker και μέσα στο φάκελο ένα αρχείο index.php με το βιογραφικό μου και γράφοντας στον browser την εντολή " localhost " εμφανίζεται ότι περιέχει το αρχείο index.php, δηλαδή το βιογραφικό μου. Ο δεύτερος τρόπος, ήταν η δημιουργία εικόνας Apache με dockerfile. Δημιούργησα ένα φάκελο docker2, όπου περιείχε το dockerfile (FROM php:7.2-apache COPY index.php /var/www/html/) και το αρχείο index.php ίδιο με τον πρώτο τρόπο. Στο τέλος χρησιμοποίησα τις παρακάτω 2 εντολές:" sudo docker build -t project1 . " και " sudo docker run -d -p 8010:80 project1 ". Στη συγκεκριμένη περίπτωση εμφανίζεται το βιογραφικό μου στον browser αλλά όμως γράφωντας σε αυτόν την εντολή " localhost:8010 ". Για την εγκατάσταση του docker δες εδώ.

Αποτελέσματα:

Άσκηση 1:

Εικόνα του τέρμιναλ "guake".

guake

Εικόνα του τέρμιναλ "tilda".

tilda

Εικόνα του τέρμιναλ "yakuake".

yakuake

Εικόνα του τέρμιναλ "terminology".

terminology

Asciinema URL: fishshell

Άσκηση 2:

Asciinema URL: vim-python-mode

Άσκηση 3:

Asciinema URL: Github

Το λίνκ του σαιτ, όπου γίνοται αλλαγές σύμφωνα με το παραπάνω demo, είναι το παρακάτω:

URL: Mysite

Άσκηση 4:

Εντολή ifconfig στο raspberry pi.

raspberrypi

Asciinema URL: SSH

Άσκηση 5:

Ειδοποίηση ότι το βίντεο κατέβηκε επιτυχώς σε 2:26 λεπτά:

ntfy3

Asciinema URL: ntfy

Όταν κατέβηκε το αρχείο βίντεο εμφανίστηκε το μήνυμα πάνω από το τέρμιναλ.

Screenshot from 2020-03-08 19-50-25

Άσκηση 6:

Asciinema URL: hyperfine

Τα αποτελέσματα στο αρχείο output.csv

hyperfine

Άσκηση 7:

Πρώτος τρόπος: χωρίς τη δημιουργία dockerfile.

Asciinema URL: docker

Με τη δημιουργία "εικόνας" Apache στο docker, μπορούμε να παμε στον browser Mozila Firefox και γράφοντας localhost εμφανίζεται ότι γράψαμε στο αρχείο index.php:

Screenshot from 2020-03-02 22-22-39

Δεύτερος τρόπος: με τη δημιουργία dockerfile.

Asciinema URL: docker2

Συμπεράσματα:

Ακολουθώντας τα παραπάνω βήματα και τις διαδικασίες, πραγματοποίησα 7 ασκήσεις στο τέρμιναλ του λειτουργικού Ubuntu 16.04.3 LTS. Σε κάθε άσκηση έκανα αρχικά τις απαιτούμενες εγκαταστάσεις λογισμικών και έπειτα ξεκινούσα την εκάστοτε διαδικασία για την πραγματοποίηση της εργασίας. Αρχικά, αξιοποιώντας κάποιος το fish shell μπορεί να διευκολυνθεί σε διάφορες εργασίες που πραγματοποιεί στο τέρμιναλ, χρησιμοποιώντας τις λειτουργίες του. Το επόμενο εργαλείο, που χρησιμοποιήθηκε είναι το vim, όπου μπορεί κάποιος πολύ εύκολα και γρήγορα να το αξιοποιήσει για να τρέξει κώδικα σε python. Επιπλέον, χρησιμοποιώντας ο χρήστης το github μπορεί να δημιουργήσει ένα στατικό site, όπου μέσω του τέρμιναλ να γίνονται πολυ εύκολα αλλαγες και προσθήκες. Επιπρόσθετα, η χρήση του ssh μπορεί να αξιοποιηθεί, ώστε να δημιουργηθούν προσωπικά cloud services. Ακόμη, η χρήση του ntfy αποτελεί ένα χρήσιμο εργαλείο, ώστε να ειδοποιεί το χρήστη όταν μία διεργασία έχει περατωθεί. Ένα άλλο εργαλείο είναι το hyperfine, όπου παρέχει στον χρήστη στατιστικα δεδομένα μεταξύ αρχείων python. Τέλος, με τη χρήση του docker, μπορεί κάποιος να δημιουργήσει εικόνες Apache σε php χωρίς να χρειάζεται να κάνει εγκατάσταση άλλων προαπαιτούμενων λογισμικών.

Βιβλιογραφία:

fishshell terminals vim-plug python-mode ssh ntfy Hyperfine docker dockerhub


Συμμετοχικό Εκπαιδευτικό Υλικό.

mibook URL: mibook

Αποθετήριο mibook: link

A.

Αρχικά, στα πλαίσια του συμμετοχικού εκπαιδευτικού υλικού ανέβασα μία εικόνα του raspberripi 3b όπως φαίνεται παρακάτω:

Προσωπικό Αποθετήριο : link

H δεύτερη εικόνα που ανέβασα είναι το λειτουργικό σύστημα της apple το macOS X El Capitan όπως φαίνεται και παρακάτω:

Προσωπικό Αποθετήριο : link

B.

Στα πλαίσια του Β συμμετοχικού ανέβασα ένα διαδραστικό παράδειγμα που αφορά ένα τέρμιναλ raspberry pi, όπου ο χρήστης προσθέτει εντολές μαζί με τη λειτουργία της κάθε μία στην html και έπειτα μπορεί να κάνει εξάσκηση πάνω σε αυτές τις εντολές, όπως φαίνεται παρακάτω:

Προσωπικό Αποθετήριο : link

Γ.

Μελέτη περίπτωσης: raspberry pi 4b

Προσωπικό Αποθετήριο : link


sw-final_report's People

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.