WHAT'S NEW?
Loading...

Cara Setup USB Modem di Arch Linux

Cara Setup USB Modem di Linux

Menggunakan USB modem di linux memang terkadang selalu ada masalah, terlebih lagi jika USB modem yang digunakan itu termasuk kategori yang memang sulit untuk digunakan di linux. Namun bagaimanapun juga ada banyak cara yang bisa dilakukan untuk mengatasinya, memang caranya sedikit lebih ribet bagi pemula tapi layak untuk dicoba pastinya.

Saya baru-baru ini dan untuk pertama kalinya menggunakan Distro Linux selain dari Debian (baik turunannya) yaitu Arch Linux. Linux yang satu ini sangat populer, maka dari itu saya putuskan untuk menggunakan mulai dari sekarang dan ntah sampai kapan akan berganti lagi.

Karena Arch Linux dikenal lekat dengan customization, jadi untuk dapat menggunakan USB modem perlu melakukan beberapa langkah, berikut ini saya berikan tahapannya (saya asumsikan kita sudah memiliki DE dan belum bisa menggunakan USB modem di network manager).

Lakukan identifikasi modem USB dan sim card

Jika sim card yang digunakan memiliki PIN, maka perlu untuk menonaktifkannya terlebih dahulu (lewati langkah ini jika tidak memiliki PIN pada sim card).
$ sudo mmcli -i SIMNUMBER --pin=XXXX
Kemudian pastikan modem sudah terdeteksi saat dicolok.
[bill@archy ~]$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 8087:0a2b Intel Corp.
Bus 001 Device 003: ID 04f2:b57a Chicony Electronics Co., Ltd
Bus 001 Device 002: ID 12d1:1506 Huawei Technologies Co., Ltd. Modem/Networkcard <== status modem yg berhasil terdeteksi
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Contoh hasil diatas menandakan USB modem sudah bisa digunakan, tapi pada umumnya saat pertama kali dicolok USB modem akan memiliki 2 mode yaitu sebagai flash storage dan USB modem. Untuk mengatasi hal tersebut cukup ikuti langkah berikut:
$ sudo pacman -S usbutils usb_modeswitch modemmanager mobile-broadband-provider-info nm-connection-editor
$ sudo systemctl enable ModemManager
$ sudo pacman -S modem-manager-gui <== jika menginginkan aplikasi modem GUI (optional)
$ sudo reboot
Sampai disini setelah restart maka seharusnya kita sudah bisa membuat profile koneksi dan membuat koneksi internet dengan USB modem.

Demikianlah langkah sederhana yang dilakukan untuk menggunakan USB modem di Arch Linux, jika mengalami kendala silahkan berikan komentar pada kolom dibawah.

source: USB Modem
image source: maketecheasier

4 Hal Umum Dilakukan Setelah Install Arch Linux

4 Hal Umum Dilakukan Setelah Install Arch Linux

Umumnya saat setelah installasi Arch Linux (baca Tutorial Cara Install Arch Linux), beberapa hal perlu dilakukan agar bisa difungsikan sebagaimana mestinya, yang umum diantaranya adalah membuat user, setup repository, installasi package utilities, dan tentunya desktop environment.

Tahapan tersebut diatas merupakan tahapan dasar pada umumnya, dan juga cara melakukannya tidak begitu rumit. Silakan ikuti tahapan berikut ini hingga selesai, dan khusus untuk desktop environment (DE) saya akan menggunakan XFCE4 yang merupakan DE favorite sejak dulu.

Membuat user

Login menggunakan root terlebih dahulu, pastikan anda mengingat password root yang dibuat, setelah itu pastikan juga perangkat yang digunakan sudah terhubung ke internet, saya menggunakan kabel LAN ataupun jika di virtualbox menggunakan NAT untuk mendapatkan akses internet, pastikan dhcp sudah aktif, lakukan dengan perintah berikut:
# systemctl enable dhcpcd
# systemctl start dhcpcd
# ping archlinux.org
# pacman -Syu
Dari perintah diatas diasumsikan internet sudah terhubung dan kemudian kita melakukan update sistem jika memang ada tersedia update. Setelah selesai kita langsung membuat user baru dan juga diberi akses melakukan perintah sudo.
# useradd -m -G wheel -s /bin/bash bill
# passwd bill
Isikan password user tersebut, kemudian kita lanjutkan dengan melakukan konfigurasi visudo dengan perintah berikut:
# visudo
   %wheel ALL=(ALL) ALL
# pacman -S sudo
Sampai ditahap ini, proses membuat user pun selesai, bisa langsung coba logout dari root dan login menggunakan user baru tersebut.

Setup repository

Tahap ini cukup penting, karena bagi sebagian orang hanya mengandalkan official repository terkadang kurang puas dengan versi package yang diberikan, oleh karena itu diperlukan repository tambahan dan khusus untuk Arch Linux ada repository AUR ( Arch User Repository ), dan juga kita bisa menggunakan multi arch untuk dukungan package 32bit & 64 bit. Berikut ini langkah yang dilakukan.
-- multi arch 32 & 64bit
$ sudo vi /etc/pacman.conf
   [multilib]
    include = /etc/pacman.d/mirrorlist

-- enable Yaourt package (untuk install AUR package)
$ sudo vi /etc/pacman.conf
    [archlinuxfr]
    SigLevel = Never
    Server = http://repo.archlinux.fr/$arch

$ sudo pacman -Syu yaourt

$ yaourt -Syu

$ yaourt package_name (tidak memerlukan perintah sudo)
Selain menggunakan Yaourt, bisa juga menggunakan packer, saya pribadi menggunakan Yaourt untuk menginstall AUR package.
-- Packer installation
$ wget https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=packer
$ mv PKGBUILD\?h\=packer PKGBUILD
$ makepkg
$ sudo pacman -U packer-*.pkg.tar.xz
$ packer -Syu

Install package utilities

Utilities sendiri merupakan tools sederhana yang umum digunakan semacam zip, wget, vim, tar dan lain sebagainnya, berikut ini sedikit contoh package yang diinstall, sisanya bisa menyesuaikan kebutuhan anda.
$ sudo pacman -S base-devel fakeroot jshon expac git wget
$ sudo pacman -S p7zip p7zip-plugins unrar tar rsync vim

Install desktop environment

Ini merupakan tahapan yang paling ditunggu, menentukan DE yang diinginkan untuk diinstall semua tergantung anda, diatas saya sudah menyampaikan kalau saya akan menginstall Xfce4 dan dengan display manager Lightdm-gtk dan jika anda ingin yang lain bisa googling terlebih dahulu macam-macam DE yang linux punya. Display manager sederhanya sih tools untuk proses login, jadi yang muncul untuk meminta login linux desktop itu disebut display manager. Langsung ke proses install dengan perintah berikut:
$ sudo pacman -S xorg xorg-server
$ sudo pacman -S xfce4 xfce4-goodies
$ sudo pacman -S lightdm lightdm-gtk-greeter
Hanya dengan perintah tersebut DE sudah terinstall, lalu kita perlu lakukan konfigurasi terhadap lightdm untuk mengaktifkan greeter yang terinstall.
$ sudo vi /etc/lightdm/lightdm.conf
   ..SeatDefaults
   greeter-session=lightdm-gtk-greeter
$ sudo systemctl start lightdm
$ sudo systemctl enable lightdm
Sampai disini semua tahapan sudah selesai, untuk mencobanya bisa langsung lakukan reboot, maka akan langsung tampil default greeter login dan DE default dari Xfce4. Silakan tinggalkan komentar jika mengalami kendala.

Image source: youtube

Ancaman Bahaya Serangan WPA2 Krack Attack Pada Wi-Fi

Ancaman Bahaya Serangan WPA2 Krack Attack Pada Wi-Fi

Beberapa hari yang lalu kita mendengar berita mengenai celah keamanan pada Wi-Fi dalam fitur WPA2 yang mana protokol ini sudah ada pada segala macam perangkat Wi-Fi modern tetapi dengan celah keamanan ini seorang attacker dapat mengganti ulang key yang sudah kita buat.

Dengan kelemahan tersebut, seorang attacker hanya perlu menggunakan key reinstallation attacks (KRACKs). Konkretnya, attacker bisa menggunakan teknik serangan baru ini untuk membaca informasi yang sebelumnya diasumsikan telah dienkripsi dengan aman. Hal ini dapat disalahgunakan untuk mencuri informasi sensitif seperti nomor kartu kredit, kata sandi, pesan chat, email, foto, dan sebagainya.

Celah ini berlaku pada semua perangkat yang mendukung Wi-Fi, mulai dari Laptop, router, handphone dan perangkat lainnya yang didukung oleh OS ataupun sistem yang digunakan. Oleh karena itu diperlukan untuk mengupdate patch yang telah disediakan oleh masing-masing pengembang sistem terkait.

Berikut ini contoh video demonstrasi serangan KRACKs menggunakan celah keamanan WPA2.


Jadi segeralah mengupdate perangkat yang anda gunakan untuk menghindari penyalahgunaan yang dilakukan oleh pihak tertentu.

Image source: pocketnow
Source: krackattacks

Tutorial Cara Install Arch Linux

Tutorial Cara Install Arch Linux

Pada artikel kali ini saya akan mengulas mengenai salah satu Linux favorite yaitu Arch Linux. Umumnya saat menggunakan Arch Linux, proses installasi yang ditawarkan berupa text mode, sehingga menyusahkan user yang belum familiar. Jadi saya akan berikan cara install Arch Linux yang menggunakan text mode didalam virtualbox, tetapi cara ini juga bisa digunakan pada installasi langsung pada perangkat komputer.

Terlebih dahulu silakan download versi terbaru melalui link official ini, jika sudah silakan masuk ke proses installasi (saya asumsikan sudah bisa menggunakan virtualbox ataupun sudah masuk mode install perangkat komputer).

Setup Partisi

# lsblk

# fdisk /dev/sda  (bisa juga sdb atau yang lainnya tergantung dari hasil lsblk)
n (to add a new partition)
p (for primary partition)
1 (default partition number)
(accept default start)
(accept default end)
t (to change partition type)
8e (for LVM partition when using MBR)
i (to verify)
w (save and quit)

Perintah diatas adalah untuk melihat partisi yang tersedia semisal /dev/sda1 (setiap perangkat mungkin akan berbeda), disini saya akan menggunakan LVM dengan jumlah partisi kosong yang disediakan yaitu 30GB.
# pvcreate /dev/sda1

# vgcreate vg_arch /dev/sda1

# lvcreate -L 200M -n boot vg_arch
# lvcreate -L 20G -n root vg_arch
# lvcreate -L 4G -n swap vg_arch
# lvcreate -l 100%FREE -n home vg_arch

Proses partisi diatas menghasilkan:

  • Volume group dengan nama vg_arch
  • partisi /boot = 200MB
  • partisi /root = 20GB
  • partisi /swap = 4GB
  • partisi /home = sisa storage yang ada setelah pembagian partisi diatas
Dari hasil partisi diatas, kita anggap telah sesuai dengan jumlah partisi yang diinginkan, langkah selanjutnya adalah memberikan tipe partisi yang akan digunakan, dicontohkan tipe ext4 ataupun bisa menggunakan tipe yang lain sesuai yang diinginkan.
# mkfs.ext4 /dev/vg_arch/boot
# mkfs.ext4 /dev/vg_arch/root
# mkfs.ext4 /dev/vg_arch/home
# mkswap /dev/vg_arch/swap
# swapon /dev/vg_arch/swap

Setelah memberikan tipe partisi, selanjut kita perlu untuk melakukan proses mounting partisi tersebut sebelum melakukan proses installasi.
# mount /dev/vg_arch/root /mnt
# mkdir /mnt/boot
# mount /dev/vg_arch/boot /mnt/boot
# mkdir /mnt/home
# mount /dev/vg_arch/home /mnt/home

Pada tahap ini kita sudah siap untuk melakukan installasi, cukup dengan perintah berikut kita akan menginstall base system, dan setelahnya membuat isi file fstab.
# pacstrap /mnt base base-devel

# genfstab -U /mnt >> /mnt/etc/fstab

Kita telah berhasil menginstall Arch Linux, tetapi masih ada beberapa hal yang perlu dilakukan yaitu menginstall grub dan membuat hostname serta setting waktu, berikut ini perintah yang diperlukan.
# arch-chroot /mnt /bin/bash

# locale-gen

# vi /etc/locale.conf
.. LANG=en_US.UTF-8  (isikan language yang diinginkan)

# tzselect
# rm /etc/localtime
# ln -s /usr/share/zoneinfo/Asia/Jakarta /etc/localtime

# hwclock --systohc --utc

# vi /etc/mkinitcpio.conf
.. HOOKS="...lvm2 filesystems..." (tambahkan lvm2 pada HOOKS)

# mkinitcpio -p linux

# pacman -S grub

# grub-install --target=i386-pc /dev/sda
# grub-mkconfig -o /boot/grub/grub.cfg

# vi /etc/hostname
.. nama_hostname_yg_diinginkan

Pada saat proses grub-install mungkin akan ketemu peringatan semacam WARNING: Failed to connect to lvmetad. Falling back to internal scanning yang biasa terjadi dalam proses installasi, kadang sering ditemukan saat proses install dalam virtualbox, langkah yang perlu dilakukan sebagai berikut:
# exit
# mkdir /mnt/hostrun
# mount --bind /run /mnt/hostrun
# arch-chroot /mnt /bin/bash
# mkdir /run/lvm
# mount --bind /hostrun/lvm /run/lvm

Setelah itu lakukan lagi perintah grub-install & grub-mkconfig seharusnya warning diatas sudah hilang. Kemudian setelah proses install grub selesai lakukan perintah umount /run/lvm.

Semua proses installasi telah selesai, tahap terakhir yaitu membuat root password dengan perintah yang sederhana, cukup ketikkan "passwd" (tanpa tanda kutip) lalu masukkan root password yang anda inginkan.

Dengan demikian semua proses sudah selesai, kita dapat merestart terlebih dahulu dengan cara berikut:
# passwd (masukkan password root)
# exit
# umount -R /mnt
# reboot

Setelah restart kita sudah bisa login menggunakan user root, tentunya belum ada display manager dan desktop environment yang tersedia, saya akan lanjut ke artikel selanjutnya untuk menginstall GUI pada Arch Linux. Silakan isi kolom komentar dibawah jika ada yang ingin ditanyakan.

[Google Play Store Deal] - Download Premium Android Icon Pack - Part I

[Google Play Store Deal] - Download Premium Android Icon Pack - Part I

Icon menjadi salah satu daya tarik bagi pengguna Android, terdapat banyak sekali icon pack yang dapat didownload secara gratis maupun berbayar. Dan umumnya lebih banyak icon pack yang menarik namun berbayar, kali ini saya akan membagi beberapa icon pack premium yang dapat di download secara gratis dalam beberapa hari dari sekarang, berikut ini diantaranya:

Lanting

[Google Play Store Deal] - Download Premium Android Icon Pack - Part I

Memiliki lebih dari 2.500 custom icon dan 90+ wallpaper yang dapat di download. Untuk mendownload dapat langsung klik link berikut: Download Lanting Icon Pack from Play Store.

Six

[Google Play Store Deal] - Download Premium Android Icon Pack - Part I

Memiliki lebih dari 980 custom icon dan mendukung lebih dari 30 launcher, yang menariknya icon ini terasa seperti icon miliki Nokia. Untuk mendownload dapat langsung klik link berikut: Download Six Icon Pack from Play Store.

S8 UX Amaze

[Google Play Store Deal] - Download Premium Android Icon Pack - Part I

Icon yang satu ini merupakan icon yang sama pada Samsung Galaxy S8 dan Samsung Galaxy Note 8. Jika ingin merasakan sensasi dari icon perangkat high-end, dapat langsung klik link berikut: Download S8 UX Amaze Icon Pack from Play Store.

Aspire UX S8

[Google Play Store Deal] - Download Premium Android Icon Pack - Part I

Aspire juga merupakan icon yang digunakan pada Samsung Galaxy S8 (beta). Jadi silakan langsung mencobanya dengan mendownload melalui link berikut: Download Aspire UX S8 Icon Pack from Play Store.

Nougat Square

[Google Play Store Deal] - Download Premium Android Icon Pack - Part I

Menyediakan lebih dari 1000 icon flat desain vector dengan update regular setiap minggunya dan tentunya dapat digunakan pada berbagai jenis launcher. Silakan langsung mendownload melalui link berikut: Download Nougat Square Icon Pack from Play Store.

Silakan download semua icon pack premium diatas secara Gratis, perlu diketahui icon tersebut tersedia secara gratis hanya dalam beberapa jam dan hari kedepan, jadi pastikan segera download agar tidak kehabisan waktu.


Image credit: Google Play Store, Freepik.

Google Resmi Rilis Android 8.0 Oreo

Google Resmi Rilis Android 8.0 Oreo
bgr
Google baru saja merilis Android versi baru yaitu Android 8.0 dengan codename Oreo. Cukup banyak perubahan dan tentunya dengan tambahan fitur baru dan salah satunya cukup menarik perhatian yaitu fitur Rescue Party.

Bootlooping, istilah ini bisa dikatakan tidak begitu asing bagi beberapa orang, karena memang kerap kali terjadi pada perangkat Android. Umumnya memang sering terjadi jika kita melakukan kesalahan saat proses modifikasi, tapi juga sering terjadi pada pengguna biasa yang tidak melakukan modifikasi apapun. Bootloop dapat membuat frustasi karena pengguna tidak dapat menggunakan smartphone mereka akibat proses startup yang berhenti, dan cara penanganannya pun juga cukup sulit.

Oleh karena itu, Google mengenalkan fitur Rescue Party pada Android 8.0 Oreo. Dengan jelas diberikan informasi bahwa Android 8.0 sudah menyediakan 'rescue party' yang akan mengetahui jika komponen core system mengalami crash loop. Rescue Party kemudian dengan segera melakukan serangkaian tindakan untuk melakukan pemulihan pada perangkat, lalu setelah itu Rescue Party akan melakukan reboot ke mode recovery dan meminta pengguna untuk melakukan factory reset.

Fitur ini secara default aktif dalam Android 8.0 Oreo, dan tidak ada kebutuhan hardware khusus untuk mengaktifkannya alias bisa digunakan pada semua device. Beberapa jenis device memang ada yang mengalami bootloop yang terkait oleh software maupun hardware, tetapi dengan adanya fitur ini setidaknya dapat menghilangkan masalah tersebut pada perangkat yang memiliki kesalahan pada hardware sehingga mengakibatkan bootloop.

Source: Google.

Mengenal Dasar Teknologi RESTful Web Service

Mengenal Dasar Teknologi RESTful Web Service

Saat ini, topik seperti cloud computing, serverless, stateless dan teknologi sumber data mutakhir lainnya sebagai penyalur data perangkat seluler seperti RESTful web service yang banyak digunakan sebagai penyalur data telah meninggalkan kesan bahwa REST (Representational State Transfer) merupakan teknologi baru, tapi faktanya REST ditemukan pada akhir abad ke 20.

Pada artikel ini saya akan menjelaskan sejarah singkat tentang REST (berdasarkan buku) dan mengulas sedikit bagaimana REST bekerja dalam protokol HTTP. Ada beberapa dasar acuan yang perlu diperhatikan ketika ingin mengubah sebuah aplikasi HTTP menjadi aplikasi RESTful service.

Di tahun 1999, ketika sebuah komentar definisi diajukan ke Internet Engineering Task Force (IETF: http://www.ietf.org) melalui RFC 2616: "Hypertext Transfer Protocol - HTTP/1.1." salah satu penulisnya, Roy Fielding yang mendefinisikan sebuah prinsip yang dibangun berdasarkan standar lingkungan HTTP dan URI yang kemudian melahirkan REST yang dikenal sekarang (disertasi lengkap mengenai informasi REST yang dibuat oleh Roy Fielding dapat dilihat melalui link publikasi berikut: http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm).

Seperti keterangan diatas, prinsip yang dibuat berdasarkan standar linkungan HTTP dan URI. Mari kita lihat dasar utama seputar standar HTTP dan URI, tetap berkaitan dengan cara mengubah sebuah aplikasi HTTP menjadi aplikasi RESTful service.

- resource adalah segalanya

Untuk memahami prinsip ini, kita harus memahami gagasan dari represenstasi adalah dengan format tertentu dan bukan berdasarkan file. Setiap data yang tersedia di internet memiliki sebuah format yang dapat dideskripsikan dengan content-type. Misalnya, text document; JPEG Images; MPEG videos; xml, html, text document; dan binary data yang semuanya adalah resource dengan jenis content-type berikut: image/jpeg, video/mpeg, text/html, text/xml, application/json dan application/octet-stream.

- setiap resource dapat diidentifikasi oleh unique identifier

Karena internet mengandung banyak resource berbeda, semua resource itu harus bisa diakses melalui URI dan harus diidentifikasi secara unik. Selanjutnya, URI bisa dalam format yang mudah dibaca manusia (sebagian orang memang mewajibkannya) terlepas dari kenyataan bahwa penggunanya adalah programmer dan bukan manusia pada umumnya (bukan berprofesi sebagai programmer).

URI menyimpan data secara self-descriptive dan memudahkan pengembangan lebih lanjut. Selain itu, menggunakan URI yang dapat dibaca manusia dapat membantu mengurasi resiko kesalah logis dalam program seminimalis mungkin. Berikut ini beberapa contoh URI:
- http://www.example.com/images/party/2017/newyear

- http://www.example.com/videos/party/2017/newyear

- http://www.example.com/data/documents/outcome?format-xml

- http://www.example.com/data/archives/2015
Pada URI diatas telah mengekspos berbagai jenis resource yang cukup jelas yaitu berupa images, videos, XML document dan binary archive document. Itulah contoh dari URI yang memang harusnya dapat dengan mudah dipahami manusia.

- menggunakan standar metode HTTP

Protokol asli HTTP (RFC2616) mendefinisikan 8 action atau dikenal dengan verb yaitu: GET, POST, PUT, DELETE, HEAD, OPTIONS, TRACE, CONNECT. Urutan 4 verbs awal terasa sudah dapat dikenali dalam konteks resource, terutama ketika mendefinisikan aksi manipulasi data resource yaitu CRUD. Jika secara relative dibandingkan dengan operasi CRUD database SQL, dengan cara yang sama saat menerapkan prinsip REST dengan tepat, HTTP verb dapat digambarkan seperti berikut:
Namun ada pengecualian dalam menggunakan verb. Seperti contoh POST yang digunakan untuk membuat resource. Tapi ketika resource harus dibuat berdasarkan URI tertentu, maka PUT adalah verb yang sesuai (menyisipkan tanggal kedalam bagian URI).
PUT /data/documents/outcome/13082017 HTTP/1.1

Content-Type: text/xml
Host: www.example.com


<?xml version="1.0" encoding="utf-8"?>
<outcome date="outcome">
<Item>Sample item</Item>
<price currency="IDR">3500000</price>
</outcome>

HTTP/1.1 201 Created
Content-Type: text/xml
Location: /data/documents/outcome/13082017

Bagaimanapun juga, dalam aplikasi yang kita punya, mungkin kita ingin menyerahkan ke aplikasi REST dalam menentukan lokasi untuk menempatkan resource yang baru dibuat dan dengan demikian membuatnya berada dilokasi yang sesuai namun masih belum diketahui ataupun tidak temukan.

Misalnya, kita contohkan kita ingin server membuat bagian tanggal pada URI berdasarkan tanggal sekarang. Dalam kasus seperti itu, sangat tepat untuk menggunakan verb POST ke resource utama URI dan membiarkan server merespon dengan lokasi resource yang baru dibuat (outcome date akan terisi otomatis).
POST /data/documents/outcome HTTP/1.1

Content-Type: text/xml
Host: www.example.com

<?xml version="1.0" encoding="utf-8"?>
<outcome date="13082017">
<Item>Sample item</Item>
<price currency="IDR">3500000</price>
</outcome>

HTTP/1.1 201 Created
Content-Type: text/xml
Location: /data/documents/outcome

- resource dapat memiliki banyak jenis representasi

Fitur kunci dari sebuah resource adalah resource dapat direpresentasikan dalam bentuk yang berbeda dari yang disimpan. Jadi resource dalam proses request dan posting bisa dalam berbagai macam jenis representasi, selama format yang ditentukan didukung. Pada contoh sebelumnya, kita telah membuat resource dengan representasi XML, tetapi jika server mendukung format JSON, proses dari representasi berikut tetap dapat diterima.
POST /data/documents/balance HTTP/1.1

Content-Type: application/json
Host: www.mydatastore.com

{
 "balance": {
  "date": ""22082014"",
  "Item": "Sample item",
  "price": {
   "-currency": "IDR",
   "#text": "3500000"
  }
 }
}

HTTP/1.1 201 Created
Content-Type: application/json
Location: /data/documents/balance

Dengan memahami dasar protokol HTTP dapat dengan mudah untuk mengerti cara kerja RESTful service. Jadi untuk itu sebagai pelengkap dalam memahami RESTful service bisa terlebih dahulu membaca cara kerja protokol HTTP yang kemudian merujuk pada HTTP verb yang disebutkan diatas.

Itulah sedikit penjelasan mengenai RESTful service, jika mungkin ada yang kurang jelas ataupun salah dalam penjelasan saya mohon kiranya berikan komentar pada kolom dibawah. Dan untuk artikel selanjutnya saya akan coba berikan contoh membuat RESTful service dengan NodeJS.

Image source: javabeat.

Tutorial MongoDB: Operasi CRUD - Part 6

Tutorial MongoDB: Operasi CRUD - Part 6

Create, read, update dan delete (CRUD) dasar interaksi yang selalu dilakukan saat menggunakan sebuah database. Setelah sebelumnya kita mengenal dasar-dasar MongoDB, kali ini kita mulai untuk ke bagian penting yaitu CRUD dalam MongoDB yang tersedia dengan beberapa metode.

Membuat document (Insert)

Dalam hal membuat document (istilah pengganti record table dalam NoSQL) MongoDB menyediakan beberapa cara yang diantaranya yaitu:

- membuat document menggunakan insert()

Cara yang paling umum untuk membuat data document baru adalah dengan metode insert(). Metode ini memerlukan 1 argument yang merepresentasikan data baru sebuah document. Contohnya yaitu sebagai berikut:
> db.people.insert({ "firstname": "Jim", "lastname": "Doe", "address": "20 Main St." })

- membuat document menggunakan update()

Metode update() biasanya digunakan untuk mengubah sebuah data. Tetapi dalam MongoDB kita dapat menggunakannya untuk membuat document baru dengan syarat jika tidak ada document yang sama dengan query document dan juga perlu menambahkan "upsert" flag. Contohnya sebagai berikut:
> db.people.update({
... "firstname": "Jim"
... },
... {
... "firstname": "Jim",
... "lastname": "Doe",
... "address": "555 Main St."
... },
... {
... upsert: true
... })
WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : ObjectId("58e34c04002c40a5718b63af")
Contoh query diatas akan membuat MongoDB mencari "firstname" Jim dan mencoba untuk mengubah datanya, tapi nyatanya collection "people" tidak memiliki "firstname" Jim dan karena kita menggunakan "upsert" flag dan MongoDB tidak menemukan data yang sesuai untuk di update maka sebagai gantinya document baru akan dibuat.

- membuat document menggunakan save()

Cara lain untuk membuat document baru adalah dengan menggunakan metode save(). Berikut ini contoh menggunakan save():
> db.people.save({
... "firstname": "John",
... "lastname": "Doe",
... "address": "555 Main St."
... })
WriteResult({ "nInserted" : 1 })
Cukup sederhana cara kerjanya yaitu dengan memasukkan langsung document baru tanpa menyertakan key "_id", atau bisa juga dengan menyertakan key "_id" yang kemudian MongoDB akan memeriksa apakah "_id" itu ada. Efeknya mirip seperti metode update() yang akan langsung membuat document baru jika data yang dicari tidak ditemukan.

Mengubah Dokumen (Update)

Semua proses update membutuhkan paling tidak 2 argument. Argument pertama menspesifikasikan field document dengan nilai apa yang mau diubah dan argument kedua mendefinisikan nilai baru document yang akan diubah. Perlu untuk diketahui kalau secara default fungsi update() cuma mengubah sebuah document (single document), meskipun sebenarnya dapat dioperasikan untuk mengubah banyak document dan bahkan seluruh collection.

Ada 2 tipe umum dari update yaitu perbedaan antara maksud penggunaannya. Tipe pertama yaitu melakukan modifikasi terhadap sebuah document, dan tipe kedua yaitu melakukan replace document lama dengan yang baru. Contoh dari tipe pertama adalah sebagai berikut:
> db.people.update(
... {firstname: "John"},
... {$set: {lastname: "Smith"}}
... )
Proses dari operasi diatas yaitu mencari sebuah document dimana memiliki firstname "John" dan kemudian mengganti nilai field lastname menjadi "Smith". Dan juga kita menggunakan $set operator yang berguna untuk menentukan nilai spesifik sebuah field.

Kemudian untuk cara kedua cukup membingungkan, coba perhatikan operasi berikut ini:
> db.people.update(
... {firstname: "John"},
... {lastname: "Smith"}
... )
Hasil contoh diatas, document akan di-replace hanya pada yang memiliki field lastname, dan field firstname akan dihapus karena document pertama digunakan hanya untuk pencocokan(sebagai argument pertama) dan document kedua digunakan untuk me-replace document yang telah cocok dengan hasil pencarian berdasarkan document pertama.

Jadi intinya, menggunakan teknik replace cukup beresiko karena dapat menghapus field jika tidak digunakan dengan tepat, oleh karena itu harus hati-hati dalam penggunaanya dan lebih disarankan untuk menggunakan $set operator untuk mengupdate document.

Menghapus Document (Delete)

Kita sudah tahu dasar dari operasi create, read, dan update dalam MongoDB. Selanjutnya adalah operasi terakhir yang sederhana yaitu menghapus data.

Dalam penggunaannya, jika tidak ada parameter yang diberikan, operasi remove() akan menghapus semua collection dari document-nya, misalnya:
> db.people.remove()
Hasilnya sudah pasti akan menghapus seluruh data yang ada. Setidaknya kita butuh menghapus data tertentu dari sebuah document, dan untuk itu dibutuhkan parameter ataupun query selector kedalam fungsi remove().

Ada contoh yang misalnya kita ingin menghapus semua nama orang yang memiliki lastname "Smith", jadi bentuk query yang dibuat yaitu:
> db.people.remove(
... {lastname: "Smith"}
... )
Perlu diingat kalau fungsi remove() tidak akan menghapus collection melainkan hanya menghapus document, bisa disamakan dengan klausa DELETE dalam SQL. Dan untuk menghapus collection kita gunakan fungsi drop().
> db.people.drop()

Part 1: Tutorial MongoDB: Pengenalan MongoDB - Part 1
Part 2: Tutorial MongoDB: Mengoperasikan MongoDB - Part 2
Part 3: Tutorial MongoDB: Tipe Data MongoDB - Part 3
Part 4: Tutorial MongoDB: Tipe Data MongoDB (Tambahan) - Part 4
Part 5: Tutorial MongoDB: Dasar MongoDB Shell - Part 5
Part 6: Tutorial MongoDB: Operasi CRUD - Part 6

Itulah dasar dalam menggunakan operasi CRUD di MongoDB. Untuk perbandingan lebih jelas dapat dilihat pada MongoDB CRUD Operations yang telah menyediakan tabel perbanding antara query SQL dan NoSQL.

5 Aplikasi Kamera Terbaik Untuk Android

5 Aplikasi Kamera Terbaik Untuk Android

Kamera smartphone merupakan salah satu bagian paling penting. Banyak perusahaan yang berusaha memaksimalkan dan mengoptimalkan hasil dari foto yang didapat. Namun terkadang aplikasi kamera yang sudah ada terkadang hasilnya terkadang kurang memuaskan dan juga tidak menyediakan fitur yang banyak misalnya filter foto, faktor ini sebenarnya terkait dengan pembuatan aplikasi kamera itu sendiri. 

Meksipun begitu, ada tersedia banyak pilihan alternatif yang dapat menggantikan aplikasi kamera bawaan smartphone. Berikut ini beberapa diantaranya yang merupakan aplikasi yang banyak digunakan sebagai alternatif karena memiliki fitur yang lebih baik.

Camera FV-5

Camera FV-5 adalah salah satu dari banyak aplikasi kamera yang banyak digunakan karena memiliki fitur yang mirip seperti kamera DSLR. Fitur yang tersedia cukup bisa menghasilkan gambar yang bagus jika kita bisa menyesuaikan setting gambar saat proses mengambil foto. Beberapa fitur tersebut yaitu manual shutter speed, light metering, focus, ISO dan lain-lain. Untuk tipe gambar yang didukung yaitu PNG, JPEG hingga DNG (RAW). Untuk mendapatkan aplikasi dengan fitur penuh kita harus membayarnya, akan tetapi aplikasi ini tersedia secara gratis untuk didownload. Download melalui link Google Play: Camera FV-5 for Android.

Camera Zoom FX

Aplikasi yang satu ini pernah saya gunakan dan memang hasil gambarnya sangat baik ketimbang kamera bawaan. Aplikasi ini memilik fitur yang mirip dengan kebanyakan aplikasi kamera seperti kontrol manual ISO, exposure, shutter speed dan lain-lain. Juga tersedia fitur filter, HDR mode, mode pengambilan foto, dan lain sebagainya. Satu fitur yang cukup menarik yaitu tersedia penambahan plugin yang memungkinkan kita dapat fitur tambahan dengan memasangnya. Aplikasi ini dapat digunakan secara gratis, dan untuk fitur yang lengkap dikenakan biaya tambahan. Untuk download silakan langsung melalui link Google Play: Camera Zoom FX for Android.

Camera MX

Aplikasi kamera ini adalah salah satu aplikasi lama dan sangat populer. Pengembang aplikasinya sangat rutin memberikan update fitur hingga sekarang. Aplikasi ini sangat layak untuk digunakan dalam pengambilan foto yang sederhana tanpa perlu melakukan setting ini dan itu. Dengan memiliki beragam mode, dapat membuat foto yang menarik dengan langkah yang cepat. Dan fitur yang seru yaitu kita bisa membuat gambar foto GIF atau foto bergerak dan bahkan sudah tersedia edit foto sederhana didalamnya. Aplikasi ini tersedia gratis, untuk download bisa langsung melalui link Google Play: Camera MX for Android.

Google Camera

Google Camera merupakan aplikasi official dari Google. Aplikasi ini sangat sederhana tetapi memiliki fitur yang efektif, termasuk didalamnya blur mode, slow motion (jika perangkat didukung), photo spheres, video stabilization dan lain sebagainya. Aplikasi ini tersedia secara gratis tanpa perlu membayar untuk mengaktifkan fitur lengkap. Namun sayangnya hanya perangkat yang sudah dengan Android versi terbaru yang bisa menginstallnya. Untuk download dapat melalui link Google Play: Google Camera for Android.

Motion Stills

Aplikasi ini merupakan pendatang baru dalam aplikasi kamera. Dengan fokus fitur utama yaitu merekam video berdurasi pendek dan juga bisa dijadikan gambar GIF tentunya. Aplikasi ini juga menyediakan fitur lainya seperti fast forward untuk mendapatkan video super cepat. Bagaimanapun aplikasi tersedia secara gratis jadi cukup layak untuk digunakan. Untuk mendownload bisa melalui link Google Play: Motion Stills for Android.

Itulah beberapa aplikasi kamera yang dapat dijadikan alternatif bahkan mungkin menggantikan aplikasi kamera bawaan. Saya pribadi sangat merekomendasikan Camera FV-5 karena memiliki fitur yang bagus seperti layaknya DSLR, namun untuk yang gratis saya merekomendasikan Camera MX, silakan anda tentukan pilihan yang paling cocok.

Image source: mobiwoz

Package Sublime Text Terbaik Untuk Web Development

Package Sublime Text Terbaik Untuk Web Development

Sublime Text adalah salah satu text editor populer yang masih saya gunakan dalam hal development PHP. Pada artikel sebelumnya yang mengulas sedikit tentang Atom text editor, saya sudah berikan beberapa Atom Plugin Terbaik Untuk JavaScript Development, kali ini saya akan ulas lagi mengenai hal yang sama yaitu Package Sublime text terbaik untuk web development.

- Alignment
- BracketHighlighter
- CodeIgniter Snippets (Optionals)
- Color Highlighter
- ColorPicker
- Colorsublime
- DocBlockr
- Emmet
- FileDiffs
- Javascript Completions
- Package Control
- Status Bar Time
- SublimeLinter
- SublimeLinter-jshint (atau eslint)
- SublimeLinter-contrib-eslint
- SublimeLinter-php

Masih banyak lagi package yang dapat ditemukan melalui website https://packagecontrol.io. Dan juga sudah ada banyak artikel yang mengulas tentang package sublime text, untuk list package diatas adalah versi saya pribadi yang menggunakannya, sampai saat ini masih saya gunakan tanpa kendala.

Jika ada yang ingin ditanyakan, silakan isi komentar dan juga bisa berikan informasi mengenai package lainnya yang mungkin juga lebih baik untuk diguanakan dalam hal web development.

Image source: Wikipedia.

Cara Mengatasi MongoError: E11000 duplicate key error index

Cara Mengatasi MongoError: E11000 duplicate key error index

Kali ini saya akan menulis singkat mengenai error dalam penggunaan MongoDB dan cara penanganannya. Error ini baru saya alami jadi cukup membuat pusing dan akhirnya bisa terselesaikan.

Saya menggunakan NodeJS dan mongoose dalam membuat RESTful API, dan digunakan dengan jQuery Ajax standard (saya tidak mahir dalam hal front-end framework). Saat masuk proses POST data yang berupa submit form, saya selalu mendapati error di console browser "500 internal server error" dan yang membuat saya makin bingung, API saya tidak crash dan masih bisa berfungsi jika saya gunakan untuk operasi lainnya.

Dalam menggunakan NodeJS, banyak sekali yang merekomendasikan untuk menggunakan debugging tools (API yang saya masih development mode dan belum ada buat testing juga), nah disini saya menggunakan chrome-dev tools dalam hal debungging dan sampai akhirnya saya ketemu penyebab masalah yang saya hadapi yang berisikan error sebagai berikut:
MongoError: E11000 duplicate key error index: toolswatcher.users.$name_1 dup ......
Mungkin nantinya anda akan ketemu masalah yang sama, maka untuk mengatasinya cukup mudah yaitu dengan langkah melalui MongoDB shell dengan perintah berikut:
db.users.dropIndex({"name":1})
Hanya dengan langkah diatas, masalah yang saya hadapi sudah terselesaikan dan API-nya berjalan lancar sesuai yang saya inginkan.

Untuk detail penggunaan MongoDB shell bisa melihat langsung pada tutorial yang ada pada blog ini, dan sedangkan untuk error seperti diatas penjelasan lebih jelasnya bisa mengacu pada link Official MongoDB.

Image source: wpcookhouse.

[Google Play Deal] - Download Black Light Icon Pack Gratis

[Google Play Deal] - Download Black Light Icon Pack Gratis


Dalam hal mempercantik homescreen Android terdapat beberapa hal yang diperlukan mulai dari icon, launcher dan lain sebagainya. Tapi beberapa dari aplikasi tersebut tersedia secara gratis tapi untuk beberapa fitur terkunci bagi pengguna gratis dan perlu untuk membelinya agar mendapatkan full feature.

Namun sebenarnya sering ada diskon untuk aplikasi berbayar di Google Play Store yang bahkan harga aplikasi premium menjadi gratis tanpa bayar dalam jangka waktu tertentu.
[Google Play Deal] - Download Black Light Icon Pack Gratis

Seperti yang terlihat pada gambar di atas, nama icon pack tersebut ialah "Black Light Icon Pack" yang hari ini tersedia secara gratis dari harga semula berkisar Rp. 13.000. Jadi bagi yang tertarik ingin punya icon tersebut jangan sampai terlambat, silakan langsung saja download melalui link dibawah ini:


Atom Plugin Terbaik Untuk JavaScript Development

Atom Plugin Terbaik Untuk JavaScript Development

Dalam dunia developer, dukungan tools adalah bagian penting untuk memperlancar proses kerja. Salah satunya yaitu text editor. Kali ini saya akan berbagi sedikit tentang text editor yang saya gunakan dalam development JavaScript.

Saya menggunakan Atom text editor dengan beberapa plugin yang sangat membantu, dan disini saya menggunakan OS Linux. Berikut ini beberapa plugin yang saya gunakan dalam text editor atom:


Cukup banyak memang tapi itu semua sudah memenuhi kebutuhan saat proses coding. Berikut ini contoh gambar dari editor dengan plugin-plugin tersebut.
Atom Plugin Terbaik Untuk JavaScript Development

Sedangkan untuk tema, saya menggunakan tema default atom dan saya sudah cukup nyaman dengan itu. Jadi jika tertarik menggunakannya silakan dicoba langsung. Jika ada tambahan ataupun plugin yang menarik bisa berikan komentar pada kolom dibawah.

Tutorial MongoDB: Dasar MongoDB Shell - Part 5



Pada part ini kita akan mulai menggunakan MongoDB Shell untuk lebih mengenal MongoDB dalam penggunaannya, terlebih dalam pengoperasian fungsi query NoSQL database.

Untuk memulai menggunakan MongoDB Shell, pastikan terlebih dahulu service MongoDB sudah dijalankan. Untuk dapat mengakses server secara kustom, seperti hostname/IP server, port dan database, gunakan perintah berikut dari terminal:
mongo host_server:27017/myDB <== 27017 port default MongoDB
Contoh di atas diasumsikan kita sudah mempunyai database yang akan diakses, namun bila kita belum punya database maka gunakan perintah berikut:
mongo
> help <== untuk melihat kumpulan perintah shell
> show dbs <== menampilkan nama database
> use myDB <== gunakan database myDB atau buat db myDB
> exit <== keluar dari shell
Contoh perintah di atas adalah untuk kasus memulai akses database, bila nantinya kita sudah punya database yang akan dihandle maka saya pribadi lebih senang menggunakan cara berikut ini:
mongo --nodb
> conn = new Mongo("host_server:27017")
> db = conn.getDB("myDB")
Cukup sederhana dan tentunya lebih terlihat terstruktur, akan tetapi bukan berarti harus menggunakannya, mungkin ada cara lain yang lebih bagus yang bisa ditemukan di internet.

Seperti yang kita tahu sebelumnya kalau "mongo" sederhananya adalah JavaScript shell, dengan begitu kita bisa melihat JavaScript dokumentasi sebagai referensi. Untuk fungsi MongoDB secara spesific, sudah terdapat fungsi built-in yang dapat dilihat dengan perintah "help" seperti contoh sebelumnya di atas.

Untuk tingkatan level tersedia melalui parameter masing-masing, misalnya level database (berada dalam shell database yang digunakan) yaitu "db.help()" dan untuk level collection yaitu "db.nmcollection.help()"

Ada hal yang mungkin bisa dikatakan unik dalam MongoDB shell, misalkan kita ingin mengetahui seperti apa sebuah fungsi bekerja dalam mengolah data, dalam hal ini kita ingin mengetahui bagaimana fungsi update bekerja, maka cukup lakukan perintah berikut melalui shell:
> db.books.update
Dari hasil diatas maka akan tampak barisan kode JavaScript yang menghandle fungsi tersebut. Perlu diketahui, pada contoh tersebut kita tidak menggunakan tanda kurung "()" pada akhir nama fungsi, hal ini bertujuan untuk menguak isi dari fungsi tersebut, tetapi bisa kita menggunakan tanda kurung "()" pada nama fungsi tersebut "update()" maka berarti fungsi akan dieksekusi.

Part 1: Tutorial MongoDB: Pengenalan MongoDB - Part 1
Part 2: Tutorial MongoDB: Mengoperasikan MongoDB - Part 2
Part 3: Tutorial MongoDB: Tipe Data MongoDB - Part 3
Part 4: Tutorial MongoDB: Tipe Data MongoDB (Tambahan) - Part 4
Part 5: Tutorial MongoDB: Dasar MongoDB Shell - Part 5
Part 6: Tutorial MongoDB: Operasi CRUD - Part 6

Itulah sedikit dasar dalam menggunakan MongoDB shell, jika ada yang salah ataupun ada hal yang ingin ditanyakan silakan isi komentar dibawah, dan jangan lupa tetap kunjungi blog ini ataupun bookmark label tag mongodb untuk update part selanjutnya.

Tutorial MongoDB: Tipe Data MongoDB (Tambahan) - Part 4


Dalam part ini, saya akan membahas sedikit lebih lanjut mengenai beberapa tipe data yang sudah dijelaskan sebelumnya.

Dates

Di JavaScript, class Date digunakan untuk tipe data date MongoDB. Ketika membuat object Date baru, selalu panggil new Date(....), bukan hanya Date(....). Perlu diperhatikan dalam penggunaannya karena proses pemanggilan menggunakan kata kunci new dan tanpa new itu berbeda (dalam hal ini dikenal istilah konstruktor). Untuk penjelasan lebih lengkap mengenai class Date dalam JavaScript dan format yang bisa diterapkan untuk sebuah konstruktor bisa dilihat langsung melalui Ecmascript ataupun referensi yang lainnya.

Array

Untuk pengertian array sendiri masih sama seperti array pada umumnya. Sebuah array dapat menampung nilai lists, stacks, ataupun queues. Dalam MongoDB sendiri kedudukan array dalam sebuah document cukup membantu karena sebuah key dapat memiliki nilai yang beragam. 

Misalnya ada sebuah document yang mempunyai key "tes" dan mempunyai nilai array:
{"tes" : ["pi", 3.14]}
Dari contoh tersebut, nilai array dapat memuat atau berisikan tipe data yang berbeda sebagai nilanya (pada contoh diatas, terdapat sebuah string dan floating-point number).

Array dalam document bisa mengandung array lainnya atau biasa dikenal dengan istilah "nested arrays". Satu hal yang mungkin bisa dikatakan sebagai keunggulan tentang array dalam sebuah document yaitu MongoDB mengerti struktur mereka dan tahu bagaimana membaca hingga kedalam nilai nested arrays sekalipun. Jadi hal ini memungkinkan kita untuk membuat sebuah index menggunakan key terkait untuk meningkatkan query speed.

Embedded Documents

Selain menampung sebuah konten, document sendiri bisa menampung document lain dalam sebuah key, ini dikenal dengan sebutan embedded document. Embedded document bisa digunakan untuk mengorganisir data  menjadi lebih natural ketimbang hanya dengan struktur yang flat untuk pasangan key/value.

Untuk contohnya, jika kita punya document yang meresepresentasikan seseorang dan ingin menyimpan alamatnya, kita bisa mengumpulkan informasinya ke dalam embedded "alamat" document:
{
    "nama" : "John Doe",
    "alamat" : {
        "jalan" : "Jl. Beringin",
        "kota" : "Jogja",
        "provinsi" : "DIY"
    }
}
Contoh diatas merupakan contoh kecil dari embedded document, mungkin ada banyak contoh lainnya di internet yang lebih dalam strukturnya. Jadi sederhananya untuk penggunaan embedded document lebih kurang seperti contoh diatas.

_id dan ObjectId

Setiap document yang tersimpan di MongoDB harus memiliki "_id" key. Pada part 2 kita sudah melihat proses post data ke dalam document yang mana key "_id" otomatis muncul dan memiliki nilainya sendiri. Nilai key "_id" bisa dengan berbagai tipe data, tetapi secara default adalah tipe data ObjectId. Dalam sebuah collection, setiap document harus memiliki nilai yang unik untuk "_id", yang memastikan bahwa setiap document dalam sebuah collection dapat diidentifikasi secara unik.

ObjectId

ObjectId adalah tipe default untuk "_id" dan merupakan sebuah Class yang di desain untuk menjadi ringan (lightweight). Desain ini menghasilkan kemudahan saat proses generate terhadap mesin yang berbeda. MongoDB mempunyai alasan utama kenapa mereka menggunakan ObjectId daripada menggunakan bentuk tradisional seperti autoincrement primary key adalah "karena sulit dan memakan waktu untuk sinkronisasi autoincrement primary key antar multiple server". Karena MongoDB didesain untuk menjadi database terdistribusi, hal tersebut menjadi penting untuk dapat menghasilkan identifikasi unik dalam sharded environment (multiple server).

Lalu muncul pertanyaan kenapa meng-insert document baru yang tidak ada memuat "_id" key secara otomatis tersimpan sendiri dalam document itu ? 
Jawabannya adalah terletak pada sisi client. MongoDB meng-handle hal tersebut melalui driver yang ada pada client, dan juga nilai ObjectId yang dihasilkan merupakan 12 bytes yang merupakan generate langsung dari mesin. Untuk lebih jelasnya bisa langsung mengunjungi official site MongoDB ataupun referensi lainnya.

Itulah sedikit tambahan penjelasan khusus terhadap tipe data diatas, jika ada yang salah ataupun ada pertanyaan mohon kiranya memberikan komentar pada kolom dibawah.

Part 1: Tutorial MongoDB: Pengenalan MongoDB - Part 1
Part 2: Tutorial MongoDB: Mengoperasikan MongoDB - Part 2
Part 3: Tutorial MongoDB: Tipe Data MongoDB - Part 3
Part 4: Tutorial MongoDB: Tipe Data MongoDB (Tambahan) - Part 4
Part 5: Tutorial MongoDB: Dasar MongoDB Shell - Part 5
Part 6: Tutorial MongoDB: Operasi CRUD - Part 6

Tutorial MongoDB: Tipe Data MongoDB - Part 3

Tutorial MongoDB: Tipe Data MongoDB - Part 3

Pada part sebelumnya kita sudah sedikit mengetahui fitur-fitur ataupun unsur yang ada dalam MongoDB. Pada part ini kita akan mulai mempelajari tipe data yang ada pada MongoDB.

Document didalam MongoDB dapat dianggap sebagai "JSON" karena secara konseptual mirip dengan object pada JavaScript. Perlu untuk diketahui bahwa JSON memiliki keterbatasan dalam hal dukungan tipe data yang diantaranya hanyalah: null, boolean, numeric, string, array, dan object. 

Dalam hal ini, MongoDB tersedia dengan dukungan tambahan terhadap tipe data dengan tetap membawa sifat dasar dari JSON itu sendiri. Berikut ini daftar tipe data yang umum dalam merepresentasikan sebuah document dalam MongoDB yaitu:
  • null
          Null dapat digunakan untuk merepresentasikan sebuah nilai null dan nonexistent field:
{"x" : null}
  • boolean
          Tipe data boolean dapat digunakan nilai dengan kondisi true dan false:
{"x" : true}
  • number
          Dalam shell MongoDB secara default menggunakan 64-bit floating point numbers. Jadi, nomor berikut ini akan terlihat
          normal dalam shell:
{"x" : 3.14} OR {"x" : 3}
         Untuk Integer, bisa menggunakan class numberInt() atau numberLong():
{"x" : NumberInt("3")}
{"x" : NumberLong("3")}
  • String
         Untuk setiap yang dari karakter UTF-8 bisa direpresentasikan dengan tipe string:
{"x" : "foobar"}
  • Date
         Tipe data date disimpan sebagai milliseconds since the epoch (saya tidak tahu arti yang tepat dalam bahasa indonesia),
         dan time zone sendiri tidak tersimpan:
{"x" : new Date()}
  • regular expression
         Mungkin bisa dibilang tipe data ini menarik karena menggunakan sintak regular expression JavaScript dan tentunya
         berfungsi dengan baik:
{"x" : /foobar/i}
  • array
         Membuat field yang mengandung daftar atau kumpulan suatu nilai bisa menggunakan tipe data array:
{"x" : ["a", "b", "c"]}
  • embedded document
         Document dapat juga mengandung nilai yang berupa documents dan tipe data dari embedded document itu 
         akan menyesuaikan: 
{"x" : {"foo" : "bar"}}
  • object id
         Sebelumnya kita tahu pada part sebelumnya saat proses insert secara otomatis field _id akan muncul dengan tipe data
         object id. Object id sendiri ialah sebuah 12-byte ID untuk document (detailnya akan saya jelaskan pada part berikutnya): 
{"x" : ObjectId()}
  • code
         Query dan document dalam MongoDB juga dapat memuat nilai arbitrary JavaScript code:
{"x" : function() { /* ... */ }}

Itulah penjelasan mengenai tipe data yang umum ditemukan dalam penggunaan database MongoDB. Mungkin penjelasan diatas belum begitu detail, jadi jika ada yang ingin ditanyakan bisa langsung mengisi kolom komentar dibawah, dan jangan lupa terus kunjungi blog saya untuk part selanjutnya. 

Part 1: Tutorial MongoDB: Pengenalan MongoDB - Part 1
Part 2: Tutorial MongoDB: Mengoperasikan MongoDB - Part 2
Part 3: Tutorial MongoDB: Tipe Data MongoDB - Part 3
Part 4: Tutorial MongoDB: Tipe Data MongoDB (Tambahan) - Part 4

Part 5: Tutorial MongoDB: Dasar MongoDB Shell - Part 5
Part 6: Tutorial MongoDB: Operasi CRUD - Part 6

Tutorial MongoDB: Mengoperasikan MongoDB - Part 2

Tutorial MongoDB: Mengoperasikan MongoDB - Part 2

Langkah awal yang diperlukan sebelum memulai menggunakan MongoDB yaitu mendownload dan menginstallnya. Dalam hal ini saya menggunakan Linux Debian sebagai wadahnya dan menginstallnya langsung dari repository dengan perintah "sudo apt-get install mongodb". Namun jika anda ingin memilih versi tertentu bisa langsung mengunjungi download center MongoDB.

Lakukan proses installasi hingga selesai kemudian ketikkan perintah berikut pada terminal untuk menjalankan MongoDB:
$ sudo mkdir -p /data/db; sudo chown `id -u` /data/db
$ mongod
Atau bisa juga langsung menggunakan perintah:
$ sudo systemctl start mongodb
Dari semua langkah diatas, bila tidak ada error berarti MongoDB sukses dijalankan.

MongoDB Shell

MongoDB datang dengan JavaScript shell yang memungkinkan interaksi dengan operasi atau perintah-perintah dari MongoDB. Untuk masuk kedalam shell cukup mudah, ketikkan perintah "mongo" maka kita akan langsung masuk kedalam shell, seperti contoh gambar berikut.
Tutorial MongoDB: Mengoperasikan MongoDB - Part 2

Karena MongoDB shell didukung full-feature JavaScript interpreter (penerjemah bahasa javascript), kita dapat melakukan coding langsung didalam shell, semisal saya membuat sebuah fungsi sederhana dengan JavaScript dan menjalankannya seperti gambar berikut.
Tutorial MongoDB: Mengoperasikan MongoDB - Part 2

Operasi dasar dengan Shell

Kita bisa menggunakan 4 dasar operasi seperti create, read, update, delete (CRUD) untuk memanipulasi dan melihat data didalam shell. Perlu untuk diketahui bahwa tidak ada penggunaan query relational database dalam NoSQL, melainkan menggunakan metode untuk menggantikannya.

Create

Merupakan fungsi insert document ke dalam collection. Semisal kita ingin membuat blog post, pertama kita buat lokal variabel "post" yang merupakan JavaScript object dengan berisikan data sebagai berikut:
> use blog <== secara otomatis membuat dan masuk kedalam database blog
> post = {
... "title" : "Judul Postingan",
... "content" : "Isi paragraf",
... "date" : new Date()} [tekan enter]
Kemudian kita bisa menyimpan data tersebut dengan menggunakan metode insert()  dan melihat data yang sudah tersimpan metode find(). Jika berhasil maka hasilnya akan terlihat seperti gambar berikut.
Tutorial MongoDB: Mengoperasikan MongoDB - Part 2

Dari gambar diatas terlihat bahwa data berhasil tersimpan, dan juga terdapat data baru berupa _id yang merupakan special key. Mengenai special key akan saya jelaskan dibagian lain.

Read

Fungsi read dalam MongoDB bisa menggunakan 2 metode yaitu find() dan findOne(). Cara penggunaannya sama dengan contoh sebelumnya, cukup mengganti nama metode yang digunakan.

Update

Untuk melakukan modifikasi dalam collection, kita perlu menggunakan metode update(). Dalam penggunaannya, metode update membutuhkan 2 parameter berupa document yang mau diupdate dan data baru yang akan dimasukkan. Contohnya masih menggunakan data sebelumnya, kita akan coba menambahkan key baru dengan nama comments dan menampung nilainya dalam array. Dalam JavaScript object dikenal istilah pasangan key/value dengan bentuk seperti:
{ key : "value" }
Kita akan memodifikasi variabel post dan menambahkan key dengan nama comments:
> post.comments = [] [tekan enter]
Kemudian kita lakukan update untuk postingan dengan title "Judul Postingan" dengan data document baru dengan perintah:
> db.blog.update({title: "Judul Postingan"}, post)
Kemudian periksa dengan metode find() jika berhasil maka akan ada key baru didalam document tersebut.

Delete

Menghapus document cukup menggunakan metode remove(). Untuk menghapus seluruh document dari collection cukup panggil tanpa menggunakan parameter, tetapi jika ingin menghapus document tertentu maka gunakan parameter. Seperti contoh berikut saya akan menghapus document dengan title "Judul Postingan".
> db.blog.remove({title: "Judul Postingan"})

Itulah beberapa operasi dasar dalam menggunakan MongoDB, bisa dibilang jauh berbeda dengan database yang umum kita gunakan. Meskipun begitu sangat menarik untuk mempelajari teknologi baru untuk menambah wawasan. Selamat mencoba dan silakan baca bagian lainnya.

Part 1: Tutorial MongoDB: Pengenalan MongoDB - Part 1
Part 2: Tutorial MongoDB: Mengoperasikan MongoDB - Part 2
Part 3: Tutorial MongoDB: Tipe Data MongoDB - Part 3
Part 4: Tutorial MongoDB: Tipe Data MongoDB (Tambahan) - Part 4
Part 5: Tutorial MongoDB: Dasar MongoDB Shell - Part 5
Part 6: Tutorial MongoDB: Operasi CRUD - Part 6

Tutorial MongoDB: Pengenalan MongoDB - Part 1

Tutorial MongoDB: Pengenalan MongoDB - Part 1

MongoDB adalah document-oriented database, dan bukan merupakan relational database atau biasa dikenal dengan nama NoSQL. Sebuah document-oriented database yang dimaksud ialah database yang menggantikan konsep "row" dengan model yang lebih fleksibel yaitu "document".

MongoDB dibuat dengan tujuan untuk digunakan sebagai database pada umumnya, jadi selain fitur umum seperti create, read, update, dan delete data tersedia juga fitur unik yang tersedia diantaranya yaitu: Indexing, Aggregation, Special collection types, File storage.

Dalam tiap-tiap bagian tutorial yang akan saya buat kita akan mengenal konsep dasar dari MongoDB. Untuk langkah awal kita akan mengenal dasar seperti:
  • Sebuah document adalah sama dengan row dari relational database
  • Sebuah collection adalah sama dengan table 
  • Database collection

Document

Document bisa dikatakan sebagai jantungnya MongoDB. Representasi dari dari sebuah document bervariasi untuk setiap bahasa pemrograman. Untuk contohnya, dalam JavaScript sebuah document direpresentasikan sebagai object:
{"show" : "Hello, world!"}
Contoh object diatas berisi sebuah key, "show" dengan nilai yaitu "Hello, world!". Dari contoh object diatas hanya memiliki single key/value, tentunya kita bisa memiliki banyak pasangan key/value dengan memisahkannya menggunakan tanda koma (,):
{"show" : "Hello, world!", "foo" : 3}
Perlu untuk diketahui bahwa document-object disini bersifat case-sensitive jadi perlu untuk lebih teliti saat membuatnya.

Collection

Collection adalah grup dari kumpulan document. Jika sebuah document MongoDB dianalogikan sebagai sebuah "row" dalam relasional database, maka collection dapat juga dianalogikan sebagai table dalam relasional database.
Collection memiliki dynamic schema, yang berarti kalau document dalam sebuah collection dapat memiliki bentuk yang berbeda, misalnya:
{"greeting" : "Hello, world!"} {"foo" : 5}
Document diatas dapat disimpan dalam sebuah collection, dan juga document tersebut bisa memiliki type data yang berbeda pula seperti contoh diatas yang terdiri dari string dan integer. Disamping itu, Collection mendukung format Subcollection yang dapat menjadikan data collection lebih terstruktur.

Database

MongoDB mengelompokkan collection ke dalam database. Sebuah database memiliki "permission" tersendiri dan setiap database disimpan menjadi bentuk file didalam disk. MongoDB sudah memiliki beberapa database yang telah tersedia secara default sehingga kita tidak bisa membuat nama database yang sama yaitu: admin, local, config. Ketiga database itu bisa dikatakan sebagai database special karena berisikan informasi dari pengoperasian MongoDB.

Itulah beberapa penjelasan dari dasar MongoDB. Masih banyak lagi fitur yang bisa diketahui dengan langsung mencobanya ataupun memeriksa berbagai macam fitur dan fungsi melalui official documentasi dari MongoDB.

Part 1: Tutorial MongoDB: Pengenalan MongoDB - Part 1
Part 2: Tutorial MongoDB: Mengoperasikan MongoDB - Part 2
Part 3: Tutorial MongoDB: Tipe Data MongoDB - Part 3
Part 4: Tutorial MongoDB: Tipe Data MongoDB (Tambahan) - Part 4
Part 5: Tutorial MongoDB: Dasar MongoDB Shell - Part 5
Part 6: Tutorial MongoDB: Operasi CRUD - Part 6