anketa, ping, pubsub, pubsubhub, pubsubhubbub

6. september 2009 z Prashant · Komentarji
Pila pod: tehnologija

V primeru, da so skeptični, da je metoda v norosti zgoraj, v naslovu delovnega mesta. V tech krogih ni verjetno, da še niste slišali za pubsubhubbub. Na hitro nekaj mesecih, je bil eden od prvih treh govoril o stvareh. Druga dva pa homomorphic šifriranje in Google val [ 1. ]. Prihaja nazaj na sedanje delovno mesto - izrazi v naslovu kažejo, kako dobiš vsebino od drugih ljudi. Po podrobnosti postalo bolj jasno, če si predstavljate stvari dogaja v zvezi z blogi, čeprav so konceptualno ni omejena na blogih.

Anketiranje se nanaša na scenariju, kjer stranke hranijo sprašuje, strežnik, če je kaj novega, pridi gor. Kako pogosto zaprositi za posodobitev bo vedno problem z volišč preveč pogosti ali preveč redko, ampak kot 1 bralec opozoril sem , da je ena super, stvar z volišč je, da strežnik ni nujno, da vzdržuje stanje.

Ping se nanaša na primer, ko, ko post članek, vi (ali vaša programska oprema), prav tako posodablja nekatere popularne (centralne) posodobitev storitev. Nekateri ozadje tukaj .

Naslednja je pubsub ki stoji za objavo / naročiti, eno igrišče za prvi je bil narejen tukaj z Evan Henshaw-Plath in Kellan Elliott-McCrea (72 slides, ampak vredno iti skozi). Nujni primer, da je proti je bilo to - na določen datum, FriendFeed plazil Flickr 2,9 milijona krat, da bi dobili najnovejše fotografije 45,754 uporabnikov, od tega je 6721 obiskal Flickr v teh 24 ur in bi lahko "potencialno" dodal fotografijo. Upoštevajte, da tisto, kar so predlagali ni nova tehnologija, saj poudarjajo out 'revolucionarno novo 20 let staro tehnologijo ". Če si to naredil za bloge kot eno od glavnih težav z XMPP - lahko prisotnost podatkov, plini, ki je lahko tako visoka kot 60-70% zmanjšajo veliko.

pubsubhub pomeni objaviti Naročni vozlišče in pubsubhubbub je protokol, jedro, ki je ideja pubsubhub. Čemer založniki (recimo Bloggers) posodobiti vozlišče, ki (lahko je več kot vozlišča, ki govorijo drug z drugim) prebiva "nekje v oblak", v skladu s protokolom, lahko to potiskanje ali vlečenje kot na protokol pa je naslednji člen v verige, vozlišč do naročnika (recimo bralcev) je vedno potisnite model. Ta stran je dobro izhodišče za pubsubhubbub, pregled diapozitivi so dobri. Kdaj zgovoren Anil Dash ga opisuje tukaj kot Pushbutton spletu.
Dva druge s tem povezane bralcev so webhooks , ki je v osnovi http callbacks. Github uporablja jo, tako da ne paypal za asinhroni obvestil o plačilu v IPN . Torej, to še mnogi drugi. Sorodni koncept rsscloud ki je spet pubsub središče. Sledite to povezavo za podrobnosti.

Morda se sprašujete, kaj je smisel vsega tega pisanja tu, obstajata dve 1. Te stvari je vredno vedeti, vsaj minimalno in 2. Ta blog je pubsubhubbub omogočeno zdaj preko vozlišča appspot uporabo tega WordPress plugin in krmo, preveč je pubsubhubbub omogočeno preko feedburner in povezavo tukaj
-
[ 1 ]. - Dobro uvodno branje za popolnoma homomorphic šifriranje je ta članek Bruce Schneier in ta pogovor je bolj ali manj edini vir za Google Wave.

-UPDATE - To sporočilo pojasnjuje, kako se lahko zahteva javni strežnik za povratni klic delal približno za namizne stranke z uporabo XMPP prehod (za pubsubhubbub).

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."

Združujejo v zgoščeni vsebini yaml datotek conf

31 julij 2009 z Prashant · Komentarji
Pila pod: tehnologija

YAML je zelo priročen za pisanje nastavitvene datoteke. Osnovna prednost je, da je se bere kot besedilno datoteko. Ta deluje zelo dobro, če je vaš config datoteka stanovanje (brez hierarhije) in nima ponovitev.
Če je vaš konfiguracije datoteka ponovitev potem je smiselno izločiti tiste elemente in jih ponovno. Kaj hočem reči je to - recimo, da ste napisali konfiguracijsko datoteko izgleda takole:

  razvoj:
   input_location: common_input
   output_location: dev_location
   mail:
     smtp_server: your_server
     Prijava: your_login
     geslo: top_secret
 produkcija:
   input_location: common_input
   output_location: dev_location
   mail:
     smtp_server: your_server
     Prijava: your_login
     geslo: top_secret 

Ob predpostavki, zgornjo kodo v / tmp / test.yml tukaj je, kako si lahko preberete v jezikih Python in Ruby
$cat readyml.py

 #! / Usr / bin / env python
 pprint od uvoza pprint kot ot
 # V Debian morali namestiti python-yaml
 od yaml uvoz obremenitve, load_all, smetišče
 hash = obremenitev (odprto ('/ tmp / test.yml'))
 odstotne točke (hash ["razvoj"]) 


$ cat readyml.rb

  #! / Usr / bin / env ruby
 zahtevajo želiš PP '
 hash = YAML :: obremenitev (File.open ('/ tmp / test.yml). branje)
 pp hash ['razvoj'] 

Tu je priročna podloga za različico 1 ruby
$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]' ali lahko poskusite enako v IRB ali python konzolo.

Upoštevajte, da v zgornji del kode, je vse drugo kot je izhodna lega enako na področju razvoja in proizvodnje delom. To je, če yml vozlišče identifikator gre za reševanje. Ideja je preprosta imajo vrsto privzete vrednosti in jih preglasijo na drugem mestu.
Lahko bi ga potegnite narazen, kot sledi:

  zamude: & Privzeta
   input_location: common_input
   output_location: dev_location
   mail:
     SENDER_NAME: pošiljatelj
     smtp_server: your_server
     Prijava: your_login
     geslo: top_secret
 razvoj:
   <<: * Podrobnosti privzeto
 produkcija:
   <<: * Podrobnosti privzeto
   output_location: prod_location 


$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]["mail"]["login"]'
"your_login"
$

Super, da deluje (tm)!.
Verjetno smo se z njimi trguje nekaj jasnost za malo čarovnijo. Tukaj je majhen razlaga: &, * in <<: in ki je sidro tag lahko razumemo kot vozlišča identifikator, * je vozlišče sklic in <<: pomeni razpršitve dokumentov.

Za več podrobnosti glej bodisi yaml očala ali Izbrani članek
Do sedaj tako dobro, vendar je ulov tukaj, ti zgostitvene združuje so brez rekurzije. Kaj to pomeni je to: recimo, da želite imeti drugačno ime pošiljatelja na pošti v dveh okoljih, vas bo morda zamikalo, da naredite naslednje:

  zamude: & Privzeta
   input_location: common_input
   output_location: dev_location
   mail:
     SENDER_NAME: pošiljatelj
     smtp_server: your_server
     Prijava: your_login
     geslo: top_secret
 razvoj:
   <<: * Podrobnosti privzeto
   mail:
     SENDER_NAME: sender_dev
 produkcija:
   <<: * Podrobnosti privzeto
   output_location: prod_location
   mail:
     SENDER_NAME: sender_prod 

Omogoča pregled

$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]["mail"]["login"]'
nil
$

Ups, kaj je šlo narobe, problem, kot je navedeno zgoraj, je, da hash spajanje ni rekurzivna in hkrati združitev je zamenjala naslov neplačila po pošti proizvodnje, ki ima samo eno tipko. Rešitev / delo okoli je Dogaja še eno stopnjo:

  common_settings: & common_settings
 input_location: common_input
 output_location: dev_location
 mail_defaults: & mail_defaults
  SENDER_NAME: pošiljatelj
   smtp_server: your_server
   Prijava: your_login
   geslo: top_secret

 zamude: & Privzeta
   <<: * Podrobnosti common_settings
   mail:
     <<: * Podrobnosti mail_defaults
 razvoj:
   <<: * Podrobnosti privzeto
 produkcija:
   <<: * Podrobnosti privzeto
   mail:
     <<: * Podrobnosti mail_defaults
     SENDER_NAME: sender_prod

Omogoča preverjanje še enkrat

$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]["mail"]["login"]'
"your_login"
$

Ali ste, da imate še eno raven gnezdenja, pa lahko zagotovo Dogaja še eno raven, potem pa postane nered. Torej, če se ne poskuša pisati rešitev stolpi Hanoju v conf datoteke, je bolje, da restucture conf datoteko kot kopanje v yaml ali kaj drugega. Ampak to je vaš klic vseeno.

Veliki programerji našli enostavne rešitve za kompleksne probleme

30. junij 2009 z Prashant · Komentarji
Pila pod: misc

Po dolgem času sem lahko našli vir za po-quote

Mladi programerji ustvarjajo enostavne rešitve za enostavne probleme. Senior programerji ustvarili kompleksne rešitve za kompleksne probleme. Veliki programerji našli enostavne rešitve za kompleksne probleme.

To je od eseja, imenovano Lepa Programska oprema Charles Connell.

Še en favorit eden od rudnika je Zen za Python -

Lepo je boljše kot grdo.
Explicit je bolje kot implicitno.
Enostavno je boljši od kompleksa.
Kompleks je bolje kot zapletena.
Stanovanje je bolje kot ugnezdena.
Redko je bolje kot gosta.
Berljivost šteje.
Posebni primeri niso dovolj, da bi posebna kršijo pravila.
Čeprav praktičnost bije čistost.
Napake ne sme nikoli tiho mimo.
Razen če ni izrecno utišani.
V obraz dvoumnosti, zavrne skušnjavi uganiti.
Treba bi bilo eno in po možnosti le en očiten način, da to storite.
Čeprav na ta način morda ne bo jasno, na prvi, razen če ste nizozemščina.
Zdaj je bolje kot nikoli.
Čeprav nikoli ne je pogosto bolje kot * pravico * zdaj.
Če izvedba je težko razložiti, da je to slaba ideja.
Če izvedba ni težko razložiti, je morda dobra ideja.
Imenskih prostorov so eden honking dobra ideja - naredimo več tistih!
-------------------------
in potem je klasična Tao Programiranje

-

krediti so na strani povezano-

Prevedla Geoffrey James

Prepisal Duke Hillard

Posredovati anupam Trivedi in Sajitha Tampi in Meghshyam Jagannath

Re-html-rešitev za virtuali in uredil Kragen Sittler

-

Knjiga 1 - Silent Void

Tako je govoril glavni programer:

"Ko ste se naučili, da ugrabil kodo napake iz pasti okvirja, je
bo čas, da zapusti. "

1,1

Nekaj ​​skrivnostnega je nastala, rojen v mirnem prostoru. Čakam samo in
unmoving je hkrati še vedno in še v nenehnem gibanju. Je vir
vseh programov. Ne vem njegovo ime, tako da bom imenujem Tao
Programiranje.

Če Tao je super, potem operacijski sistem je odličen. Če je operacijski
Sistem je super, potem prevajalnik je super. Če prevajalnik je super,
se vloga je super. Uporabnik je zadovoljen, in obstaja
harmonija na svetu.

Tao Programiranje teče daleč stran in se vrne na veter zjutraj.

1,2

Tao rodila jeziku stroja. Stroj jezik rodila
monter.

Monter rodila prevajalnik. Zdaj je 10.000
jeziki.

Vsak jezik ima svoj namen, vendar skromno. Vsak jezik izraža
Yin Yang in programske opreme. Vsak jezik ima svoje mesto v Tao.

Ampak ne programirajo v COBOL, če ga lahko preprečili.

1,3

V začetku je bil Tao. Tao rodila prostora in časa.
Zato Prostor in čas sta Yin Yang in programiranja.

Programerji, ki ne razumela Tao vedno zmanjkuje časa
in prostor za svoje programe. Programerji, ki razumela Tao napotke
imeli dovolj časa in prostora, da izpolnijo svoje cilje.

Kako bi lahko bilo drugače?

1,4

Pametno programer je povedal Tao in ga sledi. Povprečna
programer je povedal Tao in išče za to. Neumno programer
je povedal Tao smeje in ob njej.

Če ne bi bilo smeha, ne bi bilo Tao.

Najvišje zvoki so najbolj slišati.
V prihodnje je način za umik.
Veliki talent pokaže sam pozno v življenju.
Tudi popoln program, še vedno napake.

-------------------------

Knjiga 2 - Stari mojstri

Tako je govoril glavni programer:

"Po treh dneh brez programiranja, življenje postane nesmiselna."

2,1

Programerji starih bili skrivnostni in globoko. Ne moremo doumeti
njihove misli, da vsi delamo, je opisati njihov videz.

Zavedati, kot lisica, ki prečka vodo. Opozori, kot splošno na
bojišče. Prijazen, kot hostesa pozdrav svoje goste. Enostavno, kot
uncarved kosi lesa. Nejasen, kot so črne bazenih v zatemnjenih jam.

Kdo lahko pove skrivnosti svojih srcih?

Odgovor obstaja samo v Tao.

2,2

Veliki Mojster Turing nekoč sanjal, da je bil stroj. Ko je se je zbudil
je vzkliknil:

"Ne vem, ali sem Turing sanjal, da sem stroj, ali
stroj sanjal, da sem Turing! "

2,3

Programer iz zelo veliko podjetje računalniške programske opreme šel
konferenco, nato pa vrnil v svoje poročilo upravitelja, rekoč: "Kakšen
od programerji delajo za druga podjetja? Ti obnašal slabo in so bili
Brezskrben z nastopi. Njihova dlaka je dolga in unkempt in njihovi
Oblačila so bila nagubana in stare. Ti strmoglavilo našo gostoljubnost zbirko in jih
je nesramno hrup v moji predstavitvi. "

Vodja je dejal: "Še nikoli nisem bi vas poslal v konferenco. Tisti
programerji živijo onkraj fizičnega sveta. Menijo, da življenje nesmiselno,
naključno naključje. Ti pridejo in gredo, ne da bi vedel omejitve.
Brez skrbi, živijo zgolj za svoje programe. Zakaj bi se trudim
s socialnimi konvencijami?

"So živi v Tao."

2,4

Novice pozvane mojstra: "Tukaj je programer, ki nikoli ne oblikuje,
dokumenti ali testi svoje programe. Vendar vsi, ki vedo, mu menijo mu eno
najboljši programerji na svetu. Zakaj je to? "

Mojster odgovori: "To je programer obvlada Tao. On je šel
presegajo potrebe po načrtovanju, on ne postane jezen, ko je sistem
zruši, vendar se strinja, vesolje, brez skrbi. On je preseglo
potrebe po dokumentaciji, on ni več mar, če še kdo vidi svojo kodo.
On je preseglo potrebe po testiranju, vsak od njegovih programov so kot nalašč
v sebi, miren in eleganten, njihov namen samoumevna. Resnično,
, ki jo je začela skrivnost Tao. "

-------------------------

Knjiga 3 - Oblikovanje

Tako je govoril glavni programer:

"Ko je program, ki se preskuša, je prepozno, da bi oblikovanje
spremembe. "

3,1

Nekoč je bil človek, ki je šel na razstavi računalniške trgovine. Vsak dan, kot je on
začela, človek povedal policist na vratih:

"Sem velik lopov, znana po svojih podvigih kraje v trgovinah. Bodite
forewarned, za tem sejmu ne sme uiti unplundered. "

Ta govor motnje v straže močno, saj je bilo na milijone
dolarjev računalniške opreme znotraj, tako da je gledal človeka previdno. Ampak
človek samo hodil od kabine do kabine, pela tiho k sebi.

Ko človek ostane, čuvaj ga vzel stran in iskal svojo obleko, ampak
nič ni bilo mogoče najti.

Na naslednji dan borze, mož vrnil in je grajal straže
rekel: "Jaz pobegnil z veliko plena včeraj, danes pa bo celo
bolje. "Torej čuvaj ga gledal vse bolj tesno, a brez uspeha.

Na zadnji dan v sejmu, lahko policist omejili svojo radovednost
ni več. "Gospod Thief," je dejal: "Jaz sem tako zmeden, ne morem živeti v
mir. Mi prosim razsvetli. Kaj je to, da ste kradli? "

Mož se je nasmehnil. "Jaz sem ukradel ideje," je dejal.

3,2

Nekoč je bil glavni programer, ki je napisal nestrukturiranih programov.
novice programer, ki želijo posnemati ga, prav tako začel pisati
nestrukturiranih programi. Ko novice vprašal kapitana oceno njegovega
napredek, mojster mu očitati, da je pisanje nestrukturiranih programov,
besedami: "Kaj je potrebno za poveljnika ni primerna za
novice. Morate razumeti, Tao pred preseganju strukturo. "

3,3

Tam je bil nekoč programer, ki je pritrjena na sodišču gospodarja vojne
od Wu. Vojskovodja pozvane, programer: "Katero je lažje oblikovati tudi:
računovodski paket ali operacijski sistem? "

"Operacijski sistem,« je odvrnil programer.

Vojskovodja izrekel tudi klicaj za nejeverno. "Zagotovo računovodstvo
Paket je trivialna poleg kompleksnosti operacijskega sistema, "je
je dejal.

"Ne tako," je dejal programer, "pri oblikovanju računovodski paket,
programer deluje kot posrednik med ljudi, ki imajo drugačno
ideje: kako mora delovati, kako morajo njegovi poročila pojavljajo, in kako je treba
v skladu z davčno zakonodajo. Nasprotno pa je operacijski sistem ni omejen
zunanjih nastopov. Pri oblikovanju operacijski sistem, programer
išče najpreprostejši harmonijo med strojem in idej. To je razlog, zakaj
operacijski sistem je lažje oblikovati. "

Vojskovodja iz Wu je prikimal in se nasmehnil. "To je vse dobro in dobro, vendar
, ki je lažje odpravljanje napak? "

Programer je brez odgovora.

3,4

Vodja šla na glavni programer in mu pokazal zahteve
dokument za novo uporabo. Vodja vprašal kapitana: "Kako dolgo
bo potrebno oblikovati ta sistem, če bi dodeli pet programerji z njim? "

"To bo trajalo eno leto," je dejal poveljnik takoj.

"Vendar moramo ta sistem takoj ali pa še prej! Kako dolgo bo
da če bi dodeli deset programerji z njim? "

Programer mojster namrščil. "V tem primeru bo trajalo dve leti."

"In kaj, če mi dodeli sto programerji za to?"

Programer mojster skomignil z rameni. "Potem zasnova ne bo nikoli
zaključena, "je dejal.

-------------------------

Knjiga 4 - Coding

Tako je govoril glavni programer:

"Dobro napisana program je sama nebesa, slabo napisan program
sam pekel. "

4,1

Program mora biti lahka in okretna, njegove podprogram povezan kot
biseri. Duh in namen programa je treba ohraniti
v celotnem besedilu. Ne sme biti niti premalo ali preveč, niti
nepotrebnih zanke niti neuporabna spremenljivke, niti pomanjkanje strukture niti
velika togost.

Program mora slediti `zakon z najmanj presenečenje". Kaj je ta zakon?
To je preprosto, da je program vedno odzove na uporabnika na poti
, ki ga astonishes najmanj.

Program, ne glede na to, kako zapleteno je treba delovati kot eno enoto. Program
naj se usmerja v logiki in ne zunanjega videza.

Če program ne uspe v teh zahtev, bo v stanju
nered in zmedo. Edini način za odpravo tega je, da znova
program.

4,2

Novice vprašal kapitana: "Imam program, ki včasih deluje in
včasih aborts. Sledil sem pravil programiranja, vendar sem
popolnoma nerazumljiva. Kaj je razlog za to? "

Poveljnik odgovoril: "Vi ste zmedeni, ker ne razumete Tao.
Samo bedak pričakuje razumno vedenje svojih soljudi. Zakaj ste
jo pričakujete od stroja, ki so konstruirane ljudje? Računalniki simulirajo
determinizem, le Tao je kot nalašč.

"Pravila programiranja so prehodnega značaja; le Tao je večna. Zato
moraš razmišljati Tao, preden boste prejeli razsvetljenje. "

"Ampak, kako bom vedel, ko sem prejel razsvetljenje?" Vprašal
novice.

"Vaš program bo torej prost pravilno,« je odvrnil, da kapitan.

4,3

Mojster je bil pojasniti naravo Tao na enem od svojih novince. "
Tao je vključeno v vse programske opreme - ne glede na to, kako nepomembno, "je dejal
mojster.

"Ali je Tao v ročnim kalkulatorjem?« Je vprašal novice.

"To je,« je prišel odgovor.

"Ali je Tao v video igri?" Je nadaljeval novic.

"To je tudi v video igri," je dejal poveljnik.

"In je Tao v DOS-u za osebni računalnik?"

Poveljnik zakašljal in preusmerila svoj položaj nekoliko. "Lekcija je končana
za danes, "je dejal.

4,4

Programer princa Wang je kodiranje programske opreme. Njegovi prsti so plesali po
tipkovnica. Program pripravi, ne da bi sporočilo o napaki in program
tekel kot nežen veter.

"Odlično!" Prince je vzkliknil: »Vaš tehnika je brez napak!"

"Tehnika?" Je dejal programer obrača od svojega terminala: "Kaj sem
upoštevati je Tao - preko vseh tehnik! Ko sem prvič začel programirati I
bi videli pred mano celoten problem v enem mase. Po treh letih sem brez
več videli to maso. Namesto tega sem podprogramov. Zdaj pa vidim ničesar.
Moje celotno bitje obstaja v brezobličnega praznino. Moji čuti so idle. Moj duh,
prosimo, da dela brez načrta, sledi svoj nagon. Skratka, mojega programa
sam piše. Res je, včasih so težki problemi. Vidim jih
prihajajo, sem upočasnil, sem gledal tiho. Potem sem spremeniti eno vrstico kode
in težave izginejo kot puder v idle dima. Nato sem sestaviti
program. Sedim pri miru in pustite veselje dela izpolnite moje bitje. Zaprem
oči za trenutek in potem odjavite. "

Prince Wang je rekel: "Bi, da so bile vse moje programerjev kot pametno!"

-------------------------

Knjiga 5 - Vzdrževanje

Tako je govoril glavni programer:

"Čeprav program pa tri vrstice dolgo, nekega dne bo moral biti
ohraniti. "

5,1

Dobro razširjenih vrat ne potrebuje olje na svojih tečajih.
Hiter, tekoč tok ne raste stagnira.
Niti dobro niti misli lahko potujejo skozi vakuum.
Programska oprema gnil, če ne uporablja.

To so velike skrivnosti.

5,2

Vodja vprašal programer, kako dolgo bi ga lahko do konca
Program, na katerih je delal. "To se bo končal jutri,"
programer takoj odgovoril.

"Mislim, da ste se nerealno," je dejal vodja "Po resnici, kako
dolgo bo to trajalo? "

Programer je za trenutek pomislil. "Imam nekaj značilnosti, ki ga želim
dodati. To bo trajalo vsaj dva tedna, "je končno rekel.

"Tudi to je preveč pričakovati," je vztrajal vodja, »bom
izpolnjen, če si preprosto mi povej, ko je program končan. "

Programer s predlogom strinjala.

Nekaj ​​let kasneje, vodja upokojil. Na poti do svoje upokojitve
kosilo, je odkril programer zaspal na svojem terminalu. Bil je
programiranje vso noč.

5,3

Novice programer je enkrat dodeljen kodo preprosto finančni paket.

Novice besno delali več dni, ko pa njegov gospodar pregledati
njegov program, je odkril, da je vsebovala zaslon urednik, sklop
splošni grafika rutine, umetna inteligenca vmesnik, vendar
niti najmanjšega omenja ničesar finančno.

Ko mojster vprašal o tem, novinec postal ogorčen. "Ne bodite
tako nestrpni, "je dejal:" Jaz bom dal v finančni stvari na koncu. "

5,4

Ali je dober kmet zanemariti tudi pridelek, ki ga je zasajeno?
Ali je dober učitelj spregledati še tako skromno študenta?
Ali je dober oče lahko sam otrok stradati?
Ali je dober programer zavrne ohraniti svojo kodo?

-------------------------

Knjiga 6 - Upravljanje

Tako je govoril glavni programer:

"Naj programerji so mnogi managerji in malo - potem bo vse
produktivno. "

6,1

Ko menedžerji imajo neskončne srečanja, programerji pišejo iger. Ko
računovodje govoriti o četrtletnih dobičkov, razvoj proračuna bo kmalu
rezati. Ko vodilni znanstveniki govorijo modro nebo, oblaki so na tem, da roll
noter

Resnično, to ni Tao programiranja.

Ko menedžerji prevzamejo obveznosti, so prezrti igre programi. Ko
računovodje, da dolgega dosega načrtov, harmonijo in red na tem, da je
obnoviti. Ko vodilni znanstveniki rešujejo težave pri roki,
Težave se bodo kmalu rešili.

Resnično, to je Tao programiranja.

6,2

Zakaj so programerji ne-produktivno?
Ker je njihov čas zapravili na sestankih.

Zakaj so programerji uporniški?
Ker je upravljanje moti preveč.

Zakaj so programerji odstopu enega po enega?
Ker so pregorele.

Potem ko je delal za slabo upravljanje, ki jih ni več vrednost svoje delo.

6,3

Vodja je bil kmalu odpustili, ampak programer, ki je delal za njega
izumil nov program, ki je postala priljubljena in prodajajo tudi. Kot rezultat,
Vodja ohrani svoje delo.

Vodja poskušal dati programer bonus, vendar programer
ga zavrnila, rekoč: »sem napisal program, ker sem mislil, da je
zanimiv koncept, zato pričakujem nobenih nagrado. "

Vodja Na podlagi tega pripomnil: "To programer, čeprav jo ima
Položaj malih ugled, razume tudi ustrezno dolžnost
zaposleni. Dovolite nam, ga spodbujati k vzvišeno mesto upravljanja
svetovalec! "

Toda, ko je povedal to, programer še enkrat zavrnil, rekoč: "Jaz obstajajo tako
da sem lahko program. Če bi jaz napredoval, bi naredil nič, ampak z odpadki
vsakogar čas. Ali lahko grem zdaj? Imam program, ki delam naprej. "

6,4

Vodja odšel v svojih programerjev in jim povedal: "V zvezi s svojim delom
ur: boste imeli, da pridejo v ob devetih zjutraj in pustite
ob petih popoldne. "Na to, vsi so postali jezni in več
odstopil na kraju samem.

Torej vodja je dejal: "V redu, v tem primeru lahko nastavite sami
delovnega časa, dokler boste končali svoje projekte v predvidenem roku. "
programerji, ki je zdaj zadovoljen, se je začela, da pridejo v opoldne in delo z majceno
ure zjutraj.

-------------------------

Knjiga 7 - podjetja Wisdom

Tako je govoril glavni programer:

"Lahko dokaže, program za podjetja izvršni, vendar ne morete
da mu računalniško pismeni. "

7,1

Novice vprašal kapitana: "Na vzhodu je veliko dreves struktura
da ljudje imenujejo 'Sedež podjetja ". To je bloated od oblike z
vice predsedniki in računovodje. Izda množico beležke, vsak
rekel: 'Pojdi, torej! " ali 'Pojdi, Naovamo!' in nihče ne ve, kaj pomeni. Vsako
leto nova imena, so zbrani na veje, toda vse brez uspeha. Kako lahko
kot nenaravno oseba mora biti? "

Kapitan je odgovoril: "Ti dojemajo to ogromno strukturo in so
moti, da nima namena racionalno. Ne morete vzeti iz zabavo
njene neskončne gyrations? Se vam ne uživajo untroubled enostavnost programiranja
Pod svoje zatočišče veje? Zakaj moti njenega
neuporabnost? "

7,2

Na vzhodu je morski pes, ki je večji od vseh drugih rib. To
spremeni v ptico, katere krila so kot oblaki polnjenje nebo. Ko se to
ptica se premika po kopnem, saj prinaša sporočilo od dobička pravnih
Sedež. To sporočilo se spusti v sredi programerjev,
kot Galebom odločitev svoj pečat ob plaži. Potem ptica vgradnjo na
veter in z modrega neba na njegovem hrbtu, se vrne domov.

Na strmi programer novice v čudo na ptice, saj on ga razume
ne. Povprečna programer dreads prihod ptica, na boji
njeno sporočilo. Programer mojster še naprej delati na svojem terminalu, za
ne ve, da je ptica prišel in odšel.

7,3

Čarovnik v slonokoščenem stolpu prinesel svoj najnovejši izum, za
mojster programer, da preuči. Čarovnik na kolesih veliko črno polje v
magistrsko urad, medtem ko je čakal mojster v tišini.

"To je integriran, porazdeljeni, za splošne namene delovno mesto," se je začela
čarovnik, "ergonomsko oblikovan z lastniškimi deluje
Sistem, šesti jeziki generacije in več najsodobnejše uporabnika
vmesniki. To je moje pomočnike več sto let človek za gradnjo.
Ali ni neverjetno? "

Poveljnik dvigne obrvi rahlo. "To je zares neverjetno," je
je dejal.

"Sedež podjetja je ukazal," je nadaljeval čarovnik, "da
vsi uporabljati to delovno postajo kot platformo za nove programe. Ali se strinjate,
na to? "

»Seveda,« je odvrnil, da kapitan, bo "sem ga odpelje
podatkovnega centra takoj! "In čarovnik vrnil v stolp, dobro
zadovoljen.

Nekaj ​​dni kasneje novice hodil v pisarno poveljnika
programer in rekel: "Ne morem najti seznam za mojega novega programa. Ali
veste, kje bi lahko bilo? "

»Da,« je odvrnil, da kapitan, "se oglasi zložene na platformi v
podatkovnega centra. "

7,4

Poveljnik programer premakne od programa do programa brez strahu. Št
sprememb v upravljanju, lahko mu škoduje. On ne bodo odpustili, čeprav
Projekt je odpovedan. Zakaj je to? Bil je poln Tao.

-------------------------

Knjiga 8 - strojne in programske opreme

Tako je govoril glavni programer:

"Brez vetra, trava ne premika. Brez programske opreme, strojne opreme je
neuporabna. "

8,1

Novice vprašal kapitana: "vidim, da je ena računalniško podjetje veliko
večji od vseh drugih. To stolpi nad svojo konkurenco, kot velikan med
palčki. Kateri koli od njenih oddelkov lahko zajema celotno poslovanje. Zakaj
to tako? "

Kapitan je odgovoril: "Zakaj sprašuješ take neumno vprašanje? Ta družba
je velika, saj je velika. Če je le strojne opreme, bi nihče ne kupi
ga. Če je le programsko opremo, bi nihče ne uporablja. Če je le vzdržuje
sisteme, bi ljudje obravnavajo kot uslužbenca. Ampak zato, ker združuje vse
od teh stvari, ljudje mislijo, da eden od bogov! Jih ne poskuša
Prizadevamo si, jih premaga brez truda. "

8,2

Programer mojster opravil novice programer en dan. Poveljnik opozoriti
začetnike je ukvarjala z ročnim računalniške igre. "Oprostite,"
je rekel, "lahko sem ga preuči?"

Novice sorniki za pozornost in izročil napravo za poveljnika. "Jaz
vidimo, da je naprava trdi, da ima tri ravni tekme: Enostavno, srednje-in
Trdi, "je dejal poveljnik. "Vendar vsaka taka naprava ima drugo stopnjo
igra, kjer se naprava ne želi, da bi osvojil človeka, niti se zavzeli
ki jih človeško. "

"Molite, veliko gospodar," prosil začetnike, "kako najdemo to
skrivnostna nastavitev? "

Poveljnik padla napravo na tla in ga zdrobili pod nogami. In
Nenadoma se je razsvetljeni novice.

8,3

Tam je bil nekoč programer, ki je delal na mikroprocesorjev. "Poglejte, kako
dobrem položaju sem tukaj, "je dejal na mainframe programer, ki je prišel na obisk,
"Imam svoj lasten operacijski sistem in naprava za shranjevanje datotek. Jaz ne bi bilo treba
delim svoje vire z nikomer. Programska oprema je samo-dosledni in
enostaven za uporabo. Zakaj ne zaprete vaše sedanje delo in mi pridružite tukaj? "

Mainframe programer nato začel za opis svojega sistema za svojega prijatelja,
rek "mainframe sedi kot stari meditira žajbelj sredi
v podatkovnem centru. Njeni diskov ležijo end-to-end, kot so veliki ocean
stroji. Programska oprema je kot večplasten kot diamant in kot zapleten
kot prvinski džungle. Programi, vsak edinstven, premikanje prek sistema
kot hitro tekočem reki. Zato sem vesel, kjer sem jaz. "

Mikroračunalnik programer, je na podlagi tega, utihnili. Ampak 2
programerji ostala prijatelja do konca svojih dni.

8,4

Strojna oprema Programska oprema srečal na poti v Changtse. Programska oprema je dejal: "Vi ste
Yin in Yang sem. Če bomo potovali skupaj bomo postali slavni in zaslužite
ogromne vsote denarja. "in tako, določeni skupaj, misleč, da bi osvojil
svetu.

Danes so se srečali Firmware, ki je bil oblečen v razcapanih krpe in hobbled
skupaj naslonil na trnovo palico. Firmware jim je rekel: "Tao leži
preko yina in yanga. To je tiho in še vedno kot bazen vode. To počne
ne iščejo slavo, zato nihče ne ve, svojo prisotnost. Ne iščejo
sreča, za to je popolna v sebi. Obstaja preko prostora in
časa. "

Programsko in strojno opremo, sram, vrnili na svoje domove.

-------------------------

Knjiga 9 - Epilog

Tako je govoril glavni programer:

"Čas je, da odideš."

-------------------------

Če ti je všeč to, boste morda želeli, da se glasi slabše je boljše

Malo preusmeritve lupine

10. maj 2009 z Prashant · Komentarji
Pila pod: tehnologija

Tukaj je, kako smo normalno delati lupine preusmeritev
$ ./pgm.sh args >out.txt 2>err.txt
Hotel sem spremeniti to malo in vodijo naslednje
$ ./pgm.sh args
z zahtevo, da mora proizvodnja in napake iti do neke datoteke izračunano v notranjosti pgm.sh na podlagi argumenta. Ena nazoren primer, ko bi lahko datum je del argumenta. Torej bi radi stdout iti reči / vaše / imenik / pgm_out_YYYYMMDD.txt 1

Problem s standardno način preusmerjanje N>file.txt kar pomeni, združuje datoteke deskriptorjev N do datoteka.txt, je, da deluje samo za novo viličasti proces in ne za tekoče procesa.
tako
$ echo hi 1>out.txt ; echo hii . bo poslal na hi out.txt temveč bo izpisal hii v stdout 2

To je, če exec gre za našo pomoč. Če dodamo exec 1>somefile.txt potem izhod iz preostalega scenarij pojdite na somefile.txt

$ cat test.sh
#!/usr/bin/env bash
exec 1>out.txt
echo hi
echo hii
$. / Bo test.sh preusmeriti hi, pa tudi, da hii out.txt

Podobno kot preusmerite stdout ter stderr bomo narediti kaj takega
cat test2.sh
exec 1>out.txt
exec 2>err.txt
echo out text
echo 1>&2 err text
somenoneexitent command
ls -ld /tmp

Zdaj prihajajo nazaj na prvotno točko preusmerjanje do neke datoteke iz notranjosti lupine, recimo Program izračuna ime datoteke v nekaterih spremenljivo izhodna_datoteka, bi lahko storili le exec 1>$OUTFILE

, Ki rešuje trenutni problem. Toda lahko vam je všeč, da gredo skozi naslednji primer, ki dosega "z vzorčenjem dostop 'v datoteko v lupinski skript. Primer je od tu
echo 1234567890 > File # Write string to "File".
exec 3<> File # Open "File" and assign fd 3 to it.
read -n 4 <&3 # Read only 4 characters.
echo -n . >&3 # Write a decimal point there.
exec 3>&- # Close fd 3.
cat File # ==> 1234.67890

S pripombami, ta koda je samoumevne.
-
1 , lahko je tudi treba storiti z $ ./pgm.sh args >pgm_out`date +%Y%m%d` , ampak ideja je, da ustvari to ime datoteke na osnovi neke logike v sam program.
2 1 na 1> out.txt je odveč, vendar je tu pojasnjuje, da so preusmerjanje FD 1

Sony VAIO pregled

29. april 2009 z Prashant · Komentarji
Pila pod: pregledov,

Mesec nazaj sem kupil Vaio NS25G in so se nameravate napisati ta post od takrat. Ta objava je v prvi vrsti ugotavlja, da sebe in proučevanje le-teh. Poglejmo dol oznako hitro -

Odgovor ima dva dela -

I. Pregled strojne opreme
II. Namestitev Debian in stvari za namestitev

I. Pregled strojne opreme

Ker nisem marketing VAIO fant, bom začel obratno -

Zakaj ne boste želeli kupiti ta laptop:

  1. NE Bluetooth: verjemite mi, v letu 2009 prodaja sony laptop brez bluetooth. Seveda lahko uporabite usb stvari, ampak ...
  2. Velikost zaslona je 15,4 cm: če potujete veliko, potem je to laptop ne sme biti zelo priročna in tudi 2.9kg prenosnik ni ravno najlažja okoli.
  3. Št izhod HDMI.
  4. Št ločeno grafično kartico in podobno. (In ne namenskega video pomnilnika

Zdaj, zakaj se boste morda želeli kupiti:

  1. Ta laptop je prekleto dober desktop. Kaj hočem reči je to, če je vaša zahteva je, kot sem jaz - predvsem pisanju programov in poskuša uporabiti to 25 od 24 ur, nato pa z velikim zaslonom, zelo udobno tipkovnice s prostorno počitka dlani in dobro Compute moči, je vseeno zelo dobra kombinacija.
  2. To je 2MB L2 predpomnilnika in procesor / pomnilnik 800 MHz sistemsko vodilo so. Ne igranje iger tako ne moremo reči o tem, ampak za kaj drugega, ampak Core 2 Duo procesor z 2GHz freq je dobro, to je več kot dovolj.
  3. Iz moje uporabe, vidim procesor večinoma ure na 1.2GHz in 500 MB pomnilnika ~ i. That just reinforces previous point.
  4. Battery backup is good, ~2 hrs is what I get.

Just one more thing here – being Sony, it will cost you a bit than other laptops with similar configuration, but that is a call u have to make.

II. Configuring linux (to run out of box ! ) :
It came pre installed with Vista( I think home premium or some fancy name like that). Dungara booted once and created another partition of 150 GB. Debian testing is what I always install and then up(down?)grade to 'unstable' sid.

Things which worked without any problem:

  1. X - unsurprisingly X server had not problem with starting or resolution. After one of the upgrades X refused to start though, but 'X -configure' generated a conf file which worked pretty well.
  2. Audio - Audio output and external mic work fine. kernel version 2.6.29-1-686 #1 SMP and alsa version 1.0.17. This is what you get from
    $ lspci -v |grep Audio 00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Con1.0.17troller (rev 03)
  3. Video cam – just works
  4. Hibernate to disk and back – no problem
  5. Wireless - in short – just works.
    $ lspci |grep -i wireless
    03:13:55 04:00.0 Network controller: Atheros Communications Inc. AR928X Wireless Network Adapter (PCI-Express) (rev 01) .

    I think kernel 2.6..27 onwards it works with the stock kernel source. You dont have to install ndiswrapper or things like t
    hat. As a note, please say good buy gnome-network-manager and welcome wicd, it is just a gui layer but behind the scene they have fixed lot of config stuff like wpasupplient and more.

What doesn't work -

  1. Somehow internal mic refuses to work :( External mic works fine though. Latest alsa sources did not compile cleanly on debian, so for the time being I bought external Internal mic, will try to dig into it sometime in future though.

Few more misc hints for deiban:

  • Package for devnagri font- ttf-indic-fonts
  • Package for flash player – flashplugin-nonfree
  • Entry in sources.list for mplayer and likes – deb http://www.debian-multimedia.org sid main
  • Entry in sources.list for e17 – deb http://debian.alphagemini.org/ unstable main
  • Entry in sources.list for skype – http://download.skype.com/linux/repos/debian/ stable non-free

oneliner for increasing and decreasing the brightness -

[root]prashant@vaio09:12 PM$ cat bin/incbrightness.sh
#!/usr/bin/env bash
echo $[1+`cat /sys/class/backlight/acpi_video0/brightness `] >/sys/class/backlight/acpi_video0/brightness

you'll have to put this in sudo though.
and to decrease change + to – and … you get the idea, right !

A bit more, if you use enlightenment(e17) here are few more hints -

[enlightenment key bindidings]

You can use following key code and mapping

mute :
KEY="Keycode-160" ACTION="exec" PARAMS="/usr/bin/amixer -q set Master toggle"
hibernate :
KEY="Keycode-165" ACTION="exec" PARAMS="sudo /usr/sbin/hibernate-disk"
volume decrease :
KEY="Keycode-174" ACTION="exec" PARAMS="/usr/bin/amixer -q set Master 2-"
volume increase:
KEY="Keycode-176" ACTION="exec" PARAMS="/usr/bin/amixer -q set Master 2+"
increase brightness :
KEY="Keycode-212" ACTION="exec" PARAMS="sudo /root/bin/incbrightness.sh"
decrease brightness
KEY="Keycode-101" ACTION="exec" PARAMS="sudo /root/bin/decbrightness.sh"

Naslednja stran »