Ένα κομμάτι της συναρμολόγησης
Αφού διαβάσετε αυτό το άρθρο για το κλείδωμα χωρίς εφεδρείες και βλέποντας τη χρήση του CAS (σύγκριση και ανταλλαγή), ένιωσα σαν απόσπαση τον κωδικό της Συνέλευσης να πράξει το ίδιο. Χρησιμοποιήστε περίπτωση πάνω ήταν εκεί για να γράψει μια εγγενή μέθοδο και να το ονομάσουμε από την Ιάβα (πίσω στο 1,5, όταν ταυτόχρονη δομές δεδομένων σε Java ήταν περισσότερο ή λιγότερο ανύπαρκτη). Χωρίς άλλη καθυστέρηση, θα απελευθερώσει τον κωδικό σας επάνω
. Πρώτη είναι για το CAS και το δεύτερο είναι για την πληροφορική GCD χρησιμοποιώντας τον αλγόριθμο του Ευκλείδη (αυτό μπορεί να βρεθεί σε πολλά μέρη και σεμινάρια, όπως επίσης).
Μεταγλωττίστε και εκτελέστε τις οδηγίες gcc file_name.c ; ./a.out
Συγκρίνετε και Εναλλαγ
# Include# Include / / Ανταλλαγή - newvalue, comperand είναι παλιά / αναμενόμενη τιμή / * * Λειτουργία κάνει πραγματικότητα τα εξής πράγμα - αν η τιμή στο dest * είναι ίση με OldValue στη συνέχεια να την αντικαταστήσει με άλλο newvalue αφήσει αμετάβλητη: όλα αυτά δεν atomically * * Υπάρχουν δύο επιλογές για την τιμή επιστροφής * 1.is αρχική αξία του dest * και αφήστε το βάρος της καλώντας fxn να το συγκρίνουμε με oldval * 2. το κάνουμε εδώ και επιστρέφει 0 ή 1, αυτό θα πρέπει να είναι πιο αποτελεσματική ** / / * Το αλλάξετε αργότερα σε μακρο * / int CAS (int * DEST, int OldValue, int newvalue) { printf ("(% d,% d,% d)", * DEST, OldValue, newvalue)? / * Int CAS (DEST int, int OldValue, int newvalue) {* / / * Int CAS (DEST int, int newvalue, int OldValue) {* / int αποτέλεσμα = 1 ;/ * 1 δείχνει ότι CAS πέτυχε και 0 δείχνει ότι απέτυχε * / / * Btw πρέπει να cc για clobbering σημαία! * / __asm__ volatile__ __ ( "Movl% 2,%% EAX \ n \ t" "Movl% 3,%% ebx \ n \ t" "Movl 0%,%% ecx \ n \ t" "LOCK \ n \ t" "Cmpxchg% ebx%, (%% ecx) \ n \ t" / * πρέπει να κλειδώσετε είναι στην ίδια γραμμή * / "JZ ΕΓΙΝΕ \ n \ t" "Movl $ 0,% 1 \ n \ t" "ΕΓΙΝΕ: \ n \ t" : "= M" (ύδωρ), "= g" (αποτέλεσμα) : "Ζ" (OldValue), "G" (newvalue), "M" (ύδωρ) : "EAX%", "ebx%", "ECx", το "cc" )? printf ("(% d,% d,% d)", * DEST, OldValue, newvalue)? επιστρέψει αποτέλεσμα? } / * TODO * Γράψω άλλη ASM fxn που βάζει πάνω από fxn σε έναν βρόχο, ενώ συνεχίζουμε να προσπαθούμε και αν δεν πετύχει * / int main () { int a = 5, β = 6? int * c = (int *) malloc (sizeof (int))? * Γ = 6? / * Int c = 6? * / printf ("% d \ n", CAS (γ, β, β))? printf ("% d \ n", CAS (γ, β, α))? printf ("% d \ n", CAS (γ, α, α))? printf ("% d \ n", CAS (γ, β, β))? * Γ = 6? / * Γ = 5? * / printf ("αλλάζοντας την τιμή του γ * σε% d \ n", * γ)? printf ("% d \ n", CAS (γ, β, β))? printf ("% d \ n", CAS (γ, β, α))? printf ("% d \ n", CAS (γ, α, α))? printf ("% d \ n", CAS (γ, α, β))? printf ("% d \ n", CAS (γ, β, α))? return 0? }
Σημειώνει Μορφοποίηση - μοιάζει επισήμανσης σύνταξη WP είναι η προσθήκη στο τέλος, ότι αγνοούν.
GCD
# Includeint gcd (int a, int b) { int αποτέλεσμα? / * Υπολογισμός Μέγιστος κοινός διαιρέτης χρησιμοποιώντας τον αλγόριθμο του Ευκλείδη * / __asm__ volatile__ __ («movl% 1,%% EAX?" "Movl% 2,%% ebx?" "Contd: cmpl $ 0,%% ebx?" "Je ΕΓΙΝΕ?" «EDX xorl%%,%% EDX?" "Idivl% ebx%?" "Movl ebx%%,%% EAX?" «EDX movl%%,%% ebx?" "JMP contd?" "ΕΓΙΝΕ: movl% EAX%, 0%?": "= G" (αποτέλεσμα): "ζ" (α), "G" (β) )? επιστρέψει αποτέλεσμα? } int main () { int με πρώτο, δεύτερο? printf ("Εισάγετε δύο ακεραίων:")? scanf ("% d% d", & πρώτα, και το δεύτερο)? printf ("ΠΔΠ των% d & d% είναι% d \ n", πρώτο, δεύτερο, gcd (πρώτη, δεύτερη))? return 0? }
Παγκόσμια κρίκετ αναμένει μια Νέα Παγκόσμια Τάξη
Μετά από μια σειρά πέντε δοκιμών που εκτείνεται και περίπου δύο μήνες, Αγγλία αναγεννημένα στάχτες.
Ας μιλήσουμε για την πρώτη νικήτρια ομάδα - μεσαία τάξη είναι η «μέση», αν δεν θέλετε να κρίσιμη. Συμβολή Greame Swann με το ρόπαλο δεν θα μετράνε λιγότερο από τη συμβολή με την μπάλα. Ευρεία Stuart - καλύτερο all around μοτοσυκλέτα ήταν μη εκκίνησης για την πέμπτη δοκιμή. Andrew Strauss ήταν η μόνη συνεπής σφαιριστής και Jimmy Anderson ήταν η μόνη συνεπής σφαιριστής.
Το σημείο εδώ δεν είναι να μαλώσουν με τα επιτεύγματα της νικήτριας ομάδας, αλλά να τεθεί σε προοπτική το γεγονός ότι παρ 'όλα αυτά, η Αυστραλία έχασε. θα πρέπει να σκεφτεί για λίγα δευτερόλεπτα, αν ζητηθεί να αναφέρουμε καλύτερο σφαιριστής τους. Δεξιά, ήταν BW Hilfenhaus. Hauritz προσδοκία ξεπέρασε everbody, αλλά δεν ήταν ακόμα αρκετά καλός για να επιλεγεί για δύο από τις πέντε δοκιμασίες. Νότια Αφρική δεν έγινε ποτέ ένα κόσμο χωρίς beater μια παγκόσμιας κλάσης κλωστή, η Αυστραλία δεν μπορούν να ελπίζουν ότι θα παραμείνει ένας χωρίς ένα αρκετά καλό ενός τουλάχιστον. Μάγος εγκατέλειψε τη σκηνή και δεν μοιάζει πια τέχνη, ξεχάστε μαγεία. Ponting στέκεται ψηλά μικρότερο μεταξύ θνητών και Μάικλ Κλαρκ σηκώνεται πολύ συχνά, αλλά αυτό τους κάνει μια ομάδα με μερικούς πολύ καλούς παίκτες και δεν είναι μια πολύ καλή ομάδα.
Στάχτες 2009 θα θυμόμαστε για τελευταία Στάχτες Andrew Flintoff, η άφιξη Στιούαρτ Γενικοί ως ένα all rounder (εάν προσθέτει κάποιες περισσότερες λαογραφία Ashes to ελπιδοφόρο ξεκίνημα του), και ένα από τα πιο αποκαλυπτικό αιώνα ντεμπούτο όλων των εποχών από Trott, αλλά θα είναι επίσης μείνει στην ιστορία ως το σημείο όπου ενδοιασμούς σχετικά με την υπεροχή της Αυστραλίας ήταν επιτέλους να ξεκουραστούν, να είναι πάνω. Μην με παρεξηγείτε μπορούν ακόμα να ξεθάψει τον Mike Hussey ή Stuart Clark, αλλά νιώθεις τη συμβολή όλων των μεγάλους στιγμή που χάνονται. Μερικές φορές έρχονται για να σας υπενθυμίσω τους στο IPL, αλλά ακόμα δεν μπορούν να αντικατασταθούν. Ας αισθάνεται ευλογημένος για να έχει δει Warne, McGrath και Gilchrist να παίζουν μαζί και να υποστηρίζονται από Waughs, Ponting, Hyden, Martin και Langer.
Πηγαίνοντας προς τα εμπρός, η Νότια Αφρική θα παραμένει πάντα μια πολύ καλή ομάδα, αλλά πρέπει να κερδίσει στους ημιτελικούς και να είναι πιο συνεπής σε όλο τον κόσμο, το Πακιστάν θα παραμείνει αινιγματικά λαμπρή, ινδική μικρά όπλα πιθανότατα θα το βρείτε πολύ δύσκολο να γεμίσει τα παπούτσια της έκτακτης προκατόχων. Σρι Λάνκα θα πρέπει να συνεχίσει να επιδεικνύει τις αναλαμπές της τέχνης στην τέχνη. Αλλά, ίσως χρειαστεί να περιμένετε για λίγο πριν έχουν όλοι έξω κυρίαρχη ομάδα ή ένας καπετάνιος πριν καταγγέλλει την έλλειψη ανταγωνισμού, όπως ο Steve Waugh έκανε κάποτε.
Σε μια σχετική σημείωση - ας καλωσορίζω τον ερχομό πίσω του Ασίφ, έχει ένα πολύ κόλαση του δυναμικού, ας ελπίσουμε να δούμε μερικά από αυτά και επίσης ευπρόσδεκτοι Λουλούδι Andy στο νέο awatar, δικαίωμα που δεν μπορείτε να κρατήσετε καλοί άνθρωποι κάτω για πολύ.
ρουμπίνι one liners να δημιουργήσει hash
Χθες περνώντας από ένα από τα παλαιά προγράμματα μου, βρήκα αυτό που γράφτηκε από εμένα κάποια στιγμή πίσω:
#begin magic
hash=Hash[*CGI.unescape(raw_text).split('&').map{|x| b=x.split("=");b.push(nil) if b.size==1;b}.flatten]
#end magic
Για να σκοτώσει ορισμένα από αγωνία επιτρέψτε μου να αποκαλύψει ότι raw_text μοιάζει
, Δικαίωμα που έχει κοπεί από το PayPal αναγνώριση πληρωμής.
Πάνω από γραμμή σε περίπτωση που σπάσει σε τμήματα διαβάζει καλύτερα:
unescaped_array = CGI.unescape (raw_text). διαιρούμενα ('&') unescaped_array = unescaped_array.collect {| x | β = x.split ("=")? b.push (μηδέν) αν b.size == 1? β} flattened_array = unescaped_array.flatten Hash hash = [* flattened_array]
Ας κάνουμε ατομικά βήματα στο IRB:
IRB (κύριο):. 009:0> = unescaped_array CGI.unescape (raw_text) διαιρούμενα ('&') => ["Επιτυχία", "mc_gross = 10,00", "protection_eligibility = Αποκλεισμός", "payer_id U7PPJJ4TSJ47E =", "φόρος = 0,00", "payment_date = 9:45:30 10 Ιούλη 2009 PDT", "payment_status = αναμονή »] IRB (κύριο): 013:0> = unescaped_array unescaped_array.map {| x | β = x.split ("=")? b.push (μηδέν) αν b.size == 1? β} => [["Επιτυχία", μηδέν], ["mc_gross", "10,00"], ["protection_eligibility", "Αποκλεισμός"], ["payer_id", "U7PPJJ4TSJ47E"], ["φόρο", "0,00"] , ["payment_date", "9:45:30 10 Ιουλίου 2009 PDT"], ["payment_status", "Εν αναμονή"]] IRB (κύριο): 014:0> = flattened_array unescaped_array.flatten => ["Επιτυχία", μηδέν, "mc_gross", "10,00", "protection_eligibility", "Αποκλεισμός", "payer_id", "U7PPJJ4TSJ47E", "φόρος", "0,00", "payment_date", "9:45: 30 10 Ιουλίου, 2009 PDT "," payment_status "," Εν αναμονή "] IRB (κύριο): 015:0> Hash hash = [* flattened_array] => {"Φόρος" => "0,00", "payment_status" => "αναμονή", "payer_id" => "U7PPJJ4TSJ47E", "mc_gross" => "10,00", "επιτυχία" => μηδέν, "payment_date" = > "9:45:30 10 Ιουλ 2009 PDT", "protection_eligibility" => "Αποκλεισμός"}
BTW, * ονομάζεται ράντισμα φορέα στο ρουμπίνι
Ένας άλλος τρόπος για τη δημιουργία κατακερματισμού από «σειρά των ζευγαριών είναι να χρησιμοποιήσετε ένεση:
hash = [[1,2], [3,4]] ένεση ({}). {| αποτέλεσμα, στοιχείο | αποτέλεσμα [element.first] = αποτέλεσμα [element.last]? αποτέλεσμα} Υπάρχει ένας τρόπος
Γράψτε ένα βρόχο, ότι θα φύγω ως μια άσκηση για τους αναγνώστες!
Εδώ είναι λίγο άσχετες περίπτωση χρήσης του χασίς από τη δημιουργία πινάκων:
IRB (κύριο): 005:0> [1,2,3,4,7,9] group_by {| x | x <5.; : Μικρότερο :: μεγαλύτερη} => {: Μικρότερο => [1, 2, 3, 4],: μεγαλύτερη => [7, 9]}
Μπορείτε να κάνετε περισσότερα πράγματα, κυρίως λόγω του μπλοκ χρησιμοποιείται ως το κλειδί για εκείνο το στοιχείο που προκύπτει στο χασίς.
Gmail, mutt και msmtp λύση
Εάν χρησιμοποιείτε το πρόγραμμα mutt και SMTP για πρόσβαση στο Gmail. Εδώ είναι μια (κακή) ειδήσεις. Cool παιδιά στο Google άλλαξε και πάλι πιστοποιητικό. Ω, ρωτήσατε - πώς να το ξέρεις; Απλή mutt άρχισαν να παραπονιούνται για κακή πιστοποιητικό όταν προσπαθούν να χρησιμοποιήσουν msmpt, διαβόητη «msmtp: TLS επαλήθευση του πιστοποιητικού απέτυχε:. Το πιστοποιητικό δεν έχει ένα γνωστό εκδότη χαιρέτησε μου στην οθόνη.
Για να επιβεβαιώσετε διασχίζουν -
Απλά τρέχει μετά
$ msmtp --serverinfo --host=smtp.gmail.com --tls=on --port=587 --tls-certcheck=off
Στη θέση της παλιάς διακομιστή Thwate Τώρα μπορείτε να πάρετε από το τμήμα εκδότη
Issuer:
Common Name: Google Internet Authority
Organization: Google Inc
Country: US
Ευτυχώς λύση είναι απλή, είναι εδώ τι πρέπει να κάνετε για το Debian
# apt-get install ca-certificates
# dpkg -s ca-certificates|grep Version
Version: 20090814
Μετά από αυτό, απλά αλλάξτε ακόλουθη γραμμή στο you ~ /. Msmtprc
tls_trust_file /certs/Thawte SSLWeb Server Roots/thawte Premium Server CA/Thawte Premium Server CA.pem
tls_trust_file /certs/Thawte SSLWeb Server Roots/thawte Premium Server CA/Thawte Premium Server CA.pem
να
tls_trust_file /usr/share/ca-certificates/mozilla/Equifax_Secure_CA.crt
Git και Awesome Έρευνα
Εδώ υπάρχουν δύο συνδέσεις για την έρευνα από git (σύστημα ελέγχου εκδόσεων) και φοβερό (διαχειριστής παραθύρων) κοινότητα. Εάν χρησιμοποιείτε κάποιο από αυτά, παρακαλώ πάρτε κάποιο χρόνο για να συμπληρώσετε το ερωτηματολόγιο. Σκεφτείτε το σαν το πιο απλό τρόπο να συμβάλει στην επιστροφή του λογισμικού που χρησιμοποιείτε.
Εδώ είναι οι συνδέσεις:
Git - http://www.survs.com/survey?id=2PIMZGU0&channel=Q0EKJ3NF54
Awesome - http://www.survs.com/survey?id=8BVEV3FO&channel=BH07CQ040D
Σημείωση - (Όπως διαπιστώθηκε σε αυτές τις σελίδες, αλλά στο κάτω μέρος
) -
"Αν έχετε ενεργοποιήσει τα cookies, μπορείτε να υποβάλετε πάντα μερικώς γεμάτη έρευνα, και να επιστρέψει με τις απαντήσεις σας σε μεταγενέστερο χρόνο, ολοκληρώνοντας αργότερα."



































