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

Ilias95

Members
  • ΜΗΝΥΜΑΤΑ FORUM

    653
  • ΜΕΛΟΣ

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

Πληροφορίες προφίλ

  • Φύλο
    Άνδρας

Πρόσφατες Επισκέψεις

Η εμφάνιση επισκεπτών είναι απενεργοποιημένη ή δεν έχετε πρόσβαση σε αυτή.

Ilias95's Achievements

  1. Αν δεν θες να έχεις relationships κτλ η LMDB είναι μια απλή και πολύ γρήγορη key-value database. Το εκτελέσιμο της είναι κάτω από 40KB αν θυμάμαι καλά και χωράει ολόκληρη σε μια L1 CPU cache. Ολόκληρη η βάση (aka όλοι οι πίνακες/δέντρα) αποθηκεύονται σε ένα single αρχείο. Με ένα γρήγορο googlάρισμα βλέπω ότι υπάρχουν wrappers για .NET οπότε θα μπορούσες να δοκιμάσεις αν σου κάνει.
  2. Άρα εννοείς backup. Πάντως και desktop εφαρμογή να κάνεις, μπορείς (πρέπει!) απλά να έχεις ένα καλό backup plan. Για το GDPR δεν έχω ιδέα πρέπει να ρωτήσεις κάποιον που να ξέρει. Μπορεί να λέω και βλακείες.
  3. Αυτά τα δύο που έκανα bold δεν θα έπρεπε να βρίσκονται στην ίδια πρόταση αλλιώς κοροϊδεύεις ή τον πελάτη ή τον εαυτό σου. Κατά τα άλλα δεν έχω άποψη. Good luck! Edit: Και μιας και μιλάμε για δεδομένα πελατών, πρέπει να λάβεις υπόψιν σου GDPR κτλ.
  4. <dm> I discovered that you'd never get an answer to a problem from Linux Gurus by asking. You have to troll in order for someone to help you with a Linux problem. <dm> For example, I didn't know how to find files by contents and the man pages were way too confusing. What did I do? I knew from experience that if I just asked, I'd be told to read the man pages even though it was too hard for me. <dm> Instead, I did what works. Trolling. By stating that Linux sucked because it was so hard to find a file compared to Windows, I got every self-described Linux Guru around the world coming to my aid. They gave me examples after examples of different ways to do it. All this in order to prove to everyone that Linux was better. * ion has quit IRC (Ping timeout) <dm> brings a tear to my eye... :') so true.. <dm> So if you're starting out Linux, I advise you to use the same method as I did to get help. Start the sentence with "Linux is gay because it can't do XXX like Windows can". You will have PhDs running to tell you how to solve your problems. <dm> this person must be a kindred spirit of mine http://bash.org/?152037
  5. Το buffer είναι array. Η C έχει arrays και οι δείκτες δεν είναι arrays. Περισσότερα σχετικά με το τελευταίο γράφτηκαν σε αυτό το θέμα: https://www.insomnia.gr/forums/topic/640136-c-συνάρτιση-και-κλήση-από-main/ Edit: Αν εννοείς το πέρασμα σαν παράμετρος στις συναρτήσεις, τότε σε αυτή την περίπτωση αυτό που περνιέται είναι ένας pointer στο πρώτο στοιχείο του array.
  6. Δηλαδή σαν τι ζημιά μπορεί να κάνει στον υπολογιστή του; Πώς ακριβώς θα πάρει την CPU στο χέρι;
  7. Αν αντί για char onoma[]="Thodoris" είχες γράψει char *onoma="Thodoris" τότε το string literal "Thodoris" θα υπήρχε αυτούσιο σε κάποιο section του binary και όταν φόρτωνες το πρόγραμμα θα γινόταν map στη μνήμη σαν read-only. Η διαφορά οπότε είναι ότι θα ήταν non-modifiable. PS. Έτσι όπως το έγραψες το "Thodoris" δεν είναι string literal αλλά array initializer και άρα δεν ισχύει αυτό που γράφω παραπάνω.
  8. Ένα άλλο ενδιαφέρον σημείο στο οποίο εμμέσως αναφέρθηκε και ο imitheos είναι όταν περνάς ένα 2-D array σε function. Το: void foo(int x[][3]); ΔΕΝ γίνεται να αντικατασταθεί με: void foo(int **x); Η απάντηση στο γιατί βρίσκεται εδώ: http://c-faq.com/aryptr/pass2dary.html
  9. Έγραψες και μετά το έσβησες ότι "πάντα γίνεται decayed σε pointer". Προφανώς και δεν ισχύει αυτό. Αυτό που σου έδειξα με το sizeof είναι ακριβώς ένα παράδειγμα του πότε δεν γίνεται. Αν γινόταν τότε το sizeof(array) θα ήταν πάντα == sizeof(void *). Το sizeof(&arr) δεν ξέρω που κολλάει πραγματικά. Εδώ ζητάς explicitly έναν pointer και τον συγκρίνεις με έναν άλλον pointer. Προφανώς και θα έχουν το ίδιο size αλλά τι σχέση έχει αυτό; Όχι δεν το ήξερα. Καλά που ήρθες και μου το είπες. Επίσης μάντεψε τι. Μπορείς να γράψεις int *p = 0xabcd; αλλά δεν μπορείς να γράψεις int arr[] = 0xabcd; Γιατί το arr δεν είναι pointer. Γενικά μπορείς να ισχυρίζεσαι και να υποστηρίζεις ότι θες. Αυτό που ισχύει όμως είναι ότι arrays != pointers και ότι array μέσα από function δεν μπορείς να επιστρέψεις. @marios28 Το 1) σου είναι σωστό αλλά και τα δύο είναι pointers. Όχι arrays. Τα formal parameters ενός function είναι το μόνο σημείο στο οποίο ισχύει ότι int * == int [ ]. Στο 2) επιστρέφεις έναν pointer σε int. Δεν επιστρέφεις array. Τα δεδομένα στα οποία δείχνει ο pointer αποφασίζεις μετά να τα κάνεις interpret σαν array of ints (για το οποίο "array" δεν ξέρεις καν το size για να το κάνεις iterate). Cool.
  10. @Fortistis Ναι, το α και το β είναι διαφορετικά μεταξύ τους. Ο compiler "δεν κάνει evaluate το [] σε pointer" όπως λες. Αυτό που γίνεται όταν χρειάζεται σε κάποια context είναι το όνομα του array να γίνεται decayed σε έναν pointer που δείχνει στο πρώτο στοιχείο. Γενικά επειδή αφήνεις να εννοηθεί συνέχεια ότι arrays και pointers είναι το ίδιο πράγμα, εδώ είναι μερικά παραδείγματα που μπορώ να σκεφτώ πρόχειρα: int arr[] = {1, 2, 3}; // LEGAL int *p = {1, 2, 3}; // ILLEGAL int *p = arr; p = 0xabcd; // reassignment is LEGAL int arr[] = {1, 2, 3}; arr = 0xabcd; // reassignment is ILLEGAL sizeof(arr) != sizeof(p) Bonus: το arr and το &arr ΔΕΝ είναι το ίδιο πράγμα. Ξέρεις γιατί; Γιατί έχουν άλλο τύπο. C 101: ARRAYS ARE NOT POINTERS
  11. Εντάξει, είναι προφανές ότι απλά θέλεις να έχεις δίκιο. Όχι. Ο μόνος λόγος που δεν μπορείς να επιστρέψεις array από function στη C είναι γιατί έτσι αποφάσισαν οι language designers. Θα μπορούσαν κάλλιστα να είχαν αποφασίσει να γίνεται. Όπως αποφάσισαν για τα structs. Γιατί structs μπορείς να επιστρέψεις. Arrays όμως όχι. Δεν είναι σωστό επειδή ... το λες εσύ. Οκ... Από περιέργεια googlαρε "C can I return array from function?" και διάβασε τις απαντήσεις για να μη νομίσεις ότι τα βγάζουμε από το μυαλό μας. Δεν ξέρω αν το κατάλαβες αλλά αυτό που ήρθες και έγραψες σε αυτό το thread ουσιαστικά ήταν "στην C μπορείς να επιστρέψεις pointer από μια συνάρτηση". Ευχαριστούμε δεν το ξέραμε...
  12. Έτσι μου φάνηκε από το ύφος σου, αν κατάλαβα λάθος ζητώ συγγνώμη. Κανείς δεν είπε ότι δεν μπορείς να επιστρέψεις έναν pointer σε οποιαδήποτε virtual διεύθυνση μνήμης θες. Και κανείς δεν είπε ότι τα δεδομένα που βρίσκονται σε αυτή τη διεύθυνση μνήμης δεν μπορείς να τα κάνεις interpret σαν array ή σαν struct ή σαν οτιδήποτε άλλο θες! Αυτό που γράφτηκε παραπάνω είναι ότι δεν μπορείς να επιστρέψεις array από function. Και έτσι είναι, τι να κάνουμε; Να αλλάξουμε το specification και τους compilers; int [] foo(void); // ILLEGAL struct bar foo(void); // LEGAL Στην C μπορείς να επιστρέψεις από μια συνάρτηση ints, chars, pointers, structs και άλλα πράγματα. Arrays ΔΕΝ μπορείς να επιστρέψεις. Στην C τα arrays δεν είναι first class citizens! Στην Java που είναι first class citizens μπορείς να γράψεις: int [] foo(); // LEGAL Τώρα αυτό είναι διαφορετική ερώτηση. Αν πραγματικά δεν ξέρεις τότε googlαρε.
  13. Common sense. Δεν χρειάζεται να αρπαζόμαστε όμως. Κουβέντα κάνουμε. Αυτό που έγραψε είναι σωστό. Στην C δεν μπορείς να επιστρέψεις array από συνάρτηση.
  14. Προφανώς εννοεί ότι δεν μπορείς να επιστρέψεις ένα copy του array, όταν από την άλλη μπορείς να επιστρέψεις ένα copy ενός struct.
  • Δημιουργία νέου...