Archive | ภาษา RSS feed for this section

measure()

คราวที่แล้วเขียนไปแค่สี่ขั้นตอน แต่ถ้าใครลองโหลดไฟล์ที่ @iporsut แนบมาใน comment คงเห็นรายละเอียดที่มากกว่านั้นเยอะแยะเลย แต่ผมก็ได้แค่อ่านผ่านๆ นะ ยังไม่ได้ดูละเอียดเท่าไหร่ แหะๆ แต่วันนี้จะมาเขียนถึงขั้นลึกลับอีกขั้นนึงนั่นคือ measure() เพราะต้องใช้มันเข้าพอดี -_-” ปกติฟังก์ชั่นนี้จะไม่ค่อยต้องเขียนเองเท่าไหร่เพราะหน้าที่ของมันคือใช้บอกว่า component เรามีขนาดเท่าไหร่ แล้วให้ขั้นถัดไปคือ updateDisplayList เป็นคนวาด ซึ่งวิธีทำปกตินั้นก็ง่ายแสนง่ายคือเรียก component ลูกให้วัดค่าออกมาให้ แล้วก็จับมันบวกๆ ลบๆ กันแล้วส่งออกไป แต่มีปัญหากับผมอีกและ -_-” เพราะว่าถ้าหากเราตั้งขนาดของ component ลูกเป็น % แล้วหละก็มันก็มีบางอย่างที่คำนวนออกมาให้พลาดเหมือนกัน(จริงๆ ก็ไม่พลาดหรอกแต่ผลลัพธ์ที่ต้องการมันไม่ไช่อย่างนั้นหนะ) เช่น List ลองมาดูโจทย์ผมละกัน โจทย์ก็แสนจะง่ายดาย มี List ย่อยๆ หลายๆ List ที่แต่ละ List มีข้อมูลไม่เท่ากัน โดยต้องเอา List เหล่านั้นมารวมกันให้เป็น List ใหญ่ๆ ก้อนนึง อ๊ะ เหมือนธรรมดา ยังไม่หมดๆ [...]

Read full story Comments { 1 }

Flex validator

พักหลังต้องเก็บรายละเอียดงาน ช่วงนี้ก็เลยมีทั้งแก้ไขโค้ดเก่าๆ ให้ทำงานเร็วขึ้น จากแต่ก่อนที่พอให้ทำงานได้ แล้วก็เก็บพวกฟอร์มต่างๆที่ใส่ตัวตรวจสอบก่อนที่จะส่งไปยังเซิร์ฟเวอร์ เพื่อไม่ให้ทำงานผิดพลาด (จริงๆก็ต้องใส่ทั้งสองฝั่งอะแหละ แต่ผมก็ทำทั้งสองฝั่งอ่ะนะ – -”) คราวนี้ก็เลยเขียนถึง Validator ใน Flex ซะหน่อย ปกติแล้วเวลาจะใส่อะไรไปยัง Component อื่นก็จะจับมันยัดเข้าไปใต้ Tag ของ Component นั้นแต่ Validator เวลาใส่กลับต้องอยู่ด้านนอกสุดและไม่อยู่ใต้ Tag อะไร โดยจะมี property พื้นฐานบางอย่างที่มีเหมือนกันคือ source: คือตัวแปรที่จะเอาไว้ตรวจสอบ อาจจะเป็น object ทั้งก้อนเลยก็ได้ property: ประเภทของ form ว่ารับมาเป็นอะไร ส่วนใหญ่แล้วจะเป็น text trigger: component ที่รอรับเหตุการณ์เตรียมตรวจสอบ triggerEvent: เมื่อเกิดเหตุการณ์ที่กำหนดใน property นี้จาก component ที่กำหนดใน trigger แล้วจะทำการตรวจสอบ เช่น RegExpValidator อันนี้คือผมไว้สำหรับตรวจว่า input [...]

Read full story Comments { 0 }

UIComponent

ใน Flex เวลาจะใช้ชิ้นส่วนอะไรก็ตามชิ้นส่วนเหล่านั้นส่วนใหญ่จะมาจาก UIComponent ทั้งนั้น คราวนี้ก่อนที่มันจะวาดชิ้นส่วนขึ้นมาเป็นภาพมันดันมีขั้นตอนต่างๆ ที่คล้ายๆ Applet ซะนี่ลองดูลำดับตามด้านล่างละกัน Constructor CreateChildren CommitProperty UpdateDisplayList อาจจะมีมากกว่านี้แต่หลักๆ ที่จะเจอกันบ่อยๆ คือสี่ขั้นนี้แหละ เริ่มจาก Constructor ก่อนที่จะใช้กำหนดค่าเริ่มต้นต่างๆ ให้กับ Component อันนี้ก็ไม่ค่อยมีอะไร เพราะภาษาที่มีคลาสเกือบทุกภาษาก็คงมีเหมือนกัน ตัวถัดมาคือ CreateChildren จะถูกเรียกครั้งเดียวตอนที่เริ่มสร้าง Component โดยมีหน้าที่หลักๆ ก็คือเอาชิ้นส่วนย่อยๆ มาประกอบล่างเป็นชิ้นใหญ่ๆ เช่นฟอร์มที่ใช้ส่งข้อมูลต่างๆ ก็จะมีพวก Label, TextField, … ซึ่งจะไม่มีการเปลี่ยนแปลงรูปร่างหรือขนาดอะไรอีก เอามาใส่ในขั้นนี้ให้หมด รวมถึงตอนกำหนด Event ต่างๆ ให้กับมันด้วย CommitProperty เป็นขั้นที่เตรียมวาดขึ้นหน้าจอแล้ว จริงๆ มีขั้นก่อนหน้านี้เล็กๆ น้อยๆ พอสมควรพวก Measure… ทั้งหลายแหละ ที่เอาไว้บอกว่า Component นี้จะมีขนาดเท่าไหร่แน่เวลาเอาไปประกอบกับชิ้นส่วนอื่น ซึ่งถ้าหากอยากเพิ่มความเร็วขึ้นอีกอาจจะต้องไปเขียนเพิ่ม(แต่ผมขี้เกียจอะนะ ขอใช้พวก VBox, [...]

Read full story Comments { 5 }

Alien number

Google codejam ก็จะเริ่มแล้วอีก 20 กว่าวัน ตอนนี้ก็มีแบบฝึกหัดให้ลองทำเล่นๆ ไปก่อนอยู่ประมาณ 8 ข้อวันอังคารหลังจากเห็นข่าวก็ลองสมัครแล้วเข้าไปเล่นซะหน่อยแล้วก็โชว์ความโง่ซะเลยฮะๆๆ เนื่องจากเป็นคนที่มองอะไรแค่ผิวเผินอ่านโจทย์เสร็จก็ลุยทันที ทำให้แค่ข้อแรกกว่าจะทำเสร็จก็ปาไปหลายชั่วโมง – -” อ๊ะลองมาดูโจทย์ดีกว่า อันนี้เป็นแบบฝึกหัดข้อแรก (หลังจากทำวันอังคารในเวลางานแล้วก็หยุดไม่ทำอีกเลย เพราะทำให้รู้ว่า สมาธิในการทำงานจะลดลงอย่างฮวบฮาบ) เล่าประมาณว่า เลขฐานสิบประกอบด้วยสัญลักษณ์ทั้งหมดสิบตัวคือ 0-9 แล้ววันนึงคุณก็ไปเจอเลขมนุษย์ต่างดาวเข้า ซึ่งมีสัญลักษณ์แปลกประหลาดต่างออกไปจากตัวเลขของมนุษย์และเรียงลำดับไม่เหมือนกันด้วย เช่น oF8 โดยหากเอาสัญลักษณ์เหล่านี้มาเขียนเป็นเลข 1 – 10 เหมือนของมนุษย์โลกในเลขฐานสิบแล้วจะได้เป็น F, 8, Fo, FF, F8, 8o, 8F, 88, Foo, FoF, … ไปเรื่อยๆ โดยเราต้องการที่จะอ่านตัวเลขเหล่านี้ให้ออกและแปลงเป็นตัวเลขของมนุษย์ต่างดาวในสัญลักษณ์อื่นได้ด้วย แล้วก็บอกลักษณะตัวอย่างของ input มาให้คือ ตัวเลขต่างดาว สัญลักษณ์เลขของมนุษย์ต่างดาวที่ใช้อ่านตัวเลขด้านหน้า สัญลักษณ์ของมนุษย์ต่างดาวเป้าหมายที่ต้องแปลงมา แล้วก็บอกมาว่าสัญลักษณ์ที่เรียงกันนั้นจะเรียงจากน้อยไปมากให้ อื่มอ่านมาถึงตรงนี้ก็คิดไปถึงวิธีทำและว่าจะทำยังไง อ๊ะ เตือนไว้ก่อนถ้าใครอยากลองแบบไม่ต้องการรู้วิธีก็อย่าอ่านต่อด้านล่าง

Read full story Comments { 1 }

Ganymede

หลังจากรอดาวโหลดเมื่อวาน จนสุดท้ายก็ไม่ได้โหลดเพราะว่าแบตโน๊ตบุ๊กหมดเอาซะก่อน เลยให้เซิร์ฟเวอร์ดาวโหลดเก็บไว้แทน แล้วตอนเช้าค่อยมาโหลดใหม่ แล้วก็ได้ลองสมใจ อันนี้ก็ขอลองเขียนแนะนำโปรแกรมยาวๆ ดูหน่อยละกัน สำหรับของเล่นที่มีมาใหม่ต่างๆ หลายคนคงดูคร่าวๆ มาบ้างแล้วที่ blognone อันนี้ก็เขียนละเอียดหน่อยนึงละกัน เริ่มจากตอนแรกที่เปิดเข้าโปรแกรมก็เจอหน้าตาที่เปลี่ยนไป จะบอกสวยขึ้นดีป่าวหว่า แต่รู้สึกมันม่วงขึ้นอย่างเห็นได้ชัด อาการซันเริ่มออกฮะๆๆ ความม่วงเข้าตา เปิดมาหน้าแรกก็เลือก workspace อันนี้ไม่มีอะไรแปลกใหม่ แต่ที่แปลกใหม่คือหน้าจอหลัก ที่มีปุ่มแปลกใหม่เข้ามา นั่นคือ Breadcrumb พี่ก็บอกว่ามาจากรอยขนมปังในเรื่อง แฮนเซลกับเกรเทล โฮ่คิดได้ไงนี่ ปุ่มก็หน้าตาประมาณนี้ อยู่ข้างๆ กับปุ่ม search ในแถบเครื่องมือด้านบน พอกดแล้วก็จะได้ แถบหน้าตาคล้ายๆ ด้านล่างขึ้นมาอยู่เหนือส่วนที่แก้ไขโค้ด โดยจะบอกรายละเอียดว่าตอนนี้เราแก้ไขคลาสไหน แล้วมันอยู่ที่ใด สืบเชื้อสายมาจากใคร ประมาณนี้ ดูหน้าจอรวมๆ หน่อยดีกว่า ที่เห็นด้านบนนี่มีติดส่วนขยายไปเพิ่มบ้างแล้วเช่น ECF และ subclipse สำหรับคนที่อ่าน blognone มาก่อนคงสงสัยว่าทำไมต้องติด ECF เพิ่ม ก็เพราะว่าผมไม่ได้โหลดชุดติดตั้งมาตรฐานจากหน้าแรกของ Eclipse หนะครับ เนื่องจากของเล่นมันเยอะแยะมากมาย ดังนั้นเลยต้องติดเพิ่มเอง [...]

Read full story Comments { 0 }