mizdra's poem

雑なこと (日記/技術ポエム/メモ/…) を書くブログです.

2018-11-01

Dentoo.LT

ポッキーの日にDentoo.LTやります. なんだか登壇希望者が少ないらしいのでネタを抱えているそこのあなた, 今すぐ登壇申請して下さい. とりあえず今この日記を見ている人が全員登壇申請すれば解決するはずです. 是非.

atnd.org atnd.org atnd.org

ちなみに僕も登壇申請していて「祝う2」というタイトルで話します. 気になる方は今すぐatndから参加登録して見に来て下さい.

11月

ノベンバー.

2018-10-28

今日の電車

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

ポケモンGO

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

共同編集対応エディタ

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

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

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

youtu.be

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

2018-10-15

今日の電車

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

同時編集対応エディタ

大学のネットワークプログラミングという実験で, ソケット通信を使った好きなプログラムを作る課題に取り組んでいる. 講義ではその例としてリアルタイムチャットや対戦型ゲームが挙げられていたけど, ありきたりすぎてつまらないので他の題材を探していた. そこで以前から「DocBaseの同時編集機能を実現しているアルゴリズム | KRAY Inc」という記事を読んで気になっていたOperational Transformationを用いた同時編集対応エディタを作ることにした. なによりHackMDやScrapbox, Google Documentのような同時編集機能を自分で実装するという体験は憧れますよね.

とはいっても授業日数には限りがあり, Operational Transformationの実装に時間が掛かって未完成のまま終了してしまっては悲しいので, 最悪Operational Transformationの実装が間に合わなくても共同編集可能なエディタとしては機能するような実装方針を立てて実装することにした.

  • 実装の方針
    1. 1つのクライアントが同時に接続可能なドキュメント共有エディタのプロトタイプを作る
      • 文字の挿入や削除は対応せず, 全文書き換えのみ対応
      • 挿入や削除といった操作ではなく, ドキュメントを丸ごと送信する方式
    2. 複数のクライアントからの接続に対応
    3. 文字の挿入, 削除に対応
      • 挿入コマンド, 削除コマンドをサーバに送信する方式
      • コマンドはサーバを経由して全共同編集者に反映される
    4. 十字キーによる移動, カーソルを使った編集に対応
    5. Operational Transformationに対応
      • 操作はその操作を行った者には即時反映され, それ以外の共同編集者にはサーバをして反映される
      • 全てのクライアントの整合性が担保されるよう, サーバで操作のコンフリクトを解決する
  • オプション
    • 共同編集者のカーソル位置の表示

1から順に作っていけばOperational Transformationによる同時編集対応エディタが完成する. 仮に5まで終わらなくても, 3まで出来ていれば共同編集可能なエディタとしては機能するはず. とりあえず2時間で2まで出来ていて後9時間あるので4くらいまでは余裕を持って実装できそうな気がする. やっていきます.

21歳になりました

21歳になりました. めでたいですね. 21歳もやっていきましょう.

ちなみにこちらはmizdraの誕生日をお祝いできる最高便利ワンライナーです.

$ npx mizdra/happy-birthday-mizdra

Image from Gyazo

そしてこちらは不思議と押したくなる最高便利リンクです.

よろしくお願いします.

2018-10-12

今日の電車

  • 行き: 負け
  • 帰り: 勝った気持ち

便利ハンコ

hogasさんによって部室に便利ハンコが持ち込まれたので, 押して遊んでいた. とりあえず劇っぽいものに劇を押しておいた.

個々でも十分良いけど「劇毒」みたいに組み合わせても良いですね. 是非お試し下さい.

3Dプリンタ

最近部で3Dプリンタを購入したので, mizdraハンコを作ってみた. 朱肉とハンコさえあれば自己を出力できる便利アイテムです.

2018-09-30

無常

MacBook Proも質量を持った物体なので, 空から降ってきたら壊れるし, 人に当たると人は死ぬ.

プログラミングRust輪読会

「プログラミングRust」, 購入したは良いがまだ1Pも読んでないのでガッと読みたいなあと思い, 輪読会開催したいという話になった. 丁度弊サークル内に「プログラミングRust」を購入した人が何人か居たので, そういう人に声を掛けて参加者を募ったら7人ほど集まった. 競プロでC/C++触ってる人が居たり, Lisp触ってる人が居たり, Webフロントエンドやバックエンドやってる人が居たりして, 色んな知見が集まって良さそうな感じがする.

僕自身は輪読会というものに参加したことも主催したことも無いので, 今は企業での実践例を参考にしながら慎重に輪読会のルール決めをしている段階. 脱落しにくい/復帰しやすい仕組みを作りつつ, 読んで理解して議論することに集中できる環境を作れるようにしたいですね.

大学

明日から後学期です. やっていきましょう.

2018-09-27

GigaViewerのオフライン対応

インターンで開発に関わったGigaViewerにオフラインで読む機能が追加された. 最高便利機能っぽい.

tonarinoyj.hatenablog.com

これ見ていたらPWAでオフラインでの体験の改善に真剣に取り組むやつやってみたくなってきた. 大変そうだけどめっちゃ楽しそう.

のんのんびより ばけーしょん

ばけーしょん終わる前に観に行った.

最初から最後まで最高だった. EDめっちゃ良かったですね.

あとこれは映画の内容とは直接関係がないけど, 雰囲気が台無しになるので夏の映画は雨の日に観るべきではない…

リトルウィッチアカデミア

良い.

www.nicovideo.jp

WI-1000X

今日は手元に届いてから初めて電車の中で使ってみたのだけど, ノイズキャンセリングをONにするとめっちゃ静かになってすごい. 当然ながら完全に音が消える訳ではないけど, エアコンや周りの人から出ている音が全く気にならないほどカットされている. 何というか雑音によるストレスが一切無いという感じ. 良い買い物をした気がする.