ISO C (C99): File HexViewer

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

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

Re: ISO C (C99): File HexViewer

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

Ilias95 έγραψε:Λοιπόν δοκίμασα με διάφορα αρχεία (text, binaries, ταινίες, εικόνες) και φαίνεται να δουλεύει κανονικά ως προς τα βασικά.
Επίσης όλες οι λειτουργίες που φαίνονται στην βοήθεια δουλεύουν σωστά.


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

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

Αυτό το «ISO» που αναφέρουν παραπάνω είναι μάλλον παραφθορά κάποια κωδικοποίησης χαρακτήρων αντί για αρχεία *.ISO.
προσωπικό ιστολόγιο ϗ πλανήτης 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

Δημοσίευσηαπό Ilias95 » 01 Μαρ 2012, 17:40

simosx έγραψε:Ποια έκδοση χρησιμοποιείς; Είναι η πιο πρόσφατη έκδοση από το αποθετήριο;

Είναι η τελευταία που ανέβασε ο migf1 (με τα 2 νέα αρχεία).
Θα δοκιμάσω και με τον κώδικα του αποθετηρίου όπως λες.

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

Εννοείς το iso που αναφέρω; Αν ναι, είναι iso αρχείο το οποίο δημιούργησα με το DeVeDe.
Δεν ξέρω αν παίζει ρόλο το ότι το αρχείο είναι πάνω από 2GB (2.2 για την ακρίβεια).

Edit: Άκυρο το τελευταίο, τώρα κατάλαβα τι εννοείς.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: ISO C (C99): File HexViewer

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

Ilias95 έγραψε:Λοιπόν δοκίμασα με διάφορα αρχεία (text, binaries, ταινίες, εικόνες) και φαίνεται να δουλεύει κανονικά ως προς τα βασικά.
Επίσης όλες οι λειτουργίες που φαίνονται στην βοήθεια δουλεύουν σωστά.

Ευχαριστώ!

έγραψε:Προβλήματα:

1) Δεν μπορώ να ανοίξω ένα αρχείο iso. Δίνω κανονικά το full path προς το αρχείο αλλά μου λέει ότι δεν υπάρχει.

Μόλις δοκίμασα σε Windows που είμαι τώρα ένα .iso του MS-Office-10 και το άνοιξε κανονικά... έχω κάνει όμως κάτι αλλαγές στον κώδικα (δεν δοκίμασα με τον ποσταρισμένο κώδικα). Oι πρώτες 110 σελίδες του .iso ήταν γεμάτες από μηδενικά bytes, πράγμα που μου έδωσε hint να προσθέσω στην εντολή αναζήτησης τη δυνατότητα να πηγαίνει στο επόμενο/προηγούμενο μη-μηδενικό byte :)

έγραψε:
2) Ερώτηση. Οι φάκελοι πρέπει να ανοίγουν με έναν hex viewer;

Κανονικά όχι, αλλά στο Linux που τα πάντα είναι αρχεία μάλλον δεν το καταλαβαίνει πως πρόκειται για φάκελο (στα Windows μου βγάζει permission denied). Το θέμα είναι πως ο κώδικας χρησιμοποιεί μόνο στάνταρ C, ενώ αυτό που ρωτάς θέλει platform-dependent κώδικα.

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

Όπως είναι τώρα ο κώδικας δεν είναι φτιαγμένος να δείχνει άδεια οθόνη όταν δεν υπάρχει φορτωμένο αρχείο, τι εννοείς όταν λες σου ανοίγει ένα άδειο αρχείο;

έγραψε:
[code]ilias@ilias-pc:~/hex$ ./hexview
Loading "./hexview"...
Done!
...

Αυτά είναι μάλλον αναξιόπιστα πράγματα, γιατί ο κώδικας δεν προβλέπει άνοιγμα φακέλων. Εννοώ πως δεν κάνω κάποιου είδους διαχωρισμό μεταξύ αρχείων, φακέλων, δίσκων, κλπ. Παίρνω ως δεδομένο πως ότι του δώσεις θα είναι αρχείο, και το ανοίγω ως τέτοιο. Δες και παραπάνω.

έγραψε:
3) Εκεί που δίνουμε εντολές αν τυχόν η εντολή είναι μεγάλη και ξεπερνάει την μία γραμμή η εντολή συνεχίζεται παρακάτω όπως είναι λογικό.
Το πρόβλημα είναι ότι αν πατήσει κάποιος backspace για να σβήσει χαρακτήρες μπορεί να σβήσει μέχρι το τέλος της γραμμής που βρίσκεται και όχι προηγούμενες γραμμές.

Στα Windows που είμαι τώρα, σβήνει και τις προηγούμενες... αυτό είναι θέμα φλοιού. Δεν διαχειρίζομαι εγώ δηλαδή το editing που κάνεις σε εκείνες τις γραμμές, το διαχειρίζεται ο φλοιός του λειτουργικού σου.

έγραψε:
4) Καλύτερα να εμφανίζεις ένα μήνυμα "invalid option" όταν χρειάζεται. Αν δώσω "hfsafasffafads" θα μου ανοίξει την βοήθεια. :wtf:

Αυτό έτσι το έχω βάλει να δουλεύει... δηλαδή το 1ο γράμμα που δίνεις λαμβάνεται πάντα ως εντολή... το h στην προκειμένη περίπτωση :) Άμα δώσεις κάτι που δεν αρχίζει με αναγνωρίσιμη εντολή στο 1ο γράμμα το έχω βάλει απλά να επανασχεδιάζει την οθόνη. Αν του βάλω να γράφει κάτι π.χ. "Invalid option" θα πρέπει να του βάλω κι ένα pressENTER() αλλιώς δεν θα προλάβεις να το διαβάσεις.


έγραψε:Τα παραπάνω με το λειτουργικό της υπογραφής μου.

1000 ευχαριστώ! Θα ψαχτώ με αυτό με τους φακέλους.

Προς το παρόν οι προειδοποιήσεις που ποστάρισε ο Σίμος από το compilation του τελευταίου κώδικα (0.261Α) μου έδειξαν ένα ακόμα πρόβλημα που υπάρχει. Δοκιμάστε να δώστε ένα τεράστιο νούμερο ως βήμα στο > ... πχ.: >42304832472384387623473284739472472394
Οποιοδήποτε επόμενο: > δεν θα λειτουργεί πια... αν όχι οποιοδήποτε, πάντως αρκετά από τα επόμενα.

@simosx: Ευχαριστώ και πάλι. Βασικά σώζει στηλοθέτες το [z_code ] αλλά βάζει πρώτα ένα περιθώριο από σκέτα spaces (να ενημερώσουμε τον the_eye)

@Starlight: Δεν έχω καταλάβει που είναι το πρόβλημα. Και τα 2 links που δίνεις σωστά τα γράφουν.
Τελευταία επεξεργασία από migf1 και 01 Μαρ 2012, 22:13, έχει επεξεργασθεί 3 φορά/ες συνολικά
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, 19:31

Ilias95 έγραψε:
simosx έγραψε:
Δεν ξέρω αν παίζει ρόλο το ότι το αρχείο είναι πάνω από 2GB (2.2 για την ακρίβεια)...

Παίζει ρόλο ναι, το είχα γράψει σε κάποιο ποστ και χτες... αν θες να ανοίξεις αρχείο μεγαλύτερο των 2Gb τότε στην main() εκεί που αρχικοποιώ την δομή: Settings άλλαξε το πεδίο της .unlimfsize από ...

Μορφοποιημένος Κώδικας: Επιλογή όλων
...
.unlimfsize = false
}

σε...
Μορφοποιημένος Κώδικας: Επιλογή όλων
...
.unlimfsize = true
}
(αυτό θα το βάλω και σαν command-line flag και ως ρύθμιση από μέσα).

Θεωρητικά με ενεργοποιημένο το unlimfsize (=true δηλαδή) μπορεί να διαβάζει αρχεία μεγαλύτερα από 2Gb, όσο επιτρέπει η ελεύθερη μνήμη σου (και οι ρυθμίσεις της εικονικής μνήμης στο σύστημά σου). Προς το παρόν τα διαβάζει τμηματικά κάθε 100Mb, μέχρι να διαβαστούν όλα τα bytes του αρχείου. Αλλά δεν το έχω τεστάρει ακόμα όσο πρέπει.

Είναι πιο αργή διαδικασία από ότι η στάνταρ που διαβάζει μονοκόμματα (αλλά έχει όριο τα 2Gb... όταν δηλαδή: .unlimfsize=false). Επίσης βγάζει διαφορετικό μήνυμα όσο φορτώνει το αρχείο, αναγράφει τα bytes που διαβάζει καθώς τα διαβάζει (ανά 100Mbytes).
Τελευταία επεξεργασία από migf1 και 01 Μαρ 2012, 19:32, έχει επεξεργασθεί 1 φορά/ες συνολικά
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: ISO C (C99): File HexViewer

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

migf1 έγραψε:Όπως είναι τώρα ο κώδικας δεν είναι φτιαγμένος να δείχνει άδεια οθόνη όταν δεν υπάρχει φορτωμένο αρχείο, τι εννοείς όταν λες σου ανοίγει ένα άδειο αρχείο;

Λάθος διατύπωση. Δεν ανοίγει άδειο αρχείο.
Για να καταλάβεις τι εννοώ δες το αποτέλεσμα της εξόδου που παραθέτω στην προηγούμενη σελίδα όταν ζητάω να ανοίξει ο κατάλογος /home/ilias/movie.
migf1 έγραψε:Αυτό έτσι το έχω βάλει να δουλεύει... δηλαδή το 1ο γράμμα που δίνεις λαμβάνεται πάντα ως εντολή... το h στην προκειμένη περίπτωση :) Άμα δώσεις κάτι που δεν αρχίζει με αναγνωρίσιμη εντολή στο 1ο γράμμα το έχω βάλει απλά να επανασχεδιάζει την οθόνη. Αν του βάλω να γράφει κάτι π.χ. "Invalid option" θα πρέπει να του βάλω κι ένα pressENTER() αλλιώς δεν θα προλάβεις να το διαβάσεις.

Ναι, το κατάλαβα ότι δουλεύει έτσι απλώς μου φάνηκε περίεργο. Αφού το κάνεις εσκεμμένα όμως οκ. :)
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: ISO C (C99): File HexViewer

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

Ήδη με αυτά που έχουμε βρει μέχρι τώρα, θέλει αρκετή δουλίτσα για να το φέρω στα ίσα του :)
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, 19:52

Μιας και το θυμήθηκα, στη δομή Settings μπορείτε να αλλάξετε και την αρχικοποίηση του charset από FMT_XASCII που είναι τώρα σε FMT_ASCII, γιατί στο Ubuntu που χρησιμοποιεί εξαρχής UTF-8 το extended ASCII δείχνει κάποιους χαρακτήρες αλλοιωμένους (π.χ. το E στον header "ELF")... οπότε είναι πιο βολικό να ξεκινάει με απλό ASCII το πρόγραμμα (κι αν θέλετε extended να πατάτε t μέσα του).
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, 20:02

Ilias95 έγραψε:
migf1 έγραψε:Αυτό έτσι το έχω βάλει να δουλεύει... δηλαδή το 1ο γράμμα που δίνεις λαμβάνεται πάντα ως εντολή... το h στην προκειμένη περίπτωση :) Άμα δώσεις κάτι που δεν αρχίζει με αναγνωρίσιμη εντολή στο 1ο γράμμα το έχω βάλει απλά να επανασχεδιάζει την οθόνη. Αν του βάλω να γράφει κάτι π.χ. "Invalid option" θα πρέπει να του βάλω κι ένα pressENTER() αλλιώς δεν θα προλάβεις να το διαβάσεις.

Ναι, το κατάλαβα ότι δουλεύει έτσι απλώς μου φάνηκε περίεργο. Αφού το κάνεις εσκεμμένα όμως οκ. :)

Το έχω έτσι για να μη γράφω πολύ κώδικα για τη διαχείριση της εσωτερικής γραμμής εντολών... βέβαια όταν θα ξεκινήσω τα command-line arguments, θα χρειαστεί έτσι κι αλλιώς να κάνω εκτεταμένο parsing της γραμμής εντολών, όποτε θα δω τότε πως μπορεί να βελτιωθεί και η εσωτερική γραμμή εντολών του προγράμματος.

Στόχος είναι όλες οι επιλογές (Settings) να μπορούν και να περνιούνται ως command-line arguments αλλά και να αλλάζουν κι εσωτερικά (όπως κάνουν τώρα). Επίσης, πολλά από τα #define θα γίνουν πεδία μέσα στο Settings (π.χ. το γκρουπάρισμα των bytes, τα χρωματικά θέματα, κλπ).... όρεξη και χρόνος να υπάρχει :)

Επίσης θα πρέπει να μπει δυνατότητα επιλογής συνεχόμενων bytes (π.χ. για αντιγραφή στο clipboard, ή για απεικόνιση της τιμής τους), δυνατότητα bookmarking σε όποιο σημείο του αρχείου θεωρεί σημαντικό ο user (για άμεση επιστροφή σε αυτό), κλπ, κλπ.

Το βασικό τώρα είναι να εξασφαλίσουμε πως οι βασικές λειτουργίες δουλεύουν απροβλημάτιστα, για να μπορέσω μετά να ασχοληθώ με τα επόμενα features :)
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:03

@migf1 το λεει σωστα η ελληνικη γιατι εγω την ειχα διορθωσει τον ΟΚτωβριο :lol: :lol: :lol:
παλια ελεγε πως μια MAC ειναι ενας 16-δικος που ειναι σαν ορισμος λάθος.

Τελοςπαντων.... θα πάρω τα αρχεια που έχει βαλει ο σιμος στο git να τα μεταγλωτισω για
να τεσταρω και εγω το προγραμμα σου.... έχετε καποια ιδιαιτερη προτιμηση σε αρχειο που θα χρησιμοποιησω?
Πιο συγκεκριμενα τι μεγεθος να ειναι και τι ειδους (επειδη ως τωρα απο οσο ειδα εχουν ηδη γινει καποιες δοκιμες
αρα μην ξανακανουμε τις ιδιες) !
Γνώσεις ⇛ 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:10

Star_Light έγραψε:@migf1 το λεει σωστα η ελληνικη γιατι εγω την ειχα διορθωσει τον ΟΚτωβριο :lol: :lol: :lol:
παλια ελεγε πως μια MAC ειναι ενας 16-δικος που ειναι σαν ορισμος λάθος.

Δεν είναι λάθος, αλλά είσαι ωραίος που το γράφεις πιο αναλυτικά ! :)

έγραψε:
Τελοςπαντων.... θα πάρω τα αρχεια που έχει βαλει ο σιμος στο git να τα μεταγλωτισω για
να τεσταρω και εγω το προγραμμα σου.... έχετε καποια ιδιαιτερη προτιμηση σε αρχειο που θα χρησιμοποιησω?
Πιο συγκεκριμενα τι μεγεθος να ειναι και τι ειδους (επειδη ως τωρα απο οσο ειδα εχουν ηδη γινει καποιες δοκιμες
αρα μην ξανακανουμε τις ιδιες) !

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

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

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

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