タグ

ブックマーク / kazuhooku.hatenadiary.org (4)

  • WebSocket(RFC 6455)上で使用するプロトコル設計についての備忘録 - kazuhoのメモ置き場

    一般論として、全二重の通信プロトコルを実装するにあたっては、いくつか注意すべき点があって、具体的には、到達確認と切断シーケンスについて定めておかないと、送達されたはずのメッセージがロストしていたり、切断タイミングによってエラーが発生*1したりする。 具体例をあげると、たとえばTCP/IPにおいてshutdown(2)を用いずに、いきなりclose(2)を呼んでいると、read(2)やwrite(2)がエラー(ECONNRESET)を返す場合がある。 翻って、WebSocket (RFC6455)の場合はどうなってるか? だいたい以下のような感じっぽい。 ws.close()が呼び出されるとWebSocketをCLOSING状態に変更し、Closeフレームを送信する ws.onmessageはWebCosketがCLOSING状態にある間も呼ばれるかもしれない*2 相手からCloseフレーム

    WebSocket(RFC 6455)上で使用するプロトコル設計についての備忘録 - kazuhoのメモ置き場
    naga_sawa
    naga_sawa 2014/01/29
    106ブクマ/ここら辺が面倒っぽいのでWebSocketはサーバ→クライアントの通知に絞ってしか使ってないな/なんか定石があれば/それにしてもなんで↑↓無言なのか…
  • 30秒でわかるオープンソースライセンスまとめ - kazuhoのメモ置き場

    「よくわかるFOSSライセンスまとめなんてないよねー」と煽られたので3分で書く。 オープンソースライセンスは、以下の3種類に大別される。 代表的なライセンス 改変部分のソースコードの開示が必要 リンクして使う、他のソフトウェアのソースコード開示が必要 GPL (コピーレフト型) ○ ○ LGPL /MPL (準コピーレフト型) ○ × BSDL / MITL (非コピーレフト型) × × 自作のソフトウェアをオープンソースで公開する場合、 コピーレフト型にする場合は「GPLv2以上」 準コピーレフト型にする場合は「LGPL兼MPL」 とするのが無難。非コピーレフト型はMITLのほうがBSDLよりも明確だと言われることが多い(そしてどちらを選んでも問題ない)。 ※表の出典は OSS ライセンスの比較および利用動向ならびに係争に関する調査 より詳しく知りたい方へ: ライセンスの解釈については、

    30秒でわかるオープンソースライセンスまとめ - kazuhoのメモ置き場
    naga_sawa
    naga_sawa 2013/10/06
    有名ライセンスをザックリ分けるとこうなって、特許がからむともう少しややこしくなる
  • git branch の結果を時間順にソート - kazuhoのメモ置き場

    ランチが大量にあると、git branch の結果を最終更新時間でソートして表示したくなりますよね。以下のワンライナーでできます。 (for i in `git branch | colrm 1 2` ; do echo `git log --date=iso8601 -n 1 --pretty="format:[%ai] %h" $i` $i ; done) | sort -r git branch を最終更新の日付でソートするオプションがほしい Kazuho Oku on Twitter: "git branch を最終更新の日付でソートするオプションがほしい" ってツイートしたら、@likk さんに、 @kazuho https://gist.github.com/Likk/9af89b10fd0008df91ad … ワンライナー書いたのでこれをgitのエイリアスに。 永遠に

    git branch の結果を時間順にソート - kazuhoのメモ置き場
    naga_sawa
    naga_sawa 2013/02/07
    branchを更新時刻順にソートして表示
  • C++ のヘッダファイルを #include するだけで使える GC 書いてみた - kazuhoのメモ置き場

    そういえば C++ のヘッダファイルを #include するだけで使える GC を書きました。使い方は下のサンプルコードを見てもらえばいいとして、特徴としては、 ヘッダファイルを #include するだけで使える C++ の標準機能だけを使っているのでポータブル*1 mark-and-sweep, precise GC ってなあたりでしょうか。コードは GitHub - kazuho/picogc: a tiny, portable, precise, mark-and-sweep GC in C++ にあります。 C++プロジェクトで、ちょっとここだけは GC がほしいんだけど、ってなケースで使いやすいと思います。速度も、そこそこでるんじゃないかな*2。 というわけで、以下、サンプルコード。軽く説明しておくと、 GC を使うクラスは picogc::gc_object を継承する

    C++ のヘッダファイルを #include するだけで使える GC 書いてみた - kazuhoのメモ置き場
  • 1