Sunday, February 16, 2014

FreeBSD 10.0-RELEASE with Custom XFCE Packages

FreeBSD 10.0-RELEASE has been released a while ago, and it is about time I get my custom version out to the wild! FreeBSD 10 brings on a whole new set of features, among them the new pkgng as the default packaging system. The custom ISO (download links below) will allow you to install an XFCE based desktop that includes lots of goodies for productivity, multimedia and Internet browsing:

The complete list of top level ports used in this compilation is available in the README-PKGNG file of the DVD, along with more detailed installation instructions. A VirtualBox image is also available.

Happy (desktop) FreeBSDing!

Sunday, October 13, 2013

FreeBSD 9.2-RELEASE with Custom XFCE pkgng-style Packages

Few years ago, I started a small (and now defunct) project to build Custom FreeBSD installation media with my own selection of mostly desktop packages. The purpose was twofold:
  • To create packages not normally provided by the FreeBSD Project in the installation DVD, such as the XFCE desktop environment
  • To create updated packages and installation media that could be used long after the initial official release and still be up to date.

This project was using the somewhat aged packaging system (commands like pkg_add, pkg_info etc) and the release process would integrate the custom packages to the sysinstall system of the installation DVD. You could then install them like the official packages, during the main installation.

From the beginning this project was plagued with several problems: the release process was lengthy and error prone. Sometimes the packages would fail to integrate properly with sysinstall (the system installer at that time). Testing was tedious and time consuming and package errors meant the whole build would have to be repeated, usually from scratch. Combine this with a rather modest build system, this whole thing was taking huge amounts of time while its output was rather low.

Fast forward to today: 9.2-RELEASE has pkgng, a whole new packaging system (although the older system is still the default). The new installer, bsdinstall only installs the base system and does not interfere with packages in any way (a good thing IMHO). Building packages for pkgng is a lot easier, using the ports-mgmt/poudriere tool. And I do have a little monster now: an i5 with 32GB of RAM that allows me to run ZFS on memory disk and complete both 32 and 64 bit build in a single day, with time to spare. Since the packages do not have to be integrated to the installer, as long as there are no build errors in poudriere, they will work without problems. Testing is a lot faster and easier.

Custom releases are back! Starting today with a DVD containing 9.2-RELEASE and a selection of packages for XFCE, desktop productivity, browsers, Xorg and much more:

The complete list of top level ports used in this compilation is available in the README-PKGNG file of the DVD, along with more detailed installation instructions. A preconfigured VirtualBox image is also available.

Happy (desktop) FreeBSDing!

Monday, October 7, 2013

Ανακοίνωση Κυκλοφορίας: FreeBSD 9.2-RELEASE


Στις 30/09/2013, το FreeBSD Project ανακοίνωσε επίσημα την κυκλοφορία της έκδοσης 9.2-RELEASE. Το 9.2-RELEASE αποτελεί την πιο πρόσφατη έκδοση της πετυχημένης σειράς 9.Χ. Μπορείτε να διαβάσετε περισσότερα χαρακτηριστικά του στην ανακοίνωση έκδοσης:

FreeBSD 9.2 Release Announcement

Μπορείτε να κατεβάσετε οποιαδήποτε διαθέσιμη έκδοση του FreeBSD από κάποιο από τα πολλά mirror sites. To 9.2-RELEASE έχει ήδη εμφανιστεί στους FTP servers μεγάλων ελληνικών ISPs. Μπορείτε για παράδειγμα να το κατεβάσετε από την Otenet.

Διαβάστε άρθρα σχετικά με το λειτουργικό από το site του περιοδικού deltaHacker. Σύντομα θα διαθέσουμε και custom DVD εγκατάστασης με πακέτα τύπου pkgng για ένα πλήρως λειτουργικό XFCE desktop. Stay tuned!

Μπορείτε επίσης να επισκεφθείτε την Δικτυακή Τοποθεσία της Ελληνικής Κοινότητας FreeBSD

Kαλή εγκατάσταση!

Sunday, January 6, 2013

Windows Rants και ένα εργαστήριο με FreeBSD Samba Server

Κάθε χρόνο στις γιορτές έχω το χρόνο να ασχοληθώ και να συντηρήσω το εργαστήριο και τους υπολογιστές της γραμματείας του παραρτήματος Χανίων του ΚΕΚ ΔΕΛΤΑ. Έτσι και φέτος, ξεκίνησα με μια απόφαση: να αποσύρω τον Windows 2003 Server και να τον αντικαταστήσω με ένα Samba server σε FreeBSD 9.1-RELEASE. Οι ανάγκες του συγκεκριμένου δικτύου άνετα καλύπτονται πλέον με Samba σε domain controller configuration και τα επιπλέον licenses που χρειαζόμαστε για το 2003 είναι πεταμένα λεφτά...

Ιστορικά στοιχεία

Ξεκίνησα να συντηρώ το παράρτημα της συγκεκριμένης σχολής από τις πρώτες μέρες της λειτουργίας της στα Χανιά, κάπου το 1995-96. Την εποχή εκείνη τα μηχανήματα τους ήταν παλιά (τα είχαν φέρει από άλλο παράρτημα) και είχαν διάφορα προβλήματα. Όταν μετακόμισαν κάπου το 1999-2000 στο νέο τους κτήριο, ανέλαβα να τους φτιάξω από την αρχή ένα δίκτυο με νέα μηχανήματα και εξοπλισμό. Το αρχικό εκείνο δίκτυο βασίστηκε σε:

  • Windows 2000 Server
  • Windows 2000 Professional για τους σταθμούς εργασίας
  • Λίγα παλιά μηχανήματα με Windows 98 (!)

Την εποχή εκείνη είχα ήδη καλή επαφή με το Linux, ωστόσο μετά από πολλές δοκιμές κατέληξα στο συμπέρασμα ότι το συγκεκριμένο δίκτυο θα εξυπηρετούνταν πολύ καλύτερα από ένα Windows Server. Και πράγματι, ο 2000 Server (που αργότερα αντικαταστάθηκε από το 2003) είχε πολλά πλεονεκτήματα: αναφέρω για παράδειγμα τη δυνατότητα assign και publish εφαρμογών - αρχεία msi και mst - για αυτόματη εγκατάσταση τους στους σταθμούς εργασίας.

Το αρχικό εκείνο δίκτυο είχε καλά μηχανήματα για την εποχή τους - Pentium III 866Mhz. Υπήρχαν δύο εργαστήρια και συνολικά περίπου 30 μηχανήματα μαζί με τα γραμματειακά.

Ο καιρός όμως πέρναγε, τα μηχανήματα πάλιωναν, τα 2000 Professional έπαψαν να καλύπτουν τις ανάγκες (μετά από πολύ καιρό είναι αλήθεια) και κάποιες δοκιμές με XP δεν ήταν ιδιαίτερα... ενθαρρυντικές στο υπάρχον hardware. Καθώς διάφορα PC χάλαγαν και δεν μπορούσαν να επισκευαστούν, τα αντικαθιστούσαμε με πιο νέα μηχανήματα. Η ομοιογένεια του υλικού και του λογισμικού της αρχικής εγκατάστασης είχε πάει περίπατο.

To 2012 λήφθηκε η απόφαση για τη δημιουργία νέου εργαστηρίου 20 υπολογιστών με σύγχρονο λογισμικό. Τα παλιά μηχανήματα - όσα ήταν ακόμα λειτουργικά - θα μεταφέρονταν σε δεύτερο βοηθητικό εργαστήριο, με την προυπόθεση να μπορούν να τρέξουν XP. Το νέο εργαστήριο θα βασίζονταν σε Windows 7 64bit. Και εδώ αρχίζουν τα προβλήματα.

  • Τα Windows 2000 ήταν δύο εκδόσεις: Η Professional που έχει τα πάντα για ένα σταθμό εργασίας και ο Server που προορίζεται για... server. Τα Windows 7 είναι σε αρκετές εκδόσεις, αυτές δε που συμφέρουν είναι τεχνητά περιορισμένες να μην έχουν βασικές δυνατότητες. Για παράδειγμα η έκδοση Home Premium δεν υποστηρίζει σύνδεση μέσω remote desktop και φυσικά δεν υποστηρίζει domain logins.
  • Όπως αποκαλύφθηκε, εν έτει 2012 υπάρχει ακόμα πλήθος εφαρμογών που δεν μπορούν να εκτελεστούν με δικαιώματα χρήστη, απαιτώντας Administrator access. Μέσος χρόνος ζωής μηχανήματος με administrator access χωρίς κάποιο πρόγραμμα τύπου deep freeze: Μισή ώρα.
  • Δεν θέλω καν να μπω στη διαδικασία των ενεργοποιήσεων, ελέγχων κλπ που είναι ένα μαρτύριο που τραβάνε μόνο οι χρήστες που έχουν πληρώσει: οι υπόλοιποι τρέχουν τα έτσι και αλλιώς πειρατικά τους προγράμματα και γελάνε με την MS.

Το νέο εργαστήριο

Για λόγους κόστους (είναι περίεργες οι εποχές) αποφασίστηκε να χρησιμοποιηθούν τα Windows 7 Home Premium 64 bit. Χάνουμε έτσι το domain login (το οποίο όμως παραμένει στα παλιότερα μηχανήματα με XP) αλλά αυτό έτσι και αλλιώς δεν ήταν πολύ χρήσιμο στα εκπαιδευτικά μηχανήματα. Το μόνο που χρειάζεται πρακτικά είναι καθένα από αυτά να κάνει autologin με ένα διαφορετικό λογαριασμό και το home directory να γίνεται map από το server στην εκκίνηση του περιβάλλοντος. Αυτό είναι πολύ εύκολο και δεν αποτελεί πρόβλημα: όσο τα user credentials ταιριάζουν στο μηχάνημα και το server, η πρόσβαση στα shares γίνεται χωρίς πρόβλημα.

Μετά το αρχικό στήσιμο του εργαστηρίου, τα Windows 7 συνδέθηκαν με αυτό τον τρόπο στον 2003 Server ενώ το παλιότερο εργαστήριο XP παρέμεινε στο domain. Καθώς ο ρόλος του 2003 server ήταν πλέον πολύ πιο περιορισμένος, συμφωνήσαμε κάποια στιγμή να αλλαχθεί με ελεύθερο λογισμικό. Εξάλλου είχαμε ήδη ξεπεράσει τα αρχικά CALs. Και όπως πάντα, τέτοιες μαζικές αλλαγές γίνονται στις γιορτές, όπου και εγώ έχω χρόνο και η σχολή είναι κλειστή.

Η Αντικατάσταση του Server

Υπήρχε ήδη ένας FreeBSD Server στη σχολή! Τον είχα εγκαταστήσει αρκετά παλιά για να κρατάει backup στα δεδομένα του 2003 και να μπορεί να αναλάβει βασικές λειτουργίες σε περίπτωση σοβαρής βλάβης του 2003. Τόσο ο 2003 όσο και ο υπάρχον FreeBSD server λειτουργούσαν με mirror. To mirror του FreeBSD παρέδωσε πνεύμα (ο ένας δίσκος) κάπου το Νοέμβρη. Συνέχιζε να λειτουργεί με τον ένα δίσκο φυσικά, αλλά σκοπός ήταν στη διάρκεια της συντήρησης να βρεθεί κάπου ένας δίσκος αντίστοιχης χωρητικότητας και τεχνολογίας (το μηχάνημα είναι Pentium III!) για να αντικατασταθεί. Αυτό πράγματι επιτεύχθηκε την πρώτη μέρα της συντήρησης.

Αντίθετα, το hardware του 2003 Server είναι επαρκώς σύγχρονο (Core2Duo) με SATA δίσκους και Intel Network Card. Στο μηχάνημα αυτό εγκαταστάθηκε το FreeBSD 9.1-RELEASE 64bit. Στην εγκατάσταση του χρησιμοποιήθηκαν τα παρακάτω:

Για ευκολία, η εγκατάσταση έγινε αρχικά στο σπίτι σε VMWare και αφού ρυθμίστηκε σύμφωνα με τις βασικές ρυθμίσεις του 2003 που θα αντικαθιστούσε (και δοκιμάστηκε φυσικά σε άλλο virtual client), έγινε dump και restore στο πραγματικό μηχάνημα. Έτσι χρειάστηκε πολύ λίγος χρόνος για επιπλέον παραμετροποίηση (πρακτικά μόνο η δημιουργία λογαριασμών χρηστών/μηχανημάτων.

Αφού έγινε backup ο παλιός server σε ένα atomaki που κουβαλάω μαζί μου για τέτοιες περιπτώσεις, έσβησα τα πάντα, έκανα restore από το dump, βασικές ρυθμίσεις και αντιγραφή ξανά των δεδομένων.

Δημιουργήθηκαν έπειτα οι χρήστες του εργαστηρίου και έγιναν map τα κατάλληλα shares σε κάθε υπολογιστή. Στο παλιό εργαστήριο, τα μηχανήματα βγήκαν από το παλιό domain και συνδέθηκαν στο νέο χωρίς κανένα πρόβλημα.

Όχι ένας, αλλά δύο!

Δύο FreeBSD servers φυσικά! Γιατί υπάρχει και ο παλιός Pentium III o οποίος πλέον:

  • Έχει ρόλο δεύτερου DNS σαν slave του κύριου server.
  • Παίρνει backup τα δεδομένα μέσω rsync.
  • Μπορεί ξανά να παρέχει βασικές υπηρεσίες και πρόσβαση στα δεδομένα της γραμματείας σε περίπτωση βλάβης του κύριου server.

Φωτογραφικό υλικό

Ακολουθεί φωτογραφικό υλικό απο τα μηχανήματα και τη διαδικασία.

Δοκιμαστικό restore του atlantis στο atom για να ελεχθεί το dump.

Πολύ ευχαριστημένος, ο phoenix με καινούριο δίσκο στο mirror και το gmirror να αναφέρει "complete".

O atlantis λίγο μετά το καθάρισμα του hardware από τη σκόνη και λίγο πριν το "καθάρισμα" του 2003 Server από τους δίσκους!

Δημιουργία των partitions με το gpart, λίγο πριν το restore. Η διαδικασία έγινε με τη λειτουργία Live CD που παρέχει το FreeBSD 9.X

To atomακι με το ενσωματωμένο τροφοδοτικό να έχει παραδώσει το πνεύμα. Για άλλη μια φορά.

Αν δεν θέλετε να φάτε όλη τη μέρα αντιγράφοντας δεδομένα, βγάλτε το καλώδιο δικτύου από το πάνω switch και βάλτε το στο κάτω :)

Μικρός και μεγάλος δαίμονας σε δράση! Atlantis και Phoenix στις τελικές τους θέσεις.

ΟΚ, το τερματίσαμε!

Καλή Χρονιά!

Monday, December 31, 2012

Ανακοίνωση Κυκλοφορίας: FreeBSD 9.1-RELEASE


Στις 30/12/2012, το FreeBSD Project ανακοίνωσε επίσημα την κυκλοφορία της έκδοσης 9.1-RELEASE. Το 9.1-RELEASE έρχεται να βελτιώσει με διορθώσεις και νέα χαρακτηριστικά το πολύ καλό 9.0-RELEASE. Mπορείτε να δείτε τα νέα χαρακτηριστικά του στη σχετική ανακοίνωση:

FreeBSD 9.1 Release Announcement

Μπορείτε να κατεβάσετε οποιαδήποτε διαθέσιμη έκδοση του FreeBSD από κάποιο από τα πολλά mirror sites. To 9.1-RELEASE έχει ήδη εμφανιστεί στους FTP servers μεγάλων ελληνικών ISPs.

Διαβάστε άρθρα σχετικά με το λειτουργικό ή κατεβάστε έτοιμο VirtualBox image με xfce desktop από το site του περιοδικού deltaHacker.

Τέλος, μην παραλείψετε να επισκεφθείτε την Δικτυακή Τοποθεσία της Ελληνικής Κοινότητας FreeBSD

Kαλή εγκατάσταση!

Friday, December 28, 2012

DHCP και Dynamic DNS Updates

Σε παλιότερο μας άρθρο είχαμε συζητήσει τη δημιουργία ενός DHCP server για την απόδοση διευθύνσεων και ρυθμίσεων δικτύου στα client μηχανήματα του δικτύου μας. Σε άλλο μας άρθρο είχαμε συζητήσει τη δημιουργία ενός DNS Server κατάλληλο για σχολικά εργαστήρια - αλλά γιατί όχι και για το οικιακό ή εταιρικό σας δίκτυο. Μάλιστα του είχαμε φτιάξει και μια ωραία... μαύρη τρύπα για να κόψουμε κάποιες διευθύνσεις.

Αν τώρα καταφέρουμε τον DHCP server μας να ενημερώνει το DNS κάθε φορά που αποδίδει μια νέα διεύθυνση (δημιουργεί / τροποποιεί ένα lease) θα έχουμε πετύχει το τέλειο. Πάμε να δούμε πως!

Το Σενάριο

Σε ένα δίκτυο έχετε ένα FreeBSD server με υπηρεσίες DHCP & DNS. Τα client μηχανήματα παίρνουν δυναμικές διευθύνσεις (και λοιπές ρυθμίσεις δικτύου) από τον DHCP server. Θέλετε να μπορείτε ανά πάσα στιγμή να έχετε πρόσβαση στα μηχανήματα αυτά από οποιοδήποτε άλλο μηχάνημα χρησιμοποιώντας το όνομα τους και όχι το IP τους - που έτσι και αλλιώς δεν ξέρετε.

Παράδειγμα: Το μηχάνημα workstation01.lab1.local πήρε χθες δυναμική IP 192.168.0.33. Μια βδομάδα μετά, πήρε την 192.168.0.24. Οι διευθύνσεις είναι αδιάφορες: Θέλουμε να μπορούμε να αναφερθούμε σε αυτό γράφοντας κάτι σαν:

# ping workstation01.lab1.local

Είναι φανερό, ότι ο DHCP server θα πρέπει να ενημερώνει τον DNS: Να δημιουργεί εγγραφές για νέα μηχανήματα της ζώνης αλλά και να ανανεώνει υπάρχουσες. Καλώς ήλθατε στα dynamic DNS updates! Για το παράδειγμα μας θα υποθέσουμε οτι ο DNS/DHCP server εκτελούνται στο ίδιο μηχάνημα με IP 192.168.0.1

Γενικές γνώσεις

Αν ψάξετε λίγο το αρχείο σας /etc/named.conf, θα βρείτε κάτι σαν το παρακάτω για τις ζώνες σας:

zone "lab1.local" {
        type master;
        file "/etc/namedb/master/lab1.local.db";
};

zone "0.168.192.in-addr.arpa" {
       type master;
       file "/etc/namedb/master/0.168.192.in-addr.arpa";
};

Παρατηρήστε ότι τα αρχεία αυτά βρίσκονται στον υποκατάλογο master στον οποίο ο χρήστης bind (με τα δικαιώματα του οποίου εκτελείται ο DNS server στο FreeBSD) δεν έχει δικαιώματα εγγραφής. Άρα ακόμα και αν στείλετε με κάποιο τρόπο μήνυμα "update" στον server, δεν θα μπορέσει να γράψει κάτι σε αυτό τον κατάλογο.

Μη βιαστείτε να αλλάξετε τα δικαιώματα: Αν αλλάξετε το χρήστη/group του καταλόγου σε bind:wheel, το bind θα τα αλλάξει ξανά στην επόμενη εκκίνηση της υπηρεσίας και θα δείτε και το παρακάτω μήνυμα:

Stopping named.
Waiting for PIDS: 6707.
etc/namedb/master changed
 user expected 0 found 53 modified
Starting named.

Το οποίο σε απλά ελληνικά σημαίνει: "μη πειράζετε τα δικαιώματα σε αυτό τον κατάλογο!". Και τι πρέπει να κάνουμε; Μα πολύ απλά. Θα μεταφέρετε τα αρχεία στον κατάλογο dynamic. Γιατί εκεί θα γίνονται οι δυναμικές ανανεώσεις και o bind έχει την κατάλληλη πρόσβαση.

# service named stop
# cd /etc/namedb/master
# mv lab1.local.db   ../dynamic
# mv 0.168.192.in-addr.arpa   ../dynamic

Και πριν επανεκκίνησετε, φυσικά θα αλλάξετε και τις καταχωρίσεις ώστε να δείχνουν στον κατάλογο dynamic:

zone "lab1.local" {
        type master;
        file "/etc/namedb/dynamic/lab1.local.db";
};

zone "0.168.192.in-addr.arpa" {
       type master;
       file "/etc/namedb/dynamic/0.168.192.in-addr.arpa";
};

Μπορείτε τώρα να επανεκκινήσετε την υπηρεσία όση ώρα θα ψάχνετε πως γίνεται το dynamic DNS update από τον DHCP server. Όχι τίποτα, άλλο μη γκρινιάζουν και οι χρήστες που δεν θα έχουν δίκτυο στο μεταξύ :)

# service named start

Δημιουργία... μυστικών

Για να γίνεται το DNS update, θα πρέπει ο DHCP server να στέλνει το κατάλληλο μήνυμα στον DNS κάθε φορά που απαιτείται να δημιουργηθεί ή να τροποποιηθεί μια εγγραφή. Όμως δεν μπορούμε να αφήσουμε τον DNS να δέχεται updates από παντού. Οι εποχές είναι πονηρές! Πρέπει να δημιουργήσουμε ένα μυστικό κλειδί που θα γνωρίζουν ο DNS και ο DHCP για να συννενοούνται:

# dnssec-keygen -a hmac-md5 -b 128 -n USER dhcpupdatekey
Kdhcpupdatekey.+157+10817

Δείτε το περιεχόμενο του αρχείου με κατάληξη .key που δημιουργήθηκε:

# more Kdhcpupdatekey.+157+10817.key 
dhcpupdatekey. IN KEY 0 3 157 dw5akl5zJw8Rc/8za61TLA==

Το κλειδί που θέλετε είναι αυτό το τελευταίο πεδίο:

dw5akl5zJw8Rc/8za61TLA==

Τροποποιήστε το /etc/named.conf όπως φαίνεται παρακάτω:

key "dhcpupdatekey" {
  algorithm hmac-md5;
  secret "dw5akl5zJw8Rc/8za61TLA==";
};

zone "lab1.local" {
        type master;
        file "/etc/namedb/dynamic/lab1.local.db";
        allow-update { key "dhcpupdatekey"; };
};

zone "0.168.192.in-addr.arpa" {
       type master;
       file "/etc/namedb/dynamic/0.168.192.in-addr.arpa";
       allow-update { key "dhcpupdatekey"; };
};

Κάντε restart το bind και για να πείσετε τον εαυτό σας ότι το dynamic update λειτουργεί, δοκιμάστε να του στείλετε ένα update χειροκίνητα. Επιλέξτε μια διεύθυνση που γνωρίζετε και περάστε την:

# service named restart
# nsupdate
> server 192.168.0.1
> key dhcpupdatekey dw5akl5zJw8Rc/8za61TLA==
> zone lab1.local
> update add workstation01.lab1.local. 600 IN A 192.168.0.24
> send
> quit

Δεν θα πρέπει να δείτε κανένα μήνυμα μετά το send. Μπορείτε να επιβεβαιώσετε την εγγραφή τρέχοντας την nslookup:

# nslookup
> workstation01.lab1.local

Server:  192.168.0.1
Address: 192.168.0.1#53

Name:  workstation01.lab1.local
Address: 192.168.0.24
> exit

Αφού λειτουργεί, δεν μένει παρά να βάλουμε τον DHCP να κάνει τη δουλειά που κάναμε εμείς χειροκίνητα! Πάμε λοιπόν να επεξεργαστούμε το /usr/local/etc/dhcpd.conf

Αλλαγή του dhcpd.conf

Και εδώ πρόκειται για πολύ απλές και αναμενόμενες αλλαγές. Προσθέτουμε το ίδιο μυστικό κλειδί (προσέξτε εδώ χωρίς εισαγωγικά!):

key dhcpupdatekey {
  algorithm hmac-md5;
  secret dw5akl5zJw8Rc/8za61TLA==;
}

Προσθέτουμε τη γραμμή που ενημερώνει το DHCP server ότι θα κάνει πλέον dynamic dns updates:

ddns-update-style interim;

Και τέλος τα στοιχεία για τις ζώνες που θα ενημερώνονται:

zone lab1.local. {
  primary 192.168.0.1;
  key dhcpupdatekey;
}

zone 0.168.192.in-addr.arpa. {
  primary 192.168.0.1;
  key dhcpupdatekey;
}

Κάντε και μια επανεκκίνηση το DHCP σας και είμαστε έτοιμοι:

# service isc-dhcpd restart

Μπορείτε να διαβάσετε και αυτό το σχετικό άρθρο με το οποίο ξεκινήσαμε και εμείς τις αναζητήσεις μας.

Ελπίζουμε να περάσετε ένα ευχάριστο χειμωνιάτικο απόγευμα. Καλές γιορτές!

Saturday, September 1, 2012

Παιχνίδια σε Python & Pygame - Το Βιβλίο

Η ιδέα για αυτό το βιβλίο ξεκίνησε κοντά στις γιορτές Χριστουγέννων του 2011. Είχα αναλάβει το μάθημα "Εφαρμογές Πολυμέσων" της Γ' τάξης των ΕΠΑΛ και ήθελα να κάνω κάτι αρκετά διαφορετικό από τα καθιερωμένα. Τι νόημα έχει ένα τέτοιο μάθημα αν δεν φτιάξεις πραγματικά μια πολυμεσική εφαρμογή; Και τι καλύτερο από ένα παιχνίδι - κίνηση, γραφικά, ήχος, συνδυάζει όλα τα στοιχεία πολυμέσων.

Μετά τα πρώτα μαθήματα - όπου πάντα διδάσκουμε στοιχεία πολυμέσων, είδη αρχείων εικόνας, ήχου κλπ - μεσολαβούσαν οι διακοπές των Χριστουγέννων. Σκέφτηκα ότι θα ήταν μια ευκαιρία να γράψω μια σειρά μαθημάτων για δημιουργία παιχνιδιών σε Python & Pygame και να αρχίσω να τη χρησιμοποιώ αμέσως μετά τις γιορτές.

Καθώς επεξεργαζόμουν την ιδέα, ο Χρήστος Βαρελάς, εκδότης του deltaHacker αναζητούσε ιδέες για νέα άρθρα. Συμφωνήσαμε λοιπόν να γίνει το Python Game Programming μια σειρά άρθρων στο περιοδικό (αλλά και στο site του περιοδικού) και να κυκλοφορήσει σε free ebook με την ολοκλήρωση της.

Η σειρά πράγματι ξεκίνησε στο τεύχος Φλεβάρη 2012 και ολοκληρώθηκε στο τεύχος Αυγούστου 2012. Ταυτόχρονα γίνονταν και η μεταφορά της στο XeLaTeX για τη δημιουργία του βιβλίου. Να συμπληρώσω εδώ ότι η εργασία παρουσιάστηκε και στην Έκθεση Μαθητικής Δημιουργίας στα Χανιά όπου και είχε μεγάλη απήχηση!

Για την υποστήριξη του βιβλίου και τη διανομή των προγραμμάτων και των αρχείων υποστήριξης έχει δημιουργηθεί ο ιστότοπος pygamegr.wordpress.com. Για τους βιαστικούς δίνουμε παρακάτω απευθείας τους πιο βασικούς συνδέσμους:

Στο βιβλίο παρέχονται επίσης και άλλα μικρότερα προγράμματα και παραλλαγές των παραπάνω και είναι κατάλληλο για (αυτο)διδασκαλία τόσο μαθητών όσο και ενηλίκων στον προγραμματισμό με ευχάριστο τρόπο!

Εύχομαι να το διασκεδάσετε διαβάζοντας το, όσο το διασκέδασα γράφοντας το. Και φυσικά να το χρησιμοποιήσετε αντί για κάποιο βαρετό εγχειρίδιο εκμάθησης προγραμματισμού. Τα σχολεία μας είναι ήδη γεμάτα από τέτοια!