Selasa, 30 September 2014

#108: Asynchronous Programming

The "content is empty" is very confusing untuk programmer nodejs baru seperti ambe.
Akhir-akhir ini ambe belajar satu platform scripting language baru iaitu Node.js. Ia boleh dikatakan sebagai server-side JavaScript interpreter (biasanya JavaScript digunakan didalam web browser dan diembed bersama kod HTML. Manakala Node.js boleh beroperasi di luar browser). Node.js adalah berasaskan JavaScript engine dari web browser Google Chrome bernama V8.

Menjadi nature Node.js, Node.js adalah asynchronous. Bermakna Node.js adalah asynchronous secara default, walaubagaimanapun ia boleh diprogramkan untuk synchronous. Asynchronous boleh dibayangkan dengan perlumbaan F1 yang dilepaskan secara berturutan, tetapi kereta yang mana paling laju akan sampai dahulu, meninggalkan yang lambat. Contoh:
1. Baca fail dan simpan dalam variable A.
2. Print kandungan A.
3. Print "Hello World".
Diatas adalah 3 baris arahan ringkas. Untuk pengaturcaraan synchronous seperti kebanyakan programming language lain, output adalah kandungan A diikuti dengan perkataan "Hello World". Asynchronous pula sebaliknya. Disebabkan proses untuk membaca fail mengambil masa (walaupun hanya beberapa milisaat), Node.js tidak akan menunggu di baris 1. Ia akan teruskan execution dan anda mungkin akan mendapat output "Hello World" barulah diikuti dengan content A, jelas sekali melangkau sequence yang sepatutnya. Ini memberikan advantage kepantasan tanpa interruption yang mungkin disebabkan delay dalam proses I/O. Walaubagaimanapun, konsep ini sangat confusing bagi programmer baru yang sudah terbiasa dengan synchronous programming language seperti ambe.

Dibawah ini ambe cuba memprogramkan satu API untuk perkhidmatan email sementara Mailinator tetapi ambe menghadapi masaalah kerana output dari script ini adalah tidak seperti yang ambe maksudkan (lihat gambar diatas). Variable "a" disini sepatutnya mengandungi teks JSON dari API Mailinator. Sehingga sekarang ambe masih belum menjumpai jalan penyelesaiannya. Dari pengamatan ambe, ini terjadi mungkin disebabkan asynchronous nature pada Node.js.
var a= getMailinatorInbox("hunabku","xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
console.log("content is:" , a);

function getMailinatorInbox(who,token){

var content="";
var options = {/*
  host: 'www.google.com',
  port: 80,
  path: '/upload',
  method: 'POST'*/
    host: "api.mailinator.com",
    path: "/api/inbox?token="+token+"&to="+who,
    method:"GET"
};

var req = https.request(options, function(res) {
  res.setEncoding('utf8');
  var chunks="";
  res.on('data', function (chunk) {
        chunks+=chunk;
  });
  res.on('end',function(){
      content=chunks;
});


});
req.end();
return content;
}

Isnin, 15 September 2014

#107: A "Game" to sharpen your mind.

Test your IQ here!
Stocks, Futures, Forex trading dengan analisis teknikal pada chart bukanlah sesuatu yang mudah. Ia juga melibatkan banyak hal lain dari money management hinggalah stress management bila mengalami loss. Tapi, kerja-kerja seperti ini bagi ambe adalah ibarat satu "permainan" bagi orang dewasa untuk mengasah minda. Sedang kanak-kanak begitu banyak game yang boleh mengasah minda, orang dewasa juga patut "bermain" game ini. Bagi ambe ia boleh membantu mengajar disiplin diri, strategical thinking, meningkatkan ingatan, sabar dan pengurusan.

Untuk mulakan permainan ini dengan cepat tanpa apa-apa ikatan dengan broker, ambe cadangkan gunakan cTrader dengan web interface. Ini kerana pendaftaran untuk akaun demo biasa agak leceh yang memerlukan anda untuk memasukkan maklumat peribadi dan mungkin broker akan menelefon anda (ini sangat annoying bagi ambe), kemudian perlu download dan install aplikasi seperti MetaTrader kedalam komputer). Dengan cTrader web interface, anda boleh terus melakukan technical analysis terus melalui browser tanpa perlu install apa-apa didalam komputer. Begitu mudah dan cepat.

Ada beberapa broker yang menyediakan cTrader sebagai platform dan pendaftaran untuk akaun demo boleh dibuat dengan cepat. Antaranya broker-broker yang menyediakan platform cTrader adalah FxPro dan Trader'sWay. Langkah pertama adalah, membuka akaun demo. Buka web browser anda dan taip link "http://ct.fxpro.co.uk" untuk FxPro atau "http://ct.tradersway.com/" untuk Trader'sWay (atau taip link apa sahaja broker pilihan anda. biasanya URL untuk platform cTrader web interface bermula dengan "http://ct.<nama broker anda>.com"). Tekan enter dan kalau tak ada masaalah, 
Fill in the blanks!
Pilih "Demo Account" dan lengkapkan bahagian Name, Email. Anda tak perlu lengkapkan dengan maklumat betul pun. Hanya letak apa-apa nama dan email. Jika anda ingin mendapatkan email dari broker, letakkan email sebenar anda, atau jika anda tak mahu, letakkan "temporary email" seperti email mailinator.com (<nama anda>@mailinator.com). Kemudian lengkapkan bahagian Deposit dengan nilai deposit yang anda mahu, pilih matawang yang anda ingin gunakan, kemudian pilih Leverage yang anda mahu. Akhir sekali, klik "Create Account".

Sign in, dan anda berjaya register untuk akaun demo
Ada beberapa puluh indicator sedia untuk digunakan
cTrader dilengkapi dengan banyak fungsi-fungsi yang memudahkan kerja-kerja anda melakukan analisa teknikal keatas chart. Terdapat beberapa puluh indicator disediakan, tools untuk melukis diatas chart, box, trend lines, fibonacci, channel dan lain-lain boleh diakses melalui menu atau toolbar disebelah kanan chart.

This is where you choose to Buy or Sell. Choose wisely!
Sekarang, anda bolehlah memulakan pengkajian teknikal anda atas chart matawang asing ini. Mulakan trade, buy, sell, tetapkan stop loss, take profit dan lain-lain. Data chart yang digunakan adalah berdasarkan chart sebenar kedudukan tukaran wang asing yang sebenar. Cubalah trade sehingga anda boleh menghasilkan profit serta belajar untuk money management. Ingat, ini adalah akaun demo, ia tidak melibatkan wang sebenar pun, jadi sebarang kerugian, tidaklah merugikan wang dari akaun bank anda di alam nyata.