タグ

2010年11月25日のブックマーク (4件)

  • UITableVIewの利用 - プログラミングノート

    Interface Builderを利用せずにUITableViewを利用する方法です。ソースコードはこちらから。Window-Based Applicationのテンプレートを利用し、UIViewController (MyViewController) を追加して作成しています。 MyViewController.h UIViewControllerを継承した独自のViewControllerを生成します。 UITableView関連のプロトコル(Interfaceみたいなもの)を指定しています。 @interface MyViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>{ UITableView *myTableView; } MyViewController.m UITabl

    UITableVIewの利用 - プログラミングノート
  • RVMの環境をプロジェクトごとに切り替える。

    RVM: Ruby Version Manager – rvmrc The project rvmrc files are intended to be used to setup your project’s ruby environment when you switch to the project root directory. 以下のようにしておくと、それ以下のディレクトリに降りた時に自動で環境が切り替わるようになります。これは便利だなー。 echo "rvm foo@bar" > ~/projects/baz/.rvmrc

    RVMの環境をプロジェクトごとに切り替える。
    komagata
    komagata 2010/11/25
    便利ー
  • インターネットサーバでのPthreadとepoll(2)

    >>(1)よりつづく 前回は単純な実装からマルチスレッド、スレッドプールと順に見て行きました。今回はいよいよepollを使った実装を紹介します。 epoll例- 4epoll.c 多重I/Oすなわち select(2) / poll(2) によるイベントループはマルチスレッドが普及する以前から利用されていました。 select(2) / poll(2) は複数のファイルディスクリプタ(ソケット)を調べ、I/O可能なものを返すシステムコールです。ソケットに対する読み取りはデフォルトではデータがなければブロック(データが到着するまで待つ)しますが、事前にI/O可能かを確認しておけばブロックすることはありません。1システムコールで複数のソケットを調べられる点も重要で、1プロセスで複数のクライアントに並行して対応できるようになります。しかし当然ながら、対象ソケット数の増加に応じて処理量が増えます。

    インターネットサーバでのPthreadとepoll(2)
  • memcached と libevent – reading memcached(2) : MYH

    何かリクエストを受け付けて処理をして返すという、サーバーでよく行われる処理を考えてみましょう。一度に多数リクエストを受け付けて同時並行的に処理が行えるようにしたい場合、1つのやり方としてマルチスレッド化してあるスレッドで accept(2) しておいて、それを別のスレッド(ワーカースレッド)に振り分け、そのスレッドでは recv(2) / send(2) で通信を行うという方法があります。しかし、その場合スレッド数を超えるリクエストを同時に捌けないという欠点があります。recv はまだデータが来てないという場合には待ちが発生しますので、待っている間そのスレッドは遊んでしまって無駄になってしまいます。スレッドを CPU のコア数より多めに取っておけばそれは回避できますが、スレッド切り替えのオーバーヘッドがかかり、またスレッドを生成出来る個数の上限も合って、あまり多数のクライアントをさばくこと