dc.contributor.author |
Zaravinos, George
|
en |
dc.contributor.author |
Leousis, Savvas
|
en |
dc.contributor.author |
Ζαραβίνος, Γεώργιος
|
el |
dc.contributor.author |
Λεούσης, Σάββας
|
el |
dc.date.accessioned |
2023-06-12T09:35:53Z |
|
dc.date.available |
2023-06-12T09:35:53Z |
|
dc.identifier.uri |
https://dspace.lib.ntua.gr/xmlui/handle/123456789/57819 |
|
dc.identifier.uri |
http://dx.doi.org/10.26240/heal.ntua.25516 |
|
dc.rights |
Default License |
|
dc.subject |
Προγράμματα περιήγησης ιστού |
el |
dc.subject |
Μεταγλωττιστές |
el |
dc.subject |
Ιστοσελίδες |
el |
dc.subject |
Διαδίκτυο |
el |
dc.subject |
Εργαλείο προγραμματισμού |
el |
dc.subject |
WebAssembly |
en |
dc.subject |
Browsers |
en |
dc.subject |
Compilers |
en |
dc.subject |
Web pages |
en |
dc.subject |
Web development |
en |
dc.title |
WebAssembly Workshop: Διαδικτυακή μεταγλώττιση και ανάπτυξη κώδικα |
el |
heal.type |
bachelorThesis |
|
heal.classification |
Web development |
en |
heal.language |
el |
|
heal.language |
en |
|
heal.access |
free |
|
heal.recordProvider |
ntua |
el |
heal.publicationDate |
2021-01-15 |
|
heal.abstract |
The purpose of this diploma dissertation is to integrate tools, more specifically compilers from well-known programming languages such as C, C++ and Go to Web Assembly. The reason we did this is for enabling programs and applications coded in these languages also run in web browsers. For many years, browsers used to run explicitly JavaScript. Recently, a new low-level language has emerged and promises many benefits, most notably the ability to run higher- performance web applications. It allows front-end developers to take advantage of an existing language that is probably more familiar to them, such as C++, or simply use existing code snippets, such as search algorithms, that can now run on a web page almost as fast as a native application. The architecture we used to implement our tool is that of Microservices. This architecture helped us to split the entire application into smaller sub-sections that operate independently of each other but are combined to achieve the full functionality of the tool. More specifically, Docker is the tool that allowed us to separate applications and made it possible to compact and run all individual applications in small isolated environments called containers on a single server. For the final realization of our goal, the basic technologies used are several. Our develop- ment tools are Docker and Firebase. In the backend of our application we have used NGINX, Python Flask with uWSGI, MongoDB, Kafka together with Zookeeper and of course our 2 main compilers, Emscripten (for C and C++) and the Golang compiler. Finally, at fron- tend we used Angular. All these technologies work together for the smooth operation of the application. The final product of our work is a website – a tool for developers. Essentially, we enable anyone to write and save their application in their favorite language. Then the developer can see it running in the browser effortlessly and without being required to have special knowledge about Web Assembly and web applications in general. It is therefore a tool that aims to familiarize developers with web applications at the lowest possible cost and maximum convenience. |
en |
heal.abstract |
Σκοπός της παρούσας εργασίας είναι η συγκέντρωση εργαλείων, πιο συγκεκριμένα μεταγλωττι- στών από γνωστές γλώσσες προγραμματισμού όπως οι C, C++ και η Go σε Web Assembly. Αυτό γίνεται με σκοπό προγράμματα και εφραμογές που είναι γραμμένα σε αυτές τις γλώσσες, να μπορούν να τρέχουν και σε προγράμματα περιήγησης ιστού. Για χρόνια η Javascript ηταν η μοναδική γλώσσα που έτρεχε στα προγράμματα περιήγησης ιστού. Πρόσφατα, μια νέα χαμηλού επιπέδου γλώσσα έκανε την εμφάνισή της και υπόσχεται πολλά πλεονεκτήματα με το βασικότερο να είναι η δυνατότητα για εκτέλεση εφαρμογών πιο υψηλής απόδοσης σε ιστοσελίδες. Επιτρέπει στους προγραμματιστές front-end να αξιοποιήσουν μια υπάρχουσα γλώσσα που είναι πιθανότατα πιο οικεία σε αυτούς όπως η C++ ή απλά να χρησιμοποιήσει υπάρχοντα κομμάτια κώδικα, όπως αλγόριθμους αναζήτησης, τα οποία πλέον μπορούν να τρέχουν σε μια ιστοσελίδα σχεδόν τόσο γρήγορα όσο μια εγγενής εφαρμογή. Η αρχιτεκτονική που χρησιμοποιήσαμε για την υλοποίηση του εργαλείου μας είναι αυτή των Microservices. Αυτή η αρχιτεκτονική μάς βοήθησε να διαχωρίσουμε την συνολική εφαρμογή σε μικρότερα επιμέρους τμήματα τα οποία λειτουργούν ανεξάρτητα το ένα από το άλλο αλλά συν- διάζονται για να επιτευχθεί η πλήρης λειτουργεία του εργαλείου. Πιο συγκεκριμένα, το Docker είναι αυτό το εργαλείο που μας επέτρεψε τον διαχωρισμό των εφαρμογών και κατέστησε δυνατή τη δυνατότητα συμπύκνωσης και εκτέλεσης όλων των επιμέρους εφαρμογών μικρά απομονωμένα περιβάλλοντα που ονομάζονται κοντέινερ σε έναν κεντρικό υπολογιστή. Για την τελική υλοποίηση του στόχου μας, οι βασικές τεχνολογίες που χρησιμοποιήθηκαν είναι αρκετές. Τα εργαλεία ανάπτυξης μας είναι το Docker και το Firebase. Στο backend της εφαρμογής μας έχει χρησιμοποιηθεί το NGINX, το Flask της Python με το uWSGI, η MongoDB, ο Kafka μαζί με το Zookeeper καθώς και οι 2 βασικοί μας μεταγλωττιστές, το Emscripten (για C και C++) και ο μεταγλωττιστής για την Go. Τέλος, στο frontend χρησιμοποίησαμε την Angular. Όλες αυτές οι τεχνολογίες συνεργάζονται μεταξύ τους με σκοπό την εύρυθμη λειτουργία της εφαρμογής. Το τελικό προϊόν της εργασίας μας είναι μια ιστοσελίδα – ένα εργαλείο για προγραμματι- στές. Ουσιαστικά, δίνουμε την δυνατότητα στον οποιοδήποτε να γράψει και να αποθηκεύσει την εφαρμογή του στη γλώσσα της αρέσκειάς του. Έπειτα μπορεί να την δει να τρέχει μέσα στο πρόγραμμα περιήγησης που χρησιμοποιεί χωρίς κανέναν κόπο και χωρίς να απαιτείται να διαθέτει ιδιαίτερες γνώσεις σχετικά με την Web Assembly και τις εφαρμογές διαδικτύου γενικότερα. Πρόκεται λοιπόν για ένα εργαλείο που έχει στόχο την εξοικείωση των προγραμματιστών με την με τον χώρο των δικτυακών εφαρμογών με το ελάχιστο δυνατό κόστος και τη μέγιστη ευκολία. |
el |
heal.advisorName |
Παπασπύρου, Νικόλαος |
el |
heal.committeeMemberName |
Σαγώνας, Κωνσταντίνος |
el |
heal.committeeMemberName |
Γκούμας, Γεώργιος |
el |
heal.academicPublisher |
Εθνικό Μετσόβιο Πολυτεχνείο. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Τομέας Τεχνολογίας Πληροφορικής και Υπολογιστών |
el |
heal.academicPublisherID |
ntua |
|
heal.numberOfPages |
48 σ. |
el |
heal.fullTextAvailability |
false |
|