meningsmåling, ping, pubsub, pubsubhub, pubsubhubbub

September 6, 2009 ved Prashant · Kommentarer
Filed under: teknologi

Hvis du er skeptisk, er der en metode i galskaben ovenfor, i titlen på posten. I tech kredse er det usandsynligt, at du ikke har hørt om pubsubhubbub. I hurtige par måneder, har det været en af ​​de øverste tre talte om tingene. To andre er homomorf kryptering og Google bølge [ 1. ]. Kommer tilbage til aktuel post - udtryk i titlen angiver, hvordan du får indholdet fra andre mennesker. Følgende oplysninger bliver mere tydeligt, hvis du forestille dig ting, der sker med hensyn til blogs, selvom de begrebsmæssigt ikke begrænses til blogs.

Polling refererer til den situation, hvor kunderne med at spørge serveren, hvis noget nyt er kommet op. Hvor ofte at bede om opdateringer vil altid være et problem med polling for hyppig eller for sjældne, men som en læser påpegede her, at en stor, ting med polling er, at serveren ikke behøver at vedligeholde tilstand.

Ping refererer til det tilfælde, hvor når skrive en artikel, du (eller din software) også opdateringer af nogle populære (central) opdateringstjenester. Nogle baggrunden her .

Næste er pubsub, der står for offentliggørelse / tegne, en af de tidligste banen for det blev gjort her ved Evan Henshaw-Plath og Kellan Elliott-McCrea (72 slides, men værd at gå igennem). Overbevisende eksempel gav de imod var det - på en bestemt dato, kravlede Flickr 2,9 millioner gange for at få de nyeste billeder af 45,754 brugere, hvoraf 6.721 havde besøgt Flickr i de 24 timer, og kunne have 'potentielt' uploadet et billede FriendFeed. Bemærk, at det, de foreslog, var ikke en ny teknologi, som påpeger de "revolutionerende ny 20 år gammel teknologi". Hvis du gør det for blogs, så en af ​​de store problemer med XMPP - tilstedeværelse data overhead, som kan være så høj som 60-70% kan reduceres meget.

pubsubhub står for offentliggøre subscribe hub og pubsubhubbub er en protokol, i hvilken kernen er ideen om pubsubhub. Hvor forlag (siger bloggere) opdatere hub, der (kan være mere end én nav, som taler til hinanden) ligger "et sted i skyen", som per protokol dette kan skubbe eller trække, som pr protokollen, men det næste link i kæde, hub til klient (sige læsere) er det altid skubbe model. Denne side er godt udgangspunkt for pubsubhubbub, oversigt dias er gode. Lige veltalende Anil Dash beskriver det her som trykknap web.
To andre hits er webhooks som er dybest set http tilbagekald. GitHub bruger det, så gør paypal for asynkrone meddelelser om betaling i IPN- . så gør mange andre. Relateret koncept rsscloud som igen pubsub navet. Følg dette link for yderligere oplysninger.

Du kan være undrende hvad er pointen med at skrive alle disse her, der er to 1. Disse ting er værd at vide, minimalt mindst og 2. Denne blog er pubsubhubbub aktiveres nu via appspot hub ved hjælp af denne WordPress plugin og foder er også pubsubhubbub aktiveret via FeedBurner, link her
-
[ 1 ]. - God indledning læse for fuldt homomorf kryptering, er denne artikel af Bruce Schneier, og dette snak er mere eller mindre eneste kilde til Google Wave.

-UPDATE - Dette indlæg forklarer, hvordan kravet om offentlig server callback kan arbejdes rundt til stationære klienter ved hjælp af XMPP gateway (for pubsubhubbub).

En smule samling

August 29, 2009 ved Prashant · Kommentarer
Filed under: teknologi

Efter at have læst denne artikel om lock gratis buffere og se brugen af CAS (sammenlign og bytte), følte jeg at udgive en samling kode til at gøre det samme. Brug sag, der var at skrive en indfødt metode og kalder den fra Java (tilbage i 1,5, når samtidige datastrukturer i Java var mere eller mindre ikke eksisterende). Uden videre, vil jeg frigøre koden på dig :) . Først er for CAS, og andet er for computing GCD bruge Euklids algoritme (denne kan findes mange steder og selvstudier såvel).

Kompiler og kør instruktioner gcc file_name.c ; ./a.out

Sammenlign og Swap

   # Include 
  # Include 
 / / Ombytning - newvalue, comperand er gammel / forventet værdi
 / *
  * Funktion faktisk gør følgende ting - hvis den værdi * dest er lig med oldvalue derefter erstatte det med newvalue ellers lade det være uændret: ikke alle disse atomically
  *
  * Der er to muligheder for returværdi
  * 1.is oprindelige værdi af * dest og overlade den byrde at kalde fxn at sammenligne det med oldval
  * 2.  gøre det her over og returnere 0 eller 1, bør dette være mere effektive
  ** /

 / * Senere ændre det til makro * /
 int cas (int * DEST, int oldvalue, int newvalue) {
	 printf ("(% d,% d,% d)", * dest, oldvalue, newvalue);
	 / * Int cas (int DEST, int oldvalue, int newvalue) {* /
	 / * Int cas (int DEST, int newvalue, int oldvalue) {* /
	 int resultat = 1 ;/ * 1 viser, at CAS lykkedes og 0 viser, at det mislykkede * /
	 / * Btw nødt til at indstille cc for flag clobbering!  * /
	 __asm__ __ volatile__ (
			 "Movl% 2,%% EAX \ n \ t"
			 "Movl% 3,%% EBX \ n \ t"
			 "Movl% 0,%% ECx \ n \ t"
			 "LOCK \ n \ t"
			 "CMPXCHG%% EBX, (%% ECx) \ n \ t" / * skal låsen på samme linje * /
			 "Jz FÆRDIG \ n \ t"
			 "Movl $ 0,% 1 \ n \ t"
			 "FÆRDIG: \ n \ t"
			 : "= M" (DEST), "= g" (resultat)
			 : "G" (oldvalue), "g" (newvalue), "m" (DEST)
			 : "% Eax", "% EBX", "ECx", "cc"
			 );
	 printf ("(% d,% d,% d)", * dest, oldvalue, newvalue);
	 tilbage resultat;
 }

 / * TODO
  * Skrive en anden asm fxn, der sætter over fxn i en while-løkke og holde prøver, medmindre det lykkes * /

 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 ("at ændre værdien af ​​* C til% 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;
 }

Formatering noter - synes ligesom WP syntaks highlighter tilføjer i sidste ende, ignorere det.

GCD

 # Include 
 int gcd (int a, int b) {
     int resultat;
     / * Compute største fælles divisor med Euklids algoritme * /
     __asm__ __ volatile__ ("movl% 1,%% EAX;"
                           "Movl% 2%% EBX"
                           "CONTD: cmpl $ 0,%% EBX;"
                           "Je FÆRDIG;"
                           "Xorl%% EDX,%% EDX"
                           "Idivl%% EBX"
                           "Movl%% EBX,%% EAX"
                           "Movl%% EDX,%% EBX"
                           "Jmp CONTD;"
                           "FÆRDIG: movl%% eax,% 0": "= g" (resultat): "g" (a), "g" (b)
     );

     tilbage resultat;
 }

 int main () {
     int første, andet;
     printf ("Indtast to heltal:");
     scanf ("% d% d", og første, og anden);

     printf ("GCD af% d &% d er% d \ n", første, andet, GCD (første, andet));

     return 0;
 }

Cricketing verden venter en ny verdensorden

August 25, 2009 ved Prashant · Kommentarer
Filed under: misc

Efter en serie spænder over fem test, og cirka to måneder, England inddæmmede aske.

Lad os tale om det vindende hold først - deres midt for er 'gennemsnitlig', hvis du ikke ønsker at kritisk. Greame Swann bidrag med battet tæller intet mindre end bidraget med bolden. Stuart Broad - bedste all rounder var ikke starteren for 5. test. Andrew Strauss var den eneste konsekvent gærdespiller og Jimmy Anderson var den eneste konsekvent bowler.

Pointen her er ikke at skælde resultaterne af det vindende hold, men at sætte i perspektiv, at på trods af alle disse, Australien tabt. du nødt til at tænke i nogle få sekunder, hvis bedt om at navngive deres bedste bowler. Højre, var det BW Hilfenhaus. Hauritz udkonkurrerede Everbody forventning, men var stadig ikke godt nok til at blive valgt for to af de fem tests. Sydafrika blev aldrig en verden tæppebanker uden verdensklasse spinner, kan Australien ikke håbe på at forblive en uden en god nok en mindst. Magician forlod scenen, og det ligner ikke kunst længere, glemmer magi. Ponting står højt blandt mindre dødelige, og Michael Clarke står op meget ofte, men det gør dem til et team med nogle meget gode spillere, og ikke et meget godt hold.
Ashes 2009 vil blive husket for Andrew Flintoff sidste aske, Stuart Broad ankomst som en all rounder (hvis han tilføjer noget mere Aske folklore til sin lovende start), og en af ​​de mest sigende debut århundredes hele tiden ved at Trott, men det vil også være husket som det punkt, hvor IFS og men'er omkring Australiens overherredømme blev endeligt lagt til hvile, er det forbi. Må ikke få mig forkert, de kan stadig grave Mike Hussey og Stuart Clark, men du føler bidrag fra alle tidspunkter greats, når de forsvinder. Nogle gange kommer de til at minde sig selv i IPL, men alligevel kan de ikke erstattes. Lad os føler velsignet for at have set Warne, McGrath og Gilchrist spille sammen og understøttes af Waughs, Ponting, Hyden, Martin og Langer.

Fremadrettet vil Sydafrika altid være et meget godt hold, men de har brug for at vinde semifinalen og være mere konsekvente over hele kloden, vil Pakistan forbliver gådefuldt strålende, vil indiske unge kanoner nok finde det svært at fylde skoene af ekstraordinære forgængere. Sri Lanka bør fortsætte med at vise glimt af kunst i håndværk. Men, kan vi nødt til at vente til engang, før de har en all out dominerende team eller før en kaptajn har klaget over manglende konkurrence, som Steve Waugh gjorde engang.

På et beslægtet note - lad os velkommen til at komme tilbage i Asif, han har en helvedes masse potentiale, lad os håber at se noget af det, og også velkommen Andy Flower i den nye awatar, højre kan du ikke holde gode mænd ned for længe.

rubin en foringer til at skabe hash

August 20, 2009 ved Prashant · Kommentarer
Filed under: teknologi

Går samtidig går gennem en af ​​mine gamle programmer, jeg fandt denne skrevet af mig engang tilbage:

#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

At dræbe nogle af suspense lad mig afsløre, at raw_text ligner

 

, Til højre den er blevet skåret fra paypal payment anerkendelse.

Over linje, hvis brudt i dele lyder bedre:

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

Lad os gøre de enkelte trin i IRB:

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

 => ["Succes", "mc_gross = 10,00", "protection_eligibility = Ikke-godkendt", "payer_id = U7PPJJ4TSJ47E", "skat = 0,00", "payment_date = 09:45:30 Jul 10, 2009 PDT", "payment_status = Afventer "]                                                                         

 IRB (hoved): 013:0> unescaped_array = unescaped_array.map {| x | b = x.split ("="); b.push (nul), hvis b.size == 1 b}  

 => [["Succes", nil], ["mc_gross", "10,00"], ["protection_eligibility", "Ikke-godkendt"], ["payer_id", "U7PPJJ4TSJ47E"], ["skat", "0,00"] , ["payment_date", "09:45:30 Jul 10, 2009 PDT"], ["payment_status", "Afventer"]]                               

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

 => ["Succes", nul, "mc_gross", "10,00", "protection_eligibility", "Ikke-godkendt", "payer_id", "U7PPJJ4TSJ47E", "skat", "0,00", "payment_date", "09:45: 30 Jul 10, 2009 PDT "," payment_status "," Afventer "]
 IRB (hoved): 015:0>
 hash = Hash [* flattened_array]
 => {"Skat" => "0,00", "payment_status" => "Afventer", "payer_id" => "U7PPJJ4TSJ47E", "mc_gross" => "10,00", "succes" => nul, "payment_date" = > "09:45:30 Jul 10, 2009 PDT", "protection_eligibility" => "Ikke-godkendt"} 

BTW, er * kaldes splat operatør i Ruby

En anden måde at skabe hash fra 'vifte af par' er at bruge injicere:

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

Der er endnu en måde :) Skriv en løkke, som jeg vil overlade som en øvelse til læserne!

Her er en smule relateret use case for at skabe hash fra arrays:

  IRB (hoved): 005:0> [1,2,3,4,7,9] group_by {| x | x <5.?  : Mindre :: større}

 => {: Mindre => [1, 2, 3, 4],: større => [7, 9]} 

Du kan gøre flere ting, dybest set resultatet af blokken bruges som nøglen til dette element i den resulterende hash.

gmail, mutt og msmtp fix

August 17, 2009 ved Prashant · Kommentarer
Filed under: teknologi

Hvis du bruger mutt og smtp at få adgang til Gmail. Her er en (dårlig) nyheder. Seje fyre på Google igen ændret certifikat. Åh, har du spørge - hvordan det ved det? Enkel mutt begyndt at klage over dårlig certifikat, når de forsøger at bruge msmpt, berygtede 'msmtp: TLS-certifikat mislykkedes:. Certifikatet har ikke fået en kendt udsteder " hilste mig på skærmen.

At krydse bekræfte -
Bare køre efter

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

I stedet for den gamle Thwate Server Nu får du følger i udsteder segment
Issuer:
Common Name: Google Internet Authority
Organization: Google Inc
Country: US

Heldigvis fix er enkel, her er hvad du skal gøre på debian

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

Efter dette bare ændre følgende linje i din ~ for /. 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

til

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

Git og Awesome Survey

August 15, 2009 ved Prashant · Kommentarer
Filed under: misc

Her er to links til undersøgelse foretaget af git (version control system) og awesome (window manager) samfund. Hvis du bruger en af ​​disse, bedes du tage dig tid til at udfylde spørgeskemaet. Tænk på det som den enkleste måde at bidrage tilbage til den software, du bruger.
Her er links:

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

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

Note - (Som findes på disse sider, men i bunden :) ) -
"Hvis du har cookies aktiveret, kan du altid indsende delvist fyldt undersøgelse, og vende tilbage til dine svar på et senere tidspunkt, udfylde det senere."

Fusionerende hashes i YAML conf filer

31 Juli 2009 ved Prashant · Kommentarer
Filed under: teknologi

YAML er ganske praktisk til at skrive konfigurationsfiler. Primære fordel er, at den læser som tekstfil. Det fungerer rigtig godt, hvis din config fil er flad (ingen hierarki) og har ingen gentagelser.
Hvis din konfigurationer filen har gentagelser så giver det mening at udskille disse elementer og genbruge dem. Hvad jeg mener er dette - lad os sige, at du din config fil ser sådan her ud:

  udvikling:
   input_location: common_input
   output_location: dev_location
   mail:
     smtp_server: din_server
     login: your_login
     Password: top_secret
 produktion:
   input_location: common_input
   output_location: dev_location
   mail:
     smtp_server: din_server
     login: your_login
     Password: top_secret 

Forudsat ovenstående kode i / tmp / test.yml her er, hvordan kan du læse i Python og Ruby
$cat readyml.py

 #! / Usr / bin / env python
 fra pprint indførsel pprint som pp
 # I debian nødt til at installere python-YAML
 fra YAML import belastning, load_all, dump
 hash = belastning (åben ('/ tmp / test.yml'))
 pp (hash ['udvikling']) 


$ cat readyml.rb

  #! / Usr / bin / env rubin
 kræver 'PP'
 hash = YAML :: belastning (File.open ('/ tmp / test.yml). læst)
 pp hash ['udvikling'] 

her er en handy en liner for Ruby-version
$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]' , eller du kan prøve det samme i IRB eller Python konsol.

Bemærk, at i ovenstående kodestykke, er alt andet end output placering er den samme i udvikling og produktion del. Det er her yml node id kommer til at redde. Ideen er enkel have et sæt standardværdier og tilsidesætter dem på andet sted.
Du kan trække det ud som følger:

  standarder: og standarder
   input_location: common_input
   output_location: dev_location
   mail:
     SENDER_NAMEs: afsender
     smtp_server: din_server
     login: your_login
     Password: top_secret
 udvikling:
   <<: * Standard
 produktion:
   <<: * Standard
   output_location: prod_location 


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

Great, det virker (tm)!.
Formentlig har vi handlet lidt mere klarhed for lidt magi. Her er en lille forklaring: &, * og <<: & der er ankerkode kan forstås som node identifikator, * er node reference og <<: står for hash merge.

For flere detaljer se enten YAML specs eller wikipedia
Så langt så godt, men der er en fangst her, disse hash fusionerer ikke rekursiv. Hvad det betyder er dette: Lad os sige du vil have forskellige afsenderens navn for e-mail i to miljøer, kan du blive fristet til at gøre følgende:

  standarder: og standarder
   input_location: common_input
   output_location: dev_location
   mail:
     SENDER_NAMEs: afsender
     smtp_server: din_server
     login: your_login
     Password: top_secret
 udvikling:
   <<: * Standard
   mail:
     SENDER_NAMEs: sender_dev
 produktion:
   <<: * Standard
   output_location: prod_location
   mail:
     SENDER_NAMEs: sender_prod 

Lad os kontrollere

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

Ups, noget gik galt, problem, som nævnt ovenfor er, at hash fletningen ikke er rekursiv, og samtidig lægge det erstattet post af misligholdelse af post produktion, som kun har en nøgle. Løsning / arbejde omkring at oprulle en mere niveau:

  common_settings: & common_settings
 input_location: common_input
 output_location: dev_location
 mail_defaults: & mail_defaults
  SENDER_NAMEs: afsender
   smtp_server: din_server
   login: your_login
   Password: top_secret

 standarder: og standarder
   <<: * Common_settings
   mail:
     <<: * Mail_defaults
 udvikling:
   <<: * Standard
 produktion:
   <<: * Standard
   mail:
     <<: * Mail_defaults
     SENDER_NAMEs: sender_prod

Lad os se igen

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

Sagde du du har en større niveau af nesting, godt du kan helt sikkert oprulle en mere lige, men så bliver det noget rod. Så, hvis du ikke forsøger at skrive løsning tårne ​​i Hanoi i en conf-fil, er det bedre at restucture conf fil end at grave i YAML eller noget andet. Men det er dit opkald alligevel.

Store programmører finde enkle løsninger på komplekse problemer

30 Juni 2009 ved Prashant · Kommentarer
Filed under: misc

Efter en lang tid jeg kunne finde kilden til følgende citat,

Junior programmører at skabe enkle løsninger på enkle problemer. Senior programmører skaber komplekse løsninger på komplekse problemer. Store programmører finde enkle løsninger på komplekse problemer.

Det er fra et essay kaldet Smuk Software af Charles Connell.

En anden favorit af mine er Zen af Python -

Smuk er bedre end grim.
Eksplicit er bedre end implicit.
Simple er bedre end kompleks.
Complex er bedre end kompliceret.
Flat er bedre end indlejret.
Sparse er bedre end tæt.
Læsbarhed tæller.
Særlige tilfælde er ikke specielle nok til at bryde reglerne.
Selv praktiske slår renhed.
Fejl bør aldrig gå lydløst.
Medmindre det udtrykkeligt er tavshed.
I lyset af tvetydighed, nægte fristelsen til at gætte.
Der bør være en, og fortrinsvis kun en indlysende måde at gøre det.
Selv om denne måde ikke kan være indlysende ved første medmindre du er hollandsk.
Nu er bedre end aldrig.
Selvom aldrig er ofte bedre end * lige * nu.
Hvis implementeringen er svært at forklare, det er en dårlig idé.
Hvis implementeringen er let at forklare, kan det være en god idé.
Namespaces er en dytter rigtig god idé - lad os gøre flere af dem!
-------------------------
og så er der klassisk Tao for programmering

-

kreditter, som på den linkede site-

Oversat af Geoffrey James

Transskriberet af Duke Hillard

Overføres af Anupam Trivedi, Sajitha Tampi, og Meghshyam Jagannath

Re-html-ized og redigeret af Kragen Sittler

-

Book 1 - The Silent Void

Således talte skibsføreren programmør:

»Når du har lært at snuppe fejlkoden fra fælden rammen, det
vil være tid for dig at forlade. "

1,1

Noget mystisk er dannet, født i det tavse tomrum. Waiting alene og
ubevægelig, det er på en gang stille og alligevel i konstant bevægelse. Det er kilden
af alle programmer. Jeg kender ikke dens navn, så jeg vil kalde det Tao
Programmering.

Hvis Tao er stor, så operativsystemet er stor. Hvis driftstiden
systemet er stor, så compileren er stor. Hvis compileren er stor,
så ansøgningen er stor. Brugeren er glad og der findes
harmoni i verden.

Den Tao Programmering flyder langt væk, og afkast på vind morgen.

1,2

Tao fødte maskine sprog. Machine sprog fødte
assembler.

Den assembler fødte compileren. Nu er der 10.000
sprog.

Hvert sprog har sit formål, men ydmyg. Hvert sprog udtrykker
Yin og Yang af software. Hvert sprog har sin plads i Tao.

Men du behøver ikke programmerer i COBOL, hvis du kan undgå det.

1,3

I begyndelsen var Tao. Tao fødte rum og tid.
Derfor er rum og tid er Yin og Yang programmering.

Programmører, der ikke forstår Tao er altid løbe tør for tid
og plads til deres programmer. Programmører at forstå Tao altid
har nok tid og plads til at opnå deres mål.

Hvordan kunne det være anderledes?

1,4

Den kloge Programmøren fortalte om Tao og følger den. Den gennemsnitlige
programmør er fortalt om Tao og søger efter det. Den tåbelige programmør
er fortalte om Tao og griner på det.

Hvis det ikke var for latter, ville der ikke være Tao.

De højeste lyde er hårdest at høre.
Fremadrettet er en måde at trække sig tilbage.
Fantastisk talent viser sig sent i livet.
Selv en perfekt program stadig bugs.

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

Bog 2 - de gamle mestre

Således talte skibsføreren programmør:

"Efter tre dage uden programmering, bliver livet meningsløst."

2,1

Programmørerne gamle var mystisk og dyb. Vi kan ikke begribe
deres tanker, så alt, hvad vi gør, er beskrive deres udseende.

Aware, som en ræv krydse vandet. Alert, som en generel på
slagmark. Kind, som en værtinde hilser sine gæster. Enkel, ligesom
uncarved blokke af træ. Uigennemsigtig, som sorte pools i mørke huler.

Hvem kan fortælle hemmeligheder i deres hjerter og sind?

Svaret findes kun i Tao.

2,2

Grand Master Turing drømte engang, at han var en maskine. Da han vågnede han
udbrød:

"Jeg ved ikke, om jeg turerings drømmer at jeg er en maskine, eller en
maskine, drømmer, at jeg turerings! "

2,3

En programmør fra et meget stort computer selskab gik til en software
konference og vendte derefter tilbage til at rapportere til sin chef og sagde: "Hvad slags
af programmører arbejder for andre virksomheder? De opførte sig dårligt og var
ligeglade med optrædener. Deres hår var langt og usoigneret og deres
tøj var rynket og gammel. De styrtede ned vores gæstfrihed suite, og de
gjort uhøflig lyde under min præsentation. "

Lederen sagde: "Jeg aldrig skulle have sendt dig til konferencen. De
programmører leve over den fysiske verden. De mener, livet absurd, en
utilsigtet tilfældighed. De kommer og går uden at vide begrænsninger.
Uden en pleje, lever de kun for deres programmer. Hvorfor skulle de gider
med sociale konventioner?

"De er i live inden for Tao."

2,4

En novice spurgte Master: "Her er en programmør, der aldrig designer,
dokumenter eller test sine programmer. Men alle, der kender ham, betragter ham som en af
de bedste programmører i verden. Hvorfor er dette? "

Mesteren svarer: "Det programmør har styr på Tao. Han er gået
Ud over behovet for design, han ikke bliver vred, når systemet
nedbrud, men accepterer universet uden bekymring. Han er gået ud over den
behov for dokumentation, han ikke længere bekymrer sig om alle andre ser sin kode.
Han er gået ud over behovet for test, og hver af hans programmer er perfekte
i sig selv, rolig og elegant, deres formål selvindlysende. Sandelig,
Han er gået ind i mysteriet om Tao. "

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

Book 3 - Design

Således talte skibsføreren programmør:

"Når programmet er ved at blive testet, er det for sent at lave nyt design
ændringer. "

3,1

Der var engang en mand, som gik til en computer messe. Hver dag, som han
ind, manden fortalte vagten ved døren:

"Jeg er en stor tyv, berømt for mine bedrifter af butikstyveri. Vær
advaret, skal for denne messe ikke undslippe unplundered. "

Denne tale forstyrret vagt i høj grad, fordi der var millioner af
dollars af edb-udstyr inde, så han så manden omhyggeligt. Men
manden alene vandrede fra bod til bod, nynnede stille for sig selv.

Da manden forlod, vagten tog ham til side og søgte hans tøj, men
intet var at finde.

På den næste dag af handelen viser, vendte manden og skældt ud af vagten
sige: "Jeg slap med et stort bytte i går, men i dag vil være endnu
bedre. "Så vagten betragtede ham stadig tættere, men til ingen nytte.

På den sidste dag i messen, kunne vagten begrænse sin nysgerrighed
længere. "Sir Thief," sagde han, "Jeg er så forvirret, kan jeg ikke leve i
fred. Venligst oplyse mig. Hvad er det, at du stjæle? "

Manden smilede. "Jeg stjæle ideer," sagde han.

3,2

Der var engang en mester programmør, der skrev ustrukturerede programmer. En
novice programmør, der søger at efterligne ham, begyndte også at skrive
ustrukturerede programmer. Når novice bad føreren at vurdere hans
fremskridt, master kritiserede ham for at skrive ustrukturerede programmer,
sige, "hvad der er passende for master er ikke egnet til at
novice. Du skal forstå Tao før overskridende struktur. "

3,3

Der var engang en programmør, der var knyttet til retten i krigsherren
af Wu. Det krigsherre spurgte programmør: "Hvilket er lettere at designe: en
regnskabs-pakke eller et operativsystem? "

"Et operativsystem," svarede programmøren.

Den krigsherre udtalte et udråbstegn på vantro. "Sandelig en regnskabsmæssig
pakke er trivielt siden kompleksiteten af ​​et operativsystem, "siger han
nævnte.

"Ikke det," sagde programmør, "når designe en regnskabsmæssig pakke,
programmøren fungerer som en mægler mellem mennesker med forskellige
ideer: hvordan det skal fungere, hvordan dens rapporter skal vises, og hvordan det skal
i overensstemmelse med skattelovgivningen. Derimod er et operativsystem ikke er begrænset
af eksterne optrædener. Ved udformningen af ​​et operativsystem, programmøren
søger den enkleste harmoni mellem maskine og ideer. Derfor er en
operativsystemet er lettere at designe. "

Den krigsherre af Wu nikkede og smilede. "Det er alt godt og vel, men
som er lettere at fejlrette? "

Programmøren gjorde ingen svar.

3,4

En leder gik til master programmør og viste ham de krav,
dokument for en ny ansøgning. Lederen spurgte mester: "Hvor længe
vil det tage at designe dette system, hvis jeg tildeler fem programmører til det? "

"Det vil tage et år," sagde manden hurtigt.

"Men vi har brug for dette system med det samme eller endnu hurtigere! Hvor lang tid tager det
tage, hvis jeg tildeler ti programmører til det? "

Føreren programmør rynkede panden. "I så fald vil det tage to år."

"Og hvad hvis jeg tildeler hundrede programmører til det?"

Føreren programmør trak på skuldrene. "Så design vil aldrig være
afsluttet, "sagde han.

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

Bog 4 - Kodning

Således talte skibsføreren programmør:

"En velskrevet programmet er dets egen himmel, en dårligt skrevet program er
sit eget helvede. "

4,1

Et program skal være let og adræt, dets underprogrammer forbundet som en
perlerække af perler. Den ånd og hensigten med programmet bør bevares
hele. Der bør være ikke for lidt eller for meget, hverken
unødvendige loops eller ubrugelige variabler, hverken mangel på struktur eller
overvældende stivhed.

Et program skal følge `loven af ​​Least Overraskelse". Hvad er denne lov?
Det er simpelthen, at programmet altid skal svare til brugeren på den måde
der forbløffer ham mindst.

Et program, uanset hvor kompleks, skal fungere som en enkelt enhed. Programmet
bør ledes af logik i stedet for ydre optrædener.

Hvis programmet ikke disse krav, vil det være i en tilstand af
uorden og forvirring. Den eneste måde at rette dette på er at omskrive
program.

4,2

En novice spurgte mester: "Jeg har et program, der engang kører og
gange afbryder. Jeg har fulgt reglerne for programmering, men jeg
helt forvirret. Hvad er årsagen til dette? "

Skibsføreren svarede: "Du er forvirret, fordi du ikke forstår Tao.
Kun en tåbe forventer rationel adfærd fra sine medmennesker. Hvorfor gør du
forvente det fra en maskine, som mennesker har bygget? Computere simulere
determinisme, kun Tao er perfekt.

"Reglerne for programmering er forbigående, kun Tao er evigt. Derfor er
skal du overveje Tao, før du får oplysning. "

"Men hvordan vil jeg vide, når jeg har modtaget oplysning?" Spurgte
novice.

"Dit program vil køre korrekt," svarede mester.

4,3

En master blev forklarer karakteren af ​​Tao til en af ​​sine novicer. "The
Tao er indeholdt i al software - uanset hvor ubetydelig, "sagde
skibsføreren.

"Er Tao i en håndholdt lommeregner?" Spurgte den uerfarne.

"Det er," lød svaret.

"Er Tao i et videospil?" Fortsatte den uerfarne.

"Det er selv i et videospil," sagde manden.

"Og er Tao i DOS for en personlig computer?"

Skibsføreren hostede og flyttede sin stilling en anelse. "Lektionen er slut
for i dag, "sagde han.

4,4

Prince Wangs programmeringsenhed blev kodende software. Hans fingre dansede på
tastatur. Programmet kompileret uden en fejlmeddelelse, og programmet
løb som en blid vind.

"Excellent!" Prinsen udbrød, "Din teknik er fejlfri!"

"Teknik?" Sagde programmør dreje fra sin terminal, "Hvad jeg
følge er Tao - ud over alle teknikker! Da jeg først begyndte at programmere jeg
ville se for mig hele problemet i en masse. Efter tre år har jeg ingen
længere så denne masse. I stedet brugte jeg underrutiner. Men nu kan jeg ikke se noget.
Hele mit væsen eksisterer i en uformelig tomrum. Mine sanser er i brug. Min ånd,
fri til at arbejde uden plan, følger sin egen instinkt. Kort sagt, mit program
skriver sig selv. True, nogle gange er der vanskelige problemer. Jeg ser dem
kommer, jeg sætter tempoet ned, jeg ser lydløst. Så jeg ændre en eneste linje kode
og de vanskeligheder borte ligesom pust i tomgang røg. Jeg så kompilere
program. Jeg sidder stille og lod glæden ved arbejdet fylder min væsen. Jeg lukker min
øjne for et øjeblik og derefter logge af. "

Prins Wang sagde: "Ville, at alle mine programmører var så klog!"

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

Book 5 - Vedligeholdelse

Således talte skibsføreren programmør:

"Selvom et program være, men tre linjer lang, vil det en dag være
opretholdes. "

5,1

Et godt brugt dør behøver ingen olie på sine hængsler.
En hurtig-flydende strøm vokser ikke stillestående.
Hverken lyd eller tanker kan bevæge sig gennem et vakuum.
Software rådner hvis den ikke anvendes.

Det er store mysterier.

5,2

En leder spurgte en programmør hvor lang tid det ville tage ham til at afslutte
program, hvor han arbejdede. "Det vil være færdig i morgen," den
programmør hurtigt svarede.

"Jeg tror, ​​du bliver urealistisk," sagde lederen, "sandheden, hvordan
lang tid tager det? "

Programmøren troede et øjeblik. "Jeg har nogle funktioner, som jeg ønsker at
tilføje. Det vil tage mindst to uger, "sagde han til sidst.

"Selv det er for meget at forvente," insisterede lederen, "Jeg vil være
opfyldt, hvis du bare fortælle mig, hvornår programmet er afsluttet. "

Programmøren indforstået med dette.

Adskillige år senere, lederen pensioneret. På vej til sin pensionering
frokost, opdagede han programmøren i søvn på hans terminal. Han havde været
programmering hele natten.

5,3

En novice programmør engang blev tildelt til at kode en simpel finansiel pakke.

Den uerfarne arbejdede voldsomt i mange dage, men da hans herre revideret
hans program, opdagede han, at det indeholdt en skærm editor, et sæt af
generaliseret grafik rutiner, en kunstig intelligens-interface, men
ikke den mindste omtale af noget økonomisk.

Når føreren spurgt om dette, den uerfarne blev forarget. "Vær ikke
så utålmodig, "sagde han," Jeg sætter i den finansielle ting til sidst. "

5,4

Er en god landmand forsømmer en afgrøde, han har plantet?
Er en god lærer overser selv den mest ydmyge studerende?
Er en god far give et enkelt barn til at sulte?
Er en god programmør nægte at bevare sin kode?

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

Book 6 - Management

Således talte skibsføreren programmør:

"Lad programmører være mange, og de ledere få - så alle vil være
produktive. "

6,1

Når ledere holder endeløse møder, programmører skriver spil. Hvornår
revisorer taler om kvartalsvise overskud, udvikling budgettet er ved at
skæres. Når seniorforskere taler blå himmel, skyerne er ved at rulle
i.

Truly, this is not the Tao of Programming.

When managers make commitments, game programs are ignored. When
accountants make long-range plans, harmony and order are about to be
restored. When senior scientists address the problems at hand, the
problems will soon be solved.

Truly, this is the Tao of Programming.

6.2

Why are programmers non-productive?
Because their time is wasted in meetings.

Why are programmers rebellious?
Because the management interferes too much.

Why are the programmers resigning one by one?
Because they are burnt out.

Having worked for poor management, they no longer value their jobs.

6.3

A manager was about to be fired, but a programmer who worked for him
invented a new program that became popular and sold well. As a result, the
manager retained his job.

The manager tried to give the programmer a bonus, but the programmer
refused it, saying, “I wrote the program because I thought it was an
interesting concept, and thus I expect no reward.”

The manager upon hearing this remarked, “This programmer, though he holds
a position of small esteem, understands well the proper duty of an
employee. Let us promote him to the exalted position of management
consultant!”

But when told this, the programmer once more refused, saying, “I exist so
that I can program. If I were promoted, I would do nothing but waste
everyone's time. Can I go now? I have a program that I'm working on.”

6.4

A manager went to his programmers and told them: “As regards to your work
hours: you are going to have to come in at nine in the morning and leave
at five in the afternoon.” At this, all of them became angry and several
resigned on the spot.

So the manager said: “All right, in that case you may set your own
working hours, as long as you finish your projects on schedule.” The
programmers, now satisfied, began to come in at noon and work to the wee
hours of the morning.

————————————————————————–

Book 7 – Corporate Wisdom

Thus spake the master programmer:

“You can demonstrate a program for a corporate executive, but you can't
make him computer literate.”

7.1

A novice asked the master: “In the east there is a great tree-structure
that men call `Corporate Headquarters'. It is bloated out of shape with
vice presidents and accountants. It issues a multitude of memos, each
saying `Go, Hence!' or `Go, Hither!' and nobody knows what is meant. Every
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. Det
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. Ingen
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

10 maj 2009 ved Prashant · Kommentarer
Filed under: teknologi

Her er, hvordan vi normalt gør shell omdirigering
$ ./pgm.sh args >out.txt 2>err.txt
I wanted to modify it a bit and run as follows
$ ./pgm.sh args
med kravet om, at produktionen og fejl skal gå til nogle filename beregnet inde pgm.sh baseret på args. Et illustrativt tilfælde kunne være, når datoen er en del af args. Så du vil gerne stdout at gå til at sige / din / mappe / pgm_out_YYYYMMDD.txt 1

Problemet med almindelige måde at omdirigere N>file.txt dvs knytte file descriptor N til file.txt, er, at det virker kun for nyligt gaffelformet processen og ikke til den aktuelle proces.

$ echo hi 1>out.txt ; echo hii . vil sende hej til out.txt, men vil udskrive hii til stdout 2

Det er her exec kommer os til undsætning. Hvis vi tilføjer exec 1>somefile.txt derefter output fra resten af scriptet vil gå til somefile.txt

$ cat test.sh
#!/usr/bin/env bash
exec 1>out.txt
echo hi
echo hii
$. / Test.sh vil omdirigere hi samt hii til out.txt

Tilsvarende at omdirigere stdout samt stderr vi vil gøre sådan noget
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 kommer tilbage til den oprindelige punkt omdirigere nogle fil fra inde i skallen, lad os sige program beregnet filnavnet i nogle variable outfile, kunne vi lige har gjort exec 1>$OUTFILE

Det løser det aktuelle problem. But you may like to go through following example which achieves 'random access' of file in shell script. Eksempel er fra her
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

Med kommentarer, er denne kode selvforklarende.
-
1 Det kan også ske ved $ ./pgm.sh args >pgm_out`date +%Y%m%d` men tanken er at generere denne fil navn baseret på nogle logik i selve programmet.
2 1 1> out.txt er overflødigt, men det præciseres her, at vi omdirigerer fd 1

Sony VAIO review

April 29, 2009 ved Prashant · Kommentarer
Gemt under: anmeldelser

En måned tilbage købte jeg en VAIO NS25G og har haft planer om at skrive dette indlæg siden. Dette indlæg er primært noter til sig selv og revision af samme. Lad os komme i gang mærket hurtigt -

Indlæg består af to dele -

I. Anmeldelse af hardware
II. Installationsvejledning for Debian og ting at sætte

I. Review of hardware

Da jeg ikke er en VAIO markedsføring fyr, vil jeg begynde omvendt -

Hvorfor kan du ikke lide at købe denne bærbar:

  1. Ingen bluetooth: tro mig, i 2009 sony sælger bærbare uden bluetooth. Sikker på at du kan bruge USB-ting, men ...
  2. Skærmstørrelse er 15,4 inches: hvis du rejser meget så denne laptop kan ikke være meget handy og også 2,9 kilo laptop er ikke ligefrem den letteste rundt.
  3. Ingen HDMI-udgang.
  4. Ingen separat grafikkort og lignende. (Og ingen dedikeret video memory

Nu, hvorfor du kan lide at købe det:

  1. This laptop is a damn good desktop. Hvad jeg mener er dette, hvis dit krav er ligesom mig - for det meste at skrive programmer, og forsøger at bruge det 25 ud af 24 timer, derefter med en stor skærm, yderst behagelig tastaturlayout med rummelige håndledsstøtten og god computerkraft, det gør en meget god kombination.
  2. Det L2 cache er 2MB og processor / hukommelse system bus er 800 MHz. 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.
  3. Fra mit brug, ser jeg processor meste ure på 1.2GHz, og hukommelsesbrug ~ for 500MB. That just reinforces previous point.
  4. Batteri backup er god, ~ 2 timer er, hvad jeg får.

Bare en ting mere her - at være Sony, vil det koste dig en smule end andre bærbare computere med samme konfiguration, men det er en opfordring u nødt til at foretage.

II. Configuring linux (to run out of box ! ) :
Det kom på forhånd installeret med Vista (tror jeg Home Premium eller nogle fancy navn i den retning). Dungara startet én gang, og skabte en anden partition på 150 GB. Debian testing er hvad jeg altid installerer og derefter op (ned?) Grad til 'ustabil' sid.

Ting, der arbejdede uden problemer:

  1. X - overraskende X-serveren ikke havde problemer med at starte eller opløsning. Efter en af ​​de opgraderinger X nægtede at starte selv, men 'X-konfigurere "genererede en conf fil, som fungerede ganske godt.
  2. Audio - Audio output og ekstern mikrofon fungerer fint. kerneversion 2.6.29-1-686 # 1 SMP og alsa-version 1.0.17. Dette er hvad du får fra
    $ lspci -v |grep Audio 00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Con1.0.17troller (rev 03)
  3. Video cam – just works
  4. Dvale til disk og tilbage - ikke noget problem
  5. Trådløs - kort sagt - det virker bare.
    $ lspci |grep -i wireless
    03:13:55 04:00.0 Network controller: Atheros Communications Inc. AR928X Wireless Network Adapter (PCI-Express) (rev 01) .

    Jeg tror, ​​kernel 2,6 .. 27 og fremefter det virker med den bestand kerne-kildekode. You dont have to install ndiswrapper or things like t
    hat. Som en note, siger godt køb gnome-network-manager og velkommen wicd venligst, det er bare en GUI lag men bag scenen, de har faste masse config ting som wpasupplient og meget mere.

Hvad virker ikke -

  1. En eller anden måde interne mikrofon nægter at arbejde ( Ekstern mikrofon virker fint selv. Nyeste alsa kilder ikke kompilerede rent på debian, så for tiden købte jeg ekstern Intern mikrofon, vil forsøge at grave ind i det engang i fremtiden selv.

Få flere misc tips til deiban:

  • Pakke til devnagri font-TTF-indisk-skrifttyper
  • Pakke til flash player - flashplugin-nonfree
  • Indrejse i sources.list for mplayer og kan lide - deb http://www.debian-multimedia.org sid vigtigste
  • Entry in sources.list for e17 – deb http://debian.alphagemini.org/ unstable main
  • Indrejse i sources.list for Skype - http://download.skype.com/linux/repos/debian/ stabilt ikke-fri

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

du nødt til at sætte dette i sudo selv.
og for at mindske forandring + til - og ... du får den ide, højre!

En lidt mere, hvis du bruger oplysning (E17) her er nogle flere vink -

[Oplysningstidens centrale bindidings]

Du kan bruge følgende nøgle kode og kortlægning

mute:
KEY="Keycode-160" ACTION="exec" PARAMS="/usr/bin/amixer -q set Master toggle"
dvale:
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-"
volumen stigning:
KEY="Keycode-176" ACTION="exec" PARAMS="/usr/bin/amixer -q set Master 2+"
øge lysstyrken:
KEY="Keycode-212" ACTION="exec" PARAMS="sudo /root/bin/incbrightness.sh"
sænke lysstyrken
KEY="Keycode-101" ACTION="exec" PARAMS="sudo /root/bin/decbrightness.sh"

Next Page »