Κυριακή, 24 Σεπτεμβρίου 2017

Cyrix: Στους δύο τρίτος δεν χωρεί



Τι σας έρχεται στο μυαλό όταν ακούτε το όνομα Cyrix; Σε κάποιος μπορεί να τους θυμίζει χαρακτήρα Mortal Kombat αλλά σε κάποιους από εμάς το πρώτο πράγμα που έρχεται στο μυαλό είναι επεξεργαστής.

Και πράγματι, είναι μια εταιρεία επεξεργαστών που την έχουν ξεχάσει οι περισσότεροι. Όταν μπήκα κι εγώ στο παιχνίδι των PC ήταν ο φθηνότερος επεξεργαστής που μπορούσε να κάνει ένα PC να λειτουργεί. Ενδεικτικά, αν το μοντέλο της Intel κόστιζε 100.000 δρχ. τότε το αντίστοιχο της Cyrix κόστιζε περίπου 50.000 δρχ. Φυσικά αυτό σήμαινε πως δεν ήταν το ίδιο γρήγορος με έναν Intel ή έναν AMD.

Αν και η εταιρεία προσπαθούσε να πείσει το κόσμο πως οι CPU τις ήταν κατάλληλες για PC σε χώρο εργασίας, σε πολλές περιπτώσεις μπορεί να έβρισκες Gaming PC με έναν Cyrix να φωλιάζει μέσα τους. Από δικιά μου εμπειρία ήξερα μόνο έναν άνθρωπο που είχε Cyrix επεξεργαστή και φυσικά αυτό είχε γίνει για οικονομικούς λόγους.

Άλλωστε τον Νοέμβριο του 1997 η εταιρεία είχε χάσει το παιχνίδι από τον ανταγωνισμό και έχει αφήσει μόνα τους τα δύο μεγαθήρια των μικροεπεξεργαστών να παλεύουν για την πρώτη θέση (αν και νομίζω πως η Intel έχει κερδίσει κατά κράτος την AMD εδώ και χρόνια).


Κυριακή, 17 Σεπτεμβρίου 2017

Composite Design Pattern



Με το Composite Pattern μπορείς να χειριστείς αντικείμενα ή σύνολα αντικειμένων με τον ίδιο τρόπο στον client κώδικα. Όπως δείχνει και το διάγραμμα UML έχει δενδροειδής μορφή με κόμβους και φύλλα. Για να χρησιμοποιήσουμε αυτό το πρότυπο αρχικά θα πρέπει να έχουμε μια υπερκλάση (abstract ή interface) η οποία θα έχει τουλάχιστον μια function κοινή.



Στο παράδειγμα που έχω η κοινή αυτή function είναι η songInfo η οποία μας επιστρέφει πληροφορίες για το τραγούδι (τίτλο και όνομα μπάντας). Αρχικά ας φτιάξουμε τα φύλλα του δέντρου, την κλάση εκείνη δηλαδή η οποία αναφέρεται ξεχωριστά για κάθε τραγούδι. Σε αυτή τη περίπτωση το μόνο που χρειάζεται να κάνουμε είναι να δώσουμε τίτλο και όνομα μπαντας στον constructor της κλάσης.


Στο επόμενο βήμα φτιάχνουμε τους κόμβους του δέντρου μας, τα group δηλαδή με τα τραγούδια. Εδώ πρέπει να υλοποιήσουμε την songInfo, αφού είναι κληρονομιά της abstract υπερκλάσης αλλά και functions με τις οποίες θα μπορούμε να προσθέτουμε ή να αφαιρούμε αντικείμενα. 


Έτσι στην κλάση songGroup έχουμε την addSong η οποία δέχεται ως όρισμα instance αντικειμένου SongComposite αλλά και την removeSong η οποία δέχεται σαν όρισμα τον αριθμό του τραγουδιού που θέλουμε να αφαιρέσουμε.

Αστικοί μύθοι των Video Games



Polybius: Ένας από τους πιο γνωστούς αστικούς μύθους, που διαδόθηκε ακόμα περισσότερο την εποχή του ίντερνετ είναι το παιχνίδι φάντασμα Polybius. Σύμφωνα λοιπόν με τον μύθο την χρυσή εποχή των Arcades, σε ένα μαγαζί στο Portland εμφανίστηκε ένα παιχνίδι με το όνομα Polybius. Κανείς δεν θυμάται και δεν ξέρει πως παιζόταν αυτό το παιχνίδι όμως ο μύθος λέει πως όσοι έπαιξαν αυτό το παιχνίδι πήγαν στο νοσοκομείο. 

Το ακόμα πιο περίεργο είναι πως μερικές μέρες μετά άντρες με μαύρα κοστούμια εμφανίστηκαν στο κατάστημα για να συλλέξουν πληροφορίες από το cabinet του περίφημου παιχνιδιού. Κάποιοι λένε πως το FBI ήθελε να βρει νέους κατάλληλους για στρατιώτες. Άλλοι λένε πως το παιχνίδι ήταν ένα πείραμα ελέγχου του μυαλού.


Sonic.exe:  Ο μύθος λέει πως ένα αγόρι με το όνομα Τομ βρήκε ένα ROM hack του παιχνιδιού Sonic the Hedgehog. Αφού έπαιξε το παιχνίδι άρχισε να έχει διάφορα παραλειρήματα. Σύμφωνα με περιγραφές το παιχνίδι δείχνει τον Sonic να σκοτώνει τον Tails και τον Dr. Robotnick και να αναφωνεί πως είναι Θεός! Το Original Rom Hack δεν έχει βρεθεί όμως υπάρχουν αρκετές αναπαραστάσεις αυτού που βασίστηκαν στις περιγραφές.



Lara Croft Nude: Η Lara Croft ήταν sex symbol την εποχή που βγήκε το Tomb Raider.  Όλοι οι έφηβοι θέλαμε να την δούμε γυμνή στο παιχνίδι. Δεν ξέρω γιατί αλλά νομίζω το naughty της υπόθεσης ήταν που μας εντυπωσίαζε. Έτσι βγήκε ο μύθος πως αν κάνεις τις x κινήσεις με την Λάρα κατά την διάρκεια του παιχνιδιού αυτή θα γυμνωθεί μπροστά σου. Φυσικά δεν ισχύει. Αυτό όμως που ισχύει είναι πως αυτός ο μύθος έγινε πραγματικότητα με το nude mod του παιχνιδιού. Αλλά φυσικά κωδικός δεν υπήρχε και άδικα προσπαθούσαμε να εκτελέσουμε pixel perfect κινήσεις για να πετύχουμε το nude αποτέλεσμα.










Η παιχνιδοκονσόλα της Apple που ξεχάστηκε (Apple PiPPin)



H Apple είναι γνωστή για τα υπερεκτιμημένα κινητά τηλέφωνα και τους υπολογιστές της. Όμως 20 χρόνια πριν περίπου η Apple θέλησε να κατακτήσει και τον κόσμο των video games. Την εποχή που τα 16 bit σχεδόν είχαν τελειώσει και ο κόσμος άρχισε να γνωρίζεται καλύτερα με το εμπορικά αποτυχημένο Sega Saturn και το Playstation η Apple έδωσε στο κόσμο το PiPPin.

Το PiPin ήταν ένας υπολογιστής Apple, όμορφα και κονσολίστικα πακεταρισμένος, που σκοπό είχε να μπει στο σαλόνι του σπιτιού και να γίνει ένα είδος πρωτόγονου multimedia machine. Αρκετά από τα παιχνίδια ήταν ports από τους Apple υπολογιστές. Στο PiPPin μπορούσε κανείς να βρει και multimedia εκπαιδευτικές εφαρμογές ( το trend που είχε έρθει με το CD-ROM εκείνη την εποχή) αλλά και να μπει στο παλαιολιθικό ίντερνετ.

Κάτι ενδιαφέρον για το PiPPin είναι πως η Apple αντί να κρατήσει τον σχεδιασμό και την παραγωγή αποκλειστικά σε εκείνη, έδινε, με το ανάλογο License φυσικά, τα standards που πρέπει να κρατήσει ένας manufacturer ώστε να παράγει το μηχάνημα. Θεωρώ πως αυτό θα έπρεπε να συμβεί και με την μοντέρνα βιομηχανία consoles αφού έτσι κι αλλιώς το hardware είναι σχεδόν ίδιο αλλά αυτό είναι μια μεγάλη συζήτηση.

Το PiPPin αποσύρθηκε γρήγορα από την αγορά αφού ο ανταγωνισμός ήταν καλύτερος (Playstation) και τα παιχνίδια ελάχιστα. Το συγκεκριμένο μηχάνημα νομίζω πως το είχα δει μια φορά σε ένα Game Pro με 4 αράδες κείμενο οπότε εύκολα χάθηκε από τη μνήμη των Gamers.





Iterator Design Pattern



Το Πρόβλημα: Σε πολλές περιπτώσεις πρέπει να γίνει μετατροπή των δεδομένων ώστε να μπορούμε να κάνουμε iterate σε αυτά. Εδώ έρχεται να μας λύσει τα χέρια το Iterator Pattern.

Στην PHP γίνεται εύκολα με το implementation του Iterator Interface όπως φαίνεται και στο παρακάτω παράδειγμα:

Κυριακή, 10 Σεπτεμβρίου 2017

Στους Οκτώ του Ευρωμπάσκετ



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

Ξεκίνησε δυναμικά με τον Πρίντεζη να την βάζει μπροστά στο σκορ. Ο Καλάθης στο πρώτο μέρος έβαλε καθοριστικούς πόντους και δεν άφησε τους Λιθουανούς να μας περάσουν. Ο Σλούκας, που τελικά έγινε ο πρωταγωνιστής του παιχνιδιού, ξεκίνησε άσχημα. Πήρε κάποιες κακές επιθέσεις και φάνηκε να είναι εκτός ματς. Όμως αν δεν είχαμε τα τρία απίστευτα τρίποντα του σε καθοριστικά σημεία του παιχνιδιού μπορεί να ήταν διαφορετικό το τελικό σκορ.

Μέχρι τώρα φαίνεται πως το μέλλον της περιφέρειας της ομάδας αυτής στις δύο θέσεις guard είναι Καλάθης - Σλούκας. Ο Καλάθης εχθές μου θύμισε τον Άγγελο Κορωνιό που είχε απίστευτη ψυχραιμία όταν βρισκόταν στη γραμμή του τριπόντου, γρήγορος, χωρίς να βάζει το κεφάλι κάτω και όποιον πάρει ο χάρος και αποτελεσματικός στις πάσες του. Δεν θυμάμαι να έχω δει ξανά τον Καλάθη να παίζει τόσο καλά τα μετά NBA χρόνια.

Ο Σλούκας, όπως έχω ξαναπεί, είναι ο επόμενος Σπανούλης. Μπορεί να πάρει καθοριστικές φάσης πάνω του, να τραβήξει το σκορ και να μοιράσει πάσες. Αυτό που του έλειπε μέχρι χθες ήταν η ηγετική μορφή στο παρκέ. Παίχτης που μπορεί να κάνει την διαφορά (ελπίζω να τον ξαναφέρουν στον Πειραιά οι Αγγελακόπουλοι όταν θα σταματήσει ο Σπανούλης).

Για άλλη μια φορά στους οκτώ της Ευρώπης και τώρα, παρά την σημαντική χθεσινή νίκη, πρέπει να συγκεντρωθούν στον επόμενο αγώνα / τελικό. Έδειξαν πως μπορούν να παίξουν οργανωμένα τώρα πρέπει να το ξανακάνουν και να φέρουν ένα καλό αποτέλεσμα.

Η επιστήμη των υπολογιστών σε δέκα λεπτά



Η επιστήμη των υπολογιστών άρχισε σε ένα κομβικό σημείο της ανθρώπινης ιστορίας. Στον δεύτερο παγκόσμιο πόλεμο, όταν ο Alan Turning, ο πατέρας της επιστήμης των υπολογιστών έφτιαξε έναν υπολογιστή που βοηθούσε τους Βρετανούς να αποκρυπτογραφούν τα μηνύματα των Ναζί.

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

Βάζοντας λοιπόν σε εφαρμογή τον αλγόριθμο συμπίεσης που οι περισσότεροι YouTubers έχουν αναπτύξει για να καλύπτουν πολύπλοκα θέματα σε δεκάλεπτα βίντεο, έχουμε την ιστορία της επιστήμης των υπολογιστών σε 10 λεπτά:



Diablo: A Development Story



Το 1996, βγήκε στην αγορά ένα από τα πιο γνωστά παιχνίδια σε PC με το πιο διαβολικό όνομα. Το Diablo. Ήταν ένα Action RPG, είδος που το ίδιο το Diablo ξεκίνησε, στο οποίο προσπαθούσες να σκοτώσεις τον ίδιο το διάβολο.

Είχε εντυπωσιάσει τον κόσμο, τόσο τους Reviewers της εποχής όσο και τους gamers. Διθυραμβικές κριτικές και διαβολομανία που έγινε ακόμα μεγαλύτερη όταν κυκλοφόρησε το δεύτερο παιχνίδι της σειράς. Ήταν τόσο καλό που όλοι οι υπόλοιποι Developers προσπαθούσαν να το αντιγράψουν και να το ξεπεράσουν (Diablo killer) όπως είχε προσπαθήσει να κάνει και το Darkstone.

Αυτά όμως ζήσαμε εμείς οι gamers. Πως να ήταν άραγε να γράφεις κώδικα για το παιχνίδι; Πως θα ήταν να ήσουν στην ομάδα ανάπτυξης; Αυτό προσπαθεί να θυμηθεί ο David Brevik και να μας βάλει στο κλίμα. 

Κυριακή, 3 Σεπτεμβρίου 2017

Game Of Thrones Season 7



Άλλη μια σεζόν Game Of Thrones τελείωσε και σε κάποιους άρεσε, σε άλλους όχι και μια άλλη μερίδα των φαν την βρήκαν μέτρια. Σε έναν κόσμο που ο καθένας έχει τη γνώμη του λέω να την καταγράψω κι εγώ στο ίντερνετ με σκοπό στο μέλλον να με κοροϊδεύουν οι haters αν αλλάξω γνώμη για το οτιδήποτε.

Το ότι οι τελευταίες σειρές δεν βασίζονται πλέον σε βιβλία είναι γνωστό σε όλους. Στην τελευταία μάλιστα σεζόν ήταν φανερό πως οι σεναριογράφοι προσπαθούν να κλείσουν την ιστορία όσο γίνεται γρηγορότερα. Αυτό φαίνεται σε μεγάλο βαθμό στο χρόνο ταξιδιών των χαρακτήρων. Όταν οι White Walkers παγιδεύουν τους ήρωες μας στο πάγο, οι ήρωες μας δεν μπορούν να αντιδράσουν και περιμένουν την από μηχανής Θεά, Ντανέρης Θυελλογέννητη κλπ κλπ για να τους σώσει. Για να γίνει αυτό όμως πρέπει να τρέξει κάποιος στον τοίχο μέσα στο κρύο, να παρει ανάσες, να αναλύσει τι έχει συμβεί, να γραφτεί γράμμα, να το δέσουν στο κοράκι και μετά το κοράκι να πάει στον Dragonstone να το δώσει σε κάποιον αυλικό, ο αυλικός να το πάει στην Ντάνυ, να το διαβάσει, να σκεφτεί και να πάρει απόφαση. Τέλος πρέπει να καβαλήσει το δράκο της και να κάνει την απόσταση μέχρι τον βορρά αλλά και να βρει που βρίσκονται οι ήρωες μας.

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

Σε θέμα ιστορίας πάνω κάτω όλοι ξέρουμε τι περιμένουμε να δούμε τόσο στην αρχή της σεζόν 7 όσο και στην τελευταία σεζόν. Αυτό όμως που δεν είχαμε δει μέχρι και την προηγούμενη σεζόν ήταν interaction. Τον Τζον Σνόου να σχεδιάζει με την Καλίση. Την Καλίση να αντιπαρατίθεται με την Σέρσι κλπ. 

Ήταν μια καλή σεζόν; Ήταν μια καλή τηλεοπτική σεζόν θα έλεγα εγώ. Δεν έχει το βάθος των προηγούμενων όμως με τηλεοπτικούς όρους θέλει να κλείσει κάτι που όλοι περιμένουμε να δούμε. Θεωρώ βέβαια πως θα αρμέξουν την αγελάδα του Game Of Thrones όσο μπορούν και προβλέπω νέα σειρά spinoff με το τι συνέβει στην Επανάσταση του Ρόμπερτ. Μέχρι το 2019 που θα δούμε την κατακλείδα της σειράς....έχουμε καιρό! 


Dunkirk



Έχει αρχίσει να προβάλετε στους κινηματογράφους η νέα ταινία του Christopher Nolan, το Dunkirk και όλοι μιλάν για μια εξαιρετική ταινία. Ε, αφού όλοι λένε καλά λόγια είπα κι εγώ να πάω να την δω. Αφορά το δεύτερο παγκόσμιο και είναι ταινία του Nolan. Πόσο άσχημα μπορεί να καταλήξει;

Η υπόθεση αφορά την μάχη στη Δουνκέρκη κατά τη διάρκεια του δευτέρου Παγκοσμίου και την προσπάθεια των συμμαχικών στρατευμάτων να εγκαταλείψουν την περιοχή αφού οι Ναζί είχαν κατακτήσει τη Γαλλία.

Το βασικότερο πρόβλημα της ταινία είναι η έλλειψη μιας κατανοητής χρονικής σειράς. Ο Nolan επέλεξε να χωρίσει την ιστορία του σε 3 κομμάτια. Αυτά που εξελίσσονται σε διάρκεια 1 εβδομάδας, αυτά που εξελίσσονται σε διάρκεια 1 ημέρας και αυτά που εξελίσσονται σε διάρκεια 1 ώρας.  Όλα καταλήγουν στο ίδιο χρονικό σημείο. Και όλα καλά μέχρι εδώ αλλά δεν μπορείς να ξεχωρίσεις εύκολα κάθε φορά για ποιο χρονικό σημείο μιλάει με αποτέλεσμα τα 2/3 της ταινίας να είναι μπερδεμένα.

Το δεύτερο πρόβλημα με την ταινία είναι η έλλειψη χαρακτήρων. Υπάρχουν φυσικά κάποιοι χαρακτήρες στη ταινία όμως ποτέ και σε κανένα σημείο ο Nolan δεν εστιάζει σε αυτούς. Ο βασικός στόχος του Nolan είναι να παρουσιάσει τα γεγονότα. Αυτό κάνει την ταινία αρκετά απόμακρη αφού δεν ταυτίζεσαι έντονα με κάποιον χαρακτήρα και στο τέλος νιώθεις μια έλλειψη συναισθημάτων που κάποια άλλη War Movie ίσως να σου προσέφερε.

Στα θετικά της ταινίας είναι οι όμορφες αερομαχίες και η γενικότερη όμορφη εικόνα της ταινίας. Σε αυτό ο Nolan δεν απογοητεύει αφού για να μας δώσει όμορφο αποτέλεσμα βάζει την κάμερα στα πιο απίστευτα σημεία. Δεν θα δει βέβαια κανείς το αίμα και τη βία από τη Διάσωση του στρατιώτη Ryan όμως σε κάθε περίπτωση η ταινία δεν σε κάνει να ξεχάσεις πως βρίσκεσαι σε πόλεμο και η επιβίωση είναι σημαντική. 

Τελικά είναι μια καλή ταινία; Το IMDB δίνει 8.4 / 10 οπότε άρεσε στους περισσότερους. Προσωπικά την βρήκα βαρετή στα 2/3 της αφού δεν καταλάβαινα ακριβώς τι γινόταν. Είναι από τις ταινίες που πρέπει να τις δει κανείς δύο φορές για να τη κατανοήσει. Πρέπει επίσης όταν πας να την δεις να έχεις καταλάβει πως δεν πας να δεις μια ιστορία με δυνατούς χαρακτήρες αλλά ένα είδος ντοκιμαντέρ.

Σάββατο, 2 Σεπτεμβρίου 2017

Prototype Design Pattern



Το Prototype Design Pattern ανήκει στην κατηγορία των creational design patterns και το χρησιμοποιούμε όταν θέλουμε να αποφύγουμε το "κόστος" του να αρχικοποιούμε εκ νέου κάθε καινούριο instance που δημιουργούμε.

Σαν παράδειγμα μας έχουμε την abstract κλάση PCgame την οποία κάνουμε extend ώστε να φτιάξουμε την κλάση NBA2K17. Κάθε νέο instance της κλάσης NBA2K17 (κάθε κουτί δηλαδή του ίδιου παιχνιδιού) είναι ακριβώς ίδιο με το προηγούμενο με την μόνη διαφορά το product key. 

Αντί λοιπόν κάθε φορά να γράφουμε για κάθε νέο instance τα ίδια και τα ίδια μπορούμε να το κάνουμε clone και να κερδίσουμε χρόνο και χρήμα. Ο κλώνος θα μας δώσει ένα αντικείμενο ακριβώς το ίδιο με το προηγούμενο με διαφορετικό όνομα. Όταν τρέξουμε την συνάρτηση keyGenerator θα διαφοροποιεί το νέο αντικείμενο από όλα τα προηγούμενα αφού θα έχουν διαφορετικό product key.