Μιας που πέρασα η μπόρα, ίσως τώρα μπορούμε να σκεφτούμε λίγο πιο λογικά και να δούμε το αύριο (που κακά τα ψέματα, δεν θα είναι και πάαααρα πολύ διαφορετικό από το χθές).
Καθόμουν λοιπόν και σκεφτόμουν τι σκατά μπορεί να χρειάζεται για να υλοποιηθεί ένα “Monitor”. Και αν και ξέρω σχετικά λίγα πράματα από php-mysql κτλ, και δε ξέρω τίποτα από feed agregation, μου φαίνεται τρομακτικά εύκολο να κάνεις ένα feed agregator (διορθώστε με αν κάνω κάπου λάθος).
Πως φαντάζομαι οτι λειτουργεί ένα Monitor (όπου με τον όρο “Monitor” αναφέρομαι σε έναν τυχαίο απλό feed agregator):
Βήμα 1ο: πάω στο site του Monitor και βάζω το url του feed του blog μου, και κάνα δυο στοιχεία ακόμα για την πάρτη μου. Τα στοιχεία αυτά, και κυρίως το url του feed μου καταχωρούνται στη βάση.
Από τεχνικής άποψης το κομμάτι αυτό είναι tutorial για εισαγωγή στην php, δεν τίθεται καν θέμα δυσκολίας, είναι ένα απλό insert.
Βήμα 2ο: το Monitor έχει ας πούμε ένα είδους “crowler” για να εντοπίζει τα νέα posts. Kάθε x λεπτά περνάει από τα url των feeds που έχουν καταχωρηθεί στη βάση του (εγώ ο ίδιος πήγα και του έδωσα το url μου για να περνάει απο το blog μου), παίρνει από κάθε νέο post που έχει δημοσιευτεί (αν έχει δημοσιευτεί) τις πρώτες k γραμμές του και τις αποθηκεύει στη βάση του, πιθανόν με κάποια επιπλέον στοιχεία (πχ την ώρα που δημοσιεύτηκε το post, τον συγγραφέα του, κουτουλου).
Το κομμάτι αυτό πιστεύω ότι μπορεί πολύ εύκολα να γίνει με ένα scriptάκι το οποίο κάθε τόσο θα κάνει μια γύρα στα feed urls, θα ελέγχει αν υπάρχουν νέα posts, θα μαζεύει όλα τα νέα post, και τέλος θα τα κάνει insert στη βάση του Monitor.
Βήμα 3ο (και τελευταίο): πάω στο site του Monitor, σαν reader τώρα. Με το που πηγαίνω εκεί το Monitor κάνει ένα απλό select στη βάση του και μου επιστρέφει τα πιο πρόσφατα posts (ή με όποια άλλη ταξινόμηση θέλει, most viewed και δε ξέρω και γω τι).
Το κομμάτι αυτό είναι επίσης πις οφ κέικ.
Οπότε, εκτός και αν μου διαφεύγει κάτι πολύ σημαντικό, το να κάνεις έναν feed agregator δεν είναι και κάνα δύσκολο πράμα (νομίζω?). Άρα αν καποιος έχει χρόνο, και δεδομένου ότι μπορείς να βρεις και έτοιμο κώδικα (αν και το συγκεκριμένο μου φαίνεται και εφικτό να γίνει και from scratch), το μόνο που χρειάζεται είναι ένα server για host (και να αφιερώσεις κάποιο χρόνο).
Τώρα, 2-3 πράματα που θεωρώ επίσης σημαντικά, που είτε δημιουργούσαν μέχρι τώρα προβλήματα, είτε δεν υπήρχαν στο Monitor και νομίζω πως θα ήταν πολύ χρήσιμο να υπάρχουν.
Αρχικά, οποιοσδήποτε κάνει εγγραφή αποδέχεται αναγκαστικά για να εγγραφεί τους όρους που θέτεις, και άρα αν τους διατυπώσεις σωστά έτσι ώστε σε κάθε περίπτωση να είσαι καλυμμένος, δεν έχεις καμία υποχρέωση, πχ να αφαιρέσεις το blog της Μιραντολίνας από την βάση, αν αυτό δεν αναγράφεται στους όρους χρήσης. Τίθεται όμως το ζήτημα κατά πόσο κάποιος έκανε όντως οικειοθελώς εγγραφή στο Monitor, δηλαδή ότι δεν πήγε κάποιος τρίτος στο Monitor να βάλει το blog της Μιραντολίνας ας πούμε, χωρίς η ίδια να το γνωρίζει. Γιατί στην τελευταία περίπτωση θα έρθει η Μιραντολίνα να ζητήσει να βγει το blog της, θα της πεις εσύ “μας αποδέχτηκες τους όρους”, θα σου πει αυτή “μα δεν έκανα εγώ εγγραφή το blog μου στο Monitor, κάποιος άλλος το έβαλε” και το πράγμα γαμιέται (γιατί εκεί δε ξέρω ποιος έχει δίκιο).
Οπότε τίθεται ένα θέμα ταυτοποίησης αν αυτός που κάνει την εγγραφή είναι και ο ιδιοκτήτης του blog. Η λύση πιστεύω είναι πολυ απλή (προσπάθησα να σκεφτώ αν γίνεται με email, αλλά δεν είναι προφανές το πώς): όποιος κάνει αίτηση για εγγραφή, γράφει και ένα post στο blog του το οποίο έχει “προσυμφωνημένο” ας πούμε περιεχόμενο, και σκοπό έχει να ταυτοποιήσει ότι όντως ο ιδιοκτήτης του blog επιθυμεί να εγγραφεί στην υπηρεσία. Πχ o blogger γράφει ένα post με τίτλο “Register to Monitor” και θέμα “I am me”. Από την άλλη το Monitor βλέπει ότι χθές έκανες αίτηση για εγγραφή στην υπηρεσία, περνάει σήμερα από το blog σου και βλέπει ότι ανέβασες το ανάλογο post, και έγινε η ταυτοποίηση, σχόλασε ο γάμος. Μη μου λες μετά “άλλος με έβαλε στο Monitor”, θα φας φάπα.
Κάτι που θα ήθελα να υπάρχει στο Monitor, είναι να μη μου εμφανίζονται χύμα όλα τα posts από όλα τα blogs που δημοσιεύτηκαν πρόσφατα. Για παράδειγμα, αν στο Monitor τελευταία φορά ήταν εγγεγραμένοι 1900 bloggers, και κάθε μέρα οι μισοί από αυτούς εγράφαν έστω από ένα μόνο post, τότε τι να προλάβω να κοιτάξω από 1000 posts στο Monitor, ακόμα και αν εμφανίζει μόνο 2 γραμμές από το καθένα?
Αυτό που ίσως θα ήταν πολύ χρήσιμο είναι όταν κάποιος καταχωρεί το blog του, να το κατηγοριοποιεί με 3-4 το πολύ κατηγορίες (”Computer“, “Γιάννενα“, “Transformers“, “Ζαφείρης Μελάς“). Από τη στιγμή αυτή το blog του χρήστη εμπίπτει σε αυτές τις κατηγορίες.
Όταν τώρα πάω εγώ να κάνω εγγραφή σαν reader στο Monitor, δηλώνω ότι θέλω να ενημερώνομαι μόνο για τα νέα posts των blogs που εμπίπτουν στις κατηγορίες “Αθλητικά“, “Μπεζαντάκου“, και όχι για πολιτικά και ότι άλλο κάτσει και γράψει ο καθένας. Επιλέγω λοιπόν “Αθλητικά” και “Μπεζαντάκου” (αν θέλω αργότερα προσθέτω/αφαιρώ κατηγορίες που με ενδιαφέρουν). Πάω λοιπόν μετά μια ωραία μέρα να δω τι καινούργια posts υπάρχουν, έρχεται το Monitor και βλέπει ότι με ενδιαφέρουν αυτές οι κατηγορίες (είτε με cookies, είτε το ελέγχει στη βάση του) και κάνει ένα select στη βάση του και από όλα τα καινούργια posts μου επιστρέφει μόνο όσα αφορούν “Αθλητικά” ή την “Μπεζαντάκου“. Χέστηκα ρε παιδί για τα πολιτικά ή για τα κουμπιούτερς. Εγώ θέλω να μαθαίνω μόνο νέα της Μπεζαντάκου.
Σε ένα επόμενο επίπεδο (που όμως δε ξέρω αν το υποστηρίζει το πρωτόκολλο RSS) θα μπορούσα από κάθε νέο post να παίρνω και τις κατηγορίες με τις οποίες το χαρακτήρισε ο συγγραφέας του (τα tags του post). Οπότε όταν κάποιος θέλει να ενημερώνεται για αθλητικά, το Monitor να του επιστρέφει όσα καινούργια posts έχουν tag “Αθλητικά“, και όχι όσα posts δημοσίευσαν blogs που εμπίπτουν στην κατηγορία “Αθλητικό” (κατηγοριοποίηση δηλαδή ενός post βάσει του tag του, και όχι βάσει της κατηγορίας του blog του).
Τέλος, μια άλλη ιδέα που δεν εμπίπτει στο γενικότερο θέμα “Πως θα γίνω Monitor στη θέση του Monitor” είναι να δημιουργήσουμε κάποιες “ομάδες” blogs (blog-groups) στις οποίες να μπορεί να ανήκει ο καθένας. Και τι εννοώ:
- 5 blogs που είμαστε από τα Γιάννενα κάνουμε ένα group που ονομάζεται “Giannena blog-group”
- επειδή γράφω σχετικά με τον προγραμματισμό σε Lisp, μπαίνω και στο group που ονομάζεται “Lisp blog-group”
- τέλος, επειδή είμαι φαν του Φλωρινιώτη (”Πειράζει που είμαι και μεγάλη φίρμα, πειράαααζει?”) μπαίνω και στο group “Floriniotis fans blog-group”
Έρχομαι μετά και βάζω δεξιά ή αριστερά ή πάνω ή κάτω, σε μια γωνία τέλος πάντων του blog μου ένα μικρό πλαισιάκι που δηλώνω σε ποια groups ανήκω, πχ:
Proud to be member of:
- Giannena blog-group
- Lisp blog-group
- Floriniotis fan blog-group
Κάποιος περαστικός λοιπόν έρχεται στο blog μου και διαβάζει ένα post μου για μια συναυλία του Φλωρινιώτη. “Επιτέλους”, λέει, “βρήκα έναν φανατικό θαυμαστή του Φλωρινιώτη! Υπάρχουν όμως άλλοι?” Τσουπ! πάει στο link που λέει “Floriniotis fan blog-group” και βλέπει ποια άλλα blogs ανήκουν σε αυτό το group.
Έρχεται άλλος περαστικός και βλέπει ένα post που έχω γράψει για τα Γιάννενα. “Ωραία τα Γιάννενα λέει, υπάρχει κανένα άλλο blog που να έχει post για τα Γιάννενα?” Τσουπ! πάει στο link που λέει “Giannena blog-group” και βλέπει ποια άλλα blogs ανήκουν σε αυτό το group.
Με λίγα λόγια, μπορεί να γίνει ένα άλλο άσχετο-με-το-monitor-like site, πχ bloggroups.gr όπου ο καθένας εγγράφεται στα groups που θέλει, και ο καθένας μπορεί να δει τα blogs που ανήκουν σε ένα συγκεκριμένο group. Απλό.
Επειδή μου τέλειωσε η έμπνευση, και επειδή θα μου κάνει μήνυση το WordPress για “υπερβολικά μεγάλο post που δε χωράει με τίποτα στη βάση μας-μίκρυνε το τώρα αμέσως-ποιος θα το διαβάσει τέτοιο μακρυνάρι”, σας αφήνω και πάω να βρώ το νόημα της ζωής στο βιβλίο του Daglas Adams.
Πάντως, δε μου φαίνονται και τόσο δύσκολα τα παραπάνω.
Τέλος πάντων, ότι είχα να πω το είπα και ξελάφρωσα. Καλή μας μέτα-monitor εποχή (a.m.), και συγχαρητήρια σε όποιον έκατσε και διάβασε όλο το ποστ! (αυτοί που πηδάνε γραμμές δε πιάνονται, δεν παίρνουν συγχαρητήρια).
EDIT: Δε ξέρω αν έχω προφητικές ικανότητες, αλλά χθες έγραψα το άρθρο αυτό και σήμερα το πρωί είδα τυχαία στο prezatv πως υπάρχει ήδη ένα greek feed agregator, το www.greekbloggers.com, το οποίο βλέπω να είναι πολλά υποσχόμενο, θα μου επιτρέψετε να πω ότι τουλάχιστον αισθητικά είναι κλάσης καλύτερο από το Monitor, και μάλιστα βλέπω να έχει και 2 κουμπάκια tags και categories (που προς στιγμήν δε δουλεύουν), για τα οποία κάτι έλεγα λίγο παραπάνω. Δεδομένου ότι είναι πρακτικά αδύνατο κάποιος να διάβασε το άρθρο μου χθες και να έκανε το site από χθες μέχρι σήμερα και να μπήκαν και καμιά 300 blogs σε τόσο μικρό χρονικό διάστημα, και δεδομένου ότι δεν πιστεύω στις συμπτώσεις, θα έλεγα απλά ότι έχω προφητικές ικανότητες, πολύ απλό (πρόβλεψα κάτι που είχε γίνει εδώ και καιρό, νέου είδους προφήτης).
EDIT 2: Από το blog του adamo βρήκα το επίσης πολλά υποσχόμενο agregator cull.gr. Μου άρεσαν πάρα πολύ οι δυνατότητες που δίνει, η κατηγοριοποίηση των άρθρων (τελικά δεν έχω προφητικές ικανότητες, απλά αυτά που σκεφτόμουν και ήθελα από έναν agregator, τελικά κάποιοι τα είχαν υλοποιήσει ήδη, πριν εκφράσω την επιθυμία μου…). Το μόνο κακό είναι ότι απαιτεί να έχεις το blog σου σε δικό σου server, καθώς για να χρησιμοποιείς τις δυνατότητες που σου δίνει πρέπει να ενσωματώνεις ένα μικρό κομμάτι κώδικα στο post σου, υπερβολικά κουραστικό για να γίνεται χειροκίνητα κάθε φορά που δημοσιεύεις ένα άρθρο, πανεύκολο όμως αν έχεις δυνατότητα να επεξεργαστείς τον κώδικα του blog σου, δίνοντας όμως όλες αυτές τις ωραίες δυνατότητες στο cull.gr και φυσικά στους αναγνώστες. Σίγουρα αξίζει να του ρίξετε μία ματιά (και δύο, και τρεις), και αν έχετε το blog σας σε δικό σας server να το χρησιμοποιήσετε (αν είχα, σίγουρα θα το έκανα).
Επίσης, πολύ ενδιαφέρον άρθρο πάνω στο θέμα του Monitor και γενικότερα περί “μύθων και αλήθειας” για το RSS και το agregation έχει γράψει ο adamo εδώ.
Τέλος, ο Παναγιώτης δημοσίευσε και μία δευτερολογία σχετικά με το θέμα του Monitor. Καλή σας μέρα!
EDIT 3 (13/1/2007): Τελικά τα πράματα δεν είναι και τόσο απλά! Οποιος σκοπεύει να ασχοληθεί με την ανάπτυξη ενός feed agregator καλά θα κάνει να κοιτάξει λίγο παρακάτω το σχόλιο του vrypan, καθώς αναφέρει έναν παράγοντα που μου είχε διαφύγει τελείως: την δυνατότητα καλής κλιμάκωσης του συστήματος. Με λίγα λόγια, όσο περισσότερες εγγραφές έχεις στο σύστημα σου, και όσο περισσότερους χρήστες εξυπηρετείς, τίθονται διάφορα θέματα και προβλήματα, από υπερβολική καθυστέρηση μέχρι αποτυχία του συστήματος.