<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<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/"
	>

<channel>
	<title>objective-c &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/objective-c/</link>
	<description>Feed of posts on WordPress.com tagged "objective-c"</description>
	<pubDate>Sun, 06 Dec 2009 04:56:04 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Observing Changes to Apple iCal Events]]></title>
<link>http://jeboyer.wordpress.com/2009/12/05/observing-changes-to-apple-ical-events/</link>
<pubDate>Sat, 05 Dec 2009 17:44:43 +0000</pubDate>
<dc:creator>jeboyer</dc:creator>
<guid>http://jeboyer.wordpress.com/2009/12/05/observing-changes-to-apple-ical-events/</guid>
<description><![CDATA[I have a Mac OS X application observing changes to iCal events. Tip: To learn how do this check out ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="clear:both;">I have a Mac OS X application observing changes to iCal events. <em>Tip: To learn how do this check out Apple&#8217;s </em><a href="http://developer.apple.com/mac/library/DOCUMENTATION/AppleApplications/Conceptual/CalendarStoreProgGuide/Introduction/Introduction.html"><em>Calendar Store Programming Guide</em></a><em>.</em></p>
<p style="clear:both;">I wrote the initial application as a Command Line Tool. However, the observer was not being notified. </p>
<p style="clear:both;"><img src="http://jeboyer.files.wordpress.com/2009/12/command-thumb2.png?w=209&#038;h=55" height="55" width="209" style="text-align:center;display:block;margin:0 auto 10px;" />Here&#8217;s my lesson, ensure that your application is a Cocoa Application to receive notifications from the framework.</p>
<p style="clear:both;"><img src="http://jeboyer.files.wordpress.com/2009/12/cocoa1-thumb.png?w=187&#038;h=60" height="60" width="187" style="text-align:center;display:block;margin:0 auto 10px;" /></p>
<p><br class="final-break" style="clear:both;" /></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Origins]]></title>
<link>http://codetrek.wordpress.com/2009/12/05/origins/</link>
<pubDate>Sat, 05 Dec 2009 08:14:41 +0000</pubDate>
<dc:creator>Red Kid</dc:creator>
<guid>http://codetrek.wordpress.com/2009/12/05/origins/</guid>
<description><![CDATA[History is vital to gaining insight and intimacy with any subject. So I explore the history behind O]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="clear:both;">History is vital to gaining insight and intimacy with any subject. So I explore the history behind Objective-C, its roots and its branches.</p>
<p style="clear:both;">Objective-C was designed by <a href="http://www.virtualschool.edu/cox/">Brad J. Cox</a> in the early 1980&#8217;s. It was modelled after SmallTalk-80 but it was essentially an extension of the C programming language. It added a layering to C that enabled creation and manipulation of objects.</p>
<p style="clear:both;">NeXT Software (later acquired by Apple) licensed the Objective-C language and developed its libraries. Slowly the language was supported by FSF&#8217;s GNU (enabling everyone&#8217;s free access to the language and its tools) and other platforms such as Linux in the form of LinuxStep.<br />
When Apple acquired Next Software in 1996, the development environment created with Objective-C NEXTSTEP became the standard for Apple&#8217;s operating system OS X as we know it now.<br />
Along with OS X came a wave of tools that allow leverage on the features of Objective-C and its libraries.</p>
<p style="clear:both;">The latest major of the language came in 2007 when Objective-C 2.0 was released. Which I will be diving into, of course.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Cocoa Programming: Helper Objects - Challenge: Make a Delegate]]></title>
<link>http://lifeasclay.wordpress.com/2009/12/04/cocoa-programming-helper-objects-challenge-make-a-delegate/</link>
<pubDate>Fri, 04 Dec 2009 21:37:59 +0000</pubDate>
<dc:creator>Clay</dc:creator>
<guid>http://lifeasclay.wordpress.com/2009/12/04/cocoa-programming-helper-objects-challenge-make-a-delegate/</guid>
<description><![CDATA[I am enjoying Cocoa Programming for Mac OS X ; good book, well written, pretty easy to follow. Chapt]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>I am enjoying Cocoa Programming for Mac OS X ; good book, well written, pretty easy to follow. Chapter 6 (3rd edition) gets a bit ahead of itself, though. At least for programming newbies it does. Why? Well, the answer to &#8220;Challenge: Make a Delegate&#8221; is much better at explaining the concept than the examples used in the chapter. The interesting point about the delegate object is that it needs contain nothing other than the delegate method. That&#8217;s a far less complicated way to explain delegates than to shoehorn them into the previous projects that included IBOutlets, IBActions, etc. Here&#8217;s the skinny:</p>
<p>ALL you need to do is:<br />
1. Start a new Cocoa project<br />
2. Create a new Obj-C class. I&#8217;ll use the name WindowTalker.<br />
3. in WindowTalker.h, add the following (which is the sample code from the book):</p>
<pre class="brush: cpp;">
#import &#60;Cocoa/Cocoa.h&#62;

@interface WindowTalker : NSObject {
}

- (NSSize)windowWillResize:(NSWindow *)sender
					toSize:(NSSize)frameSize;
@end
</pre>
<p>4. In WindowTalker.m, add the following (which is simpler than the example code in the book):</p>
<pre class="brush: cpp;">
#import &#34;WindowTalker.h&#34;

@implementation WindowTalker

- (NSSize)windowWillResize:(NSWindow *)sender
					toSize: (NSSize)frameSize
{
	frameSize.width = frameSize.height * 2;
	NSLog(@&#34;The window size is %f wide and %f tall.&#34;, frameSize.width, frameSize.height);
	return frameSize;
}

@end
</pre>
<p>5. Save the files &#8211; you&#8217;re done with the code.<br />
6. Double-click on MainMenu.xib (or .nib)<br />
7. Click on the header of the window to select it. Go to the inspector and set the size to 200 x 400 or something else in that ratio.<br />
8. Drag a blue object cube to the Doc window.<br />
9. In the inspector panel, set the identity of the blue cube to &#8220;WindowTalker&#8221; or whatever you named your class.<br />
10. Control-click on the window (that will resize) to get the connections panel. Here you need to tell the Window that the object is its delegate. Herein lies the entire point of this exercise&#8230; That object is going to act as the servant to the window to accomplish the proportional resizing. Hence, the window needs to know which object is its servant, aka delegate. So&#8230;<br />
11. Drag from the circle next to delegate on the connections panel for the window and release the line on top of the WindowTalker object in the Doc window.<br />
12. Save MainMenu.xib<br />
13. Build and Run your application. Test by dragging the window.</p>
<p>The dragging part in step 11 will look something like this:</p>
<div id="attachment_238" class="wp-caption aligncenter" style="width: 710px"><img class="size-full wp-image-238" title="assigning the delegate" src="http://lifeasclay.wordpress.com/files/2009/12/screen-shot-2009-12-04-at-4-33-36-pm.png" alt="" width="700" height="465" /><p class="wp-caption-text">Dragging from the connections panel to the blue cube - the mouse is over the blue cube, ready to release</p></div>
<p>I read through the chapter and followed the instructions and was still forming my idea of what the delegate was when I came to this exercise. My first few shots at it were too complicated &#8211; I was trying to do way too much. The concept of the delegate was much clearer to me after I figured this out, so perhaps someday this post will help somebody with the same problem.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[The Choice]]></title>
<link>http://codetrek.wordpress.com/2009/12/04/the-choice/</link>
<pubDate>Fri, 04 Dec 2009 21:14:32 +0000</pubDate>
<dc:creator>Red Kid</dc:creator>
<guid>http://codetrek.wordpress.com/2009/12/04/the-choice/</guid>
<description><![CDATA[After much ado I have decided that I will be setting course to explore and understand Objective-C. A]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="clear:both;">After much ado I have decided that I will be setting course to explore and understand Objective-C.</p>
<p style="clear:both;">As much as it was an impulsive decision, I believe it is a wise one.</p>
<p style="clear:both;">So far I have learnt languages that were strongly influenced by C and and are more or less similar such as C# and Java. Learning Objective-C will allow me to make a transition into languages that are less like C such as Ruby which I believe will make my skills more versatile and hopefully open up few more scopes to further myself.</p>
<p style="clear:both;">So without any <em>more</em> musing, I will set forth in this path.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Get IP Address of iPhone]]></title>
<link>http://kiransalke.wordpress.com/2009/12/04/get-ip-address-of-iphone/</link>
<pubDate>Fri, 04 Dec 2009 14:53:39 +0000</pubDate>
<dc:creator>kkiran33</dc:creator>
<guid>http://kiransalke.wordpress.com/2009/12/04/get-ip-address-of-iphone/</guid>
<description><![CDATA[/*  *  IPAdress.h  *  *  */ #define MAXADDRS 32 extern char *if_names[MAXADDRS]; extern char *ip_nam]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>/*</p>
<p> *  IPAdress.h</p>
<p> *</p>
<p> *</p>
<p> */</p>
<p>#define MAXADDRS	32</p>
<p>extern char *if_names[MAXADDRS];</p>
<p>extern char *ip_names[MAXADDRS];</p>
<p>extern char *hw_addrs[MAXADDRS];</p>
<p>extern unsigned long ip_addrs[MAXADDRS];</p>
<p>// Function prototypes</p>
<p>void InitAddresses();</p>
<p>void FreeAddresses();</p>
<p>void GetIPAddresses();</p>
<p>void GetHWAddresses();</p>
<p>/*</p>
<p> *  IPAddress.c</p>
<p> *</p>
<p> */</p>
<p>#include &#8220;IPAddress.h&#8221;</p>
<p>#include &#60;stdio.h&#62;</p>
<p>#include &#60;stdlib.h&#62;</p>
<p>#include &#60;string.h&#62;</p>
<p>#include &#60;unistd.h&#62;</p>
<p>#include &#60;sys/ioctl.h&#62;</p>
<p>#include &#60;sys/types.h&#62;</p>
<p>#include &#60;sys/socket.h&#62;</p>
<p>#include &#60;netinet/in.h&#62;</p>
<p>#include &#60;netdb.h&#62;</p>
<p>#include &#60;arpa/inet.h&#62;</p>
<p>#include &#60;sys/sockio.h&#62;</p>
<p>#include &#60;net/if.h&#62;</p>
<p>#include &#60;errno.h&#62;</p>
<p>#include &#60;net/if_dl.h&#62;</p>
<p>#include &#8220;IPAddress.h&#8221;</p>
<p>#define	min(a,b)	((a) &#60; (b) ? (a) : (b))</p>
<p>#define	max(a,b)	((a) &#62; (b) ? (a) : (b))</p>
<p>#define BUFFERSIZE	4000</p>
<p>char *if_names[MAXADDRS];</p>
<p>char *ip_names[MAXADDRS];</p>
<p>char *hw_addrs[MAXADDRS];</p>
<p>unsigned long ip_addrs[MAXADDRS];</p>
<p>static int   nextAddr = 0;</p>
<p>void InitAddresses()</p>
<p>{</p>
<p>int i;</p>
<p>for (i=0; i&#60;MAXADDRS; ++i)</p>
<p>{</p>
<p>if_names[i] = ip_names[i] = hw_addrs[i] = NULL;</p>
<p>ip_addrs[i] = 0;</p>
<p>}</p>
<p>}</p>
<p>void FreeAddresses()</p>
<p>{</p>
<p>int i;</p>
<p>for (i=0; i&#60;MAXADDRS; ++i)</p>
<p>{</p>
<p>if (if_names[i] != 0) free(if_names[i]);</p>
<p>if (ip_names[i] != 0) free(ip_names[i]);</p>
<p>if (hw_addrs[i] != 0) free(hw_addrs[i]);</p>
<p>ip_addrs[i] = 0;</p>
<p>}</p>
<p>InitAddresses();</p>
<p>}</p>
<p>void GetIPAddresses()</p>
<p>{</p>
<p>int                 i, len, flags;</p>
<p>char                buffer[BUFFERSIZE], *ptr, lastname[IFNAMSIZ], *cptr;</p>
<p>struct ifconf       ifc;</p>
<p>struct ifreq        *ifr, ifrcopy;</p>
<p>struct sockaddr_in	*sin;</p>
<p>char temp[80];</p>
<p>int sockfd;</p>
<p>for (i=0; i&#60;MAXADDRS; ++i)</p>
<p>{</p>
<p>if_names[i] = ip_names[i] = NULL;</p>
<p>ip_addrs[i] = 0;</p>
<p>}</p>
<p>sockfd = socket(AF_INET, SOCK_DGRAM, 0);</p>
<p>if (sockfd &#60; 0)</p>
<p>{</p>
<p>perror(&#8220;socket failed&#8221;);</p>
<p>return;</p>
<p>}</p>
<p>ifc.ifc_len = BUFFERSIZE;</p>
<p>ifc.ifc_buf = buffer;</p>
<p>if (ioctl(sockfd, SIOCGIFCONF, &#38;ifc) &#60; 0)</p>
<p>{</p>
<p>perror(&#8220;ioctl error&#8221;);</p>
<p>return;</p>
<p>}</p>
<p>lastname[0] = 0;</p>
<p>for (ptr = buffer; ptr &#60; buffer + ifc.ifc_len; )</p>
<p>{</p>
<p>ifr = (struct ifreq *)ptr;</p>
<p>len = max(sizeof(struct sockaddr), ifr-&#62;ifr_addr.sa_len);</p>
<p>ptr += sizeof(ifr-&#62;ifr_name) + len;	// for next one in buffer</p>
<p>if (ifr-&#62;ifr_addr.sa_family != AF_INET)</p>
<p>{</p>
<p>continue;	// ignore if not desired address family</p>
<p>}</p>
<p>if ((cptr = (char *)strchr(ifr-&#62;ifr_name, &#8216;:&#8217;)) != NULL)</p>
<p>{</p>
<p>*cptr = 0;		// replace colon will null</p>
<p>}</p>
<p>if (strncmp(lastname, ifr-&#62;ifr_name, IFNAMSIZ) == 0)</p>
<p>{</p>
<p>continue;	/* already processed this interface */</p>
<p>}</p>
<p>memcpy(lastname, ifr-&#62;ifr_name, IFNAMSIZ);</p>
<p>ifrcopy = *ifr;</p>
<p>ioctl(sockfd, SIOCGIFFLAGS, &#38;ifrcopy);</p>
<p>flags = ifrcopy.ifr_flags;</p>
<p>if ((flags &#38; IFF_UP) == 0)</p>
<p>{</p>
<p>continue;	// ignore if interface not up</p>
<p>}</p>
<p>if_names[nextAddr] = (char *)malloc(strlen(ifr-&#62;ifr_name)+1);</p>
<p>if (if_names[nextAddr] == NULL)</p>
<p>{</p>
<p>return;</p>
<p>}</p>
<p>strcpy(if_names[nextAddr], ifr-&#62;ifr_name);</p>
<p>sin = (struct sockaddr_in *)&#38;ifr-&#62;ifr_addr;</p>
<p>strcpy(temp, inet_ntoa(sin-&#62;sin_addr));</p>
<p>ip_names[nextAddr] = (char *)malloc(strlen(temp)+1);</p>
<p>if (ip_names[nextAddr] == NULL)</p>
<p>{</p>
<p>return;</p>
<p>}</p>
<p>strcpy(ip_names[nextAddr], temp);</p>
<p>ip_addrs[nextAddr] = sin-&#62;sin_addr.s_addr;</p>
<p>++nextAddr;</p>
<p>}</p>
<p>close(sockfd);</p>
<p>}</p>
<p>void GetHWAddresses()</p>
<p>{</p>
<p>struct ifconf ifc;</p>
<p>struct ifreq *ifr;</p>
<p>int i, sockfd;</p>
<p>char buffer[BUFFERSIZE], *cp, *cplim;</p>
<p>char temp[80];</p>
<p>for (i=0; i&#60;MAXADDRS; ++i)</p>
<p>{</p>
<p>hw_addrs[i] = NULL;</p>
<p>}</p>
<p>sockfd = socket(AF_INET, SOCK_DGRAM, 0);</p>
<p>if (sockfd &#60; 0)</p>
<p>{</p>
<p>perror(&#8220;socket failed&#8221;);</p>
<p>return;</p>
<p>}</p>
<p>ifc.ifc_len = BUFFERSIZE;</p>
<p>ifc.ifc_buf = buffer;</p>
<p>if (ioctl(sockfd, SIOCGIFCONF, (char *)&#38;ifc) &#60; 0)</p>
<p>{</p>
<p>perror(&#8220;ioctl error&#8221;);</p>
<p>close(sockfd);</p>
<p>return;</p>
<p>}</p>
<p>ifr = ifc.ifc_req;</p>
<p>cplim = buffer + ifc.ifc_len;</p>
<p>for (cp=buffer; cp &#60; cplim; )</p>
<p>{</p>
<p>ifr = (struct ifreq *)cp;</p>
<p>if (ifr-&#62;ifr_addr.sa_family == AF_LINK)</p>
<p>{</p>
<p>struct sockaddr_dl *sdl = (struct sockaddr_dl *)&#38;ifr-&#62;ifr_addr;</p>
<p>int a,b,c,d,e,f;</p>
<p>int i;</p>
<p>strcpy(temp, (char *)ether_ntoa(LLADDR(sdl)));</p>
<p>sscanf(temp, &#8220;%x:%x:%x:%x:%x:%x&#8221;, &#38;a, &#38;b, &#38;c, &#38;d, &#38;e, &#38;f);</p>
<p>sprintf(temp, &#8220;%02X:%02X:%02X:%02X:%02X:%02X&#8221;,a,b,c,d,e,f);</p>
<p>for (i=0; i&#60;MAXADDRS; ++i)</p>
<p>{</p>
<p>if ((if_names[i] != NULL) &#38;&#38; (strcmp(ifr-&#62;ifr_name, if_names[i]) == 0))</p>
<p>{</p>
<p>if (hw_addrs[i] == NULL)</p>
<p>{</p>
<p>hw_addrs[i] = (char *)malloc(strlen(temp)+1);</p>
<p>strcpy(hw_addrs[i], temp);</p>
<p>break;</p>
<p>}</p>
<p>}</p>
<p>}</p>
<p>}</p>
<p>cp += sizeof(ifr-&#62;ifr_name) + max(sizeof(ifr-&#62;ifr_addr), ifr-&#62;ifr_addr.sa_len);</p>
<p>}</p>
<p>close(sockfd);</p>
<p>}</p>
<p>//Somewhere in your code</p>
<p>- (NSString *)deviceIPAdress {</p>
<p>InitAddresses();</p>
<p>GetIPAddresses();</p>
<p>GetHWAddresses();</p>
<p>return [NSString stringWithFormat:@"%s", ip_names[1]];</p>
<p>}</p>
<p>// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.</p>
<p>- (void)viewDidLoad {</p>
<p>    [super viewDidLoad];</p>
<p><span style="color:#000000;">    </span>ipAddress.text = [self deviceIPAdress];</p>
<p>}</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Successfully completed my first solo Cocoa "challenge"]]></title>
<link>http://lifeasclay.wordpress.com/2009/12/04/successfully-completed-my-first-solo-cocoa-challenge/</link>
<pubDate>Fri, 04 Dec 2009 01:42:34 +0000</pubDate>
<dc:creator>Clay</dc:creator>
<guid>http://lifeasclay.wordpress.com/2009/12/04/successfully-completed-my-first-solo-cocoa-challenge/</guid>
<description><![CDATA[]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:center;"><img class="aligncenter size-full wp-image-223" title="yourn" src="http://lifeasclay.wordpress.com/files/2009/12/screen-shot-2009-12-03-at-8-40-00-pm.png" alt="" width="560" height="243" /></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Getting back up to speed]]></title>
<link>http://lifeasclay.wordpress.com/2009/12/03/getting-back-up-to-speed/</link>
<pubDate>Thu, 03 Dec 2009 19:46:48 +0000</pubDate>
<dc:creator>Clay</dc:creator>
<guid>http://lifeasclay.wordpress.com/2009/12/03/getting-back-up-to-speed/</guid>
<description><![CDATA[Wow, the flu really knocked me out for about 2 weeks. Tack Thanksgiving and an increased workload on]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Wow, the flu really knocked me out for about 2 weeks. Tack Thanksgiving and an increased workload onto that and I&#8217;ve been away for far too long. I am, however, getting back up to speed. I&#8217;ve been working through several of the chapters in &#8220;Cocoa Programming for Mac OS X&#8221; to get a flavor for whether I would like to pursue Obj-C / Cocoa further. It&#8217;s a great book, but there are some inconsistencies with Snow Leopard and the screenshots are from an old version of Xcode, which seems to have moved a good number of option buttons around in the Preferences, etc. My only other concern is that some of the Obj-C used in the book is depreciated by Apple, or so it would appear when I try to look it up in the developer documentation. The code compiles and runs, so I&#8217;m not that worried about it, but I would prefer to use the currently accepted code/methods than the depreciated ones. Nevertheless, I&#8217;m enjoying it and would love to take the Cocoa for Beginners class at <a href="http://www.bignerdranch.com">BNR</a>.</p>
<p>If anybody reading this has thoughts about the book and code depreciation, I would love to hear them. I suppose it&#8217;s time for a Fourth Edition.</p>
<div id="attachment_220" class="wp-caption aligncenter" style="width: 650px"><a href="http://lifeasclay.wordpress.com/files/2009/12/screen-shot-2009-12-03-at-2-43-35-pm.png"><img class="size-full wp-image-220" title="depreciated code?" src="http://lifeasclay.wordpress.com/files/2009/12/screen-shot-2009-12-03-at-2-43-35-pm.png" alt="" width="640" height="622" /></a><p class="wp-caption-text">depreciated code?</p></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Many Choices]]></title>
<link>http://codetrek.wordpress.com/2009/12/01/many-choices/</link>
<pubDate>Tue, 01 Dec 2009 23:10:50 +0000</pubDate>
<dc:creator>Red Kid</dc:creator>
<guid>http://codetrek.wordpress.com/2009/12/01/many-choices/</guid>
<description><![CDATA[There are so options available to me. I could choose to learn and use any of the many languages out ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="clear:both;">There are so options available to me. I could choose to learn and use any of the many languages out there. I could work on whichever framework made me feel fuzzy inside (trust me, there are some).</p>
<p style="clear:both;">But this is to be an informed decision, a planned and joyous journey. Not one born of impulses. To reach a decision I have thought of the pros and cons and argued with myself,</p>
<p style="clear:both;">
<ul style="clear:both;">
<li><strong>Objective-C</strong> for Apple&#8217;s <a href="http://developer.apple.com/cocoa/">Cocoa API</a><br />
Pros: My machine&#8217;s native language, a beautiful one too. It&#8217;s a language that&#8217;s growing in popularity, especially with iPhones being the talk of the town. Influenced by Smalltalk and C, mothers of many languages.<br />
Cons: There would be a steep learning curve since I have only dabbled into it for a bit before. Available resources for learning, debugging and troubleshooting are only adequate, to put it lightly.</li>
<li><strong>PHP</strong> on the <a href="http://www.yiiframework.com/">Yii Framework</a><br />
Pros: PHP is a giant when it comes to web-based applications. The resources are abundant to learn and apply PHP. As for the Yii Framework, it&#8217;s growing, vast, versatile and dynamic, as far as I understand, it&#8217; be a great platform to work on.<br />
Cons: I am relatively new with PHP, except for a few forms and files, I have done little. The learning curve would be steep, especially if I work with the Yii Framework. Even though I have worked on MVC based frameworks, I can imagine Yii being somewhat different (or maybe I am just scared of it, for some unexplained reason. I guess I have to think this through).</li>
<li><strong>Ruby</strong> with the <a href="http://rubyonrails.org/">Ruby on Rails Framework</a><br />
Pros: Ruby is fast becoming the language of the web and agile softwares. It would be great to learn especially since this is quite different from languages I have used before.<br />
Cons: The learning curve would be so steep, it would probably be a straight line. I am not sure of what literature I can refer to and where I could get help. And moreover I would be at loss of a project to implement.</li>
<li><strong>C#</strong> on the <a href="http://msdn.microsoft.com/en-us/netframework/default.aspx">.Net Framework</a><br />
Pros: There would not be a very steep learning curve since I have worked (and working) on few projects using C# and the .Net Framework. There would be a great amount of help available from my current team members and also the online community. The library I frequent also has a sufficient amount of resources on this subject. I enjoy working with the framework because of its numerous features and ease of use.<br />
Cons: I fail to see the elegance of the language. Maybe I have not been exposed to it enough but I find it unattractive at times. I would have to work in a virtual environment which would reduce the efficiency of the workflow. Furthermore I would be at loss of a project to work on.</li>
</ul>
<p style="clear:both;">
<p style="clear:both;">I have yet to decide but I will try my best to choose one that would be greatly enjoyable but I will be choosing soon. Even though I claimed to be thinking this all through, I would most likely be impulsive and choose one that entices me most.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[My GNUstep user Suggestions]]></title>
<link>http://sumitasok.wordpress.com/2009/12/01/my-gnustep-user-suggessions/</link>
<pubDate>Tue, 01 Dec 2009 14:14:08 +0000</pubDate>
<dc:creator>sumitasok</dc:creator>
<guid>http://sumitasok.wordpress.com/2009/12/01/my-gnustep-user-suggessions/</guid>
<description><![CDATA[I prefer using GNUstep with Kubuntu9.10 It fits well Kate &#8211; Text Editor is having pretty good ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>I prefer using GNUstep with Kubuntu9.10<br />
It fits well</p>
<p>Kate &#8211; Text Editor is having pretty good sync with Objective-C<br />
even though there is no code suggestions as far as i understand, but, if you use NSString once , you will get it on suggestions with CTRL + SPACE</p>
<p>Also vim is having good sync with Objective-C</p>
<p>both give code color identification for Objective-C.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[  Tackling error /usr/bin/ld: cannot find -lgnustep-base]]></title>
<link>http://sumitasok.wordpress.com/2009/12/01/tackling-error-usrbinld-cannot-find-lgnustep-base/</link>
<pubDate>Tue, 01 Dec 2009 13:52:16 +0000</pubDate>
<dc:creator>sumitasok</dc:creator>
<guid>http://sumitasok.wordpress.com/2009/12/01/tackling-error-usrbinld-cannot-find-lgnustep-base/</guid>
<description><![CDATA[I installed GNUstep from the package downloaded from GNUstep official website. After installation , ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>I installed GNUstep from the package downloaded from GNUstep official website.<br />
After installation , when i tried to compile any program</p>
<p>command used to compile my program:</p>
<p><code style="font-size:large;color:blue;">. /usr/GNUstep/System/Library/Makefiles/GNUstep.sh</code>			[ this is a one time environment setting command, one time for one terminal ]<br />
<code style="font-size:large;color:blue;">gcc `gnustep-config --objc-flags` -o main *.m -lobjc -lgnustep-base</code></p>
<p>it exited with error like this,</p>
<p><code style="font-size:large;color:red;">/usr/bin/ld: cannot find -lgnustep-base<br />
collect2: ld returned 1 exit status</code></p>
<p>Now i cleared the error, even though i don&#8217;t know how to explain what the error was.</p>
<p>What i did was just install gnustep-base from the ubuntu repositories, just by doing,</p>
<p><code style="font-size:large;color:blue;">apt-get install gnustep-base-common gnustep-base-doc gnustep-base-examples- gnustep-base-runtime libgnustep-base-dev libgnustep-base1.19 libgnustep-base1.19-dbg<br />
</code><br />
when it is asked to change the file /etc/GNUstep/GNUstep.conf<br />
give Y</p>
<p>the do the above mentioned environment setting command and then compile your application.<br />
Now my program works fine.<br />
I&#8217;m putting it here, just in case someone encounters any error of this kind, he can do it correct.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Simple solution: ( Sorry, I could find it lately only.)</p>
<p>compile the program , liking with the Libraries, like this,</p>
<p> <code style="font-size:large;color:blue;">gcc `gnustep-config --objc-flags` <span style="color:red;">-L/usr/GNUstep/Local/Library/Libraries</span> -lgnustep-base *.m -o out</code></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Objective-C Gotchas]]></title>
<link>http://codeforfun.wordpress.com/2009/11/30/objective-c-gotchas/</link>
<pubDate>Mon, 30 Nov 2009 17:05:29 +0000</pubDate>
<dc:creator>Cliff</dc:creator>
<guid>http://codeforfun.wordpress.com/2009/11/30/objective-c-gotchas/</guid>
<description><![CDATA[You&#8217;re working in Objective-C land trying to get a product out the door and into the Apple iTu]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>You&#8217;re working in Objective-C land trying to get a product out the door and into the Apple iTunes Store, right? (Don&#8217;t argue with me I&#8217;m just setting the stage.) You&#8217;re feeling the second cup of coffee seep into your bloodstream which creates a certain euphoric sensation as the last 3 times you mashed Cmd+B turned up no errors. Yes, that&#8217;s what&#8217;s happening in your copy of XCode right now. You then Cmd+Tilde to toggle the other XCode window active (Cmd+Tilde is a nifty Apple shortcut for switching active windows in the current app) and Cmd+B once again when a red flag on the play pops up in some code that had been just fine moments ago? What happened? Hi, <a href="http://codeforfun.wordpress.com/about/">I&#8217;m Cliff</a>. You&#8217;re here because XCode got&#8217;cha and you&#8217;re not quite sure how/why/where. I&#8217;m here because I wanna list as many of these got&#8217;chas before I forget them.</p>
<p><strong>Property accessor notation in Earlier SDKs</strong><br />
Here&#8217;s one weird gotcha that I just hit again for the first time. If you have a variable typed as a protocol and that protocol has a setter, which takes another protocol type defined then you may get an error when using dot notation in SDKs earlier than 3.0. That is a definition like this:</p>
<pre class="brush: plain;">
@protocol MyCoolAbstractType &#60;NSObject&#62;
-(void) setNetworkDataProvider:(id&#60;MyNetworkDataProvider&#62;)aNetworkDataProvider;
@end
</pre>
<p>&#8230;should be coded like this:</p>
<pre class="brush: plain;">
@protocol MyCoolAbstractType &#60;NSObject&#62;
@property (nonatomic, retain) id&#60;MyNetworkDataProvider&#62; networkDataProvider;
@end
</pre>
<p>&#8230;before you can do this:</p>
<pre class="brush: plain;">
id&#60;MyCoolAbstractType&#62; myObj = //create object from factory
myObj.networkDataProvider = [[MyConcreteNetworkDataProvider alloc] init];
</pre>
<p>Evidently the &#8220;Discover setter is a property&#8221; feature is something new Santa delivered with 3.0 and never told me about. Here I thought I had that toy from 2 years ago!</p>
<p><strong>Unit Tests Can&#8217;t Be Signed</strong><br />
I added a unit test dependency to my &#8220;Application&#8221; target the other week in order to streamline my dev cycles. The idea was to ensure any changes I made to satisfy the integrated application bundle did not impact behaviors outlined in my test cases. (I use mini applications to perform my integration testing.) The problem here is that, even though this works well for simulator builds, an on-device build will fail as XCode attempts to sign your unit test target output. I haven&#8217;t discovered a work-around for this one yet so I&#8217;m gonna just punt and remove the test dependency from any targets meant to run on device.</p>
<p><em>I&#8217;ll trow up more as I find them&#8230;</em></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Packet Visualizer/Animator DONE! (ish) and Tool Posted for Download]]></title>
<link>http://sintixerr.wordpress.com/2009/11/28/packet-visualizeranimator-done-ish-and-posted/</link>
<pubDate>Sat, 28 Nov 2009 19:06:53 +0000</pubDate>
<dc:creator>Jack Whitsitt</dc:creator>
<guid>http://sintixerr.wordpress.com/2009/11/28/packet-visualizeranimator-done-ish-and-posted/</guid>
<description><![CDATA[Whew. I can relax. For the past 2-3 months, I&#8217;ve been working on my first real Objective-C pro]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Whew. I can relax.</p>
<p>For the past 2-3 months, I&#8217;ve been working on my first real <a href="http://en.wikipedia.org/wiki/Objective-C" target="_blank">Objective-C</a> project (my iphone app is still going, it just took a back seat to this): An application that will read <a href="http://en.wikipedia.org/wiki/Tcpdump" target="_blank">tcpdump</a> output and animate the packets over time using their inherent <a href="http://www.comsci.us/datacom/ippacket.html" target="_blank">byte / packet structure</a></p>
<p>And now&#8230;it&#8217;s up and in beta-ish quality. (Meaning it works, though some error checking and minor features arent quite where I want them.)</p>
<p><strong>You can download it here for free: <a href="http://sintixerr.wordpress.com/pkviz-packet-visualizer-and-animator/" target="_blank">http://sintixerr.wordpress.com/pkviz-packet-visualizer-and-animator/</a></strong></p>
<p>See it in motion here:</p>
<p><span style='text-align:center; display: block;'><object width='425' height='350'><param name='movie' value='http://www.youtube.com/v/WmP_Hi6yY04&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' /><param name='allowfullscreen' value='true' /><param name='wmode' value='transparent' /><embed src='http://www.youtube.com/v/WmP_Hi6yY04&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' type='application/x-shockwave-flash' allowfullscreen='true' width='425' height='350' wmode='transparent'></embed></object></span></p>
<p>This project was important to me and has been a long time coming. I&#8217;ve wanted to write a packet visualizer since I first started working with data viz 5 or so years ago at <a href="http://www.linkedin.com/companies/netsec" target="_blank">NetSec</a> and was using <a href="http://www.advizorsolutions.com/" target="_blank">Advizor</a>. That tool cost thousands of dollars per seat, didnt really animate (at least the way I needed), and only parsed CSV or databases. The free tools &#8211; like <a href="http://www.gnuplot.info/" target="_blank">GnuPlot</a>, just weren&#8217;t up to the task at all.</p>
<p>I also wanted something that could plot out data in interesting, pretty ways for some art projects I have in mind.</p>
<p>So, I originally started this time around on a quest to write a short python parser for tcpdump ascii hex output to put into &#60;some generic viz tool&#62; just to get started&#8230;but somehow I ended up writing a full-fledged visualizer (my first GUI project ever, I might add!). The learning process was a blast &#8211; I feel like I&#8217;m a much better coder for it &#8211; and I&#8217;ll be able to extend/expand on this to use for other art and security projects that are on my plate or are coming up.</p>
<p>I&#8217;m pretty excited about it. To see this finished through after years of whining to myself about it, procrastinating, and genuinely not having enough time, is pretty awesome. I&#8217;ve even already created a couple of cool shots that I&#8217;m happy to call &#8220;art&#8221; (granted, there is some photoshop processing here, but they&#8217;re both true to their originals!):</p>
<p><a href="http://farm3.static.flickr.com/2639/3986055652_cd263f6f7d_o.jpg" target="_blank"><img class="alignnone" src="http://farm3.static.flickr.com/2639/3986055652_cd263f6f7d_o.jpg" alt="" width="114" height="190" /></a> <a href="http://farm3.static.flickr.com/2728/4128320540_3fc0882aca_o.jpg" target="_blank"><img class="alignnone" src="http://farm3.static.flickr.com/2728/4128320540_3fc0882aca_o.jpg" alt="" width="114" height="190" /></a></p>
<p>Anyway, Mac Users, check out the tool and let me know what you think!</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Developing an ActiveMQ C++ JMS Client for Mac OS X]]></title>
<link>http://jeboyer.wordpress.com/2009/11/28/developing-a-activemq-c-jms-client-for-mac-os-x/</link>
<pubDate>Sat, 28 Nov 2009 15:50:03 +0000</pubDate>
<dc:creator>jeboyer</dc:creator>
<guid>http://jeboyer.wordpress.com/2009/11/28/developing-a-activemq-c-jms-client-for-mac-os-x/</guid>
<description><![CDATA[I&#8217;m switching gears in this post to discuss my experience with installing and integrating Apac]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="clear:both;">I&#8217;m switching gears in this post to discuss my experience with installing and integrating <a href="http://activemq.apache.org/">Apache ActiveMQ&#8217;s</a> C++ client library with Objective-C. <strong>ActiveMQ</strong> is an open-source message broker, for Windows and UNIX, from the <a href="http://www.apache.org/">Apache Software Foundation</a>.</p>
<p style="clear:both;">Topics covered:</p>
<ul style="clear:both;">
<li>Intro to ActiveMQ</li>
<li>Installing ActiveMQ C++ Client Libraries</li>
<li>Integrating ActiveMQ C++ with Objective-C</li>
</ul>
<p style="clear:both;">In previous posts, I cover iPhone development topics for a prototype I&#8217;m working on. Yet, my iPhone app is only one client in a larger <a href="http://en.wikipedia.org/wiki/Software_as_a_service">software as a service (SaaS)</a> prototype. The plan is to have the SaaS system support clients across other popular mobile platforms and desktop operating systems such as <a href="http://en.wikipedia.org/wiki/Mac_OS_X">Mac OS X</a> and <a href="http://en.wikipedia.org/wiki/Microsoft_Windows">Windows</a>.</p>
<p style="clear:both;">In this heterogeneous computing environment, some of my components need to reliably send and receive messages. So, adding a <a href="http://en.wikipedia.org/wiki/Message_broker">message broker</a> to the mix makes sense. However, for a prototype, buying a commercial product such as IBM&#8217;s WebSphere MQ is out-of-the-question. Consequently, I chose <a href="http://activemq.apache.org/">Apache ActiveMQ</a>.</p>
<blockquote>
<p style="clear:both;"><strong>Apache ActiveMQ</strong> is an open source message broker which fully implements the Java Message Service 1.1 (JMS). It provides &#8220;Enterprise Features&#8221; like clustering, multiple message stores, and availability to use any database as a JMS persistence provider besides VM, cache, and journal persistency.</p>
<p>Apart from Java, ActiveMQ can be also used from .NET, C/C++ or Delphi or from scripting languages like Perl, Python, PHP and Ruby via various &#8220;Cross Language Clients&#8221; together with connecting to many protocols and platforms.</p>
<p style="clear:both;">Apache ActiveMQ. (2009, November 26). In Wikipedia, The Free Encyclopedia. Retrieved 23:00, November 26, 2009, from http://en.wikipedia.org/w/index.php?title=Apache_ActiveMQ&#38;oldid=328100430</p>
</blockquote>
<p style="clear:both;">Installing ActiveMQ is easy. Writing Java clients is straightforward. However, I have a native Mac OS X client (written in Objective-C) that needs to process messages. Fortunately, ActiveMQ has a C++ client library or <a href="http://activemq.apache.org/cms/">CMS</a>, which stands for <strong>C++ Messaging Service;</strong> and since Xcode supports <a href="http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocCPlusPlus.html">Objective C++</a> (mixing Objective-C and C++) I have a solution for integrating my client with ActiveMQ.</p>
<p style="clear:both;">Installing CMS on a UNIX-based system is not as easy as installing the ActiveMQ server. There are some hoops to jump through.</p>
<ol style="clear:both;">
<li>Download CMS <a href="http://activemq.apache.org/cms/download.html">here</a>.</li>
<li>Follow the README instructions and note that the package is dependent on number of tools and libraries:
<ul style="clear:both;">
<li><em>autoconf</em> version &#62;= 2.61</li>
<li><em>automake</em> version &#62;= 1.10</li>
<li><em>libtool</em> version &#62;= 1.5.24</li>
<li><em>APR version</em> &#62;= 1.3</li>
<li><em>APR-Util</em> version &#62;= 1.3</li>
<li><em>CPPUnit</em> version &#62;= 1.10.2*</li>
<li><em>libuuid</em> version &#62;= ?*</li>
</ul>
</li>
</ol>
<p style="clear:both;">On Mac OS X 10.6.x, I already had <em>autoconf</em>, <em>automake</em>, and <em>libtool</em>. But, I had to install the latter four packages before installing CMS. Each installation follows the same set of standard command lines, check the requisite README for variations:</p>
<ul style="clear:both;">
<li><em>./configure </em></li>
<li><em>make</em></li>
<li><em>make [test or check]</em></li>
<li><em>make install</em></li>
</ul>
<p style="clear:both;">After installing everything, the CMS libraries will be in <em>usr/local/lib</em> and ready to use in Xcode.</p>
<p style="clear:both;">Moving to client development, I had the simple CMS consumer example running straightaway. However, once I began to mix in my Objective-C code, my build was wrought with pre-complier errors of the form: <em>expected &#8216;;&#8217;, &#8216;,&#8217; or &#8216;)&#8217; before &#8216;&#62;&#8217; token</em>.</p>
<p style="clear:both;">Answers to this issue on the web were illusive. But, I knew the root cause was the inclusion of <em>&#60;Foundation/Foundation.h&#62; </em>with my C++. Fiddling with build settings was futile. My workaround, remove all references to <em>Foundation.h</em> and explicitly add only the headers the implementation needs. For example: <em>&#60;Foundation/NSString.h&#62;, &#60;Foundation/NSDate.h&#62;, &#60;Foundation/NSDateFormatter.h&#62;</em><em>&#8230; </em>Works like a charm, but tedious. I wish Xcode had a command analogous to <strong>Organize Imports</strong> in Eclipse.</p>
<p style="clear:both;">In any case, my ActiveMQ Objective C++ client is now working nicely. I hope this info helps some other Xcoder out there.</p>
<p><br class="final-break" style="clear:both;" /></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[iPhone SDK 001 - Introduzione]]></title>
<link>http://norcecco.wordpress.com/2009/11/28/iphone-sdk-001-introduzione/</link>
<pubDate>Sat, 28 Nov 2009 12:50:23 +0000</pubDate>
<dc:creator>norcecco</dc:creator>
<guid>http://norcecco.wordpress.com/2009/11/28/iphone-sdk-001-introduzione/</guid>
<description><![CDATA[In parallelo con lo studio di Objective-C, voglio imparare a sviluppare applicazioni per iPhone. Par]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>In parallelo con lo studio di Objective-C, voglio imparare a sviluppare applicazioni per iPhone.</p>
<p>Partirò da un manuale edito da Apogeo e mi spingerò attraverso la Rete cercando cercando e cercando&#8230;</p>
<p>Primo passo: la creazione di una semplice applicazione che, alla pressione di un tasto, modificherà il messaggio di benvenuto sullo schermo.</p>
<p>Naturalmente prima devo armarmi degli strumenti necessari:</p>
<ul>
<li>un computer Apple dotato di MAC OS X 10.4 o superiore;</li>
<li>Xcode (scaricabile gratuitamente dalla <a href="http://developer.apple.com/iphone/" target="_blank">pagina dedicata</a> allo sviluppo del sito Apple)</li>
</ul>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Cross Platform Mobile Development Documentation]]></title>
<link>http://tetontech.wordpress.com/2009/11/28/cross-platform-mobile-development-documentation/</link>
<pubDate>Sat, 28 Nov 2009 01:25:16 +0000</pubDate>
<dc:creator>tetontech</dc:creator>
<guid>http://tetontech.wordpress.com/2009/11/28/cross-platform-mobile-development-documentation/</guid>
<description><![CDATA[Available on the wiki you will find documentation on how to start using the latest 1.6 beta to devel]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Available on <a href="http://quickconnect.pbworks.com/">the wiki</a> you will find documentation on how to start using the latest 1.6 beta to develop for iPhone, Android, and Palm with the same HTML, CSS, and JavaScript code.  I hope this helps you creating the apps that you want.</p>
<p>I&#8217;m still working on getting Blackberry development to work the same way as the others but I&#8217;m close to having something that works.</p>
<p>I&#8217;m also uploading 1.6 beta6.  It makes some small fixes related to the Images directory in the project.  If you are using beta5 you should upgrade.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Objective-C 001 - Introduzione]]></title>
<link>http://norcecco.wordpress.com/2009/11/27/objective-c-001-introduzione/</link>
<pubDate>Fri, 27 Nov 2009 15:36:15 +0000</pubDate>
<dc:creator>norcecco</dc:creator>
<guid>http://norcecco.wordpress.com/2009/11/27/objective-c-001-introduzione/</guid>
<description><![CDATA[Prendo spunto dal grandissimo lavoro svolto da Livio Sandel per provare, a partire da oggi e con cad]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Prendo spunto dal grandissimo lavoro svolto da <a href="http://www.macocoa.omitech.it/intro.htm">Livio Sandel</a> per provare, a partire da oggi e con cadenza più o meno regolare (molto più meno che più), a studiare il linguaggio di programmazione Objective-C.<br />
Faccio questo utilizzando principalmente le guide fornite (in inglese, e io con l&#8217;inglese non sono mai andato d&#8217;accordo) da Apple e prendendo spunto qua e là dalla Rete ed infine scrivendo, scrivendo e scrivendo.<br />
Scrivere, e cercare di spiegare, aiuta ad imparare. L&#8217;ho sempre pensato.<br />
Perciò chiedo già scusa fin da ora per gli strafalcioni, spero non grammaticali, e ringrazio chi vorrà pormi delle domande!<br />
Bene. Partiamo.</p>
<p><strong>Che cos&#8217;è Objective-C?</strong></p>
<p>Objective-C è un linguaggio di programmazione orientato agli oggetti basato sul C standard.</p>
<p>Tradotto in Italiano Objective-C è il linguaggio C, al quale sono state aggiunte delle estensioni (piccole, ma potenti) per renderlo un vero e proprio linguaggio di programmazione ad oggetti. Queste estensioni derivano in gran parte da un altro linguaggio di programmazione: lo Smalltalk, uno dei primissimi linguaggi orientati agli oggetti e sul quale non mi dilungherò.</p>
<p>Una buona infarinatura di C è quasi d&#8217;obbligo per imparare Objective-C. Ma io sottolineo il quasi. In effetti questo linguaggio di programmazione, pur essendo un&#8217;estensione del C, è diverso quanto basta per impararlo da zero.</p>
<p>Nella prossima puntata inizieremo a parlare di Oggetti</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[QuickConnect Cross Platform Mobile Development]]></title>
<link>http://tetontech.wordpress.com/2009/11/26/quickconnect-cross-platform-mobile-development/</link>
<pubDate>Thu, 26 Nov 2009 00:15:20 +0000</pubDate>
<dc:creator>tetontech</dc:creator>
<guid>http://tetontech.wordpress.com/2009/11/26/quickconnect-cross-platform-mobile-development/</guid>
<description><![CDATA[The latest QuickConnectFamily beta, 1.6 beta5, includes Xcode templates for iPhone, Android, and Pal]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>The latest QuickConnectFamily beta, 1.6 beta5, includes Xcode templates for iPhone, Android, and Palm WebOS development.  The file structure is the same across all of the platforms.  You can write your application in HTML, CSS, and JavaScript for one device and then move the code into projects for the other platforms.</p>
<p><strong><em>Coming soon, one project that builds and launches on all platforms.</em></strong></p>
<p><em>Things to remember</em></p>
<ol>
<li><em>The 1.6 beta 5 dowload does not include the full Android SDK.  Download the QC Android support file and it will have what you need.</em></li>
<li><em>You have to install the Palm WebOS SDK if you want to develop for that platform</em></li>
</ol>
<p>Here are images of the same simple application running on all of the platforms on my MacBook Pro</p>

</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Using Predicate Builder]]></title>
<link>http://objectivesee.wordpress.com/2009/11/25/using-predicate-builder/</link>
<pubDate>Wed, 25 Nov 2009 20:38:37 +0000</pubDate>
<dc:creator>eagecl</dc:creator>
<guid>http://objectivesee.wordpress.com/2009/11/25/using-predicate-builder/</guid>
<description><![CDATA[I started writing fetch requests and my mind began to remind me that I had seen something interestin]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>I started writing fetch requests and my mind began to remind me that I had seen something interesting about creating a NSFetchRequest using a GUI tool.  I pulled up my data model in Xcode and fired up predicate builder.  I knew there was a nice GUI way to generate the predicates without fussing with the tricksy predicate language.  My problem was, “how to create a variable that I could use at runtime to substitute with a value.  The answer was not immediately obvious.  I stared for a while at the sheet below and tried various clicks to try and squeeze the functionality out of the screen below to no avail. Then I did a quick google search and came up with an interesting article.  It’s a bit dated, but it provided a good explanation of the screen below and laid the secrets of the predicate builder bare. <a href="http://www.mactech.com/articles/mactech/Vol.22/22.02/CoreData4/">Behold the predicate builder tutorial</a>! (<span style="font-size:10pt;">*hint* right-click just to the left of the ”-“ sign</span>)</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[What is Objective-C?]]></title>
<link>http://objectivecoffee.com/2009/11/25/what-is-objective-c/</link>
<pubDate>Wed, 25 Nov 2009 14:14:07 +0000</pubDate>
<dc:creator>A Bean</dc:creator>
<guid>http://objectivecoffee.com/2009/11/25/what-is-objective-c/</guid>
<description><![CDATA[According to the Apple Developer website: &#8220;The Objective-C language is a simple computer langu]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>According to the Apple Developer website:</p>
<p>&#8220;The Objective-C language is a simple computer language designed to enable sophisticated object-oriented programming. Objective-C is defined as a small but powerful set of extensions to the standard ANSI C language. Its additions to C are mostly based on Smalltalk, one of the first object-oriented programming languages. Objective-C is designed to give C full object-oriented programming capabilities, and to do so in a simple and straightforward way.&#8221; <em>Source Apple</em></p>
<p>That&#8217;s pretty much it. Objective C is a strict superset of C.  What this means to those of you who know C, is that it is possible to compile any C program with an Objective C compiler so, you&#8217;re free to include C in an Objective C Class.</p>
<p>Don&#8217;t worry if you don&#8217;t know C or Objective C, as future posts and video tutorials will go in to the specifics. For now we&#8217;re starting with the basics – hence this post.</p>
<p>Beans for beginners (coming soon):</p>
<ol>
<li>What 	is Object Oriented Programming?</li>
<li>What 	is a compiler?</li>
</ol>
<p>Ah but we haven&#8217;t mentioned &#8216;Smalltalk&#8217; – for good reason. We&#8217;re going to be teaching Objective C and we don&#8217;t want to confuse you at the first hurdle; lets just say that Smalltalk uses a different syntax to C but these two syntaxes combined make up an Objective C program.  Syntax simply means a different writing style, we&#8217;ll illustrate this once we get to our first video tutorial.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Class：類別的建立]]></title>
<link>http://bonjouryentinglai.wordpress.com/2009/11/25/class%ef%bc%9a%e9%a1%9e%e5%88%a5%e7%9a%84%e5%bb%ba%e7%ab%8b/</link>
<pubDate>Tue, 24 Nov 2009 16:40:24 +0000</pubDate>
<dc:creator>bonjouryentinglai</dc:creator>
<guid>http://bonjouryentinglai.wordpress.com/2009/11/25/class%ef%bc%9a%e9%a1%9e%e5%88%a5%e7%9a%84%e5%bb%ba%e7%ab%8b/</guid>
<description><![CDATA[如果您有學過C++之類的物件導向程式，對類別這個名詞應該不太陌生。如果您沒聽過，也不用太擔心，在Objective-C中學習建立一個類別，並不是件困難的事。 在C語言中，當要宣告一個變數的時候，如果是]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>如果您有學過C++之類的物件導向程式，對類別這個名詞應該不太陌生。如果您沒聽過，也不用太擔心，在Objective-C中學習建立一個類別，並不是件困難的事。</p>
<p>在C語言中，當要宣告一個變數的時候，如果是整數，我們會用int；如果是符點數，我們會用float。這些都是程式語言預先就設定好的資料型態。要是再進階一點，想把很多資料型態用一個變數表示，C語言提供了結構體(structure)這樣的語法，讓我們將各種資料型態包裝成一個結構體，而宣告為該結構體的變數就能存取各種型態的資料。</p>
<p>然而在物件導向的程式語言中，單單只靠儲存資料的結構體是不夠的，物件除了資料外，還有許多的“動作”。類別除了像結構體可以包裝各種資料型態外，它還可以將多個函式包裝起來，因此被宣告為該類別的變數(或稱為物件），本身不但擁有該類別的各種資料型態，它也可以呼叫在該類別中所定義的函式（方法）。</p>
<p>在Objective-C中，類別由兩個部份組成：</p>
<ul>
<li>interface：宣告這個類別所包含的變數(instance variables)和方法(methods)，以及該類別所繼承的父類別(superclass)。</li>
<li>implementation：包含了該類別方法的詳細程式碼。</li>
</ul>
<p>通常interface存在於副檔名為.h的檔案中，而implementation如果內容是由Objective-C所寫成，則存成.m檔。以下分別就這兩部份加以說明。<!--more--></p>
<p><strong>Interface</strong></p>
<p>interface中文的意思為界面，顧名思義，這個檔案主要是來告訴人家這個類別包含了哪些東西，它擁有哪些變數，以及它有哪些方法函式可以調用。interface的格式如下：</p>
<blockquote><p>@interface <em>ClassName</em> : <em>ItsSuperclass</em> {</p>
<p><em>instance variable declarations</em></p>
<p>}</p>
<p><em>method declarations</em></p>
<p>@end</p></blockquote>
<p>上述程式碼中斜體字是我們要填入的地方。在@interface後面首先要填入的是這個類別的名稱，冒號後面則是這個類別要繼承哪一個類別。一般情況下，就算是自己新建立的類別，也會繼承NSObject這個父類別，因為NSObject可說是所有Objective-C物件裡的根本，繼承它才可以調用一些如記憶體管理等基本的函數。</p>
<p>在父類別之後的大括號裡，是用來宣告這個類別所擁有的變數。如果這是一個長方型類別，它會擁有的變數可能有：</p>
<blockquote><p>float width;</p>
<p>float height;</p>
<p>BOOL filled;</p>
<p>NSColor *fillColor;</p></blockquote>
<p>宣告完變數後，在大括號外和@end之間會宣告這個類別的方法（即可調用的函數）。這個方法如果可以被類別所調用，稱為class methods，在方法名稱的前面會以&#8217;+'號表示：</p>
<blockquote><p>+ alloc;</p></blockquote>
<p>如果是這個類別的實體物件所能呼叫的方法(instance methods)，則方法名稱前以&#8217;-'號表示：</p>
<blockquote><p>- (void)display;</p></blockquote>
<p>至於class methods和instance methods的差別以及使用的時機，之後會在相關實例中說明。</p>
<p>若是這個方法有回傳資料，在方法名稱前的括號會填入該回傳值的資料型態：</p>
<blockquote><p>- (float) area;</p></blockquote>
<p>這個方法如果有輸入參數，參數名稱會寫在方法名稱的冒號後面：</p>
<blockquote><p>- (void)setWidth: (float)width setHeight:(float)height;</p></blockquote>
<p>另外要補充說明的是，如果這個類別有繼承其它類別（通常都會有），那麼在程式碼一開始的地方，必需將該類別的interface檔引入，其語法是：</p>
<blockquote><p>#import &#8220;<em>ClassName.h</em>&#8220;</p></blockquote>
<p>引號內填入的即是該類別的interface檔。基本上，上述動作和在C語言中使用#include的意思是一樣的，只是#import確保所有的檔案只被引入一次，不會發生重覆引入的問題。</p>
<p><strong>Implementation</strong></p>
<p>宣告完界面，接下來就是要把剛剛宣告的那些方法實作出來，implementation的部份就是在做這件事。implementation的格式如下：</p>
<blockquote><p>#import &#8220;<em>ClassName.h</em>&#8220;</p>
<p>@implementation <em>ClassName </em></p>
<p>method definitions</p>
<p>@end</p></blockquote>
<p>implementation的第一步，就是要先把剛剛宣告的界面import進來。在@implementation之後則是這個類別的名稱，而在@implementation和@end之間則是剛剛宣告過的那些方法的程式碼。</p>
<p>方法的程式碼和C語言函式的格式一樣，寫在一對大括號之內。大括號前面則是填入剛剛在interface裡所宣告的內容：</p>
<blockquote><p>+ alloc {</p>
<p>&#8230;</p>
<p>}</p>
<p>- (float) area {</p>
<p>&#8230;</p>
<p>}</p>
<p>- (void)setWidth: (float)width setHeight:(float)height {</p>
<p>&#8230;</p>
<p>}</p></blockquote>
<p>以上就是在Objective-C裡建立物件類別的基本語法。有了這些概念，接下來在看Objective-C的相關程式時，就不會被這些語法搞得不知所措了。在官方的手冊中， 類別這個章節其實還介紹了很多東西，但一下子寫不完，而且寫太多應該只會愈寫愈亂，所以剩下的部份等未來實際應用上遇到時再一起說明吧！</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Membuat Bubble Chat di Aplikasi iPhone]]></title>
<link>http://heru762004.wordpress.com/2009/11/24/membuat-bubble-chat-di-aplikasi-iphone/</link>
<pubDate>Tue, 24 Nov 2009 03:04:10 +0000</pubDate>
<dc:creator>heru762004</dc:creator>
<guid>http://heru762004.wordpress.com/2009/11/24/membuat-bubble-chat-di-aplikasi-iphone/</guid>
<description><![CDATA[Kemarin, saya mendapat tugas untuk membuat suatu aplikasi chatting di iPhone. Nah supaya tampilannya]]></description>
<content:encoded><![CDATA[Kemarin, saya mendapat tugas untuk membuat suatu aplikasi chatting di iPhone. Nah supaya tampilannya]]></content:encoded>
</item>
<item>
<title><![CDATA[Linking Error in Unit Tests]]></title>
<link>http://objectivesee.wordpress.com/2009/11/24/linking-error-in-unit-tests/</link>
<pubDate>Tue, 24 Nov 2009 01:04:06 +0000</pubDate>
<dc:creator>eagecl</dc:creator>
<guid>http://objectivesee.wordpress.com/2009/11/24/linking-error-in-unit-tests/</guid>
<description><![CDATA[Surprise, Surprise, another inexplicable linking error after writing a test. This time there was an ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Surprise, Surprise, another inexplicable linking error after writing a test.  This time there was an error that looked like this:</p>
<p><span style="font-size:11pt;">Undefined symbols:<br />
  &#8220;.objc_class_name_FolderSynchronizer&#8221;, referenced from:<br />
      literal-pointer@__OBJC@__cls_refs@FolderSynchronizer in FolderSynchronizerTests.o<br />
ld: symbol(s) not found<br />
collect2: ld returned 1 exit status</p>
<p></span>Thankfully, a good nights sleep caused the answer to come fairly quickly.  I had forgotten about this, but I originally added the class FolderSynchronizer.m incorrectly.  I was typing to quickly and accidentally created the file without the “.m” extension.  I corrected it and everything built fine in my application target, but changing to the unit test target would cause the error above.  I started down the path of checking what targets the file was assigned to and everything looked correct.  It wasn’t until I expanded the unit test target and looked in the Compile Sources step that I noticed FolderSynchronizer.m was not listed.  It was in the step above, Copy Bundle Resources.  All I had to do was drag and drop it into the Compile Sources step and the test compiled and ran fine.  I guess adding the file as a “normal” file instead of a “.m” file caused it to be treated as a resource and not source code in the unit test target.  </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Unit Testing with Objective-C]]></title>
<link>http://objectivesee.wordpress.com/2009/11/24/unit-testing-with-objective-c/</link>
<pubDate>Tue, 24 Nov 2009 00:46:38 +0000</pubDate>
<dc:creator>eagecl</dc:creator>
<guid>http://objectivesee.wordpress.com/2009/11/24/unit-testing-with-objective-c/</guid>
<description><![CDATA[I’ve been enamored of late with the concept of Test Driven Development and have found it incredibly ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>I’ve been enamored of late with the concept of Test Driven Development and have found it incredibly useful while working on my iPhone app.  It has also taken a lot of time and more than once, I’ve thought about not unit testing and just coding as fast as my little fingers will let me.  Every time though, there’s one argument that brings me back, and that is the argument of the courage that unit testing gives a developer when refactoring.  I’m so new at this iPhone development that I am bound to make design mistakes.  I know that if I have any hope of shipping a product, It will at some point need to be refactored and the only way I’ll be able to do that confidently is if I know that my application is being tested thoroughly.  Therefore I continue to write tests.</p>
<p>I found an article that described how to write unit tests that use Core Data and I began using it. It can be found <a href="http://chrisblunt.com/blog/2007/08/17/unit-testing-core-data/">here</a>.  It was fine until I started trying to save the NSManagedObjectContext, and then it failed with the following error:</p>
<p><span style="font-size:11pt;">This NSPersistentStoreCoordinator has no persistent stores.  It cannot perform a save operation.</p>
<p></span>I thought my code was solid, but apparently my Core Data stack was missing something.  What I did was create an in-memory persistent store as part of my Core Data stack.  I simply added the line, </p>
<p><span style="font-size:11pt;">[</span><span style="font-size:11pt;color:rgb(63,110,116);">coordinator</span> <span style="font-size:11pt;"></span><span style="font-size:11pt;color:rgb(46,13,110);">addPersistentStoreWithType</span><span style="font-size:11pt;">:</span><span style="font-size:11pt;color:rgb(92,38,153);">NSInMemoryStoreType</span> <span style="font-size:11pt;"></span><span style="font-size:11pt;color:rgb(46,13,110);">configuration</span><span style="font-size:11pt;">:</span><span style="font-size:11pt;color:rgb(170,13,145);">nil</span> <span style="font-size:11pt;"></span><span style="font-size:11pt;color:rgb(46,13,110);">URL</span><span style="font-size:11pt;">:</span><span style="font-size:11pt;color:rgb(170,13,145);">nil</span> <span style="font-size:11pt;"></span><span style="font-size:11pt;color:rgb(46,13,110);">options</span><span style="font-size:11pt;">:</span><span style="font-size:11pt;color:rgb(170,13,145);">nil</span> <span style="font-size:11pt;"></span><span style="font-size:11pt;color:rgb(46,13,110);">error</span><span style="font-size:11pt;">:&#38;error];</p>
<p></span>to the entire chunk of code below:</p>
<p><span style="font-size:11pt;">-(</span><span style="font-size:11pt;color:rgb(170,13,145);">void</span><span style="font-size:11pt;">)setUp {<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="font-size:11pt;color:rgb(92,38,153);">NSMutableSet</span> <span style="font-size:11pt;">*allBundles = [[</span><span style="font-size:11pt;color:rgb(92,38,153);">NSMutableSet</span> <span style="font-size:11pt;"></span><span style="font-size:11pt;color:rgb(46,13,110);">alloc</span><span style="font-size:11pt;">] </span><span style="font-size:11pt;color:rgb(46,13,110);">init</span><span style="font-size:11pt;">];<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;[allBundles </span><span style="font-size:11pt;color:rgb(46,13,110);">addObjectsFromArray</span><span style="font-size:11pt;">:[</span><span style="font-size:11pt;color:rgb(92,38,153);">NSBundle</span> <span style="font-size:11pt;"></span><span style="font-size:11pt;color:rgb(46,13,110);">allBundles</span><span style="font-size:11pt;">]];<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;[allBundles </span><span style="font-size:11pt;color:rgb(46,13,110);">addObjectsFromArray</span><span style="font-size:11pt;">:[</span><span style="font-size:11pt;color:rgb(92,38,153);">NSBundle</span> <span style="font-size:11pt;"></span><span style="font-size:11pt;color:rgb(46,13,110);">allFrameworks</span><span style="font-size:11pt;">]];<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="font-size:11pt;color:rgb(63,110,116);">managedObjectModel</span> <span style="font-size:11pt;">= [[</span><span style="font-size:11pt;color:rgb(92,38,153);">NSManagedObjectModel</span> <span style="font-size:11pt;"></span><span style="font-size:11pt;color:rgb(46,13,110);">mergedModelFromBundles</span><span style="font-size:11pt;">:[allBundles </span><span style="font-size:11pt;color:rgb(46,13,110);">allObjects</span><span style="font-size:11pt;">]] </span><span style="font-size:11pt;color:rgb(46,13,110);">retain</span><span style="font-size:11pt;">];<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="font-size:11pt;color:rgb(63,110,116);">coordinator</span> <span style="font-size:11pt;">= [[</span><span style="font-size:11pt;color:rgb(92,38,153);">NSPersistentStoreCoordinator</span> <span style="font-size:11pt;"></span><span style="font-size:11pt;color:rgb(46,13,110);">alloc</span><span style="font-size:11pt;">] </span><span style="font-size:11pt;color:rgb(46,13,110);">initWithManagedObjectModel</span><span style="font-size:11pt;">:</span><span style="font-size:11pt;color:rgb(63,110,116);">managedObjectModel</span><span style="font-size:11pt;">];<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="font-size:11pt;color:rgb(92,38,153);">NSError</span> <span style="font-size:11pt;">*error;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;[</span><span style="font-size:11pt;color:rgb(63,110,116);">coordinator</span> <span style="font-size:11pt;"></span><span style="font-size:11pt;color:rgb(46,13,110);">addPersistentStoreWithType</span><span style="font-size:11pt;">:</span><span style="font-size:11pt;color:rgb(92,38,153);">NSInMemoryStoreType</span> <span style="font-size:11pt;"></span><span style="font-size:11pt;color:rgb(46,13,110);">configuration</span><span style="font-size:11pt;">:</span><span style="font-size:11pt;color:rgb(170,13,145);">nil</span> <span style="font-size:11pt;"></span><span style="font-size:11pt;color:rgb(46,13,110);">URL</span><span style="font-size:11pt;">:</span><span style="font-size:11pt;color:rgb(170,13,145);">nil</span> <span style="font-size:11pt;"></span><span style="font-size:11pt;color:rgb(46,13,110);">options</span><span style="font-size:11pt;">:</span><span style="font-size:11pt;color:rgb(170,13,145);">nil</span> <span style="font-size:11pt;"></span><span style="font-size:11pt;color:rgb(46,13,110);">error</span><span style="font-size:11pt;">:&#38;error];<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="font-size:11pt;color:rgb(63,110,116);">managedObjectContext</span> <span style="font-size:11pt;">= [[</span><span style="font-size:11pt;color:rgb(92,38,153);">NSManagedObjectContext</span> <span style="font-size:11pt;"></span><span style="font-size:11pt;color:rgb(46,13,110);">alloc</span><span style="font-size:11pt;">] </span><span style="font-size:11pt;color:rgb(46,13,110);">init</span><span style="font-size:11pt;">];<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;[</span><span style="font-size:11pt;color:rgb(63,110,116);">managedObjectContext</span> <span style="font-size:11pt;"></span><span style="font-size:11pt;color:rgb(46,13,110);">setPersistentStoreCoordinator</span><span style="font-size:11pt;">:</span><span style="font-size:11pt;color:rgb(63,110,116);">coordinator</span><span style="font-size:11pt;">];<br />
}</span></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple iPhone Tech Talk #1: Interface Design by Eric Hope]]></title>
<link>http://abeansits.wordpress.com/2009/11/23/apple-iphone-tech-talk-1-interface-design-by-eric-hope/</link>
<pubDate>Mon, 23 Nov 2009 21:39:39 +0000</pubDate>
<dc:creator>abeansits</dc:creator>
<guid>http://abeansits.wordpress.com/2009/11/23/apple-iphone-tech-talk-1-interface-design-by-eric-hope/</guid>
<description><![CDATA[Let me initiate these posts by saying that any error included are most probably the result of my mis]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Let me initiate these posts by saying that any error included are most probably the result of <strong>my</strong> mistakes and not of the Evengelists from Apple. And if anyone has been offended in some way (I really hope this will not happen since I am writing about software development and not religion) I humbly apologize. Now, lets get started.</p>
<p><!--more--></p>
<p style="text-align:center;">The first talk I attended was performed by a User Experience Evangelist at Apple, Mr. <a href="http://www.erichope.name/">Eric Hope</a>.<a href="http://abeansits.wordpress.com/files/2009/11/eric_hope_techtalk_hamburg_2009.jpg"><img class="size-medium wp-image-25 aligncenter" title="Eric_Hope_techtalk_hamburg_2009" src="http://abeansits.wordpress.com/files/2009/11/eric_hope_techtalk_hamburg_2009.jpg?w=300" alt="Eric Hope @ Apple Tech Talk in Hamburg 2009." width="300" height="225" /></a></p>
<p>All the talks at Tech Talk were very focused and intensive (compressing the subject of interaction design on the iPhone to one hour naturally leads to this). Mr. Hope immediately started of by presenting the 10 essentials of interface design, so here it goes:</p>
<ol>
<li><em><strong>Elegant solution</strong></em> &#8211; Your application needs to solve a specific problem or a set of problems for the user. Start of by pinpointing a problem and then move on the implementation and what features it will contain. Many developers move in the other direction &#8212; starting of with an idea about what cool features they want to include in their app. The users are not going to come back to your app for a cool animation.</li>
<li><em><strong>Essential style</strong></em> &#8211; Finding which style your application belongs to can help you in making the right design decisions. Your application can probably be quartered into one of these groups:
<ul>
<li><em>Serious</em> &#8211; Use minimal graphics, metaphors and keep the alignment clean. These apps are focused on the data so you don&#8217;t want to irritate the user with a lot of animations. E.g. Mail app.</li>
<li><em>Fun </em>- These kind of apps focus on productivity and being graphically rich though still utilizing a simple information hierarchy.</li>
<li><em>Fun entertainment</em> &#8211; This category is mainly populated by games; graphically intensive, no boring tables and full screen. Remember to let the user get to the game in as few taps as possible.</li>
<li><em>Serious entertainment </em>- Moderately graphical, not excessively hierarchical with a focus on content consumption. E.g. Classics.</li>
<li><em>Utilities </em>- A utility is also characterized by being graphically rich and focused on the main function. The UI should be readable from ~1.5m away, also try to use the &#8220;flip for settings&#8221; metaphor. E.g. Weather.</li>
</ul>
</li>
<li><em><strong>Great usability</strong></em> &#8211; Your application needs to be built on a solid hierarchy, a linear flow is usually what is best suited. Build it by the &#8220;one door to one room&#8221;-principle, this states that there should only be one way to enter a view. If the flow of the application is to complex the user won&#8217;t feel she has the ability to mentally map it out. In addition one thing many developers forget is to build their UI with finger sized targets, this translates to ~44&#215;44 pixels for buttons, links and such.</li>
<li><em><strong>Gorgeous app icon &#8211; </strong></em>Mr. Hope really stressed the importance of having an attractive icon. The icon is the first and last visual impression of your application (because of the shrinking animation being shown when an app quits). It is  also the primary attractor in App Store, apps are made and broken from their icon. The human mind parses shapes first, so use a silhouette  without any text. The icon should be so rich in detail it can be printed as a poster and put on your wall. =)</li>
<li><strong>High fidelity UI &#8211; </strong>Apple has been so kind to compress all their knowledge about UIs to a single document called the <a href="http://developer.apple.com/mac/library/DOCUMENTATION/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html"><em> </em>HIG (Human Interface Guidelines)</a>, both and Eric warmly recommend it. By conforming to iPhone-like behavior and looks you meet a level of standard. As a developer you can stand on the shoulders of others while the user will be able to feel at home using your interface. This is of course a trade-of when wanting to build something unique.Mr. Hope also emphasized how much there is to gain by involving the client/end user in the beginning of the design process. Creating a paper prototype for every screen will help you to avoid those costly cavities later on. There is also a cheap way of increasing the perceived value of your application; use rich materials like wood, leather and glass. Employing tactile design by using real things ad a model for your graphical objects you can enrich the user experience. E.g. The compass app.
<p>One fundamental point, that for some could come of as obvious, is that you WILL need a designer helping you build that app. His exact words were: &#8220;Hire, befriend or become a designer!&#8221;. I believe the last option will be the cheapest&#8230;</li>
<li><em><strong>Dynamic content &#8211; </strong></em>This was THE single most important guideline of them all.<br />
iPhone<em> </em>users consume the data available in their apps then they throw them away. In order to get you user to regularly revisit you app it will need a &#8220;pulse&#8221;. Create a possibility for the users to share and/or generate<em> </em>new data. People love people, interconnectedness is the key. Facebook has <a href="http://wiki.developers.facebook.com/index.php/Facebook_Connect_for_iPhone">a great API</a> available for iPhone integration.
<p>&#160;</p>
<p>People loves freshness and improvement! Don&#8217;t write &#8220;Bug fixes&#8221; in the update description of your app, take your time and try to &#8220;sell&#8221; your app again. By making available more content through in-app purchase there no need to release another app as you had to do before. But be detailed and transparent in your description about what the user will get. As the Swedish proverb says: &#8220;Ärlighet varar längst!&#8221; =)</li>
<li><em><strong>Animation -</strong></em> Animation could help in increasing the perceived value, they could also (when done right) help to minimize graphical feedback to the user. E.g. instead of flashing an Alert in the face of the user when a podcast has been selected, the small icon flies to you Downloads-tab and the download begins.</li>
<li><em><strong>Sound -</strong></em> Mr. Hope describes sound as the forgotten frontier. Unfortunately it is not present in many apps even though it could help in reducing visual noise and increase the value of the app. As with any feature it could be abused, always obey and respect the silent switch. Also remember that it needs to be symmetrical, if you play a sound when you expand a list you also need a sound when it contracts.</li>
<li><em><strong>Polish &#8211; </strong></em>is not only a country in Europe! The details are as important as your main features. It only takes a small irritation to loose an otherwise happy user.Young iPhone are more likely to interact with their device using their thumbs, therefore implementing landscape mode could be wise if they are part of your expected population. There is no reason not to create a spotlight and settings icon, this should be 29&#215;29 pixels and will take around 5 min of your time. The same argument holds true for Copy+Paste &#38; Undo+Redo, even though it probably will take more than a few minutes to implement.</li>
<li><em><strong>Application Definition Statement -</strong></em> As stated before, avoid developing from a long list of features. Try to find what is unique with your app.
<ul>
<li>What are your differentiators?</li>
<li>What problem are you trying to solve for the user?</li>
<li>Who are your audience? This really needs to be super focused, &#8220;laser precise!&#8221;. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ul>
<p>There is a mantra that could help you in finding your definition statement: <em>&#8220;Pick the few features most frequently used, by the majority of your users, most appropriate for the mobile context.&#8221;</em></li>
</ol>
<p>Remember to read through <a href="http://developer.apple.com/mac/library/DOCUMENTATION/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html">the HIG</a>, it is loaded with tips for the interface designer as well as the developer.</p>
<p>Lastly I want to emphasize that any error expressed in this post most likely belongs to me, while any bit of knowledge can be credited to Eric Hope.</p>
<p>Stay tuned for part II; &#8220;In App Purchase by Mark Malone&#8221;.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[iPhone Programming - Code Sign Error]]></title>
<link>http://mobilepp.wordpress.com/2009/11/23/iphone-programming-code-sign-error-2/</link>
<pubDate>Mon, 23 Nov 2009 17:16:27 +0000</pubDate>
<dc:creator>peiyaoh</dc:creator>
<guid>http://mobilepp.wordpress.com/2009/11/23/iphone-programming-code-sign-error-2/</guid>
<description><![CDATA[Code Sign Error Check dependencies [BEROR]Code Sign error: The identity &#8216;iPhone Developer]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Code Sign Error   <br />Check dependencies    <br />[BEROR]Code Sign error: The identity &#8216;iPhone Developer&#8217; doesn&#8217;t match any valid certificate/private key pair in the default keychain    </p>
<p>=&#62; install the private key exported from the original computer</p>
<p>Check dependencies    <br />[BEROR]Code Sign error: Provisioning profile &#8216;XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&#8217; can&#8217;t be found    </p>
<ol>
<li>Project info -&#62; Code Signing -&#62; Code Signing Identity -&#62; aspen*      <br />change it to &#34;iPhone Developer&#34;</li>
<li>Target info -&#62; Code Signing -&#62; Code Signing Identity -&#62; Any iPhone OS Device     <br />change it to &#34;iPhone Developer&#34;</li>
</ol>
</div>]]></content:encoded>
</item>

</channel>
</rss>
