Seringkali ada situasi di pekerjaan sebelumnya ketika ada tugas yang menuntut yang membutuhkan waktu lama, tetapi diinginkan untuk segera merespons pada akhirnya, apa yang harus saya lakukan? Tentu saja, tulis sebuah program ...
Versi pertama hanya menggunakan notify-send, tetapi waktu menunjukkan ketidaknyamanan dalam prosesnya. Karena operasi sangat menuntut pada mesin, mesin menjadi tidak stabil pada saat itu dan saya ingin pindah dan minum kopi. Namun kembalilah ketika prosesnya selesai. Itulah sebabnya gagasan program muncul, yang dirantai ke dalam pipa konsol atau dibungkus sebagai program sudo dan pada akhirnya mengirimi Anda pemberitahuan ke obrolan. Dengan demikian, Anda akan melihat pemberitahuan di desktop dan di telepon.
Bagi yang tidak ingin membaca, tetapi ingin mencoba. (Hanya Linux)
- Kami mendaftar dengan bot dan mendapatkan token dengan perintah / config
- Unduh klien
- Luncurkan!
wget https://ice2heart.com/snitch chmod +x snitch SNITCH_USER_ID=<here_is_your_uuid> ./snitch sleep 10
Server
Idenya sederhana, kita membutuhkan server sederhana yang akan menerima pesan dan meneruskannya ke pengguna.
Dan karena saya tidak ingin repot mendaftar, menyimpan dan mengelola akun, saya memutuskan untuk membuatnya tampak sederhana bagi saya (dan sekarang sepertinya, tetapi saya tidak yakin apakah ini baik).
Menggunakan bot, seseorang menerima uuid v4 yang unik, yang dengannya ia pergi ke server. Otorisasi ada di sisi obrolan klien, tetapi saya hanya menyimpan beberapa ID internal uuid.
Oleh karena itu, mengambil node.js sebagai server dan menambahkan sedikit koa, nedb, node-telegram-bot-api, saya mengumpulkan bagian server, arsitektur awalnya menyiratkan lebih banyak gateway di obrolan, tetapi tidak ada kasing dan oleh karena itu hanya ada satu telegram.
Juga, saya tidak ingin menempatkan aplikasi js di Internet secara langsung, jadi menggunakan keajaiban buruh pelabuhan, saya menambahkan server proxy caddy. Kenapa dia? Karena saya suka format file konfigurasi.
Server ternyata sederhana, tetapi cukup untuk operasi.
Oleh karena itu, kami mendapatkan file komposisi buruh pelabuhan yang sederhana, kami juga memerlukan kunci bot, yang kami masukkan ke file .env agar tidak menyimpan kunci kami di github, yang tidak bagus.
Jadi untuk peluncuran, kita membutuhkan buruh pelabuhan, pembuat dock dan kunci untuk gerobak bot, untuk mendapatkan milikmu, Anda harus beralih ke botfather .
Setelah itu, menyusun buruh pelabuhan dan server kami siap untuk bekerja.
Pelanggan
Untuk klien, saya memutuskan untuk pergi karena alasan sederhana bahwa itu akan menjadi 1 file biner, yang kemudian dapat dengan mudah didistribusikan.
Ada dua ide utama tentang klien.
- Kami mengintegrasikan ke dalam pipa, mengumpulkan log (tidak diterapkan), mengirim pesan untuk menutup pipa.
- Kami membungkus aplikasi, misalnya sudo, pada akhirnya kami mengirim log dan pesan dengan kode pengembalian.
Selama implementasi, tidak ada cara mudah untuk mengetahui kode pengembalian dari program sebelumnya di dalam pipa, sayangnya hal ini mengurangi kesenangan menggunakan program dalam pipa.
Untuk konfigurasi, saya memilih variabel lingkungan, karena membuatnya mudah untuk menyalin pengaturan dari mesin ke mesin, ditambah lagi mereka mudah diganti.
Akibatnya, instalasi menjadi sesederhana mungkin.
- Unduh binernya
- Kami mendaftar di PATH
- Kami menulis variabel SNITCH_USER_ID dalam konfigurasi shell dengan uuid Anda
- Selesai, Anda hebat!
Sekarang Anda dapat menjalankan perintah panjang dalam bentuk snitch make
dan setelah selesai kami akan menerima pesan bahwa aplikasi telah selesai dan kami bahkan akan tahu apakah itu berhasil atau tidak.
Untuk membangun, saya membuat skrip kecil, yang hanya disebut r. Ini akan mengumpulkan aplikasi go dan meneruskannya melalui upx. Dan pada output kita mendapatkan biner yang terhubung secara statis dan indah.
Anda dapat menemukan kode sumber di sini.
Dan ketika semuanya sudah siap, Anda dapat beralih ke bot dengan perintah / konfigurasi
Dan dia akan membuat catatan tentang pengguna kami dan mengembalikan uuid.
Anda juga dapat selalu dihapus dari database, untuk ini ada perintah / hapus
Dengan demikian, kami mendapat aplikasi yang cukup sederhana namun efektif yang akan memberi tahu kami tentang tugas yang diselesaikan, dengan mudah dan alami, bahkan ketika kami minum kopi.