Prieskum, stolný, pubsub, pubsubhub, pubsubhubbub

V prípade, že sú skeptickí, je metóda v šialenstvo vyššie, v názve príspevku. V tech kruhoch je nepravdepodobné, že ste počuli o pubsubhubbub. V rýchlych niekoľko mesiacov, to bol jeden z troch najväčších hovoril o veciach. Ďalšie dva byť homomorfní šifrovanie a Google vlna [ 1. ]. Návrate do súčasnej post - termíny v názve naznačujú, ako sa dostať obsah od ostatných ľudí. Nasledujúce údaje sa viac zrejmé, že ak si predstaviť, čo sa deje s ohľadom na blogy, aj keď sú koncepčne neobmedzuje len na blogy.

Dotazovanie sa vzťahuje k situácii, kedy klienti Proste na server, ak sa niečo nové vymyslieť. Ako často žiadať o zmenách bude vždy problém s príliš častým kladením otázok alebo príliš časté, ale ako jeden čitateľ poukázal na , že jeden veľký, vec sa vypočúvanie je, že server nemá k udržaniu stavu.

Ping sa vzťahuje na prípad, keď písať článok, vy (alebo váš softvér) sa tiež aktualizuje niektoré populárne (centrálne) aktualizačnej služby. Niektoré pozadí tu .

Ďalšia je pubsub čo je skratka pre publish / subscribe, jeden z najbližšej ihrisko pre to bolo robené tu Evan Henshaw-Plathovej a Kellan Elliott-McCrea (72 snímok, ale stojí za to prechádza). Presvedčivé príklad dali proti bol tento - k určitému dátumu, FriendFeed plazil Flickr 2,9 milióna krát získať najnovšie fotky 45,754 užívateľov, z toho 6721 navštívil Flickr v tých 24 hodín a mohol "potenciálne" nahrali fotografie. Všimnite si, že to, čo navrhoval nie je nová technológia, pretože poukazujú na "revolučný nový 20 rokov staré technológie". Ak to pre blogy, potom jedným z hlavných problémov, s XMPP - prítomnosť dát nad hlavou, čo môže byť tak vysoko ako 60-70% môže byť znížená veľa.

pubsubhub znamená publikovať subscribe húb a pubsubhubbub je protokol, jadro je myšlienka pubsubhub. Wherein vydavateľov (teda bloggerov) aktualizovať centrum, ktoré (môže byť viac ako jeden náboje, ktoré spolu hovoria) žije "kdesi v oblaku", podľa protokolu to možné tlačiť alebo ťahať podľa protokolu, ale v ďalšej odkaz reťaz, náboje na klienta (povedzme čitateľa) je vždy presadzovať model. Táto stránka je dobrým východiskovým bodom pre pubsubhubbub, prehľad snímky sú dobré. Niekedy veľavravné Anil Dash popisuje to tu ako tlačidlom webe.
Dva ďalšie súvisiace čitateľov sú webhooks čo je v podstate http spätné volania. Github používa ho, tak sa paypal pre asynchrónne oznámenia o platbe v IPN . Tak to mnoho ďalších. Príbuzné poňatie je rsscloud čo je opäť pubsub náboj. Nasledujte tento odkaz podrobnosti.

Možno sa čudujete, čo má zmysel písať to všetko tu, sú tam dva 1. Tieto veci sú dobré vedieť, minimálne aspoň a 2. Tento blog je povolené pubsubhubbub teraz cez hubu appspot pomocou tohto wordpress plugin a krmív, príliš je povolené pubsubhubbub cez FeedBurner, odkaz tu
-
[ 1 ]. - Dobré úvodné čítanie pre plne homomorfní šifrovanie je tento článok Bruce Schneier a táto diskusia je viac či menej jediný zdroj pre Google Wave.

-UPDATE - Tento príspevok vysvetľuje, ako možno požiadavku na verejnom serveri pre spätné volanie je obísť pre desktopové klientov pomocou XMPP bránu (pre pubsubhubbub).

Trochu montáže

29.srpna 2009 od Prashant · Komentáre
Súbor pod: technológie

Po prečítaní tohto článku o nárazníky Lock Free a videl využitie CAS (porovnanie a výmena), pripadal som si ako vysielanie kód assembleri, aby urobili to isté. Use case tam bolo napísať natívne metódy a volať z Java späť do 1.5, kedy súbežné dátové štruktúry v Jave boli viac či menej neexistuje). Bez ďalších okolkov, ja sa uvoľnil kód na vás :) . Prvým z nich je pre CAS a druhý je pre výpočtovú GCD pomocou Euclid algoritmus (ten možno nájsť na mnohých miestach a cvičenie i).

Kompilovať a spúšťať inštrukcie gcc file_name.c ; ./a.out

Porovnajte a Swap

   # Include 
  # Include 
 / / Výmena - newValue, comperand je starý / očakávaná hodnota
 / *
  * Funkcia vlastne robí nasledujúce vec - ak je hodnota na * dest sa rovná oldvalue potom ho nahradiť iným newValue ponechať bezo zmeny: to všetko atomárny
  *
  * Existujú dve možnosti pre návratové hodnoty
  * 1.is počiatočná hodnota z * dest a nechať záťaže volajúceho FXN porovnať ju s oldval
  * 2.  to sem a vráti 0 alebo 1, malo by to byť efektívnejšie
  ** /

 / * Neskôr zmeniť v makre * /
 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 result = 1 ;/ * 1 ukazuje, že sa podarilo cas a 0 ukazuje, že sa nepodarilo * /
	 / * Btw treba nastaviť cc pre vlajky prepisovanie!  * /
	 __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" / * LOCK by mal byť na rovnakom riadku * /
			 "JZ Dané \ n \ t"
			 "Movl $ 0,% 1 \ n \ t"
			 "Dané: \ n \ t"
			 : "= M" (dest), "= g" (výsledok)
			 : "G" (oldvalue), "G" (newValue), "m" (dest)
			 : "% EAX", "% EBX", "ECx", "cc"
			 );
	 printf ("(% d,% d,% d)", * dest, oldvalue, newValue);
	 return vysledok;
 }

 / * TODO
  * Napísať ďalšie asm FXN ktorý sa prejavuje predovšetkým FXN v cykle while a ďalej snažiť, ak uspeje * /

 int main () {
	 int = 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,));
	 printf ("% d \ n", CAS (c,,));
	 printf ("% d \ n", CAS (c, b, b));
	 * C = 6;
	 / * C = 5; * /
	 printf ("meniace sa hodnota * c k% d \ n", * c);
	 printf ("% d \ n", CAS (c, b, b));
	 printf ("% d \ n", CAS (c, b,));
	 printf ("% d \ n", CAS (c,,));
	 printf ("% d \ n", CAS (c, a, b));
	 printf ("% d \ n", CAS (c, b,));
	 return 0;
 }

Formátovanie poznámky - sa zdá byť ako zvýrazňovač syntaxe wp je pridanie nakoniec ignorovať.

GCD

 # Include 
 int GCD (int, int b) {
     int vysledok;
     / * Počítať najväčší spoločný deliteľ pomocou Euclid algoritmus * /
     __asm__ __ volatile__ ("movl% 1,%% EAX;"
                           "Movl% 2,%% EBX;"
                           "CONTD: cMpl $ 0,%% EBX;"
                           "Je vykonané;"
                           "Xorl%% EDX,%% EDX;"
                           "Idivl%% EBX;"
                           "Movl%% EBX,%% EAX;"
                           "Movl%% EDX,%% EBX;"
                           "JMP CONTD;"
                           "Dané: movl%% EAX,% 0;": "= g" (výsledok): "g" (), "G" (b)
     );

     return vysledok;
 }

 int main () {
     int prvý, druhý,
     printf ("Zadajte dve celé čísla:");
     scanf ("% d% d", a prvý a druhý);

     printf ("% d GCD zo &% d je% d \ n", prvá, druhá, GCD (prvá, druhá));

     return 0;
 }

Kriketové Svet čaká na nového svetového poriadku

25. augusta 2009 od Prashant · Komentáre
Súbor pod: misc

Po sérii trvajúcej päť testov a približne dva mesiace, Anglicko regenerované popol.

Poďme hovoriť o víťazný tím prvý - ich strede, aby ich "priemerná", ak nechcete, aby kritická. Greame Swann príspevok s netopierom bude počítať minimálne príspevku s loptou. Stuart Broad - najlepšie všetci univerzál bol bez štartéra pre 5. test. Andrew Strauss bol iba v súlade pálkar a Jimmy Anderson bol iba v súlade nadhadzovač.

Bod tu nie je nadávať úspechy víťazného tímu, ale dať do perspektívy, že aj cez všetky tieto, Austrália stratila. budete musieť myslieť na pár sekúnd, je ak sú požiadaní o zadanie názvu svoje najlepšie nadhadzovača. Správne, je to BW Hilfenhaus. Hauritz prekonal očakávania everbody je ale stále nie je dosť dobrý, ktoré budú vybrané v dvoch z piatich testov. Južná Afrika nikdy sa stal svet šláger bez svetovej triedy kužeľ, možno dúfať, že Austrália nie je zostávajú raz, bez toho, aby jeden dobrý dosť a aspoň jeden. Kúzelník opustil javisko a to nevyzerá ako umenie už, zabudni na mágiu. Ponting stojí vysoký u menších smrteľníkov a Michael Clarke vstane veľmi často, ale to z nich robí tím s niekoľkými veľmi dobrých hráčov a nie veľmi dobrý tím.
Popol 2009 sa bude spomínať za posledných Ashes Andrew Flintoff je, Stuart Broad príchode ako všetky univerzálne (ak pridá nejaký ďalší Ashes folklór jeho sľubný začiatok), a jeden z najvýrečnejšie debutového storočia všetkých čias podľa Trott, ale bude tiež spomínať ako na miesto, kde IFS a Buts o nadvládu v Austrálii boli nakoniec dal k odpočinku, to je u konca. Nechápte ma zle, že môžu ešte objaviť Mike Hussey, alebo Stuart Clark, ale máte pocit, že príspevok všetkých časových velikánov, keď sa stratí. Niekedy prídu, ktorá vám pripomenie seba v IPL, ale napriek tomu ich nemožno nahradiť. Poďme sa cítim požehnaný za to vidieť Warne, McGrath a Gilchrist hrať spolu a je podporovaný Waughs, Ponting, Hyden, Martin a Langer.

Do budúcna bude Južná Afrika stále ešte je veľmi dobrý tím, ale oni potrebujú vyhrať semifinále a byť viac konzistentné po celom svete, bude Pakistan zostáva tajomne brilantný, bude indickej Mladé pušky pravdepodobne zistíte, že ťažké vyplniť topánky mimoriadnych predchodcov. Srí Lanka by mali aj naďalej ukazovať záblesky umenie remeslá. Ale môžeme čakať niekedy pred mať všetci von dominantný tím alebo predtým, ako kapitán sa sťažuje na nedostatočné hospodárskej súťaže, ako Steve Waugh urobil raz.

Na príbuznú notu - poďme privítať nadchádzajúce chrbát Asif, on má sakra veľký potenciál, dúfajme, že vidieť niečo z toho a tiež vítaní Andy kvetina v novom awatar, priamo nemôžete udržať dobrých ľudí sa na dlho.

Ruby jeden vložky pre vytvorenie hash

20.srpna 2009 od Prashant · Komentáre
Súbor pod: technológie

Včera pri prechode jedného z mojich starých programov, našiel som to napísal ja niekedy späť:

#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

Zabiť niektoré z napätia dovoľte mi prezradiť, že raw_text vyzerá

 

, Priamo to bolo rez od paypal platby potvrdenie.

Nad riadku, ak rozdelené do častí znie lepšie:

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

Urobme jednotlivé kroky v IRB:

  IRB (hlavný):. 009:0> unescaped_array = CGI.unescape (raw_text) split ('&')    

 => ["Úspech", "mc_gross = 10,00", "protection_eligibility = nespôsobilý", "payer_id = U7PPJJ4TSJ47E", "daň = 0,00", "payment_date = 09:45:30 10.07.2009 PDT", "payment_status = Do "]                                                                         

 IRB (hlavný): 013:0> unescaped_array = unescaped_array.map {| x | = b x.split ("="); b.push (nula), ak b.size == 1, b}  

 => [["Úspech", nil], ["mc_gross", "10,00"], ["protection_eligibility", "Zákaz činnosti"], ["payer_id", "U7PPJJ4TSJ47E"], ["daň", "0.00"] ["payment_date", "09:45:30 10.07.2009 PDT"], ["payment_status", "Do"]]                               

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

 => ["Úspech", nula, "mc_gross", "10,00", "protection_eligibility", "nespôsobilý", "payer_id", "U7PPJJ4TSJ47E", "daň", "0.00", "payment_date", "9:45: 30 10.07.2009 PDT "," payment_status "," Do "]
 IRB (hlavný): 015:0>
 hash = Hash [* flattened_array]
 => {"Daň" => "0.00", "payment_status" => "Do", "payer_id" => "U7PPJJ4TSJ47E", "mc_gross" => "10,00", "úspech" => nula, "payment_date" = > "09:45:30 10.07.2009 PDT", "protection_eligibility" => "nespôsobilý"} 

BTW, je nazývaný * ikona operátor v ruby

Ďalší spôsob, ako vytvoriť hash z 'radu párov je použiť injekciu:

  hash = [[1,2], [3,4]] injekciu ({}). {| výsledok, prvok | výsledok [element.first] = výsledok [element.last];} výsledok 

Existuje ešte jeden spôsob, ako :) Napíšte slučku, že nechám ako cvičenie na čitateľa!

Tu je trochu nesúvisí prípad použitia vytváraní hash z poľa:

  IRB (hlavný): 005:0> [1,2,3,4,7,9] group_by {| x | x <5.?  : Menšie väčšie ::}

 => {: Menšie => [1, 2, 3, 4]: väčšie => [7, 9]} 

Môžete to urobiť viac vecí, v podstate výsledok bloku sa používa ako kľúč pre tento prvok vo výslednej hodnoty hash.

gmail, mutt a msmtp oprava

17.srpna 2009 od Prashant · Komentáre
Súbor pod: technológie

Ak používate mutt a SMTP pre prístup k službe Gmail. Tu je (zlé) správy. Skvelé chlapci na Google opäť zmenil certifikát. Ach, vy ste sa opýtať - ako to vieš? Jednoduché mutt začal sťažovať na zlé certifikátu pri pokuse o použitie msmpt, neslávne známy Hasičské msmtp: TLS overenie certifikátu zlyhal:. Certifikát nemá známeho vydavateľa " privítal ma na obrazovke.

Prejsť potvrdenie -
Stačí spustiť po

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

Na mieste starej Thwate serveri sa dostanete po emitenta v segmente
Issuer:
Common Name: Google Internet Authority
Organization: Google Inc
Country: US

Našťastie oprava je jednoduchá, tu je to, čo musíte urobiť na debian

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

Po tomto stačí zmeniť nasledujúce riadky vo vás ~ ~ ~ V /. 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

na

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

Git a skvelý prehľad

15.srpna 2009 od Prashant · Komentáre
Súbor pod: misc

Tu sú dva odkazy pre prieskum uvedený GIT (systém pre správu verzií) a úžasné (window manager) komunity. Ak používate niektorý z nich, nájdite si na nejaký čas na vyplnenie dotazníka. Ber to ako najjednoduchší spôsob, ako prispieť späť na softvér, ktorý používate.
Tu sú odkazy:

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

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

Poznámka - (Ako nájsť na týchto stránkach, ale na dne :) ) -
"Ak máte povolené cookies, môžete vždy predložiť vyplnený čiastočne prieskum, a vrátiť sa do odpovedí na neskoršiu dobu, dokončenie neskôr."

Zlučovanie hashe v Yamli conf súbory

31.júla 2009 od Prashant · Komentáre
Súbor pod: technológie

Yamli je veľmi užitočná pre písanie konfiguračných súborov. Hlavnou výhodou je to, že sa číta ako textový súbor. To funguje naozaj dobre, ak váš konfiguračný súbor je plochá (bez hierarchie) a nemá žiadne opakovanie.
Ak váš súbor obsahuje opakovanie konfigurácie, potom má zmysel oddeliť tieto prvky a ich znovu použiť. Čo chcem povedať je to - povedzme, že ste si konfiguračný súbor vyzerá takto:

  vývoj:
   input_location: common_input
   output_location: dev_location
   mail:
     smtp_server: vetva Váš_server
     Login: your_login
     heslo: top_secret
 produkcie:
   input_location: common_input
   output_location: dev_location
   mail:
     smtp_server: vetva Váš_server
     Login: your_login
     heslo: top_secret 

Za predpokladu, že vyššie uvedený kód do / tmp / test.yml tu je, ako si môžete prečítať v Python a Ruby
$cat readyml.py

 #! / Usr / bin / env python
 od dovozného pprint pprint ako pb
 # V Debianu je potrebné nainštalovať python-Yamli
 Yamli z dovozu zaťaženie, load_all výklopné
 hash = zaťaženie (open ("/ tmp / test.yml '))
 pp (hash ['vývoj']) 


$ cat readyml.rb

  #! / Usr / bin / env ruby
 vyžadujú "PP"
 hash = Yamli :: load (File.open ("/ tmp / test.yml"). čítať)
 pb hash ['vývoj'] 

tu je praktickým vložka verzia ruby
$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]' , alebo si môžete skúsiť to isté v IRB alebo python konzole.

Všimnite si, že vo vyššie uvedenom kódu, všetko je iné, než výstup poloha je rovnaká vo vývoji a výrobe časti. To je miesto, kde yml uzol identifikátor príde zachrániť. Myšlienka je jednoduchá mať sadu predvolených hodnôt a prepísať ich na inom mieste.
Dalo by sa vytiahnite ju od seba takto:

  predvolené: predvolené nastavenie a
   input_location: common_input
   output_location: dev_location
   mail:
     SENDER_NAME: odosielateľ
     smtp_server: vetva Váš_server
     Login: your_login
     heslo: top_secret
 vývoj:
   << * Východisková
 produkcie:
   << * Východisková
   output_location: prod_location 


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

Skvelé, to funguje (tm)!.
Pravdepodobne sa obchoduje nejakú prehľadnosť pre trochu mágie. Tu je malé vysvetlenie: a * a <<: a ktorý je kotva tag možno chápať ako identifikátor uzla, uzol * je referenčná a <<: kandiduje na hash zlúčenie.

Pre viac informácií viď buď Yamli špecifikácia alebo Wikipédie
Zatiaľ je to dobré, ale je tu jeden háčik, tieto mriežky sa spoja nie sú rekurzívne. Čo to znamená toto: povedzme, že chcete mať iné meno odosielateľa pre poštu v dvoch prostrediach, môžete byť v pokušení urobiť nasledovné:

  predvolené: predvolené nastavenie a
   input_location: common_input
   output_location: dev_location
   mail:
     SENDER_NAME: odosielateľ
     smtp_server: vetva Váš_server
     Login: your_login
     heslo: top_secret
 vývoj:
   << * Východisková
   mail:
     SENDER_NAME: sender_dev
 produkcie:
   << * Východisková
   output_location: prod_location
   mail:
     SENDER_NAME: sender_prod 

Umožňuje kontrolovať

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

Jejda, niečo sa pokazilo, problém ako je uvedené vyššie, je, že hash zlúčenie nie je rekurzívne a zatiaľ čo zlučovanie nahradil mailu zlyhanie poštou produkcie, ktoré má len jeden kľúč. Riešenia / práce okolo je rozvinúť ešte jednu úroveň:

  common_settings: & common_settings
 input_location: common_input
 output_location: dev_location
 mail_defaults: & mail_defaults
  SENDER_NAME: odosielateľ
   smtp_server: vetva Váš_server
   Login: your_login
   heslo: top_secret

 predvolené: predvolené nastavenie a
   << * Common_settings
   mail:
     << * Mail_defaults
 vývoj:
   << * Východisková
 produkcie:
   << * Východisková
   mail:
     << * Mail_defaults
     SENDER_NAME: sender_prod

Umožňuje kontrolovať znova

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

Vedeli ste, že máte ešte jednu úroveň vnorenia, tak môžete určite rozbalí jeden stupeň, ale potom sa to stane neporiadok. Takže, ak nie ste sa snažia písať riešenie veže v Hanoji v conf súboru, je lepšie restucture conf súboru, než kopať do Yamli alebo niečo iné. Ale to je na vás tak ako tak.

Veľké programátori nájsť jednoduché riešenia zložitých problémov

30.júna 2009 od Prashant · Komentáre
Súbor pod: misc

Po dlhej dobe sa mi podarilo nájsť zdroj pre nasledujúce citát-

Junior programátori vytvárať jednoduché riešenie jednoduchých problémov. Senior programátor vytvoriť komplexné riešenie zložitých problémov. Veľké programátori nájsť jednoduché riešenia na zložité problémy.

To je od esej s názvom Beautiful Software Charles Connell.

Ďalším obľúbeným jeden z bane je Zen Python -

Krásna je lepšia ako škaredý.
Explicitné je lepšia ako implicitné.
Jednoduchý je lepšia ako komplexu.
Komplex je lepšia ako zložité.
Byt je lepšia ako vnorené.
Riedke je lepšia ako hustý.
Čitateľnosť počíta.
Špeciálne prípady nie sú dosť špeciálna porušiť pravidlá.
Hoci praktickosť bije čistotu.
Chyby by sa nikdy prejsť ticho.
Ak nie je výslovne umlčal.
Tvárou v tvár jednoznačne odmietnuť pokušenie odhadovať.
Malo by byť jedno-a pokiaľ možno len jeden zrejmý spôsob, ako to urobiť.
Aj keď to tak nemusí byť zrejmé na prvý pohľad, ak si nie ste holandský.
Teraz je lepšie ako nikdy.
Hoci nikdy je často lepšie ako * právo * teraz.
Ak implementácia je ťažké vysvetliť, že je to zlý nápad.
Ak implementácia je ľahké vysvetliť, môže to byť dobrý nápad.
Menné priestory sú jednou trúbiť skvelý nápad - poďme urobiť viac tých!
-------------------------
a potom je tu klasický Tao programovanie

-

úvery sú na odkazovanej stránke,

Preložil Geoffrey James

Prepísaný Duke Hillard

Prenášané Anupam Trivedi a Sajitha Tampa a Meghshyam Jagannath

Re-html-ized a editoval Kragen Sittler

-

Kniha 1 - Silent Void

Tak povedal hlavný programátor:

"Keď ste sa naučili ukradnúť kód chyby z pasce rámom,
bude na čase, aby ste odišiel. "

1.1

Niečo tajomného je tvorený, sa narodil v tichej prázdnote. Čakanie sám a
bez hnutia, to je naraz, a napriek tomu stále v neustálom pohybe. To je zdroj
všetkých programov. Ja neviem jeho meno, tak budem hovoriť, že Tao
Programovania.

Ak Tao je skvelé, potom operačný systém je skvelý. Ak prevádzkové
Systém je skvelý, potom kompilátor je skvelá. Ak prekladač je skvelé,
potom aplikácia je skvelý. Užívateľ je rád, a existuje
harmónia vo svete.

Tao programovanie prúdi ďaleko a vráti sa na vetra ráno.

1.2

Tao porodila jazyk. Stroj jazyk porodila
assembler.

Assembler porodila kompilátor. Teraz je 10000
jazyky.

Každý jazyk má svoj zmysel, ale pokorný. Každý jazyk vyjadruje
Yin a Yang softvéru. Každý jazyk má svoje miesto v rámci Tao.

Ale nie programovať v COBOL, ak môžete vyhnúť.

1.3

Na počiatku bolo Tao. Tao porodila na priestor a čas.
Preto sa priestor a čas sú Yin a Yang programovania.

Programátori, že nechápu Tao vždy málo času
a priestor pre svoje programy. Programátori, že pochopiť Tao vždy
mať dostatok času a priestoru na dosiahnutie svojich cieľov.

Ako by to mohlo byť inak?

1.4

Programátor je múdry povedal o Tao a sleduje ju. Priemerná
Programátor je povedané o Tao a hľadá pre neho. Pochabé programátor
je povedané o Tao a smeje sa na neho.

Ak to nebolo na smiech, tam by bola žiadna Tao.

Najvyššia zvuky sú najviac počuť.
Do budúcnosti je cesta k ústupu.
Veľký talent sa prejavuje neskoro v živote.
Aj perfektné program má ešte chyby.

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

Kniha 2 - starých majstrov

Tak povedal hlavný programátor:

"Po troch dňoch bez programovania, život stráca zmysel."

2.1

Programátori mali rokov, tajomná a hlboká. Nemôžeme pochopiť
ich myšlienky, takže všetko, čo robíme, je opísať ich vzhľad.

Vedomý si, ako líška prechodu vody. Pozorní, ako generál na
bojisko. Druh, ako hosteska Pozdravenie svojich hostí. Jednoduché, ako
uncarved bloky z dreva Nepriehľadné, ako čierne bazénov v temných jaskyniach.

Kto môže povedať tajomstvo svojich srdciach a mysliach?

Odpoveď existuje iba v Tao.

2.2

Veľmajster Turing raz zdalo, že bol stroj. Keď sa prebudil,
zvolal:

"Neviem, či som Turing snívam, že som stroj, alebo
stroj snívanie, že som Turing! "

2.3

Programátor z veľmi veľkej počítačovej firmy išiel do softvéru
Konferencie a potom sa vrátil k správe k jeho manažér a povedal: "Aké
programátorov pracujú pre iné firmy? Oni sa správali zle a boli
nezaoberá vystúpenie. Ich srsť bola dlhá a zanedbaný a ich
odevy boli pokrčené a starý. Oni havaroval naše pohostinstvá sadu a
z hrubej zvuky pri svojej prezentácii. "

Manažér povedal: "Mal som nikdy ťa poslal do konferencie. Tí, ktorí
programátori žijú mimo fyzický svet. Domnievajú sa, život absurdné,
náhodná zhoda okolností. Prichádzajú a odchádzajú, bez toho aby vedel obmedzenia.
Bez starostlivosti, žijú len pre svoje programy. Prečo by mali obťažovať
so spoločenským konvenciám?

"Sú nažive v Tao."

2.4

Nováčik spýtal Majstra: "Tu je programátor, ktorý nikdy navrhuje,
dokumenty alebo testy svoje programy. Napriek tomu všetci, ktorí ho poznajú považujú ho za jeden z
najlepší programátori na svete Prečo je toto? "

Majster odpovedá: "To programátor zvládol Tao. Odišiel
Okrem potreby dizajn, nemá sa hnevať, keď systém
havaruje, ale prijíma vesmír bez obáv. Odišiel za
potrebujete pre dokumentáciu, on už zaujíma, či niekto vidí, že jeho kód.
Odišiel za skúšanie, každý z jeho programov sú perfektné
v sebe, kľudný a elegantný, ich účel evidentné. Skutočne,
on vstúpil do tajomstva Tao. "

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

Kniha 3 - Design

Tak povedal hlavný programátor:

"Keď je program testovaný, je príliš neskoro na to, aby návrh
zmeny. "

3.1

Bol raz jeden muž, ktorý išiel na výstave počítačovej obchodu. Každý deň ako on
vstúpil muž povedal stráž pri dverách:

"Som veľký zlodej, známy pre svoje činy krádeže v obchodoch. Byť
varovaný, sa k tomuto veľtrhu neunikne unplundered. "

Táto reč narušený stráž výrazne, pretože tam boli milióny
dolárov vnútri výpočtovej techniky, a tak sledoval muža opatrne. Ale
Muž putoval iba z búdky na stánku, hučanie ticho.

Keď muž odišiel, stráž ho stranou a hľadal svoje oblečenie, ale
nič nebolo k nájdeniu.

Na ďalší deň veľtrhu, muž vrátil a peskoval stráž
hovorí: "Utiekla som s obrovskou korisťou včera, ale dnes bude ešte
lepší. "Takže stráž ho pozoroval stále blízko, ale márne.

Na posledný deň veľtrhu, by mohla obmedziť jeho stráž zvedavosť
už nie. "Pane zlodej," povedal, "ja som tak zmätená, nemôžem žiť
mier. Pouč ma, prosím. Čo je to, že ste ukradol? "

Muž sa usmial. "Som vykráda nápady," povedal.

3.2

Bol raz jeden pán, ktorý napísal programátor neštruktúrovaných programov.
nováčik programátor, ktorý sa snaží napodobniť ho, tiež začal písať
neštruktúrované programy. Keď nováčik požiadala pána hodnotiť jeho
pokrok, majster kritizoval ho pre písanie neštruktúrovaných programov,
hovorí: "Čo je vhodné pre pána nie je vhodné pre
nováčik. Musíte pochopiť, Tao, než prekonanie štruktúru. "

3.3

Bol raz jeden programátor, ktorý bol pripojený k súdu bojovníka
Wu. Bojovník požiadal programátor: "Či je jednoduchšie design: o
Účtovné balení alebo operačný systém? "

"Operačný systém," povedal programátor.

Bojovník predniesol ako výkrik neveriacky. "Určite účtovníctva
Balíček je triviálne vedľa zložitosti operačného systému, "povedal
povedal.

"Nie je to tak," povedal programátor, "pri navrhovaní účtovný balík,
programátor funguje ako sprostredkovateľ medzi ľuďmi má rôzne
nápady: ako musí pracovať, ako sa jeho správy musí byť, a ako to musí byť
v súlade s daňovými zákonmi. Naproti tomu je operačný systém nie je obmedzený
vonkajšími vystúpenie. Pri návrhu operačného systému, programátor
hľadá najjednoduchšie harmóniu medzi strojom a nápady. To je dôvod, prečo
Operačný systém je jednoduchšie navrhnúť. "

Bojovník Wu prikývol a usmial sa. "To je všetko dobré a tiež, ale
ktorý je ľahšie ladenie? "

Programátor neodpovedal.

3.4

Manažér šiel do hlavnej programátor a ukázal mu požiadavky
dokument pre nové aplikácie. Správca požiadal pána: "Ako dlho
bude trvať, než navrhnúť tento systém, keď priradíte päť programátorov na to? "

"Bude to trvať jeden rok," povedal veliteľ okamžite.

"Ale musíme tento systém okamžite, alebo aj skôr! Ako dlho to bude
ja keby som priradiť desať programátorov na to? "

Programátor majster sa zamračil. "V tom prípade bude trvať dva roky."

"A čo keby som priradiť sto programátorov na to?"

Programátor majster pokrčil ramenami. "Potom design nikdy
dokončená, "povedal.

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

Kniha 4 - kódovanie

Tak povedal hlavný programátor:

"Dobre napísaný program, je jeho vlastná neba, zle napísaný program
vlastné peklo. "

4.1

Program by mal byť ľahký a vrtký, jeho podprogramy pripojený ako
perlový náhrdelník. Duchom a zámerom programu by sa mal zachovať
v celom texte. Mal by byť ani príliš málo alebo príliš veľa, ani
zbytočným slučky ani zbytočné premenné, ani nedostatok, ani štruktúry
Drvivá tuhosť.

Program by sa mal riadiť program `zákon najmenšieho prekvapenie '. Čo je to právo?
Je to jednoducho, že program by mal vždy zodpovedať na užívateľa v ceste
udivuje, že ho minimálne.

Program, bez ohľadu na to, ako zložité by mal pôsobiť ako jeden celok. Program
by mali byť zamerané logikou v rámci skôr než vonkajší vzhľad.

Ak program zlyhá v týchto požiadaviek bude v stave
neporiadok a zmätok. Jediný spôsob, ako tento problém odstrániť, je prepísať
program.

4.2

Nováčik opýtal majstra: "Mám program, ktorý beží a niekedy
niekedy preruší. Postupoval som presne podľa pravidiel programovania, ale ja som
úplne bezradný. Aký je dôvod? "

Majster odpovedal: "Tie sú zmätení, pretože nerozumiete Tao.
Len blázon očakáva, že racionálne správanie od svojich blížnych. Prečo ste
očakávať, že ju zo stroja, ktorý ľudia majú postavené? Počítače simulovať
Determinizmus, len Tao je perfektný.

"Pravidlá programovania je prechodná, len Tao je večné. Preto
je nutné uvažovať o Tao, než sa zobrazí osvietenie. "

"Ale ako sa dozviem, že som dostal osvietenie?" Spýtal sa
nováčik.

"Váš program potom bude fungovať správne," odpovedal majster.

4.3

Majster vysvetľoval podstatu Tao jednému zo svojich nováčikov. "
Tao je zakotvený vo všetkých softvéru - bez ohľadu na to, ako bezvýznamné, "povedal
pán.

"Je Tao v ručnej kalkulačky?" Spýtal sa nováčik.

"Je," znela odpoveď.

"Je Tao vo videohre?" Pokračoval nováčika.

"Je to aj vo videohre," povedal pán.

"A je Tao v DOS na osobný počítač?"

Veliteľ sa rozkašľal a obrátil svoju pozíciu mierne. "Poučenie je u konca
pre dnešok, "povedal.

4.4

Prince Wanga programátor bol kódovanie softvéru. Jeho prsty tancovali po
klávesnice. Program skompilovaný bez chybového hlásenia, a program
bežal ako jemný vietor.

"Výborne!" Princ zvolal: "Váš postup je bezchybný!"

"Technika" povedal programátor obrátil zo svojho terminálu, "Čo som
sledovať je Tao - nad rámec všetkých techník! Keď som prvýkrát začal program, ktorý som
uvidia pred sebou celý problém v jednej hmoty. Po troch rokoch som sa žiadnych
už videl túto hmotu. Namiesto toho som podprogramy. Ale teraz vidím, nič.
Moja celá bytosť existuje v beztvaré prázdnoty. Moje zmysly sú nečinné. Môj duch,
možnosť pracovať bez plánu, nasleduje vlastné inštinkt. Stručne povedané, môj program
píše sám. Pravda, niekedy je ťažké problémy. Vidím je
príde, som spomaliť, pozerám sa ticho. Potom som zmeniť jediný riadok kódu
a ťažkosti zmiznú ako obláčiky dymu nečinnosti. Potom som sa zostaviť
program. Som sedieť a nechať radosť z práce vyplniť svoju bytosť. Zavriem
na chvíľu oči a potom odhlásiť. "

Princ Wang povedal: "Bolo by to všetky moje programátorov boli múdry!"

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

Kniha 5 - Údržba

Tak povedal hlavný programátor:

"Aj keď program mal byť, ale tri riadky dlho, jedného dňa bude musieť byť
zachovaný. "

5.1

Dobre použitá dverí nie je treba olej na pántov.
Rýchlo tečúcej prúd nerastie stagnuje.
Ani zvuk, ani myšlienky môžu cestovať cez vákuum.
Software hnije, pokiaľ nie je použitý.

Jedná sa o veľké tajomstvo.

5.2

Správca požiadal programátora, ako dlho mu bude trvať až do konca
Program, na ktorom pracoval. "To bude dokončená zajtra,"
Programátor ihneď odpovedal.

"Myslím si, že sú nereálne," povedal manažér "Po pravde povedané, ako
dlho to bude trvať? "

Programátor sa na chvíľu zamyslela. "Mám nejaké funkcie, ktoré si želajú
pridať. To bude trvať najmenej dva týždne, "povedal nakoniec.

"Aj to je príliš očakávať," trval na tom, manažér: "Budem
splnená, ak si jednoducho povedz mi, keď program je kompletný. "

Programátor s tým súhlasil.

O niekoľko rokov neskôr, manažér odišiel. Na ceste do svojho odchodu do dôchodku
obed, on objavil programátor spiace u jeho terminálu. On bol
programovanie celú noc.

5.3

Programátor nováčik bol raz pridelený kód jednoduchý finančný balíček.

Novic pracoval zúrivo po mnoho dní, ale keď sa jeho pán preskúmaná
jeho program, zistil, že to obsahovalo obrazovky editore, súbor
celková grafika rutiny, umelá inteligencia rozhranie, ale
nie je najmenší zmienka o niečo finančnej.

Keď pán požiadal o tom, nováčik sa stal rozhorčený. "Nebuď
tak netrpezlivý, "povedal," Dám vo finančnom veci nakoniec. "

5.4

Má dobré zanedbávať poľnohospodár plodiny on zasadil?
Má dobrý učiteľ prehliadnuť aj ty pokorné študenta?
Má dobrý otec dovoliť jedno dieťa od hladu?
Má dobrý programátor odmietnuť udržiavať jeho kód?

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

Kniha 6 - Riadenie

Tak povedal hlavný programátor:

"Nech sa programátori byť veľa a manažéri málo - potom všetko bude
produktívne. "

6.1

Keď manažéri majú nekonečné schôdze, programátori písať hry. Kedy
účtovný hovoriť o štvrťročných ziskov, vývoj rozpočtu sa chystá
rezať. Keď vedci hovoria vysokí modrú oblohu, mraky sa chystajú vrátiť
palcov

Naozaj, nie je to Tao programovania.

Keď manažéri prijať záväzky, sú ignorované herné programy. Kedy
účtovník, aby dlhého doletu plány, harmónie a aby sa chystáte byť
obnovená. Keď starších vedcov riešiť problémy na strane
problémy bude čoskoro vyriešený.

Naozaj, to je Tao programovania.

6.2

Prečo sú programátori neproduktívny?
Vzhľadom k tomu, ich čas je zbytočný rokovaní.

Prečo sú programátori vzdorujúcich?
Preto, že sa stretáva príliš veľa.

Prečo sú programátori odstúpil jeden po druhom?
Pretože oni sú vyhorel.

Potom, čo pracoval pre zlé riadenie, sa už hodnota ich práce.

6.3

Správca mal byť vyhodený, ale programátor, ktorý pracoval pre neho
vynašiel nový program, ktorý sa stal populárny a dobre predávali. V dôsledku toho
Správca udržal svoju prácu.

Manažér sa snažil, aby programátor bonus, ale programátor
odmietol so slovami: "Napísal som program, pretože som myslel, že je
zaujímavý koncept, a tak som sa očakávať žiadnu odmenu. "

Správcu na sluchu to poznamenal: "Tento programátor, ale drží
postavenie malej vážnosti, pozná dobre správne povinnosť
zamestnanec. Poďme podporiť ho do vysokého postavenia riadenie
konzultant! "

Ale keď to povedal, programátor ešte raz odmietol so slovami: "Aj tak existujú
že môžem programovať. Keby som bol povýšený, tak by som robiť nič iné ako odpad
Čas každého z nás. Môžem už ísť? Mám program, ktorý som pracujete. "

6.4

Správca šiel do jeho programátorov a povedal im: "Čo sa týka vašej práce
doba: budete musieť prísť o deviatej ráno a odísť
v päť popoludní. "Na to, všetci sa rozhneval a niekoľko
rezignoval na mieste.

Takže manažér povedal: "Dobre, v tom prípade môžete nastaviť vlastné
pracovný čas, ako dlho budete dokončiť svoje projekty podľa plánu. "
programátorom, teraz spokojný, začal prísť na poludnie a pracovať na Wee
hodín ráno.

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

Kniha 7 - Corporate Múdrosť

Tak povedal hlavný programátor:

"Môžete dokázať program pre firemné exekutívy, ale nemôžete
aby mu počítačovo gramotní. "

7.1

Nováčik opýtal majstra: "Na východe je veľký strom-štruktúra
že ľudia nazývajú `Ústredie spoločnosti". Je nezväčší z formy sa
podpredsedovia úradu a účtovníkov. Vydáva veľké množstvo poznámok, z ktorých každý
hovorí `Go, preto!" alebo 'Choď, sem! " a nikto nevie, čo sa myslí. Každý
rok nové mená sú umiestnené na pobočkách, ale všetko márne. Ako môže
také neprirodzené jednotka bude? "

Majster odpovedal: "Ty vnímajú túto obrovskú štruktúru a sú
narušená, že nemá žiadne racionálne účel. Nemôžete mať pobavenie od
jeho nekonečné krúženie? Vari vychutnať pokojným jednoduché programovanie
pod jeho ukrývať pobočiek? Prečo sa obťažovať jeho
Zbytočnosť? "

7.2

Na východe je žralok, ktorý je väčší než všetky ostatné ryby. To
mení v vtáka, ktorého krídla sú ako mraky čerpacích oblohu. Keď sa to
vták sa pohybuje po celej krajine, prináša správy zo spoločnosti
Ústredia. Táto správa klesne do prostred programátorov,
ako čajka urobí svoje ochranné známky, na pláži. Potom vták nasadne na
vietor a, s modrou oblohou v chrbte, sa vracia domov.

Pohľady začínajúci programátor v úžase na vtáka, pretože ju chápe
nie. Priemerný programátor desí príchod vtáka, pretože sa bojí
jeho posolstvo. Programátor Master pokračuje v práci na svojom termináli, pre
nevie, že vtáky prichádzajú a odchádzajú.

7.3

Kúzelník z Ivory Tower priniesol jeho najnovší vynález pre
programátorom skúmať. Kúzelník kolesové veľkú čiernu krabicu do
magisterský kancelária, zatiaľ čo pán čakal v tichosti.

"To je integrované, distribuované, univerzálne pracovné stanice," začal
kúzelník, "ergonomicky navrhnutý s vlastný operačný
systém, šiestej generácie jazyky, a viac najmodernejšie užívateľa
rozhranie. Trvalo mi asistentov niekoľko sto rokov, muž postaviť.
Nie je to úžasné? "

Majster zdvihol obočie mierne. "Je to naozaj úžasné," povedal
povedal.

"Vedenie spoločnosti prikázal," pokračoval kúzelníka, "že
všetci používať tento stanicu ako platforma pre nové programy. Súhlasíte s tým,
na to? "

"Iste," odvetil pán, "Ja si to prevezená do
dátové centrá ihneď! "A kúzelník sa vrátil k jeho veži, dobre
potešený.

O niekoľko dní neskôr, nováčik putoval do kancelárie veliteľa
programátor a povedal: "Nemôžem nájsť záznam pre môj nový program. Robiť
viete, kde by to mohlo byť? "

"Áno," odpovedal majster, "sa výpisy sú postavené na platforme v
dátové centrá. "

7.4

Programátorom sa pohybuje od programu k programu bez obáv. Nie
zmena vo vedení môže poškodiť ho. On nebude vyhodený, aj keď
Projekt je zrušený. Prečo je to? On je plný Tao.

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

Kniha 8 - hardware a software

Tak povedal hlavný programátor:

"Bez vietor, tráva sa nehýbe. Bez software, hardware
k ničomu. "

8.1

Nováčik opýtal majstra: "Vidím, že jedna počítačová firma je omnoho
väčší než všetky ostatné. Týči sa nad konkurenciou ako obor medzi
trpaslíci. Každý z jej divízií by mohlo zahŕňať celý podnik. Prečo je
tomu tak je? "

Majster odpovedal: "Prečo sa pýtaš také hlúpe otázky? Táto spoločnosť
je veľký, pretože to je veľký. Ak to len z hardware, nikto by kúpiť
to. Ak to len softvér na zákazku, nikto by ju používať. Ak to len udržuje
Systémy by sa ľudia zaobchádzať ako sluha. Ale preto, že kombinuje všetky
z týchto vecí, ľudia si myslia, že jeden z bohov! Tým, že sa snaží
snažiť, to si podmaní bez úsilia. "

8.2

Programátor majster podal nováčik programátor jeden deň. Majster poznamenal
začínajúceho starostí s ručnou počítačové hry. "Prepáčte,"
povedal, "môžem skúmať to?"

Nováčik priskrutkované do pozoru a podal zariadenia k pánovi. "Ja
vidieť, že zariadenie prehlasuje, že má tri úrovne hry: Easy, stredné a
Ťažké, "povedal pán. "Ale každý takýto prístroj má ďalšiu úroveň
hrať, pokiaľ nie je prístroj snaží podmaniť si človeka, ani byť dobytá
ktoré človek. "

"Modlite sa, veľký majster," uprosil nováčika, "ako sa dá nájsť to
Tajomný nastavenia? "

Majster klesol zariadenia na zem a rozdrvil ho pod nohami. A
zrazu nováčik bol osvietený.

8.3

Bol raz jeden programátor, ktorý pracoval na mikroprocesorov. "Pozrite sa, ako
a už som tu, "povedal na mainframe programátora, ktorý prišiel na návštevu,
"Mám svoj vlastný operačný systém a ukladanie súborov zariadení. Nemám sa
zdieľať svoje zdroje s kýmkoľvek. Tento softvér je ucelený a
ľahko používať. Prečo sa opustiť svoje súčasné zamestnanie a spolu so mnou tu? "

Programátor mainframe potom začal popisovať svoj systém k jeho priateľovi,
hovorí "mainframe sedí ako starého mudrca meditáciu v stredu
v dátovom centre. Jeho disky leží end-to-end ako veľký oceán
stroja. Software je ako mnohostranný ako diamant, a ako spletité
ako praveké džungle. Programy, z ktorých každý jedinečný, pohyb v systéme
ako rýchlo prúdiacej rieky. To je dôvod, prečo som rád, kde som. "

Mikropočítač programátor, na sluchu toto, zmĺkla. Ale dva
programátori zostali priateľmi až do konca svojich dní.

8.4

Hardware Software stretol na ceste k Changtse. Software, povedal: "Ste
Yin a Yang som. Ak budeme cestovať spoločne budeme stal slávnym a získajte
obrovské sumy peňazí. "A tak stanovené dohromady, aby som mohol dobyť
svet.

V súčasnej dobe sa stretli s firmware, ktorý bol oblečený v roztrhaných handrách a belhal
spolu posadili na tŕnisté tyči. Firmware im povedal: "Tao spočíva
mimo jin a jang. Je pokojná a tichá ako kaluž vody. To robí
nehľadajú slávu, a preto nikto nevie, jeho prítomnosť. Nesnaží
šťastie, na to je kompletná v sebe. To existuje mimo priestor a
čas. "

Softvér a hardvér, zahanbený, sa vrátil do svojich domovov.

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

Kniha 9 - Epilóg

Tak povedal hlavný programátor:

"Je na čase, aby ste odišiel."

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

Ak sa vám to, môžete tiež rád čítal horšie je lepší

Trochu plášťa presmerovania

Tu je, ako sme normálne robiť shell presmerovania
$ ./pgm.sh args >out.txt 2>err.txt
Chcel som to trochu zmeniť a spustiť takto
$ ./pgm.sh args
s požiadavkou, aby výkon a chyba by mala ísť do nejakého súboru, počítané v pgm.sh založenej na prepínači. Jeden ilustratívny prípad, kedy by mohlo byť dátum je súčasťou ARGUMENTY. Takže by ste chceli ísť na stdout povedať / your / adresár / pgm_out_YYYYMMDD.txt 1

Problém so štandardným spôsobom presmerovať N>file.txt tj združujúca deskriptora súboru file.txt na N, je, že funguje len pre novo vidlicový procesu, a nie pre aktuálny proces.
tak
$ echo hi 1>out.txt ; echo hii . pošle ahoj out.txt ale bude tlačiť hii na stdout 2

To je miesto, kde exec prichádza na záchranu. Ak pridáme exec 1>somefile.txt potom výstup zo zvyšku skriptu pôjde na somefile.txt

$ cat test.sh
#!/usr/bin/env bash
exec 1>out.txt
echo hi
echo hii
$. / Test.sh presmeruje hi rovnako ako hii sa out.txt

Podobne ako presmerovanie stdout aj stderr urobíme niečo také
cat test2.sh
exec 1>out.txt
exec 2>err.txt
echo out text
echo 1>&2 err text
somenoneexitent command
ls -ld /tmp

Teraz sa vracia na pôvodné miesto presmerovanie na nejaký súbor z vnútornej strany nádrže, povedzme Program počíta názov súboru v nejakej premennej outfile, mohli sme práve urobil exec 1>$OUTFILE

, Ktorý rieši aktuálny problém. Ale môžete chcieť prejsť nasledujúcom príklade, ktorý dosahuje "Random prístupu" súboru vo skriptu shellu. Príklad je z 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 pripomienkami, tento kód je samozrejmý.
-
1 To môže tiež byť robené $ ./pgm.sh args >pgm_out`date +%Y%m%d` , ale nápad je vytvárať tento súbor názov založený na nejakú logiku v samotnom programe.
2 1 v 1> out.txt je nadbytočná, ale objasňuje, že sa tu presmerovanie fd 1

Sony VAIO recenzia

29.dubna 2009 od Prashant · Komentáre
Zaradený do: recenzia

Mesiac staré som si kúpil Vaio NS25G a boli v pláne napísať tento príspevok od tej doby. Tento príspevok je predovšetkým poznámky k sebe a preskúmanie rovnaké. Poďme vystúpiť značku rýchlo -

Príspevok má dve časti -

I. Prehľad hardvéru
II. Inštalácia systému Debian a všetko nastaviť

I. Prehľad hardvéru

Keďže nie som marketingu VAIO človek, začnem opačne -

Prečo nemôžete si kúpiť tento notebook:

  1. Nie Bluetooth: ver mi, že v roku 2009 Sony predáva notebook bez bluetooth. Iste, môžete použiť USB veci, ale ...
  2. Veľkosť displeja je 15,4 cm: ak budete cestovať veľa a potom tento notebook nemusí byť veľmi užitočné, a tiež 2,9 kg notebook nie je práve najľahší okolo.
  3. Nie HDMI výstup.
  4. Žiadna samostatná grafická karta a rád. (A bez vyhradenej grafickej pamäte

A teraz, prečo môžete chcieť kúpiť:

  1. Tento notebook je sakramentsky dobrý desktop. Čo chcem povedať je to, ak váš požiadavka je rovnako ako ja - väčšinou písanie programov a snaží sa ho používať 25 z 24 hodín, potom s veľkou obrazovkou, veľmi pohodlné rozloženie klávesnice s priestrannou opierky rúk a dobré výpočtový výkon, to robí veľmi dobrý kombinácie.
  2. To je 2 MB L2 cache a procesor / pamäť systémová zbernica je 800 MHz. Nechcem hrať hry, tak nemôže povedať, že ale nič iné, než Core 2 Duo procesor s 2GHz freq. je dobré, to je viac než dosť.
  3. Z môjho zvyku, vidím procesor väčšinou Hodiny na 1,2 GHz a využitie pamäte ~ ~ ~ V 500MB To len posilňuje predchádzajúci bod.
  4. Záložná batéria je dobrá, ~ 2 hodiny je to, čo mám.

Len jedna vec tu - je Sony, bude vás to trochu iné, než notebooky s podobnou konfiguráciou, ale to je výzva, aby sa u mať.

II. Konfigurácia linux (spustiť z okna!):
To prišlo s Windows Vista vopred nainštalovaný (myslím, Home Premium alebo nejaké vymyslené meno takého). Dungara zavedený iba raz a vytvoril ďalší oddiel o veľkosti 150 GB. Debian testovanie je to, čo som vždy nainštalovať a potom hore (dole?) Stupeň na "unstable 'sid.

Veci, ktoré pracovali bez problému:

  1. X - nijako prekvapivo X servera nemal problém s spúšťanie alebo rozlíšení. Po jednej z aktualizácií X odmietla začať hoci, ale "X-configure" vytvorila conf súbor, ktorý pracoval veľmi dobre.
  2. Audio - audio výstup a externý mikrofón fungovať. verzia jadra 2.6.29-1-686 # 1 SMP a alsa verzie 1.0.17. To je to, čo dostanete od
    $ lspci -v |grep Audio 00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Con1.0.17troller (rev 03)
  3. Video kamera - proste funguje
  4. Hibernácie na disk a späť - žiadny problém
  5. Wireless - v krátkosti - proste funguje.
    $ lspci |grep -i wireless
    03:13:55 04:00.0 Network controller: Atheros Communications Inc. AR928X Wireless Network Adapter (PCI-Express) (rev 01) .

    Myslím, že jadro 2.6 .. 27 dopredu smerujúce to funguje so zdrojom zásob jadra. Nemáte nainštalovať ndiswrapper alebo veci, ako je t
    klobúk. Ako poznámku, prosím, povedať, dobré kúpiť gnome-network-manager a vítame wicd, je to len GUI vrstvu, ale v pozadí, ktoré majú pevne stanovené množstvo config veci ako wpasupplient a ďalšie.

Čo nefunguje -

  1. Nejako interný mikrofón odmietne pracovať : ( Externý mikrofón funguje hoci. Posledná alsa zdroje sa nezkompiluje čisto na Debiane, takže v súčasnej dobe som si kúpil externý interný mikrofón, sa bude snažiť kopať do neho niekedy v budúcnosti hoci.

Niekoľko ďalších tipov pre misc deiban slovami:

  • Balíček pre devnagri font-ttf-fonts-Indic
  • Balíček pre Flash prehrávačom - flashplugin-nonfree
  • Vstup do sources.list pre mplayer a rád - deb http://www.debian-multimedia.org sid hlavné
  • Vstup do sources.list pre E17 - deb http://debian.alphagemini.org/ ~ ~ V nestabilné hlavnej
  • Vstup do sources.list pre Skype - http://download.skype.com/linux/repos/debian/ stabilný non-free

oneliner pre zvýšenie a zníženie jasu -

[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

budete musieť dať to do sudo hoci.
a znížiť zmeny + na - a ... máte predstavu, že jo!

Trochu viac, ak používate osvietenie (E17) tu je pár tipov -

[Osvietenie kľúčové bindidings]

Môžete použiť nasledujúci kód kľúče a mapovanie

mute:
KEY="Keycode-160" ACTION="exec" PARAMS="/usr/bin/amixer -q set Master toggle"
prezimujú:
KEY="Keycode-165" ACTION="exec" PARAMS="sudo /usr/sbin/hibernate-disk"
Zníženie objemu:
KEY="Keycode-174" ACTION="exec" PARAMS="/usr/bin/amixer -q set Master 2-"
Nárast objemu:
KEY="Keycode-176" ACTION="exec" PARAMS="/usr/bin/amixer -q set Master 2+"
zvýšiť jas:
KEY="Keycode-212" ACTION="exec" PARAMS="sudo /root/bin/incbrightness.sh"
zníži jas
KEY="Keycode-101" ACTION="exec" PARAMS="sudo /root/bin/decbrightness.sh"

Ďalšia stránka »