A bit ng pagpupulong
Pagkatapos ng pagbabasa ng artikulong ito tungkol sa lock libreng buffers at makita ang paggamit ng Cas (ihambing at magpalitan), ako nadama tulad ng pag-post ng pagpupulong code upang gawin ang parehong. Gamitin ang kaso sa nagkaroon na magsulat ng isang katutubong paraan at tawagan ang mga ito mula sa Java (pabalik sa 1.5, kapag kasabay data na istraktura sa Java ay higit pa o mas mababa hindi umiiral). Nang walang karagdagang linggal, kukunin ko na mapalabas ang code papunta sa iyo
. Ang una ay para sa Cas at pangalawa ay para sa computing GCD gamit Euclid ng algorithm (isa na ito ay matatagpuan sa maraming lugar at mga tutorial pati na rin).
Itala at patakbuhin ang tagubilin gcc file_name.c ; ./a.out
Ihambing at magpalitan
# Include# Include / / Palitan - newvalue, comperand lumang / inaasahang halaga / * * Ang function na talaga ang mga sumusunod na bagay - kung ang halaga sa * Dest ay katumbas sa oldvalue ang pagkatapos ay palitan ito sa pamamagitan ng newvalue ibang iwanan ito hindi nagbabago: ang lahat ng mga atomically * * Mayroong dalawang mga pagpipilian para sa halaga ng pagbabalik * 1.is paunang halaga ng * Dest at iwanan ang pasanin ng pagtawag fxn upang ihambing ang mga ito sa oldval * 2. gawin ito sa dito at bumalik ng 0 o 1, ito ay dapat na maging mas episyente ** / / * Mamaya baguhin ang mga ito sa macro * / int Cas (int * Dest, ang int oldvalue, int newvalue) { printf ("(% d,% d,% d)", ang * Dest, oldvalue, newvalue); / * Int Cas (ang int Dest, int oldvalue, ang int newvalue) {* / / * Int Cas (ang int Dest, int newvalue, ang int oldvalue) {* / int resulta = 1 ;/ * 1 nagpapakita na ang Cas nagtagumpay at 0 mga palabas na ito nabigo * / / * Btw kailangan upang itakda ang cc para sa bandila clobbering! * / __asm__ na __ volatile__ ( Sa "movl% 2,%% eax \ n \ t" "Movl% 3,%% ebx \ n \ t" Sa "movl% 0,%% ecx \ n \ t" "Lock \ n \ t" "CMPXCHG%% ebx, (%% ecx) \ n \ t" / * ay dapat i-lock sa parehong linya * / "Jz DONE \ n \ t" "Movl $ 0,% 1 \ n \ t" "DONE: \ n \ t" : "= M" (Dest), "= g" (resulta) : "G" (oldvalue), "g" (newvalue), "m" (Dest) : "% Eax", "% ebx", "ecx", "cc" ); printf ("(% d,% d,% d)", ang * Dest, oldvalue, newvalue); bumalik resulta; } / * TODO * Magsulat ng isa pang asm fxn kung saan naglalagay sa itaas fxn sa isang habang loop at panatilihing sinusubukan maliban kung ito succeeds * / int pangunahing () { int a = 5, b = 6; int * c = (int *) malloc (sizeof ang (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)); printf ("% d \ n", Cas (c, b, b)); * C = 6; / * C = 5; * / printf ("pagbabago ng halaga ng * c sa% d \ n", * c); printf ("% d \ n", Cas (c, b, b)); printf ("% d \ n", Cas (c, b, a)); printf ("% d \ n", Cas (c,, a)); printf ("% d \ n", Cas (c, a, b)); printf ("% d \ n", Cas (c, b, a)); bumalik 0; }
Tala ng format - tila wp syntax highlighter ay pagdaragdag sa katapusan, huwag pansinin na.
GCD
# Includesa int gcd (int a, int b) { int resulta; / * Compute pinakamalaking Karaniwang na panghati gamit Euclid ng algorithm * / __asm__ __ volatile__ (sa "movl% 1,%% eax;" Sa "movl% 2,%% ebx;" "CONTD: cmpl $ 0,%% ebx;" "Je DONE;" Ang "xorl%% edx,%% edx;" Sa "idivl%% ebx;" Ang "movl%% ebx,%% eax;" Ang "movl%% edx, ebx ng%%;" "Jmp CONTD;" "DONE: movl%% eax,% 0;": "= g" (resulta): "g" (a), "g" (b) ); bumalik resulta; } int pangunahing () { int una, pangalawa; printf ("Ipasok ang dalawang integers:"); scanf ("% d% d", & unang, at segundo); printf ("GCD ng% d at% d ay% d \ n", una, pangalawa, gcd (una, ikalawa)); bumalik 0; }
Cricketing World Awaits isang Bagong World Order
Matapos ang isang serye spanning limang pagsusulit at humigit-kumulang dalawang buwan, England reclaimed ashes.
Hayaan ang makipag-usap tungkol sa mga nanalong koponan unang-kanilang gitna order ay 'average' kung hindi mo nais na kritikal. Greame Swann ng kontribusyon sa bat bibilangin hindi mas mababa kaysa sa kontribusyon sa bola. Stuart Malawakang - pinakamahusay na ang lahat ng rounder ay hindi na starter para sa ika-5 na pagsubok. Andrew Strauss ay ang tanging pare-pareho na batsman at Jimmy Anderson ay ang lamang na pare-pareho ang nagboboling.
Ang punto dito ay hindi kagalitan ang mga tagumpay ng nanalong koponan ngunit upang ilagay sa pananaw ang katotohanan na sa kabila ng lahat ng mga ito, ang Australya ay nawala. magkakaroon ka ng mag-isip para sa ilang segundo, kung nagtanong ng pangalan ng kanilang mga pinakamahusay na ang nagboboling. Karapatan, ito ay ang BW Hilfenhaus. Hauritz outperformed everbody ay inaasahan ngunit hindi pa rin sapat na mahusay na pinili para sa dalawang ng limang pagsusulit. South Africa ay hindi kailanman naging isang mundo pamalo walang manunulid mundo klase, Australia ay hindi maaaring inaasahan upang manatiling isa na walang isang magandang sapat na hindi bababa sa. Mago umalis sa stage at ito ay hindi tulad ng sining ngayon, kalimutan ang magic. Ponting ibig sabihin matangkad sa mga mas mababang mortals at Michael Clarke ibig sabihin up masyadong madalas, ngunit na gumagawa sa kanila ng isang team na may ilang mga napakahusay na mga manlalaro at hindi isang mahusay na koponan.
Ashes 2009 ay ay remembered para sa Andrew Flintoff ng huling Ashes, Stuart Malawakang ay pagdating bilang isang lahat rounder (kung siya nagdadagdag ng ilang higit pa Ashes alamat sa kanyang maaasahan simula), at isa sa pinaka nagsasabi siglo pasinaya ng lahat ng oras sa pamamagitan ng Trott ngunit ay ito rin ay remembered bilang punto kung saan ifs at buts tungkol sa Australya ng kataas-taasang kapangyarihan ay sa wakas ilagay sa pamamahinga, ito ay higit. Huwag makakuha ako mali nila pa rin hukayin ng Mike Hussey o Stuart Clark ngunit pakiramdam ang kontribusyon ng lahat ng mga greats oras kapag sila ay pumunta nawawala. Minsan dumating sila upang ipaalala sa iyo sa kanilang sarili sa IPL ngunit hindi pa rin nila maaaring papalitan. Sabihin pakiramdam mapalad na nakita ng Warne, McGrath at Gilchrist naglalaro ng sama-sama at na suportado pamamagitan ng Waughs, Ponting, Hyden, Martin at Langer.
Pasulong, South Africa ay palaging mananatiling isang mabuting koponan ngunit kailangan nila upang manalo ng mga semifinals at maging mas pare-pareho sa buong mundo, Pakistan ay mananatiling enigmatically makinang, Indian kabataan baril ay maaaring mahanap ito matigas upang punan ang mga sapatos ng mga pambihirang predecessors. Sri Lanka ay dapat magpatuloy upang ipakita ang mga glimpses ng sining sa bapor. Subalit, maaari naming maghintay para sa ibang panahon bago ang pagkakaroon ng lahat ang nangingibabaw koponan o bago ang kapitan ng complains ng kakulangan ng kumpetisyon, bilang Steve Waugh ay sabay.
Sa isang kaugnay na tandaan - sabihin malugod ang darating likod ng Asif, siya ay may isang impyerno pulutong ng mga potensyal na, ipaalam sa Inaasahan upang makita ang ilan sa mga na at din malugod Andy Flower sa ang bagong awatar, kanan hindi mo panatilihin ang magandang lalaki down na para sa mahaba.
mapula isa liners upang lumikha ng hash
Kahapon habang pagpunta sa pamamagitan ng isa sa aking mga lumang programa, natagpuan ko ang isinulat ko minsan likod:
#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
Upang patayin ang ilang ng pananabik hayaan mo akong ibunyag na raw_text Mukhang
, Karapatan ito ay kunin mula sa PayPal pagbabayad pagkilala.
Itaas linya kung nasira sa bahagi bumabasa ng mas mahusay na:
unescaped_array = CGI.unescape (raw_text). split ('&') unescaped_array = unescaped_array.collect {| x | b = x.split ("="); b.push (kawalan) kung sa b.size == 1; b} flattened_array = unescaped_array.flatten hash = Hash [* flattened_array ang]
Hayaan ng mga indibidwal na mga hakbang sa irb:
irb (main): 009:0> unescaped_array = CGI.unescape (raw_text) split ('&') => ["Tagumpay", "mc_gross = 10.00", "protection_eligibility = hindi karapat-dapat", "payer_id = U7PPJJ4TSJ47E", "buwis = 0.00", "payment_date = 09:45:30 Jul 10, 2009 PDT", "payment_status = Nakabinbin "] irb (main): 013:0> unescaped_array = unescaped_array.map {| x | b = x.split ("="); b.push (kawalan) kung sa b.size == 1; b} => [["Tagumpay", wala], [sa "mc_gross", "10.00"], ["protection_eligibility", "hindi karapat-dapat"], ["payer_id", "U7PPJJ4TSJ47E"], ["buwis", "0.00"] , ["payment_date ang", "09:45:30 Jul 10, 2009 PDT"], [ang "payment_status", "Pending"]] irb (main): 014:0> flattened_array = unescaped_array.flatten => ["Tagumpay", wala, "mc_gross", "10.00", "protection_eligibility", "hindi karapat-dapat", "payer_id", "U7PPJJ4TSJ47E", "buwis", "0.00", "payment_date", "09:45: 30 Jul 10, 2009 PDT ", ang" payment_status "," Pending "] irb (main): 015:0> hash = Hash [* flattened_array ang] => {"Buwis" => "0.00", "payment_status" => "Pending", "payer_id" => "U7PPJJ4TSJ47E", sa "mc_gross" => "10.00", "Tagumpay" => wala, "payment_date" = > "09:45:30 Jul 10, 2009 PDT", "protection_eligibility" => "hindi karapat-dapat"}
BTW, * ay tinatawag na splat operator sa rubi
Ang isa pang paraan upang lumikha ng hash mula sa 'array ng pares' ay upang gamitin magpaturok:
hash = [[1,2], [3,4]]-paturukan ({}). {| resulta, elemento | resulta [element.first] = resulta [element.last]; resulta} May isa pang paraan
Magsulat ng isang loop, na kukunin ko na umalis bilang isang ehersisyo sa mga mambabasa!!
Narito ang isang bit hindi kaugnay na kaso ng paggamit ng paglikha ng hash mula sa arrays:
irb (main): 005:0> [1,2,3,4,7,9] group_by {| x | x <5.? : Mas mababang :: mas} => {: Mas mababang => [1, 2, 3, 4],: mas => [7, 9]}
Maaari mong gawin ang higit pang mga bagay, talaga ang resulta ng ang block ay ginagamit bilang ang key para sa na sangkap sa mga nagresultang hash.
gmail, ulol at msmtp na pag-aayos
Kung gumagamit ka ng ulol at ang SMTP upang ma-access ang gmail. Narito ang isang (masamang) balita. Cool guys sa Google muli nagbago sertipiko. Oh, ay mong tanungin kung paano ko ito malalaman ang mga ito? Simple ulol na nagsimula nagrereklamo tungkol sa masamang sertipiko kapag sinusubukang gamitin ang msmpt, nakahihiya 'msmtp: TLS sertipiko Nabigo ang pagpapatunay: ang sertipiko ay hindi nakuha ng isang kilalang issuer' greeted ako sa screen.
Upang tumawid kumpirmahin -
Lamang patakbuhin ang mga sumusunod na
$ msmtp --serverinfo --host=smtp.gmail.com --tls=on --port=587 --tls-certcheck=off
Sa lugar ng lumang Thwate Server ngayon ka sumusunod sa issuer segment
Issuer:
Common Name: Google Internet Authority
Organization: Google Inc
Country: US
Kabutihang palad pag-aayos ay simple, dito ay kung ano ang kailangan mong gawin sa Debian
# apt-get install ca-certificates
# dpkg -s ca-certificates|grep Version
Version: 20090814
Matapos ito lamang baguhin ang sumusunod na linya sa ~~~V mo /. 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
sa
tls_trust_file /usr/share/ca-certificates/mozilla/Equifax_Secure_CA.crt
Sa Git at Galing Survey
Narito ang dalawang mga link para sa survey sa pamamagitan ng git (bersyon control system) at kasindak-sindak (manager ng window) komunidad. Kung gumamit ka ng alinman sa mga ito, mangyaring kumuha ng ilang oras upang punan ang palatanungan. Isipin ng mga ito bilang ang pinakasimpleng paraan upang mag-ambag pabalik sa ang software na gamitin mo.
Narito ang mga link:
Git - http://www.survs.com/survey?id=2PIMZGU0&channel=Q0EKJ3NF54
Galing - http://www.survs.com/survey?id=8BVEV3FO&channel=BH07CQ040D
Tandaan - (Tulad ng matatagpuan sa mga pahina na iyon ngunit sa ibaba
) -
"Kung ikaw ay may pinaganang cookies, maaari mong laging isumite ang bahagyang napuno ng survey, at bumalik sa iyong mga sagot sa ibang pagkakataon, kinukumpleto ito mamaya."



































