dimitris kalamaras

mathematics, social network analysis, free software…

Category: Tutorials (Page 2 of 2)

Qt (Μέρος IV): Φτιάξτε παιχνίδια

Στα τρία προηγούμενα μέρη αυτού του tutorial, μάθαμε τα βασικά κόλπα της Qt, και την αξιοποιήσαμε στη δημιουργία διαχειριστικών εργαλείων για βάσεις δεδομένων. Καλά όλα αυτά, αλλά πως χειριζόμαστε γραφικά με την Qt; Λοιπόν, δεν υπάρχει τίποτε πιο εύκολο από αυτό! Για να σας το αποδείξουμε, θα φτιάξουμε ένα μικρό παιχνίδι σκοποβολής, το MouseShooter.

Το παιχνίδι θα αποτελείται από ένα μοναδικό παράθυρο, πάνω στο οποίο θα τοποθετήσουμε δύο κουμπιά (για Εναρξη και Τερματισμό του παιχνιδιού) και από κάτω ένα καμβά, όπου θα εμφανίζονται τα γραφικά. Είναι πρωτόγονο, αλλά ο στόχος είναι να δούμε τις βασικές έννοιες, όχι να ξαναφτιάξουμε το …DOOM! Αυτή τη φορά, δεν θα χρησιμοποιήσουμε το QtDesigner για να σχεδιάσουμε κάποια φόρμα για το MouseShooter. Το παιχνίδι μας θα έχει ένα πολύ απλοικό interface, οπότε θα είναι εύκολο να του στήσουμε το περιβάλλον κατευθείαν από τον κώδικα – για να δείτε πως γίνεται κι αυτό…

Η ιδέα για το γραφικό θέμα του MouseShooter είναι απλή μέχρι αηδίας: τα ποντίκια έχουν πέσει πάνω στο τυρί, και εμείς τα πιάνουμε στα πράσα και τα …πυροβολούμε. Αυτά πανικοβάλλονται και αρχίζουν να τρέχουν αριστερά και δεξιά. Τα γραφικά, δηλαδή το spite του ποντικιού και το φόντο του τυριού, τα “δανειστήκαμε” από ένα απλοικό παράδειγμα της Qt. Εμείς όμως θα φτιάξουμε κάτι πολύ πιο σύνθετο…Ας ξεκινήσουμε λοιπόν!


Εικόνα 1: Το εκπληκτικό shooter μας σε όλο του το μεγαλείο! Τα ποντίκια δεν μένουν ακίνητα βέβαια…

Read More

Samba_Τκ: Tcl/tk script for remote samba shares mounting

Here’s a little Tcl/Tk script I wrote sometime ago when I was messing with the Tcl/tk cookbook. It presents a simple dialog (in Greek) where the user enters the remote server’s IP and shared folder, the local folder (where the share folder should be mounted), as well as samba server credentials, i.e. username and password. It has pretty basic (read “zero”…) exception handling and pretty naive logic: you have to make sure that the remote and local folder exist, and that you have smbmount installed. Warning: I haven’t really test it recently. Nevertheless, it is somewhat documented and could be useful to some with a little effort. Just save it (i.e. samba_mount_tk.tcl), make executable (chmod +x samba_mount_tk.tcl), then run it (./samba_mount_tk.tcl)…

Read More

Qt (Μέρος IIΙ): Αρχειοθέτης άρθρων

Στο προηγούμενο tutorial φτιάξαμε μια γραφική εφαρμογή, το BookAdmin, για να διαχειρίζεστε τη συλλογή των βιβλίων σας χρησιμοποιώντας μια βάση δεδομένων MySQL. Δεν ήταν κάτι ιδιαίτερο, βέβαια, και η αλήθεια είναι ότι θα έπρεπε ίσως να συνεχίζαμε την ανάπτυξή της (βάζοντας π.χ. φίλτρα για τις εγγραφές). Ωστόσο, πολλοί αναγνώστες του “LF” μας ζήτησαν με ευγενικό τρόπο (μας δωροδόκησαν καλά!) να τους δώσουμε έναν τρόπο αρχειοθέτησης των άρθρων του περιοδικού για όλα τα μέχρι σήμερα τεύχη. Οπότε σκεφτήκαμε: “τι καλύτερο από το να γράψουμε ένα μικρό tutorial γι’ αυτό βασιζόμενοι σε ότι κάναμε στο BookAdmin;” Έτσι, αυτή τη φορά, θα φτιάξουμε μια τέτοια εφαρμογούλα για να τηρείτε το “αρχείο” σας, αλλά και για να δείτε πως φτιάχνεται κάτι τέτοιο στην πράξη. Τέτοιο …making of ούτε στο Holywood δεν θα βρείτε! 😛 Σημείωση: μπορείτε να κατεβάσετε όλον τον κώδικα του άρθρου από εδώ.

Το σχέδιο έχει ως εξής. Η εφαρμογή, ας την βαφτίσουμε ArtAdmin, θα πρέπει να έχει ένα γραφικό περιβάλλον αντίστοιχο του BookAdmin, δηλαδή με πεδία για προβολή και αναζήτηση κάποιων εγγραφών (δηλαδή άρθρων) και ένα TableView σε ξεχωριστή καρτέλα για να βλέπετε όλα τα άρθρα μαζί. Συνεχίζοντας με αυταπάρνηση την παράδοση που θέλει κάθε προγραμματιστή …τεμπέλη, θα βασιστούμε στη φόρμα του BookAdmin αλλάζοντας ελαφρώς την πρώτη καρτέλα της για να φτιάξουμε το ολοκαίνουριο ArticlesAdmin – φασόν δηλαδή 🙂 Αυτή τη φορά, όμως θα προσθέσουμε και μερικά νέα κόλπα…

Read More

Σπιτικό Clustering με Linux…

Αν και η επεξεργαστική ισχύς των σύγχρονων υπολογιστών αυξάνεται ταχύτατα, υπάρχουν πάρα πολλές εφαρμογές που απαιτούν πολύ μεγαλύτερη ισχύ από εκείνην του μέσου PC, όπως η κωδικοποίηση βίντεο σε MPEG, η συμπίεση μεγάλων αρχείων ήχου σε OGG ή MP3, το rendering μιας 3D εικόνας ή ενός animation, η διεξαγωγή ενός υπολογιστικού πειράματος, ο μεταγλωτισμός ενός σύνθετου προγράμματος κ.α. Σε αυτές τις περιπτώσεις χρειάζεστε πολύ ισχυρούς επεξεργαστές με αποτέλεσμα να πρέπει να ξοδέψετε ένα σωρό χρήματα.

Ευτυχώς, υπάρχει μια εναλλακτική και συνάμα «οικολογική» λύση, με την οποία μπορείτε να εκμεταλλευθείτε παλιό υλικό που έχετε στην αποθήκη ή μερικά παλιά μηχανήματα που μπορείτε να βρείτε σε εξευτελιστικές τιμές για να πετύχετε αύξηση της ταχύτητας των παραπάνω διαδικασιών. Η μέθοδος αυτή είναι η δημιουργία μιας συστοιχίας (cluster) υπολογιστών. Εν συντομία, πρόκειται για την διασύνδεση ενός αριθμού υπολογιστών, που λέγονται κόμβοι, μέσω τοπικού δικτύου και τη χρήση ενός κατάλληλου λειτουργικού συστήματος που μπορεί να κάνει χρήση της δομής cluster έτσι ώστε οι εφαρμογές να εκτελούνται ταχύτερα.

Μαντέψτε ποιο είναι το λειτουργικό σύστημα που μπορεί να το κάνει εύκολα, γρήγορα και δωρεάν… Φυσικά, το Linux. Υπάρχουν πολλές διανομές Linux που παρέχουν ενδογενή υποστήριξη για clustering. Εμείς επιλέξαμε να χρησιμοποιήσουμε μια live διανομή Linux, το ClusterKNOPPIX, το ΙSO image της οποίας μπορείτε να βρείτε στο http://clusterknoppix.sw.be. Εάν ενδιαφέρεστε να δείτε κάποιο άλλο Linux με δυνατότητες clustering, δείτε την ιστοσελίδα: http://lcic.org/distros.html.

Το ClusterKNOPPIX είναι live CD, δηλαδή τρέχει εξολοκλήρου από το CD που θα κάψετε και έτσι δεν θα χρειαστεί ούτε καν να πειράξετε τα δεδομένα των δίσκων των υπολογιστών που θα χρησιμοποιήσετε…

Read More

Qt (Μέρος IΙ): Βάσεις δεδομένων

Σε αυτό το tutorial, στόχος μας είναι να φτιάξουμε μια εφαρμογή που να αλληλεπιδρά με τη MySQL. Η Qt υποστηρίζει αρκετές βάσεις δεδομένων (MySQL, PostgreSQL, SQLite), αλλά εδώ θα περιοριστούμε στην MySQL.

Στο παράδειγμα που θα δούμε παρακάτω, θα φτιάξουμε2008/08/02/qt-μέρος-ι-convertor/#content μια εφαρμογή διαχείρισης βιβλίων, το bookAdmin. Η υλοποίηση του όμως θα είναι αρκετά γενική ώστε να μπορείτε να το προσαρμόσετε εύκολα στις δικές σας ανάγκες. Με μερικές αλλαγές στο περιβάλλον της εφαρμογής θα μπορείτε, αντί για βιβλία, να διαχειρίζεστε CDs, ταινίες, γραμματόσημα, οτιδήποτε. Θυμίζω ότι βασιζόμαστε στην Qt 4.2+ οπότε, ανάλογα με τη διανομή σας, θα πρέπει να έχετε ήδη εγκαταστήσει τα πακέτα ανάπτυξης της Qt4 (δείτε το πρώτο tutorial). Επιπλέον, επειδή θα δουλέψουμε με βάσεις δεδομένων, θα πρέπει να εγκαταστήσετε και το πακέτο libqt4-sql στο Debian/Ubuntu (ή το qt4-database-plugin-mysql-lib στο PCLinuxOS). Κατά τ’ άλλα, θα αρκεστούμε και πάλι στo Qt Designer και σε ένα κειμενογράφο.

Δημιουργία GUI

Αρχικά θα φτιάξουμε το GUI του bookAdmin. Τρέξτε λοιπόν το QtDesigner. Στην ερώτηση για το είδος της φόρμας, επιλέξτε “Main Window” μια και αυτή τη φορά θέλουμε να φτιάξουμε μια κανονική εφαρμογή. Στο προηγούμενο τεύχος είχαμε προτιμήσει το Widget, μια και τότε θέλαμε μόνο ένα λιτό διάλογο με μερικά μόνο πεδία για την εισαγωγή και προβολή των μονάδων. Το bookAdmin όμως θα είναι πολύ πιο περίπλοκη εφαρμογή, γι’ αυτό προτιμάμε το MainWindow.

Read More

Qt (Μέρος Ι): Convertor

Το Q Toolkit (Qt) είναι μία εργαλειοθήκη για δημιουργία εφαρμογών με γραφικό περιβάλλον (GUI), αντίστοιχη της GTK του Gnome. Ξεκίνησε να αναπτύσσεται το 1991 από τους Haavard Nord and Eirik Chambe-Eng και έγινε η βάση πάνω στην οποία στηρίχτηκε ολόκληρο το γραφικό περιβάλλον KDE. Ουσιαστικά, οι εκδόσεις του KDE ακολουθούν πάντα τις αναβαθμίσεις της Qt. H Qt αναπτύσσεται πλέον από τη Νορβηγική Trolltech, και υπάρχουν ανοικτού κώδικα εκδόσεις της για Unix, Mac OS, Windows και embedded συστήματα.

Λίγη ιστορία

Μέχρι την έκδοση 1.45, η άδεια χρήσης της Qt (FreeQt) δεν ήταν συμβατή με τις άδειες χρήσης ανοικτού κώδικα του OSI (www.opensource.org) αλλά και τον ορισμό του ελεύθερου λογισμικού (www.fsf.org), πράγμα που έκανε πολλούς developers να ανησυχούν για την εξέλιξη του KDE. Η άδεια άλλαξε με την Qt2 που είχε άδεια Q Public License, την οποία όμως το FSF θεώρησε και πάλι ασύμβατη με την GPL. Το αποτέλεσμα ήταν η ανάπτυξη ανταγωνιστικών προσπαθειών, όπως της εργαλειοθήκης Harmony και του Gnome. Το Harmony ήταν μια άδοξη προσπάθεια αναδημιουργίας της Qt με άδεια GPL ενώ, πιο φιλόδοξα, το Gnome έθεσε ως στόχο την αντικατάσταση του KDE στα desktops μας (από εκεί πηγάζει η αντιπαράθεση KDE εναντίον Gnome, που όμως έχει πλέον ατονήσει).

Read More

Page 2 of 2

Creative Commons License
Licensed under a Creative Commons Attribution-ShareAlike 4.0 International License - Powered by Linux