CategoriesLinux

Cara instalasi DreamFactory 2.14.2

Setahun yang lalu, terjadi perubahan besar pada salah satu open source project favorit, DreamFactory. Pada versi setelah 2.14.2, developer DreamFactory menghapus dua fungsi yang paling populer digunakan oleh komunitas open source community, yaitu fungsi untuk menghubungkan DreamFactory dengan MySQL server dan fungsi untuk membuat script.

Dalam artikel ini saya tidak akan menceritakan permasalahan tersebut dengan panjang lebar. Bila tertarik untuk mengetahui akar permasalahannya, ada dapat membaca website berikut ini. Dalam artikel ini kita akan fokus tentang bagaimana mengatasi permasalahan tersebut dengan melakukan instalasi versi terdahulu dari DreamFactory sebelum terjadi perubahan tersebut, yaitu DreamFactory versi 2.14.2.

Server yang saya gunakan berbasis Linux Ubuntu 20.04 dengan web server NGINX, PHP, dan database MySQL. Sekarang mari kita bahas langkah-langkah instalasi DreamFactory.

Instalasi NGINX

Update apt repository dan lakukan instalasi NGINX dengan perintah

$ sudo apt update
$ sudo apt install nginx

Instalasi MySQL Server

Lakukan instalasi database server MySQL

$ sudo apt install mysql-server

Perintah ini optional, namun berguna untuk meningkatkan keamanan database server.

$ sudo mysql_secure_installation

Sekarang kita perlu membuat satu MySQL user untuk DreamFactory. Jalankan perintah berikut untuk membuat database df dengan user df dan password rahasia.

$ sudo mysql
mysql> CREATE DATABASE df;
mysql> CREATE USER 'df'@'localhost' IDENTIFIED BY 'rahasia';
mysql> GRANT ALL PRIVILEGES ON df.* TO 'df'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> EXIT;

Instalasi PHP-FPM

Versi PHP yang kita gunakan adalah versi 7.2 karena versi ini yang telah saya coba dan berhasil digunakan untuk DreamFactory versi 2.14.2. Berikut langkah instalasi PHP-FPM.

$ sudo apt install software-properties-common
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt update
$ sudo apt install php7.2-fpm \
    php7.2-mbstring \
    php7.2-xml \
    php7.2-curl \
    php7.2-mysql
$ sudo systemctl restart php7.2-fpm.service

Instalasi Composer

Lakukan instalasi composer dengan perintah berikut.

$ cd ~
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
$ php -r "unlink('composer-setup.php');"

Instalasi Git Client

Secara default, git client sudah terpasang pada Linux Ubuntu 20.04. Namun bila belum ada, maka lakukan instalasi dengan perintah

$ sudo apt install git

Konfigurasi NGINX

Kita perlu melakukan konfigurasi NGINX agar dapat digunakan sebagai web server untuk DreamFactory. Bukalah file /etc/nginx/sites-available/default lalu ubah konfigurasinya seperti pada contoh berikut

server {
  listen [::]:80 default_server;
  server_name _;
  root /var/www/html/public;
  charset utf-8;
  index index.php index.html index.htm index.nginx-debian.html;
  location / {
    try_files $uri $uri/ /index.php?$query_string;
  }
  error_page 404 /index.php;
  location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
  }
}

Restart service NGINX dengan perintah

$ sudo systemctl restart nginx.service

Instalasi DreamFactory

Sekarang masuk ke bagian inti dari tulisan ini, yaitu cara instalasi DreamFactory. Langkah pertama masuklah ke dalam root directory web server /var/www/html.

$ cd /var/www/html

Clone source code DreamFactory versi 2.14.2.

$ git clone --branch 2.14.2-release --single-branch https://github.com/dreamfactorysoftware/dreamfactory.git .

Edit file composer.json dan hapus baris ini karena kita tidak menggunakan mongodb.

"dreamfactory/df-mongodb" : "~0.15.1",

Kemudian jalankan perintah berikut

$ sudo composer update
$ sudo composer install --no-dev
$ sudo php artisan df:env
$ sudo php artisan df:setup

Dalam proses instalasi tersebut, Anda akan diminta memasukkan beberapa data seperti MySQL password, user, dll. Silahkan masukkan data yang diminta sesuai dengan proses instalasi yang telah kita lakukan sebelumnya.

Langkah terakhir adalah melakukan update file permission dengan perintah.

$ sudo chown -R www-data storage/ bootstrap/cache/
$ sudo find . -type f -exec chmod 644 {} \;
$ sudo find . -type d -exec chmod 755 {} \;
$ sudo find storage/ -type d -exec chmod 2775 {} \;
$ sudo find storage/ -type f -exec chmod 664 {} \;
$ sudo find bootstrap/cache/ -type d -exec chmod 2775 {} \;
$ sudo find bootstrap/cache/ -type f -exec chmod 664 {} \;

Proses instalasi selesai, sekarang anda dapat membuka hasil instalasi tersebut melalui web browser misalnya dengan alamat http://localhost atau sesuai dengan domain server Anda.

Semoga bermanfaat.

CategoriesData Science

Perbedaan Antara Conv1D, Conv2d, dan Conv3d Pada CNN

Convolutional Neural Network (CNN) adalah salah satu algoritme deep learning. CNN sudah dikenal luas dalam bidang pengolahan gambar, namun kini CNN juga mulai diterapkan di bidang-bidang lain seperti pengolahan kata, pengolahan time series data, pengolahan video, dan bidang lainnya.

Bila kita menggunakan keras, maka akan ada tiga jenis CNN layer yang dapat kita gunakan, yaitu Conv1D, Conv2D, dan Conv3D. Walaupun memiliki kesamaan prinsip kerja, namun ketiganya digunakan untuk menyelesaikan kasus yang berbeda. Sekarang mari kita bahas perbedaan diantara ketiga CNN layer tersebut.

Bila Anda belum memahami dasar dari CNN, maka saya sarankan untuk mempelajari dasar-dasar CNN terlebih dahulu sebelum melanjutkan membaca artikel ini. Misalnya melalui artikel “A Comprehensive Guide to Convolutional Neural Networks — the ELI5 way” ini. Artikel tersebut membahas dasar-dasar CNN dengan ilustrasi yang menarik, sehingga mudah dipahami.

Penggunaan

Masing-masing jenis CNN layer digunakan untuk kasus dan obyek pemrosesan yang berbeda. Table 1 berikut merangkum contoh penggunaan masing-masing CNN layer.

Conv1DConv2DConv3D
Natural Language Processing2D Image ProcessingVideo Processing
Time series data analysis3D Image Processing
Audio processing
Table 1. Tipe CNN layer dan penggunaannya.

Agar dapat memahami mengapa terdapat perbedaan CNN layer yang digunakan pada kasus tersebut, maka kita harus memahami cara kerja dari masing-masing CNN layer tersebut.

Cara Kerja

Kita mulai dari cara kerja Conv2D karena layer ini adalah dasar dari konsep CNN yang nantinya dikembangkan menjadi Conv1D dan Conv3D. Conv2D juga merupakan CNN layer yang paling sering kita temui di berbagai buku dan tutorial tentang CNN, khususnya pada topik pengolahan gambar.

Conv2D

2D Convolutional Example
Gambar 1: Ilustrasi Conv2D [sumber]

Gambar 1 adalah ilustrasi Conv2D yang diimplementasikan ke dalam pixel gambar RGB. Tiap pixel berada di posisi tertentu dalam koordinat X dan Y. Tiap pixel terdiri dari 3 kanal (channel) atau vektor (vector) warna, yaitu merah (Red), hijau (Green), dan biru (Blue). Dalam praktiknya, vektor kata disimpan array 1 dimensi. Sebagai contoh, pixel warna merah direpresentasikan menggunakan vektor [255, 0, 0].

Filter dalam Gambar 1 berukuran 2 x 2 pixel. Filter tersebut akan memindai gambar secara vertikal (X axis) dan horizontal (Y axis). Karena contoh pada Gambar 1 berukuran 10 x 9 pixel, maka filter tersebut akan memindai sebanyak 9 x 8 atau 72 kali.

Filter dalam topik CNN juga dikenal dengan nama lain seperti kernel, convolution matrix, mask, atau feature detector.

Tujuan dari penggunaan filter ini adalah untuk mendapatkan feature dari gambar. Dalam praktiknya, feature yang dicari oleh CNN filter dapat berupa tepi (edge) atau pola (pattern) lainnya dari obyek dalam gambar. Bila tertarik lebih dalam, artikel berjudul What exactly does CNN see? ini memberikan visualisasi atas hasil perhitungan CNN filter.

Conv1D

1D Convolutional Neural Network Example
Gambar 2: Ilustrasi Conv1D [sumber]

Gambar 2 adalah ilustrasi Conv1D yang diimplementasikan ke dalam text processing. Pada contoh dalam Gambar 2, terdapat sebuah teks yang terdiri dari 9 kata. Agar dapat diolah menggunakan CNN, kata tersebut di encode menjadi vektor. 1 vektor merupakan representasi dari 1 kata. Sehingga dalam contoh di Gambar 2, terdapat 9 vektor yang merupakan representasi dari 9 kata.

Pada contoh Gambar 2, 1 vektor kata terdiri dari 6 nilai (value). Misalnya, kata “Love” dapat di encode ke dalam vektor [1, 1, 1, 0, 0, 0]. Pada prinsipnya, ini mirip seperti nilai 1 pixel dalam Conv2D yang terdiri dari 3 nilai RGB.

Filter dalam Gambar 2 berukuran 2 kata. Filter tersebut akan memindai teks dari awal hingga akhir (X axis). Karena dalam contoh pada Gambar 2 terdapat 9 kata, maka filter tersebut akan memindai sebanyak 8 kali.

Conv3D

Gambar 3. Ilustrasi filter pada Conv3D [sumber]

Pada dasarnya, Conv3D mengolah data 3 dimensi. Contohnya adalah video. Video sebenarnya merupakan sebuah gambar, namun jumlahnya sangat banyak dan ditampilkan secara berurutan. Dengan kata lain video adalah sebuah time series images.

Pada Conv3D, filter memindai secara horizontal (X axis), vertikal (Y axis), dan mendalam (Z axis). Conv3D banyak digunakan untuk mengolah data 3D seperti data Magnetic Resonance Imaging (MRI) atau Computerized Tomography (CT).

Dimensi Input Space pada Keras

Bila anda menggunakan keras, maka terdapat perbedaan dimensi input space yang dimasukkan sebagai parameter saat melakukan inisialisasi CNN layer. Tabel 2 berikut ini merangkum perbedaan input space pada ketiga jenis CNN layer tersebut.

Dimensi Input Space
Conv1D3Dbatch_size,
input_dim1,
channels
Conv2D4Dbatch_size,
input_dim1,
input_dim2,
channels
Conv3D5Dbatch_size,
input_dim1,
input_dim2,
input_dim3,
channels
Tabel 2. Perbedaan Input Space

Catatan, urutan input pada Tabel 2 disusun berdasarkan asumsi nilai data_format='channels_last'.

Sebagai contoh:

Data input: 1 detik suara stereo (2 kanal) 44100 Hz
Dimensi input Conv1D: (batch_size, 44100, 2)

Data input: 2 detik suara mono (1 kanal) 44100 Hz
Dimensi input Conv1D: (batch_size, 88200, 1)

Data input: gambar RGB 32 x 16 pixel
Dimensi input Conv2D: (batch_size, 32, 16, 3)

Data input: gambar grayscale 16 x 32 pixel
Dimensi input Conv2D: (batch_size, 16, 32, 1)

Data input: 1 detik video RGB berukuran 128 x 80 pixel dengan kecepatan putar 24 frame per second (fps)
Dimensi input Conv3D: (batch_size, 24, 128, 80, 3)

Data input: 2 detik video grayscale berukuran 80 x 128 pixel dengan kecepatan putar 24 frame per second (fps)
Dimensi input Conv3D: (batch_size, 48, 80, 128, 1)

Kesimpulan

Kesimpulan dari pembahasan tentang perbedaan Conv1D, Conv1D, dan Conv1D dalam dilihat pada Tabel 3 berikut.

Conv1DConv2DConv3D
Dimensi keras input space3 D4 D5 D
Dimensi data input2 D3 D4 D
Dimensi filter2 D3 D4 D
Dimensi data output2 D3 D4 D
Gerakan filter1 D2 D3 D
Tabel 3. Kesimpulan

Semoga tulisan ini dapat bermanfaat bagi kita semua.

Daftar Pustaka

  1. What are the differences between Convolutional1D, Convolutional2D, and Convolutional3D?
  2. Conv1D, Conv2D and Conv3D
  3. A Comprehensive Guide to Convolutional Neural Networks — the ELI5 way
  4. What exactly does CNN see?
  5. Example of 1D ConvNet filter
  6. What is the shape of conv3d and conv3d_transpose?
  7. Keras Conv1D: Working with 1D Convolutional Neural Networks in Keras
  8. How to Develop 1D Convolutional Neural Network Models for Human Activity Recognition

CategoriesInternet

Bertahan Menghadapi Tsunami Informasi Dengan Berpikir Secara Ilmiah

Dalam beberapa bulan terakhir, berita tentang wabah covid-19 telah memenuhi semua media informasi. Internet dan sosial media yang kini sudah tersebar luar membuat informasi tersebut membanjiri gadget kita tanpa kita minta. Ibarat tsunami yang datang menghantam tanpa bisa dibendung. Fenomena semacam ini dikenal dengan istilah “tsunami informasi”.

Bagaimana kita bertahan menghadapi tsunami informasi ini? Bagaimana kita bisa memilah mana informasi yang benar dan yang salah? Mana informasi yang perlu kita terima dan abaikan?

Berpikir secara ilmiah dapat membantu kita menjawab pertanyaan tersebut dan bertahan menghadapi tsunami informasi. Berpikir secara ilmiah dapat dilakukan oleh setiap orang tanpa memandang latar belakang pendidikan. Yang diperlukan adalah kemampuan berpikir secara kritis agar dapat menilai tingkat kebenaran suatu informasi.

Bagaimana cara berpikir ilmiah?

Agar dapat berpikir secara ilmiah, kita harus memahami langkah-langkah dalam berpikir ilmiah agar dapat mengukur suatu kebenaran.

Fakta

Fakta adalah hasil dari pengamatan.

Fakta adalah hal (keadaan, peristiwa) yang merupakan kenyataan yang benar-benar ada atau terjadi. Fakta tidak dapat dibantah, karena dia benar-benar ada, dapat kita lihat dan rasakan menggunakan panca indra. Berikut adalah contoh fakta yang dapat kita temukan sehari-hari:

  • Kita dapat melihat alam sekitar dengan jelas di siang hari.
  • Kita tidak dapat melihat alam sekitar dengan jelas di malam hari.

Dua hal itu adalah hasil dari pengamatan. Bila semua orang melakukan pengamatan yang sama, maka mereka akan mendapati fakta yang sama pula.

Fakta akan seringkali memunculkan pertanyaan dalam benak kita, misalnya “mengapa kita dapat melihat alam sekitar dengan jelas di siang hari, namun tidak di malam hari?”

Kita, sebagai manusia, akan berusaha mencari jawaban atas pertanyaan-pertanyaan tersebut. Mungkin akan ada sebagian orang yang berusaha menjawab pertanyaan tersebut, misalnya dengan mengatakan:

  1. “Mata kita mengeluarkan sinar di siang hari, namun tidak di malam hari.”
  2. “Matahari yang bersinar di siang hari, namun ia hilang di malam hari”

Dalam ilmu pengetahuan (science) kedua pernyataan tersebut dikenal dengan istilah hipotesis.

Hipotesis

Hipotesis adalah gagasan yang diajukan untuk menjelaskan suatu fenomena sebagai langkah awal dalam melakukan penelitian.

Namun, yang perlu diingat, hipotesis adalah sesuatu yang harus diuji.

Nah sekarang cobalah berpikir sejenak, bagaimana cara kita menguji dua contoh hipotesis sebelumnya?

Salah satu cara menguji hipotesis pertama, cobalah anda melihat benda dalam ruang tertutup, tanpa lampu, di siang hari? Bila anda tetap dapat melihat, maka mungkin benar bahwa mata anda mengeluarkan sinar di siang hari.

Cara menguji hipotesis kedua, lakukan hal yang sama di pengujian pertama, namun kali ini cobalah membuka jendela sehingga sinar matahari dapat masuk ke dalam ruangan tersebut. Bila anda dapat melihat isi ruangan setelah jendela dibuka, maka mungkin benar bahwa matahari yang mengeluarkan sinar sehingga kita dapat melihat alam sekitar.

Ada puluhan atau bahkan ratusan cara untuk menguji hipotesis yang kita buat. Semakin banyak hipotesis tersebut lolos pengujian, maka semakin tinggilah keyakinan kita akan kebenaran dari hipotesis tersebut. Sebaliknya, semakin banyak hipotesis tersebut gagal dalam pengujian, maka hipotesis tersebut akan semakin meragukan.

Ketika terdapat banyak hipotesis yang telah lolos pengujian ilmiah, maka semua hipotesis tersebut dalam disatukan ke dalam sebuah teori ilmiah.

Teori Ilmiah

Teori ilmiah merupakan penjelasan yang mendalam dari satu fenomena yang merupakan kesimpulan dari banyak fakta dan hipotesis yang telah diuji menggunakan serangkaian pengujian ilmiah.

Teori ilmiah bukanlah standar kebenaran yang tak dapat dibantah. Seiring dengan meningkatkan ilmu pengetahuan dan teknologi yang dimiliki manusia, banyak teori ilmiah yang dahulu diterima, namun kini telah dibantah dan digantikan oleh teori ilmiah lainnya.

Geocentric model adalah salah satu contoh teori ilmiah yang sempat bertahan selama ratusan tahun namun akhirnya gagal melalui pengujian ilmiah modern dan kini telah digantikan oleh heliocentric model. Heliocentric model masih bertahan hingga saat ini karena ia masih berhasil melalui serangkaian pengujian ilmiah modern.

Membantah suatu teori ilmiah bukan merupakan sesuatu yang tabu dalam ilmu pengetahuan. Misalnya, sah saja bila Anda tidak setuju dengan teori heliocentric model. Namun Anda harus dapat melakukan serangkaian pengujian ilmiah yang mampu membantah teori tersebut.

Sejarah telah mengajarkan kita bahwa pada akhirnya hanya teori ilmiah yang mampu lolos berbagai macam pengujian yang mampu bertahan dan diterima sebagai penjelasan atas suatu fenomena.

Bertahan Menghadapi Tsunami Informasi

Bagaimana kita bertahan menghadapi tsunami informasi saat ini?

Sederhana saja, kita harus dapat memilah apakah informasi tersebut adalah:

  • fakta?
  • hipotesis?
  • teori ilmiah?

Bila informasi tersebut adalah fakta, maka masih layak kita percaya.

Bila informasi tersebut adalah hipotesis, maka periksalah dahulu. Apakah hipotesis tersebut telah lolos melalui serangkaian pengujian? Bila hipotesis tersebut tidak pernah diuji maka abaikan saja. Bisa jadi itu hanyalah opini yang mungkin tak ada manfaatnya bagi Anda.

Bila informasi tersebut adalah teori ilmiah, maka masih layak untuk kita terima. Namun sekali lagi, teori ilmiah juga bukanlah merupakan satu standar kebenaran, karena masih dapat dibantah bila suatu saat nanti ditemukan fakta dan pengujian baru yang tak dapat dia lampaui.

Bila kita mampu memilah tsunami informasi yang kita terima, maka dapat membuat kita lebih tenang dalam menerima informasi dan terhindar dari rasa panik yang tidak perlu.

Semoga artikel ini dapat bermanfaat bagi kita semua.

Daftar Pustaka

CategoriesLinux

Cara instalasi LaTeX dan Texmaker di Linux Ubuntu

LaTeX is a high-quality typesetting system; it includes features designed for the production of technical and scientific documentation. LaTeX is the de facto standard for the communication and publication of scientific documents. LaTeX is available as free software [1].

LaTeX adalah perangkat lunak yang umum digunakan oleh mahasiswa untuk menulis karya ilmiah seperti tesis atau disertasi. Walaupun LaTeX awalnya terasa sulit untuk dipelajari, tetapi di balik itu LaTeX memberikan banyak kemudahan dan fitur yang tidak dimiliki oleh Word Processor.

Dalam tulisan ini saya tidak akan membahas tentang kelebihan dan kekurangan LaTeX, namun saya akan membahas cara instalasi LaTeX di Linux Ubuntu. Sebenarnya saya menggunakan Linux Mint 19, namun secara umum panduan ini akan sama untuk Linux Ubuntu dan turunannya.

Instalasi LaTex

Langkah pertama adalah melakukan instalasi distribusi LaTeX untuk Linux [2]. Ada beberapa distribusi LaTeX yang dapat anda gunakan, namun dalam tulisan ini saya akan menggunakan TeX Live.

Lakukan instalasi TeX Live menggunakan perintah:

$ sudo apt-get install texlive-full

Langkah kedua adalah melakukan instalasi LaTeX editor. LaTeX editor yang saya pilih adalah TexMaker. Lakukan instalasi TexMaker menggunakan perintah:

$ sudo apt-get install texmaker

Setelah instalasi selesai, bukalah TexMaker. Antarmuka TexMaker kurang lebih seperti Gambar 1.

Gambar 1. Antarmuka TexMaker

Sedikit tips tambahan dari saya, bila anda ingin file PDF yang dihasilkan ditampilkan dalam satu Windows yang sama, maka bukalah menu:

Options > Configure Texmaker > Commands

Pada bagian Pdf Viewer, centang pada pilihan Built-in Viewer dan Embed [3].

Contoh Dokumen LaTeX

Untuk menguji apakah instalasi anda berhasil. Buatlah TexMaker dan buatlah file baru menggunakan menu:

File > New

Kemudian masukkan teks berikut

\documentclass{article}

\title{Dokumen \LaTeX \ Pertamaku}
\date{2020-05-18}
\author{Mahendra Data}

\begin{document}
  \maketitle
  Hello World!
\end{document}

Jalankan perintah Quick Build, misalnya melalui menu:

Tools > Quick Build

Maka kita akan mendapat peringatan seperti Gambar 2.

Gambar 2. Peringatan tentang penamaan file.

Ya, sebelum dapat melakukan Quick Build, dokumen yang baru kita buat harus kita simpan menggunakan ekstensi .tex dan tanpa menggunakan spasi dan accents characters [4].

Sekarang simpanlah file tersebut, lalu jalankan lagi perintah Quick Build. Bila berhasil, maka akan menghasilkan tampilan yang kurang lebih seperti Gambar 3.

Gambar 3. Tampilan setelah perintah Quick Build berhasil dijalankan

Di dalam folder yang sama tempat kita menyimpan file .tex, Anda akan menemukan file .pdf hasil dari generate perintah Quick Build tersebut.

Selamat mencoba.

CategoriesData Science

Mengolah Intrusion Detection Evaluation Dataset (CICIDS2017) Menggunakan ANN

Bidang keahlian saya sebenarnya adalah jaringan komputer. Namun saat ini saya harus mempelajari Artificial Neural Network (ANN) untuk diimplementasikan dalam jaringan komputer, khususnya dalam Intrusion Detection System (IDS). Awalnya sangat sulit bagi saya untuk mempelajari ANN karena saya sebelumnya tidak memiliki latar belakang sama sekali dalam bidang ini dan tidak ada contoh praktis tentang bagaimana mengolah data jaringan hingga dapat menjadi dataset yang dapat diolah menggunakan ANN.

Setelah belajar sekian lama, sempat mengalami kebuntuan, akhirnya saya berhasil membuat satu program yang sangat sederhana dan jauh dari ideal, namun akan sangat berguna sebagai contoh praktis tentang bagaimana mengolah dataset IDS agar dapat diproses menggunakan ANN.

Dataset yang digunakan dalam contoh ini adalah Intrusion Detection Evaluation Dataset (CICIDS2017) yang dapat Anda akses di https://www.unb.ca/cic/datasets/ids-2017.html. Dataset CICIDS2017 tersedia dalam bentuk pcap atau csv. PCAP data adalah data hasil capture jaringan yang perlu diolah terlebih dahulu untuk diambil feature-nya. Dalam website tersebut telah disediakan dataset dalam bentuk csv yang berisi feature dari hasil pengolahan file pcap.

Dalam contoh ini, yang kita gunakan adalah dataset dalam bentuk csv. Program berikut ini akan mengolah file csv tersebut menggunakan program ANN sederhana.

Gambar 1 berikut ini menunjukkan F1 score masing-masing class dalam dataset CICIDS2017. Walaupun secara umum hasilnya cukup bagus, namun terdapat 2 kelas yang semuanya salah deteksi dan terdapat 4 kelas dengan F1 score di bawah 0.7.

Gambar 1. F1 score masing-masing class dalam dataset CICIDS2017

Semoga bermanfaat.

CategoriesLinux

Tips dan Trik Menggunakan VIM

Tulisan ini akan membahas tips dan trik menggunakan editor VIM.

Command Mode

Tekan ESC sebelum menjalankan perintah-perintah berikut ini.

Mencari string

Misalnya ingin mencari kata mode , maka perintahnya adalah

/mode

Untuk mencari kata tersebut di lokasi berikutnya, cukup menjalankan perintah

/

Mencari dan mengganti string

Misalnya ingin mengganti seluruh kata mode menjadi MODE, maka perintahnya adalah

:%s/mode/MODE/g

Mengecek encoding

:set fileencoding

Mengubah encoding

Misalnya ingin mengganti encoding file yang kita buka menjadi utf8, maka perintahnya adalah

:set fileencoding=utf8

Menyimpan lalu keluar

:wq

Keluar tanpa menyimpan perubahan

:q!

CategoriesLinux

Cara kompresi dan ekstrak file .tar.bz2

Di artikel sebelumnya saya membahas tentang cara kompresi dan ektstrak file gzip (.tar.gz). Kali ini saya akan membahas hal serupa namun dengan berbeda jenis kompresi, yaitu bzip2. Ada beberapa ekstensi file yang umum digunakan oleh bzip2, yaitu .tar.bz2, .tar.bz, .tar.tb.

Keuntungan kompresi bzip2 adalah ukuran kompresi yang lebih kecil bila dibandingkan dengan gzip, namun dengan konsekuensi waktu kompresi dan ekstrak yang lebih lama.

Cara kompresi dan ekstrak file gzip dan bzip2 sangatlah mirip, perbedaannya hanyalah terletak pada parameter -z untuk gzip dan -j untuk bzip2.

Artikel singkat berikut akan membahas cara kompresi dan ekstrak file tersebut.

Kompresi file

Kompresi satu directory

Perintah untuk melakukan kompresi satu directory secara recursive ke dalam satu file .tar.bz2 adalah

$ tar -cjf nama-file.tar.bz2 /path/ke/directory-target

Gambar 1 berikut menjelaskan fungsi dari masing-masing parameter.

Gambar 1. Penjelasan parameter (sumber: explainshell.com)

Kompresi beberapa directory

Perintah untuk melakukan kompresi beberapa directory sekaligus sangat mirip dengan perintah sebelumnya, cukup menambahkan beberapa directory path target di akhir parameter, misalnya

$ tar -cjf nama-file.tar.bz2 /path/target1/ /path/target2/

Kompresi dengan pengecualian

Kita bisa melakukan kompresi satu directory dengan menambahkan pengecualian, misalnya tidak menyertakan file .mp4 dengan perintah:

$ tar -cjf nama-file.tar.bz2 /path/ke/directory-target --exclude=*.mp4

Gambar 2 berikut menjelaskan fungsi dari masing-masing parameter.

Gambar 2. Penjelasan parameter (sumber: explainshell.com)

Ekstrak file

Ekstrak ke current directory

Untuk melakukan ekstrak file ke dalam dalam current directory, gunakan perintah:

$ tar -xjf nama-file.tar.bz2

Gambar 3 berikut menjelaskan fungsi dari masing-masing parameter.

Gambar 3. Penjelasan parameter (sumber: explainshell.com)

Ekstrak ke directory tertentu

Untuk melakukan ekstrak file ke dalam dalam directory tertentu, tambahkan parameter -C, misalnya:

$ tar -xjf nama-file.tar.bz2 -C /path/directory-tujuan

Gambar 4 berikut menjelaskan fungsi dari masing-masing parameter.

Gambar 4. Penjelasan parameter (sumber: explainshell.com)

Semoga artikel ini dapat membantu.

CategoriesLinux

Cara kompresi dan ekstrak file .tar.gz

File .tar.gz adalah bentuk kompresi file yang sangat sering dijumpai di Linux. Artikel singkat berikut akan membahas cara kompresi dan ekstrak file tersebut.

Kompresi file

Kompresi satu directory

Perintah untuk melakukan kompresi satu directory secara recursive ke dalam satu file .tar.gz adalah

$ tar -czf nama-file.tar.gz /path/ke/directory-target

Gambar 1 berikut menjelaskan fungsi dari masing-masing parameter.

Gambar 1. Penjelasan parameter (sumber: explainshell.com)

Kompresi beberapa directory

Perintah untuk melakukan kompresi beberapa directory sekaligus sangat mirip dengan perintah sebelumnya, cukup menambahkan beberapa directory path target di akhir parameter, misalnya

$ tar -czf nama-file.tar.gz /path/target1/ /path/target2/

Kompresi dengan pengecualian

Kita bisa melakukan kompresi satu directory dengan menambahkan pengecualian, misalnya tidak menyertakan file .mp4 dengan perintah:

$ tar -czf nama-file.tar.gz /path/ke/directory-target --exclude=*.mp4

Gambar 2 berikut menjelaskan fungsi dari masing-masing parameter.

Gambar 2. Penjelasan parameter (sumber: explainshell.com)

Ekstrak file

Ekstrak ke current directory

Untuk melakukan ekstrak file ke dalam dalam current directory, gunakan perintah:

$ tar -xzf nama-file.tar.gz

Gambar 3 berikut menjelaskan fungsi dari masing-masing parameter.

Gambar 3. Penjelasan parameter (sumber: explainshell.com)

Ekstrak ke directory tertentu

Untuk melakukan ekstrak file ke dalam dalam directory tertentu, tambahkan parameter -C, misalnya:

$ tar -xzf nama-file.tar.gz -C /path/directory-tujuan

Gambar 4 berikut menjelaskan fungsi dari masing-masing parameter.

Gambar 4. Penjelasan parameter (sumber: explainshell.com)

Semoga artikel ini dapat membantu.

CategoriesInternet

SnapPass – Mengirimkan Password Secara Aman Di Internet

Saat ini, hampir mustahil kita sanggup mengingat-ingat seluruh password yang kita gunakan karena sangat banyaknya aplikasi yang kita gunakan. Menggunakan satu password untuk semua aplikasi tentunya sangat tidak aman, karena bila data password tersebut tercuri dan tersebar di dark web seperti yang dialami oleh aplikasi Zoom, maka kita harus mengganti semua password kita di aplikasi lainnya bila tidak ingin akun kita diambil alih orang lain.

Password Manager

Sebagai solusinya saat ini telah banyak tersedia aplikasi password manager yang dapat digunakan untuk menyimpan password anda secara aman. Enkripsi yang digunakan dalam aplikasi password manager menjamin data yang kita simpan di dalamnya aman dan tidak dapat dibaca orang lain tanpa master password. Kita cukup mengingat satu master password yang sangat kuat untuk mengamankan seluruh password yang ada dalam aplikasi password manager.

Ada banyak aplikasi password manager, mulai dari versi open source hingga cloud based. Contoh aplikasi password manager versi open source adalah:

Kedua aplikasi tersebut menyimpan data dalam format dan ekstensi yang sama (.kdbx) sehingga compatible antara satu dengan yang lain. Adapun contoh aplikasi password manager versi cloud based adalah:

Tapi saya pribadi memilih menggunakan KeePass karena file yang berisi password tersebut disimpan di hard disk komputer saya sendiri, tidak “dititipkan” di server aplikasi password manager seperti LassPass atau Dashlane.

Tiap jenis aplikasi password manager tersebut memiliki kelebihan dan kekurangan masing-masing, silahkan dipilih sesuai dengan kebutuhan Anda.

Bagaimana Cara Mengirimkan Password Yang Aman?

Nah sekarang masuk ke pertanyaan utama kita, ketika kita bekerja dalam satu tim, bagaimana cara yang aman untuk mengirimkan password ke rekan satu tim kita?

Melalui e-mail? Tidak aman karena pengiriman e-mail belum tentu aman (dikirimkan tanpa enkripsi) dan data email tersimpan di sever tanpa enkripsi sehingga bisa dibaca oleh pengelola e-mail server atau NSA (kalau Anda orang penting).

Melalui aplikasi chatting? Meragukan karena pengiriman via aplikasi chatting belum tentu aman dan data chatting tersimpan di sever yang mungkin saja tanpa enkripsi.

Bisa saja kita mengirimkan file .kdbx melalui e-mail atau aplikasi chatting, tapi bagaimana mengirimkan master passwordnya?

Mungkin kita bisa aja melakukan enkripsi e-mail, namun bagaimana kalau e-mail rekan kita tersebut tidak mendukung enkripsi e-mail?

Alternatif lain adalah mengirimkan via aplikasi chatting yang menurut klaim developer-nya telah mendukung end-to-end encryption, WhatsApp misalnya. Tapi bagaimana kalau rekan kita tidak memiliki WhatsApp? Atau kita salah kirim password ke WhatsApp group yang salah (seperti kebodohan yang saya lakukan dahulu)?

Kita perlu sebuah cara pengiriman yang bisa diakses semua jenis device, mulai dari desktop atau mobile, serta praktis digunakan. Sepertinya solusi yang paling sederhana adalah melalui protokol HTTPS. Tapi bagaimana implementasinya?

SnapPass

Gambar 1. Tampilan SnapPass

Setelah membaca beberapa referensi, banyak yang merekomendasikan penggunaan SnappPass. SnappPass adalah aplikasi open source dikembangkan oleh developer Pinterest. Prinsip kerja dari SnappPass sangat sederhana:

  1. Simpan pesan atau password di server dalam keadaan terenkripsi.
  2. Generate sebuah key untuk membuka enkripsi data tersebut dalam bentuk sebuah URL.
  3. Bila URL tersebut diakses, maka pesan rahasia tersebut akan ditampilkan dan dihapus dari server.

Yang perlu kita lakukan hanyalah membagikan URL tersebut ke rekan 1 tim kita via e-mail atau aplikasi chatting.

Nah sekarang akan saya jawab satu persatu pertanyaan yang terlintas di pikiran Anda.

Bagaimana kalau URL tersebut dicuri?

Ya pencuri tersebut dapat membaca pesan rahasia anda, misalnya seperti Gambar 2 ini.

Gambar 2. Pesan rahasia yang telah terbaca

Tapi tunggu dulu, itu artinya rekan satu tim Anda tidak akan menerima pesan tersebut. Ketika dia membuka URL yang anda berikan, tampilan seperti Gambar 3 inilah yang dia dapatkan

Gambar 3. Pesan error ketika membuka URL yang sebelumnya telah dibuka

Ketika rekan satu tim anda akan melaporkan ke Anda bahwa dia tidak bisa membaca pesan rahasia, maka itu artinya pesan anda telah bocor sehingga yang perlu anda lakukan adalah mengganti pesan rahasia (password) yang and bagikan sebelumnya.

Bagaimana dengan keamanan pengiriman data?

Gunakan protokol HTTPS dan pastikan konfigurasi protokol HTTPS anda aman, sehingga pesan Anda kirimkan akan terenkripsi saat pengiriman data. Gunakan https://www.ssllabs.com/ssltest/analyze.html untuk menguji konfigurasi HTTPS yang Anda gunakan.

Gambar 4. Contoh hasil pengujian HTTPS yang bagus oleh SSLLabs

Bagaimana dengan keamanan data yang disimpan di server?

Dalam dokumentasi SnapPass dijelaskan bahwa

Passwords are encrypted using Fernet symmetric encryption, from the cryptography library. A random unique key is generated for each password, and is never stored; it is rather sent as part of the password link. This means that even if someone has access to the Redis store, the passwords are still safe.”

sehingga data yang (sementara) disimpan di dalam server akan aman.

Bagaimana cara instalasi SnapPass?

Instalasi SnapPass tidaklah rumit, cukup cloning repository SnapPass dari github

$ git clone https://github.com/pinterest/snappass

masuk ke dalam directory snappass

$ cd snappass

lalu jalankan snappass menggunakan Docker

$ docker-compose up -d

maka anda sudah bisa membukanya melalui web browser dan port 5000

http://localhost:5000

Namun Anda tetap memerlukan bantuan System Administrator untuk melakukan pemasangan SnapPass, karena SnapPass memerlukan Docker dan HTTPS agar berjalan dengan benar dan aman.

Selamat mencoba.

Artikel ini ditulis saat wabah Covid-19 sedang melanda dunia yang memaksa sebagian besar dari kita untuk bekerja di rumah. Semoga wabah ini dapat segera berakhir dan kehidupan menjadi lebih baik. Aamiiin…

1 Ramadhan 1441