Malo montažo

29. avgust, 2009 z Prashant · Komentarji
Pila pod: tehnologija

Po branju tega članka o prostih rezerv za zaklepanje in videnje uporabe CAS (primerjati in swap), sem se počutil kot objavo montažo kodo, da storijo enako. Uporabite primer več kot je bilo, da bi napisal izvirni način in jo pokličite s Java (nazaj na 1,5, ko so bili sočasno podatkovne strukture v Javi več ali manj ni). Brez odlašanja, se bom sprostil kodo na vas :) . Prvi je na CAS in drugo, je za računalniške GCD pomočjo Evklidovega algoritma (ta je mogoče najti v številnih krajih in vajah, pa tudi).

Pripravijo in vodijo navodila gcc file_name.c ; ./a.out

Primerjati in Swap

   # Include 
  # Include 
 / / Izmenjave - newvalue, comperand je star / pričakovana vrednost
 / *
  * Funkcija v resnici počne to stvar - če je vrednost v * destilirano vodo, je enako potem oldvalue jo nadomestiti s newvalue pa pustimo nespremenjena: vse to ne atomically
  *
  * Na voljo sta dve možnosti za vrnitev vrednosti
  * 1.is začetno vrednost * Podrobnosti destilirano vodo in pustite breme kliče fxn, da ga primerjajo z oldval
  * 2.  to storite tukaj in se vrnil 0 ali 1, bi to moralo biti bolj učinkovito
  ** /

 / * Kasneje spremenite v makro * /
 int cas (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 rezultat = 1 ;/ * 1 kaže, da je cas uspelo in 0 kaže, da ni * /
	 / * Btw morali nastaviti cc za zastava 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" bi / * LOCK biti v isti vrstici * /
			 "JZ poteka \ n \ t"
			 "Movl $ 0,% 1 \ n \ t"
			 "Sestavljeno: \ n \ t"
			 : "= M" (dest), "= g '(rezultat)
			 : "G" (oldvalue), "g" (newvalue), "M" (dest)
			 : "% EAX", "% ebx", "ECx", "cc"
			 );
	 printf ("(% d,% d,% d)", * dest, oldvalue, newvalue);
	 vrne rezultat;
 }

 / * TODO
  * Napisati še eno ASM fxn ki postavlja nad fxn v nekaj časa zanke in poskušati, če ne uspe * /

 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,,));
	 printf ("% d \ n", cas (c, b, b));
	 * C = 6;
	 / * C = 5; * /
	 printf ("spreminja vrednost * c na% d \ n", * c);
	 printf ("% d \ n", cas (c, b, b));
	 printf ("% d \ n", cas (c, b, a));
	 printf ("% d \ n", cas (c,,));
	 printf ("% d \ n", cas (c, a, b));
	 printf ("% d \ n", cas (c, b, a));
	 return 0;
 }

Oblikovanje ugotavlja - se zdi, kot wp sintakso označevalnik je dodal na koncu, da ne upoštevajo.

GCD

 # Include 
 int gcd (int a, int b) {
     int rezultat;
     / * Compute Največji skupni delitelj pomočjo Evklidovega algoritma * /
     __asm__ __ volatile__ ("movl% 1,%% EAX;"
                           "Movl% 2,%% ebx;"
                           "Nadalj.: cmpl $ 0,%% ebx;"
                           "JE SESTAVLJENO;"
                           "Xorl%% EDX, EDX%%;"
                           "Idivl%% ebx;"
                           "Movl%% ebx,%% EAX;"
                           "Movl%% EDX,%% ebx;"
                           "JMP nadalj.;"
                           "Sestavljeno: movl%% EAX,% 0;": "= g '(rezultat):" g "(a)," g "(b)
     );

     vrne rezultat;
 }

 int main () {
     int prvi, drugi;
     printf ("Vnesite dve celi števili:");
     scanf ("% d% d", & prvi, in drugo);

     printf ("GCD od% d &% d je% d \ n", prva, druga, gcd (prvi, drugi));

     return 0;
 }

Cricketing svet pričakuje nov svetovni red

25. avgust 2009 z Prashant · Komentarji
Pila pod: misc

Po vrsti segajo pet testi in približno dva meseca, ki Anglija predelanih pepel.

Spregovorimo o zmagovalni ekipi 1. - njihova sredina, da je "povprečno", če ne želite, da kritično. Prispevek Greame Swann je s kijem bo štela nič manj kot prispevek z žogo. Stuart Broad - najboljši vseh vsestranski ni bil starter za 5. test. Andrew Strauss je bil edini v skladu batsman in Jimmy Anderson je bil edini v skladu Polucilindar.

Točka tukaj ni Graditi dosežke zmagovalno ekipo, ampak za uvedbo vidika dejstva, da kljub vsem tem, Avstralija izgubljeno. boste morali razmišljati za nekaj sekund, če je bilo ime svoje najboljše polcilinder. Prav, da je BW Hilfenhaus. Hauritz prekosila pričakovanja everbody, vendar še vedno ni dovolj dobra, da je izbran za dva od petih testov. Južna Afrika nikoli postala svetovna Mućkalica brez svetovnega razreda spinner, Avstralija ne more upati, da ostane 1 brez enega dobrega dovolj ena najmanj. Čarovnik zapustil oder in ne izgleda kot umetnost več, pozabi čarobno. Ponting stoji visok med manjšimi smrtniki in Michael Clarke vstane zelo pogosto, vendar to pomeni, da so ekipa z nekaj zelo dobrih igralcev in ne zelo dobra ekipa.
Pepel 2009 si bomo zapomnili za zadnjih Ashes Andrew Flintoff je, prihod Stuart Broad, kot vse obel (če je še dodal nekaj več pepela folklore v svojo obetavno), in eden od najbolj pripoveduje stoletja prvenec vseh časov z Trott pa bo tudi v spominu kot točke, kjer oklijevanja in izgovorjavo o prevlado v Avstraliji so bili na koncu dal za počitek, je konec. Ne razumite me narobe, lahko še vedno izkopala Mike Hussey in Stuart Clark, vendar se počutite prispevek vseh časov greats ko gredo manjka. Včasih pridejo do vas spomnim sebe v ZIL, vendar še vedno jih ni mogoče zamenjati. Poglejmo počutim blagoslovljena, ker je videl Warne, McGrath in Gilchrist igrajo skupaj in ki jih podpirajo Waughs, Ponting, Hyden, Martin in Langer.

V prihodnje se bo Južna Afrika še vedno zelo dobra ekipa, ampak jih potrebujejo za zmago polfinalu in bolj dosledno po vsem svetu, bo ostal Pakistan skrivnostno briljantno, bo indijski mlade pištole verjetno zdi, da je težko zapolniti čevlje izrednih predhodnikov. Šrilanka je treba še naprej kažejo utrinki umetnosti obrti. Ampak, se bomo morali počakati nekje pred ki ima vse od prevladujočega ekipo ali pred kapetan očita pomanjkanje konkurence, kot je Steve Waugh storil enkrat.

S tem povezanim note - kaj je pozdravil prihaja zadnji Asif, ima hudiča veliko potenciala, upajmo, da vidim nekaj, da je in prav tako dobrodošli Andy Flower v novem awatar, desno ne morete obdržati dobre ljudi dol za dolgo.

ruby 1 podlage za oblikovanje hash

20. avgust 2009 z Prashant · Komentarji
Pila pod: tehnologija

Včeraj, ko je šel skozi enega od mojih starih programov, sem našel to napisal me kdaj nazaj:

#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

Da bi ubil nekaj napetosti naj razkrije, da raw_text izgleda

 

, Desno je bilo izrezano iz paypal potrditvi plačila.

Nad črto, če razdeljene v dele bere bolje:

  unescaped_array = CGI.unescape (raw_text). split ("&")
   unescaped_array = unescaped_array.collect {| x | b = x.split ("="); b.push (nič), če b.size == 1, b}
   flattened_array = unescaped_array.flatten
   hash = Hash [* flattened_array] 

Naredimo posamezne korake v pristopu IRB:

  IRB (glavni). 009:0> unescaped_array = CGI.unescape (raw_text) split ("&")    

 => ["Uspeh", "mc_gross = 10,00", "protection_eligibility = Neupravičeni", "payer_id = U7PPJJ4TSJ47E", "taksa = 0,00", "payment_date = 09:45:30 10 julij 2009 PDT", "= Do payment_status "]                                                                         

 IRB (glavna): 013:0> unescaped_array = unescaped_array.map {| x | b = x.split ("="); b.push (nič), če b.size == 1, b}  

 => [["Uspeh", nič], ["mc_gross", "10,00"] ["protection_eligibility", "Neupravičeni"] ["payer_id", "U7PPJJ4TSJ47E"] ["davek", "0,00"] ["payment_date", "09:45:30 10. julij 2009 PDT"] ["payment_status", "Do"]]                               

 IRB (glavna): 014:0> flattened_array = unescaped_array.flatten     

 => ["Uspeh," je nič, "mc_gross", "10,00", "protection_eligibility", "Neupravičeni", "payer_id", "U7PPJJ4TSJ47E", "davek", "0,00", "payment_date", "09:45: 30 10. julij 2009 PDT "," payment_status "," Do "]
 IRB (glavna): 015:0>
 hash = Hash [* flattened_array]
 => {"Davek" => "0,00", "payment_status" => "Do", "payer_id" => "U7PPJJ4TSJ47E", "mc_gross" => "10,00", "SUCCESS" => nič, "payment_date" = > "09:45:30 10 julij 2009 PDT", "protection_eligibility" => "Neupravičeni"} 

BTW, se imenuje * Hlajenje operater v Ruby

Drug način za ustvarjanje hašiš iz 'paleto parov' je uporaba injicirati:

  hash = [[1,2], [3,4]] injekcijo ({}). {| rezultat, element | Rezultat [element.first] = rezultat [element.last]; rezultat} 

Obstaja še en način :) Napiši zanko, da bom zapustiti kot uresničevanje z bralci!

Tukaj je nekoliko povezano primerov uporabe za ustvarjanje haše od polja:

  IRB (glavna): 005:0> [1,2,3,4,7,9] group_by {| x | x <5.?  : Manj :: večja}

 => {: Manj => [1, 2, 3, 4]: več => [7, 9]} 

To lahko storite več stvari, v bistvu je rezultat bloka uporablja kot ključ za ta element, ki izhaja hash.

gmail, Mutt in msmtp fix

17. avgust, 2009 z Prashant · Komentarji
Pila pod: tehnologija

Če uporabljate Mutt in SMTP za dostop do Gmaila. Tukaj je (slaba) novica. Kul fantje na Googlu spet spremenila potrdilo. Oh, pa si vprašal - kako pa to veš? Enostavno Mutt začel pritožujejo nad slabo spričevalo, ko poskuša uporabiti msmpt, ki zloglasni "msmtp: TLS certifikata preverjanje ni uspelo. Potrdila ni dobil znano izdajatelju" me je pozdravil na zaslonu.

Prestopiti potrditi -
Samo teči po

$ msmtp --serverinfo --host=smtp.gmail.com --tls=on --port=587 --tls-certcheck=off

Namesto starega strežnika Thwate zdaj dobiš po v segmentu izdajatelja
Issuer:
Common Name: Google Internet Authority
Organization: Google Inc
Country: US

Na srečo je popravek preprost, tukaj je tisto, kar morate storiti na Debian

# apt-get install ca-certificates
# dpkg -s ca-certificates|grep Version
Version: 20090814

Po tem samo spremeniti vrstico v ste ~ i /. 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

s

tls_trust_file /usr/share/ca-certificates/mozilla/Equifax_Secure_CA.crt

Git in Awesome Survey

15. avgust 2009 z Prashant · Komentarji
Pila pod: misc

Tu sta dve povezave za raziskave po GiT (različica nadzorni sistem) in super (upravljalnik oken) skupnosti. Če uporabljate eno od teh, si vzeti nekaj časa, da izpolnite vprašalnik. Misli, da je najpreprostejši način, da prispeva nazaj v programski opremi, ki jo uporabljate.
Tu so povezave:

Git - http://www.survs.com/survey?id=2PIMZGU0&channel=Q0EKJ3NF54

Awesome - http://www.survs.com/survey?id=8BVEV3FO&channel=BH07CQ040D

Opomba - (kot so na teh straneh, ampak na dnu :) ) -
"Če imate omogočene piškotke, lahko vedno predloži delno izpolnjen vprašalnik in se vrniti na odgovore na kasnejši čas, in ga izpolni kasneje."