Αυτό το commit περιλαμβάνεται σε:
infl00p 2022-03-23 20:14:33 +02:00
commit 8ec8e9bee2
451 αρχεία άλλαξαν με 46736 προσθήκες και 0 διαγραφές

52
content/articles/31/01_editorial.md Κανονικό αρχείο

@ -0,0 +1,52 @@
+++
title = 'Editorial'
date = '2000-06-01T00:00:00Z'
description = ''
author = 'Βαγγέλης Παπαδογιαννάκης(mailto:papas@hellug.gr)'
issue = ['Magaz 31']
issue_weight = 1
+++
----------------------------------------------------------------------------------------------------------------------------------------------------------------
*Aircondition τώρα!*
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Καλός ήρθατε σε άλλο ένα magaz. Ένα magaz που είναι βγαλμένο με πολύ ιδρώτα, κυριολεκτικά μιλώντας μια και η ζέστη είναι ανηπόφορη. Τουλάχιστον εδώ στο Ηράκλειο
της Κρήτης, το θερμόμετρο έχει χτηπήσει κόκκινα, και δυστηχώς πολλές φορές ακόμα και αυτό το air-condition αποδυκνείεται λίγο.
Αυτό το τεύχος, σας επιφυλάσει πολλά θέματα, advanced θα μπορούσαμε να τα χαρακτηρίσουμε, κάτι που η αλήθεια είναι ότι είχε λείψει από το magaz. Πριν να
προχωρήσουμε όμως σε ανάλυση των θεμάτων που φιλοξενούνται αυτό το μήνα, θα ήθελα να πω ένα μεγάλο ευχαριστώ σε όλους όσους προσφέρθηκαν να βοηθήσουν γράφοντας
άρθρα για το magaz. Η ανταπόκριση στο editorial του προηγούμενου μήνα ήταν κάτι παραπάνω από θερμή και αποδείχτικε ότι υπάρχει και όρεξη για βοήθεια αλλά και
υλικό για κάλυψη θεμάτων. Και όσοι δεν είδαν το άρθρο τους, αυτό το μήνα, ας μην ανυσηχούν, θα μπούν στον επόμενο μήνα.
Προχωράμε λοιπόν, στο επόμενο θέμα, που είναι το **install festival** που έγινε στο **Ηράκλειο της Κρήτης στις 15 και 16 Ιουνίου**. Σε γενικές γραμμές, όλα
πήγαν πολύ καλά. Προβλήματα φυσικά και υπήρξαν, αλλά ήταν σχεδόν όλα οργανοτικά, πράγμα αναμενώμενο, μια και ποτέ δεν είχαμε οργανώσει κάτι αντίστοιχο. Στα
highlights θα ήθελα να αναφέρω
**τα μπλουζάκια που είχαμε τυπώσει**, το οποία έγιναν ανάρπαστα και πολλές φορές ήταν η πέτρα του σκανδάλου για το ποιός θα τα πάρει τελικά.\
**Τις ομιλίες** που έγιναν όλες και μάλιστα με μεγάλη επιτυχία, παρόλο που οι περισσότεροι δεν είχαν ξαναανέβει σε βήμα για ομιλία. Η συμμετοχή του κόσμου δεν
ήταν όση ακριβώς θα ηθέλα εγώ προσωπικά, αλλά και αυτό είναι λογικό αν αναλογιστούμε ότι ήταν περίοδος εξετάσεων, παρασκευή-σάββατο, καταμεσήμερα, και από τις
πιο ζεστές ημέρες.
Θα ήθελα να ευχαριστήσω πολύ όλα τα παιδιά που έστηναν τους υπολογιστές (πρέπει να στήθηκαν περίπου **20 μηχανάκια**). Αυτοί ήταν οι πραγματικοί ήρωες του
διημέρου, μια και κουράστηκαν πολύ περισσότερο από όλους εμάς που απλά κάναμε μια ομιλία. Έπρεπε να αντιμετωπίσουν τους νέους χρήστες, να τους εξηγήσουν πέντε -
έξι βασικά πράγματα, και αυτό όπως ξέρουμε όλοι είναι πολύ δύσκολο :)\
Σε γενικές γραμμές, περάσαμε καλά, και αυτό είναι που μετράει στο φινάλε :)
Ας δούμε όμως και τα θέματα που φιλοξενούμε αυτό το μήνα στο περιοδικό μας. Έχουμε λοιπόν ένα άρθρο για KIOSLAVES, γραμένο από τον Δημήτρη Καμενόπουλο (
<d.kamenopoulos@mail.ntua.gr>) τα οποία είναι απαραίτητα για να δουλέψει καλά το KDE. Φυσικά, δεν θα τα δείτε μπροστά σας, πιθανότατα να μην τα έχετε καν
ακούσει, αλλά κάνουν πολύ δουλειά διάφανα - αθόρυβα - αποτελεσματικά.
Window Manager of choice :) IceWm, ένας απλός, πλήρως παραμετροποιήσιμος, πανέμορφος, πανάλαφρος Window Manager. Εισαγωγικό άρθρο από τον **Αποστολάκη Νίκο** (
[Nick Apostolakis](mailto:nickapos@agriroot.aua.gr)) έναν πολύ ενεργό συντάκτη του [magaz](http://magaz.hellug.gr). Κατέβηκε και στο **InstallFestival** και μας
βοήθησε κιόλα :) Περισσότερες πληροφορίες για το Nίκο αλλά και για όλους τους αρθρογράφους του magaz (που μας έχουν στείλει πληροφορίες για τις αφεντιές τους)
στη σελίδα [info](http://magaz.hellug.gr/info.html).
Και για τους φρέσκους στο Linux και γενικότερα στα unixοειδή λειτουργικά, ένα πολύ καλό κείμενο από τον Άγγελο Οικονομόπουλο ( <lydwigvernon@yahoo.co.uk> για
την ιστορία του Unix. Πολλοί από τους παλιούς χρήστες, πάντως, θα βρούν και πράγματα που δεν τα ήξεραν για αυτό ας το διαβάσουν και αυτοί :)
Πόσοι ξέρετε το **blender**; Το blender λοιπόν είναι ένα πρόγραμμα, πολύ δυνατό στη δημιουργία τρισδιάστατων γραφικών. Μια γνωριμία - παρουσίαση, επιχηρεί ο
Καπελώνης Κώστας ( <kapelon@csd.uoc.gr>) ένα νέο μέλος στην οικογένεια των magazάτωρων, με ενεργή συμετοχή και στο **install festival** της Κρήτης.
Καλή ανάγνωση λοιπόν και για όσους φεύγουν διακοπές καλά μπάνια, ή ότι άλλο έχετε σχεδιάσει να κάνετε.

308
content/articles/31/02_KDE_IOSlaves.md Κανονικό αρχείο

@ -0,0 +1,308 @@
+++
title = 'Ολοκλήρωση στο KDE: Η τεχνολογία IO Slaves'
date = ''
description = ''
author = 'Δημήτρης Καμενόπουλος για το Magaz ( magaz.hellug.gr(http://magaz.hellug.gr) )'
issue = ['Magaz 31']
issue_weight = 2
+++
----------------------------------------------------------------------------------------------------------------------------------------------------------------
*Αυτό που εντυπωσιάζει τον προγραμματιστή και τον χρήστη της κονσόλας του Unix είναι ότι \"τα πάντα είναι αρχεία\". Οι κατάλογοι, τα φυσικά αρχεία, οι σκληροί
δίσκοι, οι συσκευές δικτύου, οι δικτυακές συνδέσεις\... Όλα είναι αρχεία και αντιμετωπίζονται μέσα από ένα πρότυπο σύνολο λειτουργιών. Η τάση αυτή για διαφάνεια
και ολοκλήρωση είναι διάχυτη στο Unix, και αποτελεί βασικό τμήμα της φιλοσοφίας του.Το KDE, που παρά το γραφικό του χαρακτήρα δε θα μπορούσε ποτέ να απαρνηθεί
τη φιλοσοφία του παλιού καλού Unix, χρησιμοποιεί ένα ανάλογο μοντέλο για να αντιμετωπίζει με ενιαίο τρόπο όλες τις δυνατές πηγές εισόδου/εξόδου πληροφοριών.
Είτε πρόκειται για τα τοπικά συστήματα αρχείων, είτε για βάσεις δεδομένων SQL. Η αντίστοιχη τεχνολογία λέγεται KDE IO Slaves, είναι βασικό μέρος του KDE 2.x και
τη χρησιμοποιείτε καθημερινά μέσω του Konqueror.*
----------------------------------------------------------------------------------------------------------------------------------------------------------------
**1. Εισαγωγή**
----------------------------------------------
**2. Η Αφαίρεση**
------------------------------------------------
- [2.1 Με δυο κουβέντες](#ss2.1)
- [2.2 Αφαίρεση ναι, αλλά είναι τα πάντα ίδια;](#ss2.2)
**3. Πώς Λειτουργούν οι KDE IO Slaves**
----------------------------------------------------------------------
**4. Πώς Χρησιμοποιούμε (οι Χρήστες) έναν IO Slave**
-----------------------------------------------------------------------------------
**5. IO Slaves σε Δράση**
--------------------------------------------------------
- [5.1 Finger με χρωματάκια και ιστορίες](#ss5.1)
- [5.2 Ο Konqueror σαν πρόγραμμα ηλ. ταχυδρομείου](#ss5.2)
- [5.3 Απ\' ευθείας IO 1: περιορισμος των mount/umount](#ss5.3)
- [5.4 Απ\' ευθείας IO 2: ο Konqueror σαν CD ripper](#ss5.4)
**6. Πού χρησιμοποιούνται οι IO Slaves**
-----------------------------------------------------------------------
**7. Επίλογος**
----------------------------------------------
### [1. Εισαγωγή]{#s1}
Ένα από τα μεγάλα ατού των Windows 98 ήταν η \"επαναστατική\" δυνατότητα του IE να ανοίγει τοπικούς καταλόγους, δικτυακές ιστοσελίδες και τόπους FTP. Μπορώ να
θυμηθώ ενθουσιώδη άρθρα σε περιοδικά του χώρου για τον \"ενιαίο τρόπο\" αντιμετώπισης τοπικών και απομακρυσμένων αρχείων. Αφήνουμε κατά μέρος το ότι η
\"επαναστατική\" ενιαία αντιμετώπιση προϋπήρχε στο Unix εδώ και αρκετά χρόνια (ποτέ μην ξεχνάτε ότι στο μηχάνημά σας \"συνδέεστε\", και ότι το /home δεν
αποκλείεται να είναι προσαρτημένο με NFS και να αντιπροσωπεύει ένα σκληρό δίσκο στην άλλη όχθη του Ατλαντικού).
Το πρόβλημα ήταν ότι η αντιμετώπιση εσωτερικά δεν ήταν καθόλου ενιαία. Εντελώς διαφορετικό πρόγραμμα (με διαφορετικά κουμπάκια και μενού) είναι το τμήμα του
Explorer που λειτουργεί ως Web Browser, εντελώς διαφορετικό το τμήμα FTP browser και εντελώς διαφορετικό το τμήμα File Manager. Το γεγονός ότι ο Explorer
παθαίνει \"μεταμόρφωση\" εσωτερικά για να αντιμετωπισει διαφορετική είσοδο κρύβεται από το χρήστη και από τον προγραμματιστή, και αυτό είναι καλό. Ωστόσο το να
επιτρέπεις σε λειτουργίες εισόδου/εξόδου να φτάνουν μέχρι το επίπεδο του User Interface δεν είναι κατά τη γνώμη μου καλή σχεδίαση. Ο Explorer, ή καλύτερα το
αντικείμενο \"Explorer\" είναι τρία (ή και περισσότερα) μονολιθικά προγράμματα.
Αποτέλεσμα: παρά την υψηλής ποιότητας δουλειά των προγραμματιστών της Microsoft, ο Explorer είναι δυνατόν να κολλήσει αν τον \"στείλετε\" σε έναν κατάλογο FTP
και η σύνδεση είναι πολύ αργή ή κοπεί. Κι αυτό γιατί το \"υψηλού\" επιπέδου UI είναι στενά δεμένο με το \"χαμηλού\" επιπέδου σύστημα Ι/Ο.
Ας έρθουμε όμως στα δικά μας, και συγκεκριμένα στο KDE. Ο Konqueror, όπως θα ξέρετε όλοι είναι File Manager και ταυτόχρονα Web και FTP browser. Θα δούμε σε αυτό
το άρθρο ότι ο Konqueror μπορεί να δει επίσης αλληλογραφία POP3, ηχητικά CD, αρχειοθήκες .tar.gz και άλλα πολλά. Όλα (εκτός από τις Ιστοσελίδες)
αντιμετωπίζονται με ενιαίο τρόπο και μάλιστα με εξαιρετική απλότητα. Υπεύθυνο για όλα αυτά είναι ένα στρώμα βοηθητικών προγραμμάτων, που εσωτερικά είναι γνωστά
με την ονομασία **KDE IO Slaves**.
### [2. Η Αφαίρεση]{#s2}
### [2.1 Με δυο κουβέντες]{#ss2.1}
Η σχεδίαση της τεχνολογίας IO Slaves είναι η \*σωστή\* αρθρωτή και ιεραρχική σχεδίαση που υποτίθεται ότι διδάσκεται σε κάθε μάθημα προγραμματισμού. Ο τελευταίος
απόφοιτος μιας σχολής προγραμματισμού γνωρίζει πως δεν πρέπει ποτέ λειτουργίες των χαμηλών επιπέδων (Ι/Ο) να \"εισβάλλουν\" στα υψηλά επίπεδα (User Interface),
όπως και ότι κοινές λειτουργίες θα πρέπει κατά το δυνατόν να ομαδοποιούνται και να προσφέρονται κατά ομοιόμορφο τρόπο στους χρήστες και στους προγραμματιστές.
Οι IO Slaves δεν είναι παρά απλή εφαρμογή των παραπάνω ιδεών. Με αυτά υπόψη, θα μπορούσαμε να συνοψίσουμε την τεχνολογία IO Slaves στην παρακάτω παράγραφο:
**Οι ΙΟ Slaves είναι ένα στρώμα αντικειμένων που παρεμβάλλονται ανάμεσα σε ένα πρόγραμμα που ζητά πληροφορίες (π.χ. Konqueror) και την πηγή αυτών των
πληροφοριών. Αναλαμβάνουν να απαλλάξουν το πρόγραμμα από τις λεπτομέρειες της συνδιαλλαγής με την πηγή και της ανάκτησης των πληροφοριών, πραγματοποιώντας οι
ίδιοι αυτές τις λειτουργίες. Η χρήση των IO slaves γίνεται μέσω εντολών που είναι κοινές για όλους τους IO Slaves και άρα ανεξάρτητες του είδους της πηγής.**
### [2.2 Αφαίρεση ναι, αλλά είναι τα πάντα ίδια;]{#ss2.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 ή άλλη έξοδο.
### [3. Πώς Λειτουργούν οι KDE IO Slaves]{#s3}
Ένας IO Slave είναι (σχεδιαστικά) ένα αντικείμενο που καταλαβαίνει ένα πρωτόκολλο και παρέχει λειτουργίες του πρωτοκόλλου για χρήση από προγράμματα ανωτέρου
επιπέδου. Συνήθως όμως τα περισσότερα προγράμματα χρησιμοποιούν μόνο μερικές στάνταρ λειτουργίες για την επικοινωνία με όλους τους IO Slaves, ενώ μόνο ειδικά
γραμμένα για κάποιον IO Slave προγράμματα κάνουν πλήρη χρήση όλων των λειτουργιών του.
Επειδή αυτό ακούγεται λίγο περίπλοκο, θα προσπαθήσω να το εξηγήσω με ένα παράδειγμα: τον τετριμμένο IO Slave \"ftp\" ο οποίος χρησιμοποιείται από τον Konqueror
για τις λειτουργίες διαχείρισης τόπων FTP. Ο \"ftp\" παρέχει τις εξής λειτουργίες:
- **get**, που ανακτά ένα απομακρυσμένο FTP αρχείο και το \"σερβίρει\" π.χ. τοπικά στο KWrite για άνοιγμα.
- **stat**, που δίνει πληροφορίες για ένα απομακρυσμένο FTP αρχείο (π.χ. ημερομηνία δημιουργίας, μέγεθος κλπ.)
- **listdir**, που παράγει για έναν απομακρυσμένο FTP κατάλογο μια λίστα με τα αρχεία του, επιτρέποντας π.χ. στον Konqueror να σας δείξει αυτά τα ωραία
εικονίδια που σε τίποτα δεν ξεχωρίζουν από τα τοπικά αρχεία.
Οι περίσσότεροι IO Slaves παρέχουν μία τουλάχιστον από αυτές τις τρεις λειτουργίες. Οι Slaves περιεχομένου υποστηρίζουν βασικά την **get**, που στην περίπτωσή
τους \"φιλτράρει\" την είσοδό τους. Επίσης οι Slaves περιεχομένου υποστηρίζουν τη λειτουργία **mimetype** που καθορίζει το είδος της εξόδου τους. Οι
περισσότεροι έχουν έξοδο τύπου **text/html**, δηλαδή ιστοσελίδα, ώστε να μπορεί να απεικονιστεί στον Konqueror. Τέλος, μερικοί IO slaves (βασικά ο file και
μελλοντικά οι FTP και SMB) έχουν και λειτουργίες εγγραφής.
Φυσικά άλλoi ΙΟ Slaves έχουν και άλλες υπηρεσίες, αλλά οι \"στάνταρ\" είναι αυτές οι τέσσερις. Αν το καλοσκεφτείτε, δεν κάνετε και άλλα πράγματα με οποιονδήποτε
πόρο του Η/Υ σας. Είτε βλέπετε πληροφορίες για αυτόν, είτε τον ανοίγετε, είτε τον τροποποιείτε.
### [4. Πώς Χρησιμοποιούμε (οι Χρήστες) έναν IO Slave]{#s4}
Τουλάχιστον τρεις IO Slaves τους χρησιμοποιείτε κατά κόρον: είναι οι file, HTTP και ftp με προφανείς λειτουργίες. Για να χρησιμοποιήσουμε γενικά έναν
οποινδήποτε πόρο μέσω IO Slave, η σύνταξη είναι
----------------------------------------------------------------------------------------------------------------------------------------------------------------
(όνομα IO Slave): ('/' ή '//') (όνομα πόρου ή URL)
----------------------------------------------------------------------------------------------------------------------------------------------------------------
δηλαδή
----------------------------------------------------------------------------------------------------------------------------------------------------------------
ftp://ftp.ntua.gr/pub/linux
----------------------------------------------------------------------------------------------------------------------------------------------------------------
ή
----------------------------------------------------------------------------------------------------------------------------------------------------------------
http://localhost:631/admin
----------------------------------------------------------------------------------------------------------------------------------------------------------------
ή
----------------------------------------------------------------------------------------------------------------------------------------------------------------
floppy:/
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Μέχρι στιγμής το μόνο πρόγραμμα που υποστηρίζει πλήρως αυτή τη σύνταξη είναι ο Konqueror. Μπορείτε να βάλετε στη μπάρα διεύθυνσης τη \"διεύθυνση\" οποιουδήποτε
από τους υπάρχοντες IO Slaves και είναι σίγουρο ότι θα επικοινωνήσει μια χαρά, και θα βρει και κάτι χρήσιμο να κάνει.
Από την άλλη, οποιοσδήποτε προγραμματιστής μιας εφαρμογής KDE μπορεί να χρησιμοποιήσει αυτή τη σύνταξη στα προγράμματά του για να εξυπηρετηθεί από έναν IO
Slave. Οι \"γενικευμένες\" διευθύνσεις, που είναι σαν URLs αλλά αντί για **http://**, **ftp://** ή **file://** ή άλλα στάνταρ πρωτόκολλα έχουν και τα
\"ψευδοπρωτόκολλα\" που προφέρει κάποιος IO Slave (π.χ. **info://**) περιγράφονται από την κλάση KURL.
Εκτός από τετριμμένες λειτουργίες (π.χ. έξοδος στο **standard error**) τα προγράμματα KDE **πρέπει** να χρησιμοποιούν KURLs και όχι απλά ονόματα αρχείων ή απλά
URL για είσοδο/έξοδο, οπότε καταλαβαίνετε πως η μέρα που το KEdit π.χ. θα επεξεργάζεται \"απ\' ευθείας\" αρχεία σε απομακρυσμένα FTP Sites στην άλλη άκρη της
γης ίσως να μην είναι και τόσο μακριά (αν και για την ώρα απέχουμε αρκετά από κάτι τέτοιο, δείτε και παρακάτω).
### [5. IO Slaves σε Δράση]{#s5}
### [5.1 Finger με χρωματάκια και ιστορίες]{#ss5.1}
Πολλοί θα ξέρετε την εντολή finger. Αυτή καλείται ως \'finger username\@hostname\' και εμφανίζει πληροφορίες για το χρήστη username του μηχανήματος hostname. Η
χρήση του IO Slave είναι απλή:
Στη μπάρα διεύθυνσης του Konqueror δώστε π.χ.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
finger://root@localhost
----------------------------------------------------------------------------------------------------------------------------------------------------------------
και θα πάρετε πληροφορίες για το χρήστη root.
### [5.2 Ο Konqueror σαν πρόγραμμα ηλ. ταχυδρομείου]{#ss5.2}
Συνδεδεθείτε στο Internet, και δώστε στη μπάρα διεύθυνσης
----------------------------------------------------------------------------------------------------------------------------------------------------------------
pop3://διεύθυνση.του.mail.server.σας
----------------------------------------------------------------------------------------------------------------------------------------------------------------
π.χ.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
pop3://mail.ntua.gr
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Πατήστε Enter. Αν όλα πάνε καλά, θα σας ζητηθεί username και password και μετά από λίγο ο Konqueror θα εμφανίσει τα μηνύματα που περιμένουν να τα παραλάβετε,
σαν μια λίστα εικονιδίων.
Βέβαια τα πράγματα δεν είναι πολύ βολικά, αφού αν ανοίξετε ένα από αυτά τα \"αρχεία\" θα πάρετε το αντίστοιχο μήνυμα σαν \"raw data\", ενώ ένα πρόγραμμα όπως το
KMail αποκωδικοποιεί αυτά τα raw data και σας εμφανίζει ελληνικά, HTML, URL και τα λοιπά. Από την άλλη, μπορείτε εύκολα να αντιγράψετε αυτά τα ακατέργαστα
μηνύματα στο δίσκο σας με ένα Select All και μετά με drag \'n\' drop, ενώ π.χ. με το KMail θα πρέπει να τα αποθηκεύσετε ένα ένα ή όλα μαζί σε ένα μεγάλο αρχείο.
### [5.3 Απ\' ευθείας IO 1: περιορισμος των mount/umount]{#ss5.3}
Ένα πράγμα που είναι λίγο βαρετό, είναι τα mount/umount που πρέπει να γίνονται ακόμα και για απλή προβολή της δισκέτας. Υπό την προϋπόθεση ότι έχετε δικαιώματα
ανάγνωσης απ\' ευθείας από το /dev/fd0 ή όποια άλλη συσκευή αντιστοιχεί στο floppy disk drive του συστήματός σας, δίνοντας
----------------------------------------------------------------------------------------------------------------------------------------------------------------
floppy:/
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Θα δείτε αμέσως τα περιεχόμενα της δισκέτας σας, χωρίς να χρειαστεί να κάνετε mount.
### [5.4 Απ\' ευθείας IO 2: ο Konqueror σαν CD ripper]{#ss5.4}
Ναι, ο τίτλος είναι σωστός. Πρόκειται για μια εντυπωσιακή εφαρμογή της τεχνολογίας IO Slaves, που κακώς δε διαφημίζεται. Υπάρχουν κάποια προαπαιτούμενα και
πάλι.
- Να μπορείτε να διαβάσετε απ\' ευθείας από το /dev/hdc ή όποια άλλη συσκευή αντιστοιχεί στο CD ROM σας. Συνήθως μόνο ο root έχει τέτοια άδεια.
- Να είστε συνδεδεμένοι στο Internet.
- Το πακέτο kdebase σας να έχει μεταγλωτιστεί με υποστήριξη cdparanoia (οπωσδήποτε) και Ogg Vorbis ή MP3 (όχι υποχρεωτικά).
Η όλη διαδικασία είναι αρκετά πολύπλοκη και κατά πάσα πιθανότητα θα αποτελέσει αντικείμενο ξεχωριστού άρθρου.
Αν όμως οι παραπάνω προϋποθέσεις πληρούνται, βάλτε στο CD ROM σας ένα ηχητικό CD και δώστε στη μπάρα διεύθυνσης του Konqueror
----------------------------------------------------------------------------------------------------------------------------------------------------------------
audiocd:/
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Θα δείτε (μετά από λίγο) το εξής εκπληκτικό: Ο Konqueror γεμίζει με εικονίδια, που αντιστοιχούν στα tracks του CD (track01, track02\...), και εμφανίζει και
μερικούς καταλόγους, με ονόματα όπως \"WAV\", \"Ogg Vorbis\" και \"MP3\". Αυτοί οι κατάλογοι, \"περιέχουν\" τις ripped και encoded εκδόσεις των κομματιών του
CD. Φυσικά δεν έχει γίνει ακόμα κανένα ripping. Αλλά ο audiocd ΙΟ Slave είναι έτοιμος να σας σερβίρει ότι του ζητήσετε. Αν έχετε \"σφαιράτο\" μηχάνημα, ανοίξτε
ένα από τα MP3 κομμάτια. Θα έχετε τη -σπανιότατη- εμπειρία να ακούτε ένα MP3 που ripάρεται και κωδικοποιείται σε πραγματικό χρόνο. Πιο ρεαλιστική εφαρμογή,
είναι να \"τσιμπήσετε\" το MP3 και να το \"πετάξετε\" σε κάποιον τοπικό κατάλογο. Ο audio slave αρχίζει τότε να κάνει ripping και να γράφει το mp3 στο δίσκο.
Αντίστοιχα γίνεται η εξαγωγή σε μορφή Ogg Vorbis, σε WAV ή και σε RAW.
To πλέον εντυπωσιακό, είναι ότι αν το CD σας υπάρχει στη CDDB (όπως το \"Dark Side of the Moon\" των Pink Floyd, τότε αντί για track0, track02 και λοιπά θα
δείτε τους τίτλους των τραγουδιών (π.χ. \"Pink Floyd - The Dark Side of The Moon - Time.mp3\", ). Γι\' αυτό και απαιτείται η σύνδεση με Ιντερνετ. Ο IO Slave
προσπαθεί πάντοτε να χρησιμοποιήσει τη CDDB. Μάλιστα (και εδώ έχουμε μια ατέλεια), αν δεν είστε συνδεδεμένοι, ο IO Slave κλείνει χωρίς να σας ενημερώσει, ενώ θα
μπορούσε να συνεχίζει και να ονομάζει τα κομμάτια track01, track02 κλπ.
### [6. Πού χρησιμοποιούνται οι IO Slaves]{#s6}
Κανονικά: παντού όπου υπάρχει Ι/Ο στο KDE, είτε ο χρήστης το καταλαβαίνει, είτε όχι. Το KMail χρησιμοποιεί τους pop3 και imap4 IO Slaves για να ανακτήσει την
αλληλογραφία σας, ο Konqueror (κυρίως) τους http, ftp, file,help, man, info και tar για τις καθημερινές του λειτουργίες, ενώ πολλές εφαρμογές χρησιμοποιούν τους
nfs και smb για να προσφέρουν λειτουργίες \"Network Neighboorhoud\".
Πρέπει να τονιστεί ότι **ΟΛΟΙ ανεξαιρέτως** οι IO Slaves μπορούν να χρησιμοποιηθούν απ\' αυθείας από τον Konqueror, επιτρέποντας ενδιαφέρουσες εφαρμογές, όπως
δημιουργία σελιδοδείκτη για μια ιστοσελίδα που βρίσκεται συμπιεσμένη σε ένα αρχείο .tar.gz και drag \'n\' drop από ηχητικά CD\'s σε τοπικούς καταλόγους. Έχετε
πάντοτε υπόψη σας όμως ότι όλες οι λειτουργίες ενός IO slave πιθανόν να μην είναι προσπελάσιμες έτσι απλά, ή να απαιτούν άδειες που έχει μόνον ο root.
Μια παράλειψη των IO slaves είναι ότι δεν είναι και τόσο \"O\" όσο είναι \"Ι\". Δηλαδή δεν έχουν ακόμα λειτουργίες εγγραφής στον πόρο που χειρίζονται (με
κάποιες εξαιρέσεις). Αυτό όμως είναι και λογικό. Ποιος θέλει να τροποποιήσει μια man page ή ένα audio cd; Πάντως αυτή η έλλειψη είναι και ο λόγος που το KEdit
δε μπορεί ακόμα να επεξεργαστεί απ\' ευθείας ένα αρχείο σε κάποιον FTP server :-o.
Πληροφορίες για τους διαθέσιμους IO Slaves μπορείτε να πάρετε (στο τρέχον CVS του KDE) στον Πίνακα Ελέγχου, στην ενότητα **Δίκτυο** - υποενότητα **Πρωτόκολλα**.
Α, ναι :-) Το \"user-friendly\" όνομα των IO Slaves είναι \"KDE Networking Protocols\", κάτι που δεν είναι βέβαια απόλυτα σωστό, αλλά οι περισσότεροι αποφάσισαν
ότι λέει περισσότερα σε έναν μη προγραμματιστή από το \"IO slaves\". Εσωτερικά βέβαια η τεχνολογία λέγεται πάντα \"ΙΟ Slaves\".
### [7. Επίλογος]{#s7}
Να \'μαστε λοιπόν. Ο δικός μας Web Browser φτιάχνει και MP3, και μάλιστα με απλό drag \'n\' drop. Αυτό είναι ένα δίδαγμα για όσους, ερχόμενοι από τον κόσμο των
Windows και του Macintosh περιμένουν να τα βρουν όλα ολόιδια. Ποτέ μην περιφρονείτε τον τρόπο που τα πράγματα γίνονται στο linux, γιατί μπορεί να είναι και
καλύτερος. Κανείς δεν έχει ιδιαίτερα μεγάλη όρεξη να φτιάξει αντίγραφα των Windows. Θα ήταν μάλλον χαζό, αφού υπάρχει το πρωτότυπο.
Η ομάδα KDE πήρε απλά τη λόγική της ενιαίας αντιμετώπισης των πόρων που είχε ενσωματωμένη πάντοτε το Unix, και την έφτασε δέκα χρόνια μπροστά από τις εμπορικές
\"ευκολίες\". Για \"αντίγραφο των Windows κατασκευασμένο από δεκαπεντάχρονο χακερά\" όπως είχε αποκαλέσει κάποιος ..απλός χρήστης, νομίζω ότι το KDE δεν τα πήγε
και άσχημα.

100
content/articles/31/03_icewm.md Κανονικό αρχείο

@ -0,0 +1,100 @@
+++
title = 'Μια παρουσίαση του IceWM'
date = '2001-06-01T00:00:00Z'
description = ''
author = 'Nick Apostolakis(mailto:nickapos@agriroot.aua.gr)'
issue = ['Magaz 31']
issue_weight = 3
+++
----------------------------------------------------------------------------------------------------------------------------------------------------------------
*IceWm, a lightweight windowmanager*
----------------------------------------------------------------------------------------------------------------------------------------------------------------
**1. Γενικά**
-------------------------------------
- [1.1 DISCLAIMER](#ss1.1)
- [1.2 Τι είναι ο IceWM](#ss1.2)
- [1.3 Χαρακτηριστικά του IceWM](#ss1.3)
**2. Compilation και αρχικές ρυθμίσεις του IceWM**
--------------------------------------------------------------------------
- [2.1 Compilation](#ss2.1)
- [2.2 Starting IceWM](#ss2.2)
### [1. Γενικά]{#s1}
### [1.1 DISCLAIMER]{#ss1.1}
Δεν φέρω καμία ευθύνη εάν η εφαρμογή των παρακάτω προκαλέσει οποιουδήποτε είδους ζημία στο μηχάνημα σας ή στα δεδομένα σας.
### [1.2 Τι είναι ο IceWM]{#ss1.2}
Ο **IceWM** είναι ένας Window Manager σχεδιασμένος έτσι ώστε να είναι μικρός, γρήγορος και να έχει οικεία εμφάνιση. Αρχικά σχεδιάστηκε ώστε να μοιάζει με το
Motif το OS/2, τα Windows 95 αν και αφού υποστηρίζει themes η εμφάνιση του μπορεί να αλλάζει. Όπως τα παραπάνω συστήματα ο **IceWM** έχει taskbar και το
αντίστοιχο του Start menu των Windows 95 όπως φαίνεται και στο Screenshot.
Ο **IceWM** δεν έχει σχεδιαστεί ώστε να είναι πάρα πολύ παραμετροποιήσιμος όπως ο fvwm. Τα αρχεία μέσα απο τα οποία γίνεται η παραμετροποίηση του **IceWM**
είναι αρχεία κειμένου με παρα πολύ απλή σύνταξη το οποία μπορούμε να τα αλλάξουμε εντελώς χειροκίνητα με τον αγαπημένο μας editor ή να χρησιμοποιήσουμε ένα απο
τα γραφικά εργαλεία όπως είναι το iceMC.
### [1.3 Χαρακτηριστικά του IceWM]{#ss1.3}
Ο **IceWM** αν και δεν είναι τόσο παραμετροποιήσιμος όσο ο fvwm παραμετροποιείται σε σχετικά μεγάλο βαθμό με μεγάλη ευκολία. Επίσης αν και δεν έχει
χαρακτηριστικά των μεγάλων window managment systems (**KDE, Gnome**) όπως ήχους ανα event, μεγάλο integration μεταξύ των εφαρμογών του κτλ, δεν έχει και τα
σοβαρά τους μειονεκτήματα όπως μεγάλες απαιτήσεις σε μνήμη και χώρο, δυσκολία στο compilation απο source λόγω πολλών προαπαιτούμενων βιβλιοθηκών κα.
Η υποστήριξη που έχει για themes, multiple workspaces, έλεγχο των πάντων (σχεδόν) απο το ποντίκι αλλά και απο το πληκτρολόγιο με τους κατάλληλους συνδυασμούς
πλήκτρων και η σταθερότητα του τον κάνουν ιδανική λύση για συστήματα με λίγους ή πολλούς πόρους και για όποιους τους ενδιαφέρει περισσότερο η παραγωγικότητα,
απο τον αν το πέρασμα απο την μια στην άλλη εφαρμογή συνοδέυεται και απο τον κατάλληλο ήχο ή αν ο terminal emulator που χρησιμοποιούν είναι διάφανος. Βέβαια εδώ
πρέπει να προσθέσω ότι ο **IceWM** ανήκει στους **GNOME compliant window managers** οπότε αν κάποιος έχει και GNOME μπορεί να έχει ένα συνδυασμό των
χαρακτηριστικών των δύο συστημάτων.
### [2. Compilation και αρχικές ρυθμίσεις του IceWM]{#s2}
### [2.1 Compilation]{#ss2.1}
Για να κάνουμε compile τον **IceWM** χρειαζόμαστε κάποιες βιβλιοθήκες γραφικών οι οποίες έχουν χρησιμοποιηθεί για την συγγραφή του. Αυτές οι βιβλιοθήκες είναι η
`gtk/glib` και `libXpm ή ImLib`. Ο **IceWM** είναι γραμμένος σε C++ οπότε θα χρειαστούμε τον `g++` και το `make` της `GNU`. Η
διαδικασία του compilation είναι η ίδια με όσα προγράμματα χρησιμοποιούν το `automake` πακέτο της `GNU` δηλαδή τρέχουμε πρώτα το `configure script` το οποίο
προσπαθεί να ανιχνεύσει τι σύστημα έχουμε και να φτιάξει τα Makefiles. Αφού δημιουργηθούν τα Makefiles τρέχουμε make και make install για να δημιουργηθεί και να
εγκατασταθεί ο **IceWM** στο σύστημα μας (το τελευταίο πρέπει να το τρέξουμε σαν **root**).
### [2.2 Starting IceWM]{#ss2.2}
Η επίσημη τεκμηρίωση υποστηρίζει ότι για να ξεκινήσουμε τον **IceWM** θα πρέπει να χρησιμοποιήσουμε το αρχείο `.Xclients` και εκεί μέσα να τοποθετήσουμε τις
κατάλληλες ρυθμίσεις ώστε να ξεκινάει ο **IceWM**. Επίσης δίνει και ένα δείγμα του αρχείου αυτού το οποίο παραθέτω παρακάτω:
----------------------------------------------------------------------------------------------------------------------------------------------------------------
*# run profile to set $PATH and other env vars correctly
*$HOME/.bash_profile
* # setup background
*xsetroot -solid '#056'
*# setup mouse acceleration
*xset m 7 2
*# run initial programs
*xterm&
*# start icewm, and run xterm if it crashes (just to be safe)
*exec icewm || exec xterm -fg red
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Έδω το αρχείο αυτό θέτει κάποιες μεταβλητές περιβάλλοντος και ξεκινάει κάποια προγράμματα αφού ξεκινήσει ο **IceWM** ή ξεκινάει ένα xterm εάν κάτι δεν πάει
καλά. Αφού όλα πάνε καλά μπορούμε να ξεκινήσουμε τον **IceWM** και να αρχίσουμε να τον ρυθμίζουμε σύμφωνα με τις προτιμήσεις μας.

430
content/articles/31/04_unixevo.md Κανονικό αρχείο

@ -0,0 +1,430 @@
+++
title = 'Εξέλιξη των συστημάτων Unix'
date = '2001-06-01T00:00:00Z'
description = ''
author = 'Οικονομόπουλος Άγγελος(mailto:lydwigvernon@yahoo.co.uk) γιά το magaz(http://magaz.hellug.gr)'
issue = ['Magaz 31']
issue_weight = 4
+++
----------------------------------------------------------------------------------------------------------------------------------------------------------------
*Μαθαίνοντας την ιστορία, αποφέυγουμε να ξανακάνουμε τα ίδια λάθη. Και πόσα λάθη μπορεί πλέον να βρούμε σε κάτι το οποίο εξελλίσεται συνεχώς από το 1969;
Διαβάζοντας αυτό το άρθρο, ο κάθε ένας πρέπει όταν εργάζεται στο ελεύθερο Unix του να νιώθει την οικονομία και την συνέπεια ενός κατασκευάσματος που εδώ και
τριάντα και πλέον χρόνια δοκιμάζεται, χρησιμοποιείται και κατά περίσταση ξαναγράφεται από πανεπιστήμια, εταιρίες λογισμικού, βιομηχανίες, κράτη, τον αμερικάνικο
στρατό, αλλά κυρίως, από παθιασμένους hackers, που το βελτιώνουν, πέρα από την όποια αμοιβή μπορεί να λαμβάνουν, πρώτα από όλα για τον εαυτό τους. Δεν μπορεί
λοιπόν να γεννά απορία η συνοχή και η στιβαρότητα των ελεύθερων Unix, αφού αυτά ανήκουν στην οικογένεια ενός συστήματος πού όπως χαρακτηριστικά έχει αναφερθεί
έχει σε τέτοιο βαθμό διαποτίσει την κοινότητα των προγραμματιστών, ώστε μπορεί οποιαδήποτε στιγμή να ξαναγραφεί από το μηδέν.*
----------------------------------------------------------------------------------------------------------------------------------------------------------------
**1. Unix (R)evolution**
--------------------------------------------------
- [1.1 Η γέννηση του Unix](#ss1.1)
- [1.2 Το Unix όπως το γνωρίζουμε σήμερα: SVR1](#ss1.2)
- [1.3 Berkeley Software Distribution](#ss1.3)
**2. Unix Variants**
----------------------------------------------
- [2.1 XENIX](#ss2.1)
- [2.2 Unix System V](#ss2.2)
- [2.3 SunOS/Solaris](#ss2.3)
- [2.4 HP-UX](#ss2.4)
- [2.5 AIX](#ss2.5)
- [2.6 NeXTSTEP](#ss2.6)
- [2.7 IRIX](#ss2.7)
- [2.8 A/UX](#ss2.8)
- [2.9 OSF/1](#ss2.9)
- [2.10 Minix](#ss2.10)
- [2.11 BSDi](#ss2.11)
- [2.12 UnixWare](#ss2.12)
- [2.13 tru64 Unix](#ss2.13)
- [2.14 Mac OS X](#ss2.14)
**3. Open Source**
--------------------------------------------
- [3.1 GNU](#ss3.1)
- [3.2 GNU/Linux](#ss3.2)
- [3.3 FreeBSD](#ss3.3)
- [3.4 NetBSD](#ss3.4)
- [3.5 OpenBSD](#ss3.5)
**4. Standardization**
------------------------------------------------
- [4.1 SVID](#ss4.1)
- [4.2 POSIX](#ss4.2)
- [4.3 XPG3/4](#ss4.3)
- [4.4 Single UNIX Specification](#ss4.4)
- [4.5 Single UNIX Specification 2](#ss4.5)
### [1. Unix (R)evolution]{#s1}
Η εποχή αυτή είναι η εποχή των ερευνητικών ομάδων και των πανεπιστημίων, της ατομικής συνεισφοράς και τρέλας, αλλά κυρίως της ελεύθερης διάθεσης του κώδικα,
αυτή που ο Stallman νοσταλγούσε όταν ξεκίνησε την προσπάθειά του να ελευθερώσει το λογισμικό από τις πατέντες των εταιριών. Και όταν ακόμα η AT&T κατέστησε το
Unix αμιγώς εμπορικό προϊόν, το επιστημονικό ενδιαφέρον έπαιζε για αρκετό καιρό ακόμα σημαντικότερο ρόλο στην κατεύθυνση που ακολούθησε η εξέλιξη του Unix, από
τις αποφάσεις του τμήματος marketing των εταιριών.
### [1.1 Η γέννηση του Unix]{#ss1.1}
Στα τέλη της δεκαετίας του 1960, το Τεχνολογικό Ινστιτούτο της Μασσαχουσέτης (ΜΙΤ) μαζί με τα διάσημα Bell Labs της AT&T ανέπτυσσαν ένα εξελιγμένο λειτουργικό
σύστημα για το mainframe 645 της General Electric, υπό την ονομασία Multics (Multiplexed Information and Computing System). Για το ίδιο mainframe ο Ken Thompson
(εργαζόμενος στα Bell Labs) είχε γράψει ένα παιχνίδι το οποίο προσομοίωνε το ηλιακό σύστημα με τον τίτλο Space Travel, αλλά η εκτέλεση του παιχνιδιού από τον
645 ήταν απογοητευτική. Έτσι, αφού μαζί με τον Dennis Ritchie εξασφάλισε πρόσβαση σε έναν DEC PDP-7, ξαναέγραψαν το παιχνίδι για να τρέχει στον PDP-7 και
ταυτόχρονα, αξιοποιώντας πλήθος ιδεών από το Multics, δημιούργησαν ένα νέο λειτουργικό με μία πρώιμη γραμμή εντολών και το δικό του filesystem. Το λειτουργικό
αυτό μπορούσε να χρησιμοποιηθεί από δύο χρήστες ταυτόχρονα και ο Brian Kernighan του έδωσε χιουμοριστικά το όνομα Unics (Uniplexed Computing and Information
System), που το 1970 άλλαξε στο πασίγνωστο πλέον Unix.
Με τον όρο να περιλαμβάνει utilities επεξεργασίας κειμένου, τα Bell Labs χρηματοδότησαν την μεταφορά του Unix στον ταχύτερο PDP-11/20. Το 1972 το Unix, μαζί με
το runoff (που εξελίχθηκε στο σημερινό troff), και τα δύο γραμμένα σε assembly, έτρεχε σε 10 mainframes. Το μεγαλύτερο, ίσως, άλμα στην εξέλιξη του Unix ήταν η
δημιουργία της γλώσσας προγραμματισμού C από τους Kernighan και Ritchie. Ο τελευταίος, μαζί με τον Thompson, ξαναέγραψε τον πυρήνα του Unix το 1973
χρησιμοποιώντας την C, καθιστώντας το έτσι εύκολο στη συντήρηση και μεταφορά σε άλλες πλατφόρμες hardware. Στις επόμενες εκδόσεις (editions) του συστήματος, τις
οποίες η AT&T διέθετε σε εκπαιδευτικούς οργανισμούς, εταιρίες και κρατικές υπηρεσίες για ένα ονομαστικό κόστος, η μία καινοτομία διαδεχόταν την άλλη, ώστε η
έβδομη έκδοση του Unix περιελάμβανε το Bourne shell και το προτόκολο UUCP. Βασισμένο σε αυτή την έκδοση, το Unix System III ήταν το πρώτο Unix που η AT&T
διέθεσε εμπορικά.
### []{#ref1} [1.2 Το Unix όπως το γνωρίζουμε σήμερα: SVR1]{#ss1.2}
Ταυτόχρονα με τη διάθεση του SIII, από τα τμήματα έρευνας της AT&T, γίνονταν διαθέσιμες σε πανεπιστήμια και εργαστήρια ανεπίσημες εκδόσεις που εισήγαγαν
πειραματικά χαρακτηριστικά, ώστε ήταν δύσκολο για τον κάθε χρήστη ή προγραμματιστή να γνωρίζει αν τα προγράμματα που ανέπτυσσε θα ήταν συμβατά με τις επόμενες
εκδόσεις ή αν το user interface θα παρέμενε το ίδιο. Με την έκδοση του System V, πέρα από τις όποιες τεχνολογικές καινοτομίες, η AT&T φρόντισε κυρίως να
μετριάσει το fragmentation, εγγυόμενη πως το SV θα είχε προς τα εμπρός συμβατότητα με τις επόμενες επίσημες εκδόσεις.
Η σημασία της απόφασης αυτής δεν καθίσταται άμεσα εμφανής - τουλάχιστον όχι μέχρι να σκεφτούμε πως σε οποιαδήποτε παραλλαγή του Unix και αν χρειαστεί να
εργαστούμε, θα βρούμε τουλάχιστον το παλιό-καλό Bourne shell τα ίδια ονόματα για τις βασικές εντολές και τα utilities (ls, grep, sed, more, κ.α.). Μάλιστα, σε
ένα ακραίο παράδειγμα, ένας χρήστης Unix αυτής της εποχής θα μπορούσε να εργαστεί χωρίς σημαντικό πρόβλημα στο κέλυφος και να εκτελέσει scripts που έγραψε προ
δεκαετιών.
Στην τεχνική πλευρά τώρα, η SVR1 ενσωμάτωνε πολλά από τα στοιχεία του BSD, με σημαντικότερο όλων τον editor vi, ο οποίος έμελλε να καθιερωθεί σαν ο standard
editor των Unix συστημάτων. Η έκδοση System V Release 2 εισήγαγε το file locking. Ακόμα πιό επηρεασμένη από το BSD ήταν η SVR3 που απορρόφησε πολλές από τις
καινοτομίες των 4.xBSD\'s ιδιαίτερα όσες αφορούσαν τις τεχνολογίες δικτύωσης. Η SVR4, η τελευταία μαζί με την 4.2 που εκδόθηκαν από την AT&T, ενσωμάτωνε το
προτόκολο TCP/IP και τις BSD r\* εντολές, όπως και τα NFS, RPC από το SunOS. Η SVR5 εκδόθηκε από την Santa Cruz Operation (SCO).
### [1.3 Berkeley Software Distribution]{#ss1.3}
Περνώντας από το τμήμα επιστήμης υπολογιστών του Πανεπιστημίου του Berkeley, o Thompson μετέφερε την έκτη έκδοση του Unix σε έναν PDP-11/70. Έχοντας πλέον άμεση
πρόσβαση στο λειτουργικό σύστημα, οι φοιτητές Bill Joy και Chuck Halley ξεκίνησαν την ανάπτυξη των δικών τους εφαρμογών εξελλίσοντας τον line-editor ed, στον
ex, τον πρώτο editor με visual mode που επέτρεπε στο χρήστη να βλέπει μία οθόνη με το κείμενό του (σημαντική προσθήκη για την εποχή!) και ο οποίος εξελίχθηκε
από τον Joy στον αγαπημένο σε όλους (καλά, ίσως όχι σε όλους :) μας vi. Ακόμα, ανέπτυξαν το C shell, που είναι το default για τα BSD συστήματα και το οποίο
πρόσφερε δυνατότητες αδιανόητες για τους χρήστες του Bourne shell: λίστα των τελευταίων εντολών, command line editing, συνώνυμα (aliases) και ξεχωριστό login
και rc file. Περιλαμβάνοντας στα παραπάνω και έναν pascal compiler, οι Joy και Halley συνέθεσαν μία δική τους διανομή Unix που την διέθεσαν ως Berkeley Software
Distribution. Ακολούθησε το 1978 η 2BSD, ενώ η 3BSD εισήγαγε μία ριζική καινοτομία, την εικονική(ιδεατή) μνήμη που έκανε διαθέσιμη στο λειτουργικό πολλαπλάσια
ποσότητα μνήμης από την φυσική.
Σταθμός στην εξέλιξη του Unix μπορεί να θεωρηθεί η απόφαση του DARPA (Defence Advanced Research Projects Agency) να αναθέσει στο πανεπιστήμιο του Berkeley την
ανάπτυξη του λειτουργικού του αμυντικού του δικτύου υπολογιστών. Στο πλαίσιο αυτής της συνεργασίας το DARPA χρηματοδότησε την εξέλιξη του 4BSD, η τρίτη έκδοση
του οποίου(4.2) το 1983 ενσωμάτωνε υποστήριξη για το δικτυακό πρωτόκολλο TCP/IP και τις πασίγνωστες remote commands (rsh, rlogin, rcp etc.) και τις DARPA
commands ftp και telnet που, παρά τα προβλήματα ασφάλειας, χρησιμοποιούνται ακόμα και σήμερα. Στο 4.2BSD στηρίχθηκε εν πολλοίς και το SVR4, όπως και το SunOS,
ενώ πάνω στην τελευταία έκδοση από το πανεπιστήμιο του Berkeley (4.4BSD ή 4.4BSDLite λόγω νομικών προβλημάτων) βασίστηκαν και τα open source FreeBSD, NetBSD,
OpenBSD μαζί με το εμπορικό BSD/OS (συνέχεια περισσότερο του 386BSD).
### [2. Unix Variants]{#s2}
Σε μία τέτοια λίστα είναι προφανές ότι δεν θα μπορούσαν να συμπεριληφθούν όλα τα συστήματα που, περισσότερο ή λιγότερο το καθένα, ανήκουν στην οικογένεια του
Unix. Άν όμως ελλείψεις όπως το Plan9, το Ultrix και Unicos σας ενοχλούν, είναι σίγουρο ότι δεν χρειάζεται να διαβάσετε αυτό το άρθρο, δεν θα σας προσφέρει
απολύτως τίποτα. Γιά όποιον θέλει περισσότερες λεπτομέρειες για την εξέλιξη και τις αλληλεπιδράσεις ανάμεσα στις διάφορες βαριάντες, μπορεί να κατεβάσει μία
εξευτελιστικά λεπτομερή timeline (η οποία όμως συνιστάται ανεπιφύλακτα) από το URL: <http://perso.wanadoo.fr/levenez/unix>
### [2.1 XENIX]{#ss2.1}
Το 1980 η τότε-όχι-και-τόσο-κακή εταιρεία Microsoft, παρουσίασε το Xenix, ένα λειτουργικό βασισμένο στην έβδομη έκδοση του AT&T Unix το οποίο ήταν ο πρώτος Unix
κλώνος που δεν έτρεχε σε mainframe αλλά σε μικροεπεξεργαστές. Με την άμεση ανάμειξη της SCO, το Xenix μεταφέρθηκε στον Motorolla 68000 και στους 8086, 80286 και
80386 της Intel. Προερχόμενο απ\'ευθείας από το Unix της AT&T και με επιρροές από τα διάφορα BSD, το Xenix εισήγαγε και αυτό ορισμένες καινοτομίες (κυρίως
εντολές) τις οποίες όμως ενσωμάτωσε η AT&T στην έκδοση 3.2 του Unix System V, έτσι ώστε το Xenix άρχισε να φθίνει. Το ίδιο συνέβαινε και με την ανάμειξη της
Microsoft με το όλο project ( είχαν βρει το μέλλον στους IBM compatible και στο DOS :), ώστε μετά από λίγα χρόνια να μιλάμε για το SCO Xenix.
### [2.2 Unix System V]{#ss2.2}
Γιά το Unix System V μέχρι και την τέταρτη Release, βλέπε [Το Unix όπως το γνωρίζουμε σήμερα: SVR1](04_unixevo-1.html#ref1). Μετά και αυτή την έκδοση, η
ανάπτυξη του SV συνεχίστηκε από την θυγατρική της AT&T, Unix System Laboratories (USL), η οποία παρήγαγε το SVR4.2 στοχεύοντας και στην αγορά των desktop. Ο
κώδικας του SVR4 περιήλθε στην ιδιοκτησία της Novell, όταν η απέκτησε την πλειοψηφία μετοχών στα USL. Εξέδωσε το δικό της SVR4-based Unix σαν UnixWare, μέχρι να
πουλήσει τον κώδικα της R4 και το όνομα UnixWare στην Santa Cruz Operation (SCO). Το brand-name Unix έγινε ιδιοκτησία του X/OPEN και αργότερα του OpenGroup. Η
SCO συνέχισε την ανάπτυξη του Unix System V, ιδιαίτερα στο επίπεδο του πηρύνα, προσθέτοντας χαρακτηριστικά ώστε να το καταστήσει ανταγωνιστικό στην αγορά των
\"μεγάλων\" server, όπως υποστήριξη 64GB RAM, 512 logical disks, 1TB files και άλλα τέτοια \"μπαλωματάκια\". Στον πηρύνα της SVR5 στηρίζεται και το UnixWare της
ίδιας εταιρίας.
### [2.3 SunOS/Solaris]{#ss2.3}
Η Sun ιδρύθηκε to 1982 από τον Bill Joy, ο οποίος συμμετείχε ενεργά στην ανάπτυξη της Berkeley Software Distribution. Δεν μπορεί λοιπόν να αποτελεί έκπληξη το
γεγονός ότι η πρώτη έκδοση του λειτουργικού που διέθετε η Sun για το hardware το οποίο πουλούσε βασιζόταν σε μεγάλο βαθμό στο 4.xBSD. Στα πρώτα χρόνια της
ύπαρξής του το SunOS επηρέασε καταλυτικά την κατεύθυνση ανάπτυξης του Unix με πρωτοποριακές ιδέες όπως το Network File System (NFS), το Network Information
Service (NIS ή Yellow Pages-YP), το RPC (Remote Procedure Call) και το ξεχασμένο σήμερα XDR (External Data Representation) για ανταλλαγή δεδομένων, που ήταν
τόσο επιτυχημένες ώστε ενσωματώθηκαν αμέσως στο SVR4 από την AT&T.
Στα επόμενα χρόνια, το SunOS ήταν εκείνο το οποίο ακολουθούσε την εξέλιξη των υπόλοιπων Unix, για αυτό η Sun μέσω της θυγατρικής της SunSoft έθεσε σαν στόχο την
μετάβαση σε ένα SVR4-based λειτουργικό, στόχο τον οποίο δεν πέτυχε η πρώτη έκδοση του Solaris(1.0), όντας ακόμα βαθιά εξαρτημένη από το σχετικά απαρχαιωμένο
SunOS. Τελικά με την έκδοση 2.1 του Solaris, η Sun έκανε ένα βήμα μπροστά υλοποιώντας μία ενιαία πλατφόρμα λογισμικού για το εξαιρετικό της hardware καθώς η 2.1
μπορούσε να αξιοποιήσει όλους τους Sparc καθώς και τους x86 επεξεργαστές. Το SunOS συνέχισε την πορεία του παράλληλα με το Solaris (δεν ενδιαφέρει η εμπορική
ονομασία αλλά η ταυτότητα του λειτουργικού και το αναφέρω αυτό λόγω των διπλών ονομασιών που έδινε η Sun στο Solaris) έως το 1994.
Με την έκδοση 2.5 το (συμβατό με POSIX από την 2.3 και με υποστήριξη του Motif από την 2.4) Solaris περιλαμβάνει και το CDE (Common Desktop Environment). Στην
έκδοση 2.6 ,η οποία έχει την \"σφραγίδα\" UNIX 95, υπάρχει για πρώτη φορά η (αμφιλεγόμενη σήμερα, επαναστατική τότε γλώσσα της Sun) Java. Οι εκδόσεις 7 και 8
(το δύο \"κόπηκε\" από τους \"bad marketing people\") είδαν βελτιώσεις στα utilities διαχείρισης συστήματος και στις επιδόσεις, ενώ αναμένεται στην επόμενη
έκδοση η υιοθέτηση του GNOME ως default γραφικού περιβάλλοντος (σ.σ. : εγώ πάντως στον UltraSparc που θα πάρω τα Χριστούγεννα για το subnet του πλυσταριού θα
τρέχω Linux :)
### [2.4 HP-UX]{#ss2.4}
Η Hewlett-Packard παρουσίασε την δική της εκδοχή του Unix με το λανσάρισμα του HP-UX 1.0 το 1986. Η πρώτη αυτή έκδοση βασιζόταν στο SVR2 και το HP-UX ακολούθησε
την πορεία του SV μέχρι και την R4. Αρχικά το υποστηριζόμενο hardware ήταν μόνο ο HP9000/500 (μέχρι και 7 επεξεργαστές υποστηριζόμενοι) από τις πρώιμες
SIII-based εσωτερικές εκδόσεις της HP, ενώ αργότερα χρησιμοποιήθηκαν οι 680Χ0 της Motorolla. Σημαντικό γεγονός στην εξέλιξη του λειτουργικού ήταν η εμφάνιση του
Visual User Environment, ενός έγχρωμου(μη γελάτε μερικοί, δεν ήταν καθόλου αυτονόητο to 1990), με ψευδοτρισδιάστατη αίσθηση και αισθητικά υπέροχου (οκ, εντελώς
υποκειμενικό αυτό) GUI δημιουργημένου πάνω στο Motif της HP. Βεβαία λίγα στοιχεία θα φανούν διαφορετικά σε όσους είδαν τα Windows 95 (μείον τις
επαναλαμβανόμενες ανά πεντάλεπτο, με διαφορετική δικαιολογία κάθε φορά BSODs), αφού ακούγεται ότι η Microsoft το αντέγραψε μέχρι αηδίας. Το 1992, η HP
ανακαλύπτει ότι το νόημα της ύπαρξης είναι το standardization, αφού το HP-UX 9.0 είναι POSIX.!, POSIX.2, XPG4, SVID1 και SVID2 compliant ενώ είναι και
βελτιωμένο σε όλους τους τομείς σε σχέση με τις προηγούμενες εκδόσεις. Τη λίστα μεγαλώνει το UNIX 95 certified HP-UX 10.0 που ενσωματώνει και τις real-time
extensions του POSIX standard, είναι δηλαδή συμβατό με POSIX.1b. Τελευταία έκδοση η 64μπιτη 11.0 (1997) με δεν συμμαζεύεται χαρακτηριστικά για τους hi-end
servers/workstations.
### [2.5 AIX]{#ss2.5}
Δεν ήταν παρά το 1986, όταν η Big Blue ξεκίνησε να διαθέτει το δικό της Unix κλώνο υπό την ονομασία AIX. Το AIX ήταν βασισμένο στην έκδοση 3.2 του Unix System V
και ενσωμάτωνε στοιχεία του 4.3BSD, ενώ προοριζόταν να αποτελέσει το λειτουργικό σύστημα των workstations που (μεταξύ πολλών άλλων) παρήγαγε τότε η IBM.
Μένοντας συνεχώς κάτω από την άμεση εποπτεία της \"μαμάς\", το AIX ακολούθησε από κοντά τις εξελίξεις στην οικογένεια των Unix αφού αυτή συμμετείχε στην
ανάπτυξη του CDE και στο X/Open (βλέπε Standardization). Έτσι, η εξέλιξή του μπορεί να θεωρηθεί ότι ακολουθεί τα πασίγνωστα standards POSIX, XPG\* ενώ ήταν από
τα πρώτα λειτουργικά με τη \"σφραγίδα\" UNIX 98.
### [2.6 NeXTSTEP]{#ss2.6}
Το NeXTSTEP ήταν το λειτουργικό που ανέπτυξε η NeXT Computers γιά το hardware που κατασκεύαζε τη δεκαετία του 80. Χρησιμοποιούσε τον Mach και βασιζόταν πάνω στο
4.3BSD. Πάνω στο λειτουργικό έτρεχε ένα πρωτοποριακό, τότε, γραφικό περιβάλλον που έχει βρει το δρόμο του σε πολλούς σημερινούς (νεότερους τελοσπάντων) window
managers, στον window maker, στα steps.Μία άλλη καινοτομία ήταν το σύστημα απεικόνισης Display PostScript γιά πραγματικό WYSIWYG. Ακόμα, το NeXTSTEP διατηρούσε
ικανή συμβατότητα με τα BSD και ήταν (όχι σε όλες τις εκδόσεις του) POSIX-compliant. Μετά το 1993, η NeXT σταμάτησε να παράγει hardware και επικεντρώθηκε στην
ανάπτυξη του λειτουργικού, ώστε το 1997 (ζυγίζοντας και πολλούς άλλους παράγοντες είναι η αλήθεια) η Apple το επέλεξε σαν βάση γιά την επόμενη γενιά του MacOS.
Ανέφερα ότι πίσω από όλα αυτά ήταν ο Jobs;
### [2.7 IRIX]{#ss2.7}
Για την πορεία του IRIX ήταν δυνατό να βρεθούν λίγα στοιχεία πέρα από το ότι αντικατέστησε το MIPS OS στην πλατφόρμα hardware που παρήγαγε η Silicon Graphics.
Στο μεγαλύτερο, πάντως, χρονικό διάστημα από τη στιγμή της πρώτης υλοποίησής του απευθυνόταν σε αγοραστές με extreme απαιτήσεις ενώ σήμερα είναι κατάλληλο για
χρήση σε υπερυπολογιστές, servers ή workstations για όποιον θα ήθελε 80GB/s I/O bandwidth! Ανεπίβεβαίωτες πληροφορίες το θέλουν να είναι από την εποχή του
Nintendo 64 η προτιμητέα πλατφόρμα για την ανάπτυξη παιχνιδιών για τις κονσόλες (pre-rendered σκηνές). Βεβαία αφού απευθύνεται και σε mid/hi-end servers δεν θα
μπορούσε να λείπει η συμβατότητα με πλήθος standards, όπως UNIX 95, SVID3, XPG3, POSIX.
### [2.8 A/UX]{#ss2.8}
Το A/UX (=Apple\'s UNIX) ξεκίνησε την πορεία του σαν ένα SysV-derived λειτουργικό από την Apple. Στην πορεία, το A/UX ενσωμάτωσε πολλές από τις καινοτομίες που
εισήχθησαν στην οικογένεια του Unix, τόσο από την SV όσο και από την BSD πλευρά. Πιό συγκεκριμένα, βασιζόταν στο SVR2.2, αλλά επηρεάστηκε από τα 4.2/4.3BSD και
φυσικά από την SVR4, ώστε να πετύχει SVID/POSIX.1 συμβατότητα, ενώ έτρεχε στους 680x0 της Motorola. Οι 3.x.x εκδόσεις είχαν ικανή συμβατότητα με το MacOS, αλλά
τελικά η Apple εγκατέλειψε το A/UX στα μέσα της δεκαετίας του 90.
### [2.9 OSF/1]{#ss2.9}
Η κυριαρχία της AT&T στον χώρο των λειτουργικών συστημάτων, χάρη στην επιτυχία του System V, έφερε σαν απάντηση την σύνθεση ενός consortium (Open Software
Foundation) από τις IBM, HP, DEC κ.α. με στόχο την δημιουργία ενός συστήματος το οποίο θα μπορούσε να ανταγωνιστεί το SVR4. Μοναδικός καρπός αυτής της,
καταδικασμένης όπως αποδείχθηκε αργότερα, προσπάθειας ήταν το OSF/1 (κάτω από τον Mach) το οποίο γνώρισε σχεδόν πλήρη εμπορική αποτυχία. Από την απόρριψη
διέφυγε μόνο το γραφικό περιβάλλον που περιλαμβάνονταν στο OSF/1, το πασίγνωστο ακόμα και σήμερα Motif, που πέρασε στις περισσότερες από τις μεταγενέστερες του
1990 βαριάντες. Μόνη εταιρία που βάσισε την δική της έκδοση Unix στο δημιούργημα του Open Software Foundation (το οποίο εγκαταλείφθηκε από τους δημιουργούς του
και στράφηκε στην τυποποίηση) ήταν η DEC. To DEC OSF/1 βεβαία μικρή σχέση είχε με το σύστημα του 1990, αφού η DEC το βελτίωσε δραματικά σε κάθε σχεδόν τομέα
ενσωματώνοντας παράλληλα το πλήθος των χαρακτηριστικών που έλειπαν από το OSF/1 σε σχέση με το SV και την BSD. Με άλλα λόγια, η στιγμή γέννησης του OSF/1, ήταν
και η στιγμή του θανάτου του, αφού καθυστερημένο από τεχνικής άποψης και χωρίς υποστήριξη από τα μέλη του OSF, ήταν καταδικασμένο να αποτύχει.
### [2.10 Minix]{#ss2.10}
ΟΚ, όλοι έχουν ακούσει για \"το λειτουργικό από το οποίο εμπνεύστηκε ο Linus\". Αλλά αυτό είναι μάλλον το λιγότερο που προσέφερε το Minix στον τομέα της
πληροφορικής, ή μάλλον είναι ακριβώς αυτό : η έμπνευση. Το Minix είναι τέκνο του γνωστού καθηγητή του πανεπιστημίου Vrije στο Amsterdam, Andrew S. Tannenbaum, ο
οποίος το ανέπτυξε γιά μία και μόνο χρήση, τη διδασκαλία των εσωτερικών διεργασιών ενός λειτουργικού συστήματος. Αυτός ο σκοπός δεν θα μπορούσε να επιτευχθεί με
κάποιο άλλο Unix, λόγω της περιπλοκότητας και των πνευματικών δικαιωμάτων που τα καλύπτουν. Έτσι, ο Tannenbaum προχώρησε στην συγγραφή ενός Unix κλώνου, δικού
του copyright, το οποίο διέθεσε μαζί με τον κώδικα σε όποιον θα ήθελε να το χρησιμοποιήσει γιά εκπαιδευτικούς σκοπούς. Μόλις ένα μήνα μετά την έκδοση του
λειτουργικού, το comp.os.minix είχε συγκεντρώσει 10000 συμμετέχοντες, αρκετοί από τους οποίους προσέφεραν τη δουλειά τους γιά την περεταίρω εξέλιξη του Minix.
Πραγματοποιήθηκαν ports σε άλλες αρχιτεκτονικές πλην του IBM PC, PC/AT (Atari ST, Commodore Amiga, Macintosh-εδώ υπήρχε συνύπαρξη με το λειτουργικό της Apple).
Ωστόσο, ο Tannenbaum ποτέ δεν έχασε την βασική ιδέα που τον οδήγησε στη δημιουργία του συστήματος και πεισματικά αρνιόταν την πλειοψηφία των προσφορών γιά την
βελτίωση/επέκταση του Minix, αφού όπως λέει και ο ίδιος \"ήθελα να κρατήσω το λειτουργικό αρκετά μικρό ώστε οι φοιτητές μου να μπορούν να το κατανοήσουν σε ένα
εξάμηνο\"(ελεύθερη μετάφραση). Βεβαία, ταυτόχρονα εξελίσσονται ανεξάρτητες προσπάθειες πάνω στο Minix (που πλέον διατίθεται και κάτω από την BSD άδεια), γιά
συμβατότητα με το POSIX.1 πρότυπο, με τη C89 και άλλα παρόμοια. Κώδικας του Minix χρησιμοποιήθηκε (μέχρι να αντικατασταθεί από νέο) στα (πολύ, πάρα πολύ) πρώτα
στάδια της ανάπτυξης του πηρύνα από τον Linus.
### [2.11 BSDi]{#ss2.11}
Το BSDi ή BSD/OS είναι ένα POSIX.1 (και εν μέρει POSIX.2) συμβατό Unix το οποίο βασίζεται πάνω στον 386BSD πηρύνα, δηλαδή σε ιδιόκτητο κώδικα και όχι σε κώδικα
που διατίθεται κάτω από την BSD licence. Η τελευταία είναι η άδεια που χρησιμοποιείται για όσο από τον κώδικα του πηρύνα από το πανεπιστήμιο του Berkeley έχει
μείνει στα open source FreeBSD, OpenBSD και NetBSD και η άδεια κάτω από την οποία διατίθεται ο κώδικας των τελευταίων. Δηλαδή το BSD/OS είναι ένα εμπορικό
λειτουργικό που ανήκει στην εταιρεία Wind River, η οποία δίνει ιδιαίτερη έμφαση στον προσανατολισμό του δημιουργήματός της στις τεχνολογίες δικτύωσης και το
οποίο έχει μία \"ιδιαίτερη\" σχέση με το FreeBSD(= ενσωματώνουμε και εκμεταλλευόμαστε τον κώδικά σας, η τουλάχιστον αυτό ακούγεται). Το σύστημα αυτό δεν
φαίνεται να διαδραμάτισε κάποιο ρόλο στην κατεύθυνση της ανάπτυξης της οικογένειας Unix. Όπως ανέφερε παλαιότερα και ο Linus (για το 386BSD): μα είναι όνομα
αυτό; φοβίζει τον κόσμο\...
### [2.12 UnixWare]{#ss2.12}
Το UnixWare αποτελεί το λειτουργικό της Santa Cruz Operation το οποίο απευθύνεται στους hi-end servers. Το UnixWare ξεκίνησε από τη Novell σαν ένα βασισμένο στο
SVR4 σύστημα. Η ιδιοκτησία του πέρασε μετά το 1995 στην SCO, γιά να αντικαταστήσει το SVR3.2-based SCO UNIX. Παράλληλα η SCO εξέλισε την Unix System V Release 5
(είχε αγοράσει την SVR4 \"πακέτο\" με το όνομα UnixWare) σε ένα 64-bit εξωτικών προδιαγραφών σύστημα, κατάλληλο για εφαρμογές υψηλών απαιτήσεων (τώρα τι
κατάφερε είναι άλλο θέμα). Ο πηρύνας της SVR5 χρησιμοποιήθηκε στο UnixWare 7 (1997) που περιελάμβανε Motif, CDE και ένα περιβάλλον ανάπτυξης 64 bit εφαρμογών.
Το σύστημα της SCO είναι συμβατό με POSIX.1/2, XPG4.2, έχει το mark UNIX 95 και γιά όποιους διαβάζουν το πορτοκαλί \"βιβλιαράκι\" βρίσκεται στο C2 επίπεδο
ασφάλειας, όπως δηλαδή και τα ανταγωνιστικά του Unix. Υποστηρίζει την IA32 και η SCO συνεργάζεται με την IBM στο project Merced-64.
### [2.13 tru64 Unix]{#ss2.13}
Το κυρίαρχο στις 64 bit πλατφόρμες tru64 UNIX της Compaq, έχει πίσω του μακριά ιστορία. Πρόκειται γιά την εξέλιξη του DEC OSF/1 (μετέπειτα Digital UNIX, το
οποίο η Compaq αγόρασε από την DEC γιά να το ξαναβαφτίσει στο σημερινό του όνομα). Από το DEC OSF/1, το tru64 κουβαλάει έναν 64μπιτο πηρύνα, βασισμένο πάνω στον
CMU Mach 2.5 και με επιδράσεις από τα 4.xBSD και το SV. Η Compaq το εξέλιξε ώστε να πετύχει μερική συμβατότητα με το POSIX.1b και να πάρει το χαρακτηρισμό UNIX
95. Φυσικά, τρέχει στους Alpha της DEC.
### [2.14 Mac OS X]{#ss2.14}
Η στροφή της Apple προς το Unix ήταν περισσότερο αποτέλεσμα του αδιεξόδου στην ανάπτυξη του MacOS και της επακόλουθης επιστροφής του Jobs στην εταιρία. Η
επανένταξη του Jobs στο δυναμικό της εταιρίας έγινε με την εξαγορά της NeXT και σχεδόν άμεσα, ανακοινώθηκε από την Apple η πρόθεσή της να στηρίξει την επόμενη
γενιά των λειτουργικών της σε πηρύνα Unix, αξιοποιώντας την δουλειά της NeXT. Έτσι, χρησιμοποιήθηκε το περιβάλλον Darwin γύρω από πηρύνα Mach, με τη χρήση των
οποίων η Apple λανσάρει το γραφικό περιβάλλον Aqua. Στόχος αυτής της αλλαγής πορείας είναι η αξιοποίηση της σταθερότητας του BSD, και η φιλικότητα προς τον
τελικό χρήστη. Συγχρόνως, η εταιρία διατυμπάνισε την επιλογή της για συνεργασία με την κοινότητα των υποστηρικτών του λογισμικού ανοικτού κώδικα (με
αμφιλεγόμενη, πλέον, ειλικρίνεια προθέσεων) για την περαιτέρω βελτίωση του Darwin. Ακόμα, το Mac OS X στοχεύει και στην αγορά των servers αφού ο κώδικας
δικτύωσης βασίζεται σχεδόν εξ\' ολοκλήρου στο 4.4BSD και εκδόσεις του λειτουργικού περιλαμβάνουν τον Apache.
### [3. Open Source]{#s3}
Η ενηλικίωση του GNU project, αλλά και η αποδέσμευση των εκδόσεων του BSD από τα πνευματικά δικαιώματα της USL, μετά την αγορά της τελευταίας από τη Novell,
συνετέλεσαν ώστε να δημιουργηθεί μία ικανή βάση στην οποία θα μπορούσε να στηριχθεί κάθε προγραμματιστής ο οποίος θα επιθυμούσε να συνεισφέρει στην κοινότητα
ανοικτού κώδικα. Έτσι, μετά τις αρχές της προηγούμενης δεκαετίας, παρατηρείται εκθετική αύξηση στην συγγραφή open source προγραμμάτων και η κοινότητα εισάγει
ένα νέο μοντέλο ανάπτυξης, που δίνει διέξοδο έκφρασης σε κάθε νέα ιδέα και αναγνωρίζει το δικαίωμα του κάθε ατόμου να μετέχει στην τεχνική πρόοδο.
### [3.1 GNU]{#ss3.1}
Το GNU project (GNU\'s Not Unix)ξεκίνησε το 1983, όταν ο Richard M. Stallman συνέλαβε την ιδέα της συγγραφής ενός ελεύθερου λειτουργικού συστήματος δανειζόμενου
πολλά στοιχεία από την προϋπάρχουσα οικογένεια των Unix συστημάτων, αλλά χωρίς να χρησιμοποιεί πατενταρισμένο κώδικα. Η ιδέα πίσω από το όλο εγχείρημα είναι ότι
η τεχνική γνώση είναι κτήμα της κοινωνίας και ότι ο περιορισμός της διάδοσής της είναι ενάντια στον κοινό συμφέρον. Όσοι προγραμματιστές ανταποκρίθηκαν στην
πρόσκληση του Stallman, δημιούργησαν εκ του μηδενός πλήθος προγραμμάτων ανάλογα με αυτά των Unix, ώστε το 1985 είχαν διαθέσιμο τον editor emacs, έναν debugger
σε επίπεδο πηγαίου κώδικα, ένα ανάλογο του yacc και περίπου 35 utilities. Ήδη ο gcc είχε κατορθώσει να μεταγλωτίσει τον εαυτό του και το Bash μπορούσε σχεδόν να
χρησιμοποιηθεί. Όμως ο χρόνος που απαιτήθηκε για να φτάσει το GNU να περιλαμβάνει αρκετές χιλιάδες executables, τεκμηρίωση και libraries, ήταν πολλαπλάσιος (το
1987 πραγματοποιήθηκε η πρώτη beta-release του gcc, το 1988 έγινε διαθέσιμη η Ghost Script) και τελικά το Free Software Foundation ήταν, στις αρχές της
δεκαετίας του 90, σε θέση να διαθέσει μία λίγο-πολύ ολοκληρωμένη και χρησιμοποιήσιμη userland, καθώς ο πηρύνας Hurd (βασισμένος στον μικροπηρύνα CMU Mach)
απείχε πολύ από την ολοκλήρωση. Τελικά, το υλικό του GNU μπόρεσε να αποτελέσει ένα χρησιμοποιήσιμο λειτουργικό με την προσθήκη του πηρύνα Linux, ο οποίος
διανέμεται κάτω από την ίδια άδεια με τα υπόλοιπα μέρη του GNU.
Λόγω της τεράστιας αποδοχής του GNU/Linux, η ανάπτυξη του Hurd από το FSF πέρασε σε δεύτερη μοίρα και μόνο το 2001, μπόρεσε ο πηρύνας να αποτελέσει την \"ψυχή\"
του GNU. Στο χρονικό διάστημα που μεσολάβησε, το Free Software Directory συνέχισε να μεγαλώνει, τροφοδοτούμενο από τους (δυνάμει) προγραμματιστές που το Linux
εισήγαγε στην φιλοσοφία του ελεύθερου λογισμικού. Το 1997 ξεκίνησε η ανάπτυξη του GNOME (GNU Network Object Model Environment), ενός γραφικού περιβάλλοντος
εργασίας, βασισμένο στην βιβλιοθήκη GTK+, καθώς και πολλών συνοδευτικών εφαρμογών για αυτό. Η πρώτη διανομή του GNU ήταν (είναι) η Debian GNU/Hurd το 2001.
### [3.2 GNU/Linux]{#ss3.2}
Χιλιοειπωμένη ιστορία! Ο Linus Torvalds (φοιτητής τότε στο πανεπιστήμιο του Ελσίνκι), γιά να εξασκηθεί στην C, ξεκίνησε το 1991 τη συγγραφή ενός πηρ\...
Χμμ\...Ας περιοριστούμε στο Linux.Ο πηρύνας του Linux στην πρώτη του έκδοση (0.01) είχε δυνατότητα γιά task-switching, παρείχε pseudo-tty\'s, οδηγό γιά ΑΤ
δίσκους, BSD sockets, BSD long filenames και system calls που έτειναν προς τις απαιτήσεις του POSIX στα 71KB του tarball. Δύο μήνες μετά, ο 0.11 προσέφερε
demand loading, data sharing ανάμεσα στις διεργασίες, υποστήριξη οδηγού δισκέτας και ήχο (beep!) στην κονσόλα, ενώ έτρεχε αρκετά πλέον executables από το GNU
Project. Εκτός του ότι ήταν ο πρώτος πηρύνας που μεταγλωττίστηκε κάτω από τον εαυτό του και πέρα από την πολύ σημαντική VM, το Linux 0.12 ήταν η πρώτη έκδοση
του πηρύνα κάτω από την GPL.
Μετά και την έκδοση 1.0, το Linux έχει υποστήριξη SCSI και γύρω από τον Linus έχει αρχίσει να μαζεύεται η πολυπληθής παρέα που λίγοι μπορούν να ονομάσουν (Cox,
κ.τ.λ.). Ο Cox είναι ο κύριος υπέυθυνος για τον firewalling κώδικα του πηρύνα ο οποίος βασίζεται ουσιαστικά στα BSD και διατηρήθηκε στους 1.x πηρύνες, στους
οποίους οι προγραμματιστές του πηρύνα σταδιακά πρόσθεσαν/βελτίωσαν την υποστήριξη για συνδέσεις αρχικά SLIP και στη συνέχεια PPP, πάνω στις οποίες \"κάθονταν\"
τα TCP/IP και IPX. Η έκδοση 2.0.x είδε την δεύτερη γενιά του firewall, ενώ με τους 2.2.x πηρύνες, το Linux απαγκιστρώνεται από τα BSD και αποκτά μία \"καθαρή\"
υλοποίηση packet filtering, οδεύοντας προς το σημερινό netfilter. Συγχρόνως γίνονται ports και σε άλλες, πλην της x86, αρχιτεκτονικές , ώστε το Linux 2.0 να
τρέχει σε Motorola 68K, Sparc, MIPS, Alpha και PPC, giά να φτάσουμε στον 2.4 στον οποίο το ls arch δίνει: alpha arm i386 ia64m68k mips mips64 parisc ppc s390 sh
sparc sparc64. Σε όλη την εξέλιξη του πηρύνα αυτό που δεν μένει στάσιμο είναι το πλήθος των υποστηριζόμενων συσκευών το οποίο αυξάνεται αδιάκοπα, σε βαθμό που
εδώ και λίγα χρόνια το GNU/Linux να θεωρείται εναλλακτική επιλογή και σαν desktop σύστημα.
Στο GNU/Linux ενσωματώνεται ο Samba server γιά την διευκόλυνση των μικτών δικτύων Unix/NT, ενώ ο πηρύνας αναγνωρίζει πλήθος άλλων filesystems και προτοκόλων
επικοινωνίας, ώστε να καθιστούν το Linux σαν την πρώτη επιλογή όταν το ζητούμενο είναι η interoperability. Μία ακόμα καινοτομία που εισήγαγε το Linux είναι το
μοντέλο ανάπτυξης προγραμμάτων ανοικτού κώδικα στο οποίο δεν υπάρχει κεντρική διαχείριση, μεσολαβεί μικρό χρονικό διάστημα μεταξύ των σταθερών εκδόσεων και ο
κώδικας είναι διαθέσιμος στον καθένα σε όλα τα στάδια ανάπτυξής του (βλέπε [The Cathedral and the
Bazaar](http://howto.hellug.gr/howto/pub/html/cathedral-bazaar.html)).
### [3.3 FreeBSD]{#ss3.3}
Η αρχική ομάδα του FreeBSD στηρίχθηκε πάνω στο 386BSD και έθεσε ως βασικό στόχο στην ανάπτυξη του λειτουργικού την υποστήριξη της PC πλατφόρμας καθώς και την
παροχή περισσότερων ευκολιών στον τελικό χρήστη. Αφού αξιοποίησε τα patches για το 386BSD που ο δημιουργός του αδυνατούσε να εφαρμόσει, αντλώντας στοιχεία
απευθείας από την 4.3BSD Networking Release 2 (Net/2) και \"ντύνοντάς\" το με υλικό από το GNU Project, η ομάδα διέθεσε το FreeBSD 1.0 το Δεκέμβρη του 1993.
Μετά την μετάβαση στο 4.4BSD-Lite με την έκδοση 2.0, η δημοτικότητα του FreeBSD, αυξάνεται αλματωδώς και στο λειτουργικό ενσωματώνονται αρκετές καινοτομίες. Το
1994 εισάγεται η έννοια του ports collection, την οποία υιοθετούν αργότερα και τα άλλα open source BSD\'s. Η ομάδα του FreeBSD επιτυγχάνει ταχύτατες υλοποιήσεις
των γνωστότερων δικτυακών προτοκόλων, και η userland μεγαλώνει διαρκώς σε όγκο (υπάρχουν περίπου 4000 ports), ενώ καθίσταται δυνατή η χρήση shared libraries. Το
λειτουργικό διατίθεται πλέον και γιά την πλατφόρμα των Alpha της DEC και προετοιμάζεται η μεταφορά του στο hardware της Sun.
### [3.4 NetBSD]{#ss3.4}
Η ανάπτυξη του NetBSD ξεκίνησε σαν μία προσπάθεια γιά την συνέχιση και ανανέωση του 386BSD, το οποίο, παρά τη μεγάλη του απήχηση, δεν μπορούσε να ακολουθήσει
τις εξελίξεις λόγω της αδυναμίας του δημιουργού και συντονιστή του, Bill Jolitz, να εργαστεί εντατικά σε αυτό. Έτσι μία ομάδα χρηστών του 386BSD συνεργάστηκαν
γιά να συνθέσουν τη δική τους διανομή, προσθέτοντας τη δική τους δουλειά και εφαρμόζοντας τον τεράστιο όγκο των patches που είχαν συνεισφέρει χρήστες του
συστήματος και τα οποία έμεναν αναξιοποίητα στα χέρια του Jolitz. Το NetBSD group απορρόφησε μεγάλο μέρος της δουλειάς του Computer Systems Research Group
(CSRG) του UCB καθώς και κώδικα από το GNU project. Στην έκδοση 1.0 έγινε η αναγκαστική, γιά νομικούς λόγους, αλλαγή βάσης στο 4.4BSD-Lite και τα BSD μπόρεσαν
να εκμεταλλευτούν τον διαχωρισμό του κώδικα σε machine-independant και μη που είχε επιτύχει το CSRG, γιά την εύκολη μετάβαση σε νέες πλατφόρμες (porting).
Ειδικά το NetBSD group έθεσε σαν μία από τις πρώτες προτεραιότητες τη συμβατότητα με όσο το δυνατό μεγαλύτερο αριθμό επεξεργαστών ή/και ηλεκτρονικών συσκευών,
απόφαση που καθιστούσε σαν επιτακτική, πλέον, ανάγκη ο κώδικας του συστήματος να είναι καθαρογραμμένος και σωστά οργανωμένος. Το NetBSD ήταν το πρώτο
open-source λειτουργικό που έτρεξε στον Alpha και μέσα στο 2001, οι επίσημα υποστηριζόμενες πλατφόρμες πλησιάζουν τις 40 (βεβαία αυτό το νούμερο θα έχει ήδη
μεγαλώσει :). Είναι μερικώς συμβατό με το POSIX.1 και λιγότερο, με το POSIX.2, ενώ από το δέντρο του αντλούν στοιχεία πολλές ports των άλλων BSD συστημάτων.
### [3.5 OpenBSD]{#ss3.5}
Το OpenBSD γεννήθηκε από ένα fork στην ανάπτυξη του NetBSD, όταν μία ομάδα προγραμματιστών συνέχισε την εργασία της πάνω στον κώδικα του NetBSD δίνοντας
ιδιαίτερη προσοχή στην ασφάλεια του συστήματος. Από το 1996 μέχρι και σήμερα μία ομάδα από 12 άτομα \"χτένισε\" τον κώδικα στον οποίο βασίζεται το OpenBSD
αναζητώντας bugs, σχεδιαστικά λάθη, παραλήψεις τα οποία μπορούσαν να χρησιμοποιηθούν γιά να αποδυναμωθεί η ασφάλεια του μηχανήματος. Θεμελιώδη σημασία γιά το
OpenBSD είχε η απόφαση των δημιουργών του να το αναπτύξουν στον Καναδά και να δέχονται (στον τομέα που αναφέρεται παρακάτω) συνεισφορές μόνο εκτός Ηνωμένων
Πολιτειών, παρακάμπτοντας με τον τρόπο αυτό τους νόμους των ΗΠΑ περί εξαγωγής μεθόδων κρυπτογράφησης. Έτσι με το λειτουργικό μπορούν να διανέμονται οι DES,
triple DES, Blowfish και Cast transforms που βρίσκουν εφαρμογή στο IPSEC και στον Kerberos, δίνοντας στο σύστημα πρωτοποριακές (τότε), σε σχέση με τα άλλα open
source λειτουργικά, δυνατότητες στον τομέα της ασφάλειας των επικοινωνιών και της κρυπτογράφησης ευαίσθητων δεδομένων. Εξίσου σημαντική, γιά όλα τα ανοικτού
κώδικα συστήματα, ήταν (είναι) και η ανάπτυξη του OpenSSH, μιας ανοικτής υλοποίησης του προτοκόλου SSH, συμβατή με όλες τις εκδόσεις του τελευταίου. Επιπλέον, η
κοινή βάση με το NetBSD διευκολύνει τη μεταφορά του OpenBSD σε νέες αρχιτεκτονικές, με 11 ports να έχουν ολοκληρωθεί και αρκετές να βρίσκονται σε εξέλιξη.
### [4. Standardization]{#s4}
Ήδη από τις αρχές της δεκαετίας του 80, τα νέα χαρακτηριστικά που εισήγαγαν οι κυριότερες βαριάντες Unix, διεύρυναν τις ασυμβατότητες μεταξύ τους. Το φαινόμενο
αυτό μετριαζόταν, αφού όπως παραδοσιακά συνέβαινε στην οικογένεια του Unix, κάθε καινοτομία υιοθετούνταν άμεσα από όλους τους κατασκευαστές, αλλά και πάλι
κανένας προγραμματιστής δεν μπορούσε να είναι βέβαιος ότι η εφαρμογή που ανέπτυσσε γιά ένα σύστημα θα μπορούσε να χρησιμοποιηθεί και σε κάποιο άλλο. Για τη
διευκόλυνση των χρηστών/πελατών, οι εταιρίες που συμμετείχαν στην ανάπτυξη Unix συστημάτων, συνεργάστηκαν γιά την καθιέρωση ορισμένων κοινά αποδεκτών standards,
με στόχο την ευρύτερη συμβατότητα. Τούτη η προσπάθεια αποτέλεσε τον κλασικό τρόπο αντιμετώπισης του προβλήματος του fragmentation γιά περισσότερο από μία
δεκαετία. Σήμερα, τα open source Unix συστήματα είναι μάλλον αυτά που ακολουθούν το σωστότερο δρόμο, γιατί σε αυτά το συμφέρον των χρηστών/δημιουργών είναι
εκείνο που καθορίζει την κατεύθυνση της ανάπτυξης.
### [4.1 SVID]{#ss4.1}
Η System V Interface Definition αποτέλεσε μέρος της προσπάθειας της AT&T να καταστήσει το SV de facto standard στον κόσμο των Unix. Η SVID καθορίζει τεχνικά
χαρακτηριστικά του Unix System V τα οποία παρέχονται με την εγγύηση ότι θα διατηρηθούν στις επόμενες εκδόσεις και κάθε SVID-compliant σύστημα δεσμεύεται από την
υποχρέωση να διατηρήσει αυτή την συμβατότητα. Ακόμα, περιγράφει λεπτομερώς τα interfaces που παρέχονται για τις εφαρμογές, ώστε να εξασφαλίζει στον
προγραμματιστή ότι αν γράψει μία εφαρμογή στο πλαίσιο της SVID, αυτή θα μπορεί να εκτελεστεί σε όλα τα συμβατά συστήματα. Φυσικά, οι εκδόσεις του System V είναι
SVID-compliant και η SVID συνέχισε να εξελίσσεται με κάθε νέα υλοποίηση του Unix από την AT&T. Οι προδιαγραφές που όρισε η System V Interface Definition
αποτέλεσαν τη βάση γιά τα standard που υιοθέτησε το X/OPEN Consortium και πέρασαν σχεδόν αυτούσιες στην Single UNIX Specification.
### [4.2 POSIX]{#ss4.2}
Η ανησυχία γιά την ασυμβατότητα ανάμεσα στις βαριάντες/εκδόσεις Unix, οδήγησαν το 1981 την ομάδα χρηστών /usr/group στην αναζήτηση ενός standard το οποίο θα
εξασφάλιζε portability γιά τις διάφορες εφαρμογές. Το πρώτο αποτέλεσμα της προσπάθειάς τους δημοσιοποιήθηκε το 1984 και δεδομένης της ευρύτητας του
εγχειρήματος, η προσπάθεια συνεχίστηκε μετά το 1985 μέσα από την IEEE (Institute for Electrical and Electronics Engineers) στο πλαίσιο του Project 1003 (P1003).
Ο σκοπός αυτού του project ήταν ο καθορισμός ενός συνόλου από standards που θα καθόριζαν τον τρόπο αλληλεπίδρασης του λειτουργικού συστήματος με τις εφαρμογές
και το οποίο ονομάστηκε POSIX (στην εισαγωγή του POSIX.1 αναφέρεται: \"The name POSIX was suggested by Richard Stallman. It is expected to be pronounced
pahz-icks as in positive, not poh-six, or other variations. The pronounciation has been published in an attempt to promulgate a standardized way of referring to
a standard operating system interface\".
Από τα POSIX standards, μεγαλύτερη προσοχή δίνεται συνήθως στο P1003.1 (POSIX.1), το απόλυτο minimum γιά να μπορεί ένα λειτουργικό να ισχυριστεί ότι ανήκει στην
οικογένεια των Unix συστημάτων. Το POSIX.1 καθορίζει το system interface (system calls, signals, files, pipes, I/O, κ.τ.λ.). Στο POSIX.1b περιλαμβάνεται το
real-time interface, δηλαδή τα real-time signals/priorities, file synchronization, asynchronous I/O, semaphores κ.α. Το POSIX.1c ασχολείται με τα threads, το e
με την ασφάλεια, το d περιλαμβάνει τις λεγόμενες real-time extensions, γιά να μη σας πω ότι το real-time υποσύνολο ονομαζόταν POSIX.4 και ότι το POSIX.3.5
καλύπτει την Ada. Είναι πλέον φανερό το εύρος του POSIX πρότυπου. Κάτω από αυτό το πρίσμα δεν μπορεί να θεωρηθεί έκπληξη το γεγονός ότι τα νεότερα standards
χτίζουν πάνω σε κάποια από τα είκοσι και πλέον υποσύνολα του POSIX προτύπου.
### [4.3 XPG3/4]{#ss4.3}
To X/OPEN consortium γεννήθηκε το 1984 στην Ευρώπη (=από ευρωπαϊκές εταιρίες) και είχε σαν στόχο του τον ορισμό των standards που θα έπρεπε να πληρεί ένα
σύστημα γιά να μπορεί να χαρακτηριστεί Unix. Αργότερα στο X/OPEN προσχώρησαν όλες σχεδόν οι εταιρίες που κατασκεύαζαν Unix κλώνους. Το consortium αυτό δεν
εισήγαγε δικά του standards, αλλά υιοθέτησε τα ήδη υπάρχοντα, ώστε να είναι ευκολότερη η οριοθέτηση ενός κοινά αποδεκτού interface γιά την ανάπτυξη εφαρμογών,
λύση που πήρε τη μορφή του Common Applications Environment. Το CAE βασιζόταν κατά το μεγαλύτερο μέρος του στην SVID και περιελάμβανε τα βασικότερα POSIX
standards. Η πιστοποίηση της συμμόρφωσης γινόταν με το X/OPEN Portability Guide (XPG), πιστοποίηση την οποία είχε και το SVR4 (XPG3). Το XPG3 καθόριζε i18ned
system calls και βιβλιοθήκες, εντολές και utilities, καθώς και χαρακτηριστικά της C και την αλληλεπίδραση μεταξύ των XPG3-certified συστημάτων. Στην
interoperability επικεντρωνόταν και το XPG4 του 1992. Σαν αποτέλεσμα της συγχώνευσης του Open Software Foundation με το X/OPEN consortium, το XPG περιέχεται
πλέον στην Single UNIX Specification του OpenGroup (το προϊόν αυτής της συγχώνευσης).
### [4.4 Single UNIX Specification]{#ss4.4}
Το 1993 το X/OPEN consortium ανέλαβε την ευθύνη της παραγωγής ενός specification γιά τα κοινότερα Application Programming Interfaces, ώστε να είναι δυνατή η
άμεση μεταφορά ανάμεσα στις διάφορες πλατφόρμες που θα το ακολουθούσαν. Γιά να επιτύχει αυτή την τεράστια ενοποίηση, το X/OPEN κατέγραψε τα (αθροιστικά) 1170
διαφορετικά APIs που προβλέπονται από την System V Interface Definition, το X/OPEN Portability Guide, το Application Environment Specification Full Use
Interface (AES) από το Open Software Foundation και μία ανάλυση των περισσότερο διαδεδομένων εφαρμογών, γιά αυτό και το αποτέλεσμα αυτής της προσπάθειας έγινε
γνωστό σαν Spec 1170. Μετά από ορισμένες μετατροπές και/ή προσθέσεις, το X/OPEN παρουσίασε τον καρπό αυτού του εγχειρήματος με το όνομα Single UNIX
Specification. Τα συμβατά συστήματα, όπως το AIX, το IRIX, το HP-UX και άλλα, λαμβάνουν το mark UNIX 95.
### [4.5 Single UNIX Specification 2]{#ss4.5}
To OpenGroup consortium παρουσίασε το 1997 ένα ευρύτερο σύνολο προδιαγραφών, το οποίο επέκτεινε το αρχικό standard του X/OPEN, με την ονομασία Single UNIX
Specification, Version 2. Σύμφωνα με τις θέσεις του OpenGroup, το νέο standard αποσκοπούσε στην εδραίωση του Unix ως την πρώτη επιλογή γιά εργασίες που απαιτούν
υψηλή αξιοπιστία και την καθιέρωσή του στον τομέα της επεξεργασίας γραφικών με υψηλές επιδόσεις. Η Version 2 είναι υπερσύνολο της πρώτης έκδοσης και τα νέα
στοιχεία που εισάγει περιλαμβάνουν extended threads functions, συμβατότητα με τα νεότερα POSIX, το γνωστό σαν N-bit cleanup, τον διαχωρισμό δηλαδή του
architecture-dependant κώδικα (όσον αφορά το data-length), με άλλα λόγια επιτρέπει τη μετάβαση στα 64 bit. Επιπλέον, προβλέπει αρχεία ικανού μεγέθους γιά να
εξυπηρετηθούν οι σύγχρονες εφαρμογές (κυρίως οι βάσεις δεδομένων), dynamic linking extensions (όχι δεν ξέρω που χρησιμεύουν :) και Year 2000 Allignment (όχι ότι
χρειαζόταν). Βεβαία, όλα αυτά και διατηρώντας προς τα πίσω συμβατότητα. Με στοιχεία του 1999, μόνο η IBM, η Sun και η NCR είχαν πιστοποιήσει ως UNIX 98 κάποιο
από τα προϊόντα τους.

257
content/articles/31/05_blender_intro.md Κανονικό αρχείο

@ -0,0 +1,257 @@
+++
title = 'Είσαγωγη στο Blender 3D'
date = '2001-06-01T00:00:00Z'
description = ''
author = 'Καπελώνης Κωστής για το Magaz ( magaz.hellug.gr(http://magaz.hellug.gr) )'
issue = ['Magaz 31']
issue_weight = 5
+++
----------------------------------------------------------------------------------------------------------------------------------------------------------------
*Το άρθρο αυτό αποτελεί μια είσαγωγη στο \"μαγικό\" κόσμο του 3D Modelling. Το πακέτο τρισδιάστατων γραφικών που επιλέχτηκε είναι το δημοφιλές Blender 3D.
Απεύθυνεται σε άτομα χρήστες του Linux με μηδαμινή γνώση σε αυτον τον τομέα.*
----------------------------------------------------------------------------------------------------------------------------------------------------------------
**1. Εισαγωγή**
-----------------------------------------------
**2. Τι είναι το Blender;**
-----------------------------------------------------------
**3. Έτσι όπως μας τα λες φαίνεται πολύ \"σοβαρό\" πρόγραμμα. Γιατί εγώ ο ταπεινός Linux-as να ασχοληθώ μαζί του;**
---------------------------------------------------------------------------------------------------------------------------------------------------
**4. Ακούγεται πολύ καλό για να είναι αληθινό\...Κάποιο λάκκο έχει η φάβα\...**
---------------------------------------------------------------------------------------------------------------
**5. Εγκατάσταση**
--------------------------------------------------
**6. Γνωριμία με το περιβάλλον**
----------------------------------------------------------------
**7. Η Θεωρία**
-----------------------------------------------
**8. Η Πράξη**
----------------------------------------------
**9. Επίλογος**
-----------------------------------------------
### [1. Εισαγωγή]{#s1}
Ωραία! Επιτέλους εγκαταστήσαμε το Linux στον υπολογιστή μας και αρχίζουμε να το χρησιμοποιούμε. Και τώρα;
Προφανώς θα ασχοληθούμε με προγραμματισμό σε κάποιες από τις άπειρες γλώσσες που λογικά διαθέτει η διανομή που εγκαταστήσαμε. Θα σερφάρουμε και λίγο στο
INTERNET, θα στήσουμε κανέναν Server και γενικά θα κάνουμε όλα τα φυσιολογικά πράγματα που κάνουν όλοι οι Linux-άδες. Κάτι λείπει όμως\....
Πιστεύω ότι η εξίσωση Linux-ας = guru στον προγραμματισμό είναι λανθασμένη, και η σωστή είναι Linux-ας= \"ψαγμένο\" άτομο που χρησιμοποιεί στο έπακρο το PC του.
Παράλληλα έχω βαρεθεί όλους αυτούς που χρησιμοποιούν Χ-windows μόνο και μόνο για να σηκώνουν πολλαπλά τερματικά. Είναι δυνατόν να αγοράζουν ένα μηχάνημα τόσων
χιλιάδων, για το πληκτρολόγιο και την οθόνη;(ποντίκι μόνο για αλλαγή focus :-)
Αποφάσισα λοιπόν να γράψω αυτό το άρθρο για ένα πρόγραμμα που:
- θα φτάσει τον υπολογιστή σας στα όρια του αφήνοντας σας έκπληκτους με τις δυνατότητές του.
- Θα εκμεταλλευτεί την πανάκριβη κάρτα γραφικών σας.
- θα αναδείξει την καλλιτεχνική φλέβα που όλοι κρύβετε μέσα σας.
- Θα σας κάνει να δείτε με άλλο μάτι τα εφφέ των ταινιών.
- θα αποδείξει ότι οι Linux-αδες δεν προγραμματίζουν μόνο.
Το πρόγραμμα αυτό είναι το [Blender 3D](www.blender.nl)
### [2. Τι είναι το Blender;]{#s2}
Το Blender είναι μια πλήρης σουίτα 3D CAD με δυνατότητες παραγωγής στατικών εικόνων ή 3D animation (video). Είναι επαγγελματικό εργαλείο και η εταιρία που το
κατασκεύασε το χρησιμοποιούσε αρχικά η ίδία για τις ανάγκες τις πριν το δώσει στο ευρύ κοινό. Είναι \"ώριμο\" προγραμματιστικά και έχει προχωρημένα 3D
χαρακτηριστικά (radiosity,particles) που αλλά παρόμοια προγράμματα (σε Linux) μόνο ονειρεύονται.
Είναι cross platform (SGI,Sun,FreeBSD x86,Linux x86,Linux Alpha,Linux PPC,BeOS x86,WINDOWS), μικρό στο download (λιγότερο από 2MB), πλήρως επεκτάσιμο
(plugins-αρκεί να ξέρετε Python), και είναι Δωρεάν!!
Άλλα τέτοια προγράμματα που τρέχουν μόνο σε Windows(3D studio,Lightwave,Truespace) απαιτoύν μια μικρή περιουσία. Την τελευταία φορά που είδα την τιμή του 3D
Studio MAX ήταν 2.000.000 δρχ (δυο εκατομμύρια δραχμές).
Και μην αρχίσω να μιλάω για το SoftImage Extreme της M\$\...
Το Blender μέχρι την έκδοση 1.8 προσφερόταν δωρεάν αλλά για να χρησιμοποιήσει κανείς όλες τις δυνατότητές του έπρεπε να αγοράσει ένα C-key που τις ξεκλείδωνε.
Από την έκδοση 1.8 και μετά διατίθεται εντελώς δωρεάν με όλες τις δυνατότητες του ακόμα και για επαγγελματική (commercial) χρήση.
### [3. Έτσι όπως μας τα λες φαίνεται πολύ \"σοβαρό\" πρόγραμμα. Γιατί εγώ ο ταπεινός Linux-as να ασχοληθώ μαζί του;]{#s3}
Με το Blender μπορείτε να κάνετε τα εξής:
- Εικόνες για backgrounds,icons
- Animated GIFs για την σελίδα σας
- γραφικά για το τρομερό παιχνίδι που φτιάχνετε (χε,χε\...)
- να μάθετε για το πως λειτουργούν τα 3D γραφικά.
- να ετοιμάσετε τον Terminator 4 :-)
Βασικά για να μετατρέψετε το Linux σας σε ένα μικρό **Silicon Graphics Workstation** (Ωραία δεν ακούγεται;)
Εδώ μπορείτε να δείτε το περιβάλλον εργασίας του Blender
[\[tank.jpg 97k\]](/31/img/tank.jpg) [\[cup.jpg 89k\]](/31/img/cup.jpg) [\[robot 13k\]](/31/img/robot.jpg)
Εδώ εικόνες από μέσους χρήστες: [www.blendermania.com](http://www.blendermania.com)
και εδώ από επαγγελματίες
[\[bottes.jpg 43k\]](/31/img/bottes.jpg) [\[doogieducati.jpg 51k\]](/31/img/doogieducati.jpg) [\[couteau.jpg 43k\]](/31/img/couteau.jpg) [\[blues.jpg 72k\]](/31/img/blues.jpg)
[\[zippo.jpg 25k\]](/31/img/zippo.jpg) [\[lagrangedwarf.jpg 170k\]](/31/img/lagrangedwarf.jpg)
(Ναι **ΌΛΑ** αυτά είναι από υπολογιστή και όχι πραγματικές φωτογραφίες)
### [4. Ακούγεται πολύ καλό για να είναι αληθινό\...Κάποιο λάκκο έχει η φάβα\...]{#s4}
Where \'s the catch? Που λένε και οι αμερικάνοι
Ορίστε τι σας \"έκρυψα\" μέχρι τώρα.
- Αν και το Blender δίνεται δωρεάν, ΔΕΝ είναι open-source. Κάποια μέρη του προσφέρονται open-source άλλα όχι ολόκληρο.
- Επειδή είναι cross-platform δεν μπορούσε να υιοθετήσει κάποιο περιβάλλον (look-n-feel) ενός λειτουργικού συστήματος. Έτσι το Blender διαθέτει το δικό του
γραφικό περιβάλλον (toolkit) το οποίο αν δεν σας \"ξενίσει\" θα σας φανεί δύσχρηστο στη αρχή.
- Εκτός από tooltips μέσα στο πρόγραμμα δεν έχει online βοήθεια ή οργανωμένη τεκμηρίωση(documentation).Μην ανησυχείτε όμως! Τα διάφορα tutorials στο ΙΝΤΕΡΝΕΤ
καθώς και το magaz ;-) είναι εδώ.
- Κανείς δεν είπε ότι το 3D modelling είναι εύκολο. Ακριβώς όπως το πρώτο σας πρόγραμμα, δεν ήταν ένα λειτουργικό σύστημα μην περιμένετε οι πρώτες σας
δημιουργίες να είναι ότι είδατε στα screenshots.\
Σας απογοήτευσα τώρα,ε; :-(
### [5. Εγκατάσταση]{#s5}
To Blender μπορείτε να το πάρετε από την επισήμη σελιδά με http απο την http://www.blender.nl/download/ ή κατευθείαν με FTP από το ftp.blender.nl/pub Προφανώς
επιλέγετε το Linux x86 αρχείο. Τελευταία έκδοση 2.12 (Εγώ έχω τώρα την 2.04)
Υπάρχουν δυο εκδόσεις H static (1.2MB) και η dynamic (1.8ΜΒ) Mε την dynamic εκμεταλλεύεστε πλήρως την 3D κάρτα γραφικών σας, με την static όχι.
Αν έχετε χρόνο κατεβάστε πρώτα την dynamic και αν αυτή δεν λειτουργήσει δοκιμάστε την static
Αν έχετε μια καινούρια διανομή Linux με υποστήριξη 3D (Xserver 4/opengl/mesa3d) κατεβάσετε την dynamic
Αν δεν ξέρετε τι πρέπει να διαλέξετε,κατεβάστε την static
Καλό θα ήταν επίσης να κατεβάσετε και οτιδήποτε βρείτε στην ενότητα HELP της download σελίδας
Το πακέτο δεν χρειάζεται εγκατάσταση παρά μόνο αποσυμπιεση. Μπορείτε να το χρησιμοποιήσετε από την περιοχή σας (home directory) αλλά προτείνεται να το βάλετε σε
κάποιον κατάλογο προσβάσιμο από όλους τους χρήστες (το /usr/local/blender είναι λογική επιλογή)
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Γίνετε υπερχρηστης με την εντολή su
cp blenderX.XXX.tar.gz /usr/local
cd /usr/local/
gunzip blender.X.XXX.tar.gz
tar xvf blender.X.XXX.tar
rm blender.X.XXX.tar
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Τέλος \"χτυπήστε\" ένα make μέσα στον κατάλογο plugins και προαιρετικά φτιάξτε ένα σύνδεσμο (symbolic link) στο /usr/locαl/bin για να μην χρειάζεται να
πληκτρολογείτε όλη την διαδρομή κάθε φόρα.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
ln -s /usr/local/blenderX.XX/blender /usr/local/bin/blender
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Αν θέλετε και εικονίδιο στείλτε μου ένα [mail](mailto:kapelon@csd.uoc.gr)
Τα αρχεία του blender έχουν επέκταση .blend και μπορείτε να τα αποθηκεύσετε όπου θέλετε. (Δεν πρόκειται να φτιαχτεί κατάλογος .blender στην περιοχή σας)
Ξεκινήστε το πρόγραμμα και θαυμάστε! Πατήστε και space να δείτε τι γίνεται. (Παναγία μου κουμπιά και μενού\...)
### [6. Γνωριμία με το περιβάλλον]{#s6}
Μην τα \"χάσετε\" από το μέγεθος της πληροφορίας που έχει η οθόνη.Δεν πρόκειται να τα χρησιμοποιήσετε όλα αυτά στις πρώτες σας προσπάθειες.
Για αρχή μεγαλώστε το παράθυρο του Blender ώστε να πιάσει όλη την οθόνη.Αν χρησιμοποιείτε window manager που το υποστηρίζει (π.χ. Enlightenment, Windowmaker)
αφαιρέστε την γραμμή τίτλου (titlebar) και τα περιγράμματα (borders) από το παράθυρο και ξανά μεγιστοποιήστε.
Αυτό που βλέπετε είναι η προκαθορισμένη (default :-) διάταξη των παραθύρων του Blender.Αυτή αποτελείται από 3 παράθυρα (frames/panels).Ένα μικρό στην πάνω μεριά
ρυθμισμένο να δείχνει τα μενού, ένα μεγάλο στην μέση (3D view) ρυθμισμένο να δείχνει τον τρισδιάστατο κόσμο και ένα μεσαίου μεγέθους, στην κάτω μεριά σε ρόλο
toolbar.Ο αριθμός των παραθύρων που βρίσκονται κάθε στιγμή στην οθόνη, η διάταξη τους πάνω σε αυτή,το μέγεθος τους καθώς και το περιεχόμενο τους είναι πλήρως
παραμετροποιήσιμα. Αυτή η διάταξη είναι καλή για αρχή.
Πατήστε το 5 στο αριθμητικό πληκτρολόγιο (για perspective view) και κρατώντας πατημένο το μεσαίο πλήκτρο του ποντικιού(ή το ροδάκι) μετακινήστε το ποντίκι μέσα
στο 3D view.Έτσι μετακινείστε (orbit) μέσα στο 3D view.\
Υπάρχουν και 3 προκαθορισμένες (predefined) όψεις, τα πλήκτρα 7,1,3 του αριθμητικού πληκτρολογίου.
Το πλέγμα είναι ο ορίζοντας της σκηνής Η πυραμίδα είναι η κάμερα τής σκηνής(Για να δείτε οποιαδήποτε σκηνή τι βλέπει η κάμερα πατήστε το 0 (μηδέν) στο
αριθμητικό πληκτρολόγιο) Ο στόχος είναι το σημείο που θα εμφανιστούν τα καινούρια αντικείμενα (Μετακινήστε τον κάνοντας αριστερό κλικ κάπου αλλού). Το μικρό
τετράγωνο είναι ένα plane και είναι εάν απλό αντικείμενο.
Ξοδέψτε λίγο χρόνο και μετακινήστε το 3D παράθυρο προς όλες τις μεριές. Παρατηρήστε ότι παίζει μεγάλη σημασία ως προς την περιστροφή η θέση του ποντικιού (ΟΧΙ
του στόχου) όταν ξεκινάτε το drag με το μεσαίο πλήκτρο. Αν χάσετε τον προσανατολισμό (μην γελάτε, συμβαίνει) πατήστε το 7 για να βρεθείτε στην πάνω όψη
Όταν βαρεθείτε, συνεχίστε στο θεωρητικό υπόβαθρο.
### [7. Η Θεωρία]{#s7}
Στον προγραμματισμό τα βήματα που ακολουθούμε είναι τις περισσότερες φορές τα εξής:
- Πληκτρολόγηση του πηγαίου κώδικα σε ένα αρχείο κειμένου
- Compilation του παραπάνω αρχείου
- Εκτέλεση του έτοιμου προγράμματος
Στο 3D modelling μια πολύ περιληπτική αντίστοιχη λίστα είναι η:
- Κατασκευή των 3D αντικειμένων που θα αποτελέσουν την σκηνή(scene) που θέλουμε να φτιάξουμε
- Επεξεργασία υφών/υλικών/επιφανειών/χρωμάτων που θέλουμε να έχουν τα αντικείμενά μας (textures/materials)
- Φωτισμός της σκηνής από διάφορες πηγές (lighting)
- Απόδοση του τελικού αποτελέσματος (Rendering)
Το rendering είναι αντίστοιχο με το compile με την έννοια ότι παίρνει πολλή ώρα (ανάλογα και με την πολυπλοκότητα της σκηνής) Σε αυτό το στάδιο ο υπολογιστής
επεξεργάζεται όλες τις πληροφορίες που του έχουμε δώσει, την γεωμετρία των σχημάτων,τον φωτισμό, την κίνηση (σε περίπτωση animation) και βγάζει το τελικό
αποτελέσμα.Τα εφφέ των ταινιών είναι τόσο απαιτητικά που το rendering γίνεται σε δίκτυα υπολογιστών ειδικά φτιαγμένων για επεξεργασία γραφικών (Silicon
graphics)
### [8. Η Πράξη]{#s8}
Η πρώτη μας σκηνή είναι αντίστοιχη του hello world στον προγραμματισμό(ως προς την απλότητα) Αποτελείται από ένα έτοιμο γεωμετρικό σχήμα (σφαίρα) και μόνο.
Επιλέξτε File/New από το μενού Πατήστε το πλήκτρο Χ (στο πληκτρολόγιο)και από το μικρό μενού διαλέξτε ERASE SELECTED
Πατήστε space και μετά ADD/MESH/UVSPHERE Πατήστε ΟΚ και στις δυο ερωτήσεις
Πατήστε ΤΑΒ για να βγείτε από το EDITMODE (Περισσότερα για το EDITMODE προσεχώς) Όπως είδατε η [σφαίρα](/31/img/sphere.jpg) εμφανίστηκε εκεί που ήταν o στόχος.
Πατήστε 0 στο αριθμητικό πληκτρολόγιο και μετά F12 για Rendering Τι βλέπετε;\
Τίποτα είναι η σωστή απάντηση γιατί δεν υπάρχουν φώτα στην σκηνή μας (Πατήστε Esc για να φύγει το μικρό παράθυρο)
Επιστρέψτε στην πάνω όψη (numpad 7) και με αριστερό κλικ κάπου ανάμεσα στην κάμερα και την σφαίρα μετακινήστε τον στόχο
Πατήστε space ADD/LAMP ξανά F12
H σφαίρα μας όμως δεν είναι λεία Επιλέξτε τη ,με δεξί κλικ του ποντικιού πάνω της. Θα πρέπει να γίνει ροζ. Πατήστε F9 για τα EDIT BUTTONS Και αλλά κουμπιά\....\
Πατήστε το Set smooth (βλέπε [εικόνα](/31/img/smooth.jpg)) που βρίσκεται περίπου κάτω και αριστερά και πάλι F12 Τώρα είναι καλύτερα. (Πατήστε Esc για να φύγει το
μικρό παράθυρο)
Ας αλλάξουμε τώρα το χρώμα της F5 για material buttons. Αριστερό κλικ (κρατήστε πατημένο) στην παύλα (βλέπε [εικόνα](/31/img/material.jpg)) για δημιουργία νέου
υλικού.\
ADD NEW από το μικρό μενού. Ακόμα περισσότερα κουμπιά\...\...\...\...
Βρείτε τα RGB sliders (βλέπε [εικόνα](/31/img/rgb.jpg)) και αλλάξτε το χρώμα της (preview τέρμα αριστερά).\
F12 για δείτε το αποτέλεσμα
### [9. Επίλογος]{#s9}
Αν κάτι δεν σας πάει καλά μην εκνευρίζεστε.Κάθε αρχή και δύσκολη
Ελπίζω με αυτό το άρθρο να σας έδωσα το αρχικό ερέθισμα για να ασχοληθείτε με το Blender.Λογικά θα βγάλω και δεύτερό μέρος μόλις μπορέσω.
Μέχρι τότε δείτε αυτό το [tutorial](http://www.blendermania.com/tutbook/interface.php3)