Posts

Showing posts with the label array

Empty Data Sets Pattern

Image
การใช้ UITableView, UICollectionView เป็นวิธีการยอดนิยม สำหรับข้อมูลที่มีลักษณะเป็นลำดับ (List) ซึ่งก็มีคำถามต่อมาว่า "ทำอย่างไรดี เมื่อไม่มีข้อมูลบน List เลย" ผู้คนมักปล่อยว่างเป็นหน้าขาวๆ ซึ่งเป็นวิธีที่ไม่ดีนักสำหรับผู้ใช้ โดยการที่ไม่มีข้อมูลบน List เลยอาจจะมาจากได้หลายสาเหตุ ไม่มีข้อมูล อาจจะเป็นการสมัครครั้งแรกและยังไม่มีข้อมูลใดๆ ไม่ได้เชื่อมต่อ Internet ดึงข้อมูลมา แล้วเกิด Error ซึ่ง App ที่ดี ก็ควรจะบอกผู้ใช้ด้วยว่า มันเกิดอะไรขึ้นดังเช่น App ดังๆ ทำกันแบบนี้ ผู้ใช้ควรจะรู้ว่าสถานะของ App เป็นอย่างไรเนอะ แล้วมันทำยังไงล่ะ ? วันนี้จะมาแนะนำ Library ตัวนึงชื่อ DZNEmptyDataSet เพื่อจัดการเหตุการณ์แบบนี้กันครับ :) โดยวิธีการใช้งาน ก็ไม่ยากเลยเพียงแค่เซต Datasource และ Delegate ให้ UITableView หรือ UICollectionView ที่เราใช้อยู่ จากนั้นก็ทำการเขียน Datasource methods เพื่อจัดการข้อความและรูปที่จะแสดงเวลาไม่มีข้อมูล (แม้กระทั่งสร้าง Custom View มาแปะเลยก็ได้) และ Delegate methods เพื่อจัดการเหตุการณ์ที่จะเกิดขึ้นกับ View ของ Empty Data Set...

Underscore.js

Image
ช่วงนี้ผันตัวเองมาเขียน Backend สักพักครับ ... ได้เรียนรู้ Node.js และได้กลับมาเขียน Javascript อีกครั้ง หลังจากที่ได้ลองครั้งแรกที่ Opendream ผมลอง Javascript แบบ Framework Development นะครับ ไม่ใช่ Web Front-end เจอ Library ตัวนี้แล้วชอบเลยทีเดียว เพราะพยายามหาอยู่ เนื่องจากเขียน Dynamic Language จนติด และ Javascript ก็ไม่มี Chunk of methods ให้เยอะขนาดนั้น Underscore นี่ดูแล้วเท่ดี และพยายามทำให้คล้าย Ruby เลยทีเดียว หลายๆ  method ที่หยิบมา อยู่ใน Ruby ทั้งนั้น และใช้งานได้ดีเลย ยกเว้นไม่ค่อยสวยเท่าไร วิธีใช้ใน Node.js environment ก็ง่ายมาก เพราะมีอยู่ที่ npm (Node Package Manager) อยู่แล้ว เพียงแค่พิมพ์ตามนี้ใน Project Folder $ npm install underscore เท่านี้ก็เรียกใช้ได้แล้ว วิธีการเรียกใช้ก็แค่ประกาศตัวแปร (จริงๆ จะเป็นอะไรก็ได้ แต่ถ้าตามชื่อ Library ก็คงต้องเป็น _ ล่ะนะ) var _ = require("underscore") ตัวอย่างการใช้งาน var maxNum = _.max([1, 2, 3, 4]) var doubleValueList = _.map([1, 2, 3], function(num) { return num * 2 }) ส่วนจะมีฟังก์ชั่...

Sorting Function in C/C++

Image
วิธีการ Sort Array (เรียงลำดับ) มีหลายวิธีมาก  แต่ละวิธีก็มีความเร็วที่แตกต่างกันไป  ตั้งแต่ O(n^2) ไปจนถึง O(nlogn)  แล้วการเขียนสดนั้น ไม่ใช่เรื่องง่ายแน่ ซึ่งแน่นอนมีตัวช่วยเยอะแยะ :) วิธีที่ใช้กันบ่อยๆ ได้ทั้ง C/C++ ก็คือใช้ qsort() ใน stdlib.h (cstdlib) Quick Sort == Speed O(nlogn) แล้วถ้าเราจะ Sort แบบกลับด้านล่ะ (เรียงจากมากไปน้อย) ง่ายมากเลย แค่แก้ compare function  การเข้าใจก็ไม่มีอะไรมาก compare เป็น Function Pointer ที่จะรับ argument 2 ตัว เพื่อมาเปรียบเทียบหาความแตกต่างของค่าทั้ง 2 เพื่อที่จะเอาผลลัพธ์ไปใช้ qsort ใช้ในการสลับค่า ทีนี้การมี void * (void pointer) หมายความว่า Type ที่เข้ามาจะเป็นอะไรก็ได้  ดังนั้นเราสามารถประยุกต์มาใช้ Sort Character in String ได้ด้วย เช่น ** จะเห็นว่าด้านบนผมบอกว่า qsort() อยู่ใน stdlib.h (cstdlib)  แต่ผมก็ไม่ได้เขียนลงไป เพราะผมลืม นั่นเพราะ C++ Compiler ตัวใหม่ๆ  จะมี stdio.h และ stdlib.h อยู่ใน iostream อยู่แล้ว :) แถมให้นิด เนยสดแห่ง Twitter ท่านได้ C...

[Android Dev] :: Spinner for Choose Something

Image
วันใหม่แล้วสินะ... เรื่องนี้เป็นเรื่องของ Spinner ครับ หน้าตาของ Spinner ก็ประมาณนี้ พอกดแล้วก็จะขึ้น Menu ให้เลือก ซึ่งเมนูนั้น... ก็จะเก็บเป็น Array ครับ... Let's Coding Begin ในส่วนของ XML ก็ประมาณนี้ครับ คำสั่งเกี่ยวกับ Spinner ไม่มีอะไรเป็นพิเศษเลยจริง ๆ ... เป็นคำสั่งพื้นฐานในการแสดง Object ทั้งหมด และแน่นอน Spinner ของผมวางอยู่บน Relative Layout ตามถนัด ^^ จากโค้ดเมื่อกี้ จะได้หน้าตาประมาณนี้แหละครับ ต่อมาในส่วนของ Java import ของที่ต้องใช้เข้ามาทั้งหมดก่อน เราจะเห็นได้ว่า... มีของเล่นใหม่นั่นคือ ArrayAdapter และ AdapterView ซึ่งสองตัวนี้แหละครับ ที่จะช่วยเราจัดการข้อมูลใน Spinner ต่อมาก็เป็นการประกาศตัวแปร และ Link กับ Interface เช่นเคย จะเห็นได้ว่า บาสสร้าง String Array ขึ้นมาเก็บข้อมูลที่จะแสดงใน Spinner ทั้งหมดด้วย... พอจะเดาออกไหมครับ ?? ว่าเราจะทำโปรแกรมอะไรกันนนน... ต่อมาเราจะทำการ สร้าง ArrayAdapter ข้อมูลชนิด String (Type ขึ้นอยู่กับข้อมูลใน Array ของคุณ) Method ในการสร้าง ArrayAdapter (บรรทัดที่ 32) รับ Parameter ทั้งหมด 3 ตัว...

[iOS Dev] Array and MutableArray in Objective-C

Image
วันนี้เราจะมารู้หนึ่งในโครงสร้างข้อมูลของภาษา Objective-C นะครับ นั่นคือ NSArray และ NSMutableArray ทำไมต้อง NS ?? ใบ้ให้ว่า NS == NextStep การบ้านคือลองไปหาดูว่ามันมาที่มาจากไหน ?? ^^ ไฟล์ที่เขียนจะเป็นไฟล์ .m นะครับ ซึ่งเป็น implementation file ของภาษา Objective-C เราจะเขียนโดยใช้ Library พื้นฐานจาก Foundation.h และ Framework Cocoa นะครับ ซึ่งสามารถนำ Code พวกนี้ไปพัฒนา iPhone Application ได้ด้วย... ขั้นแรกเราก็ import Library ทั้ง 2 ตัวเข้ามา... เขียนฟังก์ชั่น main พร้อมกับ สร้าง AutoreleasePool ขึ้นมาด้วย ในส่วนนี้จะเป็นการสร้างข้อมูล  NSArray ขึ้นมานะครับ... ก็เหมือน Array ในภาษาทั่ว ๆ ไปแหละครับ [NSArray arrayWithObjects: ] เป็น Constructor ตัวหนึ่งใน NSArray Class ซึ่งจะเอาไว้กำหนดค่าให้กับข้อมูลใน Array ของเรา โดย **ข้อมูลตัวสุดท้ายจะต้องเป็น nil (ภาษาอื่นๆ คือ NULL) เสมอ จากนั้นก็แสดงออกมาจาก Shell โดยใช้คำสั่ง NSLog (คล้ายกับ printf เลยครับ) และสังเกตให้ดี ใน for ของเรามีการเรียกใช้ Function Count ด้วย ^^ อ่ะ มาดูในส่วนของ NSMutableArray กันบ้...