タグ

programmingとNetworkに関するyukimori_726のブックマーク (59)

  • 無名関数を使った非同期通信のススメ(JavaScript)

    ここ最近はブラウザーの上で動く思いっきりRIAなアプリケーションを書いている私。こと通信の部分になると JavaScript での開発効率が、C++/Java/Objective Cなどと比べて格段に高いことをつくづく感じている毎日なので、今日は、そのあたりを少し解説してみようかと思う。 サーバーのAPIにアクセスするプログラムを書く方法は色々とあるが、「サーバー上の特定のURLにHTTPでアクセスして結果をXMLやHTMLやJSONで受け取る」というケースに限定すれば、基的に3つのパターンに分けられる。 1. 同期通信 result = urlfetch.fetch("http://www.google.com/") if result.status_code == 200: doSomethingWithResult(result.content) その書きやすさのために、実務経験の

  • Kazuho@Cybozu Labs: TCP通信ではデータの送信をまとめて行うべき、もうひとつの理由(& サーバのベンチマーク手法の話)

    TCP通信をするプログラムを書く際に「データの送信はまとめて1回で」行うべき、というのは鉄則と言っていい、と思います。その理由としては、パケット数を最小限に抑えることでオーバーヘッドを少なくするためだと一般に説明されますが、自分はもうひとつポイントがあると考えています。次のグラフを見てください。 グラフは、一定量のデータを転送するのにかかる時間と使用するブロックサイズ(1回のwrite(2)で書き込むサイズ)の関係を表したものです注1。 ホスト間のTCP通信を行っている場合は、TCPのバッファが有効に機能するので、ブロックサイズ(=パケット数の逆数)による速度の変化は、ほぼありません。一方、同一ホスト上で通信を行うと、ブロックサイズと反比例して所要時間が反比例の関係にあることがわかります。 原因は、同一ホスト上の通信では、送信プロセスがwrite(2)を呼ぶたびにコンテクストスイッチが発生

  • 「テキストプロトコルは遅くないよ」という話 - kazuhoのメモ置き場

    「バイナリプロトコルは速い」「テキストプロトコルは遅い」という言説を、ときおり目にするけど、それって当なのか。個人的には、それって昔の話だと思ってる。 SMTP みたいな、ペイロードについてもターミネータ(とエスケープ)を使うプロトコル*1は確かに遅い。で、FTPプロトコルでは、大容量のデータを「高速」に転送するために、制御用のTCPコネクションと転送用のコネクションを分けたりしてた。 だけど、HTTPプロトコルは、テキストプロトコルだけど、ペイロードについてはターミネータを使わない。keep-alive を行う際には、Content-Length ヘッダ(あるいはchunkedエンコーディング)を使うことで、ペイロードのパース/変換処理を不要にしている。別の言い方をすると、テキストプロトコルだからと言って、バイナリプトロコルよりペイロードの処理時間が長くなるとは限らない。HTTP 以降

    「テキストプロトコルは遅くないよ」という話 - kazuhoのメモ置き場
  • Kazuho@Cybozu Labs: 「サーバ書くなら epoll 使うべき」は、今でも正しいのか

    多数のTCP接続をハンドリングするサーバを書くなら、1コネクション1スレッドのモデルではなく、epollやkqueueのようなイベント駆動型のI/O多重化を行うべきだ、と言われます。だが、そのような主張は、「C10K問題」が書かれた2002年から7年経過した今でも有効なのでしょうか? echoサーバを書いて、ベンチマークを取ってみることにしました。 ふたつのグラフは、いずれも接続数とスループットの関係を表しています。最初のグラフは、全接続がアクティブに通信した場合、あとのグラフは、全接続のうち小数のコネクションが順次アクティブになっていく、というモデルです。これらのグラフから、以下ようなことが読み取れます。 epoll も per-thread モデルも、良くスケールする epoll は、ワークセットが小さい場合に (最大50%) per-thread モデルよりも高速 少なくとも、1コネ

  • P2P basic

    P2P basic P2Pとは何か?〜基礎から研究紹介まで〜 最近,P2Pという言葉を良く聞きます。ニュースの中でも「P2Pを意識している」とか「P2Pの研究に着手」というニュースを聞いたことがあるのではないでしょうか? しかしながら,P2Pとは何かいまいちわからなかったり、どんなことに役に立つのか調べにくいことも確かです。 またP2Pの動向は激しく,その流れについていくのも大変です。 私は情報系の研究所でP2Pの研究開発をしていました。 そのため、このような現状を踏まえてP2Pの基礎から私の研究まで重要な部分を なるべくわかりやすく紹介致します。 また用語についてはわかりやすさを優先するために一部不正確なところがあるのでご了承下さい。 質問,コメント等はメール(tnishita@yahoo.co.jp) にて連絡して頂くと,ページ改良の参考になりますのでよろしくお願い致します。 P2Pに

  • 9月から新学期! スタンフォード、MIT、バークレイのコンピュータサイエンス講座をYouTubeで受講しよう

    では9月といえば2学期の始まりですが、米国では9月が新学期のスタート。留学したつもりで海外の大学で行われているコンピュータサイエンスの講座を受講するのはいかがでしょうか? YouTubeは今年の3月から、大学が公開している講義の動画を集めた「YouTube - EDU」コーナーを開始しました。スタンフォード、ハーバード、マサチューセッツ工科大学(MIT)、カリフォルニア大学バークレイ校(UC Berkeley)、そのほか多くの大学の講座が無料で見られます。 内容はコンピュータサイエンスに限らず、政治、経済、著名人のオピニオンなどが幅広くカバーされています。 YouTube Eduには大量の講座が蓄積されているのですが、自分に興味のある講座を探してそれらを見るには、検索を繰り返したり授業ごとに分割された動画を順番に探したりと、少々手間がかかります。 そこで、ITエンジニアの方が見て役に立

    9月から新学期! スタンフォード、MIT、バークレイのコンピュータサイエンス講座をYouTubeで受講しよう
  • RPC サーバの遅延リターン - steps to phantasien(2009-07-04)

    最近は過労気味でウェブにものを書くこともできない, という話で上司の同情を誘うべく 日人の労働時間やストレスの実態をまとめた エンドレス・ワーカーズ を読んだら, 自分の労働時間は日人労働者の上位 2 割から漏れていることを知り愕然とした. あんなに働いたってのに...残業エリートへの道は険しい. 道を進みたいわけじゃないけれど. (平均は越えてたぜ!) いずれにせよ流行からはすっかり脱落しているので, 時流を無視して仕事の話でもしよう. 以前, 会社の blog で RPC の結果をノンブロッキングスタイルで受け取るプリミティブ "弱関数" を提案した. でも試行錯誤の結果, いまは使っていない. C++ での弱参照は意図しないリークを作りやすい. 使いわすれることも多く, 忘れた頃にクラッシュする. 要求は明示的にキャンセルした方がいいことがわかった. (世間はみんなそうやってます

  • Interopクラウドコン優勝は「えとらぼ」分散key-valueストレージ kumofs - Blog by Sadayuki Furuhashi

    InteropTokyo 2009 クラウドコンピューティングコンペティション(通称クラウドコン)は、我等がえとらぼチームが優勝しました! 実行委員・StarBEDプロジェクト・IBMの皆様を始め関係者の皆様、ありがとうございました。 プレゼンテーションムービーとポスターとパンフレット*1を公開しました。 プレゼンムービー(マウスクリック/矢印キーで進む) PDF版 ポスター パンフレット *2 …どれも相当に気合いが入っているので、ぜひご覧ください^^ Ustream.tvの録画もあります(えとらぼチームはちょっと細切れですが) 途中で行ったデモは、StarBEDの45台の物理サーバーを使ってkumofsを動かして、ランダムで選んだノードを自動的にkill/再起動するスクリプトを走らせたものです。サーバーが落ちてもシステムは全然止まらないし、どのサーバーにも均等に負荷が分散されます。 時

    Interopクラウドコン優勝は「えとらぼ」分散key-valueストレージ kumofs - Blog by Sadayuki Furuhashi
  • やまうちのネットワークのお勉強 - PukiWiki

    ←やまうちのページへもどる やまうちのネットワークのお勉強 † やまうちがネットワークのお勉強をすすめるためのメモやブックマークです。 勉強中なので、まちがったところもあるかもしれません。 R + igraph Cytoscape JSViz Graphviz ↑ Cytoscape + R + igraph † Rは統計計算のための言語・環境です。igraphはネットワークを取り扱うためのライブラリです。 Cytoscapeは、ネットワークを可視化・解析するためのプラットフォームです。 ↑ R + igraph † データの読み込み scan(file="filename"):データを読み込む テーブルの書き出し write.table(L, file="filename"):テーブルデータを書き出す データのあつかい方  データをいじる as.numeric() :数値に変換す

  • ネットワーク本いろいろ(書きかけ) - 思っているよりもずっとずっと人生は短い。

    メモ。ネットワーク管理者とか運用担当者じゃなくて、Web系なプログラマ向けなのに注意。簡単なものから難しいものまで。だいたい書いたけど、まだもうちょっと追加するかも。 (追記:パケットキャプチャについてはあとで書いた) 古典 個人的なバイアス大。 『TCP/IPによるネットワーク構築〈Vol.1〉原理・プロトコル・アーキテクチャ』 TCP/IPによるネットワーク構築〈Vol.1〉原理・プロトコル・アーキテクチャ 作者: DouglasE. Comer,村井純,楠博之出版社/メーカー: 共立出版発売日: 2002/08/01メディア: 単行購入: 1人 クリック: 4回この商品を含むブログ (9件) を見る 古典。昔の教科書みたいな(今はどうなんだろう?)。個人的には思い入れがある。 ちょっと古い(新しい動向にキャッチアップしてない)かも。つうか読み返してもバイアスかかるので冷静な評価

    ネットワーク本いろいろ(書きかけ) - 思っているよりもずっとずっと人生は短い。
  • TUN/TAPがまともに使えるようになるまで | Silphireの日記 | スラド

    仮想NICドライバのTUN/TAPを使った時の手順・ハマり所について。 modprobe tun (忘れがち) /usr/src/linux/Documentation/networking/tuntap.txtを参考にして、プログラムから適当にtunデバイスを作成する。fd = open("/dev/net/tun"); ioctl(fd, TUNSETIFF, ifr); とすると、仮想NICが作成される。ifconfig tun0 192.168.0.1 などとして、IPアドレスを割り当てる。route add -net 192.168.1.0 netmask 255.255.255.0 dev tun0 などとして、ルーティングを設定する。これでファイルディスクリプタ fd を使って、パケットの送受信が出来るようになる。 参考: フリーのエミュレータQEMUを使おう@謎の処理系 S

  • バイナリシリアライズ形式「MessagePack」 - Blog by Sadayuki Furuhashi

    Googleが公開したバイナリエンコード手法であるProtocol Buffersは、クライアントとサーバーの両方でシリアライズ形式を取り決めておき(IDL)、双方がそれに従ってデータをやりとりするようにします。 この方法では高速なデータのやりとりができる反面、IDLを書かなければならない、仕様を変えるたびにIDLを書き直さなければならない(あらかじめしっかりとIDLを設計しておかないとプログラミングを始められない)という面倒さがあります。 ※追記:Protocol BuffersのデシリアライザはIDLに記述されていないデータが来ても無視するので(Updating A Message Type - Protocol Buffers Language Guide)、仕様を拡張していっても問題ないようです。 一方JSONやYAMLなどのシリアライズ形式では、何も考えずにシリアライズしたデータ

    バイナリシリアライズ形式「MessagePack」 - Blog by Sadayuki Furuhashi
  • VIVER

    VIVERとは? VIVERは、1台のコンピュータをCDやDVD、USBメモリなどから起動し、続いて他のコンピュータを次々にネットワークブートすることで、瞬時にディスクレスネットワークを構築するシステムです。 VIVERを使うと、非常に簡単な手順で、今あるLinuxシステムをUSBメモリやネットワークブートからブートできるようにすることができます。 特定のLinuxディストリビューションには依存していないので、CentOSでもopenSUSEでもDebianでもMandrivaでも、ほとんどのディストリビューションをディスクレスブートさせられます。 ネットワークブートにはNFSを使いません。分散多重化共有ブロックデバイスV-FIELDを使います。 もっと詳しく デモムービーを見る

  • クラブ・ラボ

    このサイトは、 KLab株式会社が公開しているオープンソースソフトウェアや実験サービスについて紹介するはずだけど ただいま引越中です。

  • Web API/Mashup開発者に必須!オフラインでも外部アクセスをテストできる·FakeWeb MOONGIFT

    今はネットワークを使ったWeb APIを提供するサービスが増え、それを利用したMashupも増えてきている。様々なデータを容易にとれ、Webシステムを開発できるのは魅力だが、開発中にもネットワークが必須というのが大きな足かせになる。 Mashupのテストがしやすくなる便利なライブラリ また、アクセス自体に料金がかかる場合、開発中の利用を躊躇してしまう。そのような経験がある方はFakeWebを使うべきだ。 今回紹介するオープンソース・ソフトウェアはFakeWeb、Webアクセスを偽装する便利なライブラリだ。 この手のものは一時期考えなくもなかったが、自分でサーバを立てる方法がいいかと思っていた。だがFakeWebの場合は違う。指定したURLへのHTTP(恐らくHTTPSも)接続を横取りし、予め指定した結果を返すライブラリだ。 複数アクセスによって返却値を変えられる 予め返却されるデータと、接

    Web API/Mashup開発者に必須!オフラインでも外部アクセスをテストできる·FakeWeb MOONGIFT
  • JGraphT

    a Java library of graph theory data structures and algorithms now with Python bindings too! flexible any object can be used for vertex and edge types, with full type safety via generics edges can be directed or undirected, weighted or unweighted simple graphs, multigraphs, and pseudographs unmodifiable graphs allow modules to provide “read-only” access to internal graphs listenable graphs allow ex

  • Diceros Horn

    プログラムは Java Web Start で動きます。 複雑ネットワーク スケールフリーネットワークシミュレータ 説明 プログラム Java3D あらかじめ Java3D をインストールしてからプログラムを実行してください。 剛体の運動シミュレータ 説明 プログラム 三体問題のシミュレータ 説明 プログラム ローレンツアトラクタ 説明 プログラム ルービックキューブ 説明 プログラム(3x3) プログラム(4x4) 花火 説明 プログラム プラネタリウム プログラム 物理シミュレーション パーコレーション 説明 プログラム カルマン渦 プログラム スピングラス プログラム イジングモデル 説明 プログラム 渦糸 プログラム DLA プログラム 数学シミュレーション マンデルブロー集合 説明 プログラム ジュリア集合 説明 プログラム EMアルゴリズム プログラム Black Schole

  • ネットワークプログラミングの基礎知識

    ネットワークプログラミングの基礎知識 ここでは IP アドレスやポート番号、クライアントとサーバの役割などを説明し、 perl・C言語・Java などでソケット (Socket) を使った HTTP クライアントや POP3 クライアント、簡単なサーバを作成してみます。 要はネットワークプログラミングをやってみよう、ということです。 このページのサンプルプログラムは、RFC などの規格に準拠した「正しい」プログラムではありません。 また、全体的にエラー処理が不十分です (今後改善する予定です)。 あくまでも概要を理解するためのサンプルととらえてください。 もし気でしっかりとしたクライアントやサーバを書きたいなら、このページを読んだ上で、 さらに RFC を熟読し、そして wget・Apache・ftp コマンドなどのソースを参考にしてください。 このページに間違いを見付けたら、掲示板

  • Geekなぺーじ

    「Geekなぺーじ」へようこそ。 このサイトは、同類を増やすべく技術メモを公開しています。 内容としては、情報技術/通信技術(インターネット技術)の分野で初心者~中級者向けです。 お探しの情報が無い場合には、お問い合わせ頂ければできる範囲で内容を増やして行きたいと思います。 暖かい心で見守って頂ければ幸です。