世論調査は、ping、PubSubの、pubsubhub、pubsubhubbub

によって2009年9月6日プラシャント · コメント
の下でファイルされる: 技術

あなたが懐疑的である場合には、上記の狂気のメソッドは、ポストのタイトルに、あります。 ハイテク界では、それはあなたがpubsubhubbub聞いたことがないことはほとんどありません。 高速の数ヶ月で、それは物事について話しましたトップ3の一つとなっている。 ている他の二つの準同型暗号とGoogle [ 1 ]。 現在のポストに戻ってくる - タイトルに含まれる用語は、あなたが他の人から内容を取得する方法を示しています。 あなたは、彼らが概念的ブログに限定されていない場合でも、ブログに関して起こって物事を想像する場合は、次の詳細については、より明確になります。

ポーリングは、クライアントが何か新しいものが来ている場合は、サーバーを求め続けるシナリオを指します。 どのくらいの頻度でアップデートを求めるためには、常にあまりにも頻繁すぎるかまれなポーリングに問題があるでしょうが、ある読者が指摘するようにここでポーリングを一つの大きな 、ものがそのサーバーであることの状態を維持する必要はありません。

pingは、記事を投稿するとき、あなた(またはあなたのソフトウェアが)また、いくつかの人気の(中央)の更新サービスを更新する場合を指します。 いくつかの背景ここに

次は、それが作られた最も早いピッチの一つ、パブリッシュ/サブスクライブの略でPubSubのですここでエヴァンHenshaw-プラスとKellanエリオット·マックリー(72スライドが通過する価値がある)で。 彼らはに対して与えた説得力のある例では、このた - 特定の日付に、6721はそれらの24時間でFlickrを訪れたと "潜在的に"写真をアップロードしたかもしれない、そのうちの45754ユーザーの最新の写真を取得するためにFlickrの290万回クロールFriendfeedで。 彼らが指摘するように彼らは何を提案したが、 "革命的な新しい20歳の技術"新技術ではなかったことに注意してください。 あなたは、ブログのためにそれを行う場合はXMPP大きな問題の1つ - 60から70パーセントと高いかもしれませんプレゼンスデータのオーバーヘッドは、多くのことを減らすことができます。

pubsubhubは、ハブとpubsubhubbubプロトコル、pubsubhubのアイデアになっているコアでサブスクライブパブリッシュを表しています。 請求項の出版社は(ブロガーと言う)、 "どこかに雲の中に"存在するプロトコルごとに、これはプロトコルごとにプッシュまたはプルすることができますが、次のリンクに進んでください(複数のハブを、お互いに話かもしれない)ハブを更新チェーン、クライアントへのハブ(読者を言う)は、常にモデルをプッシュしています。 このページはpubsubhubbubための良い出発点であり、概要スライドが良いです。 これまで説得力のあるAnil Dashは、それを説明しますここでプッシュWebサービスとして。
他の2つの関連読み取りはwebhooks基本的にHTTPコールがあります。 githubのは、 使用し 、それを、そうで支払いの非同期通知のためにPayPalを行いIPNますので、他の多くの操作を行います。 関連する概念はされていrsscloud再びPubSubのハブである。 従い、この詳細については、リンクをクリックします。

ここで、これらすべてを書くことのポイントは何か不思議に思うかもしれません、2つの1があります。 これらのことは、最低限、少なくとも、2、知っておく価値があります。 このブログは、このWordPressの使用appspotハブを介して使用できるようになりましpubsubhubbubあるプラグインとフィードもFeedBurnerは、リンクを介して有効にpubsubhubbubです。 ここで
-
[ 1 ]。 -完全に準同型暗号化のために読んでグッド入門は、 この Bruce Schneier氏の記事とこの話は、Google波の、多かれ少なかれ、唯一の情報源です。

-UPDATE - この記事は、コールバック用のパブリックサーバーの要件は、XMPPゲートウェイ(pubsubhubbub用)を使用してデスクトップクライアントのために回避する方法について説明します。

アセンブリのビット

によって2009年8月29日プラシャント · コメント
の下でファイルされる: 技術

読んだ後にこのロックフリーバッファについての記事を、CASの使用を見て(比較とスワップ)、私は同じようにアセンブリコードを投稿するように感じました。 ネイティブメソッドを記述し、Java(バック1.5、Javaの並行データ構造が多かれ少なかれ存在しない以外だったとき)からそれを呼び出すことがあった上のケースを使用しています。 さらに騒ぎがなければ、私はあなたにコードを解き放つよ :) 最初は、CAS用で、もう1つはユークリッドのアルゴリズム(このいずれかが同様に多くの場所とチュートリアルに記載されています)を使用して、コンピューティングGCDのためのものです。

コンパイルと実行命令を gcc file_name.c ; ./a.out

比較とスワップ

  の#include 
 の#include 
 / /交換 -  newValueは、comperandは古い/期待値です。
 / *
  *関数は、実際には、次のことを行います -  * destに値が他のnewValueはそのままにしておくことによって、それを交換しOldValueプロパティに等しい場合は、次のいないすべてのこれらのアトミック
  *
  *戻り値の2つのオプションがあります。
  * destの1.is初期値とoldvalにとそれを比較するfxnの呼び出しの負担を残す
  * 2。 ここの上でそれを行うと、0または1を返し、これはより効率的であるべき
  ** /

 / *後でマクロにそれを変更する* /
 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型の結果= 1 ;/ * CASが成功したことを図1に、それは/ *失敗したが0​​を示す
	 / *ところでフラグが追い払ってくれるためにCCを設定する必要があります!  * /
	 __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"は/ *同じ行にあるをロックする必要があります* /
			 "JZは\ n \ tをDONE"
			 "MOVL $ 0、%1は\ n \ t"は
			 "DONEます:\ n \ t"は
			 : "= M"(destが)、 "= G"(結果)
			 : "G"(OldValueプロパティ)、 "G"(newValueは)、 "M"(DEST)
			 : "%eaxに"、 "%ebxに"、 "ECX"、 "CC"
			 。)
	のprintf( "(%dは、%D、%d)が、" * destは、OldValueプロパティ、newValueは);
	結果を返します。
 }

 / * TODO
  * whileループでfxn上に置く別のASM fxnを書き、それが* /を成功しない限り続けようと

 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、));
	のprintf( "%dです\ n"、CAS(C、B、B));
	 * C = 6;
	 / * C = 5; * /
	のprintf( "*の値を変更するC%dまでの\ n"、* C);
	のprintf( "%dです\ n"、CAS(C、B、B));
	のprintf( "%dです\ n"、CAS(C、B、A));
	のprintf( "%dにする\ n"、CAS(C、A、));
	のprintf( "%dです\ n"、CAS(C、A、B));
	のprintf( "%dです\ n"、CAS(C、B、A));
	 0を返します。
 }

書式設定の注意事項 - WPのシンタックスハイライ​​トのように思えるが追加されてい 最後に、それを無視してください。

GCD

の#include 
 int型GCD(int型1は、int B){
     int型の結果;
     / *ユークリッドのアルゴリズムを使用して最大公約数を計算* /
     __asm​​__ _のvolatile__( "MOVL%1、%%eaxに;"
                           "MOVL%2、%%EBX;"
                           "CONTD:CMPL $ 0、%%EBX;"
                           "JEは、DONE;"
                           "xorl%%edxを、%%EDX;"
                           "idivl%%EBX;"
                           "MOVL%%ebxには、%%eaxに;"
                           "MOVL%%edxを、%%のEBX;"
                           "JMPはCONTD;"
                           "DONE:MOVL%%eaxに、%0;": "= G"(結果): "G"()、 "G"(B)
     。)

    結果を返します。
 }

 int型のmain(){
    第二に、最初のint;
    のprintf( "二つの整数を入力してください:");
     scanf関数( "%dは%d個"、&、最初&2番目)。

    のprintf( "%d個&%dの最大公約数は%dです\ n"、第一、第二、GCD(第1、第2、第));

     0を返します。
 }

クリケット·ワールドニュー·ワールド·オーダーをお待ちしております

によって2009年8月25日プラシャント · コメント
報告Filed under: その他

5つのテストと約2ヶ月間、イギリス埋め立て灰をスパニングシリーズの後に。

あなたが重要にしたくない場合、その中間の順序は、 "平均"である - のは最初の優勝チームについてお話しましょう​​。 バットでGreameスワンの貢献は、ボールを持って貢献よりも少なくカウントされません。 スチュアートブロード - 最高のすべてのオールラウンダー第五のテストのために非スターターであった。 アンドリューストラウスは、一貫性のある打者だったジミー·アンダーソンは、一貫性のあるボウラーだった。

ここでのポイントは、優勝チームの成果を激しく非難することではなく、遠近法で、これらすべてにもかかわらず、オーストラリアは失われたという事実を置くことはありません。 彼らの最高のボウラーに名前を付けるために依頼された場合には、数秒間考えてする必要があります。 右側には、BW Hilfenhausた。 Hauritzはeverbodyの期待を上回ったが、それでも5つのテストの2を選択することには十分ではなかった。 南アフリカは、世界クラスのスピナーのない世界のビーターとなったことはありません、オーストラリアは一つの良い十分な少なくとも一つせずに1残ることを期待することはできません。 マジシャンはステージを去り、それは魔法を忘れて、もはや芸術のようには見えません。 ポンティングは、より低い人間の間で長身、マイケル·クラークは、非常に頻繁に立ち上がるが、それはそれらのいくつかの非常に良いプレーヤーではなく、非常に良いチームとチームになります。
灰2009トロットでスチュアートブロードの(彼は有望なスタートにいくつかのより多くの灰の民話を追加した場合)は、すべてのオールラウンダーとして到着し、すべての時間の中で最も占いデビュー世紀の一つ、アンドリューフリントの最後の灰のために記憶されますが、それはまた、となりますIFS社とオーストラリアの覇権についてbutsは最終的に残りの部分に置かれた点として記憶、それは終わった。 彼らは行方不明時私は誤解しないでください、彼らはまだ発掘マイクハッセーまたはスチュアートクラークしかし、あなたはすべての時間の偉人の貢献を感じることができます。 時には彼らはIPLで自分自身を思い出させるようになるが、それでも彼らは置き換えることはできません。 ウォーン、マクグラス、ギルクリストは、一緒に遊んで見たことのために祝福しWaughs、ポン、Hyden、マーティンとランガーによってサポートされて感じてみましょう。

今後は、南アフリカ共和国は、常に非常に良いチームが残りますが、彼らは準決勝に勝ち、世界中でより一貫性のある必要があり、パキスタンは、インドの若い銃は、おそらく臨時の前任者の靴を埋めることは難しいでしょう、謎めいて鮮やかなままになります。 スリランカでは、工芸の芸術の見え隠れを表示するために継続すべきである。 しかし、我々はすべてのアウト支配的なチームを持つ前またはスティーブ·ウォーはかつてのように船長が、競争の欠如を訴える前にいつかのために待機する必要があります。

これに関連して - のは、アシフの帰って来ることを歓迎させ、彼は潜在的な地獄をたくさん持っている、のは、そのいくつかを見て、また新しいawatarでアンディの花を歓迎したいと考えてみましょう、右側には、長い間ダウンして善良な人たちを維持することはできません。

ルビーハッシュを作成する1つのライナー

によって2009年8月20日プラシャント · コメント
の下でファイルされる: 技術

私の古いプログラムのひとつを通過しながら、昨日、私はこれがいつか戻って私によって書かれました:

#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

サスペンスのいくつかを殺すために私はRAW_TEXTように見えることを開示してみましょう

 

、右のそれはPayPalの支払い承認からカットされています。

線の上の部分で壊れた場合には、優れた読み取ります。

  unescaped_array = CGI.unescape(RAW_TEXT)。分割( '&')
   unescaped_array = unescaped_array.collect {| x |はB = x.split( "="); b.push(nil)はb.size == 1であれば、B}
   flattened_array = unescaped_array.flatten
  ハッシュ=ハッシュ[* flattened_array] 

irbで個々の手順を実行してみましょう:

  IRB(メイン):009:0> unescaped_array = CGI.unescape(RAW_TEXT)スプリット( '&')    

 => ["SUCCESS"、 "mc_gross = 10.00"、 "protection_eligibility =不適格"、 "payer_id = U7PPJJ4TSJ47E"、 "税= 0.00"、 "payment_date = 9時45分30秒2009年7月10日PDT"、 "PAYMENT_STATUSは=保留中"]                                                                         

 IRB(メイン):013:0> unescaped_array = unescaped_array.map {| x |はB = x.split( "="); b.push(nil)はb.size == 1であれば、B}  

 => ["SUCCESS"は、nil]、["mc_gross"、 "10.00"]、["protection_eligibility"、 "不適格"]、["payer_id"、 "U7PPJJ4TSJ47E"]、["税"、 "0.00"] 、["payment_date"、 "午前9時45分30秒2009年7月10日PDT"]、["保留"、 "PAYMENT_STATUS"]]                               

 IRB(メイン):014:0> flattened_array = unescaped_array.flatten     

 => ["SUCCESS"は、nil、 "mc_gross"、 "10.00"、 "protection_eligibility"、 "不適格"、 "payer_id"、 "U7PPJJ4TSJ47E"、 "税"、 "0.00"、 "payment_date"、 "9時45分: 30 2009年7月10日PDT "、" PAYMENT_STATUS "、"保留中 "]
 IRB(メイン):015:0>
ハッシュ=ハッシュ[* flattened_array]
 => {"税" => "0.00"、 "PAYMENT_STATUS" => "保留中"、 "payer_id" => "U7PPJJ4TSJ47E"、 "mc_gross" => "10.00"、 "SUCCESS" => nilで、 "payment_date" = > "9時45分30秒2009年7月10日PDT"、 "protection_eligibility" => "不適格"} 

ところで、*はRubyでスプラット演算子と呼ばれ

'のペアの配列 "からハッシュを作成する別の方法は、注入を使用することです。

 ハッシュ= [[1,2]、[3,4]]({})注入します。{|その結果、要素|結果[element.first] =結果[element.last];}結果 

もう一つの方法があります :) 私は読者への演習として残しておきますので、ループを書く!

ここでは配列からハッシュを作成するためのビットとは無関係のユースケースは、次のとおりです。

  IRB(メイン):005:0> [1,2,3,4,7,9] GROUP_BY {| X | X <5。?  :低い::より}

 => {:低い=> [1、2、3、4]、:より大きい=> [7,9]} 

基本的には、ブロックの結果、得られたハッシュでその要素のキーとして使用され、より多くのことを行うことができます。

Gmailの、muttやその他のmsmtp修正

によって2009年8月17日プラシャント · コメント
の下でファイルされる: 技術

あなたは、GmailにアクセスするにはmuttやSMTPを使用している場合。 ここで(悪い)ニュースがあります。 Googleのクールな男は、再び証明書を変更しました。 ああ、あなたが求めるなかった - それはどのようにそれを知っていますか? シンプルなmuttは悪名高い、msmpt使用しようとしたときに不適当な証明書に文句を開始 "その他のmsmtp:TLS証明書の検証に失敗しました:証明書が既知の発行元を持っていません。 ' 画面上で私を迎えた。

交差確認するには -
単に次のコマンドを実行します。

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

古いThwateサーバの代わりに今では発行者·セグメント内に次のGET
Issuer:
Common Name: Google Internet Authority
Organization: Google Inc
Country: US

幸いにも修正が簡単ですが、ここでは、Debian上で行うために必要なものです。

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

この直後、あなたに次の行を変更し、〜/。msmtprcは

tls_trust_file /certs/Thawte SSLWeb Server Roots/thawte Premium Server CA/Thawte Premium Server CA.pem

tls_trust_file /certs/Thawte SSLWeb Server Roots/thawte Premium Server CA/Thawte Premium Server CA.pem



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

Gitと恐ろしい調査

によって2009年8月15日プラシャント · コメント
報告Filed under: その他

ここではgit(バージョン管理システム)と素晴らしい(ウィンドウマネージャ)コミュニティによる調査の2つのリンクがあります。 あなたはこれらのいずれかを使用する場合は、アンケートを埋めるためにいくつかの時間を取り出してください。 使用するソフトウェアに戻って貢献する最も簡単な方法だと考える。
ここのリンクは以下のとおりです。

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

素晴らしい- http://www.survs.com/survey?id=8BVEV3FO&channel=BH07CQ040D

注 - (これらのページではなく、下部に発見 :) ) -
"あなたはクッキーを有効にしている場合は、いつでも部分的に満たされた調査書を提出し、後であなたの答えに戻り、それを後で完了することができます。"

YAML confファイルの中にハッシュをマージする

によって2009年7月31日プラシャント · コメント
の下でファイルされる: 技術

YAMLは設定ファイルを書くために非常に便利です。 主な利点は、それがテキストフ​​ァイルのように読むことです。 configファイル(無階層)平らでない繰り返しを持っていない場合、これは本当によく働く。
あなたのコンフィギュレーションファイルが繰り返しがある場合、それはそれらの要素を分離し、それらを再利用することは理にかなっています。 私は何を意味することはこれである - のは、configファイルは、次のようになりますことを言ってみましょう:

 開発:
   input_location:common_input
   output_location:dev_location
  メールアドレス:
     smtp_server:YOUR_SERVER
    ログイン:your_login
    パスワード:top_secret
生産:
   input_location:common_input
   output_location:dev_location
  メールアドレス:
     smtp_server:YOUR_SERVER
    ログイン:your_login
    パスワード:top_secret 

ここでは/ tmp / test.ymlで上記のコードと仮定すると、PythonやRubyで読むことができる方法です。
$cat readyml.py

 #!/ usr / bin / envをのpython
 PPとして出力の整然化のインポート出力の整然化から
 #Debianでのpython-yamlをインストールする必要があります
 YAMLインポート負荷から、load_all、ダンプ
ハッシュをかざすと(開いている( 'は/ tmp / test.yml'))
 PP(ハッシュ['開発']) 


$ cat readyml.rb

  #!/ usr / bin / envをルビー
 "PP"を必要とする
ハッシュ= YAML ::負荷(File.open( '/ tmpに/ test.yml')は。読む)
 ppはハッシュ['開発'] 

ここでルビーバージョンの便利な1ライナーです。
$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]'またはIRBやPythonコンソールで同じことを試してみることができます。

上記のコードスニペットでは、すべてが出力場所は、開発と生産の部分で同じである以外のことに注意してください。 YMLノード識別子が救出に来る場所です。 アイデアは単純なデフォルト値のセットを持っていると別の場所でそれらを上書きします。
次のように、あなたはそれを引き離すこともできます。

 デフォルト値:&デフォルト
   input_location:common_input
   output_location:dev_location
  メールアドレス:
     SENDER_NAME:送信
     smtp_server:YOUR_SERVER
    ログイン:your_login
    パスワード:top_secret
開発:
   <<:*デフォルト
生産:
   <<:*デフォルト
   output_location:prod_location 


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

偉大な、それは(TM)の動作!
間違いなく我々は魔法のビットのいくつかの明快さを交換した。 ここで小さな説明は、次のとおりです。&、*と。<<&アンカー·タグであるが、ノードの識別子として理解することができます*は、ノードの参照と<<次のとおりです。ハッシュ結合を表しています。

詳細については、いずれかを参照してくださいYAML仕様またはWikipediaを
これまでのところは良いが、漁獲量はここにありますが、これらのハッシュのマージは再帰的ではありません。 それは何を意味すると、この次のとおりです。ましょうあなたが2つの環境でメールを別の送信者名を持ちたいと言うあなたは、次の操作を行うように誘惑される場合があります。

 デフォルト値:&デフォルト
   input_location:common_input
   output_location:dev_location
  メールアドレス:
     SENDER_NAME:送信
     smtp_server:YOUR_SERVER
    ログイン:your_login
    パスワード:top_secret
開発:
   <<:*デフォルト
  メールアドレス:
     SENDER_NAME:sender_dev
生産:
   <<:*デフォルト
   output_location:prod_location
  メールアドレス:
     SENDER_NAME:sender_prod 

確認することができます

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

おっと、何かが間違っていた、前述したようにこの問題は、ハッシュ結合が再帰的ではないということですとマージ中には1つだけ鍵を持っている生産のメールで、デフォルトの電子メールに取って代わりました。 解決策/回避策は複数のレベルをアンロールすることです。

  common_settings:&common_settings
 input_location:common_input
 output_location:dev_location
 mail_defaults:&mail_defaults
  SENDER_NAME:送信
   smtp_server:YOUR_SERVER
  ログイン:your_login
  パスワード:top_secret

デフォルト値:&デフォルト
   <<:* common_settings
  メールアドレス:
     <<:* mail_defaults
開発:
   <<:*デフォルト
生産:
   <<:*デフォルト
  メールアドレス:
     <<:* mail_defaults
     SENDER_NAME:sender_prod

再度確認することができます

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

あなたが入れ子の複数レベルを持って言った、よくあなたは間違いなく、複数のレベルを展開することができますが、それは混乱になります。 あなたは、confファイルにハノイの塔への解決策を記述しようとしていない場合ので、それはYAMLもしくは他の何かを掘り下げるよりも、confファイルをrestuctureすることをお勧めします。 しかし、それはとにかくあなたの呼び出しです。

偉大なプログラマは、複雑な問題への単純な解決策を見つける

によって2009年6月30日プラシャント · コメント
報告Filed under: その他

長い時間の後、私は次の引用符でのソースを見つけることができる

ジュニアプログラマは簡単な問題に対してシンプルなソリューションを作成します。 上級プログラマは、複雑な問題への複雑なソリューションを作成します。 偉大なプログラマは、複雑な問題への単純な解決策を見つける。

それが呼ばれるエッセイから美しいソフトウェアチャールズコネル。

私のもう一つのお気に入りの1つであるPythonの禅 -

美しいは醜いよりも優れています。
明示的な暗黙よりも優れています。
シンプルは複雑よりも優れています。
複合体は複雑よりも優れています。
フラットは、ネストされたよりも良いです。
疎は密よりも優れています。
可読性カウントされます。
特殊なケースでは、ルールを破るのに十分特別ではありません。
実用性は、純度を打つが。
エラーは黙って渡すべきではありません。
明示的に沈黙させない限り。
曖昧さに直面して、推測する誘惑を拒否します。
それを行うには一、好ましくは1だけ明白な方法があるはずです。
あなたはオランダ語でない限りそのようには最初自明ではないかもしれませんが。
今は決してよりも優れています。
右*現在、多くの場合*よりも優れていることはありませんが。
実装が説明するのは難しい場合は、それは悪いアイデアです。
実装が説明するのは容易である場合、それは良いアイデアかもしれません。
名前空間は1警笛素晴らしいアイデアです - それらの複数の操作を行いますみましょう!
-------------------------
そして古典があるプログラミングのタオ

-

リンク先サイトオンとしてクレジット

ジェフリー·ジェームズによって翻訳され

デュークヒラードによって転写

Anupam Trivediは、Sajitha大麻、とMeghshyamジャガンによって送信される

Kragen Sittlerによる再HTML化され、編集

-

本1 - サイレントボイド

したがって、マスタープログラマspeakの過去形:

"あなたはトラップフレームからエラーコードを奪うことを学んだ、それ
あなたが去るまでの時間となります。 "

1.1

神秘的な何かが静かな空間で生まれ、形成される。 一人で待っていると
動かない、それは一定の動きはまだ、まだ一度です。 それがソースです。
すべてのプログラムの。 私はその名前を知らないので、私はそれのタオを呼び出します
プログラミング。

タオが大きい場合は、オペレーティングシステムは素晴らしいです。 場合、オペレーティング
システムは素晴らしいですが、コンパイラは素晴らしいです。 コンパイラが大きい場合、
次に、アプリケーションは素晴らしいです。 ユーザーが喜んで、そこに存在する
世界の調和。

プログラミングのタオは遠く流れて朝の風に乗って戻ります。

1.2

タオは、機械語を生んだ。 機械語は、を出産した
アセンブラ。

アセンブラ、コンパイラを出産した。 今1万があります
言語。

各言語は、その目的、しかし謙虚を持っています。 各言語は、表現
ソフトウェアの陰と陽。 各言語は、タオ内でその場所を持っています。

あなたはそれを避けることができれば、しかし、COBOLでプログラミングされません。

1.3

初めに、タオであった。 タオは、空間と時間を出産した。
したがって、空間と時間は、プログラミングの陰と陽があります。

タオを理解していないプログラマは、常に時間を使い果たしている
それらのプログラムのための省スペース。 いつもタオを理解するプログラマ
彼らの目標を達成するの​​に十分な時間と空間を持っています。

どのようにそれ以外の場合だろうか?

1.4

賢いプログラマはタオについて話し、それに従います。 平均
プログラマは、タオとそれに対する検索について知らされています。 愚かなプログラマ
タオとそれで笑いについて話されています。

それは笑いがなかった場合、タオはないだろう。

最高音は聞くことが困難である。
今後は、退却する方法です。
偉大な才能は人生の後半に自分自身を示しています。
でも、完璧なプログラムはまだバグがあります。

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

ブック2 - 古代マスターズ

したがって、マスタープログラマspeakの過去形:

"プログラミングなしで3日後に、人生は無意味になります。"

2.1

昔のプログラマは、神秘的で深遠であった。 我々は理解できない
自分の考えなので、私たちはすべての彼らの外観を記述しています。

水を渡るキツネのように、注意してください。 に関する一般的なように、警告
戦場。 彼女のゲストを迎えるホステスのような一種。 のような、単純な
木のuncarvedブロック。 暗い洞窟でブラックプールのような、不透明な。

誰が彼らの心の秘密を伝えることができますか?

答えは、タオにのみ存在します。

2.2

グランドマスターチューリングは、かつて彼がマシンであったことを夢見ていた。 彼は目を覚ましたときに
叫んだ。

"私は私が機械だということを夢見たり、チューリングているかどうかがわからない
私はチューリングマシンだということを夢見て! "

2.3

非常に大規模なコンピュータ会社からのプログラマは、ソフトウェアに行ってきました
"どのような種類:会議、その後は、と言って、彼のマネージャーに報告に戻って
プログラマは、他の企業のために動作しますか? 彼らは行儀とした
外見に無関心。 自分の髪は長くてボサボサだったとその
服はしわ、古いでした。 彼らは我々のホスピタリティースイートをクラッシュし、それら
私のプレゼンテーションの中で失礼な音を作りました。 "

マネージャーは言った: "私は会議にあなたを送ったことがないはずです。 それらの
プログラマは、物理的世界を超えて住んでいます。 彼らは、人生は不条理考える
偶然の一致。 彼らは限界を知らずに来ては去って行く。
気にせず、彼らは彼らのプログラムのためにだけ住んでいます。 なぜ彼らはわざわざする必要があり
社会的慣習と?

"彼らは、タオ内で生きている。"

2.4

初心者がマスターに尋ねた: "ここに設計しなかったプログラマは、ある
ドキュメントやテスト彼のプログラム。 まだ彼は彼のいずれかを検討してください知っている人すべて
世界最高のプログラマ。 これはなぜですか? "

マスターは答えた: "それはプログラマがタオを習得しています。 彼はしまった
システム、彼が怒ることはありません。設計の必要性を超えて
クラッシュ、しかし気にせずに宇宙を受け入れます。 彼は超えてしまった
ドキュメンテーションのために必要があります。誰が彼のコードを見れば、彼はもはや気にしない。
彼はテストの必要性を超えてしまった、彼のプログラムの各々は完璧です
自身の中、落ち着いたエレガントな、彼らの目的は自明。 本当に、
彼はタオの謎に入りました。 "

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

3本 - デザイン

したがって、マスタープログラマspeakの過去形:

"プログラムがテストされているとき、それはデザインを作るためには遅すぎる
変更されます。 "

3.1

一度コンピュータのトレードショーに行ってきました男がいた。 彼として毎日
入力すると、男はドアでガードを語った。

"私は、万引きの私の偉業のために有名な偉大な泥棒です。 である
備えあれば、このトレードショーのために脱出unplunderedてはならない。 "

数百万があったので、このスピーチは、非常にガードを妨げ
コンピュータ機器のドルは内側なので、彼は慎重に男を見ました。 しかし
男は単に自分自身に静かにハミング、ブースからブースにさまよった。

男が去ったときに、ガードは彼をわき取り、彼の服を探したが、
何も発見されるんでした。

トレードショーの翌日に、男性が返され、ガードをたしなめ
と言って: "私は昨日の膨大な戦利品を使ってエスケープが、今日もになります
良い。 "ガードがこれまで以上に密接に彼を見てそうですが、無駄に。

トレードショーの最終日に、ガードは彼の好奇心を抑えることができ
もはや。 "泥棒卿"と、彼は私が困惑である、私が住んでいることができません "と言った。
平和。 私を啓発してください。 それはあなたが盗んでいることは何ですか? "

男は微笑んだ。 "私はアイデアを盗んでいます"と彼は言った。

3.2

一度構造化されていないプログラムを書いて、マスタープログラマがありました。 A
初心者プログラマは、彼を模倣しようとしている、また書き始めました
構造化プログラム。 初心者は彼を評価するためにマスターを尋ねられたとき
進歩、マスターは、構造化されていないプログラムを書くために彼を批判
マスターのために適切な何ですか "と言ってすることは適切ではありません
初心者。 あなたは、構造を超越する前にタオを理解する必要があります。 "

3.3

将軍の裁判所に添付されたプログラマは、かつてありました
呉。 "設計が容易になります:将軍は、プログラマに尋ねた
会計パッケージまたはオペレーティング·システム? "

"オペレーティングシステム"、プログラマーは答えた。

将軍は、不信の感嘆符を口に。 "確かに会計
パッケージには、彼は、 "オペレーティングシステムの複雑さの隣に簡単です
と述べた。

"まあ、"プログラマは、会計パッケージを設計するときに "と言った。
プログラマは、別の持っている人々の間の仲介役として動作します
それが動作しなければならないか、そのレポートが表示されなければならないかと、どのように行う必要があります。アイデア
税法に準拠しています。 対照的に、オペレーティング·システムが限定されない
外側の出演で。 オペレーティング·システムを設計、プログラマー
マシンとアイデアの間に単純な調和を目指しています。 これはなぜ
オペレーティングシステムの設計が容易になります。 "

呉の将軍はうなずいて微笑んだ。 "それがすべて良いとよくあるが、
これは、デバッグしやすいですか? "

プログラマは返事をしなかった。

3.4

マネージャーはマスタープログラマーに行って、彼の要件を示した
新しいアプリケーションのドキュメント。 マネージャは、マスターに尋ねた: "どのくらい
私はそれに5つのプログラマーを割り当てる場合は、このシステムを設計するために時間がかかりますか? "

"それは1年はかかるだろう"とマスターは速やかに言った。

"しかし、我々はすぐにこのシステムを必要とするか、またはあっても早く! どのくらいの時間がなります
私はそれに10のプログラマを割り当てた場合かかる? "

マスタ·プログラマは眉をひそめた。 "その場合には、2年かかるでしょう。"

"私はそれに100プログラマを割り当てた場合、そして、何?"

マスタープログラマは肩をすくめた。 "それからデザインはなることはありません
完了すると、 "と彼は言った。

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

本4 - コーディング

したがって、マスタープログラマspeakの過去形:

"よく練られたプログラムは、独自の天国です。出来の悪いプログラムです
独自の地獄。 "

4.1

プログラムは、光とアジャイルである必要があり、そのサブルーチンは次のように接続された
真珠の文字列を指定します。 プログラムの精神と意図が保持されるべき
全体。 どちらも少なすぎるまたは多すぎるがあるはずです、どちらもない
不必要なループも無駄な変数、構造体のどちらも不足も
圧倒的な剛性。

プログラムは、少なくとも驚き 'の `法則に従ってください。 この法律は何ですか?
それは、プログラムが常に方法でユーザーに応答するように単に
それは、少なくとも彼を驚かせる。

プログラムは、どんなに複雑な、単一のユニットとして行動しなければならない。 プログラム
外見ではなく内のロジックによって指示されるべきである。

プログラムがこれらの要件に失敗した場合、それはの状態になります
障害と混乱。 この問題を解決する唯一の方法は、書き換えることです。
プログラム。

4.2

初心者には、マスターに尋ねた: "私はいつか実行するプログラムを持っており、
時々中断されます。 私はプログラミングのルールに従った、まだ私は午前
完全に困惑。 この理由は何ですか? "

マスターは答えた: "あなたがタオを理解していないので、あなたには混乱しています。
唯一の愚か者は、彼の仲間の人間から合理的な行動を期待しています。 なぜあなたはそう
人間が構築しているマシンからそれを期待する? コンピュータがシミュレート
決定論、唯一の道は完璧です。

"プログラミングのルールは一時的であり、唯一の道は永遠です。 従って
あなたが悟りを受け取る前にタオを熟考する必要があります。 "

"しかし、私は啓発を受けたときはどのように私が知っているでしょうか?"
初心者。

"あなたのプログラムはその後正常に実行され、"マスターは答えた。

4.3

マスターは、彼の初心者のいずれかのタオの性質を説明しました。 "
タオは、すべてのソフトウェアに具現されている - に関係なく、 "どのように取るに足りないと述べたの
マスター。

"ハンドヘルド電卓のタオですか?"初心者は尋ねた。

"それは、"返信が来ました。

"タオは、ビデオゲームの中にいるのですか"初心者は続けた。

"それはあってもビデオゲームで、"マスターは言った。

"そして、パーソナルコンピュータ用のDOSのタオですか?"

マスターは、咳と少し彼の位置をシフトした。 "レッスンは以上です。
今日は、 "と彼は言った。

4.4

プリンス王のプログラマがソフトウェアをコーディングしました。 彼の指は上に踊った
キーボード。 エラーメッセージを表示せずにコンパイルしたプログラム、およびプログラム
穏やかな風のように走った。

"エクセレント!"プリンスは "あなたの技術が完全無欠だ!"、叫んだ。

"テクニック"とは?I "、プログラマが自分の端末から回して言った
フォローは、タオです - すべてのテクニックを超えた! 私が最初に私をプログラムするために始めたとき
私の前に1マスの問題全体を見ることができます。 3年後に私はありません
もはやこの塊を見ました。 代わりに、私はサブルーチンを使用していました。 しかし、今私は何も見ません。
私の全体の人間は形のない空間で存在しています。 私の感覚はアイドル状態になります。 私の精神、
計画なしで動作する自由に、独自の本能は、次のとおりです。 要するに、私のプログラムで
自分自身を書き込みます。 Trueの場合、時には困難な問題があります。 私はそれらを参照してください。
来て、私は遅く、私は黙って見て。 それから私は、単一のコード行を変更します。
や困難は、アイドル煙のパフのように消える。 私は、コンパイル
プログラム。 私はまだ座っていると仕事の喜びは私の存在を埋めてみましょう。 私を閉じて
一瞬目をして、ログオフします。 "

プリンスWang氏は "私のプログラマがすべてのように賢明であったことだろう!"と言った。

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

本5 - メンテナンス

したがって、マスタープログラマspeakの過去形:

"プログラムがあるが、3つの行の長さが、いつかそれがなければならないでしょう
維持しています。 "

5.1

よく使用されるドアは、ヒンジには石油を必要としません。
迅速に流れるストリームが停滞することはありません。
どちらの音も思考が真空中を移動することができます。
ソフトウェアは使用しない場合は腐敗。

これらは、大きな謎である。

5.2

マネージャは、それが終了するために彼を取るとどのくらいのプログラマーを求め
彼は仕事されたプログラム。 "それは、明日が終了されます。"
プログラマは、速やかに答えた。

"私はあなたが非現実的されていると思います"と、マネージャがどのように、正直に "と言った。
長い時間がかかりますか? "

プログラマは、しばらく考えました。 "私はしたいことがいくつかの機能を持っている
追加します。 これは、少なくとも2週間かかります "と、彼はようやく言った。

"たとえそれが期待するのは多すぎると、"マネージャーは私になる​​ "と主張した
プログラムが完了したときは、単に私に言うなら満足している。 "

プログラマはこれに合意した。

数年後、マネージャが退職した。 引退への道
昼食、彼は彼の端末で眠っているプログラマーを発見しました。 彼がいた
一晩プログラミング。

5.3

初心者プログラマは、かつての単純な金融パッケージのコードに割り当てられました。

初心者が何日も猛烈に働いたが、彼のマスター時日
彼のプログラムは、彼はそれがスクリーンエディタのセットが含まれていることを発見
一般的なグラフィックスルーチン、人工知能インタフェースがありますが、
金融は何のないわずかな言及。

マスターがこのことについて尋ねられたとき、初心者は憤慨しました。 "いけません
ので、せっかちな、私は最終的には金融のものに入れてよ "と彼は言った、"。 "

5.4

良い農夫は、彼が植えた作物を無視していますか?
良い先生も、最も謙虚な生徒を見過ごしていますか?
良い父親は、単一の子供が餓死することができますか?
良いプログラマは自分のコードを維持することを拒否していますか?

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

本6 - 管理

したがって、マスタープログラマspeakの過去形:

その後、すべてのでしょう - "プログラマは多くのと管理者が少数であるしましょう
生産的な。 "

6.1

管理者は無限の会合を開催する場合、プログラマはゲームを作成します。
会計士が四半期の利益の話は、開発予算は約です。
カットすることができます。 上級科学者たちは青空を話すとき、雲がロールバックしようとしています
インチ

本当に、これはプログラミングのタオではありません。

管理者は、約束をするときは、ゲームプログラムは無視されます。
会計士は長期計画を作成し、調和と秩序が必要がある場合には
復元されます。 上級科学者が手で問題に対処するとき、
問題は間もなく解決されるでしょう。

本当に、これはプログラミングのタオです。

6.2

なぜプログラマは非生産的ですか?
その時間は会議で無駄にされているためです。

なぜ反抗的なプログラマーは何ですか?
管理があまり干渉するため。

なぜプログラマは一つずつを辞任していますか?
彼らは燃え尽きているからです。

経営不振のために働いたので、彼らはもはや値が自分の仕事を。

6.3

マネージャは約発射されることになっていたが、彼のために働いたプログラマー
人気となり、よく売れた新しいプログラムを考案しました。 結果として、
マネージャーは彼の仕事を維持した。

マネージャはプログラマにボーナスを与えることを試みたが、プログラマ
私はそれがと思ったので、言って、それを拒否し、 "私はプログラムを書いた
興味深い概念は、したがって、私は報酬を期待しません。 "

彼が保持しているものの、これを聞いた時にマネージャーが、 "このプログラマを述べ
小さな自尊心の位置は、適切なデューティよく理解して
従業員。 私たちは管理の高貴な位置に彼を推進しましょう
コンサルタント! "

しかしこれを言ったとき、プログラマはもう一度私は存在する "と言って、拒否した
私はプログラムできるようにします。 私は促進された場合、私はしかし、廃棄物は何もしないだろう
みんなの時間。 私は今行くことができますか? 私は私が働いているプログラムを持っています。 "

6.4

マネージャーは彼のプログラマーに行き、彼らに言った: "あなたの仕事にに関しては
時間:あなたは朝9時に来ると離れなければしようとしている
午後に5。 "この時に、それらのすべてが怒って、いくつかになった
その場で辞任した。

したがって、マネージャーは言った: "すべての権利が、その場合にはあなた自身を設定することができます
あなたがスケジュール通りにプロジェクトを終了している限り、労働時間。 "
プログラマは、今は満足し、正午に来ておしっこに働くようになった
朝の時間。

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

本7 - 企業の知恵

したがって、マスタープログラマspeakの過去形:

"あなたは企業のエグゼクティブのためのプログラムを示すことができますが、できません
彼はコンピュータの知識を行います。 "

7.1

初心者には、マスターに尋ねた。 "東に大きなツリー構造がある
その男性は `本社"と呼んでいます。 それはで図形の外に膨れ上がっている
副社長と会計士。 それは、それぞれメモを多数発行する
したがって、移動 `と言って!" または `ヒザー、ゴー!" と誰もが何を意味するのか知りません。 すべての
毎年新しい名前は、枝の上に置くが、すべて無駄にされています。 どうすれば
そのような不自然なエンティティは、ある? "

マスターは答えた: "あなたは、この巨大な構造を感知します。
それは合理的な目的を持っていないことを妨げた。 あなたから遊園地を取ることはできません
その無限の曲折? あなたはプログラミングの安らかな使いやすさを享受していない
その避難枝の下に? なぜあなたはその悩まされている
無駄? "

7.2

東では、すべての他の魚より大きいサメがあります。 それ
羽空を充填雲のようなものです鳥に変化します。 ときに、この
鳥は、土地を越えて移動し、それが企業からのメッセージをもたらします
本社。 このメッセージは、プログラマの真っ只中に落ち、
浜時にそのマークを作るカモメのような。 その後、鳥にマウント
風とは、その後ろに青い空と、ホームを返します。

不思議に初心者プログラマの視線鳥で、彼はそれを理解するための
はありません。 彼が恐れているために平均的なプログラマは、鳥の到来を恐れる
そのメッセージが表示されます。 マスタープログラマはのために、彼の端末で動作し続け
彼は鳥が来てしまったことを知っているではありません。

7.3

象牙の塔の魔術師はのための彼の最新の発明をもたらした
マスタープログラマが調べることができます。 魔術師は、大規模なブラックボックスを輪
マスターのオフィスマスターは黙って待っている間。

"これは、統合、分散、汎用ワークステーションである"始めました
人間工学に基づいて独自のオペレーティングシステムで設計された魔術師 "
システム、第6世代言語、芸術、ユーザーの複数の状態
インターフェース。 これは、構築するために数百人年私のアシスタントをしました。
それは驚くほどではないですか? "

マスターは、わずかに眉を上げた。 "それは本当に驚くべきことです"と、彼
と述べた。

"本社が命じられた、"魔術師は、 "継続
誰もが新しいプログラムのためのプラットフォームとして、このワークステーションを使用しています。 同意しますか
これに? "

"確かに、"マスターは答えた、 "私はそれを輸送しています。
データセンターはすぐに! "とマジシャンはよく、彼の塔に戻さ
喜んで。

数日後、初心者がマスターのオフィスに迷い込ん
プログラマと私は新しいプログラムのリストを見つけることができない "と述べた。 行う
それがどこにあるかご存知ですか? "

"はい"マスターは答えた、 "リストは、プラットフォームの上に積層されている
データセンターの。 "

7.4

マスタ·プログラマは、恐れることなく、プログラムからプログラムに移動します。 なし
管理の変更は、彼に害を与えることができます。 彼がいる場合でも、解雇されることはありません
プロジェクトはキャンセルされます。 これはなぜですか? 彼はタオで満たされている。

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

本8 - ハードウェアおよびソフトウェア

したがって、マスタープログラマspeakの過去形:

"風がなければ、草は移動しません。 ソフトウェアを使用せずに、ハードウェアは
役に立たない。 "

8.1

初心者には、マスターに尋ねた: "私は一台のコンピュータ会社が多くあることを認識
他のすべてよりも大きい。 それは間に巨大なように、その競争上にそびえ立つ
矮星。 その部門のいずれかがビジネス全体を含むことができる。 なぜですか
このように? "

マスターは、なぜあなたはそのような愚かな質問をしない "と答えた? その会社
それが大きいので大きいです。 それはハードウェアのみを行った場合、誰も買わないだろう
それ。 それはソフトウェアのみを行った場合、誰もそれを使用しないであろう。 それだけで維持している場合
システムは、人々は使用人のように扱うだろう。 しかし、それはすべて兼ね備えているため
これらのことから、人々は神の一つと思います! に求めていないことにより
それは努力なしに征服、努力しています。 "

8.2

マスタ·プログラマは、一日初心者プログラマを可決した。 マスターは指摘する
ハンドヘルドコンピュータゲームで初心者の最大の関心事。 "すみません"
彼は "私はそれを調べることができますか?"

初心者が注意にボルトで固定し、マスターにデバイスを手渡した。 "私は
デバイスが遊びの3つのレベルがあると主張していることがわかります。イージー、ミディアム、および
ハード、 "マスターは言った。 "しかし、すべてのそのようなデバイスは、別のレベルを持っている
デバイスが人間を征服しないようにしようとプレー、また征服する
人間によって。 "

"祈り、偉大なマスターは、"初心者を懇願し、 "どのようにすればこれを見つけるん。
神秘的な設定は? "

マスターは地面にデバイスを落として足元を粉砕した。
突然初心者が悟りを開いた。

8.3

マイクロプロセッサに働いて、プログラマが一度ありました。 "どのように見
裕福私がここに、 "彼が訪ねてきたメインフレームのプログラマに言った、
"私は私の独自のオペレーティングシステムとファイル·ストレージ·デバイスを持っています。 私がする必要はありません
誰とでも私のリソースを共有します。 ソフトウェアは、自己矛盾であり、
使いやすい。 なぜあなたはあなたの現在の仕事を辞めていないと私をここに参加する? "

メインフレームのプログラマは、その後、彼の友人に彼のシステムを説明し始めた
メインフレームは真っ只中に古代の賢人の瞑想のように座っている "と言って
データセンターの。 そのディスクドライブの素晴らしい海のような嘘のエンドツーエンド
機械。 ソフトウェアは、ダイヤモンドのように多面的、とのような複雑です。
太古のジャングルである。 プログラムは、それぞれ固有の場合は、システム内を移動する
迅速に流れる川のよう。 私は私がどこに幸せその理由です。 "

マイコンプログラマは、これを聴いた上で、静まり返った。 しかし、二つの
プログラマは、その日の終わりまで友人であった。

8.4

ハードウェアはChangtseへの道のソフトウェアに会った。 ソフトウェアは言った: "あなたは
陰と私はヤンです。 私たちは一緒に旅行なら、私たちは有名になると加算されます
膨大なお金の合計。 "となど一緒にセットには、征服する考え
世界。

現在、彼らはぼろぼろぼろを着て、足を引きずりましたファームウェアを、会った
に沿ってイバラの棒に支えられ。 ファームウェアは彼らに言った: "タオはある
陰と陽を越えて。 それは、サイレント、まだ水のプールのようになります。 それはない
名声を求めない、したがって誰もその存在を知りません。 それがいるわけではありません。
幸運は、それを自身の中で完了です。 それは空間を超えて存在し、
時間。 "

ソフトウェアおよびハードウェアは、恥ずかしい、自宅に戻った。

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

本9 - エピローグ

したがって、マスタープログラマspeakの過去形:

"それはあなたが去るべき時です。"

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

あなたはこれらを好んだら、また読みたいかもしれ悪い良い

シェルのリダイレクトのビット

によって2009年5月10日プラシャント · コメント
の下でファイルされる: 技術

ここでは、通常、シェルのリダイレクトを行う方法です。
$ ./pgm.sh args >out.txt 2>err.txt
私はそれを少し変更したいと次のように実行
$ ./pgm.sh args
出力とエラーは、argsに基づいてpgm.sh内で計算、いくつかのファイルに行く必要があることを要件と。 日付が引数の一部である場合、一つの例示のケースであるかもしれません。 ので、あなたの/ディレクトリ/ pgm_out_YYYYMMDD.txt /言いに行って標準出力(stdout)をご希望の1

リダイレクトするための標準的な方法で問題N>file.txtすなわち、ファイル記述子を関連付けるN File.txtには、それが現在のプロセスのために新たにforkしたプロセスとしない場合にのみ動作することです。
そう
$ echo hi 1>out.txt ; echo hii out.txtをハイに送信されますが、標準出力(stdout)にHIIが出力されます。 2

ここで、これはexec私たちの救助に来る。 我々が追加した場合exec 1>somefile.txtしてスクリプトの残りの部分からの出力はsomefile.txtに移動します

$ cat test.sh
#!/usr/bin/env bash
exec 1>out.txt
echo hi
echo hii
$。/ test.shは、out.txtをするだけでなく、ハイテクHIIにリダイレクトされます

同様に、標準出力(stdout)と同様にstderrをリダイレクトするために我々はこのような何かをやる
cat test2.sh
exec 1>out.txt
exec 2>err.txt
echo out text
echo 1>&2 err text
somenoneexitent command
ls -ld /tmp

現在のシェルの内側から、いくつかのファイルにリダイレクトするの原点に戻ってくると、プログラムはいくつかの変数OUTFILEでファイル名を計算言うみましょう、我々だけで行われたかもしれないexec 1>$OUTFILE

それは、現在の問題を解決します。 しかし、あなたはシェルスクリプトでファイルの "ランダムアクセス"を実現する次の例で通過するようなことがあります。 例からです。 ここで
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

コメントで、このコードは自明です。
-
1はまた、によって行うことができます$ ./pgm.sh args >pgm_out`date +%Y%m%d`が、このアイディアはプログラム自体にいくつかのロジックに基づいて、このファイル名を生成することです。
2 1の1> out.txtを冗長ですが、それは我々がFD 1をリダイレクトしていることをここで明確に

ソニーのVAIOレビュー

によって2009年4月29日プラシャント · コメント
の下でファイルされる: レビュー

月戻って私はVAIOの購入NS25Gをして以来、この記事を書くことを計画されています。 この記事は、自己と同一の見直し主にノートです。 すぐにマークを下車してみましょう -

ポストは2つの部分があります -

ハードウェアの振り返り
II。 セットアップにDebianと物事をインストールする

ハードウェアの振り返り

私はVAIOのマーケティング男はないので、私は他の方法でラウンドを開始します -

なぜあなたはこのノートパソコンを購入したくない場合があります。

  1. いいえBluetooth:私を信じては、2009年にソニーはブルートゥースなしでラップトップを販売していない。 確かには、USBのものを使用できますが...
  2. 画面サイズは15.4インチです:あなたは多くの旅行の場合、このラップトップは非常に便利ではない可能性があり、また2.9キロのラップトップは正確に周りに軽量ではありません。
  3. HDMI出力がありません。
  4. 個別のグラフィックスカードないと気に入っています。(そして、専用のビデオメモリ

今、なぜあなたはそれを購入するようなことがあります:

  1. このラップトップは上出来のデスクトップです。 主にプログラムを書くと、大画面で、その後24時間のそれを25を使用しようとすると、広々としたパームレストと良好な計算能力を持つ、非常に快適なキーボードのレイアウト、それは非常に良いになります - 私は何を意味するとの要件が私のような場合は、このです。組み合わせ。
  2. それはL2キャッシュは2MBであり、プロセッサ/メモリ、システムバスは800MHzです。 私はゲームをプレイしないので、そのことについてしかし何のために言うが2GHzの周波数のCore 2 Duoプロセッサが良好であることはできませんが、これは十分以上のものです。
  3. 私の使い方から、私は1.2GHzの時に主にプロセッサのクロックを参照し、メモリ使用量は500MB〜を。 それはちょうど前の点を強調している。
  4. バッテリーバックアップは良いですが、〜2時間は私が得るものです。

ここだけでもう一つ - ソニーいる、それはあなたに似た構成を持つ他のラップトップよりも少し費用がかかりますが、それはuが行う必要があります呼び出しです。

II。 (!箱から出して実行する)は、Linuxの設定:
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:

  1. 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.
  2. 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)
  3. Video cam – just works
  4. Hibernate to disk and back – no problem
  5. 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 -

  1. 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"

次のページ»