DevBox Γρήγορα εργαλεία για προγραμματιστές, χωρίς εγγραφή

Ποιο Εργαλείο Dev Χρειάζομαι;

Το DevBox έχει 10 μικρά εργαλεία μίας λειτουργίας αντί για ένα ενιαίο εργαλείο που τα κάνει όλα, γιατί η κωδικοποίηση, η δημιουργία και η επιθεώρηση είναι πραγματικά διαφορετικές δουλειές. Χωρίζονται σε 5 ομάδες — εδώ είναι ένας γρήγορος χάρτης από το τι κάνεις στο εργαλείο που το λύνει, ένα πραγματικό σενάριο αποσφαλμάτωσης που συνδυάζει αρκετά από αυτά, και η πλήρης λίστα.

Κωδικοποίηση

Γεννήτριες

Web και Ασφάλεια

Μοτίβα Κειμένου

Χρόνος και Προγραμματισμός

Πρακτικό σενάριο: αποσφαλμάτωση ενός χαλασμένου webhook

Ένα webhook payload δεν επεξεργάζεται σωστά και η αιτία δεν είναι προφανής μόνο από το σφάλμα — αυτό είναι ακριβώς το είδος συνεδρίας που τραβάει μέσα αρκετά εργαλεία από διαφορετικές κατηγορίες, το ένα μετά το άλλο:

  1. Επικόλλησε πρώτα το ακατέργαστο payload στον Μορφοποιητή και Επικυρωτή JSON. Στις μισές περιπτώσεις «δεν επεξεργάζεται σωστά» σημαίνει στην πραγματικότητα «δεν είναι καν έγκυρο JSON» — ο μορφοποιητής το μορφοποιεί όμορφα και δείχνει το ακριβές σημείο του σφάλματος αν είναι χαλασμένο.
  2. Αν το request έχει κεφαλίδα Authorization, βάλε το token στον Αποκωδικοποιητή JWT για να δεις τα claims και τη λήξη του. Ένα payload μπορεί να είναι εντελώς έγκυρο JSON και παρ' όλα αυτά να απορριφθεί παρακάτω επειδή το token πίσω από το request είχε ήδη λήξει.
  3. Παρατηρείς έναν ύποπτο αριθμό στο payload, όπως ένα epoch timestamp που δεν ταιριάζει με το πότε νομίζεις ότι έγινε το event; Πέρασέ το από τον Μετατροπέα Unix Timestamp — είναι συχνή πηγή bug όταν ένα πεδίο είναι σε δευτερόλεπτα σε ένα σημείο και σε χιλιοστά του δευτερολέπτου σε άλλο, και η μετατροπή σού λέει αμέσως αν αυτό το timestamp είναι όντως στο παρελθόν.
  4. Αν το payload έπρεπε να πυροδοτήσει μια προγραμματισμένη επανάληψη και δεν έτρεξε ποτέ, έλεγξε την έκφραση cron του job στον Αναλυτή Εκφράσεων Cron — θα σου δείξει τις επόμενες πραγματικές εκτελέσεις, που συχνά είναι ο πιο γρήγορος τρόπος να επιβεβαιώσεις αν ένα job τρέχει (ή όχι) ενώ όλοι υποθέτουν πως τρέχει.

Όλα τα 10 εργαλεία

Συχνές ερωτήσεις

Αν ο Αποκωδικοποιητής JWT μού δείχνει τα claims ενός token, σημαίνει ότι το token είναι έγκυρο;

Όχι — η αποκωδικοποίηση και η επαλήθευση είναι διαφορετικές λειτουργίες, και αυτό το εργαλείο κάνει μόνο την πρώτη. Η αποκωδικοποίηση απλώς κάνει base64-decode την κεφαλίδα και το payload ώστε να διαβάσεις τα claims και τη λήξη, κάτι χρήσιμο για να καταλάβεις τι λέει το token. Δεν ελέγχει την κρυπτογραφική υπογραφή, άρα δεν μπορεί να σου πει αν το token εκδόθηκε πράγματι από τον auth server σου ή αν έχει παραποιηθεί. Μην αντιμετωπίζεις ένα token που αποκωδικοποιήθηκε επιτυχώς σαν επαληθευμένο — η επαλήθευση υπογραφής χρειάζεται το κλειδί υπογραφής και πρέπει να γίνεται server-side (ή με μια βιβλιοθήκη που έχει αυτό το κλειδί), όχι σε ένα εργαλείο browser που δεν βλέπει ποτέ το μυστικό σου.

Ποια είναι η διαφορά ανάμεσα στο εργαλείο Base64 και στον κωδικοποιητή URL — δεν κάνουν βασικά το ίδιο πράγμα στο κείμενο;

Λύνουν διαφορετικά προβλήματα και παράγουν διαφορετικό αποτέλεσμα για την ίδια είσοδο. Το Base64 επανακωδικοποιεί αυθαίρετα bytes (κείμενο, εικόνες, δυαδικά αρχεία) σε ένα συμπαγές αλφάβητο ασφαλές για ASCII — έτσι ενσωματώνεις μια εικόνα inline ή βάζεις credentials σε μια κεφαλίδα Authorization. Η κωδικοποίηση URL (percent-encoding) αφήνει τους περισσότερους χαρακτήρες ως έχουν και κάνει escape μόνο σε όσους είναι δεσμευμένοι ή μη ασφαλείς σε ένα URL, όπως τα κενά και το &. Αν κωδικοποιήσεις ένα κείμενο σε Base64 θα πάρεις ένα σύντομο, ακατανόητο μείγμα γραμμάτων, ψηφίων και μερικών συμβόλων· αν κωδικοποιήσεις το ίδιο κείμενο ως URL, θα μοιάζει σχεδόν πανομοιότυπο με το αρχικό με σποραδικές ακολουθίες %XX.

Γιατί υπάρχουν ξεχωριστά εργαλεία Γεννήτρια Hash και Εργαλείο Δημιουργίας UUID αφού και τα δύο απλώς βγάζουν συμβολοσειρές που μοιάζουν τυχαίες;

Είναι αντίθετα στον μοναδικό τρόπο που έχει σημασία: ένα hash είναι ντετερμινιστικό και ένα UUID (v4) δεν είναι. Δώσε στη Γεννήτρια Hash την ίδια είσοδο δύο φορές και θα πάρεις το πανομοιότυπο hash κάθε φορά — αυτό κάνει τα hash χρήσιμα για να επιβεβαιώσεις ότι ένα αρχείο ή payload δεν άλλαξε. Το Εργαλείο Δημιουργίας UUID κάνει επίτηδες το αντίθετο: κάθε UUID που παράγει προορίζεται να μην έχει καμία σχέση με καμία είσοδο και να είναι πρακτικά μοναδικό, που είναι αυτό που θέλεις για ένα primary key βάσης δεδομένων ή ένα request ID, όχι για έλεγχο ακεραιότητας.

Αν επικολλήσω ένα πραγματικό JWT, ένα API payload ή ένα αρχείο config σε αυτά τα εργαλεία, φεύγει κάτι από αυτά από το πρόγραμμα περιήγησής μου;

Όχι. Κάθε εργαλείο σε αυτή τη σελίδα — ο Μορφοποιητής JSON, ο Αποκωδικοποιητής JWT, το εργαλείο Base64 και τα υπόλοιπα — τρέχει εξ ολοκλήρου client-side· τίποτα από όσα επικολλάς δεν ανεβαίνει πουθενά, κάτι που έχει σημασία όταν κάνεις debugging με production tokens ή payloads που περιέχουν πραγματικά δεδομένα χρηστών. Γι' αυτό ακριβώς ο Αποκωδικοποιητής JWT δεν μπορεί να επαληθεύσει υπογραφές (δες παραπάνω): η πραγματική επαλήθευση χρειάζεται κλειδί υπογραφής, και αυτό το εργαλείο σκόπιμα δεν μιλά ποτέ με κάποιον server για να το ελέγξει.

Ο Αναλυτής Cron και ο Μετατροπέας Unix Timestamp ασχολούνται και οι δύο με ημερομηνίες — πότε χρειάζομαι πραγματικά τον καθένα;

Ο Αναλυτής Cron είναι για επαναλαμβανόμενα προγράμματα: επικόλλησε μια έκφραση cron όπως */15 * * * * και σου λέει σε απλή γλώσσα πότε τρέχει αυτή η εργασία και σου δίνει τις επόμενες αρκετές εκτελέσεις της. Ο Μετατροπέας Timestamp είναι για ένα μεμονωμένο σημείο στον χρόνο: μετατρέπει έναν αριθμό Unix epoch σε αναγνώσιμη ημερομηνία (ή αντίστροφα), σε όποια ζώνη ώρας διαλέξεις. Στην πράξη συχνά χρειάζεσαι και τα δύο στην ίδια συνεδρία αποσφαλμάτωσης — η έκφραση cron σού λέει πότε υποτίθεται πυροδοτεί μια εργασία, και ο μετατροπέας timestamp σού λέει αν μια συγκεκριμένη καταγεγραμμένη τιμή epoch όντως ταιριάζει με αυτό.