このプロジェクトはr/Placeからインスピレーションを受けました。これは、個々のピクセルを描画できるオンライン共有キャンバスです。
このプロジェクトは pl.g7kk.com でオンラインで公開されています。
Go コンパイラーを使用して place.go をコンパイルする必要があります。
go build
実行します。
cd ./place
go build cmd/place/place.go
あるいは、 go install
使用します。
cd ./place
go install cmd/place/place.go
place を実行し、 -root引数を web/root ディレクトリの場所に設定します。実行時に他の設定を構成することもできます (下記を参照)。
place -root web/root -port :8080
-ルート文字列
Web ファイルが含まれるディレクトリ。 (デフォルトは「./root」)
-count int
接続の最大数。 (デフォルトは64)
-width int
キャンバスを作成する幅。 (デフォルトは1024)
-高さの整数
キャンバスを作成する高さ。 (デフォルトは1024)
-ロード文字列
キャンバスとしてロードする png。 (設定されていない場合は、空白のキャンバスが作成されます)
-文字列を保存
キャンバスを保存する名前。 (デフォルトは「./place.png」)
-ログ文字列
書き込むログ ファイル。 (設定されていない場合はコマンドラインにログが記録されます)
-ポート文字列
サーバーがリッスンするポート。 (デフォルト「:8080」)
-sinterval int
保存間隔を秒単位で指定します。 (デフォルトは180)
-wl (値なし) ホワイトリストを有効にします。
-whitelist string ホワイトリストへのパス。 (デフォルトは「whitelist.csv」)
-loadRecord string ロードするレコード イメージのパス。 (設定されていない場合は空のレコードを作成します)
-saveRecord string レコード イメージを保存するパス。 (デフォルトは「record.png」)
オプションでホワイトリストを追加できます。ホワイトリストを有効にすると、キーを持つユーザーのみがキャンバスに描画できるようになります。サーバーは、各ピクセルを誰が配置したかの記録も保持します。
ホワイトリストを使用するには、まず CSV ドキュメントを作成します。各ユーザーは個人キーと、記録内でユーザーを識別する ID を持ちます。キーは長い文字列で、ID は [1,65535] の範囲の整数である必要があります。
キーには uuid を使用することをお勧めします。例えば:
2237701c-7558-4424-95e1-beee4f6a406a,1
f9e41cf2-0e5d-43f2-bffd-5e2f1aab0a3b,2
4917ba68-41be-4956-93a7-0563257ff182,3
79df0674-f6d5-4556-baad-992e81f72bb2,65535
記録画像の画素の色は、ホワイトリストのIDに対応します。
-wl 引数を使用してホワイトリストを有効にすると、作業ディレクトリ内で「whitelist.csv」という名前のファイルが検索されます。ただし、独自のパスを設定することもできます。
place -wl -whitelist my_white_list.csv
-loadRecord を使用して既存のレコード イメージをロードすることもできます。これは、キャンバスをロードする -load と同様です。
place -load place.png -wl -loadRecord record.csv
-wl 引数を含めない場合、ホワイトリストとレコードは無視されます。
サーバーを簡単に再起動したり、キャンバスをロールバックしたりできるように、いくつかのスクリプトを設定することをお勧めします。
このスクリプトはサーバーを強制終了し、古いキャンバスで再起動します。これはキャンバスをリセットしません。
私のサーバーでは、このスクリプトを cron ジョブとして設定して毎晩実行し、残っている Websocket 接続を削除します。
cd ~ /go/src/place/web
pkill place
~ /go/bin/place -port :80 -load place.png & > place.log &
このスクリプトは、キャンバスを以前に保存した画像にロールバックします。
cd ~ /go/src/place/web
pkill place
cp place_rollback.png place.png
~ /go/bin/place -port :80 -load place.png & > place.log &