タグ

ブックマーク / www.gcd.org (9)

  • 仙石浩明の日記: 技術力が高い人こそ、ビジネスモデルの良し悪しにもっと敏感になるべき

    先週参加した社外の飲み会 (私は飲めないので専らウーロン茶でしたが) で、 Linux ディストリビューションの開発や、 カーネル技術を売りにしたコンサルティングで有名な某社の カーネル技術者とお会いしました。 彼はいま伸び盛りの若手カーネル・ハッカーなのですが、 オープン・ソース・ソフトウェア (以下 OSS と略記) ビジネスについて熱く語ったり、 ディストリビューションをサポートし続ける使命感に燃えていたのが、 わたし的にはちょっと気になりまして、 ひとこと言いたくなってしまいました(お節介ですね ^^;)。 ディストリビューションのサポート体制 (カーネルのバグにも的確に即応できる体制) を維持し続けることによって、 多くの企業で Linux を安心して使ってもらうことができて、 それが OSS の発展につながるし、 それこそが自分の使命だと彼は考えているようでした。 それはそれで

    nobu666
    nobu666 2015/03/29
  • 仙石浩明の日記: 成功しない方法

    「なぜ成功できたか?」を聞きたがる人って多いですよね? でも、そんなこと聞いてどうするのでしょうか。仮に同じことが実践できたとしても、同じように成功できるとは誰も思っちゃいないですよね? 同じように成功するのは無理としても、成功者の話には何らかのヒントがあるんじゃないか?きっとそういうことを期待しているのだと思いますが、考えてみて欲しいのは、成功しなかった人の話は誰も聞こうとしない点。もしかしたら成功しなかった人も成功者と同じことをしていたかも知れません。いわゆる「生存者バイアス」ですね。 例えば、成功できた理由を聞かれて、「自分を信じて、あきらめずに続けたから」などと答えている人をよく見たり聞いたりしますが、こーいう話を真に受けて、素質がない人が自分を信じて突き進んだりしたら、成功確率が上がるどころか、撤退タイミングを逃してドツボにはまってしまうだけです。 まあ、私自身も、「やりたいこと

    nobu666
    nobu666 2012/12/27
  • ssh (後編)

    実践で学ぶ、一歩進んだサーバ構築・運用術 第 11 回 ssh (後編) ポート・フォワード 前回少しだけ紹介したように, ssh にはクライアント側あるいはサーバー側のポートを反対側へ転送する ポート・フォワード機能があります。 この機能を使えば任意のプロトコルを暗号化できるので重宝します。 ポート・フォワード機能で真価を発揮するのは, ProxyCommand *4 を設定してファイアウオールを越えて ssh 接続を行っているときです。 例えば出張に持参したノート PC と社内 LAN 上の PC との間で 任意のプロトコルを使って盗聴の心配なく通信できます。 ローカルからリモートへ ssh クライアントを実行したローカル・ホストのポートを ssh サーバーが動いている内部 LAN 上のリモート・ホストに転送すれば, ローカル・ホスト上で実行する任意のクライアントから 内部 LAN 上

    nobu666
    nobu666 2010/04/13
    人に説明するときにこの図が使えそう
  • 仙石浩明の日記: 「無知の無知」への 3ステップ

    KLab(株)は、 2007年から新卒採用を行っています。 今年も例年通り、4月1日に入社式を行いました。 みなさん、入社おめでとうございます。 社長のお話が終わり、みなさんは挨拶が終わって、 緊張もほぐれてきたのではないかと思います。 ここからは各役員の挨拶なのですが、 なぜか私だけは挨拶だけでなく (長くならない範囲で ^^;) 話もしろということになったらしいので、 話を捻り出してみます。 「考えることが大事」ということは社長のお話にもありましたし、 みなさんも既によく知っていることだと思います。 ただ、 知っていることと実際に実行できることとの間には越えがたい壁があることも事実で、 分かっちゃいるけどついつい考えなくなってしまう、 あるいは考えているつもりが、 いつのまにか深く考えることがなくなってしまうものなのでしょう。 そもそも自分がどのくらい考えているかなんて、 なかなか意識

    nobu666
    nobu666 2010/04/05
  • 仙石浩明の日記: x86_64 Linux などの 64bit 環境で MD5 を使うときの注意点

    MD5 (Message Digest Algorithm 5) は、 RFC 1321 でアルゴリズムが紹介されていて、 Appendix (付録) として C によるリファレンス実装が付属しているが、 その global.h に /* UINT4 defines a four byte word */ typedef unsigned long int UINT4; と書いてある。 すなわち 32bit 整数として UINT4 型を定義している。 x86_64 Linux を始め多くの 64bit Unix は LP64 すなわち long int (とポインタ) が 64bit な整数データモデルを採用している。 したがって UINT4 型の定義が 「unsigned long int」 のままで、 この MD5 リファレンス実装を使ってしまうと、 32bit であるべき UINT4

    nobu666
    nobu666 2010/03/02
  • 仙石浩明の日記: 迷惑メール送信者とのイタチごっこを終わらせるために (1)

    迷惑メール (UCE, UBE, スパム メールなどとも呼ばれる) が沢山届いて困る、 というのはメールアドレスを公開している人にとって共通の悩みのタネであるはず。 SpamAssasin などの メールフィルタを使っている、というかたも多いだろう。 しかしながら、メールの内容を見て迷惑メールか否かを判断するフィルタでは、 迷惑メール送信者とのイタチごっこは避けられない。 送信者は迷惑メールと判断されないよう、 どんどん内容を巧妙に変化させていくからだ。 例えばフィルタリングアルゴリズムとしてよく使われる ベイジアン フィルタ(Bayesian Filter) は、 ワード サラダ (Word Salad) をわされることによって精度が落ちてしまう。 したがって 迷惑メール送信者とのイタチごっこに終止符を打つには、 迷惑メール送信者が変更できない情報にのみ依存した 迷惑メール判定方法を用

  • 仙石浩明の日記: ssh-agent を screen の中から使う方法

    GNU screen の バグ報告を行なう ついでに screen-devel ML に参加したら、 次のようなメールが ML に流れてきた: There is a much simpler solution http://www.2701.org/archive/200406150000.html The key is that SSH_AGENT need not point to a socket, it can point to a symbolic link to a socket. なるほど~ ssh-agent と通信するための UNIX ドメイン ソケット を指す (パス名固定の) シンボリック リンクを作るようにしておけば、 環境変数 SSH_AUTH_SOCK には、そのシンボリック リンクのパス名を 設定しておけば済むので screen の中で ssh を使うとき便利

  • 仙石浩明の日記: なぜ、「購入 VS 賃貸」 という比較がナンセンスなのか?

    このように考えれば、 「賃借して住む」の部分は両者に共通であるから除外して比較することができる。 つまり「買うか? 借りるか?」という比較は、 「不動産投資を行なうか? 行なわないか?」という比較になる。 4000万円の新築マンションを購入するとして、 頭金を800万円(購入価格の2割)、 残り3200万円を金利3%、 35年返済で借りるとした場合、 月々の返済額は12万3000円となる。 頭金800万円を加えた総返済額は約5970万円。 これに固定資産税、維持管理費等の支払いが約1700万円。 結局7670万円の支払いをして、マンションが自分の資産となるわけである。 ここで、 (自分自身に) 月額 12万3000円の家賃で賃貸すると考える。 もちろん家賃の額は任意に設定して構わないのであるが、 ここでは簡単化のため、 家賃をローンの月々の返済額と同額の 12万3000円に設定してみる。

  • 仙石浩明の日記: x86_64 Linux でメモリ・デバッグ・ツール Valgrind を使う場合の注意点

    次のようなプログラム test.c について考える: #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <string.h> struct test { int32_t len; int8_t buf[16]; }; int main(int argc, char *argv[]) { struct test *p = malloc(sizeof(struct test)); int8_t buf[16]; p->len = sizeof(p->buf); bzero(p->buf, p->len); printf("0x%lX-0x%lX => 0x%lX\n", (long)p->buf, (long)p->buf+p->len-1, (long)buf); bcopy(p->buf, buf,

  • 1