Διαδρομές
/
JavaScript
JavaScript
/
Ασκήσεις
/
Μικροϊστολόγιο
Μικροϊστολόγιο

Μικροϊστολόγιο

Εύκολο

Οδηγίες

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

Για να κάνεις το προϊόν σου αξιοσημείωτο, το κάνεις ακραίο και επιτρέπεις μόνο αναρτήσεις 5 ή λιγότερων χαρακτήρων. Οι αναρτήσεις με περισσότερους από 5 χαρακτήρες θα πρέπει να περικόπτονται στους 5.

Για να επιτρέψεις στους χρήστες σου να εκφράζονται πλήρως, επιτρέπεις emoji και άλλους χαρακτήρες Unicode.

Η εργασία είναι να περικόψεις συμβολοσειρές εισόδου στους 5 χαρακτήρες.

Κωδικοποιήσεις κειμένου

Το κείμενο που αποθηκεύεται ψηφιακά πρέπει να μετατραπεί σε μια σειρά από byte. Υπάρχουν 3 τρόποι αντιστοίχισης χαρακτήρων σε byte που χρησιμοποιούνται συνήθως.

  • ASCII μπορεί να κωδικοποιήσει χαρακτήρες της αγγλικής γλώσσας. Όλοι οι χαρακτήρες έχουν μήκος ακριβώς 1 byte.
  • UTF-8 είναι μια κωδικοποίηση κειμένου Unicode. Οι χαρακτήρες καταλαμβάνουν από 1 έως 4 byte.
  • UTF-16 είναι μια κωδικοποίηση κειμένου Unicode. Οι χαρακτήρες έχουν μήκος είτε 2 είτε 4 byte.

Το UTF-8 και το UTF-16 είναι και οι δύο κωδικοποιήσεις Unicode, που σημαίνει ότι μπορούν να αναπαραστήσουν ένα τεράστιο εύρος χαρακτήρων, όπως:

  • Κείμενο στις περισσότερες γλώσσες και συστήματα γραφής του κόσμου
  • Ιστορικό κείμενο
  • emoji

Το UTF-8 και το UTF-16 είναι και οι δύο κωδικοποιήσεις μεταβλητού μήκους, που σημαίνει ότι διαφορετικοί χαρακτήρες καταλαμβάνουν διαφορετικό χώρο.

Σκέψου το γράμμα 'a' και το emoji '😛'. Στο UTF-16 το γράμμα καταλαμβάνει 2 byte, αλλά το emoji καταλαμβάνει 4 byte.

Το κόλπο σε αυτή την άσκηση είναι να χρησιμοποιήσεις API σχεδιασμένα με βάση τους χαρακτήρες Unicode (σημεία κώδικα) αντί για μονάδες κώδικα Unicode.

Σημεία κώδικα έναντι μονάδων κώδικα

Μια "κανονική" συμβολοσειρά κωδικοποιημένη σε UTF-16 μπορεί να αναπαρασταθεί ως μια σειρά χαρακτήρων, όπου κάθε χαρακτήρας μπορεί να έχει μήκος έως 16 bit (εξ ου και το όνομα UTF-16). Αυτό σημαίνει ότι υπάρχουν το πολύ 2¹⁶ (δύο στη δέκατη έκτη δύναμη), ή 65536 πιθανοί χαρακτήρες που μπορούν να αναπαρασταθούν με 16 bit, ή 1 μονάδα κώδικα. Αυτοί οι 65536 χαρακτήρες αποτελούν αυτό που είναι γνωστό ως Βασικό Πολύγλωσσο Σύνολο, το οποίο είναι αρκετά μεγάλο για τους πιο συνηθισμένους χαρακτήρες των περισσότερων γλωσσών.

Ωστόσο, κάποια σύμβολα δεν χωρούν σε μία μόνο μονάδα κώδικα. Η λύση είναι να τα αναπαραστήσουμε με δύο μονάδες κώδικα. Αυτές οι δύο μονάδες κώδικα UTF-16, που συχνά αναφέρονται και ως ζεύγος υποκατάστασης, σχηματίζουν ένα σημείο κώδικα.

Συνοψίζοντας, λοιπόν, όταν αναφερόμαστε στην κωδικοποίηση UTF-16:

  • Μια code unit είναι 16 (ή λιγότερα) bit που αναπαριστούν έναν μόνο χαρακτήρα.
  • Ένα code point είναι μία ή δύο μονάδες κώδικα που αναπαριστούν έναν μόνο χαρακτήρα.

Για να αυξηθεί κι άλλο η σύγχυση, υπάρχουν και τα συμπλέγματα γραφημάτων, που είναι βασικά ακολουθίες χαρακτήρων Unicode (σημείων κώδικα) που πρέπει να αντιμετωπίζονται ως μία οπτική μονάδα. Για παράδειγμα, κάποια emoji, όπως αυτό εδώ 👨‍👦.

UTF-16 στη Javascript

Οι περισσότερες ενσωματωμένες μέθοδοι της Javascript λειτουργούν με συμβολοσειρές κωδικοποιημένες σε UTF-16, ωστόσο βασίζονται σε μονάδες κώδικα UTF-16. Για παράδειγμα, μια μέθοδος String.prototype.split("") θα χωρίσει μια συμβολοσειρά ανά μονάδες κώδικα.

Από την άλλη, οι String iterators διατρέχουν ανά σημεία κώδικα.

Μπορείς να διαβάσεις πολλά περισσότερα, και να βρεις παραδείγματα για συμβολοσειρές Unicode, στο MDN.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
JavaScript Exercism

Έτοιμος να ξεκινήσεις την άσκηση Μικροϊστολόγιο;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις JavaScript με 37 έννοιες159 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.