Proyek ini terinspirasi oleh r/Place. Ini adalah kanvas bersama online tempat Anda dapat menggambar piksel individual.
Proyek ini online di pl.g7kk.com.
Anda perlu mengkompilasi place.go menggunakan kompiler Go.
Jalankan go build
:
cd ./place
go build cmd/place/place.go
alternatifnya, gunakan go install
:
cd ./place
go install cmd/place/place.go
Jalankan place dan setel argumen -root ke lokasi direktori web/root. Anda juga dapat mengonfigurasi pengaturan lain saat menjalankannya (lihat di bawah).
place -root web/root -port :8080
-rangkaian akar
Direktori dengan file web. (standarnya adalah "./root")
-hitung ke dalam
Jumlah koneksi maksimum. (standarnya 64)
-lebar ke dalam
Lebar untuk membuat kanvas. (standarnya 1024)
-tinggi ke dalam
Ketinggian untuk membuat kanvas. (standarnya 1024)
-memuat tali
Sebuah png untuk dimuat sebagai kanvas. (Jika tidak disetel, itu akan membuat kanvas kosong)
-simpan tali
Nama untuk menyimpan kanvas. (default "./tempat.png")
-log rangkaian
File log untuk menulis. (Jika tidak disetel maka akan masuk ke baris perintah)
-rangkaian pelabuhan
Port tempat server mendengarkan. (standar ":8080")
-interval int
Simpan interval dalam hitungan detik. (standarnya 180)
-wl (tidak ada nilai) Mengaktifkan daftar putih
-string daftar putih Jalur ke daftar putih. (defaultnya adalah "daftar putih.csv")
-loadRecord string Jalur gambar rekaman yang akan dimuat. (Membuat catatan kosong jika tidak disetel)
-saveRecord string Jalur untuk menyimpan gambar rekaman. (default "catatan.png")
Anda juga dapat menambahkan daftar putih. Jika daftar putih diaktifkan, hanya pengguna yang memiliki kunci yang dapat menggambar di kanvas. Server juga akan menyimpan catatan siapa yang menempatkan setiap piksel.
Untuk menggunakan daftar putih, pertama buat dokumen csv. Setiap pengguna akan memiliki kunci pribadi dan ID yang akan mengidentifikasi mereka dalam catatan. Kuncinya harus berupa string yang panjang dan ID harus berupa bilangan bulat dalam kisaran [1,65535].
Saya merekomendasikan menggunakan uuids untuk kuncinya. Misalnya:
2237701c-7558-4424-95e1-beee4f6a406a,1
f9e41cf2-0e5d-43f2-bffd-5e2f1aab0a3b,2
4917ba68-41be-4956-93a7-0563257ff182,3
79df0674-f6d5-4556-baad-992e81f72bb2,65535
Warna piksel pada gambar rekaman sesuai dengan ID dalam daftar putih.
Saat Anda mengaktifkan daftar putih menggunakan argumen -wl, ia akan mencari file bernama "whitelist.csv" di direktori kerja. Namun Anda juga dapat menentukan jalur Anda sendiri:
place -wl -whitelist my_white_list.csv
Anda juga dapat memuat gambar rekaman yang ada menggunakan -loadRecord, yang mirip dengan -load untuk memuat kanvas
place -load place.png -wl -loadRecord record.csv
Jika Anda tidak menyertakan argumen -wl, daftar putih dan catatan akan diabaikan.
Saya merekomendasikan menyiapkan beberapa skrip untuk me-restart server dengan mudah atau mengembalikan kanvas.
Skrip ini mematikan server dan memulai ulang dengan kanvas lama. Ini tidak mengatur ulang kanvas.
Di server saya, skrip ini diatur sebagai tugas cron untuk dijalankan setiap malam untuk menghapus koneksi soket web yang tersisa.
cd ~ /go/src/place/web
pkill place
~ /go/bin/place -port :80 -load place.png & > place.log &
Skrip ini mengembalikan kanvas ke gambar yang disimpan sebelumnya.
cd ~ /go/src/place/web
pkill place
cp place_rollback.png place.png
~ /go/bin/place -port :80 -load place.png & > place.log &