Sondaż, ping, PubSub, pubsubhub, pubsubhubbub
W przypadku, gdy są sceptyczni, istnieje metoda w tym szaleństwie powyżej, w tytule postu. W nowoczesnych środowisk jest mało prawdopodobne, że nie słyszał o pubsubhubbub. Na szybko kilka miesięcy, to był jeden z trzech największych mówił o rzeczy. Inne dwa bycia homomorphic szyfrowanie i Google wave [ 1. ]. Wracając do obecnego postu - warunki zawarte w tytule wskazuje, w jaki sposób można uzyskać zawartość od innych ludzi. Następujące szczegóły stają się bardziej jasne, czy możesz sobie wyobrazić co dzieje się w odniesieniu do blogów, nawet jeśli nie są one koncepcyjnie ograniczony do blogów.
Polling odnosi się do sytuacji, w której klienci pytają serwer czy coś nowego wymyślił. Jak często prosić o aktualizacjach zawsze będzie problem z odpytywania zbyt częste lub zbyt rzadkie, ale jako jeden czytelnik zwrócił uwagę tutaj , że jeden wielki, co z odpytywania jest to, że serwer nie ma do utrzymania stanu.
Ping odnosi się do przypadku, kiedy pisać artykuł, użytkownik (lub oprogramowanie), jak również aktualizuje niektórych popularnych (centralne) Update Services. Niektóre tła tutaj .
Dalej jest PubSub co oznacza Publish / Subscribe, jednego z najstarszych boisku bo został tu przez Evan Henshaw-Plath i Kellan Elliott-McCrea (72 slajdów, ale warto przechodzące). Przekonujące przykład dali przeciw było to - w określonym dniu, FriendFeed czołgał Flickr 2,9 mln razy, aby uzyskać najnowsze zdjęcia 45,754 użytkowników, z których 6.721 odwiedził Flickr w tych 24 godzinach i mógł "potencjalnie" przesłane zdjęcie. Zauważ, że to, co proponuje nie nowa technologia, jak zwracają uwagę 'rewolucyjny nowy 20 lat technologii ". Jeśli robisz to dla blogów następnie jeden z głównych problemów z XMPP - obecność dane napowietrznych, które mogą sięgać nawet 60-70 procent można zredukować wiele.
pubsubhub oznacza publikować piastę subscribe i pubsubhubbub jest protokół, rdzeń, który jest idea pubsubhub. Przy czym wydawców (powiedzmy blogerów) aktualizować koncentrator, który (może być więcej niż jeden piasty, co mówią do siebie) znajduje się "gdzieś w chmury", jak w protokole tym można pchać lub ciągnąć zgodnie z protokołem, ale następnym ogniwem w łańcuch, piasty do klienta (powiedzmy czytelnikom) jest zawsze naciskać modelu. Ta strona jest dobrym punktem wyjścia dla pubsubhubbub, zjeżdżalnie Przegląd są dobre. Anil Dash kiedykolwiek wymowny opisuje go tutaj jako przyciskowym internecie.
Dwa inne związane odsłon są webhooks które jest w zasadzie http callbacks. Github wykorzystuje go, więc nie paypal dla asynchronicznych powiadomień o płatność w IPN . Tak samo wiele innych. Podobne pojęcie jest rsscloud który jest ponownie PubSub Piasta. Śledź ten związek o szczegóły.
Można się zastanawiać, jaki jest sens pisać wszystko to tutaj znajdują się dwa 1. Te rzeczy są warte poznania, w minimalnym stopniu co najmniej i 2. Ten blog jest pubsubhubbub włączony teraz przez centrum appspot przy użyciu tego wordpress wtyczki i paszy też jest pubsubhubbub włączony przez FeedBurner, link tutaj
-
[ 1 ]. - Dobry wprowadzające czytać do szyfrowania w pełni homomorphic jest to artykuł przez Bruce Schneier i ta rozmowa jest mniej lub bardziej jedynym źródłem fali Google.
-UPDATE - To po wyjaśnia wymóg publicznego serwera dla wywołania zwrotnego można obejść, dla desktopowych klientów za pomocą xmpp bramki (dla pubsubhubbub).
Trochę montażu
Po przeczytaniu tego artykułu o Lock Free buforów i widząc wykorzystanie CAS (porównania i wymiany), czułem się jak zamieszczenie kodu assemblera zrobić to samo. Użyj przypadek tam było napisanie natywnej metody i wywołać ją z powrotem w Java (1.5, kiedy równoległe struktury danych w Javie były mniej lub bardziej nie istnieje). Bez zbędnych ceregieli, będę uwolnić kod na Ciebie
. Pierwszy z nich to CAS i drugie jest dla komputerów GCD za pomocą algorytmu Euklidesa (ten można znaleźć w wielu miejscach i tutoriali jak również).
Skompilować i uruchomić instrukcje gcc file_name.c ; ./a.out
Porównaj i Zamień
# Include# Include / / Wymiany - nowa_wartość, comperand jest stary / wartość oczekiwana / * * Funkcja faktycznie robi następującą rzecz - jeżeli wartość do * dest jest równa OldValue następnie zastąpić ją nowa_wartość jeszcze pozostawić bez zmian: czy wszystkie te atomowo * * Istnieją dwie opcje do wartości zwracanej * 1.is wartość początkowa od * dest i pozostawić ciężar fxn wywołującego ją porównać z oldval * 2. zrobić to tu i zwraca 0 lub 1, powinno to być bardziej efektywne ** / / * Później zmienić go na makro * / int CAS (int * dest, int OldValue, int nowa_wartość) { printf ("(% d,% d,% d)", * dest, OldValue, nowa_wartość); / * Int cas (int dest, int OldValue, int nowa_wartość) {* / / * Int cas (int dest, int nowa_wartość, int OldValue) {* / int wynik = 1 ;/ * 1 pokazuje, że cas udało i 0 pokazuje, że nie udało * / / * Btw trzeba ustawić CC flaga przebijania! * / volatile__ __ __asm__ ( "Movl% 2,%% eax \ n \ t" "Movl% 3,%% ebx \ n \ t" "Movl 0%%% ecx \ n \ t" "LOCK \ n \ t" "CmpXchg ebx%%%% (ECX) \ n \ t" / * powinno LOCK być na tej samej linii * / "Jz SPORZĄDZONO \ n \ t" "Movl 0 dolarów,% 1 \ n \ t" "DONE: \ n \ t" : "= M" (przeznaczenie), "= g" (wynik) : "G" (OldValue), "g" (nowa_wartość), "m" (docelowy) : "% Eax", "% ebx", "ecx", "cc" ); printf ("(% d,% d,% d)", * dest, OldValue, nowa_wartość); return wynik; } / * TODO * Napisać kolejną asm fxn który stawia przede fxn w pętli i próbować, chyba że uda * / int main () { int a = 5, b = 6; int * c = (int *) malloc (sizeof (int)); * C = 6; / * Int c = 6, * / printf ("% d \ n", cas (c, b, b)); printf ("% d \ n", cas (c, b,)); printf ("% d \ n", cas (c,,)); printf ("% d \ n", cas (c, b, b)); * C = 6; / * C = 5, * / printf ("zmienia wartość * c% d \ n", * c); printf ("% d \ n", cas (c, b, b)); printf ("% d \ n", cas (c, b,)); printf ("% d \ n", cas (c,,)); printf ("% d \ n", cas (c, a, b)); printf ("% d \ n", cas (c, b,)); return 0; }
Formatowanie zauważa - Wygląda wyróżnienia składni wp jest dodanie w końcu zignorować.
GCD
# Includeint nwd (int a, int b) { int wynik; / * Oblicz Największy wspólny dzielnik za pomocą algorytmu Euklidesa * / volatile__ __ __asm__ ("movl% 1,%% eax;" "Movl% 2,%% ebx;" "Cd: cmpl 0 dolarów,%% ebx;" "Je zrobić;" "Xorl%% edx,%% edx;" "Idivl%% ebx;" "Movl%% ebx,%% eax;" "Movl%% edx, ebx%%;" "Jmp cd.;" "DONE: movl%% eax,% 0,": "= g" (wynik): "g" (), "g" (b) ); return wynik; } int main () { int pierwszy, drugi; printf ("Podaj dwie liczby całkowite:"); scanf ("% d% d", & najpierw & sekund); printf ("NWD z% d &% d jest% d \ n", pierwszy, drugi, NWD (pierwsza, druga)); return 0; }
Świat krykieta czeka na Nowy Porządek Świata
Po serii trwającej pięć testów i około dwóch miesięcy, Anglia regenerowane popiołu.
Porozmawiajmy o zwycięskiej drużyny pierwszy - ich środek celu jest "średni", jeśli nie chcesz, aby krytyczne. Wkład Greame Swanna z bat będzie liczyć nie mniej niż wkład z piłką. Stuart Broad - najlepiej wszystkie okrągłe to nie rozrusznik do 5 teście. Andrew Strauss był tylko zgodny odbijający i Jimmy Anderson był tylko zgodny melonik.
Chodzi tu nie krytykować dorobek zwycięskiego zespołu, ale umieścić w perspektywie fakt, że pomimo tych wszystkich, Australia utracone. będziesz musiał myśleć przez kilka sekund, jeśli poprosił, aby wymienić swoje najlepsze melonik. Prawo było BW Hilfenhaus. Hauritz przewyższyła oczekiwania Everbody, lecz wciąż nie był wystarczająco dobry, aby być wybrane do dwóch z pięciu testów. Południowa Afryka nigdy nie stał trzepak świat bez świata pokrętła klasy, Australia nie może liczyć na pozostanie jeden bez jednego dobrego jednym tyle co najmniej. Mag opuścił scenę i nie wygląda jak sztuka już, zapomnij o magii. Ponting stoi wysoki wśród pomniejszych śmiertelników i Michael Clarke wstaje bardzo często, ale to sprawia, że zespół z kilkoma bardzo dobrymi graczami, a nie zespołu bardzo dobra.
Popioły 2009 zostanie zapamiętany Ashes ostatnich Andrew Flintoff firmy, przyjazd Stuarta Broada jak wszystkie okrągłe (jeśli dodaje jeszcze trochę folkloru Ashes do jego obiecującym początku), a jeden z najbardziej wymownym wieku debiut wszech czasów przez Trotta ale będzie również zapamiętany jako punktu, w którym IFS i buts o supremację w Australii zostały ostatecznie wprowadzone do reszty, to się skończyło. Nie zrozumcie mnie źle, wciąż mogą odkryć Mike Hussey lub Stuart Clark ale czujesz wkład wszystkich mistrzów czasu kiedy go brakuje. Czasami przychodzą do przypominać o sobie w IPL, ale nadal nie można zastąpić. Miejmy czuć błogosławiony na widząc Warne, McGrath i Gilchrist grać razem i wspierany przez Waughs, Ponting, Hyden, Martin i Langer.
Idąc dalej, Południowa Afryka na zawsze pozostanie bardzo dobry zespół, ale trzeba wygrać półfinały i być bardziej spójne na całym świecie, Pakistan pozostanie enigmatycznie genialny, Indian Young Guns najprawdopodobniej nie trudne do wypełnienia buty nadzwyczajnych poprzedników. Sri Lanka powinna nadal pokazać przebłyski sztuki rzemiosła. Ale, być może będziemy musieli czekać na jakiś czas przed posiadający wszystkie obecnie dominujący zespół lub przed kapitanem narzeka na brak konkurencji, jak Steve Waugh nie raz.
W podobnej notatki - niech powitać wracającego z KRUS, ma wiele piekło potencjał, miejmy nadzieję, że trochę tego i również mile widziane Kwiat Andy w nowym Awatar użytkownika, prawa nie można utrzymać dobrych ludzi w dół na długo.
ruby jeden wkładki do tworzenia skrótu
Wczoraj podczas przechodzenia przez jednego z moich starych programów, znalazłem ten napisany przeze mnie kiedyś z powrotem:
#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
Aby zabić niektóre napięciu pozwól mi ujawnić, że raw_text wygląda
, Prawo to zostało wycięte z paypal potwierdzenia płatności.
Powyżej linii jeśli złamany w części brzmi lepiej:
unescaped_array = CGI.unescape (raw_text). split ('&') unescaped_array = unescaped_array.collect {| x | b = x.split ("="); b.push (zero), jeśli b.size == 1, b} flattened_array = unescaped_array.flatten hash = Hash [* flattened_array]
Zróbmy poszczególne kroki w IRB:
irb (main):. 009:0> unescaped_array = CGI.unescape (raw_text) split ('&') => ["SUKCES", "mc_gross = 10,00", "protection_eligibility = niekwalifikowany", "payer_id = U7PPJJ4TSJ47E", "podatek = 0,00", "payment_date = 09:45:30 10 lipca 2009 PDT", "payment_status = oczekiwaniu "] irb (main): 013:0> unescaped_array = unescaped_array.map {| x | b = x.split ("="); b.push (zero), jeśli b.size == 1, b} => [["SUKCES", nil], ["mc_gross", "10,00"] ["protection_eligibility", "niekwalifikowany"] ["payer_id", "U7PPJJ4TSJ47E"], ["podatek", "0.00"] , ["payment_date", "09:45:30 10 lipca 2009 PDT"] ["payment_status", "W oczekiwaniu"]] irb (main): 014:0> flattened_array = unescaped_array.flatten => ["SUKCES" zero ", mc_gross", "10,00", "protection_eligibility", "niekwalifikowany", "payer_id", "U7PPJJ4TSJ47E", "podatek", "0,00", "payment_date", "09:45: 30 10 lipca 2009 PDT "," payment_status "," W oczekiwaniu "] irb (main): 015:0> hash = Hash [* flattened_array] => {"Podatek" => "0,00", "payment_status" => "Oczekiwanie", "payer_id" => "U7PPJJ4TSJ47E", "mc_gross" => "10,00", "Sukces" => nil "payment_date" = > "09:45:30 10 lipca 2009 PDT", "protection_eligibility" => "niekwalifikowany"}
BTW, * nazywa się ikona operator w ruby
Innym sposobem tworzenia skrótu od 'tablicy par' jest używać wstrzyknąć:
hash = [[1,2], [3,4]] wstrzyknąć ({}). {| wynik, element | Wyniki [element.first] = wynik [element.last]; wynik} Istnieje jeszcze jeden sposób
Napisać pętlę, że zostawiam jako ćwiczenie dla czytelników!
Tutaj jest nieco niezwiązane przypadek użycia tworzenia skrótu z tablic:
irb (main): 005:0> [1,2,3,4,7,9] group_by {| x | x <5.? : Mniejsze :: większy} => {: Mniej => [1, 2, 3, 4]: większy => [7, 9]}
Możesz zrobić więcej rzeczy, w zasadzie wynikiem bloku jest używany jako klucz do tego elementu do mieszania wynikowego.
gmail, mutt i msmtp fix
Jeśli korzystasz z mutt i SMTP dostęp do Gmaila. Oto (zła) wiadomość. Fajne chłopaki w Google ponownie zmienił certyfikat. Och, nie pytasz - jak to znamy? Proste mutt zaczęła narzekać na złe świadectwo, gdy próbuje użyć msmpt, Infamous strony 'msmtp: weryfikacja certyfikatu TLS nie powiodło się:. Certyfikat nie ma znanego wystawcy " powitał mnie na ekranie.
Aby przejść potwierdzić -
Wystarczy uruchomić po
$ msmtp --serverinfo --host=smtp.gmail.com --tls=on --port=587 --tls-certcheck=off
W miejsce starego serwera Thwate teraz dostaniesz po w segmencie emitenta
Issuer:
Common Name: Google Internet Authority
Organization: Google Inc
Country: US
Na szczęście jest prosta, oto co trzeba zrobić na Debianie
# apt-get install ca-certificates
# dpkg -s ca-certificates|grep Version
Version: 20090814
Po prostu zmień następującą linię w tobie ~~~V /. Msmtprc
tls_trust_file /certs/Thawte SSLWeb Server Roots/thawte Premium Server CA/Thawte Premium Server CA.pem
tls_trust_file /certs/Thawte SSLWeb Server Roots/thawte Premium Server CA/Thawte Premium Server CA.pem
do
tls_trust_file /usr/share/ca-certificates/mozilla/Equifax_Secure_CA.crt
Git i niesamowite Survey
Oto dwa linki do ankiety przez git (system kontroli wersji) i niesamowite (window manager) społeczności. Jeśli korzystasz z jednego z nich, proszę wyjąć trochę czasu na wypełnienie kwestionariusza. Potraktujcie to jak najprostszy sposób, aby przyczynić się z powrotem do programu, którego używasz.
Oto linki:
Git - http://www.survs.com/survey?id=2PIMZGU0&channel=Q0EKJ3NF54
Awesome - http://www.survs.com/survey?id=8BVEV3FO&channel=BH07CQ040D
Uwaga - (Jak znaleźć na tych stronach, ale na dole
) -
"Jeśli masz włączone cookies, zawsze można złożyć częściowo wypełnione ankiety i powrócić do swoich odpowiedzi w późniejszym terminie, wypełniając je później."
Scalanie hashe w YAML plików conf
YAML jest bardzo przydatny do pisania plików konfiguracyjnych. Podstawową zaletą jest to, że czyta się ją jak plik tekstowy. To działa bardzo dobrze, jeśli plik konfiguracyjny jest płaska (bez hierarchii) i nie ma powtórzeń.
Jeśli plik konfiguracji ma powtórzeń to ma sens wyodrębnienie tych elementów i ponowne ich wykorzystanie. Chodzi mi o to - powiedzmy, że twój plik konfiguracyjny wygląda tak:
rozwój: input_location: common_input output_location: dev_location mail: smtp_server: adres_IP_serwera login: your_login hasło: top_secret produkcja: input_location: common_input output_location: dev_location mail: smtp_server: adres_IP_serwera login: your_login hasło: top_secret
Zakładając powyższy kod w / tmp / test.yml Oto jak można przeczytać w Python i Ruby
$cat readyml.py
#! / Usr / bin / env python z pprint pprint importu jak PP # W Debianie trzeba zainstalować python-YAML od obciążenia YAML importu, load_all, zrzuć hash = obciążenie (open ("/ tmp / test.yml ')) pp (hash ['rozwój'])
$ cat readyml.rb
#! / Usr / bin / env ruby wymagają "PP" hash = YAML :: load (File.open ("/ tmp / test.yml"). czytać) hash pp ['rozwój']
tu jest ciekawa liner wersji ruby
$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]' lub możesz spróbować sam w IRB lub konsoli Pythona.
Zauważ, że w powyższym fragmencie kodu, wszystko jest inne niż miejsce wyjścia jest taki sam w rozwoju, a część produkcji. To gdzie yml identyfikator węzła przychodzi na ratunek. Pomysł jest prosty posiada zbiór wartości domyślnych i zastąpić je w innym miejscu.
Możesz rozebrać się następująco:
Domyślnie: i domyślnie input_location: common_input output_location: dev_location mail: sender_name: nadawca smtp_server: adres_IP_serwera login: your_login hasło: top_secret rozwój: << Pytanie: * defaults produkcja: << Pytanie: * defaults output_location: prod_location
$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]["mail"]["login"]'
"your_login"
$
Świetnie, to działa (tm)!.
Prawdopodobnie mamy notowane na przejrzystości na odrobinę magii. Oto małe wyjaśnienie: &, * i <<: & który jest tag kotwica może być rozumiana jako identyfikator węzła, * jest węzeł odniesienia i <<: oznacza hash korespondencji seryjnej.
Więcej szczegółów można znaleźć zarówno YAML specyfikacje lub Wikipedii
Jak na razie dobrze, ale jest pewien haczyk tutaj te hash łączy nie są rekurencyjne. Co to znaczy jest to, powiedzmy, że chcesz mieć inną nazwę nadawcy poczty w dwóch środowiskach, może ulec pokusie, aby wykonać następujące czynności:
Domyślnie: i domyślnie input_location: common_input output_location: dev_location mail: sender_name: nadawca smtp_server: adres_IP_serwera login: your_login hasło: top_secret rozwój: << Pytanie: * defaults mail: sender_name: sender_dev produkcja: << Pytanie: * defaults output_location: prod_location mail: sender_name: sender_prod
Pozwala sprawdzić
$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]["mail"]["login"]'
nil
$
Niestety, coś poszło nie tak, problem jak wspomniano powyżej jest to, że hash merge nie jest rekurencyjne i podczas łączenia go zastąpić pocztę niedotrzymania przez elektroniczną produkcji, która ma tylko jeden klucz. Rozwiązanie / praca wokół jest rozwinąć jeszcze jeden poziom:
common_settings: & common_settings input_location: common_input output_location: dev_location mail_defaults: zewnętrzne i mail_defaults sender_name: nadawca smtp_server: adres_IP_serwera login: your_login hasło: top_secret Domyślnie: i domyślnie << Pytanie: * common_settings mail: << Pytanie: * mail_defaults rozwój: << Pytanie: * defaults produkcja: << Pytanie: * defaults mail: << Pytanie: * mail_defaults sender_name: sender_prod
Sprawdźmy jeszcze raz
$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]["mail"]["login"]'
"your_login"
$
Czy mówisz, że masz jeden więcej poziom zagnieżdżenia, dobrze można z pewnością rozwinąć jeszcze jeden poziom, ale to staje się bałagan. Tak więc, jeśli nie próbujesz napisać rozwiązanie Wieże Hanoi w conf pliku, to lepiej restucture conf plik niż kopanie w YAML lub coś innego. Ale to jest rozmowa tak.
Wielkie programiści znaleźć proste rozwiązania złożonych problemów
Po długim czasie udało mi się znaleźć źródła dla Poniższy cytat-
Junior programiści tworzyć proste rozwiązania prostych problemów. Starsi programiści tworzenie kompleksowych rozwiązań dla skomplikowanych problemów. Wielkie programiści znaleźć proste rozwiązania złożonych problemów.
To z eseju o nazwie Piękny Software Charles Connell.
Innym ulubionym jedna z kopalni jest Zen Pythona -
Piękny jest lepszy niż brzydki.
Explicit jest lepsze niż domyślny.
Prosty jest lepszy niż kompleksu.
Kompleks jest lepszy niż skomplikowany.
Płaski jest lepszy niż zagnieżdżony.
Rzadki jest lepszy niż gęsty.
Liczy się czytelność.
Szczególne przypadki nie są wyjątkowe na tyle łamać zasady.
Chociaż praktyczność bije czystość.
Błędy nigdy nie powinny przechodzić po cichu.
Chyba że wyraźnie wyciszony.
W obliczu dwuznaczności, odmówić pokusie do odgadnięcia.
Nie powinno być jedno-, a najlepiej tylko jeden oczywisty sposób to zrobić.
Chociaż w ten sposób mogą nie być oczywiste na pierwszy, chyba że jesteś holenderski.
Teraz jest lepiej niż wcale.
Chociaż nigdy jest często lepsze niż * prawo * teraz.
Jeśli implementacja jest trudna do wyjaśnienia, to zły pomysł.
Jeśli implementacja jest łatwa do wyjaśnienia, może to być dobry pomysł.
Przestrzenie nazw są jednym trąbić świetny pomysł - zróbmy więcej osób!
-------------------------
i to nie jest klasyczny Tao Programowania
-
kredytów, jak na połączonej stronie-
Przetłumaczone przez Geoffrey James
Przepisane przez księcia Hillard
Przekazywane przez Anupam Trivedi i Sajitha Tampi i Meghshyam Jagannath
Re-html-nizowany i edytowane przez Kragen Sittler
-
Księga 1 - The Silent Pustka
Tako rzecze programator master:
"Kiedy nauczyłem się wyrwać kod błędu z ramki pułapki, to
będzie czas, aby odejść. "1,1
Coś tajemniczego powstaje, urodzony w cichej pustce. Oczekiwanie sam i
nieruchomo, to od razu jeszcze i jeszcze w ciągłym ruchu. Jest źródłem
wszystkich programów. Nie znam jego imienia, więc będę nazywać Tao
Programowania.Jeśli Tao jest wielki, a następnie system operacyjny jest wielki. Jeśli operacyjny
System jest wielki, kompilator jest wielki. Jeżeli kompilator jest wielki,
aplikacja jest bardzo duża. Użytkownik jest zadowolony i istnieje
harmonia w świecie.Tao Programowania płynie daleko i wraca na wiatr rano.
1,2
Tao urodziła język maszynowy. Język maszynowy urodziła
assembler.Assembler urodziła kompilator. Teraz jest ich dziesięć tysięcy
języków.Każdy język ma swój cel, jednak skromne. Każdy język wyraża
Yin i Yang oprogramowania. Każdy język ma swoje miejsce w Tao.Ale nie programować w COBOL, jeśli można tego uniknąć.
1,3
Na początku było Tao. Tao urodziła czasie i przestrzeni.
Dlatego Przestrzeń i czas są Yin i Yang programowania.Programiści, że nie rozumieją Tao zawsze kończy się czas
i przestrzeń dla swoich programów. Programiści że zrozumieć Tao zawsze
masz wystarczająco dużo czasu i przestrzeni, aby osiągnąć swoje cele.Jak mogłoby być inaczej?
1,4
Mądry programista słyszy o Tao i po nim następuje. Średnia
programista dowiaduje się o Tao i szuka dla niego. Głupi programista
dowiaduje się o Tao i śmieje się z niego.Gdyby nie do śmiechu, nie byłoby Tao.
Najwyższe dźwięki są najtrudniejsze usłyszeć.
Idąc dalej jest droga do odwrotu.
Wielki talent objawia się późno w życiu.
Nawet idealny program wciąż ma błędy.-------------------------
Książka 2 - Starożytni mistrzowie
Tako rzecze programator master:
"Po trzech dniach bez programowania życie staje się bezsensowne."
2,1
Programiści starych były tajemnicze i głębokie. Nie możemy pojąć
ich myśli, więc wszystko co robimy jest opisać ich wygląd.Świadomi, jak lis przekraczającego wody. Alert, jak ogólnie na
bitwy. Rodzaj, jak hostessa powitanie swoich gości. Proste, jak
uncarved bloki z drewna Nieprzezroczyste, jak czarne basenów w ciemnych jaskiniach.Kto może powiedzieć tajemnice ich serc i umysłów?
Odpowiedź istnieje tylko w Tao.
2,2
Wielki Mistrz Turing marzył kiedyś, że był maszyną. Kiedy się obudził he
zawołał:"Nie wiem, czy jestem Turingiem śni, że jestem maszyną, lub
maszyny śni, że jestem Turingiem! "2,3
Programista z bardzo dużej firmie komputerowej poszedł do oprogramowania
Konferencja, a następnie powrócił do zgłaszania do swojego szefa, mówiąc: "Jakie
z programiści pracują dla innych firm? Zachowywali się źle i były
interesuje się pozorom. Ich włosy były długie i zaniedbane, a ich
ubrania były pomarszczone i stare. Oni rozbił nasz pakiet gościnności i
wykonane niegrzeczne dźwięki podczas mojej prezentacji. "Menedżer powiedział: "Nigdy nie powinienem cię przysłał do konferencji. Ci,
Programiści żyć poza światem fizycznym. Uważają, że życie absurdalne,
przypadkowy zbieg okoliczności. Przychodzą i odchodzą, nie znając ograniczeń.
Bez opieki, żyją tylko dla swoich programów. Dlaczego mieliby przejmować
z konwencjami społecznymi?"Oni żyją w Tao."
2,4
Nowicjusz zapytał Mistrza: "Oto jest programista, który nigdy nie projektuje,
dokumenty lub testy swoich programów. Jednak wszyscy, którzy go znają uważają go za jednego
najlepszych programistów na świecie. Dlaczego tak jest? "Mistrz odpowiedział: "To programista opanował Tao. Poszedł
poza potrzeby projektu; on nie gniewa, gdy system
awarii, ale akceptuje wszechświat bez obaw. Poszedł poza
potrzebne do dokumentacji; już nie obchodzi, czy ktoś widzi swój kod.
Poszedł poza potrzeby badania, każdy z jego programów są idealne
w sobie, spokojny i elegancki, ich celem oczywiste. Zaprawdę,
zawarł tajemnicę Tao ".-------------------------
3 książki - Design
Tako rzecze programator master:
"Gdy program jest w fazie testów, jest już za późno, aby projekt
zmiany ".3,1
Nie raz był człowiekiem, który udał się na targach komputerowych. Każdy dzień, jak on
wszedł mężczyzna powiedział strażnika przy drzwiach:"Jestem wielkim złodziejem, który słynie z moich wyczynów kradzieży. Być
uprzedzony, na tej wystawie towarowego nie ma ucieczki unplundered ".Mowa ta zakłócony strażnika bardzo, bo było miliony
dolarów z wnętrza sprzętu komputerowego, tak patrzył na mężczyznę ostrożnie. Ale
Człowiek po prostu wędrował z budki do budki, nucąc cicho do siebie.Kiedy mężczyzna opuścił, strażnik wziął Go na bok i przeszukali jego ubrania, ale
nic nie można znaleźć.W kolejnym dniu trwania targów, człowiek powrócił i zbeształ strażnika
mówiąc: "Uciekłem z ogromnym łupem wczoraj, ale dziś będzie jeszcze
lepiej. "Więc strażnik obserwował go jeszcze silniej, ale bezskutecznie.W ostatnim dniu trwania targów, strażnik może powstrzymać jego ciekawość
dłużej. "Złodziej Sir", powiedział: "Jestem bardzo zakłopotany, nie mogę żyć
pokój. Proszę mnie oświecić. Co to jest, że kradną? "Mężczyzna uśmiechnął się. "Jestem kradzież pomysłów," powiedział.
3,2
Był sobie kiedyś mistrz programista, który pisał nieustrukturyzowane programy.
początkującym programistą, starając się go naśladować, także zaczął pisać
nieustrukturyzowane programy. Gdy początkujący poprosił mistrza do oceny jego
postęp, mistrz skrytykował go za pisanie niestrukturalnych programów,
mówiąc: "Co jest odpowiednie dla mistrza nie jest odpowiednie dla
nowicjuszem. Musisz zrozumieć Tao przed przekroczeniem strukturę. "3,3
Był kiedyś programista, który został dołączony do sądu warlord
Wu. Watażka zapytał programator: "Które jest łatwiejsze do zaprojektowania, dokonania
pakiet księgowy czy system operacyjny? ""System operacyjny", odpowiedział programista.
Watażka wypowiedział się okrzyk niedowierzania. "Na pewno rachunkowości
Pakiet jest trywialne obok złożoności systemu operacyjnego ", on
powiedział."Nie tak", powiedział programista ", podczas projektowania pakietu rachunkowości,
Programator działa jako pośrednik między ludźmi o różnych
pomysłów: jak musi działać, jak jego raporty muszą pojawić się iw jaki sposób należy
zgodne z przepisami podatkowymi. Natomiast system operacyjny nie jest ograniczona
zewnętrznych pozorów. Przy projektowaniu systemu operacyjnego, programista
szuka najprostszej harmonii pomiędzy maszyną i pomysłów. Dlatego też
System operacyjny jest łatwiej zaprojektować ".Watażka z Wu skinął głową i uśmiechnął się. "To wszystko jest dobre i dobrze, ale
który jest łatwiejszy do debugowania? "Programista nie odpowiedział.
3,4
Kierownik poszedł do głównego programisty i pokazał mu wymagania
dokument dla nowych aplikacji. Kierownik zapytał mistrza: "Jak długo
potrwa do projektowania tego systemu, jeśli przypisać pięć programistów do niego? ""To zajmie jeden lat," powiedział pan natychmiast.
"Ale my potrzebujemy tego systemu natychmiast albo jeszcze szybciej! Jak długo to będzie
podjąć, jeśli przypisać dziesięć programistów do niego? "Programista mistrz zmarszczył brwi. "W tym przypadku, to zajmie dwa lata."
"A co, jeśli przypisać sto programistów do niego?"
Programista mistrz wzruszył ramionami. "Potem projekt nigdy nie będzie
zakończona ", powiedział.-------------------------
Książka 4 - Kodowanie
Tako rzecze programator master:
"Dobrze napisany program jest jego własnym niebie; źle napisany program jest
własne piekło ".4,1
Program powinien być lekki i zwinny, jego podprogramy podłączone jak
łańcuch pereł. Duchem i intencją tego programu powinny być zachowane
w całym tekście. Nie powinno być ani za mało ani za dużo, ani
niepotrzebnych pętli, ani niepotrzebnych zmiennych, ani braku struktury, ani
Zdecydowana sztywność.Program powinien postępować opcji 'Prawo najmniejszych zdumieniem strony'. Co to jest prawo?
Jest to po prostu, że program powinien zawsze odpowiedzieć na użytkownika w sposób
że zadziwia go najmniej.Program, nieważne jak skomplikowany, powinien działać jako jeden zespół. Program
należy kierować się logiką, a nie w zewnętrznych pozorów.Jeśli program nie w tych wymagań, będzie w stanie
nieporządek i zamieszanie. Jedynym sposobem, aby to naprawić jest ponowne
program.4,2
Nowicjusz zapytał mistrza: "Mam program, który kiedyś działa i
czasami przerywa. I mają przestrzegać zasad programowania, ale jestem
całkowicie zaskoczony. Co jest tego powodem? "Mistrz odpowiedział: "Jesteście zdezorientowani, ponieważ nie rozumiesz Tao.
Tylko głupiec oczekuje racjonalnego zachowania od swoich bliźnich. Dlaczego ty
oczekiwać od urządzenia, które ludzie zbudowali? Komputery symulują
determinizm, tylko Tao jest doskonały."Zasady programowania są przemijające, tylko Tao jest wieczne. Dlatego
trzeba kontemplować Tao zanim otrzymasz oświecenie. ""Ale jak będę wiedział, kiedy otrzymałem oświecenie?" Zapytał
nowicjuszem."Twój program będzie działał poprawnie," odparł mistrz.
4,3
Mistrz wyjaśniał naturę Tao jednemu ze swoich nowicjuszy. "
Tao jest zawarte we wszystkich oprogramowania - niezależnie od tego, w jaki sposób nieistotny ", powiedział
mistrzem."Czy Tao w kalkulatorze ręcznym?" Zapytał nowicjuszem.
"To", brzmiała odpowiedź.
"Czy Tao w grze wideo?" Kontynuował nowicjusz.
"Jest nawet w grze wideo", powiedział mistrz.
"I jest Tao w DOS dla komputerów osobistych?"
Mistrz zakaszlał i zmienił swoje stanowisko nieco. "Lekcja się skończyła
na dziś ", powiedział.4,4
Programista księcia Wang został kodowanie oprogramowania. Jego palce tańczyły po
klawiatury. Program skompilowany bez komunikatu o błędzie, a program
pobiegł jak delikatny wiatr."Excellent!" Książę wykrzyknął: "Twoja technika jest bez zarzutu!"
"Technika"? Powiedział programista zwrotny z jego terminalu, "Co ja
naśladowania jest Tao - ponad wszelkie techniki! Kiedy po raz pierwszy zaczął programu I
nie zobaczy przed sobą cały problem w jednej masie. Po trzech latach nie mam
już zobaczyłem tę masę. Zamiast tego używane podprogramy. Ale teraz nic nie widzę.
Cała moja istota istnieje w bezkształtnej próżni. Moje zmysły są bezczynne. Mój duch,
swobodnie działać bez planu, następuje jego własny instynkt. Krótko mówiąc, moim programie
pisze się. To prawda, że czasami są trudne problemy. Widzę ich
przybycie, zwolnić, mogę oglądać w ciszy. Potem zmienić jednej linii kodu
i trudności znikają jak kłęby dymu bezczynności. I następnie skompilować
program. Siedzę cicho i niech radość z pracy wypełnienie mojej istoty. Kończę moje
oczy na chwilę i następnie wyloguj się ".Książę Wang powiedział: "Czy to wszystko z moich programistów były tak mądry!"
-------------------------
Księga 5 - Utrzymanie
Tako rzecze programator master:
"Choć program jest ale trzy linie długo, kiedyś będzie musiał być
utrzymane. "5,1
Dobrze używane drzwi nie potrzebuje oleju na zawiasach.
Swift płynących strumień nie rośnie stagnacja.
Ani dźwięk, ani myśli mogą podróżować przez próżni.
Oprogramowanie gnije, jeśli nie jest używane.Są to wielkie tajemnice.
5,2
Kierownik poprosił programistę jak długo zajmie mu do końca
Program, w którym pracował. "Będzie on gotowy jutro"
programista natychmiast odpowiedział."Myślę, że są nierealne," powiedział menedżer "Prawdę mówiąc, jak
długo to potrwa? "Programista pomyślał przez chwilę. "Mam pewne cechy które chcę
dodać. Zajmie to co najmniej dwa tygodnie ", powiedział w końcu."Nawet, że jest zbyt wiele oczekiwać," upierał się dyrektor, "Będę
spełniony, jeżeli po prostu powiedz mi, kiedy program jest kompletny. "Programista zgodził się na to.
Kilka lat później, dyrektor przeszedł na emeryturę. Na drodze do przejścia na emeryturę
mielonka, odkrył, programista w sen przy swoim terminalu. Był
programowanie przez całą noc.5,3
Początkującym programistą był kiedyś przypisane do kodu prostego pakietu finansowego.
Początkujący pracował wściekle przez wiele dni, ale kiedy jego pan recenzja
jego program, odkrył, że zawiera edytor ekranowy, zestaw
uogólnione procedury graficzne, sztuczna inteligencja interfejs, ale
nie ma najmniejszego wzmianki o czymkolwiek finansowego.Kiedy mistrz zapytany o to, nowicjusz oburzył. "Nie bądź
tak niecierpliwy, "powiedział:" Włożę w finansowym rzeczy w końcu ".5,4
Czy dobry rolnik zaniedbują rośliny, Założył?
Czy dobry nauczyciel wychodzą nawet przejaw studenta?
Czy dobry ojciec pozwoli jedno dziecko głodować?
Czy dobry programista odmówić utrzymać swój kod?-------------------------
Księga 6 - Zarządzanie
Tako rzecze programator master:
“Let the programmers be many and the managers few – then all will be
productive.”6.1
When managers hold endless meetings, the programmers write games. When
accountants talk of quarterly profits, the development budget is about to
be cut. When senior scientists talk blue sky, the clouds are about to roll
in.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. It
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. Nie
change in management can harm him. He will not be fired, even if the
project is cancelled. Why is this? He is filled with Tao.————————————————————————–
Book 8 – Hardware and Software
Thus spake the master programmer:
“Without the wind, the grass does not move. Without software, hardware is
useless.”8,1
A novice asked the master: “I perceive that one computer company is much
larger than all others. It towers above its competition like a giant among
dwarfs. Any one of its divisions could comprise an entire business. Why is
this so?”The master replied, “Why do you ask such foolish questions? That company
is large because it is large. If it only made hardware, nobody would buy
it. If it only made software, nobody would use it. If it only maintained
systems, people would treat it like a servant. But because it combines all
of these things, people think it one of the gods! By not seeking to
strive, it conquers without effort.”8,2
A master programmer passed a novice programmer one day. The master noted
the novice's preoccupation with a hand-held computer game. “Excuse me,”
he said, “may I examine it?”The novice bolted to attention and handed the device to the master. “I
see that the device claims to have three levels of play: Easy, Medium, and
Hard,” said the master. “Yet every such device has another level of
play, where the device seeks not to conquer the human, nor to be conquered
by the human.”“Pray, great master,” implored the novice, “how does one find this
mysterious setting?”The master dropped the device to the ground and crushed it underfoot. And
suddenly the novice was enlightened.8,3
There was once a programmer who worked upon microprocessors. “Look at how
well off I am here,” he said to a mainframe programmer who came to visit,
“I have my own operating system and file storage device. I do not have to
share my resources with anyone. The software is self- consistent and
easy-to-use. Why do you not quit your present job and join me here?”The mainframe programmer then began to describe his system to his friend,
saying “The mainframe sits like an ancient sage meditating in the midst
of the data center. Its disk drives lie end-to-end like a great ocean of
machinery. The software is as multifaceted as a diamond, and as convoluted
as a primeval jungle. The programs, each unique, move through the system
like a swift-flowing river. That is why I am happy where I am.”The microcomputer programmer, upon hearing this, fell silent. But the two
programmers remained friends until the end of their days.8.4
Hardware met Software on the road to Changtse. Software said: “You are
Yin and I am Yang. If we travel together we will become famous and earn
vast sums of money.” And so the set forth together, thinking to conquer
the world.Presently they met Firmware, who was dressed in tattered rags and hobbled
along propped on a thorny stick. Firmware said to them: “The Tao lies
beyond Yin and Yang. It is silent and still as a pool of water. It does
not seek fame, therefore nobody knows its presence. It does not seek
fortune, for it is complete within itself. It exists beyond space and
time.”Software and Hardware, ashamed, returned to their homes.
————————————————————————–
Book 9 – Epilogue
Thus spake the master programmer:
“It is time for you to leave.”
————————————————————————–
If you liked these, you may also like to read worse is better
A bit of shell redirection
Here is how we normally do shell redirection
$ ./pgm.sh args >out.txt 2>err.txt
I wanted to modify it a bit and run as follows
$ ./pgm.sh args
with the requirement that output and error should go to some filename computed inside pgm.sh based on args. One illustrative case could be when date is part of args. So you would like stdout to go to say /your/directory/pgm_out_YYYYMMDD.txt 1
The problem with standard way of redirecting N>file.txt ie, associating file descriptor N to file.txt , is that it works only for the newly forked process and not for the current process.
so
$ echo hi 1>out.txt ; echo hii will send hi to out.txt but will print hii to stdout. 2
This is where exec comes to our rescue. If we add exec 1>somefile.txt then output from rest of the script will go to somefile.txt
$./test.sh will redirect hi as well as hii to out.txt
$ cat test.sh
#!/usr/bin/env bash
exec 1>out.txt
echo hi
echo hii
Similarly to redirect stdout as well as stderr we'll do something like this
cat test2.sh
exec 1>out.txt
exec 2>err.txt
echo out text
echo 1>&2 err text
somenoneexitent command
ls -ld /tmp
Now coming back to original point of redirecting to some file from inside the shell, let's say program computed the filename in some variable OUTFILE, we could have just done exec 1>$OUTFILE
That solves the current problem. But you may like to go through following example which achieves 'random access' of file in shell script. Example is from here
echo 1234567890 > File # Write string to "File".
exec 3<> File # Open "File" and assign fd 3 to it.
read -n 4 <&3 # Read only 4 characters.
echo -n . >&3 # Write a decimal point there.
exec 3>&- # Close fd 3.
cat File # ==> 1234.67890
With comments, this code is self explanatory.
-
1 It can also be done by $ ./pgm.sh args >pgm_out`date +%Y%m%d` but idea is to generate this file name based on some logic in program itself.
2 1 in 1>out.txt is redundant but it clarifies here that we are redirecting fd 1
Sony VAIO review
A month back I bought a vaio NS25G and have been planning to write this post since then. This post is primarily notes to self and review of the same. Let's get off the mark quickly -
Post has two parts -
I. Review of hardware
II. Installing debian and things to setup
Since I am not a VAIO marketing guy, I'll start other way round -
Why you may not like to buy this laptop :
- No bluetooth : believe me, in 2009 sony sells laptop without bluetooth. Sure you can use usb stuff but …
- Screen size is 15.4 inches : if you travel a lot then this laptop may not be very handy and also 2.9kg laptop is not exactly the lightest around.
- No HDMI output.
- No separate graphics card and the likes.(and no dedicated video memory
Now , why you may like to buy it :
- This laptop is a damn good desktop. What I mean is this if your requirement is like me – mostly writing programs and trying to use it 25 out of 24 hrs, then with a big screen , extremely comfortable keyboard layout with spacious palm rest and good compute power , it makes a very good combination.
- It L2 cache is 2MB and processor/memory system bus are 800MHz. I don't play games so can't say about that but for anything else but a core 2 duo processor with 2GHz freq is good, this is more than enough.
- From my usage, I see processor mostly clocks at 1.2GHz, and memory usage ~500MB. That just reinforces previous point.
- Battery backup is good, ~2 hrs is what I get.
Just one more thing here – being Sony, it will cost you a bit than other laptops with similar configuration, but that is a call u have to make.
II. Configuring linux (to run out of box ! ) :
It came pre installed with Vista( I think home premium or some fancy name like that). Dungara booted once and created another partition of 150 GB. Debian testing is what I always install and then up(down?)grade to 'unstable' sid.
Things which worked without any problem:
- X - unsurprisingly X server had not problem with starting or resolution. After one of the upgrades X refused to start though, but 'X -configure' generated a conf file which worked pretty well.
- Audio - Audio output and external mic work fine. kernel version 2.6.29-1-686 #1 SMP and alsa version 1.0.17. This is what you get from
$ lspci -v |grep Audio 00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Con1.0.17troller (rev 03) - Video cam – just works
- Hibernate to disk and back – no problem
- Wireless - in short – just works.
$ lspci |grep -i wireless
03:13:55 04:00.0 Network controller: Atheros Communications Inc. AR928X Wireless Network Adapter (PCI-Express) (rev 01) .
I think kernel 2.6..27 onwards it works with the stock kernel source. You dont have to install ndiswrapper or things like t
hat. As a note, please say good buy gnome-network-manager and welcome wicd, it is just a gui layer but behind the scene they have fixed lot of config stuff like wpasupplient and more.
What doesn't work -
- Somehow internal mic refuses to work
External mic works fine though. Latest alsa sources did not compile cleanly on debian, so for the time being I bought external Internal mic, will try to dig into it sometime in future though.
Few more misc hints for deiban:
- Package for devnagri font- ttf-indic-fonts
- Package for flash player – flashplugin-nonfree
- Entry in sources.list for mplayer and likes – deb http://www.debian-multimedia.org sid main
- Entry in sources.list for e17 – deb http://debian.alphagemini.org/ unstable main
- Entry in sources.list for skype – http://download.skype.com/linux/repos/debian/ stable non-free
oneliner for increasing and decreasing the brightness -
[root]prashant@vaio09:12 PM$ cat bin/incbrightness.sh
#!/usr/bin/env bash
echo $[1+`cat /sys/class/backlight/acpi_video0/brightness `] >/sys/class/backlight/acpi_video0/brightness
you'll have to put this in sudo though.
and to decrease change + to – and … you get the idea, right !
A bit more, if you use enlightenment(e17) here are few more hints -
[enlightenment key bindidings]
You can use following key code and mapping
mute :
KEY="Keycode-160" ACTION="exec" PARAMS="/usr/bin/amixer -q set Master toggle"
hibernate :
KEY="Keycode-165" ACTION="exec" PARAMS="sudo /usr/sbin/hibernate-disk"
volume decrease :
KEY="Keycode-174" ACTION="exec" PARAMS="/usr/bin/amixer -q set Master 2-"
volume increase:
KEY="Keycode-176" ACTION="exec" PARAMS="/usr/bin/amixer -q set Master 2+"
increase brightness :
KEY="Keycode-212" ACTION="exec" PARAMS="sudo /root/bin/incbrightness.sh"
decrease brightness
KEY="Keycode-101" ACTION="exec" PARAMS="sudo /root/bin/decbrightness.sh"



































