<?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>Dawid Pośliński &#187; mobile</title>
	<atom:link href="http://blog.poslinski.net/kategoria/mobile/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.poslinski.net</link>
	<description>Code is poetry.</description>
	<lastBuildDate>Sun, 27 Feb 2011 11:30:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Wzorzec fabryki w objective-c</title>
		<link>http://blog.poslinski.net/wzorzec-fabryki-w-objective-c/</link>
		<comments>http://blog.poslinski.net/wzorzec-fabryki-w-objective-c/#comments</comments>
		<pubDate>Wed, 15 Dec 2010 19:17:47 +0000</pubDate>
		<dc:creator>Dawid Pośliński</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[poradniki]]></category>
		<category><![CDATA[fabryka]]></category>
		<category><![CDATA[factory]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[wzorce projektowe]]></category>

		<guid isPermaLink="false">http://blog.poslinski.net/?p=649</guid>
		<description><![CDATA[Wzorce projektowe mają zarówno narzucać pewien schemat działania programisty, podczas wytwarzania kodu aplikacji, jak również ułatwiać mu życie. W tym wpisie, przedstawię moją uproszczoną wersje implementacji wzorca Fabryki &#8211; Factory na przykładzie Objective-C. Factory.h #import @interface Factory : NSObject { NSMutableDictionary *variable; } +(id)init; +(void)setVar:(id)vari forKey:key; +(id)getVar:(id)key; +(void)removeVar:(id)key; @end Factory.m #import "Factory.h" @implementation Factory static [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.poslinski.net/wp-content/uploads/2010/12/objective-c-factory-wzorzec.png"><img src="http://blog.poslinski.net/wp-content/uploads/2010/12/objective-c-factory-wzorzec.png" alt="" title="objective-c-factory-wzorzec" width="620" height="150" class="aligncenter size-full wp-image-652" /></a>Wzorce projektowe mają zarówno narzucać pewien schemat działania programisty, podczas wytwarzania kodu aplikacji, jak również ułatwiać mu życie. W tym wpisie, przedstawię moją uproszczoną wersje implementacji wzorca Fabryki &#8211; Factory na przykładzie Objective-C.<span id="more-649"></span></p>
<h2>Factory.h</h2>
<pre name="code" class="objective-c">
#import <Foundation/Foundation.h>

@interface Factory : NSObject {
	NSMutableDictionary *variable;
}

+(id)init;
+(void)setVar:(id)vari forKey:key;
+(id)getVar:(id)key;
+(void)removeVar:(id)key;

@end
</pre>
<h2>Factory.m</h2>
<pre name="code" class="objective-c">
#import "Factory.h"

@implementation Factory

static NSMutableDictionary *variable = nil;

+(id)init {
	if (!variable)
        variable = [[NSMutableDictionary alloc] init];
	return self;
}

+(void)setVar:(id)vari forKey:(id)key {
	if ( [variable objectForKey:(id)key] != nil )
		[self removeVar:(id)key];

	[variable setObject:(id)vari forKey:(id)key];
}

+(id)getVar:(id)key {
	return [variable objectForKey:(id)key];
}

+(void)removeVar:(id)key {
	if ( [variable objectForKey:(id)key] != nil ) {
		[variable removeObjectForKey:(id)key];
	}
}

@end
</pre>
<h2>Instalacja</h2>
<ol>
<li>W pliku <strong>nazwa_aplikacji_prefix.pch</strong>, który jest dołączany na początku każdego pliku z kodem aplikacji, dodajemy <strong>#import &#8222;Factory.h&#8221;</strong>.</li>
<li>W metodzie <strong>(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions</strong>, dodajemy na początku <strong>[Factory init]</strong>.</li>
</ol>
<h2>Sposób użycia</h2>
<ul>
<li>Dodajemy do fabryki obiekty za pomocą metody <strong>[Factory setVar:(id)NaszObiekt forKey:@"naszKlucz"];</strong></li>
<li>Pobieramy obiekt z fabryki za pomocą metody <strong>[Factory getVar:@"naszKlucz"];</strong></li>
<li>Usuwamy obiekt z rejestru za pomocą metody <strong>[Factory removeVar:@"naszKlucz"];</strong></li>
</ul>
<p>Foto: <a href="http://www.flickr.com/photos/archetypefotografie/4746308940/" target="_blank">Flickr</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.poslinski.net/wzorzec-fabryki-w-objective-c/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>iPhone: problem przetwarzania dużej ilości danych</title>
		<link>http://blog.poslinski.net/iphone-problem-przetwarzania-duzej-ilosci-danych/</link>
		<comments>http://blog.poslinski.net/iphone-problem-przetwarzania-duzej-ilosci-danych/#comments</comments>
		<pubDate>Mon, 25 Oct 2010 17:30:00 +0000</pubDate>
		<dc:creator>Dawid Pośliński</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[poradniki]]></category>
		<category><![CDATA[coredata]]></category>
		<category><![CDATA[multithreading]]></category>
		<category><![CDATA[nsmanagedcontext]]></category>

		<guid isPermaLink="false">http://blog.poslinski.net/?p=634</guid>
		<description><![CDATA[W przypadku tworzenia bardziej skomplikowanych aplikacji, na platformę mobilną Apple, szczególnie gdy wykorzystuje się klasy z przestrzeni CoreData, pojawia się problem &#8222;freez&#8217;ów&#8221; aplikacji. Podczas wykonywania wielu zapytań w krótkim czasie w głównym wątku aplikacji, dochodzi do sytuacji, w której widok nie zostaje odświeżany. Innymi słowy, jeżeli programista, chce np. aktualizować pasek postępu, musi wykonywać bardziej [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.poslinski.net/wp-content/uploads/2010/10/iphone-coredata-problem.png"><img src="http://blog.poslinski.net/wp-content/uploads/2010/10/iphone-coredata-problem.png" alt="" title="iphone-coredata-problem" width="620" height="150" class="aligncenter size-full wp-image-637" /></a>W przypadku tworzenia bardziej skomplikowanych aplikacji, na platformę mobilną Apple, szczególnie gdy wykorzystuje się klasy z przestrzeni CoreData, pojawia się problem &#8222;freez&#8217;ów&#8221; aplikacji. Podczas wykonywania wielu zapytań w krótkim czasie w głównym wątku aplikacji, dochodzi do sytuacji, w której widok nie zostaje odświeżany. Innymi słowy, jeżeli programista, chce np. aktualizować pasek postępu, musi wykonywać bardziej skomplikowane operacje w dodatkowym wątku, aby odciążyć wątek główny i móc aktualizować widok.<span id="more-634"></span><br />
I o ile stworzenie nowego wątku, sprowadza się do prostego kodu:</p>
<pre name="code" class="objective-c">
/* Kolejka zadań - init (autorelease) */
NSOperationQueue *queue = [[NSOperationQueue alloc] init];

/* Stworzenie zadania, które dodamy do kolejki, które wywoła metodę "zadanie" w osobnym wątku */
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(zadanie) object:nil];

/* Dodanie zadania do kolejki (wątku) */
[queue addOperation:operation];

[operation release];
[queue release];
</pre>
<p>W przypadku bardzo skomplikowanych operacji przy obiektach CoreData, szczególnie gdy np. dodawane jest wiele obiektów do bazy i wykonywana na NSManagedContext metoda save, może dojść do sytuacji, że coś pójdzie nie tak. Jak zachowa się aplikacja, gdy dojdzie do takiej sytuacji w głównym wątku? Odpowiedź nie jest jednoznaczna, albowiem zależy od bardzo istotnej rzeczy. Mianowicie zależy od tego, czy NSManagedContext został stworzony w obrębie wątku głównego czy też nowo utworzonego wątku pobocznego. W pierwszym przypadku, aplikacja przestanie odpowiadać, ale <strong>nie</strong> przestanie działać! Innymi słowy, aplikacja będzie próbować wykonać zapis do skutku, ale bez rezultatu. Rozwiązaniem tego problemu, jest <strong>stworzenie nowego obiektu NSManagedContext</strong> w obrębie metody zdarzenie, dzięki czemu, nawet jeśli któraś z operacji nie powiedzie się, aplikacja nadal będzie się wykonywać.</p>
<p>Więcej informacji na ten temat, można znaleźć w <a href="http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/CoreData/Articles/cdMultiThreading.html">dokumentacji</a>.</p>
<p>Link do <a href="http://www.flickr.com/photos/blakespot/2376243022/">obrazka promującego</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.poslinski.net/iphone-problem-przetwarzania-duzej-ilosci-danych/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Phone 7 i XNA</title>
		<link>http://blog.poslinski.net/windows-phone-7-i-xna/</link>
		<comments>http://blog.poslinski.net/windows-phone-7-i-xna/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 12:37:30 +0000</pubDate>
		<dc:creator>Dawid Pośliński</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[silverlight]]></category>
		<category><![CDATA[xna]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[windows phone]]></category>

		<guid isPermaLink="false">http://blog.poslinski.net/?p=573</guid>
		<description><![CDATA[Ostatnio dość głośno  się mówi o nowej platformie dla XNA &#8211; Windows Phone 7. Microsoft udostępnił już stosowne narzędzia pozwalające emulować zarówno samą platformę sprzętową na PC jak również tworzyć na nią aplikację. Odnośnie samego Windows Phone&#8217;a, kilka featerów można zobaczyć na prezentacji znajdującej się pod tym adresem. Jednak to co z mojego punktu widzenia [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.poslinski.net/wp-content/uploads/2010/03/wp7xna.png"><img class="aligncenter size-full wp-image-575" title="wp7xna" src="http://blog.poslinski.net/wp-content/uploads/2010/03/wp7xna.png" alt="" width="620" height="150" /></a>Ostatnio dość głośno  się mówi o nowej platformie dla XNA &#8211; Windows Phone 7. Microsoft udostępnił już stosowne narzędzia pozwalające emulować zarówno samą platformę sprzętową na PC jak również tworzyć na nią aplikację. <span id="more-573"></span>Odnośnie samego Windows Phone&#8217;a, kilka featerów można zobaczyć na prezentacji znajdującej się pod <a href="http://channel9.msdn.com/posts/LauraFoy/First-Look-Windows-Phone-7-Series-Hands-on-Demo/">tym</a> adresem. Jednak to co z mojego punktu widzenia jest najbardziej interesujące to właśnie możliwości tej platformy pod kątem XNA.</p>
<p>Do dyspozycji programistów będą oddane następujące predefiniowane shadery:</p>
<ul>
<li>BasicEffect (stary, dobrze znany, oferujący podstawowe efekty)</li>
<li>DualTextureEffect (jak sama nazwa wskazuje, mieszanie tekstur)</li>
<li>AlphaTestEffect (billboarding)</li>
<li>SkinnedEffect (animacje)</li>
<li>EnviromentMapEffect (mapa środowiska na obiekcie, odbicia)</li>
</ul>
<p>Custom Shadery nie będą dostępne, przy czym Microsoft nie wyklucza ich wprowadzenia w przyszłości.</p>
<p>Dostępne rozdzielczości dla gier:</p>
<ul>
<li>480&#215;800</li>
<li>360&#215;600</li>
<li>240&#215;400</li>
</ul>
<p>Oczywiście zmniejszenie rozdzielczości pozwoli na tworzenie bardziej skomplikowanych scen przy lepszym framerate (wyświetlacz 30hz, więc nie ma sensu tworzyć gier, które mają ponad 30fps, chyba, że są wyjątkowo proste i osiągają taki lub wyższy wynik przy maksymalnej rozdzielczości).</p>
<p><a href="http://blog.poslinski.net/wp-content/uploads/2010/03/screenwp7xna.png"><img class="aligncenter size-full wp-image-576" title="screenwp7xna" src="http://blog.poslinski.net/wp-content/uploads/2010/03/screenwp7xna.png" alt="" width="620" height="318" /></a></p>
<p>Dla zainteresowanych, Microsoft udostępnił już dokumentacje i pierwszy prosty tutorial, aby ułatwić przygodę z tworzeniem aplikacji na tę platformę.</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/bb200104%28XNAGameStudio.40%29.aspx">MSDN</a></li>
<li><a href="http://creators.xna.com/en-US/article/firstwindowsphonegame">Pierwsza gra na Windows Phone</a></li>
<li><a href="http://creators.xna.com/en-us/education/gettingstarted">Wszystkie resource&#8217;y w jednym miejscu</a></li>
<li><a href="http://">Screencasty z ostatnich sesji z konferencji MIX10</a> (b. polecam prezentacje, gdzie przedstawiono przykładowe działające aplikację &#8211; <a href="http://live.visitmix.com/MIX10/Sessions/CL21">3d rpg</a> i <a href="http://live.visitmix.com/MIX10/Sessions/CL22">przykłady wykorzystania shaderów</a>)</li>
</ul>
<p>Inni artykuły:</p>
<ul>
<li><a href="http://polygamia.pl/Polygamia/1,94534,7664578,MIX10__Urzadzenia_z_Windows_Phone_7_jako_przenosne.html">Polygamia</a></li>
<li><a href="http://www.engadget.com/photos/windows-phone-7-series-xna-screenshots/#2785558">Screeny z 3d rpg</a></li>
</ul>
<p>Zapowiada się bardzo ciekawie.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.poslinski.net/windows-phone-7-i-xna/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

