WHAT'S NEW?
Loading...
Package Sublime Text Terbaik Untuk Web Development
Wikipedia
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.

Cara Mengatasi MongoError: E11000 duplicate key error index
wpcookhouse
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.
[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

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.


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

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.

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
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

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