Loading README.md +109 −18 Original line number Diff line number Diff line Loading @@ -111,7 +111,7 @@ client, χρησιμοποιώντας REST API, το οποίο θα οριστ ```json { "input_numbers": [ 1, 4, 6, 10, 20] "input_numbers": [ 4, 6, 10, 20] } ``` Loading @@ -123,9 +123,6 @@ client, χρησιμοποιώντας REST API, το οποίο θα οριστ { "result": [ { "input_number": 1, "prime_factors": [] },{ "input_number": 4, "prime_factors": [2, 2] },{ Loading Loading @@ -533,27 +530,121 @@ async def primes(request_object: RequestObjet) -> ResponseObject:  ### Υλοποίηση συνάρτησης πρώτων ### Υλοποίηση συνάρτησης υπολογισμού πρώτων παραγόντων Μια συνάρτηση υπολογισμού πρώτων παραγόντων είναι η παρακάτω: ```python def prime_factors(number: int): result = [] i = 2 while i <= number: if number % i == 0: result += [i] number //= i else: i+=1 return result ``` Καλούμε τη συνάρτηση από τη συνάρτηση `primes`: ```python @app.post("/primes/") async def primes(request_object: RequestObjet) -> ResponseObject: return ResponseObject( result=[ ResponseItem( input_number=number, prime_factors=prime_factors(number) ) for number in request_object.input_numbers ] ) ``` Τώρα αν ξαναστείλου το request πρέπει να πάρουμε τη σωστή απάντηση (Εικόνα \ref{fig:correct})  ## Δημιουργία του client Δημιουργούμε ένα νέο python αρχείο με όνομα `client.py`, με τα ακόλουθα περιεχόμενα: ```python import requests import json import sys api_url = "http://localhost:8000/primes" obj = {'input_numbers': [int(n) for n in sys.argv[1:]]} response = requests.post(api_url, json=obj) result = response.json() ## Δημιουργία του web client print(json.dumps(result, indent=2)) ``` Ενώ ο server τρέχει, εκετελούμε το αρχείο με την ακόλουθη εντολή: ```bash python client.py 4 50 24 95 ``` Θα πρέπει να δούμε αποτέλεσμα όπως το παρακάτω: ```json $ python client.py 4 50 24 95 { "result": [ { "input_number": 4, "prime_factors": [ 2, 2 ] }, { "input_number": 50, "prime_factors": [ 2, 5, 5 ] }, { "input_number": 24, "prime_factors": [ 2, 2, 2, 3 ] }, { "input_number": 95, "prime_factors": [ 5, 19 ] } ] } ``` # Υποβολή εργασίας Το τελικό παραδοτέο της εργασίας είναι ένα `zip` αρχείο, που περιλαμβάνει τουλάχιστον: 1. Τον κώδικα του σεναρίου που εκτελέστηκε 2. Τα trace files που δημιουργήθηκαν από την προσομοίωση. 3. Ένα σύντομο report που να περιγράφει το σενάριο της προσομοίωσης και να παρουσιάζει εν συντομία τα αποτελέσματα με διαγράμματα. 1. Τον κώδικα του σεναρίου που εκτελέστηκε (χωρίς τον υποκατάλογο `venv`) 2. Ένα σύντομο report που να περιγράφει τη διαδικασία που εκτελέσατε για την υλοποίηση της άσκησης, με παραδείγματα κώδικα και screenshots ## Bonus points 1. Μελέτη της επίδρασης περισσότερων παραμέτρων στην επίδοση συστήματος 2. Υποστήριξη πρωτοκόλλου QUIC <https://github.com/signetlabdei/quic-ns-3> 3. Τροποποίηση του σεναρίου για διαφορετικές τοπολογίες 4. Βελτιστοποίηση του αλγορίθμου προσαρμογής (adaptation algorithm) για τις συνθήκες 5G ή και QUIC. # Βιβλιογραφία 1. Ενσωμάτωση documentation strings στο UI 2. Επαλήθευση της ορθής δομής των request και response από το client 3. Υλοποίηση μηχανισμού authentication για το API Screenshot 2025-01-22 at 09-19-27 FastAPI - Swagger UI.png 0 → 100644 +64.3 KiB Loading image diff... fastapi-primes.pdf +41.5 KiB (588 KiB) File changed.No diff preview for this file type. View original file View changed file Loading
README.md +109 −18 Original line number Diff line number Diff line Loading @@ -111,7 +111,7 @@ client, χρησιμοποιώντας REST API, το οποίο θα οριστ ```json { "input_numbers": [ 1, 4, 6, 10, 20] "input_numbers": [ 4, 6, 10, 20] } ``` Loading @@ -123,9 +123,6 @@ client, χρησιμοποιώντας REST API, το οποίο θα οριστ { "result": [ { "input_number": 1, "prime_factors": [] },{ "input_number": 4, "prime_factors": [2, 2] },{ Loading Loading @@ -533,27 +530,121 @@ async def primes(request_object: RequestObjet) -> ResponseObject:  ### Υλοποίηση συνάρτησης πρώτων ### Υλοποίηση συνάρτησης υπολογισμού πρώτων παραγόντων Μια συνάρτηση υπολογισμού πρώτων παραγόντων είναι η παρακάτω: ```python def prime_factors(number: int): result = [] i = 2 while i <= number: if number % i == 0: result += [i] number //= i else: i+=1 return result ``` Καλούμε τη συνάρτηση από τη συνάρτηση `primes`: ```python @app.post("/primes/") async def primes(request_object: RequestObjet) -> ResponseObject: return ResponseObject( result=[ ResponseItem( input_number=number, prime_factors=prime_factors(number) ) for number in request_object.input_numbers ] ) ``` Τώρα αν ξαναστείλου το request πρέπει να πάρουμε τη σωστή απάντηση (Εικόνα \ref{fig:correct})  ## Δημιουργία του client Δημιουργούμε ένα νέο python αρχείο με όνομα `client.py`, με τα ακόλουθα περιεχόμενα: ```python import requests import json import sys api_url = "http://localhost:8000/primes" obj = {'input_numbers': [int(n) for n in sys.argv[1:]]} response = requests.post(api_url, json=obj) result = response.json() ## Δημιουργία του web client print(json.dumps(result, indent=2)) ``` Ενώ ο server τρέχει, εκετελούμε το αρχείο με την ακόλουθη εντολή: ```bash python client.py 4 50 24 95 ``` Θα πρέπει να δούμε αποτέλεσμα όπως το παρακάτω: ```json $ python client.py 4 50 24 95 { "result": [ { "input_number": 4, "prime_factors": [ 2, 2 ] }, { "input_number": 50, "prime_factors": [ 2, 5, 5 ] }, { "input_number": 24, "prime_factors": [ 2, 2, 2, 3 ] }, { "input_number": 95, "prime_factors": [ 5, 19 ] } ] } ``` # Υποβολή εργασίας Το τελικό παραδοτέο της εργασίας είναι ένα `zip` αρχείο, που περιλαμβάνει τουλάχιστον: 1. Τον κώδικα του σεναρίου που εκτελέστηκε 2. Τα trace files που δημιουργήθηκαν από την προσομοίωση. 3. Ένα σύντομο report που να περιγράφει το σενάριο της προσομοίωσης και να παρουσιάζει εν συντομία τα αποτελέσματα με διαγράμματα. 1. Τον κώδικα του σεναρίου που εκτελέστηκε (χωρίς τον υποκατάλογο `venv`) 2. Ένα σύντομο report που να περιγράφει τη διαδικασία που εκτελέσατε για την υλοποίηση της άσκησης, με παραδείγματα κώδικα και screenshots ## Bonus points 1. Μελέτη της επίδρασης περισσότερων παραμέτρων στην επίδοση συστήματος 2. Υποστήριξη πρωτοκόλλου QUIC <https://github.com/signetlabdei/quic-ns-3> 3. Τροποποίηση του σεναρίου για διαφορετικές τοπολογίες 4. Βελτιστοποίηση του αλγορίθμου προσαρμογής (adaptation algorithm) για τις συνθήκες 5G ή και QUIC. # Βιβλιογραφία 1. Ενσωμάτωση documentation strings στο UI 2. Επαλήθευση της ορθής δομής των request και response από το client 3. Υλοποίηση μηχανισμού authentication για το API
Screenshot 2025-01-22 at 09-19-27 FastAPI - Swagger UI.png 0 → 100644 +64.3 KiB Loading image diff...
fastapi-primes.pdf +41.5 KiB (588 KiB) File changed.No diff preview for this file type. View original file View changed file