GNU Screenを使用したリモートペアプログラミング

この記事の翻訳は、ペアプログラミングを定期的に使用するか、少なくともコードを共有し、テキストモード(Emacs、viなど)で動作するテキストエディターに精通しており、すぐに使用できる人にとって、適切なステップバイステップの説明として役立ちます。 この記事には多くの興味深いリンクがあります。それらを見てみることをお勧めします。最初のコメントには、同様のエクスペリエンスへのリンクが含まれていますが、GNU Screen- tmuxの類似物が含まれています。



Siyeloには2つの分散チームがあり 、1つはケープタウンに、もう1つはスコピエにあります。 オフィス間でリモートペアプログラミングを行う方法を理解する必要があります。 多くの可能性があります( ここに優れた一般的な投稿)。

以前は、Skypeを使用して画面を分割していましたが、次の問題がありました。



-別のユーザーの画面を制御することはできません( 奇妙なことに、おそらく何らかのプラグインの助けを借りて、このような機会があります

-画面を同時に分割してビデオ会議を使用することは不可能です( これが必要な理由については、上記の数行にあるリンクのメモを参照してください

-ネットワーク帯域幅が問題になることがあります

ペアプログラミング用のツールではありません





最近Google+ハングアウトを試しましたが、同じ欠陥があることがわかりましたが、音声およびビデオ会議には適していました。 しかし、ペアプログラミングツールに本当に必要なのは、コードをリアルタイムで共同編集することです。



解決策: 画面 Screenには多くの便利なユースケースがありますが、この記事では次の2つに焦点を当てます。



-読み取り専用:画面を片側で分割し、もう片側から干渉を受ける可能性がないため便利です。

-寛容:共同プログラミングに便利



以下は、両方のシナリオを実行する方法です。 注:画面などのツールの欠点は、すべての参加者が端末で実行されるエディターを使用できる必要があることです。 幸いなことに、私たちはすべてvimが大好きです。



すべての通信は安全なチャネルを経由するため、まず、SSHサーバーをインストールする必要があります。



sudo apt-get install openssh-server



最初のシナリオでは、受信側にゲストアカウントを追加する必要があります。 セキュリティ上の理由から、 rbash (bashの制限 )を使用して作成します。これは、リモート側のプログラマーがマシンに接続するために使用します。



sudo useradd -s / bin / rbash guest

sudo passwdゲスト

sudo mkdir / home / guest



次に、ゲストアカウントのプロファイルを設定する必要があります。 以下を/home/guest/.profileに追加します。



trap "" 2 3 19#ユーザーがシェルに入るのを防ぐ

クリア

echo "ペアプログラミングセッションへようこそ"

echo -n "続行するにはEnterキーを押してください" && read

screen -x dalibor / pairprog

出る



ここでわかるように、「screen -x dalibor / pairprog」は、ユーザー「dalibor」によって開始されたコード「pairprog」でセッションに自動的にゲストを接続します。



次に、受信側に画面をインストールする必要があります(念のため、まだそこにない場合)。



sudo apt-getインストール画面



セキュリティ上の理由から、システムユーザーが他のユーザーのセッションに接続できないように、画面はデフォルトで設定されています(エラーメッセージ「マルチユーザーサポートにはsuid rootを実行する必要があります」)。 他のユーザーが接続できるようにするには、次を実行する必要があります(画面へのパスを修正する必要があります)。



sudo chmod + s / usr / bin / screen

sudo chmod 755 / var / run / screen



ご注意 perev。 おそらく、両方のユーザーをグループ(たとえばペア)に追加し、このグループでchgrpを作成すれば十分でしょう。



次に、次の行を〜/ .screenrc構成ファイルに追加します。



ハードステータスオン

hardstatus alwayslastline

startup_message off

termcapinfo xterm ti @:te @

hardstatus文字列 "%{= kG}%-w%{。rW}%n%t%{-}%+ w%=%{.. G}%H%{.. Y}%m /%d%C %a "

screen -t bash1 1



#マルチユーザー設定

マルチユーザーオン

aclchg guest -wx "#、?"

aclchgゲスト+ x "コロン、壁、切り離し"



ここで最も重要なことは、複数のユーザーがセッションに同時に接続できる「マルチユーザーオン」と、ゲストユーザーのすべてのウィンドウ(#)とコマンド(?)の記録と実行に関するすべての制限を削除する「aclchg」です。 このように構成すると、受信側は何でもできるようになり、ゲストは<ca>ウォール「hello!」を使用してメッセージの表示または書き込みのみを行うことができます。



最後に、スクリーンセッションはホストによって開始されます。



screen -S pairprog



ゲストはSSH経由で受信マシンにログインします:



sshゲスト@ホスト



これで、1つの端末で作業できます。 ここで画面コマンドについてもう少し説明します。



ゲストユーザーを信頼する場合は、「acladd」コマンドを使用してゲストユーザーに権限を追加できます。



マルチユーザーオン

アクラッドゲスト



この場合、ゲストユーザーは次のコマンドを使用してセッションに参加できます(既にSSH経由でログインしています)。



screen -x host / pairprog



画面コマンドの詳細については、コマンドリファレンスをご覧ください 。 主なチーム:



Ctrl-a d#画面screenから切断

Ctrl-a Ctrl-a#画面を切り替える

screen -r#画面への再接続eran



突然リンクを読まない場合、そこから興味深いものを以下に示します。



セッション中、私は聞くだけでなく、2番目の参加者も見たいです。そうしないと、ボディーランゲージが聞き取れません。



GNU Screenのより人道的な類似物もあります-tmuxはNetBSDから来たもので、より思慮深いアーキテクチャで、より読みやすくサポートされたコードを持っています。 それ以外は、水平および垂直の両方のウィンドウ分離があり、パッチなしで使用できます。 tmuxとvimを使用したペアプログラミングに関する簡単なメモを次に示します。



All Articles