Magaz, The Greek Linux Magazine
Magaz Logo

Επόμενο  Προηγούμενο  Περιεχόμενα

2. Η Αφαίρεση

2.1 Με δυο κουβέντες

Η σχεδίαση της τεχνολογίας IO Slaves είναι η *σωστή* αρθρωτή και ιεραρχική σχεδίαση που υποτίθεται ότι διδάσκεται σε κάθε μάθημα προγραμματισμού. Ο τελευταίος απόφοιτος μιας σχολής προγραμματισμού γνωρίζει πως δεν πρέπει ποτέ λειτουργίες των χαμηλών επιπέδων (Ι/Ο) να "εισβάλλουν" στα υψηλά επίπεδα (User Interface), όπως και ότι κοινές λειτουργίες θα πρέπει κατά το δυνατόν να ομαδοποιούνται και να προσφέρονται κατά ομοιόμορφο τρόπο στους χρήστες και στους προγραμματιστές. Οι IO Slaves δεν είναι παρά απλή εφαρμογή των παραπάνω ιδεών. Με αυτά υπόψη, θα μπορούσαμε να συνοψίσουμε την τεχνολογία IO Slaves στην παρακάτω παράγραφο:

Οι ΙΟ Slaves είναι ένα στρώμα αντικειμένων που παρεμβάλλονται ανάμεσα σε ένα πρόγραμμα που ζητά πληροφορίες (π.χ. Konqueror) και την πηγή αυτών των πληροφοριών. Αναλαμβάνουν να απαλλάξουν το πρόγραμμα από τις λεπτομέρειες της συνδιαλλαγής με την πηγή και της ανάκτησης των πληροφοριών, πραγματοποιώντας οι ίδιοι αυτές τις λειτουργίες. Η χρήση των IO slaves γίνεται μέσω εντολών που είναι κοινές για όλους τους IO Slaves και άρα ανεξάρτητες του είδους της πηγής.

2.2 Αφαίρεση ναι, αλλά είναι τα πάντα ίδια;

Αν το δούμε πολύ αφαιρετικά το θέμα, σχεδόν τα πάντα σε έναν υπολογιστή μπορούν να αντιμετωπισθούν είτε ως περιεχόμενο, είτε ως αρχεία. Η διαφορά είναι μεγάλη. Ένα "αρχείο" είναι ένα "πράγμα" με συγκεκριμένο όνομα. Τα περιεχόμενά του δε φαίνονται κατ' ευθείαν όταν το κοιτάμε απ' έξω. Πρέπει να το "ανοίξουμε" και τότε κάποιο πρόγραμμα θα μας παρουσιάσει το "περιεχόμενο" του αρχείου. Υπάρχουν πρωτόκολλα που είναι καλύτερο να αντιμετωπιστούν σαν πρωτόκολλα αρχείων. Το FTP για παράδειγμα, ή το NFS. Υπάρχουν όμως και πρωτόκολλα που (μολονότι εν τέλει στηρίζονται και αυτά σε κάποια αρχεία) καθορίζουν κυρίως περιεχόμενο. Για παράδειγμα το HTTP κατά κανόνα χρησιμοποιείται για μεταφορά περιεχομένου.

Οι IO Slaves κάνουν αυτή τη διάκριση. Όταν πρόκειται για περιεχόμενο αναλαμβάνουν να το εξαγάγουν σε κάποια μορφή που να μπορεί να προβληθεί από τον Konqueror. Π.χ. ο gzip IO Slave παίρνει στην είσοδο ένα συμπιεσμένο αρχείο και το αποσυμπιέζει στην έξοδο. Ενεργεί δηλαδή σαν φίλτρο. Από εκεί και πέρα είναι θέμα του Konqueror (ή οποιασδήποτε άλλης επφαρμογής χρησιμοποιεί τις υπηρεσίες του IO Slave) να προβάλλει σωστά αυτό το περιεχόμενο. Όταν πρόκειται για αρχεία, ο IO Slave απλά δίνει πληροφορίες για αυτά τα αρχεία στην εφαρμογή, η οποία πρέπει να ζητήσει μια συγκεκριμένη υπηρεσία (την get) για να πάρει τα περιεχόμενά τους. Ο FTP ΙΟ Slave π.χ., δίνει στον Konqueror μια λίστα με τα αρχεία ενός καταλόγου FTP και ο Konqueror εμφανίζει τα αντίστοιχα εικονίδια στην οθόνη.

Ας δούμε τι αντιμετωπίζεται κυρίως σαν αρχείο (ή κατάλογος):

  • τα ...αρχεία και οι κατάλογοι
  • οι τοποθεσίες FTP
  • οι κατάλογοι HTTP που δεν έχουν index.html
  • οι συμπιεσμένες αρχειοθήκες .tar.gz και .tar.bz2 (που αντιμετωπίζονται σαν κανονικοί κατάλογοι)
  • δικτυακοί κατάλογοι NFS
  • πόροι SMB
  • λογαριασμοί αλληλογραφίας POP3 και IMAP4
  • Ηχητικά CD
  • Δισκέτες

Και τι αντιμετωπίζεται κυρίως σαν περιεχόμενο:

  • Ιστοσελίδες HTML (τοπικές ή μέσω HTTP)
  • Σελίδες man και info
  • Βοήθεια του KDE (που μπορεί να είναι XML ή HTML)
  • Πληροφορίες finger
  • Συμπιεσμένα αρχεία .gz και .bz2

Οι λίστες δεν είναι εξαντλητικές, ενώ η διάκριση δεν είναι πάντοτε τόσο απόλυτα. Σε γενικές γραμμές, ο IO slave αντιμετωπίζει ένα πρωτόκολλο σαν βασισμένο σε αρχεία όταν σας δίνει στον Konqueror μια λίστα με εικονίδια, και σαν βασισμένο σε περιεχόμενο όταν σας δίνει HTML ή άλλη έξοδο.

Επόμενο  Προηγούμενο  Περιεχόμενα


Valid HTML 4.01!   Valid CSS!