διαγραφή αρχείων σε samba - δημιουργία κάδου απορριμάτων σε client-pc
καλησπέρα σε όλους! 
θα ήθελα την βοήθεια σας σχετικά με την δημιουργία κάδου απορριμάτων σε samba καθώς σήμερα εκ παραδρομής διέγραψα αρχεία του file server μέσω του client pc μου με αποτέλεσμα να τα χάσω. 
πάλι καλά που είχα backup. 
δοκίμασα να το σετάρω μόνος (τζίφος η υπόθεση) εγκαθιστώντας τα …
δυστυχώς δεν μπόρεσα να τα καταφέρω,θα ξαναπροσπαθήσω σε δεύτερο χρόνο. 
εύχαριστώ όλους όσους βοήθησαν!
Όταν είχα ανάγκη να γράψω μια εφαρμογή με ένα μοντέλο πελάτη-εξυπηρετητή, όπου οι πελάτες θα μπορούσαν να φύγουν και να εισάγετε όποτε θέλουν, (υποθέτω ότι είναι επίσης η περίπτωση για την εφαρμογή σας, όπως εσείς χρησιμοποιείτε φορητές συσκευές) που φρόντισε ώστε οι πελάτες να στείλετε ένα *σε απευθείας σύνδεση* μήνυμα στο διακομιστή, αναφέροντας ότι έχουν συνδεθεί και είναι έτοιμη να κάνει ό, τι χρειάζεται να κάνει.


εκείνη τη στιγμή ο server θα μπορούσε να στείλει μηνύματα πίσω στον πελάτη γούρνα την ίδια ανοικτή σύνδεση.


Επίσης, αλλά δεν ξέρω αν αυτό ισχύει για εσάς, είχα κάποια *αρρυθμία* οι πελάτες που αποστέλλονται στο διακομιστή, αφήνοντας το γνωρίζουν ακόμα ότι ήταν σε απευθείας σύνδεση. Με αυτόν τον τρόπο ο server ξέρει πότε ένας πελάτης ήταν βίαια αποσυνδεθεί από το δίκτυο και θα μπορούσε να σηματοδοτήσει ότι πελάτη πίσω και offline. Δεν μπορείτε, αυτή η πληροφορία δεν αποστέλλεται στο διακομιστή για προφανείς λόγους ασφαλείας. Μόνο το όνομα του αρχείου που αποστέλλεται στο διακομιστή. Έτσι, δεν μπορείτε να αποθηκεύσετε τη φυσική διαδρομή όπου βρίσκεται το αρχείο προέρχεται από το μηχάνημα του πελάτη στον κεντρικό υπολογιστή σας. Διακλάδωση σε ανατροπή διευκολύνεται από ένα πολύ πολύ ελαφριά και αποτελεσματική εγκατάσταση αντιγραφή.


Διακλάδωση και tagging είναι ουσιαστικά η ίδια. Απλά αντιγράψτε ολόκληρο το φάκελο στο χώρο αποθήκευσης κάπου αλλού στο αποθετήριο χρησιμοποιώντας την `svn copy`εντολή.


Βασικά, αυτό σημαίνει ότι είναι κατά συνθήκη τι αντιγραφή ενός φακέλου σημαίνει - είτε πρόκειται για ένα αντίγραφο ασφαλείας, ετικέτα, υποκατάστημα ή whater. Ανάλογα με το πώς θέλετε να σκεφτείτε για τα πράγματα (συνήθως ανάλογα με το ποιο εργαλείο SCM έχετε χρησιμοποιήσει στο παρελθόν) θα πρέπει να δημιουργηθεί μια δομή φάκελο μέσα αποθήκευσης σας για να υποστηρίξει το στυλ σας.


Κοινή στυλ είναι να έχουμε ένα σωρό φακέλους στην κορυφή του χώρου αποθήκευσης σας ονομάζεται `tags`, `branches`, `trunk`, κλπ - που σας επιτρέπει να αντιγράψετε όλη σας `trunk`(ή υπο-ομάδες) στους `tags`ή / και `branches`φακέλους. Αν έχετε περισσότερα από ένα έργο μπορεί να θέλετε να αναπαράγουν αυτό το είδος της δομής κάτω από κάθε έργου:


Μπορεί να πάρει λίγο χρόνο για να συνηθίσουν στην ιδέα - αλλά δουλεύει - απλά φροντίστε να (και την ομάδα σας) είναι σαφείς σχετικά με τις συμβάσεις που πρόκειται να χρησιμοποιήσετε. Είναι επίσης μια καλή ιδέα να έχουμε μια καλή σύμβαση ονοματοδοσίας - κάτι που εξηγεί γιατί το υποκατάστημα / tag έγινε και κατά πόσο εξακολουθεί να είναι σκόπιμο - να εξετάσει τρόπους κλάδους αρχειοθέτησης που είναι παρωχημένες. Η καλύτερη εξήγηση που έχω δει είναι στο κεφάλαιο 7 των ελεύθερων [Ιδρύματα Προγραμματισμού e-book](http://codebetter.com/karlseguin/2008/06/25/foundations-of-programming-ebook/) .


Βασικά, σε **ΝΕΤ** παρουσιάζεται διαρροή μνήμης όταν τα αντικείμενα αναφοράς τις ρίζες και έτσι δεν μπορεί να σκουπίδια συλλέγονται. Αυτό συμβαίνει κατά λάθος, όταν κρατάτε για τις αναφορές πέρα από το σκοπούμενο πεδίο εφαρμογής.


Θα γνωρίζετε ότι έχετε διαρροές όταν ξεκινάτε να πάρει OutOfMemoryExceptions ή τη χρήση της μνήμης σας ανεβαίνει πέρα από αυτό που θα περίμενε κανείς ( **PerfMon** έχει ωραία μετρητές μνήμης).


Κατανόηση **ΝΕΤ** μοντέλο μνήμης «s είναι ο καλύτερος τρόπος για σας να αποφευχθεί αυτό. Συγκεκριμένα, την κατανόηση του πώς λειτουργεί ο συλλέκτης σκουπιδιών και πώς αναφορές λειτουργούν - και πάλι, σας παραπέμπω στο κεφάλαιο 7 του e-book. Επίσης, να λαμβάνει υπόψη της τις κοινές παγίδες, ίσως τα πιο κοινά είναι τα γεγονότα. Εάν το αντικείμενο **Α** έχει καταχωρηθεί σε μια εκδήλωση στο αντικείμενο **Β** , τότε αντιρρήσεις **Α** θα μείνω μέχρι το αντικείμενο **Β** εξαφανιστεί λόγω **B** κατέχει αναφορά στο **Α** . Η λύση είναι να καταργήσετε τις εκδηλώσεις σας, όταν τελειώσετε.


Φυσικά, ένα καλό προφίλ μνήμης θα σας αφήσει να δείτε το αντικείμενο γραφήματα σας και να εξερευνήσετε το φώλιασμα / αναφορά των αντικειμένων σας για να δείτε πού είναι οι αναφορές προέρχονται από και ποια ρίζα αντικείμενο είναι υπεύθυνος ( [προφίλ μυρμήγκια κόκκινο-πύλη](http://www.red-gate.com/products/ants_memory_profiler/index.htm) , JetBrains dotMemory, [memprofiler](http://memprofiler.com/) είναι πραγματικά καλό επιλογές, ή μπορείτε να χρησιμοποιήσετε το κείμενο-μόνο **WinDbg** και **SOS** , αλλά θα ήθελα να συνιστούμε ένα εμπορικό / οπτική του προϊόντος, εκτός αν είστε ένας πραγματικός γκουρού).


Πιστεύω μη διαχειριζόμενο κώδικα υπόκειται σε τυπικό διαρροές μνήμης, εκτός από το ότι μοιράζονται τις αναφορές που διαχειρίζεται τον συλλέκτη σκουπιδιών. Μπορεί να κάνω λάθος σχετικά με αυτό το τελευταίο σημείο. Υπάρχουν δύο τρόποι για να γίνει αυτό.


1. Χρησιμοποιήστε SQL Server 2005 λειτουργία αντιγραφής, αλλά θα αποτύχει, εάν SQL Agent δεν καταστρέφει ή υπάρχει περιορισμός άδεια - ήθελε κυρίως να γίνει με κοινές φιλοξενία.
2. Χρησιμοποιήστε SQL εφεδρικό διακομιστή / restore: το πρόβλημα είναι συνήθως δεν έχετε πρόσβαση στο σύστημα αρχείων του διακομιστή βάσης δεδομένων με κοινές φιλοξενία.
3. Επαναληπτικές σχήμα βάσης δεδομένων στον server ανάπτυξη, στη συνέχεια, κάντε ένα DTS για τη μεταφορά δεδομένων, μπορείτε να αποθηκεύσετε το πακέτο DTS (το επεξεργαστείτε ακόμα και με το χέρι αν χρειαστεί) και να δημιουργήσει μια προγραμματισμένη εργασία στο μηχάνημα ανάπτυξη, θα συγχρονίζει αυτόματα τη βάση δεδομένων κάθε μέρα, μπορεί δεν είναι σταδιακά, εξαρτάται από τη βάση δεδομένων σας σχέδιο / σχήματος.


η επιλογή 3 φαίνεται να απαιτεί περισσότερη δουλειά, αλλά στην πραγματικότητα είναι εύκολο να δημιουργηθεί και θα σας εξοικονομήσει πολύ χρόνο σε μακροπρόθεσμη βάση.


οποιεσδήποτε άλλες προτάσεις, θα ήθελα να ακούσω πάρα πολύ. Η πρώτη μου επιλογή θα ήταν ένα ειδικό εργαλείο σωρό όπως [pageheap.exe](https://support.microsoft.com/en-us/kb/286470) .


Ξαναγράφοντας νέα και διαγραφή θα μπορούσε να είναι χρήσιμη, αλλά αυτό δεν πιάσει το allocs που διαπράχθηκαν από τον κωδικό χαμηλότερου επιπέδου. Εάν αυτό είναι ό, τι θέλετε, καλύτερα να Detour τα `low-level alloc API`s χρησιμοποιώντας το Microsoft Παρακάμψεις.


Επίσης ελέγχους υγιούς λειτουργίας όπως: επαλήθευση βιβλιοθήκες χρόνου εκτέλεσης σας αγώνα (απελευθέρωση έναντι debug, multi-threaded εναντίον του μονού νήματος, DLL εναντίον στατική lib), αναζητήστε κακή διαγραφές (π.χ., διαγράψτε, όπου delete [] θα έπρεπε να είναι μεταχειρισμένα), βεβαιωθείτε ότι δεν είστε μίξη και το ταίριασμα allocs σας.


Επίσης, προσπαθήστε επιλεκτικά να απενεργοποιήσετε τα θέματα και να δούμε πότε / αν το πρόβλημα πηγαίνει μακριά.


Τι σημαίνει η στοίβα κλήσεων κλπ μοιάζουν κατά το χρόνο της πρώτης εξαίρεση; Ive κατασκευαστεί μόνο 2 εφαρμογές που χρησιμοποιούνται για τον πάροχο προφίλ. Από τότε έχω μείνει μακριά από τη χρήση του. Για δύο από τις εφαρμογές που θα χρησιμοποιηθεί για την αποθήκευση πληροφοριών σχετικά με το χρήστη όπως το όνομα της εταιρείας τους, τη διεύθυνση και τον αριθμό τηλεφώνου.


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


Θα ήθελα να συστήσω την αποθήκευση αυτού του είδους των πληροφοριών στο δικό του πίνακα. HTML θα είναι η επόμενη καλύτερη επιλογή, μόνο αν θα τους εξυπηρετήσει από ένα δημόσιο web server. Αν προσπαθήσει να το συνδυάσει με την εφαρμογή σας, όλα τα αρχεία (και εικόνες (και φύλλων στυλ (και ...))) θα κάνει CHM μοιάζει με ένα δώρο από τους θεούς.


Τούτου λεχθέντος, όταν στην πραγματικότητα στο πακέτο εγκατάστασης, (αντί να εξυπηρετούνται μέσω του δικτύου), βρήκα τα αρχεία CHM να δουλέψουν καλά.


OTOH, μια άλλη παγίδα για τα αρχεία CHM: Ακόμα και αν προσπαθείτε να ανοίξετε ένα αρχείο CHM σε έναν **τοπικό** δίσκο, μπορείτε να χτύπημα σε μπλοκ ασφαλείας, αν κατεβάσει αρχικά από κάπου, επειδή το αρχείο θα μπορούσε να επισημανθεί ως «προήλθε από εξωτερική πηγή» όταν ελήφθη. Τι έχετε να κάνετε είναι το εξής:


1. Κάντε δεξί κλικ στο φάκελο όπου νομίζετε ότι είναι.
2. Επιλέξτε Εμφάνιση Σύνδεση κάτω TortioseSVN
3. Βρείτε το checkin ότι ο φάκελος έχει διαγραφεί στο
4. Πήγαινε κάτω στη λίστα και να βρείτε το αρχείο
5. Επιλέξτε αλλαγές Επαναφορά για αυτή την έκδοση να αναιρέσετε τη διαγραφή. Για τον SQL Server 2005, θα ήθελα να συστήσει τη χρήση μεταβλητών τραπέζι και εν μέρει την οικοδόμηση των δεδομένων καθώς πηγαίνετε. 


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


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


Από εκεί, μετακινηθείτε μέσα από το πίνακα και για κάθε σειρά, κάνει ένα σωρό μικρά SELECT ερωτήματα που ανακτά όλα τα συμπληρωματικά στοιχεία που χρειάζεστε για το σύνολο των αποτελεσμάτων σας. Τοποθετήστε τα σε κάθε στήλη as you go.


Μόλις ολοκληρωθεί, μπορείτε να κάνετε ένα απλό SELECT * από μεταβλητές τραπέζι σας και να επιστρέψετε αυτό το αποτέλεσμα που στο χρήστη.


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