Jack The Giant Slayer

Jack The Giant Slayer เป็นหนังอีกเรื่องที่ผมดูระหว่างนั่งเครื่องบินขากลับจากญี่ปุ่นมาไทยครับ เรื่องนี้เป็นอีกเรื่องที่อยากดูตอนมันเข้าโรงแต่ไม่มีโอกาสไปดูซะงั้น

Jack the giant slayer poster

หนังเรื่องนี้เป็นอีกเรื่องที่ตีความนิทานใหม่ (อีกเรื่องก่อนหน้าก็ Hansel and Gretel) โดยเรื่องนี้จับแจ็คผู้ฆ่ายักษ์มาเล่าใหม่ให้เรื่องเป็นผู้ใหญ่ขึ้น + action ขึ้นครับ

หนังเล่าถึงในอดีตนักบวชใช้คาถาสร้างต้นถั่วยักษ์ขึ้นมาเพื่อปีนขึ้นไปหาพระเจ้าของเขา แต่ทว่าสิ่งที่รอพวกนักบวชอยู่ข้างบนกลับไปอณาจักรยักษ์ พวกยักษ์อาศัยต้นถั่วบุกลงมาทำรุกรานโลกเบื้องล่าง จนสุดท้ายมนุษย์ชนะเพราะว่านักบวชที่เหลือสร้างมงกุฏที่ทำให้สั่งงานยักษ์ได้ พระราชาผู้ใส่มงกุฏนั้นไล่ยักษ์กลับขึ้นไปบนอณาจักรลอยฟ้า เวลาผ่านไป 3 ร้อยปีจนประวัติศาสตร์กลายเป็นนิทาน Jack ของเราได้ถั่วมาตามนิทานเป๊ะ แต่รอบนี้ดันมีเจ้าหญิงติดขึ้นไปกับต้นถั่วได้ Jack เลยอาสาปีนต้นถั่วขึ้นไปช่วยเจ้าหญิงจากฝูงยักษ์ทั้งหลายครับ

หนังเรื่องนี้เหมือนเป็นงานพักร้อนของ Bryan Singer ครับ เพราะตัวหนังเองดูเบาๆ เมื่อเทียบกับเรื่องอื่น ไม่มีแง่มุมดราม่าซับซ้อนอะไร ดูเอามันเข้าว่าซึ่งก็สนุกดี Ewan McGregor ก็เล่นได้ฮาดีแท้ ฉากยักษ์บุกนี่ดูไปนึกถึงการ์ตูนเรื่อผ่าพิภพไททันเลยครับ :p

สรุปว่าผมชอบเรื่องนี้นะ ดูเอามันส์ได้เพลินๆ

ข้อดีของ DTAC TriNET

ถึง DTAC TriNET จะยังใช้งานไม่ได้จริง แต่มันก็พอจะมีข้อดีอยู่บ้าง

miniP1220115

ป.ล. เอาผู้บริหารมาเต้นไง พนักงานช่วยกันโปรโมทแค่ไหน แต่ถ้าของไม่ออกก็ไม่ช่วยอะไรนะ

JavaScript Web Workers

วันนี้ได้ mail จากลูกค้าเจ้านึง เขียนประมาณว่า “กูอยากใช้ Shared Web Workers (SWW) มึงช่วยทำไงก็ได้ให้ JavaScript API มึง support SWW ที หรือไม่งั้นมึงบอก design, protocol มา เดี๋ยวกูเขียน API ใหม่เอง (แต่มึงต้อง test, fix bug แล้ว support code ที่กูเขียนนะ – สัด)” ผมก็เลยต้องมานั่งหาว่าไอ้ Web Workers หรือ Shared Web Worker มันคือะไร เพราะไม่เคยได้ยินมาก่อน entry นี้จะเขียนถึง Web Workers ก่อนละกัน

Web Workers (Web Workers @Wikipedia) เป็น feature ของ HTML 5 ที่ทำให้สามารถรัน JavaScript แบบ multithread ได้ครับ

คือปกติ JavaScript มันเป็น single thread มันจะรันคำสั่งตาม queue ของมันเสมอ ไม่ว่าจะเป็นการ display, validate, ต่อ ajax, websocket หรือทำ function ต่างๆ ที่เราเขียน ทุกอย่างอยู่บน thread เดียวกันหมด ดังนั้นเวลามี function อะไรใน queue รันหนักๆ มันจะกระทบให้ทั้ง page ช้าไปหมดจนบางที browser จะขึ้น pop up มาถามว่า page กำลัง script อะไรบางอย่างทำให้มันช้าจน freeze นะ จะ kill page นี้ทิ้งไหม

เขาก็เลยคิด Web Workers ขึ้นมาเพื่อแตกงานอะไรที่หนักๆ ไปอีก thread นึงเลย จากที่ค้นๆ มาเขาจะยกตัวอย่างเป็นคำนวนค่า Pi ที่ต้องวน loop หนักๆ หรืออะไรที่ต้องคุยกับ server เยอะๆ แยกเป็น thread worker ไปแล้วให้ thread หลักรับผลการทำงานจาก thread ลูก (Worker) แบบ asynchronous ไปซะ

Concept หลักๆ ของการเขียน Web Workers คือ

ตัวแม่ (ชื่อ main.html ละกัน)

//new Worker object
var wk=new Worker("worker.js");
//ใช้ addEventListener เพื่อรับ message จาก Woker --> self.postMessage('worker got : '+data);
wk.addEventListener("message",function(oEvent){
	document.getElementById('display').textContent = oEvent.data;
	//จะ print 'worker got : Hello'
},false);

//start Worker และส่ง message ให้ Worker ด้วย postMessage
wk.postMessage('Hello'); 

worker.js

//ใช้ addEventListener เพื่อรับ message จาก Main --> wk.postMessage('Hello'); 
self.addEventListener('message',function(e){
	var data=e.data;
	//ใช้ postMessage เพื่อส่งกลับให้ Main
	self.postMessage('worker got : '+data);
},false); 

Continue reading “JavaScript Web Workers”