From 3c86cfd98eb33c5d37baa4af26d683414f6a59f2 Mon Sep 17 00:00:00 2001 From: Ezerous Date: Wed, 12 Jan 2022 21:42:23 +0200 Subject: [PATCH] fix: JavaScript --- chapters/1.introduction/1.4.thesis-goal.tex | 2 +- .../4.2.1.1.node.js.tex | 2 +- .../4.2.2.ui-technologies/4.2.2.1.react.tex | 2 +- .../4.2.2.ui-technologies/4.2.2.2.redux.tex | 2 +- .../4.2.2.3.redux-saga.tex | 2 +- .../4.2.4.1.js-ipfs.tex | 2 +- .../4.3.implementation-architecture.tex | 2 +- .../4.3.1.eth-drizzle-unit.tex | 2 +- .../4.3.2.concordia-application-service.tex | 2 +- .../4.3.4.concordia-pinner-service.tex | 2 +- ...5.concordia-contracts-provider-service.tex | 2 +- thesis.pdf | Bin 9133723 -> 9134979 bytes 12 files changed, 11 insertions(+), 11 deletions(-) diff --git a/chapters/1.introduction/1.4.thesis-goal.tex b/chapters/1.introduction/1.4.thesis-goal.tex index 88a153e..bc6c5ab 100644 --- a/chapters/1.introduction/1.4.thesis-goal.tex +++ b/chapters/1.introduction/1.4.thesis-goal.tex @@ -2,4 +2,4 @@ Στόχος της παρούσας διπλωματικής εργασίας είναι η δημιουργία μίας αυτόνομης κοινωνικής πλατφόρμας, η οποία, βασιζόμενη σε τεχνολογίες αποκέντρωσης, θα λειτουργεί ανεξάρτητα από κεντρικές αρχές, παρέχοντας στους χρήστες της πλήρη ελευθερία του λόγου και κυριότητα επί των δεδομένων τους. Παράλληλα, θα παρέχει μία πλατφόρμα για ανώνυμες και αυθεντικές ψηφοφορίες, εν δυνάμει ικανών να αποτελέσουν ένα έγκυρο, έμπιστο και άμεσα δημοκρατικό βήμα λήψης αποφάσεων. -Η proof of concept (PoC) εφαρμογή που αναπτύχθηκε για την επίτευξη του παραπάνω στόχου ονομάζεται Concordia\footnote{Η Concordia είναι η θεά της αρχαίας Ρωμαϊκής θρησκείας που προσωποποιεί την ομόνοια. Στην ελληνική μυθολογία ταυτίζεται με τη θεότητα Ομόνοια ή τη θεά Αρμονία.} και λειτουργεί μέσω ενός συνδυασμού αποκεντρωτικών τεχνολογιών. Πιο συγκεκριμένα, στον επεξεργαστικό πυρήνα της και σαν σημείο αναφοράς αξιοποιεί τo Ethereum blockchain, ενώ για την αποθήκευση του μεγαλύτερου όγκου των δεδομένων χρησιμοποιεί το IPFS μέσω της OrbitDB. Η δε διεπαφή του χρήστη υλοποιείται με σύγχρονες μεθόδους web development σε Javascript (React, Redux κ.ά.). +Η proof of concept (PoC) εφαρμογή που αναπτύχθηκε για την επίτευξη του παραπάνω στόχου ονομάζεται Concordia\footnote{Η Concordia είναι η θεά της αρχαίας Ρωμαϊκής θρησκείας που προσωποποιεί την ομόνοια. Στην ελληνική μυθολογία ταυτίζεται με τη θεότητα Ομόνοια ή τη θεά Αρμονία.} και λειτουργεί μέσω ενός συνδυασμού αποκεντρωτικών τεχνολογιών. Πιο συγκεκριμένα, στον επεξεργαστικό πυρήνα της και σαν σημείο αναφοράς αξιοποιεί τo Ethereum blockchain, ενώ για την αποθήκευση του μεγαλύτερου όγκου των δεδομένων χρησιμοποιεί το IPFS μέσω της OrbitDB. Η δε διεπαφή του χρήστη υλοποιείται με σύγχρονες μεθόδους web development σε JavaScript (React, Redux κ.ά.). 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 289dfe2..f1ef95f 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 @@ -2,7 +2,7 @@ \logo{chapter-4/4.2.node.js-logo}{Node.js logo} -Το Node.js\footnote{\url{https://nodejs.org/}} είναι ένα περιβάλλον χρόνου εκτέλεσης Javascript πολλαπλών πλατφορμών, το οποίο εκτελείται στη μηχανή V8\footnote{\url{https://v8.dev/}} και παρέχει τη δυνατότητα εκτέλεσης κώδικα Javascript εκτός περιηγητών ιστού. Επιτρέπει στους προγραμματιστές να χρησιμοποιούν Javascript για τη σύνταξη εργαλείων γραμμής εντολών και τη δημιουργία κλιμακωτών διαδικτυακών εφαρμογών (κυρίως για εξυπηρετητές). Έχει αρχιτεκτονική βασισμένη σε συμβάντα (event-driven architecture), με δυνατότητα ασύγχρονης εισόδου/εξόδου (asynchronous I/O).\cite{4.2-node.js} +Το Node.js\footnote{\url{https://nodejs.org/}} είναι ένα περιβάλλον χρόνου εκτέλεσης JavaScript πολλαπλών πλατφορμών, το οποίο εκτελείται στη μηχανή V8\footnote{\url{https://v8.dev/}} και παρέχει τη δυνατότητα εκτέλεσης κώδικα JavaScript εκτός περιηγητών ιστού. Επιτρέπει στους προγραμματιστές να χρησιμοποιούν JavaScript για τη σύνταξη εργαλείων γραμμής εντολών και τη δημιουργία κλιμακωτών διαδικτυακών εφαρμογών (κυρίως για εξυπηρετητές). Έχει αρχιτεκτονική βασισμένη σε συμβάντα (event-driven architecture), με δυνατότητα ασύγχρονης εισόδου/εξόδου (asynchronous I/O).\cite{4.2-node.js} Ένα από τα σημαντικότερα χαρακτηριστικά του Node.js είναι ο ενσωματωμένος διαχειριστής πακέτων του, ο οποίος ονομάζεται npm. Με τον npm γίνεται εφικτή η εγκατάσταση πακέτων (βιβλιοθηκών) από το μητρώο npm (npm registry\footnote{\url{https://www.npmjs.com/}}), καθώς και η οργάνωση και η διαχείρισή τους στα πλαίσια της ανάπτυξης μίας εφαρμογής που εξαρτάται από αυτά. 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 10aa724..8d6ffe6 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 @@ -2,7 +2,7 @@ \logo{chapter-4/4.2.react-logo}{React logo} -Η React\footnote{\url{https://reactjs.org/}} αποτελεί βιβλιοθήκη Javascript, η οποία χρησιμοποιείται για την κατασκευή διεπαφών χρήστη. Είναι δηλωτική (declarative) και βασίζεται σε components, τα οποία διαχειρίζονται την κατάστασή τους (state) και συντίθενται για να δημιουργήσουν πολύπλοκα διαδραστικά UIs. +Η React\footnote{\url{https://reactjs.org/}} αποτελεί βιβλιοθήκη JavaScript, η οποία χρησιμοποιείται για την κατασκευή διεπαφών χρήστη. Είναι δηλωτική (declarative) και βασίζεται σε components, τα οποία διαχειρίζονται την κατάστασή τους (state) και συντίθενται για να δημιουργήσουν πολύπλοκα διαδραστικά UIs. Ένα σημαντικό εργαλείο για την ταχεία ανάπτυξη 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. Έτσι, η διαδικασία της υλοποίησης αποκτά ποικίλες διευκολύνσεις, χωρίς να απαιτεί την εκμάθηση, την χειροκίνητη εγκατάσταση και την προηγμένη διαμόρφωση των τεχνολογιών στο εσωτερικό. diff --git a/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.2.ui-technologies/4.2.2.2.redux.tex b/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.2.ui-technologies/4.2.2.2.redux.tex index 932e58d..9df629d 100644 --- a/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.2.ui-technologies/4.2.2.2.redux.tex +++ b/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.2.ui-technologies/4.2.2.2.redux.tex @@ -2,7 +2,7 @@ \logo{chapter-4/4.2.redux-logo}{Redux logo} -Το Redux\footnote{\url{https://redux.js.org/}} αποτελεί μία βιβλιοθήκη Javascript, η χρήση της οποίας προσφέρει στην εφαρμογή ένα πλήρως διαχειρίσιμο global state. +Το Redux\footnote{\url{https://redux.js.org/}} αποτελεί μία βιβλιοθήκη JavaScript, η χρήση της οποίας προσφέρει στην εφαρμογή ένα πλήρως διαχειρίσιμο global state. Τα δομικά στοιχεία του Redux είναι τα εξής: \begin{itemize} 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 d5e4838..0442b7f 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 @@ -2,6 +2,6 @@ \logo{chapter-4/4.2.redux-saga-logo}{Redux-Saga logo} -Το 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\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 (\url{https://github.com/redux-saga/redux-saga}) και διατίθεται μέσω του μητρώου npm (\url{https://www.npmjs.com/package/redux-saga}). 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 096c59b..b92c8da 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 @@ -2,6 +2,6 @@ \logo{chapter-4/4.2.js-ipfs-logo}{js-ipfs logo} -H υλοποίηση του IPFS που χρησιμοποείται στην εφαρμογή Concordia είναι αυτή σε Javascript και ονομάζεται js-ipfs. Μέσω αυτής της βιβλιοθήκης, παρέχεται η δυνατότητα δημιουργίας ενός IPFS κόμβου, τόσο σε έναν Node.js server, όσο και σε ένα περιβάλλον browser. +H υλοποίηση του IPFS που χρησιμοποείται στην εφαρμογή Concordia είναι αυτή σε JavaScript και ονομάζεται js-ipfs. Μέσω αυτής της βιβλιοθήκης, παρέχεται η δυνατότητα δημιουργίας ενός IPFS κόμβου, τόσο σε έναν Node.js server, όσο και σε ένα περιβάλλον browser. Το js-ipfs έχει το αποθετήριό του στο GitHub (\url{https://github.com/ipfs/js-ipfs}) και διατίθεται μέσω του μητρώου npm (\url{https://www.npmjs.com/package/ipfs}). diff --git a/chapters/4.application-implementation/4.3.implementation-architecture.tex b/chapters/4.application-implementation/4.3.implementation-architecture.tex index 34fef3a..1340c07 100644 --- a/chapters/4.application-implementation/4.3.implementation-architecture.tex +++ b/chapters/4.application-implementation/4.3.implementation-architecture.tex @@ -24,7 +24,7 @@ \label{table:4-3-microservice-summary} \end{table} -Στα πλαίσια της εργασίας αναπτύχθηκαν επίσης διάφορα αρθρώματα, κυρίως με τη μορφή βιβλιοθηκών Javascript. Τα αρθρώματα χρησιμοποιούνται από τις υπηρεσίες για την επίτευξη των επιμέρους εργασιών. Η ανάπτυξη του λογισμικού σε ξεχωριστά αρθρώματα επιτρέπει την εύκολη επαναχρησιμοποίηση του κώδικα καθώς και τον διαχωρισμό των αυτόνομων τμημάτων κώδικα. Τα αρθρώματα συνοψίζονται στον παρακάτω πίνακα (πίνακας \ref{table:4-3-software-units-summary}). +Στα πλαίσια της εργασίας αναπτύχθηκαν επίσης διάφορα αρθρώματα, κυρίως με τη μορφή βιβλιοθηκών JavaScript. Τα αρθρώματα χρησιμοποιούνται από τις υπηρεσίες για την επίτευξη των επιμέρους εργασιών. Η ανάπτυξη του λογισμικού σε ξεχωριστά αρθρώματα επιτρέπει την εύκολη επαναχρησιμοποίηση του κώδικα καθώς και τον διαχωρισμό των αυτόνομων τμημάτων κώδικα. Τα αρθρώματα συνοψίζονται στον παρακάτω πίνακα (πίνακας \ref{table:4-3-software-units-summary}). \begin{table}[H] \begin{center} diff --git a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-drizzle-unit.tex b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-drizzle-unit.tex index d586d0e..18ee21a 100644 --- a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-drizzle-unit.tex +++ b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-drizzle-unit.tex @@ -1,6 +1,6 @@ \subsubsection{Άρθρωμα drizzle} \label{subsubsection:4-3-1-eth-drizzle-unit} -Το άρθρωμα drizzle που χρησιμοποιείται στην υπηρεσία \hyperref[subsection:4-3-2-concordia-application-service]{Concordia Application} είναι μία τροποποιημένη έκδοση της Javascript βιβλιοθήκης Drizzle (και συγκεκριμένα του @drizzle/store\footnote{\url{https://github.com/trufflesuite/drizzle/tree/develop/packages/store}}), η οποία προσφέρεται από τη σουίτα εργαλείων Truffle. Η τροποποιημένη βιβλιοθήκη αναπτύχθηκε στα πλαίσια της διπλωματικής με στόχο τη διευκόλυνση της χρήσης του Drizle και την επιδιόρθωση προβληματικών σημείων της πρωτότυπης βιβλιοθήκης. +Το άρθρωμα drizzle που χρησιμοποιείται στην υπηρεσία \hyperref[subsection:4-3-2-concordia-application-service]{Concordia Application} είναι μία τροποποιημένη έκδοση της JavaScript βιβλιοθήκης Drizzle (και συγκεκριμένα του @drizzle/store\footnote{\url{https://github.com/trufflesuite/drizzle/tree/develop/packages/store}}), η οποία προσφέρεται από τη σουίτα εργαλείων Truffle. Η τροποποιημένη βιβλιοθήκη αναπτύχθηκε στα πλαίσια της διπλωματικής με στόχο τη διευκόλυνση της χρήσης του Drizle και την επιδιόρθωση προβληματικών σημείων της πρωτότυπης βιβλιοθήκης. Το άρθρωμα drizzle υλοποιεί τις προγραμματιστικές διεπαφές μέσω των οποίων πραγματοποιείται η επικοινωνία της εφαρμογής με το blockchain. Για την επίτευξη της επικοινωνίας αυτής, η βιβλιοθήκη χρησιμοποιεί τη συλλογή βιβλιοθηκών web3.js η οποία αποτελεί τον πιο διαδεδομένο τρόπο διεπαφής με το blockchain σε αποκεντρωτικές εφαρμογές. Τελικά, παρέχει ένα Redux store, το οποίο συμπεριλαμβάνεται στο κεντρικό store της εφαρμογής. diff --git a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.2.concordia-application-service.tex b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.2.concordia-application-service.tex index 3138fd4..0ac8208 100644 --- a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.2.concordia-application-service.tex +++ b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.2.concordia-application-service.tex @@ -20,7 +20,7 @@ \item υπερψηφίσουν (up-vote) ή καταψηφίσουν (down-vote) μηνύματα άλλων χρηστών \end{itemize} -Η υπηρεσία αποτελείται από κώδικα γραμμένο σε Javascript ο οποίος γίνεται διαθέσιμος στους τελικούς χρήστες με τη μορφή εφαρμογής διαδικτύου (web application) μέσω ενός διακομιστή (server). Παρόλο που η υπηρεσία προσφέρει τη γραφική διεπαφή χρήστη μόνο στην αγγλική γλώσσα, έχει παραμετροποιηθεί ώστε να είναι δυνατή η εύκολη μεταγλώττιση της χωρίς την ανάγκη πραγματοποίησης μεγάλων αλλαγών στον κώδικα. +Η υπηρεσία αποτελείται από κώδικα γραμμένο σε JavaScript ο οποίος γίνεται διαθέσιμος στους τελικούς χρήστες με τη μορφή εφαρμογής διαδικτύου (web application) μέσω ενός διακομιστή (server). Παρόλο που η υπηρεσία προσφέρει τη γραφική διεπαφή χρήστη μόνο στην αγγλική γλώσσα, έχει παραμετροποιηθεί ώστε να είναι δυνατή η εύκολη μεταγλώττιση της χωρίς την ανάγκη πραγματοποίησης μεγάλων αλλαγών στον κώδικα. Χρησιμοποιείται η βιβλιοθήκη React για την οργάνωση και ανάπτυξη των συνθετικών τμημάτων (components) του γραφικού περιβάλλοντος. Για το γραφικό περιβάλλον γίνεται χρήση του framework της Semantic UI. Χρησιμοποιείται η βιβλιοθήκη Redux για τη διαχείριση κατάστασης της εφαρμογής (state management), καθώς και η βιβλιοθήκη Redux-Saga για τη διαχείριση ασύγχρονων παράπλευρων ενεργειών (side-effects) σε ένα σύστημα βασισμένο σε συμβάντα (event-based). Άλλες βιβλιοθήκες χρησιμοποιούνται για διάφορα μέρη της υπηρεσίας, ενώ χρησιμοποιούνται επίσης τα αρθρώματα που περιγράφηκαν προηγουμένως για την επίτευξη διαφορετικών στόχων. Ο πλήρης κατάλογος των βιβλιοθηκών και αρθρωμάτων μπορεί να βρεθεί στον κώδικα της υπηρεσίας στο παράρτημα. % todo: add reference to the appendix containing the code or a link to it in the repo diff --git a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.4.concordia-pinner-service.tex b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.4.concordia-pinner-service.tex index 00be8ca..99f21e5 100644 --- a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.4.concordia-pinner-service.tex +++ b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.4.concordia-pinner-service.tex @@ -2,7 +2,7 @@ \subsubsection{Περιγραφή - Στόχοι υπηρεσίας} -Η υπηρεσία καρφιτσώματος περιεχομένου (Concordia Pinner) αποτελεί μία εφαρμογή τερματικού (temrinal application/cmd application) η οποία στοχεύει στο καρφίτσωμα (pinning) του περιεχομένου που αποθηκεύεται στο IPFS μέσω της βάσης OrbitDB. Η υπηρεσία είναι γραμμένη στη γλώσσα προγραμματισμού Javascript. Η αρχιτεκτονική της υπηρεσίας φαίνεται το σχήμα \ref{figure:4-3-concordia-pinner-architecture}. +Η υπηρεσία καρφιτσώματος περιεχομένου (Concordia Pinner) αποτελεί μία εφαρμογή τερματικού (temrinal application/cmd application) η οποία στοχεύει στο καρφίτσωμα (pinning) του περιεχομένου που αποθηκεύεται στο IPFS μέσω της βάσης OrbitDB. Η υπηρεσία είναι γραμμένη στη γλώσσα προγραμματισμού JavaScript. Η αρχιτεκτονική της υπηρεσίας φαίνεται το σχήμα \ref{figure:4-3-concordia-pinner-architecture}. \begin{figure}[H] \centering diff --git a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.5.concordia-contracts-provider-service.tex b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.5.concordia-contracts-provider-service.tex index f99d1b9..9c5979f 100644 --- a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.5.concordia-contracts-provider-service.tex +++ b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.5.concordia-contracts-provider-service.tex @@ -2,7 +2,7 @@ \subsubsection{Περιγραφή - Στόχοι υπηρεσίας} -Η υπηρεσία Contracts Provider αποτελεί μία βοηθητική υπηρεσία η οποία υλοποιεί ένα απλό αποθετήριο για τα contract artifacts. Είναι γραμμένη σε Javascript και διαθέτει δύο HTTP \textenglish{endpoints}, ένα για τη μεταφόρτωση (upload) των artifacts προς την υπηρεσία και ένα για τη λήψη (download) από την υπηρεσία. Η υπηρεσία υποστηρίζει επίσης την επισύναψη ετικετών στα artifacts, όπως η έκδοση (version) ή το κλαδί ανάπτυξης (branch, για παράδειγμα \textenglish{master/develop}). Η αρχιτεκτονική της υπηρεσίας φαίνεται το σχήμα \ref{figure:4-3-concordia-contracts-provider-architecture}. +Η υπηρεσία Contracts Provider αποτελεί μία βοηθητική υπηρεσία η οποία υλοποιεί ένα απλό αποθετήριο για τα contract artifacts. Είναι γραμμένη σε JavaScript και διαθέτει δύο HTTP \textenglish{endpoints}, ένα για τη μεταφόρτωση (upload) των artifacts προς την υπηρεσία και ένα για τη λήψη (download) από την υπηρεσία. Η υπηρεσία υποστηρίζει επίσης την επισύναψη ετικετών στα artifacts, όπως η έκδοση (version) ή το κλαδί ανάπτυξης (branch, για παράδειγμα \textenglish{master/develop}). Η αρχιτεκτονική της υπηρεσίας φαίνεται το σχήμα \ref{figure:4-3-concordia-contracts-provider-architecture}. \begin{figure}[H] \centering diff --git a/thesis.pdf b/thesis.pdf index 469f41b52a17d9971814e979cb3283c4fcbe5cd8..a3fc2bd9855fe3ff81ccfaa12fee3a0cd3e8aa08 100644 GIT binary patch delta 47156 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%0DPf71=PKJ-!<(%jImS9K#OjJc3C)3H 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

Fim2m037pyPIz+MsV0)g-(F zM<>Fb$pb}(X^8pX>3uT^CNW^^78SmHKyH$_N%Dw_#GH@iGFEm7^etTY_`#D}4-=pA zJrNCp7>xXTa8P&6`+jgjRJ!ele;$dYU%9z^%wRXz>~-d&h6)(;zcw#0@`%C9#+%Ch zxVL4qks&DH+`((pAyB7#x=Ycv)Quv*BOG=)Ml!olxDrKs3DjbVDO0JjI>EQ71Q~?UveJ2l@-}Y7 zAW(9;X`o(mw|b55lsHVY7%k0b{*?IvXL^TLnuce2nUh z^9SlrCPAwGSegts-9QjNo9z#juwcvu=yWPz`U=~y)UZp&S}xtqiWsg^+ZatD52ITW z7fisu&e@R0JaB@4l!LzznEq-*PR32p!ZT1WL80Gl)-7CG%e0HeuS2w?$De*K-BEsh8QFNbnQNU3^X;Rv4UB1up<`@W$eM6;B4Kqw zf7krJ$;;c-_0f6l-v@cO^+FSQ`Ufs1fLspx=K@8CUrbWUJkClgFMv3HE?}&?$~z)_ zG$Y~C`^nHtvXvUbnxP5$E2G_<7a6RA|$_U(iNarcVRED>xb&D0#K|6 zAuoERcZz?ytBz>&&3{`Ehzul>L~LPQKq+`Ek~3T?Y1#KI;VH)YE%?bQJHsRrH^qp+`pmKjI~xs0-(uN`{i z1~{?lj6jDLKg&%d)cak$<(60&xT#vq$n5C6?EFh<7R%OYp>G>CS)_Uw0>u(iW`JmT~|AS=|`3|G?Kt9N2Dy=m1%SaU$F4P{+*4Of1B z{FWUo_)%z+T1qmL=fhSrr36ZEQx1!bGBcoL<>!_UE^Y){Tt(x9C=mIe=1{51XX8VI0K6RUP zFe5J6Z^f4kOP?g#2M?w%w~kYpjrWZ>5TTXvwfEh_C}qchEM4_4_K38en@3fxVq5{{ z!J`n6WZj_k4gMHO{z4+xNiOc(rWP=9E5-Zhds6ESupzjtDqiVeBt$zZ)6`@ICkhnZT=W*97Ddc=i$dssB*+6)awM(xgZ+?jmDcRM2b zL$|5vz*XvyHdedUDE&P{?P08t9S79i2iR8gi83h-+Z>F$5J8(YD$-z*=t5*tm&^y3 za!LTNzv@tH?yaEG`1az+FdO_&2Unr6JUwzefq~goZPE+-*;Hc~8ep{N;iZ{;IOOd` zWE}h9$R!Y($39p4*(Qsj&XF@9%Qi%7*YDy|;5?3sB%$x0`}r4zHd(AWn*Y3O7*3Q6 z=B$Ff&dCg|W%Q9;YCAZD@QN~zqo9*EKsZk;H9wo7b%cP63oY|WpM}ew{;cP?yXD-s z2G>gPLUKV1vH3!(fr146>ItNe&>+}J%|qfZo4K!6Box2)8XK=qEOlF=vcfahUDM=` z4xVmof7*7Tzf11StZ5n)eoPO%V|}!VDKCu|KYc8{D`~{-_+!5S4)e4EDa%6=u&5FI zv^zGs(_F_O1yF$>UuzB1vC}^Y>)j6BnGY#|&n(x!Nj3`xm1es~hR|w%->!K*?v}pe zb@`>&$Dun}DAZK$GzZa|+1yYQ^oxAE{^yLIvY$k#zqi=SNVAQF zA$tYv3+O}z){?v*Dc_H)L(q-|GN@Fu@MA+ZJ-XBm#I-a7 z=Dns+yiCZlGsLmXx+dhDIBp|p?LHJhOgCuCPAQXuzs}MalLM&~&SYC>*F>*mToM<1!>6>vW*>eV@DcZR z#JuDZxwJw0WCyE|2BTwm-_-urm;T@xkyci+2)94qjywM3fBFCrDdpaUsS-a~d4`RI zEwx%18N4{(Eu9I^p}!KnAVzt5hUMfK`FVQ!UPGb1D|J;>uTe`Zl`rnkCx?4RFQBI_ z9VB|VY2#O~m$u%fj&^VNduOkk!%k<0P<*x8)2_`^u?GW$PT$o@|Hl*O%ZqwY8?-%o zqKfp!!P{ufkQiWo@d55`=E551c(jjsAe~=T@&G|!w(%wTxvYUCEF;2vp;o^pKi|h9 z3pfOp+2xwuoZ~-%6_2qVv(DGTZ-QbvPMO!Q5BRT}*}tzoy8uQ@R=PJK^(9ug9*d$-_)0HL6DI&WxXHJOEXJUxC8N=r=)`{$A$dI&a8C zPw$f%BC^`Dt9=EWZ-1nxz#Y|@9FCCeq6wB`p}XaR++scW=uaHko2E#ryU-9CZh!S0 z$}F}(=5z;Yy<~}h(l4&xMOj=?6;3uQ#%24Aq;;oVQT`sBT~B4#9u*R@5jSl6G4!Wq z!_T^Pxxgy&EQ#GbL|l3sU(1F%q`@V0q2GVV#)^XE-t4TfM%e{@B9LbwczSmRt(C~z zOe1LpOF-4M*z@SO%*;5-a5UTTPpOZLl>$G^xRCceZjhQn7xe|2zQe}Z+TSk8kO`Va zCM_T) z&@NzLYqfk-ZsM?3ttv2o4ZLpL`~R^09W04ak)>73HgA{C5FkGwbV6MYX>$K3_tWF2 zWZ&;X?vbxlj>XmQ)W2zcCpcWiPcQu(VqlEXAH$z=Gb8PaMc%+d;*kHxcxiC#hOZR_ zIqJi*B^5}u{9(rYk)ry!%7cK#+HN;-ap4y*b(1}6OoyB#K%_OJXp$yMYa_dsgnw%C z`Q4!A#yZlf))RM3FJdYwyM&B#k}0$|bE75;wB&4md;B+(o=UoI;xNO1X@Nh+VT+eX z#9B*PdeUQqu-(HswAp>l!Kyz!qeS;s!rki9p>%m%`S>_Q;olfGB^~--w7T;ze+x1J zkuo^KB!li=1BRnJ3U#Wf@rJ%5s$lOJ$^9R~{}9d)zBIiNW25fVv)&xJdfnX#i`mf< z4h+mkl{}3=13k)VH5X%RrqUJMDR@%mw zv%FSQHYQQYji`hpyP#oQsl1Xr=i3+PvEh+x56MNXAL}}e;utM9ap2jx zYWl-#FI?Z=Fo$L!;C4(VcZ7EcQIy&_ctn*%c|OJ;Ke>KnJ0^KedGR|UGdmQYHw{{# zg1`J~d}Z>g6XW@lB2nO9CujzcV);yqoBgRSV?6mj>tf&Epg%2L;?%s0oQ3ZZdADx-;4B z(_5ppyO~KYMWE;B!|%dh(3t2nRuqzotNc~G^B5+y>HT7A4>li-03T~$;S5rB)VP9x zmt(j}`miGW@(k9>d3`B^W>i%I{L3J+vX@zs=aAuO?_X!y9A9T=^=g8GiM$f)@tmc|DqFdz#B2 zt*TP4A)B!MDO4}JCxH@f$#Nu}K5rs>7I%whl*il@@O-g5w$zKkECl%8?*_1Tb+&^7 zQ%{+l98b|n;qhIh|C00_u->oHb_g=aq%2r@3U>zh{&{{){R!YyukUZi)Rr6@yTsTbf+{;l!G^#_Hl966vPVk#wkeiRm-z#mTg3hNS@`ZN4nj3Cod zmH2m+K01lv%W@HNCN6yZJaKH?Xu6rRJa`(V?r;uL6>?Z0wF^Rn!iIS3hdxTw7RZB0 z;|!I-zbE?s$@DY`ue74{PSn2X6w~I^B~nl`75{>_&DAHexU8@{m}>ly##g4-BDv5Bt7&`TMMgu!a>}@>lhzTaLVEL*ddO! zp(@S$L%R(iqF<6B8Tp(GvWKsWV2^UNvVK9}HIjg%al`79u~bBq7Q-hO$BgC8actBJ zX+pwRE-woduj2M$;AO7{yF^IGm= zM0lNKw7&LMDbK^;tJ}K%1!t1JvsWd8#Mhnwvki9%M?cz0$S^A_Gj>pH*kh_q(iI>< zLs;Vcph}H9)&ISxOTjkmLKtx^j-sEYKayAb-CyEBocXYAy7%f$h?KTjtlEg?M+oqf z7hGMy1P%I`pf)3nAP1&?#+zWPjC^b(tNQGss9t-1MQ1+KoSs9d*x<^}`t$RLzSfFl z&1XlOp~_!VILUe{CJ>wUDtc-Sg;zG4?}_v4Pj;IK`^@`$*TJ=#ljy$|-#>3_b{f8# zoSpal_{Vi|(3qe!#D8x-R6xP?;EnoVvB9GcjP|HZ>S!j0D@PxB6)y_L6eV6B3|R{* zZiXa`SEKs;8!oV)XL&|~N3*CG&${oG+^M=txY zFg+64Vn62fO2Vda*6u)fRlQ0WnmnZ_XIw5m<@w1pXTbw@)6pL-q~|5f!KsxXx3+^4 zC~3D;4uCx;%n(ToaHIjLI>3|IO`;LN{B}UFC;q*Nx!)b5j6OQnZxnm_u;Vwc2eakv z+ZFx_8)Xgi;}OSr9s6Tf*H8o!a@4Cpkj+#T49ePj$%c1DFd+i{F%iPQANE|OW91=y{E>~80yO5{vTg4u2ZKR5%G^7n5ohml; z0(%Y|{Wn%$r{bOz#HOkzZwXah(yytWj;GdQYp)=-3c*RtOqs`jd-VRQo^~?Ppx$(D z1{BiEt#+#SM%n&Puz-Bwi$sCIX@Jp0%q@A@xJ~#tI4oE>+1NQO%}q==dD$$v%~^Tb zO}ThDg#`b9zJO?GfXR`$SXs36*vL4@*bN}$#<)ZPC-?sob+{J2l{Ku=2hT6{MLvpK zV6xqABDsiR<4A}|EZ;JnxFAP1eW-1&3UZDhxb-*6+r+&^RTs}X`IVNf&QJXBAEQCSnU}`>6cz1kCV`B3G&fXw1;%yR+w! z)oOTdx;s*7ItanXE7w~qD|sie2fXj#P2nsz$%vxFSdqg_xzTzzcmWuxO**1zGiSz_ z-gDmfw3}3!QEJX#6nk%-`NzA`c#*BPh%&*aTY{Of$bFut4a8xgL}3$sT90+qVCfTO zAdoLpLg=u6)0bn4AM)2bhaV3Tc{*}x&lx)zHa+6ZSJ{=^grv1aFp9Uv({7Lc@o0n1 zoxHN2f)RIZjlH}s1Q;hce|`=WkP@X?yYfr7%P)+Ym6gsCcq};3@~$*_{quX0T{1^z zK9*%!@G0!|TeNk`$^ClLb$NcVB8BZ>llQjEsRqUA^Md5u7M#tCLo+quK^0^dkn<4G zt5m4-OBDa;q0^q0JvXiA%;1<F&En^SnY7nn=jMU{PInj3>nU@ervBC1wuW?%5J z3A!&r{tN8wrqFUM{23WZLKFR~;}VJG62c*+m-;5|z~VleBxPyr7Gi|neeh$Fl5sZxmy)2zVfOgNa>OToE~q)Ue5xGn^g|g4}wbr(oelIDf(oScIy%m zz;geE+_n$(6E@2hP6V(pv;sU;S^C^&@mb6Q$pP)UnqXnin4P&l&zmeZsYY`$i|3HW zzTIt}zRr7OXtRux?>W33W3$AR$Ws`c?!{*r+H)Ysq3Ln?EerwI&T=Pl`}McXt72Iz z=*oK+lzxmakFR!1LMBU&%MRC(x7c>onosq}<(Hqce69mxSo&T^D!6qAOAIHBOxy2- z0kixn{29B}@pK*`siM}whND*2s=r{eu0{Ju>KDdJFZ)wDJ z-y}y;3)g@g*-mYAgNYmdwZQ)1I~rp>L=^dk7mushB1e`W`@sveZL`w<&potYu=uqB ztA{}~&+f{3)K;@vSj+mF7m_Qb0zmP9+=V)h<1fGOKfW|w;nI$h9BJXB*n>~nY{Lx% zU7DvV=;F`V%lQWUD?V_O9Kk--unjDAehBySh)4X#*%CpQovsRtZYz>?_*r5g^@L%d zS}?<}lImFI@*$_ylR@SlqQlJ}HR(OwOTB})#7HXAp{&~RR5$k;hLa5d?tA404X?{S zl2e!Oujyp2N!&}M68EHSb)Bk&*Ff-8`72n2#J$#)=2W;o_dlyZVeSno&*p=<0k&Aq zdFI&iH~hEBx_ea9Tf!3T0=T+D$0V2U~KcW@Q+|p38A1WZgCH%-W zR$7eDw$*Ul<;i8Sc|UO7kgdZ@c+ESJT>gk^b@zDWU1&a|q0Js^UT@z1EvL(3KWHm^ z@MLMKV7Fb?!|9N#x>`G%BpegLZW2Qn{C&anK?ewEPv&t|5?!+P1jV9sb5h4 z$B4_v$|P#NO6|QbhMpCSh(2q)DNoQZ6D(*8`?f;wEC@zAWt+oV$4Jm}jRYCF;iodE%rV zoie5>inTAHmu-M+NA=GQqC0%g4aa3liAjI^E3Ag8P7{`s-e<3O=$qt%QBvm!B)wZ+ zFiNs2Q0%2w`kSg#C}(zeofq1~*2gwFi3lDCJ%2?yNS-0yil=%~&0Kwx-uLK$Ve7aD zcEk8hAy9j^o6`W!8lO|v!_&{fT;0eVT;F__iKdjcS33YYX@v+9nkzJq@Z3#eoM@aR zRJ~Yl)P!CJla%SHUTkL1>5v}ZtD!?D_uxT48VfnE0LD41AHk{wTiH0O>3^NuTNnyE z%j+IUKvIQQT1#&?$7x&N`}>hublULdlT4LLyuP+n2vjZW*)njm58$Xv!v|8L`{Q|{})~+XnN~J zWUb>Uq!NcI;P)hMRCb|b#3X(wn<{3qc~*^EHYDKCT9Nbj7INgFELnv*r(f0qPwFRx%VrT%}JwwbU|HJSA)W%=4dH z^Mt5921!z*=;yI~O`PQWg;Ia`*O1-}zE6$$%!|R{5~u#cJ@L}h{S?|*Qs<0-)^C!^ zlngW*Kc9Hs$5plY=Gi%QR55*hj>#08pgZg@Sqpb{p+9U~w{VLoG8|uhP3p_qek}O>j@yiBi1I`x;xyzO$*|wH?Z@0f zrnLVDr-bFa%5GghNg>2*X`w+p?J$;_>}>k!sxz)3E21)wc@lvHr9wq<(AvqmzhAhL zGr??LM+&0&gKFrtlnZd3@do>l=LpcfiMxVs;>J7V3R6PfnOI$DCk5dly zyWv0}Bge(vQM z0cYBPa2&TofoB8;wr~yYz(HVNKbpVuV(4vioUVJoKAcf%1cCR?1P!}H+Z2jteT3f9 zpYPt0=4F@hgGslr{30br3EI)br*uO4sag~(88#}axenVkw1}Tm105EMD|tMm+FNa= zKB!gG-t?$XKW0@*9+Ht{hay7O7Z6? zw-t6$WEYNmn`x_L98|al8yTG z+!v($33r_78UR1+yyQ0K-C_MRrEPomgp@(y98`(!5X*)d?z6&RP-;Z5^63RXLp~d> zUhX)!NLzkyaN44YglCgxIZAJTS)v`sok784i?*#rNa}b1L?vV&LOzdwy;`6bY65$h zm4|uwG(|hpK7CyCAm zbXvet=BEWarFlAexA@v|$XP{?hZC3VO(;HLjHpa#g9sVUS^oo^kUjGQI(+1>T$jN< zPq+C1i5`dmPi1dJMes-Q8E7Dq6Dec>!7kF)g^i7;>O0 zS|6oyE5F9{(!ZhN4VY>79vxm{t1Z9j`VO2Xe7ucM`Z3;3XvoTQ3$w=Lhdz+X)a0L) zD*H})gwBMHq6Ym_Mhjn*0g-=3`ECxfz|7Qji9t!3e3&ySNf+1)*1b>~XygxicmyUt z3x+)~L{%bdY*|cS<33;S6~R7BtVSt%?Ju09T7{W;%!1;KrJUM%=DjdYjo)zm)GY4R z5MSK>T(Ba(81)L-6?~~J+ZkJK>0!UnEtMT@XbaWLseejSZ+~3Aur56$a=3RbJv@D$ v5SwXg