Archive | ภาษา RSS feed for this section

Ruby meetup

วันนี้ @visibletrap ชวนไป Ruby meetup ตอนแรกคิดว่าจะมีแต่ Technical แต่ฟังจนจบก็ผิดไปจากที่คิดพอสมควร เพราะส่วนใหญ่เป็นเรื่องไอเดีย หรือความสนใจของแต่ละคนมากกว่า ไม่ Technical มากนัก (ซึ่งก็ดีแล้ว ฟังง่ายดี แหะๆ) โดยรวมที่คุยกันในนั้นก็มีสามเรื่องคือ เรื่องแรกคือ Money, Sex and Evolution: Simulation and Data analysis with Ruby and R ชื่อเรื่องครึ่งแรกชวนให้ติดตามมาก ฮะๆ แต่จริงๆ คือการเอา Ruby และ R มาทำ Simulation ตามหัวข้อต่างๆ ที่สนใจซึ่งในที่นี้คือ Money, Sex และ Evolution ซึ่งก็น่าสนใจแหละ ถ้าเป็นสายที่ต้องเอาข้อมูลมากมายมาวิเคราะห์นะ คนที่บรรยายเขียนหนังสืออยู่ด้วยเกี่ยวกับการประมวลผลข้อมูล แต่จำชื่อเรื่องไม่ได้แฮะ ไว้ให้ @visibletrap มาตอบให้ดีกว่า (ตอนท้ายมีถามด้วยว่า มีคนใช้ Ruby [...]

Read full story Comments { 0 }

Two approaches – Mock/Stub

เรื่องนี้พึ่งย่อยเสร็จแต่เป็นสิ่งที่คุยกับ @visibletrap ตั้งแต่วันแรกที่มาถึงสิงคโปร์ (คุยทีเดียวหลายเรื่อง ล่อไปสามชั่วโมงได้ ฮ่าๆ) เรื่องก็มีอยู่ว่าเวลาทำ TDD หลายค่ายมักบอกว่าให้ทำ Mock ซึ่งก็เคยพยายามทำหลายครั้งแต่ก็ไม่ประสบความสำเร็จเสียทีเพราะรู้สึกมันทำให้เขียนอะไรซ้ำหลายอย่าง วันนั้น @visibletrap ก็เลยอธิบายและคุยจนเคลียร์ว่าเค้าใช้ Mock เมื่อไหร่กัน วิธีการทำระบบอะไรซักอย่างปกติก็มีอยู่สองทางในการสร้างขึ้นมา คือ Top-Down / Bottom-Up วิธีที่คุ้นเคยสุดเพราะอะไรไม่รู้อาจจะเพราะที่เรียนมาในมหาวิทยาลัยต่างๆ ในวิชา SE ที่บอกว่าให้หาคำนาม บลาๆๆ ก่อนคือ Bottom-Up เริ่มจากหาว่าในระบบจะมี Model อะไรบ้าง แล้วหา Behavior เพื่อสร้างคลาสขึ้นมาทั้งหมดให้ครบทั้ง Flow โดยเริ่มจากฐานที่เป็นคำนาม จนถึงชั้นบนสุดที่เป็นส่วนติดต่อกับ User วิธีที่จะสร้าง Test กับระบบแบบนี้ง่ายสุดก็คือสร้าง Stub ขึ้นมาให้ทำหน้าที่แทน Third-party คอยให้ข้อมูลต่างๆ เพื่อให้ระบบทำงานได้ถูกต้องตลอด ปัจจุบันก็ยังคงชินกับการสร้างระบบด้วยวิธีนี้อยู่ เวลาทำอะไรก็เลยมักสร้าง Stub ขึ้นมาก่อน แล้วค่อยๆ ไล่จาก Model ขึ้นไปจนถึง User [...]

Read full story Comments { 1 }

Crypto-JS & Node.js Crypto

นั่งงมอยู่หลายวันเรื่อง AES encryption ใน Javascript เนื่องจากหาข้อมูลที่เขียนอธิบายตรงๆ ไม่ได้เลย ทำได้แล้วก็จดเก็บไว้หน่อยดีกว่า เริ่มจากฝั่ง Browser ที่ต้องพึ่ง Crypto-JS เป็นชุด Library สำหรับใช้ในการเข้ารหัสหรือทำ Hash ต่างๆ สิ่งที่เอามาใช้วันนี้คือ AES ที่เป็นการเข้ารหัสที่ใช้กุญแจเหมือนกันทั้งสองฝั่ง วิธีใช้ก็ง่ายๆ มีอยู่ในเว็บคนทำอยู่แล้ว แต่ถ้าทำแค่นี้แล้วใช้กับ Node.js ได้ก็คงไม่ต้องมาจดแล้ว ปัญหามันเกิดตรงที่ถ้าเราใส่ “Secret Passphase” ไปตรงๆ สิ่งที่เกิดขึ้นคือมันจะ random IV (Initialization vector) ให้อัตโนมัติแล้วเอาไปใช้คู่กับ passphase ที่ใส่เข้ามา ทำให้ passphase ไม่สามารถเอาไปใช้กับ Node.js crypto ได้ ก็เลยต้องระบุเป็น Key และ IV ไป แต่ Key ที่ว่ามันก็ไม่ได้มาง่ายๆ อีกเนื่องจากความยาวต้องเท่ากับ 16, 24, 32 [...]

Read full story Comments { 0 }

Scrumboard

สองสามเดือนก่อน (ประมาณสิงหา – กันยา) เริ่มเข้ามาอยู่กับทีมเว็บใหม่ๆ ก็อยากทำของเล่นซักชิ้นเพื่อลองอะไรบางอย่าง ประกอบกับเบื่อ Trac ที่ทำอะไรหลายอย่างไม่ได้ดั่งใจไม่ถูกใจ UI ด้วยหาตัวเลือกอื่นก็ไม่ได้ที่ถูกใจเสียทีก็เลยเขียนเองเลย ต้นแบบที่อยากได้คล้ายๆก็ประมาณ Scrumy ก็เป็นระบบที่เสียเงิน อยากใช้ฟรี feature บางอย่างก็หายไป อีกอย่างคงเอา private project ภายในไปแปะไว้ภายนอกให้คนอื่นเห็นก็คงไม่ดีเท่าไหร่ ฉไนเลยเขียนเองซะ ได้อย่างที่ต้องการแน่นอน วันนี้มันก็มาถึงจุดที่น่าจะเอามาอวดได้แล้ว ชื่อที่เรียกเล่นๆ ตอนนี้เรียกว่า Scrumboard จากจุดแรกที่อยากเอามาใช้เพราะลอง Scrum process หน้าตาก็ประมาณด้านล่างนี้ ความอยากส่วนตัวตอนเริ่มทำก็ประมาณ อยากลอง Web storage อยากลอง Application cache อยากรู้ว่า Offline mode ของ Browser ทำงานยังไง Drag and drop ที่มากับ Javascript engine ของ browser ต่างจาก Drag and [...]

Read full story Comments { 2 }

Less behavior, more case

คำเตือน blog นี้เขียนเพื่อบ่นการทำงานโดยเฉพาะ! ช่วงนี้ประชุมเยอะ เลยคิดอะไรได้นิดหน่อยเนื่องจากพยายามจะจำกัดให้ Project ไม่โตเกินไปแต่รู้สึกจะห้ามไม่ได้เท่าไหร่ เคย Tweet ลอยๆว่าจริงๆ ควรทำระบบในรูปแบบกลับด้านจากเผื่อเหลือ ให้เป็นระบบที่ยังขาดบางอย่างอยู่ซะ แต่ก็ไม่ได้คิดต่อว่าเพราะอะไรจนช่วงนี้แหละที่ประชุมรวบรวมว่าระบบต้องทำอะไรบ้างถึงเขียนยาวๆ ได้ เนื่องจากระบบที่ทำอยู่ เป็นระบบที่ใหญ่มากประกอบด้วยการทำงานจากชั้นย่อยๆ หลายๆส่วน มีพฤติกรรมล้านแปดจาก Marketing เมื่อจะเริ่มทำเจ้าของระบบก็เอา Requirement ทั้งหมดมาแปลงเป็น Design ขนาดใหญ่เพื่อให้ระบบทำตาม Requirement/Bahavior ได้ทั้งหมดตั้งแต่เริ่มต้น!!! ซึ่ง Requirement ก็เปลี่ยนแปลงไปมาเพิ่มนู่นนี่จนปัจจุบันก็ยังไม่ได้ Finale design ที่สมบูรณ์พร้อมที่จะให้ Programmer ตาดำๆ ไปเขียนหรือแบ่งส่วนให้ชัดเจนเสียที เพราะรายละเอียดจุกจิกทั้งหลายมักจะโผล่มาจากคนนู้นทีคนนี้ทีจนมันไม่เสร็จ ก็เลยคิดได้ว่า จริงๆแล้วถึงแม้ระบบมันจะใหญ่ขนาดไหนก็ตาม มันควรจะตัด Behavior พื้นฐานแล้วค่อยๆทำก่อน ไม่จำเป็นต้องออกแบบหรือคิดถึง Behavior ทั้งหมด เมื่อได้ชั้นต่างๆ ที่มีหน้าที่ชัดเจน มี test(case) ครอบคลุมแล้วเราถึงค่อยทำ Behavior เพิ่ม การออกแบบก็ไม่ใช่ออกแบบทั้งหมดตั้งแต่ต้น แต่ต้องทำเพื่อให้มันค่อยๆ เพิ่มได้เพราะงั้นสิ่งที่ควรทำจริงๆ คือ [...]

Read full story Comments { 2 }