diff --git a/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.1.development-technologies/4.2.1.1.node.js.tex b/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.1.development-technologies/4.2.1.1.node.js.tex index bd2d4d2..affe44d 100644 --- a/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.1.development-technologies/4.2.1.1.node.js.tex +++ b/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.1.development-technologies/4.2.1.1.node.js.tex @@ -6,4 +6,4 @@ Ένα από τα σημαντικότερα χαρακτηριστικά του Node.js είναι ο ενσωματωμένος διαχειριστής πακέτων του, ο οποίος ονομάζεται npm. Με τον npm γίνεται εφικτή η εγκατάσταση πακέτων (βιβλιοθηκών) από το μητρώο npm (npm registry\footnote{\url{https://www.npmjs.com/}}), καθώς και η οργάνωση και η διαχείρισή τους στα πλαίσια της ανάπτυξης μίας εφαρμογής που εξαρτάται από αυτά. -Το Node.js έχει το αποθετήριό του στο GitHub \footnote{\url{https://github.com/nodejs/node}}. \ No newline at end of file +Το Node.js έχει το αποθετήριό του στο GitHub\footnote{\url{https://github.com/nodejs/node}}. \ No newline at end of file diff --git a/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.1.development-technologies/4.2.1.2.docker.tex b/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.1.development-technologies/4.2.1.2.docker.tex index 8342064..ca4bf82 100644 --- a/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.1.development-technologies/4.2.1.2.docker.tex +++ b/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.1.development-technologies/4.2.1.2.docker.tex @@ -2,13 +2,13 @@ \logo{chapter-4/4.2.docker-logo}{Docker logo} -Το Docker\footnote{\url{https://www.docker.com/}} αποτελεί μία πλατφόρμα η οποία παρέχει λογισμικό εικονοποίησης (virtualization) στο επίπεδο του λειτουργικού συστήματος καθώς και ολοκληρωμένα συστήματα διαμοιρασμού και εκτέλεσης των παραγόμενων εικόνων. +Το Docker\footnote{\url{https://www.docker.com/}} αποτελεί μία πλατφόρμα η οποία παρέχει λογισμικό εικονοποίησης (virtualization) στο επίπεδο του λειτουργικού συστήματος, καθώς και ολοκληρωμένα συστήματα διαμοιρασμού και εκτέλεσης των παραγόμενων εικόνων. -Δίνει την δυνατότητα σύνθεσης εικονικών περιβαλλόντων λειτουργικού συστήματος τα οποία ονομάζονται εικόνες (images). Μέσα στις εικόνες είναι δυνατή η εκτέλεση προγραμμάτων σε ασφαλή, απομονωμένα και προβλέψιμα περιβάλλοντα τα οποία εγγυούνται τις ίδιες συνθήκες εκτέλεσης παντού. Έτσι, οι προγραμματιστές δεν χρειάζεται να ανησυχούν για το περιβάλλον εκτέλεσης του κώδικα και την ρύθμιση των παραμέτρων σε κάθε ξεχωριστή εγκατάσταση. +Δίνει τη δυνατότητα σύνθεσης εικονικών περιβαλλόντων λειτουργικού συστήματος, τα οποία ονομάζονται εικόνες (images). Μέσα στις εικόνες είναι δυνατή η εκτέλεση προγραμμάτων σε ασφαλή, απομονωμένα και προβλέψιμα περιβάλλοντα, τα οποία εγγυούνται τις ίδιες συνθήκες εκτέλεσης παντού. Έτσι, οι προγραμματιστές δε χρειάζεται να ανησυχούν για το περιβάλλον εκτέλεσης του κώδικα και την ρύθμιση των παραμέτρων σε κάθε ξεχωριστή εγκατάσταση. -Ταυτόχρονα, η πλατφόρμα του Docker παρέχει συστήματα και τυποποιημένες μεθόδους για το πακετάρισμα των εικόνων, την μεταφόρτωση και την εκτέλεσή τους σε απομακρυσμένα συστήματα. Με αυτό τον τρόπο αποτελεί πολύτιμο εργαλείο το οποίο έχει γίνει το στάνταρ στη βιομηχανία λογισμικού για τον διαμοιρασμό και την εγκατάσταση ολοκληρωμένων εφαρμογών σε περιβάλλοντα δοκιμής (staging environments) και παραγωγής (production environment). +Ταυτόχρονα, η πλατφόρμα του Docker παρέχει συστήματα και τυποποιημένες μεθόδους για το πακετάρισμα των εικόνων, τη μεταφόρτωση και την εκτέλεσή τους σε απομακρυσμένα συστήματα. Με αυτόν τον τρόπο αποτελεί πολύτιμο εργαλείο, το οποίο έχει γίνει το στάνταρ στη βιομηχανία λογισμικού για τον διαμοιρασμό και την εγκατάσταση ολοκληρωμένων εφαρμογών σε περιβάλλοντα δοκιμής (staging environments) και παραγωγής (production environments). -Τέλος, η δυνατότητα τοπικής εκτέλεσης των εικόνων στο σύστημα ανάπτυξης του κώδικα δίνει την ευκαιρία ελέγχου (testing) και αποσφαλμάτωσης (debug) τοπικά σε ένα περιβάλλον ίδιο με αυτό της εκτέλεσης. Αυτό είναι εξαιρετικά σημαντικό επειδή αποκλείει τυχών μεταβολές στην πορεία εκτέλεσης του προγράμματος που μπορεί να έρχονταν από την εκτέλεση σε ένα διαφορετικό περιβάλλον. +Τέλος, η λειτουργία τοπικής εκτέλεσης των εικόνων στο σύστημα ανάπτυξης του κώδικα προσφέρει τη δυνατότητα τοπικού ελέγχου (testing) και αποσφαλμάτωσης (debug), σε ένα περιβάλλον ίδιο με αυτό της εκτέλεσης. Αυτό είναι εξαιρετικά σημαντικό, επειδή αποκλείει τυχούσες μεταβολές στην πορεία εκτέλεσης του προγράμματος που μπορεί να προέκυπταν από την εκτέλεση σε ένα διαφορετικό περιβάλλον. % TODO: example citations % Merkel, Dirk. “Docker: Lightweight Linux Containers for Consistent Development and Deployment.” Linux Journal, vol. 2014, no. 239, 2014, p. 2. diff --git a/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.1.development-technologies/4.2.1.3.jenkins.tex b/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.1.development-technologies/4.2.1.3.jenkins.tex index 79dce74..09a05b2 100644 --- a/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.1.development-technologies/4.2.1.3.jenkins.tex +++ b/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.1.development-technologies/4.2.1.3.jenkins.tex @@ -2,11 +2,11 @@ \logo{chapter-4/4.2.jenkins-logo}{Jenkins logo} -Το Jenkins\footnote{\url{https://www.jenkins.io/}} είναι ένας πλήρως παραμετροποιήσιμος και επεκτάσιμος διακομιστής αυτοματοποίησης (\textenglish{automation server}). Ο διακομιστής μπορεί να αυτοματοποιήσει τις διαδικασίες ελέγχου, ολοκλήρωσης, παράδοσης και εγκατάστασης του κώδικα, υλοποιώντας έτσι βασικές διαδικασίες που ορίζει το DevOps, συνεχή έλεγχο (\textenglish{continuous testing}), συνεχή ολοκλήρωση (\textenglish{continuous integration}), συνεχή παράδοση (\textenglish{continuous delivery}) και συνεχή εγκατάσταση (\textenglish{continuous deployment}). Επίσης, το Jenkins μπορεί να παραμετροποιηθεί μέσω των ρυθμίσεων που προσφέρει και των επεκτάσεων (plugins) που υπάρχουν ώστε να παρέχει τις δυνατότητες αυτές για οποιαδήποτε πλατφόρμα, γλώσσα και περιβάλλον ανάπτυξης. +Το Jenkins\footnote{\url{https://www.jenkins.io/}} είναι ένας πλήρως παραμετροποιήσιμος και επεκτάσιμος διακομιστής αυτοματοποίησης (\textenglish{automation server}). Ο διακομιστής μπορεί να αυτοματοποιήσει τις διαδικασίες ελέγχου, ολοκλήρωσης, παράδοσης και εγκατάστασης του κώδικα, υλοποιώντας έτσι βασικές διαδικασίες που ορίζει το DevOps, συνεχή έλεγχο (\textenglish{continuous testing}), συνεχή ολοκλήρωση (\textenglish{continuous integration}), συνεχή παράδοση (\textenglish{continuous delivery}) και συνεχή εγκατάσταση (\textenglish{continuous deployment}). Επίσης, το Jenkins μπορεί να παραμετροποιηθεί μέσω των ρυθμίσεων που προσφέρει και των επεκτάσεων (plugins) που υπάρχουν, ώστε να παρέχει τις δυνατότητες αυτές για οποιαδήποτε πλατφόρμα, γλώσσα και περιβάλλον ανάπτυξης. -Στο Jenkins είναι δυνατός ο ορισμός με χρήση κώδικα (σε Groovy και στο DSL που παρέχεται από το Jenkins) πολλαπλών γραμμών εργασιών (pipeline). Οι γραμμές εργασιών συντίθενται από πολλαπλά βήματα τα οποία επιτελούν ξεχωριστούς στόχους προς το τελικό αποτέλεσμα της γραμμής. Τα βήματα μπορούν να τρέχουν σειριακά ή παράλληλα. Ενώ δίνεται η δυνατότητα εκτέλεσης σε πολλαπλά, διανεμημένα συστήματα καθώς και άλλες προχωρημένες λειτουργικότητες. +Στο Jenkins είναι δυνατός ο ορισμός με χρήση κώδικα (σε Groovy και στο DSL που παρέχεται από το Jenkins) πολλαπλών γραμμών εργασιών (pipeline). Οι γραμμές εργασιών συντίθενται από πολλαπλά βήματα, τα οποία επιτελούν ξεχωριστούς στόχους προς το τελικό αποτέλεσμα της γραμμής. Τα βήματα μπορούν να εκτελούνται σειριακά ή παράλληλα. Ενώ δίνεται η δυνατότητα εκτέλεσης σε πολλαπλά, διανεμημένα συστήματα, καθώς και άλλες προχωρημένες λειτουργικότητες. -Το Jenkins συνδυάζεται αποτελεσματικά με την πλατφόρμα του Docker που περιγράφηκε προηγουμένως. Μέσω του συνδυασμού δίνεται η ευκαιρία της αυτοματοποίησης του μεγαλύτερου μέρους του DevOps σε ένα απολύτως προβλέψιμο περιβάλλον το οποίο παραμένει σταθερό από την ανάπτυξη του κώδικα μέχρι την τελική εγκατάσταση. Με αυτή την μέθοδο βελτιώνεται σημαντικά η αποτελεσματικότητα των ομάδων ανάπτυξης κώδικα. +Το Jenkins συνδυάζεται αποτελεσματικά με την πλατφόρμα του Docker που περιγράφηκε προηγουμένως. Μέσω του συνδυασμού δίνεται η ευκαιρία της αυτοματοποίησης του μεγαλύτερου μέρους του DevOps σε ένα απολύτως προβλέψιμο περιβάλλον, το οποίο παραμένει σταθερό από την ανάπτυξη του κώδικα μέχρι την τελική εγκατάσταση. Με αυτήν τη μέθοδο βελτιώνεται σημαντικά η αποτελεσματικότητα των ομάδων ανάπτυξης κώδικα. % TODO: example citations % Shahin, Mojtaba, et al. “Continuous Integration, Delivery and Deployment: A Systematic Review on Approaches, Tools, Challenges and Practices.” IEEE Access, vol. 5, 2017, pp. 3909–3943. diff --git a/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.2.ui-technologies/4.2.2.1.react.tex b/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.2.ui-technologies/4.2.2.1.react.tex index 3f507ff..a7de215 100644 --- a/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.2.ui-technologies/4.2.2.1.react.tex +++ b/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.2.ui-technologies/4.2.2.1.react.tex @@ -6,4 +6,4 @@ Ένα σημαντικό εργαλείο για την ταχεία ανάπτυξη web εφαρμογών σε React είναι το Create React App\footnote{\url{https://create-react-app.dev/}}. Με τη χρήση μίας και μόνο εντολής (\texttt{npx create-react-app my-app}), εγκαθίσταται αυτόματα ένας development server σε περιβάλλον Node.js (ως μία μοναδική βιβλιοθήκη). Αυτός εμπεριέχει μία πληθώρα από build tools (π.χ. Webpack, Babel, ESLint), τα οποία προσφέρουν ισχυρές δυνατότητες, όπως άμεσα reloads και παραγωγή βελτιστοποιημένων bundles. Έτσι, η διαδικασία της υλοποίησης αποκτά ποικίλες διευκολύνσεις, χωρίς να απαιτεί την εκμάθηση, την χειροκίνητη εγκατάσταση και την προηγμένη διαμόρφωση των τεχνολογιών στο εσωτερικό. -Η React έχει το αποθετήριό της στο GitHub \footnote{\url{https://github.com/facebook/react/}} και διατίθεται μέσω του μητρώου npm \footnote{\url{https://www.npmjs.com/package/react}}. +Η React έχει το αποθετήριό της στο GitHub\footnote{\url{https://github.com/facebook/react/}} και διατίθεται μέσω του μητρώου npm\footnote{\url{https://www.npmjs.com/package/react}}. diff --git a/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.2.ui-technologies/4.2.2.3.redux-saga.tex b/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.2.ui-technologies/4.2.2.3.redux-saga.tex index 2a486fd..d264897 100644 --- a/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.2.ui-technologies/4.2.2.3.redux-saga.tex +++ b/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.2.ui-technologies/4.2.2.3.redux-saga.tex @@ -4,4 +4,4 @@ Το Redux-Saga\footnote{\url{https://redux.js.org/}} αποτελεί μία βιβλιοθήκη JavaScript του οικοσυστήματος του Redux. Πρόκειται για ένα Redux middleware, το οποίο χρησιμοποιεί ESG generator functions\footnote{\url{https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function*}} για την εκτέλεση και διαχείριση ποικίλων ασύγχρονων side effect. Αυτές οι συναρτήσεις (sagas) παρέχουν μία πληθώρα επιλογών για την παράλληλη εκτέλεση κώδικα που μπορεί να σχετίζεται με εξωτερικά APIs, όπως με ένα blockchain ή μία βάση δεδομένων. Με αυτόν τον τρόπο, τα τελευταία μπορούν να συμπεριληφθούν στο κεντρικό Redux store και τη διαχείριση του συνολικού state της εφαρμογής. -Το Redux-Saga έχει το αποθετήριό του στο GitHub \footnote{\url{https://github.com/redux-saga/redux-saga}} και διατίθεται μέσω του μητρώου npm \footnote{\url{https://www.npmjs.com/package/redux-saga}}. +Το Redux-Saga έχει το αποθετήριό του στο GitHub\footnote{\url{https://github.com/redux-saga/redux-saga}} και διατίθεται μέσω του μητρώου npm\footnote{\url{https://www.npmjs.com/package/redux-saga}}. diff --git a/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.3.ethereum-technologies/4.2.3.1.truffle.tex b/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.3.ethereum-technologies/4.2.3.1.truffle.tex index 4133389..7d9f55a 100644 --- a/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.3.ethereum-technologies/4.2.3.1.truffle.tex +++ b/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.3.ethereum-technologies/4.2.3.1.truffle.tex @@ -8,4 +8,4 @@ Επίσης, το Truffle περιέχει πρόσθετα σχετικά εργαλεία, όπως διαδραστική κονσόλα για άμεση αλληλεπίδραση με τα contracts και εκτελεστής εξωτερικών σεναρίων (external script runner). -Έχει το αποθετήριό του στο GitHub \footnote{\url{https://github.com/trufflesuite/truffle}} και διατίθεται μέσω του μητρώου npm \footnote{\url{https://www.npmjs.com/package/truffle}}. \ No newline at end of file +Έχει το αποθετήριό του στο GitHub\footnote{\url{https://github.com/trufflesuite/truffle}} και διατίθεται μέσω του μητρώου npm\footnote{\url{https://www.npmjs.com/package/truffle}}. \ No newline at end of file diff --git a/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.3.ethereum-technologies/4.2.3.2.ganache.tex b/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.3.ethereum-technologies/4.2.3.2.ganache.tex index 10e4a09..c6f430b 100644 --- a/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.3.ethereum-technologies/4.2.3.2.ganache.tex +++ b/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.3.ethereum-technologies/4.2.3.2.ganache.tex @@ -18,4 +18,4 @@ To Ganache παρέχει ισχυρά εργαλεία για την ανάπτ \caption{Ganache (desktop εφαρμογή)} \end{figure} -Το Ganache έχει το αποθετήριό του στο GitHub \footnote{\url{https://github.com/trufflesuite/ganache}} και διατίθεται μέσω του μητρώου npm \footnote{\url{https://www.npmjs.com/package/ganache}}. \ No newline at end of file +Το Ganache έχει το αποθετήριό του στο GitHub\footnote{\url{https://github.com/trufflesuite/ganache}} και διατίθεται μέσω του μητρώου npm\footnote{\url{https://www.npmjs.com/package/ganache}}. \ No newline at end of file diff --git a/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.4.ipfs-technologies/4.2.4.1.js-ipfs.tex b/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.4.ipfs-technologies/4.2.4.1.js-ipfs.tex index 43e59ad..0b5b9d6 100644 --- a/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.4.ipfs-technologies/4.2.4.1.js-ipfs.tex +++ b/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.4.ipfs-technologies/4.2.4.1.js-ipfs.tex @@ -4,4 +4,4 @@ H υλοποίηση του IPFS που χρησιμοποείται στην εφαρμογή Concordia είναι αυτή σε JavaScript και ονομάζεται js-ipfs. Μέσω αυτής της βιβλιοθήκης, παρέχεται η δυνατότητα δημιουργίας ενός IPFS κόμβου, τόσο σε έναν Node.js server, όσο και σε ένα περιβάλλον browser. -Το js-ipfs έχει το αποθετήριό του στο GitHub \footnote{\url{https://github.com/ipfs/js-ipfs}} και διατίθεται μέσω του μητρώου npm \footnote{\url{https://www.npmjs.com/package/ipfs}}. +Το js-ipfs έχει το αποθετήριό του στο GitHub\footnote{\url{https://github.com/ipfs/js-ipfs}} και διατίθεται μέσω του μητρώου npm\footnote{\url{https://www.npmjs.com/package/ipfs}}. diff --git a/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.4.ipfs-technologies/4.2.4.2.orbit-db.tex b/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.4.ipfs-technologies/4.2.4.2.orbit-db.tex index db2b0c9..7238529 100644 --- a/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.4.ipfs-technologies/4.2.4.2.orbit-db.tex +++ b/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.4.ipfs-technologies/4.2.4.2.orbit-db.tex @@ -32,4 +32,4 @@ \item \textbf{Access Control}: Κατά τη δημιουργία μίας βάσης μπορούν να οριστούν όσοι θα έχουν δικαίωμα εγγραφής σε αυτή, μέσω ενός ελεγκτή πρόσβασης (access controller). Ο ελεγκτής θα περιλαμβάνει τα public keys τους, τα οποία μπορούν να ανακτηθούν από το identity του καθενός. Από προεπιλογή και αν δεν ορίζεται διαφορετικά, δίνεται πρόσβαση εγγραφής μόνο στον δημιουργό της βάσης. \end{itemize} -Η OrbitDB έχει το αποθετήριό της στο GitHub \footnote{\url{https://github.com/orbitdb/orbit-db}} και διατίθεται μέσω του μητρώου npm \footnote{\url{https://www.npmjs.com/package/orbit-db}}. +Η OrbitDB έχει το αποθετήριό της στο GitHub\footnote{\url{https://github.com/orbitdb/orbit-db}} και διατίθεται μέσω του μητρώου npm\footnote{\url{https://www.npmjs.com/package/orbit-db}}. diff --git a/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.4.ipfs-technologies/4.2.4.3.libp2p.tex b/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.4.ipfs-technologies/4.2.4.3.libp2p.tex index 20fce76..ac0f653 100644 --- a/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.4.ipfs-technologies/4.2.4.3.libp2p.tex +++ b/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.4.ipfs-technologies/4.2.4.3.libp2p.tex @@ -6,4 +6,4 @@ Ένα από τα υλοποιημένα πρωτόκολλα μεταφοράς δεδομένων της libp2p είναι το libp2p-webrtc-star\footnote{\url{https://github.com/libp2p/js-libp2p-webrtc-star}}. Αποτελεί πρωτόκολλο μεταφοράς δεδομένων το οποίο υποστηρίζεται τόσο από Node.js servers, όσο και από browsers. Περιλαμβάνει, επίσης, έναν signalling server, που επιτρέπει τη γρήγορη ανακάλυψη και διασύνδεση των peers. -Το libp2p-webrtc-star έχει το αποθετήριό του στο GitHub \footnote{\url{https://github.com/libp2p/js-libp2p-webrtc-star}} και διατίθεται μέσω του μητρώου npm \footnote{\url{https://www.npmjs.com/package/libp2p-webrtc-star}}. +Το libp2p-webrtc-star έχει το αποθετήριό του στο GitHub\footnote{\url{https://github.com/libp2p/js-libp2p-webrtc-star}} και διατίθεται μέσω του μητρώου npm\footnote{\url{https://www.npmjs.com/package/libp2p-webrtc-star}}. diff --git a/chapters/4.application-implementation/4.3.implementation-architecture.tex b/chapters/4.application-implementation/4.3.implementation-architecture.tex index 735934b..e1950ac 100644 --- a/chapters/4.application-implementation/4.3.implementation-architecture.tex +++ b/chapters/4.application-implementation/4.3.implementation-architecture.tex @@ -44,7 +44,7 @@ \label{table:4-3-software-units-summary} \end{table} -Τα αρθρώματα και οι υπηρεσίες θα περιγραφούν σε μεγαλύτερη ανάλυση στα επόμενα κεφάλαια. Στο παρακάτω σχήμα φαίνεται η συνολική αρχιτεκτονική του συστήματος: +Τα αρθρώματα και οι υπηρεσίες περιγράφονται αναλυτικότερα σε επόμενες υποενότητες. Στο παρακάτω σχήμα φαίνεται η συνολική αρχιτεκτονική του συστήματος: \begin{figure}[H] \centering diff --git a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units.tex b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units.tex index 016825c..3ead3f8 100644 --- a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units.tex +++ b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units.tex @@ -1,6 +1,6 @@ \subsection{Αρθρώματα} \label{subsection:4-3-1-software-units} -Σε αυτό το κεφάλαιο θα περιγραφούν με μεγαλύτερη λεπτομέρεια τα αρθρώματα που αναπτύχθηκαν. +Σε αυτήν την υποενότητα θα περιγραφούν με μεγαλύτερη λεπτομέρεια τα αρθρώματα που αναπτύχθηκαν. \input{chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.concordia-shared-unit} \input{chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.concordia-contracts-unit} diff --git a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.breeze-unit.tex b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.breeze-unit.tex index a87b24c..1affa45 100644 --- a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.breeze-unit.tex +++ b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.breeze-unit.tex @@ -4,4 +4,4 @@ Με τη συμπερίληψη του store του αρθρώματος στο κεντρικό Redux store της εφαρμογής, παρέχεται η δυνατότητα εκτέλεσης των λειτουργιών των OrbitDB βάσεων εντός του γενικότερου flow του frontend της εφαρμογής. Έτσι, οι προγραμματιστικές διεπαφές που προσφέρει η Orbit χρησιμοποιούνται πλέον μέσα από actions, reducers και middleware. -Το άρθρωμα αυτό γίνεται διαθέσιμο για χρήση με τη μορφή βιβλιοθήκης μέσω του μητρώου λογισμικού npm \footnote{\url{https://www.npmjs.com/package/@ecentrics/breeze}}, ενώ το αποθετήριό του βρίσκεται στο GitLab \footnote{\url{https://gitlab.com/ecentrics/breeze}}. +Το άρθρωμα αυτό γίνεται διαθέσιμο για χρήση με τη μορφή βιβλιοθήκης μέσω του μητρώου λογισμικού npm\footnote{\url{https://www.npmjs.com/package/@ecentrics/breeze}}, ενώ το αποθετήριό του βρίσκεται στο GitLab\footnote{\url{https://gitlab.com/ecentrics/breeze}}. diff --git a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.drizzle-unit.tex b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.drizzle-unit.tex index 844066b..73b0776 100644 --- a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.drizzle-unit.tex +++ b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.drizzle-unit.tex @@ -4,4 +4,4 @@ Το άρθρωμα drizzle υλοποιεί τις προγραμματιστικές διεπαφές μέσω των οποίων πραγματοποιείται η επικοινωνία της εφαρμογής με το blockchain. Για την επίτευξη της επικοινωνίας αυτής, η βιβλιοθήκη χρησιμοποιεί τη συλλογή βιβλιοθηκών web3.js η οποία αποτελεί τον πιο διαδεδομένο τρόπο διεπαφής με το blockchain σε αποκεντρωτικές εφαρμογές. Τελικά, παρέχει ένα \hyperref[subsection:4-2-2-2-redux]{Redux} store, το οποίο συμπεριλαμβάνεται στο κεντρικό store της εφαρμογής. -Το άρθρωμα αυτό γίνεται διαθέσιμο για χρήση με τη μορφή βιβλιοθήκης μέσω του μητρώου λογισμικού npm \footnote{\url{https://www.npmjs.com/package/@ecentrics/drizzle}}, ενώ το αποθετήριό του βρίσκεται στο GitLab \footnote{\url{https://gitlab.com/ecentrics/drizzle}}. \ No newline at end of file +Το άρθρωμα αυτό γίνεται διαθέσιμο για χρήση με τη μορφή βιβλιοθήκης μέσω του μητρώου λογισμικού npm\footnote{\url{https://www.npmjs.com/package/@ecentrics/drizzle}}, ενώ το αποθετήριό του βρίσκεται στο GitLab\footnote{\url{https://gitlab.com/ecentrics/drizzle}}. \ No newline at end of file diff --git a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-identity-provider-unit.tex b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-identity-provider-unit.tex index f9a7930..e471f94 100644 --- a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-identity-provider-unit.tex +++ b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-identity-provider-unit.tex @@ -1,7 +1,8 @@ \subsubsection{Άρθρωμα eth-identity-provider} \label{subsubsection:4-3-1-eth-identity-provider-unit} +%TODO: Improve this, add https://github.com/orbitdb/orbit-db-identity-provider#adding-a-custom-identity-signer-and-verifier code to 4.2 Η λειτουργία της βάσης OrbitDB επιτρέπει τη χρήση προσαρμοσμένων orbit-db-identity-provider, οι οποίοι θα δημιουργούν και θα επικυρώνουν -τα μοναδικά αναγνωριστικά των χρήστών (OrbitDB Identity) βάσει προσαρμοσμένων εξωτερικών αναγνωριστικών (external identifier), όπως παρουσιάζεται στο σχήμα \ref{figure:4-2-4-2-orbit-db-identity}. +τα μοναδικά αναγνωριστικά των χρήστών (OrbitDB Identity) βάσει προσαρμοσμένων εξωτερικών αναγνωριστικών (external identifier), όπως παρουσιάζεται στο σχήμα \ref{figure:4-2-4-2-orbit-db-identity}. Στην περίπτωση της εφαρμογής Concordia είναι χρήσιμο να μπορούν να υπολογιστούν με ντετερμινιστικό τρόπο οι OrbitDB βάσεις δεδομένων του κάθε χρήστη, για λόγους απλότητας και εξοικονόμησης αποθηκευτικού χώρου επί του blockchain. Έτσι, αφού κάθε χρήστης ορίζεται μοναδικά μέσω της διεύθυνσης Ethereum με την οποία εγγράφεται και συνδέεται, αυτή θα πρέπει να αποτελεί και το εξωτερικό αναγνωριστικό στο πεδίο id της OrbitDB Identity. @@ -13,4 +14,4 @@ \item Διασφαλίζει ντετερμινιστικές, υπολογίσιμες διευθύνσεις OrbitDB βάσεων για τον κάθε χρήστη. \end{itemize} -Το eth-identity-provider γίνεται διαθέσιμο για χρήση με τη μορφή βιβλιοθήκης μέσω του μητρώου λογισμικού npm \footnote{\url{https://www.npmjs.com/package/@ecentrics/eth-identity-provider}}, ενώ το αποθετήριό του βρίσκεται στο GitLab \footnote{\url{https://gitlab.com/ecentrics/eth-identity-provider}}. +Το eth-identity-provider γίνεται διαθέσιμο για χρήση με τη μορφή βιβλιοθήκης μέσω του μητρώου λογισμικού npm\footnote{\url{https://www.npmjs.com/package/@ecentrics/eth-identity-provider}}, ενώ το αποθετήριό του βρίσκεται στο GitLab\footnote{\url{https://gitlab.com/ecentrics/eth-identity-provider}}. diff --git a/chapters/4.application-implementation/4.5.implemented-parts.tex b/chapters/4.application-implementation/4.5.implemented-parts.tex index e5a4b9f..89d9e9f 100644 --- a/chapters/4.application-implementation/4.5.implemented-parts.tex +++ b/chapters/4.application-implementation/4.5.implemented-parts.tex @@ -1,4 +1,4 @@ -\section{Χαρακτηριστικά που υλοποιήθηκαν} \label{section:4-5-implemented-parts} +\section{Υλοποιημένα χαρακτηριστικά} \label{section:4-5-implemented-parts} Όπως αναλύθηκε στο προηγούμενο κεφάλαιο, κατά την υλοποίηση εμφανίστηκαν διάφορα προβλήματα που δεν είχαν προβλεφθεί και τα οποία προκάλεσαν καθυστερήσεις στην ολοκλήρωση των tasks. Λόγω των καθυστερήσεων αυτών έγιναν διάφορες αναδιαμορφώσεις του προγραμματισμού των Sprint καθώς και διαπραγματεύσεις της σημαντικότητας των χαρακτηριστικών. Από τον επανασχεδιασμό και τις προσαρμογές αυτές προέκυψαν μερικές αλλαγές στο τελικό σετ των χαρακτηριστικών της πλατφόρμας σε σχέση με ό,τι είχε αρχικά προδιαγραφεί. @@ -38,7 +38,7 @@ \begin{figure}[H] \centering - \includegraphics[width=.9\textwidth]{assets/figures/chapter-4/4.6.design-implementation-differences-sprints.png} - \caption{Διαχωρισμός σε sprints} + \includegraphics[width=\textwidth]{assets/figures/chapter-4/4.6.design-implementation-differences-sprints.png} + \caption{Διαχωρισμός σε sprints (στάδιο υλοποίησης)} \label{figure:4.5.design-implementation-differences-sprints} \end{figure} diff --git a/thesis.pdf b/thesis.pdf index d2785f5..f9d5061 100644 Binary files a/thesis.pdf and b/thesis.pdf differ