Ein bisschen Montage
Nach dem Lesen dieses Artikels über Lock freien Puffern und sehen den Einsatz von CAS (vergleichen und Swap), fühlte ich mich wie die Buchung der Assembler-Code, um das Gleiche zu tun. Verwenden Sie bei drüben war es, eine native Methode schreiben und nennen es aus Java (zurück in 1,5, wenn gleichzeitige Datenstrukturen in Java mehr oder weniger nicht existent waren). Ohne weitere Umschweife, werde ich den Code auf Sie zu entfesseln
. Zunächst ist für CAS und zweite ist zur Berechnung von ggT mit Euklidischen Algorithmus (dies kann man an vielen Orten und Tutorien sowie zu finden).
Kompilieren und starten Anweisungen gcc file_name.c ; ./a.out
Vergleichen und Tauschen
# Include# Include / / Austausch - newvalue ist comperand alt / Erwartungswert / * * Funktion tatsächlich die folgende Sache - wenn der Wert an * dest gleich OldValue dann ersetzen Sie ihn durch newvalue sonst lässt sie unverändert: Sie alle diese atomar * * Es gibt zwei Optionen für Rückgabewert * 1.is Anfangswert * dest und lassen Sie die Last der Aufruf FXN, um es mit oldval vergleichen * 2. tun es hier und kehren 0 oder 1, sollte dies effizienter sein ** / / * Später ändern sie in Makros * / CAS int (int * dest, int OldValue, int newvalue) { printf ("(% d,% d,% d)", * dest, OldValue, newvalue); / * Int CAS (int dest, int OldValue, int newvalue) {* / / * Int CAS (int dest, int newvalue, int OldValue) {* / int result = 1 ;/ * 1 zeigt, dass CAS gelungen und 0 zeigt, dass es fehlgeschlagen * / / * Btw müssen ccm für Flagge clobbering gesetzt! * / __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" / * sollte auf der gleichen Linie LOCK * / "Jz \ n \ t FERTIG" "Movl $ 0,% 1 \ n \ t" "DONE: \ n \ t" : "= M" (DEST) "= g" (Ergebnis) : "G" (OldValue), "g" (newvalue), "m" (dest) : "% Eax", "% ebx", "ECX", "CC" ); printf ("(% d,% d,% d)", * dest, OldValue, newvalue); return ergebnis; } / * TODO * Schreiben Sie einen anderen asm FXN die über FXN bringt eine while-Schleife und immer wieder versuchen, wenn es * / Nachfolge int main () { int a = 5, b = 6; int * c = (int *) malloc (sizeof (int)); * C = 6; / * Int c = 6; * / printf ("% d \ n", CAS (c, b, b)); printf ("% d \ n", CAS (c, b, a)); printf ("% d \ n", CAS (c, a, a)); printf ("% d \ n", CAS (c, b, b)); * C = 6; / * C = 5; * / printf ("wechselnden Wert von * C bis% d \ n", * c); printf ("% d \ n", CAS (c, b, b)); printf ("% d \ n", CAS (c, b, a)); printf ("% d \ n", CAS (c, a, a)); printf ("% d \ n", CAS (c, a, b)); printf ("% d \ n", CAS (c, b, a)); return 0; }
Formatieren von Notes - scheint wie wp Syntax-Highlighter ist das Hinzufügen am Ende ignorieren.
GCD
# Includeint ggT (int a, int b) { int result; / * Berechne Größter gemeinsamer Teiler mit Euklidischen Algorithmus * / __asm__ __ volatile__ ("movl% 1,%% eax;" "Movl% 2,%% ebx;" "Forts.: kpl $ 0,%% ebx;" "Je DONE;" "Xorl%% EDX, EDX%%;" "Idivl%% ebx;" "Movl%% ebx,%% eax;" "Movl%% EDX,%% ebx;" "Jmp Forts.;" "DONE: movl%% eax,% 0;": "= g" (Ergebnis): "g" (a), "g" (b) ); return ergebnis; } int main () { int erste, zweite; printf ("Geben Sie zwei Zahlen:"); scanf ("% d.% d", & erste, zweite &); printf ("ggT von% d &% d ist% d \ n", erste, zweite, ggT (erster, zweiter)); return 0; }
Cricket-Welt wartet eine neue Weltordnung
Nach einer Reihe aus fünf Tests und etwa zwei Monate, England zurückgeforderten Asche.
Lassen Sie uns über das Gewinner-Team erste reden - ihre Mitte Ordnung ist "durchschnittlich", wenn Sie nicht wollen, kritisch. Greame Swanns Beitrag mit dem Schläger zählt nicht weniger als Beitrag mit der Kugel. Stuart Broad - beste Allrounder war nicht Anlasser für den fünften Test. Andrew Strauss war die einzige konsequente Schlagmann und Jimmy Anderson war der einzige konsequente Bowler.
Hier geht es nicht um die Leistungen des Siegerteams beschimpfen aber in Perspektive zu setzen, dass es trotz all diesen, Australien verloren. Sie müssen für einige Sekunden zu denken, wenn aufgefordert, ihre besten Werfer zu nennen. Richtig, es war BW Hilfenhaus. Hauritz everbody übertraf die Erwartung war aber noch nicht gut genug, um für zwei der fünf Tests ausgewählt werden. Südafrika wurde nie eine Welt ohne Schläger ein Weltklasse-Spinner, Australien kann nicht darauf hoffen, eines ohne ein gut genug, ein mindestens bleiben. Zauberer verließ die Bühne und es nicht wie Kunst mehr sehen, vergessen Magie. Ponting steht hoch unter niedere Sterbliche und Michael Clarke steht auf sehr oft, aber das macht sie ein Team mit einigen sehr guten Spielern und nicht ein sehr gutes Team.
Ashes 2009 wird für die letzten Ashes Andrew Flintoff das, Stuart Broad Ankunft als Allrounder (wenn er etwas mehr Asche Folklore fügt zu seinem viel versprechenden Start), und eine der aussagekräftigsten Debüt Jahrhundert aller Zeiten von Trott, aber es wird auch daran erinnert werden erinnerte sich, wie der Punkt, an dem Wenn und Aber über Australiens Vorherrschaft endlich zur Ruhe gesetzt wurden, ist es vorbei. Versteh mich nicht falsch können sie immer noch ausgraben Mike Hussey oder Stuart Clark, aber Sie fühlen sich den Beitrag der ganz Großen, wenn sie verloren gehen,. Manchmal kommen sie, um Sie über sich selbst daran erinnern, in IPL aber sie kann nicht ersetzt werden. Lasst fühle mich gesegnet für Warne gesehen zu haben, McGrath und Gilchrist zusammen zu spielen und von Waughs unterstützt, Ponting, Hyden, Martin und Langer.
Zukünftig Südafrika wird immer ein sehr gutes Team bleiben, aber sie müssen Halbfinale gewinnen und konsistenter sein rund um den Globus, Pakistan bleibt rätselhaft brillant, wird Indischen Young Guns wahrscheinlich finden es hart, um die Schuhe von außergewöhnlicher Vorgänger zu füllen. Sri Lanka sollte weiterhin Einblicke in die Kunst im Handwerk zeigen. Aber darauf werden wir wohl für einige Zeit, bevor mit einem all out dominierende Team oder vor ein Kapitän klagt über Mangel an Wettbewerb, wie Steve Waugh einst warten.
Über einen entsprechenden Hinweis - lasst uns die Rückkehr von Asif begrüßen, er verdammt viel Potenzial hat, hoffen wir, einige davon sehen und begrüßen auch Andy Flower in der neuen awatar, rechts kann man nicht halten gute Männer nach unten für lange.
Rubin Einzeiler zu schaffen Hash
Gestern, während er durch einen meiner alten Programme, fand ich das von mir geschriebene irgendwann zurück:
#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
Um einige der Spannung töten lassen Sie mich offen zu legen, dass raw_text aussieht
, Rechts hat es von paypal Zahlung Anerkennung geschnitten worden.
Über der Linie, wenn in Teile zerlegt liest besser:
unescaped_array = CGI.unescape (raw_text). split ('&') unescaped_array unescaped_array.collect = {| x | b = x.split ("="); b.push (nil), wenn b.size == 1, b} flattened_array = unescaped_array.flatten hash = Hash [* flattened_array]
Machen wir einzelne Schritte in irb:
irb (main):. 009:0> unescaped_array = CGI.unescape (raw_text) split ('&') => ["Erfolg", "mc_gross = 10,00", "Nicht förderfähige protection_eligibility =", "payer_id = U7PPJJ4TSJ47E", "Steuer = 0,00", "payment_date = 09.45.30 10. Juli 2009 PDT", "payment_status = Pendente "] irb (main): 013:0> unescaped_array unescaped_array.map = {| x | b = x.split ("="); b.push (nil), wenn b.size == 1, b} => [["Erfolg", nil], ["mc_gross", "10,00"], ["protection_eligibility", "Nicht förderfähige"], ["payer_id", "U7PPJJ4TSJ47E"], ["Steuer", "0.00"] , ["payment_date", "09.45.30 10. Juli 2009 PDT"], ["payment_status", "Erwartung"]] irb (main): 014:0> flattened_array = unescaped_array.flatten => ["Erfolg", nil, "mc_gross", "10,00", "protection_eligibility", "Nicht förderfähige", "payer_id", "U7PPJJ4TSJ47E", "Steuer", "0.00", "payment_date", "9.45: 30 Jul 10 2009 PDT "," payment_status "," Erwartung "] irb (main): 015:0> hash = Hash [* flattened_array] => {"Steuer" => "0.00", "payment_status" => "In Erwartung", "payer_id" => "U7PPJJ4TSJ47E", "mc_gross" => "10,00", "Erfolg" => nil, "payment_date" = > "09.45.30 10. Juli 2009 PDT", "protection_eligibility" => "Nicht förderfähige"}
BTW, ist * genannt Splat-Operator in Ruby
Eine weitere Möglichkeit zur Erstellung von Hash 'Array von Paaren ", ist die Verwendung injizieren:
hash = [[1,2], [3,4]] injizieren ({}). {| Ergebnis element | Ergebnis [element.first] = result [element.last];} Ergebnis Es gibt einen weiteren Weg
Schreiben Sie eine Schleife, dass ich als Übung, um den Lesern zu verlassen!
Hier ist ein wenig unabhängigen Verwendung Fall der Schaffung von Hash-Arrays:
irb (main): 005:0> [1,2,3,4,7,9] group_by {| x | x <5.? : Geringere :: mehr} => {: Weniger => [1, 2, 3, 4],: mehr => [7, 9]}
Sie können mehr tun, Dinge, im Grunde Ergebnis der Block als Schlüssel für dieses Element in der resultierenden Hash verwendet wird.
Google Mail, mutt und msmtp fix
Wenn Sie mutt und SMTP-Zugriff auf Google Mail. Hier ist eine (schlechte) Nachricht. Coole Jungs bei Google wieder geändert Zertifikat. Oh, hast du gefragt - wie kann es wissen? Einfache mutt gestartet beschweren sich über schlechte Zertifikat beim Versuch, msmpt, berüchtigten verwenden 'msmtp: TLS-Zertifikat fehlgeschlagen:. Das Zertifikat nicht hat einen bekannten Emittenten begrüßte mich auf dem Bildschirm.
Um zu bestätigen, zu überqueren -
Gerade nach laufen
$ msmtp --serverinfo --host=smtp.gmail.com --tls=on --port=587 --tls-certcheck=off
An die Stelle der alten Thwate Server Jetzt erhalten Sie in folgenden Emittent Segment
Issuer:
Common Name: Google Internet Authority
Organization: Google Inc
Country: US
Glücklicherweise fix einfach ist, ist hier, was Sie tun müssen, auf Debian
# apt-get install ca-certificates
# dpkg -s ca-certificates|grep Version
Version: 20090814
Danach ändern Sie einfach folgende Zeile in 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
zu
tls_trust_file /usr/share/ca-certificates/mozilla/Equifax_Secure_CA.crt
Git und gut Umfrage
Hier sind zwei Links zur Umfrage von git (Version Control System) und genial (Window Manager) Community. Wenn Sie eine der diese verwenden, bitte nehmen Sie etwas Zeit, um den Fragebogen auszufüllen. Betrachten Sie es als der einfachste Weg, um einen Beitrag zurück auf die Software, die Sie verwenden.
Hier sind die Links:
Git - http://www.survs.com/survey?id=2PIMZGU0&channel=Q0EKJ3NF54
Awesome - http://www.survs.com/survey?id=8BVEV3FO&channel=BH07CQ040D
Hinweis - (Wie auf diesen Seiten, sondern an der Unterseite gefunden
) -
"Wenn Sie Cookies aktiviert haben, können Sie jederzeit einreichen teilweise gefüllten Umfrage, und zurück, um Ihre Antworten zu einem späteren Zeitpunkt und schloss sie später."



































