<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>ไร้สาระ</title>
	<atom:link href="http://tanseven.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://tanseven.wordpress.com</link>
	<description>ถ้าคุณเสียดายเวลาก็อย่าเข้ามาอ่านเลย - -"</description>
	<lastBuildDate>Fri, 12 Nov 2010 09:01:16 +0000</lastBuildDate>
	<language>th</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='tanseven.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>ไร้สาระ</title>
		<link>http://tanseven.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://tanseven.wordpress.com/osd.xml" title="ไร้สาระ" />
	<atom:link rel='hub' href='http://tanseven.wordpress.com/?pushpress=hub'/>
		<item>
		<title>ย้าย Blog</title>
		<link>http://tanseven.wordpress.com/2010/11/12/%e0%b8%a2%e0%b9%89%e0%b8%b2%e0%b8%a2-blog/</link>
		<comments>http://tanseven.wordpress.com/2010/11/12/%e0%b8%a2%e0%b9%89%e0%b8%b2%e0%b8%a2-blog/#comments</comments>
		<pubDate>Fri, 12 Nov 2010 09:01:16 +0000</pubDate>
		<dc:creator>tanseven</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tanseven.wordpress.com/?p=66</guid>
		<description><![CDATA[ย้ายไป Blog ใหม่นะครับ จะพยายามเขียนให้รู้เรื่องขึ้นครับ http://tanseven-blog.blogspot.com/ &#160; ส่วน Entry เก่าๆ จะไล่ทำใหม่ให้ครับ &#160;<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanseven.wordpress.com&amp;blog=725453&amp;post=66&amp;subd=tanseven&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>ย้ายไป Blog ใหม่นะครับ จะพยายามเขียนให้รู้เรื่องขึ้นครับ</p>
<p>http://tanseven-blog.blogspot.com/</p>
<p>&nbsp;</p>
<p>ส่วน Entry เก่าๆ จะไล่ทำใหม่ให้ครับ</p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tanseven.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tanseven.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tanseven.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tanseven.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tanseven.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tanseven.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tanseven.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tanseven.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tanseven.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tanseven.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tanseven.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tanseven.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tanseven.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tanseven.wordpress.com/66/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanseven.wordpress.com&amp;blog=725453&amp;post=66&amp;subd=tanseven&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tanseven.wordpress.com/2010/11/12/%e0%b8%a2%e0%b9%89%e0%b8%b2%e0%b8%a2-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/380b47cb4f11c97050283a3c909b0842?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tanseven</media:title>
		</media:content>
	</item>
		<item>
		<title>CoreData</title>
		<link>http://tanseven.wordpress.com/2010/11/11/coredata/</link>
		<comments>http://tanseven.wordpress.com/2010/11/11/coredata/#comments</comments>
		<pubDate>Thu, 11 Nov 2010 16:18:52 +0000</pubDate>
		<dc:creator>tanseven</dc:creator>
				<category><![CDATA[CoreData]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://tanseven.wordpress.com/?p=63</guid>
		<description><![CDATA[วีธีการใช้ CoreData (ไม่ได้สร้าง Project with CoreData แต่เป็นการเพิ่มที่หลังนะครับ) &#160; ทำการ Add CoreData.framework เข้าไปใน Project &#160; Import Framework ใน ProjectName_Prefix.pch (ส่วนใหญ่อยู่ใน Other Sources) &#160; #import &#60;Availability.h&#62; &#160; #ifndef __IPHONE_3_0 // #warning &#8220;Projects that use Core Data only build using iPhone SDK 3.0 and later&#8221; #endif &#160; #ifdef __OBJC__ #import &#60;Foundation/Foundation.h&#62; #import &#60;UIKit/UIKit.h&#62; #import &#60;CoreData/CoreData.h&#62; #endif &#160; สร้าง [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanseven.wordpress.com&amp;blog=725453&amp;post=63&amp;subd=tanseven&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="p1">วีธีการใช้<span class="s1"> CoreData (</span>ไม่ได้สร้าง<span class="s1"> Project with CoreData </span>แต่เป็นการเพิ่มที่หลังนะครับ<span class="s1">)</span></p>
<p class="p2">&nbsp;</p>
<p class="p1">ทำการ Add CoreData.framework เข้าไปใน Project</p>
<p class="p3">&nbsp;</p>
<p class="p1">Import Framework ใน ProjectName_Prefix.pch (ส่วนใหญ่อยู่ใน Other Sources)</p>
<p class="p3">&nbsp;</p>
<p class="p4"><span class="s2">#import </span>&lt;Availability.h&gt;</p>
<p class="p5">&nbsp;</p>
<p class="p6">#ifndef __IPHONE_3_0</p>
<p class="p7">// #warning &#8220;Projects that use Core Data only build using iPhone SDK 3.0 and later&#8221;</p>
<p class="p6">#endif</p>
<p class="p5">&nbsp;</p>
<p class="p6">#ifdef __OBJC__</p>
<p class="p4"><span class="s3"> </span><span class="s2">#import </span>&lt;Foundation/Foundation.h&gt;</p>
<p class="p4"><span class="s3"> </span><span class="s2">#import </span>&lt;UIKit/UIKit.h&gt;</p>
<p class="p4"><span class="s3"> </span><span class="s2">#import </span>&lt;CoreData/CoreData.h&gt;</p>
<p class="p6">#endif</p>
<p class="p3">&nbsp;</p>
<p class="p1">สร้าง File Data Model โดยเลือก Add -&gt; New FIle เลือกที่ Resource -&gt; Data Model</p>
<p class="p1">ออบแบบ Data Model (ใน File .xcdatamodel)</p>
<p class="p1">โดยเพิ่ม Class ในส่วนของ Entity (เครื่องหมาย +) แล้วตั้งชื่อ Class</p>
<p class="p1">และ Attribute ใน Property (เครื่องหมาย +) สำหรับ Attribute ต้องทำการกำหนดชนิดด้วย</p>
<p class="p3">&nbsp;</p>
<p class="p1">หลังจากออกแบบ Data Model เสร็จแล้วให้ Add -&gt; New File ใน Cocoa Touch Class เลือก Managed Object Class</p>
<p class="p1">ในหน้าที่ 3 ให้เลือก Class ที่ต้องการทำการ Generate Class จะได้ File Class.h และ Class.m มาใช้งาน</p>
<p class="p3">&nbsp;</p>
<p class="p1">เข้าไปที่ File AppDelegate.h</p>
<p class="p1">ทำการเพิ่ม Property</p>
<p class="p3">&nbsp;</p>
<p class="p8">NSPersistentStoreCoordinator<span class="s3"> *</span><span class="s4">persistentStoreCoordinator</span><span class="s3">;</span></p>
<p class="p8">NSManagedObjectModel<span class="s3"> *</span><span class="s4">managedObjectModel</span><span class="s3">;</span></p>
<p class="p8">NSManagedObjectContext<span class="s3"> *</span><span class="s4">managedObjectContext</span><span class="s3">;</span></p>
<p class="p5">&nbsp;</p>
<p class="p9"><span class="s5">@property</span> (<span class="s5">nonatomic</span>, <span class="s5">retain</span>, <span class="s5">readonly</span>) NSManagedObjectModel *managedObjectModel;</p>
<p class="p9"><span class="s5">@property</span> (<span class="s5">nonatomic</span>, <span class="s5">retain</span>, <span class="s5">readonly</span>) NSManagedObjectContext *managedObjectContext;</p>
<p class="p9"><span class="s5">@property</span> (<span class="s5">nonatomic</span>, <span class="s5">retain</span>, <span class="s5">readonly</span>) NSPersistentStoreCoordinator *persistentStoreCoordinator;</p>
<p class="p9"><span class="s5">@property</span> (<span class="s5">nonatomic</span>, <span class="s5">readonly</span>) NSString *applicationDocumentsDirectory;</p>
<p class="p3">&nbsp;</p>
<p class="p1">AppDelegate.m</p>
<p class="p1">สร้าง Object ของ NSManagedObjectContext ใน</p>
<p class="p3">&nbsp;</p>
<p class="p9">- (<span class="s5">BOOL</span>)application:(<span class="s6">UIApplication</span> *)application didFinishLaunchingWithOptions:(<span class="s6">NSDictionary</span> *)launchOptions;</p>
<p class="p3">&nbsp;</p>
<p class="p8">NSManagedObjectContext<span class="s3"> *context = [</span><span class="s5">self</span><span class="s3"> </span><span class="s7">managedObjectContext</span><span class="s3">];</span></p>
<p class="p9"><span class="s5">if</span> (!context) {</p>
<p class="p7"><span class="s3"> </span>// Handle the error.</p>
<p class="p9">}</p>
<p class="p3">&nbsp;</p>
<p class="p1">ใน Method</p>
<p class="p3">&nbsp;</p>
<p class="p9">- (<span class="s5">void</span>)applicationWillTerminate:(<span class="s6">UIApplication</span> *)application;</p>
<p class="p5">&nbsp;</p>
<p class="p1">เพิ่ม</p>
<p class="p5">&nbsp;</p>
<p class="p9"><span class="s6">NSError</span> *error;</p>
<p class="p10"><span class="s3"> </span><span class="s5">if</span><span class="s3"> (</span>managedObjectContext<span class="s3"> != </span><span class="s5">nil</span><span class="s3">) {</span></p>
<p class="p10"><span class="s3"> </span><span class="s5">if</span><span class="s3"> ([</span>managedObjectContext<span class="s3"> </span><span class="s7">hasChanges</span><span class="s3">] &amp;&amp; ![</span>managedObjectContext<span class="s3"> </span><span class="s7">save</span><span class="s3">:&amp;error]) {</span></p>
<p class="p7"><span class="s3"> </span>// Handle the error.</p>
<p class="p9">}</p>
<p class="p9">}</p>
<p class="p3">&nbsp;</p>
<p class="p1">ใน dealloc</p>
<p class="p3">&nbsp;</p>
<p class="p10"><span class="s3"> [</span>managedObjectContext<span class="s3"> </span><span class="s7">release</span><span class="s3">];</span></p>
<p class="p10"><span class="s3"> [</span>managedObjectModel<span class="s3"> </span><span class="s7">release</span><span class="s3">];</span></p>
<p class="p10"><span class="s3"> [</span>persistentStoreCoordinator<span class="s3"> </span><span class="s7">release</span><span class="s3">];</span></p>
<p class="p3">&nbsp;</p>
<p class="p1">เพิ่ม Method ที่ทำงานเป็น Getter สำหรับ Property แต่ละตัวที่เพิ่มเข้าไป</p>
<p class="p3">&nbsp;</p>
<p class="p9">- (<span class="s6">NSManagedObjectContext</span> *) managedObjectContext {</p>
<p class="p5">&nbsp;</p>
<p class="p10"><span class="s3"> </span><span class="s5">if</span><span class="s3"> (</span>managedObjectContext<span class="s3"> != </span><span class="s5">nil</span><span class="s3">) {</span></p>
<p class="p10"><span class="s3"> </span><span class="s5">return</span><span class="s3"> </span>managedObjectContext<span class="s3">;</span></p>
<p class="p9">}</p>
<p class="p5">&nbsp;</p>
<p class="p8"><span class="s3"> </span>NSPersistentStoreCoordinator<span class="s3"> *coordinator = [</span><span class="s5">self</span><span class="s3"> </span><span class="s7">persistentStoreCoordinator</span><span class="s3">];</span></p>
<p class="p9"><span class="s5">if</span> (coordinator != <span class="s5">nil</span>) {</p>
<p class="p8"><span class="s3"> </span><span class="s4">managedObjectContext</span><span class="s3"> = [[</span>NSManagedObjectContext<span class="s3"> </span><span class="s7">alloc</span><span class="s3">] </span><span class="s7">init</span><span class="s3">];</span></p>
<p class="p11"><span class="s3"> [</span><span class="s4">managedObjectContext</span><span class="s3"> </span>setPersistentStoreCoordinator<span class="s3">: coordinator];</span></p>
<p class="p9">}</p>
<p class="p10"><span class="s3"> </span><span class="s5">return</span><span class="s3"> </span>managedObjectContext<span class="s3">;</span></p>
<p class="p9">}</p>
<p class="p5">&nbsp;</p>
<p class="p9">- (<span class="s6">NSManagedObjectModel</span> *)managedObjectModel {</p>
<p class="p5">&nbsp;</p>
<p class="p10"><span class="s3"> </span><span class="s5">if</span><span class="s3"> (</span>managedObjectModel<span class="s3"> != </span><span class="s5">nil</span><span class="s3">) {</span></p>
<p class="p10"><span class="s3"> </span><span class="s5">return</span><span class="s3"> </span>managedObjectModel<span class="s3">;</span></p>
<p class="p9">}</p>
<p class="p11"><span class="s3"> </span><span class="s4">managedObjectModel</span><span class="s3"> = [[</span><span class="s6">NSManagedObjectModel</span><span class="s3"> </span>mergedModelFromBundles<span class="s3">:</span><span class="s5">nil</span><span class="s3">] </span>retain<span class="s3">]; </span></p>
<p class="p10"><span class="s3"> </span><span class="s5">return</span><span class="s3"> </span>managedObjectModel<span class="s3">;</span></p>
<p class="p9">}</p>
<p class="p5">&nbsp;</p>
<p class="p9">- (<span class="s6">NSPersistentStoreCoordinator</span> *)persistentStoreCoordinator {</p>
<p class="p5">&nbsp;</p>
<p class="p10"><span class="s3"> </span><span class="s5">if</span><span class="s3"> (</span>persistentStoreCoordinator<span class="s3"> != </span><span class="s5">nil</span><span class="s3">) {</span></p>
<p class="p10"><span class="s3"> </span><span class="s5">return</span><span class="s3"> </span>persistentStoreCoordinator<span class="s3">;</span></p>
<p class="p9">}</p>
<p class="p5">&nbsp;</p>
<p class="p11"><span class="s3"> </span><span class="s6">NSURL</span><span class="s3"> *storeUrl = [</span><span class="s6">NSURL</span><span class="s3"> </span>fileURLWithPath<span class="s3">: [[</span><span class="s5">self</span><span class="s3"> </span><span class="s8">applicationDocumentsDirectory</span><span class="s3">] </span>stringByAppendingPathComponent<span class="s3">: </span><span class="s9">@&#8221;CoreDataName.sqlite&#8221;</span><span class="s3">]];</span></p>
<p class="p5">&nbsp;</p>
<p class="p9"><span class="s6">NSError</span> *error;</p>
<p class="p11"><span class="s3"> </span><span class="s4">persistentStoreCoordinator</span><span class="s3"> = [[</span><span class="s6">NSPersistentStoreCoordinator</span><span class="s3"> </span>alloc<span class="s3">] </span>initWithManagedObjectModel<span class="s3">: [</span><span class="s5">self</span><span class="s3"> </span>managedObjectModel<span class="s3">]];</span></p>
<p class="p11"><span class="s3"> </span><span class="s5">if</span><span class="s3"> (![</span><span class="s4">persistentStoreCoordinator</span><span class="s3"> </span>addPersistentStoreWithType<span class="s3">:</span><span class="s6">NSSQLiteStoreType</span><span class="s3"> </span>configuration<span class="s3">:</span><span class="s5">nil</span><span class="s3"> </span>URL<span class="s3">:storeUrl </span>options<span class="s3">:</span><span class="s5">nil</span><span class="s3"> </span>error<span class="s3">:&amp;error]) {</span></p>
<p class="p7"><span class="s3"> </span>// Handle the error.</p>
<p class="p9">}</p>
<p class="p5">&nbsp;</p>
<p class="p10"><span class="s3"> </span><span class="s5">return</span><span class="s3"> </span>persistentStoreCoordinator<span class="s3">;</span></p>
<p class="p9">}</p>
<p class="p5">&nbsp;</p>
<p class="p9">- (<span class="s6">NSString</span> *)applicationDocumentsDirectory {</p>
<p class="p5">&nbsp;</p>
<p class="p11"><span class="s3"> </span><span class="s6">NSArray</span><span class="s3"> *paths = </span>NSSearchPathForDirectoriesInDomains<span class="s3">(</span>NSDocumentDirectory<span class="s3">, </span>NSUserDomainMask<span class="s3">, </span><span class="s5">YES</span><span class="s3">);</span></p>
<p class="p9"><span class="s6">NSString</span> *basePath = ([paths <span class="s7">count</span>] &gt; <span class="s10">0</span>) ? [paths <span class="s7">objectAtIndex</span>:<span class="s10">0</span>] : <span class="s5">nil</span>;</p>
<p class="p9"><span class="s5">return</span> basePath;</p>
<p class="p9">}</p>
<p class="p3">&nbsp;</p>
<p class="p1">สร้าง MainViewController</p>
<p class="p1">ใน MainViewController.h สร้าง Property สำหรับเก็บข้อมูล และ NSManagedObjectContext</p>
<p class="p3">&nbsp;</p>
<p class="p8">NSMutableArray<span class="s3"> *</span><span class="s4">dataArray</span><span class="s3">;</span></p>
<p class="p8">NSManagedObjectContext<span class="s3"> *</span><span class="s4">managedObjectContext</span><span class="s3">;</span></p>
<p class="p3">&nbsp;</p>
<p class="p9"><span class="s5">@property</span> (<span class="s5">nonatomic</span>, <span class="s5">retain</span>) NSMutableArray *dataArray;</p>
<p class="p9"><span class="s5">@property</span> (<span class="s5">nonatomic</span>, <span class="s5">retain</span>) NSManagedObjectContext *managedObjectContext;</p>
<p class="p3">&nbsp;</p>
<p class="p1">ใน MainViewController.m</p>
<p class="p1">ทำ Synthesize Property</p>
<p class="p3">&nbsp;</p>
<p class="p9"><span class="s5">@synthesize</span> dataArray, managedObjectContext;</p>
<p class="p3">&nbsp;</p>
<p class="p1">การดึงข้อมูล (ถ้าไม่ต้องการ Sort ก็ไม่จำเป็นต้องใส่ส่วนของ <span class="s11">NSSortDescriptor</span>)</p>
<p class="p3">&nbsp;</p>
<p class="p8">NSFetchRequest<span class="s3"> *request = [[</span>NSFetchRequest<span class="s3"> </span><span class="s7">alloc</span><span class="s3">] </span><span class="s7">init</span><span class="s3">];</span></p>
<p class="p8"><span class="s3"> </span>NSEntityDescription<span class="s3"> *entity = [</span>NSEntityDescription<span class="s3"> </span><span class="s7">entityForName</span><span class="s3">:</span><span class="s9">@"Person"</span><span class="s3"> </span><span class="s7">inManagedObjectContext</span><span class="s3">:</span><span class="s4">managedObjectContext</span><span class="s3">];</span></p>
<p class="p9">[request <span class="s7">setEntity</span>:entity];</p>
<p class="p5">&nbsp;</p>
<p class="p8"><span class="s3"> </span>NSSortDescriptor<span class="s3"> *sortDescriptor = [[</span>NSSortDescriptor<span class="s3"> </span><span class="s7">alloc</span><span class="s3">] </span><span class="s7">initWithKey</span><span class="s3">:</span><span class="s9">@&#8221;name&#8221;</span><span class="s3"> </span><span class="s7">ascending</span><span class="s3">:</span><span class="s5">YES</span><span class="s3">];</span></p>
<p class="p9"><span class="s6">NSArray</span> *sortDescriptors = [[<span class="s6">NSArray</span> <span class="s7">alloc</span>] <span class="s7">initWithObjects</span>:sortDescriptor, <span class="s5">nil</span>];</p>
<p class="p9">[request <span class="s7">setSortDescriptors</span>:sortDescriptors];</p>
<p class="p9">[sortDescriptor <span class="s7">release</span>];</p>
<p class="p9">[sortDescriptors <span class="s7">release</span>];</p>
<p class="p5">&nbsp;</p>
<p class="p9"><span class="s6">NSError</span> *error = <span class="s5">nil</span>;</p>
<p class="p9"><span class="s6">NSMutableArray</span> *mutableFetchResults = [[<span class="s4">managedObjectContext</span> <span class="s7">executeFetchRequest</span>:request <span class="s7">error</span>:&amp;error] <span class="s7">mutableCopy</span>];</p>
<p class="p9"><span class="s5">if</span> (mutableFetchResults == <span class="s5">nil</span>) {</p>
<p class="p7"><span class="s3"> </span>// Handle the error.</p>
<p class="p9">}</p>
<p class="p5">&nbsp;</p>
<p class="p9">[<span class="s5">self</span> <span class="s8">setDataArray</span>:mutableFetchResults];</p>
<p class="p9">[mutableFetchResults <span class="s7">release</span>];</p>
<p class="p9">[request <span class="s7">release</span>];</p>
<p class="p3">&nbsp;</p>
<p class="p1">การเพิ่มข้อมูล</p>
<p class="p3">&nbsp;</p>
<p class="p11"><span class="s3"> </span><span class="s4">Person</span><span class="s3"> *person = (</span><span class="s4">Person</span><span class="s3"> *)[</span><span class="s6">NSEntityDescription</span><span class="s3"> </span>insertNewObjectForEntityForName<span class="s3">:</span><span class="s9">@"Person"</span><span class="s3"> </span>inManagedObjectContext<span class="s3">:</span><span class="s4">managedObjectContext</span><span class="s3">];</span></p>
<p class="p9">[person <span class="s8">setName</span>:<span class="s9">@"Name"</span>];</p>
<p class="p9">[person <span class="s8">setSurname</span>:<span class="s9">@"Surname"</span>];</p>
<p class="p3">&nbsp;</p>
<p class="p9"><span class="s6"> NSError</span> *error;</p>
<p class="p10"><span class="s3"> </span><span class="s5">if</span><span class="s3"> (![</span>managedObjectContext<span class="s3"> </span><span class="s7">save</span><span class="s3">:&amp;error]) {</span></p>
<p class="p7"><span class="s3"> </span>// Handle the error.</p>
<p class="p9">}</p>
<p class="p5">&nbsp;</p>
<p class="p9">[<span class="s4">dataArray</span> <span class="s7">addObject</span>:person];</p>
<p class="p3">&nbsp;</p>
<p class="p1">การลบข้อมูล</p>
<p class="p3">&nbsp;</p>
<p class="p9"><span class="s6">NSManagedObject</span> *personToDelete = [<span class="s4">dataArray</span> <span class="s7">objectAtIndex</span>:index];</p>
<p class="p9">[<span class="s4">managedObjectContext</span> <span class="s7">deleteObject</span>:personToDelete];</p>
<p class="p5">&nbsp;</p>
<p class="p9"><span class="s6">NSError</span> *error;</p>
<p class="p10"><span class="s3"> </span><span class="s5">if</span><span class="s3"> (![</span>managedObjectContext<span class="s3"> </span><span class="s7">save</span><span class="s3">:&amp;error]) {</span></p>
<p class="p7"><span class="s3"> </span>// Handle the error.</p>
<p class="p9">}</p>
<p class="p5">&nbsp;</p>
<p class="p11"><span class="s3"> [</span><span class="s4">dataArray</span><span class="s3"> </span>removeObjectAtIndex<span class="s3">:index];</span></p>
<p class="p3">&nbsp;</p>
<p class="p1">การแก้ไขข้อมูล</p>
<p class="p5">&nbsp;</p>
<p class="p9"><span class="s4">Person</span> *p = (<span class="s4">Person</span> *)[<span class="s4">dataArray</span> <span class="s7">objectAtIndex</span>:index];</p>
<p class="p10"><span class="s3"> p.</span><span class="s6">name</span><span class="s3"> = </span>nameField<span class="s3">.</span><span class="s6">text</span><span class="s3">;</span></p>
<p class="p10"><span class="s3"> p.</span>surename<span class="s3"> = </span>surenameField<span class="s3">.</span><span class="s6">text</span></p>
<p class="p12">&nbsp;</p>
<p class="p8"><span class="s3"> </span><span class="s5">if</span><span class="s3"> (![p.</span>managedObjectContext<span class="s3"> </span><span class="s7">save</span><span class="s3">:&amp;error]){</span></p>
<p class="p7"><span class="s3"> </span>// Handle the error.</p>
<p class="p9">}</p>
<p class="p3">&nbsp;</p>
<p class="p1">กลับไปที่ AppDelegate.m</p>
<p class="p3">&nbsp;</p>
<p class="p4"><span class="s2">#import </span>&#8220;MainViewController.h&#8221;</p>
<p class="p13">&nbsp;</p>
<p class="p9"><span class="s12">ใน </span>-(<span class="s5">BOOL</span>)application:(<span class="s6">UIApplication</span> *)application didFinishLaunchingWithOptions:(<span class="s6">NSDictionary</span> *)launchOptions;</p>
<p class="p3">&nbsp;</p>
<p class="p1">สร้าง MainViewController แล้วกำหนด <span class="s11">managedObjectContext</span></p>
<p class="p3">&nbsp;</p>
<p class="p10">MainViewController<span class="s3"> *mainViewController = [[</span>MainViewController<span class="s3"> </span><span class="s7">alloc</span><span class="s3">] </span><span class="s7">init</span><span class="s3">];</span></p>
<p class="p5">&nbsp;</p>
<p class="p8"><span class="s3"> </span>NSManagedObjectContext<span class="s3"> *context = [</span><span class="s5">self</span><span class="s3"> </span><span class="s7">managedObjectContext</span><span class="s3">];</span></p>
<p class="p9"><span class="s5">if</span> (!context) {</p>
<p class="p7"><span class="s3"> </span>// Handle the error.</p>
<p class="p9">}</p>
<p class="p5">&nbsp;</p>
<p class="p9">mainViewController.<span class="s6">managedObjectContext</span> = context;</p>
<p class="p5">&nbsp;</p>
<p class="p9">[<span class="s4">window</span> <span class="s7">addSubview</span>:mainViewController.<span class="s7">view</span>];</p>
<p class="p5">&nbsp;</p>
<p class="p11"><span class="s3"> [</span><span class="s4">window</span><span class="s3"> </span>makeKeyAndVisible<span class="s3">];</span></p>
<p class="p9">[mainViewController.view <span class="s7">release</span>];</p>
<p class="p3">&nbsp;</p>
<p class="p1">วิธีการ Filter ข้อมูลสร้าง Method (ใช้การดึงข้อมูล แต่มีการใช้ NSPredicate)</p>
<p class="p3">&nbsp;</p>
<p class="p9">-(<span class="s6">NSMutableArray</span> *) filterObjectInContextEntityName:(<span class="s6">NSString</span> *)entityName predicate:(<span class="s6">NSPredicate</span> *)predicate sortKey:(<span class="s6">NSString</span> *)sortKey sortAscending:(<span class="s5">BOOL</span>) sortAscending managedObjectContext:(<span class="s6">NSManagedObjectContext</span> *)context{</p>
<p class="p8"><span class="s3"> </span>NSFetchRequest<span class="s3"> *request = [[</span>NSFetchRequest<span class="s3"> </span><span class="s7">alloc</span><span class="s3">] </span><span class="s7">init</span><span class="s3">];</span></p>
<p class="p8"><span class="s3"> </span>NSEntityDescription<span class="s3"> *entity = [</span>NSEntityDescription<span class="s3"> </span><span class="s7">entityForName</span><span class="s3">:entityName </span><span class="s7">inManagedObjectContext</span><span class="s3">:context];</span></p>
<p class="p9">[request <span class="s7">setEntity</span>:entity];</p>
<p class="p5">&nbsp;</p>
<p class="p9"><span class="s5">if</span> (predicate != <span class="s5">nil</span>) {</p>
<p class="p9">[request <span class="s7">setPredicate</span>:predicate];</p>
<p class="p9">}</p>
<p class="p5">&nbsp;</p>
<p class="p9"><span class="s5">if</span> (sortKey != <span class="s5">nil</span>) {</p>
<p class="p9"><span class="s6">NSSortDescriptor</span> *sortDescriptor = [[<span class="s6">NSSortDescriptor</span> <span class="s7">alloc</span>] <span class="s7">initWithKey</span>:sortKey <span class="s7">ascending</span>:sortAscending];</p>
<p class="p9"><span class="s6">NSArray</span> *sortDescriptors = [[<span class="s6">NSArray</span> <span class="s7">alloc</span>] <span class="s7">initWithObjects</span>:sortDescriptor, <span class="s5">nil</span>];</p>
<p class="p9">[request <span class="s7">setSortDescriptors</span>:sortDescriptors];</p>
<p class="p9">[sortDescriptor <span class="s7">release</span>];</p>
<p class="p9">[sortDescriptors <span class="s7">release</span>];</p>
<p class="p9">}</p>
<p class="p5">&nbsp;</p>
<p class="p9"><span class="s6">NSError</span> *error = <span class="s5">nil</span>;</p>
<p class="p9"><span class="s6">NSMutableArray</span> *mutableFetchResults = [[[<span class="s4">managedObjectContext</span> <span class="s7">executeFetchRequest</span>:request <span class="s7">error</span>:&amp;error] <span class="s7">mutableCopy</span>] <span class="s7">autorelease</span>];</p>
<p class="p9"><span class="s5">if</span> (mutableFetchResults == <span class="s5">nil</span>) {</p>
<p class="p7"><span class="s3"> </span>// Handle the error.</p>
<p class="p9">}</p>
<p class="p5">&nbsp;</p>
<p class="p9">[request <span class="s7">release</span>];</p>
<p class="p5">&nbsp;</p>
<p class="p9"><span class="s5">return</span> mutableFetchResults;</p>
<p class="p9">}</p>
<p class="p3">&nbsp;</p>
<p class="p1">ตัวอย่างการใช้งาน</p>
<p class="p3">&nbsp;</p>
<p class="p14"><span class="s3"> [</span><span class="s5">self</span><span class="s3"> </span>setDataArray<span class="s3">:[</span><span class="s5">self</span><span class="s3"> </span>filterObjectInContextEntityName<span class="s3">:</span><span class="s9">@"Person"</span><span class="s3"> </span>predicate<span class="s3">:[</span><span class="s6">NSPredicate</span><span class="s3"> </span><span class="s7">predicateWithFormat</span><span class="s3">:</span><span class="s9">@"(surename == %@)"</span><span class="s3">, </span><span class="s4">surenameField</span><span class="s3">.</span><span class="s7">text</span><span class="s3">] </span>sortKey<span class="s3">:</span><span class="s9">@&#8221;name&#8221;</span><span class="s3"> </span>sortAscending<span class="s3">:</span><span class="s5">YES</span><span class="s3"> </span>managedObjectContext<span class="s3">:</span><span class="s4">managedObjectContext</span><span class="s3">]];</span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tanseven.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tanseven.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tanseven.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tanseven.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tanseven.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tanseven.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tanseven.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tanseven.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tanseven.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tanseven.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tanseven.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tanseven.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tanseven.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tanseven.wordpress.com/63/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanseven.wordpress.com&amp;blog=725453&amp;post=63&amp;subd=tanseven&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tanseven.wordpress.com/2010/11/11/coredata/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/380b47cb4f11c97050283a3c909b0842?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tanseven</media:title>
		</media:content>
	</item>
		<item>
		<title>Custom TableViewCell</title>
		<link>http://tanseven.wordpress.com/2010/10/12/custom-tableviewcell/</link>
		<comments>http://tanseven.wordpress.com/2010/10/12/custom-tableviewcell/#comments</comments>
		<pubDate>Tue, 12 Oct 2010 15:26:26 +0000</pubDate>
		<dc:creator>tanseven</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[UITableView]]></category>
		<category><![CDATA[UITableViewCell]]></category>

		<guid isPermaLink="false">http://tanseven.wordpress.com/?p=60</guid>
		<description><![CDATA[การออกแบบ TableCell ใน Table ขั้นแรกสร้าง UITableView ขึ้นมาก่อน หลังจากนั้นสร้าง File ใหม่โดย Add -&#62; New File -&#62; Objective-C class ตรง Subclass of เลือก UITableViewCell สร้าง Interface FIle (.xib) ออกแบบ UI สร้าง Outlet กำหนด Property และทำ Synthesize เข้าไปที่ FIle ViewController.m ที่มี UITableView #import &#8220;MyTableViewCell.h&#8221; ใน Method ของ DataSource -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; เราจะทำการสร้าง UITableViewCell -(UITableViewCell *)tableView:(UITableView *)tableView [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanseven.wordpress.com&amp;blog=725453&amp;post=60&amp;subd=tanseven&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>การออกแบบ TableCell ใน Table</p>
<p>ขั้นแรกสร้าง UITableView ขึ้นมาก่อน</p>
<p>หลังจากนั้นสร้าง File ใหม่โดย</p>
<p>Add -&gt; New File -&gt; Objective-C class ตรง Subclass of เลือก UITableViewCell</p>
<p>สร้าง Interface FIle (.xib) ออกแบบ UI</p>
<p>สร้าง Outlet กำหนด Property และทำ Synthesize</p>
<p>เข้าไปที่ FIle ViewController.m ที่มี UITableView</p>
<p>#import &#8220;MyTableViewCell.h&#8221;</p>
<p>ใน Method ของ DataSource</p>
<p>-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;</p>
<p>เราจะทำการสร้าง UITableViewCell</p>
<p>-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{</p>
<p>MyTableViewCell *cell = (MyTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"Cell"];</p>
<p>if (cell == nil) {</p>
<p>NSArray *cellArray = [[NSBundle mainBundle] loadNibNamed:@&#8221;TableCell&#8221; owner:self options:nil];</p>
<p>for (int i = 0; i &lt; [cellArray count]; ++i) {</p>
<p>id obj = [cellArray objectAtIndex:i];</p>
<p>if ([obj isKindOfClass:[MyTableViewCell class]]) {</p>
<p>cell = obj;</p>
<p>cell.cellLabel.text = [NSString stringWithFormat:@"%d", i];</p>
<p>cell.backgroungImage = [UIImage imageNamed:@"cellBackgroundImage.png"];</p>
<p>}</p>
<p>}</p>
<p>}</p>
<p>return cell;</p>
<p>}</p>
<p>การกำหนดความสูงของ TableViewCell</p>
<p>- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{</p>
<p>return 100.0f;</p>
<p>}</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tanseven.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tanseven.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tanseven.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tanseven.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tanseven.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tanseven.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tanseven.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tanseven.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tanseven.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tanseven.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tanseven.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tanseven.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tanseven.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tanseven.wordpress.com/60/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanseven.wordpress.com&amp;blog=725453&amp;post=60&amp;subd=tanseven&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tanseven.wordpress.com/2010/10/12/custom-tableviewcell/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/380b47cb4f11c97050283a3c909b0842?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tanseven</media:title>
		</media:content>
	</item>
		<item>
		<title>UITableView (Basic)</title>
		<link>http://tanseven.wordpress.com/2010/10/01/uitableview-basic/</link>
		<comments>http://tanseven.wordpress.com/2010/10/01/uitableview-basic/#comments</comments>
		<pubDate>Fri, 01 Oct 2010 10:07:45 +0000</pubDate>
		<dc:creator>tanseven</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[UITableView]]></category>

		<guid isPermaLink="false">http://tanseven.wordpress.com/?p=53</guid>
		<description><![CDATA[วิธีทำ UITableView ใน iPhone ใน iPhone เราจะพบ Application ที่ใช้ UITableView เป็นส่วนประกอบหลายตัว วิธีทำในขั้นพื้นฐานก็ง่ายมากครับ ขั้นแรกก็สร้าง UITableView แล้วกำหนด Delegate และ DataSource _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 300, 450) style:UITableViewStylePlain]; _tableView.delegate = self; _tableView.dataSource = self; สำหรับ UITableView จะมีส่วนของ Delegate และ DataSource ที่เราจำเป็นต้อง Implement ที่สำคัญ 3 ตัว -(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath; Method ที่จะทำงานเมื่อเราทำการเลือก Cell ใน Table ที่เราสร้างขึ้น -(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath; Method สำหรับการสร้าง [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanseven.wordpress.com&amp;blog=725453&amp;post=53&amp;subd=tanseven&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>วิธีทำ UITableView ใน iPhone</p>
<p>ใน iPhone เราจะพบ Application ที่ใช้ UITableView เป็นส่วนประกอบหลายตัว</p>
<p>วิธีทำในขั้นพื้นฐานก็ง่ายมากครับ</p>
<p>ขั้นแรกก็สร้าง UITableView แล้วกำหนด Delegate และ DataSource</p>
<blockquote><p>_tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 300, 450) style:UITableViewStylePlain];</p>
<p>_tableView.delegate = self;</p>
<p>_tableView.dataSource = self;</p></blockquote>
<p>สำหรับ UITableView จะมีส่วนของ Delegate และ DataSource ที่เราจำเป็นต้อง Implement ที่สำคัญ 3 ตัว</p>
<blockquote><p>-(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath;</p></blockquote>
<p>Method ที่จะทำงานเมื่อเราทำการเลือก Cell ใน Table ที่เราสร้างขึ้น</p>
<blockquote><p>-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath;</p></blockquote>
<p>Method สำหรับการสร้าง Table Cell</p>
<blockquote><p>-(NSInteger)tableView:(UITableView*)table numberOfRowsInSection:(NSInteger)section;</p></blockquote>
<p>Method ที่จะบอกจำนวน Cell ของ Table</p>
<p><span style="text-decoration:underline;">Example</span></p>
<blockquote><p>-(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath{<br />
NSLog(@&#8221;%@ :: %@&#8221;, indexPath, [_tableData objectAtIndex:indexPath.row] );<br />
}</p>
<p>-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{<br />
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cellIdentifier"];<br />
if (cell == nil) {<br />
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@&#8221;cellIdentifier&#8221;] autorelease];<br />
}<br />
cell.textLabel.text = [_tableData objectAtIndex:indexPath.row];<br />
return cell;<br />
}<br />
-(NSInteger)tableView:(UITableView*)table numberOfRowsInSection:(NSInteger)section{<br />
return [_tableData count];<br />
}</p></blockquote>
<p>ในตัวอย่างจะใช้ NSArray _tableData เก็บข้อมูลของ Cell ใน Table ไว้นะครับ<br />
เมื่อเลือกก็จะแสดง indexPath และข้อมูลออกมาครับ</p>
<p>*การประกาศตัวแปร การใช้ Delegate หาตัวอย่างได้ทั่วไปนะครับ (ในนี้จะไม่ได้ใส่ไว้)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tanseven.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tanseven.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tanseven.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tanseven.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tanseven.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tanseven.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tanseven.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tanseven.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tanseven.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tanseven.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tanseven.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tanseven.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tanseven.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tanseven.wordpress.com/53/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanseven.wordpress.com&amp;blog=725453&amp;post=53&amp;subd=tanseven&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tanseven.wordpress.com/2010/10/01/uitableview-basic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/380b47cb4f11c97050283a3c909b0842?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tanseven</media:title>
		</media:content>
	</item>
		<item>
		<title>NSString &amp; NSData</title>
		<link>http://tanseven.wordpress.com/2010/08/03/nsstring-nsdata/</link>
		<comments>http://tanseven.wordpress.com/2010/08/03/nsstring-nsdata/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 02:30:27 +0000</pubDate>
		<dc:creator>tanseven</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Trick]]></category>

		<guid isPermaLink="false">http://tanseven.wordpress.com/?p=49</guid>
		<description><![CDATA[สวัสดีครับ วันนี้ก็จะเป็น เรื่องของ NSString และ NSData นะครับ ซึ่งในการใช้งานบางทีเราอาจต้องมีการเล่นกับข้อมูล NSString เป็นข้อมูลที่เราอ่านเข้าใจได้ แต่เราอาจต้องทำการแปลงข้อมูลนั้น เพื่อนำไปให้คอมพิวเตอร์ใช้งาน ในบางครั้งเราจึงจำเป็นต้องแปลงข้อมูลจาก NSString เป็น NSData หรืออาจจะต้องแปลง NSData เป็น NSString ซึ่งวิธีการก็ง่ายๆ ครับ //NSString &#8211;&#62; NSData NSString *str = @&#8221;Hello&#8221;; NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding]; //NSData &#8211;&#62; NSString NSString *str2 = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; แต่ถ้าจะอ่านจาก File ก็จะเป็นอีก Method ครับ -(id)initWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error ส่วนที่เหลือลองอ่าน [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanseven.wordpress.com&amp;blog=725453&amp;post=49&amp;subd=tanseven&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>สวัสดีครับ</p>
<p>วันนี้ก็จะเป็น เรื่องของ NSString และ NSData นะครับ</p>
<p>ซึ่งในการใช้งานบางทีเราอาจต้องมีการเล่นกับข้อมูล</p>
<p>NSString เป็นข้อมูลที่เราอ่านเข้าใจได้ แต่เราอาจต้องทำการแปลงข้อมูลนั้น</p>
<p>เพื่อนำไปให้คอมพิวเตอร์ใช้งาน ในบางครั้งเราจึงจำเป็นต้องแปลงข้อมูลจาก NSString เป็น NSData</p>
<p>หรืออาจจะต้องแปลง NSData เป็น NSString ซึ่งวิธีการก็ง่ายๆ ครับ</p>
<p>//NSString &#8211;&gt; NSData</p>
<p>NSString *str = @&#8221;Hello&#8221;;</p>
<p>NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];</p>
<p>//NSData &#8211;&gt; NSString</p>
<p>NSString *str2 = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];</p>
<p>แต่ถ้าจะอ่านจาก File ก็จะเป็นอีก Method ครับ</p>
<p>-(id)initWithContentsOfFile:(NSString *)<em>path </em>encoding:(NSStringEncoding)<em>enc </em>error:(<a href="///Developer/Platforms/iPhoneOS.platform/Developer/Documentation/DocSets/com.apple.adc.documentation.AppleiPhone3_2.iPhoneLibrary.docset/Contents/Resources/Documents/documentation/Cocoa/Reference/Foundation/Classes/NSError_Class/Reference/Reference.html#//apple_ref/doc/c_ref/NSError" target="_top">NSError</a> **)<em>error</em></p>
<p>ส่วนที่เหลือลองอ่าน Doc ดูนะครับ&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tanseven.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tanseven.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tanseven.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tanseven.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tanseven.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tanseven.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tanseven.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tanseven.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tanseven.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tanseven.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tanseven.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tanseven.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tanseven.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tanseven.wordpress.com/49/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanseven.wordpress.com&amp;blog=725453&amp;post=49&amp;subd=tanseven&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tanseven.wordpress.com/2010/08/03/nsstring-nsdata/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/380b47cb4f11c97050283a3c909b0842?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tanseven</media:title>
		</media:content>
	</item>
		<item>
		<title>ปรับ ScrollView ให้เลื่อนทีละครึ่งหน้า</title>
		<link>http://tanseven.wordpress.com/2010/07/26/%e0%b8%9b%e0%b8%a3%e0%b8%b1%e0%b8%9a-scrollview-%e0%b9%83%e0%b8%ab%e0%b9%89%e0%b9%80%e0%b8%a5%e0%b8%b7%e0%b9%88%e0%b8%ad%e0%b8%99%e0%b8%97%e0%b8%b5%e0%b8%a5%e0%b8%b0%e0%b8%84%e0%b8%a3%e0%b8%b6/</link>
		<comments>http://tanseven.wordpress.com/2010/07/26/%e0%b8%9b%e0%b8%a3%e0%b8%b1%e0%b8%9a-scrollview-%e0%b9%83%e0%b8%ab%e0%b9%89%e0%b9%80%e0%b8%a5%e0%b8%b7%e0%b9%88%e0%b8%ad%e0%b8%99%e0%b8%97%e0%b8%b5%e0%b8%a5%e0%b8%b0%e0%b8%84%e0%b8%a3%e0%b8%b6/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 07:54:51 +0000</pubDate>
		<dc:creator>tanseven</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[UIScrollView]]></category>

		<guid isPermaLink="false">http://tanseven.wordpress.com/?p=42</guid>
		<description><![CDATA[สวัสดีครับ หลังจากหัดเขียน iPhone ก็เจอปัญหากับ ScrollView ต้องการให้เลื่อนที่ละครึ่งหน้า แต่เมื่อใช้ pagingEnabled เมื่อเลื่อน ScrollView  Page จะเลื่อนที่ละหน้า&#8230; พอลองทำก็เจอปัญหาหลายๆ อย่าง กระตุกบ้าง หยุดไม่ได้บ้าง สุดท้ายก็ไปหาวิธีการได้ (จำเว็บไม่ได้) สิ่งที่เราต้องทำคือ Implement Delegate Method ของ UIScrollView ที่ชื่อ - (void) scrollViewDidScroll:(UIScrollView *)scrollView; ซึ่งจะทำงานเมื่อเกิดการเลื่อน ตัวอย่าง Code สร้าง UIScrollView แล้วกำหนด pagingEnabled = YES ก่อนนะครับ - (void) scrollViewDidScroll:(UIScrollView *)scrollView { CGFloat offset = scrollView.contentOffset.x / 2; CGAffineTransform transform = CGAffineTransformMakeTranslation(offset, 0); [_contentController.view [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanseven.wordpress.com&amp;blog=725453&amp;post=42&amp;subd=tanseven&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>สวัสดีครับ</p>
<p>หลังจากหัดเขียน iPhone ก็เจอปัญหากับ ScrollView</p>
<p>ต้องการให้เลื่อนที่ละครึ่งหน้า แต่เมื่อใช้ pagingEnabled เมื่อเลื่อน ScrollView  Page จะเลื่อนที่ละหน้า&#8230;</p>
<p>พอลองทำก็เจอปัญหาหลายๆ อย่าง กระตุกบ้าง หยุดไม่ได้บ้าง</p>
<p>สุดท้ายก็ไปหาวิธีการได้ (จำเว็บไม่ได้)</p>
<p>สิ่งที่เราต้องทำคือ Implement Delegate Method ของ UIScrollView ที่ชื่อ</p>
<p>- (void) scrollViewDidScroll:(UIScrollView *)scrollView;</p>
<p>ซึ่งจะทำงานเมื่อเกิดการเลื่อน</p>
<p>ตัวอย่าง Code</p>
<p>สร้าง UIScrollView แล้วกำหนด pagingEnabled = YES ก่อนนะครับ</p>
<p>- (void) scrollViewDidScroll:(UIScrollView *)scrollView {</p>
<p>CGFloat offset = scrollView.contentOffset.x / 2;</p>
<p>CGAffineTransform transform = CGAffineTransformMakeTranslation(offset, 0);</p>
<p>[_contentController.view setTransform:transform];</p>
<p>}</p>
<p>เมื่อเกิดการเลื่อนก็ให้ใช้ AffineTransform transform เลื่อนส่วนที่เป็น Content (ในี่นี้จะเลื่อนที่ละครึ่งหน้า)</p>
<p>หลังจากลองใช้งานดูก็พบว่ามีปัญหานิดหน่อยครับ</p>
<p>คือเมื่อ Paging ทำงานจำนวน Page จะถูกคำนวณไว้ ซึ่งทำให้เราเลื่อนได้เท่ากับจำนวนหน้าที่คำนวณไว้</p>
<p>จากตัวอย่างถ้า เราทำไว้ 10 หน้าแล้วให้เลื่อนไปทีละครึ่งหน้าเราจะไปได้แค่หน้าที่ 5</p>
<p>วิธีแก้ไขง่ายๆ คือเพิ่มขนาดของ ContentView ขึ่้น 2 เท่าเราก็จะสามารถเลื่อนได้จนหน้าสุดท้ายครับ</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tanseven.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tanseven.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tanseven.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tanseven.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tanseven.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tanseven.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tanseven.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tanseven.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tanseven.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tanseven.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tanseven.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tanseven.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tanseven.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tanseven.wordpress.com/42/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanseven.wordpress.com&amp;blog=725453&amp;post=42&amp;subd=tanseven&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tanseven.wordpress.com/2010/07/26/%e0%b8%9b%e0%b8%a3%e0%b8%b1%e0%b8%9a-scrollview-%e0%b9%83%e0%b8%ab%e0%b9%89%e0%b9%80%e0%b8%a5%e0%b8%b7%e0%b9%88%e0%b8%ad%e0%b8%99%e0%b8%97%e0%b8%b5%e0%b8%a5%e0%b8%b0%e0%b8%84%e0%b8%a3%e0%b8%b6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/380b47cb4f11c97050283a3c909b0842?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tanseven</media:title>
		</media:content>
	</item>
		<item>
		<title>AsyncSocket</title>
		<link>http://tanseven.wordpress.com/2010/06/26/asyncsocket/</link>
		<comments>http://tanseven.wordpress.com/2010/06/26/asyncsocket/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 16:27:39 +0000</pubDate>
		<dc:creator>tanseven</dc:creator>
				<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://tanseven.wordpress.com/?p=38</guid>
		<description><![CDATA[สวัสดีครับ ตอนนี้มีโอกาสได้มาเขียน iPhone Application (ตอนนี้ยังมือใหม่อยู่ครับ&#8230;) ได้เล่นลองใช้ Lib ชื่อ AsyncSocket (Download) เป็น Lib สำหรับการส่งผ่านข้อมูลไปยัง Server โดยใช้ข้อมูล Host และ Port สำหรับ Lib ตัวนี้ขั้นแรกต้องเพิ่ม Framework ก่อนนะครับ Framework ที่เราต้องเพิ่มคือ CFNetwork.framework ครับ มาเริ่มกันเลย เริ่มจากการสร้าง Object ของ AsyncSocket _asyncSocket = [[AsyncSocket alloc] initWithDelegate:self]; หลังจากนั้นก็ทำการเชื่อมต่อนะครับ NSError *err = nil; [_asyncSocket connectToHost:_host onPort:_port error:&#38;err]; ใส่ Domain (_host) และ Port (_port) ที่ใช้ในการเชื่อมต่อเข้าไปครับ (Function จะ [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanseven.wordpress.com&amp;blog=725453&amp;post=38&amp;subd=tanseven&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>สวัสดีครับ</p>
<p>ตอนนี้มีโอกาสได้มาเขียน iPhone Application (ตอนนี้ยังมือใหม่อยู่ครับ&#8230;)</p>
<p>ได้เล่นลองใช้ Lib ชื่อ AsyncSocket (<a href="http://code.google.com/p/cocoaasyncsocket/source/checkout">Download</a>)</p>
<p>เป็น Lib สำหรับการส่งผ่านข้อมูลไปยัง Server โดยใช้ข้อมูล Host และ Port</p>
<p>สำหรับ Lib ตัวนี้ขั้นแรกต้องเพิ่ม Framework ก่อนนะครับ</p>
<p>Framework ที่เราต้องเพิ่มคือ <strong>CFNetwork.framework</strong> ครับ</p>
<p>มาเริ่มกันเลย</p>
<p>เริ่มจากการสร้าง Object ของ AsyncSocket</p>
<p><span style="color:#000000;">_asyncSocket</span> = [[AsyncSocket <span style="color:#000000;">alloc</span>] <span style="color:#000000;">initWithDelegate:self</span>];</p>
<p>หลังจากนั้นก็ทำการเชื่อมต่อนะครับ</p>
<p>NSError *err = nil;</p>
<p>[_asyncSocket connectToHost:_host onPort:_port error:&amp;err];</p>
<p>ใส่ Domain (_host) และ Port (_port) ที่ใช้ในการเชื่อมต่อเข้าไปครับ (Function จะ Return BOOL กลับมาให้ครับ)</p>
<p>ซึ่งจะมี Delegate ที่ทำงานคือ</p>
<p>-(void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port;</p>
<p>ถ้าเกิดการ Disconnect เมื่อมี Error จะมี Delegate ที่ตอบสนองคือ</p>
<p>-(void)onSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err;</p>
<p>และถ้าหากเราต้องการส่งข้อมูลนะครับ</p>
<p>[_asyncSocket writeData:_data withTimeout:TIMEOUT tag:0];</p>
<p>_data เป็น Object ของ NSData นะครับ TIMEOUT สามารถกำหนดได้ครับ</p>
<p>Delegate ที่ทำงานคือ</p>
<p>-(void)onSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag;</p>
<p>การรับข้อมูล</p>
<p>[sock readDataToData:[AsyncSocket CRLFData] withTimeout:TIMEOUT tag:0];</p>
<p>Delegate คือ</p>
<p>-(void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)aData withTag:(long)tag;</p>
<p>ผมก็พึ่งจะได้ลองใช้งานนะครับ</p>
<p>มีอะไรเพิ่มเติมก็ช่วยบอกด้วยครับ</p>
<p>ขอบคุณครับ&#8230;</p>
<p>ปล. ไม่ได้เขียน Blog มานานมากจำเครื่องมือไม่ได้แล้ว อ่านยากหน่อยนะครับ -_-&#8221;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tanseven.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tanseven.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tanseven.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tanseven.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tanseven.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tanseven.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tanseven.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tanseven.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tanseven.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tanseven.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tanseven.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tanseven.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tanseven.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tanseven.wordpress.com/38/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanseven.wordpress.com&amp;blog=725453&amp;post=38&amp;subd=tanseven&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tanseven.wordpress.com/2010/06/26/asyncsocket/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/380b47cb4f11c97050283a3c909b0842?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tanseven</media:title>
		</media:content>
	</item>
		<item>
		<title>ซื้อกล้องถ่ายรูปตัวแรกในชีวิต !!!</title>
		<link>http://tanseven.wordpress.com/2009/05/18/%e0%b8%8b%e0%b8%b7%e0%b9%89%e0%b8%ad%e0%b8%81%e0%b8%a5%e0%b9%89%e0%b8%ad%e0%b8%87%e0%b8%96%e0%b9%88%e0%b8%b2%e0%b8%a2%e0%b8%a3%e0%b8%b9%e0%b8%9b%e0%b8%95%e0%b8%b1%e0%b8%a7%e0%b9%81%e0%b8%a3%e0%b8%81/</link>
		<comments>http://tanseven.wordpress.com/2009/05/18/%e0%b8%8b%e0%b8%b7%e0%b9%89%e0%b8%ad%e0%b8%81%e0%b8%a5%e0%b9%89%e0%b8%ad%e0%b8%87%e0%b8%96%e0%b9%88%e0%b8%b2%e0%b8%a2%e0%b8%a3%e0%b8%b9%e0%b8%9b%e0%b8%95%e0%b8%b1%e0%b8%a7%e0%b9%81%e0%b8%a3%e0%b8%81/#comments</comments>
		<pubDate>Mon, 18 May 2009 14:53:48 +0000</pubDate>
		<dc:creator>tanseven</dc:creator>
				<category><![CDATA[ไร้สาระ]]></category>

		<guid isPermaLink="false">http://tanseven.wordpress.com/2009/05/18/%e0%b8%8b%e0%b8%b7%e0%b9%89%e0%b8%ad%e0%b8%81%e0%b8%a5%e0%b9%89%e0%b8%ad%e0%b8%87%e0%b8%96%e0%b9%88%e0%b8%b2%e0%b8%a2%e0%b8%a3%e0%b8%b9%e0%b8%9b%e0%b8%95%e0%b8%b1%e0%b8%a7%e0%b9%81%e0%b8%a3%e0%b8%81/</guid>
		<description><![CDATA[ไม่ได้เขียนมานานมาก (แต่ไม่มีคนอ่านอยู่แล้ว n_n) เมื่อวันที่ 14 พค พึ่งไปซื้อกล้องถ่ายรูปมา พอดีพี่เดฟไปร้านกล้องพอดี (ความรู้ไม่ค่อยมีเลยต้องหาคนช่วย) ก็ซื้อ D90 18 &#8211; 105 VR Kit ของ Nikon หลังจากซื้อกล้องถ่ายรูปเสร็จขากลับฝนดันตก -&#8221;- แต่โชคดีหน่อยนึงที่ตอนมาถึงนครปฐมมันซ่าแล้ว กลับบ้านมาก็รีบเอาออกมาแกะดูเลย (กลัวมันเปียก) หลังจากเอาออกมาซักพักปรากฏว่า &#8220;ลืม&#8220; ลืมซื้อที่เป่าฝุ่นกับสารกันชื้นมา&#8230; แต่สารกันชื้นก่อนกลับไปซื้อโดโซะมา (ใช้แทนไปก่อน) ก็ทำการประกอบเลนส์ เอาแบตออกมาชาร์จ ตอนเช้าก็เอามาใส่ Mem ใส่ แบต แล้วยัดลงกระเป๋าไว้ วันเสาร์เย็นๆ ก็แบกกล้องถ่ายรูปออกไปร่อน (ลองหน่อย) ก็ไปที่พระราชวังสนามจันทร์ (ไม่รู้จะไปไหนวนเวียนอยู่แถวนี้แหละ) เข้าไปถึงก็เริ่มมั่วเลย (ความรู้ไม่มียังไม่ยอมอ่านคู่มืออีก -&#8221;-) อันแรกเลย ถ่ายไปแล้วภาพมันไม่ชัดเท่าไหร่ พอดูแล้ว&#8230; มันมี VR ให้ใช้ดันลืมเปิด&#8230; ต่อมาเริ่มมั่วขึ้นอีก ปรับค่าไม่เป็นเริ่มงงกับ Mode ต่างๆ ปรับยังไง หมุนเล่นลองดู [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanseven.wordpress.com&amp;blog=725453&amp;post=36&amp;subd=tanseven&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>ไม่ได้เขียนมานานมาก (แต่ไม่มีคนอ่านอยู่แล้ว n_n)</p>
<p>เมื่อวันที่ 14 พค พึ่งไปซื้อกล้องถ่ายรูปมา</p>
<p>พอดีพี่เดฟไปร้านกล้องพอดี (ความรู้ไม่ค่อยมีเลยต้องหาคนช่วย)</p>
<p>ก็ซื้อ D90 18 &#8211; 105 VR Kit ของ Nikon</p>
<p>หลังจากซื้อกล้องถ่ายรูปเสร็จขากลับฝนดันตก -&#8221;-</p>
<p>แต่โชคดีหน่อยนึงที่ตอนมาถึงนครปฐมมันซ่าแล้ว</p>
<p>กลับบ้านมาก็รีบเอาออกมาแกะดูเลย (กลัวมันเปียก)</p>
<p>หลังจากเอาออกมาซักพักปรากฏว่า &#8220;<strong>ลืม</strong>&#8220;</p>
<p>ลืมซื้อที่เป่าฝุ่นกับสารกันชื้นมา&#8230;</p>
<p>แต่สารกันชื้นก่อนกลับไปซื้อโดโซะมา (ใช้แทนไปก่อน)</p>
<p>ก็ทำการประกอบเลนส์ เอาแบตออกมาชาร์จ</p>
<p>ตอนเช้าก็เอามาใส่ Mem ใส่ แบต แล้วยัดลงกระเป๋าไว้</p>
<p>วันเสาร์เย็นๆ ก็แบกกล้องถ่ายรูปออกไปร่อน (ลองหน่อย)</p>
<p>ก็ไปที่พระราชวังสนามจันทร์ (ไม่รู้จะไปไหนวนเวียนอยู่แถวนี้แหละ)</p>
<p>เข้าไปถึงก็เริ่มมั่วเลย (ความรู้ไม่มียังไม่ยอมอ่านคู่มืออีก -&#8221;-)</p>
<p>อันแรกเลย ถ่ายไปแล้วภาพมันไม่ชัดเท่าไหร่ พอดูแล้ว&#8230;</p>
<p>มันมี VR ให้ใช้ดันลืมเปิด&#8230;</p>
<p>ต่อมาเริ่มมั่วขึ้นอีก ปรับค่าไม่เป็นเริ่มงงกับ Mode ต่างๆ</p>
<p>ปรับยังไง หมุนเล่นลองดู -&#8221;- สุดท้ายใช้ที่มันมีอยู่แล้วนี่แหละ&#8230;</p>
<p>แล้วในหัวก็มีความคิดว่ากลับบ้านเอาคู่มือมันมาดูซักหน่อยเถอะ</p>
<p>วันอาทิตย์เย็น เอาหละมามั่วกันต่อ วันนี้อ่านคู่มือมานิดหน่อย</p>
<p>(ก็ยังงงอยู่ดีแหละ ไม่เคยหัดถ่ายรูปไม่ค่อยรู้เรื่อง)</p>
<p>วันนี้อ่านคู่มือมาแล้ว (นิดหน่อย Eng อ่อนแอ)</p>
<p>พอจะรู้วิธีปรับค่าแล้ว ^^ (ปรับไปทำไมก็ยังไม่ค่อยรู้)</p>
<p>ก็ถ่ายแบบมั่วๆ อีกวันถ่ายไปเรื่อยๆ ซักวันมันคงเป็นเอง&#8230;</p>
<p>แต่วันนี้ไม่ลืมเปิด VR นะแต่ภาพก็ยังไม่ค่อยชัดแฮะ</p>
<p>(ยังโฟกัสไม่ดี แล้วมือคงสั่นเกินรับไหว &#8211; -&#8221;)</p>
<p>วันนี้ท้องฟ้ามีขู่กันด้วย (แต่ถึงมันจะขู่ ก็ยังกลัวอะ)</p>
<p>วันนี้เลยกลับบ้านเร็วหน่อย</p>
<p>ส่วนรูปตอนนี้ยังไม่ได้เอารูปลงคอมอะนะ</p>
<p>(ที่จริงน่าจะลบทิ้งซะมากกว่า เก็บไว้ดูความห่วยของตัวเอง)</p>
<p>จากที่ไปลองถ่ายรูปมา 2 วันรู้สึกว่า อุปกรณ์มันดีนะ แต่คนถ่ายมันกาก&#8230;</p>
<p>ยังมีอะไรที่ต้องหัดอีกเยอะ หัดกันต่อไป.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tanseven.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tanseven.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tanseven.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tanseven.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tanseven.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tanseven.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tanseven.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tanseven.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tanseven.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tanseven.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tanseven.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tanseven.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tanseven.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tanseven.wordpress.com/36/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanseven.wordpress.com&amp;blog=725453&amp;post=36&amp;subd=tanseven&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tanseven.wordpress.com/2009/05/18/%e0%b8%8b%e0%b8%b7%e0%b9%89%e0%b8%ad%e0%b8%81%e0%b8%a5%e0%b9%89%e0%b8%ad%e0%b8%87%e0%b8%96%e0%b9%88%e0%b8%b2%e0%b8%a2%e0%b8%a3%e0%b8%b9%e0%b8%9b%e0%b8%95%e0%b8%b1%e0%b8%a7%e0%b9%81%e0%b8%a3%e0%b8%81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/380b47cb4f11c97050283a3c909b0842?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tanseven</media:title>
		</media:content>
	</item>
		<item>
		<title>Attachment_fu</title>
		<link>http://tanseven.wordpress.com/2008/11/14/attachment_fu/</link>
		<comments>http://tanseven.wordpress.com/2008/11/14/attachment_fu/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 07:18:07 +0000</pubDate>
		<dc:creator>tanseven</dc:creator>
				<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://tanseven.wordpress.com/2008/11/14/attachment_fu/</guid>
		<description><![CDATA[สำหรับ Attachment_fu จะเป็น Plugin ของ Rails ที่ใช้สำหรับ Upload File นะครับ โดยที่ตอนนี้จะเอามาใช้สำหรับ Upload ภาพ (ถ้าต้องการให้มีการทำ Image Processing เช่น การ Resize ภาพ ต้องทำการติดตั้ง Processor สำหรับการทำ Image Processing ก่อน เช่น rmagick) ขั้นแรกก็ให้ Download Attachment_fu Plugin มาก่อน หลังจากนั้นก็นำ Plugin ไปไว้ใน Project ที่ vendor/plugins ส่วนการใช้งานก็เพิ่ม DB โดยจะประกอบด้วย t.string :filename t.string :path t.string :content_type t.integer :size t.integer :width t.integer :height t.integer [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanseven.wordpress.com&amp;blog=725453&amp;post=34&amp;subd=tanseven&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>สำหรับ Attachment_fu จะเป็น Plugin ของ Rails ที่ใช้สำหรับ Upload File นะครับ</p>
<p>โดยที่ตอนนี้จะเอามาใช้สำหรับ Upload ภาพ (ถ้าต้องการให้มีการทำ Image Processing เช่น การ Resize ภาพ ต้องทำการติดตั้ง Processor สำหรับการทำ Image Processing ก่อน เช่น rmagick)</p>
<p>ขั้นแรกก็ให้ Download Attachment_fu Plugin มาก่อน</p>
<p>หลังจากนั้นก็นำ Plugin ไปไว้ใน Project ที่ vendor/plugins</p>
<p>ส่วนการใช้งานก็เพิ่ม DB โดยจะประกอบด้วย</p>
<blockquote>
<p>t.string :filename</p>
<p>t.string :path</p>
<p>t.string :content_type</p>
<p>t.integer :size</p>
<p>t.integer :width</p>
<p>t.integer :height</p>
<p>t.integer :parent_id</p>
</blockquote>
<p></p>
<blockquote>
<p>t.string :thumbnail</p>
</blockquote>
<p>หลังจากนั้นก็ทำการบอก Model ให้รู้จักกับ Plugin</p>
<blockquote>
<p>has_attachment :content_type =&gt; :image,</p>
<p>:storage =&gt; :file_system,</p>
<p>:min_size =&gt; 0,</p>
<p>:max_size =&gt; 1.megabytes,</p>
<p>:resize_to =&gt; &#8217;640&#215;480&#8242;,</p>
<p>:processor =&gt; &#8216;Rmagick&#8217;,</p>
<p>:thumbnails =&gt; { :medium =&gt; &#8217;200&#215;200&#8242;, :small =&gt; &#8217;80&#215;80&#8242;, :tiny =&gt; &#8217;40&#215;40&#8242; }</p>
</blockquote>
<p>ในที่นี้จะเป็นของภาพนะครับ โดยมีการใช้ Processor ของ Rmagick</p>
<p>การตรวจสอบก็สามารถใช้</p>
<blockquote>
<p>validates_as_attachment</p>
</blockquote>
<p>สำหรับการใช้งานในหน้า View ก็</p>
<p>ในการสร้าง (Upload) Files ให้ทำการเพิ่ม</p>
<blockquote>
<p>:html =&gt; { :multipart =&gt; true }</p>
</blockquote>
<p>เข้าไปใน form_for เช่น</p>
<blockquote>
<p>&lt;% form_for(@obj, :html =&gt; { :multipart =&gt; true }) do |f| %&gt;</p>
</blockquote>
<p>แล้วส่วนของ Select Image Field</p>
<blockquote>
<p>&lt;%= f.file_field &#8216;uploaded_data&#8217; %&gt;</p>
</blockquote>
<p>ส่วนของหน้าในการ Show ให้ใช้</p>
<blockquote>
<p>&lt;%= image_tag(@obj.public_filename) %&gt;</p>
<p>หรือ</p>
<p>&lt;%= image_tag(@obj.public_filename(:medium)) %&gt;</p>
<p>สำหรับภาพที่เป็น Medium (ตามที่ได้กำหนดไว้ใน Model)</p>
</blockquote>
<p>ส่วนรายละเอียดอื่นๆ สามารถดูเพิ่มเติมได้ใน README ซึ่งจะมีคำอธิบายอยู่ด้วย</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tanseven.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tanseven.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tanseven.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tanseven.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tanseven.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tanseven.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tanseven.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tanseven.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tanseven.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tanseven.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tanseven.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tanseven.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tanseven.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tanseven.wordpress.com/34/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanseven.wordpress.com&amp;blog=725453&amp;post=34&amp;subd=tanseven&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tanseven.wordpress.com/2008/11/14/attachment_fu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/380b47cb4f11c97050283a3c909b0842?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tanseven</media:title>
		</media:content>
	</item>
		<item>
		<title>ติดตั้ง rmagick</title>
		<link>http://tanseven.wordpress.com/2008/11/13/%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87-rmagick/</link>
		<comments>http://tanseven.wordpress.com/2008/11/13/%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87-rmagick/#comments</comments>
		<pubDate>Thu, 13 Nov 2008 06:35:03 +0000</pubDate>
		<dc:creator>tanseven</dc:creator>
				<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://tanseven.wordpress.com/2008/11/13/%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87-rmagick/</guid>
		<description><![CDATA[ที่มา : Install RMagick on Mac OS X Leopard from Source เริ่มจาก Download Source มาเก็บไว้ก่อน ซึ่งในที่นี้ Source ที่จำเป็นก็จะมี freetype-2.3.5.tar.gz libpng-1.2.25.tar.gz jpegsrc.v6b.tar.gz tiff-3.8.2.tar.gz ghostscript-fonts-std-8.11.tar.gz ImageMagick.tar.gz rmagick.gem ทำการแตกไฟล์ออกมาก่อนหลังจากนั้นก็เริ่มติดตั้งโดยใช้คำสั่งใน Terminal ที่ FreeType cd freetype-2.3.5 ./configure make sudo make install cd .. PNG Library cd libpng-1.2.25 ./configure make sudo make install cd .. JPEG Library cd jpeg-6b ln -s [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanseven.wordpress.com&amp;blog=725453&amp;post=33&amp;subd=tanseven&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>ที่มา : <a href="http://benr75.com/articles/2008/03/16/install-rmagick-on-mac-os-x-leopard-from-source" title="Install RMagick on Mac OS X Leopard from Source Install RMagick on Mac OS X Leopard from Source">Install RMagick on Mac OS X Leopard from Source</a></p>
<p>เริ่มจาก Download Source มาเก็บไว้ก่อน</p>
<p>ซึ่งในที่นี้ Source ที่จำเป็นก็จะมี</p>
<ul>
<li>freetype-2.3.5.tar.gz</li>
<li>libpng-1.2.25.tar.gz</li>
<li>jpegsrc.v6b.tar.gz</li>
<li>tiff-3.8.2.tar.gz</li>
<li>ghostscript-fonts-std-8.11.tar.gz</li>
<li>ImageMagick.tar.gz</li>
<li>rmagick.gem</li>
</ul>
<p>ทำการแตกไฟล์ออกมาก่อนหลังจากนั้นก็เริ่มติดตั้งโดยใช้คำสั่งใน Terminal ที่</p>
<p>FreeType</p>
<blockquote>
<p>cd freetype-2.3.5</p>
<p>./configure</p>
<p>make</p>
<p>sudo make install</p>
<p>cd ..</p>
</blockquote>
<p>PNG Library</p>
<blockquote>
<p>cd libpng-1.2.25</p>
<p>./configure</p>
<p>make</p>
<p>sudo make install</p>
<p>cd ..</p>
</blockquote>
<p>JPEG Library</p>
<blockquote>
<p>cd jpeg-6b</p>
<p>ln -s `which glibtool` ./libtool</p>
<p>export MACOSX_DEPLOYMENT_TARGET=10.5</p>
<p>./configure &#8212; enable-shared</p>
<p>make sudo make install</p>
<p>cd ..</p>
</blockquote>
<p>(ถ้าไม่มี glibtool ต้องไปหามาติดตั้งนะครับ)</p>
<p>อย่าลืม &#8211;enable-shared ตอน Configure นะครับ</p>
<p>TIFF Library</p>
<blockquote>
<p>cd tiff-3.8.2</p>
<p>./configure</p>
<p>make</p>
<p>sudo make install</p>
<p>cd ..</p>
</blockquote>
<p>GhostScript Fonts</p>
<blockquote>
<p>sudo mkdir /usr/local/share/ghostscript</p>
<p>sudo mv fonts /usr/local/share/ghostscript/fonts</p>
</blockquote>
<p>ImageMagick</p>
<blockquote>
<p>cd ImageMagick</p>
<p>export CPPFLAGS=-I/usr/local/include</p>
<p>export LDFLAGS=-L/usr/local/lib</p>
<p>./configure &#8211;disable-static &#8211;with-modules &#8211;without-perl &#8211;without-magick-plus-plus &#8211;with-quantum-depth=8 &#8211;with-gs-font-dir=/usr/local/share/ghostscript/fonts</p>
<p>cd..</p>
</blockquote>
<p>RMagick</p>
<blockquote>
<p>sudo gem install rmagick</p>
</blockquote>
<p>ลองทดสอบ RMagick</p>
<blockquote>
<p>irb</p>
<p>require&#8217;rmagick&#8217;</p>
</blockquote>
<p>ถ้าขึ้นว่า true ก็แปลว่าลงสำเร็จแล้ว</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tanseven.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tanseven.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tanseven.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tanseven.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tanseven.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tanseven.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tanseven.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tanseven.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tanseven.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tanseven.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tanseven.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tanseven.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tanseven.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tanseven.wordpress.com/33/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanseven.wordpress.com&amp;blog=725453&amp;post=33&amp;subd=tanseven&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tanseven.wordpress.com/2008/11/13/%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87-rmagick/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/380b47cb4f11c97050283a3c909b0842?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tanseven</media:title>
		</media:content>
	</item>
	</channel>
</rss>
