タグ

ブックマーク / castaneai.hatenablog.com (4)

  • .NETのWebSocketと、切断の扱い - castaneaiのブログ

    リアルタイムな通信を行う際に何かと活躍するプロトコル WebSocket。 .NETには System.Net.WebSockets として組み込まれており、簡単に使い始めることができる。 しかし、WebSocketにおいて「切断」という概念は取り扱いに注意が必要だ。 記事ではSystem.Net.WebSocketsが切断をどのように扱っているか見ていく。 WebSocketにおける正しい切断 WebSocket は Socket という名前からも想像できるように、基となるのはTCP Socketだ。 よってTCP Socketを閉じれば切断できるが、これは正しい切断ではない。 RFC 6455 - The WebSocket Protocol の "Section 1.4 Closing Handshake" によると切断時にもHandshake処理があり、流れは次のようになる。 切

    .NETのWebSocketと、切断の扱い - castaneaiのブログ
  • Go: selectでctx.Done()を受信するときの注意点 - castaneaiのブログ

    Goで非同期的な処理の中断を検知したい場合、次のように select と ctx.Done() を使って書くことが多い。 とても便利なパターンなのだが、いくつか使うときの注意点がある。 select { case <-ctx.Done(): // done case <-ch: // ... } selectによる受信のランダム性 channelに届いたタスクを順番に処理しつつ、キャンセル要求が来たら終了する簡単なプログラムを例にする。 コードにある通り次のような順序で実行される。 task1を送る キャンセル要求を送る task2を送る package main import ( "context" "log" "time" ) func main() { ctx, cancel := context.WithCancel(context.Background()) tasks := m

    Go: selectでctx.Done()を受信するときの注意点 - castaneaiのブログ
  • 『みずいろ』HDDフォーマット事件は本当だったのか検証する - castaneaiのブログ

    あるとき、ネット上でこんな事件の噂を発見した。 『みずいろ』 HDDフォーマット 事件 エロゲー業界を彩る悲惨な事件は数多あれど、威力と内容を考えて4番を張れるものといえば、やはりこれだろう。2001年、ねこねこそふとから発売された『みずいろ』初回ロット版に限り、アンインストールするとHDDの他のデータを巻き込んで吹っ飛ばす、という恐るべき不具合が発生していた。実はこの件、「インストールしたフォルダをまるごと消す」(当時は、自動で「mizuiroフォルダ」などを作らなかったので、たとえばProgram Fileフォルダに直接インストールしてしまうと、アンインストール時にProgram Filesフォルダそのものを削除していた)というものと、「インストールしたフォルダ外のデータを消すことがある」という話が出ていて、不具合な正確なところは私も把握していないのだが、とりあえずヤバいバグということ

    『みずいろ』HDDフォーマット事件は本当だったのか検証する - castaneaiのブログ
  • Goでcallback patternを考える - castaneaiのブログ

    プログラミング言語ではおなじみのcallbackについて、Goでどのように実装すると良いか考えた。 Goではcallbackよりもchannelが良い? まず、非同期な処理からの結果を通知するしくみとして、Goだとchannelが使える。 しかし、chnanelは双方向だったりcloseできたりと高機能なので、単純に完了したことを通知するだけであれば、callbackでいい気がする。 Stackoverflowにも次のような回答があった。 https://stackoverflow.com/questions/25203988/go-and-callbacks Channels aren't preferred over callbacks, the standard library uses this style of callbacks all over the place, it h

    Goでcallback patternを考える - castaneaiのブログ
    W53SA
    W53SA 2021/05/05
  • 1