Skip to main content

Pengalaman Mengikuti PyCon Indonesia 2017

PyCon merupakan acara konvensi tahunan yang secara spesifik membahas bahasa pemrograman Python. Pada awalnya PyCon hanya diadakan pada Negara Amerika Serikat, namun seiring berjalannya waktu, PyCon juga diadakan pada negara-negara yang mempunyai komunitas Python yang aktif seperti PyCon Singapore, India dll. PyCon 2017 bertemakan " A New Beginning " karena merupakan perhelatan PyCon pertama kali yang diadakan di Indonesia tepatnya di kampus PENS, kota Surabaya. Hal ini tentu saja merupakan kesempatan bagi saya untuk mengikuti banyak talks dan bertemu dengan sesama pyhonistas yang sedang mempelajari atau tertarik dengan bahasa pemrograman Python. Pemateri bukan hanya berasal dari Indonesia saja melainkan pythonistas dari beberapa negara lain juga ikut berpartisipasi dalam acara PyCon 2017 ini.   Acara ini menempati Auditorium dan beberapa kelas Gedung Pascasarjana PENS. Dimulai sejak pukul 08.00 WIB. Acara dibuka oleh Dondy Bappedyanto, CEO Biznet Gio Cloud yang berp...

Janji Javascript

Menurut MDN (Mozilla Developer Network), Javascript Promise adalah "object represents the eventual completion (or failure) of an asynchronous operation, and its resulting value". Kasarnya begini, javascript promise adalah suatu objek yang NANTINYA akan menghasilkan suatu value (resolved), pun kelak belum tentu sukses (rejected).

Sama hal dengan sebuah janji di kehidupan nyata, seseorang bisa menjanjikan sesuatu meskipun orang tersebut belum memiliki apa yang dijanjikan. Sebagai contoh, Ibu Budi menjanjikan membelikan mainan baru hanya apabila Budi mendapatkan nilai diatas 85 pada ulangan matematika.

Promise memiliki beberapa state yaitu ;
  • pending: keadaan dimana promise pertama kali dibuat.
  • fulfilled: operasi sukses diselesaikan.
  • rejected: operasi gagal.
Saya coba mengimplementasikan contoh sederhana promise "Ibu Budi" diatas dalam bentuk javascript ;

pada kode diatas saya memiliki dua promise yaitu janjiMainanBaru() dan bermain(),  janjiMainanBaru() bertugas mengembalikan janji yang berupa objek apabila nilai Budi diatas 85, sedangkan bermain bertugas mengkonsumsi objek tersebut dan mengembalikan sebuah string.

Promise dibentuk dengan menggunakan keyword new, Setiap Promise memiliki executor yang merupakan sebuah fungsi dimana fungsi tersebut memiliki dua argumen yaitu resolve dan reject. resolve di eksekusi sesaat setelah sebuah tugas telah selesai dan menghasilkan suatu value, sedangkan reject dipanggil apabila tugas tersebut gagal dilaksanakan. akan tetapi pada bermain(), hanya didapati sebuah method Promise.resolve() yang berarti promise tersebut akan selalu menghasilkan sebuah value apabila dieksekusi. (nb : selalu sertakan resolve dan reject walaupun optional demi kenyamanan bersama, karena ECMAScript masih terus berkembang dan mungkin saja kedepannya akan berstatus deprecated, diatas hanyalah sebuah contoh ).

Berikut ini akan membingungkan dan agak sulit untuk dijelaskan apalagi pada level perjavascriptan saya sekarang. Tapi, mari kita cermati dengan seksama syntax .then berikut ;
p.then(onFulfilled[, onRejected]);

p.then(function(value) {
  // fulfillment
}, function(reason) {
  // rejection
});
Pada mintaIbu() dapat kita lihat memiliki method .then dan .catch didalamnya. .then() akan mengembalikan atau menghasilkan sebuah promise (penting), .then juga meminta dua callback function yaitu onFulfilled dan onRejected (optional),  onFulfilled akan dipanggil jika promise terpenuhi (fulfilled), lalu value didalam fulfilled apa, dong ? value didalam fulfilled yaitu sama persis value yang kita pass dari resolve(), sedangkan .catch hanya peduli dengan penolakan suatu promise. mekanisme .catch sama persis dengan .then . hhmmmmm oke ini membingungkan. tidak apa - apa bingung, itu indikasi bahwa kita belajar.

Oke lanjut, Promise is chainable, yang artinya promise dapat disambung - sambung dengan method .then dan .catch diatas (mindblowing, I know), lihat snippet kode berikut ;
let mintaIbu = function () {
janjiMainanBaru(nilai)
.then(bermain)
.then(function (p) {
console.log(p)
}).catch(function (reason) {
console.log(reason)
})
}

Karena .then mengembalikan sebuah promise, maka promise dapat disambung - sambung dengan promise lainnya, dan .catch bertugas untuk menampilkan error yang dihasilkan dari reject().

Mungkin dengan contoh diatas akan terlihat sepele, tapi coba kita bayangkan jika kita membuat banyak asynchronous API request dan menghandle data tersebut dengan menggunakan cara old school yaitu callback function, mungkin kode kita akan terlihat kurang lebih seperti ini ;


kode diatas disebut callback hell, dari namanya saja sudah ngeri, tidak ada yang mau masuk neraka kan disini ? maka bertaubatlah! dan mulai gunakan Promise.

Jika ada kesalahan pada penulisan kode atau apapun dalam postingan saya silahkan berikan komentar, karena posisi saya disini juga masih belajar. Terimakasih. 👌

Comments

Popular posts from this blog

Mengenal Decorator pada Python

Karena sebelumnya cuma kopas kode orang, alhasil ngerti mana yang namanya decorator, tapi gak tau tugasnya apa, gimana bikinnya, dan kenapa pakai decorator. Sekarang sudah AGAK klik makanya saya coba nulis tentang decorator di blog ini biar nempel. oiya satu lagi, tutorial ala - ala ini cuma sebatas pemahaman saya, jadi kalau ada salah apapun dengan senang hati silahkan koreksi. oke, mulai. kita mulai dari gerak gerik dan sifat tabiat function pada python, dari sini nantinya kita meliat wujud decorator yang sebenarnya. Pertama, Definisi. Function adalah suatu “blok kode” yang memproses sejumlah data yang diberikan melalui parameter, lalu mengembalikan nilai nya. Kedua, function merupakan first class object pada python, yang berarti function mempunyai atribut dan dapat di “passing” dalam berbagai bentuk seperti assignment kepada variable, sama halnya seperti string,integer,list dll Ketiga, function memiliki scope atau lingkup, yang berarti ketika kita memiliki function, variab...

Twitter Bot sederhana dengan Python dan tweepy

Postingan singkat saya kali ini akan membahas cara penggunaan layanan twitter API atau biasa disebut juga RESTful APIs untuk membangun bot sederhana. untuk goal bot ini sendiri diharapkan nantinya akan bisa mengupdate status secara berkala. Sebelum mulai silahkan daftarkan dulu aplikasi yang akan menggunakan layanan API tersebut disini , setelah aplikasi didaftarkan, kita seharusnya sudah memiliki Consumer Key, Consumer Secret, Access Token, dan Access Token Secret. masukkan kode berikut kedalam terminal untuk menginstall tweepy. sudo apt-get install python-pip pip install tweepy tweepy merupakan library python yang digunakan untuk "membungkus" kode python kita agar mempermudah komunikasi dengan twitter API. setelah tweepy selesai terinstall silahkan cermati kode berikut, kali ini saya menggunakan Python 2.7 , kalau teman - teman menggunakan Python 3 juga gak ada masalah, tinggal ganti kodenya, yang beda disini paling cuma statemen "print". sesuaikan consume...

membuat Model Form dengan Django 1.9+

ketika kita membuat sebuah aplikasi web, besar kemungkinan app tersebut diharapkan bisa berinteraksi dengan User. nah, salah satu cara interaksi tersebut yaitu melalui form. Bagi teman - teman yang sudah familiar dengan HTML atau bahkan pemrograman PHP mungkin sudah sering bikin form. di Django kita juga bisa bikin form, bahkan, programmer tidak perlu pusing - pusing lagi dengan CSRF, validasi, bahkan styling dan widget. keren nggak? keren lah. kali ini saya ingin menjelaskan caranya bikin Model Form dengan Django, yaitu Form yang bisa berinteraksi langsung dengan Model (Database). ntap langsung jajal aja text editor atau IDE kesayangan..aaaa mau dong disayang. disini saya berasumsi teman - teman sudah membuat satu project dan app yang sudah terinstall di settings.py, terserah mau kasih nama apa. pertama - tama saya mau kasih liat struktur models.py pada aplikasi saya. silahkan contek kalau mau. jangan bingung dengan reverse() itu cuma function buat "redirect" user ka...