Laman

Rabu, 01 Januari 2014

Kesalahan Logika Mengenai Hoisting di JavaScript

Kesalahan logika banyak macamnya dan salah satunya mengenai deklarasi dan inisialisasi variabel di JavaScript. Kesalahan ini diistilahkan dengan hoisting atau kesalahan yang terjadi akibat salah peletakan deklarasi variabel. Kesalahan ini sering membuat programmer web bingung mengapa hal ini bisa terjadi.

Dalam pemrograman JavaScript, kita biasanya dapat mendeklarasikan variabel bisa dimana saja dalam suatu lingkup (scope). Contohnya seperti ini:
<script>
  function getJenisFile(extFile) {
    extFile = extFile.toLowerCase();
    
    if (extFile === ".cpp") {
      jenisFile = "C++";
    }
    else if (extFile === ".js") {
      jenisFile = "JavaScript";
    }
    else if (extFile === ".py") {
      jenisFile = "Python";
    }
    else {
      jenisFile = "Tidak terdefinisi";
    }
    
    var jenisFile; // deklarasi baru dilakukan
    alert(jenisFile);
  }
  
  // outputnya: Tidak terdefinisi
  getJenisFile('.java');
</script>

Berdasarkan sintaks di atas maka dapat dilihat bahwa variabel jenisFile diinisialisasi terlebih dahulu dalam blok if-else kemudian baru dideklarasikan atau dengan kata lain suatu variabel dapat diinisialisasi dahulu baru kemudian dideklarasikan. Mungkin Anda akan bertanya apakah terjadi error? Ternyata tidak terjadi error apapun dan saya sudah memeriksanya melalui tab Console di Firebug. Ini menandakan bahwa JavaScript membolehkan bentuk inisialisasi dan deklarasi seperti dalam bentuk di atas.

Tentu saja bentuk seperti di atas sebaiknya dihindari karena rentan terhadap bugs. Salah satu bugs-nya adalah jika Anda menggunakan variabel global dengan nama yang sama seperti variabel lokal yang dipakai dalam suatu fungsi maka variabel tersebut menjadi bernilai undefined. Saya ubah sedikit sintaks di atas menjadi:
<script>
  // ditambahkan variabel global
  var jenisFile = "Tidak terdefinisi";
  
  function getJenisFile(extFile) {
    extFile = extFile.toLowerCase();
    
    if (extFile === ".cpp") {
      jenisFile = "C++";
    }
    else if (extFile === ".js") {
      jenisFile = "JavaScript";
    }
    else if (extFile === ".py") {
      jenisFile = "Python";
    }
    // blok else dihapus
    
    // urutan dibalik
    alert(jenisFile);
    var jenisFile; // deklarasi baru dilakukan
  }
  
  // outputnya: undefined
  getJenisFile('.java');
</script>

Yang saya ubah dari kode di atas adalah:
1. Ditambahkannya variabel global yang memiliki nama yang sama dengan nama variabel lokal yaitu jenisFile. Variabel global ini saya inisialisasi dengan string: "Tidak terdefinisi".
2. Dihapuskannya blok else dan nilai defaultnya saya tuliskan pada deklarasi (sekaligus inisialisasi) variabel global jenisFile.
3. Kemudian terjadi perubahan urutan penulisan statemen fungsi alert() dan deklarasi variabel lokal jenisFile.

Berdasarkan perubahan kode di atas, mungkin Anda berpikir bahwa program akan menampilkan tulisan "Tidak terdefinisi". Tapi kenyataannya tidak begitu, justru nilai undefined yang ditampilkan. Mengapa terjadi demikian? Karena JavaScript menginterpretasikan bahwa deklarasi variabel lokal jenisFile diletakan paling atas sendiri dalam lingkup fungsi getJenisFile(). Sehingga JavaScript akan merubah kodenya menjadi:
<script>
  var jenisFile = "Tidak terdefinisi"; 
  
  function getJenisFile(extFile) {
    // secara implisit JavaScript memindahkan deklarasi variabel di awal scope
    var jenisFile;
    extFile = extFile.toLowerCase();
    
    // ... kode lainnya
    
    alert(jenisFile);
  }
  
  // outputnya: undefined
  getJenisFile('.java');
</script>

Sehingga jelaslah bahwa variabel jenisFile dalam lingkup fungsi getJenisFile() adalah milik variabel lokal yang baru dideklarasikan tapi belum diinisialisasi. Hal inilah yang dinamakan hoisting yang menyebabkan kesalahan logika. Berdasarkan kesimpulan ini maka sangat disarankan agar mendeklarasikan variabel JavaScript di urutan paling awal baik di dalam blok suatu fungsi atau tidak dan gunakanlah keyword var saat mendeklarasikannya. Jika memungkinkan variabel tersebut langsung diinisialisasi saat Anda mendeklarasikannya.

Untuk keperluan debugging, sangat disarankan Anda menggunakan tools atau plugins seperti Firebug di web browser Mozilla Firefox atau Chrome Developer Tools (CDT) di web browser Google Chrome/Chromium. Lihatlah dijendela Console-nya apakah terjadi kesalahan atau tidak. Tools ini sangat membantu Anda saat membuat aplikasi web. Sekian dan terima kasih...

© 2014 husnanlabs.blogspot.com

Selasa, 31 Desember 2013

Kesalahan Input Nilai dari Halaman HTML ke JavaScript

Berikut ini saya akan menjelaskan salah satu kesalahan yang umum terjadi saat proses input dari tag HTML misal textbox ke dalam variabel JavaScript. Kesalahan ini termasuk ke dalam kesalahan logic sehingga kadang sulit untuk ditemukan letak kesalahannya namun sebenarnya kesalahan ini bisa diatasi dengan mudah jika kita tahu caranya.

Dalam pengkodeannya saya menggunakan jQuery untuk memudahkan penulisan sintaksnya. Sehingga jika Anda ingin mencoba script yang ada di tulisan ini maka pastikan Anda telah mendownload file jQuery yang telah disediakan secara gratis di jquery.com

Oke kita langsung ke inti permasalahannya. Kesalahan input data yang dimaksud adalah mengenai perbedaan tipe data yang dipakai oleh tag HTML dalam hal ini tag textbox: <input type="text" ... /> dan variabel atau statemen yang dipakai oleh JavaScript.

Pada tag HTML jenis textbox meski yang diinputkan adalah nilai numerik misal 1, 2, 3 atau 0.5 dan 3.14 namun akan dibaca oleh JavaScript sebagai tipe data string. Mungkin Anda bingung maksud dari penjelasan saya ini, baik kita langsung ke kode programnya:
<script>
  $(function() {
    var nilai1 = $('#txtNilai1').val();
  });
</script>

Berdasarkan kode di atas, mungkin Anda akan mengira bahwa variabel nilai1 bernilai sesuai dengan apa yang ada pada tag HTML dengan id txtNilai1. Jika Anda berpikir seperti itu maka... Ya Anda benar! Tapi masalahnya bukan pada nilai yang "terlihat" oleh Anda tapi tipe data yang dihasilkan oleh method val() dan ini dilihat oleh JavaScript sebagai tipe data string.

Oke misalnya Anda memasukan nilai bilangan bulat 1 pada textbox yang ada, maka JavaScript akan membacanya dengan nilai "1". Perhatikan bahwa nilai 1 sama dengan "1" tapi tidak identik. Yang saya maksud dengan 1 tidak identik dengan "1" adalah dari sisi tipe datanya. Nilai 1 bertipe integer sedangkan "1" bertipe string.

Hal di atas akan sangat berpengaruh saat Anda mengolah nilainya untuk keperluan perhitungan matematis. Berikut contoh mudah dari permasalahan ini:
<script>
  $(function() {
    $('#btnJumlahkan').on('click', function() {
      var nilai1 = $('#txtNilai1').val();
      var nilai2 = $('#txtNilai2').val();
      var hasil = nilai1 + nilai2;
    
      alert(hasil);
    });
  });
</script>

Berdasarkan contoh script di atas maka misalnya:
1. $('#txtNilai1').val() bernilai: "1",
2. $('#txtNilai2').val() bernilai: "2",

Maka variabel hasil akan bernilai "12", padahal yang kita inginkan adalah nilai 3. Kenapa bisa demikian? Ya karena terjadi proses penggabungan string (string concatenation) "1" dan "2" oleh operator +.

Padahal yang kita tahu bahwa operasi perhitungan matematis membutuhkan suatu tipe data yang bisa diolah secara matematis pula yakni misalnya tipe data integer, float, dan double. Sehingga kita perlu suatu cara untuk mengonversi nilai "1" yang memiliki tipe data string ke nilai 1 yang bertipe integer.

Fungsi yang bisa Anda pakai untuk melakukan konversi dari tipe data string ke integer adalah fungsi parseInt(). Untuk itu jika Anda berniat melakukan perhitungan matematis yang diambil dari halaman HTML, sebaiknya gunakan fungsi ini. Untuk bilangan pecahan, gunakan fungsi parseFloat().

Untuk merevisi kode program di atas maka Anda hanya perlu merubah sedikit pada statemen berikut:
var nilai1 = parseInt($('#txtNilai1').val());
var nilai2 = parseInt($('#txtNilai2').val());

Sekarang jika Anda memasukan nilai "1" maka akan diubah ke nilai 1 oleh fungsi parseInt(). Tentu saja kode di atas masih sangat kurang untuk pengecekan terhadap kemungkinan user memasukan data non numerik misalnya alfabet. Namun intinya bahwa nilai numerik yang Anda masukan melalui halaman web sesungguhnya tidak bernilai numerik (tipe data integer atau float) tapi tipe data string. JavaScript perlu diberitahu secara spesifik nilai yang kita masukan itu benar-benar bernilai bilangan numerik ataukah hanya data alfabet-numerik.

Demikian artikel ini saya buat dan semoga bermanfaat bagi kita semua.

© 2013 husnanlabs.blogspot.com

Sabtu, 14 Desember 2013

Masalah dan Solusi Penggunaan Objek cin di Pemrograman C++

Pada bahasa pemrograman C++, cin (dibaca: see-in) merupakan objek dari kelas istream yang digunakan sebagai standar data masukan dari pengguna yang pada umumnya dilakukan melalui aplikasi console atau terminal (CLI).

Penggunaan objek cin pada kasus tertentu sering menimbulkan masalah terutama saat digunakan untuk membaca data masukan berupa kata yang lebih dari satu atau suatu kalimat (string) dan kombinasi karakter (char) dengan bilangan (int, float, double). Pada artikel ini saya akan menjelaskan sedikit tentang masalah ini dan solusinya.

Penggunaan header file <iostream> dan fungsi standar std
Objek cin memerlukan definisi header #include <iostream> dan penggunaan statement using namespace std untuk menggunakan fungsi-fungsi standar C++. Penggunaan header iostream adalah suatu keharusan dan penggunaan statement using namespace std adalah opsional bila Anda menggunakan fasilitas dari objek-objek input-output stream misalnya seperti cin dan cout. Namun bila tidak menggunakan statemen using namespace std, Anda bisa menuliskannya secara langsung di dalam kode programnya (dan bentuk seperti ini yang disarankan) dengan contoh penulisannya seperti ini: std::cout. Berikut contohnya:
  #include <iostream>
  
  int main() {
    std::cout << "Sedang belajar bahasa pemrograman C++" << std::endl;
    return 0;
  }

Oke, sekarang ke inti permasalahan penggunaan objek cin dan tentu saja dengan solusinya.

Permasalahan 1: Input kata lebih dari satu atau input sebuah kalimat
Objek cin bermasalah saat misalnya digunakan untuk menginputkan data berupa suatu kalimat atau kata lebih dari satu, misalkan nama provinsi yakni Jawa Tengah. String "Jawa Tengah" dapat dipisahkan menjadi tiga bagian yakni "Jawa", kemudian karakter spasi ' ', dan yang terakhir adalah "Tengah". Bagaimana objek cin membaca data masukan seperti ini? Silakan lihat kode program berikut beserta hasil keluarannya:
  #include <iostream>
  #include <string>
  
  int main() {
    string provinsi;
    int jumlahKab = 0;
    
    std::cout << "Masukan suatu provinsi: ";
    std::cin >> provinsi;
    std::cout << "Jumlah kabupatennya: ";
    std::cin >> jumlahKab;
    std::cout << "Provinsi " << provinsi << " memiliki " 
              << jumlahKab << " kabupaten" << std::endl;
    return 0;
  }
  

Berikut ini adalah salah satu contoh hasil keluaran dari kode program di atas:

Permasalahan objek cin menerima masukan kata lebih dari satu


Terlihat hasil keluarannya menjadi berantakan, yakni user tidak memiliki kesempatan untuk memasukan data kedua yakni jumlah kabupaten dan hasilnya langsung ditampilkan di sebelahnya.

Solusi untuk hal ini adalah dengan menggunakan fungsi standar C++ yakni getline(). Saat dipanggil, fungsi ini membutuhkan dua argumen yang perlu Anda sediakan, yakni argumen pertama adalah objek cin dan yang kedua adalah variabel dengan tipe data string. Header fungsi getline() memiliki bentuk:
  istream& getline(istream& istreamObject, string& stringObject);
  

Untuk mengatasi masalah di atas, kode programnya sedikit mengalami perubahan menjadi:
    #include <iostream>
    #include <string>

    int main() {
      std::string provinsi;
      int jumlahKab;

      std::cout << "Masukan suatu provinsi: ";
      std::getline(std::cin, provinsi); // ubah di sini
      std::cout << "Jumlah kabupatennya: ";
      std::cin >> jumlahKab;
      std::cout << "Provinsi " << provinsi << " memiliki " 
                << jumlahKab << " kabupaten" << std::endl;

      return 0;
    }
  

Hasil keluarannya adalah seperti yang diharapkan:

Solusi dengan memakai fungsi getline()


Permasalahan 2: Kombinasi objek cin dengan method cin.get()
Pada umumnya method cin.get() digunakan untuk mendapatkan suatu karakter tertentu. Berbeda dengan cin, method cin.get() ini dapat membaca karakter spasi maupun enter. Biasanya cin.get() digunakan untuk menahan aplikasi agar tidak langsung keluar dari sistem. Berikut contoh penggunaannya:
  #include <iostream>

  int main() {
    std::cout << "Untuk keluar program tekan tombol Enter...";
    std::cin.get();
    std::cout << "Keluar program...\n";

    return 0;
  }
  

Penggunaan objek cin dan method cin.get() secara bersamaan dapat menimbulkan masalah yakni saat misalnya setelah memasukan data tertentu melalui objek cin maka karakter '\n' atau newline yang tersimpan dalam keyboard buffer akan langsung dipakai oleh method cin.get() ini. Karakter '\n' atau newline ini dihasilkan saat menekan tombol enter setelah memasukan suatu nilai pada objek cin. Untuk lebih jelasnya silakan lihat kode program berikut:
  #include <iostream>

  int main() {
    char kelasPraktikum;
    int kodeReg;

    std::cout << "Masukan kode bilangan registrasi Anda: ";
    std::cin >> kodeReg;
    std::cout << "Pilih kelas praktikum C++ (A/B/C/D)\n";
    std::cout << "Atau kosongi untuk membatalkan: ";
    std::cin.get(kelasPraktikum);

    if (kelasPraktikum != '\n') {
      std::cout << "Anda telah terdaftar di kelas " << kelasPraktikum << std::endl;
    }
    else {
      std::cout << "Anda membatalkan pemilihan kelas praktikum C++" << std::endl;
    }

    return 0;
  }
  

Hasilnya tidak seperti yang diharapkan yakni data yang dibaca melalui method cin.get() tidak dieksekusi yakni Anda tidak memiliki kesempatan memilih kelas praktikum C++. Berikut contoh keluarannya:

Permasalahan saat objek cin digunakan bersamaan dengan method cin.get()


Solusi untuk masalah ini adalah dengan menggunakan method cin.ignore(). Method ini akan melewatkan karakter newline ('\n') yang tersimpan pada keyboard buffer saat Anda menekan tombol enter sehingga method cin.get() dapat menerima data masukan selanjutnya. Method cin.ignore() ini perlu Anda tuliskan diantara input cin dan cin.get(). Berikut contoh kode programnya hasil revisi kode program di atas:
   #include <iostream>

   int main() {
     char kelasPraktikum;
     int kodeReg;

     std::cout << "Masukan kode bilangan registrasi Anda: ";
     std::cin >> kodeReg;
     std::cin.ignore(); // Tambahkan statemen ini
     std::cout << "Pilih kelas praktikum C++ (A/B/C/D)\n";
     std::cout << "Atau kosongi untuk membatalkan: ";
     std::cin.get(kelasPraktikum);

     if (kelasPraktikum != '\n') {
       std::cout << "Anda telah terdaftar di kelas " << kelasPraktikum << std::endl;
     }
     else {
       std::cout << "Anda membatalkan pemilihan kelas praktikum C++" << std::endl;
     }

     return 0;
   }
 

Hasilnya seperti yang diharapkan yakni Anda memiliki kesempatan memasukan data masukan kedua yakni pemilihan kelas praktikum C++. Tampilannya dapat dilihat pada gambar dibawah ini:

Solusi dengan memakai method cin.ignore()


Demikian tutorial singkat dari saya, semoga bermanfaat dan selamat belajar bahasa pemrograman C++.

© 2013 husnanlabs.blogspot.com

Rabu, 04 Desember 2013

Konfigurasi Web Server Apache 2.4 di Ubuntu 13.10 Linux

Web server Apache 2.4 memiliki sedikit perbedaan pengaturan konfigurasinya dari versi sebelumnya yakni Apache 2.2 atau Apache 2.0. Sistem operasi yang digunakan pada tutorial ini adalah Ubuntu Linux. Saya mengasumsikan bahwa Anda sudah menginstal aplikasi LAMP stack yang memiliki Apache server versi 2.4.

Bila Anda belum menginstalnya atau Apache server yang Anda gunakan adalah versi sebelumnya (Apache 2.2) maka silakan lihat tutorial: Instalasi dan konfigurasi LAMP Stack Linux. Baik kita langsung saja memulai langkah konfigurasinya.

1. Mengubah lokasi default dari webroot
Webroot adalah lokasi dimana aplikasi-aplikasi web Anda diletakan. Pada umumnya lokasi defaultnya adalah di /var/www namun jika diletakan di /var/www maka kerugiannya adalah jika sistem operasi Linux Anda di(dist-)upgrade, maka data-data pada lokasi tersebut terhapus semua pada saat (dist-)upgrade (kecuali Anda mem-backupnya terlebih dahulu). Kerugian lainnya adalah lokasi tersebut adalah milik publik sehingga setiap user dapat mengakses folder tersebut. Sebaiknya lokasinya dipindah ke folder user Anda, misal /home/husnanlabs/htdocs. Keuntungan dari pemindahan lokasi webroot ke dalam folder user adalah folder user tersebut dipertahankan (tidak dihapus) saat terjadi upgrade sistem operasi ke versi terbaru dan hak akses dibatasi yang pada umumnya hanya untuk user tersebut.

Untuk memindahkan lokasi webroot yang perlu Anda lakukan adalah membuat atau mengedit file yang berisi pendefinisian konfigurasi virtual host. File ini berisi definisi lokasi webroot dan konfigurasinya. Letaknya berada pada filepath: /etc/apache2/sites-available/000-default.conf. Pada tutorial ini saya hanya akan menggunakan satu definisi virtual host saja sehingga saya cukup mengedit file 000-default.conf tersebut dengan menggunakan perintah:
  sudo nano /etc/apache2/sites-available/000-default.conf

Tips: Ada baiknya Anda mem-backup file tersebut sebelum dimodifikasi.

Berikut tampilan awal file 000-default.conf sebelum dimodifikasi:

File 000-default.conf (sebelum dimodifikasi)


Langkah pengeditan file ini adalah:
1. Ubah folder path pada bagian DocumentRoot, misalnya menjadi /home/husnanlabs/htdocs
2. Tambahkan script berikut tepat di atas tag penutup definisi virtual host (</VirtualHost>):
<Directory "path_directory_webroot">
    Order allow,deny
    Allow from all
    Require all granted
</Directory>

Perhatikan bahwa Anda harus mengubah alamat path: "path_directory_webroot" sesuai dengan definisi yang telah Anda tuliskan di bagian DocumentRoot yang telah dijelaskan pada poin 1 di atas. Pada contoh di atas saya mendefinisikan DocumentRoot dengan path /home/husnanlabs/htdocs maka definisi dari "path_directory_webroot" adalah "/home/husnanlabs/htdocs".

Bila masih kurang jelas, silakan lihat tampilan dari file 000-default.conf yang telah saya modifikasi:


File 000-default.conf (setelah dimodifikasi)


2. Membuat folder webroot
Perhatikan contoh pada definisi DocumentRoot dan Directory path diatas, terdapat folder htdocs tepatnya berada dilokasi /home/husnanlabs/htdocs. Anda perlu membuatkan foldernya terlebih dahulu. Folder ini tidak harus diberi nama htdocs, Anda bisa memberikan nama lain misalnya public_html yang penting di sini adalah nama foldernya sesuai dengan definisi dari DocumentRoot dan Directory path-nya yang terdapat di dalam file /etc/apache2/sites-available/000-default.conf. Untuk membuat folder sebagai webroot tersebut cukup dengan perintah mkdir, berikut perintahnya berdasarkan konfigurasi contoh di atas:
cd ~
mkdir htdocs

Setelah itu lakukan restart terhadap web serice-nya Apache dengan mengetikan perintah berikut di terminal:
  sudo service apache2 restart

Karena lokasi webroot telah dipindahkan dari /var/www ke /home/husnanlabs/htdocs maka jika Anda ingin membuat aplikasi PHP lokasi defaultnya ada di lokasi baru tersebut.

3. Konfigurasi FQDN (Fully Qualified Domain Name)
Mungkin Anda pernah merestart atau menjalankan Apache server kemudian muncul pesan pemberitahuan seperti ini:

apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message

Hal tersebut diakibatkan karena belum didefinisikannya ServerName misalnya untuk nama server localhost di dalam file fqdn. Untuk mengetahui keterangan mengenai FQDN silakan lihat keterangannya di wikipedia.

Pesan tentang belum didefinisikannya ServerName untuk FQDN


Untuk mengatasi hal ini adalah dengan cara:
1. Membuatkan file fqdn.
Masuk ke aplikasi terminal lalu ketik perintah berikut:
  sudo nano /etc/apache2/conf-available/fqdn.conf

2. Mendefinisikan ServerName
Kemudian setelah di dalam aplikasi nano (atau gedit), tambahkan definisi berikut kemudian simpan:
  ServerName localhost

3. Mengaktifkan konfigurasi FQDN
Setelah langkah 1 dan 2 dilakukan, sekarang saatnya mengaktifkan konfigurasi ini, caranya dengan mengetikan perintah:
  sudo a2enconf fqdn

4. Merestart web server Apache
Langkah terakhir yang perlu Anda lakukan adalah merestart webserver Apache dengan mengetikan perintah:
  sudo service apache2 restart

Sekarang pesan tentang definisi ServerName mengenai FQDN tidak muncul lagi saat web server Apache di-start atau restart. Sekian tutorial dari saya dan semoga bermanfaat.

© 2013 husnanlabs.blogspot.com

Rabu, 20 November 2013

Perintah Linux untuk Mengetahui Spesifikasi Hardware

Artikel berikut menjelaskan secara ringkas perintah di dalam sistem operasi Linux untuk mengetahui spesifikasi hardware yang ada di komputer Anda. Informasi yang akan ditampilkan di sini adalah mengenai informasi jenis prosessor (CPU), memori (RAM), kartu grafis (VGA), dan kapasitas total hardisk melalui terminal. Semua perintah yang digunakan di sini cukup Anda ketikan di terminal Linux.

Perintah berikut merupakan perintah yang umum untuk mengetahui spesifikasi hardware.

1.Informasi spesifikasi prosessor (CPU)
Untuk mengetahui informasi detil prosessor yang ada di komputer Anda, ketikan perintah berikut:
  cat /proc/cpuinfo

Untuk mengetahui salah satu item data yang Anda perlukan adalah menambahkan perintah | grep 'item data'. Contohnya jika Anda hanya ingin mengetahui model prosessornya saja, maka gunakan perintah berikut:
  cat /proc/cpuinfo | grep 'model name'

Contoh tampilan keluaran dari perintah di atas adalah:


Informasi jenis CPU


2.Informasi spesifikasi memori (RAM)
Perintah berikut digunakan untuk mengetahui spesifikasi detil memori (RAM) yang ada di komputer Anda:
  cat /proc/meminfo

Untuk mengetahui kapasitas total memori terpasang, maka gunakan perintah berikut:
  cat /proc/meminfo | grep MemTotal

Contoh tampilan keluaran dari perintah di atas adalah:


Informasi kapasitas total RAM


3.Informasi spesifikasi chipset kartu grafis (VGA)
Ketikan perintah berikut untuk mengetahui jenis chipset kartu VGA yang Anda pakai:
  lspci -nnk | grep VGA -A1

Berikut contoh tampilan keluaran dari perintah di atas:


Informasi jenis chipset VGA


4.Informasi kapasitas total harddisk
Ketikan perintah berikut untuk mengetahui kapasitas total harddisk komputer Anda:
  sudo fdisk -l | grep Disk

Berikut contoh tampilan keluaran dari perintah di atas:


Informasi kapasitas total Harddisk


5.Perintah Informasi semua hardware
Perintah alternatif lainnya yang akan kita pakai adalah lshw. Perintah ini akan memberikan informasi keluaran spesifikasi hardware komputer Anda secara keseluruhan. Untuk menggunakan perintah ini, buka terminal (CTRL+ALT+T untuk Ubuntu), lalu ketikan perintah berikut:
  sudo lshw -short

Perintah lshw akan memberikan informasi keluran yang sangat banyak dan detil. Jika ingin menyingkat informasi keluaran tersebut, pakailah opsi -short. Apabila perintah lshw tidak dapat dijalankan karena sistem operasi Linux Anda belum terinstal aplikasi tersebut, maka gunakan perintah berikut untuk menginstalnya:
  sudo apt-get install lshw

6. Informasi spesifikasi hardware melalui tampilan grafis (GUI)
Sebagai tambahan, jika Anda menginginkan informasi tentang spesifikasi hardware untuk ditampilkan secara grafis (GUI), maka Anda bisa menggunakan aplikasi hardinfo. Aplikasi ini akan memudahkan Anda dalam melihat spesifikasi hardware yang telah dikelompokan menurut jenis hardwarenya. Untuk menginstal aplikasi hardinfo, gunakan perintah berikut:
  sudo apt-get install hardinfo

Setelah itu ketikan perintah berikut untuk menjalankannya:
  hardinfo

Berikut contoh tampilan dari aplikasi hardinfo:


Tampilan GUI dari aplikasi hardinfo


Sekian tutorial dari saya, semoga bermanfaat.

© 2013 husnanlabs.blogspot.com