Tampilkan postingan dengan label article. Tampilkan semua postingan
Tampilkan postingan dengan label article. Tampilkan semua postingan

BitCoin!
Sudah makin heboh ternyata sekarang :v...
Mungkin kalian sudah pernah dengar, tapi gak tau persis benda imajiner apa lagi ini.
Atau kamu baru pertama kali dengarnya, silahkan masuk dan baca post ini.

Singkatnya BitCoin itu mata uang digital, cryptocurrency (mata uang berbasis kriptografi *???*).
Sebagaimananya rupiah dan dollar, BitCoin ini juga mata uang.

Dan kalian mungkin bertanya... gimana bisa!? Barangnya juga gak ada... gak kayak rupiah dan dollar, yang bisa dipegang.

Well... gampangnya buat dijelasin... saya mau nanya apakah anda sekarang sedang memegang 100% duit anda? Kemungkinan besar tidak... kalian pasti hanya memegang sekitar 100 ribu sampai 500 ribu rupiah di dompet anda sekarang, sedangkan sisanya ada di bank, dan kartu debit kalian cuman menyimpan data digital tentang siapa anda, dan komputer di bank menyimpan data berapa besar duit anda di bank.

Well... my point is... itu sama2 digital... jadi gak masalah kalau BitCoin itu cuman digital.
Eh tapi... kalau kartu debit kan bisa ditarik duitnya, terus ada nilainya, ada yang bisa dipegang.
Well... sebenernya uang kertas itu memang ada nilai intrinsiknya? ._. itu cuman kertas doang kan... yang membuat itu mempunyai daya beli, karena bisa dibilang semua orang di Indonesia (liat aku ada bilang di Indonesia) mempercayai uang kertas itu mempunyai daya beli.
Dan uang rupiah di luar negeri tentu tidak mempunyai daya beli sebesar di Indonesia.
Well, alasan lain kenapa uang kertas itu punya nilai yang bisa dipakai untuk membeli... sebenernya... yang gak banyak disadari orang... sebenernya uang kertas itu adalah sebuak cek yang menyatakan kita mempunyai sejumlah emas di bank.

Eh what? I know itu agak absurd ._., karena aku gak gitu pandai jelasin, silahkan liat video dibawah mengenai asal - usul mata uang.

(agak lama seh videonya, tapi lumayan menghibur, tapi kalau gak mau nonton, silahkan langsung skip, aku dah sediain ringkasannya)



Jadi ceritanya kita dibawa ke sejarah bagaimana mata uang tercipta... diawali dengan barter... trus... ya seperti yang kita ketahui, kita gak mau nukar iPhone buat sepiring nasi doang... karena itu dikenalin mata uang berupa emas, jadi emas itu bisa jadi mediator buat ngehubungin nukerin iPhone ke nasi. Jadi mata uang itu harus gampang di pecah2 jadi bagian yang lebih kecil... (kita bakal kesusahan mecah2in iPhone kita untuk beli sepiring nasi :v).
Well... napa emas? Karena emas itu logam mulia (halah)... which is tahan karat, jadi emas yang kamu punya sekarang... well 10 tahun lagi masih emas yang sama... palingan ada kotor dikit yang bisa di lap... tapi beratnya masih sama dan gak berubah. Terus kenapa emas bukannya air atau benda apapun yang lain yang gak bisa karat? Well... karena scarcity seh... atau emas itu susah didapat, dan jumlahnya bisa dibilang limited... kalau semuanya bisa dapetin emas dengan gampang, artinya emas itu gak precious lagi dunk ah... sama aja kita pakai mata uang berbasis pasir :v...

Well... the next step is... pakai emas juga nggak terlalu efisien buat belanja... selain berat untuk dibawa2, rentan dimaling... jadi disitu ada konsep bank... yang tujuan awal cuman sebagai safe house doang dengan kita membayar fee atas jasanya... nah kita nanti dikasih kayak tulisan di atas kertas (somehow kayak kontrak), yang bilang kita ada emas di bank sana... (kedengaran familiar?)
Terus di masyarakat, well... daripada dia ngambil dulu emasnya di bank buat beli barang, kenapa gak langsung kasih kertas kontrak itu ke penjual aja? Toh sama aja kan? And then disitulah asal muasal uang kertas...
(Oh buat part 2 nya kalau penasaran)



Ok ini dah mulai panjang ._.
Terus mungkin kamu bilang... terus kenapa aku harus peduli sama BitCoin? Aku sudah nyaman sama Rupiah kok...
Well... aku cuman pengen bilang BitCoin ini salah satu alternatif lain dari uang Rupiah kita. Seperti dollar lah... :v... kita gak pake Rupiah di US kan?
Dan keuntungan pertama BitCoin adalah dia internationally acceptable :v... (well... walaupun aku bilang internasional, bukan berarti yang nerima pembayaran pake BitCoin dah banyak yak :v)

Dan transfer antar pengguna itu kayak kirim email doang... kamu di komputer kamu (atau smartphone, whatever), konek ke internet... masukin alamat orang yang pengen dikirim, klik send... dan detik itu dah ke kirim uangnya...
(Dan sekarang video lagi yak buat yang belum pernah liat)



Mungkin anda nanya lagi... uang Rupiah kan ada emasnya di Bank (ada backingannya), kalau BitCoin backingannya apa? Banknya dimana?
Well... BitCoin gak ada backingan dimana2, dan gak ada Banknya.
Maksud?
Jadi bank di BitCoin itu desentralisasi, bukan sentralisasi. Artinya gak ada satu bank yang ngurusin segala macam transaksi dan penyimpanan uang. Yang ngurusin masalah transaksi, verifikasi dan lain - lain itu adalah tugas miner / penambang (what the...? Ini apaan?), dan penyimpanan uang itu kita simpan sendiri masing2 di perangkat elektronik.

Simpan di alat elektronik?
Iya kita simpan komputer kamu, di handphone kamu, diflashdisk juga bisa.
Kalau gitu kita bisa manipulasi nilai duit yang ada di kita donk?
Well... nggak... yang kamu simpan itu cuman id kamu, kamu cuman simpan kartu debit kamu di alat elektronik, nominal kita punya berapa, itu ada di cloud / internet. Setiap miner mempunyai duplikat database dari seluruh dunia, setiap orang punya berapa gede duitnya.
Errr... kalau gitu mereka bisa manipulasi uang tiap orang dunk?
Well... nggak juga... Karena di sistem BitCoin dia punya sistem mayoritas... kan aku bilang setiap miner punya duplikat database... jadi kalau ada satu orang iseng ngubah databasenya, tapi mayoritas tau kalau mereka yang bener, dan database satu orang itu telah korup istilahnya, jadi database itu nanti gak dianggap.

Bentar2... kamu pasti nanya, BitCoin ini diciptain sama satu orang... artinya penciptanya itu dong yang paling kaya, karena dia punya semua BitCoin pada awalnya?
Well... nggak lagi :v...
Sistem BitCoin itu dibuat kayak emas... gak ada satu orang yang pada awalnya punya segala emas di dunia terus dijadiin itu mata uang, tapi emas itu dicari dengan cara nambang.
Well... sama kayak BitCoin... BitCoin itu didapat dengan cara nambang secara digital, dan penambang itu yang disebut miner.
Err... absurd banget dah konsepnya :v...
Well... walaupun disebut sebagai penambang, aku lebih suka nganggep mereka itu sebagai teller di bank :v... mereka itu pekerja bank yang urusannya itu ngurus transaksi, ngevalidasi data dll... trus digaji pake bitcoin dari sistem itu.
Dan seperti emas pada umumnya, emas dipilih karena scarcitynya, jadi kalau jumlah emas terbatas, inflasi bakal kecil (gak kayak rupiah yang inflasi terus menerus karena nyetak rupiah terus jadi nilainya turun :v).
BitCoin juga seperti itu, maksimal BitCoin yang bisa beredar di Indonesia ini cuman 21 juta BTC.
Eh dikit amat? :v...
Well itu 1 BTC masih bisa dipecah2 lagi jadi bagian yang lebih kecil kok... 1 BTC bisa dipecah menjadi 1/100jt, atau satuan paling kecilnya itu 1 Satoshi.
Satoshi? Itu apaan? Jepun abis... Perlu diketahui Satoshi Nakamoto itu pencipta BitCoin ini... *well sebenernya gak perlu diketahui juga seh... karena itu nama juga nama samaran :v...
(Video lagi tentang mining)



Eh well... kalau BitCoin habis ditambang... trus gimana? Itu para miner dapet apaan lagi?
Well mereka bakal digaji sebagai teller seperti pada umumnya tanpa bonus...
Gajinya itu didapat dari biaya transaksi BitCoin. Jadi kalau kita kirim duit, kita bakal dikenain charge, untuk ngebayar gaji para miner.
Oh ternyata kita kirim di charge juga... kirain gratis :v...
Well... chargenya bisa dibilang lumayan kecil kok dibanding biaya transfer antar bank :v...

Oh iya, tadi nanya backingan BitCoin dimana?
Trus mungkin juga nanya... itu BitCoin dapet daya belinya darimana seh?
Daya beli BitCoin dari prinsip supply dan demand seh... semakin terkenal itu BitCoin... makin banyak yang beli kan? Sementara pas pada orang mau beli, dikit yang mau jual... karena itu harga bisa naik... Pas BitCoin udah kemahalan, dan gak ada yang mau beli... dan kebanyakan mau jual... saat itu nilai BitCoin turun... Karena gak bisa disangkal seh... ini nilai BitCoin tolak ukurnya sama dollar... Mungkin saat BitCoin dah populer... orang mungkin dari nanya sekarang BitCoin berapa dollar jadi sekarang dollar berapa BitCoin :v...

Dan untuk backingan... sebenernya kita perlu ngerti dulu kenapa backingan itu ada... backingan itu ada supaya kita ngerasa aman kalau2 tiba2 rupiah gak bisa dijadiin mata uang lagi (nilainya gak ada), kita bisa tuker sama emas yang ada di bank kita (let's say kita dijajah untuk kesekian kalinya lagi).
Nah untuk kasus BitCoin, daripada dia ada backingan, sistem BitCoin lebih ke prevent supaya sistem BitCoin gak bisa di shutdown, gak bisa untuk tidak diberlakukan. Karena itulah keuntungan dari bank desentralisasi... kalau kamu cuman ada satu bank... terus bank itu dihancurin, dijajah, dilarang pemerintah atau apa, langsung habis kan?
Nah kalau BitCoin, kamu bunuh satu miner (well terlalu ekstrim seh, tapi you get it what I mean lah :v)... masih banyak miner yang lain.
Bisa dibilang kalau kamu mau matiin sistem BitCoin, harus matiin internet di seluruh dunia... which is... how to do that? :v...

Well... sampai sini dulu deh... Sebenernya masih banyak yang perlu dipahami mengenai BitCoin, dari segi keamanan dan sebagainya...
Tapi menurut aku itu semua too much untuk hanya sekedar buat make doang, karena untuk benar2 ngerti, anda setidaknya harus kuliah jurusan IT terus mengambil pelajaran tentang kriptografi.
Karena itu, gimana kalau anda mencoba BitCoin, memakainya dan mempercayainya seperti anda mencoba, memakai dan mempercayai Rupiah pas anda masih di sekolah dasar? Menurut pandangan anak di sekolah dasar... konsep dua2nya sama2 absurd kok :v...
Apa itu 8 bit, 16 bit, 32 bit, 64 bit?

Pasti sering denger kan?

Pertama - tama saya jelaskan dulu apa itu bit dan apa itu byte.

Bit itu suatu data yang cuman nyimpen 0 (false) atau 1 (true).
Sesimpel itu, tapi jika digabung2 akan lebih banyak maknanya.

Dan satu byte adalah 8 bit, udah gitu doang.

Integer yang biasanya ditemukan dalam dunia programming itu biasanya bisa dibedakan jadi 2 tipe, signed dan unsigned.

Apa artinya? Secara sederhana signed itu bisa mengandung nilai negatif, sedangkan unsigned cuman nilai positif doang.

Untuk jelasnya aku jelasin yang unsigned dulu karena lebih gampang.
Misalkan 8 bit unsigned integer, yang biasanya disebut char, itu ada integer dengan 8 bit misalnya 01010110.
Angkanya secara sederhana dengan mengubah itu dari basis 2 ke basis 10 (supaya bisa dimengerti manusia :v).

Cara ngubahnya itu tiap posisi bit itu kita kasih nomor dari paling kanan itu 1, semakin ke kiri itu adalah 2 kali dari sebelah kanannya.

Contoh...
0 1 0 1 0 1 1 0
128 64 32 16 8 4 2 1

Nah yang ada 1 nya itu ditambah semua, kalau contoh di atas 64 + 16 + 4 + 2 = 86.

Gampang bukan?

Artinya range untuk 8 bit unsigned integer itu dari 00000000 = 0 sampe 11111111 = 255. Jadi sekarang harusnya kamu tahu berapa range untuk 16 bit unsigned integer (short). Hal itu juga berlaku untuk 32 bit (long) dan 64 bit (long long).
Sebagai latihan silahkan dicoba cari sendiri :D... kalau perlu tinggalin komen dibawah...

Trus kita selingkuh (beralih) ke signed integer.
Biasanya program - program komputer kalau bicara signed integer itu dia pake Two's complement.
Kenapa aku bilang gini? Karena ada lebih dari satu cara untuk mempresentasikan signed integer.

Bit paling kiri di signed integer itu namanya signed bit, itu yang menandakan itu bilangan negatif apa kagak, kalau 0, artinya positif, kalau 1 artinya negatif.

Untuk representasi bilangan positif, sama kayak sebelumnya dengan bit paling kiri itu 0.
Untuk representasi bilangan negatif ini yang agak dikit ribet, jadi caranya semua bit diinvert dulu semuanya (0 jadi 1, 1 jadi 0), dan kita memperoleh angka yang positif, tapi sebelum dibaca, kita harus tambah satu dulu baru kita baca sebagai angka positif (bingung? langsung aja ke contoh).

Contoh bilangan negatif : 11101000
Pertama kita tau itu negatif (ngeliat bit pertama), karena itu kita invert semua bitnya : 00010111
Trus kita tambah 1 ke bilangan itu (penjumlahan basis 2 ya, diinget) :

    111  <<< caret
00010111
       1
-------- +
00011000

Jadi hasilnya 00011000, trus diitung pake kayak ngitung positif, 16 + 8 = 24. Jadi karena kita tahu ini negatif, hasilnya jadi -24, ok ribet bukan?
Dan artinya range untuk 8 bit signed integer itu 1000000 = -128 sampe 01111111 = 127. Dan cara yang sama berlaku untuk 16 bit, 32 bit, dan 64 bit.
Dicoba sendiri yak :v.

Dan kalau ada yang bingung kenapa dirancang kayak gini, jawabannya ada pada penjumlahan dua bilangan, karena kalau pakai kayak gini menjumlahkan positif sama negatif value itu gampang. Seandainya 86 (01010110) dijumlah dengan -24 (11101000), untuk ngejumlahin keduanya tinggal kayak ngejumlahin binary biasa.

11        <<< caret
 01010110
 11101000
--------- +
x00111110

Bisa dilihat pas ngejumlahin bisa lebih dari 8 bit, karena itu yang lewat itu dibuang, hasilnya cuman ngambil 00111110, dan itu adalah 32 + 16 + 8 + 4 + 2= 62 dimana 86 + (-24) = 62.
Interesting enough?

Nah karena bisa lebih dari 8 bit dan ada bit yang dibuat ini yang biasanya menyebabkan angka gede banget ujung2nya jadi negatif, misalnya kita punya 127 dalam 8 bit signed integer, kita tambahin satu aja, dia bakal menjadi -128 (muter lagi).

Ok mungkin itu dulu :-?... semoga menjelaskan. Dan untuk link baca - baca selanjutnya :

Two's Complement
LevelBeginner
Type
  • General
Requirement
Similar
LevelIntermediate
Type
  • Dynamic Programming
Requirement
Similar
Entah kenapa tiba - tiba ingin membuat artikel tentang astrology.
Akhir - akhir ini, saya sangat tertarik dengan hal - hal astrology dan perbintangan.
Rencananya, nanti cerita saya akan berbasis tentang astrology (spoiler alert), sehingga mau tidak mau saya mencari banyak sumber dan mempelajari tentang astrology.

Perlu diketahui, kita dikenalkan dengan 12 jenis Western Zodiac, berdasarkan bulan kelahiran (Well, sebenernya bukan bulan juga seh).

Keduabelas jenis zodiac itu adalah :
  1. Aries
  2. Taurus
  3. Gemini
  4. Cancer
  5. Leo
  6. Virgo
  7. Libra
  8. Scorpio
  9. Sagittarius
  10. Capricorn
  11. Aquarius
  12. Pisces

Memang katanya ada isu - isu ada zodiac ke 13, tapi aku lebih suka sistem yang 12 ini.
Dan kita akan membahas tentang math lagi. Jangan serem dulu liat namanya "Linear Diophantine", sebenarnya itu namanya doang yang keren, tapi sebenarnya tidak terlalu susah teorinya. Sederhananya yang ingin kita solve adalah soal seperti ini :
ax + by = c
Dimana a, x, b, y, dan c adalah bilangan bulat (integer), dan kita telah mengetahui nilai dari a, b, dan c. Kita diminta mencari semua pasangan x dan y yang memenuhi persamaan diatas.

LevelBasic
Type
  • Math
Requirement
  • Algebra
Similar
  • GCD and LCM
  • Extended Euclid
Hal yang sangat dasar dalam Competitive Programming adalah Modulo Arithmetic, hal ini sangat penting diketahui dalam OSP maupun OSN, jadi sekarang saya akan membahasnya disini.
Karena tidak jarang peserta yang sudah sampai ke OSN pun masih belum mengerti bagaimana cara kerja Modulo Arithmetic ini.

LevelBasic
Type
  • Math
Requirement
    Similar
      test
      one
      two
      three
      four
      five

      six



      How cool is that? ;)

      Dalam pembuatan spoiler di atas saya menggunakan bantuan library jQuery untuk mempermudahkan ngoding di javascript, sebenarnya tidak perlu menggunakan jQuery pun bisa, tetapi menggunakan jQuery mempermudah segalanya.

      Syntax Spoiler

      Pada saat saya menggunakan spoiler, yang saya tulis adalah seperti berikut (contoh hasilnya ada di atas)
      <spoiler data-title="test spoiler">test
      <spoiler>one</spoiler>
      <spoiler>two</spoiler>
      <spoiler>three
      <spoiler>four
      <spoiler>five</spoiler>
      </spoiler>
      <spoiler>six</spoiler>
      </spoiler>
      </spoiler>
      
      Dan jika anda bernanya, lho di html kan tidak ada tag spoiler, jawabannya, iya, benar anda dapat seratus :D, karena itu aku buat sendiri :p.
      Sebenarnya anda bisa memakai tag seperti div, atau blockquote untuk membuatnya, tetapi kalian harus memberinya class tertentu supaya bisa dibedakan dengan div atau blockquote yang lain.
      Karena itu merepotkan, aku tidak memakainya :p.
      Dan attribute data-title itu digunakan untuk memudahkan memberi judul pada spoilernya, dan tentunya opsional.
      Dan nantinya aku akan memberi tahu bagaimana cara membuatnya persis seperti yang aku punya.

      LevelIntermediate
      Type
      • Dynamic Programming
      Requirement
      Similar
      Dan sekarang aku agak meloncat dikit ke bagian agak sedikit advanced, yaitu DP.
      Dan jika ada kode, saya akan menuliskan dalam bahasa C++. (seharusnya kode untuk Pascal tidak akan jauh berbeda)

      LevelIntermediate
      Type
      • Dynamic Programming
      Requirement
      • Recursive Function
      • Multidimensional Array
      • Big O Notation
      Similar
      • Knapsack Zero One
      • Matrix Chain Multiplication (MCM)
      • Longest Increasing Subsequence (LIS)
      • Coin Change Problem
      Sekarang kita akan membahas tentang input output string / array of char di pascal maupun di C++.
      Terkadang untuk urusan string agak rada tricky, dan sering ngebug, sekarang kita akan membahas cara yang baik dan benarnya.

      LevelBeginner
      Type
      • I/O Processing
      Requirement
      • Basic Program Structure
      • Program Flow (if, for, while)
      • Procedure & Function
      • Variable
      • Input & Output Integer
      • Input & Output Char
      Similar
      Post pertama tentang competitive programming, sekarang kita akan membahas hal yang paling basic dalam programming, terutama dalam dunia competitive programming yang mengambil input dari terminal atau command prompt.

      LevelBeginner
      Type
      • I/O Processing
      Requirement
      • Basic Program Structure
      • Variable
      Similar
      alijaya. Diberdayakan oleh Blogger.