ข้อแนะนำพัฒนา E-Commerce Website ด้วย Shopify

ทุกวันนี้ธุรกิจต่างๆ ล้วนต้องเพิ่มช่องทางการขายจาก Offline สู่ Online  และ E-Commerce online platform ที่เป็นที่นิยมมีอยู่หลายตัวเช่น WooCommerce, Shopify, Magento แต่ในบทความนี้ผมจะเขียนถึง Shopify เพราะเพิ่งพัฒนา website โดยใช้ Shopify มาไม่นานนี้

Continue reading "ข้อแนะนำพัฒนา E-Commerce Website ด้วย Shopify"

บางทีความรู้ก็เป็นสิ่งที่จำกัดความคิดสร้างสรรค์ได้เหมือนกัน

พูดถึงประสบการณ์ส่วนตัว หลายๆครั้ง เราสามารถคิดออก แล้วทำ project ไปได้สักระยะหนึ่ง แล้วก็หยุดทำ เพราะเรามีความรู้มากเกินไป ทำให้เรารู้ว่าเราจะต้องทำอะไรต่อ  จนทำให้ท้อไปเลย แล้วก็ไม่ทำ project นั้นต่อ ผมขอเรียกความรู้สึกนี้ว่า กำดักของความรู้  การที่เราไปยึดติดกับความรู้จากภายนอกมากเท่าไหร่ ก็จะทำให้เราเพิกเฉยกับเสียงภายในใจของเรา จะเรียกกว่ากึ๋น หรือปัญญาที่เกิดจากภายในใจของเราเองมากเท่านั้น ปลายทางของเส้นทางนี้คือ การหมดไฟ และ ไร้ซึ่งจินตนาการ

Web Socket คืออะไร

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 ที่มีความซับซ้อนได้อย่างไร ?"