ISO C (C99): File HexViewer

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Re: ISO C (C99): File HexViewer

Δημοσίευσηαπό migf1 » 01 Μαρ 2012, 20:11

simosx έγραψε:
...
Πρόσθεσα τη σημαία -g όπου προσθέτει στοιχεία εκσφαλμάτωσης (debugging), οπότε με το πρόγραμμα gdb μπορείς να εντοπίσεις που έγινε το Segmentation fault.

Οι φάκελοι είναι είδος αρχείων σε Unix, οπότε ανοίγουν ως αρχεία. Ωστόσο δεν είναι κάτι χρήσιμο.

Αυτό το «ISO» που αναφέρουν παραπάνω είναι μάλλον παραφθορά κάποια κωδικοποίησης χαρακτήρων αντί για αρχεία *.ISO.

Βάλε την καλύτερα -g3 Σίμο, ώστε να μπορεί να απεικονίζει και macros ο gdb.

ΥΓ. Στα Windows δεν μου τα βγάζει όλα τα warnings ρε γαμότο ο gcc, ούτε σε mingw ούτε σε cygwin :(
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: ISO C (C99): File HexViewer

Δημοσίευσηαπό Star_Light » 01 Μαρ 2012, 20:31

@migf1 οκ θα το προσπαθησω....

οσο για αυτο με την MAC πιστευω ειναι λαθος αν οταν ο αλλος
διαβασει ενα κειμενο το οποιο λεει οτι η MAC ειναι ενας 16-δικος
δεν καταλαβει οτι αυτο που διαβαζει αναφερεται μονο στην αναπαρασταση
και οχι στην πραγματικοτητα.
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: ISO C (C99): File HexViewer

Δημοσίευσηαπό migf1 » 01 Μαρ 2012, 20:35

Θεωρείται αυτονόητο πως τα πάντα εσωτερικά αποθηκεύονται σε 2αδική μορφή (όπου 1 = "περνάει ρεύμα", κι όπου 0 = "δεν περνάει ρεύμα"). Είναι δηλαδή τελείως κουφό (παράλογο) να πάει κάποιος να ασχοληθεί με MAC (ή γενικότερα με υπολογιστές) και να μην γνωρίζει το παραπάνω ;) Εννοώ δεν είναι σε καμία περίπτωση υποχρεωμένη μια σελίδα που μιλάει για MAC addresses να εξηγεί πως στους υπολογιστές τα πάντα είναι εσωτερικά αποθηκευμένα σε μορφή 1 και 0 (δυαδική μορφή).
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: ISO C (C99): File HexViewer

Δημοσίευσηαπό simosx » 01 Μαρ 2012, 20:49

Το περιβάλλον με παράθυρα/χρώματα σε τερματικό σε Ubuntu μπορεί να γίνει με τη βιβλιοθήκη ncurses.
Στο
https://github.com/ubuntu-gr/ncursesdemos
πρόσθεσα ένα demo.

Για να το δοκιμάσετε,

Κώδικας: Επιλογή όλων
git clone git://github.com/ubuntu-gr/ncursesdemos.git

(το τρέχουμε μια φορά για τη δημιουργία του τοπικού κλώνου μας)

Κώδικας: Επιλογή όλων
make

για να γίνει η μεταγλώττιση
Κώδικας: Επιλογή όλων

./newdemo

για να εκτελέσουμε το demo στο τερματικό μας.
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

Re: ISO C (C99): File HexViewer

Δημοσίευσηαπό migf1 » 01 Μαρ 2012, 20:54

Ναι, τη γνωρίζω την βιβλιοθήκη Σίμο. Ήθελα και θέλω να αποφύγω ξένες βιβλιοθήκες, για να κρατήσω απλή την διαδικασία του compilation σε όλες τις πλατφόρμες. Αν ήταν να το κάνω με εξωτερικές βιβλιοθήκες θα προτιμούσα να το κάνω σε GTK+, full GUI, αντί για curses/pcurses/ncurses κλπ.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: ISO C (C99): File HexViewer

Δημοσίευσηαπό Star_Light » 01 Μαρ 2012, 21:38

Λοιπον να μαι ξανα και εγω

Κώδικας: Επιλογή όλων

kostas@kostas-SSL:~/PROGRAMS/hex_viewer$ gcc hexview.c -o hexview
hexview.c: In function ‘buffer_dump’:
hexview.c:975: warning: cast from pointer to integer of different size
kostas@kostas-SSL:~/PROGRAMS/hex_viewer$ ls
con_color.h hexview hexview.c hexview.h
kostas@kostas-SSL:~/PROGRAMS/hex_viewer$


Πιστευω ειμαι ετοιμος να παω για δοκιμη.
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: ISO C (C99): File HexViewer

Δημοσίευσηαπό migf1 » 01 Μαρ 2012, 21:41

Πανέτοιμος, ... αυτή η προειδοποίηση που βγάζει στη γραμμή 975 είναι σημαντική όμως!

Αλλάξτε το casting από ...

Μορφοποιημένος Κώδικας: Επιλογή όλων
putchar( (int)buffer->data[i] );

σε..
Μορφοποιημένος Κώδικας: Επιλογή όλων
putchar( (int)(buffer->data[i]) );
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: ISO C (C99): File HexViewer

Δημοσίευσηαπό simosx » 01 Μαρ 2012, 21:43

migf1 έγραψε:Ναι, τη γνωρίζω την βιβλιοθήκη Σίμο. Ήθελα και θέλω να αποφύγω ξένες βιβλιοθήκες, για να κρατήσω απλή την διαδικασία του compilation σε όλες τις πλατφόρμες. Αν ήταν να το κάνω με εξωτερικές βιβλιοθήκες θα προτιμούσα να το κάνω σε GTK+, full GUI, αντί για curses/pcurses/ncurses κλπ.


Αν δεν κάνω λάθος, με χρήση της ncurses είναι πιο εύκολο να φορτώσεις τμηματικά ένα τεράστιο αρχείο, σε αντίθεση με κάποιο GUI, όπου πρέπει να βάλεις όλο το αρχείο σε ένα έτοιμο γραφικό συστατικό.
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

Re: ISO C (C99): File HexViewer

Δημοσίευσηαπό migf1 » 01 Μαρ 2012, 21:44

(δεν τη χρησιμοποιεί αυτή τη γραμμή ο κώδικας, αλλά αν τη χρησιμοποιήσει μελλοντικά θα έχει πρόβλημα).
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: ISO C (C99): File HexViewer

Δημοσίευσηαπό migf1 » 01 Μαρ 2012, 21:52

simosx έγραψε:
Αν δεν κάνω λάθος, με χρήση της ncurses είναι πιο εύκολο να φορτώσεις τμηματικά ένα τεράστιο αρχείο, σε αντίθεση με κάποιο GUI, όπου πρέπει να βάλεις όλο το αρχείο σε ένα έτοιμο γραφικό συστατικό.

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

Η χρυσή τομή για το άνοιγμα μεγάλων αρχείων, μιλώντας πάντα για στάνταρ C, είναι να βάζει το πρόγραμμα ένα buffer με fixed μέγεθος, και να φορτώνει κάθε φορά μονάχα τόσα bytes από το αρχείο. Δηλαδή αν π.χ έχουμε ένα buffer 100Mb κι ένα αρχείο 1Gb, τότε φορτώνουμε και δείχνουμε αρχικά στον χρήστη τα πρώτα 100Mb, όταν μας πει να μετακινηθούμε σε άλλη θέση, εκτός ορίου του fixed buffer μας, τότε υπολογίζουμε ποιο τμήμα του αρχείου αντιστοιχεί στη νέα θέση και πάμε και το φορτώνουμε στο buffer και το δείχνουμε, και πάει λέγοντας.

Έτσι ανοίγεις όντως αρχεία απεριόριστου μεγέθους, σχεδόν ανεξάρτητα από τη διαθέσιμη μνήμη του συστήματος. Αυτό όμως θέλει πολλή προγραμματιστική δουλειά! Είναι όμως στα υπόψη, ως τελευταίο-τελευταίο feature (στο τέλος δηλαδή, αφού έχω φτιάξει πρώτα έναν λειτουργικό viewer... κι έτσι όπως το πάω μάλλον θα τον κάνω και editor στο τέλος :lol:)
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

ΠροηγούμενηΕπόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι