26
Jan 10

เข้าใจตรงกัน?

ทำงานมาเกือบสามปี ประชุมมาก็หลายครั้ง จนวันนี้ถึงได้คิดอย่างจริงจังว่า ที่คุยๆ กันเนี๊ยะ มันเข้าใจตรงกันหรือป่าว มันเป็นสิ่งที่กวนใจจนทำให้ไปสมัครเรียน ป.โท เพื่อหวังจะได้คำตอบนี้ และหาวิธีที่จะทำให้มันตรงกัน(ซึ่งก็ไม่รู้จะได้คำตอบหรือป่าว)

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



จากรูป ปัญหาที่พูดจบตอนแรกจนทุกคนเข้าใจแล้วคือ A และกำลังหาวิธีแก้ปัญหากัน แล้วก็มีคนพูดถึงวิธีแก้ปัญหาโดยใช้วิธี C ซึ่งในหัวก็อาจจะมี B มาก่อนแล้วถึงได้เสนอ C ขึ้นมา ส่วนคนที่สองก็อาจจะมีความรู้ที่คล้ายกัน แต่อาจจะไม่เหมือนกับ คนแรกซะทีเดียว แต่สุดท้ายคือได้ C เหมือนกัน แต่คนสุดท้ายนี่สิ ยังคิดอยู่ที่ A เพื่อให้ได้ B’ ออกมาอยู่เลย เพราะยังมองไม่ออกว่ามาเป็น C ได้ยังไง (ซึ่งก็คือคนที่เขียนบล๊อกนี้นี่เอง ^^!) คำถามคือ จะให้คนที่เสนอวิธี C มาแล้วทำให้คนสุดท้ายรู้ได้ไง และเห็นภาพเหมือนกันหมด

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

ตอนนี้คิดวิธีแก้ตอนประชุมออก แต่ไม่รู้จะใช้ได้ผลจริงหรือป่าว คือ พูดแล้วก็วาดภาพในหัวออกมาเลย โดยอาจจะวาดเป็น Mind map หรืออะไรก็แล้วแต่ แต่ต้องทำให้คนอื่นเข้าใจด้วยว่าภาพในหัวเป็นยังไง ข้อเสียคือ มันคงจะเสียเวลาพอสมควร แต่ก็ยังนึกวิธีที่ดีกว่านี้ไม่ออก เอ ตอนนี้เริ่มสงสัยแล้วสิ ว่าตัวเองเรียนถูกสาขาที่ต้องการคำตอบหรือป่าว


25
Jan 10

Flex Event Propagation

ปล่อยเรื่องนี้ค้างคาใจมานานเหลือเกิน เพราะไม่ได้ใช้ Event ครบทุก Phase อย่างจริงจัง วันนี้ต้องทำให้ Checkbox List ทำงานเร็วขึ้นแต่ไม่อยากแก้ List ของ Adobe ตรงๆ หรือทำไรเพิ่มเติมก็ต้องเล่นกับ Event แทนนี่แหละ อ่านคร่าวๆ ขั้นตอนการส่งต่อ Event ของ Flex มีแค่สามขั้นคือ Capturing Phase, Targeting Phase, Bubbling Phase ลองดูภาพด้านล่างเผื่อเข้าใจง่ายขึ้น


ภาพด้านบนแสดงการซ้อนกันของ Component ต่างๆ ที่สร้างขึ้น มี Application เป็น Component ที่อยู่นอกสุด ตามด้วย HBox และ Button ถ้าเขียนเป็น mxml ก็จะได้อย่างด้านล่าง

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Box>
<mx:Button />
</mx:Box>
</mx:Application>

เมื่อมีคนกดปุ่มสิ่งที่เกิดขึ้นคือ component ที่อยู่นอกสุดซึ่งก็คือ Application จะดักจับ event ได้ก่อน จากนั้นจะส่งต่อไปที่ Box และ Box จะส่งต่อให้ Button อีกที การส่งต่อ Event ในช่วงนี้เรียกว่า Capturing Phase เมื่อถึง Button ซึ่งเป็นปุ่มที่เรากดแล้ว ช่วงที่อยู่ตรงปุ่มเรียกว่า Targeting Phase จากนั้น Button จะส่ง Event กลับไปยัง Box และ Box ส่งต่อให้ Application อีกที เรียกว่า Bubbling Phase
เอาหละ มาดูผลลัพธ์กันดีกว่าว่าใช้พวกนี้ช่วยแล้วเป็นยังไง หรือจะ ดาวโหลด ไปดูเต็มๆ ก็ได้




ของแถม อันนี้ทำเพื่อทดสอบว่า Event มันส่งต่อยังไงบ้าง


เกี่ยวข้อง:

  1. Event Propagation in Adobe help

18
Jan 10

Dropzone + Simplenote

ช่วงนี้เบื่อๆ เลยหาอะไรที่ทำเสร็จได้ไม่เกินหนึ่งวันเล่น ก็เลยเผลอหลวมตัวจิ้มเอา Dropzone มาจนได้ วันนี้ก็เลยหาทางเขียนตัวเสริมให้มันเชื่อมกับ Simplenote ที่ใช้อยู่ด้วยซะเลย ผลก็ตามด้านล่าง




แต่ก่อนใช้งานต้องติดตัวช่วยให้ ruby ในเครื่องก่อนด้วยคำสั่งด้านล่าง

llun$sudo gem i rest-client

จากนั้นดาวโหลด simplenote.dropzone กดติดตั้ง ใส่ username(email) และ password ก็เรียบร้อย

ตอนเย็นมีคำแนะนำเพิ่มเติมว่า น่าจะลากไฟล์ประเภทอื่นได้ด้วย เช่น PDF ลองหาๆ ดูว่ามี Library ไหนอยู่แล้วบ้างปรากฏว่าหาไม่เจอ เลยช่างมันก่อนละกัน ไว้เบื่ออีกรอบ จะกลับมาทำเพิ่มเติม

English step for install Dropzone and Simplenote extension:

  1. Download Dropzone. Open it dmg and drag Dropzone icon to Application folder.
  2. Install rest-client ruby library. I use this library instead of NET::HTTP because I’m lazy to find the way to use it. I try standard library but it always error with HTTP 500. So, I switch to rest-client but it needs a few more step to use, install rest-client library on Shell(Terminal)
    llun$sudo gem install rest-client
  3. Download Simplenote extension and install by double click on download file.
  4. Set username(email) and password then add.
  5. Simplenote icon should lives in Dropzone now. Drag text file to it or click Simplenote icon and paste text for create note.