πώς να προφέρει indolent;
in-do-lent
Νομίζω ότι το καλύτερο που μπορείτε να κάνετε σε αυτή την περίπτωση είναι να πάρετε τη συμβολή τους και στη συνέχεια να τους δείξουμε τι νομίζεις ότι σημαίνει. Εάν διαφωνούν, να τους δείξουμε τη μορφή που περιμένουμε και να τους πάρει για να εισέλθετε ξανά. Οι μέθοδοι είναι σύγχρονη από προεπιλογή. Για να τους κάνουν ασύγχρονη, θα πρέπει να προσθέσετε αυτό το χαρακτηριστικό [OperationContract (AsyncPattern = true)] και να επιστρέψει ένα IAsynchResult, όπως ακριβώς θα κάνατε αν ήσασταν κάνει BeginIvoke () με WinForms. (διαβάστε περισσότερα εδώ <http://msdn.microsoft.com/en-us/library/ms734701.aspx> )


Μπορείτε να κάνετε δημοσιεύσεων / συνδρομών με κάτι που ονομάζεται επανάκλησης Συμβόλαιο (αν im δεν είναι σίγουρος για την εφαρμογή αυτή σε άλλες πλατφόρμες) Δεν έχω μεγάλη εμπειρία με αυτά, αλλά δεν φαίνεται εξαιρετικά complected (μπορείτε να διαβάσετε περισσότερα εδώ [http: //dotnetaddict.dotnetdevelopersjournal.com/wcf\_alarmclock.htm](http://dotnetaddict.dotnetdevelopersjournal.com/wcf_alarmclock.htm) ) Η προφορά στα μαθήματα είναι αμερικανική. Η αλήθεια είναι ότι για τις διάφορες γλώσσες του Duolingo όπου οι ηχογραφήσεις είναι τεχνητές, από λογισμικό και όχι από άνθρωπο, δεν είναι πάντα και οι καλύτερες. Παρ' όλα αυτά οι εκφωνήσεις της αγγλικής φωνής είναι ακριβείς και ως επί το πλείστον ακούγονται φυσιολογικές, όπως όταν μιλάς με κάποιον που έχει τα αγγλικά ως μητρική του γλώσσα. Αυτό μάλλον κάνει τα πράγματα δύσκολα, γιατί οι δάσκαλοι συνήθως ευκολοποιούν τα πράγματα για τους αρχάριους μαθητές.


Προσωπικά, για την προφορά ολόκληρων φράσεων, χρησιμοποιώ επίσης το παρακάτω site: [www.acapela-group.com](http://www.acapela-group.com) Έχει πραγματικές και τεχνητές φωνές, με διαφορετικές προφορές, και εκεί φαίνεται καλύτερα πώς ακούγονται οι λέξεις στην κανονική ομιλία, κάτι που ένα λεξικό δεν μπορεί να αποδώσει.


Επίσης, μία μικρή παρατήρηση: γενικά οι αναρτήσεις με κεφαλαία στο ίντερνετ θεωρούνται το αντίστοιχο του "βάζω τις φωνές", κατά συνέπεια μία μίξη πεζών και κεφαλαίων μπορεί να αποφύγει πιθανές παρεξηγήσεις. :) Η προτιμώμενη μέθοδος είναι να χρησιμοποιήσετε πραγματικά την ιδιότητα υπό όρους για να τυλίξει τις κλήσεις εντοπισμού σφαλμάτων σας, μην χρησιμοποιήσετε τις οδηγίες μεταγλωττιστή. #ifs μπορεί να πάρει δύσκολες και μπορεί να οδηγήσει σε περίεργα προβλήματα κατασκευής.


Ένα παράδειγμα της χρήσης ενός υπό όρους χαρακτηριστικό είναι η εξής (σε C #, αλλά λειτουργεί σε VB.NET πολύ):



```
[ Conditional("Debug") ]
private void WriteDebug(string debugString)
{
  // do stuff
}

```

Κατά τη μεταγλώττιση, χωρίς το σετ σημαία DEBUG, κάθε κλήση προς WriteDebug θα καταργηθούν όπως υποτίθεται συνέβαινε με Debug.Write (). Χρησιμοποιούμε [MbUnit](http://www.mbunit.com/) και [Rihno χλευάζει](http://www.ayende.com/Blog/archive/2007/03/28/Rhino-Mocks-3.0-Released.aspx) και να αποδειχθεί ότι λειτουργεί πολύ καλά μαζί. Όταν κάνετε TDD θα πρέπει σχεδόν σίγουρα να κάνετε κάποια μορφή ένεσης εξάρτησης, ενώ αυτό μπορεί να γίνει με το χέρι, την αξία του κοιτάζοντας ένα δοχείο ΔΟΕ, όπως [το Κάστρο του Windsor](http://www.castleproject.org/projects/windsor/) .


Είναι καλά αξίζει κοιτάζοντας την οθόνη του Ιωάννη Παύλου Bodhood του ρίχνει για να ξεκινήσετε. [Blog JPB του](http://www.jpboodhoo.com/) LinkDemand απαιτεί ουσιαστικά τον κωδικό κλήσης για να έχουν το συγκεκριμένο δικαίωμα. Η ζήτηση, από την άλλη πλευρά, απαιτεί όχι μόνο την κλήση κώδικα για να έχουν το συγκεκριμένο δικαίωμα, αλλά και τον κώδικα που ονομάζεται τον κωδικό κλήσης και τον κωδικό που ονομάζεται ότι, και ούτω καθεξής, σε όλη τη διαδρομή μέχρι τη στοίβα (ή μέχρις ότου assert βρίσκεται? βλέπε παρακάτω).


LinkDemand μπορεί να επιβληθεί σε ΚΟΕ χρόνο μεταγλώττισης, γιατί αν το πρόγραμμα μεταγλώττισης JIT χτυπά μια δήλωση που καλεί μια μέθοδο με LinkDemand, μπορεί να προσδιορίσει αμέσως αν ο κωδικός κλήσης έχει την άδεια ή όχι. Η ζήτηση πρέπει να εφαρμοστεί κατά το χρόνο εκτέλεσης κάθε φορά που μια κλήση γίνεται με τη μέθοδο, επειδή δεν είναι δυνατή κατά τη μεταγλώττιση για να ξέρετε τι θα είναι στη στοίβα κατά τη διάρκεια οποιαδήποτε πρόσκληση. Ως εκ τούτου, LinkDemand είναι πολύ πιο αποδοτική. Ωστόσο, η αντίστροφη σχέση για την εν λόγω απόδοση είναι λιγότερη ασφάλεια. Με LinkDemand, που πιστεύοντας ότι ο κωδικός κλήσης δεν πρόκειται να αφήσει ΤΗΣ κωδικός κλήσης (που μπορεί ή δεν μπορεί να έχει την άδεια) να το χρησιμοποιήσετε για φαύλους σκοπούς. (Με άλλα λόγια, έχουν εμπιστοσύνη ότι δεν υπάρχουν τρύπες ασφαλείας στον κώδικα κλήσης που καλούντες του μπορεί να εκμεταλλευτεί για να αποκτήσουν πρόσβαση έμμεσα με τη μέθοδο με την LinkDemand.) Με τη ζήτηση, ξέρετε ότι όλοι στη στοίβα έχει καμία απολύτως άδεια (σε τουλάχιστον μέχρι ενός Assert βρεθεί), οπότε δεν υπάρχει κίνδυνος από μη αξιόπιστες καλούντες.


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


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


PermitOnly είναι σαν Deny, εκτός αντί να αρνείται μια ειδική άδεια αρνείται κάθε δικαίωμα, εκτός από εκείνη που καθορίζεται.


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


1. Διαβάστε στο κορδόνι
	* Χωρίστε το string σε μάρκες
	* Χρησιμοποιήστε ένα λεξικό για να μετατρέψετε τα συνώνυμα σε μια κοινή μορφή
	* Για παράδειγμα, μετατροπή «χτύπησε», «γροθιά», «απεργία», και «κλωτσιά» όλα για να «χτυπήσει»
	* Εκτελέστε ενέργειες σε ένα μη διατεταγμένο, χωρίς αποκλεισμούς βάση
	* **Μη αριθμημένη** - «γροθιά τον πίθηκο στο πρόσωπο» είναι το ίδιο πράγμα όπως «το πρόσωπο στο γροθιά μαϊμού»
	* **Inclusive** - Εάν η εντολή είναι υποτίθεται ότι είναι «γροθιά τον πίθηκο στο πρόσωπο» και παρέχουν «μαϊμού γροθιά», θα πρέπει να ελέγξετε πόσες εντολές αυτή ταιριάζει. Εάν μόνο μία εντολή, να κάνει αυτή την ενέργεια. Θα μπορούσε ακόμη και να είναι μια καλή ιδέα να έχουμε προτεραιότητες εντολή, ακόμη και αν υπήρχαν ακόμη αγώνες, θα εκτελέσει την κορυφή δράση. SetForegroundWindow υποτίθεται ότι θα κλέψει την εστίαση και υπάρχουν ορισμένες περιπτώσεις όπου θα αποτύχει.



> 
> Η λειτουργία SetForegroundWindow βάζει το νήμα που δημιούργησε το καθορισμένο παράθυρο στο προσκήνιο και ενεργοποιεί το παράθυρο. εισαγωγής πληκτρολογίου κατευθύνεται προς το παράθυρο
> 
> 
> 


Δοκιμάστε τη λήψη της εστίασης με [SetCapture](http://msdn.microsoft.com/en-us/library/ms646262.aspx) πριν από την πραγματοποίηση της κλήσης. Επίσης εξετάσουμε διαφορετικούς τρόπους να φέρει το παράθυρο προς τα εμπρός: SetForeGroundWindow, SetActiveWindow, ακόμη και προσομοίωση ένα κλικ του ποντικιού μπορείτε να το κάνετε αυτό. <p><strong> συνολικά: </strong></p><p>τόσο το put όσο και το post μπορούν να χρησιμοποιηθούν για τη δημιουργία.</p><p>πρέπει να ρωτήσετε "σε τι εκτελείτε τη δράση;" να διακρίνετε τι πρέπει να χρησιμοποιείτε. ας υποθέσουμε ότι σχεδιάζετε ένα api για να κάνετε ερωτήσεις. εάν θέλετε να χρησιμοποιήσετε το post τότε θα το κάνετε σε μια λίστα ερωτήσεων. εάν θέλετε να χρησιμοποιήσετε το put τότε θα το κάνετε αυτό σε μια συγκεκριμένη ερώτηση.</p><p><strong> μεγάλη και οι δύο μπορούν να χρησιμοποιηθούν, έτσι ποιο πρέπει να χρησιμοποιήσω στο restful σχεδιασμό μου: </strong></p><p>δεν χρειάζεται να υποστηρίζετε τόσο το put όσο και το post.</p><p>το οποίο χρησιμοποιείται παραμένει στο χέρι σας. αλλά θυμηθείτε να χρησιμοποιήσετε το σωστό, ανάλογα με το αντικείμενο που αναφέρετε στο αίτημα.</p><p>μερικές σκέψεις:</p><ul> <li>ονομάζετε ρητά τα αντικείμενα url που δημιουργείτε ή αφήστε το διακομιστή να αποφασίσει; εάν τους ονομάσετε τότε χρησιμοποιήστε put. εάν αφήσετε τον διακομιστή να αποφασίσει στη συνέχεια, χρησιμοποιήστε το post.</li> <li>put είναι idempotent, οπότε αν put ένα αντικείμενο δύο φορές, δεν έχει καμία επίδραση. αυτή είναι μια ιδιοκτησία της νίκαιας, οπότε θα μπορούσα να χρησιμοποιήσω το put όταν ήταν δυνατόν.</li> <li>μπορείτε να ενημερώσετε ή να δημιουργήσετε έναν πόρο με put με την ίδια διεύθυνση url αντικειμένου</li> <li>με το post μπορείτε να έχετε 2 αιτήματα που εισέρχονται ταυτόχρονα για τροποποιήσεις σε μια διεύθυνση url και μπορεί να ενημερώσουν διαφορετικά μέρη του αντικειμένου.</li> </ul><p><strong> ένα παράδειγμα: </strong></p><p> <a href="https://stackoverflow.com/questions/256349/what-are-the-best-common-restful-url-verbs-and-actions/256359#256359">έγραψα τα εξής ως μέρος μιας άλλης απάντησης σχετικά με το so</a> :</p><blockquote> <p><strong> post: </strong></p> <p>χρησιμοποιείται για την τροποποίηση και την ενημέρωση ενός πόρου</p> <pre><code>post /questions/&lt;existing\_question&gt; http/1.1 host: www.example.com/ </code></pre> <p>σημειώστε ότι το ακόλουθο είναι ένα σφάλμα:</p> <pre><code>post /questions/&lt;new\_question&gt; http/1.1 host: www.example.com/ </code></pre> <p>εάν η διεύθυνση url δεν έχει δημιουργηθεί ακόμη, δεν θα πρέπει να χρησιμοποιείτε το post για να το δημιουργήσετε ενώ καθορίζετε το όνομα. αυτό θα πρέπει να έχει ως αποτέλεσμα ένα σφάλμα 'πόρος δεν βρέθηκε' επειδή το <code>&lt;new\_question&gt;</code> δεν υπάρχει ακόμα. πρέπει πρώτα να τοποθετήσετε τον πόρο <code>&lt;new\_question&gt;</code> στον διακομιστή.</p> <p>θα μπορούσατε όμως να κάνετε κάτι τέτοιο για να δημιουργήσετε πόρους χρησιμοποιώντας post:</p> <pre><code>post /questions http/1.1 host: www.example.com/ </code></pre> <p>σημειώστε ότι σε αυτήν την περίπτωση το όνομα του πόρου δεν έχει καθοριστεί, η διαδρομή url των νέων αντικειμένων θα σας επιστραφεί.</p> <p><strong> σημειωση: </strong></p> <p>χρησιμοποιείται για τη δημιουργία ενός πόρου ή για την αντικατάστασή του. ενώ ορίσετε τους πόρους νέα διεύθυνση url.</p> <p>για έναν νέο πόρο:</p> <pre><code>put /questions/&lt;new\_question&gt; http/1.1 host: www.example.com/ </code></pre> <p>για να αντικαταστήσετε μια υπάρχουσα πηγή:</p> <pre><code>put /questions/&lt;existing\_question&gt; http/1.1 host: www.example.com/ </code></pre></blockquote> Αν χρησιμοποιείτε τάξεις Objective-C, τότε η `[myObject isKindOfClass: [InterestingClass class]]`δοκιμή είναι διαθέσιμη. Αν χρησιμοποιείτε πρωτόγονων τύπων (η οποία ερώτησή σας, αναφέροντας το «διπλό» τύπου, προτείνει), τότε δεν μπορείτε. Ωστόσο, αν κάνετε κάποια πολύ funky πράγματα, ο compiler μπορεί να σας πει πότε πρωτόγονων τύπων ή δεν ταιριάζουν, και όταν δεν θα εκτελέσει έμμεση προώθηση στο επιθυμητό τύπο.


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