# error ? {gr}

Έρχονται στο Parrot Tunes

Σε προηγούμενο 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 για όποιον θέλει να δοκιμάσει.

09/06/2017 Τεχνολογία, Programming

Μάθε παιδί μου κώδικα

Πως θα βγάλουμε (ή δεν θα βγάλουμε) κάργα λεφτά; Πως θα βοηθήσουμε την παγκόσμια (ή εγχώρια) βιομηχανία της Πληροφορικής που αγκομαχά η καημένη; Πως θα γίνουμε θέμα στον ΣΚΑΙ; Αυτά (ή καθόλου αυτά) και άλλα πολλά, μπορείτε να διαβάσετε σε ένα άρθρο μου στην Κατιούσα.

30/05/2017 Τεχνολογία, Programming

Στα άδυτα της modular CSS

Ένας άλλος πιασάρικος τίτλος θα ήταν “ΠΑΘΑΜΕ ΣΟΚ ΜΟΛΙΣ ΕΙΔΑΜΕ ΤΗΝ MODULAR CSS!!!!ENA!!1!!! ΠΟΙΑ Η ΣΧΕΣΗ ΤΗΣ ΜΕ ΤΟ SURVIVOR; ΔΓΙΑΔOΣΤAI“. Αλλά δεν κάνω τέτοια εγώ κι επέλεξα έναν πιο… σοβαρούτσικο τίτλο.

Η… περιπέτεια μου στο να γράφω πιο σύγχρονο κώδικα συνεχίζεται. Μετά από το γερό σουλούπωμα στον κώδικα της PHP (έχει φτάσει σε αρκετά καλό σημείο) και ένα μικρό σουλούπωμα στην Javascript (έσπασε ο κώδικας σε μικρότερα αρχεία, για αρχή. Στο μέλλον πρέπει να το δω κι αυτό καλύτερα), ήρθε η ώρα της CSS.

Με την CSS δεν έχω και τις καλύτερες σχέσεις και δεν την συμπαθώ καθόλου. Ούτε αυτή εμένα. Με το που πατάω σε ένα αρχείο CSS να κάνω κάποιο edit, κρύος ιδρώτας με λούζει για το τέρας που θα αντικρίσω. Ενώ η ροδέλα του ποντικιού ετοιμάζεται για αύξηση της θερμοκρασίας από το ατελείωτο scrolling που πρόκειται να γίνει στα χιλιόμετρα του κώδικα. Εδώ ίσως κολλάει λίγο (λίγο λέμε) το “στα άδυτα της CSS”.

Κι έτσι μια μέρα είπα “Φτάνει! ΩΣ ΕΔΩ! Θα γραφτώ στο σωματεί…” Α, όχι… αυτό είναι από αλλού.

Μια μέρα είπα, λοιπόν, ότι πρέπει να βρω τρόπο να στρώσει κάπως η κατάσταση και το τέρας να υποταχθεί. Object Oriented CSS, Modular CSS και τέτοια, μου εμφανίζονταν (σαν οράματα) αρκετές φορές σαν έννοιες. Το έψαξα τελικά λίγο και βρήκα 2 πολύ καλές πηγές που μου δείχνουν τον δρόμο. Καταρχήν μια σειρά άρθρων του Zell Liew ([1], [2], [3]) με τον δικό του οδηγό για να γράψεις Modular CSS. Μου φαίνεται πολύ καλό μοντέλο και αυτό σκοπεύω να ακολουθήσω περίπου.

Ταυτόχρονα διαβάζω τον οδηγό του Jonathan Snook, “Scalable and Modular Architecture for CSS (SMACSS)” για να καταλάβω ακόμη περισσότερο την φάση (αν και είναι διαφορετικό μοντέλο από του Zell Liew, αλλά πατάει κι αυτός πάνω στο SMACSS αρκετά).

Άρχισα ήδη να εφαρμόζω στο framework μου το μοντέλο. Για αρχή έχω σπάσει όλο το τέρας σε επιμέρους αρχεία. Κάθε αρχείο και διαφορετικό compoment ή object. Ευτυχώς το τέρας το είχα σχετικά οργανωμένο με κάθε επιμέρους αντικείμενο γκρουπαρισμένο και με τα σχόλια του. Οπότε η διαδικασία ήταν σχετικά εύκολη με copy-paste του κάθε group κώδικα σε ξεχωριστό αρχείο. Το αποτέλεσμα είναι περίπου αυτό.

Αυτή ήταν η εύκολη δουλειά, αλλά πολύ σημαντική ώστε να μπορέσω τώρα πολύ πιο εύκολα να εφαρμόσω το namespacing για τις κλάσεις που προτείνει το μοντέλο του Zell Liew. Στην αρχή από τα μικρότερα και απλούστερα objects, φτάνοντας κάποια στιγμή στις πιο πολύπλοκες δομές.

Μετά από αυτό θα μπορέσω επιτέλους να τελειώσω με το Parrot Tunes και να αρχίσω ένα άλλο project που έχω στο μυαλό.

 

27/05/2017 Τεχνολογία, Programming