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

Προτεινόμενες αναρτήσεις

Δημοσ.

Έδω θέλεις δουλειά, κοινώς πειραματισμό. Ότι δεν καταλαβαίνουμε κάνουμε δοκιμή με ότι υποθέτουμε σωστό, και από το αποτέλεσμα...διορθώνουμε

Π.χ. Όταν έχεις ένα κείμενο 20 χαρακτήρων, 10 ελληνικούς και 10 αγγλικούς πόσo μήκος έχει το τελικό αρχείο; Αν έχει 20 γράφεις σε Ansi, αν έχεις 40 σε UTF16LE, σε 25 ή 27 μάλλον UTF8.

Γνωρίζεις τι είναι το BOM;

  • Απαντ. 505
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Συχνή συμμετοχή στο θέμα

Δημοσιευμένες Εικόνες

Δημοσ.

 

...θέλω να φτιάξω το δικό μου τύπο αρχείων. Να μετατρέψω δηλαδή το string σε bytes και να τα σώζω με δικές μου μεθόδους, που αποθηκεύουν και metadata στο αρχείο. Κατάφερα να κάνω μεθόδους να γράφουν σε bytes το κείμενο, αλλά όταν πάω να εμφανίσω το περιεχόμενο από άνοιγμα, φαίνονται μόνο οι λατινικοί χαρακτήρες και άμα είχα γράψει Ελληνικούς, εμφανίζει ακατάληπτα σύμβολα. Θα βρεθεί η άκρη όμως, που θα πάει ?

 

Με το serialization μπορούν να αποθηκεύονται πλήρη αντικείμενα και ιεραρχίες τους (metadata κλπ)

δίχως μέριμνα για τα επιμέρους χαρακτηριστικά και τη δομή τους.

Μάλλον δεν το έχεις ξανακούσει....

 

-

Δημοσ.

Έδω θέλεις δουλειά, κοινώς πειραματισμό. Ότι δεν καταλαβαίνουμε κάνουμε δοκιμή με ότι υποθέτουμε σωστό, και από το αποτέλεσμα...διορθώνουμε

 

Ο,τι δεν καταλαβαίνουμε, πάμε και διαβάζουμε το fucking manual για να καταλάβουμε.

 

Trial and error μόνο όταν δεν υπάρχει άλλη επιλογή, αλλιώς είναι πιθανό το πρόβλημα να μη λυθεί ποτέ στην ουσία του και να μη μάθεις αυτά που έπρεπε να μάθεις για να μην το έχεις. Και όποιος έχει μάτια βλέπει που οδηγεί αυτό.

Δημοσ.

Μα δεν συζητώ για τις εντολές ρε φίλε! Αυτές δεν είναι το πρόβλημα! Ο συνδυασμός μετράει! Το τι αλγόριθμο φτιάχνεις, τι θέλεις να πετύχεις.

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

Τέλος πάντων ο καθένας ασχολείται και λέει τα δικά του από την "σκοπιά του". Όταν ο άλλος δεν το καταλαβαίνει ή κάλο έχει ή μεγάλο κάλο...

Δημοσ.

Έδω θέλεις δουλειά, κοινώς πειραματισμό. Ότι δεν καταλαβαίνουμε κάνουμε δοκιμή με ότι υποθέτουμε σωστό, και από το αποτέλεσμα...διορθώνουμε

Π.χ. Όταν έχεις ένα κείμενο 20 χαρακτήρων, 10 ελληνικούς και 10 αγγλικούς πόσo μήκος έχει το τελικό αρχείο; Αν έχει 20 γράφεις σε Ansi, αν έχεις 40 σε UTF16LE, σε 25 ή 27 μάλλον UTF8.

Γνωρίζεις τι είναι το BOM;

Μπορείς να έχεις ελληνικούς χαρακτήρες σε ANSI (εννοείς το ascii)?
Δημοσ.

Ναι πώς δεν μπορούμε. Στα Windows υπάρχει ένα θέμα με την επιλογή γλώσσας για υποστήριξη σε μη unicode προγράμματα. Στην ουσία είναι η κωδικοσελίδα που χρησιμοποιεί εσωτερικά για να παίρνει και να δίνει αλφαριθμητικά που έχουν κληθεί με τις συναρτήσεις τύπου Α (Ansi) και όχι W (Wide, Utf-16LE).

 

https://msdn.microsoft.com/en-us/library/windows/desktop/dd162498%28v=vs.85%29.aspx

Unicode and ANSI names

DrawTextW (Unicode) and DrawTextA (ANSI)

Δημοσ.

Τελικά δεν κρατήθηκα και χρησιμοποίησα το StreamWriter. Και ολοκλήρωσα τα στοιχεία για το text formatting, και έβαλα και για αλλαγή μεγέθους χαρακτήρων, αλλαγή γραμματοσειρών, bold / italic. Και με το StreamWriter λύνεται το πρόβλημα με τους Ελληνικούς χαρακτήρες, μιας και χρησιμοποιεί utf8 by default, αλλά βέβαια τα αρχεία που φτιάχνει δεν είναι "δικά μου" αλλά τυπικά. :( Αυτό που ψάχνω να βρω τώρα είναι το άλλο: Όταν αποθηκεύω με StreamWriter ένα αρχείο, δεν αποθηκεύονται και οι πληροφορίες για το format του text. Οι πληροφορίες για γραμματοσειρές, μεγέθη, οτιδήποτε χάνονται. Θα πρέπει λοιπόν να βρώ άλλο τρόπο να σώζω τα αρχεία και να τα διαβάζω.

 

update: Το βρήκα! :D Αν γράψω / διαβάσω με τις richTextBox.LoadFile() και SaveFile() κρατά το formatting, συν του ότι δεν χρειάζονται τα αντικείμενα StreamWriter,StreamReader και το θέσιμο των properties τους! 

 

Π.χ. Όταν έχεις ένα κείμενο 20 χαρακτήρων, 10 ελληνικούς και 10 αγγλικούς πόσo μήκος έχει το τελικό αρχείο; Αν έχει 20 γράφεις σε Ansi, αν έχεις 40 σε UTF16LE, σε 25 ή 27 μάλλον UTF8.
Γνωρίζεις τι είναι το BOM;

Νομίζω το BOM είναι ένα byte στην αρχή ενός αρχείου unicode που αναφέρει το τύπο κωδικοποίησης του ?

 

Με το serialization μπορούν να αποθηκεύονται πλήρη αντικείμενα και ιεραρχίες τους (metadata κλπ)

δίχως μέριμνα για τα επιμέρους χαρακτηριστικά και τη δομή τους.

Μάλλον δεν το έχεις ξανακούσει....

 

-

Ακουστά το έχω αλλά μέχρι εκεί. Δεν έχω διαβάσει όμως το σημείο που το καλύπτει ακόμα γιατί είμαι πιο πίσω ακόμα.

 

Ο,τι δεν καταλαβαίνουμε, πάμε και διαβάζουμε το fucking manual για να καταλάβουμε.
 

 

+

 

 

 

Έδω θέλεις δουλειά, κοινώς πειραματισμό. Ότι δεν καταλαβαίνουμε κάνουμε δοκιμή με ότι υποθέτουμε σωστό, και από το αποτέλεσμα...διορθώνουμε

 

 

Πλέον, όταν κάθομαι στο VS έχω ανοιχτό το Chrome με περίπου 30 ~ 40 tabs.

Αυτή τη στιγμή έχω 37 tabs ανοιχτά, και απ' αυτά τα 11 είναι MSDN, 3 StackOverflow, και 1 dotnetperls.com

 

Όταν βρω κάτι που δεν ξέρω πως να το κάνω, (πλέον) αρχικά γκουγκλάρω για να δω αν υπάρχει κάποια έτοιμη κλάση / μέθοδος / property / Exception στο .NET που να κάνει αυτό που θέλω. Και άμα βρω, διαβάζω το κείμενο στο MSDN και μετά χρησιμοποιώ. Έτσι ανακάλυψα το enum FontStyle,τη κλάση FontFamily, και τις σχετικές μεθόδους, properties κτλπ για να μπορέσω να φτιάξω τις επιλογές text formatting στο current project. 

 

Αλλά και ο πειραματισμός νομίζω κάπου έχει τη θέση του. Όχι με την οπτική του "δε ξέρω τι να κάνω, θα δοκιμάσω διάφορα στη τύχη" βέβαια, γιατί έτσι και να μην ανακαλύψω ποτέ το τι πρέπει να κάνω, ή να ανακαλύψω έναν όχι και τόσο καλό τρόπο να το κάνω. Αλλά με το σκεπτικό του ότι "Ξέρω ότι το Α κάνει το τάδε και το Β κάνει το άλλο. Υποθέτω πως άμα συνδυάσω με αυτό το τρόπο τα Α και Β, θα μου δώσουν το Γ. Για να δω αν έχω δίκιο...

Δημοσ.

@Alithinos,

https://en.wikipedia.org/wiki/Byte_order_mark

 

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

Δημοσ.

Καλά εννοείται πως άμα ποτέ θελήσω να φτιάξω κάτι 'σοβαρό', θα σπαταλήσω τον απαραίτητο χρόνο για να κάνω μια ωραία συλλογή απαιτήσεων, να κάτσω να αναλύσω και να σκεφτώ αρκετά πως θα γίνεται το κάθε τι (design),κτλπ.

 

Αλλά αυτό δε μπορώ να το κάνω ακόμα. Γιατί αυτό προϋποθέτει ότι ήδη γνωρίζω το τι θα μου χρειαστεί, ενώ εγώ ακόμα μαθαίνω τι είναι αυτά που μπορεί να μου χρειαστούν. Για αυτό πχ και αυτή η άσκηση είναι τελείως "Big Bang". 

  • Like 1
Δημοσ.

 

Offtopic αλλά άμα θελήσεις ποτέ να φτιάξεις κάτι 'σοβαρό', το πρώτο πράγμα που να κοιτάξεις να κάνεις: να μάθεις ένα vcs.

 

Δημοσ.

 

Offtopic αλλά άμα θελήσεις ποτέ να φτιάξεις κάτι 'σοβαρό', το πρώτο πράγμα που να κοιτάξεις να κάνεις: να μάθεις ένα vcs.

 

Αυτό δεν το κάνει το VS ?

Κάθε φορά που κάνω build, αλλάζει το version number. Ή μήπως είναι κάτι παραπάνω απ' αυτό ?

Btw, πες κάποια που προτείνεις. Και αν είναι δυνατό να έχουν ομαλό integration με το VS.

Δημοσ.

Ο πειραματισμός και η εξερεύνηση είναι απαραίτητα για να προοδεύσεις στον προγραμματισμό. Αλλά είναι τελείως λάθος ως αντίδραση στην κατάσταση "δεν καταλαβαίνω κάτι".

 

<rant>

Αυτά τα πράγματα (και πιο συγκεκριμένα, τη μη προσπάθεια αναφοράς σε πηγές) τα κάνουν συνήθως κάτι μαζέτες. Αν πας να διαβάσεις την αναφορά ή/και ένα καλό StackOverflow θα μάθεις σίγουρα αυτό που δεν καταλαβαίνεις, πιθανώς και περισσότερα, και το βασικότερο θα χτίσεις πάνω στην όποια κατανόηση του θέματος έχεις. Αν αρχίσεις να πειράζεις πράγματα μέχρι να δουλέψει κάτι (throwing pasta at the wall until something sticks) το πιθανότερο είναι ότι δε θα καταλάβεις ούτε ποιό ήταν το πρόβλημά σου, ούτε γιατί (και καλά) διορθώθηκε, ούτε τι άλλα προβλήματα μπορεί να έχει που δεν έχουν εμφανιστεί ακόμα.

 

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

 

Ξέρεις τι είναι ακόμα χειρότερο; Ότι η εξέλιξη και η βελτίωση σε τεράστιο βαθμό έρχονται από την αλληλεπίδραση με καλύτερους -- ή αν είσαι τυχερός, με τους καλύτερους. Αλλά οι καλύτεροι βάσει της ιδιότητάς τους έχουν τη δυνατότητα να ικανοποιήσουν τις επιθυμίες τους και πίστεψέ με, το να δουλεύεις παρέα με τη μετριότητα δεν είναι μια απ' αυτές. Πιστεύω δηλαδή πως κάνοντας τέτοια πράγματα όχι μόνο κάνεις κακό στον εαυτό σου άμεσα αλλά πολύ χειρότερα σκάβεις στρατηγικά το λάκκο σου και στο μέλλον. Σκέψου: βλέπεις δυο ανθρώπους που δεν ξέρουν πολλά γιατί είναι και οι δυο αρχάριοι. Αλλά ο ένας από τους δύο όταν δεν καταλαβαίνει κάτι αρχίζει το copy paste με μανία ενώ ο άλλος πάει με τα πολλά και γράφει ερώτηση στο SO από αυτές που χαίρεσαι να απαντάς. Σε ποιόν από τους δύο θα επιλέξεις να "κάνεις δώρο" το χρόνο σου;

/rant

 

Να πω επίσης ότι μπορώ να φέρω στο μυαλό μου ακριβώς δύο τρανταχτές περιπτώσεις ατόμων που πέρασαν από το forum οι οποίοι είχαν ταυτόχρονα τα κοινά χαρακτηριστικά της αδιαμφισβήτητης εμπειρίας και της πρακτικά τελείως solo πορείας στο χώρο -- αν δεν απατώμαι και οι δυο έχουν πει πως ουσιαστικά δε δούλεψαν ποτέ σε συνεργασία με κάποιον άλλο: migf1 και τώρα m2000.

 

Ψάξε να διαβάσεις σχετικές συζητήσεις και βγάλε μόνος σου τα συμπεράσματά σου.

 

-------------

 

Όσον αφορά το serialization (αυτό είναι στην ουσία όταν λέμε save/load), είναι γενικά από τα πιο δύσκολα πράγματα που μπορεί να δοκιμάσεις να κάνεις. Για διάφορους λόγους:

  • Μπορείς να το κάνεις όπως θες => οι δυνατότητες να πάρεις λάθος δρόμο είναι άπειρες. Ειδικά όταν είσαι αρχάριος που δεν έχεις και ιδέα από πού να το πιάσεις.
  • Είναι τελείως ύπουλο θέμα επειδή έχει layers upon layers πραγμάτων που προκύπτουν στην πορεία τα οποία δεν πρόκειται να σκεφτείς εκτός αν τα έχεις συναντήσει ήδη, και τα οποία σε πολλές περιπτώσεις μόλις εμφανιστούν καθιστούν τη λύση που ήδη έχεις στα χέρια σου τελείως άκυρη.
  • Είναι πολύ εύκολο από άποψη προγραμματιστικής δομής να κάνεις μια μικρή απλή υλοποίηση αλλά πάρα πολύ δύσκολο (απαιτεί υψηλή τεχνική κατάρτιση) να κάνεις μια καλή υλοποίηση που αντέχει το ενδεχόμενο βάρος των απαιτήσεων. Σαν αποτέλεσμα, ξεκινάς από το απλό που έχεις και δουλεύει και πολύ σύντομα παίρνεις το δρόμο χωρίς γυρισμό.

Θα σου πρότεινα αν θες να ασχοληθείς τώρα με το ζήτημα να ξεκινήσεις με κάτι πάρα πάρα πολύ απλό. Σε καμία περίπτωση "αποθήκευση rich text", δεν έχεις ούτε καν μια σφαιρική άποψη του πώς μπορεί να μοντελοποιείται το text formatting στους υπολογιστές, πόσο μάλλον να υλοποιήσεις serialization γι' αυτό.

 

ΥΓ με αφορμή από τον Ηλία: Όλα αυτά τα πράγματα που κάνεις και δοκιμάζεις, να τα κάνεις σε git repo. Ακόμα κι αν δεν πρόκειται να το δει ποτέ κανένας εκτός από σένα. You will thank me later.

  • Like 1
Δημοσ.

Αυτό δεν το κάνει το VS ?

Κάθε φορά που κάνω build, αλλάζει το version number. Ή μήπως είναι κάτι παραπάνω απ' αυτό ?

Btw, πες κάποια που προτείνεις. Και αν είναι δυνατό να έχουν ομαλό integration με το VS.

 

Είναι πολύ παραπάνω από αυτό που περιγράφεις, αλλά δεν ξέρω αν είναι παραπάνω από αυτό που όντως έχει το VS για το οποίο δεν έχω ιδέα. Μπορεί πράγματι να έχει κάποιο ενσωματωμένο vcs. Εγώ προτείνω git γιατί είναι distributed και ίσως το πιο δημοφιλές απ' όλα. Αν δεν έχει το git εύκολο integration μάλλον δεν θα έχει κανένα. Μια άλλη σοβαρή εναλλακτική είναι το mercurial.

 

Σαν αρχάριο το πρώτο βασικό που σε νοιάζει είναι το "πηγαίνω πίσω στην ιστορία όπου θέλω, όποτε θέλω και δεν με νοιάζει τίποτα συν ότι μπορώ να δω γιατί (αν φροντίζω να το αιτιολογώ) και πότε έχω κάνει το κάθε τι". Λίγο πιο μετά αφού εξοικειωθείς μπορείς να πειραματιστείς και με branching το οποίο είναι απαραίτητο για collaboration, αλλά μπορεί να φανεί πολύ χρήσιμο ακόμα και αν αναπτύσσεις το project μόνος σου.

Μπορώ να έχω τα επιχειρήματα για αυτό το VCS;

Το να μη κρατάς από μόνος σου 1000 εκδόσεις του κώδικα σου, αρκεί;

  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...