PROCESS OBJECT NODEJS

Process Object



Process adalah salah satu hal yang paling penting untuk diketahui pada global objek. Dalam ilmu komputer, process adalah sebuah program yang dijalankan pada satu atau lebih thread. Beberapa alat yang dapat kita gunakan untuk melihat proses yang sedang berjalan pada komputer kita adalah Task Manager (Windows), System Monitor (Ubuntu), atau Activity Monitor (macOS).

Windows Task Manager


Global objek process Node.js memiliki fungsi dan properti yang dapat memberikan informasi tentang proses yang sedang berjalan.

Properti process.env adalah yang paling umum digunakan karena memungkinkan penyimpanan nilai atau informasi tentang environment (lingkungan) yang digunakan selama proses berlangsung. Sebagai contoh, properti process.env.PWD menyimpan lokasi proses dan properti process.env.USER menyimpan informasi nama user pada komputer kita. Pada halaman dokumentasi Node.js mengenai process.env, kita dapat melihat semua properti yang ada.

Kita juga dapat secara manual menyimpan nilai di dalam process.env. Ini berguna untuk menentukan alur code seperti if-else dalam program berdasarkan environment yang kita berikan. Untuk contoh, kita dapat membuat properti NODE_ENV pada process.env jika ingin mengubah nilai variabel host antara waktu pengembangan (development) dan produksi (production). Dengan demikian, kita dapat menentukan nilai variabel host berdasarkan kondisi NODE_ENV.


const server = new Server({
    host: process.env.NODE_ENV !== 'production' ? 'localhost' : 'dicoding.com',
});


Untuk memberikan nilai pada properti process.env, kita dapat memberikannya ketika mengeksekusi berkas JavaScript. Caranya seperti ini:


NODE_ENV=production node app.js
SET NODE_ENV=production && node app.js


Nilai yang ada pada process.env hanya dapat diakses di dalam cakupan proses Node.js. Itu berarti Anda tidak dapat menggunakan nilainya pada program lain seperti menampilkan nilainya melalui program echo.


// perintah ini tidak akan berjalan
node -e 'process.env.foo = "bar"' && echo $foo

Selain untuk menetapkan dan mendapatkan informasi mengenai environment, objek process memiliki kegunaan lain. Salah satunya adalah mendapatkan informasi tentang penggunaan CPU ketika proses berjalan. Anda dapat mengakses informasi tersebut melalui fungsi process.memoryUsage().


const cpuInformation = process.memoryUsage();
 
console.log(cpuInformation);
 
/* output
{
  rss: 14569472,
  heapTotal: 2654208,
  heapUsed: 1788896,
  external: 855681,
  arrayBuffers: 9898
}
*/

Yang terakhir dan tak kalah pentingnya adalah properti process.argv. Properti ini dapat menampung nilai baris perintah dalam bentuk array ketika menjalankan proses. Contoh jika kita menjalankan baris perintah berikut:


node app.js "harry" "potter"

Maka array process.argv akan bernilai:
    1. Elemen pertama : Alamat (path) lengkap dari lokasi node yang menjalankan prosesnya. 
    2. Element kedua : Alamat (path) berkas JavaScript yang dieksekusi (app.js)
    3. Element ketiga : “harry”
    4. Element keempat : “potter”

Bila app.js memiliki kode seperti ini:

const firstName = process.argv[2];
const lastName = process.argv[3];
 
console.log(`Hello ${firstName} ${lastName}`);

Maka output yang dihasilkan tampak seperti ini:

Hello harry potter

Kita hanya membahas sedikit tentang properti dan fungsi yang ada pada process objek. Anda bisa mendalaminya dengan membaca dokumentasi tentang objek process.

Tantangan: Process Object


Kita sudah mengenal process object yang ada di Node.js. Agar lebih paham lagi, sekarang giliran untuk coba sendiri penggunaan dari beberapa global object yang ada di Node.js.

Untuk tantangan kali ini, buatlah berkas index.js baru di dalam folder baru process-object pada proyek nodejs-basic.








Kemudian, tuliskan starter code berikut pada index.js.


const initialMemoryUsage = // TODO 1
const yourName = // TODO 2
const environment = // TODO 3
 
for(let i = 0; i <= 10000; i++) {
// Proses looping ini akan membuat penggunaan memori naik
}
 
const currentMemoryUsage = // TODO 4
 
console.log(`Hai, ${yourName}`);
console.log(`Mode environment: ${environment}`)
console.log(`Penggunaan memori dari ${initialMemoryUsage} naik ke ${currentMemoryUsage}`);

Selesaikan kode yang ditandai TODO dengan ketentuan berikut:

    - TODO 1 : Isi dengan nilai heapUsed dari instance process.memoryUsage.
    - TODO 2 : Isi dengan nilai index ke-2 dari process.argv.
    - TODO 3 : Isi dengan nilai NODE_ENV dari process.env.
    TODO 4 : Isi dengan nilai heapUsed dari instance process.memoryUsage.


Setelah mengerjakan seluruh TODO, eksekusi berkas JavaScript dengan perintah: 


NODE_ENV=production node app.js
SET NODE_ENV=production && node app.js

Ganti <Nama Anda> dengan nama depan Anda. Bila TODO berhasil dikerjakan dengan baik, maka console akan menghasilkan output:


Posting Komentar

0 Komentar