<?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>Applied Informatics Developer Connection</title>
	<atom:link href="http://developer.appinf.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://developer.appinf.com</link>
	<description>Resources for Developers</description>
	<lastBuildDate>Fri, 09 Jul 2010 08:07:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Mailing Lists</title>
		<link>http://developer.appinf.com/?p=228</link>
		<comments>http://developer.appinf.com/?p=228#comments</comments>
		<pubDate>Fri, 09 Jul 2010 08:06:00 +0000</pubDate>
		<dc:creator>guenter</dc:creator>
				<category><![CDATA[Announcements]]></category>

		<guid isPermaLink="false">http://developer.appinf.com/?p=228</guid>
		<description><![CDATA[We now have two mailing lists available for users of our C++ libraries and tools:

appinf-announce is a read-only list used for important announcements from Applied Informatics, such as new releases or important patches.
appinf-user is a general discussions list.

In addition, there is the poco-develop lists for users of the POCO C++ Libraries.
]]></description>
			<content:encoded><![CDATA[<p>We now have two mailing lists available for users of our C++ libraries and tools:</p>
<ul>
<li><a href="https://mailhost.appinf.com/mailman/listinfo/appinf-announce">appinf-announce</a> is a read-only list used for important announcements from Applied Informatics, such as new releases or important patches.</li>
<li><a href="https://mailhost.appinf.com/mailman/listinfo/appinf-user">appinf-user</a> is a general discussions list.</li>
</ul>
<p>In addition, there is the <a href="https://lists.sourceforge.net/lists/listinfo/poco-develop">poco-develop</a> lists for users of the POCO C++ Libraries.</p>
]]></content:encoded>
			<wfw:commentRss>http://developer.appinf.com/?feed=rss2&amp;p=228</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows CE Support Is Here</title>
		<link>http://developer.appinf.com/?p=220</link>
		<comments>http://developer.appinf.com/?p=220#comments</comments>
		<pubDate>Wed, 09 Jun 2010 15:57:39 +0000</pubDate>
		<dc:creator>guenter</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Release]]></category>
		<category><![CDATA[poco]]></category>
		<category><![CDATA[wince]]></category>

		<guid isPermaLink="false">http://developer.appinf.com/?p=220</guid>
		<description><![CDATA[The POCO C++ Libraries, as well as our commercial libraries and tools (Fast Infoset, Remoting, Open Service Platform), can now be used for Windows CE development as well. We have created a port of the POCO C++ Libraries to Windows CE 6 based on the current 1.3.7 branch. The port should work on Windows CE [...]]]></description>
			<content:encoded><![CDATA[<p>The POCO C++ Libraries, as well as our commercial libraries and tools (<a href="http://www.appinf.com/en/products/fis.html">Fast Infoset</a>, <a href="http://www.appinf.com/en/products/remoting.html">Remoting</a>, <a href="http://www.appinf.com/en/products/osp.html">Open Service Platform</a>), can now be used for Windows CE development as well. We have created a port of the POCO C++ Libraries to Windows CE 6 based on the current 1.3.7 branch. The port should work on Windows CE 5.x as well, however, testing has only been done on a Windows CE 6 device. There are a few minor restrictions to some POCO features, due to restrictions in the Windows CE operating system (e.g., no support for environment variables, no pipes), but apart from that, almost all libraries can be used.</p>
<p>Starting today, the Windows CE port is available to our <a href="http://www.appinf.com/en/services/index.html">support subscription</a> customers and sponsors of the POCO C++ Libraries project upon request. If you&#8217;re not yet a support customer, you can become one <a href="http://www.appinf.com/en/company/order.html">here</a>.</p>
<p>More information about the Windows CE port is available <a href="http://www.appinf.com/docs/poco-1.3.7-WinCE-20100609-doc/99200-WinCEPlatformNotes.html">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://developer.appinf.com/?feed=rss2&amp;p=220</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Release 2009.2p4 is Available</title>
		<link>http://developer.appinf.com/?p=214</link>
		<comments>http://developer.appinf.com/?p=214#comments</comments>
		<pubDate>Fri, 21 May 2010 11:23:05 +0000</pubDate>
		<dc:creator>guenter</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Fast Infoset]]></category>
		<category><![CDATA[OSP]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[Release]]></category>
		<category><![CDATA[Remoting]]></category>

		<guid isPermaLink="false">http://developer.appinf.com/?p=214</guid>
		<description><![CDATA[2009.2p4 is another patch release for 2009.2 that fixes bugs in Remoting, OSP and Fast Infoset. Also included is better iPhone support (new build configurations for iPhone and iPhoneSimulator). Upgrading is recommended. For a list of changes, please see the release notes for Fast Infoset, OSP and Remoting.
]]></description>
			<content:encoded><![CDATA[<p>2009.2p4 is another patch release for 2009.2 that fixes bugs in Remoting, OSP and Fast Infoset. Also included is better iPhone support (new build configurations for iPhone and iPhoneSimulator). Upgrading is recommended. For a list of changes, please see the release notes for <a href="http://www.appinf.com/docs/poco/99100-FastInfosetReleaseNotes.html" target="_blank">Fast Infoset</a>, <a href="http://www.appinf.com/docs/poco/99100-OSPReleaseNotes.html" target="_blank">OSP</a> and <a href="http://www.appinf.com/docs/poco/99100-RemotingReleaseNotes.html" target="_blank">Remoting</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://developer.appinf.com/?feed=rss2&amp;p=214</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Remoting on The iPhone</title>
		<link>http://developer.appinf.com/?p=176</link>
		<comments>http://developer.appinf.com/?p=176#comments</comments>
		<pubDate>Sun, 16 May 2010 11:18:05 +0000</pubDate>
		<dc:creator>guenter</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[How-To]]></category>
		<category><![CDATA[Remoting]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[poco]]></category>
		<category><![CDATA[remoting]]></category>

		<guid isPermaLink="false">http://developer.appinf.com/?p=176</guid>
		<description><![CDATA[Thanks to Apple&#8217;s excellent support of C++ on iPhone OS, Remoting is working fine on the iPhone, iPod Touch and iPad. The hardest thing when building a Remoting-based iPhone application is to integrate the necessary C++ libraries into the Xcode project. This article shows how to build an iPhone client that works with the Remoting-based [...]]]></description>
			<content:encoded><![CDATA[<p>Thanks to Apple&#8217;s excellent support of C++ on iPhone OS, Remoting is working fine on the iPhone, iPod Touch and iPad. The hardest thing when building a Remoting-based iPhone application is to integrate the necessary C++ libraries into the Xcode project. This article shows how to build an iPhone client that works with the Remoting-based Stock Quote Server sample shown in our first <a href="http://developer.appinf.com/?p=151">Remoting Screencast</a>.<br />
The first step is configuring and building the POCO C++ Libraries and Remoting framework for the iPhone (and, optionally, the iPhone Simulator). The POCO C++ Libraries and Remoting source code distribution come with a build configuration for building static libraries for the iPhone. Note that shared libraries are not supported on the iPhone, as there is no way to distribute them via the iPhone App Store. A standard POCO C++ Libraries distribution contains a few libraries that cannot be used on the iPhone, due to a lack of required third-party libraries. These are the Data/ODBC and Data/MySQL libraries. The Crypto and NetSSL_OpenSSL libraries require OpenSSL static libraries, which are not included in the standard iPhone SDK. If required, they can be built from the OpenSSL sources, though. On the iPhone, we do not need the Remoting code generator (it cannot run there anyway), so we leave it out as well. So we end up with the following steps to configure and build the libraries:</p>
<p><code> </code></p>
<p><code> </code></p>
<p><code> </code></p>
<p><code> </code></p>
<p><code> </code></p>
<p><code> </code></p>
<p><code></p>
<pre>$ cd poco-2009.2p4
$ ./configure --config=iPhone --no-samples --no-tests
--omit=CppParser,CodeGeneration,Remoting/RemoteGen,
Crypto,NetSSL_OpenSSL,Data/ODBC,Data/MySQL
$ make -s -j4</pre>
<p></code></p>
<p>If required, we can also build the libraries for the iPhone Simulator, by simply using the iPhoneSimulator build configuration instead of the iPhone build configuration. Note that the iPhoneSimulator build configuration is only available with release 2009.2p4 or later.</p>
<p><code> </code></p>
<p><code> </code></p>
<p><code> </code></p>
<p><code> </code></p>
<p><code> </code></p>
<p><code> </code></p>
<p><code></p>
<pre>$ ./configure --config=iPhoneSimulator --no-samples --no-tests
--omit=CppParser,CodeGeneration,Remoting/RemoteGen,
Crypto,NetSSL_OpenSSL,Data/ODBC,Data/MySQL
$ make -s -j4</pre>
<p></code></p>
<p>Now that the static libraries for the iPhone have been built, we can start building the iPhone application with Xcode. For this sample, we simply create a new iPhone application project based on the <em>View-based Application</em> template.<br />
After creating the template, the first step is to add the necessary POCO and Remoting libraries to the project. This can be simply done by dragging the libraries from the <em>poco-2009.2p4/lib/iPhoneOS/armv6</em> directory into the project&#8217;s <em>Frameworks</em> folder.</p>
<p><a href="http://developer.appinf.com/wp-content/uploads/2010/05/Libraries.png"><img class="alignnone size-full wp-image-186" title="Libraries" src="http://developer.appinf.com/wp-content/uploads/2010/05/Libraries.png" alt="Libraries" width="430" height="323" /></a></p>
<p>The next step is setting the header file and library search paths in the project&#8217;s settings.</p>
<p><a href="http://developer.appinf.com/wp-content/uploads/2010/05/HeaderPaths.png"><img class="alignnone size-full wp-image-196" title="HeaderPaths" src="http://developer.appinf.com/wp-content/uploads/2010/05/HeaderPaths.png" alt="HeaderPaths" width="387" height="297" /></a></p>
<p>For the library search paths, we want two separate search paths, one to be used when building for the iPhone, and another one to be used when building for the iPhone Simulator. This can be done by using build setting conditions in the project settings window.</p>
<p><a href="http://developer.appinf.com/wp-content/uploads/2010/05/LibraryPath1.png"><img class="alignnone size-full wp-image-187" title="LibraryPath1" src="http://developer.appinf.com/wp-content/uploads/2010/05/LibraryPath1.png" alt="LibraryPath1" width="233" height="86" /></a></p>
<p><a href="http://developer.appinf.com/wp-content/uploads/2010/05/LibraryPath2.png"><img class="alignnone size-full wp-image-188" title="LibraryPath2" src="http://developer.appinf.com/wp-content/uploads/2010/05/LibraryPath2.png" alt="LibraryPath2" width="388" height="182" /></a></p>
<p><a href="http://developer.appinf.com/wp-content/uploads/2010/05/LibraryPath3.png"><img class="alignnone size-full wp-image-189" title="LibraryPath3" src="http://developer.appinf.com/wp-content/uploads/2010/05/LibraryPath3.png" alt="LibraryPath3" width="388" height="298" /></a></p>
<p>After the search paths have been set up, we can start with the code. First, we need to register the Remoting Binary transport with the Remoting ORB. We do this in our application&#8217;s main() function. The main() function is implemented in file <em>main.m</em>. Since we&#8217;re going to mix C++ with Objective-C, we change the file&#8217;s extension to .M, which tells the compiler to assume Objective-C++ as source language.</p>
<p><a href="http://developer.appinf.com/wp-content/uploads/2010/05/main.png"><img class="alignnone size-full wp-image-190" title="main" src="http://developer.appinf.com/wp-content/uploads/2010/05/main.png" alt="main" width="430" height="323" /></a></p>
<p>Next, we add the Remoting client files generated by the Remoting code generator to the project. We simply use the files generated for the original client application &#8212; see the <a href="http://developer.appinf.com/?p=151">screencast</a> for how to generate these files. Simply drag the header and source files into the project, and let Xcode copy them into the project directory.</p>
<p><a href="http://developer.appinf.com/wp-content/uploads/2010/05/GeneratedFiles.png"><img class="alignnone size-full wp-image-184" title="GeneratedFiles" src="http://developer.appinf.com/wp-content/uploads/2010/05/GeneratedFiles.png" alt="GeneratedFiles" width="430" height="323" /></a></p>
<p>We can now work on the application&#8217;s user interface. The application has a text field for entering a stock symbol, a button for sending a quote request for the symbol to the Remoting server, and a label for displaying the result. We also add the necessary actions and outlets to the view controller.</p>
<p><a href="http://developer.appinf.com/wp-content/uploads/2010/05/IB.png"><img class="alignnone size-full wp-image-185" title="IB" src="http://developer.appinf.com/wp-content/uploads/2010/05/IB.png" alt="IB" width="419" height="274" /></a></p>
<p>The final thing to implement is the getQuote() method in the view controller. This is the method that will use Remoting to send the stock quote request to the server. The important thing in this method is to catch all POCO-based exceptions, to avoid C++ exceptions spilling into the Cocoa framework. The necessary conversions from std::string to NSString and vice-versa are straightforward.</p>
<p><a href="http://developer.appinf.com/wp-content/uploads/2010/05/getQuote.png"><img class="alignnone size-full wp-image-208" title="getQuote" src="http://developer.appinf.com/wp-content/uploads/2010/05/getQuote.png" alt="getQuote" width="430" height="323" /></a></p>
<p>What&#8217;s left to do is some code to handle the text field input, and a few other things typical for iPhone applications. Please note that the file extension for the source file containing the controller has been changed to .M, as the file contains Objective-C++ code.</p>
<p>The final application can be seen below.</p>
<p><a href="http://developer.appinf.com/wp-content/uploads/2010/05/App.png"><img class="alignnone size-full wp-image-183" title="App" src="http://developer.appinf.com/wp-content/uploads/2010/05/App.png" alt="App" width="320" height="480" /></a></p>
<p>The complete source code for this application can be downloaded <a href="http://www.appinf.com/download/iStockQuotesClient.zip">here</a>. The source code for the server and command-line client can be downloaded <a href="http://www.appinf.com/download/StockQuoteServer.zip">here</a> and <a href="http://www.appinf.com/download/StockQuoteClient.zip">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://developer.appinf.com/?feed=rss2&amp;p=176</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Release 2009.2p2 is Available</title>
		<link>http://developer.appinf.com/?p=172</link>
		<comments>http://developer.appinf.com/?p=172#comments</comments>
		<pubDate>Mon, 18 Jan 2010 09:23:56 +0000</pubDate>
		<dc:creator>guenter</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Products]]></category>

		<guid isPermaLink="false">http://developer.appinf.com/?p=172</guid>
		<description><![CDATA[2009.2p2 is another patch release for 2009.2 that fixes bugs in the Foundation, XML, Net, Crypto and NetSSL libraries. The release also includes performance improvements in the Fast Infoset library. OSP and Remoting have not been changed for this release. Upgrading is recommended.
]]></description>
			<content:encoded><![CDATA[<p>2009.2p2 is another patch release for 2009.2 that fixes bugs in the Foundation, XML, Net, Crypto and NetSSL libraries. The release also includes performance improvements in the Fast Infoset library. OSP and Remoting have not been changed for this release. Upgrading is recommended.</p>
]]></content:encoded>
			<wfw:commentRss>http://developer.appinf.com/?feed=rss2&amp;p=172</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Release 2009.2p1 is Available</title>
		<link>http://developer.appinf.com/?p=170</link>
		<comments>http://developer.appinf.com/?p=170#comments</comments>
		<pubDate>Tue, 22 Dec 2009 10:02:32 +0000</pubDate>
		<dc:creator>guenter</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Products]]></category>

		<guid isPermaLink="false">http://developer.appinf.com/?p=170</guid>
		<description><![CDATA[2009.2p1 is a patch release for 2009.2 that fixes a few bugs introduced in previous releases. Upgrading is recommended for everyone using the Crypto, NetSSL and XML libraries. There are no changes to OSP, Remoting and our other commercial libraries and tools.
]]></description>
			<content:encoded><![CDATA[<p>2009.2p1 is a patch release for 2009.2 that fixes a few bugs introduced in previous releases. Upgrading is recommended for everyone using the Crypto, NetSSL and XML libraries. There are no changes to OSP, Remoting and our other commercial libraries and tools.</p>
]]></content:encoded>
			<wfw:commentRss>http://developer.appinf.com/?feed=rss2&amp;p=170</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Release 2009.2 is Available!</title>
		<link>http://developer.appinf.com/?p=166</link>
		<comments>http://developer.appinf.com/?p=166#comments</comments>
		<pubDate>Tue, 24 Nov 2009 16:29:09 +0000</pubDate>
		<dc:creator>guenter</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Products]]></category>

		<guid isPermaLink="false">http://developer.appinf.com/?p=166</guid>
		<description><![CDATA[Release 2009.2 of our C++ Libraries and Tools is now available. We have updated our evaluation packages as well. 2009.2 is based on POCO C++ Libraries release 1.3.6 (which was also released today) and contains major improvements to our Remoting toolkit. Upgrading to this release is highly recommended.
]]></description>
			<content:encoded><![CDATA[<p>Release 2009.2 of our C++ Libraries and Tools is now available. We have updated our <a href="http://www.appinf.com/en/products/evaluate.html">evaluation packages</a> as well. 2009.2 is based on <a href="http://pocoproject.org">POCO C++ Libraries</a> release 1.3.6 (which was also released today) and contains major improvements to our <a href="http://developer.appinf.com/?p=138">Remoting</a> toolkit. Upgrading to this release is highly recommended.</p>
]]></content:encoded>
			<wfw:commentRss>http://developer.appinf.com/?feed=rss2&amp;p=166</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C++ SOAP Web Services With Remoting</title>
		<link>http://developer.appinf.com/?p=159</link>
		<comments>http://developer.appinf.com/?p=159#comments</comments>
		<pubDate>Fri, 13 Nov 2009 12:20:46 +0000</pubDate>
		<dc:creator>guenter</dc:creator>
				<category><![CDATA[Remoting Screencasts]]></category>
		<category><![CDATA[Screencasts]]></category>

		<guid isPermaLink="false">http://developer.appinf.com/?p=159</guid>
		<description><![CDATA[Our second screencast shows how to build a SOAP web service in C++ with Applied Informatics Remoting. The sample project shown in the screencast is based on the StockQuotes server from the Remoting in 15 Minutes webcast, so please watch that one first if you haven&#8217;t yet. Apple QuickTime or another player capable of playing [...]]]></description>
			<content:encoded><![CDATA[<p>Our <a title="SOAP Web Services With Remoting" href="http://dev.appinf.com/screencasts/remoting2.mov" target="_blank">second screencast</a> shows how to build a SOAP web service in C++ with Applied Informatics <a href="http://www.appinf.com/en/products/remoting.html">Remoting</a>. The sample project shown in the screencast is based on the StockQuotes server from the <a href="http://developer.appinf.com/?p=151">Remoting in 15 Minutes</a> webcast, so please watch that one first if you haven&#8217;t yet. <a href="http://www.apple.com/quicktime/">Apple QuickTime</a> or another player capable of playing H.264 video is required to watch the screencast.</p>
<p><a title="SOAP Web Services With Remoting" href="http://dev.appinf.com/screencasts/remoting2.mov" target="_blank"><br />
<img src="/screencasts/remoting2.png" width="416" height="266" border="0" alt="Screencast"><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://developer.appinf.com/?feed=rss2&amp;p=159</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://dev.appinf.com/screencasts/remoting2.mov" length="27069422" type="video/quicktime" />
		</item>
		<item>
		<title>Remoting in 15 Minutes</title>
		<link>http://developer.appinf.com/?p=151</link>
		<comments>http://developer.appinf.com/?p=151#comments</comments>
		<pubDate>Thu, 12 Nov 2009 16:58:54 +0000</pubDate>
		<dc:creator>guenter</dc:creator>
				<category><![CDATA[Remoting Screencasts]]></category>
		<category><![CDATA[Screencasts]]></category>

		<guid isPermaLink="false">http://developer.appinf.com/?p=151</guid>
		<description><![CDATA[Our first screencast shows how to build a simple distributed C++ application based on Applied Informatics Remoting. You&#8217;ll learn how to write the service class, how to configure and run the code generator, and how to write the client and server applications. All in just 15 minutes. Apple QuickTime or another player capable of playing [...]]]></description>
			<content:encoded><![CDATA[<p>Our <a title="Remoting in 15 Minutes" href="http://dev.appinf.com/screencasts/remoting1.mov" target="_blank">first screencast</a> shows how to build a simple distributed C++ application based on Applied Informatics <a href="http://www.appinf.com/en/products/remoting.html">Remoting</a>. You&#8217;ll learn how to write the service class, how to configure and run the code generator, and how to write the client and server applications. All in just 15 minutes. <a href="http://www.apple.com/quicktime/">Apple QuickTime</a> or another player capable of playing H.264 video  is required to watch the screencast.</p>
<p><a title="Remoting in 15 Minutes" href="http://dev.appinf.com/screencasts/remoting1.mov" target="_blank"><br />
<img src="/screencasts/remoting1.png" width="416" height="266" border="0" alt="Screencast"><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://developer.appinf.com/?feed=rss2&amp;p=151</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://dev.appinf.com/screencasts/remoting1.mov" length="61508294" type="video/quicktime" />
		</item>
		<item>
		<title>Where to Put The OSP CodeCache Directory</title>
		<link>http://developer.appinf.com/?p=140</link>
		<comments>http://developer.appinf.com/?p=140#comments</comments>
		<pubDate>Wed, 11 Nov 2009 16:06:02 +0000</pubDate>
		<dc:creator>guenter</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[OSP]]></category>
		<category><![CDATA[TechNote]]></category>

		<guid isPermaLink="false">http://developer.appinf.com/?p=140</guid>
		<description><![CDATA[One of the questions that comes up frequently when installing an OSP-based application on an end-user system is where to put the OSP codeCache. The OSP framework itself does not care where the codeCache is located, so you&#8217;re basically free to put it wherever you&#8217;d like. Of course, there are system-specific conventions and restrictions where [...]]]></description>
			<content:encoded><![CDATA[<p>One of the questions that comes up frequently when installing an OSP-based application on an end-user system is where to put the OSP codeCache. The OSP framework itself does not care where the codeCache is located, so you&#8217;re basically free to put it wherever you&#8217;d like. Of course, there are system-specific conventions and restrictions where such things like the codeCache should or can be stored. Also, the location will be different whether your application is a server application that runs in the background, or an interactive desktop application.<br />
For example, on Windows, the codeCache should go into the <em>AppData\Local\</em> directory within the user&#8217;s home directory for a desktop application. If the application runs as a Windows service, another directory might be more appropriate &#8212; in this case it might be possible to put the codeCache into the <em>Program Files</em> folder. On a Linux system, for an interactive application, the codeCache should go into a hidden application-specific directory within the user&#8217;s home directory, whereas on Mac OS X, <em>~/Library/Application Support/</em> is the right place. For a Unix server application, <em>/var/cache/</em> is a good place.<br />
To make configuring the codeCache location in the application&#8217;s configuration file easier, it is a good idea to define a configuration property in your application that makes the path to the directory containing the codeCache available. Following is some example code that shows how to do this for a Windows application.</p>
<p>Following is some sample code that determines an appropriate directory for holding the codeCache on Windows, Mac OS X and other Unix platforms, for desktop applications.</p>
<p><code>
<pre>std::string findApplicationDataDir(
    const std::string&#038; vendorName,
    const std::string&#038; applicationName)
{
#if POCO_OS != POCO_OS_WINDOWS_NT
    wchar_t wpath[MAX_PATH];
    HRESULT rc = SHGetFolderPathW(
        NULL,
        CSIDL_LOCAL_APPDATA | CSIDL_FLAG_CREATE,
        NULL, SHGFP_TYPE_CURRENT,
        wpath);
    if (SUCCEEDED(rc))
    {
        std::string localAppData;
        Poco::UnicodeConverter::toUTF8(wpath, localAppData);
        Poco::Path path(localAppData);
        path.makeDirectory();
        path.pushDirectory(vendorName);
        path.pushDirectory(applicationName);
        return path.toString();
    }
    else return config().getString("application.dir");
#elif POCO_OS != POCO_OS_MAC_OS_X
    Poco::Path path(Poco::Path::home());
    path.pushDirectory("Library");
    path.pushDirectory("Application Support");
    path.pushDirectory(vendorName);
    path.pushDirectory(applicationName);
    return path.toString();
#else
    Poco::Path path(Poco::Path::home());
    path.pushDirectory("." + vendorName);
    path.pushDirectory(applicationName);
    return path.toString();
#endif
}</pre>
<p></code></p>
<p>Note: for the above code to work on Windows, you&#8217;ll need to <em>#include &lt;shlobj.h&gt;</em>, as well as <em>#include &#8220;Poco/UnicodeConverter.h&#8221;</em> and link with <em>shell32.lib</em>.<br />
If you change the BundleServer&#8217;s <em>initialize()</em> function to look like below, then you can refer to that directory in your application configuration file.</p>
<p><code>
<pre>void initialize(Application&#038; self)
{
    std::string appDataDir(findApplicationDataDir(
            "MyCompany", "MyApplication"));
    config().setString("application.dataDir", appDataDir);
    loadConfiguration();
    Application::initialize(self);
}
</pre>
<p></code></p>
<p>This code determines the data directory and stores the path in the application.dataDir configuration property.<br />
In the application properties file, you can now specify:</p>
<p><code>
<pre>osp.codeCache = ${application.dataDir}codeCache
</pre>
<p></code></p>
]]></content:encoded>
			<wfw:commentRss>http://developer.appinf.com/?feed=rss2&amp;p=140</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
