mizdra's poem

雑なこと (日記/技術ポエム/メモ/…) を書くブログです. 真に受けないでください.

2018-10-28

今日の電車

  • 行き: 勝ち
  • 帰り: 勝ち

ポケモンGO

コミュニティデーでダンバル乱獲していた. 成果は3時間でダンバル202匹, 内6匹が色違いという感じ. 色違いは沢山手に入ったのだけど高個体値のダンバルがあんまり手に入らなくてちょっと残念.

共同編集対応エディタ

前に言ってた大学の課題で作っている共同編集対応エディタがほぼ完成した. 実装した機能はざっと以下の通り.

  • 1文字単位での文字の挿入, 削除に対応
  • 十字キーによる移動, カーソルを使った編集に対応
  • 改行, 折返しに対応
  • Operational Transformationに対応
  • 複数のクライアントからの接続に対応
  • 他のクライアントの挿入/削除によるカーソル位置のずれに対応
  • 移動できない位置にカーソルを移動しようとするとbeep音で警告する機能をサポート

動作の様子を動画で撮ってみた. 今回は遅延のある環境を再現するためにサーバ側でクライアントから操作を受け取るたびに0.5秒sleepする処理を入れている. 動画を見れば, 同じ文章を同時に編集しても想定外の位置に飛んだりすることなく, 操作者の操作はローカルに瞬時に反映され, 遅延してからサーバと他のクライアントに反映されている様子が分かると思う. Operational Transformationスゴイ.

youtu.be

時間が無くてOperation Transformation実装できないかもなーと思っていたのだけど, 以外と何とかなるもんですね. 普段こういう凝ったアルゴリズムをプログラミングで実装することはあまりないので, 良い体験ができた気がする. 提出日は明日なのでもうこれ以上機能を追加することはできないけど, もっと時間があれば共同編集者のカーソル位置の表示とかやってみたかった. ざんねん.