Apa itu Antminer & Bagaimana Cara Kerjanya?

Antminer Indonesia

Antminer adalah salah satu brand produk dari perusahaan Bitman dan merupakan salah satu ASIC MINER ternama.

Apa yang dimaksud dengan ASIC MINER?
ASIC Miner adalah sebuah Teknologi yang ditanam pada chipset yang hanya bisa bekerja untuk satu fungsi saja, apa pun programnya yg memakai ASIC chipset cuman ditujukan buat 1 fungsi kerja, pada hal ini di antminer cuman buat mecahkan algorithma SHA256.
Bagaimana cara kerjanya bisa mendapatkan Bitcoin?
Ilustrasi sederhana :
Saya mempunyai 10 meter tali yang per 2 meter saya bikin simpul, setiap simpul akan berbeda bentuk.
Saya minta sama kamu supaya ngelurusin atau melepas simpulnya
*dengan catatan setiap simpul yang bisa kamu selesaikan saya berikan hadiah es krim magnum hehehehe

nah, anggap saja dengang keahlian kamu sebagai mantan pramuka, kamu bisa menyelesaikan simpul pertama dengan sangat mudah, sudah pasti saya kasihkan hadiah es krim magnumnya sama kamu.
terus kamu tambah semangat, hmm bagaimana kalau kamu mau es krim lebih banyak lagi? pastinya kamu akan mengerjakan simpul kedua.
 tapi saat disimpul kedua, seluruh kesaktian kamu di pramuka kamu keluarkan untuk menyelesaikan simpulnya, tapi sampai mencret pun simpul tidak terselesaikan.
tiba tiba datang si BITMAIN, bilang sama kamu, “ayo pakai ANTMINER yang sudah saya program buat ngeringanin kerja kamu untuk membuka simpul.
dah simsalabim, simpul kedua terbuka dengan gampang, terus saya berikan lagi es krim nya.
kemudian dengan maruknya kamu berencana untuk ngerampok saya untuk mendapatkan es krim ke3.
kamu menghubungi si BITMAIN dan bilang, saya yakin dia ( yang punya es krim)  bakal memberikan lebih susah di simpul ke 3
terus BITMAIN bilang, boleh boleh saja, tapi si ANTMINER harganya sekian yaaaaa!!!!
kamu tanpa pikir panjang langsung bilang “LOE jual ANE beli”, dan dengan merasa senjata ANTMINER kamu cukup, kamu hadapi lah simpul ke 3.
ternyata yang mengerjakan simpul ke 3 bukan kamu saja, ada  viens, ada erwin dan mereka membawa senjata yang sama
akhirnya mereka terpaksa  berbagi es krim dengan teman teman yang laen
setelah menyelesaikan simpu ke 3.
nah, itu sedikit ilustrasi tenteang antiminer & cara kerjanya.
es krim nya = 21juta btc, simpulnya jutaan block & sisanya, kalian sudah tau pastinya
nah itu tadi ilustrasinya & itu ada hitungannya.
untuk rumusannya saya tidak hapal, tapi disana sudah jadi kalkulator, jadi gampang.
difficulty = simpul
diff akan selalu naik selama pabrik memproduksi asic miner.
mungkin ada yang bingung, untungnya orang yang membuat BTC itu apa?

satoshi nakamoto (pseudo) dan komunitasnya ingin punya suatu alat pembayaran yang tidak tersentral dan bisa digunakan dimana dan kapan saja.
sesuai dengan idenya, yang mereka ciptakan itu suatu sistem, dimana begitu sistem itu dilepas di internet akan mempunyai tempat dimana mana, istilahnya peer network gitu, sistem itu tidak diatur oleh seseorang saja, yang dibuat disistem itu adalah konsep reward atas hasil kerja.
nah, untuk lebih mengerti bagaimana cara sistem itu bisa dianggap tidak diatur, itu yang akan kita bahas sekarang.
PERTANYAAN : 
  1. Kenapa alat miner bisa menghasilkan uang?
  2. Sebenernya apa yang ditambang?
  3. kapan tambang itu akan habis ?
  4. kenapa penyedia tambang itu bisa memberi kita koin? apa keuntungan bagi mereka?
nah, itu pertanyaan standar buat publik.
  1. Alat miner tidak menghasilkan uang tapi memecahkan soal algoritma
  2. Tambang hanya istilah untuk cara memecahkan algoritma tersebut yang setiap 1 block diselesaikan maka para pemecah algoritma akan diberi hadiah berupa bentuk unit tergantung berapa hadiah perblock tersebut
  3. kapan habis? kegiatan ini akan habis tergantung dari kecepatan alat pemecah algoritma yg akan beredar dipasaran dan mencapai total reward 21juta unit untuk kasus di bitcoin
  4. bukan penyedia yang memberikan hadiah unit nya., penyedia hanya menyediakan fasilitas yang terhubung dengan server pemberi soal algoritma, keuntungan bagirmereka para penyedia koneksi adalah dalam bentuk fee transaksi, dan iklan iklan yang dipasang di penyedia koneksi dan sewa hosting dari koneksi ke server dari mereka
batas unit bitcoin itu 21jt unit atau 21jt BTC https://blockchain.info/charts/total-bitcoins

melihat diff yangg selalu naik terus tiap bulannya, apa jadinya kalau alat mining tidak bisa ngikutin lagi? atau kecepatan alat mining akan terus ikut bertambah juga?
kamu salah, block pertama btc rewardnya 50 unit per block yang bisa diselesaikan, saat ini hanya 25 pada tingkat kesulitan yang ditentukan, nanti akan jadi 12.5 dan begitu seterusnya.
  • jadi intinya semakin banyak speed yang beredar, semakin cepat diff bertambah, semakin dikit reward perblock nya
seperti analogi saya di atas tentang es krim
melihat perkembangan diff, contoh sekarang 50ghs dapat payout 0,0009 berarti semakin hari semakin berkurang, dan kemungkinan bertambahnya bulan / tahun 50ghs gak dapat apa apa?
benar
dan harga per ghash pun akan turun menyesuaikan dengan diff nantinya
saat ini per 2 minggu diff btc naik 10%s/d 20% dari 2 minggu sebelumnya.
  • dan gudangreceh.com ada sedikit metode yang bisa mempertahankan payout, makanya buat bisa dibedakan gudangreceh.com membuat paket yang regular payout sesuai metode dari gudangreceh.com.
saat 21jt BTC sudah habis ditambang, kira kira apa menurut kalian yang akan terjadi?
pikiran orang awam, bitcoin akan punah? salah
nah kita buka dulu cerita bank konvensional
  • saat uang di negara A habis terdistribusi,sedang nilai inflasi bertambah apa yang akan dilakukan oleh bank sentral negara tersebut?
  • berarti bank sentral akan mencetak uang baru buat mengimbangi.
nah kita balikkan ke btc.
21jt btc itu sudah limit teratas, dan tidak ada seorangpun yang bisa menambah limitnya
saat 21jt btc sudah habis ditambang dan permintaan akan btc bertambah, apa yang akan terjadi?
prinsip ekonomi dasar gan
supply sedikit +demand bertambah=harga melangit

apa yang akan terjadi selanjutnya?
1 SATOSHI yang kalian siasiakan sekarang akan lebih bernilai dari uang yang kalian pegang
makanya dari awal satoshi nakamoto buat 1/100jt
Sedikit tambahan saat ini di Indonesia telah ada perusahaan yang menjual  antminer lho..
coba di lihat aja dulu, ini perusahaan Berbadan Hukum lho alias Perseroan Terbatas, jadi tentunya sudah memiliki ijin-ijin untuk bisnis dibidang  Antminer, dan nama perusahaannya adalah PT. Vast Palaso Cyberindo dan website untuk produk Antminer ada di www.antminerindonesia.com.
Alamat Kantor ada di Grand Slipi Tower Lt.5F atau bisa cari digoogle maps.

 

Advertisements

How to get wifi on ethOS!

“WHAT?!?” You might say.
“But I paid $40 for a linux operating system that the developers told me that anything but ethernet would work! WTF! Why won’t they make it work! I’m in a odd situation where I can’t be near ethernet!”

Well here’s the thing, their reliability and simplicity doesn’t want to hurt their reputation. They flat out said “wifi will never work” and users never had the confidence to say “Fuck it, there is no tutorial, I’ll never get around that!”. Well today is your lucky day. I will show you how I got my old piece of shit wifi card from the dinosaur age to work with ethOS. Its not difficult if you know how to do normal edits in nano, a small terminal text editor for linux.

“Ermagerd! I hate running long ass ethernet cable! Show me NAOUGHOW!!!!”

Hold on, you’ll need ethernet to do this since this tutorial will assume you will be on ethernet, with your back slouched over on the floor next to the router waiting to get the pain all over with. Please for god sake remote login with a known IP on another computer using PuTTY. The IP should be displayed on the top left of the screen. If you are running your miner headless you can check your dhcp client list in the router. Moving on!

So ethOS is built on a stripped down version of KDE ubuntu, so all your repositories should be compatible so long as the developers shall restrict this in the future. First thing is to update the ubuntu repositories.

"sudo apt-get-ubuntu update"

After all that bullshit updates you need to get some kind of internet managing service going so you can configure wifi settings. This also has a shit load of drivers. So if you’re using a mass produced card that’s 10 years old, that’s a damn good chance of it working.

"sudo apt-get-ubuntu install network-manager"

After that completes, enter in the following…

"start network-manager"

“Sweet! A fancy gui! How nice! Thanks!”

Nope, you’re going to be using the good old terminal. You thought you would get off so easy, Hah! Stick with the terminal and configuration files. For some reason ethOS developers really do not want you to enjoy wifi, let alone a gui. This ain’t those fancy Windows machines that fills your RAM in a heartbeat!

Now to find the wifi card. In this case I use an old Linksys WMP54G v4.1 PCI b/g card. Holy shit that’s old, but it will pass well enough bandwidth for the job. Best to use your old hardware for this to keep ROI down for mining crypto! You can try usb as well, its a bit different.

"lspci" (For PCI-slot cards)

or

"lsusb" (For USB cards)

You should see your “network controller” in the list. In my case its “Ralink corp. RT2561/RT61 802.11g PCI”. If you do not see your card, make sure to install any needed drivers. That is another whole mess to deal with and I do not have the time to go through that. To see all network controllers, use the command down below to see your devices. It will be listed as “ethX” for your ethernet controllers, “lo” as your loopback(127.0.0.1), and “wlanX” as your wifi controllers.

"ifconfig"

You will most likely need to bring the wifi card up so you can use it.

"sudo ifconfig wlan0 up"

Now be amazed by seeing the wonderful SSID’s of your routers nearby!

"nmcli dev wifi"

“WOW! Amazing!”

Well hold on, unless your living under a rock with WEP encryption, you are probably using WPA2 encryption on your router. You’ll need to get more stuff from ubuntu.

"sudo apt-get-ubuntu install wpasupplicant"

Now you can connect to a secured router. Use this…

"nmcli d wifi connect <YourRouterName> password <YourRouterPassword> iface wlan0" (without the < >'s)

TADA!! Wireless mining! You will now be given a dynamic IP when you disconnect your ethernet cable. Try remote logging back into ethOS using that different IP! It should work!

“Sweet! Thank’s for the tutorial!”

Wait! Wait! Wait! The wifi you set up will not be there on the next reboot! You will need to tell ethOS to configure it every time it reboots. If there was only a startup terminal command file that could do that… oh wait there is!

"nano /etc/rc.local"

Now place this into that text file…

"start network-manager"
"nmcli d wifi connect <YourRouterName> password <YourRouterPassword> iface wlan0

Save by hitting CTRL-X and then Y. Then reboot to check that wifi will come on. For me, it takes a whole fucking 5 minutes to get it started mining after boot. If the wifi does not come up after 5 minutes, something is wrong! If anyone has a faster solution for this booting period, let me know in the comments. I’ll try keep this tutorial updated to help other people out.

“Holy shit! Thanks a million! Why haven’t the paid developers done this for us?!?”

Well that is all up to them. It’s not that difficult to setup really so they must have their reasons. I don’t know, maybe they’ll realize the need for it, until then, you can set it up yourself. I like to use static IP settings so I always know the IP address. Use the network-manager at boot or other network config files to set that up as well.

But seriously, if this tutorial helps you out, please share and/or donate. Oh, and happy mining!

Antminer Indonesia

21751340_336939090066041_7684869092602520452_n
Antminer Indonesia : Sumber http://antminerindonesia.com

AntMiner Indonesia adalah Perusahaan pertama di indonesia yang menjual berbagai mesin Miner Mata Uang Digital. Antminer Indonesia dibagun pada Tahun 11 November 2015 hingga saat ini yang bergerak pada bidang Mata Uang Digital.

Berikut adalah daftar Produk yang dijual :

  1. Antminer : Mesin Pertambangan yang dikeluarkan oleh Perusahaan Bitmain. Mesin Antminer memiliki versi untuk Bitcoin, Dash dan LiteCoin.
  2. INNOSILICON : Mesin Pertambangan yang dikeluarkan oleh Perusahaan INNOSILICON Technology Ltd.
  3. PINIDEA : Mesin Pertambangan yang dikeluarkan oleh Perusahaan PinIdea Co., Ltd
  4. IBELINK : Mesin Pertambangan yang diproduksi oleh perusahaan Broadeng Inc.
  5. Baikal Giant : mesin pertambangan yang diproduksi oleh perusahaan baikal gaint. inc
  6. GPU : Video Graphic Adapter berbentuk Mining Rig.
Perusahaan ini adalah perusahaan pertama di indonesia dalam bentuk perusahaan berbadan hukum pertama di indonesia.
Berikut adalah informasi perusahaan yang dicantumkan di website Antminer Indonesia adapun bidang perusahaan ini adalah perusahana IT Software yaitu PT. Vast Palaso Cyberindo.

 

WhatsApp : 081238123889 / 081293308020
WeChat : mrkyong atau youngbest_wechat
Email : bobby@vastpalaso.com

Atau  bisa langsung chat live di websit antminerindonesia.com

How to install Nginx on Fedora 18

in this post i will write about Nginx on a Virtual Private Server with Fedora 18. Lets go….

actually, one of function from Nginx was rendering a site to other  address  or other port. for example :

i have a VPS ( Virtual Private Server ) with 3 tomcat which still running on port : 7070, 8080 and port 9090. **example only**.

so i have 3  pages, for example my IP server is : 19.19.19.002, so i have 3 page with this address :

  1. 19.19.19.002:7070
  2. 19.19.19.002:8080
  3. 19.19.19.002:9090

get it now?

so… how can i access that pages?

we need to install Nginx.

Before  to install Nginx  you have  to remove  any   other  apache  application with  yum  remove  httpd

Nginx is available as a package for Fedora 17

yum install nginx

– Create the system startup links for nginx and start it:

systemctl enable nginx.service
systemctl start nginx.service

Now  open the  browser  and  open  http://19.19.19.002 –>this is running on port 80.

so every we hit 19.19.19.002, we will redirect to port 80. when we already install nginx.

we can create a configuration at /etc/nginx/conf.d/default.conf , **noted : this location is only for configuration.

and then we must  type this code to default.conf, like this :

server {

listen 80;
server_name domain.com;
location / {
proxy_pass http://127.0.0.1:7070/;
}
}

 yeah like this.  it means when you hit domain.com (port 80), it will redirect to http://127.0.0.1:7070.

so how about port 8080 and 9090, we just need to add some code to configuration file. need some documentation? read from this page.

WebSocket

WebSocket merupakan sebuah protokol komunikasi dua arah yang dapat digunakan oleh browser. Jika pada AJAX kita hanya dapat melakukan komunikasi satu arah dengan mengirimkan request kepada server dan menunggu balasannya, maka menggunakan WebSocket kita tidak hanya dapat mengirimkan request kepada server, tetapi juga menerima data dari server tanpa harus mengirimkan request terlebih dahulu. Hal ini berarti ketika menggunakan WebSocket pengguna harus terus menerus terkoneksi dengan server, dan kita memerlukan sebuah server khusus untuk dapat menjalankan aplikasi WebSocket dengan benar. Sederhananya, perhatikan gambar berikut:

_images/AJAXvsWebSocket.pngDari gambar di atas, kita dapat melihat bagaimana dalam kasus AJAX, setiap request dari pengguna maupun respon dari server dilakukan secara terpisah. Jika ingin mengirimkan request ke server, kita perlu membuka koneksi baru yang kemudian akan dibalas oleh server seperti ia membalas permintaan halaman HTML biasa. Server juga tidak dapat langsung melakukan pengiriman data ke klien tanpa ada permintaan terlebih dahulu. Hal ini berbeda dengan pola komunikasi WebSocket, di mana koneksi berjalan tanpa terputus dan server dapat mengirimkan data atau perintah tanpa harus ada permintaan dari pengguna terlebih dahulu. Dengan begitu, WebSocket bahkan juga memungkinkan server mengirimkan data atau perintah ke semua klien yang terkoneksi, misalkan untuk memberikan notifikasi global.

Untuk dapat melihat langsung bagaimana cara kerja WebSocket, kita akan langsung melakukan eksperimen. Objek yang diperlukan untuk menggunakan WebSocket dari browser adalah WebSocket. Tetapi sebelumnya, kita memerlukan sedikit persiapan terlebih dahulu, yaitu komponen server dari WebSocket.

Komponen Server WebSocket

Teknologi WebSocket membutuhkan cara penggunaan yang sama sekali berbeda dibandingkan dengan AJAX. Jika pada AJAX kita dapat mengguankan komponen server yang sama dengan server HTTP pada umumnya, untuk WebSocket kita memerlukan komponen server khusus. Hal ini disebabkan oleh model komunikasi WebSocket yang mengharuskan pengguna terkoneksi dengan server sepanjang aplikasi masih digunakan. Arsitektur server yang diperlukan untuk melayani banyak koneksi terbuka seperti ini tentu berbeda dengan arsitektur yang dibutuhkan untuk koneksi satu arah seperti pada HTTP. Ketika menggunakan WebSocket, biasanya kita akan memerlukan komponen server (beserta kode sisi server) khusus.

Adapun beberapa contoh komponen server untuk WebSocket yaitu:

  1. Socket.IO (Javascript)
  2. SignalR (.Net)
  3. Jetty (JVM)
  4. Event Machine (Ruby)
  5. Tornado (Python)

Bahasa yang disebutkan pada daftar di atas adalah bahasa yang digunakan pada sisi server.

Persiapan Eksperimen WebSocket

Sebelum kita dapat mencoba menggunakan WebSocket, terlebih dahulu kita akan perlu membangun komponen server yang dapat mengerti protokol WebSocket, dan dapat mengerti pesan yang akan kita kirimkan kepada mereka. Untuk memudahkan pembaca, sebuah komponen server khusus telah disiapkan. Silahkan download sampel komponen server (websocket-sample) ini terlebih dahulu.

Terdapat dua buah server yang diberikan, yaitu:

  1. index.js merupakan komponen yang dirancang sebagai server dari sistem chatting sederhana.
  2. zero.js merupakan komponen yang dirancang sebagai server sistem menonton game (seperti twitch.tv) sederhana.

Kita akan membangun klien dari index.js dari awal, sementara klien untuk zero.js akan dimodifikasi dari contoh permainan sederhana yang sudah dipersiapkan sebelumnya. Silahkan download juga kode untuk permainan serderhana tersebut, dan coba pelajari cara kerjanya.

Menjalankan server WebSocket dari kedua kode tersebut juga sangat mudah, cukup eksekusi kode dengan NodeJS:

1
2
$ node index.js
$ node zero.js

Setelah memilki semua komponen dasar yang diperlukan, kita akan mulai mempelajari WebSocket dengan menelaah objek WebSocket terlebih dahulu.

Membuat Objek WebSocket

Pembuatan objek WebSocket (selanjutnya dirujuk sebagai ws saja) sangat mudah. Kita dapat langsung memanggil constructor dari objek tanpa perlu melakukan pengecekan tambahan. Berikut adalah contoh pembuatan objek WebSocket baru:

1
var ws = new WebSocket("ws://www.example.com/socketserver");

Dan kita telah membuat sebuah objek WebSocket, sekaligus mencoba melakukan koneksi ke alamat yang diberikan pada constructor. Constructor dari ws juga memiliki parameter kedua yang bersifat opsional. Parameter kedua ini dapat berupa sebuah string ataupun array dari string, yang berisi nama dari subprotokol WebSocket yang akan kita gunakan. Subprotokol merupakan “pesan” tambahan yang dapat kita kirimkan ke server agar server mendapatkan informasi tambahan yang dibutuhkan untuk memberikan respon. Subprotokol ini dibuat oleh pengembang sendiri, dan baik klien maupun server harus dapat mengerti subprotokol yang dikirimkan. Kegunaan utama dari subprotokol adalah agar baik klien maupun server dapat yakin bahwa lawan bicaranya benar-benar mengerti pesan yang dikirimkan maupun diterima. Kita tidak ingin server Dota2 versi 1 berkomunikasi dengan klien Dota2 versi 2 misalnya.

Penambahan subprotokol pada constructor WebSocket tidak rumit sama sekali:

1
2
var ws1 = new WebSocket("ws://www.example.com/socketserver", "dota2v1");
var ws2 = new WebSocket("ws://www.example.com/socketserver", ["dota2v1", "dota2v2"]);

Ketika kita mengirimkan array sebagai parameter kedua, berarti kita memberitahukan ke server bahwa klien yang dibangun dapat mengerti semua protokol yang ada di dalam array tersebut. Begitupun, pada akhirnya server lah yang menentukan protokol mana yang akan digunakan. Klien kemudian dapat mengelola data atau perintah sesuai dengan protokol yang digunakan server.

Menanggapi Server WebSocket

Setelah membuka koneksi, tentunya kita ingin berinteraksi dengan server. Pertama-tama, mari kita lihat terlebih dahulu bagaimana cara menangani perintah maupun data yang diberikan oleh server kepada kita.

Terdapat empat method utama yang dapat kita gunakan untuk menangani data dan perintah yang dikirimkan server:

  1. ws.onerror, method yang dijalankan ketika terjadi kesalahan pada koneksi dengan server. Bersifat opsional.
  2. ws.onclose, method yang dijalankan ketika koneksi dengan server telah ditutup. Bersifat opsional. Memiliki satu parameter, CloseEvent yang menyimpan detil pesan kesalahan yang terjadi.
  3. ws.onopen, method yang dijalankan pertama kali ketika telah tersambung dengan server. Bersifat opsional.
  4. ws.onmessage, method yang dijalankan ketika menerima pesan dari server. Memiliki satu parameter yang berisi MessageEvent, sebuah objek event yang juga menyimpan data berupa pesan dari server melalui properti MessageEvent.data.

Keempat method yang ada di atas dapat digunakan semuanya ataupun hanya ws.onmessage saja. Karena model pemrograman yang bersifat *event based*, kita cukup hanya menspesifikasikan fungsi yang dijalankan pada setiap event di atas saja. Browser akan secara otomatis mengeksekusi kode ketika event terjadi. Berikut adalah contoh penggunaan keempat fungsi di atas:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
var ws = new WebSocket("ws://www.example.com/socketserver");

ws.onopen = function() {
    console.log("Koneksi berhasil!");
};

ws.onerror = function () {
    console.log("Koneksi gagal.");
};

ws.onclose = function (event) {
    console.log("Koneksi telah ditutup. Pesan penutupan: " + event.code);
};

ws.onmessage = function (message) {
    var data = JSON.parse(message.data);

    // lakukan sesuatu dengan data
};

Perhatikan bagaimana kita menggunakan JSON.parse untuk melakukan pembacaan data pada ws.onmessage. Meskipun kita dapat menggunakan format lain seperti XML atau bahkan Blob untuk data yang diberikan server, JSON merupakan format yang paling umum. Intinya adalah kita dapat menggunakan format apapun untuk bertukar data, selama klien dan server mengerti format tersebut.

Berbicara dengan Server

Mengirimkan data atau perintah ke server WebSocket dapat dilakukan dengan menggunakan method ws.send. Penggunaannya sangat gamblang:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
ws.send("Data Server"); // mengirimkan string

// atau bahkan
var obj = {
    message: "Sebuah Pesan Rahasia",
    key: "F5-A1-00-32-E4",
    command: "Run"
};

ws.send(JSON.stringify(obj));

ws.send menerima hanya satu parameter, yang dapat berisi DOMString, ArrayBuffer, maupun Blob. Pada kode di atas kita hanya menggunakan string (DOMString) saja, bahkan untuk objek yang akan dikirimkan ke server.

Studi kasus

Sekilas penggunaan WebSocket terlihat cukup mudah dan sederhana. Untuk lebih mendalami pengertian akan WebSocket, kita akan langsung mencoba membangun aplikasi klien WebSocket. Ingat, terlebih dahulu kita perlu server khusus dalam ujicoba ini. Silahkan lihat bagian Persiapan Eksperimen WebSocket untuk detail aplikasi server yang dibutuhkan dalam eksperimen ini.

Kasus 1: Aplikasi Chatting

Aplikasi yang paling pertama akan kita kembangkan adalah aplikasi chatting sederhana. Agar dapat berfokus pada pengiriman dan penerimaan pesan saja, kita akan menggunakan kode HTML yang sangat sederhana, sebagai berikut:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<!DOCTYPE html>
    <html lang="en">
    <head>
            <meta charset="UTF-8">
            <title>Websocket test</title>
    </head>
    <body>
            <ul id="chat"></ul>
            <input type="text" id="chatinput">

            type="text/javascript" src="chat.js">
    </body>
    </html>

Selanjutnya, kita akan mengisikan chat.js dengan kode koneksi ke server WebSocket, sesuai dengan yang kita pelajari sejauh ini:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
var chat      = document.querySelector("#chat"),
        chatinput = document.querySelector("#chatinput"),
        websocket = new WebSocket("ws://127.0.0.1:8080"), // #1
        addChat   = function (data) {                     // #2
                    var newChat = document.createElement("li"),
                        newText = document.createTextNode(data);

                    newChat.appendChild(newText);
                    chat.appendChild(newChat);
        };

    // #3
    websocket.onmessage = function (event) {
            addChat(event.data);
    }

// #4
    chatinput.addEventListener("keydown", function (evt) {
            if (evt.keyCode === 13) {
                    addChat(chatinput.value);
                    websocket.send(chatinput.value); // #5
                    chatinput.value = "";

                    return false;
            }
    });

Penjelasan kode (sesuai dengan nomor yang diberikan pada komentar):

  1. Pembuatan objek WebSocket untuk membuka koneksi dengan server. Pastikan IP dan port yang digunakan benar pada bagian ini.
  2. Fungsi addChat merupakan fungsi yang akan kita gunakan untuk menambahkan chat baru ke elemen #chatinput.
  3. Setelah membuat semua variabel dan fungsi yang dibutuhkan, kita kemudian mengikatkan WebSocket.onmessage kepada satu fungsi anonim. Fungsi ini tugasnya sangat sederhana: menambahkan chat baru dengan data yang didapatkan dari server. Hal ini berarti chat baru yang ditambahkan melalui WebSocket.onmessage selalu adalah chat yang dikirimkan oleh pengguna lain.
  4. Pada langkah ini kita menambahakn pemantau event keydown pada #chat, yang akan mengirimkan data ke server ketika pengguna menekan tombol Enter (key code 13).
  5. Mengirimkan data ke server sangat sederhana, cukup dengan satu baris perintah ini saja.

Seperti yang dapat kita lihat, implementasi WebSocket, baik dari sisi pengiriman data ke server maupun pengolahan data yang diterima dari server cukup mudah. Yang menjadi tantangan dalam penggunaan WebSocket biasanya adalah kapan pengiriman data dilakukan, dan apa yang harus dilakukan terhadap data yang dikirimkan oleh server.

Berikut adalah tampilan akhir dari aplikasi yang kita kembangkan:

_images/ChatAppSample.gif

Perbedaan S1, S2 dan S3

Mahasiswa saya pernah bertanya, apa sebenarnya perbedaan antara S1 dan S2. Jika ditambah dengan perbedaan S2 dan S3, maka pertanyaan lengkapnya adalah seperti judul di atas: Apa perbedaan S1, S2, dan S3? Pertanyaan seperti ini wajar muncul sebab setelah melihat Tugas Akhir (skripsi) mahasiswa S1, tesis mahasiswa S2, dan disertasi mahasiswa S3 kok tidak terlihat perbedaan yang signifikan? Tesis S2 dilihat oleh mahasiswa saya sama seperti pekerjaan TA mahasiswa S1, bahkan mungkin lebih rendah kualitasnya daripada TA mahasiswa S1. Mungkin juga disertasi S3 kualitasnya sama seperti tesis S2, atau bahkan lebih rendah lagi.

Di ITB saya sering menguji tesis S1 dan S2, kalau menguji mahasiswa S3 baru sebatas ujian kualifikasi yaitu menguji proposal mahasiswa S3 tahun pertama. Pernah ketika menguji tesis mahasiswa S2 saya merasa heran, tesis semacam ini kok bisa maju sidang, kualitasnya jauh di bawah TA mahasiswa S1 yang saya bimbing. Ah, mungkin dosen pembimbingnya asal menerima topik saja dan tidak memperhatikan substansi tesis, begitu dugaan saya. Sebaliknya ketika menguji TA mahasiswa S1 saya pernah takjub karena kualitasnya melampaui tesis S2 atau bahkan sudah hampir menyamai disertasi S3.

Kalau begitu apa sebenarnya perbedaan program S1, S2, dan S3? Kalau hanya melihat dari kualitas TA dan tesis saja tentu belum mendapat gambaran bedanya apa, harus dilihat juga kurikulumnya. Kurikulum S1 sifatnya umum (general), karena mahasiswa S1 perlu mempelajari semua subjek dalam bidang ilmunya. Sedangkan kurikulum S2 lebih spesifik mendalami suatu sub-bidang di dalam bidang ilmu itu. Meminjam istilah Pak Armein, S1 itu cenderung generalis sedangkan S2 itu cenderung spesialis.

Ambil contoh pada Program Studi S1 Informatika ITB, semua subjek di dalam bidang informatika/computer science dipelajari oleh mahasiswa, yaitu algoritma dan pemrograman, struktur data, matematika diskrit, basisdata, rekayasa perangkat lunak, sistem informasi, jaringan komputer, inteligensia buatan, komputer grafika, sistem operasi, otomata dan teori bahasa. Mahasiswa yang ingin mendalami suatu subjek tertentu di Informatika dapat mengambil mata kuliah pilihan seperti kriptografi dan keamanan komputer, pemrosesan bahasa alami, teknik kompilasi, temu-balik informasi, sistem pakar, dan lain-lain.

Program S2 adalah kelanjutan program S1, oleh karena itu mata kuliah di S2 lebihadvance dan yang dipelajari adalah sub-bidang yang lebih spesifik. Pada program S2 Informatika ITB terdapat beberapa opsi atau pilihan, yaitu opsi computer science, opsi Sistem Informasi, opsi Rekayas Perangkat Lunak, opsi Teknologi Informasi, opsi Game, opsi Keamanan Informasi, dan lain-lain. Masing-masing opsi mempunyai kurikulum yang berbeda namun terdapat mata kuliah yang sama (common) untuk semua opsi tadi. Dengan tawaran berbagai opsi tadi mahasiswa dapat menekuni sub-bidang yang akan menjadi spesialisasinya nanti.

Program S3 jelas berbeda dengan S1 dan S2. Di S3 tidak ada kuliah kelas (kecuali kuliah filsafat ilmu), sebab kuliah S3 fokusnya adalah riset mandiri, mahasiswa melakukan riset selama bertahun-tahun untuk mengembangkan pengetahuan baru. Seringkali riset itu berangkat dari suatu hipotesis, dan melalui rangkaian metodologi penelitian ilmiah yang terstruktur hipotesis itu dibuktikan kebenarannya. Kebenaran hipotesis itu menjadi sebuah metode baru sebagai kontribusi bagi ilmu. pengetahuan.

Dalam bahasa saya yang sederhana, perbedaan antara S1, S2, dan S3 dapat dinyatakan dalam sebuah kalimat sebagai berikut: di S1 mahasiswa mempelajari (satu atau lebih) metode, di S2 mahasiswa mengembangkan metode, sedangkan di S3 mahasiswa menghasikan metode (baru). Oleh karena itu, Tugas Akhir mahasiswa S1 adalah mengaplikasikan suatu metode untuk menyelesaikan sebuah persoalan, Tesis S2 mengembangkan metode yang spesifik agar dapat diaplikasikan untuk persoalan yang lebih luas, sedangkan disertasi S3 menghasilkan metode baru yang lebih baik daripada metode yang sudah ada sebelumnya.

Deploy Grails 3.0+ Application

Grails 2.0+ and  grails 3.0+ have a different way to deploy your project.

Under grails 2.0+, you may setup or run your WAR in Apache Tomcat 7 or Apache Tomcat 8, but when you are using grails 3.0 or above, you just need to do this step :

You can then run either the WAR file or the JAR using your Java installation:

java -Dgrails.env=prod -jar YOURJAR.jar

but if you want use a war file :

java -Dgrails.env=prod -jar YOURWAR.war

after you run

grails prod war

you will get 2 file :

  • war file
  • jar file

both of this file will automatically create in folder yourGrailsApp/build/libs/<your-WAR/JAR file>

hopes it will help you.