การแก้ปัญหา ScrollBar ของ Flex โผล่เมื่อใช้ CustomScrollBar จาก Catalyst by Ziah

31
Jan
0
ScrollBar ของ Flex ที่โผล่มาซ้อนกับ CustomScrollBar

ScrollBar ของ Flex ที่โผล่มาซ้อนกับ CustomScrollBar

จากการที่ใช้ Flash Catalyst สร้าง CustomScrollBar เพื่อนำมาใส่ใน Flex ทำให้เกิดปัญหาเรื่อง ScrollBar ของ Flex โผล่มาซ้ำซ้อนกับ CustomScrollBar ของเรา แม้ว่าเลื่อนไปล่างสุดก็ยังมีไอเม็มที่ยังเลยจาก CustomScrollBar ของเราอีก

เลื่อน CustomScrollBar สุดแล้วยังเห็นไอเท็มไม่ครบ

เลื่อน CustomScrollBar สุดแล้วยังเห็นไอเท็มไม่ครบ

ซึ่งวิธีแก้ที่จะเสนอในวันนี้เป็นวิธีการแก้ใน ActionScript ดังนี้ครับ

scroll3

Group ตัวอย่างที่นำมาใชเแสดงผล โดยมี id คือ groupList และจากที่เห็น dataProvider ของ List เราคือ aColvList ซึ่งเป็น ArrayList ที่ถูกกำหนดไว้ใน ActionScript แล้ว

scroll2

จากโค้ดข้างต้นเป็น mxml tag ของ CustomScrollBar ของเราซึ่งกำหนด Viewport ไว้คือ Group ที่ครอบลิสท์ไอเท็มของเราที่จะใช้

scroll4

ทีนี้มาถึงสวนที่เราใช้แก้ปัญหา ScrollBar ของ Flex ไม่ให้แสดงขึ้นมาคือการเติมส่วนที่กำหนดขนาดความสูงของ Group ของเรา ให้มีขนาดเท่ากับส่วนสูงของ Item ของเรา คูณด้วยจำนวนแถว ซึ่งอธิบายโค้ดได้ดังนี้

if(aColvList.length%5) // 5 คือจำนวนของ Item ใน 1 แถวว่ามีกี่ตัว ซึ่งเราทำการเช็คว่าจำนวนไอเท็มของเราพอดีกับแถวหรือไม่หรือมีจำนวนที่เกินมา

colvList.height = (int(aColvList.length/5)+1)*160; //ถ้ามีเกินมาซึ่งก็คือแถวสุดท้ายมี 1-4 ตัว ก็ทำการนำจำนวนไอเท็มทั้งหมดหาร 5 แล้ว +1 ก็จะได้จำนวนแถว + แถวที่เกินมาแล้วคููณกับความสูงของไอเท็มหรือแถวๆหนึ่ง ซึ่งในที่นี้คือ 160

else

colvList.height = int(aColvList.length/5)*160; //ถ้าไม่มีเกินก็ทำการหารเอาจำนวนแถวคูณกับความสูงของแถวได้เลยครับ

ที่นี้เราก็จะได้  CustomScrollBar มาใช้อย่างไม่มีปัญหาแล้วล่ะครับ

CustomScrollBar เมิ่อแก้ไขสำเร็จแล้ว

CustomScrollBar เมิ่อแก้ไขสำเร็จแล้ว

ความแตกต่างของลูป for กับ for each by dekunderkover

31
Jan
0

สำหรับตอนนี้จะไม่พูดถึงลูป for ธรรมดานะ (เราคิดว่าคุณรู้แล้ว)


มาเริ่มกันด้วยการสร้าง object ขึ้นมาก่อน var obj:Object = {'id':'1','name':'myname','description':'descccc','image_name':'name/1.png','exp_max':'7'}
เราจะใช้ข้อมูลนี้กันนะ


อธิบายสิ่งที่อยู่ใน obj กันก่อน
‘id’:'1′ คือ คีย์ที่ชื่อ id เก็บข้อมูล 1 อยู่



มาเริ่มต้นที่ for( in ) กันก่อน for(var k:String in obj){ trace(k); }
ได้ key ออกมา คือ id name description image_name และ exp_max



มาดูกันต่อที่ for each( in ) for each(var d:String in obj){ trace(d); }
ได้ data ออกมา คือ 1 myname descccc name/1.png และ 7


นำไปใช้กันให้ถูกนะคะ :)

วิธี config และใช้ nginx + php-fpm + fast-cgi เบื้องต้นให้ใช้งานกับ Codeigniter by heha

31
Dec
0

เนื่องด้วยทั่วๆ ไปแล้ว web server มาตรฐานทั่วๆ ไปที่ใช้งานกันคือ Apache แต่ว่า Apache นั้นบริโภค Memory อย่างไม่ไยดี และถ้าเว็บเรามีการใช้งาน static file จำพวกรูปภาพหรือ css, js มากๆ ก็จะกิน Memory หนักขึ้นไปอีก หลักการของ nginx จึงเปรียบเสมือนการเป็นป้ายบอกทางว่าถ้าเป็น static file ให้เรียกไฟล์นั้นๆ ขึ้นมาตรงๆ เลยไม่ต้องผ่าน apache หรือตัวกลางอื่นๆ แต่ถ้าเป็น Dynamic file เช่น PHP ก็ให้ส่งไปยัง Fast-cgi แทน ซึ่ง Fast-cgi จะทำหน้าที่อ่าน PHP เพียงอย่างเดียว ไม่ต้องเผื่อรองรับ static file จึงกิน Memory น้อยกว่านั่นเอง สุดท้ายจึงทำให้สามารถรองรับการใช้งานเว็บไซต์ที่มี traffic หนักๆ ได้อย่างสบายๆ กว่า apache มากหลายเท่าตัว

อันที่จริงแล้ว Apache ก็ไม่ได้มีแต่ข้อเสียขนาดนั้น ข้อดีของ Apache คือเหมือนเป็น All-in-one machine ติดตั้งตัวเดียว ทำงานได้ทุกอย่าง ถ้ามีคนใช้งานไม่มาก เราจะแทบไม่ต้องไปยุ่งกับการปรับ config เลยด้วยซ้ำไป เพียงแต่ว่าเมื่อเราต้องการให้รองรับการใช้งานหนักๆ ได้ เราจึงจำเป็นต้องใช้ “ผู้เชี่ยวชาญเฉพาะด้าน” ซึ่งในที่นี้คือ fast-cgi นั่นเอง และจะมี php-fpm คอยควบคุมสั่งการอีกทอดหนึ่งซึ่งแน่นอนว่าการ config เพื่อใช้งานจึงยุ่งยากกว่า แต่ก็แลกมากับประสิทธิภาพที่น่าพอใจ

การใช้ List ใน Flex by dekunderkover

30
Nov
0

เราจะมาพูดถึงส่วนประกอบของ List ใน Flex
สิ่งที่พูดถึงนี้อยู่ใน spark.components.list

แท็ก list เวลาเรียกใช้คือ <s> </s> แบบโค้ดตัวอย่างนี้ <s:List x="295" y="207" width="412" height="112" id="prtList1" dataProvider="{usedArr1}" itemRenderer="components.partCustomComponent" /> </s:List>
x, y : จุด x y ที่เราจะวาง list ลงไป
width, height : ความกว้าง ความสูง ของ list ที่เราสร้าง
dataProvider : ข้อมูลที่จะใส่ลงใน list
itemRenderer : component แต่ละตัวใน list

ลงรายละเอียดกันอีกนิด
ข้อมูลที่จะใส่ใน dataProvider จะเป็นข้อมูลแบบ array เช่น var usedArr:Array =[{"friend_id":1234,"nick":"Paiboon","level":10,"exp":2}, {”friend_id”:5678,”nick”:”Ziah”,”level”:99,”exp”:999999}];
จะมีข้อมูลคือ friend_id เป็น 1234, nick เป็น Paiboon, level เป็น 10, exp เป็น 2

itemRenderer จะเป็นคลาสที่สร้าง component แต่ละตัวออกมา โดยใช้ข้อมูลจาก dataProvider ทีละตัว public function init():void { str = data.nick; exp = data.exp; level = data.level; id = “id: “+data.friend_id; }
data คือข้อมูลจากในอาร์เรย์ . ด้วยชื่อของข้อมูลที่ต้องการ
แล้วจึงนำไปใส่ <s:Label text="name: {str}" y="60" /> <s:Label text=”exp: {exp}” y=”70″ /> <s:Label text=”level: {level}” y=”80″ />
มาดูให้เห็นภาพ (ไม่ตรงตามโค้ดนะจ๊ะ)
หลังจากข้อมูลหนึ่งตัวเข้า itemRenderer แล้ว จะออกมาเป็นลักษณะแบบนี้

พอใช้ข้อมูลทุกตัว ก็จะออกมาเป็นแบบนี้ :D

รู้จักกับ config ที่น่าสนใจของ php ในไฟล์ php.ini by heha

26
Nov
0

PHP มี config ต่างๆ มากมาย หากอยากรู้ว่า server ของเราเซ็ต config อะไรไว้อยู่บ้างให้ทดสอบด้วยการสั่ง phpinfo(); ในไฟล์ php ไฟล์ใดก็ได้ ระบบจะแสดง config ออกมาให้เห็นทั้งหมด รวมไปถึงหากต้องการทราบว่าไฟล์ php.ini อยู่ที่ไหนก็ดูได้จาก phpinfo(); เช่นกัน

ตัวอย่าง phpinfo()

ตัวอย่าง phpinfo()

สำหรับการ setup php ตั้งแต่เวอร์ชั่น 5.3 เป็นต้นไป จะมีไฟล์ php.ini-development เอาไว้เป็น sample ให้ copy เป็น php.ini ถ้าต้องการใช้ทดสอบโปรแกรมเฉยๆ และไฟล์ php.ini-production เอาไว้ใช้ใน server ที่ให้บริการกับลูกค้าจริง