<?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/"
	>

<channel>
	<title>Cocoanetics &#187; Updates</title>
	<atom:link href="http://www.cocoanetics.com/category/updates/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cocoanetics.com</link>
	<description>Our DNA is written in Objective-C</description>
	<lastBuildDate>Sat, 25 May 2013 10:20:39 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
	<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=dr_touch&amp;url=http%3A%2F%2Fwww.cocoanetics.com%2F&amp;language=en_US&amp;category=text&amp;title=Cocoanetics&amp;description=Our+DNA+is+written+in+Objective-C&amp;tags=blog" type="text/html" />
		<item>
		<title>DTFoundation 1.4</title>
		<link>http://www.cocoanetics.com/2013/05/dtfoundation-1-4/</link>
		<comments>http://www.cocoanetics.com/2013/05/dtfoundation-1-4/#comments</comments>
		<pubDate>Fri, 24 May 2013 16:51:45 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Updates]]></category>
		<category><![CDATA[DTFoundation]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=8214</guid>
		<description><![CDATA[Today I have for you two special goodies. I used the entire day today to put the finishing touches on two new components that you find released in version 1.4 of DTFoundation. On a recent project I was fed up with having to deal with a SQLite database &#8220;by hand&#8221;. So I wrote a wrapper for it that allows you to interact with the database in convenient Objective-C, as well as perform queries on a background queue. The second new project is what the general public has come to call a &#8220;Hamburger Menu&#8221;. This is the kind of side panel menu that you can see in many popular apps. And Yes, YES, I am aware that there are &#8220;finished&#8221; open source components out there that provide similar functionality. I like to tinker with these things because I am learning a hell of a lot about how to make great components. In short: for the fun of it. Version 1.4 Change Log ADDED: [DTSidePanel] Container Controller ADDED: [DTSQLite] Wrapper class for SQLite3 Databases ADDED: [DTAlertView] Method to create a cancel button and/or set a cancelBlock. CHANGED: Moved experimental striped layer into Experimental folder DTSQLiteDatabase The idea is that I want to have an NSObject represent the database and then have a simple method to query it. // get the path in a way that also works in unit tests NSString *path = &#91;&#91;NSBundle bundleForClass:&#91;self class&#93;&#93; pathForResource:@&#34;database&#34; ofType:@&#34;sqlite&#34;&#93;; &#160; // abort if the path does not exist NSAssert&#40;path, @&#34;No db file found in app bundle&#34;&#41;; &#160; // store in IVAR _database = &#91;&#91;DTSQLiteDatabase alloc&#93; initWithFileAtPath:path&#93;; The to perform a query you can simple call the following: NSString *sql = @&#34;SELECT * from mytable;&#34;; &#160; NSError *error = nil; NSArray *results = &#91;_database fetchRowsForQuery:sql error:&#38;amp;error&#93;; &#160; if &#40;!results&#41; &#123; // deal with error &#125; The results are automatically repackaged for you into an NSDictionary for each row. Note that in SQLite all column names turn to lowercase. At this moment this supports the SQLite types TEXT, INTEGER and FLOAT. If you need more let me know, those are easy to add. If you are the only person making calls to fetchRowsForQuery:error: and you don&#8217;t care that this is executed on the current (main) thread, then that&#8217;s all it takes. You get thread safety and the ability to synchronize fetches onto a private background queue via performBlock: and performBlockAndWait: just like you are used to from Core Data managed object contexts that have the private queue concurrency type: &#91;_database performBlock:^&#123; // this code occurs in background NSError *error = nil; NSArray *results = &#91;_database fetchRowsForQuery:sql error:&#38;amp;error&#93;; &#160; // do something with the results &#125;&#93;; DTSQLiteDatabase has a features that famous FMDB does not have, but which I needed. Imagine you starting a query that might take a while in the background, but while it is underway the user decides that he doesn&#8217;t want to wait. You can interrupt long-running queries via the cancelAllQueries method. I only implemented the absolutely necessary parts, but this works very nicely so far for my use case. The documentation can be found on our docs server. The &#8220;Hamburger Menu&#8221; There is a long list of apps that use said UI paradigm. The idea is that you are not waisting screen real estate by having tabs at the bottom of your screen like you would with a UITabBarController. Or a big viewController tree under a UINavigationController. Instead you have side panels. Often on the left side, sometimes also on the right. And you would reveal these side panels either by swiping sideways or by the famous &#8220;Hamburger Button&#8221;. I long wondered why it is called that &#8230; Look at this screen shot, with a little imagination you can see two parts of the hamburger bun with a piece of meat in between. (Thank you René Pirringer for drawing the button for my demo app) For a short while I considered calling this DTHamburgerMenuController, for the fun of it. But eventually I decided on DTSidePanelController instead, sounds more professional. It has these features: Support fixed or variable sized side panels. A fixed panel always keeps its width on rotation. A variable-width panel resizes such that you always have sufficient place to tap the center panel for closing. Supports embedding UINavigationControllers Swiping needs to be a minimum distance to be registered to avoid problems with other horizontal gestures Tap-to-close an open side panel Rotation support, panel view controllers are queried for supported orientations, compatibly with iOS 5 and above. Beautiful code and nice documentation Appearance notifications for the view controllers and views fully implemented. viewWillAppear fires as soon as the panel becomes visible. Support for accessing the side panel controller via property, self.sidePanelController from anywhere inside the view controller hierarchy Fast shadow with shadow path Ability to prevent closing/moving the center panel via delegate method. [...]]]></description>
				<content:encoded><![CDATA[<p>Today I have for you two special goodies. I used the entire day today to put the finishing touches on two new components that you find released in version 1.4 of <a href="http://www.cocoanetics.com/parts/dtfoundation/">DTFoundation</a>.</p>
<p>On a recent project I was fed up with having to deal with a SQLite database &#8220;by hand&#8221;. So I wrote a wrapper for it that allows you to interact with the database in convenient Objective-C, as well as perform queries on a background queue.</p>
<p>The second new project is what the general public has come to call a &#8220;Hamburger Menu&#8221;. This is the kind of side panel menu that you can see in many popular apps.</p>
<p><span id="more-8214"></span></p>
<div id="more-8214"></div>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
</div>
<p>And Yes, YES, I am aware that there are &#8220;finished&#8221; open source components out there that provide similar functionality. I like to tinker with these things because I am learning a hell of a lot about how to make great components. In short: for the fun of it.</p>
<h3>Version 1.4 Change Log</h3>
<ul>
<li>ADDED: [DTSidePanel] Container Controller</li>
<li>ADDED: [DTSQLite] Wrapper class for SQLite3 Databases</li>
<li>ADDED: [DTAlertView] Method to create a cancel button and/or set a cancelBlock.</li>
<li>CHANGED: Moved experimental striped layer into Experimental folder</li>
</ul>
<h3>DTSQLiteDatabase</h3>
<p>The idea is that I want to have an NSObject represent the database and then have a simple method to query it.</p>

<div class="wp_codebox"><table><tr id="p82144"><td class="code" id="p8214code4"><pre class="objc" style="font-family:monospace;"><span style="color: #11740a; font-style: italic;">// get the path in a way that also works in unit tests</span>
<a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/"><span style="color: #400080;">NSString</span></a> <span style="color: #002200;">*</span>path <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSBundle_Class/"><span style="color: #400080;">NSBundle</span></a> bundleForClass<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span>self class<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#93;</span> pathForResource<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;database&quot;</span> ofType<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;sqlite&quot;</span><span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #11740a; font-style: italic;">// abort if the path does not exist</span>
NSAssert<span style="color: #002200;">&#40;</span>path, <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;No db file found in app bundle&quot;</span><span style="color: #002200;">&#41;</span>;
&nbsp;
<span style="color: #11740a; font-style: italic;">// store in IVAR</span>
_database <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>DTSQLiteDatabase alloc<span style="color: #002200;">&#93;</span> initWithFileAtPath<span style="color: #002200;">:</span>path<span style="color: #002200;">&#93;</span>;</pre></td></tr></table></div>

<p>The to perform a query you can simple call the following:</p>

<div class="wp_codebox"><table><tr id="p82145"><td class="code" id="p8214code5"><pre class="objc" style="font-family:monospace;"><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/"><span style="color: #400080;">NSString</span></a> <span style="color: #002200;">*</span>sql <span style="color: #002200;">=</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;SELECT * from mytable;&quot;</span>;
&nbsp;
<a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSError_Class/"><span style="color: #400080;">NSError</span></a> <span style="color: #002200;">*</span>error <span style="color: #002200;">=</span> <span style="color: #a61390;">nil</span>;
<a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/"><span style="color: #400080;">NSArray</span></a> <span style="color: #002200;">*</span>results <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>_database fetchRowsForQuery<span style="color: #002200;">:</span>sql error<span style="color: #002200;">:&amp;</span>amp;error<span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span><span style="color: #002200;">!</span>results<span style="color: #002200;">&#41;</span>
<span style="color: #002200;">&#123;</span>
   <span style="color: #11740a; font-style: italic;">// deal with error</span>
<span style="color: #002200;">&#125;</span></pre></td></tr></table></div>

<p>The results are automatically repackaged for you into an NSDictionary for each row. Note that in SQLite all column names turn to lowercase. At this moment this supports the SQLite types TEXT, INTEGER and FLOAT. If you need more let me know, those are easy to add.</p>
<p>If you are the only person making calls to fetchRowsForQuery:error: and you don&#8217;t care that this is executed on the current (main) thread, then that&#8217;s all it takes.</p>
<p>You get thread safety and the ability to synchronize fetches onto a private background queue via performBlock: and performBlockAndWait: just like you are used to from Core Data managed object contexts that have the private queue concurrency type:</p>

<div class="wp_codebox"><table><tr id="p82146"><td class="code" id="p8214code6"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">&#91;</span>_database performBlock<span style="color: #002200;">:^</span><span style="color: #002200;">&#123;</span>
   <span style="color: #11740a; font-style: italic;">// this code occurs in background</span>
   <a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSError_Class/"><span style="color: #400080;">NSError</span></a> <span style="color: #002200;">*</span>error <span style="color: #002200;">=</span> <span style="color: #a61390;">nil</span>;
   <a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/"><span style="color: #400080;">NSArray</span></a> <span style="color: #002200;">*</span>results <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>_database fetchRowsForQuery<span style="color: #002200;">:</span>sql error<span style="color: #002200;">:&amp;</span>amp;error<span style="color: #002200;">&#93;</span>;
&nbsp;
   <span style="color: #11740a; font-style: italic;">// do something with the results</span>
<span style="color: #002200;">&#125;</span><span style="color: #002200;">&#93;</span>;</pre></td></tr></table></div>

<p>DTSQLiteDatabase has a features that <a href="https://github.com/ccgus/fmdb">famous FMDB</a> does not have, but which I needed. Imagine you starting a query that might take a while in the background, but while it is underway the user decides that he doesn&#8217;t want to wait. You can interrupt long-running queries via the <strong>cancelAllQueries</strong> method.</p>
<p>I only implemented the absolutely necessary parts, but this works very nicely so far for my use case. The documentation can be found <a href="https://docs.cocoanetics.com/DTFoundation/Classes/DTSQLiteDatabase.html">on our docs server</a>.</p>
<h3>The &#8220;Hamburger Menu&#8221;</h3>
<p>There is a long list of apps that use said UI paradigm. The idea is that you are not waisting screen real estate by having tabs at the bottom of your screen like you would with a UITabBarController. Or a big viewController tree under a UINavigationController.</p>
<p>Instead you have side panels. Often on the left side, sometimes also on the right. And you would reveal these side panels either by swiping sideways or by the famous &#8220;Hamburger Button&#8221;. I long wondered why it is called that &#8230; Look at this screen shot, with a little imagination you can see two parts of the hamburger bun with a piece of meat in between. (Thank you René Pirringer for drawing the button for my demo app)</p>
<p><a href="http://i1.wp.com/www.cocoanetics.com/files/Screen-Shot-2013-05-24-at-6.30.13-PM.png"><img class="alignnone  wp-image-8217" alt="Hamburger Menu" src="http://i1.wp.com/www.cocoanetics.com/files/Screen-Shot-2013-05-24-at-6.30.13-PM.png?resize=402%2C574" data-recalc-dims="1" /></a></p>
<p>For a short while I considered calling this <strong>DTHamburgerMenuController</strong>, for the fun of it. But eventually I decided on <strong>DTSidePanelController</strong> instead, sounds more professional.</p>
<p>It has these features:</p>
<ul>
<li><span style="line-height: 13px;">Support fixed or variable sized side panels. A fixed panel always keeps its width on rotation. A variable-width panel resizes such that you always have sufficient place to tap the center panel for closing.</span></li>
<li>Supports embedding UINavigationControllers</li>
<li>Swiping needs to be a minimum distance to be registered to avoid problems with other horizontal gestures</li>
<li>Tap-to-close an open side panel</li>
<li>Rotation support, panel view controllers are queried for supported orientations, compatibly with iOS 5 and above.</li>
<li>Beautiful code and <a href="https://docs.cocoanetics.com/DTFoundation/Classes/DTSidePanelController.html">nice documentation</a></li>
<li>Appearance notifications for the view controllers and views fully implemented. viewWillAppear fires as soon as the panel becomes visible.</li>
<li>Support for accessing the side panel controller via property, self.sidePanelController from anywhere inside the view controller hierarchy</li>
<li>Fast shadow with shadow path</li>
<li>Ability to prevent closing/moving the center panel via delegate method. For example if you have something modal going on that you want the user to finish first</li>
</ul>
<p>There are a few things that I decided against doing for the first version. For instance some implementations have a rubberbanding effect following the animation. The problem with this approach is that to support that you would have to under-lap the panels under the center panel so that you don&#8217;t see the background when it overshoots the limit. It is probably for this reason that most professionally made apps don&#8217;t have that. YouTube does rubberband, Facebook doesn&#8217;t.</p>
<p><img class="alignnone  wp-image-8218" alt="Prevent Closing" src="http://i2.wp.com/www.cocoanetics.com/files/Screen-Shot-2013-05-24-at-6.42.57-PM.png?resize=407%2C117" data-recalc-dims="1" /></p>
<p>The demo also shows how to lock a panel. If you go to the right panel you get a switch to prevent closing of the panel.</p>
<h3>Conclusion</h3>
<p>You are welcome to give my components a try, even if they are not as popular as FMDB or the various other implementations of the &#8220;hamburger menu&#8221;. I am interested to receive your comments or feedback.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=8214&amp;md5=e2b018d1face66568eadde37bbb7fe75" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2013/05/dtfoundation-1-4/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=dr_touch&amp;url=http%3A%2F%2Fwww.cocoanetics.com%2F2013%2F05%2Fdtfoundation-1-4%2F&amp;language=en_GB&amp;category=text&amp;title=DTFoundation+1.4&amp;description=Today+I+have+for+you+two+special+goodies.+I+used+the+entire+day+today+to+put+the+finishing+touches+on+two+new+components+that+you+find+released+in+version+1.4...&amp;tags=DTFoundation%2Cblog" type="text/html" />
	</item>
		<item>
		<title>AutoIngest for Mac 0.5.0</title>
		<link>http://www.cocoanetics.com/2013/05/autoingest-for-mac-0-5-0/</link>
		<comments>http://www.cocoanetics.com/2013/05/autoingest-for-mac-0-5-0/#comments</comments>
		<pubDate>Fri, 17 May 2013 15:15:18 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Updates]]></category>
		<category><![CDATA[AutoIngest]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=8198</guid>
		<description><![CDATA[This weeks update to AutoIngest for Mac (a comunity-driven Mac status bar app for downloading sales reports) brings support for downloading from multiple vendor identifiers. Your vendor identifier is an 8-digit number beginning with an 8. Usually you have only one, but if you &#8211; for example &#8211; move from an Individual to a Company Apple developer account, then your old ID is retired and you get a new one. There might be also other scenarios for people having multiple, now AutoIngest for Mac supports that. Changes ADDED: Support for multiple vendor identifiers For the validation I implemented an NSTokenField, the learnings from that I summarized in a separate article. I hope you are enjoying this new version AutoIngest for Mac! It is available via auto-update, direct download as well as full source on GitHub. The binary builds have Sparkle for OTA updating and are signed with Developer ID.]]></description>
				<content:encoded><![CDATA[<p>This weeks update to AutoIngest for Mac (a comunity-driven Mac status bar app for downloading sales reports) brings support for downloading from multiple vendor identifiers.</p>
<p>Your vendor identifier is an 8-digit number beginning with an 8. Usually you have only one, but if you &#8211; for example &#8211; move from an Individual to a Company Apple developer account, then your old ID is retired and you get a new one. There might be also other scenarios for people having multiple, now AutoIngest for Mac supports that.</p>
<p><span id="more-8198"></span></p>
<div id="more-8198"></div>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
</div>
<h3>Changes</h3>
<ul>
<li>ADDED: Support for multiple vendor identifiers</li>
</ul>
<p>For the validation I implemented an <a title="Tokenize This!" href="http://www.cocoanetics.com/2013/05/tokenize-this/">NSTokenField</a>, the learnings from that I summarized in a separate article.</p>
<p><a href="http://i1.wp.com/www.cocoanetics.com/files/Screen-Shot-2013-05-17-at-2.41.53-PM.png"><img class="alignnone size-full wp-image-8200" alt="AutoIngest token field" src="http://i1.wp.com/www.cocoanetics.com/files/Screen-Shot-2013-05-17-at-2.41.53-PM.png?resize=508%2C354" data-recalc-dims="1" /></a></p>
<p>I hope you are enjoying this new version AutoIngest for Mac! It is available via auto-update, <a href="http://beta.cocoanetics.com/Cocoanetics/com.cocoanetics.AutoIngest/63/AutoIngest.zip">direct download</a> as well as full source <a href="https://github.com/Cocoanetics/AutoIngest">on GitHub</a>. The binary builds have Sparkle for OTA updating and are signed with Developer ID.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=8198&amp;md5=95f3396a6399402ba7c6ba06d206db30" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2013/05/autoingest-for-mac-0-5-0/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=dr_touch&amp;url=http%3A%2F%2Fwww.cocoanetics.com%2F2013%2F05%2Fautoingest-for-mac-0-5-0%2F&amp;language=en_GB&amp;category=text&amp;title=AutoIngest+for+Mac+0.5.0&amp;description=This+weeks+update+to+AutoIngest+for+Mac+%28a+comunity-driven+Mac+status+bar+app+for+downloading+sales+reports%29+brings+support+for+downloading+from+multiple+vendor+identifiers.+Your+vendor+identifier+is+an...&amp;tags=AutoIngest%2Cblog" type="text/html" />
	</item>
		<item>
		<title>DTCoreText 1.5.2</title>
		<link>http://www.cocoanetics.com/2013/05/dtcoretext-1-5-2/</link>
		<comments>http://www.cocoanetics.com/2013/05/dtcoretext-1-5-2/#comments</comments>
		<pubDate>Thu, 16 May 2013 13:48:01 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Updates]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=8185</guid>
		<description><![CDATA[I&#8217;ve got a bunch of fixes and enhancements released in DTCoreText 1.5.2 today. Special thanks to Antiloop who sponsored the improvements for handling of padding inside lists. Changes in 1.5.1 FIXED: Attributes &#8220;bleeding&#8221; into next paragraph Changes in 1.5.2 FIXED: Crash on parsing HTML with additional tags following HTML end tag FIXED: DTAttributedLabel problems being instantiated from NIB, ignoring edge insets FIXED: Crash on using font-family &#8220;inherit&#8221; together with font-variant &#8220;small-caps&#8221;. FIXED: Endless loop when using a text block that would not fully fit in a height-constrained layout frame FIXED: Image Attachment ignoring maximum display size if width/height are set via tag attributes FIXED: Invalid font-size would cause Core Text font size of 12px to be used. [Sponsored] CHANGED: Lists now correctly use padding and margin. If you specify too small a margin for the list prefix to fit, then the list prefix is omitted. Contrary to how HTML browsers are displaying list prefixes (e.g. bullets) Core Text cannot draw outside of the laid out lines. This limitation became apparent if you specified a too large list indent margin to fit the prefix. Then the text would spill over the too closely set tab stops and be indented to the next standard tab stop. To prevent this from happening I implemented a check that tests to see if the margin is sufficiently wide to fit the prefix excluding white space. The new version is tagged and available on the GitHub master branch. A new spec has been added to the CocoaPods public repository. This release has one sponsor, as highlighted. Austrian company Antiloop is doing Ruby on Rails, iPhone and iPad development. They are big fans of DTCoreText and are using it in several apps, including: Ecoline for iPad Journal Both apps make great use of rich text and are free downloads on the Apple App Store.]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve got a bunch of fixes and enhancements released in <a href="http://www.cocoanetics.com/parts/dtcoretext/">DTCoreText</a> 1.5.2 today. Special thanks to <a href="http://www.antiloop.at">Antiloop</a> who sponsored the improvements for handling of padding inside lists.</p>
<p><span id="more-8185"></span></p>
<div id="more-8185"></div>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
</div>
<h3>Changes in 1.5.1</h3>
<ul>
<li>FIXED: Attributes &#8220;bleeding&#8221; into next paragraph</li>
</ul>
<h3>Changes in 1.5.2</h3>
<ul>
<li><span style="line-height: 13px;">FIXED: Crash on parsing HTML with additional tags following HTML end tag</span></li>
<li>FIXED: DTAttributedLabel problems being instantiated from NIB, ignoring edge insets</li>
<li>FIXED: Crash on using font-family &#8220;inherit&#8221; together with font-variant &#8220;small-caps&#8221;.</li>
<li>FIXED: Endless loop when using a text block that would not fully fit in a height-constrained layout frame</li>
<li>FIXED: Image Attachment ignoring maximum display size if width/height are set via tag attributes</li>
<li>FIXED: Invalid font-size would cause Core Text font size of 12px to be used.</li>
<li>[Sponsored] CHANGED: Lists now correctly use padding and margin. If you specify too small a margin for the list prefix to fit, then the list prefix is omitted.</li>
</ul>
<p>Contrary to how HTML browsers are displaying list prefixes (e.g. bullets) Core Text cannot draw outside of the laid out lines. This limitation became apparent if you specified a too large list indent margin to fit the prefix. Then the text would spill over the too closely set tab stops and be indented to the next standard tab stop. To prevent this from happening I implemented a check that tests to see if the margin is sufficiently wide to fit the prefix excluding white space.</p>
<p>The new version is tagged and available on the GitHub master branch. A new spec has been added to the CocoaPods public repository.</p>
<p><a href="http://i0.wp.com/www.cocoanetics.com/files/mzl.njurxfww.480x480-75.jpg"><img class="alignnone size-full wp-image-8186" alt="Ecoline Screenshot" src="http://i0.wp.com/www.cocoanetics.com/files/mzl.njurxfww.480x480-75.jpg?resize=480%2C360" data-recalc-dims="1" /></a></p>
<p>This release has one <strong>sponsor</strong>, as highlighted. Austrian company <a href="http://www.antiloop.at/">Antiloop</a> is doing Ruby on Rails, iPhone and iPad development. They are big fans of DTCoreText and are using it in several apps, including:</p>
<ul>
<li><span style="line-height: 13px;"><a href="https://itunes.apple.com/at/app/ecoline/id560497054?mt=8">Ecoline for iPad</a></span></li>
<li><a href="https://itunes.apple.com/at/app/journal/id538764071?mt=8">Journal</a></li>
</ul>
<p>Both apps make great use of rich text and are free downloads on the Apple App Store.</p>
<h3></h3>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=8185&amp;md5=f406d6a40fc2f77372cc065ec9418d93" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2013/05/dtcoretext-1-5-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=dr_touch&amp;url=http%3A%2F%2Fwww.cocoanetics.com%2F2013%2F05%2Fdtcoretext-1-5-2%2F&amp;language=en_GB&amp;category=text&amp;title=DTCoreText+1.5.2&amp;description=I%26%238217%3Bve+got+a+bunch+of+fixes+and+enhancements+released+in+DTCoreText+1.5.2+today.+Special+thanks+to+Antiloop%C2%A0who+sponsored+the+improvements+for+handling+of+padding+inside+lists.+Changes+in+1.5.1+FIXED%3A...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>AutoIngest for Mac 0.4.0</title>
		<link>http://www.cocoanetics.com/2013/05/autoingest-for-mac-0-4-0/</link>
		<comments>http://www.cocoanetics.com/2013/05/autoingest-for-mac-0-4-0/#comments</comments>
		<pubDate>Fri, 10 May 2013 13:07:24 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Updates]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=8155</guid>
		<description><![CDATA[This is the forth release of our handy little status bar app for downloading iTunes Connect reports to your hard disk. I want to specifically highlight the new option to have your downloaded reports be automatically organized into folders for you, thanks to Felipe Cypriano. Jan Weiß and Christian Pfandler collaborated on the new golden Apple Icon. The idea behind this &#8211; besides the reference to Apple, Inc. &#8211; is that apps are your golden Apples and this app is good for you because it lets you take a bite of this value. Changes ADDED: Option to automatically organize reports in folders by vendor id, type, sub type and date type ADDED: App Icon ADDED: Options for downloading Opt-in and Newsstand reports ADDED: Notification Center message now shows number of downloaded reports by type FIXED: Sync Now menu option wasn&#8217;t disabled if sync was impossible to do missing or wrong account info We now also enabled (theoretically) downloading of the other report types offered by Apple&#8217;s API: Opt-In and Newsstand. This gives you a great overview over what kinds of reports are possible. These combinations are mentioned in the iTunes Connect Reporting Guide as well as have been verified to exist by 2 people who have apps that produce these kinds of reports. Please Help if You have Newsstand or Opt-In Reports I have no ability to test these I have to rely on users who are willing to try this out. And preferably also fix it via pull request or by joining the team of developers. There is a known issue with Opt-In reports. Those are zipped with a password and for the time being we have no ability to unzip these. Again this would require help of a developer who has Opt-In reports to test on. One feature that I would like to also add is support for adding multiple accounts/vendors and there you would also have a box to enter the Opt-In unzip password. I hope you are enjoying this new version AutoIngest for Mac! It is available via auto-update, direct download as well as full source on GitHub. The binary builds have Sparkle for OTA updating and are signed with Developer ID.]]></description>
				<content:encoded><![CDATA[<p>This is the forth release of our handy little status bar app for downloading iTunes Connect reports to your hard disk.</p>
<p>I want to specifically highlight the new option to have your downloaded reports be automatically organized into folders for you, thanks to <a href="https://github.com/fcy">Felipe Cypriano</a>.</p>
<p>Jan Weiß and Christian Pfandler collaborated on the new golden Apple Icon. The idea behind this &#8211; besides the reference to Apple, Inc. &#8211; is that apps are your golden Apples and this app is good for you because it lets you take a bite of this value.</p>
<p><span id="more-8155"></span></p>
<div id="more-8155"></div>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
</div>
<h3>Changes</h3>
<ul>
<li>ADDED: Option to automatically organize reports in folders by vendor id, type, sub type and date type</li>
<li>ADDED: App Icon</li>
<li>ADDED: Options for downloading Opt-in and Newsstand reports</li>
<li>ADDED: Notification Center message now shows number of downloaded reports by type</li>
<li>FIXED: Sync Now menu option wasn&#8217;t disabled if sync was impossible to do missing or wrong account info</li>
</ul>
<p>We now also enabled (theoretically) downloading of the other report types offered by Apple&#8217;s API: <strong>Opt-In and Newsstand</strong>.</p>
<p><a href="http://i1.wp.com/www.cocoanetics.com/files/Screen-Shot-2013-05-10-at-14.49.49.png"><img class="alignnone size-full wp-image-8158" alt="New Reports Tab" src="http://i1.wp.com/www.cocoanetics.com/files/Screen-Shot-2013-05-10-at-14.49.49.png?resize=594%2C438" data-recalc-dims="1" /></a></p>
<p>This gives you a great overview over what kinds of reports are possible. These combinations are mentioned in the iTunes Connect Reporting Guide as well as have been verified to exist by 2 people who have apps that produce these kinds of reports.</p>
<h3>Please Help if You have Newsstand or Opt-In Reports</h3>
<p>I have no ability to test these I have to rely on users who are willing to try this out. And preferably also fix it via pull request or by joining the team of developers.</p>
<p>There is a known issue with Opt-In reports. Those are zipped with a password and for the time being we have no ability to unzip these. Again this would require help of a developer who has Opt-In reports to test on. One feature that I would like to also add is support for adding multiple accounts/vendors and there you would also have a box to enter the Opt-In unzip password.</p>
<p>I hope you are enjoying this new version AutoIngest for Mac! It is available via auto-update, <a href="http://beta.cocoanetics.com/Cocoanetics/com.cocoanetics.AutoIngest/55/AutoIngest.zip">direct download</a> as well as full source <a href="https://github.com/Cocoanetics/AutoIngest">on GitHub</a>. The binary builds have Sparkle for OTA updating and are signed with Developer ID.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=8155&amp;md5=c33b4c3fb69db3dfb958cab7844c15a2" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2013/05/autoingest-for-mac-0-4-0/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=dr_touch&amp;url=http%3A%2F%2Fwww.cocoanetics.com%2F2013%2F05%2Fautoingest-for-mac-0-4-0%2F&amp;language=en_GB&amp;category=text&amp;title=AutoIngest+for+Mac+0.4.0&amp;description=This+is+the+forth+release+of+our+handy+little+status+bar+app+for+downloading+iTunes+Connect+reports+to+your+hard+disk.+I+want+to+specifically+highlight+the+new+option+to...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Rich Text Update 1.5</title>
		<link>http://www.cocoanetics.com/2013/05/rich-text-update-1-5/</link>
		<comments>http://www.cocoanetics.com/2013/05/rich-text-update-1-5/#comments</comments>
		<pubDate>Wed, 08 May 2013 16:22:41 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Updates]]></category>
		<category><![CDATA[DTCoreText]]></category>
		<category><![CDATA[DTLoupeView]]></category>
		<category><![CDATA[DTRichTextEditor]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=8145</guid>
		<description><![CDATA[Today we are releasing the 1.5 version of our rich text components. This marks the second unified release where several parts of our rich text eco system are maturing in lock-step. For the most part these improvements and enhancements were funded from exceptional sales of DTRichTextEditor as well as several sponsors who stepped forward to allow me to finally get support for lists implemented. From what I can tell the clients who licensed the editor are way more willing to contribute funds to something they have already paid for, than for enhancing the &#8211; otherwise free with attribution &#8211; DTCoreText. Here are the collected release notes: DTRichTextEditor 1.5 ADDED: Implemented Support for Ordered and Unordered Lists, editable 1 level CHANGED: Improved handling of nested lists ADDED: Method to set text color for range ADDED: Method to set strikethrough style for range ADDED: HTMLStringWithOptions methods ADDED: Ability to animate between input views (custom keyboards) FIXED: style information would not obey custom CSS stylesheet in textDefaults CHANGED: editing delegate now uses editorView:shouldChangeTextInRange:replacementText: for image pasting ADDED: [DEMO] Formatting View Controller, shown as popover on iPad and input view on iPhone Online Documentation DTCoreText 1.5 ADDED: Methods for getting glyph path for glyph runs and lines CHANGED: DTTextAttachment is now a class cluster ADDED: Custom text attachments can now opt to participate in inline drawing and/or HTML output FIXED: Loading of font table made asynchronously FIXED: Fonts that have a synthetic slant matrix cause text to disappear FIXED: Shadow:none causes text to disappear FIXED: CSS Attributes were not case-sensitive FIXED: Issue with setting color of HR FIXED: Problems with nested list parsing and DTHTMLWriter output FIXED: HTTPS URLS in web video view where treated as external URLs FIXED: Bug where text attributes would &#8220;bleed&#8221; into the paragraph break Online Documentation DTLoupe 1.5 ADDED: sanity check to avoid rare NAN crash Online Documentation There is also now a Programming Guide for DTRichTextEditor where I&#8217;m collecting guides how to implement frequently asked about things. I especially would like to thank Lee Hericks for his work on the backend and help with polishing, as well as Daniel Phillips who helped implement the format picker in the Editor demo. Here&#8217;s a screenshot. &#160; Of course work has already begun on the next version. If you need something specific implemented please get in touch.]]></description>
				<content:encoded><![CDATA[<p>Today we are releasing the 1.5 version of our rich text components. This marks the second unified release where several parts of our rich text eco system are maturing in lock-step.</p>
<p>For the most part these improvements and enhancements were funded from exceptional sales of <a href="http://www.cocoanetics.com/parts/dtrichtexteditor/">DTRichTextEditor</a> as well as several sponsors who stepped forward to allow me to finally get <strong>support for lists</strong> implemented.</p>
<p>From what I can tell the clients who licensed the editor are way more willing to contribute funds to something they have already paid for, than for enhancing the &#8211; otherwise free with attribution &#8211; DTCoreText.</p>
<p><span id="more-8145"></span></p>
<div id="more-8145"></div>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
</div>
<p>Here are the collected release notes:</p>
<h3>DTRichTextEditor 1.5</h3>
<ul>
<li>ADDED: Implemented Support for Ordered and Unordered Lists, editable 1 level</li>
<li>CHANGED: Improved handling of nested lists</li>
<li>ADDED: Method to set text color for range</li>
<li>ADDED: Method to set strikethrough style for range</li>
<li>ADDED: HTMLStringWithOptions methods</li>
<li>ADDED: Ability to animate between input views (custom keyboards)</li>
<li>FIXED: style information would not obey custom CSS stylesheet in textDefaults</li>
<li>CHANGED: editing delegate now uses editorView:shouldChangeTextInRange:replacementText: for image pasting</li>
<li>ADDED: [DEMO] Formatting View Controller, shown as popover on iPad and input view on iPhone</li>
</ul>
<p><a href="https://docs.cocoanetics.com/DTRichTextEditor/">Online Documentation</a></p>
<h3>DTCoreText 1.5</h3>
<ul>
<li>ADDED: Methods for getting glyph path for glyph runs and lines</li>
<li>CHANGED: DTTextAttachment is now a class cluster</li>
<li>ADDED: Custom text attachments can now opt to participate in inline drawing and/or HTML output</li>
<li>FIXED: Loading of font table made asynchronously</li>
<li>FIXED: Fonts that have a synthetic slant matrix cause text to disappear</li>
<li>FIXED: Shadow:none causes text to disappear</li>
<li>FIXED: CSS Attributes were not case-sensitive</li>
<li>FIXED: Issue with setting color of HR</li>
<li>FIXED: Problems with nested list parsing and DTHTMLWriter output</li>
<li>FIXED: HTTPS URLS in web video view where treated as external URLs</li>
<li>FIXED: Bug where text attributes would &#8220;bleed&#8221; into the paragraph break</li>
</ul>
<p><a href="https://docs.cocoanetics.com/DTCoreText/">Online Documentation</a></p>
<h3>DTLoupe 1.5</h3>
<ul>
<li>ADDED: sanity check to avoid rare NAN crash</li>
</ul>
<p><a href="https://docs.cocoanetics.com/DTLoupeView/">Online Documentation</a></p>
<p>There is also now a <a href="https://docs.cocoanetics.com/DTRichTextEditor/docs/Programming%20Guide.html">Programming Guide for DTRichTextEditor</a> where I&#8217;m collecting guides how to implement frequently asked about things.</p>
<p>I especially would like to thank <strong>Lee Hericks</strong> for his work on the backend and help with polishing, as well as <a href="http://twitter.com/Daniel_J_P">Daniel Phillips</a> who helped implement the format picker in the Editor demo. Here&#8217;s a screenshot.</p>
<p><a href="http://i0.wp.com/www.cocoanetics.com/files/Screen-Shot-2013-05-08-at-18.04.29.png"><img class="alignnone  wp-image-8146" alt="DTRichTextEditor 1.5" src="http://i0.wp.com/www.cocoanetics.com/files/Screen-Shot-2013-05-08-at-18.04.29.png?resize=622%2C819" data-recalc-dims="1" /></a></p>
<p>&nbsp;</p>
<p>Of course work has already begun on the next version. If you need something specific implemented please <a href="mailto:oliver@cocoanetics.com">get in touch</a>.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=8145&amp;md5=b1da5aec26aa5de61595157ccfce438e" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2013/05/rich-text-update-1-5/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=dr_touch&amp;url=http%3A%2F%2Fwww.cocoanetics.com%2F2013%2F05%2Frich-text-update-1-5%2F&amp;language=en_GB&amp;category=text&amp;title=Rich+Text+Update+1.5&amp;description=Today+we+are+releasing+the+1.5+version+of+our+rich+text+components.+This+marks+the+second+unified+release+where+several+parts+of+our+rich+text+eco+system+are+maturing+in...&amp;tags=DTCoreText%2CDTLoupeView%2CDTRichTextEditor%2Cblog" type="text/html" />
	</item>
		<item>
		<title>AutoIngest for Mac 0.3.0</title>
		<link>http://www.cocoanetics.com/2013/05/autoingest-for-mac-0-3-0/</link>
		<comments>http://www.cocoanetics.com/2013/05/autoingest-for-mac-0-3-0/#comments</comments>
		<pubDate>Fri, 03 May 2013 17:41:00 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Updates]]></category>
		<category><![CDATA[AutoIngest]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=8100</guid>
		<description><![CDATA[This new version of the Mac status bar app for automatically downloading sales reports contains a few minor fixes: Changes Replaced Status Bar Icon with vector-based version Improved Menu Handling Code Improved handling of Mac Standby Reduced Min OS Version to 10.7 Added Validation for Vendor ID Added Automatic Updates via Sparkle The Developer-ID signed version with Sparkle can be downloaded here, and of course you can build a version yourself from the 0.3.0 tag on GitHub.]]></description>
				<content:encoded><![CDATA[<p>This new version of the Mac status bar app for automatically downloading sales reports contains a few minor fixes:</p>
<h3>Changes</h3>
<ul>
<li>Replaced Status Bar Icon with vector-based version</li>
<li>Improved Menu Handling Code</li>
<li>Improved handling of Mac Standby</li>
<li>Reduced Min OS Version to 10.7</li>
<li>Added Validation for Vendor ID</li>
<li>Added Automatic Updates via Sparkle</li>
</ul>
<p>The Developer-ID signed version with Sparkle can be <a href="http://beta.cocoanetics.com/Cocoanetics/com.cocoanetics.AutoIngest/43/AutoIngest.zip">downloaded here</a>, and of course you can build a version yourself from the 0.3.0 tag <a href="https://github.com/cocoanetics/autoingest">on GitHub</a>.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=8100&amp;md5=85c9964f57990bec0b675a4fca3dd30f" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2013/05/autoingest-for-mac-0-3-0/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=dr_touch&amp;url=http%3A%2F%2Fwww.cocoanetics.com%2F2013%2F05%2Fautoingest-for-mac-0-3-0%2F&amp;language=en_GB&amp;category=text&amp;title=AutoIngest+for+Mac+0.3.0&amp;description=This+new+version+of+the+Mac+status+bar+app+for+automatically+downloading+sales+reports+contains+a+few+minor+fixes%3A+Changes+Replaced+Status+Bar+Icon+with+vector-based+version+Improved+Menu+Handling...&amp;tags=AutoIngest%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Urban Airship Commander 1.1.2</title>
		<link>http://www.cocoanetics.com/2013/05/urban-airship-commander-1-1-2/</link>
		<comments>http://www.cocoanetics.com/2013/05/urban-airship-commander-1-1-2/#comments</comments>
		<pubDate>Thu, 02 May 2013 15:21:09 +0000</pubDate>
		<dc:creator>gugmaster</dc:creator>
				<category><![CDATA[Updates]]></category>
		<category><![CDATA[Airship Commander]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=8097</guid>
		<description><![CDATA[This is a bugfix release for Urban Airship Commander, our app for easily sending push notifications via Urban Airship. Changes FIXED: When Copy to new Message in Log was chosen the custom fields were not used in some cases. The update has been submitted to Apple for review. Update May 7th: Approved after 4 days.]]></description>
				<content:encoded><![CDATA[<p>This is a bugfix release for <a href="http://www.cocoanetics.com/apps/airship-commander/" target="_blank">Urban Airship Commander</a>, our app for easily sending push notifications via Urban Airship.</p>
<h3>Changes</h3>
<ul>
<li>FIXED: When Copy to new Message in Log was chosen the custom fields were not used in some cases.</li>
</ul>
<p>The update has been submitted to Apple for review.</p>
<p>Update May 7th: Approved after 4 days.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=8097&amp;md5=08f0b1b8c419fdef2fdc0a467022a0e1" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2013/05/urban-airship-commander-1-1-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=dr_touch&amp;url=http%3A%2F%2Fwww.cocoanetics.com%2F2013%2F05%2Furban-airship-commander-1-1-2%2F&amp;language=en_GB&amp;category=text&amp;title=Urban+Airship+Commander+1.1.2&amp;description=This+is+a+bugfix+release+for+Urban+Airship+Commander%2C+our+app+for+easily+sending+push+notifications+via+Urban+Airship.+Changes+FIXED%3A+When+Copy+to+new+Message+in+Log+was+chosen...&amp;tags=Airship+Commander%2Cblog" type="text/html" />
	</item>
		<item>
		<title>AutoIngest for Mac 0.2</title>
		<link>http://www.cocoanetics.com/2013/04/autoingest-for-mac-0-2/</link>
		<comments>http://www.cocoanetics.com/2013/04/autoingest-for-mac-0-2/#comments</comments>
		<pubDate>Fri, 26 Apr 2013 14:06:49 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Updates]]></category>
		<category><![CDATA[AutoIngest]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=8064</guid>
		<description><![CDATA[AutoIngest for Mac is a small app that runs in your status bar and downloads your app sales reports. This helps you keep an independent archive of all your reports without having to rely on a third party. At present in the Daily, Monthly, Weekly and Yearly flavors. You can also activate the auto-download where it will do the downloading every 24 hours. You can put this on each of your Macs if you download the reports to a shared Dropbox folder because each instance will automatically skip report files that are already present locally. Version 0.2 is the first version that we are distributing as a Developer ID-signed app. This is convenient for people who don&#8217;t want to build it from source code but still want to have a version they know they can trust, with a Developer ID signature. I am excited that already several people have stepped forward to add a bit of their own brains to the matter. Rico Becker helped with some initial cleanup and he implemented a placeholder animated icon Jan further tuned some things Mac-specific things Christian Pfandler painstakingly put together a 87-frame long status icon animation Here&#8217;s a large version of the icon animation that runs in the status bar while report synching is going on. The idea behind the icon is that Apple is a fruit and to ingest something in this regard you have to take bites out of it. Cute, isn&#8217;t it? Download the App (zip) &#160;]]></description>
				<content:encoded><![CDATA[<p><strong>AutoIngest for Mac</strong> is a small app that runs in your status bar and downloads your app sales reports. This helps you keep an independent archive of all your reports without having to rely on a third party.</p>
<p>At present in the <strong>Daily, Monthly, Weekly and Yearly</strong> flavors. You can also activate the <strong>auto-download</strong> where it will do the downloading every 24 hours. You can put this on each of your Macs if you download the reports to a shared Dropbox folder because each instance will automatically skip report files that are already present locally.</p>
<p><strong>Version 0.2</strong> is the first version that we are distributing as a Developer ID-signed app. This is convenient for people who don&#8217;t want to build it from <a href="https://github.com/Cocoanetics/AutoIngest">source code</a> but still want to have a version they know they can trust, with a <strong>Developer ID</strong> signature.</p>
<p><span id="more-8064"></span></p>
<div id="more-8064"></div>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
</div>
<p>I am excited that already several people have stepped forward to add a bit of their own brains to the matter.</p>
<ul>
<li><span style="line-height: 13px;"><a href="https://github.com/ricobeck">Rico Becker</a> helped with some initial cleanup and he implemented a placeholder animated icon</span></li>
<li><a href="https://github.com/JanX2">Jan</a> further tuned some things Mac-specific things</li>
<li><strong>Christian Pfandler</strong> painstakingly put together a 87-frame long status icon animation</li>
</ul>
<p>Here&#8217;s a large version of the icon animation that runs in the status bar while report synching is going on.</p>
<p><a href="http://i1.wp.com/www.cocoanetics.com/files/4d3ce54e-ad1a-11e2-814b-e699084849db.gif"><img class="alignnone size-full wp-image-8065" alt="AutoIngest Icon Animation" src="http://i1.wp.com/www.cocoanetics.com/files/4d3ce54e-ad1a-11e2-814b-e699084849db.gif?resize=100%2C100" data-recalc-dims="1" /></a></p>
<p>The idea behind the icon is that Apple is a fruit and to <em>ingest</em> something in this regard you have to take bites out of it. Cute, isn&#8217;t it?</p>
<p><a href="http://beta.cocoanetics.com/AutoIngest.zip">Download the App</a> (zip)</p>
<p>&nbsp;</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=8064&amp;md5=d839cf0a7434bf8a5e5e5c98287a11a5" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2013/04/autoingest-for-mac-0-2/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=dr_touch&amp;url=http%3A%2F%2Fwww.cocoanetics.com%2F2013%2F04%2Fautoingest-for-mac-0-2%2F&amp;language=en_GB&amp;category=text&amp;title=AutoIngest+for+Mac+0.2&amp;description=AutoIngest+for+Mac+is+a+small+app+that+runs+in+your+status+bar+and+downloads+your+app+sales+reports.+This+helps+you+keep+an+independent+archive+of+all+your+reports...&amp;tags=AutoIngest%2Cblog" type="text/html" />
	</item>
		<item>
		<title>DTCoreText 1.4.2</title>
		<link>http://www.cocoanetics.com/2013/04/dtcoretext-1-4-2/</link>
		<comments>http://www.cocoanetics.com/2013/04/dtcoretext-1-4-2/#comments</comments>
		<pubDate>Tue, 23 Apr 2013 11:30:49 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Updates]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=8041</guid>
		<description><![CDATA[I forgot about posting a summary of the changes and updates in 1.4.1, and now I needed to release 1.4.2 as an interim release because I am working on a few improvements for 1.5 that are also potentially breaking some usage scenarios related to text attachments. So here are the changes for 1.4.1 and 1.4.2: Changes in 1.4.1 FIXED: Parser ignoring align HTML attribute FIXED: Helvetica appearing thinner than normal FIXED: DTAttributedLabel truncation CHANGED: Method of determining paragraph ranges ADDED: Option to disable Apple-converted-space Changes in 1.4.2 FIXED: DTWebVideoView for Daily Motion FIXED: textAttachmentsWithPredicate: not returning all attachments for nil predicate FIXED: further fixes for DTAttributedLabel truncation FIXED: Issue with list attribute not including to final \n of empty LI. FIXED: Disable cell reuse in Demo because of variable height you need to do your own cell caching ADDED: Feature to scroll a range to visible CHANGED: Disabled forcing of Times New Roman as font for bullets CHANGED: Replaced synchronization in DTCoreTextLayoutLine with @synchronized Both versions as tagged on the GitHub repo as well as available through CocoaPods. The upcoming 1.5 release will replace the contentType property of DTTextAttachment with a class cluster. Because of this it might require a few code changes if you are interacting with text attachments.]]></description>
				<content:encoded><![CDATA[<p>I forgot about posting a summary of the changes and updates in 1.4.1, and now I needed to release 1.4.2 as an interim release because I am working on a few improvements for 1.5 that are also potentially breaking some usage scenarios related to text attachments.</p>
<p><span id="more-8041"></span></p>
<div id="more-8041"></div>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
</div>
<p>So here are the changes for 1.4.1 and 1.4.2:</p>
<h3>Changes in 1.4.1</h3>
<ul>
<li><span style="line-height: 13px;">FIXED: Parser ignoring align HTML attribute</span></li>
<li>FIXED: Helvetica appearing thinner than normal</li>
<li>FIXED: DTAttributedLabel truncation</li>
<li>CHANGED: Method of determining paragraph ranges</li>
<li>ADDED: Option to disable Apple-converted-space</li>
</ul>
<h3>Changes in 1.4.2</h3>
<ul>
<li><span style="line-height: 13px;">FIXED: DTWebVideoView for Daily Motion</span></li>
<li>FIXED: textAttachmentsWithPredicate: not returning all attachments for nil predicate</li>
<li>FIXED: further fixes for DTAttributedLabel truncation</li>
<li>FIXED: Issue with list attribute not including to final \n of empty LI.</li>
<li>FIXED: Disable cell reuse in Demo because of variable height you need to do your own cell caching</li>
<li>ADDED: Feature to scroll a range to visible</li>
<li>CHANGED: Disabled forcing of Times New Roman as font for bullets</li>
<li>CHANGED: Replaced synchronization in DTCoreTextLayoutLine with @synchronized</li>
</ul>
<p>Both versions as tagged on the GitHub repo as well as available through CocoaPods.</p>
<p>The upcoming 1.5 release will replace the contentType property of DTTextAttachment with a class cluster. Because of this it might require a few code changes if you are interacting with text attachments.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=8041&amp;md5=f370b97491e0409db61ff29734156832" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2013/04/dtcoretext-1-4-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=dr_touch&amp;url=http%3A%2F%2Fwww.cocoanetics.com%2F2013%2F04%2Fdtcoretext-1-4-2%2F&amp;language=en_GB&amp;category=text&amp;title=DTCoreText+1.4.2&amp;description=I+forgot+about+posting+a+summary+of+the+changes+and+updates+in+1.4.1%2C+and+now+I+needed+to+release+1.4.2+as+an+interim+release+because+I+am+working+on+a...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Private Pods</title>
		<link>http://www.cocoanetics.com/2013/04/private-pods/</link>
		<comments>http://www.cocoanetics.com/2013/04/private-pods/#comments</comments>
		<pubDate>Thu, 18 Apr 2013 09:08:10 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Updates]]></category>
		<category><![CDATA[DTRichTextEditor]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=8020</guid>
		<description><![CDATA[You probably have looked at CocoaPods by now and found it to be a great way to quickly pull together all your favorite Open Source components for an app. After our recent move to Git I researched some more and found that it is exceptionally easy to also provide specs for your closed source private code. Update: Updated Resource Bundle generation use the new syntax of CocoaPods 0.18. CocoaPods has a number of repositories that it derives its specs from, for a default install this number is 1. But it doesn&#8217;t have to be, any other git repository can also serve spec files, as long as it obeys the standard layout. You have a folder by component and inside this you have one folder per version which contains a lonely podspec file. Resource Bundles and Pods Before I could get started in manufacturing spec files for my components I needed first to solve a problem. If a component requires some resources I always put them in a resource bundle target. I hate it when Open Source components have a static bundle as a workaround for CocoaPods approach of copying files. Those don&#8217;t get the proper processing they deserve, images get processed, strings files get converted into binary plists and more. Fortunately other people are thinking the same and so I quickly got an answer on the CocoaPods Google Group, Fabio Pelosin came to my rescue and pointed me towards the spec of CoconutKit 2.0.2 which also builds a resource bundle, written by none other than famous Cédric Luthi aka @0xced. In the company of Giants&#8230; Cedric has a bit weird structure in my opinion having a separate xcodeproj just for the resources, so my approach is a variation and simplification of his. First you need to tell CocoaPods to preserve the xcodeproj and the resource folders because without that it deletes these and only keeps the source code files. Then you need to build the resource bundle into the common Resources folder and add the file to the resource install script. Here is the complete spec for DTLoupe: Pod::Spec.new do &#124;spec&#124; spec.name = 'DTLoupe' spec.version = '1.3.0' spec.platform = :ios, '4.3' spec.license = 'COMMERCIAL' spec.source = &#123; :git =&#62; 'git@git.cocoanetics.com:parts/dtloupe.git', :tag =&#62; spec.version.to_s &#125; spec.source_files = 'Core/Source/*.{h,m}' spec.frameworks = 'QuartzCore' spec.requires_arc = true spec.homepage = 'http://www.cocoanetics.com/parts/dtloupeview/' spec.summary = 'A Loupe as used for text selection.' spec.author = &#123; 'Oliver Drobnik' =&#62; 'oliver@cocoanetics.com' &#125; spec.preserve_paths = 'DTLoupe.xcodeproj', 'Core/Resources' &#160; def spec.post_install&#40;target_installer&#41; puts &#34;\nGenerating DTLoupe resources bundle\n&#34;.yellow if config.verbose? Dir.chdir File.join&#40;config.project_pods_root, 'DTLoupe'&#41; do command = &#34;xcodebuild -project DTLoupe.xcodeproj -target 'Resource Bundle' CONFIGURATION_BUILD_DIR=../Resources&#34; command &#60;&#60; &#34; 2&#62;&#38;1 &#62; /dev/null&#34; unless config.verbose? unless system&#40;command&#41; raise ::Pod::Informative, &#34;Failed to generate DTLoupe resources bundle&#34; end end if Version.new&#40;Pod::VERSION&#41; &#62;= Version.new&#40;'0.16.999'&#41; script_path = target_installer.target_definition.copy_resources_script_name else script_path = File.join&#40;config.project_pods_root, target_installer.target_definition.copy_resources_script_name&#41; end File.open&#40;script_path, 'a'&#41; do &#124;file&#124; file.puts &#34;install_resource 'Resources/DTLoupe.bundle'&#34; end end end Note the single quotes which are necessary for the target since I have a space in there. I later found that I had version 0.16 of CocoaPods on the machine where I put together the spec. People using the latest version (presently 0.18.1) would get quite a few warnings on pod install and update. 3 problems to be exact. The first problem was that I thought I was smart by removing the preserved folders after the install. Turns out that these are still needed even for an update. The second problem came from target_installer.target_definition.copy_resources_script_name being deprecated, instead some people (e.g. HockeyKit) switched to target_installer.copy_resources_script_path instead. However &#8211; problem number three &#8211; was that access to the global config singleton was deprecated as well. So each access to it causes a nasty yellow warning to appear. Eloy Durán explained to me that it was a &#8220;chicken and egg thing&#8221;. He also &#8211; wisely &#8211; suggested that I should totally drop support for older CocoaPods versions. Bonus problem number four is that as of 0.18 there is a built in post_install hook and so there&#8217;s an occasional warning the the def of it. People get a warning if they have an old CocoaPods version if they do anything and updating is simple with a sudo gem update cocoapods. I am a Ruby NOOB so I am thankful for Eloy helping to rewrite the spec as follows. I proceeded to removed all references to the config singleton. Pod::Spec.new do &#124;spec&#124; spec.name = 'DTLoupe' spec.version = '1.3.0' spec.platform = :ios, '4.3' spec.license = 'COMMERCIAL' spec.source = &#123; :git =&#62; 'git@git.cocoanetics.com:parts/dtloupe.git', :tag =&#62; spec.version.to_s &#125; spec.source_files = 'Core/Source/*.{h,m}' spec.frameworks = 'QuartzCore' spec.requires_arc = true spec.homepage = 'http://www.cocoanetics.com/parts/dtloupeview/' spec.summary = 'A Loupe as used for text selection.' spec.author = &#123; 'Oliver Drobnik' =&#62; 'oliver@cocoanetics.com' &#125; spec.preserve_paths = 'DTLoupe.xcodeproj', 'Core/Resources' &#160; spec.post_install do &#124;library_representation&#124; Dir.chdir File.join&#40;library_representation.sandbox_dir, 'DTLoupe'&#41; do command = &#34;xcodebuild -project DTLoupe.xcodeproj -target 'Resource Bundle' CONFIGURATION_BUILD_DIR=../Resources&#34; command &#60;&#60; &#34; 2&#62;&#38;1 &#62; /dev/null&#34; unless system&#40;command&#41; raise [...]]]></description>
				<content:encoded><![CDATA[<p>You probably have <a title="Digging into CocoaPods" href="http://www.cocoanetics.com/2013/01/digging-into-cocoapods/">looked at CocoaPods by now</a> and found it to be a great way to quickly pull together all your favorite Open Source components for an app. After our recent <a title="Moving from SVN to GIT" href="http://www.cocoanetics.com/2013/03/moving-from-svn-to-git/">move to Git</a> I researched some more and found that it is exceptionally easy to also provide specs for your closed source private code.</p>
<p><strong>Update:</strong> Updated Resource Bundle generation use the new syntax of CocoaPods 0.18.</p>
<p><span id="more-8020"></span></p>
<div id="more-8020"></div>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
</div>
<p>CocoaPods has a number of repositories that it derives its specs from, for a default install this number is <a href="https://github.com/CocoaPods/Specs">1</a>. But it doesn&#8217;t have to be, any other git repository can also serve spec files, as long as it obeys the standard layout. You have a folder by component and inside this you have one folder per version which contains a lonely podspec file.</p>
<h3>Resource Bundles and Pods</h3>
<p>Before I could get started in manufacturing spec files for my components I needed first to solve a problem. If a component requires some resources I always put them in a<a title="Resource Bundles" href="http://www.cocoanetics.com/2012/05/resource-bundles/"> resource bundle target</a>. I hate it when Open Source components have a static bundle as a workaround for CocoaPods approach of copying files. Those don&#8217;t get the proper processing they deserve, images get processed, strings files get converted into binary plists and more.</p>
<p>Fortunately other people are thinking the same and so I quickly got an answer on the <a href="http://groups.google.com/group/cocoapods">CocoaPods Google Group</a>, <a href="https://github.com/irrationalfab">Fabio Pelosin</a> came to my rescue and pointed me towards the <a href="https://github.com/CocoaPods/Specs/blob/master/CoconutKit/2.0.2/CoconutKit.podspec">spec of CoconutKit 2.0.2</a> which also builds a resource bundle, written by none other than famous <a href="https://github.com/0xced">Cédric Luthi</a> aka <a href="http://twitter.com/0xced">@0xced</a>. In the company of Giants&#8230;</p>
<p>Cedric has a bit weird structure in my opinion having a separate xcodeproj just for the resources, so my approach is a variation and simplification of his.</p>
<p>First you need to tell CocoaPods to preserve the xcodeproj and the resource folders because without that it deletes these and only keeps the source code files.</p>
<p>Then you need to build the resource bundle into the common Resources folder and add the file to the resource install script. Here is the complete spec for DTLoupe:</p>

<div class="wp_codebox"><table><tr id="p802012"><td class="code" id="p8020code12"><pre class="ruby" style="font-family:monospace;"><span style="color:#6666ff; font-weight:bold;">Pod::Spec</span>.<span style="color:#9900CC;">new</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>spec<span style="color:#006600; font-weight:bold;">|</span>
  spec.<span style="color:#9900CC;">name</span>         = <span style="color:#996600;">'DTLoupe'</span>
  spec.<span style="color:#9900CC;">version</span>      = <span style="color:#996600;">'1.3.0'</span>
  spec.<span style="color:#9900CC;">platform</span>     = <span style="color:#ff3333; font-weight:bold;">:ios</span>, <span style="color:#996600;">'4.3'</span>
  spec.<span style="color:#9900CC;">license</span>      = <span style="color:#996600;">'COMMERCIAL'</span>
  spec.<span style="color:#9900CC;">source</span>       = <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:git</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'git@git.cocoanetics.com:parts/dtloupe.git'</span>, <span style="color:#ff3333; font-weight:bold;">:tag</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> spec.<span style="color:#9900CC;">version</span>.<span style="color:#9900CC;">to_s</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
  spec.<span style="color:#9900CC;">source_files</span> = <span style="color:#996600;">'Core/Source/*.{h,m}'</span>
  spec.<span style="color:#9900CC;">frameworks</span>   = <span style="color:#996600;">'QuartzCore'</span>
  spec.<span style="color:#9900CC;">requires_arc</span> = <span style="color:#0000FF; font-weight:bold;">true</span>
  spec.<span style="color:#9900CC;">homepage</span>     = <span style="color:#996600;">'http://www.cocoanetics.com/parts/dtloupeview/'</span>
  spec.<span style="color:#9900CC;">summary</span>      = <span style="color:#996600;">'A Loupe as used for text selection.'</span>
  spec.<span style="color:#9900CC;">author</span>       = <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#996600;">'Oliver Drobnik'</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'oliver@cocoanetics.com'</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
  spec.<span style="color:#9900CC;">preserve_paths</span> = <span style="color:#996600;">'DTLoupe.xcodeproj'</span>, <span style="color:#996600;">'Core/Resources'</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">def</span> spec.<span style="color:#9900CC;">post_install</span><span style="color:#006600; font-weight:bold;">&#40;</span>target_installer<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\n</span>Generating DTLoupe resources bundle<span style="color:#000099;">\n</span>&quot;</span>.<span style="color:#9900CC;">yellow</span> <span style="color:#9966CC; font-weight:bold;">if</span> config.<span style="color:#9900CC;">verbose</span>?
    <span style="color:#CC00FF; font-weight:bold;">Dir</span>.<span style="color:#9900CC;">chdir</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">join</span><span style="color:#006600; font-weight:bold;">&#40;</span>config.<span style="color:#9900CC;">project_pods_root</span>, <span style="color:#996600;">'DTLoupe'</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span>
      command = <span style="color:#996600;">&quot;xcodebuild -project DTLoupe.xcodeproj -target 'Resource Bundle' CONFIGURATION_BUILD_DIR=../Resources&quot;</span>
      command <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> <span style="color:#996600;">&quot; 2&gt;&amp;1 &gt; /dev/null&quot;</span> <span style="color:#9966CC; font-weight:bold;">unless</span> config.<span style="color:#9900CC;">verbose</span>?
      <span style="color:#9966CC; font-weight:bold;">unless</span> <span style="color:#CC0066; font-weight:bold;">system</span><span style="color:#006600; font-weight:bold;">&#40;</span>command<span style="color:#006600; font-weight:bold;">&#41;</span>
        <span style="color:#CC0066; font-weight:bold;">raise</span> ::<span style="color:#6666ff; font-weight:bold;">Pod::Informative</span>, <span style="color:#996600;">&quot;Failed to generate DTLoupe resources bundle&quot;</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">if</span> Version.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#6666ff; font-weight:bold;">Pod::VERSION</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&gt;</span>= Version.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'0.16.999'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
      script_path = target_installer.<span style="color:#9900CC;">target_definition</span>.<span style="color:#9900CC;">copy_resources_script_name</span>
    <span style="color:#9966CC; font-weight:bold;">else</span>
      script_path = <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">join</span><span style="color:#006600; font-weight:bold;">&#40;</span>config.<span style="color:#9900CC;">project_pods_root</span>, target_installer.<span style="color:#9900CC;">target_definition</span>.<span style="color:#9900CC;">copy_resources_script_name</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span>script_path, <span style="color:#996600;">'a'</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>file<span style="color:#006600; font-weight:bold;">|</span>
      file.<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;install_resource 'Resources/DTLoupe.bundle'&quot;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>Note the single quotes which are necessary for the target since I have a space in there.</p>
<p>I later found that I had version 0.16 of CocoaPods on the machine where I put together the spec. People using the latest version (presently 0.18.1) would get quite a few warnings on pod install and update. 3 problems to be exact.</p>
<p>The first problem was that I thought I was smart by removing the preserved folders after the install. Turns out that these are still needed even for an update.</p>
<p>The second problem came from target_installer.target_definition.copy_resources_script_name being deprecated, instead some people (e.g. HockeyKit) switched to target_installer.copy_resources_script_path instead. </p>
<p>However &#8211; problem number three &#8211; was that access to the global config singleton was deprecated as well. So each access to it causes a nasty yellow warning to appear. Eloy Durán explained to me that it was a &#8220;chicken and egg thing&#8221;. He also &#8211; wisely &#8211; suggested that I should totally drop support for older CocoaPods versions.</p>
<p>Bonus problem number four is that as of 0.18 there is a built in post_install hook and so there&#8217;s an occasional warning the the def of it. </p>
<p>People get a warning if they have an old CocoaPods version if they do anything and updating is simple with a <strong>sudo gem update cocoapods</strong>. I am a Ruby NOOB so I am thankful for Eloy helping to rewrite the spec as follows. I proceeded to removed all references to the config singleton.</p>

<div class="wp_codebox"><table><tr id="p802013"><td class="code" id="p8020code13"><pre class="ruby" style="font-family:monospace;"><span style="color:#6666ff; font-weight:bold;">Pod::Spec</span>.<span style="color:#9900CC;">new</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>spec<span style="color:#006600; font-weight:bold;">|</span>
  spec.<span style="color:#9900CC;">name</span>         = <span style="color:#996600;">'DTLoupe'</span>
  spec.<span style="color:#9900CC;">version</span>      = <span style="color:#996600;">'1.3.0'</span>
  spec.<span style="color:#9900CC;">platform</span>     = <span style="color:#ff3333; font-weight:bold;">:ios</span>, <span style="color:#996600;">'4.3'</span>
  spec.<span style="color:#9900CC;">license</span>      = <span style="color:#996600;">'COMMERCIAL'</span>
  spec.<span style="color:#9900CC;">source</span>       = <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:git</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'git@git.cocoanetics.com:parts/dtloupe.git'</span>, <span style="color:#ff3333; font-weight:bold;">:tag</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> spec.<span style="color:#9900CC;">version</span>.<span style="color:#9900CC;">to_s</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
  spec.<span style="color:#9900CC;">source_files</span> = <span style="color:#996600;">'Core/Source/*.{h,m}'</span>
  spec.<span style="color:#9900CC;">frameworks</span>   = <span style="color:#996600;">'QuartzCore'</span>
  spec.<span style="color:#9900CC;">requires_arc</span> = <span style="color:#0000FF; font-weight:bold;">true</span>
  spec.<span style="color:#9900CC;">homepage</span>     = <span style="color:#996600;">'http://www.cocoanetics.com/parts/dtloupeview/'</span>
  spec.<span style="color:#9900CC;">summary</span>      = <span style="color:#996600;">'A Loupe as used for text selection.'</span>
  spec.<span style="color:#9900CC;">author</span>       = <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#996600;">'Oliver Drobnik'</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'oliver@cocoanetics.com'</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
  spec.<span style="color:#9900CC;">preserve_paths</span> = <span style="color:#996600;">'DTLoupe.xcodeproj'</span>, <span style="color:#996600;">'Core/Resources'</span>
&nbsp;
  spec.<span style="color:#9900CC;">post_install</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>library_representation<span style="color:#006600; font-weight:bold;">|</span>
    <span style="color:#CC00FF; font-weight:bold;">Dir</span>.<span style="color:#9900CC;">chdir</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">join</span><span style="color:#006600; font-weight:bold;">&#40;</span>library_representation.<span style="color:#9900CC;">sandbox_dir</span>, <span style="color:#996600;">'DTLoupe'</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span>
      command = <span style="color:#996600;">&quot;xcodebuild -project DTLoupe.xcodeproj -target 'Resource Bundle' CONFIGURATION_BUILD_DIR=../Resources&quot;</span>
      command <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> <span style="color:#996600;">&quot; 2&gt;&amp;1 &gt; /dev/null&quot;</span>
      <span style="color:#9966CC; font-weight:bold;">unless</span> <span style="color:#CC0066; font-weight:bold;">system</span><span style="color:#006600; font-weight:bold;">&#40;</span>command<span style="color:#006600; font-weight:bold;">&#41;</span>
        <span style="color:#CC0066; font-weight:bold;">raise</span> ::<span style="color:#6666ff; font-weight:bold;">Pod::Informative</span>, <span style="color:#996600;">&quot;Failed to generate DTLoupe resources bundle&quot;</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span>library_representation.<span style="color:#9900CC;">copy_resources_script_path</span>, <span style="color:#996600;">'a'</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>file<span style="color:#006600; font-weight:bold;">|</span>
      file.<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;install_resource 'Resources/DTLoupe.bundle'&quot;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>In summary: use the second approach if you don&#8217;t want warnings and don&#8217;t need to support older CocoaPods versions.</p>
<h3>Spec&#8217;ing it Out</h3>
<p>Because DTRichTextEditor and DTLoupe are closed source that I am selling access too it would not have made any sense to put their specs into the public CocoaPods. Also it would probably fail the CI checks they have for lint-ing the specs because their Continuous Integration server would not be able to clone the source.</p>
<p>So I added a specs repository on our private GitLab server and made it public. The next question was if you would reference components with the <strong>SSH or HTTPS</strong> URLs. I went with SSH because there authentication works nicely by the public SSH keys the users have added to their profiles. If you use HTTP then users have to enter their credentials.</p>
<p>The security of SSH also makes me not worry security for my components and which is why I am showing you the above spec. Please be nice, don&#8217;t hack me bro&#8230;</p>
<p>Before I could put together the DTRichTextEditor Spec I needed to know the minimum versions that all dependencies would need to have to be compatible. For this I tagged and published specs for DTFoundation 1.2 and DTCoreText 1.4.1. The final step was to change around some headers in the project so that it would pass <strong>pod spec lint</strong>.</p>
<p>CocoaPods ignores any headers you added to your PCH file, because at the time of building the pods there IS no Precompiled Header File. At least not the one you were using for building your static library. Running the spec lint with &#8211;no-clean proved invaluable because it quickly found the places where additional #import where necessary.</p>
<p><a href="http://i0.wp.com/www.cocoanetics.com/files/DTRichTextEditor_Pods.jpg"><img src="http://i0.wp.com/www.cocoanetics.com/files/DTRichTextEditor_Pods.jpg?resize=601%2C677" alt="DTRichTextEditor Pods" class="alignnone size-full wp-image-8024" data-recalc-dims="1" /></a></p>
<p>I made this graphic to show how all fits together. DTLoupe and DTRichTextEditor are on our private GitLab server. They references DTWebArchive, DTCoreText and DTFoundation as dependencies.</p>
<h3>Version Confusion aka The Pessimistic Operator</h3>
<p>One thing that took me a while to wrap my head around was how to properly write the version requirement. At first I was pointed towards the <a href="http://docs.cocoapods.org/guides/dependency_versioning.html">CocoaPods Dependency Versioning</a> document but that didn&#8217;t help clarify. French Developer <a href="http://twitter.com/arnaud_ws">Arnaud</a> helped me out there.</p>
<blockquote><p>~> 1.1.7 is >= 1.1.7 &#038;&#038; < 1.2<br />
And ~> 1.1 is >= 1.1 &#038;&#038; < 2.0</p></blockquote>
<p>What confused me is that the individual digits of the version are meaning something else. The rightmost digit means equal than or higher whereas all other digits are &#8220;locked&#8221;. This process is <a href="http://docs.rubygems.org/read/chapter/16#page74">explained in the RubyGems User Guide</a>. They call the tilde-greater the &#8220;pessimistic version constraint&#8221;.</p>
<p>If you are unsure how to increment your version numbers then I recommend you read the <a href="http://semver.org">Semantic Versioning Specification</a> authored by <a href="http://tom.preston-werner.com/">Tom Preston-Werner</a>, one of the GitHub co-founders.</p>
<h3>Conclusion</h3>
<p>From my own experience I can tell you that it is a great feeling to have your dear-to-your-heart component successfully build via CocoaPods because it means that you don&#8217;t have a hidden dependency that you didn&#8217;t know about. </p>
<p>I will now make it standard practice to spec out private and public components because the process of getting it to pass lint alone shows you some places where you might have some build issues.</p>
<p>And the benefit for my customers is obvious as well. They can now have 3 options to add DTRichTextEditor to their apps:</p>
<ul>
<li>CocoaPods</li>
</ul>
<li>Static Library via git submodule and Xcode sub-project</li>
<li>Static Universal Framework</li>
</ul>
<p>Of these I personally use the second most of the time since it allows me to add code to sub-modules while working on a component. But for future apps I am tempted to switch everything to using CocoaPods.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=8020&amp;md5=52234459f1de6a04b5e0707fce004a0c" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2013/04/private-pods/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=dr_touch&amp;url=http%3A%2F%2Fwww.cocoanetics.com%2F2013%2F04%2Fprivate-pods%2F&amp;language=en_GB&amp;category=text&amp;title=Private+Pods&amp;description=You+probably+have+looked+at+CocoaPods+by+now+and+found+it+to+be+a+great+way+to+quickly+pull+together+all+your+favorite+Open+Source+components+for+an+app.+After...&amp;tags=DTRichTextEditor%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Rich Text Update 1.4</title>
		<link>http://www.cocoanetics.com/2013/04/rich-text-update-1-4/</link>
		<comments>http://www.cocoanetics.com/2013/04/rich-text-update-1-4/#comments</comments>
		<pubDate>Fri, 05 Apr 2013 17:22:26 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Updates]]></category>
		<category><![CDATA[DTCoreText]]></category>
		<category><![CDATA[DTRichTextEditor]]></category>

		<guid isPermaLink="false">https://www.cocoanetics.com/?p=7979</guid>
		<description><![CDATA[Beginning with version 1.4 we will advance the version tags on DTCoreText and DTRichTextEditor in sync. DTCoreText is in charge of HTML parsing, display and HTML generation inside the editor component and thus all the changes done there are indirectly benefitting editor users as well. I&#8217;ve begun to aggregate issues on both GitHub and our own private GitLab instance via milestones. These are the grouping unit collecting issues so that you can tell from which version onward these fixes or enhancements are available. Each milestone will become a tag, once it is completed and will represent a stable version. You can always get a picture of the original issues if you filter them by milestone, like in this GitHub issue list for version 1.4.0 of DTCoreText DTCoreText 1.4 Changes ADDED: Support for including local CSS style sheet files ADDED: DTHTMLWriter can now write HTML fragments with inline styles CHANGED: Changed the way color-changing hyperlinks are drawn, code now unified in DTCoreTextLayoutFrame CHANGED: You no longer need an override plist, all available system fonts now get loaded into the override table automatically CHANGED: renamed the define for showing performance measurement so that they don&#8217;t show in normal DEBUG mode CHANGED: strike-through and underline is now properly positioned and sized FIXED: Dictation Placeholder not displayed if no text delegate set FIXED: Line truncation problem going for longer than the paragraph FIXED: RTL justified text too short to be justified would be left-aligned instead of being right-aligned FIXED: Problem parsing CSS styles containing a !important tag FIXED: Using Chinese characters would cause height problems in hyperlinks FIXED: Having text with a shadow would cause bolder text due to it being drawn twice FIXED: Images don&#8217;t keep aspect ratio on resize FIXED: Element hyperlink URL did not get copied to DTTextAttachment FIXED: code removed by accident would cause problem with custom views for links FIXED: HTML encoding for Emoji Characters FIXED: Static Framework was not linking in code from DTFoundation FIXED: Static Framework building was missing embedded DTHTMLParser The changes to how hyperlinks are drawn are breaking the API since before the color changing of hyperlinks that are touched was done inside DTLinkButton. But it was next to impossible to have these line up perfectly with the text. Now there is a mode on drawing (via bit mask) that allows you to draw a frame either with normal or highlighted hyperlinks. The second big noticeable improvement relates to underlining. UIWebViews only do a nasty 1 px underline regardless of font size. The new method gets the line thickness and position from the CTFont. This causes underlines to look like in Pages. Also a great deal of effort was spent on having the lines always perfect pixel aligned, even on Retina displays. DTRichTextEditor 1.4 Changes ADDED: A delegation protocol that gives it feature parity with UITextView. FIXED: override typing attributes (like setting bold with no selection) would be reset on a new line FIXED: Autocorrection was broken due to removal of input delegate notification UPDATED: DTCoreText to 1.4 At the time of this writing this version was not finalized and bug fixing still underway. But those are just finishing touches. The other big and important improvement is that now the code lives on a GitLab server instead of Subversion. This unifies our workflow tremendously since we no longer have to keep copies of sub-projects inside the SVN repo. Instead everything is included as git submodules. Those are always pointing to an exact commit in the submodule. This way we have control over which version of the submodule we want to use and can advance the pointer if there is a new release without having to keep updating a full copy of the source code. The other big advantage for all our clients comes from everybody having their own git user accounts. This way you can easily contribute enhancements in a project branch and create a merge request for them to be included in the master branch. Previously on Subversion I only had a single read-only user for everybody. I am hoping that the new structure and the help of fabulous GitLab will enable a new form of social coding that we see as standard on GitHub. And that seeing other users helping out and squashing bugs will inspire a greater belief in the quality of this component as well as inspire contributing for the greater good. The next version will finally implement proper list support. Two people have stepped forward to fund the development of this feature. This is a somewhat involved thing since we need to implement ability to protect certain parts of the text. You don&#8217;t want the user to be able to remove individual characters of a list item prefix. This can also benefit people who want to treat hyperlinks as a [...]]]></description>
				<content:encoded><![CDATA[<p>Beginning with version 1.4 we will advance the version tags on DTCoreText and DTRichTextEditor in sync. DTCoreText is in charge of HTML parsing, display and HTML generation inside the editor component and thus all the changes done there are indirectly benefitting editor users as well.</p>
<p>I&#8217;ve begun to aggregate issues on both GitHub and our own private GitLab instance via milestones. These are the grouping unit collecting issues so that you can tell from which version onward these fixes or enhancements are available. Each milestone will become a tag, once it is completed and will represent a stable version.</p>
<p><span id="more-7979"></span></p>
<div id="more-7979"></div>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
</div>
<p>You can always get a picture of the original issues if you filter them by milestone, like in this GitHub issue list for <a href="https://github.com/Cocoanetics/DTCoreText/issues?milestone=1&amp;state=closed">version 1.4.0 of DTCoreText</a></p>
<h3>DTCoreText 1.4 Changes</h3>
<ul>
<li>ADDED: Support for including local CSS style sheet files</li>
<li>ADDED: DTHTMLWriter can now write HTML fragments with inline styles</li>
<li>CHANGED: Changed the way color-changing hyperlinks are drawn, code now unified in DTCoreTextLayoutFrame</li>
<li>CHANGED: You no longer need an override plist, all available system fonts now get loaded into the override table automatically</li>
<li>CHANGED: renamed the define for showing performance measurement so that they don&#8217;t show in normal DEBUG mode</li>
<li>CHANGED: strike-through and underline is now properly positioned and sized</li>
<li><span style="line-height: 13px;">FIXED: Dictation Placeholder not displayed if no text delegate set</span></li>
<li>FIXED: Line truncation problem going for longer than the paragraph</li>
<li>FIXED: RTL justified text too short to be justified would be left-aligned instead of being right-aligned</li>
<li>FIXED: Problem parsing CSS styles containing a !important tag</li>
<li>FIXED: Using Chinese characters would cause height problems in hyperlinks</li>
<li>FIXED: Having text with a shadow would cause bolder text due to it being drawn twice</li>
<li>FIXED: Images don&#8217;t keep aspect ratio on resize</li>
<li>FIXED: Element hyperlink URL did not get copied to DTTextAttachment</li>
<li>FIXED: code removed by accident would cause problem with custom views for links</li>
<li>FIXED: HTML encoding for Emoji Characters</li>
<li>FIXED: Static Framework was not linking in code from DTFoundation</li>
<li>FIXED: Static Framework building was missing embedded DTHTMLParser</li>
</ul>
<p>The changes to how hyperlinks are drawn are breaking the API since before the color changing of hyperlinks that are touched was done inside DTLinkButton. But it was next to impossible to have these line up perfectly with the text. Now there is a mode on drawing (via bit mask) that allows you to draw a frame either with normal or highlighted hyperlinks.</p>
<p>The second big noticeable improvement relates to underlining. UIWebViews only do a nasty 1 px underline regardless of font size. The new method gets the line thickness and position from the CTFont. This causes underlines to look like in Pages. Also a great deal of effort was spent on having the lines always perfect pixel aligned, even on Retina displays.</p>
<h3>DTRichTextEditor 1.4 Changes</h3>
<ul>
<li><span style="line-height: 13px;">ADDED: A delegation protocol that gives it feature parity with UITextView.</span></li>
<li>FIXED: override typing attributes (like setting bold with no selection) would be reset on a new line</li>
<li>FIXED: Autocorrection was broken due to removal of input delegate notification</li>
<li>UPDATED: DTCoreText to 1.4</li>
</ul>
<p>At the time of this writing this version was not finalized and bug fixing still underway. But those are just finishing touches.</p>
<p>The other big and important improvement is that now the code lives on a GitLab server instead of Subversion. This unifies our workflow tremendously since we no longer have to keep copies of sub-projects inside the SVN repo. Instead everything is included as git submodules. Those are always pointing to an exact commit in the submodule. This way we have control over which version of the submodule we want to use and can advance the pointer if there is a new release without having to keep updating a full copy of the source code.</p>
<p>The other big advantage for all our clients comes from everybody having their own git user accounts. This way you can easily contribute enhancements in a project branch and create a merge request for them to be included in the master branch. Previously on Subversion I only had a single read-only user for everybody.</p>
<p>I am hoping that the new structure and the help of fabulous GitLab will enable a new form of social coding that we see as standard on GitHub. And that seeing other users helping out and squashing bugs will inspire a greater belief in the quality of this component as well as inspire contributing for the greater good.</p>
<p>The next version will finally implement proper list support. Two people have stepped forward to fund the development of this feature. This is a somewhat involved thing since we need to implement ability to protect certain parts of the text. You don&#8217;t want the user to be able to remove individual characters of a list item prefix. This can also benefit people who want to treat hyperlinks as a single unit.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=7979&amp;md5=df5df9b1404f4f9b642b3164ea3a3625" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2013/04/rich-text-update-1-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=dr_touch&amp;url=http%3A%2F%2Fwww.cocoanetics.com%2F2013%2F04%2Frich-text-update-1-4%2F&amp;language=en_GB&amp;category=text&amp;title=Rich+Text+Update+1.4&amp;description=Beginning+with+version+1.4+we+will+advance+the+version+tags+on+DTCoreText+and+DTRichTextEditor+in+sync.+DTCoreText+is+in+charge+of+HTML+parsing%2C+display+and+HTML+generation+inside+the+editor...&amp;tags=DTCoreText%2CDTRichTextEditor%2Cblog" type="text/html" />
	</item>
		<item>
		<title>DTXMLRPC 1.0</title>
		<link>http://www.cocoanetics.com/2013/04/dtxmlrpc-1-0/</link>
		<comments>http://www.cocoanetics.com/2013/04/dtxmlrpc-1-0/#comments</comments>
		<pubDate>Fri, 05 Apr 2013 13:48:09 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Updates]]></category>
		<category><![CDATA[DTXMLRPC]]></category>

		<guid isPermaLink="false">https://www.cocoanetics.com/?p=7976</guid>
		<description><![CDATA[Just a week ago I started DTXMLRPC as a means to post to my WordPress blog from QuickRadar. Somebody took a liking to it and sponsored me to continue work on it. So I implementing the remaining data types for XML-RPC serialization and improved the demo by adding a demonstration how to upload an image to WordPress. The DTWordpress class, based on DTXMLRPC, provides an ever growing number of WordPress API calls, like retrieving a user&#8217;s blogs, a blog&#8217;s categories, posting a new article and uploading an image. All is block based. For example this is the code in the sample app for uploading an image: - &#40;IBAction&#41;uploadImage:&#40;id&#41;sender &#123; DTWordpress *wordpress = &#91;&#91;DTWordpress alloc&#93; initWithEndpointURL:URL&#93;; wordpress.userName = user; wordpress.password = pass; &#160; UIImage *image = &#91;UIImage imageNamed:@&#34;Default&#34;&#93;; NSData *imageData = UIImageJPEGRepresentation&#40;image, 0.8&#41;; &#160; &#91;wordpress newMediaObjectWithFileName:@&#34;bla.jpg&#34; contentType:@&#34;image/jpeg&#34; data:imageData shouldOverwrite:YES completion:^&#40;NSInteger mediaID, NSURL *mediaURL, NSError *error&#41; &#123; // deal with result &#125;&#41;; &#125;&#93;; &#125; DTXMLRPC is available as Open Source project for free use with attribution. A non-attribution license is also available on our store.]]></description>
				<content:encoded><![CDATA[<p><a title="DTXMLRPC for Posting to WordPress" href="https://www.cocoanetics.com/2013/03/dtxmlrpc-for-posting-to-wordpress/">Just a week ago</a> I started <a href="https://www.cocoanetics.com/parts/dtxmlrpc/">DTXMLRPC</a> as a means to post to my WordPress blog from QuickRadar. Somebody took a liking to it and sponsored me to continue work on it. So I implementing the remaining data types for XML-RPC serialization and improved the demo by adding a demonstration how to upload an image to WordPress.</p>
<p>The <a href="https://docs.cocoanetics.com/DTXMLRPC/Classes/DTWordpress.html" target="_blank">DTWordpress</a> class, based on DTXMLRPC, provides an ever growing number of WordPress API calls, like retrieving a user&#8217;s blogs, a blog&#8217;s categories, posting a new article and uploading an image. All is block based.</p>
<p><span id="more-7976"></span></p>
<div id="more-7976"></div>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
</div>
<p>For example this is the code in the sample app for uploading an image:</p>

<div class="wp_codebox"><table><tr id="p797617"><td class="code" id="p7976code17"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span>IBAction<span style="color: #002200;">&#41;</span>uploadImage<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">id</span><span style="color: #002200;">&#41;</span>sender <span style="color: #002200;">&#123;</span>
    DTWordpress <span style="color: #002200;">*</span>wordpress <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>DTWordpress alloc<span style="color: #002200;">&#93;</span> initWithEndpointURL<span style="color: #002200;">:</span>URL<span style="color: #002200;">&#93;</span>;
    wordpress.userName <span style="color: #002200;">=</span> user;
    wordpress.password <span style="color: #002200;">=</span> pass;
&nbsp;
    UIImage <span style="color: #002200;">*</span>image <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>UIImage imageNamed<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Default&quot;</span><span style="color: #002200;">&#93;</span>;
    <a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSData_Class/"><span style="color: #400080;">NSData</span></a> <span style="color: #002200;">*</span>imageData <span style="color: #002200;">=</span> UIImageJPEGRepresentation<span style="color: #002200;">&#40;</span>image, <span style="color: #2400d9;">0.8</span><span style="color: #002200;">&#41;</span>;
&nbsp;
    <span style="color: #002200;">&#91;</span>wordpress newMediaObjectWithFileName<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;bla.jpg&quot;</span> 
        contentType<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;image/jpeg&quot;</span> 
        data<span style="color: #002200;">:</span>imageData 
        shouldOverwrite<span style="color: #002200;">:</span><span style="color: #a61390;">YES</span> 
        completion<span style="color: #002200;">:^</span><span style="color: #002200;">&#40;</span>NSInteger mediaID, <a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/"><span style="color: #400080;">NSURL</span></a> <span style="color: #002200;">*</span>mediaURL, <a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSError_Class/"><span style="color: #400080;">NSError</span></a> <span style="color: #002200;">*</span>error<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
        <span style="color: #11740a; font-style: italic;">// deal with result</span>
        <span style="color: #002200;">&#125;</span><span style="color: #002200;">&#41;</span>;
    <span style="color: #002200;">&#125;</span><span style="color: #002200;">&#93;</span>;
<span style="color: #002200;">&#125;</span></pre></td></tr></table></div>

<p>DTXMLRPC is <a href="https://www.cocoanetics.com/parts/dtxmlrpc/">available as Open Source project</a> for free use with attribution. A non-attribution license is also available on our store.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=7976&amp;md5=234d9df1c9e8261a863978db252a6062" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2013/04/dtxmlrpc-1-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=dr_touch&amp;url=http%3A%2F%2Fwww.cocoanetics.com%2F2013%2F04%2Fdtxmlrpc-1-0%2F&amp;language=en_GB&amp;category=text&amp;title=DTXMLRPC+1.0&amp;description=Just+a+week+ago%C2%A0I+started+DTXMLRPC%C2%A0as+a+means+to+post+to+my+WordPress+blog+from+QuickRadar.+Somebody+took+a+liking+to+it+and+sponsored+me+to+continue+work+on+it....&amp;tags=DTXMLRPC%2Cblog" type="text/html" />
	</item>
		<item>
		<title>DTNotePadView 1.1</title>
		<link>http://www.cocoanetics.com/2013/04/dtnotepadview-1-1/</link>
		<comments>http://www.cocoanetics.com/2013/04/dtnotepadview-1-1/#comments</comments>
		<pubDate>Thu, 04 Apr 2013 15:56:31 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Updates]]></category>
		<category><![CDATA[DTNotePadView]]></category>

		<guid isPermaLink="false">https://www.cocoanetics.com/?p=7953</guid>
		<description><![CDATA[Since we moved our components from Subversion to our new shiny GitLab server we contacted all clients and asked them for what git credentials they wish to use. Doing so we found that by far the most copies of all components had been sold for DTNotePadView. Because of this I went in and gave it some love. Changes Modernized Project Structure to current standards Migrated to ARC Implemented iOS 6 autorotation support Added Retina artwork Added full documentation Add a Setup Guide The new documentation can be found on our documentation site. This component is still used in our iWoman app and so we will continue maintaining and offering it on our parts store now at a rock bottom price of 50 Euros for a normal development license.]]></description>
				<content:encoded><![CDATA[<p>Since we moved our components from Subversion to our new shiny GitLab server we contacted all clients and asked them for what git credentials they wish to use. Doing so we found that by far the most copies of all components had been sold for <a href="https://www.cocoanetics.com/parts/dtnotepadview/">DTNotePadView</a>.</p>
<p>Because of this I went in and gave it some love.</p>
<p><span id="more-7953"></span></p>
<div id="more-7953"></div>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
</div>
<h3>Changes</h3>
<ul>
<li><span style="line-height: 13px;">Modernized Project Structure to current standards</span></li>
<li>Migrated to ARC</li>
<li>Implemented iOS 6 autorotation support</li>
<li>Added Retina artwork</li>
<li>Added full documentation</li>
<li>Add a <a href="https://docs.cocoanetics.com/DTNotePadView/docs/Setup%20Guide.html">Setup Guide</a></li>
</ul>
<p>The new <a href="https://docs.cocoanetics.com/DTNotePadView/">documentation</a> can be found on our <a href="https://docs.cocoanetics.com">documentation site</a>.</p>
<p>This component is still used in our <a href="https://www.cocoanetics.com/apps/iwoman/">iWoman</a> app and so we will continue maintaining and offering it on <a href="https://www.cocoanetics.com/parts-store/">our parts store</a> now at a rock bottom price of 50 Euros for a normal development license.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=7953&amp;md5=d1c90eafb32574f8bbd5c40b11c23a17" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2013/04/dtnotepadview-1-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=dr_touch&amp;url=http%3A%2F%2Fwww.cocoanetics.com%2F2013%2F04%2Fdtnotepadview-1-1%2F&amp;language=en_GB&amp;category=text&amp;title=DTNotePadView+1.1&amp;description=Since+we+moved+our+components+from+Subversion+to+our+new+shiny+GitLab+server+we+contacted+all+clients+and+asked+them+for+what+git+credentials+they+wish+to+use.+Doing+so...&amp;tags=DTNotePadView%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Linguan 1.1.3</title>
		<link>http://www.cocoanetics.com/2013/03/linguan-1-1-3/</link>
		<comments>http://www.cocoanetics.com/2013/03/linguan-1-1-3/#comments</comments>
		<pubDate>Mon, 18 Mar 2013 19:20:07 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Updates]]></category>
		<category><![CDATA[Linguan]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=7818</guid>
		<description><![CDATA[This is a very minor bugfix release for Linguan to fix one issue and possibly address a second one. Changes Fixed Problem with Filter Scope Addressed an Issue that might prevent some users from closing the Preferences Windows The second problem was reported by two users but so far we have been unable to reproduce it. If you are a developer and too find that you cannot close the preferences window we need your help! Please e-mail us so that we can arrange for inspecting the problem on your machine. Update March 28: Approved after 10 days.]]></description>
				<content:encoded><![CDATA[<p>This is a very minor bugfix release for <a href="http://www.cocoanetics.com/apps/linguan/">Linguan</a> to fix one issue and possibly address a second one.</p>
<h3>Changes</h3>
<ul>
<li>Fixed Problem with Filter Scope</li>
<li>Addressed an Issue that might prevent some users from closing the Preferences Windows</li>
</ul>
<p>The second problem was reported by two users but so far we have been unable to reproduce it. If you are a developer and too find that you cannot close the preferences window we need your help! Please <a href="mailto:oliver@cocoanetics.com">e-mail</a> us so that we can arrange for inspecting the problem on your machine.</p>
<p>Update March 28: Approved after 10 days.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=7818&amp;md5=59f0a3721819beca0da74163b3696b32" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2013/03/linguan-1-1-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=dr_touch&amp;url=http%3A%2F%2Fwww.cocoanetics.com%2F2013%2F03%2Flinguan-1-1-3%2F&amp;language=en_GB&amp;category=text&amp;title=Linguan+1.1.3&amp;description=This+is+a+very+minor+bugfix+release+for+Linguan+to+fix+one+issue+and+possibly+address+a+second+one.+Changes+Fixed+Problem+with+Filter+Scope+Addressed+an+Issue+that+might...&amp;tags=Linguan%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Urban Airship Commander 1.1.1</title>
		<link>http://www.cocoanetics.com/2013/03/urban-airship-commander-1-1-1/</link>
		<comments>http://www.cocoanetics.com/2013/03/urban-airship-commander-1-1-1/#comments</comments>
		<pubDate>Tue, 05 Mar 2013 10:34:49 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Updates]]></category>
		<category><![CDATA[Airship Commander]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=7718</guid>
		<description><![CDATA[Ah yes, the famous 1.1.1 version of a new app&#8230; You know, version 1.0 is always the minimally viable product. Version 1.1 lets you add new stuff that didn&#8217;t make it 1.0. And version 1.1.1 then is another layer of polish and tweaks. Urban Airship Commander is dear to our heart and so it also deserves the benefit of a 1.1.1 version. Changes NEW: App icon is now included when app configuration is forwarded by email CHANGED: Improved Verification of App Settings CHANGED: Better error descriptions The version has been submitted to Apple for approval. &#160;]]></description>
				<content:encoded><![CDATA[<p>Ah yes, the famous 1.1.1 version of a new app&#8230; You know, version 1.0 is always the minimally viable product. Version 1.1 lets you add new stuff that didn&#8217;t make it 1.0. And version 1.1.1 then is another layer of polish and tweaks.</p>
<p><a href="http://www.cocoanetics.com/apps/airship-commander/">Urban Airship Commander</a> is dear to our heart and so it also deserves the benefit of a 1.1.1 version.</p>
<p><span id="more-7718"></span></p>
<div id="more-7718"></div>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
</div>
<h3>Changes</h3>
<ul>
<li>NEW: App icon is now included when app configuration is forwarded by email</li>
<li>CHANGED: Improved Verification of App Settings</li>
<li>CHANGED: Better error descriptions</li>
</ul>
<p>The version has been submitted to Apple for approval.</p>
<p>&nbsp;</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=7718&amp;md5=072a9971c85806a88fdc91ed79a74aaf" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2013/03/urban-airship-commander-1-1-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=dr_touch&amp;url=http%3A%2F%2Fwww.cocoanetics.com%2F2013%2F03%2Furban-airship-commander-1-1-1%2F&amp;language=en_GB&amp;category=text&amp;title=Urban+Airship+Commander+1.1.1&amp;description=Ah+yes%2C+the+famous+1.1.1+version+of+a+new+app%26%238230%3B+You+know%2C+version+1.0+is+always+the+minimally+viable+product.+Version+1.1+lets+you+add+new+stuff+that+didn%26%238217%3Bt+make...&amp;tags=Airship+Commander%2Cblog" type="text/html" />
	</item>
		<item>
		<title>New Setup Guide for DTCoreText</title>
		<link>http://www.cocoanetics.com/2013/02/new-setup-guide-for-dtcoretext/</link>
		<comments>http://www.cocoanetics.com/2013/02/new-setup-guide-for-dtcoretext/#comments</comments>
		<pubDate>Tue, 26 Feb 2013 18:33:51 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Updates]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=7691</guid>
		<description><![CDATA[After several fellow developers reported that they where unable to compile their apps having followed the previous DTCoreText Readme I felt that I needed to create a new Setup Guide. So I did that for the better part of a day, painstakingly verifying each individual step and documenting how the recommended approaches would be. I used a relatively new feature of appledoc to create Programming Guides which allows to add markdown files that get transformed the same way to HTML as the header comments are. You can also add images and cross references, which unfortunately seem to have a mind of their own. But I finally found a way how to get it what I wanted it to do and you can see the results online.]]></description>
				<content:encoded><![CDATA[<p>After several fellow developers reported that they where unable to compile their apps having followed the previous DTCoreText Readme I felt that I needed to create a new <a href="https://docs.cocoanetics.com/DTCoreText/docs/Setup%20Guide.html">Setup Guide</a>. So I did that for the better part of a day, painstakingly verifying each individual step and documenting how the recommended approaches would be.</p>
<p>I used a relatively new feature of appledoc to create <strong>Programming Guides</strong> which allows to add markdown files that get transformed the same way to HTML as the header comments are.</p>
<p>You can also add images and cross references, which unfortunately seem to have a mind of their own. But I finally found a way how to get it what I wanted it to do and you can <a href="https://docs.cocoanetics.com/DTCoreText/">see the results online</a>.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=7691&amp;md5=e9d2618a4ac3acbeb396ddc17a1fa8d2" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2013/02/new-setup-guide-for-dtcoretext/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=dr_touch&amp;url=http%3A%2F%2Fwww.cocoanetics.com%2F2013%2F02%2Fnew-setup-guide-for-dtcoretext%2F&amp;language=en_GB&amp;category=text&amp;title=New+Setup+Guide+for+DTCoreText&amp;description=After+several+fellow+developers+reported+that+they+where+unable+to+compile+their+apps+having+followed+the+previous+DTCoreText+Readme+I+felt+that+I+needed+to+create+a+new+Setup+Guide....&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>iCatalog 3rd Gen Goes Live</title>
		<link>http://www.cocoanetics.com/2013/02/icatalog-3rd-gen-goes-live/</link>
		<comments>http://www.cocoanetics.com/2013/02/icatalog-3rd-gen-goes-live/#comments</comments>
		<pubDate>Tue, 26 Feb 2013 10:16:31 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Updates]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=7679</guid>
		<description><![CDATA[Our partner has begun rolling out the latest generation of iCatalog+ apps which marks the third generation of our framework. The 3rd generation will also celebrate the 3rd birthday of our iCatalog.framework. Initial development had begun in Summer 2010 with the first public release occurring in October 2010. The current generation brings several user-facing features as well as a plethora of internal cleanup and refactoring. The main benefits for users are that that the download process feels much better. Previously you would only see a progress bar during the download of catalogs and then it would not do anything during the &#8220;Processing&#8221; stage. Recent advancements in our DTZipArchive component now give us the capability of also showing an uncompressing progress. That actually fills us with geeky delight because of a funny little detail we put into DTZipArchive that you would only feel. When computing progress you could either count files or bytes. When copying something large in Apple&#8217;s Finder they appear to be using whatever is the higher percentage of these two. This way you always have a movement on the progress bar, even if you&#8217;re copying many small files. We are doing it the same way. When we started with iCatalog all catalogs where basically in portrait format and so we were surprised a bit by more and more clients doing catalogs in landscape format. Previously landscape catalogs would look small and out of place with exaggerated margins around the pages. So we made certain that this &#8220;surprising new format&#8221; also displays optimally, especially since most people seem to prefer holding their iPads in landscape orientation. In this montage I am showing the previous landscape presentation on the left and the much improved version on the right. The page thumbnails are now larger and since we dynamically create them on the device they now support Retina displays which much improves their utility since you can even read large headlines &#8211; if you have good retinas. Of course a shiny new version like 3.0 also deserves that we updated all components we rely on to the latest versions. The big benefit this gets us is that on iOS 6 the apps now use the built-in Facebook share sheets. We figure, people who love Facebook will also love this improved way of sharing products they find in iCatalog books. There is another big change behind the scenes that affects the catalog production work flow. Three years ago I was a fledgling iOS developer and &#8211; frankly &#8211; was afraid of the big confusing world of Mac apps. Which is why I built the editor for iCatalog issues into the app itself. This worked pretty well for over two years, running the editor in iOS Simulator. With v3 we were now able to refactor out the editing code and special cases from the framework. This is now in a standalone Mac app that I wrote late last year as my first big Mac project. Having the Editor in a separate Mac app gives the production staff many obvious advantages: drag and drop, Autosaving and Versioning (which are built into OS X since Lion), full mouse and trackpad support, keyboard shortcuts. In retrospect I can say: if I had known how easy it is to make a Mac app I would have made the switch a couple of years earlier. And my partners would have suffered much less. Oh well, you grow and learn. I did my best to make the new Editor as efficient and fun to use as possible to make up for that. You can and should immediately try out version 3 with the updated Lilly Pulitzer iCatalog+ and the brand new FullBeauty iCatalog+. Never mind that the current catalogs show a selection of beautiful bras. If somebody asks &#8230; you&#8217;re just evaluating the iCatalog technology. iCatalog.framework 3.0 has proven to be a sturdy yet extensible platform that more than two dozen brands have chosen to trust for their digital catalog presentation: 27 catalogs and 1 magazine at today&#8217;s count, if you search for &#8220;iCatalog&#8221; on the app store.]]></description>
				<content:encoded><![CDATA[<p>Our partner has begun rolling out the latest generation of iCatalog+ apps which marks the third generation of our framework. The 3rd generation will also celebrate the 3rd birthday of our iCatalog.framework. Initial development had begun in Summer 2010 with the <a href="http://www.cocoanetics.com/2010/10/icatalog-framework-brings-digital-catalogs-to-life-on-ipad/">first public release occurring in October 2010</a>.</p>
<p><span id="more-7679"></span></p>
<div id="more-7679"></div>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
</div>
<p>The current generation brings several user-facing features as well as a plethora of internal cleanup and refactoring.</p>
<p><a href="http://i0.wp.com/www.cocoanetics.com/files/Lilly_3_0.png"><img class="alignnone  wp-image-7682" alt="Lilly Pulitzer" src="http://i0.wp.com/www.cocoanetics.com/files/Lilly_3_0.png?resize=614%2C148" data-recalc-dims="1" /></a></p>
<p>The main benefits for users are that that the download process feels much better. Previously you would only see a progress bar during the download of catalogs and then it would not do anything during the &#8220;Processing&#8221; stage. Recent advancements in our DTZipArchive component now give us the capability of also showing an uncompressing progress.</p>
<p>That actually fills us with geeky delight because of a funny little detail we put into DTZipArchive that you would only feel. When computing progress you could either count files or bytes. When copying something large in Apple&#8217;s Finder they appear to be using whatever is the higher percentage of these two. This way you always have a movement on the progress bar, even if you&#8217;re copying many small files. We are doing it the same way.</p>
<p>When we started with iCatalog all catalogs where basically in portrait format and so we were surprised a bit by more and more clients doing catalogs in landscape format. Previously landscape catalogs would look small and out of place with exaggerated margins around the pages. So we made certain that this &#8220;surprising new format&#8221; also displays optimally, especially since most people seem to prefer holding their iPads in landscape orientation.</p>
<p><a href="http://i0.wp.com/www.cocoanetics.com/files/Before_After.jpg"><img class="alignnone  wp-image-7688" alt="Before &amp; After v3" src="http://i0.wp.com/www.cocoanetics.com/files/Before_After.jpg?resize=614%2C461" data-recalc-dims="1" /></a></p>
<p>In this montage I am showing the previous landscape presentation on the left and the much improved version on the right. The page thumbnails are now larger and since we dynamically create them on the device they now support Retina displays which much improves their utility since you can even read large headlines &#8211; if you have good retinas.</p>
<p>Of course a shiny new version like 3.0 also deserves that we updated all components we rely on to the latest versions. The big benefit this gets us is that on iOS 6 the apps now use the built-in Facebook share sheets. We figure, people who love Facebook will also love this improved way of sharing products they find in iCatalog books.</p>
<p>There is another big change behind the scenes that affects the catalog production work flow. Three years ago I was a fledgling iOS developer and &#8211; frankly &#8211; was afraid of the big confusing world of Mac apps. Which is why I built the editor for iCatalog issues into the app itself. This worked pretty well for over two years, running the editor in iOS Simulator.</p>
<p>With v3 we were now able to refactor out the editing code and special cases from the framework. This is now in a standalone Mac app that I wrote late last year as my first big Mac project. Having the Editor in a separate Mac app gives the production staff many obvious advantages: drag and drop, Autosaving and Versioning (which are built into OS X since Lion), full mouse and trackpad support, keyboard shortcuts.</p>
<p>In retrospect I can say: if I had known how easy it is to make a Mac app I would have made the switch a couple of years earlier. And my partners would have suffered much less. Oh well, you grow and learn. I did my best to make the new Editor as efficient and fun to use as possible to make up for that.</p>
<p><a href="http://i1.wp.com/www.cocoanetics.com/files/Screenshot-2013.02.26-10.33.35.png"><img class="alignnone  wp-image-7684" alt="FullBeauty" src="http://i1.wp.com/www.cocoanetics.com/files/Screenshot-2013.02.26-10.33.35.png?resize=614%2C461" data-recalc-dims="1" /></a></p>
<p>You can and should immediately try out version 3 with the updated <a href="https://itunes.apple.com/us/app/lilly-pulitzer-icatalog+/id488731371?mt=8">Lilly Pulitzer iCatalog+</a> and the brand new <a href="https://itunes.apple.com/us/app/fullbeauty-icatalog+/id599727945?mt=8">FullBeauty iCatalog+</a>. Never mind that the current catalogs show a selection of beautiful bras. If somebody asks &#8230; you&#8217;re just evaluating the iCatalog technology. <img src='http://i1.wp.com/www.cocoanetics.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' data-recalc-dims="1" /> </p>
<p>iCatalog.framework 3.0 has proven to be a sturdy yet extensible platform that more than two dozen brands have chosen to trust for their digital catalog presentation: 27 catalogs and 1 magazine at <a href="http://appstore.com/icatalog">today&#8217;s count</a>, if you search for &#8220;iCatalog&#8221; on the app store.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=7679&amp;md5=e160f3e973f36f587bd0c7bf7ad9ed38" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2013/02/icatalog-3rd-gen-goes-live/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=dr_touch&amp;url=http%3A%2F%2Fwww.cocoanetics.com%2F2013%2F02%2Ficatalog-3rd-gen-goes-live%2F&amp;language=en_GB&amp;category=text&amp;title=iCatalog+3rd+Gen+Goes+Live&amp;description=Our+partner+has+begun+rolling+out+the+latest+generation+of+iCatalog%2B+apps+which+marks+the+third+generation+of+our+framework.+The+3rd+generation+will+also+celebrate+the+3rd+birthday+of...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>DTRichTextEditor 1.2</title>
		<link>http://www.cocoanetics.com/2013/02/dtrichtexteditor-1-2/</link>
		<comments>http://www.cocoanetics.com/2013/02/dtrichtexteditor-1-2/#comments</comments>
		<pubDate>Mon, 18 Feb 2013 16:47:59 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Updates]]></category>
		<category><![CDATA[DTRichTextEditor]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=7632</guid>
		<description><![CDATA[It&#8217;s been a while since I last blogged about the progress we are making on DTRichTextEditor, my rich text editor component for iOS. January saw many more licensees that ever before, people are just fed up with not being able to integrate rich text editing into their apps. Selling many licenses also allows me to dedicate a great deal of time to improving and tuning the component. Now here is Version 1.2. Inside DTRichTextEditor you get the beating heart of DTCoreText, which is responsible for parsing HTML, generating attributed strings, correctly displaying the attributed strings as well as generating HTML output for persisting the changes. Because of this I am also doing a new release version of DTCoreText. That brings this component to version 1.3. I won&#8217;t bore you with the lengthly change log which can be browsed online. As development progresses in the source code repository I am frequently updating this log to document them. I also recently added a Known Issues file to document current limitations of the editor. Rick exclaimed excitedly: Not only did you fix this issue, look how nice all of these languages are displayed in the editor.  Now this, my friend, is one nice editor! The major changes revolve around improving performance, keeping pace with improvements in DTCoreText, adding Retina-support for the selection loupe and fixing a plethora of problems. As a goodie for other editor developers I integrated a dictation placeholder view into DTCoreText. This is used if you tap the dictation button and dictate your rich text to Siri. Of course the purple dots animate! For developers the amount of available APIs and related documentation has increased massively. The number of helpful methods for manipulating the attributed text is ever growing. All this development is driven by the client needs who often approach me with specific requests that I try to fulfill as broadly as possible so that all users of this component benefit. As a general rule I am adding appledoc-style comments to all new public APIs. Also &#8211; just today &#8211; I spent an entire day polishing up the APIs and adding documentation comments to all remaining classes. Because of this the complete documentation for DTRichTextEditor can be now be browsed online or installed in your Xcode Organizer via the Atom Feed URL. You can purchase a license for the DTRichTextEditor in our parts store. If you have a pro bono app in mind that would benefit from this, then please inquire about]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s <a title="DTRichTextEditor 1.1" href="http://www.cocoanetics.com/2012/12/dtrichtexteditor-1-1/">been a while</a> since I last blogged about the progress we are making on <a href="http://www.cocoanetics.com/parts/dtrichtexteditor/">DTRichTextEditor</a>, my rich text editor component for iOS. January saw many more licensees that ever before, people are just fed up with not being able to integrate rich text editing into their apps.</p>
<p>Selling many licenses also allows me to dedicate a great deal of time to improving and tuning the component. Now here is Version 1.2.</p>
<p><span id="more-7632"></span></p>
<div id="more-7632"></div>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
</div>
<p>Inside DTRichTextEditor you get the beating heart of DTCoreText, which is responsible for parsing HTML, generating attributed strings, correctly displaying the attributed strings as well as generating HTML output for persisting the changes. Because of this I am also doing a new release version of DTCoreText. That brings this component to version 1.3.</p>
<p>I won&#8217;t bore you with the lengthly <a href="https://docs.cocoanetics.com/DTRichTextEditor/docs/Change%20Log.html">change log</a> which can be browsed online. As development progresses in the source code repository I am frequently updating this log to document them. I also recently added a <a href="https://docs.cocoanetics.com/DTRichTextEditor/docs/Known%20Issues.html">Known Issues</a> file to document current limitations of the editor.</p>
<p>Rick exclaimed excitedly:</p>
<blockquote><p>Not only did you fix this issue, look how nice all of these languages are displayed in the editor.  Now this, my friend, is one nice editor!</p></blockquote>
<p><a href="http://i2.wp.com/www.cocoanetics.com/files/Screen-Shot-2013-02-17-at-7.37.05-PM.png"><img class="alignnone  wp-image-7634" alt="Various Languages" src="http://i2.wp.com/www.cocoanetics.com/files/Screen-Shot-2013-02-17-at-7.37.05-PM.png?resize=529%2C564" data-recalc-dims="1" /></a></p>
<h3></h3>
<p>The major changes revolve around improving performance, keeping pace with improvements in DTCoreText, adding Retina-support for the selection loupe and fixing a plethora of problems.</p>
<p>As a goodie for other editor developers I <a href="https://github.com/Cocoanetics/DTCoreText/blob/master/Core/Source/DTDictationPlaceholderView.h">integrated a dictation placeholder view into DTCoreText</a>. This is used if you tap the dictation button and dictate your rich text to Siri. Of course the purple dots animate!</p>
<p><a href="http://i2.wp.com/www.cocoanetics.com/files/Bildschirmfoto-2013-02-18-um-5.34.50-PM.png"><img class="alignnone size-full wp-image-7635" alt="Dictation Placeholder" src="http://i2.wp.com/www.cocoanetics.com/files/Bildschirmfoto-2013-02-18-um-5.34.50-PM.png?resize=159%2C51" data-recalc-dims="1" /></a></p>
<p>For developers the amount of available APIs and related documentation has increased massively. The number of helpful methods for manipulating the attributed text is ever growing. All this development is driven by the client needs who often approach me with specific requests that I try to fulfill as broadly as possible so that all users of this component benefit.</p>
<p style="text-align: left;">As a general rule I am adding appledoc-style comments to all new public APIs. Also &#8211; just today &#8211; I spent an entire day polishing up the APIs and adding documentation comments to all remaining classes. Because of this the complete documentation for DTRichTextEditor can be now be <a href="https://docs.cocoanetics.com/DTRichTextEditor">browsed online</a> or installed in your Xcode Organizer via the <a href="https://docs.cocoanetics.com/DTRichTextEditor/DTRichTextEditor.atom">Atom Feed URL</a>.</p>
<p>You can purchase a license for the DTRichTextEditor in our <a href="http://www.cocoanetics.com/parts/dtrichtexteditor/">parts store</a>. If you have a pro bono app in mind that would benefit from this, then please inquire about</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=7632&amp;md5=334cecde330129670fa4df2a051d3812" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2013/02/dtrichtexteditor-1-2/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=dr_touch&amp;url=http%3A%2F%2Fwww.cocoanetics.com%2F2013%2F02%2Fdtrichtexteditor-1-2%2F&amp;language=en_GB&amp;category=text&amp;title=DTRichTextEditor+1.2&amp;description=It%26%238217%3Bs+been+a+while+since+I+last+blogged+about+the+progress+we+are+making+on+DTRichTextEditor%2C+my+rich+text+editor+component+for+iOS.+January+saw+many+more+licensees+that+ever...&amp;tags=DTRichTextEditor%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Urban Airship Commander 1.1</title>
		<link>http://www.cocoanetics.com/2013/02/urban-airship-commander-1-1/</link>
		<comments>http://www.cocoanetics.com/2013/02/urban-airship-commander-1-1/#comments</comments>
		<pubDate>Fri, 15 Feb 2013 15:07:43 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Updates]]></category>
		<category><![CDATA[Airship Commander]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=7602</guid>
		<description><![CDATA[We are happy to announce several big improvements on our Urban Airship Commander app. Besides some features that where not ready in time for 1.0 there are also 2 suggestions of users we implemented. Contrary to popular belief this app is not a game. It is a tool for developers. Update Feb 25th: The Update is now approved and available on the App Store after 10 days. Changes NEW: App now retrieves number of active devices and displays them on the app screen as well as when sending a new notification NEW: Change the order of your apps anyway you like, the log screen matches it NEW: You can forward configuration for apps by email CHANGED: Bigger text box for entering your push notification message FIXED: Changing an app name did not update the section name in the log FIXED: Incorrect location of database file could lead to data loss if iPhone gets full The version has been submitted to Apple and I&#8217;ll update here as soon as it gets approved.]]></description>
				<content:encoded><![CDATA[<p>We are happy to announce several big improvements on our <a href="http://www.cocoanetics.com/apps/airship-commander/">Urban Airship Commander</a> app. Besides some features that where not ready in time for 1.0 there are also 2 suggestions of users we implemented.</p>
<p>Contrary to popular belief this app is <em>not a game</em>. It is a tool for developers.</p>
<p>Update Feb 25th: The Update is now approved and available on the App Store after 10 days.</p>
<p><span id="more-7602"></span></p>
<div id="more-7602"></div>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
</div>
<h3>Changes</h3>
<ul>
<li>NEW: App now retrieves number of active devices and displays them on the app screen as well as when sending a new notification</li>
<li>NEW: Change the order of your apps anyway you like, the log screen matches it</li>
<li>NEW: You can forward configuration for apps by email</li>
<li>CHANGED: Bigger text box for entering your push notification message</li>
<li>FIXED: Changing an app name did not update the section name in the log</li>
<li>FIXED: Incorrect location of database file could lead to data loss if iPhone gets full</li>
</ul>
<p>The version has been submitted to Apple and I&#8217;ll update here as soon as it gets approved.</p>
<p><a href="http://i2.wp.com/www.cocoanetics.com/files/mzl.yjthxbof.png"><img class="alignnone  wp-image-7624" alt="Active devices now showing" src="http://i2.wp.com/www.cocoanetics.com/files/mzl.yjthxbof.png?resize=346%2C614" data-recalc-dims="1" /></a></p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=7602&amp;md5=2d652517eaf1ec3af4c02ad89577d412" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2013/02/urban-airship-commander-1-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=dr_touch&amp;url=http%3A%2F%2Fwww.cocoanetics.com%2F2013%2F02%2Furban-airship-commander-1-1%2F&amp;language=en_GB&amp;category=text&amp;title=Urban+Airship+Commander+1.1&amp;description=We+are+happy+to+announce+several+big+improvements+on+our+Urban+Airship+Commander+app.+Besides+some+features+that+where+not+ready+in+time+for+1.0+there+are+also+2+suggestions...&amp;tags=Airship+Commander%2Cblog" type="text/html" />
	</item>
		<item>
		<title>DTCoreText 1.2.0</title>
		<link>http://www.cocoanetics.com/2013/01/dtcoretext-1-2-0/</link>
		<comments>http://www.cocoanetics.com/2013/01/dtcoretext-1-2-0/#comments</comments>
		<pubDate>Sat, 19 Jan 2013 10:46:16 +0000</pubDate>
		<dc:creator>Drops</dc:creator>
				<category><![CDATA[Updates]]></category>
		<category><![CDATA[DTCoreText]]></category>

		<guid isPermaLink="false">http://www.cocoanetics.com/?p=7496</guid>
		<description><![CDATA[Funny Story: right after I published my findings on how to work CocoaPods I received a couple of pull requests. Should it be actually be the case that fellow developers are beginning to take notice of DTCoreText? I admit, that for the first few tags/versions of DTCoreText I didn&#8217;t take CocoaPods seriously. But since I got down how to work with sub-modules and sub-specs I find that it gives me a great deal of pleasure to keep my specs current. As your software matures people want to use a stable version of your library. That&#8217;s what versioning is for. From now on, any new features will increase the minor version digit. Fixes and improvements of existing functionality will increase the third digit. Changes ADDED: truncation support to DTCoreTextLayoutFrame ADDED: DTAttributedLabel which can be used as a UILabel replacement FIXED: GCD ARC errors and warnings with iOS 6 deployment target CHANGED: DTAttributedTextView now uses the underlying UIScrollView contentInset CHANGED: Improvements on DTAttributedTextView to prevent unnecessary re-layouting Many thanks go especially to bkennyatmeetme who contributed the first 2 items. The new version is on CocoaPods and you should get it by pod update. We are thankful for any kind of support that you are willing to offer for our fun project here. You can use DTCoreText in your apps for free if you attribute it to Cocoanetics, or you can purchase a Non-Attribution License for 75 Euros in our Parts Store. This is basically the DTCoreText improvement fund, but you get an invoice for your contribution that you can use in your company. We are also looking for sponsors for larger endeavors like for example implementing support for &#60;table&#62; tags or further improve CSS support. Don&#8217;t hesitate to get in touch.]]></description>
				<content:encoded><![CDATA[<p>Funny Story: right after I published my findings on <a title="Digging into CocoaPods" href="http://www.cocoanetics.com/2013/01/digging-into-cocoapods/">how to work CocoaPods</a> I received a couple of pull requests. Should it be actually be the case that fellow developers are beginning to take notice of DTCoreText?</p>
<p>I admit, that for the first few tags/versions of DTCoreText I didn&#8217;t take CocoaPods seriously. But since I got down how to work with sub-modules and sub-specs I find that it gives me a great deal of pleasure to keep my specs current.</p>
<p><span id="more-7496"></span></p>
<div id="more-7496"></div>
<div class="inner_ad_block">
<div id="advman-7" class="widget Advman_Widget">
<h3 class="widgettitle"></h3>
<p><!-- BuySellAds.com Zone Code --></p>
<div id="bsap_1260346" class="bsarocks bsap_fc3166ea4a479e0fdb4251fbe92a1219"></div>
<p><!-- End BuySellAds.com Zone Code --></div>
</div>
<p>As your software matures people want to use a stable version of your library. That&#8217;s what versioning is for. From now on, any new features will increase the minor version digit. Fixes and improvements of existing functionality will increase the third digit.</p>
<h3>Changes</h3>
<ul>
<li>ADDED: <strong>truncation support</strong> to DTCoreTextLayoutFrame</li>
<li>ADDED: <strong>DTAttributedLabel</strong> which can be used as a UILabel replacement</li>
<li>FIXED: <a title="OMG, GCD+ARC" href="http://www.cocoanetics.com/2013/01/omg-gcdarc/">GCD ARC errors and warnings</a> with iOS 6 deployment target</li>
<li>CHANGED: <strong>DTAttributedTextView</strong> now uses the underlying UIScrollView contentInset</li>
<li>CHANGED: Improvements on DTAttributedTextView to prevent unnecessary re-layouting</li>
</ul>
<p>Many thanks go especially to <a href="https://github.com/bkennyatmeetme">bkennyatmeetme</a> who contributed the first 2 items.</p>
<p>The new version is on CocoaPods and you should get it by pod update. We are thankful for any kind of support that you are willing to offer for our fun project here.</p>
<p>You can use DTCoreText in your apps for free if you attribute it to Cocoanetics, or you can purchase a <a href="http://www.cocoanetics.com/order/?product=DTCoreText%20Non-Attribution%20License">Non-Attribution License for 75 Euros</a> in our Parts Store. This is basically the DTCoreText improvement fund, but you get an invoice for your contribution that you can use in your company.</p>
<p>We are also <strong>looking for sponsors</strong> for larger endeavors like for example implementing support for &lt;table&gt; tags or further improve CSS support. Don&#8217;t hesitate to get in touch.</p>
 <p><a href="http://www.cocoanetics.com/?flattrss_redirect&amp;id=7496&amp;md5=51ba18193b9b6513ae69d68df6067f95" title="Flattr" target="_blank"><img src="http://www.cocoanetics.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cocoanetics.com/2013/01/dtcoretext-1-2-0/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=dr_touch&amp;url=http%3A%2F%2Fwww.cocoanetics.com%2F2013%2F01%2Fdtcoretext-1-2-0%2F&amp;language=en_GB&amp;category=text&amp;title=DTCoreText+1.2.0&amp;description=Funny+Story%3A+right+after+I+published+my+findings+on+how+to+work+CocoaPods%C2%A0I+received+a+couple+of+pull+requests.+Should+it+be+actually+be+the+case+that+fellow+developers+are...&amp;tags=DTCoreText%2Cblog" type="text/html" />
	</item>
	</channel>
</rss>
