Web socket คือ technology ที่ใช้สื่อสารระหว่าง web browser และ server เป็นการสื่อสารแบบสองทาง ข้อดีของ web socket คือ program ในฝั่ง web browser ไม่ต้องเขียนในลักษณะของการเรียก function ในแบบ interval วนไปเรื่อยๆ แต่ใช้วิธีการ Event listening สรุปง่ายๆ คือ ถ้าเราเขียน code ว่า เราสนใจใน event นี้ เมื่อ event นั้นๆ เกิดขึ้นมา code ที่เราผูกกับ event. นั้นก็จะนำ event data ไป process
Continue reading "Web Socket คืออะไร"เทคนิคที่ช่วยให้เขียน program ให้ดีขึ้นอย่างรวดเร็ว
ข้อแรกเราต้องเข้าใจปัญหาของระบบที่เราต้องการจะแก้ โดยเราจะต้องค้นหาว่าอะไรคือปัญหาหลักๆ เมื่อเราค้นพบแล้ว เราก็ควรจะออกแบบโครงสร้างของระบบ และลองร่าง code ในระดับที่เพียงพอจะทดสอบแนวคิดของเราได้ เราอาจจะเขียนใส่กระดาษก็ได้
Continue reading "เทคนิคที่ช่วยให้เขียน program ให้ดีขึ้นอย่างรวดเร็ว"มาสร้าง Blockchain ของเราเองกันเถอะ ( 2 ) , Mining

Mining ( ขุด ) คือกระบวนการสร้าง block. ใหม่ แล้วเพิ่มเข้าไปใน blockchain
มีขั้นตอนการทำงานดังต่อไปนี้
const nonce = bitcoin.proofOfWork(previousBlockHash, currentBlockData);
const blockHash = bitcoin.hashBlock(previousBlockHash, currentBlockData, nonce);
const newBlock = bitcoin.createNewBlock(nonce, previousBlockHash, blockHash);
เรามาดู code ของ function เหล่านี้กันดีกว่า
Blockchain.prototype.createNewBlock = function(nonce, previousBlockHash, hash) {
const newBlock = {
index: this.chain.length + 1,
timestamp: Date.now(),
transactions: this.pendingTransactions,
nonce: nonce,
hash: hash,
previousBlockHash: previousBlockHash
};
this.pendingTransactions = [];
this.chain.push(newBlock);
return newBlock;
};
Blockchain.prototype.hashBlock = function(previousBlockHash, currentBlockData, nonce) {
const dataAsString = previousBlockHash + nonce.toString() + JSON.stringify(currentBlockData);
const hash = sha256(dataAsString);
return hash;
};
Blockchain.prototype.proofOfWork = function(previousBlockHash, currentBlockData) {
let nonce = 0;
let hash = this.hashBlock(previousBlockHash, currentBlockData, nonce);
while (hash.substring(0, 4) !== '0000') {
nonce++;
hash = this.hashBlock(previousBlockHash, currentBlockData, nonce);
}
return nonce;
};
เราควรจะเริ่มดูที่ hashBlock function ซึ่งถูกเรียกใช้บ่อย function นี้ไม่มีอะไรซับซ้อนมาก แค่ทำการ hash ค่าของ previousBlockHash + nonce + currentBlockData ด้วย sha256
proofOfWork function คือการหา hash ที่ขึ้นต้นด้วย 0000 ให้เจอ เราจะเห็นว่า nonce คือตัวแปรที่เพิ่มค่าไปเรื่อยๆ ใน while loop เมื่อเราเจอ nonce ที่ถูกต้องแล้ว function ก็จะ return
const nonce = bitcoin.proofOfWork(previousBlockHash, currentBlockData);
const blockHash = bitcoin.hashBlock(previousBlockHash, currentBlockData, nonce);
const newBlock = bitcoin.createNewBlock(nonce, previousBlockHash, blockHash);
กลับมาดู code ที่พูดในตอนแรกจะเห็นได้ว่า createNewBlock เพียงแค่รับ parameter ที่ได้จาก output ของ proofOfWork และ hashBlock
มาสร้าง Blockchain ของเราเองกันเถอะ ( 1 )
Blockchain คือ การบันทึกข้อมูล ที่ยากในการแก้ไข ( แทบจะเป็นไปไม่ได้ ) ที่จะเปลี่ยนแปลงข้อมูล, hack ระบบ, หรือโกงได้

องค์ประกอบของ blockchain จะประกอบด้วย Block ซึ่งเป็นที่เก็บข้อมูลที่เราต้องการบันทึก เมื่อมี block ใหม่เข้ามา ก็จะทำการไปต่อท้ายเหมือนเป็นสายโซ่ ( chain ) เราเลยเรียกว่า Blockchain แต่การที่จะเพิ่ม block เข้าไปใหม่ใน blockchain network จะมีขั้นตอนที่เรียกว่า proof of work ( การสร้าง hash key ที่ตรงตามเงื่อนไขที่เรากำหนดไว้ เราอาจจะรู้จักขั้นตอนนี้ว่า "ขุด" mine )
Continue reading "มาสร้าง Blockchain ของเราเองกันเถอะ ( 1 )"decentralized network system คืออะไร ?
เราอาจจะเคยได้ยิน Bitcoin หรือพวก cryptocurrency ต่างๆ ที่ทำงานอยู่บน Blockchain ที่ทำงานบน decentralize network ก่อนที่เราจะทำความเข้าใจในรายละเอียดของ Blockchain และ decentralize network เราลองมาดู network ในรูปแบบต่างๆ
Continue reading "decentralized network system คืออะไร ?"Blockchain Technology จะช่วยแก้ปัญหาของชาวสวนและผู้บริโภคได้อย่างไร ?

ต้องบอกไว้ก่อนว่าผมไม่ใช่ชาวสวนมืออาชีพนะครับ แต่ว่าผมอยู่ที่จังหวัดจันทบุรี ผมพอได้ฟังปัญหาจากคนที่เป็นเจ้าของสวนหลายๆ คนที่ผมรู้จัก และตัวผมเองก็เป็นคนที่ชอบทานผลไม้มาก ปัญหาที่ผมได้ยินมามีดังต่อไปนี้
Continue reading "Blockchain Technology จะช่วยแก้ปัญหาของชาวสวนและผู้บริโภคได้อย่างไร ?"เครื่องวัดอัตราไหลของน้ำด้วย Arduino และ YF-S201 Hall Effect Water Flow Meter Sensor
Hall effect คือ ค่าความต่างศักย์ ( Voltage difference ) ( Hall Voltage ) ระหว่างสองฝั่งของตัวนำทางไฟฟ้า ( Electrical Conductor ) ที่กระแสไฟฟ้าวิ่งผ่าน โดยในขณะที่กระแสไฟฟ้าวิ่งผ่าน จะมีสนามแม่เหล็กตั้งฉากกับกระแสไฟฟ้า โดยปรากฎการณ์นี้ค้นพบโดย Edwin Hall ในปี คศ. 1879
Continue reading "เครื่องวัดอัตราไหลของน้ำด้วย Arduino และ YF-S201 Hall Effect Water Flow Meter Sensor"เราจะเข้าใจ code ของ project ที่มีความซับซ้อนได้อย่างไร ?
ในสมัยที่ผมเขียน code แรกๆ ผมเข้าใจว่าผมสามารถเข้าใจการทำงานของ program ทุกอย่างผ่านการอ่าน code เพียงอย่างเดียว ผมมีหนังสือหลายเล่มที่อยากแนะนำให้ programmer ลองอ่านดูนะครับ
Continue reading "เราจะเข้าใจ code ของ project ที่มีความซับซ้อนได้อย่างไร ?"Photogrammetry และ Metaverse
วันนี้ผมลองศึกษาเกี่ยวกับ Metaverse ก็ได้นิยามว่า คือการสร้างโลกเสมือน ( virtual world ) 3D บน internet ขึ้นมา เพื่อให้ผู้ใช้งานระบบที่อยู่ในรูปแบบ Metaverse ได้เข้าไปมีตัวตนสมมติ ( avatar )ในโลกเสมือนนั้น
Continue reading "Photogrammetry และ Metaverse"ทำแอปประชุม online ด้วย Zoom SDK และ Ionic mobile framework

เมื่อสองสามวันก่อน มีลูกค้ารายหนึ่ง มาปรึกษาว่า เค้าต้องการจะใช้ Wowza Video streaming server มาทำเป็น Online conference แต่เนื่องจากเค้าทำอย่างไรก็ยัง delay อยู่ประมาณ 5 วินาที แต่ความต้องการของลูกค้าเค้าอยากให้การตอบสนองเหมือน Zoom เลย
Continue reading "ทำแอปประชุม online ด้วย Zoom SDK และ Ionic mobile framework"