Προς το περιεχόμενο

t(o.ot)

Members
  • ΜΗΝΥΜΑΤΑ

    73
  • ΜΕΛΟΣ

  • ΤΕΛ. ΕΠΙΣΚΕΨΗ

  • ΑΞΙΟΛΟΓΗΣΕΙΣ

    0%

ΑΝΤΙΔΡΑΣΕΙΣ

27 Excellent

ΣΧΕΤΙΚΑ ΜΕ t(o.ot)

  • Κατάταξη
    Advanced Member

ΠΡΟΣΦΑΤΟΙ ΕΠΙΣΚΕΠΤΕΣ ΠΡΟΦΙΛ

746 προβολές προφίλ
  1. t(o.ot)

    Βοηθεια με ενα regex

    Η πιο απλή regex που μπορώ να σκεφτώ είναι αυτή: /([^:]*)$/ αλλά μου μυρίζει κι εμένα XY problem Αν η αμφιβολία είναι στο performance πήγαινε για split όπως ειπώθηκε εκτός αν έχεις ήδη πρόβλημα με την ταχύτητα και έχεις κάνει όλα τα αλλά σημαντικά βήματα για να βελτιώσεις την κατάσταση (db optimisation, caching, rendering etc). Μιλάς για διαφορά <1-2ms.
  2. t(o.ot)

    Curl

    Αφού τσεκάρεις ότι δεν είναι κάποιο firewall στους σέρβερ σου που να κόβει τα συγκεκριμένα connections (σε ip, port ή protocol level), ίσως να είναι το firewall του destination server που κόβει τα connections από ip συγκεκριμένων χωρών ή εταιριών (πχ με range blocking). Γιατί δεν επικοινωνείς με την εταιρία που παρέχει το API α σε διαφωτίσουν στο κατά πόσο λαμβάνουν τα requests?
  3. t(o.ot)

    transition

    Ειδικά αφού είσαι σε loop καλό είναι να μην έχεις timeout αφού δημιουργείς πολλαπλά callbacks που θα τρέξουν σε σειρά δημιουργώντας πολλαπλές λούπες στον browser. Προσωπικά, θα είχα σε μια λούπα όλα τα innerHTML και μετά με JS θα όριζα παντού το width style για να γίνει το render σε μια λούπα. Η V8 engine λειτοργεί με ticks, και ο Chromium (στον οποίο είναι βασισμένοι οι περισσότεροι μεγάλοι browsers, o FF έχει μια σχεδόν ίδια λούπα) ακολουθεί τη λούπα JS->Styles->Layouts->Paint->Composite (περισσότερα εδώ), οπότε δεν έχεις race condition σε αυτή την περίπτωση.
  4. t(o.ot)

    transition

    Αυτό συμβαίνει γιατί μόλις εκτελεστεί η γραμμή με την innerHTML, ο browser κάνει update το DOM, αλλά δεν ξεκινάει το render cycle αμέσως. Όταν τρέχεις την από κάτω γραμμή, θέτει το style tag στο DOM, όμως ακόμα το span που βάζεις δυναμικά δεν έχει εμφανιστεί στη σελίδα σου. Μόλις αυτό θα συμβεί, ο browser βλέπει αυτό στο DOM: το οποίο και κάνει render. Η CSS εκτελείτε κατά το render cycle, οπότε, όπως καταλαβαίνεις, δεν κάνει trigger το transition property. Η λύση με το setTimeout είναι η ενδεδειγμένη, αφού το setTimeout θα αναγκάσει τον browser να εκτελέσει τη γραμμή που ορίζει το width κατά το επόμενο cycle, όταν το DOM element θα έχει γίνει render. Μια μικρή διόρθωση μόνο, το delay των 100ms που έχεις βάλει είναι εντελώς αχρείαστο, καθώς απλά το setTimeout(() => (percent.style.width = '50%')); είναι αρκετό.
  5. Αυτό εξαρτάται από την εφαρμογή σου. Κάποια δεδομένα (πχ passwords, payment details etc) δεν θες να τα βλέπει κανένας και τα κρυπτογραφείς είτε με encryption ή με hashing algorithms. Υπάρχουν πολλά level στα οποία μπορείς να θες να κρύψεις την πληροφορία σου. Για παράδειγμα, σε μια σελίδα με αγγελίες μπορεί να θες τα παρακάτω: - Ο admin μπορεί να δει τα πάντα, όλες τις αγγελίες και τους χρήστες με τα email και username τους - Ο εγγεγραμένος χρήστης με συνδρομή μπορεί να δει όλες τις αγγελίες και όλους τους χρήστες με τα username τους αλλά χωρίς τα email τους - Ο εγγεγραμένος απλός χρήστης μπορεί να δει όλες τις αγγελίες μέχρι 2 μέρες πριν και δεν μπορεί να δεις τους χρήστες καθόλου - Ο ανώνυμος χρήστης δεν μπορεί να δει τίποτα Στη ΒΔ σου δεν έχει νόημα να κρυπτογραφήσεις κάτι, από τη στιγμή που υπάρχει τουλάχιστον 1 ρόλος που θα μπορεί να δει τα δεδομένα σαν plaintext και δεν πρόκειται για ευαίσθητα δεδομένα (πάντα εκτός από κωδικούς πρόσβασης). Ας πούμε τώρα ότι για κάποιο λόγο αρχίζεις και ζητάς να αποθηκεύσεις τώρα payment methods ώστε να μπορούν οι χρήστες να αγοράζουν κατευθείαν μέσω της σελίδας σου (ας υποθέσουμε χάριν απλότητας ότι θες/μπορείς να αποθηκεύσεις payment details στη ΒΔ σου χωρίς implications και δεν πας σε κάποιo 3rd party integration γι αυτό το σκοπό). Επειδή μιλάμε για ευαίσθητες πληροφορίες που ένα ενδεχόμενο breach μπορεί να σε φέρει σε πολύ δύσκολη (νομικά) θέση, θα ήταν σοφή επιλογή να κρυπτογραφήσεις αυτά τα δεδομένα. Πάντως για να σου δώσω μια εικόνα, σε καμία από τις δουλειές που εργάστηκα στο παρελθόν (15+ χρόνια), όπως και στην τωρινή δουλειά μου, δεν κρυπτογραφήσαμε δεδομένα στη ΒΔ πέραν των κωδικών πρόσβασης, εκτός από μια περίπτωση που γράφαμε software για μια υπηρεσία ΠΟΛΥ ευαίσθητων δεδομένων (είχε να κάνει με το υπουργείο δικαιοσύνης κάποιας ευρωπαϊκής χώρας) και άλλη μια που είχε να κάνει με ευαίσθητα ιατρικά δεδομένα. Σε όλα τα άλλα project που δούλεψα, από πολύ μεγάλα ως πολύ μικρά, τα πάντα ήταν plaintext. Αυτό πάντως δε σημαίνει ότι δεν πρέπει ή δε χρειάζεται να κρυπτογραφήσεις εσύ τα δικά σου δεδομένα, απλά πρέπει να αναρρωτηθείς γιατί χρειάζεται η κρυπτογράφηση; Πρόκειται για δεδομένα που αν κάποιος τα αποκτήσει θα μπορέσει να κάνει μεγαλύτερη ζημιά από το να τα σβήσει για παράδειγμα; Αν ναι, τότε ίσως να είναι καλή ιδέα η κρυπτογράφηση. Όσον αφορά στους όρους χρήσης, καλό είναι να γράφονται από κάποιον νομικό που εξειδικεύεται στο software, αλλά και πάλι σε αρκετά project απλά ήταν ένα συνονθύλευμα από copy/paste άλλων παρεμφερών εφαρμογών. Δεν λέω ότι είναι καλή ιδέα, ούτε καν το προτείνω, αλλά είναι ένα φαινόμενο που δεν είναι σπάνιο. Είναι πάντως από τα πράγματα που δεν είναι ιδιαίτερα ακριβό να κάνεις σωστή δουλειά και μπορεί να φανεί σωτήριο στην περίπτωση που θα βρεθείς στην θέση να το χρειαστείς.
  6. Δες και το diacriticSensitive flag που σου δίνει εγγενώς η mongoose γι αυτόν ακριβώς το λόγο: https://stackoverflow.com/a/39596983/1591387
  7. Φυσικά και ότι γίνεται encrypted μπορεί μετά να γίνει decrypted. Οι hashing algorithms είναι one way. Τα passwords στις ΒΔ είναι hashed, όχι encrypted. To authentication/authorisation έχει να κάνει με το ποιος μπορεί να έχει access σε συγκεκριμένα δεδομένα ή σελίδες στο application. @TS: αυτό που θες να κάνεις γίνεται είτε στο app level (όπως πας να το κάνεις) είτε στo db driver που χρησιμοποιείς (πχ mysql, mongodb). Το θέμα δεν είναι αυτό όμως. Άντε και το έκανες και ακόμα και ο DB ή server admin δεν μπορούν να δουν τα πραγματικά δεδομένα (κάτι το οποίο ΕΙΝΑΙ εφικτό, αν και όχι τόσο straight forward, αφού θα χρειαστεί να σώσεις τα κλειδιά σου σε άλλη ΒΔ και προσθέτει complexity στο σύστημά σου που είναι εμφανές ότι είναι gross overkill για την περίπτωσή σου). Ο τελικός χρήστης πώς το γνωρίζει αυτό; Πχ αν σου έλεγα πως όλα τα μηνύματα εδώ στο ινσόμνια είναι encrypted, πώς θα μπορούσες εσύ να είσαι σίγουρος αφού στο τέλος plaintext βλέπεις στην οθόνη σου;
  8. Αυτή η κλάση είναι το μοντέλο του αντικειμένου. Όχι μόνο κάνει τον κώδικά σου ΠΟΛΥ πιο ευανάγνωστο σε κάποιον τρίτο, μιας και έχει κάπου μαζεμένα τα properties του μοντέλου, αλλά μπορείς να τη χρησιμοποιήσεις για lifecycle hooks (πχ validation από οποιοδήποτε input), class methods (πχ model facades για να μην στέλνεις ολόκληρο το αντικείμενο πέρα δώθε σε κάθε endpoint), αλλά και για το configuration της ΒΔ σου, πχ κάποιο μοντέλο μόνο να το στέλνεις σε διαφορετική ΒΔ (πχ αν έχεις ένα μοντέλο για τα log entries και θες να τα κάνεις aggregate σε κάποιο third party service), να δηλώσεις τα indexes του κάθε πίνακα ξεχωριστά κλπ. Σε γενικές γραμμές, οι controllers σου πρέπει να είναι όσο πιο light weight γίνεται, τα database operations πρέπει να γίνονται από το ORM σου το οποίο θα σου παρέχει κάποιο feature rich API μέσω των μοντέλων σου.
  9. t(o.ot)

    javascript async promises klp

    Επιθετικό το ποστ μου επειδή αναρρωτιέμαι πώς μπορεί η προτροπή για αλλαγή framework σε κάτι όσο immature είναι η deno να βοηθήσει τον ΤΣ. Μάλιστα. Keep trolling.
  10. t(o.ot)

    javascript async promises klp

    Εξακολουθώ να μην καταλαβαίνω. Το Fetch είναι ένα browser API, η node.js έχει τo http module για τον ίδιο σκοπό. Πού υπερτερεί το fetch για να μπορέσει να δικαιολογήσει μια αλλαγή framework (το οποίο deno παρεμπιπτόντως έχει ΠΟΛΛΑ άλλα μειονεκτήματα όπως πχ την έλλειψη package manager και κοινότητας)? Επίσης, πιθανώς ο κώδικας του TS να είναι 100% front-end, πως η deno ή η node.js θα τον βοηθήσουν σε αυτή την περίπτωση; Τέλος, αν είναι να του προτείνουμε του ανθρώπου να αλλάξει όλο τον κώδικά του, γιατί όχι Ruby on Rails, Java, C# ή C++ για παράδειγμα;
  11. t(o.ot)

    javascript async promises klp

    Το deno είναι server-side only που υποστηρίζει ένα μικροσκοπικό subset των npm modules που υπάρχουν για τον κύριο "ανταγωνιστή" του, τη node.js. Πώς μπορεί να είναι λύση στο πρόβλημα του TS, δεδομένου ότι έχει ήδη την υλοποίησή του in-place; Εκτός αν του προτείνεις να γράψει τα πάντα από την αρχή σε ένα framework που δεν γνωρίζει καθόλου.
  12. t(o.ot)

    javascript async promises klp

    Η for...of μπορεί να πάρει await (δες εδώ) for await (let a of [Promise.resolve(1), Promise.resolve(2)]) { console.log(a); } // => 1, 2 Οπότε το δεύτερο block που έχεις θα γίνει: for await (score of scores) vizualize(score);
  13. Δεν έχεις άδικο, δεν το σκέφτηκα αυτό, αλλά με λίγο ψάξιμο μπορείς να βρεις αρκετές (σχετικό είναι αυτό ε) εκεί έξω, πχ εδώ ή εδώ.
  14. Γιατί είναι πολύ χαρακτηριστική και έγινε overused στα 90ς στο ίντερνετ όντας η μόνη websafe cursive γραμματοσειρά, οπότε συνδέθηκε με τα bad old habits του web design. Φυσικά και υπάρχουν πολλές όμορφες cursive γραμματοσειρές που μπορείς να χρησιμοποιήσεις, αφού πλέον είμαστε το 2020 και το να σερβίρεις όποια γραμματοσειρά θέλεις στο web site/application σου είναι cross browser, πανεύκολο και παίρνει μηδαμινό bandwidth. Μόνο η google σου δίνει 146 handwritten γραμματοσειρές ready to go με ένα copy paste στο site σου.
  15. Εξάμηνο 1ο: Google 101 + Documentations 101 Εξάμηνο 2ο: Interviews 101 + Shadowing a Senior Developer Εξάμηνο 3ο: You Don't Know Java/C/C++/Javascript + Debugging 101 Εξάμηνο 4ο: Πρακτική σε startup που θα πρέπει να είσαι one man band και θα πληρώνεσαι με equity. Και είσαι έτοιμος. EDIT: Έβαλα και το debugging που πολύ σωστά ανέφερε ο φίλος kaliakman
×
×
  • Δημιουργία νέου...

Cookies

Χρησιμοποιούμε cookies για μια καλύτερη εμπειρία πλοήγησης στο site.