Αν και νομίζω ότι καιρό τώρα θα έπρεπε να λέμε ότι η Microsoft κάνει βήματα προς την σύναψη ειρήνης μεταξύ των δύο πλευρών (MS vs Open Source), έσκασε πριν μερικές ώρες η ανακοίνωση και ξαφνικά όλοι μιλάνε γι'αυτό το θέμα. H Microsoft θα ανοίξει τα πρωτόκολλα σε συνδέσεις, προδιαγραφές σε τύπους αρχείων, θα δώσει API's για την δημιουργία plugins σε μικρότερο επίπεδο και η αλήθεια είναι ότι ναι!!! Αυτό θα είναι καλύτερο για την κοινότητα ανάπτυξης λογισμικού (για να μην πω πληροφορικής και υποπέσω σε περιττές γενικεύσεις). Ώντας novice χρήστης linux με μερικές εργασίες μόνο, σημαφόρων και sockets για το πανεπιστήμιο, αρκετές φορές χρειάστηκε κάποια δουλειά να γίνει που θα περιελάμβανε και τα δύο συστήματα. Μία απλή ενέργεια που χρειαζόταν τον Samba Server για παράδειγμα, πάντα θα έφερνε αποτέλεσμα μη ντετερμινιστικά. Έτσι θα περιμέναμε, την επόμενη έκδοση μέχρι να χαρούμε και πάλι την χαρά της μεταφοράς αρχείων στον 21ο αιώνα. Φυσικά δεν μιλάω για scientific environments, για compile farms, rendering farms, grids κλπ. Είμαι σίγουρος ότι με τον καιρό θα βελτιωθεί η κατάσταση, φέρνοντας πιο κοντά το user friendly πλην powerful χαρακτήρα της Microsoft στο τελείως παραμετροποιήσιμο και εν γένει δωρεάν περιβάλλον των *nix-variants. Άντε και directx για linux :P
Άμεσες ενέργειες της MS λοιπόν, είναι το άνοιγμα 30.000 σελίδων στο MSDN για low level development για τα παρακάτω προϊόντα
- Windows Vista
- The .NET Framework
- Windows Server 2008
- SQL Server 2008
- Office 2007
- Exchange Server 2007
- Office SharePoint Server 2007
- Future versions of all these products
Με τι τρόπους αλήθεια, θα επηρρεάσει αυτό, την ίδια την MS; (Είμαι σίγουρος ότι ένα ολόκληρο χωριό από phd-αδες Marketing Scientists ασχολούνται με αυτό....αλλά απλά αναρωτιέμαι)
Microsoft launches open-source charm offensive | Tech news blog - CNET News.com
Εμπνευσμένος και επηρεασμένος από την χθεσινή καταπληκτική παρουσίαση του Νίκου Παλλαδινού στα πλαίσια του 12ου dotNETZone.gr Community Event, κάθισα να βρω κάποιες πληροφορίες για την συγκεκριμένη θεωρία. Ξεκίνησα πρώτα από τον οδηγό σπουδών του τμήματός μου. Σε συννενόηση λοιπόν με τον καθηγητή μου Πάνο Ροντογιάννη (καθηγητή των μαθημάτων: Αρχές Γλωσσών Προγραμματισμού, Θεωρία Υπολογισμού, Σημασιολογία Γλωσσών), προτρέπω για όποιον ενδιαφέρεται, να δει για θεωρία των γλωσσών προγραμματισμού, τις διαφάνειες του αντίστοιχου μαθήματος (as is από τον κύριο Ροντογιάννη, τον οποίο ευχαριστώ πολύ για την παραχώρηση).
Θεωρώ ότι τα παραπάνω αποτελούν το ground zero για να ξεκινήσει κάποιος. Απλές και κατανοητές διαφάνειες που σε βάζουν στο νόημα αμέσως.
(Closing my account at blogpost I made some referenced posts unavailable, so I repost this article as I was asked)
While reading Peter Kriens (OSGi Evangelist), latest blogpost at the OSGi Blog, about the relation of OSGi and Service Oriented Architecture, I felt the need to write about this, in simple tech-terms, as simple as, a newcomer (proud me) could describe OSGi(and it's position in this great set of SOA).
Several months ago I was called to participate in a development team that had to construct a concrete solution, considering OSGi as the core service management platform of this project's part. So both a beginner in Java and in OSGi, I was trying to bring myself in productive state by learning quickly what OSGi is.
OSGi is a Java-Based platform, consisting of three major inseparable components: The Framework, The life cycle model, The service registry. OSGi technology provides a service-oriented, component-based environment for developers and offers standardized ways to manage the software lifecycle. Played around with a couple of OSGi implementations and finally choosing the best appropriate for our needs, Equinox.
OSGi is maintained by the OSGi alliance. The latest revision of this project is 4.1 / May 2007. From my point of view there is one thing that someone can do in order to learn about OSGi development. To start reading the OSGi bible directly from the Alliance. As you will see during the specification book, OSGi is a sophisticated middleware. You provide functionality, you declare interfaces, imported/exported services and that's it. Your first bundle (the component of OSGi providing a specific service). There are numerous tutorials and samples with a quick scan in the above links. This isn't my intention here. So enough so far with the OSGi part, here comes the conflict with SOA.
So, during the development process of my aforementioned assignment (and as a newcomer, undergraduate student, trying to settle down with definitions and technologies) I was trying to place OSGi in my mind considering the core model that OSGi belongs/represents. At around March 2007 my first inquires came at the OSGi list, OSGi and Business Logic. Clear answers didn't came. Development continued. Later on, another task was brought about. A typical project as a part of a course that I was attending at uni. It was a presentation about Service Oriented Architecture. I grabbed some tutorials and text's. Do you know what was the first thing that I did? CTRL+F and after that "OSGi" at my sources. "Nothing found". My sources kept on and on with Web Services, loose coupling, XML, Communication protocols, discoverability, reusability, in XML, and again and again, then continuing with Enterprise integrations and matters like that. 2 things now represent what SOA is, from my point of view.
- The service-oriented architecture introduces a new logical layer within the distributed computing platform.
- The service integration layer establishes a common point of integration within application tiers and across application boundaries.
(picture scanned from a very nice book about SOA, Service-Oriented Architecture: A Field Guide to Integrating XML and Web Services by Thomas Erl)
Now the voice of an OSGi junior. OSGi is a managed service oriented architecture by itself not some short of Web Service.
- Web Services are the building blocks of the most Service Oriented Architectures. This design approach, results in the creation of isolated units of business functionality loosely bound together by a common compliance to a standard communications framework (http at the 99%).
- Bundles are packages of functionality that consist the building blocks of OSGi, a Java-Based middleware that you can use in order to orchestrate functionality modules that can cooperate both locally and remotely. It can, enclose web services, it can become part of a bigger SOA with bundles as Web Services.
To sum up, Service - Oriented Architecture is neither web services, soap, XML nor OSGi. Technologies are based on models, models shouldn't be connected with implementations.
Well, that is for now.
Any comments are more than appreciated.
Συνεχίζοντας λοιπόν αυτή τη μικρή αναζήτηση γύρω από τα Design Patterns, σήμερα θα μιλήσουμε για το Factory. Πριν αναφέρω τα χαρακτηριστικά του pattern, ακολουθώντας τον τρόπο που ξεκίνησα το προηγούμενο post μου, θα ήθελα να πω τα εξής:
Έρχεται μια άλλη φάση στην ζωή του προγραμματιστή :P , που έχοντας αποφασίσει ότι θα κάνει το βήμα να μάθει να σχεδιάζει σωστά τον κώδικά του, ψάχνει να βρει πηγές που θα του δώσουν αυτό που θέλει να μάθει με τον καλύτερο και πιο κατανοητό τρόπο. Έτσι λοιπόν έκανα και εγώ...
Αναζήτησα το Design Patterns: Elements of Reusable Object-Oriented Software. Ένα παλιό βιβλίο (94), μία έκδοση έχει βγάλει, όλοι το θεωρούν την βίβλο των design patterns. Το πήρα και εγώ με αισιοδοξία για το μέλλον. Όσο όμως προσεκτικά και αν το διάβαζα δεν μπορούσα να κάνω κτήμα μου κάθε τι που έλεγε εκεί μέσα. Ήταν απλά αδύνατο, οι πληροφορίες ήταν τόσες πολλές, οι λεπτομέριες χαοτικές και η θεωρία τόσο πλήρης (πράγματα που όντως, κάνουν ένα βιβλίο, θρησκεία) που μόνο για να έχεις μια πρώτη επαφή με Design Patterns δεν ήταν...όσο και αν είχα την ελπίδα ότι θα τα καταφέρω εύκολα και γρήγορα, τουλάχιστον σε θεωρητικό επίπεδο, τόσο μπερδευόμουν όχι από θέμα ποιότητας (που ήταν άριστη), αλλά περιεκτικότητας πληροφορίας. Ένιωθα όπως τότε που είχα πάρει το βιβλίο των KnR για να μάθω C. Δεύτερη φορά στην ζωή μου λοιπόν. Και για να μην βρεθείτε σε παρόμοια κατάσταση θα το πω φωναχτά.
ΔΕΝ ΠΑΙΡΝΟΥΜΕ CORE REFERENCE MANUAL ΣΤΗΝ ΠΡΩΤΗ ΜΑΣ ΕΠΑΦΗ ΜΕ ΚΑΠΟΙΟ ΘΕΜΑ
Αυτή η φάση του προγραμματιστή λοιπόν, τελειώνει όταν βρούμε ένα βιβλίο απλό, κατανοητό
και ταυτόχρονα να κρατάει υψηλό το επίπεδο της ποιότητας στις παρεχόμενες πληροφορίες. Ένα τέτοιο βιβλίο είναι αυτό που μου πρότεινε ο φίλος Νίκος Παλλαδινός πρόσφατα και θα ήθελα να το μοιραστώ και με εσάς, μιας και το βρήκα τρομακτικά ενδιαφέρον (σε σημείο να απειλήσει λοιπές υποχρεώσεις μου) και πολύ έξυπνα γραμμένο. Και ο τίτλος αυτού Head First Design Patterns με κώδικα σε Java και με ένα εξώφυλλο που έχω ιδιαίτερη αδυναμία. Heheheh. Ακολουθώντας ένα μείγμα εμπειριών απο διάφορα βιβλία συνεχίζω να δίνω μια μικρή περιγραφή στα patterns για να συζητάμε κάθε φορά και να μαθαίνουμε μέσα από την συζήτηση.
Design Pattern 2#: Factory
Με το Factory pattern μπορούμε να δημιουργήσουμε μία διεπαφή η οποία θα μας επιστρέφει το νέο αντικείμενο που θέλουμε αλλά το είδους του αντικειμένου που θα επιστραφεί θα καθορίζεται στις υποκλάσεις. Αρκετά με την θεωρία. Μία πρόταση φτάνει. Ας πάμε κατευθείαν στο παράδειγμα για να δούμε πώς λειτουργεί το Factory pattern και που χρησιμοποιείται.
Το αγαπημένο μου θέμα. Πείτε ότι θέλουμε να φτιάξουμε ένα κατάστημα που να φτιάχνει σουβλάκια (no comments pls...show some respect στο τρόφιμο :P:P..hehe). Θέλω μία τέτοια μέθοδο δηλαδη
Souvlaki orderSouvlaki()
{
Souvlaki souvlaki = new Souvlaki();
souvlaki.etoimase();
souvlaki.tilikse();
souvlaki.paketarise();
return souvlaki;
}
Έστω λοιπόν ότι θέλω να προσθέσω κώδικα που να ελέγχει τι τύπο σουβλάκι θέλω να φτιάξω με βάση την περιοχή (τοπική παραλλαγή), θα έχω κάτι σαν αυτό:
Souvlaki orderSouvlaki(String perioxi)
{
Souvlaki souvlaki;
if (perioxi.Equals("notia_ellada"))
souvlaki = new KanonikoSouvlaki();
else if (perioxi.Equals("voreia_ellada"))
souvlaki = new VoreiasElladasSouvlaki();
else if (perioxi.Equals("kipriako"))
souvlaki = new KipriakiPitaSouvlaki();
souvlaki.etoimase();
souvlaki.tilikse();
souvlaki.paketarise();
return souvlaki;
}
Αν το κατάστημα δεν πουλάει πολύ σουβλάκια τύπου βόρειας ελλάδας, για να μην έχει απώλεια κέρδους θα πρέπει να σταματήσει την παρασκευή τους. Αν βλέπει ότι του ζητάνε σουβλάκι τύπου Ιωαννίνων κάτι θα έπρεπε να κάνει, οπότε:
Souvlaki orderSouvlaki(String perioxi)
{
Souvlaki souvlaki;
if (perioxi.Equals("notia_ellada"))
souvlaki = new KanonikoSouvlaki();
else if (perioxi.Equals("voreia_ellada"))
souvlaki = new VoreiasElladasSouvlaki();
else if (perioxi.Equals("kipriako"))
souvlaki = new KipriakiPitaSouvlaki();
else if (perioxi.Equals("ioannina"))
souvlaki = new GianniotikoSouvlaki();
souvlaki.etoimase();
souvlaki.tilikse();
souvlaki.paketarise();
return souvlaki;
}
Είναι προφανές ότι όταν θέλουμε να ρυθμίσουμε ποια κλάση θα αρχικοποιείται, υπάρχει σοβαρό πρόβλημα. Ο κώδικάς μας δεν είναι καθόλου modular. Έχουμε ένα στοιχείο όμως!!!! Ξέρουμε τώρα τι πρέπει να κάνουμε encapsulate!!! Καταρχάς φτιάχνουμε μια καινούρια μέθοδο αφαιρώτας το παραπάνω κομμάτι βάζοντας το σε μία μέθοδο που αναλαμβάνει αυτό ακριβώς το σημείο. Και έχουμε όνομα να της δώσουμε...SouvlakiFactory.
public class SouvlakiFactory
{
public Souvlaki createSouvlaki(String perioxi)
{
Souvlaki souvlaki;
if (perioxi.Equals("notia_ellada"))
souvlaki = new KanonikoSouvlaki();
else if (perioxi.Equals("voreia_ellada"))
souvlaki = new VoreiasElladasSouvlaki();
else if (perioxi.Equals("kipriako"))
souvlaki = new KipriakiPitaSouvlaki();
else if (perioxi.Equals("ioannina"))
souvlaki = new GianniotikoSouvlaki();
return souvlaki;
}
}
Μα τι κάναμε τώρα; Πήραμε το πρόβλημα και το μεταθέσαμε. Άλλαξε κάτι; Ναι! Άλλαξε κάτι πολύ σημαντικό. Το SouvlakiFactory μπορεί να έχει πολλούς clients και όχι μόνο την orderSouvlaki. Μπορεί να υπάρχει άλλη κλάση που να υπολογίζει την τιμή, ή να κανονίζει την παράδοση εφόσον υπάρχει διανομή κατοίκων. Έτσι, τώρα έχουμε ένα σημείο να κάνουμε αλλαγές. Ορίστε πως έχει τώρα ο κώδικάς μας.
SouvlakiFactory factory;
public Souvlantzidiko(SouvlakiFactory factory)
{
this.factory = factory;
}
Souvlaki orderSouvlaki(String perioxi)
{
Souvlaki souvlaki;
souvlaki = factory.createSouvlaki(perioxi);
souvlaki.etoimase();
souvlaki.tilikse();
souvlaki.paketarise();
return souvlaki;
}
Έστω τώρα ότι το κατάστημά μας επεκτείνεται σε όλη την Ελλάδα και ο κώδικας είναι παντού ο ίδιος. Παρόλα αυτά, όταν θα πάμε στην Σπάρτη, υπάρχει ένας ειδικός τύπος για Σουβλάκι Νότιας Ελλάδας(σπεσιαλ σαλτσα) που αρέσει στους ντόπιους. Δεν θα έπρεπε να έχω λοιπόν ένα ειδικό factory όπως το παρακάτω;
SpartiFactory spFactory = new SpartiFactory();
Souvlantzidiko spartiSouvlantzidiko = new Souvlantzidiko(spFactory);
spartiSouvlantzidiko.orderSouvlaki("notia_ellada");
Το πρόβλημα εδώ όμως είναι ότι δεν έχουμε τον έλεγχο το ποιος θα κάνει create τι. Πχ. κάποιος κάνει την δική επιχείρηση χρησιμοποιώντας το δικό σας factory. Χρειαζόμαστε μία ακόμα πινελιά για να έχουμε το Factory μας δεμένο με το κάθε κατάστημα. Παρατηρείστε το σχόλιο στην abstract κλάση
public abstract class Souvlantzidiko
{
public Souvlantzidiko(SouvlakiFactory factory)
{
}
Souvlaki orderSouvlaki(String perioxi)
{
Souvlaki souvlaki;
souvlaki = createSouvlaki(perioxi);
souvlaki.etoimase();
souvlaki.tilikse();
souvlaki.paketarise();
return souvlaki;
}
//To factory object υπάρχει εδώ. Αυτό ακριβώς το σημείο
//είναι εκείνο στο οποίο αποφασίζει η κάθε υποκλάση την υλοποίηση που θέλει.
protected abstract Souvlaki createSouvlaki(String perioxi);
}
Το factory pattern όπως το αναλύσαμε εδώ μπορεί να χρησιμοποιηθεί σε πάρα πολλές καταστάσεις και αν το καταλάβουμε καλά, θα μας λύσει τα χέρια σε πολλά σημεία. Στο .NET υπάρχει υλοποιημένο σε πολλές λειτουργίες της βιβλιοθήκης εξυπηρετώντας κάθε φορά αυτήν την λειτουργικότητα. Για παράδειγμα, για να διαβάσετε/στείλετε δεδομένα στο δίκτυο με βάση ένα uri μπορείτε να χρησιμοποιήσετε την System.Net.WebRequest. Αν ξέρετε λίγο από system programming κάθε πρωτόκολλο ακολουθεί αυστηρά τις δικές του συμβάσεις επικοινωνίας, τόσο στην δημιουργία sockets όσο και στα μηνύματα που ανταλάσσονται κλπ. Η WebRequest.Create δημιουργεί ένα αρμόδιο αντικείμενο με βάση το URI που θα του δώσουμε επιστρέφοντας μας το κατάλληλο instance που θα μας επιτρέψει την επικοινωνία. Το uri μπορεί να είναι ένα από τα τρία (default) "http://", "https://", and "file://".
Enjoy, stay tuned!!!
Σκέψη και γλώσσα. Σκέφτομαι, άρα υπάρχω. Τι σκέφτομαι όμως αν δεν έχω μία λέξη να το περιγράψω; Άρα δεν μπορώ ακόμα να υπάρξω, αλλά ούτε και αυτό που σκέφτομαι υπάρχει. Πάμε πάλι πίσω. Βρίσκω μία λέξη γι'αυτό που σκέφτομαι. Τώρα υπάρχω. Υπάρχει και η έννοια που θέλω να δείξω στον κόσμο. Τώρα μπορώ να την εξελίξω. Κάπως έτσι έγινε και με το Web 2.0 το οποίο αποτέλεσε έναν παραλληλισμό με δεύτερη μεγάλη έκδοση ενός προγράμματος. Δεύτερη έκδοση, που περιέχει όχι μόνο bug fixes, πρόσθετη λειτουργικότητα αλλά ίσως και μια μικρή τόσο δα αλλαγή στην φιλοσοφία.
Web 2.0: Ο ιστός πληροφοριών αποτελείται από κόμβους οι οποίοι αποκτούν αξία από χρήστες που προσθέτουν δεδομένα σε αυτούς.
Ξαφνικά όμως, σαν να μην πηγαίνει κάτι καλά(!;) Χρόνος και προσπάθεια σαν να αχνοφαίνεται ότι απειλείται. Τι θα γίνει αν κλείσει το site που ανεβάσαμε τις αγαπημένες φωτογραφίες μας; Τι θα γίνει αν το social networking site που μιλάμε με τους φίλους μας από το λύκειο κλείσει; Διάβασα σε ένα σχετικό άρθρο ότι ο φόβος που απορρέει από τα προηγούμενα παραδείγματα μπορεί να μειωθεί εφαρμόζοντας τον νόμο του Metcalfe, ο οποίος λέει ότι: η αξία μιας κοινότητας είναι ανάλογη με το τετράγωνο των κόμβων της κοινότητας. Διαιρώντας ένα δίκτυο στα δύο, η αξία υποδιπλασιάζεται.
- Facebook, Myspace, hi5 : Social networking σε δόσεις
- Email: WOW effect μέχρι σήμερα
- FAX: Same excitement ακόμα και χρόνια μετά
- Instant Messaging: Δώσε μου το skype σου, ή το msn σου αν έχεις, ή το ICQ, ή το yahoo σου να τα πούμε κάποια μέρα.
- GSM: ... no comments :)
To web 2.0 κάνει κάτι ανάλογο, χωρίζει το σύμπαν σε επιμέρους υποδίκτυα....Και εκεί που λες μας πώς γίνεται να υπάρχει 4η διάσταση, υπάρχουν κάποιοι άνθρωποι, που την έχουν μοντελοποιήσει ήδη!
Semantic Web: Τα δεδομένα μας έχουν μια συγκεκριμένη μορφή η οποία γίνεται αντιληπτή από έξυπνα συστήματα και πράκτορες όπου μπορούν να διαχειριστούν, διαδώσουν, ενσωματώσουν πληροφορία γρήγορα και εύκολα και αυτόματα.
Μπαίνει η σημασιολογία στις εφαρμογές μας. Νέα standars, νέες τεχνικές εφαρμοσμένες στις ήδη υπάρχοντες τεχνολογίες. Μερικές έννοιες που μπορείτε να κοιτάξετε είναι τα παρακάτω:
Αν όλα πάνε καλά, η μεταφορά από τον ένα τύπο δικτύου στον άλλον θα γίνει άμεσα και γρήγορα. Ο χρήστης δεν χρειάζεται να κάνει τίποτα απολύτως. Υπάρχει λίγη δουλειά από τον application developer ώστε να γίνουν τα δεδομένα διαθέσιμα με Semantic Web friendly τρόπο. Όπως όταν είχαμε SQL τα δεδομένα μας τα παρουσιάζαμε με xml ή με csv. Κάπως έτσι φανταστείτε και την μεταφορά σε Semantic Web terms. Βέβαια τα πράγματα είναι λιγότερο απλά από ότι τα παρουσιάζω εδώ αλλά πιστεύω ότι η γενική ιδέα είναι αυτή.
Την χρονιά που πέρασε ακούσαμε σε Remix και TechEd για REST και project Astoria. Ένα project που αποτελείται από ένα Entity Data Model το οποίο παρουσιάζει δεδομένα με τέτοιον τρόπο ώστε να είναι διαθέσιμα σύμφωνα με κάποια από τα παραπάνω πρότυπα. Το ποια πρότυπα θα υλοποιούνται τελικά, δεν το ξέρουμε ακόμα. Το ποιοί άλλοι μεγάλοι vendors θα βγάλουν εργαλεία επίσης δεν το γνωρίζουμε, παρόλα αυτά οδεύουμε στην νέα γενιά so stay tuned.
Σήμερα ξεκίνησα ένα δεύτερο blog για XNA Game Programming,
όπου θα κοιτάζουμε διάφορα θέματα γύρω από την πλατφόρμα της microsoft για προγραμματισμό παιχνιδιών.
Μπορείτε να το καλωσορίσετε εδώ
Ελπίζω να περάσουμε όμορφα προγραμματίζοντας, γιατί όπως λέει ένας φίλος μου.... ο προγραμματισμός είναι τέχνη
και συνεχίζοντας θα συμπληρώσω εγώ...και το game programming ή ισχυρότερη έκφανσή του.
Cheers,
Άγγελος
Γνωρίσαμε το παιχνίδι Theseis της track7games στο προηγούμενο post.
Ο Κώστας Μιχαλόπουλος, γνωστός και ως Bad Sector στην σκηνή των Ελλήνων προγραμματιστών, είναι μέλος της ομάδας ανάπτυξης του παιχνιδιού και μας μιλάει για τον ίδιο, την πορεία του στον χώρο του game development, για το παιχνίδι Theseis και όχι μόνο...
[SG] Πες μας λίγα πράγματα για σένα. Πώς και σε ποια ηλικία αναμίχθηκες με το προγραμματισμό παιχνιδιών; Σου αρέσει μόνο αυτό το είδος προγραμματισμού ή ασχολείσαι και με άλλα; Λίγα λόγια για σένα από την DemoScene Era, μέχρι σήμερα.
[Κώστας] Με προγραμματισμό ασχολούμαι απο περίπου 7 ετών, όταν πρωτοεμφανίστηκε υπολογιστής στο σπίτι και στην αρχή κάπως κρυφά απο τους γονείς μου. Απο την αρχή προσπάθησα να φτιάξω παιχνίδια σε GWBasic και Turbo Pascal σε έναν PC/XT με μια ATI κάρτα που υποστήριζε CGA και Hercules (αλλάζοντας έναν διακόπτη στο πίσω μέρος). Τα παιχνίδια αυτά, φυσικά, ήταν πολύ απλοϊκά, όπως για παράδειγμα το "Spider" όπου είχες έναν ASCII χαρακτήρα που κατά την τότε φαντασία μου θύμιζε αράχνη και τον μετακινούσες με τα βελάκια στην οθόνη αποφεύγοντας άλλους χαρακτήρες.
Γενικότερα μου αρέσει πολύ το game development σαν είδος προγραμματισμού και αυτό είναι που με ενδιαφέρει περισσότερο απο κάθε άλλο είδος, αφού περιλαμβάνει ένα μεγάλο εύρος πεδίων στον τομέα. Ένας game developer μπορεί να ασχοληθεί με πολλά διαφορετικά θέματα, όπως γραφικά, ήχος, ανάπτυξη συστημάτων, scripting, βάσεις δεδομένων (κυρίως σε ΜΜΟ, αλλά και σε πιο κλασσικά παιχνίδια), networking, και φυσικά γενικό optimization (σε μεγαλύτερες ομάδες προγραμματιστών συχνά ένας προγραμματιστής αναλαμβάνει το optimization κώδικα που έχουν γράψει άλλοι).
Την demoscene πρωτογνώρισα το 1999 περίπου και το 2001 πήγα στο πρώτο μου demoparty, το Digital Nexus 2001 σαν μέλος των "Nasty Bugs", το demogroup που ιδρύσαμε μαζί με ένα άλλο παιδί, τον Μιχάλη "Optimus" Κάργα. Εκεί λάβαμε μέρος στον διαγωνισμό demo (όπου πρωτοείδαμε πόσο καλοί είναι οι ASD - κάτι που το γνώρισε πρόσφατα και ο υπόλοιπος demoκόσμος με την σειρά βραβείων που έχουν κερδίσει σε παγκόσμια demoparties και οργανώσεις της σκηνής) με το demo Atsou, το οποίο ήταν βασικά εφφέ που είχε γράψει ο Optimus σε μια μικρή VGA βιβλιοθήκη που είχα γράψει και του είχα στείλει λίγο παλιότερα, τα οποία μετά ένωσα σε ένα "demo" και χρησιμοποίησα μια εικόνα που είχα φτιάξει για ένα ελληνικό diskmag που σκόπευα να φτιάξω (μέχρι τότε ο Optimus χρησιμοποιούσε την γνωστή εικόνα απο τον τίτλο του Doom 1).
Σήμερα δεν είμαι ιδιαίτερα active αφού τόσο εγώ, όσο και τα υπόλοιπα μέλη του group, αλλά συχνά παρακολουθώ τις εξελίξεις, ιδιαίτερα στα μεγάλα events.
[SG] Στο Theseis θεωρείς τον εαυτό σου game engine developer ή game developer;
[Κώστας] Κατ'εμέ game developers είναι όλοι όσοι ασχολούνται για την ανάπτυξη ενός παιχνιδιού, είτε είναι προγραμματιστές, είτε καλλιτέχνες, είτε μουσικοί. Αν έχεις συνεισφέρει στην γενικότερη εμπειρία του παιχνιδιού, είσαι game developer. Προσωπικά, λοιπόν, θεωρώ τον εαυτό μου game developer :-)
[SG] Με τι εργαλεία δουλέψατε για τον σχεδιασμό των οπτικών στοιχείων ώστε να παράγετε το φοβερό αποτέλεσμα πιστής αντιγραφής αληθινών περιοχών (όπως αυτές που βλέπουμε στα screenshots στο Μοναστηράκι);
[Κώστας] Τα εργαλεία είναι διάφορα και τις λεπτομέρειες τις γνωρίζουν οι καλλιτέχνες της εταιρίας, αλλά γενικότερα χρησιμοποιούμε τα "standard" εργαλεία που χρησιμοποιούν οι εταιρίες του χώρου, όπως το 3D Studio και το Photoshop.
[SG] Χρησιμοποιείτε κάποια 3rd party engine ή έχετε σχεδιάσει εκ του μηδενός δική σας; Πώς γινόταν η κατανομή εργασιών ανάμεσα στα μέλη της ομάδας για τον σχεδιασμό της;
[Κώστας] Η μηχανή είναι εκ του μηδενός δική μας. Οι εργασίες κατανέμονται με έναν πολύ απλό τρόπο: έχουμε μια λίστα με τις εργασίες που πρέπει να γίνουν και όταν κάποιος τελειώσει σε ότι δουλεύει, επιλέγει την επόμενη. Έτσι ο καθένας δουλεύει σε αυτό που τον βολεύει περισσότερο. Φυσικά γίνεται κάθε φορά μια μικρή συννενόηση σχετικά με το τι περίπου θα ασχοληθεί ο καθένας.
Αυτά είναι εύκολα ζητήματα όταν οι προγραμματιστές είναι μόνο τρεις :-).
[SG] Ποιές τεχνολογίες έχετε κάνει integrate και πώς την έχετε προδιαγράψει για platform independence. Ποιες σχεδιαστικές επιλογές κάνατε για να το πετύχετε(Για παράδειγμα, endianess ανάμεσα σε XBOX και PC);
[Κώστας] Σχεδόν τα πάντα, με εξαίρεση κάποιες βασικές βιβλιοθήκες για φόρτωμα εικόνων, είναι γραμμένα εκ νέου απο εμάς. Η ανάπτυξη έγινε κυρίως σε PC, αλλά κάποιοι απο εμάς είχαμε (και έχουμε) πρόσβαση σε big endian μηχανήματα (βασικά κάποια παλιά μηχανήματα της SGI) και φροντίσαμε τα διάφορα κομμάτια της μηχανής να δουλεύουν ανεξαρτήτως endianess δοκιμάζοντας τα εκεί.
[SG] Ποιες τεχνολογίες χρησιμοποιήσατε για την ανάπτυξη του παιχνιδιού στον τομέα των γραφικών; Με τι κριτήρια τις επιλέξατε;
[Κώστας] Τα περισσότερα απο τα κομμάτια της μηχανής είναι ανεξάρτητα απο συγκεκριμένες τεχνολογίες. Τώρα χρησιμοποιούμε Direct3D 9, αλλά εύκολα η μηχανή μετατρέπεται έτσι ώστε να δουλέυει με OpenGL (για την ακρίβεια ήδη υπάρχει ένα μεγάλο μέρος ενός OpenGL implementation του backend για το σύστημα γραφικών).
[SG] Υπήρξε σημείο που χρειάστηκε να κατατεθεί όλη η ενέργεια της ομάδας για την επίλυση κάποιου προγραμματιστικού προβλήματος; Αν ναι τι φύσης ήταν αυτό (Memory Management, Multithreading,…) και τι αποκόμισες από αυτήν την εμπειρία;
[Κώστας] Όσο είμαι στην εταιρία, δεν έχει χρειαστεί κάτι τέτοιο. Συνήθως όλοι δουλεύουν σε όλα, χωρίς ιδιαίτερα προβλήματα.
[SG] Πώς χειριστήκατε την τεχνητή νοημοσύνη στο παιχνίδι; Χρησιμοποιήσατε κάποια scripting language;
[Κώστας] Χρησιμοποιούμε την γλώσσα UndeadScript που ξεκίνησα να σχεδιάζω πριν 4 χρόνια για την δική μου μηχανή, Undead, αλλά εξελίχθηκε σε αυτόνομη μηχανή για scripting. Μια και εγώ προσωπικά είμαι υπεύθυνος για το όλο θέμα με το scripting, προτίμησα να χρησιμοποιήσω μια βιβλιοθήκη που μου είναι πολύ οικεία :-).
Για όσους ενδιαφέρονται, η σελίδα της UndeadScript είναι http://www.slashstone.com/more/uscript (σημειώστε πως η σελίδα για την ώρα δεν παίζει σε IE6)
[SG] Έχεις μπροστά σου έναν νέο game developer. Τι θα τον συμβούλευες; Υπάρχει η τέλεια συνταγή σε αυτά που πρέπει να μάθει σχετικά με game development; Κοινώς, να μάθει γραφικά πρώτα και μετά να προχωρήσει στο game development ή θα μάθει γραφικά στην πορεία του game development;
[Κώστας] Τέλεια συνταγή δεν υπάρχει για τίποτα. Κάθε προγραμματιστής οφείλει να γνωρίζει οτι για κάθε πρόβλημα υπάρχουν πολλές λύσεις. Σίγουρα κάποιες είναι καλύτερες απο άλλες, αλλά το σημαντικότερο είναι πρωτίστως να λυθεί το πρόβλημα και μετά αν χρειάζεται να αναζητάται μια καλύτερη λύση. Αυτό ισχύει για σχεδόν οτιδήποτε στον προγραμματισμό :-).
Υπάρχει μια γενική παρεξήγηση στο game development όμως. Ένα παιχνίδι δεν αρχίζει και τελειώνει στα γραφικά, αλλά έχει πολύ περισσότερα πράγματα πίσω. Προσωπικά θα πρότεινα να ασχοληθεί κάποιος με την ανάπτυξη ενός απλού παιχνιδιού, όπως το pong, ώστε να κατανοήσει την ροή ενός παιχνιδιού.
Τα γραφικά, αν και είναι ένα απο τα σημαντικότερα κομμάτια του παιχνιδιού (ένα άλλο είναι το interaction -events, handlers, scripting, κλπ- που χωρίς αυτό έχεις απλά έναν renderer και τίποτα περισσότερο), αλλά είναι επίσης κι ένα κομμάτι που αλλάζει πολύ γρήγορα. Το 1996 με πάνω κάτω ίδιο τρόπο έφτιαχναν το interaction με σήμερα, αλλά το 90% των μεθόδων γραφικών έχει αλλάξει, με τα απολύτως βασικά να μένουν τα ίδια (και κανείς δεν εγγυάται πως ούτε αυτά δεν θα αλλάξουν στο μέλλον).
Αν κάποιος μόλις ξεκινάει να μαθαίνει game development, του προτείνω να μάθει τα απολύτως απαραίτητα όσο αφορά τα γραφικά, γιατί στην αρχή θα τον απασχολούν άλλα θέματα (υπάρχει κόσμος για παράδειγμα, που δυσκολεύεται στο timing). Στην αρχή θα πρέπει να ασχοληθεί με την ανάπτυξη απλών παιχνιδιών που θα τον απασχολήσουν το πολύ έναν μήνα, με τα πρώτα να μην τον απασχολήσουν πάνω απο μια εβδομάδα.
Όταν νιώθει έτοιμος για να προχωρήσει παραπέρα, τότε πιστεύω πως πρέπει να αρχίσει να μπαίνει βαθύτερα στο θέμα των γραφικών.
[SG] Τo XNA το έχεις χρησιμοποιήσει; Πώς σου έχει φανεί; Σε κάποιο μελλοντικό σας project, θα εξετάζατε την επιλογή της πλατφόρμας XNA, για την υλοποίησή του;
[Κώστας] Έχω δοκιμάσει την πρώτη έκδοση πριν λίγους μήνες, ανεξάρτητα απο την Track7 Games. Μου φάνηκε αρκετά ενδιαφέρον για σχετικά νέους στον χώρο, αλλά προσωπικά δεν θα το χρησιμοποιούσα αφού έχω αναπτύξει πολύ κώδικα σε άλλες γλώσσες για τον ίδιο σκοπό. Το μοναδικό δέλεαρ είναι το XBLA, το οποίο όμως δέχεται και σε πιο συμβατικές γλώσσες (C++). Για ένα "fun project", αν είχα XBox360 και αν δεν χρειαζόταν ετήσια συνδρομή, ίσως το χρησιμοποιούσα.
Όσο αφορά την Track7 Games, για την ώρα το Theseis είναι το σημαντικότερο project.
[SG] Μία ερώτηση φιλοσοφικού περιεχομένου τώρα: Είναι ο προγραμματισμός τέχνη;
Φυσικά! :-)
[Κώστας] Γνωρίζεις οτι οι ζωγράφοι της Ιταλικής Αναγέννησης χρησιμοποιούσαν μαθηματικά γραμμών για να αποδώσουν την προοπτική. Ο Leon Battista Alberti, ένας διάσημος καλλιτέχνης της εποχής, πρωτοχρησιμοποίησε την θεωρία του Ευκλείδη για τα παρόμοια τρίγωνα ώστε να αποδώσει μέσω μαθηματικών την προοπτική, την ίδια τεχνική που χρησιμοποιείται σήμερα για απόδοση τρισδιάστατων γραφικών στους υπολογιστές.
[SG] Γνωρίζουμε ότι είστε ένα βήμα πριν από την έκδοση του τίτλου που περιμένει ολόκληρη η Ελληνική κοινότητα των gamers (και όχι μόνο), με αγωνία. Ευχαριστούμε, για τον χρόνο σου και τώρα μία τελευταία ερώτηση…. Πότε θα δούμε το Theseis στα ράφια :);
[Κώστας] ASAP! ;-)
Ευχαριστώ θερμά τον Κώστα για την συνέντευξη που μας παραχώρησε. Πραγματικά είναι πολύ ωραίο να γνωρίζουμε εκφραστές που λαμβάνουν μέρος, στις διεθνείς εξελίξεις, του game programming. Ενός κλάδου τόοοσο κοντά στην νεανική (και μη) τρέλλα και τόσο μακριά από την χώρα μας. Ευχόμαστε τα καλύτερα στην δουλειά των παιδιών της track7games και το έργο τους να γνωρίσει διεθνή επιτυχία.

2008.... Η χρονιά που όλοι (προσ)ευχόμαστε να μπει η Ελλάδα δυναμικά στον χώρο του game development. Μέσα σε έναν χώρο που παλεύουν μεγαθήρια, διεθνώς. Το κοινό, ο πήχης που έχει ανέβει και τα χρηματικά ποσά που εμπλέκονται στον κόσμο του προγραμματισμού παιχνιδιών δεν αφήνουν πολλά περιθώρια σε ανεξάρτητες κινήσεις να δουν το φως... από κάποιο...ράφι. Μέσα σε αυτό λοιπόν τον κόσμο, έχουμε μια ελληνική εταιρεία που τολμά να αναλάβει δράση με μια πρωτοβουλία με πολλές αξιώσεις και πολλά υποσχόμενη.
Αναφέρομαι στο παιχνίδι Theseis της ελληνική εταιρείας track7games που έχει τα κεντρικά της στο κέντρο της Αθήνας στο Μοναστηράκι. Πρόκειται για ένα παιχνίδι action adventure διεθνών standar στα γραφικά και στο story line, που αναμένεται σύντομα(αρχες 2008). Το παιχνίδι αναπτύσσεται τα τελευταία δύο χρόνια και ήδη η εταιρία έχει πάρει μέρος στις τελευταίες δύο εκθέσεις Ε3 λαμβάνοντας διθυραμβικές κριτικές. Έχει σχεδιαστεί για PC και όταν γίνει port σε XBOX θα χρησιμοποιηθεί XBOX 360 SDK (C++)
Το Theseis τοποθετείται στην σύγχρονη Ελλάδα (με μεταφορές σε άλλες εποχές) και διαδραματίζεται σε πολλά σημεία της χώρας όπως στο Μοναστηράκι, στους Δελφούς και στην Κρήτη. Οι πρωταγωνιστές, Ανδρόνικος Καλογήρου και η θετή του αδερφή Φοίβη καλούνται να ανακαλύψουν το μυστήριο του θανάτου του πατέρα τους διαπιστώνοντας ένα καλά κρυμμένο υπερφυσικό μυστικό αιώνων. Πεπεισμένα τα δύο «αδέλφια» ότι κάτι κακόβουλο κρυβόταν πίσω από το θάνατο του πατριού, αποφασίζουν να ερευνήσουν το «μονοπάτι» που φαινόταν να είχε αφήσει πίσω του ο Κώστας Καλογήρου. Και εδώ αρχίζει η ιστορία του Theseis.
Το «Theseis» θα παρέχει ποικίλους γρίφους και αινίγματα σε επίπεδα μαγείας, μηχανικών κατασκευών, διερεύνησης και επιλογής προτεινόμενων απαντήσεων βάση των διαλόγων των χαρακτήρων. Οι εν λόγω διάλογοι θα είναι στην αγγλική γλώσσα, προσφέροντας ταυτόχρονα την επιλογή ελληνικών υπότιτλων (να σημειωθεί ότι τα βιντεάκια είναι όλα στα Αρχαία Ελληνικά και τα Λατινικά με αγγλικούς υπότιτλους), ενώ υπάρχουν φήμες ότι στο μέλον μπορεί να υπάρξει και η ελληνική γλώσσα.
Μερικά από τα σπουδαιότερα στοιχεία που αναμένουμε (στο καταπληκτικό όπως φαίνεται από την πληροφορίες που βρήκα γι'αυτό παιχνίδι) είναι:
- Εναλλακτικά τέλη, ανάλογα με τις αποφάσεις που θα πάρετε κατά τη διάρκεια του παιχνιδιού.
- Μεγάλη ποικιλία puzzles που βασίζονται στην ελληνική μυθολογία.
- Μηχανή γραφικών με ιδιαίτερα ρεαλιστικές φωτοσκιάσεις και γραφικά
- Περιβάλλοντα που αποδίδουν τη σημερινή εικόνα της Αθήνας αλλά και τον κόσμο του... Άδη με απίστευτο ρεαλισμό.
Αναμένουμε από βδομάδα σε βδομάδα ανακοίνωσή σας παίδες. Καλή επιτυχία.....Η ιστορία αναδεικνύει ότι τα παιχνίδια που αρέσουν ανεβαίνουν στο "βάθρο"... και όχι αυτά που έχουν μεγάλο publisher από πίσω. Έχετε την υποστήριξη όλης της Ελληνικής (και από ότι διαβάζω) και της διεθνούς κοινότητας...... !!!
[YouTube:cw0reUhAMp4]
[YouTube:aEM6pqWdQS4]
Μιας και σήμερα πέρασα την τελευταία ώρα κοιτάζοντας το keynote της Microsoft στην CES θεώρησα μια καλή κίνηση να σας κάνω μια μικρή παρουσίαση για το τι ειπώθηκε φέτος στο Keynote της 2008 International CES, το οποίο ήταν και το τελευταίο keynote του Bill μιας και δεν θα είναι πια full time employee στη ms.
Η πρώτη ανακοίνωση ήταν για το ότι το NBC κάνει το MSN, το αποκλειστικό hosting home για τη κάλυψη θερινών Ολυμπιακών Αγώνων 2008 που θα διεξαχθούν στην Κίνα. Θα υπάρξουν χιλιάδες ώρες περιεχομένου διαθέσιμες στο nbcolympics.com. Τα βίντεο θα είναι και ζωντανά και on demand, με πάνω από 30 ταυτόχρονες ζωντανές ραδιοφωνικές μεταδόσεις, 2.200 ώρες live και 3.000 ώρες του κατα παραγγελίας περιεχομένου. Το σημαντικό για τον κόσμο των προγραμματιστών είναι ότι θα δείξει την δυναμή της ακόμα περισσότερο η τεχνολογία Silverlight καθώς ολο το βίντεο θα μοιραστεί με βάση αυτό το σχήμα και με ποιότητα σε HD.
Στην συνέχεια έγινε παρουσίαση του surface και ενός ολοκαίνουριου demo σχεδιάζοντας ένα snowboard χρησιμοποιώντας τεχνολογία multitouch, χρησιμοποιώντας διαφορετικά σχέδια. Στην συνέχεια τοποθέτησε το κινητό του στην επιφάνεια του τραπεζιού και μετέφερε τα δεδομένα του μέσο του δικτύου τηλεφωνίας.
Στην συνέχεια μίλησε ο Robbie Bach πρόεδρος του τμήματως ψυχαγωγίας και συσκευών της microsoft. Ορίστε μερικά από τα θέματα που έθιξε.
- Παρουσίαση αριθμών για το Xbox. Πωλήσεις 17.5 εκατομμυρίων xbox 360 μονάδων και με 7 τίτλους που ξεπερνούν το 1 εκατομμύριο πωλήσεων Οι ΑΜΕΡΙΚΑΝΙΚΟΙ χρήστες ξόδεψαν περισσότερων σε Xbox 360 το 2007 από περισσότεροι σε οποιαδήποτε άλληδήποτε κονσόλα παιχνιδιών (αναφορές σε Wii και PS3)
- To ABC και το κανάλι Disney θα συνεργαστούν για διαθέσιμο υλικό στο Xbox 360 διαμέσου του Xbox Live. Θα περιλαμβάνει 500 ώρες περιεχομένου, σε HD, διαθέσιμο στο τέλος του μήνα.
- Η υποστήριξη Media Center Extender αυξάνεται στη βιομηχανία consumer-electronics, που οδηγείται από τη Samsung, η οποία θα συνεργάζεται με μια συνδεδεμένη TV με MCE δυνατότητα.
- Το Zune 2 με πολύ καλή έναρξη, 1.5 εκατομμύριο ανθρώπους που αρχίζουν social networking sites, από τότε που άρχισε η αντίστοιχη υπηρεσία του Zune, το Νοέμβριο.
Μπορείτε να δείτε και εσείς την παρουσίαση στο παρακάτω link. Αξίζει διότι όλες οι αναφορές που υπάρχουν μέσα, πηγάζουν από state of the art τεχνολογία που υπάρχει στον κόσμο και την φιλοσοφία της ms τα τελευταία χρόνια. Ιδιαίτερα αστεία τα video της τελευταία ημέρας του Bill,
[YouTube:HEWMC4usElM]
όπως και η ζωντανή performance στο guitar hero.

Εντυπωσιακά βίντεο ήταν το καινούριο demo του surface όπως επίσης και η επίδειξη ενός project "device of the future" χρησιμοποιώντας τεχνικές visual recognition από συσκευή χειρός.
http://www.microsoft.com/ces/
Πρόσφατα άρχισα να ψάχνω συσκευές για gps. Βρήκα προϊόντα από μια αρκετά εκτενή γκάμα τιμών που κυμαίνεται μεταξύ των 100 και 2000 ευρώ (
).
Τα 100 ήταν εξευτελιστικά useless και τα ακριβά.... απαγορευτικά ακριβά τελος πάντων
. Μετά σκέφτηκα ότι αντί να δώσω τόσα χρήματα, γιατί να μην χρησιμοποιήσω το laptop μου και να το κάνω gps? Βέβαια δεν θα μπορώ να το βλέπω συνέχεια από το ταμπλώ του αυτοκινήτου, αλλά από την άλλη ούτε και τον χάρτη τον βλέπεις συνεχώς.
Η εφαρμογή
Η αλήθεια είναι ότι εφαρμογές δεν υπάρχουν πολλές για pc. Για palm, smartphone κτλ κτλ υπάρχουν άπειρα παρόλα αυτά τίποτα δεν έκανε. Υπάρχουν όμως δύο προγράμματα τα οποία κάνουν ακριβώς αυτή τη δουλειά. To AutoRoute 2007 και το Mappoint 2006 είναι δύο εφαρμογές της microsoft που απευθύνονται σε διαφορετικό κοινό η κάθε μία, αλλά στην ουσία αξιοποιούν και τα δύο την GPS λειτουργικότητα. Το πρώτο απευθύνεται σε ταξιδιώτες, με πολλά καλούδια για connectivity ( αν υπάρχει internet connection ), επίσης υπολογισμό διαδρομών σε real time, με διάφορες παρεχόμενες πληροφορίες, μπορείς να κανονίσεις ταξίδια από πριν και πολλά άλλα. Έρχεται σε συσκευασία και μόνο software αλλά και software με sensor μαζί. Το δεύτερο είναι business oriented με route planning για logistics, και πολλά άλλα και κάνει integrate με office documents και λοιπά. Και το δεύτερο μπορεί να αγοραστεί με δύο τρόπους. Για όσους είναι φοιτητές υπάρχει διαθέσιμο το Mappoint στην συνδρομή ELMS του πανεπιστημίου/σχολής σας. Παρόλα αυτά σε κάποιες συνδρομές είναι ενεργοποιημένο το mappoint america και το μόνο που έχετε να κάνετε είναι να επικοινωνήσετε με τον διαχειριστή σας για να στείλει στην e-academy (Host του elms) να σας ενεργοποιήσει την ευρωπαϊκή έκδοση. Και τα δύο έχουν χάρτες για τις μεγαλύτερες πόλεις της Ελλάδας. Νομίζω και στα δύο μπορεί το laptop να έχει κλειστή οθόνη και εσείς να ακούτε τον Microsoft Sam από πίσω να λέει οδηγίες.
Η συσκευή
Η συσκευή μετά από μία έρευνα που έκανα κάνει γύρω στα 60 με 100 ευρώ. Υπάρχουν σειριακές, bluetooth, usb συσκευές για όλα τα γούστα. Παρέχουν drivers και το μόνο που χρειάζεται να προσέξετε εσείς, είναι η συσκευή αυτή να υποστηρίζει NMEA 2.0 προτόκολλο επικοινωνίας ή μεγαλύτερης έκδοσης (πράγμα που διαθέτουν οι περισσότερες συσκευές που κυκλοφορούν ήδη). Το NMEA 0183 είναι αυτό που λέμε έκδοση 3.1 και υπάρχει σχεδόν σε όλες τις συσκευές που πωλούνται τα τελευταία χρόνια.
Δείτε εδώ μερικά μοντέλα από την expansys.
Πιστεύω ότι είναι καλή λύση για κάποιον που ταξιδεύει συχνά και θέλει μια ολοκληρωμένη φτηνή λύση πλοήγησης και προγραμματισμού ταξιδίων ή κάποιον που απλά δεν θέλει να δώσει τόσα χρήματα για μία μόνο συσκευή gps
. Μένει να λυθει το θέμα μπαταρίας για μεγάλα ταξίδια - αν και πιστεύω ότι δεν υπάρχει ούτε εκεί πρόβλημα. Με μία μπαταρία 8-9 ωρών μπορείς να κάνεις και ταξίδι και δύο ημερών χρησιμοποιόντας το laptop συμβουλευτικά ( το gps έχει δική του παροχή με μπαταρίες)
Επιφυλάσσομαι για επόμενο blog post "Πώς να κάνετε το Laptop σας επαγγελματικό GPS...in practice"
Έρχεται μία φάση στην ζωή του προγραμματιστή που καταλαβαίνει πως κάτι του λείπει, πως ο κώδικας που γράφει είναι λίγο ελλειπής, ή ότι πρέπει να κάνει κάτι αλλά δεν είναι σίγουρος πως να το κάνει κομψά. Σχεδιάζοντας αντικειμενοστραφή προγράμματα είναι κάτι δύσκολο, σχεδιάζοντας κώδικα που θα επαναχρησιμοποιηθεί ακόμα δυσκολότερο. Εδώ έρχεται μία έννοια που έρχεται να συμπληρώσει κάθε προγραμματιστή, να βελτιώσει την τεχνική του, να μειώσει τον χρόνο και τον κόπο που καταβάλει για τον σχεδιασμό.
DESIGN PATTERNS
Μιας και εγώ πρόσφατα άρχισα να τα χρησιμοποιώ, θα πρότεινα για αρχή, να πούμε τι είναι στην πραγματικότητα design patterns και να εξετάσουμε μαζί μερικά patterns που χρησιμοποιούνται συχνά. Θα προσπαθήσω να τα πω όσο περιεκτικά μπορώ ώστε και εγώ να μαθαίνω μέσα από την αφαιρετικότητα και να αρκούν αυτά που γράφω για να ενισχύσω την διάθεσή σας να πειραματιστείτε και να διαβάσετε περισσότερα. Θα προσπαθώ να περιγράφω 2-3 patterns την εβδομάδα. Ή γλώσσα που θα χρησιμοποιώ δεν έχει καμία απολύτως σημασία μιας και εδώ μιλάμε για αντικειμενοστραφή προγραμματισμό και όχι για κάποια συγκεκριμένη γλώσσα (C++, Java, C#, ...)
Τι είναι design pattern;
Κάθε pattern περιγράφει ένα πρόβλημα το οποίο μας παρουσιάζεται συνέχεια στον χώρο μας. Στην συνέχεια περιγράφει την λύση που επιλύει το πρόβλημα με τέτοιο τρόπο που να μπορούμε να την ξαναχρησιμοποιήσουμε ξανά και ξανά με μηδενική προσπάθεια ( Ο χρόνος είναι χρήμα, οπότε κάνοντας τα design patterns κτήμα μας, u know the drill ;) ).
Στοιχεία pattern
- Όνομα
- Το πρόβλημα που λύνει
- Την λύση που προτείνει, περιγράφει, προδιαγράφει
- Τις συνέπειες μετά από την χρήση. Συνήθως σε ένα πρόγραμμα οι συνέπειες είναι ο χώρος και ο χρόνος. Οπότε κάθε φορά στον έναν ζυγό έχουμε επαναχρησιμοποίηση, λειτουργικότητα, επεκτασιμότητα και στον άλλον, κόστος σχεδίασης, χρόνο
Είδη
Τα design patterns κατηγοριοποιούνται με βάση δύο παραμέτρους. Εμβέλεια και σκοπός. Επιγραμματικά αναφέρω σκοπούς και εμβέλειες και θα αφήνω σε εσάς στο τέλος κάθε pattern τι είναι κάθε ένα ;)
- Εμβέλεια
Ανά Κλάση
Ανά Αντικείμενο
- Σκοπός
Για δημιουργία
Για δόμηση
Για συμπεριφορά
Design Pattern 1#: Singleton
Singleton είναι το pattern που μας διαβεβαιώνει ότι η κλάση μας έχει μόνο ένα στιγμιότυπο. Επίσης παρέχεται ένας συγκεκριμένος τρόπος για να μπορούμε να το ανακτούμε από οπουδήποτε. Ας πούμε ένα παράδειγμα. Πείτε ότι έχετε πολλούς εκτυπωτές στο σύστημά σας. Παρόλα αυτά όταν πάτε να εκτυπώσετε, η εκτύπωσή σας περνάει από έναν printer spooler. Θα μπορούσαμε να βάλουμε μια global μεταβλητή ώστε να μπορούμε να ανακτήσουμε από παντού το αντικείμενο, αλλά δεν μας εμποδίζει κάτι από το να δημιουργήσουμε πολλαπλά στιγμιότυπα της κλάσης αυτής. Η λύση είναι λοιπόν, η ίδια η κλάση να κρατάει την πληροφορία για τον εαυτό της, το πως θα δημιουργηθεί, το πότε και πως θα μας επιστρέφει το ένα και μοναδικό instance της (εαν έχει δημιουργηθεί).
class Singleton
{
private static Singleton instance;
protected Singleton()
{
}
public static Singleton Instance()
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
}
Κύρια χαρακτηριστικά στο XGS 2.0
Installation
More to come παίδες!!! Ανοίξαμε μια ιστορία αγάπης με το XNA :D;)
Καλησπέρα παίδες. Τετάρτη βράδυ και ο χρόνος που απομένει, έχει ήδη αρχίσει να συρρικνώνεται. Εδώ θα βρείτε φωτογραφίες από το event και σχόλια μου σχετικά με την οργάνωση και τα sessions.
Enjoy!!!!
The second Studentguru.gr event was marked as a success, with 80 attendees. The event took place, this evening (2/11/2007) at Microsoft Hellas Headquarters, it was organized by the Studentguru.gr administration team. We owe a big "thank you" at Microsoft Hellas for providing us the main function room, for business meetings, to cover our needs.
My role on this event, was the "Introduction to XNA Framework" presentation.
You can download the presentation file
here You can study the referenced demos at msdn library, here:
Your First Game: Microsoft XNA Game Studio Express in 2DTutorial 1: Displaying a 3D Model on the Screen Thank you all,
Aggelos
Τι έιναι Search Engine Optimization? Τάδε έφη Wikipedia:
Search engine optimization (SEO) is the process of improving the volume and quality of traffic to a web site from search engines via "natural" ("organic" or "algorithmic") search results.
Οκκκκκκ.....χμμμ τι περιλαμβάνει αυτή η διαδικασία? Πρόσφατα έφτιαξα ένα μικρό στατικό site[link] και μπήκα στην διαδικασία να βρω πώς θα το ανεβάσω. Έχω κάνει κάποια πραγματάκια και είδα ότι υπάρχει αποτέλεσμα ... (όχι στο live search ακόμα, όμως), και σας παραθέτω μια μικρή λίστα από κινήσεις που μπορεί να κάνει κανείς για να "ανεβάσει" το page rank ενός site.
- Google Analytics Καταχώρηση (θα χρειαστούν ένα μικρό javascript directive στο τέλος του site)
- Site Map οπωσδήποτε σε μορφή XML, http://www.xml-sitemaps.com/ (links με το sitemap σε όλες τις σελίδες). Αυτό σε περίπτωση στατικού site, αλλιώς υπάρχει και php διαδικασία (φαντάζομαι αντίστοιχη σε asp)
- Καταχώρηση στο Webmaster Tools του google και verification του link (ένα metatag στην αρχική σελίδα)
- Meta-Tags πολλά (http://www.seochat.com/seo-tools/advanced-meta-tag-generator)
- Πολλά keywords, σε ελληνικά και αγγλικά
- Πολλά links σε άλλα sites (όσοι μπορούμε)
- ad words αν πρόκειται για επιχείρηση
- Πολλέςςς καταχωρήσεις σε web directories που είναι SEO Friendly!!!!!Όλα αυτά τα sites χρησιμοποιούν reciprocal links για να σας καταχωρήσουν. Μην τα υποτιμήσετε προσπαθώντας να τα κρύψετε μόνο για να κερδίσετε traffic. Παρουσιάστε τα στον κόσμο σαν να είναι μέρος του site σας. Σκεφτείτε σαν να είναι μία συμφωνία μεταξύ εσάς και του web directory. Τα web directories που είναι καταχωρημένο αυτό το blog είναι τα:
- Κατάλογος Σελίδων
- Ελληνικό Web Directory
- Τέλος δείτε το site να είναι valid σύμφωνα με όλα τα standards που υπάρχουν (έχω την εντύπωση ότι και αυτό βοηθάει)
Πολύ καλό site για professional ενημέρωση επί του θέματος είναι το seochat
Από πέρσυ που έβγαλα καρτούλα Visa Electron έχω αγοράσει books, cpu, Ram και λοιπά μικρά gadgets. Είναι φοβερό πόσο οργανωμένο είναι το ηλεκτρονικό εμπόριο σήμερα (από τις κατάλληλες πηγές βέβαια).
Σήμερα μου ήρθε μια RAM για το laptop που είχα παραγγείλει πριν 6 μέρες. Εντυπωσιακό. Σε κουτάκι με (πορωτικές) φουσκάλες χιλιοτυλιγμένη και σφραγισμένη. Οταν έψαχνα, λοιπόν για ram, είχα πάρει τον επίσημο αντιπρόσωπο του laptop μου και μου είχαν πει 265 ευρώ το 1 Giga. Σήμερα παρέλαβα 80 ευρώ (postage included) το 1 Giga μου και πραγματικά δεν έχω κανένα πρόβλημα, και ας ήταν μια μάρκα που δεν έγραφε την μάρκα του laptop(να υπήρχε κιόλας...όλες third party είναι με τα ίδια chipakia :P). Άνοιξα το καπάκι λοιπόν για την αναβάθμιση και είδα δύο modules. Ένα με no name -chips που είχαν αυτοκολλητάκι certified by <laptop brand> και η άλλη kingston (από την αγορά οι μνήμες). Και ερωτώ κύριοι δικασταί: τα 200 ευρώ περίπου, παραπάνω που θα έδινα σε ποιά από τις δύο κατηγορίες θα αντιστοιχούσε? και ερώτηση νούμερο 2...εγώ φταίω να κράξω την εταιρεία στην μαμά (τους)για την παραπάνω τραγική τιμή που ακούσατε ? Τι να πω...
Αυτά... ΑΑΑΑ!!!! Το καλύτερο δεν σας το είπα. Όλα καλά αλλά πάλι ΟΤΙ περνάει από αυτήν την χώρα κινδυνεύει να γίνει ένα με τα διαπλεκόμενα και την ανευθυνότητά της. Περί τις 11 η ώρα, ο ταχυδρόμος βγάζει από την τσάντα του 10 φακέλους και το πακέτο μου, και τα παρατάει ΕΞΩ από την πολυκατοικία σφηνομένα στο χερούλι της πόρτας μας. Δεν ξέρετε πόσο τα πήρα. Κάθε μέρα χτυπάνε κουδούνι...ΔΕΝ ΜΠΟΡΟΥΣΕ να τα αφήσει μέσα, στο ταχυδρομικό κουτί?? Ελεος πια...Χιλιάδες χιλιόμετρα διανύει το πακέτο...έξω από την πόρτα θα πάθουμε το κακό. Τι να σου κάνει ο επαγγελματισμός των έξω όταν οι μέσα....
Έστειλα παράπονα στην διοίκηση. Ελπίζω να μην πάει στα αζήτητα το mail.
Αυτά. Προσοχή με τις αγορές σας από το δίκτυο λοιπόν. Ορίστε παρακάτω μία πρόχειρη checklist με μερικά πραγματάκια σχετικα με το e-shopping.
- Προσοχή από ποιο site αγοράζετε. Φροντίστε να μαζέψετε όσες πληροφορίες μπορείτε πριν πληκτρολογήσετε τους αριθμούς τις κάρτας σας.
- Ακόμα και αν έχετε την super gold -silver - blue panathinaikos fc credit card καλύτερα βγάλτε μια debit (ΑΚΑ visa electron) για να έχετε το κεφάλι σας ήσυχο.
- Δοκιμάστε το paypal, ενημερωθείτε επ'αυτού. Είναι μια υπηρεσία που χρεώνει όταν σου στέλνουν λεφτά και είναι ένα πρόσθετο layer ασφάλειας.
- Αν αγοράζετε από ebay, checkarete σχόλια για seller, αν είναι ebay-shop, άλλα προϊόντα του και γενικά κάντε και μία προσευχή.
- ΠΡΟΣΟΧΗ: Για προϊόντα εκτός EU υπάρχει περίπτωση να πληρώσετε δασμούς.Ενημερωθείτε για τις τιμές και όλα τα συναφή (κατά προτίμηση αγοράστε από EU)
- Όταν σας στέλνουν κάτι φροντίστε να κρατάτε, τυπώνετε, κάνετε poster τις αποδείξεις για καλό και για κακό.
- Ελέγχετε τακτικά την καρτούλα σας από το e banking της τράπεζάς σας. Έχετε ανα χείρας και μερικά χρήσιμα τηλέφωνά της για καλό και για κακό.
- Δικές μου επιλογές site: Amazon.co.uk, ebay.co.uk
- Να τσεκάρετε τον τρόπο μεταφοράς του προϊόντος (εγώ προσπαθώ να διαλέγω κάποια υπεύθυνη εταιρεία courier αν δίνεται η επιλογή)
- Αν αγοράζετε κάτι second hand, επίσης μια προσευχή θα ήταν καλό :P, αλλιώς αν είναι καινούριο τότε θα έιναι όντως καινούριο. Μην αγχώνεστε γι'αυτο.
- Και προσοχή όπως πάντα στο sport γιατί εδώ πιο εύκολα ξεφεύγεις από το real time shopping.
Η εμπειρία μου είναι γενικά καλή, προσπαθώ να προσέχω και να αγοράζω από καλά καταστήματα με μεγαλύτερα από 96-97 θετικά σχόλια άλλων πελατών.
Αν έχετε κάτι άλλο, feel free!
Καλησπέρα σε όλους. Πρώτο post στο δεύτερο μπλογκ μου, μέσα στον ίδιο μήνα (από εκεί που δεν ήξερα καν, ότι σημαίνει κάτι :P). Σιγά, σιγάααααααααα θα πειραματιστώ με τα css overrides του, αλλά πραγματικά είναι το λιγότερο που με απασχολεί αυτήν την στιγμή.
Είμαστε στην μέση της εξεταστικής...τών εξεταστικών και πραγματικά η διάθεση είναι πεσμένη απείρως, αλλά ακόμα δεν έχουμε πιάσει πάτο. ΚΡΑΤΑΜΕ ΑΚΟΜΑ δύναμη. Έρχεται ένα χειμώνας τραγικός από τρέξιμο και υποχρεώσεις (δεν κλαιγόμαστε όμως γιατί και αυτά καμια φορά μας "φτιάχνουν"-κάποιο bug που διορθώνουμε, κάποιο μάθημα που περνάμε, κάποια δουλειά που κλείνουμε ;))
Οι μέρες περνούν βασανιστικά και αν ήμουν μηχανή αναζήτησης θα είχα το ποιο updated index αυτήν την στιγμή. Έχω διαβάσει / κατεβάσει όλο το web. Πραγματικά....έχω ασχοληθεί, με drivers, errors στο pc μου, με σειρές που βλέπω, με ebay, amazon (έχω χαλάσει 200 ευρώ σε αγορές), τανίες, έχω γράψει σε forums παιχνιδιών που περιμένω, έχω ξεκινήσει ήδη 2 blog, ένα site, (κάνω search engine optimization για ένα άλλο). Αγόρασα rapidshare account...βλέπω τα bits , ένα ένα να έρχονται στο pc μου, κάνω τα πάντα για να καθυστερήσω το διάβασμα ένα ακόμη λεπτό, and still counting που λένε και οι Εσκιμώοι.
Λοιπόν για την ώρα νομίζω ότι το πάλεψα αρκετά και απόψε. Θα συνεχίσω το μπλογκ αυτό γιατί όπως φαίνεται έρχονται πολλές στιγμές που θα θελήσω να περιγράψω τρόπους χαζέματος διασκέδασης με φίλους και γνωστούς.
Cheers παίδες....until next time ορίστε το πιο σπαστικό και λιγότερο εκπαιδευτικό απόσπασμα από family guy ever...Πραγματικά μετά από αυτό δεν θα νοιώσετε ούτε καλύτεροι, ούτε χειρότεροι...NULL, NILL, ZERO, Διαίρεση με το μηδέν και άλλα τέτοια...
Enjoy!!!
[YouTube:m4l2UUueH5Q]