読者です 読者をやめる 読者になる 読者になる

みんなで一緒にターミナル Partty! バージョン0.2リリース!

1つのターミナルを複数の人で同時に操作できるソフトウェア Partty のバージョン0.2をリリースします!


Parttyとは?

1つのCUI端末を複数の人で同時に操作することができるようにするソフトウェアです。

ペアプログラミング、グループプログラミングに

ターミナルそのものを共有するので、打ち間違いやTab補完を使う瞬間まで生々しく共有されます。「ペアプロしよう」と言う代わりに、「パーティーしよう!」と言えば盛り上がること間違いなし!
シェルの使い方や目にもとまらぬエディタ捌きなどなど、ソースコードには現れないテクニックも共有することができます。


使い方

一番最初にターミナルを起動した人が「ホスト」になります。他の人は「ゲスト」として後から接続します。

まずはホストを起動します。

[driver.local ~/partty]$ ./partty host
>Partty! start

続いて別のマシンから(あるいは同じマシンで別のターミナルを開いて)、ホストに接続します。引数にホストのIPアドレスかホスト名を指定してください。

[partner.local ~/partty]$ ./partty guest driver.local
>Partty! connected

3人以上でもOKです。

[spectator.local ~/partty]$ ./partty guest driver.local
>Partty! connected

※間違っても同じターミナル上でホストとゲストを両方起動してはいけません。


切断したいときは、「別のターミナルを開いて」、「./partty exit」とコマンドを実行して接続中のセッションを確認してください。

[spectator.local ~/partty]$ ./partty exit
>Partty! session list: 
  session 1 (guest):    ./partty guest driver.local

それから切断したいセッションを選んで、「./partty exit <番号>」と実行してください。

[spectator.local ~/partty]$ ./partty exit 1
terminating session 1 (guest):   ./partty guest driver.local

単純にparttyのプロセスにTERMシグナルを送ってもOKです。


ホストとゲストとの通信には、TCPの代わりにUNIXドメインソケットを使うこともできます。ちょっとセキュアに使えます。

[driver@driver.local. ~/partty]$ partty host -l ~/socket
[driver@driver.local. ~/partty]$ chmod 660 ~/socket
[partnerr@driver.local. ~/partty]$ partty guest -l ~/socket

端末サイズについて

ターミナルの大きさはホストに合わせられます。ホストよりもゲストの方が小さいと、変なところで改行されて崩れてしまいます。ゲストのターミナルを大きくするか、ホストのターミナルを小さくしてあげてください。

@CodeRepos

Partty!のソースコードCodeReposlang/c/parttyにあります。どんどんいじってください。どんどん改変してください。

epoll/kqueueの抽象化

Partty!はepoll/kqueue/select/pollを抽象化するライブラリFDIO::Multiplexerを含んでいます。こちらも合わせてどうぞ。
このライブラリを発展させて、今は非同期IOをpthreadでエミュレーションするライブラリlibpioというものを作っていたりもします。

コマンドライン引数パーサKazuhiki

型変換機能付きのコマンドライン引数パーサKazuhikiを搭載しています。C++で簡単に高機能な引数パーサを書けます。こちらも合わせてどうぞ。

機能一覧:

  • 「-l」や「-v」などのスイッチ
  • 文字列→数値の変換
    • 16ビット/32ビット/64ビット(型から自動判別)
    • 負の数(signedなら負の数もサポート)
    • 浮動小数点(float or doubleなら浮動小数点もサポート)
  • ホスト名の指定
    • 名前解決も自動
    • IPv6/v4両対応