Archive for the 'Τεχνολογία / Επιστήμες' Category

Android SDK

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

Το λειτουργικό της Google, κακά τα ψέμματα, είναι αρκετά ενδιαφέρον. Μπορεί να στηρίζουμε iOS με τα κόκκαλα, αλλά πρέπει να ομολογήσω ότι το ρομποτάκι είναι αρκετά φιλόδοξη προσπάθεια. Το λειτουργικό έχει μερικές έξυπνες ιδέες (hotspot creation στην 2.2, έξυπνο notification system, διάφορα ωραία κολπάκια εδώ κι εκεί), αλλά υστερεί σε αρκετούς τομείς υποδομής. Όλο το interface είναι συμπαθητικό, αλλά… χάνει κάπως. Είναι σα να συγκρίνεις το Aqua με τα βασικά θέματα των window managers του Linux: απόλυτα λειτουργικοί αλλά χοντροκομμένοι, αραφινάριστοι. Και αυτό φαίνεται παντού, στο σκρολάρισμα των οθονών, στις φόρμες, στα popups, παντού. Ένας tech-minded χρήστης ίσως να μη δώσει ιδιαίτερη προσοχή, ένας μέσος άνθρωπος όμως θα νιώσει τη διαφορά σε σχέση με τη ρευστότητα και τη στίλβη του iPhone και του λειτουργικού του.

Still, πολύ καλή και αρκετά χρηστική προσπάθεια. Δεν είναι χάλι μαύρο όπως ήταν τα Windows Mobile (θα τα δούμε και αυτά όταν βγουν τα καινούργια), του λείπει όμως και ο ενθουσιασμός του webOS. Μπορώ να καταλάβω γιατί κάποιοι χρήστες που αντιπαθούν το iOS στρέφονται σε συσκευές με Android – σεβαστή η επιλογή τους. Εγώ δεν πρόκειται να το κάνω πάντως:)

Αλλά στο θέμα μας: coding για το ρομπότ.

Η όλη διαδικασία με το SDK πάει ως εξής: κατεβάζουμε το βασικό πακέτο από το developer portal, το οποίο είναι γραμμένο σε Java και διατίθεται και για τις τρεις μεγάλες αρχιτεκτονικές (Mac, Linux, Windows). Το αποσυμπιέζουμε, και τρέχουμε το κατάλληλο configuration πρόγραμμα μέσα από τον φάκελο του SDK. Πλέον από εκεί φτιάχνουμε τα virtual machines μας, και επίσης από εκεί εγκαθιστούμε και αναβαθμίζουμε platforms και λοιπά addons για το σύστημα. Το SDK προαπαιτεί JDK 1.5 ή 1.6 εγκατεστημένο, Python 2.2 και προτείνει Eclipse για πρότυπο περιβάλλον ανάπτυξης… γιατί τα προγράμματα για Android γράφονται σε Java! Θα ακολουθήσει συνέχεια στο σκάλισμα, σίγουρα, αλλά οπωσδήποτε δεν εντυπωσιάζομαι από το όλο στήσιμο.  Δεν είναι ότι έχω κάποια τρελή κόντρα με την Java, απλώς δε νιώθω αυτό το απόλυτο integration των APIs με το IDE και όλα τα υπόλοιπα εργαλεία που χρησιμοποιεί η Apple μέσω του Xcode όταν γράφει κάποιος προγράμματα για το iOS. My point is, ακόμη και στο πώς γράφονται τα προγράμματα για το Android διαφέρει η φιλοσοφία της Google.

Επίσης, ένα μικρό τελευταίο rant: το UI των προγραμμάτων το στήνεις είτε προγραμματιστικά at runtime, είτε ορίζοντας τα επιμέρους στοιχεία σε XML εκ των προτέρων. Δηλαδή, μηδέν graphic UI design! Έλα ρε Google, σοβαρέψου λίγο:/

Πάντως σίγουρα αξίζει να ασχοληθεί κάποιος. Θα επανέλθω όταν έχω νεώτερα επί του θέματος. Πάντως η μεταφορά προγραμμάτων που είναι native σε άλλες κινητές πλατφόρμες πρέπει να μην είναι ιδιαίτερα βολική ή εύκολη. Θα δείξει:)

Advertisements

Σφηνάκια

Λοιπόν, μερικά μονόπετρα γιατί δεν προλαβαίνω ούτε να ανασάνω:

  • Εξεταστική στην Πληροφορική τέλος, πήγε αρκετά καλά, ακόμα βγαίνουν τα αποτελέσματα. Σημειωτέον, αν περάσω όλα όσα έδωσα θα έχω τελειώσει σχεδόν τη μισή Σχολή! WTF, πότε πέρασε κιόλας διετία;
  • iOS 4.0 στο 3G[S], tethered jailbreak από τον iH8sn0w, παίζει καλά, κάτι γίνεται με το push του Google Sync και μου τρώει τη μπαταρία, θα το ψάξω και θα επανέλθω.
  • The iPad has landed, 3G μοντελάκι, όταν έχω και την καρτούλα για το 3G access θα τα πούμε αναλυτικά. Μέχρι τότε όμως, dig this: η συσκευή τα σπάει. Απλά τα σπάει._ Αυτός που με βοήθησε ξέρει ποιος είναι και θα πιει μπύρες, τέλος! Thx bro:c00l:
  • Στην υπόλοιπη επικαιρότητα η Switcheasy Nude εξαιρετική και προστατεύει τη συσκευή πολύ καλά. Ηθικόν δίδαγμα: όταν περνάτε προστατευτική μεμβράνη σε συσκευές σας βάλτε τες σωστά από την αρχή. Αν ακουμπήσει η εσωτερική πλευρά της μεμβράνης οπουδήποτε, game over: θα κρατήσει σκουπιδάκια, θα κάνει φυσαλίδες αέρα από κάτω και όταν η οθόνη είναι αναμμένη θα φαίνεται κάθε σκουπίδι σα βρωμιά. Μην την πατήσετε σαν το θείο Σμπαρού #fail
  • Περιμένω να δω Sorcerer’s Apprentice, Tron: Legacy και κάνα δυο άλλα. Πρέπει να δω και The Crazies, φάση Resident Evil, να γελάσουμε λίγο.
  • Πρέπει να ασχοληθώ λίγο σοβαρά με HTML5/CSS/Javascript/AJAX, έχω μείνει πίσω. Ιδέες;
  • Έχω και ένα δυο ωραία ιατρικά θεματάκια που θέλω να κουβεντιάσουμε, αλλά όχι τώρα.
  • Η κατάσταση είναι δραματική κατά τα άλλα, και αυτό που με εκπλήσσει περισσότερο είναι η απροθυμία των επαγγελματιών/παρόχων υπηρεσιών/καταστηματαρχών να μειώσουν τις τιμές τους εν μέσω κρίσεως. Φίλε όταν μου κόβουν 30% του μισθού μου δε μπορεί να περιμένεις να σου πληρώσω 5 ευρώ τον καφέ ούτε 10 ευρώ την πίτσα. Μειώστε γιατί σας βλέπω στο δρόμο.
  • Αν δεν ακούτε ssmap να ακούσετε, είναι άξια τα παιδιά.

Σχόλια από κάτω, κατά τα γνωστά:)

iPhone 4

iphone_4.png

Μερικές γρήγορες σκέψεις, οι καιροί και οι υποχρεώσεις δεν επιτρέπουν και πολύ ελεύθερο χρόνο.

Ο Θείος απεκάλυψε σήμερα το iPhone 4. «Η μεγαλύτερη εξέλιξη στο iPhone από την πρώτη του υλοποίηση». Μεγάλα και βαρύγδουπα λόγια για τη συσκευή που με έναν σαρωτικό, σχεδόν μονολιθικό, τρόπο ανέτρεψε όλα τα interface paradigms παγκοσμίως, έφερε την επανάσταση στους υπολογιστές τσέπης, και στα casual μοντέλα πώλησης.

Γιατί εντάξει, από τεχνικά χαρακτηριστικά θα βρουν πολλοί πολλά να πουν. Άλλα κινητά έχουν καλύτερη κάμερα/παίρνουν κάρτα μνήμης/έχουν dedicated πληκτρολόγιο/παίζουν flash/έχουν μπαταρία που κρατάει τρεις μέρες. Ακόμη κι έτσι, λίγα έχουν θερμικά κατεργασμένο άθραυστο γυαλί μπρος – πίσω, την ιπποδύναμη του A4 processor, τις διαστάσεις του iPhone 4 σε σχέση με αυτά που παρέχει, ή τη δυνατότητα να τραβάνε full HD βίντεο και να το μοντάρουν πάνω στη συσκευή. Για να μη μιλήσω για τη Retina Display που βγάζει ανάλυση ίσα με την Παναγία και όλα τα Χερουβείμ μαζί (οι πρώτες αναφορές λένε ότι δε μπορείς καν να διακρίνεις πίξελ). Καλά, για το γυροσκόπιο δεν τολμάω να μιλήσω, γελούσαμε όταν πρωτοβάλανε το επιταχυνσιόμετρο και τώρα κοιτάξτε πού έχουμε φτάσει.

Τα tech specs δε μου λένε κάτι πέρα από δύο συμπεράσματα: πρώτον, πλέον το iPhone προσφέρει αρκετά πράγματα σε σχέση με την τιμή του σε σύγκριση με τον ανταγωνισμό – και δεύτερον, έχει πλέον την ιπποδύναμη και τα χαρακτηριστικά που πρέπει να το πλαισιώνουν για να μπορέσει να προσφέρει μία έτι περαιτέρω ανώτερη εμπειρία χρήσεως.

Για μένα, αν πιάσουμε την κουβέντα για τις προδιαγραφές, αν αρχίσουμε τη μοδιστρική για το τι κάνει και δεν κάνει και πώς το κάνει το iPhone, έχουμε χάσει το όλο νόημα.

Εξηγούμαι: έβλεπα το βίντεο παρουσίασης του νέου πονήματος της Apple. Ψιλοαναμενόμενο δεδομένων των νέων καινοτομιών, αλλά είχε ένα κομμάτι που είδα δύο και τρεις φορές. Μιλάω για την ενότητα του FaceTime, του νέου προτύπου βιντεοκλήσεων που σκοπεύει να κάνει opensource η Apple. Πέρα από τις λεπτομέρειες που άπτονται της υλοποιήσεως και που δεν είναι του παρόντος να αναλύσουμε, ο Jobs και η παρέα του… κατάφεραν πάλι το ακατόρθωτο. Δεν υπάρχει αυτή τη στιγμή φορητή συσκευή που να σου επιτρέπει να κάνεις βιντεοκλήσεις με αυτόν τον τρόπο, με αυτή την απλότητα, με μία τέτοια υλοποίηση που να μη χρειάζεται να κάνεις τίποτα απολύτως για να μιλήσεις και να βλέπεσαι με τον άλλον, όπου και αν βρίσκεται αυτός. Και μη μου πείτε για βιντεοκλήσεις over 3G, είναι πικρό αστείο και πονεμένο. Είναι μία δυνατότητα που επειδή έρχεται να αντιμετωπίσει ένα ήδη υπάρχον κατεστημένο (Skype, MSN, Gtalk) θα συναντήσει αντίσταση. Σκεφτείτε το όμως: για πρώτη φορά μία συσκευή τόσο ευχάριστη και τόσο ενστικτώδης στη χρήση θα δώσει αυτή τη δυνατότητα στο ευρύ κοινό λιτά, ουσιαστικά, «ανώδυνα» αν προτιμάτε.

Όχι ότι οι υπόλοιπες καινοτομίες δεν είναι σημαντικές: είναι και πολύ μάλιστα. Αλλά εδώ και αρκετό καιρό βλέπω πλέον τα πράγματα λίγο διαφορετικά. Η πρώτη και κύρια αξία με βάση την οποία κρίνεται ένα προϊόν, δοκιμάζεται στην αγορά και πιάνει ή πατώνει είναι το ποιες ανθρώπινες ανάγκες καλύπτει. Ανθρώπινες – δεν αρκεί να είναι αποτελεσματικό, πρέπει να έχει και ανθρώπινο πρόσωπο, να είναι κατά το δυνατόν διαφανές, να μπορεί να γεφυρώνει το χάσμα ανθρώπου – μηχανής και να φέρνει στο χρήστη αυτό που θέλει χωρίς να χρειάζονται ακροβατικά και σκέψη. Και σε αυτόν τον τομέα η Apple παίρνει πανηγυρικά άριστα, για ακόμη μια φορά.

Θα βρούμε πολλά να πούμε οι geeks για το μηχανάκι τους ερχόμενους μήνες, ήδη σηκώνει κύμα. Ο Greg Joswiak λέει στο κλείσιμο του βίντεο που λέγαμε: «θα αλλάξει τα πάντα, για άλλη μια φορά». Αντίστοιχα, και ο Jonathan Ive στην αρχή: «Θα επηρεάσει σε διάρκεια τον τρόπο με τον οποίον συνδεόμαστε ο ένας με τον άλλον».

Τα πιστεύω και τα δύο ακράδαντα:)

Update: Η Apple έχει ανεβάσει ξεχωριστά ένα βιντεάκι εδώ που παρουσιάζει ξεχωριστά το FaceTime και τις πιθανές εφαρμογές του. Δεν έχω να σχολιάσω κάτι, το βίντεο λέει περισσότερα απ’ όσα μπορώ να πω και απείρως καλύτερα. Δείτε το και τα σχόλια δικά σας.

Chaos Rings

Πνίγομαι στη δουλειά αλλά έχω μέσα στο κεφάλι μου εδώ και μέρες έτοιμο review για το παιχνίδι και αν δεν το γράψω δε μπορώ να λειτουργήσω!:)

Chaos Rings λοιπόν (λήμμα στη Wikipedia εδώ). Παιχνίδι ρόλων από τη βασίλισσα του χώρου, την Square Enix, ή SquareSoft όπως θα τη γνωρίζετε οι παλαιότεροι. Αποκλειστική κυκλοφορία για το iPhone OS, πατάει στα βήματα των Final Fantasy και είναι ό,τι καλύτερο κυκλοφορεί σε RPG για τη συσκευή αυτή τη στιγμή.

Να το δούμε λίγο πιο αναλυτικά;

Κατ’ αρχάς το παιχνίδι είναι βασισμένο στο κλασικό πρότυπο των ανατολίτικων RPG – μεγαλεπίβολα σενάρια με γενναία δόση δράματος, βαρβάτες μάχες με φρου φρου και ειδικά εφέ, κομμώσεις που δεν υπάρχουν, σύστημα μάχης με τις εντολές σε μενού και τυχαία encounters κάθε δέκα βήματα – the whole package. Όσοι έχετε παίξει Final Fantasy και σας άρεσε θα το λατρέψετε, όσοι τα αντιπαθείτε μην κάνετε καν τον κόπο να το δείτε.

Το σενάριο είναι αρκετά ενδιαφέρον: τέσσερα ζευγάρια μαχητών από όλο τον κόσμο συγκεντρώνονται ξαφνικά από μία πανίσχυρη, μυστηριώδη οντότητα που τους αυτοσυστήνεται ως The Agent, ο οποίος τους ενημερώνει ότι πρόκειται να λάβουν μέρος μέχρι θανάτου σε ένα τουρνουά γνωστό ως «Ark Arena». Όσοι αντισταθούν θα πεθάνουν, όσοι παραμείνουν θα πολεμήσουν ανά δύο μεταξύ τους – και το τελευταίο ζευγάρι που θα μείνει ζωντανό θα κερδίσει την αιωνιότητα. Έτσι, ο μισθοφόρος Escher, η πολεμίστρια Musiea, ο νεαρός βασιλιάς Zhamo και η προστάτιδά του Eluca, ο ιπποκόμος (!) Ayuta και η πριγκήπισσα Mana, και το ζευγάρι των Olgar και Vahti αναγκάζονται να αντιμετωπίσουν ο ένας τον άλλον, χωρίς καλά καλά να γνωρίζουν πού βρίσκονται και γιατί επιλέχθηκαν.

Η ιστορία ξεκινάει in medias res και αποκαλύπτεται σταδιακά μέσα από σκηνές που διεμβάλλονται στη φυσιολογική ροή του παιχνιδιού. Αρκετές αποκαλύψεις, πρόσωπα που δεν είναι αυτό που φαίνονται – το τραπέζι έχει απ’ όλα:) Στην αρχή του παιχνιδιού δίνεται στον παίκτη η επιλογή μεταξύ των ζευγαριών Escher/Musiea και Zhamo/Eluca αλλά μετά τον τερματισμό ξεκλειδώνει η επιλογή New Game+ που δίνει στους παίκτες τη δυνατότητα (εκτός από το να διατηρήσουν την ήδη συσσωρευμένη εμπειρία, ικανότητες και εξοπλισμό τους) να παίξουν και ως τα υπόλοιπα δύο ζευγάρια, ώστε να έχουν σφαιρικότερη εικόνα του σεναρίου. Η Square κατάφερε να χτίσει ένα σενάριο που ενώ δεν είναι ξεπλυμένο, ταυτόχρονα παραμένει κατανοητό για όσους θέλουν να παίζουν το Chaos Rings σε… δόσεις, κάτι που ταιριάζει με την αποσπασματική χρήση της συσκευής.

Από εμφάνιση είναι… απλά το κάτι άλλο. Major props στους προγραμματιστές για τον κόπο τους – τα γραφικά είναι τρισδιάστατα, με λεπτομερή μοντέλα που θυμίζουν πολύ Final Fantasy VIII και τη χρυσή εποχή των RPGs του PSX. Τα εφέ στις μάχες είναι προσεγμένα (αν και κατά περίπτωση ίσως λίγο κοινότυπα), η κίνηση των αντιπάλων και των χαρακτήρων εξαιρετική, και παντού στο interface φαίνονται οι αρτιστικές πινελιές των δημιουργών. Είναι προσεγμένο παιχνίδι και – το σημαντικότερο – τρέχει εξ’ ίσου καλά σε παλιές και νέες συσκευές. Υπάρχει επιλογή στις ρυθμίσεις που να απενεργοποιεί τα εφέ βροχής ή χιονιού που ίσως βαραίνουν πολύ τα iPhones και iPod Touches πρώτης γενιάς, αλλά πέραν αυτού οι χρήστες δε θα έχουν κανένα κόλλημα και καμία καθυστέρηση εξ’ αιτίας του γραφικού πλούτου. Και πάλι, major props.

Ένα άλλο σημείο όπου λάμπει το Chaos Rings είναι ο ήχος του. Η μουσική επένδυση του παιχνιδιού είναι απλά εκπλήκτική, με ηχογραφημένα τραγούδια ειδικά για το παιχνίδι, που κυμαίνονται από easy listening piano tunes μέχρι βαρύ μέταλλο, κρατώντας πέντε – έξι βασικά leitmotifs σε διάφορες παραλλαγές τους. Δεν κουράζει καθόλου, είναι εξαιρετικά ευχάριστη και ταιριάζει με το κλίμα και την ατμόσφαιρα που προωθεί η ιστορία. Οι πιο ψαγμένοι έχουν ήδη «ξηλώσει» από το πακέτο της εφαρμογής τα αρχεία ήχου και τα έχουν προσθέσει στη μουσική τους δισκοθήκη:P Ορισμένα κομμάτια θυμίζουν έντονα Grandia, κάποια άλλα δανείζονται (πάλι) στοιχεία από τα Final Fantasies. Τα ηχητικά εφέ δεν είναι κάτι το φοβερό αλλά δένουν ωραία με το όλο σύνολο. Κάντε στον εαυτό σας μια χάρη, παίξτε με ακουστικά – πραγματικά η εμπειρία απογειώνεται.

Στο ψαχνό τώρα… gameplay. Εδώ είναι λίγο αμφιλεγόμενα τα πράγματα. Χειρίζεστε τους χαρακτήρες που έχετε υπό τον έλεγχό σας με ένα virtual joystick που εμφανίζεται κάτω από το δάχτυλό σας, όπου κι αν το τοποθετήσετε στην οθόνη – ουσιαστικά πατάτε και σέρνετε. Απλό, ενστικτώδες, εύχρηστο. Για να αλληλεπιδράσετε με στοιχεία του περιβάλλοντος ή κουμπιά που εμφανίζονται σε ορισμένα σημεία (π.χ. επιλογή επιπέδου ή κατάστημα) απλώς πατάτε πάνω τους. Η κάμερα εκτός μαχών είναι σταθερή, αλλά τα τοπία είναι 3D σκηνές και όχι prerendered όπως έχουμε συνηθίσει στα παιχνίδια του είδους. Στα cutscenes ο χειρισμός της κάμερας περνάει στη μηχανή γραφικών, ενώ ο παίκτης έχει πάντα τη δυνατότητα να «προχωρήσει» το διάλογο, ή να προσπεράσει μια σκηνή αν δε θέλει να περιμένει: το ότι ο διάλογος είναι μόνο σε κείμενο διευκολύνει τους… γρήγορους:)

Από το φουαγιέ του κάστρου του Agent μπορείτε να επισκεφθείτε τέσσερις «κόσμους», όχι ιδιαίτερα μεγάλους, και να ορίσετε το επίπεδο των τεράτων που θα αντιμετωπίσετε σε αυτούς (και επομένως, τη δυσκολία του παιχνιδιού). Ο κάθε κόσμος έχει διαφορετικό ύφος (ζούγκλα, τούνδρα, ερειπωμένη πόλη, κ.ο.κ.), ενώ μετά από την ολοκλήρωση κάθε κόσμου θα καλείστε να αντιμετωπίσετε ένα από τα ζευγάρια μαχητών που έχουν επιβιώσει ως εκείνο το σημείο. Τους κόσμους αυτούς μπορείτε να τους επισκεφθείτε όσες φορές θέλετε για να μαζέψετε αντικείμενα και εμπειρία για τους χαρακτήρες σας. Στο κάστρο επίσης θα βρείτε τους αντιπάλους σας (με τους οποίους μπορείτε να μιλήσετε), όπως και το κατάστημα του Piu-Piu (θυμίζει έντονα Cait Sith) από τον οποίον μπορείτε να αγοράσετε νέο εξοπλισμό και να πουλήσετε πράγματα που δε θέλετε.

Οι μάχες, εκτός από τις προσχεδιασμένες, ακολουθούν το κλασικό μοτίβο των CRPGs ανατολικού τύπου: περπατάτε μέχρι που τυχαία «σκοντάφτετε» πάνω σε εχθρούς και η οπτική μεταφέρεται μέσα στο πεδίο της μάχης. Εδώ τα πράγματα είναι πλήρως τρισδιάστατα με κάμερα που ακολουθεί τη δράση. Στο κάτω αριστερά μέρος της οθόνης βλέπετε τα hit points και mana points των δύο χαρακτήρων σας, ενώ στο δεξί μέρος εμφανίζεται στην αρχή κάθε γύρου το μενού με τις εντολές. Σημαντικό στοιχείο στρατηγικής για το Chaos Rings είναι το Solo/Pair mode: στην αρχή κάθε γύρου επιλέγετε αν θέλετε οι χαρακτήρες σας να εκτελέσουν ανεξάρτητα ξεχωριστές εντολές (κλασικό σύστημα), ή αν θέλετε να δώσετε μια εντολή που θα την εκτελέσουν από κοινού ταυτόχρονα. Στη δεύτερη περίπτωση τα αποτελέσματα είναι πιο αισθητά, αλλά η όποια επίθεση των εχθρών «πιάνει» και τους δύο χαρακτήρες μαζί, ενώ στην πρώτη περίπτωση αποτελούν ανεξάρτητους στόχους. Ένα άλλο στοιχείο που εισάγει το παιχνίδι είναι ο μετρητής πλεονεκτήματος στην αριστερά πάνω γωνία της οθόνης. Ξεκινάει με την ένδειξη «Even» (ισότιμη) και αναλόγως του ποια πλευρά έχει το πλεονέκτημα γεμίζει με μπλε κομμάτια για τον παίκτη ή με κόκκινα για τους εχθρούς. Η ομάδα που έχει το πλεονέκτημα εκτελεί τις εντολές της πιο αποδοτικά (μεγαλύτερη ζημιά, γρηγορότερες επιθέσεις, συχνότερα criticals, καλύτερες πιθανότητες για δραπέτευση από τη μάχη, κ.ο.κ.). Υπάρχουν εντολές οι οποίες κάνουν το λεγόμενο «Break», δηλαδή γυρίζουν τη μάχη και αντιστρέφουν το πλεονέκτημα. Αυτές οι προσθήκες κάνουν το παιχνίδι ενδιαφέρον. Δυστυχώς, λείπουν οι ειδικές επιθέσεις τύπου Limit Breaks που έχουν τα Final Fantasies, και είναι κρίμα γιατί μέσα από αυτές οι χαρακτήρες διακρίνονται και αποκτούν, κατά κάποιον τρόπο, προσωπικότητα. Ας είναι, μικρό το κακό.

Πέρα από τις βασικές εντολές που έχουν όλοι οι χαρακτήρες (επίθεση, άμυνα, φυγή, χρήση αντικειμένου), υπάρχουν και οι λεγόμενες ειδικές κινήσεις. Αυτές στο Chaos Rings επιτυγχάνονται με τη χρήση των λεγομένων «Genes», με ένα σύστημα που θυμίζει λίγο τους Blue Mages των FF. Την πρώτη φορά που θα νικήσετε ένα τέρας θα πάρετε ένα gene plate που ταιριάζει με τον τύπο του (π.χ. Bird Genes για τους ιπτάμενους εχθρούς ή Spider Genes για τους αραχνοειδείς – και πάει λέγοντας). Το κάθε gene plate έχει έξι gene skills προκαθορισμένα, και όσο περισσότερους εχθρούς του εκάστοτε τύπου νικάτε, τόσο περισσότερα από αυτά τα skills θα ξεκλειδώνουν. Ο κάθε χαρακτήρας έχει υποχρεωτικά ένα human gene plate (ξεκινάτε με δύο, Human Warrior και Human Mage, και παίρνετε skills σε αυτά μέσα από τις μάχες με τα άλλα ζευγάρια), και από εκεί και πέρα έχετε τη δυνατότητα να διαλέξετε μέχρι τρία ακόμη gene plates ανά χαρακτήρα – ακόμη και τα ίδια. Ορισμένα gene skills είναι εντολές που δίνετε μέσα στη μάχη, κάποια άλλα προσδίδουν στατικά προτερήματα (π.χ. +5 στην άμυνα), και κάποια άλλα δίνουν ένα επιπρόσθετο bonus σε κάποιο στατιστικό αν ο χαρακτήρας τα έχει ενεργά κατά το level up, ενώ τέλος κάποια άλλα είναι εντολές που χρησιμοποιείτε εκτός μάχης – όπως το Encounter, που σταματάει τις τυχαίες συμπλοκές με εχθρούς και σας δίνει τη δυνατότητα να εξερευνήσετε τον κόσμο με την ησυχία σας.

Οι προγραμματιστές έχουν βάλει στο παιχνίδι και κάποια δωμάτια – γρίφους: σε αυτά καλείστε να λύσετε ένα παζλ με ορισμένο αριθμό κινήσεων (όπως π.χ. να ανοίξετε δρόμο ως την έξοδο, ή να μαζέψετε όλους τους κρυστάλλους), με τη λύση του οποίου προχωράτε την πλοκή και παίρνετε ως αμοιβή χρήματα για αγορές εξοπλισμού. Είναι ένα πολύ ενδιαφέρον στοιχείο που προσθέτει ενδιαφέρον στη ρουτίνα των μαχών.

Το μειονέκτημα του παιχνιδιού είναι πως είναι σχετικά μικρό και αρκετά εύκολο. Αν κάποιος στρωθεί να το τερματίσει απλώς μια φορά με τον ελάχιστο δυνατό κόπο, έχει τακτικό πνεύμα και είναι λίγο τυχερός μπορεί να το τελειώσει μέσα σε ένα απόγευμα. Όσοι θέλουν να ξεκλειδώσουν όλα τα σενάρια, να μάθουν όλη την ιστορία και να «τελικιάσουν» τους εξοπλισμούς και τα gene plates των χαρακτήρων θα κάψουν κάποιες ώρες παραπάνω – και πάλι όμως, η διάρκεια του παιχνιδιού είναι υπολειμματική. Το δεύτερο μειονέκτημα σχετίζεται άμεσα με το πρώτο: μετά τον πρώτο κόσμο και την πρώτη μάχη με τους ανθρώπινους αντιπάλους θα είστε σε θέση να εξουδετερώσετε σχεδόν κάθε τέρας μέσα σε δύο γύρους το πολύ. Με συγκεντρωμένη προσπάθεια μιας ώρας μπορείτε να έχετε ανέβει αρκετά levels ώστε να σαρώνετε ό,τι βρεθεί μπροστά σας με φυσικές επιθέσεις μόνο. Ακόμη και στο in-game κατάστημα, με τα χρήματα που μαζεύετε και τις τιμές των αντικειμένων που διατίθενται προς πώληση, μπορείτε πουλώντας τα παλιά σας είδη να αγοράζετε πάντα ό,τι νεώτερο και καλύτερο υπάρχει και να σας περισσεύει και ρευστό!

Ουσιαστικά αυτό είναι και το σημείο στο οποίο χάνει το Chaos Rings: αν είχε άλλους τέσσερις κόσμους, μεγαλύτερη δυσκολία, και λίγο πιο πλούσιο σύστημα μαχών θα ήταν απλά τέλειο. Και αυτή είναι και η τελική εντύπωση που σου αφήνει το παιχνίδι: το τερματίζεις, του σκίζεις ό,τι έχει και δεν έχει και η πρώτη σου σκέψη είναι ότι αυτό που έπαιξες είναι πραγματικά εκπληκτικό αλλά θα ήθελες κι άλλο γιατί δε σου έφτασε. Αυτός είναι και ο λόγος που ενώ σε γραφικά, ήχο και πλοκή παίρνει 9, στο gameplay αναγκαστικά του βάζω ένα 6. Συνολικά το οχταράκι του το τσιμπάει και – αν εξαιρέσεις την τσιμπημένη τιμή – αξίζει να το δείτε αν είστε φαν των RPGs.

Το παιχνίδι το βρίσκετε στο App Store, «ζυγίζει» 253 MB και κοστολογείται στα 10,49 €. Τρεϊλεράκι για να γουστάρετε, στο YouTube🙂

Cocoa, sockets και Bonjour

Στο Δ’ εξάμηνο στην Πληροφορική Αθηνών μας παραδίδεται υποχρεωτικά το μάθημα της εισαγωγής στα δίκτυα υπολογιστών. Εντάξει, σαν ύλη έχει τα αναμενόμενα: θύρες, πρωτόκολλα, πολυεπίπεδη οργάνωση δικτύων, πακέτα, καθυστερήσεις, όλα τα καλά. Το κλου όμως: δίνουν και μία εργασία που μπορείς να εκπονήσεις μέχρι το τέλος του εξαμήνου, και η οποία – αν την έχεις σωστή – σου προσθέτει ένα 5% στον τελικό βαθμό. Μισό στα δέκα έξτρα δηλαδή, για να εξηγούμαστε.

Το φετινό θέμα ήταν, πολύ απλά, να γράψουμε δυο προγράμματα που να επικοινωνούν μεταξύ τους τύπου client/server, με χρήση sockets, και να μπορούν να αποστέλλουν μηνύματα το ένα στο άλλο – τύπου IM δηλαδή, με timestamping και τα λοιπά. Η επιλογή γλώσσας, πλατφόρμας και περιβάλλοντος δόθηκε στον καθένα μας, και φυσικά (δε θέλει και ρώτημα) με το καλημέρα σας διάλεξα Objective-C και Cocoa.

Λοιπόν, μερικά πραγματάκια για τους προγραμματιστές αναγνώστες. Όσον αφορά τα διαδικαστικά του interface δεν έχω πολλά να πω: ό,τι γράφουν τα guides της Apple επαρκούν. Φροντίστε να τα διαβάσετε – αν πάτε π.χ. όπως εγώ να προσθέσετε κείμενο στο τέλος μίας NSTextView στα κουτουρού και ψάχνοντας από τις περιγραφές των APIs θα προσπαθείτε να καταλάβετε γιατί δε σας δένει η σάλτσα. Όλα τα υπόλοιπα είναι αυτοεπεξηγηματικά: μέχρι και bindings να θελήσετε να κάνετε, δε θα έχετε ιδιαίτερο πρόβλημα. Στα υπόλοιπα προκαταρκτικά, χρήσιμη ως απαραίτητη είναι η κατανόηση της έννοιας των delegates και των callback συναρτήσεων.

Θέλω να σταθώ κυρίως σε δυο θέματα: τη χρήση sockets στο OS X και την τεχνολογια Bonjour (κατά το προτυπότερον, zeroconf).

Το θέμα sockets θέλει ψάξιμο. Υπάρχουν διάφοροι τρόποι για να στήσει ο προγραμματιστής τόσο listening socket, όσο και socket για σύνδεση από τη μεριά του client. Η ίδια η διαδικασία της δημιουργίας μπορεί να γίνει με πολλούς τρόπους, από τα κλασικά C BSD sockets, μέχρι κλάσεις του Foundation (CFSocket) και της Cocoa (NSSocketPort). Ο τρόπος δεν παίζει ιδιαίτερο ρόλο, στην τελική ο στόχος μας είναι να πάρουμε ένα έτοιμο, καταχωρημένο από το σύστημα socket που να μπορούμε να χρησιμοποιήσουμε ως file descriptor για να γράψουμε και να διαβάσουμε. Οι διάφορες είναι περισσότερο τεχνικές: η διάφορα είναι πως με χρήση της κλασικής βιβλιοθήκης έχουμε περισσότερο έλεγχο, η NSSocketPort απλουστεύει τη διαδικασία (αλλά παραμένει απλή μόνο για TCP πρωτόκολλο) – η τελευταία χρησιμοποιείται και από το σύστημα Distributed Objects messaging της Cocoa μεταξύ εφαρμογών που βρίσκονται σε διαφορετικά μηχανήματα του δικτύου, αλλά στην περίπτωσή μας εξυπηρετεί και χωρίς πολλά πολλά. Η μέση λύση είναι η CFSocket, η οποία προσφέρει σχεδόν το σύνολο του ελέγχου της C βιβλιοθήκης, και έχει το πλεονέκτημα ότι υποστηρίζει run loop integration: δημιουργείς νέο στιγμιότυπο της κλάσεως, το ρυθμίζεις καταλλήλως και το δηλώνεις σε ένα run loop πριν το ανοίξεις. Όταν το socket που έφτιαξες δέχεται εισερχόμενη σύνδεση ή είναι έτοιμο για χρήση καλείται η callback που είχες ρυθμίσει και αναλαμβάνεις από εκεί. Αν είναι να μη χρησιμοποιήσεις αυτή τη δυνατότητα της CFSocket μην ασχοληθείς καν.

Με τον έναν ή τον άλλον τρόπο λοιπόν έχεις έτοιμο socket για χρήση. Υπάρχουν δύο τινά με τα οποία μπορείς να πάρεις και να στείλεις δεδομένα: ή με τη χρήση της NSFileHandle, η με τη χρήση των σαφών υποτύπων της NSStream (NSInputStream και NSOutputStream). Η πρώτη επιλογή είναι η απλούστερη και πιο μοντέρνα: χρησιμοποιείς το socket σου ως file descriptor και ανοίγεις ένα νέο file handle από το οποίο μπορείς να διαβάσεις και να γράψεις. Για ασύγχρονη ανάγνωση (για να μην κολλάει το προγραμμα στα lags) δηλώνεις τον εαυτό σου observer στο default notification center για συγκεκριμένα notifications που σου έρχονται όταν υπάρχουν έτοιμα δεδομένα προς ανάγνωση και οταν είναι εφικτό θα κληθεί η κατάλληλη delegate μέθοδος. Προσοχή όμως: όταν υπάρχει νέα εισερχόμενη σύνδεση ή όταν υπάρχουν νέα δεδομένα για ανάγνωση τα notifications που έρχονται περιέχουν νέο NSFileHandle από το οποίο γίνεται η ανάγνωση – το κύριο αντικείμενο χρησιμοποιείται μόνο για λόγους αναμονής για τη σύνδεση από τον server. Επίσης, κάθε φορά που έρχεται ένα notification πρέπει να λέμε στο handle να συνεχίσει να παρακολουθεί για events αλλιώς δε θα λάβουμε περαιτέρω ειδοποιήσεις. Με αυτό το μηχανισμό ελέγχουμε και το πόσες εισερχόμενες συνδέσεις θελουμε. Ένα τελευταίο tip: η NSFileHandle είναι η απλούστερη λύση αλλά έχει το μειονέκτημα πως η έγγραφη στο stream εξόδου γίνεται αναγκαστικά σύγχρονα οπότε αν προβλεπετε καθυστερήσεις θα πρέπει η έγγραφη να γίνεται σε δικό της block ή thread.

Η δεύτερη λύση είναι η χρήση του NSStream. Και πάλι με χρήση του έτοιμου από πριν socket συνδεόμαστε με τον server και ζητάμε να μας δώσει έτοιμα το εισερχόμενο και εξερχόμενος stream δεδομένων (ή ένα μόνο από τα δύο). Τους δηλώνουμε τον εαυτό μας ως delegate, τα περνάμε στο run loop πριν τα ανοίξουμε και μετά παίρνουμε τα events που παράγουν όταν θέλουν την προσοχή μας – και για ελεγχόμενη και ασύγχρονη εγγραφή στο ρεύμα εξόδου. Προσοχή, θέλουν retain μετά τη δημιουργία τους γιατί επιστρέφονται χωρίς… τόκο (ήτοι, με autorelease). Από εκεί και πέρα δε διαφέρει πολύ η χρήση, με μια βασική εξαίρεση: οι υποτάξεις της NSStream δε μπορούν να χρησιμοποιηθούν για ακρόαση από τον server. Εκεί η μοναδική λύση πέραν της NSFileHandle είναι η καταφυγή στην CFSocket, δήλωση στο run loop, και όταν ενημερώσει το socket πως υπάρχει εισερχόμενη σύνδεση, μέσα στην callback πλέον μας επιστρέφονται πλέον τα – προσέξτε – CFReadStream και CFWriteStream αντικείμενα που αντιστοιχούν στα ρεύματα εισόδου/εξόδου. Από εκεί και πέρα, χάρη στο toll-free bridging μεταξύ Cocoa και Foundation, αυτά τα αντικείμενα μετατρέπονται άμεσα σε NSStreams που ο προγραμματιστής δουλεύει κατα βούλησιν. Επιλογή σας το πώς θέλετε να δουλέψετε.

Τώρα, πριν κλείσουμε θέλω να πω δυο λόγια για το Bonjour και το Net Services framework της Cocoa. Είναι φοβερή τεχνολογία – για όσους δε γνωρίζουν και χωρίς να μπαίνω σε τεχνικές λεπτομέρειες, αφορά την αυτόματη διαφήμιση και ανακάλυψη υπηρεσιών σε ένα δίκτυο/domain με χρήση multicast DNS. Με απλά λόγια, αν έχεις έναν file server σε ένα μηχάνημα και αυτός δηλωθεί στο Bonjour, όλα τα υπόλοιπα μηχανήματα στο δίκτυο που τρέχουν τους ανάλογους clients τον βλέπουν αυτόματα, χωρίς να χρειάζεται ο χρήστης να περνά με το χέρι θύρες και διευθύνσεις δικτύου. Γι’ αυτό και το γενικότερο, non Apple specific όνομα της υπηρεσίας: zeroconf(iguration).

Η χρήση του Bonjour έχει ως εξής πολύ συνοπτικά: ο server δηλώνει μέσω της NSNetService τον εαυτό του στο σύστημα, προσδιορίζοντας το όνομα του και το descriptor της υπηρεσίας που παρέχει. Αυτό ήταν: ο client αρχικοποιεί ένα αντίγραφο της κλάσεως NSNetServicesBrowser και αφού το ρυθμίσει καταλλήλως του ζητάει να ξεκινήσει την αναζήτηση για διαθέσιμους servers. Από εκεί και πέρα όταν αρχίζει/σταματάει η αναζήτηση, όταν βρίσκεται ή χάνεται ένας server και επί σφαλμάτων, καλούνται οι δηλωθείσες από τον προγραμματιστή delegate methods που αναλαμβάνουν τον έλεγχο των υπηρεσιών, το γέμισμα του πίνακα που τις παρακολουθεί (και αν δεν κάνουμε χρήση bindings, την ενημέρωση του interface). Η μαγκία είναι πως όταν θες να συνδεθεις με έναν server ζητάς από το NSNetService αντικείμενο που τον αναπαριστά και που ανακαλυψες αυτόματα να σου ανοίξει τα απαραίτητα NSStreams… και τέλος! Ούτε sockets ούτε συνδέσεις ούτε τίποτα:) Δεύτερο ατού, πολλές παραδοσιακές υπηρεσίες, όπως το FTP, το AFP, το HTTP, το SSH και άλλες έχουν ήδη έτοιμα descriptors για το Bonjour, οπότε με χρήση της τεχνολογίας ο οποιοσδήποτε προγραμματιστής μπορεί να ανακαλύψει αυτόματα τέτοιους servers και να συνδεθεί αυτόματα σ’ αυτούς.

Γενικώς είναι καλά δομημένα τα frameworks και σου δίνουν χέρι να κάνεις αυτά που θέλεις. Απλώς θέλει λίγο διάβασμα ώστε να μπορείς να φέρεις εις πέρας γρηγορότερα και πιο αποτελεσματικά τη δουλειά σου:)

Triple boot σε Intel iMac με χαλασμένο το εσωτερικό SuperDrive

Που λέτε, υπάρχει ένα θέμα με τους Macintosh και τα Windows.

[Ακολουθεί τεχνική ανάλυση – για όσους βαριέστε, προχωρήστε παρακάτω]

Όταν φορτώνει ένας υπολογιστής, το πρώτο κομμάτι κώδικα που εκτελείται ουσιαστικά είναι το firmware του υπολογιστή – ο στοιχειώδης εκείνος κώδικας που επαληθεύει ότι όλα είναι στη θέση τους, βρίσκει τον δίσκο από τον οποίον θα φορτώσει το λειτουργικό, εντοπίζει την αρχή του, διαβάζει το πρώτο κομμάτι του λειτουργικού συστήματος, το φορτώνει στη μνήμη, και πασάρει την εκτέλεση σε αυτό. Job done.

Στους παλιότερους υπολογιστές το firmware είναι το λεγόμενο BIOS (Basic Input/Output System). Οι περισσότεροι οικιακοί υπολογιστές, μέχρι και σήμερα, έχουν μητρικές κάρτες που έχουν BIOS firmware. Κάποιοι υπολογιστές όμως – μέσα στους οποίους και όλοι οι Intel-based Macs – υποστηρίζουν μία άλλη αρχιτεκτονική firmware, την EFI (Extensible Firmware Interface). Το EFI υποτίθεται ότι είναι πιο επεκτάσιμο, πιο σύγχρονο, υποστηρίζει διάφορα καλούδια και δυνατότητες που με το κλασικό BIOS δεν παίζουν και λοιπά. Οι νεώτερες εκδόσεις Linux όπως και το OS X (και οι 64-bit εκδόσεις των Windows από Vista και άνω) υποστηρίζουν EFI κανονικά. Όλες οι άλλες εκδόσεις Windows όμως… δεν.

Εδώ υπάρχει μία ακόμη λεπτομέρεια που θέλει προσοχή: οι νεώτεροι Macs χρησιμοποιούν ένα νεώτερο «είδος» οργάνωσης για τους δίσκους τους, το λεγόμενο GPT (GUID Partition Table, όγι ΓΤΠ:P). Οι παλιότεροι υπολογιστές και τα περισσότερα PCs που τρέχουν Windows έχουν τους δίσκους τους φορμαρισμένους σε MBR (Master Boot Record – οι ορολογίες αυτές είναι συστήματα οργάνωσης των κατατμήσεων ενός δίσκου, ψάξτε το αν ενδιαφέρεστε, φεύγει πολύ η κουβέντα αν το αναλύσουμε).

Λοιπόν, αυτό που γίνεται όταν πειράζουμε τα partitions του δίσκου στον Mac, αυτομάτως το Disk Utility ενημερώνει έναν «ψευδο-MBR» που υπάρχει στην αρχή του δίσκου, ώστε όταν αυτός χρειαστεί παρ’ ελπίδα να δουλέψει με το παλιό σύστημα κατατμήσεων (όπως *γκουχ*γκουχ* όταν φορτώνει τα Windows από το δίσκο*γκουχ*) να μπορεί να έχει μπούσουλα. Το πρόβλημα δημιουργείται όταν θέλουμε να εγκαταστήσουμε ένα νέο λειτουργικό στον υπολογιστή, είτε αυτό είναι τα Windows, είτε το Linux, είτε ο,τιδήποτε άλλο. Κανονικά βάζουμε το δισκάκι στο SuperDrive του Mac, κρατάμε πατημένο το C στην έναρξη (ή το Option και επιλέγουμε το optical drive, το ίδιο κάνει), ο υπολογιστής ελέγχει αν υπάρχει ενάρξιμος δίσκος στο drive και αν ναι, φορτώνει αν χρειάζεται ένα είδος «εξομοίωσης BIOS» και πασάρει τον έλεγχο του συστήματος στο πρόγραμμα εγκατάστασης. Όλα ωραία και περιποιημένα.

Και πάλι, υπάρχουν περιορισμοί: το MBR δεν αναγνωρίζει περισσότερα από τέσσερα partitions – και δεδομένου ότι το πρώτο είναι το 200άρι του EFI, σου μένουν τρία. Επίσης, δεν επιτρέπεται partition πάνω από 2 TB μέγεθος, και κάτι άλλα ψιλά. Παρ’ όλ’ αυτά, η λύση είναι βιώσιμη.

[Εδώ κλείνει η τεχνικούρα:) ]

Τι γίνεται όμως αν το εσωτερικό drive τα έχει φτύσει (όπως στην περίπτωσή μου);

Λες έλα μωρέ, το έχω, θα βάλω το δισκάκι σε ένα εξωτερικό SuperDrive, USB κατά κανόνα, και τελείωσε, θα φορτώσω με το Option πατημένο. Αμ δε: αρχίζουν τα μηνύματα λάθους και έκανες μια τρύπα στο νερό. Λύση νούμερο δύο, να κάνουμε κλώνο του installation disc σε ένα φλασάκι ή έναν εξωτερικό σκληρό δίσκο (Firewire ή USB, δε διαφέρει), και να φορτώσουμε από εκεί. Επίσης, αποτυχία: το μόνο λειτουργικό που μπορεί να φορτώσει από εξωτερικό δίσκο τέτοιου είδους είναι το ίδιο το OS X, με ελάχιστες εξαιρέσεις.

Πώς στα κομμάτια λοιπόν να φορτώσουμε το πρόγραμμα εγκατάστασης;

Θα δούμε λοιπόν με βήματα πώς ακριβώς ετοιμάζουμε τον δίσκο του Mac μας για να δεχτεί τρία λειτουργικά, και πώς να τα περάσουμε σωστά ώστε να μπορούμε να φορτώνουμε κατ’ επίκλησιν όποιο θέλουμε. Θα χρησιμοποιήσουμε το Parallels Desktop 5.x και τον rEFIt bootloader, προκειμένου να κάνουμε τη δουλειά μας.

  1. Πρωτ’ απ’ όλα, προεργασία: εγκαθιστούμε το Parallels Desktop (χωρίς να φτιάξουμε ακόμα κάποια εικονική μηχανή), βάζουμε ένα ένα τα δισκάκια της εγκαταστάσεως στον υπολογιστή και χρησιμοποιώντας το Disk Utility και την εντολή New Image, φτιάχνουμε image files των δίσκων ώστε να τα έχουμε διαθέσιμα για ευχρηστία και ταχύτητα αργότερα.
  2. Ακόμη στο Disk Utility, επιλέγουμε τον εσωτερικό σκληρό του μηχανήματος, πάμε στην καρτέλα Partition και μειώνουμε το μέγεθος της ήδη υπαρχούσης κατατμήσεως όσο θέλουμε (πιάνουμε το handle στο κάτω δεξιά μέρος της και σέρνουμε). Προσθέτουμε με το συν τα επιπλέον partitions που θα χρειαστούμε: ένα για το Linux, ένα για τα Windows, και ένα για το swap space του Linux, με αυτή τη σειρά απαραιτήτως (για να πιάσει το προτελευταίο ο υβριδικός MBR – το Linux είναι GPT-aware). Τα μεγέθη τα διαλέγουμε εμείς, αλλά καλό είναι των Windows να μην είναι κάτω από 30 GB, του Linux κάτω από 12-15 GB, ενώ το swap partition φρόνιμο είναι να έχει μέγεθος μεταξύ μίας και δύο φορών τη μνήμη του συστήματος μας. Σημειωτέον ότι τα νέα partitions τα δημιουργούμε όλα με την επιλογή MS-DOS (FAT) και τους δίνουμε ονόματα που να μας βοηθούν να τα αναγνωρίσουμε εύκολα παρακάτω στη διαδικασία.
  3. Στη συνέχεια κατεβάζουμε και εγκαθιστούμε το rEFIt. Αποδεχόμαστε τις προεπιλογές, αλλά στο τελευταίο βήμα πατάμε customize και του ζητάμε να περάσει και τους επιπλέον drivers για ανανγώριση των ext# partitions που χρησιμοποιεί το Linux. Σημαντικό η έκδοση του rEFIt που περνάμε να είναι από 0.14 και άνω: οι προηγούμενες έχουν ένα πρόβλημα με τον GRUB2 bootloader που χρησιμοποιείται σε αρκετές διανομές Linux και δε θα το αναγνωρίζουν κατά την εκκίνηση.
  4. Αφού περαστεί το rEFIt ανοίγουμε ένα παράθυρο τερματικού (Applications/Utilities/Terminal.app) και εκτελούμε
    sudo /efi/refit/enable-always.sh

    Μας ζητάει κωδικό, δίνουμε κωδικό, προχωράμε παρακάτω.

  5. Κάνουμε επανεκκίνηση του υπολογιστή και φορτώνει το rEFIt. Επιλέγουμε το δεύτερο από αριστερά εικονίδιο της δεύτερης γραμμής (partition manager). Αν ρωτήσει αν θέλουμε να ενημερώσει τον MBR του λέμε ναι και επιλέγουμε το OS X.
  6. Όταν φορτώσει το λειτουργικό, ανοίγουμε το Parallels, φτιάχνουμε μία νέα μηχανή, ζητώντας κατά τη δημιουργία να χρησιμοποιηθεί ως δίσκος το «Boot Camp partition», και τικάρουμε τα δύο partitions που φτιάξαμε για το Linux (ναι, υπολογίζω το κύριο και το swap space). Ζητάμε να παρακάμψει την ανίχνευση, επιλέγουμε το είδος της διανομής που θα εγκαταστήσουμε (Ubuntu Linux στην περίπτωσή μου), και του λέμε να χρησιμοποιήσει ως optical drive το disk image του Linux που φτιάξαμε στο πρώτο βήμα. Τέλος, αν χρειάζεται, αλλάζουμε από το configuration της μηχανής το boot order και ανεβάζουμε το CD-ROM πάνω από τον σκληρό δίσκο.
  7. Βάζουμε μπρος τη μηχανή. Λογικά θα αρχίσει η εγκατάσταση του Linux από το «CD» που φτιάξαμε. Όταν μπει στο περιβάλλον εγκαταστάσεως ακολουθούμε τη διαδικασία της εγκαταστάσεως κανονικά… μέχρις ότου να μας ρωτήσει πού θέλουμε να γίνει η εγκατάσταση. Εδώ ζητάμε να φτιάξουμε το partition table με το χέρι. Ζητάμε να φορμάρει το partition που προορίζεται για το Linux (στην περίπτωσή μου, το /dev/sda3 – λογικό, αφού το πρώτο είναι του EFI και το δεύτερο του Mac OS X) ως ext3 (ή ext4, ή ό,τι άλλο θέλετε τέλος πάντων), και να το κάνει mount ως «/» (δηλαδή root, πάλι χωρίς τα εισαγωγικά). Αντίστοιχα, μαρκάρετε το τελευταίο partition (/dev/sda5 σ’ εμένα) ως swap space και ζητάτε φορμάρισμα (αν σας το επιτρέπει – σ’ εμένα το θεώρησε αυτονόητο). Αν σε κάποιο στάδιο της διαδικασίας σας ρωτήσει που θέλετε να εγκατασταθεί ο bootloader, του υποδεικνύετε το partition όπου θα εγκατασταθεί το Linux, και όχι όλο το δίσκο. Για το Ubuntu Karmic Koala (9.10), η επιλογή αυτή βρίσκεται στις ρυθμίσεις για προχωρημένους, στο τελευταίο βήμα πριν την έναρξη της εγκαταστάσεως από το γραφικό περιβάλλον. Γενικώς, διαλέξτε ό,τι bootloader θέλετε, ό,τι filesystem θέλετε, αρκεί να περάσετε τον bootloader στο σωστό partition και μόνο εκεί, και να ορίσετε ως προορισμό ΤΟ ΣΩΣΤΟ partition. Αλλιώς μόλις διαλύσατε το σύστημά σας:)
  8. Αφού τελειώσει η εγκατάσταση είστε έτοιμοι από μεριάς του Linux. Κάνουμε μία επανεκκίνηση: αν το rEFIt δεν εντοπίσει το Linux, βάζουμε το δισκάκι εγκαταστάσεως των Windows στον υπολογιστή, κάνουμε επανεκκίνηση και το επιλέγουμε – όταν ρωτήσει αν θέλουμε να φορτώσει από το CD περιμένουμε και λογικά θα φορτώσει το Linux. Μέσα από το σύστημα, ανοίγουμε ένα τερματικό και δίνουμε την εντολή
    sudo grub-install --force --root-directory=/ /dev/sda#

    όπου αντί για δίεση βάζουμε τον αριθμό του partition όπου έχουμε περάσει το Linux. Αν δε θυμόμαστε ποιο είναι μπορούμε να το δούμε και από το GParted – αν με έχετε ακολουθήσει πιστά θα είναι το /dev/sda3, όπως προαναφέραμε.

  9. Εκ νέου επανεκκίνηση και τσεκάρουμε ότι το Linux αναγνωρίζεται από το rEFIt. Δεδομένου ότι τελειώσαμε από αυτό, ξαναμπαίνουμε στο OS X, φτιάχνουμε μία νέα εικονική μηχανή στο Parallels, την ορίζουμε ως Windows 7, ως δίσκο ορίζουμε το partition που έχουμε κρατήσει κατά μέρος για την εγκατάσταση και ως optical drive το disk image που φτιάξαμε στην αρχή. Εκκινούμε τη μηχανή και ακολουθούμε κανονικά τις οδηγίες εγκαταστάσεως μέχρι του σημείου που καλούμαστε να διαλέξουμε δίσκο προς εγκατάσταση: εδώ επιλέγουμε το partition μας, και **οπωσδήποτε** ζητάμε format σε αυτό. Θα το κάνει σε NTFS, αλλά δε μας πειράζει – έτσι κι αλλιώς με τη χρήση του NTFS-3G, τόσο μέσα από Linux όσο και από το OS X, θα έχουμε την βασική πρόσβαση που χρειαζόμαστε. Αν ζητηθεί ενεργοποίηση ή σειριακός κωδικός δεν τον δίνουμε ακόμα – είναι δουλειά που θα κάνουμε μετά, κατά την ορθή εκκίνηση του λειτουργικού. Ολοκληρώνουμε την εγκατάσταση, ξεφορτωνόμαστε τα disk images και τις virtual machines και κάνουμε επανεκκίνηση.

Θεού θέλοντος είμαστε εντάξει. Αν για κάποιον λόγο το rEFIt δε βλέπει τα Windows, ή μας δίνουν το μήνυμα Missing Operating System, ή BOOTMGR is missing, βάζουμε το δισκάκι εγκατάστασης των Windows 7 μέσα, φορτώνουμε από αυτό, και όταν μας δοθεί η ευκαιρία επιλέγουμε Repair your computer->Next->Startup Repair, και μετά την επισκευή επανεκκινούμε.

Θεωρητικά μέχρι αυτό το σημείο θα πρέπει να έχετε ένα triple-booting σύστημα, με όλες τις εγκαταστάσεις των δευτερευόντων λειτουργικών να έχουν γίνει μέσα από εικονικές μηχανές στο Parallels. Τώρα απομένουν τα updates και τα διάφορα προγράμματα που χρειάζονται εγκατάσταση, αλλά αυτό είναι τυπικούρα:) Μην ξεχνάτε, αν ανά πάσα ώρα και στιγμή θέλετε να αναστρέψετε την εγκατάσταση, μπαίνετε από το OS X στο Disk Utility, διαγράφετε τα επιπλέον partitions, μεγενθύνετε το partition του OS X ώστε να καταλαμβάνει όλο το δίσκο και τελειώσατε. Αν θέλετε να βγάλετε και το rEFIt (μα γιατί; είναι πολύ καλός boot manager), διαγράφετε τον φάκελο /efi όπως είναι, και από τα System Preferences->Startup επιλέγετε την κατάτμηση του OS X.

Τέλος:)

Χειρουργείου το ανάγνωσμα

Όπως λέγαμε, ο σκληρός δίσκος στον iMac – Western Digital Caviar SATA II 160άρης, ο υπολογιστής μοντέλο 3,5ετίας – κόντευε να παραδώσει το πνεύμα.

Και χρειαζόταν λίγο (έως πολύ) χέρι.

Σημειωτέον, ακολουθεί μεγάλο τεχνικό κείμενο με πολλές λεπτομέρειες. Αν βαριέστε ή δε σας ενδιαφέρει, εγκαταλείψετε τώρα, πριν βαρεθείτε:)

Ξεκίνησα λοιπόν βόλτα στα μαγαζιά για να μαζέψω ό,τι θα μου χρειαζόταν: έναν καινούργιο SATA II 3,5″ σκληρό, στις 7,2k στροφές, λίγη θερμοαγώγιμη πάστα (για τη μεταφορά του θερμικού σένσορα από τον παλιό δίσκο στον καινούργιο – ή είσαι προετοιμασμένος ή δεν είσαι), αλουμινοταινία για τυχόν μπαλώματα που θα χρειαζόταν να κάνω στην ηλεκτρομαγνητική θωράκιση του υπολογιστή αν την έσκιζα, μπαταρία λιθίου τρίβολτη για το logic board (μιας που ανοίγουμε να την αλλάξουμε κι αυτή), και *αν* έβρισκα, ένα SuperDrive τύπου φορητού, ATAPI, γιατί το παλιό κλώτσαγε και ήταν καλή ευκαιρία να αντικατασταθεί και αυτό.

Τελικό tally:

  • Δίσκος: ο WD Caviar Green 750 GB με τα 32 MB cache και θετική σύσταση από φίλο, στα 57 ευρώ σκάρτα από το Πλαίσιο.
  • Αλουμινοταινία, θερμοαγώγιμη, μπαταρία όλα κομπλέ και σε λογικές τιμές (2,5 €, 5 € και 1 € αντιστοίχως).
  • Δυστυχώς, στον τομέα SuperDrive ατυχήσαμε – και αυτό λόγω ATAPI, σε SATA έβρισκα (έστω και υπερτιμημένα). Τελικά μάλλον δε χρειάστηκε, όπως θα πω στη συνέχεια, αλλά την ώρα που έφερνα βόλτα τέσσερις περιοχές της Αττικής για έρευνα αγοράς δε μου έκατσε καθόλου καλά.

Γυρίζω σπίτι και οργανώνομαι καταλήλλως. Από εργαλεία χρειαζόμουν ένα σταυροκατσάβιδο Phillips νούμερο 2, τρία κατσαβίδια Torx (6άρι, 8άρι, 10άρι), και μία πλαστική κάρτα τύπου πιστωτικής για το άνοιγμα του case.

Αν πιάνει το χέρι σου και ανοίξεις μία φορά iMac μετά έχεις πάρει τον αέρα και το κάνεις φουσέκι… η πρώτη φορά όμως είναι άθλος:) Αρχικά, ξαπλώνεις τον υπολογιστή μπρούμυτα και βγάζεις τις μνήμες από τα slots τους, εν συνεχεία ξεβιδώνεις τις τέσσερις βίδες που συγκρατούν πρόσθιο κάλυμμα και σασί και μετά στήνεις τον υπολογιστή όρθιο. Χορεύεις λίγο το πρόσθιο κάλυμμα από το κάτω μέρος του για να αποκτήσεις μπόσικα και (εδώ είναι η πρώτη σφαλιάρα που τρως) βάζεις την κάρτα μέσα στη σχισμή εξαερισμού στο πίσω μέρος του υπολογιστή, προσπαθώντας να πιέσεις από το εσωτερικό μέρος τα δύο ελάσματα/δοντάκια που κρατάνε το case κλειστό ώστε να απασφαλίσουν την ώρα που αποχωρίζεις τραβώντας τα δύο κομμάτια του. Αφού απελευθερωθεί εντελώς το πρόσθιο κάλυμμα προσεκτικά το απομακρύνεις λίγο ώστε να αποκαλυφθούν τα καλώδια συνδέσεως της κάμερας και του μικροφώνου με το logic board, και τα αποσυνδέεις.

Δεύτερος άθλος, η αποκόλληση της μαγνητικής θωρακίσεως που προστατεύει τα ενδότερα του υπολογιστή. Όταν ανοίγει το κουτί του iMac, το πρώτο που βλέπεις είναι την οθόνη να δεσπόζει στο πάνω μέρος, ενώ το κάτω μέρος του logic board προβάλλει από κάτω της. Αυτό το εκτεθειμένο μέρος των ηλεκτρονικών του υπολογιστή καλύπτεται από ένα χοντρό αλουμινόχαρτο/πλαστικό που το θωρακίζει κατά των μαγνητικών παρεμβολών, και το οποίο είναι κολλημένο στις άκρες του πάνω στο σασί του κουτιού. Αυτό πρέπει να αποκολληθεί από αυτές τις άκρες, χωρίς να σκιστεί/τσαλακωθεί/τρυπηθεί, γιατί κατά το κλείσιμο επανατοποθετείται και πρέπει να κλείσει χωρίς κενά στα σημεία που θα κολληθεί (ώστε η θωράκιση να είναι άθικτη). Αν παρ’ ελπίδα το τραυματίσεις, χρειάζεται η αλουμινοταινία που αναφέρω για να κάνεις… μπαλώματα.

Εν πάση περιπτώσει, τσίκι τσίκι το ξεκολλάω, χωρίς ζημιές και… τραύματα, το αναδιπλώνω πάνω στην οθόνη και αποκαλύπτεται το logic board. Εδώ αλλάζεις μπαταρία με σχετικά εύκολο τρόπο, και αποσυνδέεις το καλώδιο του inverter και του LVDS του μόνιτορ, ώστε να μπορείς να το αφαιρέσεις στο επόμενο βήμα. Εν συνεχεία συνεχίζεις το ξήλωμα της θωρακίσεως από τα αριστερά και δεξιά πλάγια του σασί αυτή τη φορά, ώστε να αποκαλυφθούν τα φατνία μέσα στα οποία βρίσκονται οι τέσσερις βίδες που κρατάνε την οθόνη στη θέση της. Εδώ αν δεν έχεις μαγνητικό κατσαβίδι τον ήπιες βασιλικά (στην περίπτωσή μου, έβγαζα τις βίδες που ξεβίδωνα από το κουτί με τον χειρουργικό βελονοκάτοχο, στιγμές απείρου κάλλους) – αν είσαι προετοιμασμένος όμως απλώς τις ξεβιδώνεις και τις κρατάς τακτοποιημένα στην άκρη. Άπαξ και φύγουν κι αυτές από τη μέση, έχεις μείνει με το μόνιτορ, βιδωμένο στα mounting brackets του, από τα οποία το πιάνεις και το τραβάς λίγο προς τα έξω και κάτω, ώστε να μπορέσεις να αποτελειώσεις το ξεκόλλημα της θωρακίσεως. Μετά πολλών, μένεις με την οθόνη στο χέρι, και τη βάζεις παράμερα κι αυτή.

Και έρχεσαι φάτσα φόρα με το κυρίως σώμα του logic board – κατά μία έννοια, τον υπολογιστή αυτόν καθ’ εαυτόν! Μεγάλη στιγμή για κάθε Machead:D Καλό καθάρισμα με πεπιεσμένο αέρα από σκόνες και βρωμιές που επί 42 μήνες μαζεύτηκαν μέσα και μελέτη το πώς ταιριάζει ο δίσκος με τα υπόλοιπα μέρη. Ο σκληρός δίσκος στον iMac δεν είναι βιδωμένος στο σασί: είναι κουμπωμένος. Τι σημαίνει αυτό: δε βιδώνει σε κάποιες προεξοχές που έχει το κουτί, αντ’ αυτού η Apple έχει βιδώσει στον πρωτότυπο δίσκο από τη μια μεριά δύο pins που ταιριάζουν σε δύο τρύπες που υπάρχουν, και από την άλλη μεριά ένα mounting handle που έχει μία εγκοπή η οποία κουμπώνει/ασφαλίζει πάνω στην ανάλογη προεξοχή που βρίσκεται μέσα στο κουτί (και με αυτόν τον τρόπο δημιουργείται ένας θύλακας που φιλοξενεί μια πλεξούδα με καλώδια – καλό). Ουσιαστικά λοιπόν, για να αλλάξεις δίσκο, τραβάς το handle μέχρι να ξεκουμπώσει ο παλιός, τον βγάζεις ως εκεί που παίρνει, αποσυνδέεις τα καλώδια ρεύματος, δεδομένων και του αισθητήρα θερμοκρασίας, και τον βγάζεις από το κάσωμα. Προσεκτικά ξεκόλλησα τον σένσορα και τον πάκτωσα πάνω στον νέο δίσκο με θερμοαγώγιμη πάστα, μετέφερα το handle και τα pins από τον παλιό στον καινούργιο, συνέδεσα τα καλώδια στις κατάλληλες υποδοχές, και κούμπωσα το νέο δίσκο στη θέση του, τακτοποιώντας ό,τι καλώδιο χρειαζόταν στη θέση του.

Το ζήτημα SuperDrive τώρα. Όπως είπαμε, το παλιό drive δεν τα πήγαινε καλά με εγγραφή δίσκων, και συν τω χρόνω και με την ανάγνωση. Τελικά περιορίστηκα απλώς στο να προσπαθήσω να καθαρίσω ό,τι σκόνη είχε μαζευτεί με πεπιεσμένο αέρα στο στόμιο του drive απ’ ευθείας, και ο Θεός βοηθός. Η διαδικασία αντικατάστασης του drive δεν παρεκκλίνει ιδιαίτερα από αυτή του δίσκου – με τη διαφορά ό,τι ο σένσορας θερμοκρασίας του optical drive είναι πακτωμένος πάνω στο SuperDrive και θέλει αρκετό παρακαλετό, όπως τον είδα, για να βγει. Ah well, υλικό για μελλοντικά:)

Αφού τοποθέτησα το νέο δίσκο, έπρεπε να αντιστρέψω τις διαδικασίες: επανατοποθέτηση την οθόνη στη θέση της, βίδωμα και κάλυψη με την μαγνητική μόνωση, σύνδεση τα καλώδια της οθόνης πίσω στις υποδοχές τους στο logic board, κόλλημα της υπόλοιπης μονώσεως γύρω γύρω (με τη βοήθεια κόλλας UHU χαρτοκολλητικής παρακαλώ!), επανατοποθέτηση του προσθίου καλύμματος και επανασύνδεση των επαφών της κάμερας και του μικροφώνου, και τέλος βίδωμα του κουτιού και επανατοποθέτηση των μνημών στη θέση τους. Εδώ ένα σημείο που με ζάλισε αρκετά μέχρι να καταλάβω τι γίνεται: στην εσωτερική αριστερή μεριά του καλύμματος υπάρχουν δύο μαγνητάκια – είναι οι μαγνήτες που κρατάνε το Apple Remote κολλημένο στην θέση του στο πλευρό του υπολογιστή. Αυτά τα μαγνητάκια είναι κολλημένα, αλλά στη δική μου περίπτωση το ένα είχε ξεκολλήσει από τη θέση του, είχε μετατοπιστεί λίγο και ως εκ τούτου δεν έκλεινε σωστά το κουτί:/

Σε κάθε περίπτωση, η αλλαγή πήγε καλά – μετά την εγκατάσταση του νέου δίσκου φόρτωσα το Snow Leopard από το DVD εγκαταστάσεως, πέρασα το λειτουργικό εκ νέου και ξεκίνησα το μαραθώνιο εγκαταστάσεως προγραμμάτων. Δύο μέρες αργότερα, ο υπολογιστής ήταν σε πλήρως λειτουργική κατάσταση, με 500+ GB ελεύθερα, αισθητά γρηγορότερος και πιο αθόρυβος. Και ένα side effect: για ανεξήγητους λόγους, το εσωτερικό SuperDrive έχει πάρει τα πάνω του, ως εκ δια μαγείας! Καλά νέα, ειδικά από τη στιγμή που δε βρήκα το κατάλληλο ανταλλακτικό.

Επί συνόλου θεωρήσεως, η αλλαγή σκληρού δίσκου σε iMac δεν είναι κάτι που θα πρέπει να επιχειρήσει ένας χρήστης που δεν έχει ανοίξει ποτέ του υπολογιστή: θα σπάσεις καμιά οθόνη και θα τρέχεις με 600 € ζημιά. Ο τεχνικός χρήστης που έχει κατσαβιδώσει τουλάχιστον καμιά δεκαριά μηχανήματα μπορεί να το επιχειρήσει, με προσοχή και υπομονή πάντα. Άπαξ και το έκανες μια φορά, δεν είναι δύσκολο να ξαναγίνει – ψάξε όμως πρώτα τα επίσημα εγχειρίδια επισκευής της Apple και μελέτησέ τα προσεκτικά πριν καν αρχίσεις να μαζεύεις ανταλλακτικά και εξαρτήματα.

Και έτσι κλείνει η ιστορία με τον σκληρό δίσκο στον iMac:)


Κατηγορίες

ΗΜΕΡΟΛΟΓΙΟ

Απρίλιος 2018
Δ Τ Τ Π Π Σ Κ
« Αυγ.    
 1
2345678
9101112131415
16171819202122
23242526272829
30  

ΠΑΛΑΙΟΤΕΡΕΣ ΣΕΖΟΝ…

del.icio.us

Twitter

ASK2USE

ΔΙΑΦΟΡΑ

Μας διαβάζουν τακτικά:

Counter free
Advertisements