Με έναν φίλο παίζουμε τελευταία με αυτά τα… αρντουίνα του διαβόλου. Τελευταία δοκιμή αυτή του ελέγχου ενός πολύμπριζου. Επειδή έχω φτιάξει και μια web εφαρμογή (αν και λίγο απαρχαιωμένη πλέον) που μαζεύει θερμοκρασίες και ανοιγοκλείνει συσκευές, είπα να ασχοληθώ και με το αντίστοιχο hardware, πέρα από το software μόνο.
Στο βίντεο φαίνεται η δοκιμή του πολύμπριζου και αναλυτικές οδηγίες για το project μπορείτε να δείτε εδώ.
Μετά το μεγάλο update που έγινε τον Ιούνιο, χαλάρωσε κάπως η ανάπτυξη της εφαρμογής. Η ζέστη μας επηρέασε… Υπήρξε όμως κι ένα μικρότερο update κάποια στιγμή, που βελτίωνε σημαντικά τον κώδικα του συγχρονισμού των αρχείων και δίνει νέες δυνατότητες για το μέλλον.
Σύντομα όμως θα ανέβει ένα νέο αρκετά καλό update. Σε αυτό δίνεται μεγάλη έμφαση στους ελέγχους για τον συγχρονισμό των αρχείων και στο αν είναι έγκυρα τα directories που δίνει ο χρήστης και χρησιμοποιεί η εφαρμογή. Επίσης γίνεται καλύτερος έλεγχος απαιτούμενων εγκατεστημένων utilities, όπου χρειάζεται. Στόχος να γίνει ακόμη πιο απλή και να αφαιρεθούν όλα τα προβλήματα που μπορεί να έχει κάποιος στην εγκατάσταση της εφαρμογής.
Μεγάλη βελτίωση έχει γίνει στο σύστημα που εμφανίζει τα αποτελέσματα του συγχρονισμού ή οποιασδήποτε άλλης εργασίας που κάνει ο χρήστης στην οθόνη της συλλογής. Πλέον όλα εμφανίζονται σε ξεχωριστό παράθυρο, το οποίο μπορεί να ανοίξει ο χρήστης σε όποιο σημείο της εφαρμογής και να βρίσκεται. Δηλαδή ο χρήστης μπορεί να εκτελεί διάφορες εργασίες στην συλλογή και ταυτόχρονα να πάει σε άλλες οθόνες, χωρίς κανένα πρόβλημα και χωρίς να χάσει τα αποτελέσματα της εργασίας.
Ταυτόχρονα έχει αφαιρεθεί το κλασικό loading gif (που εμφανίζεται σε οποιαδήποτε εργασία έχει κάποια αναμονή), αλλά και η κλασική μπάρα προόδου, που εμφανίζονταν στο header. Και τα 2 έχουν αντικατασταθεί από μία νέα έμπνευση που πιστεύω είναι πολύ πιο ευχάριστη και βοηθητική. Για εργασίες απλής αναμονής εμφανίζει ένα παπαγαλάκι πάνω στο header που περπατάει. Όταν πρόκειται για εργασίες που εμφανίζουν και ποσοστό προόδου, εμφανίζεται και μια μπάρα πάνω από το παπαγαλάκι που περπατάει, μαζί με την εμφάνιση του ποσοστού.
Το παπαγαλάκι είναι μια δημιουργία της vktoons, που μου έφτιαξε τα frames κι εγώ στην συνέχεια τον κατάλληλο κώδικα σε HTML5. Ευκαιρία να παίξω και με τον canvas και το animation. Ταυτόχρονα έκανα και σημαντική πρόοδο στις γνώσεις μου γενικά με την javascript και ειδικά με την object oriented φάση, που δεν είχα μέχρι τώρα ιδέα. Ο κώδικας για το παπαγαλάκι είναι γραμμένος για πρώτη φορά σε object oriented. Οπότε στο επόμενο διάστημα θα υπάρχει και μεγάλη βελτίωση στον υπόλοιπο κώδικα javascript.
Μπορείτε να δείτε παρακάτω την μέχρι τώρα σχετική υλοποίηση του progress animation, η οποία βέβαια θέλει ακόμη δουλίτσα, κυρίως στην εμφάνιση.
Πιστεύω μέσα στην επόμενη εβδομάδα να έχει ολοκληρωθεί το update (0.10.0) και να ανέβει. Το αμέσως επόμενο update θα έχει να κάνει με την δυνατότητα του χρήστη να κάνει upload αρχεία (audio/video) απευθείας από την εφαρμογή, αντί να τα αντιγράφει στον φάκελο που έχει τα αρχεία του και μετά να κάνει τον συγχρονισμό.
Αυτό θα γίνει λογικά μέχρι τον Σεπτέμβριο και η έκδοση αυτή θα βάλει την εφαρμογή και σε beta φάση, επιτέλους. Να μπορέσω να αρχίσω και ένα άλλο project που σκέφτομαι.
Σε προηγούμενο post αναφέρθηκα ήδη σε ένα στρώσιμο της CSS που έχει αρχίσει. Ταυτόχρονα όμως έπιασα και δύο πολύ σημαντικά στοιχεία της εφαρμογής. Το ένα έκατσε εντελώς τυχαία.
Το πρώτο στοιχείο, είναι αυτό που λέω συνέχεια ότι πρέπει να γίνει. Το search. Κι έτσι ο συγκεκριμένος κώδικας που ήταν σχετικά χαοτικός και παλιομοδίτικος, έφαγε ένα γερό χτένισμα. Πλέον είναι πολύ πιο καθαρός και απλός. Αποτέλεσμα αυτού ήταν να έρθει να πέσει και η λύση του προβλήματος σαν ώριμο φρούτο, εκεί που με άγχωνε και δεν μπορούσα ούτε καν να σκεφτώ σε γενικές γραμμές πως θα γίνει.
Σε πρώτη φάση μπορεί ο χρήστης να φτιάξει σύνθετα queries αναζήτησης. π.χ. να θέλει να εμφανίσει όσα τραγούδια είναι Rock ή Metal και ταυτόχρονα να έχουν βαθμολογία 5 αστεράκια, όπως φαίνεται και στην εικόνα. (μην δίνετε σημασία στην εμφάνιση. Πειραματικό είναι ακόμη). Μένει τώρα να γίνει πιο δυναμική η φάση, να μπορείς να προσθέτεις και να αφαιρείς όσα πεδία αναζήτησης θες. Και τέλος να μπορείς να κάνεις save/load αυτά τα queries, σαν τις smart playlists που έχει το itunes.
Τυχαία όμως έπεσα σε ένα post στο group των Ελλήνων προγραμματιστών στο Facebook, το οποίο είχε αναφορά περίπου σε πρόβλημα που έχει και το Parrot Tunes. Και όχι μόνο, γιατί αυτό το έψαχνα και σε μια εφαρμογή διαχείρισης αρχείων που είχα κάνει πριν αρκετά χρόνια. Τότε όπως φάνηκε έψαχνα λάθος και δεν έβγαλα άκρη ή μου φαίνονταν πολύ δύσκολο.
Το Parrot Tunes, λοιπόν, έχει ένα πρόβλημα μέχρι τώρα, που κάνει πολύ δύσκολη την αρχική εγκατάσταση. Τα αρχεία του χρήστη (audio/video) συνήθως βρίσκονται σε directory που είναι εκτός του web path. Για να μπορεί να τα δει ο browser πρέπει να κάνεις αλχημείες. Να προσθέσεις alias στο virtualhost του apache. Και αυτό πάλι δεν ξέρω καν να θα μπορεί να παίζει απροβλημάτιστα σε όλους. Φίλος που προσπάθησε να εγκαταστήσει την εφαρμογή είχε προβλήματα.
Βρέθηκε η λύση λοιπόν. Αντί να παίρνω τα κανονικά url των αρχείων για να τα παίξει ο browser, τα διαβάζω μέσω PHP που μπορεί να έχει πρόσβαση σε όλο το filesystem του linux. π.χ. αντί να βάζω το url του κάθε video, καλώ το αρχείο μαζί με το id του τραγουδιού serveFile.php?id=xxxxxxx. Το serveFile.php θα στριμάρει πίσω το αντίστοιχο audio/video αρχείο σε binary.
Η ιδέα είναι αυτή περίπου. Στον απλό κώδικα που έγραψα εγώ όμως στην αρχή (fopen, fpassthru) είχα θέματα με τον safari, ο οποίος δεν έπαιζε τα video, αλλά μόνο τα audio. Ενώ και ο chrome που τα έπαιζε όλα, δεν σου έδινε την δυνατότητα να πας σε άλλα χρονικά σημεία του τραγουδιού. Επίσης ήταν αρκετά αργό.
Η λύση βρέθηκε με τον κώδικα που βρήκα εδώ, ο οποίος σπάει το αρχείο σε κομμάτια και το στριμάρει σωστά. Και δεν έχει και κανένα πρόβλημα με τον safari. Όλα φαίνονται τέλεια μέχρι τώρα που το δοκιμάζω.
Μετά από αυτό, η εφαρμογή θα είναι πλέον σχεδόν plug and play.
Η νέα έκδοση του Parrot Tunes, μαζί με όλες αυτές τις αλλαγές, θα είναι σύντομα online για όποιον θέλει να δοκιμάσει.