poll, ping, PubSub, pubsubhub, pubsubhubbub

06 september 2009 door Prashant · Reacties
Geplaatst onder: technologie

In het geval dat je sceptisch bent, is er een methode in de waanzin boven, in de titel van de post. In tech kringen is het niet waarschijnlijk dat je niet hebben gehoord van pubsubhubbub. In snelle paar maanden, is het een van de top drie gesproken over dingen. Andere twee zijn homomorfe encryptie en Google wave [ 1. ]. Terugkomend op de huidige post - termen in de titel aangeven hoe u de inhoud te krijgen van andere mensen. Na de details veel duidelijker geworden, als je je voorstellen dat dingen gebeuren met betrekking tot blogs, ook al zijn ze conceptueel zijn niet beperkt tot blogs.

Polling verwijst naar het scenario waarin klanten blijven vragen van de server als er iets nieuw is gekomen. Hoe vaak om te vragen of er updates zijn zal altijd een probleem met polling te vaak of te onregelmatig, maar als een lezer wees hier dat een groot, ding met polling is dat de server niet hoeft te toestand te houden.

Ping heeft betrekking op het geval dat bij het plaatsen van een artikel, u (of uw software) werkt ook een aantal populaire (CV) Update Services. Wat achtergrond hier .

Vervolgens is PubSub wat staat voor publish / subscribe, een van de eerste plaats voor het werd gemaakt hier door Evan Henshaw-Plath en Kellan Elliott-McCrea (72 dia's, maar de moeite waard door). Dwingende voorbeeld gaven ze tegen was deze - op een bepaalde datum, FriendFeed kroop Flickr 2,9 miljoen keer om de nieuwste foto's van 45.754 gebruikers krijgen, waarvan er 6.721 waren Flickr bezocht in die 24 uur en kan 'potentieel' heeft een foto toegevoegd. Merk op dat wat ze voorgesteld, was niet een nieuwe technologie, omdat ze wijzen op 'revolutionaire nieuwe 20 jaar oude technologie'. Als je het voor blogs dan een van de grote problemen met xmpp - aanwezigheid van gegevens overhead, die kan oplopen tot 60-70% kan worden verminderd veel.

pubsubhub staat voor publiceren subscribe hub en pubsubhubbub is een protocol, Essentieel is dat idee van pubsubhub. Waarin uitgevers (zeg bloggers) bij te werken, die de naaf (kan meer dan een hubs, die met elkaar praten) woont 'ergens in de cloud', volgens het protocol dit kan duwen of trekken volgens het protocol, maar de volgende schakel in de keten, hub van de klant (laten we zeggen lezers) het altijd model te duwen. Deze pagina is goed uitgangspunt voor pubsubhubbub, overzicht dia's zijn goed. Ooit welsprekende Anil Dash beschrijft het hier als drukknop web.
Twee andere maal gelezen zijn webhooks die in feite http callbacks. GitHub gebruikt , dus doet paypal voor asynchrone kennisgevingen van betaling in IPN . Dat geldt ook voor vele anderen. Verwant begrip is rsscloud die weer is PubSub hub. Volg deze link voor meer informatie.

U vraagt ​​zich misschien af ​​wat is het punt van het schrijven van al deze hier, zijn er twee: 1. Deze dingen zijn de moeite waard te weten, minimaal op zijn minst en 2. Deze blog is pubsubhubbub nu ingeschakeld via appspot hub het gebruik van dit wordpress plugin en diervoeders te pubsubhubbub is ingeschakeld via FeedBurner, link hier
-
[ 1 ]. - Goede inleidende lezen voor volledig homomorfe encryptie is dit artikel van Bruce Schneier en dit gesprek is min of meer enige bron voor Google wave.

-UPDATE - Dit bericht wordt uitgelegd hoe de eis van de openbare server voor terugbellen kan worden gewerkt rond voor desktop clients via XMPP-gateway (voor pubsubhubbub).

Een beetje van vergadering

29 augustus 2009 door Prashant · Reacties
Geplaatst onder: technologie

Na het lezen van dit artikel over lock vrij buffers en het zien van het gebruik van CAS (te vergelijken en te wisselen), voelde ik me net als het plaatsen van de assemblage-code om hetzelfde te doen. Gebruik geval daar was om een ​​eigen methode te schrijven en het noemen van Java (terug in 1.5, wanneer gelijktijdige datastructuren in Java waren min of meer ontbreekt). Zonder verdere omhaal, ik zal de code los te laten op je :) . De eerste is voor de CAS en de tweede is voor het berekenen van GCD met behulp van het algoritme van Euclides (deze is te vinden op vele plaatsen en tutorials ook).

Compileer en uitvoeren instructies gcc file_name.c ; ./a.out

Vergelijk en Swap

   # Include 
  # Include 
 / / Uitwisseling - newValue, comperand is oud / verwachte waarde
 / *
  * Functie doet eigenlijk het volgende ding - als de waarde op * dest is gelijk aan dan oldvalue te vervangen door newValue anders laat het onveranderd: niet al deze atomair
  *
  * Er zijn twee opties voor de return waarde
  * 1.is initiële waarde van * dest en laat de last van de oproep FXN te vergelijken met oldval
  * 2.  doen het hier over en weer 0 of 1, moet dit efficiënter
  ** /

 / * Later veranderen in macro * /
 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 resultaat = 1 ;/ * 1 laat zien dat cas geslaagd en 0 geeft aan dat het * niet /
	 / * Btw moeten cc voor vlag verpesten!  * /
	 __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" / * moet LOCK op dezelfde lijn * /
			 "JZ GEDAAN \ n \ t"
			 "Movl $ 0,% 1 \ n \ t"
			 "DONE: \ n \ t"
			 : "= M" (DEST), "= g" (resultaat)
			 : "G" (oldvalue), "G" (newValue), "m" (DEST)
			 "% Eax", "% ebx", "ecx", "cc"
			 );
	 printf ("(% d,% d,% d)", * DEST, oldvalue, newValue);
	 terug te keren resultaat;
 }

 / * TODO
  * Schrijf een andere asm FXN die hierboven FXN zet in de zoveel tijd loop en blijf proberen, tenzij het lukt * /

 int main () {
	 int a = 5, b = 6;
	 int * c = (int *) malloc (sizeof (int));
	 * C = 6;
	 / * Int c = 6; * /
	 printf ("% d \ n", cas (c, b, b));
	 printf ("% d \ n", cas (c, b, a));
	 printf ("% d \ n", cas (c, a, a));
	 printf ("% d \ n", cas (c, b, b));
	 * C = 6;
	 / * C = 5; * /
	 printf ("veranderende waarde van * c om% d \ n", * c);
	 printf ("% d \ n", cas (c, b, b));
	 printf ("% d \ n", cas (c, b, a));
	 printf ("% d \ n", cas (c, a, a));
	 printf ("% d \ n", cas (c, a, b));
	 printf ("% d \ n", cas (c, b, a));
	 return 0;
 }

Opmaak van nota's - lijkt wp syntax highlighter is het toevoegen van op het einde, negeren dat.

GCD

 # Include 
 int ggd (int a, int b) {
     int resultaat;
     / * Compute Grootste gemene deler met behulp van het algoritme van Euclides * /
     __asm__ __ volatile__ ("movl% 1,%% eax;"
                           "Movl% 2,%% ebx;"
                           "Vervolg: cmpl $ 0,%% ebx;"
                           "Je gedaan;"
                           "Xorl%% edx,%% edx;"
                           "Idivl%% ebx;"
                           "Movl%% ebx,%% eax;"
                           "Movl%% edx,%% ebx;"
                           "Jmp Vervolg;"
                           "DONE: movl%% eax,% 0;": "= g" (resultaat): "g" (a), "G" (b)
     );

     terug te keren resultaat;
 }

 int main () {
     int eerste, tweede;
     printf ("Geef twee gehele getallen:");
     scanf ("% d% d", & eerste en tweede);

     printf ("GCD van% d &% d is% d \ n", eerste, tweede, ggd (eerste, tweede));

     return 0;
 }

Cricket wereld wacht op een Nieuwe Wereld Orde

25 augustus 2009 door Prashant · Reacties
Geplaatst onder: misc

Na een reeks verspreid over vijf tests en ongeveer twee maanden, Engeland teruggewonnen as.

Laten we praten over het winnende team voor het eerst - hun midden orde is 'gemiddeld' als je niet wilt kritisch. Greame Swann de bijdrage met de knuppel telt niet minder dan bijdrage met de bal. Stuart Broad - de beste allrounder was niet starter voor de 5e test. Andrew Strauss was de enige consistente batsman en Jimmy Anderson was de enige consistente bowler.

Punt is hier niet om de verworvenheden van het winnende team hekelen, maar om in het juiste perspectief het feit dat ondanks al deze, Australië verloren. je zult moeten denken voor enkele seconden, indien gevraagd om hun beste bowler te noemen. Juist, het was BW Hilfenhaus. Hauritz beter dan everbody de verwachting, maar was nog niet goed genoeg om te worden geselecteerd voor twee van de vijf tests. Zuid-Afrika werd nooit een wereld zonder een klopper wereldklasse spinner, kan Australië niet hopen te blijven een zonder een goed genoeg is en waarvan ten minste. Magician verliet het podium en het niet meer uit als kunst, vergeet magie. Ponting staat hoog bij mindere stervelingen en Michael Clarke staat op heel vaak, maar dat maakt ze een team met een aantal zeer goede spelers en niet een heel goed team.
Ashes 2009 zal de geschiedenis ingaan van de laatste Ashes Andrew Flintoff's, Stuart Broad de komst van als een all rounder (als hij voegt wat meer Ashes folklore om zijn veelbelovende start), en een van de meest sprekende debuut eeuw aller tijden door Trott, maar het zal ook herinnerd als het punt waar mitsen en maren over de suprematie van Australië werden eindelijk tot rust, het is voorbij. Begrijp me niet verkeerd kunnen ze nog steeds opgraven Mike Hussey en Stuart Clark, maar je voelt dat de bijdrage van alle tijd groten wanneer ze gaan missen. Soms komen ze om u te herinneren van zichzelf in IPL, maar nog steeds kunnen ze niet worden vervangen. Laten we voel me gezegend voor het zien van Warne, McGrath en Gilchrist samen spelen en wordt ondersteund door Waughs, Ponting, Hyden, Martin en Langer.

In de toekomst, Zuid-Afrika altijd blijft een zeer goed team maar ze moeten naar halve finale te winnen en meer consistent over de hele wereld te zijn, Pakistan blijft raadselachtig briljant, zullen Indiase jonge honden vindt het waarschijnlijk moeilijk om de schoenen van buitengewone voorgangers te vullen. Sri Lanka moet blijven glimp van de kunst laten zien in ambacht. Maar, misschien moeten we voor bepaalde tijd te wachten alvorens met een all out dominante team of voor een kapitein klaagt over gebrek aan concurrentie, zoals Steve Waugh deed een keer.

Op een verwante nota - laten we blij met de komst achterkant van Asif hij een hel veel potentie heeft, laten we hopen een aantal van die te zien en ook van harte welkom Andy Flower in de nieuwe awatar, rechts kun je niet blijven goede mannen naar beneden voor lang.

robijn One Liners te creëren hash

20 augustus 2009 door Prashant · Reacties
Geplaatst onder: technologie

Gisteren terwijl er door een van mijn oude programma's, vond ik deze door mij geschreven eens weer:

#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

Om enkele van spanning te doden laat me onthullen dat raw_text lijkt

 

, Rechts het is gesneden uit PayPal-betaling bevestiging.

Boven regel als gebroken in delen leest beter:

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

Laten we de afzonderlijke stappen in irb:

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

 => ["SUCCES", "mc_gross = 10,00", "protection_eligibility = niet in aanmerking", "payer_id = U7PPJJ4TSJ47E", "belasting = 0.00", "payment_date = 09:45:30 10 juli 2009 PDT", "payment_status = In afwachting van "]                                                                         

 IRB (hoofd): 013:0> unescaped_array = unescaped_array.map {| x | b = x.split ("="); b.push (nihil) als b.size == 1, b}  

 => [["Succes", nihil], ["mc_gross", "10,00"], ["protection_eligibility", "niet in aanmerking"], ["payer_id", "U7PPJJ4TSJ47E"], ["belasting", "0.00"] , ["payment_date", "09:45:30 10 juli 2009 PDT"], ["payment_status", "In afwachting van"]]                               

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

 => ["Succes", nihil, "mc_gross", "10,00", "protection_eligibility", "niet in aanmerking", "payer_id", "U7PPJJ4TSJ47E", "belasting", "0.00", "payment_date", "09:45: 30 juli 10 2009 PDT "," payment_status "," In afwachting van "]
 IRB (hoofd): 015:0>
 hash = Hash [* flattened_array]
 => {"Belasting" => "0.00", "payment_status" => "In afwachting van", "payer_id" => "U7PPJJ4TSJ47E", "mc_gross" => "10,00", "SUCCES" => nihil, "payment_date" = > "09:45:30 10 juli 2009 PDT", "protection_eligibility" => "niet in aanmerking"} 

BTW, wordt genoemd * splat operator in robijn

Een andere manier om te creëren hash van 'array van paren' is om te injecteren gebruiken:

  hash = [[1,2], [3,4]] injecteren ({}). {| resultaat, element | resultaat [element.first] = resultaat [element.last]; resultaat} 

Er is nog een manier :) Schrijf een lus, die ik laat als oefening voor de lezers!

Hier is een beetje los use case van het creëren van hash van arrays:

  IRB (hoofd): 005:0> [1,2,3,4,7,9] group_by {| x | x <5.?  : Mindere :: groter}

 => {: Minder => [1, 2, 3, 4]: groter => [7, 9]} 

Je kan meer dingen, voornamelijk door het blok wordt gebruikt als sleutel voor dat element in de resulterende hash.

gmail, mutt en msmtp fix

17 augustus 2009 door Prashant · Reacties
Geplaatst onder: technologie

Als u mutt en smtp om Gmail te openen. Hier is een (slechte) nieuws. Cool jongens op Google opnieuw gewijzigd certificaat. Oh, heb je vragen - hoe kan het kennen? Eenvoudige mutt begonnen te klagen over de slechte certificaat wanneer het proberen om msmpt, beruchte gebruik van 'msmtp: TLS-certificaat verificatie mislukt:. Het certificaat heeft nog een bekende uitgever' begroette me op het scherm.

Om te bevestigen over te steken -
Start gewoon na

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

In plaats van oude Thawte Server Nu krijg je volgen in emittent segment
Issuer:
Common Name: Google Internet Authority
Organization: Google Inc
Country: US

Gelukkig fix is ​​simpel, hier is wat je moet doen op debian

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

Na dit gewoon volgende regel te veranderen in je op ~ /. 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

naar

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

Git en Awesome Survey

15 augustus 2009 door Prashant · Reacties
Geplaatst onder: misc

Hier zijn twee links voor onderzoek van Git (version control systeem) en awesome (window manager) gemeenschap. Als u een van deze, dan kunt u nemen wat tijd in te vullen de vragenlijst. Zie het als de eenvoudigste manier om terug te dragen aan de software die u gebruikt.
Hier zijn de links:

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

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

Opmerking - (zoals in de deze pagina's, maar aan de onderkant :) ) -
"Als je cookies aangeschakeld hebben, dan kunt u altijd in te dienen gedeeltelijk gevuld enquête, en keer terug naar uw antwoorden op een later tijdstip, het invullen van het later."

Samenvoegen hashes in YAML conf bestanden

31 juli 2009 door Prashant · Reacties
Geplaatst onder: technologie

YAML is heel handig voor het schrijven van configuratiebestanden. Primair voordeel is dat, het leest als tekstbestand. Dit werkt echt goed als je config bestand is plat (geen hiërarchie) en heeft geen herhalingen.
Als uw configuratie bestand herhalingen dan is het zinvol deze te scheiden van die elementen en ze opnieuw te gebruiken. Wat ik bedoel is dit - laten we zeggen dat je je config bestand ziet er als volgt uit:

  ontwikkeling:
   input_location: common_input
   output_location: dev_location
   mail:
     smtp_server: uw_server
     login: your_login
     wachtwoord: top_secret
 productie:
   input_location: common_input
   output_location: dev_location
   mail:
     smtp_server: uw_server
     login: your_login
     wachtwoord: top_secret 

Ervan uitgaande dat bovenstaande code in / tmp / test.yml hier is hoe je kunt lezen in Python en Ruby
$cat readyml.py

 #! / Usr / bin / env python
 van pprint import pprint als pp
 # In debian moet python-yaml te installeren
 van yaml import belasting, load_all, dump
 hash = belasting (open ("/ tmp / test.yml '))
 pp (hash ['ontwikkeling']) 


$ cat readyml.rb

  #! / Usr / bin / env ruby
 require 'pp'
 hash = YAML :: load (File.open ('/ tmp / test.yml'). lezen)
 pp hash ['ontwikkeling'] 

Hier is een handige one-liner voor Ruby versie
$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]' of u kunt hetzelfde proberen in irb of python console.

Merk op dat in het bovenstaande stukje code, alles is anders dan uitvoerlocatie hetzelfde is in ontwikkeling en productie deel. Dit is waar yml node identifier komt te redden is. Idee is simpel beschikken over een set van standaard waarden en ze op andere plaats te overschrijven.
Je zou kunnen trek het uit elkaar als volgt:

  standaard: & defaults
   input_location: common_input
   output_location: dev_location
   mail:
     SENDER_NAME: afzender
     smtp_server: uw_server
     login: your_login
     wachtwoord: top_secret
 ontwikkeling:
   <<: * Standaard
 productie:
   <<: * Standaard
   output_location: prod_location 


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

Geweldig, het werkt (tm)!.
Ongetwijfeld hebben we geruild enige duidelijkheid voor een beetje magie. Hier is een kleine uitleg: &, * en <<: & dat is ankertag kan worden opgevat als node identifier, * is knooppunt referentie-en <<: staat voor hash samenvoegen.

Voor meer details zie ofwel yaml specs of wikipedia
Tot nu toe zo goed, maar er is hier een vangst, deze hash fuseert zijn niet recursief. Wat het betekent is dit: stel dat u verschillende afzender naam hebben voor de post in twee omgevingen, kunt u in de verleiding komen het volgende doen:

  standaard: & defaults
   input_location: common_input
   output_location: dev_location
   mail:
     SENDER_NAME: afzender
     smtp_server: uw_server
     login: your_login
     wachtwoord: top_secret
 ontwikkeling:
   <<: * Standaard
   mail:
     SENDER_NAME: sender_dev
 productie:
   <<: * Standaard
   output_location: prod_location
   mail:
     SENDER_NAME: sender_prod 

Laten we bekijken

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

Oeps, er ging iets mis, probleem zoals hierboven vermeld is dat de hash samenvoegen niet recursief is en bij het samenvoegen van deze vervangen mail in gebreke per post van de productie die op een sleutel heeft. Oplossing / werk in de buurt is om uitgerold nog een niveau:

  common_settings: & common_settings
 input_location: common_input
 output_location: dev_location
 mail_defaults: & mail_defaults
  SENDER_NAME: afzender
   smtp_server: uw_server
   login: your_login
   wachtwoord: top_secret

 standaard: & defaults
   << * Common_settings
   mail:
     << * Mail_defaults
 ontwikkeling:
   <<: * Standaard
 productie:
   <<: * Standaard
   mail:
     << * Mail_defaults
     SENDER_NAME: sender_prod

Laten we controleer opnieuw

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

Heb je zeggen dat je nog een niveau van nesting, goed je kan zeker uitrollen nog een niveau, maar dan wordt het een puinhoop. Dus, als je niet probeert om oplossing voor Torens van Hanoi in een conf bestand te schrijven, is het beter om conf bestand restucture dan graven in yaml of iets anders. Maar dat is uw oproep toch.

Grote programmeurs vinden eenvoudige oplossingen voor complexe problemen

30 juni 2009 door Prashant · Reacties
Geplaatst onder: misc

Na een lange tijd die ik kon vinden van de bron voor de volgende quote-

Junior programmeurs maken eenvoudige oplossingen voor eenvoudige problemen. Senior programmeurs complexe oplossingen voor complexe problemen. Grote programmeurs vinden eenvoudige oplossingen voor complexe problemen.

Het is uit een essay genaamd Beautiful Software door Charles Connell.

Een andere favoriet van mij is The Zen of Python -

Mooie is beter dan lelijk.
Expliciete is beter dan impliciet.
Eenvoudig is beter dan complex.
Complex is beter dan gecompliceerd.
Vlakke is beter dan genest.
Sparse is beter dan dicht.
Leesbaarheid telt.
Bijzondere gevallen zijn niet bijzonder genoeg om de regels te breken.
Hoewel praktisch verslaat zuiverheid.
Fouten mogen nooit in stilte passeren.
Tenzij uitdrukkelijk het zwijgen opgelegd.
In het licht van dubbelzinnigheid, weigeren de verleiding te raden.
Er moet een en bij voorkeur slechts een voor de hand liggende manier om het te doen.
Hoewel op die manier misschien niet voor de hand liggende op het eerste tenzij je Nederlands.
Nu is beter dan nooit.
Hoewel nooit is vaak beter dan * rechts * nu.
Indien de uitvoering is moeilijk uit te leggen, het is een slecht idee.
Indien de uitvoering is eenvoudig uit te leggen, kan het een goed idee.
Naamruimten zijn een toeterende geweldig idee - laten we meer van deze!
-------------------------
en dan is er klassieke Tao van de programmering

-

credits als op de gelinkte site-

Vertaald door Geoffrey James

Getranscribeerd door Duke Hillard

Overgeleverd door Anupam Trivedi, Sajitha Tampi en Meghshyam Jagannath

Re-html-seerde en uitgegeven door Kragen Sittler

-

Boek 1 - The Silent Void

Aldus sprak de meester programmeur:

"Als je hebt geleerd om de foutcode te ontrukken aan de val frame, het
wordt tijd voor u om te vertrekken. "

1,1

Iets mysterieus wordt gevormd, geboren in de stille leegte. Wachten alleen en
onbeweeglijk, is het in een keer stil en toch voortdurend in beweging. Het is de bron
van alle programma's. Ik weet niet zijn naam, dus ik zal noemen de Tao van de
Programmeren.

Als de Tao is groot, dan is het besturingssysteem is groot. Als het besturingssysteem
systeem groot is, dan is de compiler is groot. Als de compiler is groot,
dan is de applicatie is groot. De gebruiker is tevreden en er bestaat
harmonie in de wereld.

De Tao van programmeren stroomt ver weg en keert terug op de wind van de ochtend.

1,2

De Tao is bevallen van machinetaal. Machinetaal gaf geboorte aan de
assembler.

De assembler gaf geboorte aan de compiler. Nu zijn er tienduizend
talen.

Elke taal heeft zijn doel echter bescheiden. Elke taal drukt de
Yin en Yang van de software. Elke taal heeft zijn plaats binnen de Tao.

Maar niet te programmeren in COBOL als je het kunt vermijden.

1,3

In het begin was de Tao. De Tao is bevallen van ruimte en tijd.
Daarom Ruimte en tijd zijn Yin en Yang van de programmering.

Programmeurs die niet begrijpen van de Tao zijn altijd bijna geen tijd meer
en ruimte voor het programma. Programmeurs die de Tao altijd te begrijpen
genoeg tijd en ruimte om hun doelen te bereiken.

Hoe kan het ook anders?

1,4

De wijze programmeur wordt verteld over de Tao en volgt het. De gemiddelde
programmeur wordt verteld over de Tao en zoekt naar het. De dwaze programmeur
wordt verteld over de Tao en lacht ernaar.

Als het niet om te lachen, zou er geen Tao.

De hoogste geluiden zijn het moeilijkst te horen.
In de toekomst is een manier om terug te trekken.
Groot talent toont zich laat in het leven.
Zelfs een perfecte programma heeft nog bugs.

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

Boek 2 - De Oude Meesters

Aldus sprak de meester programmeur:

"Na drie dagen zonder te programmeren, wordt het leven zinloos."

2,1

De programmeurs van de oud was mysterieus en diepgaand. We kunnen niet doorgronden
hun gedachten, dus alles wat we doen is beschrijven hun uiterlijk.

Aware, als een vos oversteken van het water. Alert, als een generaal over de
slagveld. Kind, als een gastvrouw begroet haar gasten. Eenvoudig, net als
Ongekerfde blokken hout. Ondoorzichtige, zoals zwart zwembaden in donkere grotten.

Wie kan vertellen de geheimen van hun hart en geest?

Het antwoord bestaat alleen in Tao.

2,2

Grand Master Turing een keer gedroomd dat hij een machine. Toen hij wakker werd hij
riep uit:

"Ik weet niet of ik droom dat ik een machine, of een Turing
machine dromen dat ik Turing! "

2,3

Een programmeur van een zeer grote computer bedrijf ging om een ​​software-
conferentie en keerde daarna terug te rapporteren aan zijn manager en zei: "Wat voor soort
van programmeurs werken voor andere bedrijven? Ze gedroegen zich slecht en waren
zonder zich. Hun haar was lang en onverzorgd en hun
kleren waren gerimpeld en oud. Ze stortte onze gastvrijheid suite en ze
gemaakt onbeleefd geluiden tijdens mijn presentatie. "

De manager zei: "Ik zou nooit die u hebt verzonden aan de conferentie. Die
programmeurs leven na de fysieke wereld. Zij beschouwen het leven absurd, een
toevallige samenloop van omstandigheden. Ze komen en gaan zonder het te weten beperkingen.
Zonder zorg, ze leven alleen voor hun programma's. Waarom zouden ze moeite
met de sociale conventies?

"Ze zijn gezond in de Tao."

2,4

Een beginnende vroeg de Meester: "Hier is een programmeur die nooit ontwerpt,
documenten of tests zijn programma's. Maar allen die hem kennen beschouwen hem als een van de
de beste programmeurs ter wereld. Waarom is dit? "

De Meester antwoordt: "Dat programmeur heeft de Tao onder de knie. Hij is gegaan
afgezien van de noodzaak voor het ontwerp, hij wordt niet boos als het systeem
crashes, maar accepteert het universum zonder zorg. Hij is verder gegaan dan de
nodig hebben voor documentatie, hij niet meer schelen of iemand anders ziet dat zijn code.
Hij is verder gegaan dan de noodzaak voor het testen, elk van zijn programma's zijn perfect
in zichzelf, sereen en elegant, hun doel vanzelfsprekend. Waarlijk,
hij is aangegaan het mysterie van de Tao. "

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

Boek 3 - Design

Aldus sprak de meester programmeur:

"Wanneer het programma wordt getest, is het te laat om het ontwerp
verandert. "

3,1

Er was eens een man die naar een computer beurs. Elke dag, toen hij
ingevoerd, de man vertelde de bewaker aan de deur:

"Ik ben een groot dief, bekend om mijn prestaties van winkeldiefstal. Zijn
gewaarschuwd, is voor deze beurs niet ontsnappen vrijwel ongeschonden. "

Deze toespraak verstoorde de wacht sterk, omdat er miljoenen
dollar aan computerapparatuur in, dus hij keek de man aandachtig. Maar
de man alleen maar zwierf van stand naar stand, neuriede zachtjes voor zichzelf.

Toen de man vertrok, de bewaker nam hem terzijde en doorzocht zijn kleding, maar
niets te vinden was.

Op de volgende dag van de beurs, de man terug en berispte de wacht
te zeggen: "Ik ontsnapte met een enorme buit van gisteren, maar vandaag zal zelfs
beter. "Dus de bewaker zag hem steeds hechter, maar het mocht niet baten.

Op de laatste dag van de beurs, kon de bewaker zijn nieuwsgierigheid bedwingen
niet meer. "Sir Thief", zei hij, "ik ben zo perplex, ik kan niet leven in
vrede. Gelieve verlichten mij. Wat is het dat je stelen? "

De man glimlachte. "Ik ben ideeën stelen", zei hij.

3,2

Er was eens een meester programmeur die schreef ongestructureerde programma's. Een
beginnende programmeur, op zoek om hem te imiteren, ook begon te schrijven
ongestructureerde's. Toen de beginnende vroeg de meester aan zijn evaluatie van
vooruitgang, de meester kritiek op hem voor het schrijven van ongestructureerde programma's,
zeggende: "Wat is geschikt is voor de meester is niet geschikt voor de
novice. U moet het Tao voor overstijgende structuur. "

3,3

Er was eens een programmeur die was verbonden aan het hof van de krijgsheer
van Wu. De krijgsheer vroeg de programmeur: "Wat is makkelijker te ontwerpen voor: een
boekhoudpakket of een besturingssysteem? "

"Een besturingssysteem," antwoordde de programmeur.

De krijgsheer slaakte een uitroep van ongeloof. "Zeker een boekhoudkundige
pakket is triviaal naast de complexiteit van een besturingssysteem ", zegt hij
gezegd.

"Niet zo," zei de programmeur, "bij het ontwerpen van een boekhoudpakket,
De programmeur werkt als een bemiddelaar tussen mensen met verschillende
ideeën: hoe het moet werken, hoe haar verslagen moet verschijnen, en hoe het moet
voldoen aan de fiscale wetgeving. Daarentegen is een besturingssysteem niet beperkt
door externe optredens. Bij het ontwerpen van een besturingssysteem, de programmeur
zoekt de eenvoudigste harmonie tussen machine en ideeën. Daarom is een
besturingssysteem is eenvoudiger om. "

De krijgsheer van Wu knikte en glimlachte. "Dat is allemaal goed en wel, maar
die gemakkelijker te sporen? "

De programmeur gaf geen antwoord.

3,4

Een manager ging naar de meester programmeur en liet hem aan de eisen
document een nieuwe toepassing. De manager vroeg de meester: "Hoe lang
zal zij nemen om dit systeem te ontwerpen als ik toewijzen vijf programmeurs op? '

"Het zal een jaar," zei de meester snel.

"Maar we moeten dit systeem onmiddellijk of nog sneller! Hoe lang zal het
te nemen als ik toewijzen tien programmeurs op? '

De meester programmeur fronste zijn wenkbrauwen. "In dat geval zal het twee jaar."

"En wat als ik wijs honderd programmeurs op? '

De meester programmeur haalde zijn schouders op. "Dan het ontwerp zal nooit
voltooid, "zei hij.

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

Boek 4 - Coding

Aldus sprak de meester programmeur:

"Een goed geschreven programma is zijn eigen hemel gezien: een slecht geschreven programma is
zijn eigen hel. "

4,1

Een programma moet licht en wendbaar, de subroutines verbonden als een
parelsnoer. De geest en de bedoeling van het programma dient te worden gehandhaafd
in. Er moet niet te weinig of teveel niet
onnodige lussen of onbruikbaar variabelen geen gebrek aan structuur of
overweldigende stijfheid.

Een programma moet volgen de 'wet van de minst Verwondering'. Wat is deze wet?
Het is slechts dat het programma altijd moet de gebruiker reageert zoals
dat verbaast hem tenminste.

Een programma, het maakt niet uit hoe complex, moet fungeren als een enkele eenheid. Het programma
dienen te worden gericht door de logica in plaats van door uiterlijkheden.

Als het programma niet in deze eisen is het in een toestand van
wanorde en verwarring. De enige manier om dit te corrigeren is het herschrijven van de
programma.

4,2

Een beginnende vroeg de meester: "Ik heb een programma dat ergens loopt en
soms afbreekt. Ik heb de regels van de programmering, maar ik ben
totaal verbijsterd. Wat is de reden hiervoor? "

De meester antwoordde: "U bent verward omdat je niet begrijpt Tao.
Alleen een dwaas verwacht rationeel gedrag van zijn medemensen. Waarom denk je
verwachten van een machine die mensen hebben opgebouwd? Computers simuleren
determinisme, alleen Tao is perfect.

"De regels van de programmering zijn van voorbijgaande aard, alleen Tao is eeuwig. Daarom
je moet overwegen Tao voordat u verlichting. "

"Maar hoe weet ik wanneer ik heb ontvangen verlichting," vroeg de
novice.

"Het programma zal dan correct te kunnen werken," antwoordde de meester.

4,3

Een meester is het uitleggen van de aard van de Tao van een van zijn novicen. "The
Tao is vervat in alle software - ongeacht hoe onbeduidend ", zei
de meester.

"Is de Tao in een hand-held rekenmachine?" Vroeg de beginner.

"Het is," kwam het antwoord.

"Is de Tao in een videogame?", Vervolgt de beginner.

"Het is zelfs in een video game," zei de meester.

"En is het Tao in de DOS voor een personal computer?"

De master hoestte en verschoof zijn positie beetje. "De les is voorbij
voor vandaag, "zei hij.

4,4

Prins Wang's programmeur werd codering software. Zijn vingers dansten op de
toetsenbord. Het programma gecompileerd zonder een foutmelding, en het programma
liep als een zachte wind.

"Excellent!" De prins riep uit: "Uw techniek foutloos is!"

"Techniek?" Zei de programmeur het draaien van zijn terminal, "Wat ik
volgen is Tao - boven alle technieken! Toen ik voor het eerst begon te programmeer ik
zou zien voor mij het hele probleem in een massa. Na drie jaar heb ik geen
meer zag deze massa. In plaats daarvan gebruikte ik subroutines. Maar nu zie ik niets.
Mijn hele wezen bestaat in een vormloze leegte. Mijn zintuigen zijn niet actief. Mijn geest,
vrij om te werken zonder plan, volgt zijn eigen instinct. Kortom, mijn programma
schrijft zelf. Toegegeven, soms zijn er moeilijke problemen. Ik zie ze
kom, ik vertraag, ik kijk in stilte. Dan verander ik een enkele regel code
en de problemen verdwijnen als pufjes van stationair rook. Vervolgens heb ik de opstelling van de
programma. Ik zit nog steeds en laat de vreugde van het werk vult mijn wezen. Ik sluit mijn
ogen een moment en meld u af. "

Prins Wang zei: "Zou dat al mijn programmeurs waren zo wijs!"

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

Boek 5 - Onderhoud

Aldus sprak de meester programmeur:

"Hoewel een programma te zijn maar drie regels lang, op een dag zal moeten worden
gehandhaafd. '

5,1

Een goed gebruikte deur behoeft geen olie op de scharnieren.
Een snelstromende rivier groeit niet stagneert.
Noch geluid of gedachten kan reizen door middel van een vacuüm.
Software rot indien niet gebruikt.

Dit zijn grote mysteries.

5,2

Een manager vroeg een programmeur hoe lang het zou hem naar de finish
opleiding waaraan hij werkte. "Het zal afgewerkt worden morgen," de
programmeur prompt.

"Ik denk dat je realistisch zijn," zei de manager, "eerlijk, hoe
lang zal het duren? "

De programmeur dacht even na. "Ik heb een aantal functies die ik wil
voegen. Dit zal ten minste twee weken ", zei hij ten slotte.

"Zelfs dat is te veel te verwachten," benadrukte de manager, "Ik zal
tevreden als u dat gewoon vertellen wanneer het programma is voltooid. "

De programmeur heeft hiermee ingestemd.

Enkele jaren later, de manager met pensioen. Op weg naar zijn pensioen
lunch, ontdekte hij de programmeur in slaap op zijn terminal. Hij was
het programmeren van de hele nacht.

5,3

Een beginnende programmeur werd ooit toegewezen aan een eenvoudig financieel pakket te coderen.

De beginnende werkte woedend voor vele dagen, maar als zijn meester beoordeeld
zijn programma, ontdekte hij dat het een scherm-editor, een set van ingeperkt
gegeneraliseerde graphics routines, een kunstmatige intelligentie-interface, maar
niet de minste melding gemaakt van alles wat de financiële.

Toen de meester vroeg, de novice werd verontwaardigd. "Wees niet
zo ongeduldig, "zei hij," Ik zal uiteindelijk in het financieel spul. "

5,4

Heeft een goede boer verwaarloost de oogst die hij heeft geplant?
Heeft een goede leraar over het hoofd, zelfs de meest bescheiden student?
Heeft een goede vader kan een enkel kind te verhongeren?
Heeft een goede programmeur te weigeren om zijn code te handhaven?

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

Boek 6 - Management

Aldus sprak de meester programmeur:

"Laat de programmeurs zijn veel en de managers paar - dan zal alles worden
productiever zijn. "

6,1

Wanneer managers eindeloze vergaderingen te houden, de programmeurs schrijven games. Wanneer
accountants spreken van de driemaandelijkse winst, het ontwikkelingsbudget staat op het punt
worden gesneden. Als senior wetenschappers blauwe lucht praten, de wolken zijn over het uit te rollen
inch

Waarlijk, dit is niet de Tao van de programmering.

Wanneer managers toezeggingen te doen, zijn spelprogramma's genegeerd. Wanneer
accountants te maken meerjarenplannen, harmonie en orde staat op het punt te worden
hersteld. Als senior wetenschappers de problemen aan te pakken bij de hand, de
problemen zal binnenkort worden opgelost.

Waarlijk, dit is de Tao van de programmering.

6,2

Waarom zijn programmeurs niet-productieve?
Omdat hun tijd wordt verspild aan de bijeenkomsten.

Waarom zijn programmeurs opstandig?
Omdat het management bemoeit te veel.

Waarom zijn de programmeurs ontslagnemende een voor een?
Omdat ze zijn opgebrand.

Ik heb gewerkt voor slecht beheer, ze niet meer waarde hechten aan hun werk.

6,3

Een manager zou worden ontslagen, maar een programmeur die voor hem werkte
bedacht een nieuw programma dat werd populair en goed verkocht. Hierdoor de
manager behield zijn baan.

De manager probeerde de programmeur geven een bonus, maar de programmeur
geweigerd, zei: "Ik schreef het programma, omdat ik dacht dat het een
interessant concept, en dus verwacht ik geen beloning. "

De manager bij het horen van dit merkte op: "Deze programmer, maar hij houdt
een positie van kleine achting, begrijpt ook de juiste plicht van een
werknemer. Laten we hem stimuleren om de verheven positie van het management
adviseur! "

Maar toen vertelde deze, zodra de programmeur meer hadden, zeggende: "Ik besta zo
dat ik kan programmeren. Als ik bevorderd, zou ik niets anders doen dan afval
ieders tijd. Mag ik nu gaan? Ik heb een programma dat ik mee bezig ben. "

6,4

Een manager ging naar zijn programmeurs en zei tegen hen: "Met betrekking tot uw werk
uur: u gaat moeten om binnen te komen om negen uur in de ochtend en laat
om vijf uur in de middag. "Op dit, allemaal boos werd en een aantal
ontslag ter plaatse.

Dus de manager zei: "Goed, in dat geval kunt u uw eigen set
werktijden, zolang u uw projecten afwerken op schema. "De
programmeurs, nu tevreden, begon in te komen 's middags en tot in de vroege werken
uren van de ochtend.

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

Boek 7 - Corporate Wijsheid

Aldus sprak de meester programmeur:

"Je kunt aantonen dat er een programma voor een bedrijfsleider, maar u kunt niet
maken hem tot een computer kunnen omgaan. "

7,1

Een beginnende vroeg de meester: "In het oosten is er een grote boom-structuur
dat de mensen roepen 'hoofdkantoor'. Het wordt opgeblazen uit vorm met
vice-presidenten en accountants. Het geeft een veelheid aan memo's, die elk
te zeggen `Vandaar Go! ' of `Go, hierheen! ' en niemand weet wat er wordt bedoeld. Iedere
jaar nieuwe namen worden gezet op de takken, maar alle zonder resultaat. Hoe kan
dergelijke onnatuurlijke entiteit? "

De meester antwoordde: "U neemt dit immense structuur en zijn
verstoord dat het geen rationeel doel. Kun je geen amusement uit
zijn eindeloze draaiingen? Heeft u niet genieten van de zorgeloze gemak van programmering
onder zijn opvang vestigingen? Waarom ben je last van haar
nutteloosheid? '

7,2

In het oosten een haai die groter is dan alle andere vis. Het
verandert in een vogel wiens vleugels zijn als wolken vullen de lucht. Wanneer deze
vogel beweegt over het land, het brengt een boodschap van corporate
Hoofdkwartier. Dit bericht het zakt in het midden van de programmeurs,
als een meeuw te maken zijn stempel op het strand. Vervolgens vogel gemonteerd op de
wind en met de blauwe lucht op zijn rug, naar huis.

De beginnende programmeur kijkt in verwondering naar de vogel, want hij begrijpt het
niet. De gemiddelde programmeur vreest de komst van de vogel, want hij vreest
zijn boodschap. De meester programmeur blijft werken aan zijn terminal, voor
hij weet niet dat de vogel is gekomen en gegaan.

7,3

The Magician van de Ivory Tower bracht zijn nieuwste uitvinding voor de
meester programmeur om te onderzoeken. De tovenaar op wielen een grote zwarte doos in
de meester het kantoor, terwijl de meester wachtte in stilte.

"Dit is een geïntegreerde, gedistribueerde, general-purpose werkstation," begon
de tovenaar, "ergonomisch ontworpen met een eigen besturingssysteem
systeem, zesde generatie talen, en meerdere state of the art gebruiker
interfaces. Het kostte mijn assistenten een paar honderd man jaar te bouwen.
Is het niet geweldig? '

De meester trok zijn wenkbrauwen een beetje. "Het is inderdaad verbazingwekkend", zegt hij
gezegd.

"Corporate Headquarters heeft bevolen," vervolgde de tovenaar, "dat
iedereen gebruik maken van dit werkstation als platform voor nieuwe programma's. Bent u het eens
deze? "

"Zeker," de meester antwoordde: "Ik zal het hebben vervoerd naar de
datacenter meteen! "En de tovenaar terug naar zijn toren, goed
tevreden.

Enkele dagen later, een nieuweling liep het kantoor binnen van de meester
programmeur en zei: "Ik kan de lijst voor mijn nieuwe programma. Doen
je weet waar het zou kunnen zijn? "

"Ja," de meester antwoordde: "de lijsten worden gestapeld op het platform in
het datacenter. "

7,4

De meester programmeur verhuist van programma tot programma zonder angst. Geen
verandering in het management kan hem schaden. Hij wordt niet gebruikt, zelfs wanneer de
project wordt geannuleerd. Waarom is dit? Hij is gevuld met Tao.

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

Boek 8 - hardware en software

Aldus sprak de meester programmeur:

"Zonder de wind, is het gras niet te verplaatsen. Zonder software, hardware is
nutteloos. "

8,1

Een beginnende vroeg de meester: "Ik zie dat een computer bedrijf veel is
groter dan alle andere. Het torent boven de concurrentie als een reus onder de
dwergen. Een van haar divisies zou kunnen bestaan ​​uit een hele onderneming. Waarom is
dit zo? '

De meester antwoordde: "Waarom vraag je zulke dwaze vragen? Dat bedrijf
groot omdat groot is. Als het alleen gemaakt hardware, zou niemand kopen
het. Als het alleen gemaakte software, zou niemand het gebruiken. Als alleen gehandhaafd
systemen, zouden de mensen te behandelen als een dienaar. Maar omdat het combineert alle
van deze dingen, mensen denken dat het een van de goden! Door niet te streven naar
streven, het verovert zonder inspanning. "

8,2

Een meester programmeur geslaagd is voor een beginnende programmeur een dag. De meester merkte
de beginnende's preoccupatie met een hand-held computer spel. "Neem me niet kwalijk,"
zei hij, "mag ik onderzoeken?"

De beginnende met bouten aan de aandacht en gaf het apparaat aan de meester. 'I
zien dat het apparaat beweert te hebben drie niveaus van het spel: Easy, Medium, en
Hard, "zei de meester. "Maar elke dergelijk apparaat heeft een ander niveau van
spelen, waar het apparaat wil niet te veroveren van de mens, noch om veroverd te worden
door de mens. '

"Bid, grote meester," smeekte de beginner, "hoe vindt men deze
mysterieuze instelling? "

De meester liet het apparaat op de grond en drukte hem onder de voeten. En
plotseling de beginnende werd verlicht.

8,3

Er was eens een programmeur die werkte bij de microprocessoren. "Kijk eens hoe
goed af ik hier ben, "zei hij tegen een mainframe programmeur die op bezoek kwam,
"Ik heb mijn eigen besturingssysteem en de opslag van bestanden apparaat. Ik heb niet te
deel mijn bronnen met wie dan ook. De software is autonome en
gemakkelijk te gebruiken. Waarom wil je niet stoppen met je huidige baan en hier mee? "

De mainframe programmeur begon toen aan zijn systeem te beschrijven aan zijn vriend,
zeggen "De mainframe zit als een oude wijze mediteren in het midden
van het datacenter. De schijven liggen end-to-end als een grote oceaan van
machines. De software is als veelzijdig een diamant, en ingewikkelde
als een oeroude jungle. De programma's, stuk voor stuk uniek, om door het systeem
als een snelstromende rivier. Daarom ben ik blij waar ik ben. "

De microcomputer programmeur, bij het horen van dit, viel stil. De twee
programmeurs bleven vrienden tot aan het einde van hun dagen.

8,4

Hardware voldaan Software op de weg naar Changtse. Software zei: "U bent
Yin en ik ben Yang. Als we reizen samen worden we beroemd en verdienen
grote sommen geld. "En zo de set weer bij elkaar, denken te overwinnen
wereld.

Weldra kwamen ze Firmware, die was gekleed in gescheurde lompen en strompelde
langs steunend op een netelige stok. Firmware zeide tot hen: "De Tao ligt
buiten Yin en Yang. Het is stil en nog steeds als een plas water. Het doet
niet op zoek roem, dus niemand weet haar aanwezigheid. Het is niet de bedoeling
fortuin, want het is volledig in zichzelf. Het bestaat voorbij ruimte en
tijd. '

Software en hardware, beschaamd, terug naar hun huizen.

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

Boek 9 - Epiloog

Aldus sprak de meester programmeur:

"Het is tijd voor jullie om te vertrekken."

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

Als je graag deze, kunt u ook leuk om te lezen slechter is beter

Een beetje shell redirection

10 mei 2009 door Prashant · Reacties
Geplaatst onder: technologie

Hier is hoe we normaal gesproken shell redirection te doen
$ ./pgm.sh args >out.txt 2>err.txt
Ik wilde het een beetje te wijzigen en uit te voeren als volgt
$ ./pgm.sh args
met de eis dat de output en error moet gaan om een ​​aantal bestandsnaam berekend binnen pgm.sh op basis van args. Een illustratief geval zou zijn wanneer de datum is een onderdeel van args. Dus u wilt stdout te gaan om te zeggen / uw / directory / pgm_out_YYYYMMDD.txt 1

Het probleem met standaard manier van omleiden van N>file.txt dat wil zeggen, associëren file descriptor N tot bestand.txt, is dat het werkt alleen voor de nieuw gevorkte proces en niet voor het huidige proces.
zo
$ echo hi 1>out.txt ; echo hii . zal hi te sturen naar out.txt maar zal HII afdrukken naar stdout 2

Dit is waar exec komt ons te hulp. Als we exec 1>somefile.txt dan uitgang van de rest van het script gaat naar somefile.txt

$ cat test.sh
#!/usr/bin/env bash
exec 1>out.txt
echo hi
echo hii
$. / Test.sh zal hi omleiden en HII out.txt

Net als stdout en stderr omleiden we iets doen als dit
cat test2.sh
exec 1>out.txt
exec 2>err.txt
echo out text
echo 1>&2 err text
somenoneexitent command
ls -ld /tmp

Nu weer terug naar oorspronkelijke punt van om te leiden naar een bestand vanuit de shell, laten we zeggen-programma berekend de bestandsnaam in sommige variabele OUTFILE, kunnen we zojuist hebben gedaan exec 1>$OUTFILE

Dat lost het huidige probleem. Maar je kunt houden om te gaan door volgende voorbeeld waarin 'random access' van het bestand in de schaal script bereikt. Voorbeeld is van hier
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

Met opmerkingen, deze code is voor zichzelf.
-
1 Het kan ook worden gedaan door $ ./pgm.sh args >pgm_out`date +%Y%m%d` , maar idee is het bestand deze naam te genereren op basis van enkele logica in het programma zelf.
2 1 op 1> out.txt is overbodig, maar het verduidelijkt hier dat we fd 1 omgeleid

Sony VAIO recensie

29 april 2009 door Prashant · Reacties
Geplaatst onder: reviews

Een maand terug kocht ik een vaio NS25G en zijn van plan om dit bericht schrijf sindsdien. Dit bericht is in de eerste toelichting op zichzelf en herziening van het zelfde. Laten we snel af van het merk -

Bericht bestaat uit twee delen -

I. Beoordeling van hardware
II. Het installeren van Debian en dingen op te zetten

I. Beoordeling van hardware

Omdat ik ben geen VAIO marketing jongen, ik begin andersom -

Waarom mag u niet graag van deze laptop te kopen:

  1. Geen bluetooth: geloof me, in 2009 verkoopt Sony laptop zonder bluetooth. Natuurlijk kun je gebruik maken van usb dingen, maar ...
  2. Grootte van het scherm is 15,4 inch: als je veel reist dan is deze laptop misschien niet erg handig en ook 2,9 kg laptop is niet bepaald de lichtste rond.
  3. Geen HDMI-uitgang.
  4. Geen aparte grafische kaart en dergelijke. (En geen dedicated videogeheugen

Nu, waarom je kunt houden om het te kopen:

  1. Deze laptop is een verdomd goede desktop. Wat ik bedoel is dat als uw eis is net als ik - meestal schrijven van programma's en proberen om het te gebruiken 25 van de 24 uur, daarna met een groot scherm, zeer comfortabel toetsenbord lay-out met ruime polssteun en een goede computerkracht, het een zeer goed doet combinatie.
  2. Het L2-cache is 2MB en de processor / geheugen systeembus zijn 800MHz. Ik heb geen games zo te spelen kan niet zeggen over dat maar voor iets anders dan een Core 2 Duo-processor met 2 GHz freq is goed, dit is meer dan genoeg.
  3. Van mijn eigen gebruik waren zie ik processor meestal klokken op 1,2 GHz, en geheugengebruik op ~ 500MB. Dat versterkt alleen maar vorige punt.
  4. Batterij back-up is goed, ~ 2 uur is wat ik krijg.

Nog een ding hier - dat Sony, kost het u een beetje dan andere laptops met vergelijkbare configuratie, maar dat is een oproep u moeten maken.

II. Configuratie van Linux (om opraken van de doos!):
Het kwam vooraf geïnstalleerd met Vista (ik denk dat Home Premium of een fantasienaam dergelijks). Dungara opgestart keer en creëerde een andere partitie van 150 GB. Debian testen is wat ik altijd te installeren en dan naar boven (beneden?) Graad naar 'onstabiele' sid.

Dingen die werkte zonder enig probleem:

  1. X - niet verwonderlijk X-server had geen probleem met het starten of resolutie. Na een van de upgrades X weigerde echter te beginnen, maar 'X-configure' genereerde een conf bestand dat werkte vrij goed.
  2. Audio - Audio-uitgang en externe microfoon werken prima. kernel versie 2.6.29-1-686 # 1 SMP en alsa versie 1.0.17. Dit is wat je krijgt van
    $ lspci -v |grep Audio 00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Con1.0.17troller (rev 03)
  3. Video cam - werkt gewoon
  4. Slaapstand naar schijf en weer terug - geen probleem
  5. Wireless - kort gezegd - alleen maar werken.
    $ lspci |grep -i wireless
    03:13:55 04:00.0 Network controller: Atheros Communications Inc. AR928X Wireless Network Adapter (PCI-Express) (rev 01) .

    Ik denk dat kernel 2.6 .. 27 vanaf het werkt met de standaard kernel bron. Je hoeft geen ndiswrapper of dingen als t te installeren
    hoed. Als een notitie, dan kunt u zeggen: goede koop gnome-network-manager en welkom wicd, het is gewoon een GUI laag, maar achter de schermen hebben ze vast veel config dingen zoals wpasupplient en nog veel meer.

Wat werkt niet -

  1. Een of andere manier de ingebouwde microfoon wil maar niet werken ( Externe microfoon werkt prima hoor. Laatste alsa bronnen niet netjes te compileren op Debian, dus voor dit moment kocht ik buiten de ingebouwde microfoon, zal proberen om eens te graven in het in de toekomst wel.

Weinig meer misc tips voor deiban:

  • Pakket voor devnagri font-ttf-indic-fonts
  • Pakket voor Flash Player - flashplugin-nonfree
  • Vermelding in sources.list voor mplayer en houdt - deb http://www.debian-multimedia.org sid belangrijkste
  • Vermelding in sources.list voor E17 - deb http://debian.alphagemini.org/~~V instabiel belangrijkste
  • Vermelding in sources.list voor skype - http://download.skype.com/linux/repos/debian/ stabiele niet-vrije

oneliner voor het verhogen en verlagen van de helderheid -

[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

dan moet je dit maar zetten sudo.
en om verandering te verlagen + op - en ... je krijgt het idee, toch!

Een beetje meer, als je verlichting (E17) zijn hier nog enkele tips -

[Verlichting key bindidings]

U kunt gebruik maken van onderstaande key code en in kaart brengen

mute:
KEY="Keycode-160" ACTION="exec" PARAMS="/usr/bin/amixer -q set Master toggle"
winterslaap:
KEY="Keycode-165" ACTION="exec" PARAMS="sudo /usr/sbin/hibernate-disk"
volume afname:
KEY="Keycode-174" ACTION="exec" PARAMS="/usr/bin/amixer -q set Master 2-"
toename van het volume:
KEY="Keycode-176" ACTION="exec" PARAMS="/usr/bin/amixer -q set Master 2+"
verhoging van helderheid:
KEY="Keycode-212" ACTION="exec" PARAMS="sudo /root/bin/incbrightness.sh"
helderheid verlagen
KEY="Keycode-101" ACTION="exec" PARAMS="sudo /root/bin/decbrightness.sh"

Volgende pagina »