Final Project: Live Lectures
(http://83.212.101.48:8080/final_project/index.html , http://83.212.101.47:8080/final_project/index.html)
Στο τελικό μας project ασχοληθήκαμε με τη δημιουργία μιας σελίδας στην οποία μπορεί κάποιος χρήστης να βιντεοσκοπεί διαλέξεις του οι οποίες εμφανίζονται ζωντανά και αποθηκεύονται για μελλοντική παρακολούθηση και λήψη. Οι χρήστες που παρακολουθούν την διάλεξη ή ακόμα την κατεβάζουν μετά το πέρας της μπορούν να αφήσουν σχόλια τα οποία γίνονται update realtime. Έτσι δίνεται η δυνατότητα στον δημιουργό του βίντεο να απαντήσει σε τυχόν απορίες είτε κατά τη διάρκεια της διάλεξης είτε μετά.
Για τη δημιουργία αυτής της υπηρεσίας χρησιμοποιήσαμε το Red5 το οποίο είναι ένα framework που υλοποιεί το rtmp πρωτόκολλο που μέσω αρχείων .swf (Adobe Flash) δίνει την ικανότητα στον Browser να καταγράψει και να προβάλει βίντεο και ήχο. Προτιμήσαμε flash αντί για html5 καθώς το δεύτερο βρίσκεται ακόμα σε πρώιμη μορφή όσων αφορά τις δυνατότητες λήψης και προβολής βίντεο.
Για τη δημιουργία της διάλεξης χρησιμοποιήσαμε ως βάση τα παραδείγματα τα οποία συμπεριλαμβάνονται στον κώδικα του Red5 ώστε να δημιουργήσουμε ένα .swf αρχείο το οποίο είναι υπεύθυνο τόσο για την λήψη της όσο και την μεταφορά και την αποθήκευση στον server. Η προβολή μιας διάλεξης γίνεται μέσω του jwplayer το οποίο έχει δημιουργηθεί ακριβώς για την προβολή video και είναι πολυ διαδεδομένο με μεγάλη κοινότητα χρηστών.
Για να προβληθούν σωστά οι διαλέξεις οι οποίες έχουν αποθηκευτεί τοπικά στον σκληρό του εκάστοτε υπολογιστή θα πρέπει να είναι εγκατεστημένο η εφαρμογή VLC η οποία έχει τα κατάλληλα codecs για την αναπαραγωγή .flv αρχείων.
Έχουμε δημιουργήσει ένα servlet για κάθε βασική λειτουργία της υπηρεσίας μας. Πιο συγκεκριμένα υπάρχουν τα εξής
register: Βάση αυτού γίνεται η εγγραφή νέων χρηστών.
login: Χρησιμοποείται για την είσοδο των χρηστών στην υπηρεσία.
broadcast: Υπεύθυνο για την έναρξη και την λήξη μιας διάλεξης.
view: Υπεύθυνο για την προβολή μιας διάλεξης.
comments: Προσφέρει την δυνατότητα realtime σχολίων.
welcome: Εμφανίζει τις διαθέσιμες διαλέξεις και δίνει την δυνατότητα στον χρήστη δημιουργήσει μία δική του
Ως βάση δεδομένων χρησιμοποιείται η mysql για την καταγραφή των λογιστικών της υπηρεσίας μας, κάνοντας χρήση 3ων απλών tables. Για την ασφάλεια αυτής της βάσης δεδομένων χρησιμοποιούμε την κλάση PreparedStatement για την αποφυγή sql-injection. Αυτό γίνεται στα σημεία που εκτελούμε queries/statements δηλαδή στα εξής servlet:
register
login
comment
broadcast
Πηγές για security : http://stackoverflow.com/questions/687787/how-should-i-sanitize-database-input-in-java
Παρατηρήσεις
Διαπιστώσαμε πως σε μερικές πλατφόρμες για να γίνει η λήψη του αρχείου που περιέχει τη διάλεξη χρειάζεται ο χρήστης να πατήσει δεξί κλικ στο σύνδεσμο που παρέχεται και να επιλέξει “Αποθήκευση δεσμού ως…”
Κατα τη διάρκεια ανάπτυξης της υπηρεσίας μας είχαμε τη δυνατότητα να αποθηκεύουμε ελληνικούς χαρακτήρες στη βάση δεδομένων χρησιμοποιώντας την κωδικοποίηση utf-8. Αφού ανεβάσαμε το τελικό project στην υπηρεσία Okeanos παρατηρήσαμε ότι οι ελληνικοί χαρακτήρες δεν αποθηκεύοται σωστά. Υποθέτουμε πως αυτό έχει να κάνει με το πακέτο mysql στο CentOS, ότι δηλαδή δεν υποστηρίζονται unicode χαρακτήρες.
Τέλος, συνιστάται η χρήση του Google Chrome browser.
Η ομάδα:
Σκρέκα Λαμπρινή, 816
Τάτση Μαρία, 791
Χρυσοβέργης Μάριος, 677