<?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>Notes of a Developer &#187; Mac OS X</title>
	<atom:link href="http://www.developers-life.com/category/apple/mac-os-x/feed" rel="self" type="application/rss+xml" />
	<link>http://www.developers-life.com</link>
	<description>Develop on Objective-C, UIKit, C, OpenGL for  iPhone, iPad, Mac OS X</description>
	<lastBuildDate>Fri, 03 Feb 2012 11:49:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>ANSI escape sequences for coloring</title>
		<link>http://www.developers-life.com/ansi-escape-sequences-for-coloring.html</link>
		<comments>http://www.developers-life.com/ansi-escape-sequences-for-coloring.html#comments</comments>
		<pubDate>Thu, 02 Feb 2012 11:06:07 +0000</pubDate>
		<dc:creator>Vladimir Boychentsov</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[ANSI]]></category>
		<category><![CDATA[GeekTool]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.developers-life.com/?p=1434</guid>
		<description><![CDATA[More about ANSI escape code I modify my twitter script from previous post and now timeline looks like this:]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.developers-life.com/wp-content/uploads/2012/02/Screen-Shot-2012-02-02-at-12.58.01-PM.png"><img src="http://www.developers-life.com/wp-content/uploads/2012/02/Screen-Shot-2012-02-02-at-12.58.01-PM-234x300.png" alt="" title="Screen Shot 2012-02-02 at 12.58.01 PM" width="234" height="300" class="alignnone size-medium wp-image-1435" /></a></p>
<p>More about <a href="http://en.wikipedia.org/wiki/ANSI_escape_code" target="_blank">ANSI escape code</a></p>
<p>I modify my twitter script from previous post and now timeline looks like this:<br />
<a href="http://www.developers-life.com/wp-content/uploads/2012/02/Screen-Shot-2012-02-02-at-1.04.46-PM.png"><img src="http://www.developers-life.com/wp-content/uploads/2012/02/Screen-Shot-2012-02-02-at-1.04.46-PM-188x300.png" alt="" title="twitter timeline on desktop mac os x" width="188" height="300" class="alignnone size-medium wp-image-1436" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.developers-life.com/ansi-escape-sequences-for-coloring.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Modified Neon(author zb3k) Bowtie theme</title>
		<link>http://www.developers-life.com/modified-neonby-zb3k-bowtie-theme.html</link>
		<comments>http://www.developers-life.com/modified-neonby-zb3k-bowtie-theme.html#comments</comments>
		<pubDate>Thu, 02 Feb 2012 09:04:47 +0000</pubDate>
		<dc:creator>Vladimir Boychentsov</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[album art]]></category>
		<category><![CDATA[Bowtie]]></category>
		<category><![CDATA[iTunes]]></category>
		<category><![CDATA[theme]]></category>

		<guid isPermaLink="false">http://www.developers-life.com/?p=1429</guid>
		<description><![CDATA[If album does not has artwork: Download theme]]></description>
			<content:encoded><![CDATA[<p>If album does not has artwork:<br />
<a href="http://www.developers-life.com/wp-content/uploads/2012/02/Screen-Shot-2012-02-02-at-11.02.47-AM.png"><img src="http://www.developers-life.com/wp-content/uploads/2012/02/Screen-Shot-2012-02-02-at-11.02.47-AM.png" alt="" title="Screen Shot 2012-02-02 at 11.02.47 AM" width="275" height="140" class="alignnone size-full wp-image-1430" /></a></p>
<p><a href="http://goo.gl/Wtno6" target="_blank">Download theme</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.developers-life.com/modified-neonby-zb3k-bowtie-theme.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to get twitter timeline in Command line (for GeekTool)</title>
		<link>http://www.developers-life.com/how-to-get-twitter-timeline-in-command-line-for-geektool.html</link>
		<comments>http://www.developers-life.com/how-to-get-twitter-timeline-in-command-line-for-geektool.html#comments</comments>
		<pubDate>Tue, 31 Jan 2012 21:32:55 +0000</pubDate>
		<dc:creator>Vladimir Boychentsov</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[GeekTool]]></category>
		<category><![CDATA[gem]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.developers-life.com/?p=1421</guid>
		<description><![CDATA[Install next gem yajl-ruby, twitter, htmlentities 1sudo gem install yajl-ruby twitter htmlentities create app on twitter developer portal and copy keys 12345678910111213141516171819202122#!/usr/bin/ruby # Copyright Vladimir Boychentsov, 2012 # site http://www.developers-life.com/ # Released under BSD require 'rubygems' require 'twitter' require 'htmlentities' Twitter.configure do &#124;config&#124; &#160; config.consumer_key = &#34;Consumer key&#34; &#160; config.consumer_secret = &#34;Consumer secret&#34; &#160; config.oauth_token [...]]]></description>
			<content:encoded><![CDATA[<p>Install next gem yajl-ruby, twitter, htmlentities</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> yajl-ruby twitter htmlentities</div></td></tr></tbody></table></div>
<p>create app on <a href="https://dev.twitter.com/" target="_blank">twitter developer portal</a> and copy keys</p>
<div class="codecolorer-container ruby geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br /></div></td><td><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#008000; font-style:italic;">#!/usr/bin/ruby</span><br />
<span style="color:#008000; font-style:italic;"># Copyright Vladimir Boychentsov, 2012</span><br />
<span style="color:#008000; font-style:italic;"># site http://www.developers-life.com/</span><br />
<span style="color:#008000; font-style:italic;"># Released under BSD</span><br />
<br />
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'rubygems'</span><br />
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'twitter'</span><br />
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'htmlentities'</span><br />
<br />
Twitter.<span style="color:#9900CC;">configure</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>config<span style="color:#006600; font-weight:bold;">|</span><br />
&nbsp; config.<span style="color:#9900CC;">consumer_key</span> = <span style="color:#996600;">&quot;Consumer key&quot;</span><br />
&nbsp; config.<span style="color:#9900CC;">consumer_secret</span> = <span style="color:#996600;">&quot;Consumer secret&quot;</span><br />
&nbsp; config.<span style="color:#9900CC;">oauth_token</span> = <span style="color:#996600;">&quot;Access token&quot;</span><br />
&nbsp; config.<span style="color:#9900CC;">oauth_token_secret</span> = <span style="color:#996600;">&quot;Access token secret&quot;</span><br />
<span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
decoder = HTMLEntities.<span style="color:#9900CC;">new</span><br />
<br />
tweets = Twitter.<span style="color:#9900CC;">home_timeline</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><br />
<span style="color:#9966CC; font-weight:bold;">for</span> tweet <span style="color:#9966CC; font-weight:bold;">in</span> tweets<br />
&nbsp; <span style="color:#CC0066; font-weight:bold;">printf</span> <span style="color:#996600;">&quot;%s: %s&quot;</span>,tweet.<span style="color:#9900CC;">user</span>.<span style="color:#9900CC;">screen_name</span>,decoder.<span style="color:#9900CC;">decode</span><span style="color:#006600; font-weight:bold;">&#40;</span>tweet.<span style="color:#9900CC;">text</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\n</span><span style="color:#000099;">\n</span>&quot;</span><br />
<span style="color:#9966CC; font-weight:bold;">end</span></div></td></tr></tbody></table></div>
<p>Or use this code for GeekTool like this<br />
<a href="http://www.developers-life.com/wp-content/uploads/2012/02/Screen-Shot-2012-02-02-at-1.04.46-PM.png"><img src="http://www.developers-life.com/wp-content/uploads/2012/02/Screen-Shot-2012-02-02-at-1.04.46-PM-188x300.png" alt="" title="twitter timeline on desktop mac os x" width="188" height="300" class="alignnone size-medium wp-image-1436" /></a></p>
<p>P.S.: in next post I will write about coloring text</p>
]]></content:encoded>
			<wfw:commentRss>http://www.developers-life.com/how-to-get-twitter-timeline-in-command-line-for-geektool.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NSTableView with custom header</title>
		<link>http://www.developers-life.com/nstableview-with-custom-header.html</link>
		<comments>http://www.developers-life.com/nstableview-with-custom-header.html#comments</comments>
		<pubDate>Sun, 22 Jan 2012 12:04:16 +0000</pubDate>
		<dc:creator>Vladimir Boychentsov</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[NSCell]]></category>
		<category><![CDATA[NSTableHeaderCell]]></category>
		<category><![CDATA[NSTableView]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[OOP]]></category>

		<guid isPermaLink="false">http://www.developers-life.com/?p=1378</guid>
		<description><![CDATA[Default header looks like this First we want change height of header: 12NSTableHeaderView *tableHeaderView = &#91;&#91;NSTableHeaderView alloc&#93; initWithFrame:NSMakeRect&#40;0, 0, 120, 60&#41;&#93;; &#160; &#160; &#91;_tableView setHeaderView:tableHeaderView&#93;; Next step we want change NSTableHeaderCell, can make category for this class or make subclass. So, I wrote subclass. Empty category Rewrite method for change style 123456789101112131415161718192021@implementation NSTableHeaderCell &#40;VBNSTableHeaderCell&#41; - [...]]]></description>
			<content:encoded><![CDATA[<p>Default header looks like this<br />
<a href="http://www.developers-life.com/wp-content/uploads/2012/01/Screen-Shot-2012-01-22-at-1.25.57-PM.png"><img src="http://www.developers-life.com/wp-content/uploads/2012/01/Screen-Shot-2012-01-22-at-1.25.57-PM-300x227.png" alt="" title="Default header NSTableView" width="300" height="227" class="alignnone size-medium wp-image-1379" /></a></p>
<p>First we want change height of header:</p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><a href="http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/NSTableHeaderView_Class/"><span style="color: #400080;">NSTableHeaderView</span></a> <span style="color: #002200;">*</span>tableHeaderView <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/ApplicationKit/Classes/NSTableHeaderView_Class/"><span style="color: #400080;">NSTableHeaderView</span></a> alloc<span style="color: #002200;">&#93;</span> initWithFrame<span style="color: #002200;">:</span>NSMakeRect<span style="color: #002200;">&#40;</span><span style="color: #2400d9;">0</span>, <span style="color: #2400d9;">0</span>, <span style="color: #2400d9;">120</span>, <span style="color: #2400d9;">60</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; <span style="color: #002200;">&#91;</span>_tableView setHeaderView<span style="color: #002200;">:</span>tableHeaderView<span style="color: #002200;">&#93;</span>;</div></td></tr></tbody></table></div>
<p>Next step we want change NSTableHeaderCell, can make category for this class or make subclass. So, I wrote subclass.</p>
<p>Empty category<br />
<a href="http://www.developers-life.com/wp-content/uploads/2012/01/Screen-Shot-2012-01-22-at-1.40.27-PM.png"><img src="http://www.developers-life.com/wp-content/uploads/2012/01/Screen-Shot-2012-01-22-at-1.40.27-PM-273x300.png" alt="" title="NSTableView with custom header" width="273" height="300" class="alignnone size-medium wp-image-1381" /></a><br />
<span id="more-1378"></span><br />
Rewrite method for change style</p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #a61390;">@implementation</span> <a href="http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/NSTableHeaderCell_Class/"><span style="color: #400080;">NSTableHeaderCell</span></a> <span style="color: #002200;">&#40;</span>VBNSTableHeaderCell<span style="color: #002200;">&#41;</span><br />
<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>drawWithFrame<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">NSRect</span><span style="color: #002200;">&#41;</span>cellFrame inView<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/NSView_Class/"><span style="color: #400080;">NSView</span></a> <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>controlView <span style="color: #002200;">&#123;</span><br />
<br />
&nbsp; &nbsp; <a href="http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/NSMutableParagraphStyle_Class/"><span style="color: #400080;">NSMutableParagraphStyle</span></a> <span style="color: #002200;">*</span> aParagraphStyle <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/ApplicationKit/Classes/NSMutableParagraphStyle_Class/"><span style="color: #400080;">NSMutableParagraphStyle</span></a> alloc<span style="color: #002200;">&#93;</span> init<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; <span style="color: #002200;">&#91;</span>aParagraphStyle setLineBreakMode<span style="color: #002200;">:</span>NSLineBreakByWordWrapping<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; <span style="color: #002200;">&#91;</span>aParagraphStyle setAlignment<span style="color: #002200;">:</span>NSCenterTextAlignment<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; <a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSMutableDictionary_Class/"><span style="color: #400080;">NSMutableDictionary</span></a> <span style="color: #002200;">*</span>attrs <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/NSMutableDictionary_Class/"><span style="color: #400080;">NSMutableDictionary</span></a> dictionaryWithDictionary<span style="color: #002200;">:</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>self attributedStringValue<span style="color: #002200;">&#93;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;attributesAtIndex<span style="color: #002200;">:</span><span style="color: #2400d9;">0</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;effectiveRange<span style="color: #002200;">:</span><span style="color: #a61390;">NULL</span><span style="color: #002200;">&#93;</span><span style="color: #002200;">&#93;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mutableCopy<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; <span style="color: #002200;">&#91;</span>attrs setObject<span style="color: #002200;">:</span>aParagraphStyle forKey<span style="color: #002200;">:</span>NSParagraphStyleAttributeName<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <a href="http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/NSGradient_Class/"><span style="color: #400080;">NSGradient</span></a> <span style="color: #002200;">*</span>grayGradient <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/ApplicationKit/Classes/NSGradient_Class/"><span style="color: #400080;">NSGradient</span></a> alloc<span style="color: #002200;">&#93;</span> initWithColorsAndLocations<span style="color: #002200;">:</span> <span style="color: #002200;">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/NSColor_Class/"><span style="color: #400080;">NSColor</span></a> colorWithDeviceWhite<span style="color: #002200;">:</span><span style="color: #2400d9;">0.95</span> alpha<span style="color: #002200;">:</span><span style="color: #2400d9;">1</span><span style="color: #002200;">&#93;</span>, <span style="color: #2400d9;">0.1</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/NSColor_Class/"><span style="color: #400080;">NSColor</span></a> colorWithDeviceWhite<span style="color: #002200;">:</span><span style="color: #2400d9;">0.5</span> alpha<span style="color: #002200;">:</span><span style="color: #2400d9;">1</span><span style="color: #002200;">&#93;</span>, <span style="color: #2400d9;">0.9</span>, <span style="color: #a61390;">nil</span><span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; <span style="color: #002200;">&#91;</span>grayGradient drawInRect<span style="color: #002200;">:</span>cellFrame angle<span style="color: #002200;">:</span><span style="color: #2400d9;">90</span><span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>self stringValue<span style="color: #002200;">&#93;</span> drawInRect<span style="color: #002200;">:</span>cellFrame withAttributes<span style="color: #002200;">:</span>attrs<span style="color: #002200;">&#93;</span>;<br />
<span style="color: #002200;">&#125;</span><br />
<span style="color: #a61390;">@end</span></div></td></tr></tbody></table></div>
<p><a href="http://www.developers-life.com/wp-content/uploads/2012/01/Screen-Shot-2012-01-22-at-2.00.52-PM.png"><img src="http://www.developers-life.com/wp-content/uploads/2012/01/Screen-Shot-2012-01-22-at-2.00.52-PM-300x196.png" alt="" title="NSTableView with custom header, result" width="300" height="196" class="alignnone size-medium wp-image-1383" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.developers-life.com/nstableview-with-custom-header.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AVPlayer &#8211; looping video without &#8220;hiccup&#8221;/delays</title>
		<link>http://www.developers-life.com/avplayer-looping-video-without-hiccupdelays.html</link>
		<comments>http://www.developers-life.com/avplayer-looping-video-without-hiccupdelays.html#comments</comments>
		<pubDate>Sat, 17 Dec 2011 10:35:35 +0000</pubDate>
		<dc:creator>Vladimir Boychentsov</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[AVFoundation]]></category>
		<category><![CDATA[AVMutableComposition]]></category>
		<category><![CDATA[AVPlayer]]></category>
		<category><![CDATA[AVPlayerActionAtItemEndNone]]></category>
		<category><![CDATA[AVPlayerItem]]></category>
		<category><![CDATA[AVPlayerLayer]]></category>
		<category><![CDATA[AVQueuePlayer]]></category>
		<category><![CDATA[AVURLAsset]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[NSNotificationCenter]]></category>

		<guid isPermaLink="false">http://www.developers-life.com/?p=1330</guid>
		<description><![CDATA[I tried create loop by AVQueuePlayer, this method has delays between end and start play. for looping AVQueuePlayer i use this code: 123456&#91;&#91;NSNotificationCenter defaultCenter&#93; addObserver:self &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;selector:@selector&#40;playerItemDidReachEnd:&#41; &#160; &#160; &#160; &#160; &#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>I tried create loop by AVQueuePlayer, this method has delays between end and start play.</p>
<p>for looping AVQueuePlayer i use this code:</p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/"><span style="color: #400080;">NSNotificationCenter</span></a> defaultCenter<span style="color: #002200;">&#93;</span> addObserver<span style="color: #002200;">:</span>self<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;selector<span style="color: #002200;">:</span><span style="color: #a61390;">@selector</span><span style="color: #002200;">&#40;</span>playerItemDidReachEnd<span style="color: #002200;">:</span><span style="color: #002200;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;name<span style="color: #002200;">:</span>AVPlayerItemDidPlayToEndTimeNotification<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;object<span style="color: #002200;">:</span>self.mPlayerItem<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; <span style="color: #002200;">&#91;</span>self player<span style="color: #002200;">&#93;</span>.actionAtItemEnd <span style="color: #002200;">=</span> AVPlayerActionAtItemEndNone;</div></td></tr></tbody></table></div>
<p>and playerItemDidReachEnd</p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>playerItemDidReachEnd<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSNotification_Class/"><span style="color: #400080;">NSNotification</span></a> <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>notification <br />
<span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; AVPlayerItem <span style="color: #002200;">*</span>p <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>notification object<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; <span style="color: #002200;">&#91;</span>p seekToTime<span style="color: #002200;">:</span>kCMTimeZero<span style="color: #002200;">&#93;</span>;<br />
<span style="color: #002200;">&#125;</span></div></td></tr></tbody></table></div>
<p>Another solution without hiccups/delays based on AVMutableComposition!<br />
<span id="more-1330"></span></p>
<p>Easily solution, I use one AVURLAsset for inserting to composition. No memory leaks and warnings, because used just one object.</p>
<p>Solution:</p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span>AVAsset<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span> makeAssetComposition <span style="color: #002200;">&#123;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #a61390;">int</span> numOfCopies <span style="color: #002200;">=</span> <span style="color: #2400d9;">25</span>;<br />
<br />
&nbsp; &nbsp; AVMutableComposition <span style="color: #002200;">*</span>composition <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>AVMutableComposition alloc<span style="color: #002200;">&#93;</span> init<span style="color: #002200;">&#93;</span> autorelease<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; AVURLAsset<span style="color: #002200;">*</span> sourceAsset <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>AVURLAsset URLAssetWithURL<span style="color: #002200;">:</span>mURL options<span style="color: #002200;">:</span><span style="color: #a61390;">nil</span><span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #11740a; font-style: italic;">// calculate time</span><br />
&nbsp; &nbsp; CMTimeRange editRange <span style="color: #002200;">=</span> CMTimeRangeMake<span style="color: #002200;">&#40;</span>CMTimeMake<span style="color: #002200;">&#40;</span><span style="color: #2400d9;">0</span>, <span style="color: #2400d9;">600</span><span style="color: #002200;">&#41;</span>, CMTimeMake<span style="color: #002200;">&#40;</span>sourceAsset.duration.value, sourceAsset.duration.timescale<span style="color: #002200;">&#41;</span><span style="color: #002200;">&#41;</span>;<br />
&nbsp; &nbsp; <br />
&nbsp; &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>editError;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #11740a; font-style: italic;">// and add into your composition </span><br />
&nbsp; &nbsp; <span style="color: #a61390;">BOOL</span> result <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>composition insertTimeRange<span style="color: #002200;">:</span>editRange ofAsset<span style="color: #002200;">:</span>sourceAsset atTime<span style="color: #002200;">:</span>composition.duration error<span style="color: #002200;">:&amp;</span>editError<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>result<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #a61390;">for</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">int</span> i <span style="color: #002200;">=</span> <span style="color: #2400d9;">0</span>; i &lt; numOfCopies; i<span style="color: #002200;">++</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#91;</span>composition insertTimeRange<span style="color: #002200;">:</span>editRange ofAsset<span style="color: #002200;">:</span>sourceAsset atTime<span style="color: #002200;">:</span>composition.duration error<span style="color: #002200;">:&amp;</span>editError<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #002200;">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #a61390;">return</span> composition;<br />
<span style="color: #002200;">&#125;</span></div></td></tr></tbody></table></div>
<p>Play composition:</p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">AVAsset <span style="color: #002200;">*</span>composition <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>self makeAssetComposition<span style="color: #002200;">&#93;</span>;<br />
<br />
<span style="color: #11740a; font-style: italic;">// create an AVPlayer with your composition</span><br />
AVPlayer<span style="color: #002200;">*</span> mp <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>AVPlayer playerWithPlayerItem<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span>AVPlayerItem playerItemWithAsset<span style="color: #002200;">:</span>composition<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
<span style="color: #11740a; font-style: italic;">// Add the player to your UserInterface</span><br />
<span style="color: #11740a; font-style: italic;">// Create a PlayerLayer:</span><br />
AVPlayerLayer <span style="color: #002200;">*</span>playerLayer <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>AVPlayerLayer playerLayerWithPlayer<span style="color: #002200;">:</span>mp<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
<span style="color: #11740a; font-style: italic;">// integrate it to your view. Here you can customize your player (Fullscreen, or a small preview)</span><br />
<span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>self window<span style="color: #002200;">&#93;</span>.layer insertSublayer<span style="color: #002200;">:</span>playerLayer atIndex<span style="color: #002200;">:</span><span style="color: #2400d9;">0</span><span style="color: #002200;">&#93;</span>;<br />
playerLayer.frame <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>self window<span style="color: #002200;">&#93;</span>.layer.bounds;<br />
playerLayer.videoGravity <span style="color: #002200;">=</span> AVLayerVideoGravityResizeAspectFill; &nbsp;<br />
<span style="color: #11740a; font-style: italic;">//And finally play your video:</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
<span style="color: #002200;">&#91;</span>mp play<span style="color: #002200;">&#93;</span>;</div></td></tr></tbody></table></div>
<p>Any questions to comments please.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.developers-life.com/avplayer-looping-video-without-hiccupdelays.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AudioSession AudioRouteChange</title>
		<link>http://www.developers-life.com/audiosession-audioroutechange.html</link>
		<comments>http://www.developers-life.com/audiosession-audioroutechange.html#comments</comments>
		<pubDate>Sat, 17 Dec 2011 09:56:46 +0000</pubDate>
		<dc:creator>Vladimir Boychentsov</dc:creator>
				<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[AudioSessionAddPropertyListener]]></category>
		<category><![CDATA[AudioToolbox]]></category>
		<category><![CDATA[kAudioSessionProperty_AudioRouteChange]]></category>

		<guid isPermaLink="false">http://www.developers-life.com/?p=1327</guid>
		<description><![CDATA[if you will use or used AVPlayer or you want just know about changes, you can check AudioRouteChange. Simple solution: Add framework AudioToolbox and add import to file 1#import &#60;AudioToolbox/AudioToolbox.h&#62; Insert into init method or any other 1AudioSessionAddPropertyListener &#40;kAudioSessionProperty_AudioRouteChange, callbackHeadphone_func, self&#41;; Listener callback 12345678910111213141516171819202122232425void callbackHeadphone_func &#40; void *inClientData, AudioSessionPropertyID inID, UInt32 inDataSize, const void *inData [...]]]></description>
			<content:encoded><![CDATA[<p>if you will use or used AVPlayer or you want just know about changes, you can check AudioRouteChange.</p>
<p>Simple solution:</p>
<p>Add framework AudioToolbox and add import to file</p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #6e371a;">#import &lt;AudioToolbox/AudioToolbox.h&gt;</span></div></td></tr></tbody></table></div>
<p>Insert into init method or any other</p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">AudioSessionAddPropertyListener <span style="color: #002200;">&#40;</span>kAudioSessionProperty_AudioRouteChange, callbackHeadphone_func, self<span style="color: #002200;">&#41;</span>;</div></td></tr></tbody></table></div>
<p>Listener callback</p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #a61390;">void</span> callbackHeadphone_func <span style="color: #002200;">&#40;</span> <span style="color: #a61390;">void</span> <span style="color: #002200;">*</span>inClientData, AudioSessionPropertyID inID, UInt32 inDataSize, <span style="color: #a61390;">const</span> <span style="color: #a61390;">void</span> <span style="color: #002200;">*</span>inData <span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span> inID <span style="color: #002200;">==</span> kAudioSessionProperty_AudioRouteChange <span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#91;</span>mainViewController performSelector<span style="color: #002200;">:</span><span style="color: #a61390;">@selector</span><span style="color: #002200;">&#40;</span>isHeadsetPluggedIn<span style="color: #002200;">&#41;</span><span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; <span style="color: #002200;">&#125;</span><br />
<span style="color: #002200;">&#125;</span><br />
<br />
<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span> isHeadsetPluggedIn <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; UInt32 routeSize <span style="color: #002200;">=</span> <a href="http://www.opengroup.org/onlinepubs/009695399/functions/sizeof.html"><span style="color: #a61390;">sizeof</span></a> <span style="color: #002200;">&#40;</span>CFStringRef<span style="color: #002200;">&#41;</span>; CFStringRef route;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; AudioSessionGetProperty <span style="color: #002200;">&#40;</span>kAudioSessionProperty_AudioRoute, <span style="color: #002200;">&amp;</span>routeSize, <span style="color: #002200;">&amp;</span>route<span style="color: #002200;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; <span style="color: #11740a; font-style: italic;">/* Known values of route:<br />
&nbsp; &nbsp; &nbsp;&quot;Headset&quot;<br />
&nbsp; &nbsp; &nbsp;&quot;Headphone&quot;<br />
&nbsp; &nbsp; &nbsp;&quot;Speaker&quot;<br />
&nbsp; &nbsp; &nbsp;&quot;SpeakerAndMicrophone&quot;<br />
&nbsp; &nbsp; &nbsp;&quot;HeadphonesAndMicrophone&quot;<br />
&nbsp; &nbsp; &nbsp;&quot;HeadsetInOut&quot;<br />
&nbsp; &nbsp; &nbsp;&quot;ReceiverAndMicrophone&quot;<br />
&nbsp; &nbsp; &nbsp;&quot;Lineout&quot; */</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <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> routeStr <span style="color: #002200;">=</span> <span style="color: #002200;">&#40;</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><span style="color: #002200;">&#41;</span>route;<br />
&nbsp; &nbsp; DLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;%@&quot;</span>,routeStr<span style="color: #002200;">&#41;</span>;<br />
<span style="color: #002200;">&#125;</span></div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://www.developers-life.com/audiosession-audioroutechange.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sorting by block</title>
		<link>http://www.developers-life.com/sorting-by-block.html</link>
		<comments>http://www.developers-life.com/sorting-by-block.html#comments</comments>
		<pubDate>Sat, 22 Oct 2011 19:17:30 +0000</pubDate>
		<dc:creator>Vladimir Boychentsov</dc:creator>
				<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[sort]]></category>
		<category><![CDATA[__block]]></category>

		<guid isPermaLink="false">http://www.developers-life.com/?p=1296</guid>
		<description><![CDATA[Sorting by block 12345678910111213141516171819NSArray *stringsArray = &#91;NSArray arrayWithObjects: &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;@&#34;string 1&#34;, &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;@&#34;String 21&#34;, &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Sorting by block</p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><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>stringsArray <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/"><span style="color: #400080;">NSArray</span></a> arrayWithObjects<span style="color: #002200;">:</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;string 1&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;String 21&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;string 12&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;String 11&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;String 02&quot;</span>, <span style="color: #a61390;">nil</span><span style="color: #002200;">&#93;</span>;<br />
&nbsp;<br />
<span style="color: #a61390;">static</span> NSStringCompareOptions comparisonOptions <span style="color: #002200;">=</span> NSCaseInsensitiveSearch | NSNumericSearch |<br />
&nbsp; &nbsp; &nbsp; &nbsp; NSWidthInsensitiveSearch | NSForcedOrderingSearch;<br />
<a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSLocale_Class/"><span style="color: #400080;">NSLocale</span></a> <span style="color: #002200;">*</span>currentLocale <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSLocale_Class/"><span style="color: #400080;">NSLocale</span></a> currentLocale<span style="color: #002200;">&#93;</span>;<br />
&nbsp;<br />
NSComparator finderSortBlock <span style="color: #002200;">=</span> <span style="color: #002200;">^</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">id</span> string1, <span style="color: #a61390;">id</span> string2<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp;<br />
&nbsp; &nbsp; <span style="color: #a61390;">NSRange</span> string1Range <span style="color: #002200;">=</span> NSMakeRange<span style="color: #002200;">&#40;</span><span style="color: #2400d9;">0</span>, <span style="color: #002200;">&#91;</span>string1 length<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #a61390;">return</span> <span style="color: #002200;">&#91;</span>string1 compare<span style="color: #002200;">:</span>string2 options<span style="color: #002200;">:</span>comparisonOptions range<span style="color: #002200;">:</span>string1Range locale<span style="color: #002200;">:</span>currentLocale<span style="color: #002200;">&#93;</span>;<br />
<span style="color: #002200;">&#125;</span>;<br />
&nbsp;<br />
<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>finderSortArray <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>stringsArray sortedArrayUsingComparator<span style="color: #002200;">:</span>finderSortBlock<span style="color: #002200;">&#93;</span>;<br />
NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;finderSortArray: %@&quot;</span>, finderSortArray<span style="color: #002200;">&#41;</span>;</div></td></tr></tbody></table></div>
<p>Result:<br />
/*<br />
Output:<br />
finderSortArray: (<br />
    &#8220;string 1&#8243;,<br />
    &#8220;String 02&#8243;,<br />
    &#8220;String 11&#8243;,<br />
    &#8220;string 12&#8243;,<br />
    &#8220;String 21&#8243;<br />
)<br />
*/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.developers-life.com/sorting-by-block.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting Font Metrics</title>
		<link>http://www.developers-life.com/getting-font-metrics.html</link>
		<comments>http://www.developers-life.com/getting-font-metrics.html#comments</comments>
		<pubDate>Sat, 22 Oct 2011 19:11:16 +0000</pubDate>
		<dc:creator>Vladimir Boychentsov</dc:creator>
				<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[UIFont]]></category>

		<guid isPermaLink="false">http://www.developers-life.com/?p=1292</guid>
		<description><![CDATA[Doc about font metric Getting Font Metrics]]></description>
			<content:encoded><![CDATA[<p>Doc about font metric</p>
<p><img class="alignnone" title="Getting Font Metrics" src="http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/FontHandling/Tasks/Art/glyph_metrics.gif" alt="" width="506" height="274" /></p>
<h5><a href="http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/FontHandling/Tasks/GettingFontMetrics.html" target="_blank">Getting Font Metrics</a></h5>
]]></content:encoded>
			<wfw:commentRss>http://www.developers-life.com/getting-font-metrics.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Get Geo tags from image</title>
		<link>http://www.developers-life.com/get-geo-tags-from-image.html</link>
		<comments>http://www.developers-life.com/get-geo-tags-from-image.html#comments</comments>
		<pubDate>Wed, 17 Aug 2011 22:22:44 +0000</pubDate>
		<dc:creator>Vladimir Boychentsov</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[Geo]]></category>
		<category><![CDATA[Image]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Map]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[Position]]></category>
		<category><![CDATA[Tag]]></category>
		<category><![CDATA[Ukraine]]></category>

		<guid isPermaLink="false">http://www.developers-life.com/?p=1274</guid>
		<description><![CDATA[Little application for getting geo location from photo Download Application]]></description>
			<content:encoded><![CDATA[<p>Little application for getting geo location from photo</p>
<p><a href="http://www.developers-life.com/wp-content/uploads/2011/08/Screen-Shot-2011-08-18-at-1.04.33-AM.png"><img class="alignnone size-full wp-image-1277" title="Screen Shot 2011-08-18 at 1.04.33 AM" src="http://www.developers-life.com/wp-content/uploads/2011/08/Screen-Shot-2011-08-18-at-1.04.33-AM.png" alt="" width="247" height="331" /></a></p>
<p><span id="more-1274"></span><br />
<strong><a href="http://goo.gl/ewF3q" target="_blank"><span style="color: #ff0000;">Download Application</span></a></strong></p>
<p><a href="http://www.developers-life.com/wp-content/uploads/2011/08/Screen-Shot-2011-08-18-at-1.04.27-AM.png"><img class="alignnone size-full wp-image-1276" title="Screen Shot 2011-08-18 at 1.04.27 AM" src="http://www.developers-life.com/wp-content/uploads/2011/08/Screen-Shot-2011-08-18-at-1.04.27-AM.png" alt="" width="383" height="324" /></a></p>
<p><a href="http://www.developers-life.com/wp-content/uploads/2011/08/Screen-Shot-2011-08-18-at-1.04.19-AM.png"><img class="alignnone size-full wp-image-1275" title="Screen Shot 2011-08-18 at 1.04.19 AM" src="http://www.developers-life.com/wp-content/uploads/2011/08/Screen-Shot-2011-08-18-at-1.04.19-AM.png" alt="" width="357" height="248" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.developers-life.com/get-geo-tags-from-image.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Administrator Privilege in Mac OS X app</title>
		<link>http://www.developers-life.com/administrator-privilege-in-mac-os-x-app.html</link>
		<comments>http://www.developers-life.com/administrator-privilege-in-mac-os-x-app.html#comments</comments>
		<pubDate>Wed, 17 Aug 2011 20:17:49 +0000</pubDate>
		<dc:creator>Vladimir Boychentsov</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Authorization]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[sudo]]></category>

		<guid isPermaLink="false">http://www.developers-life.com/?p=1272</guid>
		<description><![CDATA[If the Terminal command requires Administrator Privilege (aka sudo), use AuthorizationExecuteWithPrivileges instead. The following will create a file named &#8220;com.developers-life.test&#8221; is the root directory &#8220;/System/Library/Caches&#8221;. 123456789101112131415AuthorizationRef authorizationRef; FILE *pipe = NULL; OSStatus err = AuthorizationCreate&#40;nil, &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;kAuthorizationEmptyEnvironment, &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>If the Terminal command requires Administrator Privilege (aka sudo), use AuthorizationExecuteWithPrivileges instead. The following will create a file named &#8220;com.developers-life.test&#8221; is the root directory &#8220;/System/Library/Caches&#8221;.</p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">AuthorizationRef authorizationRef;<br />
<span style="color: #a61390;">FILE</span> <span style="color: #002200;">*</span>pipe <span style="color: #002200;">=</span> <span style="color: #a61390;">NULL</span>;<br />
OSStatus err <span style="color: #002200;">=</span> AuthorizationCreate<span style="color: #002200;">&#40;</span><span style="color: #a61390;">nil</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;kAuthorizationEmptyEnvironment,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;kAuthorizationFlagDefaults,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #002200;">&amp;</span>authorizationRef<span style="color: #002200;">&#41;</span>;<br />
<br />
<span style="color: #a61390;">char</span> <span style="color: #002200;">*</span>command<span style="color: #002200;">=</span> <span style="color: #bf1d1a;">&quot;/usr/bin/touch&quot;</span>;<br />
<span style="color: #a61390;">char</span> <span style="color: #002200;">*</span>args<span style="color: #002200;">&#91;</span><span style="color: #002200;">&#93;</span> <span style="color: #002200;">=</span> <span style="color: #002200;">&#123;</span><span style="color: #bf1d1a;">&quot;/System/Library/Caches/com.developers-life.test&quot;</span>, <span style="color: #a61390;">nil</span><span style="color: #002200;">&#125;</span>;<br />
<br />
err <span style="color: #002200;">=</span> AuthorizationExecuteWithPrivileges<span style="color: #002200;">&#40;</span>authorizationRef,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;command,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;kAuthorizationFlagDefaults,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;args,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #002200;">&amp;</span>pipe<span style="color: #002200;">&#41;</span>;</div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://www.developers-life.com/administrator-privilege-in-mac-os-x-app.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

