Archive | ภาษา RSS feed for this section

xml namespace ใน flex

ตอนแรกกะว่าจะเขียนวันเดียวกับเรื่อง Tree แต่ด้วยความขี้เกียจบวกกับเมื่อวานกะทำงานหลายๆ อย่างให้เสร็จเลยไม่ได้เขียน ยกยอดมาเขียนวันนี้แทน เรื่องนี้เป็นเรื่องที่สองที่ได้จากการทำ FeedReader แล้วทำให้รู้ว่า Flex มันไม่สามารถหาวิธีทำได้จากคู่มือที่มีให้ในเว็บ Adobe ต้องใช้ความสามารถในการใส่ keyword ให้ google เข้าช่วยอย่างมาก เรื่อง ของเรื่องก็คือ xml ที่ Google ส่งมาใน Google Reader มีการใช้ namespace อยู่สามตัวในการแบ่ง tag ต่างๆคราวนี้พอได้รับข้อมูลมาแล้วจะเอามาอ่านใส่ตัวแปรโดยไม่มีการกำหนด namespace ให้มันปรากฏว่า Flex มันก็จะอ่านข้อมูลตัวนั้นออกมาเป็นตัวแปรแบบปกติไม่ได้เช่น Google Reader tag:google.com,2005:reader/user/10757961596074723521/state/com.google/reading-list CLv69f7_nZUC แนท 2008-08-21T08:07:03Z tag:google.com,2005:reader/item/8c96bd9a8e5c1cb5 …. ขี้เกียจเอามาหมดยาว จะเห็นว่าแท๊กพิเศษอยู่เช่น gr:…. แต่อย่างไรก็ตามด้านบนมันก็ได้กำหนดไว้แล้วว่าอะไรคือ namespace default (xmlns ที่ไม่มี : บอกว่าใช้ namespace อะไรนำหน้านั่นแหละ) แต่ Flex [...]

Read full story Comments { 0 }

DataProvider ใน Tree component

หลังจากเขียน FeedReader แล้วพบความพิเศษของมันอย่างนึงใน Tree component คือจะทำให้มันยากก็ยากได้ หรือจะทำให้มันใช้ง่ายก็ง่ายสุดๆ เหมือนกัน แต่ก่อนเวลาผมจะใช้ component นี้ข้อมูลที่จะใช้ก็จะทำเป็น xml ให้มีโครงสร้างตามที่ต้องการก่อน เช่น ถ้าข้อมูลมีลักษณะเป็น root -> directory -> file ก็จะสร้าง xml เป็น ซึ่งมันลำบากสิ้นดี แต่หลังจากทำ FeedReader แล้วค้นพบอะไรบางอย่างนั่นคือ มันมี TreeDataDescriptor ด้วยที่ไว้อธิบายข้อมูลว่าจะให้แสดงเป็น Tree ได้ยังไงแล้วมันก็มีค่าพื้นฐานให้อยู่แล้วด้วยคือ ถ้า object ที่ใส่เข้ามาในตัวแปร dataProvider มี property ที่ชื่อว่า name แล้ว children มันจะเอา name มาแสดงส่วนอันไหนที่มี children ก็จะทำให้มีลูกสามารถขยายออกมาได้ เช่น class Folder { public var name:String public [...]

Read full story Comments { 0 }

FeedReader ที่จะเอาไปคุยใน Barcamp

ไม่ได้เขียนบล๊อกมาประมาณอาทิตย์ เพราะอาทิตย์ที่แล้วนอกจากงานประจำแล้ว ได้แอบไปเขียนอะไรเล็กๆ เล่นอีกอย่างหนึ่งด้วยเผื่อเอาไปคุยในงาน barcamp เห็นตอนนี้กำลังมีกิจกรรมให้อัดวิดีโอบอกว่าจะไปคุยอะไรใน barcamp ซะด้วย แต่ขี้เกียจอัดวิดีโออะ เอาเป็นภาพไปละกัน ตอนนี้ก็ยังไม่ค่อยสมบูรณ์เท่าไหร่ แต่ก็พอดูได้หละนะ คาดว่าจะเข็นทันให้นิ่งพอก่อน barcamp ใครอยากลองไปเล่นดูก็ดาวโหลดตรงนี้เลย: FeedReader.air สำหรับโค้ดทั้งหลายใครอยากเอาไปทำต่อก็เอาออกได้จากที่ http://project.llun.info/repository ใช้ svn ดึงออกมาได้เลยครับ ปอลอ: ใครใช้ windows ทดลองให้ผมด้วยนะ ผมลองบนเครื่องที่ใช้อยู่แล้วมันไม่ได้แฮะ ลองสำรวจดูเป็นที่ AIR มันไม่แก้ cookie ให้ใหม่อ่ะ ไม่เข้าใจเหมือนกันว่าทำไม เห้อ เดี๊ยวคงได้ลง AIR บน windows ใหม่

Read full story Comments { 0 }

SharedObject

หลังจากหลีกเลี่ยงมานานไม่ยอมใช้มัน วันนี้ก็มีงานที่ต้องใช้จนได้ SharedObject ที่ฟังจากเพื่อนและพี่มามันคือสิ่งที่ไว้เก็บข้อมูลฝั่งไคลเอ็นท์ของ Flex คล้ายๆกับ คุ๊กกี้ ของเว็บบราวเซอร์ วิธีใช้นั้นมันก็ง่ายแสนง่ายเพราะมันเป็นเพียงตารางอันนึงไว้เก็บ key กับ value โดยเวลาจะยัดอะไรใส่ลงไปก็บอกว่า ไอ้นี่ใช้ชื่ออะไรสำหรับอ้างอิง เวลาจะเอามาใช้ก็ใช้ชื่อนั้นดึงออกมา สิ่งที่ผมเอามาใช้คือไว้จำว่าครั้งสุดท้ายที่เข้ามาในโปรแกรมนั้นเปิดหน้าอะไรเอาไว้ เวลาเปิดมาอีกครั้งจะได้ไม่ต้องเสียเวลาไปกดเปิดตรงนั้นอีก เปิดมาให้เลยเมื่อเข้ามา ลองดูโค้ดตามด้านล่างเลยละกัน import flash.net.SharedObject; import mx.events.ItemClickEvent; private var cookie:SharedObject = SharedObject.getLocal(“views”) protected override function createChildren():void { super.createChildren() if (cookie.data.value != null) { views.selectedIndex = cookie.data.value } } private function switchView(event:ItemClickEvent):void { views.selectedIndex = event.index cookie.data.value = event.index cookie.flush() [...]

Read full story Comments { 0 }

ตัด String ด้วย Regular expression ในจาวา

เล่าเรื่องงานอีกหละ ฮะๆๆ วันนี้มีสิ่งที่ต้องทำอยู่หนึ่งอย่าง(หลังจากอัดทำไปในสองวันแรก วันหลังๆ เลยรู้สึกน้อยเลย -_-”) คือหาทางกรองข้อมูล คราวนี้ข้อมูลที่มามันเป็นอย่างนี้ xxxhello55xxxx garbage garbage xxxx xworld6xxx garbage garbage xxxx xxxxxxbaa7777xxxx garbage garbage xxxx แล้วสิ่งที่ต้องการคือคำที่อยู่ระหว่าง x ช่องแรกสุด (hello, world, baa) วิธีการง่ายๆ ถ้าไม่ใช้ expression ก็คือหาทางตัดเอา x ด้านหน้ากับ x ด้านหลังและข้อความที่เหลือทิ้งไปให้หมด แต่มันช่างเปลืองแรงยังไงไม่รู้ทั้งๆ ที่จาวามันก็มี expression ที่สามารถตัดเอาคำที่ตรงตามรูปแบบที่ต้องการมาให้เลยได้อยู่แล้ว ทำไมเราต้องไปหาทางตัดมันเองด้วย ก็เลยลองขุดๆ ดูแล้วก็พบวิธีทำตามด้านล่าง for (String data:datas) { Matcher m = Pattern.compile(“[a-z]+\\d+”).matcher(data); m.find(); System.out.println(m.group()); } เห้ย อะไรมันจะยุ่งยากงี้ฟะ ทำไมมันต้องทำหลายขั้นตอนงี้ด้วย [...]

Read full story Comments { 0 }