Πέντε διαδρομές μάθησης — προγραμματισμός, web, systems, δεδομένα και DedSec — DedSec Project
Πέντε διαδρομές μάθησης — προγραμματισμός, web, systems, δεδομένα και DedSec 01 New Programmer Φάση 1: κατανόησε ένα πρόγραμμα Διάβασε στα Θεμέλια είσοδο/έξοδο, τύπους, συναρτήσεις και…
01 New Programmer
Φάση 1: κατανόησε ένα πρόγραμμα
Διάβασε στα Θεμέλια είσοδο/έξοδο, τύπους, συναρτήσεις και συνθήκες. Πριν τρέξεις μια μικρή Python function, γράψε την τιμή και τον τύπο κάθε μεταβλητής. Προκάλεσε τρία σφάλματα: λάθος τύπο, ανύπαρκτο dictionary key και τιμή εκτός εύρους. Εξήγησε τα exceptions αντί να αφαιρέσεις το validation.
Φάση 2: δημιούργησε κάτι λειτουργικό
Με το Python workbook και το πρακτικό JSON validation lab φτιάξε offline task tracker. Πρέπει να φορτώνει JSON, να απορρίπτει unknown keys, να προσθέτει/ολοκληρώνει tasks και να γράφει διαφορετικό output file. Δούλεψε σε προσωρινό directory, με CLI argument για διαδρομή και ρητό UTF-8.
Φάση 3: δοκίμασε τα όρια
Γράψε tests με unittest ή assertions για κενή λίστα, αρχείο που λείπει, malformed JSON, duplicate task ID και ελληνικούς τίτλους. Πριν από κάθε bug fix κράτα regression test που αποτυγχάνει. Όλα πρέπει να λειτουργούν offline.
Φάση 4: συντήρηση
Δημιούργησε τοπικό Git repository, κάνε αρχικό commit και μία αλλαγή, εξέτασε git diff/log. Χώρισε source, tests και README και κατέγραψε σε changelog τον λόγο κάθε αλλαγής.
Τελική επαλήθευση
Άλλος χρήστης πρέπει να εκτελεί το πρόγραμμα μόνο από το README, να παίρνει σωστά αποτελέσματα, nonzero exit codes για σφάλματα και να αναπαράγει πέντε tests. Εξήγησε parsing, validation και persistence χωρίς αντιγραφή.
02 Web Developer
Θεμέλια: semantics πριν από σχέδιο
Μελέτησε HTML landmarks, forms, labels, buttons και links. Φτιάξε static site δύο σελίδων με πραγματικό navigation. Κάθε interactive στοιχείο πρέπει να δουλεύει με keyboard, να έχει visible focus και να μη χρειάζεται pointer hover.
JavaScript λειτουργίες
Πρόσθεσε search για δέκα τοπικά knowledge records. Αντιμετώπισε query ως κείμενο και εμφάνισε αποτέλεσμα με textContent, όχι user-controlled HTML. Ένα record ανά card, keyboard controls και σαφές μήνυμα όταν δεν υπάρχουν αποτελέσματα. Κράτα δεδομένα σε τοπικό JSON για offline εκτέλεση.
Ασύγχρονα αιτήματα
Δημιούργησε delayed Promise search με αυξανόμενο request ID. Ολοκλήρωσε το παλιό αίτημα τελευταίο και απόδειξε ότι δεν αντικαθιστά το καινούριο. Σύγκρινε με debounce που περιορίζει κλήσεις αλλά όχι τη σειρά responses.
Browser και deployment
Διάβασε caching, CORS και browser security στην Εγκυκλοπαίδεια. Με local static server δοκίμασε paths σε / και σε /Test/. Έλεγξε contrast light/dark, Greek/English χωρίς duplicate IDs και narrow mobile viewport.
Τελική επαλήθευση
Παράδωσε index.html, μικρό JS module, CSS, local data και README για offline χρήση. Με DevTools βεβαιώσου ότι δεν λείπουν assets, δεν υπάρχουν uncaught errors και δεν απαιτείται network. Εξήγησε διαφορές CSP, output escaping και server-side authorization.
03 Systems Engineer
Κατανόησε το περιβάλλον
Σύγκρινε process, thread, file descriptor, environment variable και filesystem permission με τα Systems lessons. Κατάγραψε διαφορές Linux, Windows και Android/Termux χωρίς να υποθέτεις ότι όλα τα εργαλεία υπάρχουν παντού.
Φτιάξε read-only inspector
Γράψε Python CLI που διατρέχει επιλεγμένο directory, μετρά regular files ανά suffix και εμφανίζει μέγεθος/SHA-256. Απόρριψε missing root με σαφή errors. Χρησιμοποίησε pathlib και chunked hashing ώστε να μη φορτώνεις gigabytes στη μνήμη.
Καθόρισε security boundary
Διαχώρισε path normalization από race-free containment. Όρισε πολιτική για symlinks, unreadable directories, τεράστια αρχεία και ελληνικούς χαρακτήρες/κενά. Μη διατρέχεις symlinks χωρίς ρητή επιλογή και εξήγησε τι γίνεται όταν αρχείο αλλάζει στη διάρκεια hashing.
Δοκιμές αποτυχίας
Χρησιμοποίησε προσωρινά test trees για PermissionError, FileNotFoundError, interrupted reads και subprocess exit statuses. Τα tests δεν πρέπει να πειράζουν αρχικά δεδομένα. Απόφυγε chmod 777 και παράκαμψη TLS/permissions.
Τελική επαλήθευση
Παρήγαγε deterministic report ταξινομημένο κατά relative path, explicit UTF-8 και bounded memory. Έλεγξε την ίδια σύμβαση σε δύο διαθέσιμα περιβάλλοντα και σημείωσε πραγματικές διαφορές. Παράδωσε οδηγίες για Termux και desktop.
04 DedSec Maintainer
Μάθε πρώτα την αρχιτεκτονική
Κατάγραψε website files, bilingual records, source archives, build/export utilities και documentation. Σχεδίασε ροή από Markdown lesson σε JavaScript data record και rendered page. Πειραματίσου μόνο στο Test repository· production αλλάζει μόνο με ξεχωριστή release απόφαση.
Μία ελεγχόμενη αλλαγή γνώσης
Επέλεξε υπάρχον lesson αντί να προσθέσεις duplicate. Βελτίωσε συγκεκριμένη τεχνική εξήγηση, runnable example και boundary test. Ενημέρωσε English/Greek διατηρώντας identity/source path. Έλεγξε ότι loader εφαρμόζει ένα patch ανά locale και source archive ταιριάζει με rendered text.
Quality gates
Έλεγξε duplicate keys, substantive repeated paragraphs, Markdown fences, broken links, relative assets και κενές bilingual εγγραφές. Δοκίμασε search/navigation σε light/dark themes, mobile/desktop. Σύγκρινε Markdown με πραγματική σελίδα, όχι μόνο generated report.
Controlled deployment και κόστος
Έλεγξε commit diff πριν push στο main του Test. Προτίμησε local tests και skip workflow μόνο όπου επιτρέπεται, χωρίς να παρακάμπτεις απαιτούμενο gate. Κράτησε Git SHA, ακριβείς ελέγχους και διαχώρισε source από production.
Τελική επαλήθευση
Δημιούργησε release checklist με rollback, screenshots πριν/μετά, source-to-website parity και manual browser checks. Release δεν είναι έτοιμο όταν υπάρχουν broken links ή layout regressions.
05 Data Analyst
Καθόρισε data contract
Επέλεξε συνθετικά transactions με id, date, category και integer cents. Όρισε required fields, date format, duplicate policy και αν negative amounts είναι refunds. Μη χρησιμοποιείς πραγματικά προσωπικά οικονομικά δεδομένα για εξάσκηση.
Καθάρισε δεδομένα
Χρησιμοποίησε csv.DictReader με UTF-8 και σωστό newline handling. Απόρριψε extra columns, missing IDs, invalid dates και μη ακέραια cents. Κατέγραψε rejected line numbers και αιτίες σε ξεχωριστό report αντί να παραλείπεις λάθη.
Αποθήκευση και queries
Χρησιμοποίησε in-memory/disposable SQLite με NOT NULL, UNIQUE και CHECK. Κάνε inserts με bound parameters μέσα σε transaction. Φτιάξε aggregation ανά category/date και σύγκρινε EXPLAIN QUERY PLAN με και χωρίς index σε επαρκές συνθετικό dataset.
Στατιστικές υποθέσεις
Υπολόγισε count, totals, mean, median και χειρίσου empty groups. Δείξε γιατί missing amount δεν πρέπει αυτόματα να γίνεται 0. Σύγκρινε Decimal display και integer cents, ορίζοντας τον χρόνο rounding.
Τελική επαλήθευση
Παράδωσε εντολές αναπαραγωγής, fixtures, expected SQL results και rejected-rows report. Επιβεβαίωσε consistent duplicate handling, μη μεταβολή του αρχικού CSV και rebuild του report από το μηδέν.