Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια

Φεβρουάριος 2008 - Δημοσιεύσεις

One small step for Microsoft, one giant leap for interoperability...

Αν και νομίζω ότι καιρό τώρα θα έπρεπε να λέμε ότι η 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

Posted: Σάββατο, 23 Φεβρουαρίου 2008 1:43 πμ από George J. Capnias | 0 σχόλια
Δημοσίευση στην κατηγορία:

Υλικό για κατανόηση Συναρτησιακού Προγραμματισμού

Εμπνευσμένος και επηρεασμένος από την χθεσινή καταπληκτική παρουσίαση του Νίκου Παλλαδινού στα πλαίσια του 12ου dotNETZone.gr Community Event,  κάθισα να βρω κάποιες πληροφορίες για την συγκεκριμένη θεωρία. Ξεκίνησα πρώτα από τον οδηγό σπουδών του τμήματός μου. Σε συννενόηση λοιπόν με τον καθηγητή μου Πάνο Ροντογιάννη (καθηγητή των μαθημάτων: Αρχές Γλωσσών Προγραμματισμού, Θεωρία Υπολογισμού, Σημασιολογία Γλωσσών), προτρέπω για όποιον ενδιαφέρεται, να δει για θεωρία των γλωσσών προγραμματισμού, τις διαφάνειες του αντίστοιχου μαθήματος (as is από τον κύριο Ροντογιάννη, τον οποίο ευχαριστώ πολύ για την παραχώρηση).

  • Αρχές Γλωσσών Προγραμματισμού: ch1.ppt (ch1.pdf)
  • Το Συντακτικό των Γλωσσών Προγραμματισμού: ch2.ppt (ch2.pdf)
  • Σημασιολογία : ch3.ppt (ch3.pdf)
  • Σημασιολογία μιας Προστακτικής Γλώσσας: ch4.ppt (ch4.pdf)
  • Αξιωματική Σημασιολογία και απόδειξη Ορθότητας: ch5.ppt (ch5.pdf)
  • Υλοποίηση Γλωσσών Προγραμματισμού: ch6.ppt (ch6.pdf)
  • Λογικός Προγραμματιμού: ch7.ppt (ch7.pdf)
  • Συναρτησιακός Προγραμματισμός: ch8.ppt (ch8.pdf)
  • Λάμβδα Λογισμός: ch9.ppt (ch9.pdf)

Θεωρώ ότι τα παραπάνω αποτελούν το ground zero για να ξεκινήσει κάποιος. Απλές και κατανοητές διαφάνειες που σε βάζουν στο νόημα αμέσως.

OSGi, SOA and Web Services

(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_layer

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.

Picture1

(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.

Posted: Τετάρτη, 13 Φεβρουαρίου 2008 12:13 μμ από George J. Capnias | 0 σχόλια
Δημοσίευση στην κατηγορία:

[Μαθαίνοντας Design Patterns] Factory

Συνεχίζοντας λοιπόν αυτή τη μικρή αναζήτηση γύρω από τα 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!!!

Posted: Δευτέρα, 11 Φεβρουαρίου 2008 9:06 μμ από George J. Capnias | 0 σχόλια
Δημοσίευση στην κατηγορία: ,

Οδεύοντας προς το Web n+1

Σκέψη και γλώσσα. Σκέφτομαι, άρα υπάρχω. Τι σκέφτομαι όμως αν δεν έχω μία λέξη να το περιγράψω; Άρα δεν μπορώ ακόμα να υπάρξω, αλλά ούτε και αυτό που σκέφτομαι υπάρχει. Πάμε πάλι πίσω. Βρίσκω μία λέξη γι'αυτό που σκέφτομαι. Τώρα υπάρχω. Υπάρχει και η έννοια που θέλω να δείξω στον κόσμο. Τώρα μπορώ να την εξελίξω. Κάπως έτσι έγινε και με το 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.

Posted: Δευτέρα, 11 Φεβρουαρίου 2008 6:34 μμ από George J. Capnias | 0 σχόλια
Δημοσίευση στην κατηγορία:

ΧΝΑ Blog

Σήμερα ξεκίνησα ένα δεύτερο blog για XNA Game Programming,
όπου θα κοιτάζουμε διάφορα θέματα γύρω από την πλατφόρμα της microsoft για προγραμματισμό παιχνιδιών.

Μπορείτε να το καλωσορίσετε εδώ 

Ελπίζω να περάσουμε όμορφα προγραμματίζοντας, γιατί όπως λέει ένας φίλος μου.... ο προγραμματισμός είναι τέχνη
και συνεχίζοντας θα συμπληρώσω εγώ...και το game programming ή ισχυρότερη έκφανσή του.
 

Cheers,
Άγγελος 

Posted: Παρασκευή, 1 Φεβρουαρίου 2008 2:05 πμ από George J. Capnias | 0 σχόλια
Δημοσίευση στην κατηγορία: ,