Ερωτηση



Ποτε χρησιμοποιούμε το I have to ? και Ποτε το I need to ?
Όταν θέλεις να εκφράσεις ακριβώς αυτό που εννοούν τα συγκεκριμένα ρήματα : "I have to" = "Έχω να (κάνω κάτι)" δηλ. όταν μου επιτάσσεται/επιβάλλεται να (κάνω κάτι), "Ι have to go to work", συνώνυμο με το "I must " = "Πρέπει (να)".


"I need to" = "Μου είναι αναγκαίο να (κάνω κάτι)" , "I need to drink some water".
<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> LinkDemand απαιτεί ουσιαστικά τον κωδικό κλήσης για να έχουν το συγκεκριμένο δικαίωμα. Η ζήτηση, από την άλλη πλευρά, απαιτεί όχι μόνο την κλήση κώδικα για να έχουν το συγκεκριμένο δικαίωμα, αλλά και τον κώδικα που ονομάζεται τον κωδικό κλήσης και τον κωδικό που ονομάζεται ότι, και ούτω καθεξής, σε όλη τη διαδρομή μέχρι τη στοίβα (ή μέχρις ότου assert βρίσκεται? βλέπε παρακάτω).


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


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


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


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


InheritanceDemand, σε αντίθεση με τους άλλους, δεν σχετίζεται άμεσα με τη μέθοδο κλήσεις, αλλά λέει ότι μια κατηγορία που δεν έχει την άδεια, δεν μπορεί να κληρονομήσει από την τάξη με το InheritanceDemand. Αυτό θα μπορούσε να χρησιμοποιηθεί, για παράδειγμα, να σταματήσει να μη αξιόπιστο κώδικα από το να αποκτήσουν πρόσβαση σε προστατευόμενα μέλη της κατηγορίας που διαφορετικά θα ήταν προσβάσιμη σε απόγονος τάξεις. Χρησιμοποιούμε [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/) τα εισαγωγικά είναι απαραίτητα όταν το όνομα περιέχει κενά. το static όνομα δεν πρέπει να περιέχει κενά, οπότε δεν είναι απαραίτητο.

σε ένα ποιο πολύπλοκο παράδειγμα

[image]

βάζω και τα δύο ονόματα και το static και το pretty, δες πως το πρώτο δεν έχει κενά. εδώ τα εισαγωγικά είναι απαραίτητα, ώσ… τι ανάγκες σε νερό ανά ώρα έχει ένα κομμωτήριο?. εγώ δεν ξέρω αλλά όσες και να είναι ξεκινάμε με την ερώτηση τι θα χρησιμοποιήσουμε? ηλεκτρισμό υγραέριο πετρέλαιο ξύλα? κλπ. αν έχουμε ηλεκτρισμό πχ τριφασικό βάζουμε ταχυθερμοσίφωνα έναν ή περισσότερους. αν δεν έχουμε τριφασικό , βάζουμε ηλεκτρικό θερμοσίφωνα έναν ή περισσότερους που θα τους διατηρούμε ζεστούς ανάβοντας τους διαδοχικά σε περίπτωση που δεν καλύπτει τις ανάγκες μας ένας . αν έχουμε υγραέριο ή φυσικό αέριο πάλι βάζουμε ταχυθερμοσίφωνα κλπ . από την στιγμή που καλύψουμε την ανάγκη, η οικονομία έρχεται περισσότερο από την προσεκτική χρήση παρά από το είδος θέρμανσης δεδομένου ότι ο ηλεκτρικός θερμοσίφωνας έχει κάποιες απώλειες σε σχέση με τον ταχυθερμοσίφωνα αλλά σε ένα χώρο με καθημερινή χρήση η απώλεια περιορίζεται στο νερό που θα παραμείνει το σαββατοκύριακο μέχρι την δευτέρα και θα έχει χάσει κάποια θερμότητα αν το έχετε αφήσει ζεστό. τώρα αν έχετε έναν πχ ξυλολέβητα λόγω φτηνού ξύλου τότε και κάποιες απώλειες θα είναι υποφερτές από το χαμηλό κόστος του ξύλου ως καύσιμο. τρουλλινός γιώργος , υδραυλικός , αθήνα , αττική , 6932860310. Αν χρησιμοποιείτε τάξεις Objective-C, τότε η `[myObject isKindOfClass: [InterestingClass class]]`δοκιμή είναι διαθέσιμη. Αν χρησιμοποιείτε πρωτόγονων τύπων (η οποία ερώτησή σας, αναφέροντας το «διπλό» τύπου, προτείνει), τότε δεν μπορείτε. Ωστόσο, αν κάνετε κάποια πολύ funky πράγματα, ο compiler μπορεί να σας πει πότε πρωτόγονων τύπων ή δεν ταιριάζουν, και όταν δεν θα εκτελέσει έμμεση προώθηση στο επιθυμητό τύπο.


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

read -p "are you sure? " -n 1 -r

echo # (optional) move to a new line

if [[ ! $reply =~ ^[yy]$ ]]

then

echo -ne "\ncancelled\n"

exit 1

fi

echo -ne "\n"

το μυστικό είναι η κανονική έκφραση (regular experssion) '^[y… Η προτιμώμενη μέθοδος είναι να χρησιμοποιήσετε πραγματικά την ιδιότητα υπό όρους για να τυλίξει τις κλήσεις εντοπισμού σφαλμάτων σας, μην χρησιμοποιήσετε τις οδηγίες μεταγλωττιστή. #ifs μπορεί να πάρει δύσκολες και μπορεί να οδηγήσει σε περίεργα προβλήματα κατασκευής.


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



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

```

Κατά τη μεταγλώττιση, χωρίς το σετ σημαία DEBUG, κάθε κλήση προς WriteDebug θα καταργηθούν όπως υποτίθεται συνέβαινε με Debug.Write (). Νομίζω ότι το καλύτερο που μπορείτε να κάνετε σε αυτή την περίπτωση είναι να πάρετε τη συμβολή τους και στη συνέχεια να τους δείξουμε τι νομίζεις ότι σημαίνει. Εάν διαφωνούν, να τους δείξουμε τη μορφή που περιμένουμε και να τους πάρει για να εισέλθετε ξανά. Υποθέτω ότι προσπαθείτε να κάνετε το περιβάλλον εντολή ως επιεικής δυνατόν. Αν αυτή είναι η περίπτωση, σας προτείνω να χρησιμοποιήσετε έναν αλγόριθμο παρόμοιο με αυτό:


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