vzi adalah penerus spiritual yaitu
baris perintah vzi (sekarang) diimplementasikan menggunakan deno, dan rendering memerlukan Protokol Chrome DevTools. vzi hanya diuji untuk Mac, meskipun seharusnya bisa berfungsi di Linux (cukup beri tahu jalur ke biner Chrome).
Banyak dari kita telah menggunakan baris perintah selama beberapa dekade. Keberhasilan antarmuka baris perintah terkait erat dengan gagasan pipa Unix . Pipa memberi kita kemampuan untuk menyusun fungsi kompleks dengan cepat, disesuaikan dengan kebutuhan data masukan yang kita manipulasi. Untuk tujuan ini, shell adalah mekanisme input bandwidth tertinggi yang belum diciptakan manusia untuk menginstruksikan mesin.
Namun, kita tidak memiliki cara yang baik untuk menyalurkan data ke lingkungan dinamis lain yang sering kita habiskan: browser. Tujuan dari vzi adalah untuk menjembatani kesenjangan tersebut, sehingga kami dapat menyertakan komposisi berbasis web sebagai bagian dari saluran data kami yang berharga.
Melihat data di terminal, kita sering kali tidak mempunyai cara yang baik untuk menafsirkannya, namun dengan sedikit transformasi, mata kita mampu memahami pola yang mendalam. Mengingat sumber data yang berisi koordinat lintang dan bujur, cara alami untuk mengeksplorasi data tersebut adalah dengan menggunakan peta. Anda dapat melakukannya dengan vzi dengan menyalurkan data ke dalamnya, misalnya:
$ your data source | vzi -m scatter -d 'y=lat($[0])' -d 'x=lng($[1])' -d c=2
Berikut adalah screenshot keadaan yang dihasilkan dengan menggunakan perintah di atas dengan baris-baris data berbentuk latitude longitude language
:
Status laporan aktual yang dihasilkan oleh vzi pada waktu tertentu adalah halaman web yang lengkap dan lengkap, jauh lebih kaya daripada gambar statis. Jika Anda memilih, status laporan akhir (atau perantara) dapat disimpan, atau Anda mungkin ingin berinteraksi dengannya sementara waktu di dalam browser, mengabaikan hasilnya. Apa pun yang terjadi, vzi membuat sesi analisis data lebih menyenangkan dan produktif.
Jenis visualisasi lain yang disertakan adalah modul bucket
. Di bawah ini adalah tangkapan layar laporan yang dihasilkan oleh perintah:
$ bin/gen-yxz | vzi -m hist -d c=2
Modul dapat menggunakan kembali kode satu sama lain. Perintah di atas sebenarnya setara dengan perintah:
$ bin/gen-yxz | vzi -m bucket -d c=2 -d orderBy=freq
Modul scatter
dan bucket
bersifat umum dan dapat digunakan dengan sangat efektif dalam berbagai situasi. Namun, menulis modul pipa lainnya sangatlah mudah, dan melakukannya sebenarnya bisa menjadi latihan yang menyenangkan.
Pertama, instal Chrome Canary. Ini tidak sepenuhnya wajib, tetapi ini adalah cara terbaik dan termudah untuk menggunakan vzi saat ini.
Anda dapat menginstal alat baris perintah secara global dengan deno menggunakan:
deno install -A -f https://raw.githubusercontent.com/jflatow/vzi/master/bin/vzi
Metode yang lebih baik bagi pengembang adalah mengkloning repositori dan menginstalnya:
$ git clone https://github.com/jflatow/vzi.git
$ cd vzi && make install
Uji dengan cepat apakah berhasil:
$ vzi
Ini akan membuka jendela di browser. Jika tidak, Anda mungkin perlu menggunakan opsi -b
untuk memberi tahu vzi di mana jalur browser yang dapat dieksekusi. Untuk daftar opsi lengkap: vzi -h
.
Jika Canary sudah diluncurkan tanpa membuka port debugging jarak jauh, Anda mungkin mendapatkan kesalahan saat vzi meminta halaman baru (yaitu /json/new
). Jika demikian, keluar saja dari Chrome dan biarkan vzi meluncurkannya sesuai keinginannya, atau buka kembali sendiri dengan port terbuka. Port default yang digunakan oleh vzi adalah 9222
, tetapi Anda dapat menentukannya menggunakan opsi -p
.
Dengan jendela browser masih terbuka, pada pipa stdin yang terbuka untuk browser, Anda dapat mengetikkan pesan:
> hello, world!
Pastikan Anda memasukkan baris baru di bagian akhir, sehingga baris tersebut lengkap. Kembali ke jendela browser yang terbuka, Anda akan melihat pesan Anda di badan dokumen. Masukkan baris sebanyak yang Anda suka, masing-masing baris akan memperbarui dokumen. Setelah selesai, tutup pipa menggunakan ^D
.
Jika Anda telah mengkloning direktori repo vzi , Anda dapat mencobanya dari dalamnya:
$ bin/gen-yxz | vzi -m scatter -d c=2
Secara default vzi akan menghasilkan satu dokumen laporan final di stdout . Pipa yang dijalankan oleh vzi (melalui Chrome ) mendefinisikan apa yang terjadi pada status browser saat peristiwa baru diterima.
Ada tiga cara untuk memberitahu vzi cara menjalankan pipanya:
-c, --cli
-m, --module
$ cat events | vzi pipe.js
$ cat events | vzi -c '...'
$ cat events | vzi -m module
Jika opsi -K, --keep-alive
diberikan, vzi tidak akan mencoba menutup browser. -OK
dapat digunakan bersama untuk sesi yang tenang dan interaktif.
Jika opsi -O, --no-output
diberikan, output akan dinonaktifkan. Jika opsi -o, --output
diberikan, vzi akan menulis status laporannya ke jalur keluaran setelah setiap kumpulan kejadian. Dengan cara ini, seseorang dapat melihat perubahan pada file output untuk mengamati keadaan terkini dari pipeline (misalnya saat menjalankan headless). Jika -o
atau -O
tidak ditentukan, hanya keadaan akhir yang ditulis ke stdout .
$ cat events | vzi pipe.js -O
$ cat events | vzi pipe.js -o report.html
$ cat events | vzi pipe.js > report.html
Seseorang juga dapat mengontrol mekanisme yang digunakan vzi untuk merender kejadian menggunakan opsi -p, --port
. Jika diberikan, port tersebut diasumsikan menggunakan protokol kabel DevTools (misalnya browser dengan proses debug jarak jauh yang diaktifkan). Jika opsi -p
tidak diberikan, vzi akan membuat browser sendiri untuk rendering.
$ cat events | vzi pipe.js
$ cat events | vzi pipe.js -p PORT
$ cat events | vzi pipe.js -p PORT > report.html
Opsi -H, --headless
dapat diberikan untuk memaksa vzi membuat browser tanpa kepala. Ini memerlukan browser yang mampu dijalankan tanpa kepala (NB: Chrome Canary pada saat tulisan ini dibuat).
$ cat events | vzi pipe.js -H
Berlari tanpa kepala dianggap sebagai mode operasi tingkat lanjut, meskipun berfungsi dengan cukup baik. Secara umum, ada 2 mode pengoperasian browser: terpasang dan terpisah . Saat Anda menjalankannya secara terpisah (default jika bukan tanpa kepala), segalanya menjadi lebih mudah dan lancar untuk memulai. Terutama saat Anda berlari tanpa kepala, karena Anda bisa melihat dengan tepat apa yang terjadi. Dalam mode terlampir, interupsi akhirnya mematikan browser, jadi kecuali Anda mengirimkan EOF yang tepat, Anda tidak akan mendapatkan laporan keluaran. Ini masih baik-baik saja tanpa headless, karena Anda masih melihat output di browser seperti yang dihasilkan. Namun, ketika Anda menjalankan dalam mode tanpa kepala, Anda biasanya tidak ingin menyalurkan aliran tanpa batas. Ini karena tanpa EOF Anda tidak akan dapat menghentikan proses dengan baik, sehingga Anda tidak akan melihat hasilnya atau mendapatkan laporan.
Beberapa opsi yang tersedia mungkin membingungkan tanpa pemahaman tentang cara kerja alat tersebut. Penyiapan keseluruhannya rumit namun mudah. Setelah implementasi DevTools diketahui, halaman dibuka dan peristiwa dikirim melalui lapisan di atas protokol debugging Chrome. Dalam konteks ini, fungsi pengendali pipa yang ditentukan pengguna dijalankan.
Ada dua antarmuka utama yang disediakan vzi . Salah satunya adalah spesifikasi bagaimana laporan keluaran dihasilkan. Yang lainnya adalah lingkungan tempat fungsi yang ditentukan pengguna dijalankan, dan callback yang digunakan. Kami menyebut logika yang ditentukan pengguna yang dijalankan di lingkungan ini sebagai pipa . Pipa tersebut menangani logika visualisasi untuk pipa Unix yang dijalankan di dalamnya.
Antarmuka pipa saat ini ditentukan di index.js. Contoh terbaiknya adalah modul bawaan, yang dicantumkan di sini berdasarkan kompleksitas:
Berikut adalah beberapa contoh cepat lainnya yang dapat Anda coba, dengan asumsi Anda telah mengkloning repositori:
bin/gen-yxz | vzi -m scatter -d y='log($[0])' -d ys='exp(_)'
bin/gen-line | vzi -m hist -d v=1 -d k='second((new Date - 0) / 1000, 3)'