Πρώτο commit
Αυτό το commit περιλαμβάνεται σε:
commit
8ec8e9bee2
451 αρχεία άλλαξαν με 46736 προσθήκες και 0 διαγραφές
60
content/articles/29/01_editorial.md
Κανονικό αρχείο
60
content/articles/29/01_editorial.md
Κανονικό αρχείο
|
@ -0,0 +1,60 @@
|
|||
+++
|
||||
title = 'Editorial'
|
||||
date = '2000-12-01T00:00:00Z'
|
||||
description = ''
|
||||
author = 'Βαγγέλης Παπαδογιαννάκης(mailto:papas@hellug.gr)'
|
||||
issue = ['Magaz 29']
|
||||
issue_weight = 1
|
||||
+++
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
*Και καλές γιορτές\...*
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Φτάσαμε στο Δεκέμβρη και βροχές δεν έχουμε δει ακόμα\... Μόνο 2-3 πλημμύρες, που ήταν και αναμενόμενες μια και έχουμε κάψει ό,τι καιγεται. Και το χώμα δε
|
||||
συγκρατεί το νερό και το βουνό δε συγκρατεί το χώμα και γενικώς δε συγκρατείται τίποτα. Μόνο η ψυχραιμία μας, αλλά **μέχρι πότε**;
|
||||
|
||||
Και με αυτήν τη μελαγχολική εισαγωγή, ξεκινάει αυτό το **Editorial**. Ένα Editorial που κανονικά θα έπρεπε να είναι χαρωπό, **Χριστούγεννα πλησιάζουν!**. Και
|
||||
όλοι μαζεύονται δίπλα στο τζάκι και όλοι είναι κοντά στο **Χριστουγεννιάτικο δέντρο** και όλοι κοιτάνε τις **κάλτσες** που έχουν κρεμάσει στο **τζάκι**
|
||||
περιμένοντας το δώρο του **'ϊ Βασίλη**. **ΟΧΙ**, κάτι τέτοια γίνονται μόνο στη Αμερική. Εκεί που περιμένουν τα Χριστούγεννα για να βρεθούν όλοι μαζι, εκεί που ο
|
||||
θεσμός της οικογένειας δεν είναι τόσο δυνατός (γιατί άραγε να υπάρχουν τόσοι άστεγοι;) ασχέτως πώς την παρουσιάζουν τα media και ο κάθε υποψήφιος προεδράρας,
|
||||
που προς άγραν ψήφων βάζει και τη γυναίκα του δίπλα στο φακό.\
|
||||
Δεν έχει σημασία ότι κάτω από το γραφέιο του περιμένει μια \`\`Μόνικα\'\'.
|
||||
|
||||
Μα τι είναι όλα αυτά και τι σχέση έχουν με το Linux και το Magaz ειδικότερα;
|
||||
|
||||
**Καμία\...**
|
||||
|
||||
\`Αντε λοιπόν καλές γιορτές, καλά φαγοπότια, και μην ξεχνάτε ότι έχουν πλέον απαγορευτεί τα κοκορέτσια και τα κεφαλάκια και τα λοιπά εδέσματα. ΧΑ, ας έρθουν
|
||||
στην Κρήτη να μας το πουν\...\
|
||||
(DISCLAIMER: Εγώ δεν τρώω τέτοια, για τους άλλους λέω (γλύψιμο, ο Αρτέμης ε;;;)).
|
||||
|
||||
Ένας τρελός επιστήμονας, ονόματι **Φώτης Γιαννούλας**, που οι φήμες τον τοποθετούν στο **Βόλο**, μου έστειλε ένα email για ένα Project, το **LCP (Linux
|
||||
Classification Project)**, την κατηγοριοποίηση των HOW-TOs. Χαιρετίζουμε την προσπάθειά του και του υποσχόμαστε (εμείς, οι Παπαδογιαννάκηδες Βαγγέληδες) ότι
|
||||
έχει μια θέση στο **magaz**, αλλά στο επόμενο τεύχος, γιατί δεν πρόλαβα να τα μεταφράσω σε **SGML**. Το Project είναι σε **Beta** φάση και, απ\' όσο το είδα,
|
||||
είναι \*ήδη\* σε πολύ καλή κατάσταση.\
|
||||
Να σημειώσω εδώ ότι είναι μια πολύ καλή δουλειά και πραγματικά χρειάζεται βοήθεια. Και αν όχι βοήθεια, στήριξη. Σύντομα αυτό το project θα μεγαλώσει πολύ. Η
|
||||
κοινότητα του linux πραγματικά το είχε ανάγκη.\
|
||||
Περισσότερες πληροφορίες από τον ίδιο, στο mail <photis_the_great@vol.forthnet.gr>
|
||||
|
||||
Στα άρθρα του magaz τώρα, το τεύχος, αν και θα έπρεπε να είναι εορταστικό, δεν είναι και τόσο, αφου δεν έχει **bonus άρθρο**. Αυτό γιατί δεν προσφέρονται και
|
||||
τόσοι να γράψουν καμιά γραμμή. Ευτυχώς που ο [Παπακώστας ο Ευρυπίδης](mailto:evris@hellug.gr) μου έχει αφήσει παρακαταθήκη κάτι άρθρα που θα δημοσιεύονταν στο
|
||||
DILIMA, αλλά τελικά αποφάσισε ότι το **magaz** είναι καλύτερο (γιατί άραγε;). Ευτυχώς που υπάρχει ο [Καμπριάνης ο Μιχάλης](mailto:kabrianis@hellug.gr), και
|
||||
ξελασπώνει λίγο την κατάσταση\... Φυσικά και θα αναφέρω το μεγάλο μας ευεργέτη, τον [Κώστα Τσακάλογλου](mailto:tsakf@hellug.gr), που ουκ ολίγες φορές μας έχει
|
||||
ξελασπώσει με την XBASIC. Όσο για εμένα, ε, γράφω κάνα editorial, γράφω και κάνα άλλο άρθρο που πότε - πότε βάζω, ε φτιάχνω και το νέο site του magaz, ε,
|
||||
αυτά\...
|
||||
|
||||
Με χαρά (και ανησυχία για το τι θα βάλω στο επόμενο τεύχος) λοιπόν σας παραπέμπω στα άρθρα αυτού του μήνα:
|
||||
|
||||
- [XBASIC](04_xbasic.html) και οι συναρτήσεις της, από τον Τσακάλογλου.
|
||||
- [Hellenic Status](03_hellenic-status.html)από τον Ευρυπίδη Παπακώστα.
|
||||
- [Bash\...](05_bash.html)από τον Καμπριάνη Μιχάλη
|
||||
- [Ελληνικοί ISPs](02_erevna.html)από το Βραχνάκη το Γιώργο. Αυτόν τον καλωσορίζουμε ιδιαιτέρως στην παρέα του magaz, μια και κατάγεται από το Linuxοχώρι!\
|
||||
Τιιιιιι;;;;; Δεν ξέρετε το linuxοχώρι;;;;;;;;; Ντροπή σας! για πηγαίνετετε [εδώ](http://www.eeea.gr/article.php3?sid=20000607113131) εδώ να διαβάσετε\...
|
||||
και μετά [εδώ](http://www.eeea.gr/article.php3?sid=20000613081716). Για να θυμούνται οι παλιοί και να μαθαίνουν οι νεότεροι\...
|
||||
|
||||
ΑΑΑΑ, να μην ξεχάσω να αναφέρω ότι δε νομίζω το επόμενο magaz να βγεί νωρίς το Γενάρη του νέου έτους. Αυτό πιστεύω ότι είναι κατανοητό και χωρίς να χρειάζεται
|
||||
να το εξηγήσω\...
|
||||
|
||||
Καλή ανάγνωση mages και υπομονή, το νέο magaz έρχεται!\
|
248
content/articles/29/02_erevna.md
Κανονικό αρχείο
248
content/articles/29/02_erevna.md
Κανονικό αρχείο
|
@ -0,0 +1,248 @@
|
|||
+++
|
||||
title = 'Τα Operating Systems Τών Ελληνικών I.S.P\s'
|
||||
date = '2000-09-01T00:00:00Z'
|
||||
description = ''
|
||||
author = 'Γιώργος Βραχνάκης(mailto:gi0rgos@pathfinder.gr)'
|
||||
issue = ['Magaz 29']
|
||||
issue_weight = 2
|
||||
+++
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
*Αυτό το άρθρο επιχειρεί μια έρευνα για τους internet service providers της Ελλάδας. Σε καμία περίπτωση δεν είναι πλήρης, και δεν μπορεί να γίνει. Παρόλα αυτά,
|
||||
μια βασική ιδέα την πέρνουμε για τα τεκταινόμενα του Internet εν Ελλάδι. Όσοι λοιπόν έχετε αναρωτηθεί τι O/S τρέχει ο Internet Provider που έχετε Account τώρα
|
||||
μπορείτε να μάθετε.*
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
**1. Γενικά περί της έρευνας**
|
||||
-------------------------------------------------------
|
||||
|
||||
**2. Απαντήσεις**
|
||||
------------------------------------------
|
||||
|
||||
- [2.1 HellasNet](#ss2.1)
|
||||
- [2.2 Otenet](#ss2.2)
|
||||
- [2.3 SparkNet](#ss2.3)
|
||||
- [2.4 Panafonet](#ss2.4)
|
||||
- [2.5 GroovyNet](#ss2.5)
|
||||
|
||||
**3. Οι μη απαντήσαντες\...**
|
||||
------------------------------------------------------
|
||||
|
||||
**4. Servers (προγράμματα) στους servers**
|
||||
-------------------------------------------------------------------
|
||||
|
||||
- [4.1 HTTP](#ss4.1)
|
||||
- [4.2 MAIL](#ss4.2)
|
||||
- [4.3 NEWS](#ss4.3)
|
||||
|
||||
**5. Αναλύσεις\...**
|
||||
---------------------------------------------
|
||||
|
||||
**6. Ευχαριστίες.**
|
||||
--------------------------------------------
|
||||
|
||||
|
||||
### [1. Γενικά περί της έρευνας]{#s1}
|
||||
|
||||
Οι αναφορές γίνονται σε κάθε Internet Provider και τι λειτουργικό σύστημα τρέχουν oι διάφοροι Servers του (web, ftp, dial up, etc)
|
||||
|
||||
Σε όλους είχε σταλεί το παρακάτω email:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Κύριε/Κυρία,
|
||||
Τους θερμούς χαιρετισμούς μου, και μπαίνω κατευθείαν στο θέμα.
|
||||
Ονομάζομαι Παπαδογιαννάκης Ευάγγελος, και είμαι ο αρχισυντάκτης του magaz, του επίσιμου online περιοδικού για το linux στην Ελλάδα, της HELLUG (Hellenic Linux Users Group, http://www.hellug.gr). To περιοδικό μας βρίσκεται στο http://magaz.hellug.gr. Στα πλαίσια ενός άρθρου που συντάσσω με τον Βραχνάκη Γεώργιο, θα ήθελα να με ενημερώσετε για τα παρακατω στοιχεία όσον αφορά στο τι τρέχουν οι server σας.
|
||||
|
||||
Operating system of Mail Servers:
|
||||
Operating system of DNS Servers:
|
||||
Operating system of FTP Servers:
|
||||
Operating system of Dial Up Servers:
|
||||
Operating system of Web Servers:
|
||||
|
||||
software of Mail Servers: (πχ Sendmail 8.9.3/8.9.3)
|
||||
software of DNS Servers: (πχ bind)
|
||||
software of FTP Servers: (πχ wuftp)
|
||||
software of News Servers: (πχ NNTPcache server)
|
||||
software of Web Servers: (πχ IIS)
|
||||
|
||||
Θα το εκτιμούσα αν απαντήσετε μέχρι τις 2 Σεπτεμβρίου, πράγμα που το θεωρώ αρκετά εύκολο.
|
||||
Το άρθρο θα παρουσιαστεί στο magaz (http://magaz.hellug.gr) στο τεύχος Σεπτεμβρίου, που θα βγει στη δημοσιότητα στις 3 του ίδιου μήνα.
|
||||
|
||||
Για οποιαδήποτε απορία - διευκρίνιση, παρακαλώ μη διστάσετε να επικοινωνήσετε μαζί μου.
|
||||
|
||||
Ευχαριστώ εκ των προτέρων,
|
||||
Ο Αρχισυντάκτης και Συντονιστής Αρθρογραφίας του Μagaz,
|
||||
Παπαδογιαννάκης Ευάγγελος.
|
||||
papas@hellug.gr
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Το mail αυτό στάλθηκε στις παρακάτω διευθύνσεις.
|
||||
|
||||
- <cgian@eexi.gr>
|
||||
- <support@forthnet.gr>
|
||||
- <support@hol.gr>
|
||||
- <info@mbn.gr>
|
||||
- <noc@otenet.gr>
|
||||
- <support@compulink.gr>
|
||||
- <root@stsnet.gr>
|
||||
- <helpdesk@spark.net.gr>
|
||||
- <support@groovy.gr>
|
||||
- <Support@panafonet.gr>
|
||||
- <webmaster@tee.gr>
|
||||
- <webmaster@internet.gr>
|
||||
|
||||
|
||||
### [2. Απαντήσεις]{#s2}
|
||||
|
||||
Φυσικό και αναμενόμενο, δεν πήραμε και πολλές απαντήσεις. Οι λίγοι όμως που μας έστειλαν, πρέπει να τιμηθούν αφού μας αφιέρωσαν λίγο από το χρόνο τους.
|
||||
|
||||
Παρακάτω λοιπόν, είναι όσοι απάντησαν και οι απαντήσεις τους όσον αφορά στο θέμα μας
|
||||
|
||||
### [2.1 HellasNet]{#ss2.1}
|
||||
|
||||
**Mail Servers**: Solaris\
|
||||
**DNS Servers**: Solaris & Linux RedHat\
|
||||
**FTP Servers**: Linux RedHat\
|
||||
**Dial Up Servers**: Solaris\
|
||||
**Web Servers**: Linux RedHat, Solaris και WinNT
|
||||
|
||||
### [2.2 Otenet]{#ss2.2}
|
||||
|
||||
**Mail Servers**: Solaris\
|
||||
**DNS Servers**: Solaris\
|
||||
**FTP Servers**: Solaris\
|
||||
**Dial Up Servers**: Solaris\
|
||||
**Web Servers**: Solaris
|
||||
|
||||
Εδώ, όπως φυσικά οι περισσότεροι ξέρετε, υπάρχει μια αντίθεση. Για τους web servers τους, οι της OteNet μας έστειλαν πληροφορίες ότι τρέχουν **Solaris**. Σε
|
||||
αυτή την περίπτωση εγώ σηκώνω τα χέρια ψηλά, γιατί από τη μια στο site τους μας λένε ότι τρέχουν Windows 2000, και από την άλλη γιατί και το
|
||||
**[NetCraft](http://www.netcraft.com)** μου δίνει επίσις ότι τρέχουν Windows 2000 με Microsoft-IIS/5.0.
|
||||
|
||||
Επίσης, στο email απάντηση της OteNet, υπήρχε (μεταξύ άλλων) το
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Υπόψιν ότι όλα τα παραπάνω στοιχεία μπορούσατε να τα πάρετε με νόμιμο τρόπο.
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Δηλαδή εμείς τώρα τα πήραμε με παράνομο τρόπο; Τέλος πάντων\...
|
||||
|
||||
### [2.3 SparkNet]{#ss2.3}
|
||||
|
||||
**Mail Servers**: Solaris\
|
||||
**DNS Servers**: Solaris\
|
||||
**FTP Servers**: Solaris\
|
||||
**Dial Up Servers**: Solaris\
|
||||
**Web Servers**: Solaris
|
||||
|
||||
### [2.4 Panafonet]{#ss2.4}
|
||||
|
||||
**Mail Servers**: Solaris\
|
||||
**DNS Servers**: Solaris\
|
||||
**FTP Servers**: Solaris\
|
||||
**Dial Up Servers**: Solaris\
|
||||
**Web Servers**: Solaris
|
||||
|
||||
### [2.5 GroovyNet]{#ss2.5}
|
||||
|
||||
NetBSD ή OpenBSD
|
||||
|
||||
|
||||
### [3. Οι μη απαντήσαντες\...]{#s3}
|
||||
|
||||
Στους παρακάτω Providers έστειλα 2 φορές email (!) με μια διαφορά 6 ημερών, δεν απάντησε κανείς!.
|
||||
|
||||
Σημείωση: Οι παρακάτω πληροφορίες έχουν παρθεί απο το [NetCraft](http://www.netcraft.com). Αυτό σημαίνει οτι **\*δεν\* είναι απολύτα αξιόπιστες και είναι
|
||||
\*μονο\* για το σε τι O/S τρέχουν οι Web Servers**.
|
||||
|
||||
\
|
||||
**Forthnet**: IRIX\
|
||||
**HOL**: Solaris\
|
||||
**Compulink**: Win2000\
|
||||
**TEE**: Solaris\
|
||||
**StsNet**:Red Hat Linux\
|
||||
**Mbn**:Windows 2000\
|
||||
**Internet Hellas**: Linux ('γνωστη Διανομή)\
|
||||
Η Internet Hellas \*απάντησε\* στο mail μου αλλά με σε UTF-8 με αποτέλεσμα να μην μπορώ να το διαβάσω γι\'αυτό το λόγο δεν γράφω και για τους υπόλοιπους
|
||||
servers.
|
||||
|
||||
|
||||
### [4. Servers (προγράμματα) στους servers]{#s4}
|
||||
|
||||
Ας περάσουμε τώρα στο τι τρέχει ο κάθε provider στις επιμέρους υπηρεσίες. Τα αποτελέσματα προέρχονται από το [NetCraft](http://www.netcraft.com)
|
||||
|
||||
### [4.1 HTTP]{#ss4.1}
|
||||
|
||||
\
|
||||
**HellasNet**: Apache/1.3.4\
|
||||
**OteNet**: Microsoft-IIS/5.0\
|
||||
**SparkNet**: Apache/1.3.12 (Unix) PHP/3.0.16 mod\_perl/1.21 mod\_ssl/2.6.2 OpenSSL/0.9.5a-beta2\
|
||||
**PanafoNet**: Netscape-Enterprise/4.0\
|
||||
**GroovyNet**: Apache/1.3.12 (Unix) mod\_ssl/2.6.2 OpenSSL/0.9.5a\
|
||||
**ForthNet**: Νetscape-Enterprise/3.6 SP2\
|
||||
**HOL**: Netscape-Enterprise/3.6 SP2\
|
||||
**Compulink**: Microsoft-IIS/5.0\
|
||||
**TEE**: Netscape-Enterprise/4.0\
|
||||
**Internet Hellas**: Apache/1.3.12\
|
||||
**stsnet**: Apache/1.3.9 (Unix)\
|
||||
**mbn**: Microsoft-IIS/5.0
|
||||
|
||||
### [4.2 MAIL]{#ss4.2}
|
||||
|
||||
Να σημειωθεί, οτι τα αποτελέσματα για τους mail servers eξήχθηκαν με ένα telnet στην πόρτα 25.
|
||||
|
||||
**HellasNet**: Sendmail 8.9.1/8.9.1\
|
||||
**otenet**: Sendmail 8.10.1/8.10.1\
|
||||
**SparkNet**: Sendmail 8.11.0/8.11.0\
|
||||
**PanafoNet**: Netscape Messaging Server 4.1\
|
||||
**GroovyNet**: Sendmail 8.8.8/8.8.8\
|
||||
**forthnet**: Sendmail 8.8.5/8.8.5\
|
||||
**HOL**: QMail\
|
||||
**Compulink**: Sendmail 8.10.2/8.10.2\
|
||||
**TEE**: -\
|
||||
**Internet Hellas**:-\
|
||||
**stsnet**: Sendmail 8.9.3/8.9.3\
|
||||
**mbn**: Sendmail 8.8.5/8.8.5
|
||||
|
||||
### [4.3 NEWS]{#ss4.3}
|
||||
|
||||
Αποτελέσματα με telnet στην πόρτα 119.
|
||||
|
||||
**HellasNet**: NNTPcache server V2.3.3\
|
||||
**otenet**: -\
|
||||
**SparkNet**: -\
|
||||
**PanafoNet**: -\
|
||||
**GroovyNet**: -\
|
||||
**forthnet**: NNTPcache server V2.3.3\
|
||||
**HOL**: -\
|
||||
**Compulink**: InterNetNews NNRP server INN 2.2.1\
|
||||
**TEE**: -\
|
||||
**Internet Hellas**: -\
|
||||
**stsnet**: -\
|
||||
**mbn**: -
|
||||
|
||||
|
||||
### [5. Αναλύσεις\...]{#s5}
|
||||
|
||||
Από μια βασική ανάλυση, φαίνεται ότι το **Solaris** έχει τη μερίδα του λέωντος, πράγμα πολύ καλό αν αναλογιστούμε πόσο σταθερό και αξιόπιστο θεωρείται.
|
||||
|
||||
Από την άλλη στους εξηπηρετητές web φαίνεται οτι ο **Apache** και ο **Netscape** είναι η πιο χρησιμοποιούμενη λύση.
|
||||
|
||||
Όσο για τους **mail servers**, ε εδώ δεν χρειάζεται ανάλυση, το **sendmail** είναι ο αδιαμφισβήτητος (και αναμενόμενος) βασιλιάς. Οπαδοί του **Q**
|
||||
μαζευτείτεεεεε!
|
||||
|
||||
|
||||
### [6. Ευχαριστίες.]{#s6}
|
||||
|
||||
Τέλος να ευχαριστίσω για τιw πληροφορίες που μας έδωσαν:
|
||||
|
||||
τον Κύριο Αντώνιο Πετράκη απο την HellasNet,\
|
||||
τον Κύριο Αχιλλέα Βολίοτη απο την Otenet,\
|
||||
τον Κύριο Νίκο Ασλανάκη απο την SparkNet,\
|
||||
την κυρία Ζωή Παπακωνσταντίνου απο την Panafonet,
|
||||
|
372
content/articles/29/03_hellenic-status.md
Κανονικό αρχείο
372
content/articles/29/03_hellenic-status.md
Κανονικό αρχείο
|
@ -0,0 +1,372 @@
|
|||
+++
|
||||
title = 'Το Linux στην Ελλάδα'
|
||||
date = '2000-02-01T00:00:00Z'
|
||||
description = ''
|
||||
author = 'Evripidis Papakostas (evris@hellug.gr) Voula Sanida (voulariba@hellug.gr)'
|
||||
issue = ['Magaz 29']
|
||||
issue_weight = 3
|
||||
+++
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
*Φαίνεται πως κάτι αρχίζει να κινείται στον Ελληνικό χώρο όσον αφορά στο Linux. Η Ελληνική Linux κοινότητα πολλαπλασιάζει τα μέλη της, νέα οργανωμένα sites και
|
||||
λίστες συζητήσεων εμφανίζονται, πρόοδος σημειώνεται στον χώρο της υποστήριξης και ενσωμάτωσης ελληνικών στο λειτουργικό αυτό. Παράλληλα, το Linux κεντρίζει
|
||||
πλέον το ενδιαφέρον των ελληνικών περιοδικών, βιβλιοπωλείων, εταιριών, ακόμα και των Κρατικών Οργανισμών που βλέπουν μια πιθανή αγορά να δημιουργείται. Τις
|
||||
περισσότερες φορές οι διεθνείς εξελίξεις στην Πληροφορική, τελικά υιοθετούνται και από την Ελληνική αγορά (έστω και με μια διαφορά φάσης). Από αυτή την πλευρά,
|
||||
παρουσιάζει ιδιαίτερο ενδιαφέρον να καταγράψουμε την μέχρι τώρα εικόνα της ελληνικής Linux σκηνής και πως αυτή επηρεάστηκε το τελευταίο διάστημα.*
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
**1. Ελληνική Linux Κοινότητα**
|
||||
-----------------------------------------------------------------
|
||||
|
||||
**2. Linux και Ελληνικά Σχολεία**
|
||||
-------------------------------------------------------------------
|
||||
|
||||
**3. H Εμπορική Πλευρά**
|
||||
----------------------------------------------------------
|
||||
|
||||
- [3.1 Providers - Ένωση Ελλήνων Χρηστών Internet (EEXI)](#ss3.1)
|
||||
- [3.2 Προεγκατεστημένα Linux - ΥΕΠ και Μακεδονικά Περιφερειακά](#ss3.2)
|
||||
- [3.3 Πώληση και Υποστήριξη Συστημάτων. Step Computers](#ss3.3)
|
||||
|
||||
**4. Έντυπη πληροφόρηση και Linux**
|
||||
---------------------------------------------------------------------
|
||||
|
||||
**5. To Ελληνικό Linux με αριθμούς**
|
||||
----------------------------------------------------------------------
|
||||
|
||||
|
||||
### [1. Ελληνική Linux Κοινότητα]{#s1}
|
||||
|
||||
Μέχρι κάποια εποχή οι Έλληνες Linuxάδες αποτελούσαν μια αμελητέα μειοψηφία ανάμεσα στο σύνολο των υπολοίπων χρηστών Η/Υ. Η πρώτη επίσημη προσπάθεια καταμέτρησης
|
||||
των Ελλήνων χρηστών Linux έγινε κάπου στα μέσα του 1996 και αυτοί που δηλώθηκαν δεν ξεπερνούσαν τους 50. Σήμερα σε τελευταία καταμέτρησή τους από το ελληνικό
|
||||
ηλεκτρονικό περιοδικό για Linux, magaz (http://magaz.hellug.gr) ξεπερνούν τους 450 (αύξηση 800%). Αν οι απόλυτοι αριθμοί αυτοί σας φαίνονται μικροί, σκεφτείτε
|
||||
πόσοι από εσάς έχετε συνδρομή internet και την χρησιμοποιήσατε μάλιστα για να δηλώσετε σε κάποιο δικτυακό τόπο ποιό λειτουργικό σύστημα χρησιμοποιείτε.
|
||||
|
||||
Υπήρχαν βέβαια από τότε κάποιες λιγοστές μεμονωμένες σελίδες σχετικά με το Linux, στις οποίες οι τότε γκουρού έδιναν τεχνικές συμβουλές και βοήθεια στους
|
||||
απεγνωσμένους (υποστήριξη ελληνικών, γραμματοσειρές).
|
||||
|
||||
Στα λίγα αυτά χρόνια που πέρασαν η κατάσταση έχει σαφώς καλυτερεύσει. Ενδεικτικά αναφέρουμε μερικά από τα μεγαλύτερα και γνωστότερα sites: http://www.linux.gr
|
||||
(Φθινόπωρο 1997), του επίσημου site του HELLUG http://www.hellug.gr, το ηλεκτρονικό περιοδικό magaz (http://magaz.hellug.gr), την ΕΕΕΑ (http://www.eeea.gr).
|
||||
|
||||
Κάπου τον Φεβρουάριο του 1997 γίνεται το σημαντικότερο ίσως βήμα για την ελληνική Linux κοινότητα. Ο Γιάννης Ιωάννου δημιουργεί την ηλεκτρονική λίστα
|
||||
linux-greek-users στον κόμβο argeas.argos.hol.gr. Η λίστα αυτή ασχολείται με την επίλυση προβλημάτων χρήσης του Linux και γενικότερα με οποιοδήποτε θέμα που
|
||||
άπτεται του ενδιαφέροντος των Ελλήνων Linuxάδων. Αποτελεί δε ορόσημο στην πορεία του Linux στην Ελλάδα, καθώς έφερε σε επαφή όλους τους (μέχρι τότε μοναχικούς
|
||||
και αποκομμένους) Linuxάδες, αναπτέρωσε το ηθικό και τις ελπίδες τους και αποτέλεσε το μέσο για την σύσφιξη των δεσμών τους και την ανάπτυξη της ιδέας της
|
||||
κοινότητας (μιας ιδέας που είναι στενά συνυφασμένη με το Linux γενικότερα).
|
||||
|
||||
Σήμερα, η λίστα αυτή αριθμεί επισήμως περί τα 200 μέλη (300% αύξηση μελών στα δύο χρόνια λειτουργίας της) και αρκετές φορές πολλαπλάσιο αριθμό ατόμων που την
|
||||
παρακολουθούν χωρίς να είναι εγγεγραμμένοι. Αυτό πρακτικά σημαίνει πως ο νέος χρήστης που αντιμετωπίζει προβλήματα με το Linux (και που δεν μπορεί να λύσει
|
||||
μόνος του) έχει μεγάλες πιθανότητες να βρει την λύση του αν καταφύγει (με ευγενικό τρόπο) στην βοήθεια του τεράστιου think tunk της ελληνικής Linux κοινότητας.
|
||||
|
||||
Παράλληλα, έχει μπει σε λειτουργία η linux-howto. Διαθέτει πάνω από 60 μέλη, στην οποία συζητούνται προβλήματα τεκμηρίωσης, μεταφράσεων, εξελληνισμών
|
||||
προγραμμάτων και διανομών (60 εθελοντές μεταφραστές και συγγραφείς δεν είναι και λίγοι!).
|
||||
|
||||
Η δραστηριοποίηση των ελλήνων Linuxάδων οδήγησε και στο σχηματισμό του επίσημου συλλόγου Linuxάδων HELLUG (Hellenic Linux Users Group) που σήμερα αριθμεί περί
|
||||
τα 100 μέλη.
|
||||
|
||||
Ο σκοπός του συλλόγου είναι η ανάπτυξη εφαρμογών, η σύσφιξη των σχέσεων των Ελλήνων χρηστών Linux, η προώθηση και η διάδοση του λειτουργικού, ο εξελληνισμός
|
||||
μέρους του και η συνεργασία με αντίστοιχους συλλόγους, οργανισμούς και εταιρίες εντός και εκτός Ελλάδας.
|
||||
|
||||
Ανεπίσημα τοπικά LUGs υπάρχουν επίσης στην Θεσ/κη (TheLUG), Πάτρα (PLUG), Αλεξανδρούπολη (ALLUG) και Θράκη (ThraceLUG).
|
||||
|
||||
Μέσω του συλλόγου, μπόρεσαν να οργανωθούν, συστηματοποιηθούν και συνεχιστούν οι ανεξάρτητες συνεισφορές των διαφόρων Linuxάδων και έτσι πλέον στον κόμβο του θα
|
||||
βρείτε λύση για χρόνια προβλήματα που ταλαιπωρούσαν τον κόσμο: ελληνικά πληκτρολόγια, γραμματοσειρές, εκτυπώσεις με ελληνικά, μεταφρασμένη τεκμηρίωση και
|
||||
εφαρμογές, ελληνικοποιημένες διανομές (π.χ. SuSE), διορθωτές ορθογραφίας, ερωταπαντήσεις (FAQ), οδηγίες κλπ. Πλέον περιβάλλοντα όπως το KDE, Gnome έχουν σχεδόν
|
||||
ολικά εξελληνιστεί.
|
||||
|
||||
Στις δραστηριότητες του HELLUG περιλαμβάνονται happenings (όπως αυτό στην Στουρνάρη, όπου μοιράστηκαν δωρεάν διανομές Linux και ενημερωτικό υλικό, το
|
||||
παρακολούθησαν περί τα 2000 άτομα), παρουσία σε εκθέσεις (περίπτερο στην INFOSYSTEM 99) κλπ.
|
||||
|
||||
Σημαντική εξέλιξη του χώρου αποτέλεσε και η κυκλοφορία (Ιανουάριος 1998) του ηλεκτρονικού περιοδικού για Linux, magaz (http://magaz.hellug.gr) με άνω των 2500
|
||||
hits μηνιαίως και με συντακτική ομάδα άνω των 10 αρθρογράφων.
|
||||
|
||||
Βλέπουμε πως η δουλειά που έχει γίνει και η πληροφόρηση που προσφέρεται γύρω από το Linux στον ελληνικό χώρο είναι δυσανάλογα μεγάλη σε σχέση με την διάδοση
|
||||
του. Δεν είμαστε ενήμεροι για αντίστοιχους αφιλοκερδείς συλλόγους, λίστες βοηθείας και δωρεάν ηλεκτρονικά περιοδικά και τόπους στην Ελλάδα για άλλα λειτουργικά.
|
||||
|
||||
|
||||
### [2. Linux και Ελληνικά Σχολεία]{#s2}
|
||||
|
||||
Στις 22 Απριλίου 1999, το Υπουργείο Εθνικής Παιδείας και Θρησκευμάτων προκυρήσει διαγωνισμό για την προμήθεια αρκετών χιλιάδων Η/Υ για τα Ενιαία Λύκεια με
|
||||
προεγκατάσταση 2 Λ.Σ. εκ των οποίων το ένα θα πρέπει να είναι \"τύπου Linux\". Λίγους μήνες πριν, η Αγγλία, η Γαλλία και το Μεξικό είχαν προβεί σε αντίστοιχες
|
||||
ενέργειες. Ο διαγωνισμός αυτός αναγκαστικά κινεί το ενδιαφέρον των μεγάλων εταιριών γύρω από το λειτουργικό αυτό. Να σημειωθεί πως μέχρι σήμερα ο διαγωνισμός
|
||||
δεν έχει κριθεί.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
Τέτοιοι διαγωνισμοί προκυρήχτηκαν παράλληλα για όλα τα γεωγραφικά διαμερίσματα της Ελλάδας.
|
||||
|
||||
To ΥΠΕΠΘ συνεχίζει να εκπλήσσει ευχάριστα τον κόσμο, παρακολουθώντας από κοντά τις εξελίξεις και αναβαθμίζοντας μέσα σε λίγους μήνες και το πρόγραμμα σπουδών
|
||||
του, όπως φαίνεται και στο απόκομμα από το μάθημα Λειτουργικά Συστήματα για τα ΤΕΕ.
|
||||
|
||||

|
||||
|
||||
|
||||
### [3. H Εμπορική Πλευρά]{#s3}
|
||||
|
||||
Κατηγορηματικά μπορούμε να πούμε πως αυτή τη στιγμή, το Linux κάθε άλλο παρά πρωταγωνιστεί στις δραστηριότητες των περισσοτέρων εταιριών. Με την ίδια βεβαιότητα
|
||||
πάντως μπορούμε να ισχυριστούμε πως ο αριθμός των εταιριών που βλέπουν πλέον με άλλο μάτι το λειτουργικό αυτό δεν είναι αμελητέος (ειδικά σε σύγκριση με το
|
||||
παρελθόν).
|
||||
|
||||
Ολοένα και περισσότερες εταιρίες αρχίζουν να ασχολούνται συστηματικά με τον χώρο του Linux, καθώς σιγά σιγά αρχίζουν να βλέπουν να αποτελεί ένα υπολογίσιμο
|
||||
μέρος της πίτας της αγοράς. Ενδεικτικά αναφέρουμε εταιρίες όπως η Step στον Πειραιά, τα Μακεδονικά Περιφερειακά και την ΥΕΠ (Υπηρεσίες Εφαρμοσμένης
|
||||
Πληροφορικής) στην Θεσ/κη που ήδη προσφέρουν Η/Υ με προεγκατεστημένο Linux.
|
||||
|
||||
Στον χώρο της τεχνικής υποστήριξης, οι πατροπαράδοτα μεγάλες εταιρίες, όπως η Compaq και η HP, έχουν (ή προσπαθούν) να αλλάξουν την πολιτική τους και να
|
||||
ακολουθήσουν τη γραμμή που υπαγορεύει η μητρική εταιρεία (τεχνική υποστήριξη σε Linux αλλά και πώληση). Από όσο είμαστε ενήμεροι, υπάρχουν σκέψεις από μεγάλες
|
||||
ελληνικές εταιρίες για κυκλοφορία σειρών Η/Υ με προεγκατεστημένο Linux και από τις αλυσίδες λιανικής διάθεσης που διαθέτουν.
|
||||
|
||||
Επίσης, όπως εδώ και καιρό συμβαίνει στο εξωτερικό, υπάρχουν κάποιες εταιρείες που το στηρίζουν επενδύοντας σε μακροπρόθεσμα έμμεσα oφέλη από αυτήν την κίνηση.
|
||||
Έτσι, δεν είναι λίγοι αυτοί που έχουν βοηθήσει ενεργά την ελληνική Linux κοινότητα με διάφορους τρόπους.
|
||||
|
||||
Η Forthnet, για παράδειγμα, χορηγεί στον σύλλογο HELLUG τη γραμμή που εξυπηρετεί το www.hellug.gr, η Internet Hellas το www.linux.gr (και παλαιότερα η HOL), η
|
||||
ΕΕΧΙ έχει επίσης προσφερθεί να βοηθήσει αναλόγως όπου χρειαστεί.
|
||||
|
||||
Κάποιοι άλλοι όπως τα Μακεδονικά Περιφερειακά και η SYSWARE, έχουν δωρίσει τους απολύτως αναγκαίους servers, ενώ υπάρχουν και περιπτώσεις εταιριών που έχουν
|
||||
εμπλακεί προάγοντας το Linux, χωρίς καν να άπτεται των δραστηριοτήτων τους (όπως π.χ. η Modus Vivendi που ανέλαβε την διακόσμηση και τα έξοδα του περιπτέρου
|
||||
στην INFOSYSTEM 99).
|
||||
|
||||
Μιλήσαμε με μερικούς αντιπροσώπους των χαρακτηριστικότερων κατηγοριών εταιριών που στις εμπορικές τους δραστηριότητες ήδη περιλαμβάνουν το Linux.
|
||||
|
||||
### [3.1 Providers - Ένωση Ελλήνων Χρηστών Internet (EEXI)]{#ss3.1}
|
||||
|
||||
Ο κ. Αλέξης Κουλουμπής υπεύθυνος για την διαχείριση του δικτύου της ΕΕΧΙ μας αναφέρει:
|
||||
|
||||
\"Η EEXI είναι μια Ένωση μη κερδοσκοπικού χαρακτήρα. Από την πρώτη κιόλας μέρα λειτουργίας της, το δίκτυο της βασίζεται εξ\'ολοκλήρου πάνω σε Linux.
|
||||
|
||||
Η απόφαση αυτή πάρθηκε λαμβάνοντας υπόψιν την σταθερότητα που επιδείκνυε το εν λόγω λειτουργικό σύστημα, την εμπειρία των system administrators με αυτό, την
|
||||
πληθώρα εφαρμογών που υπήρχαν διαθέσιμες στο δίκτυο καθώς και το ανύπαρκτο κόστος αρχικής κτήσης του λογισμικού.
|
||||
|
||||
Σημαντικό ήταν για εμάς επίσης το γεγονός πως δεν ήμασταν αποκομμένοι από τους \*προμηθευτές\* του λογισμικού. Αυτοί καθώς γνωρίζετε δεν είναι άλλοι από την
|
||||
Linux κοινότητα, κοινοί άνθρωποι με τους οποίους μπορούμε να έρθουμε άμεσα σε επαφή και να συνεργαστούμε για να διορθώσουμε οποιαδήποτε προβλήματα.
|
||||
|
||||
Από την άλλη, η προσφορά του κώδικα των εφαρμογών, κάνει το customization πολύ πιο εύκολο.
|
||||
|
||||
Αξίζει να σημειώσουμε πως από το 1993 μέχρι σήμερα, υπάρχουν Linux μηχανήματα που παραμένουν σε λειτουργία, με συνεχείς on-line αναβαθμίσεις, επιδεικνύοντας
|
||||
άψογη συμπεριφορά.
|
||||
|
||||
Η ΕΕΧΙ εξυπηρετεί άνω των 2000 μελών, προσφέροντας τους όλες τις συνήθεις διαδικτυακές υπηρεσίες, καθώς και δυνατότητα χρήσης unix shell.
|
||||
|
||||
Μέσα στις δραστηριότητές μας συμπεριλαμβάνονται και Linux specific σεμινάρια σε ιδιώτες και οργανισμούς, καθώς και συνεργασίες με το HELLUG στον οποίο μερικοί
|
||||
από μας τυγχάνουν και ενεργά μέλη\"
|
||||
|
||||
### [3.2 Προεγκατεστημένα Linux - ΥΕΠ και Μακεδονικά Περιφερειακά]{#ss3.2}
|
||||
|
||||
\"Διαπιστώνουμε καθημερινά, ότι και ο επιχειρηματικός κόσμος αναγνωρίζει τα πλεονεκτήματα του Linux και προχωράει βαθμιαία στην εφαρμογή του. Αναμένουμε όμως
|
||||
αντίστοιχη ανταπόκριση και από τους Home users. Οι μέχρι τώρα δραστηριότητές μας, όσον αφορά τον χώρο του Linux, μπορούν να συνοψιστούν στα εξής:
|
||||
|
||||
Αντιπροσωπεύουμε την διανομή SuSE και παρέχουμε δωρεάν τηλεφωνική υποστήριξη εγκατάστασης για 60 ημέρες (μόνο για την τρέχουσα έκδοση).
|
||||
|
||||
Τα \"Μακεδονικά Περιφερειακά\" με την συνεργασία μας παράγουν την σειρά υπολογιστών XpePPer με λειτουργικό σύστημα Linux (SuSE).
|
||||
|
||||
Από την εταιρεία μας ζητείται συνήθως η προμήθεια και εγκατάσταση file και print servers καθώς επίσης FAX servers, DNS, proxy κλπ.
|
||||
|
||||
Αντιπροσωπεύουμε στην Ελλάδα το εξελληνισμένο λογισμικό διαχείρισης νοσοκομειακών εργαστηρίων της γερμανικής εταιρείας IMP. Το λογισμικό αυτό τρέχει σε Linux με
|
||||
αρχιτεκτονική client/server.
|
||||
|
||||
Το Υπουργείο Παιδείας σε πρόσφατο μεγάλο διαγωνισμό για τον εξοπλισμό των εργαστηρίων Πληροφορικής και Φυσικής ζήτησε οι προσφορές να περιλαμβάνουν
|
||||
εγκατεστημένο λειτουργικό σύστημα πλην των Windows και Linux. Η InfoQuest συμμετείχε σ\' αυτόν τον διαγωνισμό συνεργαζόμενη μαζί μας στο μέρος που σχετίζεται με
|
||||
το Linux.
|
||||
|
||||
Στη συνεισφορά μας για την προώθηση του Linux μεταξύ άλλων συγκαταλέγεται μια σειρά ολιγόλεπτων δυστυχώς παρουσιάσεων στην εκπομπή PCTV της ΕΤ3 καθώς και η
|
||||
προβολή μέσω του δικτυακού τόπου μας www.suse.gr. Επίσης προσπαθούμε να βοηθάμε την εξάπλωση του λειτουργικού αυτού, με όποιον τρόπο μπορούμε. Χαρακτηριστικά
|
||||
αναφέρω την αρμονική μας συνεργασία με το HELLUG, το οποίο τόσο εμείς όσο και τα Μακεδονικά Περιφερειακά έχουμε ενισχύσει κατά καιρούς, χορηγώντας διανομές
|
||||
Linux και Η/Υ σε εκθέσεις όπως η INFOSYSTEM και διάφορα happenings που διοργανώθηκαν.\"
|
||||
|
||||
Γ. Παπαδόπουλος
|
||||
|
||||
Υπηρεσίες Εφαρμοσμένης Πληροφορικής
|
||||
|
||||
Δωδεκανήσου 61, 551 31 Θεσσαλονίκη
|
||||
|
||||
Τηλ: 031-424512, FAX: 031-417537
|
||||
|
||||
### [3.3 Πώληση και Υποστήριξη Συστημάτων. Step Computers]{#ss3.3}
|
||||
|
||||
\"Η Step δημιουργήθηκε στα τέλη του 1994 με αντικείμενο την πώληση και συντήρηση εξοπλισμού Η/Υ και την παροχή ολοκληρωμένων λύσεων LAN στις μικρομεσαίες
|
||||
επιχειρήσεις. Η έδρα μας είναι στον Πειραιά και δραστηριοποιούμαστε σε ολόκληρη την Αττική.
|
||||
|
||||
Από τα μέσα του 1996 πειραματιστήκαμε με το Linux και αρκετά αργότερα ξεκινήσαμε μια συνεργασία με την SuSE, της οποίας αποτελέσαμε τον αρχικό distributor στην
|
||||
Ελλάδα.
|
||||
|
||||
Η εταιρία μας έχει πλέον μεγάλη εμπειρία στο Linux και στις εφαρμογές του στον επιχειρηματικό χώρο. Αρκετοί από τους πελάτες μας βασίζονται σε αυτό για τις
|
||||
καθημερινές τους ανάγκες, σε επίπεδο server βέβαια ακόμα.
|
||||
|
||||
Έχουμε συνεργαστεί με το HELLUG για τον εξελληνισμό της διανομής SuSE Linux, και έχουμε στηρίξει σε αρκετές περιστάσεις, με παροχή υλικού, διανομών και άλλες
|
||||
χορηγίες τις προσπάθειες του συλλόγου.
|
||||
|
||||
Η ίδια η εταιρία μας καλύπτει τις δικτυακές της ανάγκες βασισμένη σε σύστημα Linux και την τεχνογνωσία που αποκομμίζουμε από αυτό, θα προσπαθήσουμε να την
|
||||
περάσουμε και στην αγορά σε συστήματα που θα παρέχουμε. Μια τέτοια συνεργασία με μεγάλη εταιρία πληροφορικής είναι σε εξέλιξη.
|
||||
|
||||
Έχουμε συνεργαστεί με το HELLUG για τον εξελληνισμό της διανομής SuSE Linux, και έχουμε στηρίξει σε αρκετές περιστάσεις, με παροχή υλικού, διανομών και άλλες
|
||||
χορηγίες τις προσπάθειες του συλλόγου.
|
||||
|
||||
Επειδή πιστεύουμε πως η ενίσχυση της Linux κοινότητας έμμεσα ή άμεσα ωφελεί και τις επιχειρηματικές μας δραστηριότητες, προσπαθούμε να προσφέρουμε και στον χώρο
|
||||
αυτό. Στα σχέδια μας συμπεριλαμβάνεται η συγγραφή εγχειριδίου για Linux για τον άπειρο χρήστη με σκοπό να τον ενημερώσει για τις ιδιαιτερότητες των διάφορων
|
||||
διανομών Linux. \"
|
||||
|
||||
Γιώργος Παπαμιχελάκης
|
||||
|
||||
Step Computers
|
||||
|
||||
|
||||
### [4. Έντυπη πληροφόρηση και Linux]{#s4}
|
||||
|
||||
Αν ξεφυλλίσετε προσεκτικά τα γνωστότερα περιοδικά του χώρου της πληροφορικής θα παρατηρήσετε πως πλέον σταθερά θα βρείτε άρθρα, αφιερώματα, ερωταπαντήσεις, νέα
|
||||
και προγράμματα για Linux.
|
||||
|
||||
Μέχρι κάποιο διάστημα, το ηλεκτρονικό περιοδικό magaz ήταν το μοναδικό βήμα για το, ομολογουμένως ολιγομελές, ελληνικό Linux κοινό.
|
||||
|
||||
Στον έντυπο χώρο, οι επιλογές περιορίζονταν σε εξειδικευμένες εκδόσεις του εξωτερικού (βλέπε Linux Journal).
|
||||
|
||||
Δειλά δειλά το 1998 αρχίζουν να εμφανίζονται μικρά άρθρα και νέα για Linux, ενώ η τάση αυτή γίνεται ιδιαίτερα αισθητή από τα μέσα του 1999.
|
||||
|
||||
Για παράδειγμα, το RAM του Απριλίου (τεύχος 124) κάνει το πρώτο εκτεταμένο αφιέρωμα για Linux, διαθέτοντας πάνω από 40 σελίδες, καθώς και μια ολοκληρωμένη
|
||||
διανομή SuSE 6.0.
|
||||
|
||||
Παρεμφερή πολιτική ακολούθησαν και τα υπόλοιπα περιοδικά όπως το Chip, το Computer Για Όλους κλπ.
|
||||
|
||||
Ακόμα και μη τεχνικά περιοδικά ή εφημερίδες έχουν αφιερώσει σελίδες τους στο νέο αυτό λειτουργικό. Ενδεικτικά αναφέρουμε το ΜΕΝ, το ΜΕΤΡΟ, το Βήμα, την
|
||||
Ελευθεροτυπία.
|
||||
|
||||
Ας μην ξεχνάμε και την κυκλοφορία του D.I.Li.Ma που αποτελεί το πρώτο εξειδικευμένο περιοδικό για Unix.
|
||||
|
||||
Το γεγονός αυτό μιλάει από μόνο του. Η ύλη των εντύπων θα πρέπει να βρίσκεται σε συμφωνία με το ενδιαφέρον και τις προτιμήσεις του αγοραστικού κοινού.
|
||||
Περισσότερες λοιπόν σελίδες για Linux/Unix ένα πράγμα μπορεί να σημαίνει: αυξημένη απήχηση του λειτουργικού στους αναγνώστες.
|
||||
|
||||
|
||||
### [5. To Ελληνικό Linux με αριθμούς]{#s5}
|
||||
|
||||
Καταμέτρηση Χρηστών Linux Ελλάδας (στοιχεία από το magaz.hellug.gr)
|
||||
|
||||
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
|
||||
\ Αριθμός Χρηστών
|
||||
Έτος
|
||||
|
||||
1996 50
|
||||
|
||||
1999 450
|
||||
|
||||
|
||||
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
|
||||
|
||||
Αριθμός Λιστών Ηλεκτρονικών Μηνυμάτων
|
||||
|
||||
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
|
||||
\ Αριθμός Λιστών
|
||||
Έτος
|
||||
|
||||
1996 0
|
||||
|
||||
1997 2
|
||||
|
||||
1998 4
|
||||
|
||||
|
||||
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
|
||||
|
||||
Οι λίστες αυτές είναι οι :
|
||||
|
||||
linux-greek-users\@hellug.gr για κάθε είδους συζήτηση και τεχνικά προβλήματα σχετικά με Linux.
|
||||
|
||||
linux-howto\@hellug.gr για μεταφραστικά ζητήματα και συγγραφή τεκμηρίωσης για Linux.
|
||||
|
||||
hellug\@hellug.gr για διαδικαστικά θέματα από τα μέλη του συλλόγου HELLUG
|
||||
|
||||
thelug (από newsgroup στο edessa.topo.auth.gr) για την επικοινωνία των μελών του Θεσσαλονικιώτικου LUG
|
||||
|
||||
Χρήστες της linux-greek-users (δεν προσμετρούνται οι χρήστες που τη διαβάζουν μέσω newsgroup και που είναι αρκετές φορές πολλαπλάσιοι)
|
||||
|
||||
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
|
||||
\ Αριθμός Χρηστών
|
||||
Έτος
|
||||
|
||||
1997 50 (3978 Messages)
|
||||
|
||||
Μέσα του 1999 200 (9000 Messages)
|
||||
|
||||
|
||||
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
|
||||
|
||||
Ο διεθνής counter χρηστών Linux (counter.li.org) δίνει:
|
||||
|
||||
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
|
||||
\ Χρήστες
|
||||
Χώρα
|
||||
|
||||
Κύπρος 70
|
||||
|
||||
Ελλάδα 518
|
||||
|
||||
|
||||
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
|
||||
|
||||

|
||||
|
||||
Ιδιαίτερο ενδιαφέρον παρουσιάζει η πρόβλεψη του Linux Counter για τον πραγματικό αριθμό χρηστών Linux. Με αναγωγή στα δεδομένα της Ελλάδας ο αριθμός των H/Y με
|
||||
Linux κυμαίνεται μεταξύ των 10360 και 200000 μηχανημάτων!
|
||||
|
||||
Αριθμός Linux Users Groups (LUGs)
|
||||
|
||||
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
|
||||
\ Αριθμός LUGs
|
||||
Έτος
|
||||
|
||||
1996 0
|
||||
|
||||
1997 1
|
||||
|
||||
1998 3
|
||||
|
||||
1999 5
|
||||
|
||||
|
||||
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
|
||||
|
||||
Επίσημος σύλλογος: HELLUG (http://www.hellug.gr)
|
||||
|
||||
Τοπικά LUGs:
|
||||
|
||||
TheLUG (http://hal.csd.auth.gr/thelug)
|
||||
|
||||
PLUG (http://students.ceid.upatras.gr/ glavas/linux)
|
||||
|
||||
ALLUG (http://www.neta.gr/allug)
|
||||
|
||||
ThraceLUG (http://www.thracelug.gr)
|
||||
|
||||
Αρθρογράφοι του magaz
|
||||
|
||||
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
|
||||
\ Αριθμός
|
||||
Έτος
|
||||
|
||||
1998 4 (800 hits/month)
|
||||
|
||||
1999 10 (3500 hits/month)
|
||||
|
||||
|
||||
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
|
||||
|
||||
Άρθρα του RAM με εκτεταμένες αναφορές στο Linux
|
||||
|
||||
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
|
||||
\ Αριθμός
|
||||
Έτος
|
||||
|
||||
1997 0
|
||||
|
||||
1998 20 (περίπου)
|
||||
|
||||
1999 50 (περίπου)
|
||||
|
||||
2000 25 (περίπου - μέχρι Απρίλιο)
|
||||
|
||||
|
||||
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
|
||||
|
||||
Συνολικά Hits στον κόμβο του HELLUG σε 14 μήνες λειτουργίας: 1894265
|
||||
|
336
content/articles/29/04_xbasic.md
Κανονικό αρχείο
336
content/articles/29/04_xbasic.md
Κανονικό αρχείο
|
@ -0,0 +1,336 @@
|
|||
+++
|
||||
title = 'Xbasic'
|
||||
date = '2000-12-01T00:00:00Z'
|
||||
description = ''
|
||||
author = 'Κώστας Τσακάλογλου(mailto:tsakf@hellug.gr)'
|
||||
issue = ['Magaz 29']
|
||||
issue_weight = 4
|
||||
+++
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
*Συναρτήσεις στην XBASIC.*
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
**1. Οι συναρτήσεις**
|
||||
----------------------------------------------
|
||||
|
||||
**2. Παράδειγμα συνάρτησης.**
|
||||
------------------------------------------------------
|
||||
|
||||
- [2.1 Επεξήγηση του προγράμματος](#ss2.1)
|
||||
|
||||
**3. Πως λειτουργούν οι συναρτήσεις**
|
||||
--------------------------------------------------------------
|
||||
|
||||
- [3.1 Συναρτήσεις και δομημένος προγραμματισμός](#ss3.1)
|
||||
- [3.2 Γιατί το να γράφουμε δομημένα με συναρτήσεις είναι σημαντικό;](#ss3.2)
|
||||
- [3.3 Σχεδιάζοντας ένα δομημένο πρόγραμμα.](#ss3.3)
|
||||
- [3.4 Γράφοντας μια συνάρτηση](#ss3.4)
|
||||
- [3.5 Το εσωτερικό της συνάρτησης](#ss3.5)
|
||||
- [3.6 Ο κώδικας των συναρτήσεων.](#ss3.6)
|
||||
|
||||
|
||||
### [1. Οι συναρτήσεις]{#s1}
|
||||
|
||||
Οι συναρτήσεις είναι βασικό δομικό στοιχείο των προγραμμάτων στην Xbasic. Οι συναρτήσεις είναι ανεξάρτητα κομμάτια κώδικα που εκτελούν μια συγκεκριμένη εργασία
|
||||
και μπορεί να επιστρέφουν κάποια τιμή στον κώδικα που τις καλεί.
|
||||
|
||||
Οι ιδιότητες των συναρτήσεων:
|
||||
|
||||
- **Έχουν μοναδικό όνομα.**\
|
||||
Κάθε συνάρτηση έχει ένα μοναδικό όνομα. Η χρήση του ονόματος σε ένα άλλο μέρος του προγράμματος, επιτρέπει την εκτέλεση των εντολών που περιέχονται σε αυτή.
|
||||
Αυτό ονομάζεται και κλήση της συνάρτησης. Μια συνάρτηση μπορεί να καλείται και μέσα από μια άλλη συνάρτηση.
|
||||
- **Ο κώδικας που περιέχουν είναι ανεξάρτητος από το υπόλοιπο πρόγραμμα.**\
|
||||
Όλες οι μεταβλητές που χρησιμοποιούνται δεν έχουν σχέση με τις μεταβλητές που μπορεί να έχουν το ίδιο όνομα και να υπάρχουν αλλού στο πρόγραμμα. Εξαίρεση
|
||||
είναι οι μεταβλητές που εμείς ορίζουμε ότι θα έχουν σχέση με το υπόλοιπο πρόγραμμα όπως θα δούμε παρακάτω.
|
||||
- **Μια συνάρτηση εκτελεί μια συγκεκριμένη εργασία.**\
|
||||
Οι συναρτήσεις συνήθως χρησιμοποιούνται για να εκτελέσουμε συγκεκριμένες εργασίες που μπορεί να χρειαστεί να εκτελεστούν πολλές φορές μέσα σε ένα πρόγραμμα,
|
||||
με διαφορετικά δεδομένα κάθε φορά.
|
||||
- **Μια συνάρτηση μπορεί να επιστρέφει μια τιμή στον κώδικα που την καλεί.**\
|
||||
Όταν το πρόγραμμά μας καλεί μια συνάρτηση, εκτελείται ο κώδικας της συνάρτησης και μπορούμε να έχουμε κάποια τιμή που επιστρέφει από την συνάρτηση σαν
|
||||
αποτέλεσμα της εκτέλεσης του κώδικα.
|
||||
|
||||
|
||||
### [2. Παράδειγμα συνάρτησης.]{#s2}
|
||||
|
||||
Παρακάτω ακολουθεί ένα παράδειγμα συνάρτησης στην XBASIC.
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
1.'
|
||||
2.'
|
||||
3.' ####################
|
||||
4.' ##### PROLOG #####
|
||||
5.' ####################
|
||||
6.'
|
||||
7.PROGRAM "progname" ' 1-8 char program/file name without .x or any .extent
|
||||
8.VERSION "0.0000" ' version number - increment before saving altered program
|
||||
9.'
|
||||
10.' You can stop the PDE from inserting the following PROLOG comment lines
|
||||
11.' by removing them from the prolog.xxx file in your \xb\xxx directory.
|
||||
12.'
|
||||
13.' Programs contain: 1: PROLOG - no executable code - see below
|
||||
14.' 2: Entry function - start execution at 1st declared func
|
||||
15.' * = optional 3: Other functions - everything else - all other functions
|
||||
16.'
|
||||
17.' The PROLOG contains (in this order):
|
||||
18.' * 1. Program name statement PROGRAM "progname"
|
||||
19.' * 2. Version number statement VERSION "0.0000"
|
||||
20.' * 3. Import library statements IMPORT "libName"
|
||||
21.' * 4. Composite type definitions TYPE <typename> ... END TYPE
|
||||
22.' 5. Internal function declarations DECLARE/INTERNAL FUNCTION Func (args)
|
||||
23.' * 6. External function declarations EXTERNAL FUNCTION FuncName (args)
|
||||
24.' * 7. Shared constant definitions $$ConstantName = literal or constant
|
||||
25.' * 8. Shared variable declarations SHARED variable
|
||||
26.'
|
||||
27.' ****** Comment libraries in/out as needed *****
|
||||
28.'
|
||||
29.' IMPORT "xma" ' Math library : SIN/ASIN/SINH/ASINH/LOG/EXP/SQRT...
|
||||
30.' IMPORT "xcm" ' Complex library : complex number library (trig, etc)
|
||||
31.' IMPORT "xst" ' Standard library : required by most programs
|
||||
32.' IMPORT "xgr" ' GraphicsDesigner : required by GuiDesigner programs
|
||||
33.' IMPORT "xui" ' GuiDesigner : required by GuiDesigner programs
|
||||
34.'
|
||||
35.DECLARE FUNCTION Entry ()
|
||||
36.DECLARE FUNCTION SLONG cube (SLONG x)
|
||||
37.'
|
||||
38.'
|
||||
39.' ######################
|
||||
40.' ##### Entry () #####
|
||||
41.' ######################
|
||||
42.'
|
||||
43.' Programs contain:
|
||||
44.' 1. A PROLOG with type/function/constant declarations.
|
||||
45.' 2. This Entry() function where execution begins.
|
||||
46.' 3. Zero or more additional functions.
|
||||
47.'
|
||||
48.FUNCTION Entry ()
|
||||
49. SLONG inpu, answer
|
||||
50. STRING inpus
|
||||
51.
|
||||
52. inpus=INLINE$("Enter number :")
|
||||
53. inpu=SLONG(inpus)
|
||||
54. answer = cube(inpu)
|
||||
55. PRINT answer
|
||||
56.
|
||||
57.
|
||||
58.
|
||||
59.END FUNCTION
|
||||
60.'
|
||||
61.'
|
||||
62.' #####################
|
||||
63.' ##### cube () #####
|
||||
64.' #####################
|
||||
65.'
|
||||
66.FUNCTION SLONG cube (SLONG x)
|
||||
67.
|
||||
68. x_cube = x * x * x
|
||||
69.
|
||||
70.END FUNCTION(x_cube)
|
||||
71.END PROGRAM
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
### [2.1 Επεξήγηση του προγράμματος]{#ss2.1}
|
||||
|
||||
Ας προσπαθήσουμε όμως να κάνουμε μια ανάλυση του παραπάνω προγράμματος. Έχουμε λοιπόν.
|
||||
|
||||
**Γραμμές 1..34**\
|
||||
Εδώ έχουμε τους αρχικούς ορισμούς και το κομμάτι PROLOG όπως έχουμε αναλύσει και στα προηγούμενα τεύχη.
|
||||
|
||||
**Γραμμή 35**\
|
||||
Εδώ έχουμε το ορισμό της συνάρτησης Entry() όπου αναλύοντας τον βλέπουμε ότι αυτή η συνάρτηση δεν έχει παράμετρο.
|
||||
|
||||
**Γραμμή 36**\
|
||||
Σε αυτή την γραμμή ορίζεται η συνάρτηση cube και από τον ορισμό της βλέπουμε ότι αυτή η συνάρτηση είναι τύπου SLONG που σημαίνει ότι θα μας επιστρέψει κάποια
|
||||
τιμή SLONG. Στην λίστα παραμέτρων (αυτή που υπάρχει ανάμεσα στις παρενθέσεις) βλέπουμε ότι η cube δέχεται σαν παράμετρο μια SLONG μεταβλητή για να κάνει τον
|
||||
υπολογισμό. Στο παράδειγμά μας έχουμε ορίσει και την cube και την παράμετρό της ίδιου τύπου. Αυτό δεν είναι δεσμευτικό, μπορούμε να έχουμε μία ή και πολλές
|
||||
παραμέτρους διαφορετικού τύπου από τον τύπο της οριζόμενης συνάρτησης.
|
||||
|
||||
**Γραμμές 48..55**\
|
||||
Στην γραμμές 49 και 50 ορίζουμε τις μεταβλητές που θα χρησιμοποιηθούν μέσα στην Entry. Στην γραμμή 52 παίρνουμε την πληκτρολόγηση του χρήστη στην μεταβλητή
|
||||
τύπου string inpus. Στην γραμμή 53 την μετατρέπουμε σε SLONG για να μπορεί να χρησιμοποιηθεί από την cube. Στην γραμμή 54 καλείται η συνάρτηση cube να κάνει τον
|
||||
υπολογισμό και να επιστρέψει το αποτέλεσμα στην μεταβλητή answer.\
|
||||
Στην γραμμή 55 εμφανίζουμε το αποτέλεσμα στο console window της Xbasic.
|
||||
|
||||
**Γραμμές 66..71**\
|
||||
Εδώ βρίσκεται ο κώδικας της συνάρτησης cube. Στην γραμμή 66 υπάρχει ο ορισμός των παραμέτρων και στην συνέχεια έχουμε τον κώδικα υπολογισμού. Σε αυτή την
|
||||
συνάρτηση έχουμε απλά το υπολογισμό του κύβου (ύψωση στην τρίτη δύναμη) της παραμέτρου x, που βρίσκεται στην γραμμή 68. Στην γραμμή 70, η τοποθέτηση του
|
||||
αποτελέσματος σε παρένθεση κάνει την Xbasic να δώσει την τιμή αυτή σαν αποτέλεσμα υπολογισμού στην συνάρτηση cube και να το επιστρέψει στην μεταβλητή που
|
||||
χρησιμοποιήσαμε για την κλήση της, την answer.
|
||||
|
||||
Με αυτό το απλό παράδειγμα φαίνεται πόσο χρήσιμο είναι να χρησιμοποιούμε συναρτήσεις, εφόσον αν ξαναχρειαστούμε μέσα στο πρόγραμμα να υπολογίσουμε τον κύβο ενός
|
||||
αριθμού δεν έχουμε παρά να καλέσουμε την συνάρτηση.
|
||||
|
||||
Π.χ.
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
SLONG x1,x2
|
||||
|
||||
x1 = 10
|
||||
x2 = cube(x1)
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
### [3. Πως λειτουργούν οι συναρτήσεις]{#s3}
|
||||
|
||||
Ένα πρόγραμμα Xbasic δεν εκτελεί τις εντολές που βρίσκονται σε μια συνάρτηση μέχρι η συνάρτηση να κληθεί από ένα άλλο μέρος του προγράμματος. Όταν η συνάρτηση
|
||||
κληθεί, τότε το πρόγραμμα στέλνει τις παραμέτρους (αν υπάρχουν) στην συνάρτηση. Η παράμετρος είναι κάποια μεταβλητή που περιέχει πληροφορία που είναι απαραίτητη
|
||||
για την εκτέλεση του κώδικα της συνάρτησης. Στην συνέχεια εκτελούνται οι εντολές που περιέχονται στην συνάρτηση εκτελώντας την επιθυμητή εργασία. Όταν τελειώσει
|
||||
η εκτέλεση του κώδικα της συνάρτησης η εκτέλεση συνεχίζεται στην αμέσως επόμενη εντολή μετά την κλήση της συνάρτησης. Οι συναρτήσεις μπορεί να επιστρέφουν
|
||||
κάποια τιμή στο πρόγραμμα που τις κάλεσε.
|
||||
|
||||
### [3.1 Συναρτήσεις και δομημένος προγραμματισμός]{#ss3.1}
|
||||
|
||||
Χρησιμοποιώντας τις συναρτήσεις δημιουργούμε ένα πρόγραμμα που είναι πολύ πιο εύκολο να αναπτυχθεί και να διορθωθεί εκ των υστέρων. Αυτός ο τρόπος συγγραφής
|
||||
προγράμματος ονομάζεται δομημένος προγραμματισμός.
|
||||
|
||||
### [3.2 Γιατί το να γράφουμε δομημένα με συναρτήσεις είναι σημαντικό;]{#ss3.2}
|
||||
|
||||
Είναι πολύ ευκολότερο να προγραμματίζουμε δομημένα γιατί αυτός ο τρόπος προγραμματισμού μας επιτρέπει να αντιμετωπίσουμε το περίπλοκα προβλήματα διαιρώντας τα
|
||||
σε πολλά απλά μικρά. Κάθε μικρό πρόβλημα αντιμετωπίζεται με την δική του συνάρτηση όπου οι μεταβλητές είναι απομονωμένες από το υπόλοιπα πρόγραμμα εκτός από τις
|
||||
παραμέτρους και την τιμή επιστροφής. Έτσι η επίλυση μικρών προβλημάτων ένα κάθε φορά μας επιτρέπει να αναπτύξουμε με μεγαλύτερη ευκολία την εφαρμογή μας.
|
||||
|
||||
Είναι πολύ ευκολότερο να βρίσκουμε τα λάθη σε ένα δομημένο πρόγραμμα. Αν υπάρχει κάποιο λάθος, αυτό μπορεί να περιοριστεί στην αντίστοιχη συνάρτηση και να
|
||||
επιλυθεί. Δεν μπορούμε να το συγκρίνουμε με το πόσο επίπονο θα είναι να ψάχνουμε σε ένα κατεβατό από πολλές γραμμές κώδικα για να εντοπίσουμε το λάθος.
|
||||
|
||||
Ένα πραγματικό πλεονέκτημα των συναρτήσεων είναι ότι αφού γράψουμε μια συνάρτηση για να λύσουμε ένα επιμέρους πρόβλημα τότε αυτή η συνάρτηση είναι διαθέσιμη να
|
||||
χρησιμοποιηθεί ξανά, είτε στο τρέχον πρόγραμμα που γράφουμε, είτε σε κάποιο άλλο μεταγενέστερο. Ακόμα και αν οι ανάγκες του επόμενου προγράμματος είναι λίγο
|
||||
διαφορετικές, είναι πιο απλό να αλλάξουμε λίγο τις εντολές μιας συνάρτησης, παρά να την ξαναγράψουμε από την αρχή.
|
||||
|
||||
### [3.3 Σχεδιάζοντας ένα δομημένο πρόγραμμα.]{#ss3.3}
|
||||
|
||||
Αν θέλετε να σχεδιάσετε ένα δομημένο πρόγραμμα πρέπει πρώτα να κάνετε ένα σχέδιο των λειτουργιών του προγράμματος. Αυτό πρέπει να γίνει πριν ακόμη αρχίζουμε να
|
||||
γράφουμε κάποια γραμμή κώδικα. Είναι ανάγκη να ορισθούν οι λειτουργίες του προγράμματος. Παρακάτω θα δούμε ένα παράδειγμα στησίματος ενός δομημένου
|
||||
προγράμματος. Ας πούμε λοιπό ότι ένα πρόγραμμα θα εκτελεί τις εργασίες:
|
||||
|
||||
- Εισαγωγή νέων ονομάτων και διευθύνσεων
|
||||
- Διόρθωση των στοιχείων που ήδη υπάρχουν
|
||||
- Ταξινόμηση στοιχείων κατά όνομα
|
||||
- Εκτύπωση ετικετών
|
||||
|
||||
Με αυτόν τον κατάλογο εργασιών μπορούμε τώρα να αναλύσουμε κάθε εργασία στις επιμέρους για να ξεκινήσουμε να γράφουμε τον κώδικα. Ας ξεκινήσουμε με το
|
||||
\"Εισαγωγή νέων ονομάτων και διευθύνσεων\"
|
||||
|
||||
- Ανάγνωση των διαθεσίμων ονομάτων από το αρχείο
|
||||
- 'νοιγμα πεδίων στην οθόνη για την καταχώρηση νέων στοιχείων
|
||||
- Προσθήκη νέων στοιχείων στον κατάλογο των ονομάτων
|
||||
- Φύλαξη όλου του καταλόγου
|
||||
|
||||
Το \"Διόρθωση των στοιχείων που ήδη υπάρχουν\" αναλύεται σε:
|
||||
|
||||
- Ανάγνωση των διαθεσίμων ονομάτων από το αρχείο
|
||||
- 'νοιγμα πεδίων στην οθόνη για την διόρθωση των στοιχείων
|
||||
- Φύλαξη όλου του καταλόγου
|
||||
|
||||
Θα παρατηρήσατε ότι και στις δύο περιπτώσεις υπάρχουν δύο κοινές λειτουργίες, η \"Ανάγνωση των διαθεσίμων ονομάτων από το αρχείο\" και η \"Φύλαξη όλου του
|
||||
καταλόγου\". Εδώ φαίνεται καθαρά η οικονομία χρόνου που μπορεί να έχουμε με την χρήση των συναρτήσεων. Θα γράψουμε δύο συναρτήσεις για αυτές τις δύο λειτουργίες
|
||||
και θα τις χρησιμοποιήσουμε την κάθε μια, δύο φορές μέσα στο πρόγραμμά μας. Αυτή η μέθοδος δίνει ιεραρχική δομή στον κώδικα του προγράμματός μας.
|
||||
|
||||
Αν ακολουθήσουμε την μέθοδο της αντιμετώπισης ενός προβλήματος διαιρώντας το σε περισσότερα μικρότερα δημιουργούμε ευανάγνωστα και εύκολα στην διόρθωση
|
||||
προγράμματα. Έτσι θα δείτε πολλά προγράμματα Xbasic να έχουν ένα πολύ μικρό κομμάτι εκτελέσιμου κώδικα στην Entry(), και όλες οι λειτουργίες να γίνονται με
|
||||
συναρτήσεις. Αποφεύγετε να γράφετε μεγάλες συναρτήσεις γιατί χάνονται τα πλεονεκτήματα της χρήσης τους. Επίσης σε ομάδες προγραμματιστών που ο κάθε ένας έχει
|
||||
αναλάβει να γράψει κώδικα για διαφορετικό κομμάτι της εφαρμογής οι συναρτήσεις επιτρέπουν να μην γράφεται πολλές φορές (κάθε φορά από διαφορετικό
|
||||
προγραμματιστή) κώδικας, που εκτελεί την ίδια λειτουργία. Συνήθως η συνάρτηση γράφεται από έναν και είναι διαθέσιμη σε όλους.
|
||||
|
||||
### [3.4 Γράφοντας μια συνάρτηση]{#ss3.4}
|
||||
|
||||
Εδώ θα δούμε λίγο πιο αναλυτικά αυτά που είδαμε παραπάνω στο παράδειγμά μας.
|
||||
|
||||
Το πρώτο βήμα για να γράψουμε μια συνάρτηση είναι να έχουμε αποφασίσει τι θα κάνει. Όταν ξέρουμε τι θέλουμε να κάνει η συνάρτηση, είναι σχετικά εύκολο να την
|
||||
γράψουμε. Στην πρώτη γραμμή της συνάρτησης, ορίζονται:
|
||||
|
||||
- Το όνομά της
|
||||
- Ο τύπος της συνάρτησης
|
||||
- Η λίστα παραμέτρων (αν χρειάζεται)
|
||||
|
||||
Στο παράδειγμά μας, στην γραμμή 66 έχουμε: `FUNCTION SLONG cube (SLONG x)`
|
||||
|
||||
Αναλύοντας αυτή την γραμμή έχουμε:
|
||||
|
||||
- Την εντολή `FUNCTION` που δηλώνει ότι ξεκινά από εδώ και πέρα κώδικας που ανήκει σε συνάρτηση και οι μεταβλητές που θα βρεθούν δεν έχουν σχέση με τυχόν
|
||||
ίδιου ονόματος σε άλλα σημεία του προγράμματος.
|
||||
|
||||
- Τον τύπο `SLONG` που σημαίνει ότι αυτή η συνάρτηση θα επιστρέψει τιμή τύπου `SLONG`. Ο τύπος της συνάρτησης μπορεί να είναι οποιοσδήποτε από τους τύπους
|
||||
μεταβλητών της Xbasic που έχουμε αναφέρει σε προηγούμενα άρθρα.\
|
||||
Ετσι οι ορισμοί:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
FUNCTION STRING retstr ..
|
||||
FUNCTION SSHORT test .
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
ορίζουν συναρτήσεις τύπου `STRING` και `SSHORT` αντίστοιχα.
|
||||
|
||||
- Το όνομα της συνάρτησης που είναι το `cube`. Τα ονόματα των συναρτήσεων ακολουθούν του ίδιους κανόνες με τα ονόματα των μεταβλητών που έχουμε αναφέρει.
|
||||
|
||||
- Τις παραμέτρους της συνάρτησης.
|
||||
|
||||
Πολλές συναρτήσεις χρησιμοποιούν παραμέτρους που οι τιμές τους είναι απαραίτητα στοιχεία για εκτελέσουν κάποιο υπολογισμό. Για κάθε παράμετρο που μεταφέρει
|
||||
κάποια τιμή στην συνάρτηση η λίστα παραμέτρων πρέπει να έχει έναν ορισμό. Αυτός ο ορισμός δηλώνει τον τύπο της μεταβλητής που φέρνει τα δεδομένα και ένα όνομα
|
||||
που με αυτό αντιστοιχείται η τιμή αυτή μέσα στην συνάρτηση.
|
||||
|
||||
Στην cube έχουμε την λίστα παραμέτρων (`SLONG x`). Με αυτόν τον τρόπο δηλώνουμε ότι, όταν κληθεί αυτή η συνάρτηση, θα μας έρθει
|
||||
μια τιμή από το πρόγραμμα που την καλεί και από δώ και πέρα μέσα στην συνάρτηση αναφέρεται με το όνομα x. Στο παράδειγμά μας με την κλήση της συνάρτησης cube η
|
||||
τιμή της μεταβλητής inpu περνάει στην συνάρτηση, και από δω και πέρα η τιμή αυτή εκπροσωπείται από την μεταβλητή x.
|
||||
|
||||
Για να δούμε ξεκάθαρα την ευκολία που μας παρέχει η χρήση των συναρτήσεων θα κάνουμε διαδοχική κλήση της ίδιας συνάρτησης με άλλες παραμέτρους κάθε φορά.
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
FUNCTION Entry()
|
||||
SLONG num1
|
||||
SLONG num2
|
||||
SLONG z
|
||||
num1 = 8
|
||||
num2 = 10
|
||||
z = cube(num1)
|
||||
PRINT z
|
||||
z = cube(num2)
|
||||
PRINT z
|
||||
END FUNCTION
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Αν αντικαταστήσουμε την Entry() στο παράδειγμά μας με τις παραπάνω γραμμές, τότε το αποτέλεσμα του προγράμματος στην κονσόλα θα δείξει:
|
||||
|
||||
`512`\
|
||||
`1000`
|
||||
|
||||
Έτσι γράφοντας μια φορά την cube μπορούμε να έχουμε τον υπολογισμό του κύβου αριθμού με διαφορετικά δεδομένα κάθε φορά, και το αντίστοιχο αποτέλεσμα.
|
||||
|
||||
### [3.5 Το εσωτερικό της συνάρτησης]{#ss3.5}
|
||||
|
||||
Μπορούν να ορισθούν μεταβλητές στο εσωτερικό μιας συνάρτησης. Οι μεταβλητές αυτές ονομάζονται τοπικές. Ο όρος τοπικές σημαίνει ότι οι μεταβλητές αυτές ανήκουν
|
||||
στην συνάρτηση και δεν έχουν καμμία σχέση με μεταβλητές ίδιου ονόματος σε άλλα σημεία του προγράμματος. Εννοείται ότι ακολουθούνται οι κανόνες ονοματολογίας των
|
||||
μεταβλητών στην Xbasic. Συνοψίζοντας την χρήση των μεταβλητών στις συναρτήσεις της Xbasic έχουμε:
|
||||
|
||||
- Τοπικές μεταβλητές\
|
||||
Ορίζονται στην συνάρτηση και δεν έχουν καμμία σχέση με άλλες μεταβλητές αλλού στο πρόγραμμα.
|
||||
- Παράμετροι\
|
||||
Αυτές οι μεταβλητές μεταφέρουν δεδομένα από το πρόγραμμα που τις καλεί, για να χρησιμοποιηθούν σε υπολογισμούς.
|
||||
- Επιστρεφόμενη τιμή\
|
||||
Για να μπορεί το πρόγραμμα που καλεί την συνάρτηση να πάρει ένα αποτέλεσμα του υπολογισμού της, πρέπει να ορισθεί μια τιμή επιστροφής. Αυτή ορίζεται είτε με
|
||||
την τοποθέτηση της μεταβλητής που περιέχει την επιστρεφόμενη τιμή δίπλα στην εντολή END FUNCTION μέσα σε παρένθεση, είτε με τοποθέτηση μέσα στην συνάρτηση
|
||||
μιας από τις δύο εντολές (RETURN ή EXIT FUNCTION) και δίπλα, σε παρένθεση, την μεταβλητή με την τιμή επιστροφής.
|
||||
|
||||
### [3.6 Ο κώδικας των συναρτήσεων.]{#ss3.6}
|
||||
|
||||
Συνήθως ο κώδικας των συναρτήσεων ακολουθεί τον κώδικα της συνάρτησης ENTRY () μέσα στο ίδιο αρχείο που περιέχεται όλο το πρόγραμμα. Σε πολύπλοκα προγράμματα
|
||||
όμως, όπου αρκετοί προγραμματιστές ασχολούνται με το ίδιο θέμα, είναι καλύτερα οι συναρτήσεις να μπαίνουν σε ξεχωριστό αρχείο ή και σε πολλά αρχεία ανάλογα με
|
||||
τις ανάγκες της εφαρμογής. Έτσι μπορεί να έχουμε σε ένα αρχείο όλες τις συναρτήσεις που έχουν σχέση με την αποθήκευση στον δίσκο, σε άλλο τα γραφικά, σε άλλο οι
|
||||
μαθηματικοί υπολογισμοί κλπ. Έτσι δημιουργούνται οι βιβλιοθήκες συναρτήσεων, όπου ο κάθε προγραμματιστής μπορεί να τις συντηρεί (διορθώνει, βελτιώνει) και αυτές
|
||||
να είναι διαθέσιμες σε όλους τους άλλους.
|
||||
|
||||
Κλείνοντας το κεφάλαιο των συναρτήσεων θέλω να τονίσω ότι η διαφορά στον τρόπο προγραμματισμού με συναρτήσεις και χωρίς αυτές, είναι τόσο μεγάλη που πια σήμερα
|
||||
κανείς δεν γράφει προγράμματα που να μην έχουν συναρτήσεις. Όταν εγώ ξεκίνησα να γράφω, οι γλώσσες που χρησιμοποιούσα τότε, δεν είχαν την δυνατότητα δημιουργίας
|
||||
συναρτήσεων και πάρα πολλά λάθη είχαν εμφανισθεί λόγω της χρήσης ίδιων ονομάτων μεταβλητών σε διαφορετικά σημεία του προγράμματος. Η δε απομόνωση του σημείου
|
||||
του κώδικα που περιείχε το λάθος ήταν εξαιρετικά επίπονη. Με την χρήση συναρτήσεων ο χρόνος εντοπισμού των σφαλμάτων περιορίστηκε σε κάτω από τον μισό. Στην
|
||||
συνέχεια θα δούμε τις εντολές ελέγχου της ροής του προγράμματος στην Xbasic.
|
||||
|
197
content/articles/29/05_bash.md
Κανονικό αρχείο
197
content/articles/29/05_bash.md
Κανονικό αρχείο
|
@ -0,0 +1,197 @@
|
|||
+++
|
||||
title = 'Απλός χειρισμός Bash'
|
||||
date = '2000-09-01T00:00:00Z'
|
||||
description = ''
|
||||
author = 'Μιχάλης Καμπριάνης(mailto:kabrianis@hellug.gr)'
|
||||
issue = ['Magaz 29']
|
||||
issue_weight = 5
|
||||
+++
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
*Το standard shell του Linux είναι το bash, γι αυτό, ας μάθουμε μερικά πράγματα για αυτό.*
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Το Bash είναι ένα shell που χρησιμοποιείται ως standard στο Linux και υπάρχει διαθέσιμο και σαν πηγαίος κώδικας για να προστεθεί σε οποιoδήποτε Unix θέλετε.
|
||||
Είναι ένα POSIX-compliant shell και βασικά πρόκειται για μια μετεξέλιξη του shell (sh) συνδυάζοντας τα καλύτερα στοιχεία των C-shell (csh) και Korn-shel (ksh).\
|
||||
Το bash υποστηρίζει command-line editing, substitution, filename completion, προχωρημένες δυνατότητες scripting κλπ. Το bash υποστηρίζει βέβαια και
|
||||
wildcharacters ή χαρακτήρες-μπαλαντέρ (? για αντικατάσταση ενός χαρακτήρα και \* για αντικατάσταση απεριόριστων χαρακτήρων, `[ ]`
|
||||
για καθορισμό εύρους τιμών κλπ. Σε κάθε περίπτωση, αυτό το κείμενο δεν μπορεί παρά να κάνει μία απλή εισαγωγή, και για περισσότερες πληροφορίες που θα οδηγούσαν
|
||||
στην πλήρη εκμετάλλευση των δυνατοτήτων του bash, ο αναγνώστης πρέπει να διαβάσει το manual του bash (man bash).
|
||||
|
||||
**1. Μεταβλητές**
|
||||
----------------------------------------
|
||||
|
||||
**2. Ανακατεύθυνση**
|
||||
-------------------------------------------
|
||||
|
||||
**3. Έξοδος λογικής έκφρασης: test**
|
||||
-----------------------------------------------------------
|
||||
|
||||
**4. Έλεγχοι ροής**
|
||||
------------------------------------------
|
||||
|
||||
**5. Επαναληπτικοί βρόγχοι**
|
||||
---------------------------------------------------
|
||||
|
||||
|
||||
### [1. Μεταβλητές]{#s1}
|
||||
|
||||
Οι μεταβλητές (βασικό στοιχείο σε κάθε πρόγραμμα) στο bash δεν είναι προκαθορισμένου τύπου, μπορεί δηλαδή η ίδια μεταβλητή να έχει αριθμητική τιμή, ή τιμή
|
||||
κειμένου (string) κλπ χωρίς να το προδηλώσουμε πουθενά (αν και για το bash όλες οι μεταβλητές είναι strings, με την χρήση της eval μπορούμε να κάνουμε και
|
||||
αριθμητικές πράξεις αν τα strings αποτελούνται μόνο από αριθμούς). Οι μεταβλητές ορίζονται με απλή τοποθέτηση (assignment, π.χ. var=1) και προσπελαύνονται
|
||||
βάζοντας μπροστά από το όνομά τους το σύμβολο \$. Αν η τιμή μίας μεταβλητής εσωκλείεται σε διπλά εισαγωγικά \"\", τότε το bash αγνοεί οποιαδήποτε κενά
|
||||
βρίσκονται εκεί. Αν δεν τα αγνοούσε, η τιμή της μεταβλητής θα ήταν οτιδήποτε υπάρχει μέχρι το πρώτο κενό. Ότι ήταν μετά το κενό θα θεωρούνταν ως τιμή της
|
||||
δεύτερης μεταβλητής, κάτι το οποίο έχει ιδιαίτερο νόημα για παραμέτρους που δίνονται από την γραμμή εντολών κατά την κλήση του προγράμματος. Αν εσωκλείεται σε
|
||||
ανάποδα μονά εισαγωγικά \`, τότε εννοείται ότι πρόκειται περί εντολής, η οποία θα εκτελεστεί και το αποτέλεσμα της εντολής θα αποτελεί την τιμή της μεταβλητής.
|
||||
|
||||
Το bash χρησιμοποιεί κάποιες προκαθορισμένες μεταβλητές για τα διάφορα \"προγραμματάκια\" που μπορούμε να φτιάξουμε. Αυτές είναι οι:
|
||||
|
||||
- \$\# Ο αριθμός των παραμέτρων που δώσαμε στην γραμμή εντολών.
|
||||
- \$0 Η πρώτη λέξη της κληθείσας εντολής (πρακτικά δηλαδή το όνομα του προγράμματος).
|
||||
- \$1 - \$N Οι παράμετροι που δώσαμε στην γραμμή εντολών (όπου \$1 η πρώτη παράμετρος, και N ίσο με το \$\#).
|
||||
- \$@ Φυλάσσει το σύνολο των παραμέτρων της γραμμής εντολών (δηλαδή από \$1 μέχρι \$N όπως ακριβώς τις γράψαμε.) σε μορφή πίνακα (array).
|
||||
- \$\* Φυλάσσει το σύνολο των παραμέτρων της γραμμής εντολών (δηλαδή από \$1 μέχρι \$N όπως ακριβώς τις γράψαμε) σε μία μεταβλητή (μία και μόνη, τύπου
|
||||
string).
|
||||
- \$? Σε αυτή τη μεταβλητή φυλάσσεται το αποτέλεσμα εξόδου της προηγούμενης εντολής.
|
||||
|
||||
|
||||
### [2. Ανακατεύθυνση]{#s2}
|
||||
|
||||
Το bash υποστηρίζει όπως θα ήταν ίσως αναμενόμενο, ανακατεύθυνση των τριών βασικών file descriptors, δηλαδή των standard input, standard output και standard
|
||||
error (αντίστοιχα 0, 1 και 2). Η ανακατεύθυνση της εισόδου γίνεται με το σύμβολο \<, και η ανακατεύθυνση εξόδου (και εξόδου λάθους) με το σύμβολο \> γράφοντας
|
||||
και τον αριθμό του file descriptor. Δηλαδή η έκφραση command 1\> output θα ανακατευθύνει την κανονική έξοδο στο αρχείο output (και είναι ισοδύναμη με την
|
||||
command \> output) ενώ η έκφραση command 2\> error θα ανακατευθύνει την έξοδο λάθους στο αρχείο error. Για να ανακατευθύνουμε και την κανονική έξοδο, αλλά και
|
||||
την έξοδο λάθους σε ένα αρχείο, μπορούμε να χρησιμοποιήσουμε οποιαδήποτε από τις ακόλουθες εκφράσεις:
|
||||
`command &> out, command >& out, command 2>&1 out`
|
||||
|
||||
Τέλος, το bash υποστηρίζει και piping, να ανακατευθύνει δηλαδή την έξοδο μίας εντολής, στην είσοδο μίας άλλης εντολής, με το σύμβολο \|.
|
||||
|
||||
|
||||
### [3. Έξοδος λογικής έκφρασης: test]{#s3}
|
||||
|
||||
Όποτε θέλουμε να ελέγξουμε το αποτέλεσμα μίας λογικής ή αριθμητικής έκφρασης χρησιμοποιούμε τη συνάρτηση test. Η συνάρτηση test επιστρέφει τιμή \"αληθής\" ή
|
||||
\"ψευδής\" ανάλογα με το αληθές ή ψευδές της λογικής (ή και αριθμητικής) έκφρασης που ελέγχεται. H συνάρτηση test μπορεί να γραφεί και ώς `[ έλεγχος ]` . Η
|
||||
έκφραση μπορεί να έχει ένα μόνο στοιχείο και έναν τελεστή (ο οποίος έτσι ονομάζεται unary operator) ή μπορεί να έχει δύο στοιχεία και έναν τελεστή ο οποίος
|
||||
ονομάζεται binary operator. Πιο πολλές πληροφορίες από το manual page της συνάρτησης test το οποίο μπορείτε να δείτε γράφοντας man test
|
||||
|
||||
Οι πιο συνηθισμένοι τελεστές:
|
||||
|
||||
- `test [ 1 -eq 2 ]`\
|
||||
Η ανωτέρω έκφραση είναι ψευδής γιατί ο (αριθμητικός) τελεστής -eq σημαίνει ισότητα (equal). Άλλοι αριθμητικοί τελεστές είναι οι:
|
||||
1. -gt ο αριθμός αριστερά είναι μεγαλύτερος από τον αριθμό δεξιά (greater than).
|
||||
2. -lt ο αριθμός δεξιά είναι μικρότερος από τον αριθμό αριστερά (less than).
|
||||
3. -ne οι δύο αριθμοί δεν είναι ίσοι (not equal).
|
||||
4. -ge ο αριθμός αριστερά είναι μεγαλύτερος ή ίσος από τον αριθμό δεξιά (greater or equal).
|
||||
5. -le ο αριθμός αριστερά είναι μικρότερος ή ίσος από τον αριθμό δεξιά (less or equal).
|
||||
- `test [ like = likme ]`\
|
||||
Η ανωτέρω έκφραση είναι ψευδής γιατί ο (λογικός) τελεστής = σημαίνει ότι τα δύο strings που συγκρίνουμε είναι ίσα (ίδια). Άλλοι λογικοί τελεστές σχετικοί με
|
||||
strings είναι οι:
|
||||
1. != ο οποίος προφανώς επιστρέφει \"αληθές\" όταν τα δύο strings που συγκρίνουμε είναι ανόμοια.
|
||||
2. -z ο οποίος είναι unary operator (συντάσσεται δηλαδή ως εξής: `test [ -z string ]`) επιστρέφει \"αληθές\" αν το μήκος του string είναι μηδενικό.
|
||||
3. -n που είναι και αυτός unary operator (συντάσσεται δηλαδή ως εξής: `test [ -n string ]`) επιστρέφει \"αληθές\" αν το μήκος του string δεν είναι
|
||||
μηδενικό.
|
||||
- `test [ -e filename ]`\
|
||||
Η ανωτέρω έκφραση βγαίνει αληθής όταν το αρχείο με όνομα filename υπάρχει. Άλλοι τελεστές ελέγχου της κατάστασης ενός αρχείου είναι οι εξής (όλοι όσοι
|
||||
αναφέρονται εδώ είναι unary operators):
|
||||
1. -b αν το αρχείο υπάρχει και είναι block device
|
||||
2. -c αν το αρχείο υπάρχει και είναι character device
|
||||
3. -d αν το αρχείο υπάρχει και είναι directory
|
||||
4. -f αν το αρχείο υπάρχει και είναι κανονικό αρχείο
|
||||
5. -r αν το αρχείο υπάρχει και μπορεί να διαβαστεί
|
||||
6. -s αν το αρχείο υπάρχει και το μέγεθος του δεν είναι μηδέν
|
||||
7. -w αν το αρχείο υπάρχει και μπορεί να γραφτεί
|
||||
8. -x αν το αρχείο υπάρχει και μπορεί να εκτελεστεί
|
||||
|
||||
|
||||
### [4. Έλεγχοι ροής]{#s4}
|
||||
|
||||
- if - then - else
|
||||
|
||||
Ένας τρόπος και ο πιο συνηθισμένος ελέγχου ροής ενός προγράμματος είναι ο έλεγχος if-then-else όπου ελέγχουμε το αποτέλεσμα μίας λογικής έκφρασης και
|
||||
ανάλογα με αυτό το αποτέλεσμα καθορίζουμε τι θα κάνει το πρόγραμμα. Προφανώς ο έλεγχος χρησιμοποιεί το αποτέλεσμα της συνάρτησης test για να καθορίσει την
|
||||
ροή. Για παράδειγμα
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
if [ $i -eq 3 ]; then
|
||||
echo 'Number is 3';
|
||||
elif [ $i -eq 2 ]; then
|
||||
echo 'Number is 2';
|
||||
else echo 'Number is neither 3 nor 2';
|
||||
fi
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
όπου είναι προφανές ότι κάπου στο πρόγραμμά μας έχουμε δώσει τιμή στην παράμετρο \$i. Μπορούμε να έχουμε όσα elif θέλουμε, αρκεί στο τέλος να υπάρχει και
|
||||
ένα else. Αν δεν υπάρχει κανέναν elif δεν είναι υποχρεωτικό και το else, είναι όμως σε κάθε περίπτωση υποχρεωτικό το fi.
|
||||
|
||||
- select
|
||||
|
||||
Η συνάρτηση select δουλεύει (και συντάσσεται) όπως η if αλλά δίνει τη δυνατότητα να δημιουργήσουμε menu. Για παράδειγμα
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
select i in a.txt b.txt c.txt; do
|
||||
cat $i;
|
||||
done
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Το ανωτέρω παράδειγμα παρουσιάζει στον χρήστη ένα menu με τρεις επιλογές και ανάλογα με την επιλογή του χρήστη, του εμφανίζει το αντίστοιχο αρχείο στην
|
||||
οθόνη.
|
||||
|
||||
- case
|
||||
|
||||
Η συνάρτηση case τέλος, προσομοιάζει στην αντίστοιχη συνάρτηση της C και σαν σύνταξη, αλλά και σαν αποτέλεσμα, και συγκεκριμένα εκτελεί προκαθορισμένες
|
||||
εντολές για προκαθορισμένες τιμές μίας μεταβλητής, έχοντας ταυτόχρονα και μία γενική περίπτωση που δεν εμπίπτει στις υπόλοιπες. Για παράδειγμα
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
case $i in
|
||||
1 | 3 | 5 | 7 | 9) echo -n "Odd one-digit number";;
|
||||
0 | 2 | 4 | 6 | 8) echo -n "Even one-digit number";;
|
||||
*) echo -n "It definitely is not a one-digit nummber";;
|
||||
esac
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Το ανωτέρω παράδειγμα ελέχει την μεταβλητή \$i που υποτίθεται ότι κάπου πιο πριν την έχουμε δώσει, και μας απαντάει αν είναι μονός ή ζυγός μονοψήφιος
|
||||
αριθμός, ή όχι.
|
||||
|
||||
|
||||
### [5. Επαναληπτικοί βρόγχοι]{#s5}
|
||||
|
||||
- for - do
|
||||
|
||||
Ο βρόγχος for - do είναι ο πιο συνηθισμένος σε όλες τις γλώσσες προγραμματισμού. Η χρήση του είναι απλούστατη ειδικά στο bash όπου \\textbf{δεν μπορούμε να
|
||||
ορίσουμε πεδίο τιμών, αντ\' αυτού είμαστε υποχρεωμένοι να ορίζουμε τις τιμές μία μία, ακόμα και αν αυτές είναι κατά κάποια έννοια συνεχόμενες. Ένα
|
||||
παράδειγμα είναι το απλούστατο:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
for i in 1 3 5 ; do
|
||||
echo $i;
|
||||
done
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Το πεδίο τιμών της μεταβλητής \$i δεν αποτελείται υποχρεωτικά από αριθμούς αλλά μπορεί να είναι και λέξεις ή γράμματα, ή ακόμα και wildcharacters (\* και ?)
|
||||
κάνοντας έτσι αυτό τον βρόγχο ένα πανίσχυρο εργαλείο.
|
||||
|
||||
- while - do Η συνάρτηση while εκτελεί κάποιες εντολές όσο μία λογική έκφραση είναι αληθής. Το κλασικότερο παράδειγμα είναι η δημιουργία ενός επαναληπτικού
|
||||
βρόγχου, ως εξής:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
while [ $i -lt 10 ]; do
|
||||
read i;
|
||||
echo $i;
|
||||
done
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Προφανώς το παράδειγμα αυτό θα μας εμφανίζει συνέχεια ότι του γράφουμε μέχρι να δώσουμε ένα αριθμό μεγαλύτερο (ή ίσο) του 10. Προσοχή χρειάζεται εδώ, γιατί
|
||||
στο πρόγραμμά μας η μεταβλητή \$i πρέπει να έχει τιμή πριν κληθεί η while.
|
||||
|
Φόρτωση…
Προσθήκη πίνακα
Προσθήκη υπερσυνδέσμου
Παράθεση σε νέο ζήτημα