apklausa, stalo, pubsub, pubsubhub, pubsubhubbub
Tuo atveju, jei yra nusiteikusios skeptiškai, yra beprotybė virš metodas, po pavadinimo. Technologijų ratą, ji yra mažai tikėtina, kad jūs dar nesate girdėję apie pubsubhubbub. Greitai keletą mėnesių, jis buvo vienas iš trijų geriausių kalbėjo apie dalykus. Kiti du homomorphic šifravimo ir "Google" banga [ 1 ]. Grįžtant prie dabartinės paštu - pavadinime sąlygos rodo, kaip gauti turinį iš kitų žmonių. Šie duomenys tampa aišku, jei jūs galite įsivaizduoti, kas vyksta atsižvelgiant į dienoraščius, nors jie iš esmės ne tik dienoraščių.
Apklausa nurodo į scenarijų, klientai nuolat klausia serverį, jei kažkas naujo sugalvoti. Kaip dažnai prašyti naujinimų visada su apklausos pernelyg dažnai ar pernelyg menkos problema, bet kaip vienas skaitytojas atkreipė dėmesį, kad vienas puikus dalykas, balsavimas, kad serveris neturi palaikyti būklę.
Ping susijęs su atveju, kai rašyti straipsnį, jūs (ar jūsų programinė įranga) taip pat patikslinami kai kurie populiarus (centrinis) atnaujinimo paslaugas. Kai fonas čia .
Kitas yra pubsub,, kuri stovi už publikuoti / prenumeruoti, viena iš anksčiausiai aikštę buvo čia Evan Henshaw-Plath ir Kellan Elliott-McCrea (72 skaidres, bet verta išgyvena). Viliojančio pavyzdys jie davė prieš tai - tam tikros datos, FriendFeed nuskaityti Flickr 2,9 milijonų kartų, kad gautumėte naujausius nuotraukas 45,754 vartotojų, iš kurių 6721 jau aplankė Flickr tose 24 val. Ir galėjo potencialiai "nuotrauka įkelta. Atkreipkite dėmesį, kad tai, ką jie pasiūlė ne nauja technologija, kaip jie "revoliucinį naują 20 metų senumo technologiją". Jei daryti dienoraščių tada vienas iš pagrindinių problemų, su XMPP - buvimas duomenys lengvosios frakcijos, kurios gali būti toks didelis, kaip 60-70%, galima sumažinti daug.
pubsubhub reiškia skelbti prenumeruoti šakotuvą, ir pubsubhubbub yra protokolas, kurios branduolys yra idėja pubsubhub. Kur svietimo pasakyti Bloggers) atnaujinti koncentratorius, kuri (gali būti daugiau nei vienas mazgai, kalbėtis tarpusavyje) gyvena "kažkur debesyje", kaip numatyta protokole, tai galima stumti arba traukti už protokolo, bet kitą saitą grandinės, koncentratorius klientui (tarkim skaitytojus) visada stumti modelį. Šis puslapis yra geras atspirties taškas, pubsubhubbub apžvalga skaidrės yra geri. Kada nors iškalbingas Anil Dash apibūdina jį kaip mygtukinius internete.
Dvi kitos susijusios skaito tai yra webhooks kuris yra iš esmės http Atgalinės iššūkius. Github naudoja ją, kad PayPal asinchroniniam pranešimus apie mokėjimo IPN . Taigi daugelis kitų. Susiję sąvoka yra rsscloud, kuris yra again pubsub koncentratorius. Sekite šią nuorodą norėdami sužinoti daugiau.
Jums gali būti įdomu, kas yra taškas raštu visa tai čia yra du 1. Šie dalykai yra verta žinoti, minimaliai ne mažiau kaip ir 2. Šis dienoraštis yra dabar įjungtas pubsubhubbub per appspot Stebulės naudojant šią WordPress įskiepiai ir pašarams yra įjungtas pubsubhubbub per FeedBurner, nuorodą čia
-
[ 1 ]. - Geras įvadinis skaityti visiškai homomorphic šifravimo tai Bruce Schneier straipsnis ir šis aptarimas yra daugiau ar mažiau tik "Google" banga šaltinis.
Atnaujinimas - Šis pranešimas paaiškina, kaip visuomenės serveryje atgalinių reikalavimas gali būti dirbo aplink XMPP vartai [pubsubhubbub), stalinių klientų.
Truputis susirinkimų
Perskaičius šį straipsnį apie stabdžiu laisvų buferių ir matyti CAS naudoti, lyginti ir keistis), jaučiau kaip parašėte surinkimo kodą daryti tą patį. Naudokite bylą ten buvo parašyti gimtoji metodą ir jį vadiname iš Java (1,5, kai tuo pačiu metu duomenų struktūros Java buvo daugiau ar mažiau ne visai). Be tolesnio ceremonija, aš ant jūsų atskleisti kodą
. Pirmasis yra CAS ir antra skaičiavimo GCD naudojant Euklido algoritmą galima rasti daugelyje vietų ir vadovėliai, taip pat tai vienas).
Sudaryti ir, paleisti instrukcijas gcc file_name.c ; ./a.out
Palyginti ir Swap
# Include# Include / / Mainai - newvalue comperand metai / laukiama vertė / * * Funkcija iš tiesų šį dalyką - jei vertė yra lygi, į oldvalue tada pakeisti jį newvalue dar palikti jį nepakeistą * dest: padaryti visus šiuos atominių * * Yra du variantai sugrįžimo vertę * 1.is pradinė vertė * dest ir palikti kurios skambinama fxn, našta, palyginti ją su oldval * 2. padaryti čia ir grąžina 0 arba 1, tai turėtų būti efektyvesnė ** / / * Vėliau pakeisti jį į makrokomandos * / LC 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 rezultatas = 1 ;/ * 1 rodo, kad cas pavyko ir 0 rodo, kad ji nesugebėjo * / / * BTW reikia nustatyti kubinių centimetrų vėliava clobbering! * / __asm__ __ volatile__ ( "Movl% 2% EAX \ n \ t" "Movl% 3%% ebx \ n \ t" "Movl% 0%% ECX \ n \ t" "UŽRAKTAS \ n \ t" "CMPXCHG% ebx (% ECX), \ n \ t" / * LOCK būti toje pačioje eilutėje * / "JZ PRIIMTA \ n \ t" "Movl $ 0,% 1 \ n \ t" "Priimta: \ n \ t" : "=" (DEST), "= g (rezultatas) : G (oldvalue), "g" (newvalue), "M" (dest) : "% EAX", "% ebx", "ECX", "CC" ); printf ("(% d% d,% d)" * dest, oldvalue, newvalue),; grįžti rezultatas; } / * TODO * Rašyti kitą ASM fxn, kuris ištaisytų virš fxn į while cikle ir nuolat bando, kol negalės * / 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)); printf ("% d \ n", CAS (c,)); printf ("% d \ n", CAS (C, B, b)); * C = 6; / * C = 5 * / printf ("Kintantis vertė * c% 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, b)); printf ("% d \ n", CAS (c, b)); grįžti 0; }
Formatavimo pažymi - atrodo kaip wp sintaksės žymėjimą didina galų gale, ignoruoti.
GCD
# IncludeLC gcd (int, int b) { LC rezultatas; / * Apskaičiuokite didžiausias bendras daliklis, Euklido "algoritmas * / __asm__ __ volatile__ ("movl% 1%% EAX;" "Movl% 2% ebx;" "CONTD: cmpl $ 0,%% ebx;" "Je PADARYTA;" "Xorl%% EDX,%% EDX;" "Idivl% ebx;" "Movl%% ebx,%% EAX;" "Movl%% EDX, ebx%%;" "JMP CONTD,;" "Priimta: movl%% EAX,% 0;": "= g (rezultatas):" g "a" G "(b) ); grįžti rezultatas; } int main () { int 1. antra; printf ("Įveskite du sveikieji skaičiai:"); scanf ("% d% d", & pirma, ir antrasis); printf ("% d ir% d GCD yra% d \ n", pirma, antra, gcd (pirmas, antras)); grįžti 0; }
Cricketing pasaulis laukia nauja pasaulio tvarka
Po serijos, apimanti penkių bandymų ir maždaug du mėnesius, Anglija regeneruotus pelenų.
Leiskite kalbėti apie laimėjusios komandos - jų vidutinio kad yra "vidutinė", jei nenorite kritiškai. Greame Swann indėlis su šikšnosparnių suskaičiuoti ne mažiau nei su kamuoliu įmokų. Stuartas Platus - geriausias universalumas ne starteris, 5 bandymą. Andrew Strauss, buvo tik atitinka mušėjas ir Džimis Anderson tik atitinka Bowler.
Esmė ne Bare laimėjusios komandos pasiekimus, bet ir įdėti į perspektyvą, tai, kad nepaisant visų šių, Australija prarastą. jūs turite galvoti kelias sekundes, jei prašoma pavadinti savo geriausią Bowler. Teisė, ji buvo BW Hilfenhaus,. Hauritz aplenkė everbody lūkesčius, bet dar nėra pakankamai geri, kad būtų atrinkti du iš penkių bandymų. Pietų Afrika niekada tapo pasaulio spragilas be pasaulinio lygio suktuko, Australija negali tikėtis išlikti be vienos pakankamai geros bent vieną iš. Magas paliko sceną, ir ji atrodo ne kaip meno nebėra, pamiršti magija. Ponting stovi aukštas tarp kitų mažesnių mirtingiesiems ir Michael Clarke atsistoja labai dažnai, tačiau tai daro juos su kai kurių labai gerų žaidėjų ir ne labai gera komanda komanda.
Uosių 2009 bus galima prisiminti Andrew Flintoff "pastaruosius Ashes, Stuarto Broad" atvykimo visi apvalesnės (jei jis prideda šiek tiek daugiau Ashes folklorą jo perspektyvus pradžios), ir kad pats iškalbingiausias debiutinio a visą laiką pagal Trott bet ji bus taip pat būti prisimenamas kaip taško, kur atsikalbinėjimas apie Australijos viršenybės pagaliau buvo teikiami poilsio, tai yra daugiau. Nesupraskite manęs klaidingai, jie vis dar gali atkasti Mike'as Hussey arba Stuartas Clark, bet jūs jaučia visų laikų didžiūnai indėlį, kai jie dingsta. Kartais jie ateina į jums priminti apie save IPL, bet vis tiek jie negali būti pakeistas. Leiskite jaustis palaimintas matęs Warne, McGrathas ir Gilchrist žaisti kartu ir palaiko Waughs, Ponting, Hyden, Martin ir LANGER.
Žvelgiant į ateitį, Pietų Afrika visada lieka labai gera komanda, tačiau jie turi laimėti pusfinalio ir labiau atitinka visame pasaulyje, Pakistanas likti Enigmatycznie puikus, Indijos Young Guns tikriausiai suprato, kad tai sunku užpildyti ypatingų pirmtakai batus. Šri Lanka turėtų ir toliau rodo žvilgsnius meno amatų. Tačiau, mes turime laukti, kol kažkada prieš visų jėgų dominuojančią komandą arba prieš kapitonas skundžiasi nepakankama konkurencija, kaip Steve Waugh kartą padarė.
Dėl tam susijusios pastabos - galime pasveikinti, dar nugarą, Asif, jis turi tam velnių daug potencialo, let 's tikimės, kad pamatyti, kiek nuo jo ir taip pat sveikiname Andy Flower į naują awatar, teisė jūs negalite išlaikyti gerus vyrus žemyn ilgai.
ruby 1 įklotai sukurti maišos
Vakar, o išgyvena vieną iš savo senų programų, radau, tai parašė man kada nors atgal:
#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
Siekiant sunaikinti kai nežinia, leiskite man atskleisti, kad raw_text atrodo
, Tiesa ji buvo sumažinta nuo paypal mokėjimo patvirtinimą.
Virš linijos, jei neveikia dalimis skaito geriau:
unescaped_array = CGI.unescape (raw_text). split ("&") unescaped_array = unescaped_array.collect {| x | b = x.split ("="); b.push (nulinis), jei b.size == 1;} flattened_array = unescaped_array.flatten hash = hash [* flattened_array]
Leiskite Padarykim atskirus veiksmus IRB:
IRB (Pagrindinė): 009:0.> unescaped_array = CGI.unescape (raw_text) padalijimas ("&") => ["SĖKMĖ", "mc_gross = 10,00", "protection_eligibility = Netinkamos", "payer_id = U7PPJJ4TSJ47E", "mokestis = 0.00", "payment_date = 09:45:30 Lie 10, 2009 PDT", "payment_status = Kol "] IRB (Pagrindinė): 013:0> unescaped_array = unescaped_array.map {| x | b = x.split ("="); b.push (nulinis), jei b.size == 1;} => ["SĖKMĖ", nulis], ["mc_gross", "10,00"] ["protection_eligibility", "netinkamas"] ["payer_id", "U7PPJJ4TSJ47E"] ["mokesčių", "0.00"] ["payment_date", "09:45:30 Jul 10, 2009 PDT"] ["payment_status", "Iki"]] IRB (Pagrindinė): 014:0> flattened_array = unescaped_array.flatten. => ["SĖKMĖ" nulinis ", mc_gross", "10,00", "protection_eligibility", "netinkamas", "payer_id", "U7PPJJ4TSJ47E", "mokestis", "0,00", "payment_date", "09:45: 30 Lie 10, 2009 PDT "," payment_status "," Iki "] IRB (Pagrindinė): 015:0> hash = hash [* flattened_array] => {"Mokestis" => "0,00", "payment_status" => "Iki", "payer_id" => "U7PPJJ4TSJ47E", "mc_gross" => "10,00", "SĖKMĖ" => nulis, "payment_date" = > "09:45:30 Lie 10, 2009 PDT", "protection_eligibility" => "netinkamas"}
BTW, * vadinama šauktukas operatorius, ruby
Kitas būdas sukurti maišos iš "masyvas porų", - naudoti švirkšti:
hash = [1,2] [3,4] švirkšti ({}). {| rezultatas, elementas | rezultatas [element.first] = rezultatas [element.last];} Yra dar vienas būdas
Rašyti kilpą, kad aš paliksiu kaip pratybose skaitytojų!!
Čia yra šiek tiek nesusijęs sukurti maišos iš masyvų naudojimo atvejis:
IRB (Pagrindinė): 005:0> [1,2,3,4,7,9] group_by {| x | x <5.? : Mažesnio :: didesnė} => {: Mažiau => [1, 2, 3, 4]: daugiau => [7, 9]}
Tai galite padaryti daugiau dalykų, iš esmės rezultatas bloko naudojamas kaip šio elemento, hash raktas.
Gmail Mutt ir msmtp, nustatyti
Jei naudojate Mutt ir SMTP Prieiga "Gmail". Čia yra (blogas) naujienos. Cool vaikinai "Google" vėl pasikeitė sertifikatą. O, tu paklausti - kaip jis tai žino? Paprasta mutt pradėjo skųstis apie netinkamą sertifikato bandant naudoti msmpt, liūdnai "msmtp,: TLS pažymėjimas patikrinimas nepavyko. Sertifikatas ne got a žinomą emitentą pasitiko mane ekrane.
Norėdami kirsti patvirtinti -
Tiesiog paleisti po
$ msmtp --serverinfo --host=smtp.gmail.com --tls=on --port=587 --tls-certcheck=off
Vietoj senosios Thwate Server dabar jums po emitento segmente
Issuer:
Common Name: Google Internet Authority
Organization: Google Inc
Country: US
Laimei nustatyti yra labai paprasta, čia yra tai, ką reikia daryti debian
# apt-get install ca-certificates
# dpkg -s ca-certificates|grep Version
Version: 20090814
Po to tiesiog pakeisti šią eilutę. Jūs ~~ /. 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
į
tls_trust_file /usr/share/ca-certificates/mozilla/Equifax_Secure_CA.crt
Git ir Nuostabus Apklausa
Čia yra dvi nuorodos dėl tyrimo pagal git (versija kontrolės sistema) ir nuostabus (langas vadybininkas) bendruomenės. Jei naudojate vieną iš jų, prašom imti šiek tiek laiko užpildyti klausimyną. Pagalvokite apie tai, kaip paprasčiausiu būdu prisidėti atgal į programinę įrangą jūs naudojate.
Čia yra nuorodos:
Git - http://www.survs.com/survey?id=2PIMZGU0&channel=Q0EKJ3NF54
Awesome - http://www.survs.com/survey?id=8BVEV3FO&channel=BH07CQ040D
Pastaba - (Kaip rasti šiuose puslapiuose, bet apačioje
) -
"Jei turite įgalinti slapukai,, jūs visada galite pateikti dalinai užpildytą tyrimą, ir grįžti į jūsų atsakymus vėliau, užbaigti jį vėliau."
Sisteminį maišos yaml conf failus
Yaml yra gana patogu rašyti konfigūracijos failus. Pagrindinis privalumas yra tai, kad ji skamba kaip tekstinį failą. Tai veikia tikrai gerai, jei jūsų konfigūracijos failas yra plokščia (ne hierarchija) ir neturi pakartojimų.
Jei Jūsų konfigūracijos failas yra pakartojimų tada prasminga išskirti šiuos elementus ir pakartotinai juos. Ką reiškia tai, tarkime, jūsų konfigūracijos failas atrodo taip:
plėtra: input_location: common_input output_location: dev_location paštas: smtp_server: your_server Vartotojas: your_login slaptažodis: top_secret gamyba: input_location: common_input output_location: dev_location paštas: smtp_server: your_server Vartotojas: your_login slaptažodis: top_secret
Darant prielaidą, kad virš kodą į / tmp / test.yml čia, kaip jūs galite skaityti python ir Ruby
$cat readyml.py
#! / Usr / bin / env python , iš pprint importo pprint kaip pp # Debian reikia instaliuoti python-yaml yaml importo apkrovos, load_all, sąvartynas hash = apkrova (atvira ('/ tmp / test.yml ")) PP (maišos ["tobulinimas '])
$ cat readyml.rb
#! / Usr / bin / env ruby reikalauti "pp ' hash = yaml :: apkrova (File.open ('/ tmp / test.yml ") ... skaityti) PP maišos ['vystymasis']
čia yra patogus įdėklas ruby versija
$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]' arba galite pabandyti pats IRB ar python konsolės.
Atkreipkite dėmesį, kad pirmiau kodo fragmentą, viskas išskyrus išėjimo vieta yra pati kūrimo ir gamybos daliai. Tai, kur yml mazgas identifikatorius ateina gelbėti. Idėja yra labai paprasta, numatytųjų reikšmių rinkinį ir perrašyti jas kitoje vietoje.
Jūs galite ištraukti jį išskiria taip:
defaults: ir pagal nutylėjimą input_location: common_input output_location: dev_location paštas: Sender_name: siuntėjas smtp_server: your_server Vartotojas: your_login slaptažodis: top_secret plėtra: <<: * Pagal nutylėjimą gamyba: <<: * Pagal nutylėjimą output_location: prod_location
$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]["mail"]["login"]'
"your_login"
$
Puiku, ji veikia (tm)!.
Be abejonės mes prekiaujama šiek tiek aiškumo šiek tiek magijos. Čia yra nedidelis paaiškinimas: &, * ir <<: ir kuris yra žymės saito gali būti suprantama kaip mazgo identifikatoriaus * mazgas nuoroda ir <<: reiškia maišos suliejimą.
Dėl išsamesnės informacijos žr. Arba yaml specifikacijų arba Wikipedia
Iki šiol tokia gera, bet čia yra laimikis, šios maišos susilieja nėra rekursinis. Ką tai reiškia yra tokia: tarkime, norite turėti skirtingą dviejų aplinkų paštu siuntėjo vardą, jums gali būti linkusios daryti taip:
defaults: ir pagal nutylėjimą input_location: common_input output_location: dev_location paštas: Sender_name: siuntėjas smtp_server: your_server Vartotojas: your_login slaptažodis: top_secret plėtra: <<: * Pagal nutylėjimą paštas: Sender_name: sender_dev gamyba: <<: * Pagal nutylėjimą output_location: prod_location paštas: Sender_name: sender_prod
Leidžia patikrinti,
$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]["mail"]["login"]'
nil
$
Oi, kažkas nutiko, kaip minėta problema yra ta, kad maišos suliejimas nėra rekursinis o sujungus jis pakeitė laišką įsipareigojimų nevykdymo paštu produkcija, kuri turi tik vieną klavišą. Sprendimas / darbas aplink išsivynioti daugiau vieną lygį:
common_settings: & common_settings input_location: common_input output_location: dev_location mail_defaults: ir mail_defaults Sender_name: siuntėjas smtp_server: your_server Vartotojas: your_login slaptažodis: top_secret defaults: ir pagal nutylėjimą <<: * Common_settings paštas: <<: * Mail_defaults plėtra: <<: * Pagal nutylėjimą gamyba: <<: * Pagal nutylėjimą paštas: <<: * Mail_defaults Sender_name: sender_prod
Leidžia patikrinti dar kartą
$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]["mail"]["login"]'
"your_login"
$
Ar jūs kalbate, jūs turite dar vieną lygį, lizdus, gerai jūs tikrai gali išsivynioti dar vieną lygį, bet tada ji tampa netvarka. Taigi, jei esate ne bando parašyti sprendimą bokštus Hanojus conf faile, geriau, į restucture conf failą ne kasti į yaml ar kažkas kita. Bet tai jūsų skambutis vistiek.
Didžiosios programuotojų rasti paprastus sudėtingų problemų sprendimus
Po ilgo laiko galėčiau rasti šaltinį kotiravimu
Junior programuotojams kurti paprastus paprastų problemų sprendimus. Vyresnieji programuotojai kurti kompleksinius sprendimus sudėtingų problemų. Didžiosios programuotojų rasti paprastus sprendimus sudėtingų problemų.
Tai esė " Gražus Programinė įranga Charles Connell.
Kitas mano mėgstamiausia vienas iš Python Zen -
Gražu tai geriau nei negraži.
Aiškus yra geriau nei numanoma.
Paprasta yra geriau nei komplekso.
Kompleksas yra geriau, nei sudėtinga.
Butas yra geriau nei įdėtos.
Retas yra geriau nei tankus.
Skaitomumo skaičius.
Ypatingi atvejai nėra pakankamai specialus, kad laužyti taisykles.
Nors praktiškumo beats grynumą.
Klaidos niekada turėtų praeiti tyliai.
Jei aiškiai nutildytos.
Neaiškumų veido, atsisakyti pagundos atspėti.
Turėtų būti viena ir, pageidautina, tik vienas akivaizdus būdas tai padaryti.
Nors šis būdas gali būti akivaizdu iš pradžių, nebent esate olandų.
Dabar yra geriau, negu niekada.
Nors niekada dažnai yra geriau nei * dešinę * dabar.
Jei įgyvendinimas yra sunku paaiškinti, tai bloga idėja.
Jei įgyvendinimas yra lengva paaiškinti, ji gali būti gera idėja.
Vardų sritis vieną honking puiki idėja - leisti tai padaryti daugiau tokių!
-------------------------
ir ten yra klasikinis Tao apie programavimą
-
kreditus, dėl susieto svetainėje
Išvertė pateikė Geoffrey James
Perrašyti kunigaikščio Hillard
Perduoda, Anupam Trivedi, Sajitha Tampi ir Meghshyam Jagannath,
Re-html-izuoti ir redagavo Kragen Sittler,
-
1 knyga - Silent Tuštuma
Taigi kalbėjo pagrindinį programuotojas:
"Kai sužinojome, klaidos kodą ištraukti iš spąstų rėmo,
bus laikas jums palikti. "1,1
Kažkas paslaptingas yra suformuotas ramioje tuštumos, gimęs. Laukiama vienas ir
Unmoving, jis yra ne kartą dar ir dar nuolat juda. Jis yra šaltinis
visose programose. Aš nežinau savo vardą, todėl aš ją vadina Tao,
Programavimas.Jei Tao yra didelis, tada operacinė sistema yra puikus. Jei operacinė
sistema yra puikus, tai kompiliatorius yra puikus. Jei sudarytojas yra didelis,
taikymas yra didelis. Vartotojas malonu ir egzistuoja
pasaulio harmonija.Programavimo Tao srautus toli ir grąža ryto vėjas.
1,2
Dao pagimdė mašinų kalba. Mašina kalba pagimdė
surinkėjas.Surinkėjo pagimdė kompiliatoriui. Dabar yra dešimt tūkstančių
kalbomis.Kiekviena kalba turi savo paskirtį, tačiau kuklus. Kiekviena kalba išreiškia
Yin ir Yang programinės įrangos. Kiekviena kalba turi savo vietą per Tao.Tačiau nereikia programuoti COBOL, jei jūs galite išvengti.
1,3
Pradžioje buvo Dao. Dao pagimdė Erdvės ir laiko.
Todėl Erdvė ir laikas yra yin ir yang programavimo.Programuotojai, kurie nesuvokia Tao visada bėga laikas
už savo programas ir erdvė. Programuotojai, kad suvokti Tao visada
turėti pakankamai laiko ir erdvės įgyvendinti savo tikslus.Kaip ji galėjo būti kitaip?
1,4
Išmintingas programuotojas papasakojo apie Dao ir taip jį. Vidutinis
programuotojas papasakojo apie Dao ir ieško jo. Kvailas programuotojas
papasakojo apie Dao ir juokiasi iš jo.Jei tai nebuvo juoko, nebūtų Dao.
Didžiausias garsai yra sunkiausia išgirsti.
Žvelgiant į ateitį yra būdas trauktis.
Puikus talentas rodo pati gyvenime pabaigoje.
Net puiki programa vis dar yra klaidų.-------------------------
2 knyga - senovės meistrai
Taigi kalbėjo pagrindinį programuotojas:
"Po trijų dienų be programavimo, gyvenimas netenka prasmės."
2,1
Metų programuotojai buvo paslaptingas ir gilus. Mes negali suvokti
jų mintys, todėl visi mes darome, yra apibūdinti jų išvaizdą.Žinodamas, kaip lapės perėjimo į vandenį. Perspėjimas, kaip apskritai
kovos laukas. Geras, kaip šeimininkė sveikina savo svečius. Paprasta, kaip
uncarved blokai, pagaminti iš medienos. Matinė, kaip juodos baseinai užtamsintuose urvų.Kas gali pasakyti savo širdyse ir protuose paslaptis?
Atsakymas egzistuoja tik Tao.
2,2
Didysis magistras Tiuringo kartą svajojo, kad jis buvo mašina. Kai jis pabudo, kad jis
sušuko:"Aš nežinau, ar aš AM Turing sapnuoja, kad Aš esu mašina, arba
mašiną svajoja, kad aš AM Turing! "2,3
Nuo labai dideliu kompiuterio bendrovės programuotojas nuėjo į programinės įrangos
konferencija ir grįžo pranešti savo vadovui, sakydamas: "Kokia
programuotojai dirba kitoms įmonėms? Jie elgėsi blogai ir buvo
nesusiję su pasirodymais. Jų plaukai buvo ilgas ir susivėlęs ir jų
drabužiai buvo susiraukšlėjęs ir metai. Jie sudaužė mūsų Hospitality Suite ir jie
Rude garsus per savo pristatymą. "Vadybininkas sakė: "Norėčiau niekada atsiuntė jums į konferenciją. Tie
programuotojai gyventi ne tik fiziniame pasaulyje. Jie mano gyvenimas absurdiškas,
atsitiktinis sutapimas. Jie ateina ir išeina be žinant apribojimus.
Be priežiūros, jie gyvena tik savo programas. Kodėl jie turėtų nerimauti
socialinių konvencijų?"Jie yra gyvas per Tao."
2,4
Naujokas paprašė Mokytoją: "Čia yra programuotojas, kad niekada projektuoja,
dokumentus ar bandymai savo programas. Tačiau visi, kurie žino jį apsvarstyti jam vieną iš
geriausi programuotojai pasaulyje. Kodėl taip yra? "Mokytojas atsako: "Tai programuotojas įvaldę Tao. Jis atvyko,
už projektavimo poreikį, jis netampa piktas, kai sistema
sugenda, tačiau pripažįsta, visatą be susirūpinimą. Jis peržengė
reikia dokumentus; jis nebeatitinka cares, jei kas nors mato savo kodą.
Jis peržengė būtinybės jų bandyti, kiekvienas iš savo programose yra puikus
savyje, rami ir elegantiška, jų tikslas yra akivaizdus. Iš tiesų,
jis įžengė į Tao paslaptį. "-------------------------
3 knyga - Dizainas
Taigi kalbėjo pagrindinį programuotojas:
"Kai programa yra išbandytas, jis yra per vėlu dizainas
pakeitimai. "3,1
Kadaise buvo žmogus, kuris nuėjo prie kompiuterio parodoje. Kiekviena diena kaip jis
įrašyti, vyras sakė sargybą prie durų:"Aš esu puikus vagis, garsėja mano žygdarbių vagysčių iš parduotuvių. Būti
įspėtas, šioje parodoje negali pabėgti unplundered. "Ši kalba sutrikdyta apsaugą labai, nes milijonai
dolerių kompiuterinės įrangos vidų, todėl jis stebėjo vyro atidžiai. Tačiau
vyras tik klajojo nuo kabinoje kabinos,, dūzgiantis tyliai sau.Kai vyras paliko, apsauga paėmė jį į šalį ir ieškojo savo drabužius, bet
nieko nebuvo galima rasti.Kitą dieną parodoje, vyras grįžo ir chided, apsaugą
sakydamas: "Aš su didžiule grobio pabėgo vakar, o šiandien bus dar
geriau ". Taigi,, apsaugas stebėjo jį dar labiau, tačiau nesėkmingai.Paskutinę dieną parodoje, apsauga gali apriboti savo smalsumą
nebėra. "Seras vagis", jis pasakė: "Aš esu taip suglumino, aš negali gyventi
taika. Prašom apšviesti mane. Kas tai, kad jums yra vagystė? "Vyras nusišypsojo. "Aš vagia idėjas", - sakė jis.
3,2
Kartą buvo meistras, programuotojas, kuris rašė nestruktūrinių programas.
pradedantysis programuotojas, siekiant imituoti jį, taip pat pradėjo rašyti
nestruktūrinių programos. Kai naujokas paprašė šeimininką įvertinti jo
pažanga, kapitonui ir kritikavo jį raštu nestruktūrinių programas,
sakydamas: "Kas yra tinkamas laivo kapitono tinka
naujokas. Jūs turite suprasti Tao prieš, pranokstantį struktūrą. "3,3
Kai programuotojas, kuris buvo pridėtas į teismą dėl karo vadu
Wu. Warlord paprašė programuotojas: "Kuris yra lengviau projektuoti:
apskaitos paketas ar operacinė sistema? ""Operacinė sistema", - atsakė programuotojas.
Warlord ištarė netikėjimo šauktukas. "Žinoma, apskaita
paketas yra trivialus šalia operacinės sistemos sudėtingumo, jis
sakė."Ne taip", - sakė programuotojas, rengiant apskaitos paketą,
programuotojas veikia kaip tarpininkas tarp žmonių, turinčių skirtingas
idėjos: kaip ji turi veikti, kaip jo ataskaitos turi būti, ir kaip ji turi
atitikti mokesčių įstatymų. Priešingai, operacinė sistema yra ne tik
išorės pasirodymų. Kurdami operacinę sistemą, programuotojas
siekia paprasčiausios harmoniją tarp mašinos ir idėjų. Tai kodėl
operacinė sistema yra lengviau projektuoti. "Wu Warlord linktelėjo ir nusišypsojo. "Tai viskas gerai ir gerai, bet
kuris yra lengviau derinti? "Programuotojas jokio atsakymo.
3,4
Vadovas nuvyko į pagrindinį programuotojas ir parodė jam reikalavimus
naujos paraiškos dokumentas. Vadovas paprašė šeimininką: "Kaip ilgai
užtruks sukurti šią sistemą, jei aš priskirti penkis programuotojus? ""Tai užtruks vienerius metus", - sakė kapitonas nedelsdamas.
"Bet mes turime šią sistemą iš karto ar net greičiau! Kaip ilgai tai bus
imtis, jei aš priskirti dešimt programuotojams? "Meistras programuotojas brwi. "Tokiu atveju ji užtruks dvejus metus."
"O kas, jei aš priskirti šimtus programuotojų?"
Meistras Programuotojas shrugged. "Tada dizainas niekada nebus
baigtas ", - sakė jis.-------------------------
4 knyga - kodavimo
Taigi kalbėjo pagrindinį programuotojas:
"Gerai parašyta programa yra savo rojus; blogai parašyta programa
savo pragarą. "4,1
Programa turėtų būti lengvas ir manevringas, jos Subroutines prijungtas kaip
perlų eilutė. Programos turėtų būti išlaikytos, dvasia ir ketinimų
visoje. Be to, turėtų būti nei per mažai arba per daug, nei
Nereikia nė kilpos, nei nenaudingas kintamieji, nei struktūrai, nei
Didžioji rigidiškumas.Programa turėtų laikytis `įstatymą mažiausiai nuostabą". Kas tai yra teisė?
Tai tiesiog, kad programa visada turėtų reaguoti į klientą taip, kaip
kad stebina jį mažiausiai.Programa, nesvarbu, koks sudėtingas, turėtų veikti kaip vienas vienetas. Programa
turėtų būti nukreiptas, o ne logika, per laikinojo išvežimo pasirodymai.Jei programa neatitinka šių reikalavimų, jis bus valstybės
sutrikimas ir sumišimas. Vienintelis būdas spręsti šią problemą yra perrašyti
programa.4,2
Naujokas paprašė laivo kapitoną: "Aš turiu programą, kuri kartais veikia ir
kartais nutraukia gyvenimą. Aš programavimo taisykles, tačiau aš esu
visiškai nesuprantamas. Kas yra priežastis? "Kapitonas atsakė: "Jūs esate supainioti, nes jūs nesuprantate Tao.
Tik kvailys tikisi racionalų elgesį iš savo artimais žmonėmis. Kodėl tu
tikėtis jį iš mašinos, kad žmonės pastatytas? Kompiuteriai imituoti
determinizmas; tik Tao yra puikus."Programavimo taisyklės yra laikini, tik Dao yra amžinas. Todėl
jums reikia kontempliuoti Tao, kol gausite apšvietimą. ""Bet kaip aš žinoti, kai gavau nušvitimą?" Paklausė
naujokas."Jūsų programa bus tinkamai paleisti", - atsakė meistras.
4,3
Buvo meistras paaiškinti Tao pobūdį į vieną iš savo naujokams. "
Tao įkūnija visa programinė įranga - nepriklausomai nuo to, kaip nereikšmingas ", - sakė
meistras."Ar rankiniu skaičiuoklė Tao?" - Klausė naujokas.
"Tai yra," atėjo atsakymas.
"Ar Tao vaizdo žaidimas?" Toliau naujokas.
"Tai net ir vaizdo žaidimų", - sakė kapitonas.
"Ir Tao DOS asmeninio kompiuterio?"
Kapitonas coughed ir šiek tiek perkėlė savo poziciją. "Pamoka yra daugiau nei
šiandien ", - sakė jis.4,4
Princo Wang programuotojas buvo kodavimo programinę įrangą. Jo pirštai šoko ant
klaviatūra. Programa sukompiliuota be klaidos pranešimą, programa
vyko tarsi švelnus vėjo."Puikiai!" Princas sušuko: "Tavo metodas yra nepriekaištingas!"
"Būdas?" Sakė programuotojas sukant iš jo terminale, "Ką aš
laikytis yra Tao - anapus visų technikų! Kai aš pirmą kartą pradėjo programos I
prieš mane visą problemą į vieną masę. Po trejų metų aš be
ilgiau pamačiau šią masę. Vietoj to, aš paprogramių. Bet dabar matau nieko.
Mano visa būtis yra beformė tuščia. Mano pojūčiai yra nenaudojamas. Mano dvasia,
laisvai dirbti be plano, taip savo instinktas. Trumpai tariant, mano programos
rašo pati. Tiesa, kartais yra sudėtingos problemos. Matau juos
ateina, sulėtinti, žiūriu tyliai. Tada galiu pakeisti vieną kodo eilutę
ir sunkumai išnykti kaip pūkinės neveikimo dūmų. Tada sudaryti
programa. Aš sėdėti ir leisti darbo džiaugsmas užpildyti, mano esybė. Uždaryti savo
akys akimirką ir tada išeiti. "Princas Wang sakė: "Ar, kad visi mano programuotojų kaip išmintingi!"
-------------------------
Užsisakykite 5 - Techninė priežiūra
Taigi kalbėjo pagrindinį programuotojas:
"Nors programa, bet trys eilutės ilgio, kada nors ji turi būti
išlaikytas. "5,1
Naudojamas durų reikia aliejus jokios įtakos vyrių.
Greitai-teka upelis neauga sustingusi.
Nei garso, nei mintys, gali keliauti per vakuume.
Programinė įranga puvinių, jeigu nevartojami.Tai yra didžiosios paslaptys.
5,2
Vadybininkas paprašė programuotojas, kiek laiko užtruktų jį baigti
programa, kurioje, dėl kurio jis dirbo. "Jis bus baigtas rytoj"
programuotojas greitai atsakė."Manau, kad jums yra nerealu", - sakė vadybininkas, "Teisingai, kaip
laiko užtruks? "Programuotojas akimirką pagalvojo. "Turiu keletą funkcijų, kurios nori
pridėti. Tai užtruks mažiausiai dvi savaites ", - jis galiausiai pasakė."Net tikėtis, kad yra per daug", - reikalavo, vadybininkas, "Aš būsiu
patenkinti, jei jūs tiesiog pasakykite man, kai programa yra baigta. "Programuotojas su tuo sutiko.
Po kelerių metų, vadovas pasitraukė. Kelyje į jo išėjimo į pensiją
užkąsti, jis atrado programuotojas užmigo prie savo terminalo. Jis buvo
programavimo visą naktį.5,3
Pradedantysis programuotojas kartą buvo priskirtas kodas paprastą finansinį paketą.
Naujokas įnirtingai dirbo daug dienų, bet kai jo šeimininkas peržiūrimi
jo programa, jis aptiko, kad jame ekrano redaktorių, rinkinys
apibendrintas grafinis kasdienybe, dirbtinis intelektas sąsaja, bet
ne menkiausio nieko finansų paminėjimas.Kai kapitonas paklausė apie tai, naujokas tapo piktinasi. "Nebūk
taip nekantrus ", - sakė jis," Aš įdėti galiausiai finansinių dalykų. "5,4
Ar geras ūkininkas pamiršti, derlių jis pasodintas?
Ar geras mokytojas nepastebi net labai kuklus studentas?
Ar geras tėvas, kad vienas vaikas badauti?
Ar geras programuotojas atsisakyti išlaikyti savo kodą?-------------------------
6 knyga - valdymas
Taigi kalbėjo pagrindinį programuotojas:
"Tegul programuotojai daug ir vadovai mažai - tada viskas bus
produktyvūs. "6,1
Kai vadovai turi nesibaigiančius susitikimus, programuotojai rašyti žaidimus. Kada
buhalteriai kalbėti apie ketvirčio pelną, plėtros biudžetas yra apie
būti nukirpti. Kai vyresnieji mokslininkai kalbėti mėlynas dangus, debesys su konstrukcija, apsaugančia nuo apvirtimo
inIš tiesų, tai nėra programavimo Tao.
Kai vadovai prisiimtų įsipareigojimus, žaidimų programos yra ignoruojami. Kada
buhalteriai, kad ilgo nuotolio planus, harmonija ir kad yra apie tai, kad būtų
atstatytas. Vyresnieji mokslininkai, spręsti problemas, po ranka,
problemos netrukus bus išspręstos.Iš tiesų, tai yra programavimo Tao.
6,2
Kodėl programuotojai yra neproduktyvus?
Nes jų laikas yra švaistomi susitikimuose.Kodėl programuotojai yra maištinga?
Kadangi valdymas trukdo per daug.Kodėl programuotojai atsistatydinantis po vieną?
Kadangi jie sudeginami.Dirbo prasto valdymo, jie nebeturi vertės darbą.
6,3
Vadovas buvo apie būti atleistas, bet programuotojas, kurie jam dirbo
sukūrė naują programą, kad tapo populiarus ir gerai parduodami. Kaip rezultatas,
vadovas išsaugojo savo darbą.Vadovas bandė suteikti programuotojas premiją, bet programuotojas
atsisakė jį, sakydamas: "aš parašiau programą, nes aš maniau jis buvo
įdomi koncepcija, ir tokiu būdu galiu tikėtis jokio atlygio. "Tai išgirdę vadovas pažymėjo, kad "šį programuotojas, tačiau jis turi
mažų pagarbą pozicija, supranta gerai tinkamas pareiga iš
darbuotojas. Leiskite mums skatinti jį sudvasintos poziciją valdymo
konsultantas! "Bet kai papasakojo tai, programuotojas dar kartą atsisakė, sakydamas: "aš egzistuoju
kad galiu programuoti. Jei aš būčiau paaukštintas, nenorėjau nieko daryti, tačiau atliekų
kiekvieno laikas. Ar galiu eiti? Turiu programą, kad aš darbo. "6,4
Vadovas išvyko į savo programuotojų ir pasakė jiems: "Kalbant apie jūsų darbą
Darbo laikas: jūs ketinate turi ateiti į devintą ryto ir palikti
penkių po pietų. "Šiuo, visi jie supyko ir keletas
atsistatydino vietoje.Taigi, vadovas sakė: "Gerai, tokiu atveju jūs galite nustatyti savo
darbo valandų, tol, kol baigsite savo projektus pagal grafiką ".
programuotojai, dabar patenkinti, pradėjo ateiti vidurdienį ir dirbti į mažutis
valandos ryto.-------------------------
Knyga 7 - Įmonių Išmintis
Taigi kalbėjo pagrindinį programuotojas:
"Jūs galite įrodyti įmonės vykdomosios programą, bet jūs negalite
jam kompiuterinio raštingumo ".7,1
Naujokas paprašė laivo kapitoną: "rytuose yra didelis medis struktūra
kad vyrai vadina "Bendrovės būstinė". Jis yra išsipūtęs formos
viceprezidentų ir buhalterių veiklą. Jis išleidžia daugybę atmintines, kiekvienos
sakydamas: "Eikite, Taigi!" arba "Eik čia!" ir niekas nežino, ką reiškia. Kiekvienas
year new names are put onto the branches, but all to no avail. How can
such an unnatural entity be?”The master replied: “You perceive this immense structure and are
disturbed that it has no rational purpose. Can you not take amusement from
its endless gyrations? Do you not enjoy the untroubled ease of programming
beneath its sheltering branches? Why are you bothered by its
uselessness?”7.2
In the east there is a shark which is larger than all other fish. Ji
changes into a bird whose wings are like clouds filling the sky. When this
bird moves across the land, it brings a message from Corporate
Headquarters. This message it drops into the midst of the programmers,
like a seagull making its mark upon the beach. Then the bird mounts on the
wind and, with the blue sky at its back, returns home.The novice programmer stares in wonder at the bird, for he understands it
not. The average programmer dreads the coming of the bird, for he fears
its message. The master programmer continues to work at his terminal, for
he does not know that the bird has come and gone.7.3
The Magician of the Ivory Tower brought his latest invention for the
master programmer to examine. The magician wheeled a large black box into
the master's office while the master waited in silence.“This is an integrated, distributed, general-purpose workstation,” began
the magician, “ergonomically designed with a proprietary operating
system, sixth generation languages, and multiple state of the art user
interfaces. It took my assistants several hundred man years to construct.
Is it not amazing?”The master raised his eyebrows slightly. “It is indeed amazing,” he
said.“Corporate Headquarters has commanded,” continued the magician, “that
everyone use this workstation as a platform for new programs. Do you agree
to this?”“Certainly,” replied the master, “I will have it transported to the
data center immediately!” And the magician returned to his tower, well
pleased.Several days later, a novice wandered into the office of the master
programmer and said, “I cannot find the listing for my new program. Do
you know where it might be?”“Yes,” replied the master, “the listings are stacked on the platform in
the data center.”7.4
The master programmer moves from program to program without fear. Ne
change in management can harm him. He will not be fired, even if the
project is cancelled. Why is this? He is filled with Tao.————————————————————————–
Book 8 – Hardware and Software
Thus spake the master programmer:
“Without the wind, the grass does not move. Without software, hardware is
useless.”8.1
A novice asked the master: “I perceive that one computer company is much
larger than all others. It towers above its competition like a giant among
dwarfs. Any one of its divisions could comprise an entire business. Why is
this so?”The master replied, “Why do you ask such foolish questions? That company
is large because it is large. If it only made hardware, nobody would buy
it. If it only made software, nobody would use it. If it only maintained
systems, people would treat it like a servant. But because it combines all
of these things, people think it one of the gods! By not seeking to
strive, it conquers without effort.”8.2
A master programmer passed a novice programmer one day. The master noted
the novice's preoccupation with a hand-held computer game. “Excuse me,”
he said, “may I examine it?”The novice bolted to attention and handed the device to the master. “I
see that the device claims to have three levels of play: Easy, Medium, and
Hard,” said the master. “Yet every such device has another level of
play, where the device seeks not to conquer the human, nor to be conquered
by the human.”“Pray, great master,” implored the novice, “how does one find this
mysterious setting?”The master dropped the device to the ground and crushed it underfoot. And
suddenly the novice was enlightened.8,3
There was once a programmer who worked upon microprocessors. “Look at how
well off I am here,” he said to a mainframe programmer who came to visit,
“I have my own operating system and file storage device. I do not have to
share my resources with anyone. The software is self- consistent and
easy-to-use. Why do you not quit your present job and join me here?”The mainframe programmer then began to describe his system to his friend,
saying “The mainframe sits like an ancient sage meditating in the midst
of the data center. Its disk drives lie end-to-end like a great ocean of
machinery. The software is as multifaceted as a diamond, and as convoluted
as a primeval jungle. The programs, each unique, move through the system
like a swift-flowing river. That is why I am happy where I am.”The microcomputer programmer, upon hearing this, fell silent. But the two
programmers remained friends until the end of their days.8.4
Hardware met Software on the road to Changtse. Software said: “You are
Yin and I am Yang. If we travel together we will become famous and earn
vast sums of money.” And so the set forth together, thinking to conquer
the world.Presently they met Firmware, who was dressed in tattered rags and hobbled
along propped on a thorny stick. Firmware said to them: “The Tao lies
beyond Yin and Yang. It is silent and still as a pool of water. It does
not seek fame, therefore nobody knows its presence. It does not seek
fortune, for it is complete within itself. It exists beyond space and
time.”Software and Hardware, ashamed, returned to their homes.
————————————————————————–
Book 9 – Epilogue
Thus spake the master programmer:
“It is time for you to leave.”
————————————————————————–
If you liked these, you may also like to read worse is better
A bit of shell redirection
Here is how we normally do shell redirection
$ ./pgm.sh args >out.txt 2>err.txt
I wanted to modify it a bit and run as follows
$ ./pgm.sh args
with the requirement that output and error should go to some filename computed inside pgm.sh based on args. One illustrative case could be when date is part of args. So you would like stdout to go to say /your/directory/pgm_out_YYYYMMDD.txt 1
The problem with standard way of redirecting N>file.txt ie, associating file descriptor N to file.txt , is that it works only for the newly forked process and not for the current process.
so
$ echo hi 1>out.txt ; echo hii will send hi to out.txt but will print hii to stdout. 2
This is where exec comes to our rescue. If we add exec 1>somefile.txt then output from rest of the script will go to somefile.txt
$./test.sh will redirect hi as well as hii to out.txt
$ cat test.sh
#!/usr/bin/env bash
exec 1>out.txt
echo hi
echo hii
Similarly to redirect stdout as well as stderr we'll do something like this
cat test2.sh
exec 1>out.txt
exec 2>err.txt
echo out text
echo 1>&2 err text
somenoneexitent command
ls -ld /tmp
Now coming back to original point of redirecting to some file from inside the shell, let's say program computed the filename in some variable OUTFILE, we could have just done exec 1>$OUTFILE
That solves the current problem. But you may like to go through following example which achieves 'random access' of file in shell script. Example is from here
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
With comments, this code is self explanatory.
-
1 It can also be done by $ ./pgm.sh args >pgm_out`date +%Y%m%d` but idea is to generate this file name based on some logic in program itself.
2 1 in 1>out.txt is redundant but it clarifies here that we are redirecting fd 1
"Sony VAIO apžvalga
A month back I bought a vaio NS25G and have been planning to write this post since then. This post is primarily notes to self and review of the same. Let's get off the mark quickly -
Post has two parts -
I. Review of hardware
II Installing debian and things to setup
Since I am not a VAIO marketing guy, I'll start other way round -
Why you may not like to buy this laptop :
- No bluetooth : believe me, in 2009 sony sells laptop without bluetooth. Sure you can use usb stuff but …
- Screen size is 15.4 inches : if you travel a lot then this laptop may not be very handy and also 2.9kg laptop is not exactly the lightest around.
- No HDMI output.
- No separate graphics card and the likes.(and no dedicated video memory
Now , why you may like to buy it :
- This laptop is a damn good desktop. What I mean is this if your requirement is like me – mostly writing programs and trying to use it 25 out of 24 hrs, then with a big screen , extremely comfortable keyboard layout with spacious palm rest and good compute power , it makes a very good combination.
- It L2 cache is 2MB and processor/memory system bus are 800MHz. I don't play games so can't say about that but for anything else but a core 2 duo processor with 2GHz freq is good, this is more than enough.
- From my usage, I see processor mostly clocks at 1.2GHz, and memory usage ~500MB. That just reinforces previous point.
- 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:
- 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.
- 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) - Video cam – just works
- Hibernate to disk and back – no problem
- 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 -
- 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"



































