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.

CategoriesInternet

Cara Mudah Buat Kelas Virtual

Halo teman-teman! Terimakasih sudah membuka artikel ini 😊

Jadi, artikel ini saya tujukan untuk teman-teman dalam bidang pendidikan yang pada masa-masa ini terpaksa harus melakukan kegiatan belajar secara online dengan para siswa atau peserta pelatihan. Ya, kita tahu sampai hari ini sudah lebih dari satu bulan semua lembaga pendidikan melakukan kegiatan belajar secara online.

So, How to do simple thing yang dapat membantu kalian untuk melakukan online learning.

Satu platform kelas online yang sangat saya rekomendasikan adalah Google Classroom. Saya juga menggunakan platform ini selama masa pandemi, well saya membantu menjadi admin untuk kelas virtual ibu saya (teacher). Ada sekitar 2 kelas dengan total 150 murid dan sangat mudah sekali untuk mengatur kegiatan kelasnya.

Jadi, apa yang membuat platform ini spesial?

  1. Pengembang platform ini adalah Google. Perusahaan raksasa yang banyak melakukan inovasi di bidang teknologi membuat platform ini sangat bisa untuk dipercaya.
  2. Sinkronisasi dengan semua produk Google seperti Google Form, Google Sheets, Youtube, Google Drive dan masih banyak lagi. Sehingga sangat mudah untuk melakukan banyak hal disini.
  3. Bisa membuat Topic yang dapat disesuaikan dengan Bab bahasan seperti kelas fisik biasanya.
  4. Bisa melakukan pengumpulan dan penilaian tugas secara online
  5. Yang paling penting, hasil tugas siswa dapat direkap secara otomatis dengan output file excell.

Dengan berbagai kemudahan tersebut, ternyata cara menggunakan nya cukup mudah sekali. Silakan ikuti step-step dibawah ini.

[SATU]: Pastikan kalian terhubung dengan Internet dengan kecepatan yang memadai. Why? Karena sebagai guru atau fasilitator tentunya kalian harus tanggap dengan kondisi kelas.

[DUA]: Buka link https: classroom.google.com di browser kalian. Halaman ini adalah wajib kalian buka jika ingin membuka platform Google Classroom. Jangan lupa untuk Sign In dengan akun Google kalian.

Jika kalian baru pertama membuka halaman ini maka akan muncul halaman seperti ini. Pilih ‘Lanjutkan’.

[TIGA]: *Opsional. Silakan download aplikasi Google Classroom di smartphone kalian. Hal ini ditujukan agar kalian dapat dengan mudah memonitor kondisi kelas ketika sedang melakukan aktivitas lain.

[EMPAT]: Pilih ikon ‘+’ untuk membuat kelas kalian. Lalu pilih Create Class.

[LIMA]: Masukan identitas kelas yang akan kalian buat.

Ada beberapa form yang dapat kalian isi sebagai identitas kelas kalian. Berikut beberapa informasi terkait form yang perlu kalian isikan

  • Class Name: bagian ini akan menjadi judul kelas kalian. Jadi pastikan cukup deskriptif. Bisa diisi dengan nama lembaga kalian.
  • Section: bagian ini akan menjadi informasi yang muncul dibawah judul kelas kalian. Kalian bisa mengisi dengan nama kelas, guru, atau tahun ajar.
  • Subject: bagian ini menjadi informasi mata pelajaran atau mata kuliah terkait dengan kelas.
  • Room: bagian ini menjadi informasi nama ruang kelas seperti kelas fisik pada biasanya.

[ENAM]: Kalian akan mendapatkan tampilan kelas kalian seperti ini.

Ada beberapa tab yang membedakan fungsi-fungsi dari platform ini:

  • Stream / Forum:

Tab ini berisi informasi kelas dan forum. Kalian dapat post informasi terkait kelas seperti pengumuman penggunaan kelas, atau diskusi terbuka. Dan siswa dapat berkomentar pada postingan yang kalian buat.

  • Classwork / Tugas Kelas

Tab ini berisi halaman tugas yang harus dilakukan siswa. Kalian dapat memberikan tugas seperti quiz dengan menggunakan Google Forms, atau tugas membaca buku dengan membagikan file ebook yang kalian pilih.

  • People / Anggota

Tab ini berisi informasi penghuni kelas. Kalian dapat memonitor siapa saja yang memasuki kelas kalian. Kalian juga bisa menambahkan guru lain pada kelas ini.

  • Grades / Nilai

Tab ini berisi hasil nilai dari tugas yang siswa kalian kumpulkan.

[TUJUH]: Membuat Kelas!

Silakan Pilih ‘Create’ untuk membuat tugas dan silakan pilih tipe tugas yang akan kalian buat. Google menyediakan beberapa templates yang akan membantu kalian untuk membuat tugas.

  • Assignment: Bagian ini untuk membuat tugas secara umum
  • Quiz Asignment: Bagian ini untuk membuat tugas dengan template quiz
  • Question: Bagian ini untuk membuat tugas dengan model kalian membagikan satu pertanyaan lalu siswa dapat menjawabnya
  • Material: Bagian ini untuk membuat materi bahasan. Bisa berupa informasi tentang bahasan suatu bab / chapter. Kalian bisa menambahkan beberapa link untuk referensi siswa
  • Reuse Post: Bagian ini untuk menggunakan post yang sebelumnya sudah pernah kalian post.
  • Topic: Bagian ini untuk membuat pemisah dari setiap bab. Kalian bisa menggunakanya untuk memberi nama bab atau nama tema dari tugas yang akan kalian buat.

[DELAPAN]: Pilih ‘Assignment’, untuk membuat tugas general.

Ada beberapa bagian yang perlu kalian isikan:

  • Title: Kalian dapat mengisikan dengan nama tugas.
  • Instruction: Kalian dapat mengisikan dengan instruksi dari tugas yang kalian buat.
  • Add: Kalian dapat menambahkan file pendukung lain seperti file video youtube, file drive, file attachment, atau link.
  • Create: Kalian dapat menambahkan file pendukung seperti Google Forms, Google Sheets, Google Docs, dan lainya.
  • For: Ditujukan untuk kelas apa dan untuk siapa saja. Kalian bisa menyesuaikan untuk kelas yang kalian pilih dan semua siswa.
  • Points: Nilai maksimal yang dapat didapatkan siswa.
  • Due: Waktu terakhir pengumpulan tugas siswa.
  • Topic: Jika kalian ingin menambahkan post untuk pada topik terpilih.
  • Rubrik: Kalian dapat menambahkan bagaimana cara tugas kalian dinilai.

[SEMBILAN]: Jika kalian selesai membuat tugas maka pilih ‘Assign’. Jika kalian ingin tugas akan di post pada waktu tertentu maka kalian dapat memilih ‘Schedule’, atau memilih ‘Save Draft’ untuk menyimpan file tugas yang telah dibuat untuk diedit di lain waktu.

[SEPULUH]: Tugas kalian akan terposting pada halaman ‘Classwork’ dan akan memberi notifikasi kepada semua siswa.

Dari tugas yang sudah kalian buat nantinya akan dapat kalian nilai secara online juga, begitu juga rekap nilainya juga.

So, I really recommend you guys, teachers, mentors, trainers, facilitators to use this platform. I believe it will help you so much!

Jika kalian membutuhkan bantuan untuk pembuatan kelas virtual. Feel free untuk menghubungi saya di @nandamochammad

That's All! See you on the next line!
CategoriesProgramming

Bikin HTTP Request lebih cepat dengan Generic Class!

Halo teman-teman! Saya menulis artikel ini untuk membantu developer iOS lain yang pada artikel lalu sempat bertanya langsung ke saya cara membuat Generic Class untuk HTTP Request 😉.

Sedikit Disclaimer❗️, Generic Class bukan hanya ditujukan untuk membuat HTTP Request / Networking saja. Tapi bisa untuk semua fungsi dengan input yang generic/umum. Silakan baca dokumentasi lebih lengkap disini.

Generics — The Swift Programming Language (Swift 5.2)

Networking sudah menjadi sesuatu yang paling sering dilakukan pada Mobile Apps, khususnya pada iOS Developement. Ya, you know right gimana Mobile Apps tanpa ada networking.

Menggunakan Generic Class ini gambaran umumnya adalah membuat box yang dapat menyimpan dan menjaga semua inputnya. Dengan batasan sesuai dengan ukuran box nya dan tidak merusak komposisi box. Bagaimana? Sedikit lebih jelas bukan.

So, Let’s see how the code works!

Untuk networking akan menggunakan Alamofire😁, untuk kalian pengguna Moya atau URLSession bisa menyesuaikan .

  • Pada dasarnya ini mirip class dengan function seperti biasa

Yang membuat berbeda adalah simbol <T>. simbol tersebut adalah simbol generic yang mengindikasikan bahwa fungsi tersebut merupakan fungsi generic.

  • Selanjutnya, tuliskan kode request seperti biasa
  • And yes! fungsi generic kita selesai! sangat mudah kan? Eits, jangan lupa untuk merubah fungsi menjadi static function agar fungsi dapat diakses tanpa pembuatan objek kelas terlebih dahulu.
  • Bagaimana cara menggunakan kelas ini? cara menggunakan nya cukup mudah

Yap! Hanya seperti itu cara menggunakan nya. Kalian tidak perlu baris kode untuk setiap kali request. Dengan menggunakan Generic Class untuk networking, dapat memangkas kode request hingga 30% . Tentunya sangat membantu untuk proses development kalian.

Tapi, jika kalian membutuhkan bantuan untuk pembuatan fungsinya. Feel free untuk menghubungi saya di @nandamochammad

That's All! See you on the next line!
CategoriesProgramming

Mengenal Svelte JS

         Beberapa minggu yang lalu saya mulai belajar Svelte JS. Mengapa saya belajar Svelte JS, ini dikarenakan saya kebiasaan hunting library atau framework baru  dan tolak ukur saya Fremework atau library yang mendapat bintang banyak di github maka dilihat dari segi ekosistemnya akan bagus pula. Svelte JS mendapat 33.7 Ribu  Bintang dalam kurun waktu 3 Tahun di thaun 2020 dan akan terus naik setiap harinya. Dari segi pengertian dan penggunaan Hampir sama dengan React dan Vue Js yang lebih dahulu rilis dengan usia 6 tahun di tahun 2020. Svelte JS memberikan warna Baru. Salah satu perbedaan jelas Svelte JS dengan React Js dan Vue JS adalah Tanpa menggunakan Virtual DOM. 

Tokopedia juga menggunaan Svelte JS untuk aplikasi yang mereka gunakan, ada beberapa alas an mengapa mereka menggunaan Svelte JS silakan baca Artikel berikut: http://shorturl.at/elrV4 .

Tokopedia tertera sebagai salah satu platform yang menggunakan Svelte

Mari kita explore Svelte JS:

1.  Apa itu Svelte JS.

Svelte adalah cara baru untuk membangun user interface dengan cepat. Sementara framework seperti React dan Vue melakukan semua task mereka di browser,   Namun Svelte melakukan Compile Step secara berkala sehingga tidak semua Task langsung di load di Browser.

2.  Menulis Kode Lebih Sedikit

Dari segi penulisan Svelte JS lebih pendek dibandingkan React dan Vue. Berikut contoh Aplikasi dan codenya:

Aplikasi yang dibuat akan tampil seperti berikut:

Aplikasi dari hasil code

Script code aplikasi tersebut di Svelte sebagai berikut:

Script Code Svelte

Script Code di React sebagai berikut:

Script code di React

Terakhir Script code di Vue sebagai berikut:

Script code di Vue

Terlihat bukan perbedaannya dari segi panjang Script Code yang dibuat untuk aplikasi sederhana tersebut, Svelte lebih seditkit dibandingkan dengan React dan Vue.

Untuk lebih jelasnya silakah Baca di link berikut: https://svelte.dev/blog/write-less-code

3. Tidak menggunakan Virtual DOM

DOM merupakan singkatan dari Document Object Model. Artinya, dokumen (HTML) yang dimodelkan dalam sebuah objek. Objek dari dokumen ini menyediakan sekumpulan fungsi dan atribut/data yang bisa kita manfaatkan dalam membuat program Javascript. Virtual DOM memang lebih cepat dari pada Real DOM. namun mengan Svelte dikatakan lebih cepat walau tanpa menggunakan DOM? silahkan baca di sini : https://svelte.dev/blog/virtual-dom-is-pure-overhead

4. Sangat Reaktif

Yang dimaksud dengan reactif adalah tidak diperlukan banyak library untuk proses di javascript. Kebalikannya Svelte klaim memudahkan fungsi dari javascript. Untuk lebih jelasnya silakan baca di : https://svelte.dev/blog/svelte-3-rethinking-reactivity

 

Lebih dalam lagi mari kita coba ulik2 untuk beberapa fungsionalitas namun disini saya akan membahas contoh script tentang : Declaration, Reactivity, Props, Logic, dan Event.

Dikarenakan ini masih awal saya akan membahas Script menggunakan REPL dari Svelte JS.

Declaration

Pendeklarasian varial dan pemanggilan variable di Svelte mudah seperti di Javascript namun ingat tanpa DOM atau menggunaan innerHTML sehingga script menjadi lebih Pendek. Berikut contohnya:

Contoh Deklarasi Svelte JS

Reactivity

Reactivity disini mengunakan huum aksi reaksi di javascript kita biasa menggunakan onclick=”myFunction()” berbeda dan lebih easy dan lebih pendek pendeklarasian onclick di Svelte. Silahkan lihat Contoh berikut:

Contoh Reactivity

Props

Props adalah property ata variable yang berasal dari luar class atau parent. Berikut contoh untuk props di Svelte:

Contoh untuk Props Svelte

Logic

Pada dasarnya semua logic sama namun perbedaan hanya di penulisan. Berikut penulisan Logic untuk Svelte:

Logic If

{#if args}
    <p>{content}</p>
{/if}

Logic If-Else

{#if args}
    <p>{content}</p>
{:else}
    <p>{content else}</p>
{/if}

Logic Else-If

 
 
{#if x > 10}   
 <p>{content}</p>
{:else if 5 > x}
    <p>{content}</p>
{:else}
    <p>{content}</p>
{/if}

Logic Looping

<script>
    let cats = [
        { id: ‘J—aiyznGQ’name: ‘Keyboard Cat’ },
        { id: ‘z_AbfPXTKms’name: ‘Maru’ },
        { id: ‘OUtn3pvWmpg’name: ‘Henri The Existential Cat’ }
    ];
</script>
{#each cats as { id, name }, i}
    <li><a target=“_blank” href=“https://www.youtube.com/watch?v={id}”>
        {i + 1}: {name}
    </a></li>
{/each}
 

Event

Event digunakan untuk melakukan suatu perintah. Event di Svelte dibuat cukup sederhana berikut contoh untuk onclick dan onMousemove:

Contoh Event Svelte

Sebenarnya masih banyak yang perlu dibahas atau dipelajari di Svelte JS ini namun menurut saya Artikel ini cukup untuk mengenal Svelte JS sesuai dengan judulnya. Untuk developer yang sudah bosan dengan React dan Vue saya sarankan mempelajari Svelte karena menurut saya pribadi cukup berguna untuk PWA (Progressive Web Apps) dan mudah untuk dipelajari. Karena usia masih 3 tahun di 2020 masih belum banyak yang mengetahui tentang Framework Svelte ini. Sejujurnya saat saya pelajari React dan Vue diawal lumayan kesulitan namun untuk Svelte ini lebih mudah dan memberikan perbandingan hasil yang cukup besar. Semoga bermanfaat. 

Wassalamualaikum

CategoriesProgramming

Daftar Akun Apple Developer? Mudah!

Halo teman-teman, terimakasih telah membuka artikel ini. Well, kenapa saya menulis cara mendaftar akun Apple Developer ini karena saya baru memperbarui akun developer saya dan selain itu akun developer adalah syarat sah agar kita bisa belajar Apple Development lebih deep lagi 🔥.

Mungkin banyak yang bertanya, emang kenapa harus mendaftar akun developer? Berbeda dengan pemrograman mobile sebelah yang semua fitur developmentnya dapat diakses, Apple sangat selektif untuk aplikasi yang di publish begitu juga dengan developernya 😎. Dengan akun developer kemudahan yang paling bisa dengan mudah rasakan selain dapat mempublish di Apps Store adalah kebebasan akses di semua development support apple seperti notification, CloudKit, CoreML, ARKit, HealthKit, SiriKit, dan semua development stuff milik apple. Sehingga dalam satu environment kita cukup menggunakan produk apple saja.

Jadi, bagaimana cara mendaftar nya?

Oh iya, saya akan menuliskan cara mendaftar untuk Individual Account ya, bukan untuk company 😉 hanya membutuhkan kartu debit/kredit (untuk payment) dan kartu identitas (hanya jika diminta)

  • [SATU]: Silakan buka registration page pada halaman ini: https://developer.apple.com/enroll. Jika kamu sudah memiliki Apple ID silakan langsung Sign In seperti dibawah ini
  • [DUA]: Periksa Agreement Apple, centang kotak yang mengonfirmasi bahwa kalian telah membacanya dan klik ‘Submit‘.
  • [TIGA]: Konfirmasikan bahwa semua informasi yang kalian masukkan sudah benar (email, nama, lokasi), lalu pilih entitas. Ingat! Kita mendaftar untuk Individual Account
  • [EMPAT]: Isi semua informasi yang diminta, biasanya membutuhkan waktu sekitar 10-15 menit untuk mengisinya, jadi yang sabar ya!
  • [LIMA]: Jangan lupa untuk membaca License Agreement pada halaman paling akhir! Jika setuju, jangan lupa mencentang box kecil dibawah License Agreement nya.
  • [ENAM]: Pilih “Purchase” untuk membayar akun developer kalian.

Perlu diketahui akun ini bersifat subscription per tahun.

Sehingga jangan salah untuk harga $99 tersebut harus kalian bayar kan setiap tahun ya. Jangan khawatir ada Auto Renewal jika kalian ingin untuk otomatis pembayaran subscriptionnya.

So, that’s the steps! Cukup mudah kan?

Tapi, jika kalian membutuhkan bantuan untuk pendaftaran akun developer. Feel free untuk menghubungi saya di media sosial saya di @nandamochammad

That's All! See you on the next line!
CategoriesUX Design

UX Design untuk Aplikasi Enterprise

Pengenalan UX

User Experience Design (UX, UXD, atau XD) merupakan proses yang membawa aspek interaksi manusia kepada teknologi dan design. UX adalah campuran dari proses berpikir kreatif, perilaku, dan analitis agar bisa menciptakan solusi design yang sesuai dengan mental manusia sehingga menggapai objektif secara efektif. Pengertian UX secara mudahnya menurut saya adalah ilmu yang mempelajari bagaimana membangun produk yang memudahkan pengguna saat menggunakan suatu produk.

“Don’t make me think”

Steve Krug

Kalimat tersebut mungkin adalah quotes yang sering Anda baca dan dengar ketika terjun ke dunia UX. Karena UX yang dikatakan berhasil salah satu kuncinya adalah tidak membuat pengguna berpikir ketika menggunakan suatu produk.

Tiga Konteks Concept of Use

Semua aplikasi alarm harus bisa memenuhi tujuan utama yaitu berdering pada waktu yang ditentukan

Setidaknya ada tiga konteks pada concept of use UX yaitu useful, usable, dan used. Sebuah produk bisa dikatakan useful ketika berhasil membuat pengguna menyelesaikan suatu objektif. Contohnya adalah produk aplikasi alarm pada smartphone. Alarm tersebut bisa dikatakan useful ketika pengguna bisa mengatur jam alarm berdering tepat waktu. Jika alarm di atur untuk berbunyi pada jam 4 pagi misalnya, namun alarm baru berbunyi pada jam 5 pagi, maka aplikasi alarm tersebut bisa dikatakan tidak useful.

Dengan UX, obeng bisa digunakan dengan lebih mudah

Konteks selanjutnya adalah usable yang berkaitan dengan usability (kegunaan) sebuah produk. Cakupan dari usable lebih besar dari useful karena mementingkan faktor perilaku manusia dimana pengguna bisa merasakan “emosi” dalam bentuk kepuasan, kemudahan, dan efektifitas dalam menggunakan sebuah produk. Contoh dari usability bisa dilihat pada obeng. Ujung obeng yang menjadi pegangan tangan manusia mayoritas memiliki ujung bulat dan permukaan yang dapat dicengkeram. Kenapa? Tentu agar memudahkan untuk memegang pegangan ketika melakukan gerakan memutar obeng.

Penggunaan Segway yang menjadi trobosan baru pada masanya

Lalu yang terakhir adalah used. Konteks used mencerminkan apakah pada akhirnya, produk mau digunakan atau tidak oleh pengguna. Produk boleh useful dan usable, namun jika produk tidak dibutuhkan oleh pengguna, tetap saja produk tersebut akan gagal. Bisa diambil contoh pada kendaraan Segway. Pada awal launching, Segway diprediksi akan terjual berjuta-juta unit namun pada kenyataannya, hanya terjual 30.000 unit selama 6 tahun dari awal perilisan. Perusahaan yang menciptakan Segway tidak bisa menjamin bahwa kendaraan tersebut legal digunakan sehingga pada beberapa wilayah, Segway dilarang digunakan pada tempat publik.

Lima proses UX

Dalam standar prakteknya, UX dirancang dalam beberapa langkah mulai dari empathize, define, ideate, prototype, dan test. Langkah tersebut bisa dibilang kompleks khususnya untuk aplikasi organisasi atau enterprise. Mengingat aplikasi internal enterprise dituntut untuk bisa digunakan secepat mungkin dan biasanya tanpa langkah memahami atau riset customer terlebih dahulu.

UX untuk Aplikasi Enterprise

Bisnis seringkali menyadari bahwa mereka tidak teralu mementingkan UX karena aplikasi yang mereka kembangkan tidak langsung digunakan oleh customer melainkan digunakan oleh tim internal mereka sendiri. Namun perlu disadari pula bahwa jika aplikasi yang dikembangkan tidak useful, usable, dan used, maka produktivitas pengguna akan stuck dan berkutat dalam penjara inefisiensi. Inefisiensi menyebabkan banyak waktu dan uang yang hilang ketika perusahaan tidak menggunakan aplikasi secara produktif. Selain itu, pada era saat ini yang mementingkan simplicity, para pegawai akan merasa malas untuk menggunakan aplikasi yang susah digunakan.

Salah satu konteks yang sering menjadi issue ketika mendesain UX untuk aplikasi Enterprise adalah usability. Usability bisa dipetakan ketika langkah riset user dan riset pasar dilakukan. Namun permasalahannya adalah seringkali tidak ada analisis pengguna, tidak ada feedback, dan tidak ada usability testing kepada real user. Issue umum usability ketika mendesain aplikasi enterprise adalah sebagai berikut:

Too many Features

Contoh terlalu banyak fitur pada satu halaman

Kebanyakan perusahaan terlau berfokus dengan fitur dan fungsionalitas dibanding user goals.

Inconsistent

Tidak adanya standar dan guideline sehingga memperbesar peluang inkonsistensi.

Old Fashioned Look

UI/UX Design Trends

Hal ini berhubungan dengan User Interface. Hal ini bisa terjadi ketika technology stack yang sudah bersifat obsolete dan tidak mengikuti trend desain yang modern.

Cluttered Information

Merupakan hasil ketika perusahaan terlalu mementingkan fungsionalitas sehingga semua informasi disajikan tanpa filtering dan tanpa strategi konten.

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.

CategoriesInternetProgramming

Capture API Endpoint yang jalan di Aplikasi Smart Phone menggunakan Postman

API Endpoint hampir pasti digunakan di Aplikasi Android maupun IOS, tentunya misal pembaca adalah program akan penasaran apakah API yang dibuat kita aman dan apakah mungkin ter ekspose. Jawabannya iya sangat mungkin untuk di capture. Kali ini kita akan membahas tuntas salah satu cara untuk Capture atau sniffing API yang jalan di Aplikasi Smart Phone menggunakan Postman. Cara ini bisa dilakukan untuk Optimasi API yang kita Buat untuk menghindari data leaks. Di akhir akan saya jelaskan bagaimana cara untuk menghindari data leaks.

Berikut pengetahuan Dasar sebelum kita Bermain main lebih dalam:

1.  API Endpoint.

API(Application Programming Interface) merupakan sekumpulan (method, fungsi atau URL endpoint) yang digunakan untuk mengembangkan aplikasi lebih dari satu platform yang berbeda. Lalu apa kegunaan API ini? dengan menggunakan API maka kita dapat mengunakan sumber daya dari aplikasi lain tanpa perlu mengetahui bagaimana aplikasi itu dibuat. 

2. Postman.

POSTMAN adalah sebuah aplikasi (berupa plugin) untuk browser chrome, fungsinya adalah sebagai REST Client atau istilahnya adalah aplikasi yang digunakan untuk melakukan uji coba REST API yang telah kita buat. silakan download di link berikut: https://www.postman.com/downloads/

3. Proxy.

Proxy server (peladen proxy) adalah sebuah komputer server atau program komputer yang dapat bertindak sebagai komputer lainnya untuk melakukan request terhadap content dari Internet atau intranet. disini yang akan kita gunaan sebagai proxy server adalah PC.

 

Ayo kita Praktikan untuk lebih mudahnya:

Keterangan :  Pastikan menyiapkan PC dan Smart Phone.  PC dan Smart Phone harus dalam satu Jaringan. PC sebagai alat Capture sedangkan Smart Phone yang di Capture.

  1. Setting Postman klik tombol Capture Request and Cookies.
    Menu untuk Capture Request and Cookies
    Setting seperti Gambar berikut:
    Setting Capture requests an cookies Postman
  2.  Cek terlebih dahulu IP Address PC kita berapa, IP ini yang akan digunakan sebagai Hostname di proxy Smart Phone saya yaitu : 192.168.53.234
    IP Address PC
  3.   Setting Proxy di Smart Phone dengan menggunakan Hostname / IP PC kita dan masukan Port yang sudah kita setting di Postman(saya menggunakan Smart Phone Vivo Y31).
    Setting Proxy di Smart Phone
  4. Setting selesai. Sekarang waktunya Capture API, saya ingin Capture API dari Aplikasi KAI Access, buka aplikasi KAI access.
    Aplikasi KAI Access
  5.            Setelah dibuka dan melakukan beberapa proses di Aplikasi KAI Access, maka semua request akan ter Capture di Postman lengkap dengan URL, Header, Request dan response.

    Hasil Capture API saya taruh di History.
    Salah satu API Endpoint yang saya dapat dari Capturing.

Kesimpulan:

Ini adalah salah satu cara yang saya  gunakan untuk mencari celah / bug dari suatu aplikasi karena kebanyakan aplikasi API tidak ter bundle atau tidak double encrypt dan tidak ada ssl security sehingga sangat mudah data leaks atau rusak, tentu environment dasar dari sisi backend diperlukan untuk memperkuat suatu system. Salah satu cara preventif dasar adalah pastikan URL End Point API menggunakan ssl security dan pastikan data public dan private dibedakan dengan auth.

Semoga Bermanfaat

Wasallamualaikum.