<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Duncan Bowring&#039;s Weblog</title>
	<atom:link href="http://duncanbowring.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://duncanbowring.wordpress.com</link>
	<description>Technological musings.</description>
	<lastBuildDate>Wed, 25 Jan 2012 04:50:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='duncanbowring.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Duncan Bowring&#039;s Weblog</title>
		<link>http://duncanbowring.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://duncanbowring.wordpress.com/osd.xml" title="Duncan Bowring&#039;s Weblog" />
	<atom:link rel='hub' href='http://duncanbowring.wordpress.com/?pushpress=hub'/>
		<item>
		<title>2. Objective-C: Objects, Methods, Classes</title>
		<link>http://duncanbowring.wordpress.com/2012/01/22/2-objective-c-objects-methods-classes/</link>
		<comments>http://duncanbowring.wordpress.com/2012/01/22/2-objective-c-objects-methods-classes/#comments</comments>
		<pubDate>Sun, 22 Jan 2012 23:49:54 +0000</pubDate>
		<dc:creator>duncanbowring</dc:creator>
				<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Beginning Programming]]></category>

		<guid isPermaLink="false">https://duncanbowring.wordpress.com/?p=245</guid>
		<description><![CDATA[You own a phone. Your phone is an object. Your phone could be a Nokia, Samsung or Apple, etc. Your phone is an instance of a phone. Phone is a class from which your instance was created. Each time a new phone is made, a new instance from the class of phone is made and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duncanbowring.wordpress.com&amp;blog=8536969&amp;post=245&amp;subd=duncanbowring&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<ul>
<li>You own a phone.</li>
<li>Your phone is an object. </li>
<li>Your phone could be a Nokia, Samsung or Apple, etc. </li>
<li>Your phone is an instance of a phone. </li>
<li>Phone is a class from which your instance was created. </li>
<li>Each time a new phone is made, a new instance from the class of phone is made and each instance of the phone is an object. </li>
<li>Your phone may have different functionality and look; it may be plastic, metal, etc. </li>
<li>You perform certain functions with your phone; you make calls, you text, you write e-mail, etc.</li>
</ul>
<h3><strong><span style="text-decoration:underline;">Object, Method</span></strong></h3>
<p>Your Phone, Make a call<br />Your Phone, Send a text<br />Your Phone, send an e-mail</p>
<h2><strong><span style="text-decoration:underline;">Instances and Methods</span></strong></h2>
<ul>
<li>Unique occurrence of class is an instance, actions performed on instances are methods.</li>
<li>Some methods can be applied to the instance only or to the class itself. I.e. finding out how many phones Nokia makes would apply to the class but recharging the phone would be an instance method.</li>
<li>Each object contains information about initial characteristics on construction but also the current characteristics. These can change dynamically during the life of the object/instance.</li>
</ul>
<h4>Objective-C syntax for applying methods to classes and instance:</h4>
<pre>[ ClassOrInstance method ]; </pre>
<ol>
<li>Left bracket followed by name of class or instance of the class. </li>
<li>Followed by spaces then followed by the method you wish to perform. </li>
<li>It is finally closed with a right bracket and a terminating semicolon.</li>
</ol>
<p>When asking a class or instance to perform an action, you are sending it a <strong><em>message</em></strong>. The recipient of that message is called the <strong><em>receiver</em></strong>.<br />Within the outlined format:</p>
<pre>[ receiver message ]; </pre>
<p> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duncanbowring.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duncanbowring.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duncanbowring.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duncanbowring.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/duncanbowring.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/duncanbowring.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/duncanbowring.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/duncanbowring.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duncanbowring.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duncanbowring.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duncanbowring.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duncanbowring.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duncanbowring.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duncanbowring.wordpress.com/245/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duncanbowring.wordpress.com&amp;blog=8536969&amp;post=245&amp;subd=duncanbowring&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://duncanbowring.wordpress.com/2012/01/22/2-objective-c-objects-methods-classes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0437462a1534ad4d3960e9807bd1535d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">duncanbowring</media:title>
		</media:content>
	</item>
		<item>
		<title>1. Objective-C: First out the gate, building the first app</title>
		<link>http://duncanbowring.wordpress.com/2012/01/21/1-first-out-the-gate/</link>
		<comments>http://duncanbowring.wordpress.com/2012/01/21/1-first-out-the-gate/#comments</comments>
		<pubDate>Sun, 22 Jan 2012 03:51:23 +0000</pubDate>
		<dc:creator>duncanbowring</dc:creator>
				<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Beginning Programming]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://duncanbowring.wordpress.com/?p=216</guid>
		<description><![CDATA[Using X-Code. &#8220;Create a New Xcode Project&#8221; from startup screen (or File-&#62;New-&#62;New Project).Command Line Tool application type. Product name: prog1Company identifier: Whatever! Ensure that Foundation is select as the Type.Ensure Use Automatic Reference Counting is selected. Choose your location for your project. Left hand pane, main.m. Open this and use this as the home for the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duncanbowring.wordpress.com&amp;blog=8536969&amp;post=216&amp;subd=duncanbowring&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Using X-Code. <br />&#8220;Create a New Xcode Project&#8221; from startup screen (or File-&gt;New-&gt;New Project).<br />Command Line Tool application type.</p>
<p>Product name: prog1<br />Company identifier: Whatever!</p>
<p>Ensure that Foundation is select as the Type.<br />Ensure Use Automatic Reference Counting is selected.</p>
<p>Choose your location for your project.</p>
<p>Left hand pane, main.m. Open this and use this as the home for the first app.</p>
<ul>
<li>Extension; Meaning</li>
<li>.c; C language source</li>
<li>.cc, .cpp; C++ language source</li>
<li>.h; Header file</li>
<li>.m; Objective-C source</li>
<li>.mm; Objective-C++ source</li>
<li>.pl; Perl source</li>
<li>.o; Object (compiled) file</li>
</ul>
<p>The first application:</p>
<pre style="font:11px Menlo;color:#008516;margin:0;">//</pre>
<pre style="font:11px Menlo;color:#008516;margin:0;">//  main.m</pre>
<pre style="font:11px Menlo;color:#008516;margin:0;">//  prog1</pre>
<pre style="font:11px Menlo;color:#008516;margin:0;">//</pre>
<pre style="font:11px Menlo;color:#008516;margin:0;">//  Created by Duncan Bowring on 1/15/12.</pre>
<pre style="font:11px Menlo;color:#008516;margin:0;">//</pre>
<pre style="font:11px Menlo;min-height:13px;margin:0;"></pre>
<pre style="font:11px Menlo;color:#d0271c;margin:0;"><span style="color:#77482c;">#import </span>&lt;Foundation/Foundation.h&gt;</pre>
<pre style="font:11px Menlo;min-height:13px;margin:0;"></pre>
<pre style="font:11px Menlo;margin:0;"><span style="color:#bb23a0;">int</span> main (<span style="color:#bb23a0;">int</span> argc, <span style="color:#bb23a0;">const</span> <span style="color:#bb23a0;">char</span> * argv[])</pre>
<pre style="font:11px Menlo;margin:0;">{</pre>
<pre style="font:11px Menlo;min-height:13px;margin:0;"></pre>
<pre style="font:11px Menlo;color:#bb23a0;margin:0;"><span style="color:#000000;"> </span>@autoreleasepool<span style="color:#000000;"> {</span></pre>
<pre style="font:11px Menlo;min-height:13px;margin:0;"></pre>
<pre style="font:11px Menlo;color:#008516;margin:0;"><span style="color:#000000;"> </span>// insert code here...</pre>
<pre style="font:11px Menlo;color:#d0271c;margin:0;"><span style="color:#000000;"> </span><span style="color:#401a7f;">NSLog</span><span style="color:#000000;">(</span>@"The first app"<span style="color:#000000;">);</span></pre>
<pre style="font:11px Menlo;min-height:13px;margin:0;"></pre>
<pre style="font:11px Menlo;margin:0;">}</pre>
<pre style="font:11px Menlo;margin:0;"><span style="color:#bb23a0;">return</span> <span style="color:#3523d5;">0</span>;</pre>
<pre style="font:11px Menlo;margin:0;">}</pre>
<p>Under the View toolbar menu, middle icon is to show the window which will display the program output. Mouse tooltip should say &#8220;Hide or show the Debug area&#8221;. <br />Xcode should display this window whenever anything is written to the debug area. Here is the output from the first app:</p>
<p style="font:11px Menlo;margin:0;"><strong>2012-01-21 19:45:52.626 prog1[1355:707] The first app</strong></p>
<p style="font:11px Menlo;margin:0;"><strong><br /></strong></p>
<h3><strong><span style="text-decoration:underline;"><span style="color:#c36e0e;">Program Explanation</span></span></strong></h3>
<ul>
<li><span style="color:#c36e0e;">Objective-C the code is case sensitive.</span></li>
<li><span style="color:#c36e0e;">White space doesn&#8217;t matter; Objective-C does not care where on the line the code is entered.</span></li>
<li><span style="color:#c36e0e;">The first 6 lines of the program are comments. Comments are not executed by the compiler and are used to document the program for the person reading the source code. </span>
<ul>
<li><span style="color:#c36e0e;">Two ways of entering comments: </span>
<ul>
<li><span style="color:#c36e0e;">// (two slashes) which are for single line comments.</span></li>
<li><span style="color:#c36e0e;">/* to begin a comment block; this marks the beginning of the block. </span></li>
<li><span style="color:#c36e0e;">*/ will mark the end of the comment block and terminate the comment. </span>
<ul>
<li><span style="color:#c36e0e;">Handy if you want multi line comments. /* Comments cannot be nested.</span></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><span style="color:#c36e0e;">Next line of code tells compiler to find and process/include a file named Foundation.h. </span>
<ul>
<li><span style="color:#c36e0e;">This is a system file.</span></li>
<li><span style="color:#c36e0e;">Foundation.h contains information about other classes/functions that are used later in the program.</span></li>
</ul>
</li>
<li><span style="color:#c36e0e;">main is a special name indicating where the program is to begin execution. int specifies the type of value main returns. It is an integer.</span></li>
<li><span style="color:#c36e0e;">The contents of ( ) are for command line arguments which is part of the C language.</span></li>
<li><span style="color:#c36e0e;">The main routine&#8217;s program statements are contained within the braces { }</span></li>
<li><span style="color:#c36e0e;">@autoreleasepool </span>
<ul>
<li><span style="color:#c36e0e;">Anything executed within the { } is within a context called autorelease pool. The autorelease pool is a mechanism which allows system to manage the memory the application uses as it creates new objects.</span></li>
</ul>
</li>
<li><span style="color:#c36e0e;">The statement NSLog is called within the routine and has a string argument; @&#8221;The first app&#8221;. The @ sign and the &#8220;&#8221; makes this known as a constant NSString object. Without the @ you will be writing a constant C-style string. With it you are writing an NSString string object.</span></li>
<li><span style="color:#c36e0e;">NSLog routine is an Objective-C function that logs the arguments. Before it logs them it displays date and time the routine is executed, the program name and other data relating to process.</span></li>
<li><span style="color:#c36e0e;">All statements in Objective-C must be terminated with a semi-colon.</span></li>
<li><span style="color:#c36e0e;">Final code statement is return 0;. &#8211; This tells main upon termination to return a status value of 0. 0 as a return code means the program ended without error.</span></li>
</ul>
<p> </p>
<p> </p>
<h3><span style="text-decoration:underline;"><strong><span style="color:#0a7b4f;">Summary of the whole process:</span></strong></span></h3>
<ol>
<li><strong><span style="color:#0a7b4f;">Start XCode.</span></strong></li>
<li><strong><span style="color:#0a7b4f;">Create new project; File-&gt;New-&gt;New Project or Create New Xcode Project from startup screen.</span></strong></li>
<li><strong><span style="color:#0a7b4f;">Type of application, select Application-&gt;Command Line Tool.</span></strong></li>
<li><strong><span style="color:#0a7b4f;">Enter name of application and set type to Foundation. Ensure Use Automatic Reference Counting is checked.</span></strong></li>
<li><strong><span style="color:#0a7b4f;">Select name for project folder and choose directory to store project files in. </span></strong></li>
<li><strong><span style="color:#0a7b4f;">Left hand window, main.m. It may be hidden in the tree view. Click the file and type program into the edit window that appears in the rightmost pane.</span></strong></li>
<li><strong><span style="color:#0a7b4f;">In toolbar, select middle icon under View. This will show Debug window. This is where program output will show.</span></strong></li>
<li><strong><span style="color:#0a7b4f;">Build and run the application by clicking Run button in toolbar.</span></strong></li>
<li><strong><span style="color:#0a7b4f;">If any compiler errors show here, change the program code and run it again.</span></strong></li>
</ol>
<p> </p>
<h2><strong><span style="text-decoration:underline;">Displaying Variable Values</span></strong></h2>
<p>NSLog can also display the variable values and results of computations.</p>
<blockquote>
<p style="font:11px Menlo;margin:0;"><span style="color:#bb23a0;">int</span> main (<span style="color:#bb23a0;">int</span> argc, <span style="color:#bb23a0;">const</span> <span style="color:#bb23a0;">char</span> * argv[])</p>
<p style="font:11px Menlo;margin:0;">{</p>
<p style="font:11px Menlo;min-height:13px;margin:0;"> </p>
<p style="font:11px Menlo;color:#bb23a0;margin:0;"><span style="color:#000000;"> </span>@autoreleasepool<span style="color:#000000;"> {</span></p>
<p style="font:11px Menlo;min-height:13px;margin:0;"> </p>
<p style="font:11px Menlo;margin:0;"><span style="color:#bb23a0;">int</span> sum;</p>
<p style="font:11px Menlo;min-height:13px;margin:0;"> </p>
<p style="font:11px Menlo;margin:0;">sum = <span style="color:#3523d5;">10</span> + <span style="color:#3523d5;">15</span>;</p>
<p style="font:11px Menlo;color:#d0271c;margin:0;"><span style="color:#000000;"> </span><span style="color:#401a7f;">NSLog</span><span style="color:#000000;">(</span>@&#8221;The sum of 10 and 15 is %i&#8221;<span style="color:#000000;">, sum);</span></p>
<p style="font:11px Menlo;min-height:13px;margin:0;"> </p>
<p style="font:11px Menlo;margin:0;">}</p>
<p style="font:11px Menlo;margin:0;"><span style="color:#bb23a0;">return</span> <span style="color:#3523d5;">0</span>;</p>
<p style="font:11px Menlo;margin:0;">}</p>
</blockquote>
<p>Program Output:</p>
<blockquote>
<p style="font:11px Menlo;margin:0;"><strong>2012-01-21 20:25:32.175 prog1[2193:707] The sum of 10 and 15 is 25</strong></p>
<p style="font:11px Menlo;margin:0;">Program ended with exit code: 0</p>
</blockquote>
<p>int sum; declares the variable sum to be set up of type integer. All variables must be declared before they can be used.<br />Variable declaration tells the compiler how the program should use it. Type int can only hold integer values &#8211; basically a number without a remainder/floating point only.<br />The number 15 is added to the number 10 and the computational result is stored (as indicated by the = sign) in the variable called sum.<br />NSLog routine has two arguments enclosed within the ( ) brackets. These arguments are separated by the comma.<br />The first argument of NSLog is the string. We want to have the value of variable sum displayed after the constant string characters defined here. The % character is a special character that NSLog recognizes. The character immediately following the % sign specifies what type of value to display at this point in the string. The letter i signals that an integer is to be displayed. When NSLog finds %i within the first parameter (the string), it will display the value of the next argument to the routine. sum is the next argument to NSLog, the value is automatically displayed after the initial string of &#8220;The sum of 10 and 15 is &#8220;.</p>
<p>You can stack these. For example, you can have multiple %i %i %i %i within the first parameter (character string), and afterwards have , variable1, variable2, variable3, variable4 and it will display as such.</p>
<h2><strong><span style="text-decoration:underline;">Some other Programming Exercises:</span></strong></h2>
<h3>1. Write a program that displays the following text:</h3>
<pre>In Objective-C, lowercase letters are significant.main is where program execution begins.Open and closed braces enclose program statements in a routine.All program statements must be terminated by a semicolon. </pre>
<h4><strong><span style="text-decoration:underline;">Source Code:</span></strong></h4>
<blockquote>
<p style="font:11px Menlo;color:#d0271c;margin:0;"><span style="color:#77482c;">#import </span>&lt;Foundation/Foundation.h&gt;</p>
<p style="font:11px Menlo;min-height:13px;margin:0;"> </p>
<p style="font:11px Menlo;margin:0;"><span style="color:#bb23a0;">int</span> main (<span style="color:#bb23a0;">int</span> argc, <span style="color:#bb23a0;">const</span> <span style="color:#bb23a0;">char</span> * argv[])</p>
<p style="font:11px Menlo;margin:0;">{</p>
<p style="font:11px Menlo;min-height:13px;margin:0;"> </p>
<p style="font:11px Menlo;color:#bb23a0;margin:0;"><span style="color:#000000;"> </span>@autoreleasepool<span style="color:#000000;"> {</span></p>
<p style="font:11px Menlo;min-height:13px;margin:0;"> </p>
<p style="font:11px Menlo;color:#d0271c;margin:0;"><span style="color:#000000;"> </span><span style="color:#401a7f;">NSLog</span><span style="color:#000000;">(</span>@&#8221;In Objective-C, lowercase letters are significant.\nmain is where program execution begins.\nOpen and closed braces enclose program statements in a routine.\nAll program statements must be terminated by a semicolon.&#8221;<span style="color:#000000;">);</span></p>
<p style="font:11px Menlo;min-height:13px;margin:0;"> </p>
<p style="font:11px Menlo;margin:0;">}</p>
<p style="font:11px Menlo;margin:0;"><span style="color:#bb23a0;">return</span> <span style="color:#3523d5;">0</span>;</p>
<p style="font:11px Menlo;margin:0;">}</p>
</blockquote>
<h4><strong><span style="text-decoration:underline;">Code Output:</span></strong></h4>
<blockquote>
<p style="font:11px Menlo;margin:0;"><strong>In Objective-C, lowercase letters are significant.</strong></p>
<p style="font:11px Menlo;margin:0;"><strong>main is where program execution begins.</strong></p>
<p style="font:11px Menlo;margin:0;"><strong>Open and closed braces enclose program statements in a routine.</strong></p>
<p style="font:11px Menlo;margin:0;"><strong>All program statements must be terminated by a semicolon.</strong></p>
</blockquote>
<p> </p>
<h2>2. What output would you expect from the following program?</h2>
<h4 style="font-size:1em;"><strong><span style="text-decoration:underline;">Source Code:</span></strong></h4>
<blockquote>
<p style="font:11px Menlo;color:#d0271c;margin:0;"><span style="color:#77482c;">#import </span>&lt;Foundation/Foundation.h&gt;</p>
<p style="font:11px Menlo;min-height:13px;margin:0;"> </p>
<p style="font:11px Menlo;margin:0;"><span style="color:#bb23a0;">int</span> main (<span style="color:#bb23a0;">int</span> argc, <span style="color:#bb23a0;">const</span> <span style="color:#bb23a0;">char</span> * argv[])</p>
<p style="font:11px Menlo;margin:0;">{</p>
<p style="font:11px Menlo;min-height:13px;margin:0;"> </p>
<p style="font:11px Menlo;color:#bb23a0;margin:0;"><span style="color:#000000;"> </span>@autoreleasepool<span style="color:#000000;"> {</span></p>
<p style="font:11px Menlo;min-height:13px;margin:0;"> </p>
<p style="font:11px Menlo;margin:0;"><span style="color:#bb23a0;">int</span> i;</p>
<p style="font:11px Menlo;margin:0;">i = <span style="color:#3523d5;">1</span>;</p>
<p style="font:11px Menlo;color:#d0271c;margin:0;"><span style="color:#000000;"> </span><span style="color:#401a7f;">NSLog</span><span style="color:#000000;"> (</span>@&#8221;Testing&#8230;&#8221;<span style="color:#000000;">);</span></p>
<p style="font:11px Menlo;margin:0;"><span style="color:#401a7f;">NSLog</span> (<span style="color:#d0271c;">@&#8221;&#8230;.%i&#8221;</span>, i);</p>
<p style="font:11px Menlo;margin:0;"><span style="color:#401a7f;">NSLog</span> (<span style="color:#d0271c;">@&#8221;&#8230;%i&#8221;</span>, i + <span style="color:#3523d5;">1</span>);</p>
<p style="font:11px Menlo;margin:0;"><span style="color:#401a7f;">NSLog</span> (<span style="color:#d0271c;">@&#8221;..%i&#8221;</span>, i + <span style="color:#3523d5;">2</span>);</p>
<p style="font:11px Menlo;min-height:13px;margin:0;"> </p>
<p style="font:11px Menlo;margin:0;">}</p>
<p style="font:11px Menlo;margin:0;"><span style="color:#bb23a0;">return</span> <span style="color:#3523d5;">0</span>;</p>
<p style="font:11px Menlo;margin:0;">}</p>
</blockquote>
<h4 style="font-size:1em;"><strong><span style="text-decoration:underline;">Code Output:</span></strong></h4>
<blockquote>
<p style="font:11px Menlo;margin:0;"><strong>2012-01-21 21:45:24.596 prog1[2997:707] Testing&#8230;</strong></p>
<p style="font:11px Menlo;margin:0;"><strong>2012-01-21 21:45:24.597 prog1[2997:707] &#8230;.1</strong></p>
<p style="font:11px Menlo;margin:0;"><strong>2012-01-21 21:45:24.599 prog1[2997:707] &#8230;2</strong></p>
<p style="font:11px Menlo;margin:0;"><strong>2012-01-21 21:45:24.600 prog1[2997:707] ..3</strong></p>
</blockquote>
<h2 style="font-size:1.5em;">3. Write a program that subtracts the value 15 from 87 and displays the result, together with an appropriate message.</h2>
<h4 style="font-size:1em;"><strong><span style="text-decoration:underline;">Source Code:</span></strong></h4>
<blockquote>
<p style="font:11px Menlo;color:#d0271c;margin:0;"><span style="color:#77482c;">#import </span>&lt;Foundation/Foundation.h&gt;</p>
<p style="font:11px Menlo;min-height:13px;margin:0;"> </p>
<p style="font:11px Menlo;margin:0;"><span style="color:#bb23a0;">int</span> main (<span style="color:#bb23a0;">int</span> argc, <span style="color:#bb23a0;">const</span> <span style="color:#bb23a0;">char</span> * argv[])</p>
<p style="font:11px Menlo;margin:0;">{</p>
<p style="font:11px Menlo;min-height:13px;margin:0;"> </p>
<p style="font:11px Menlo;color:#bb23a0;margin:0;"><span style="color:#000000;"> </span>@autoreleasepool<span style="color:#000000;"> {</span></p>
<p style="font:11px Menlo;min-height:13px;margin:0;"> </p>
<p style="font:11px Menlo;margin:0;"><span style="color:#bb23a0;">int</span> sum;</p>
<p style="font:11px Menlo;margin:0;">sum = <span style="color:#3523d5;">87</span> &#8211; <span style="color:#3523d5;">15</span>;</p>
<p style="font:11px Menlo;min-height:13px;margin:0;"> </p>
<p style="font:11px Menlo;margin:0;"><span style="color:#401a7f;">NSLog</span> (<span style="color:#d0271c;">@&#8221;87 &#8211; 15 = %i&#8221;</span>,sum);</p>
<p style="font:11px Menlo;min-height:13px;margin:0;"> </p>
<p style="font:11px Menlo;margin:0;">}</p>
<p style="font:11px Menlo;margin:0;"><span style="color:#bb23a0;">return</span> <span style="color:#3523d5;">0</span>;</p>
<p style="font:11px Menlo;margin:0;">}</p>
</blockquote>
<h4 style="font-size:1em;"><strong><span style="text-decoration:underline;">Code Output:</span></strong></h4>
<blockquote>
<p style="font:11px Menlo;margin:0;"><strong>2012-01-21 21:49:14.405 prog1[3093:707] 87 &#8211; 15 = 72</strong></p>
</blockquote>
<p><strong><span style="text-decoration:underline;"><br /></span></strong></p>
<h2 style="font-size:1.5em;">4. Identify the syntactic errors in the following program. Then type in and run the corrected program to make sure you have identified all the mistakes:</h2>
<h4 style="font-size:1em;"><strong><span style="text-decoration:underline;">Source Code:</span></strong></h4>
<blockquote>
<p style="font:11px Menlo;color:#d0271c;margin:0;"><span style="color:#77482c;">#import </span>&lt;Foundation/Foundation.h&gt;</p>
<p style="font:11px Menlo;min-height:13px;margin:0;"> </p>
<p style="font:11px Menlo;margin:0;"><span style="color:#bb23a0;">int</span> main (<span style="color:#bb23a0;">int</span> argc, <span style="color:#bb23a0;">const</span> <span style="color:#bb23a0;">char</span> * argv[])</p>
<p style="font:11px Menlo;margin:0;">{</p>
<p style="font:11px Menlo;min-height:13px;margin:0;"> </p>
<p style="font:11px Menlo;color:#bb23a0;margin:0;"><span style="color:#000000;"> </span>@autoreleasepool<span style="color:#000000;"> {</span></p>
<p style="font:11px Menlo;min-height:13px;margin:0;"> </p>
<p style="font:11px Menlo;margin:0;">INT sum;</p>
<p style="font:11px Menlo;color:#008516;margin:0;"><span style="color:#000000;"> </span>/* COMPUTE RESULT //</p>
<p style="font:11px Menlo;color:#008516;margin:0;">sum = 25 + 37 &#8211; 19</p>
<p style="font:11px Menlo;color:#008516;margin:0;">/ DISPLAY RESULTS /</p>
<p style="font:11px Menlo;color:#008516;margin:0;">NSLog (@&#8217;The answer is %i&#8217; sum);</p>
<p style="font:11px Menlo;color:#008516;min-height:13px;margin:0;"> </p>
<p style="font:11px Menlo;color:#008516;margin:0;">}</p>
<p style="font:11px Menlo;color:#008516;margin:0;">return 0;</p>
<p style="font:11px Menlo;color:#008516;margin:0;">}</p>
</blockquote>
<h4 style="font-size:1em;"><strong><span style="text-decoration:underline;">Answer:</span></strong></h4>
<ul>
<li>Upper case INT; should be lower case.</li>
<li>No close to quote block; // instead of */</li>
<li>No semicolon ending statement after computation; sum</li>
<li>Invalid single line quote; / instead of //</li>
<li>No double quote for character string as first parameter of NSLog.</li>
</ul>
<h4 style="font-size:1em;"><strong><span style="text-decoration:underline;">Correct Source Code:</span></strong></h4>
<blockquote>
<p style="font:11px Menlo;color:#d0271c;margin:0;"><span style="color:#77482c;">#import </span>&lt;Foundation/Foundation.h&gt;</p>
<p style="font:11px Menlo;min-height:13px;margin:0;"> </p>
<p style="font:11px Menlo;margin:0;"><span style="color:#bb23a0;">int</span> main (<span style="color:#bb23a0;">int</span> argc, <span style="color:#bb23a0;">const</span> <span style="color:#bb23a0;">char</span> * argv[])</p>
<p style="font:11px Menlo;margin:0;">{</p>
<p style="font:11px Menlo;min-height:13px;margin:0;"> </p>
<p style="font:11px Menlo;color:#bb23a0;margin:0;"><span style="color:#000000;"> </span>@autoreleasepool<span style="color:#000000;"> {</span></p>
<p style="font:11px Menlo;min-height:13px;margin:0;"> </p>
<p style="font:11px Menlo;margin:0;"><span style="color:#bb23a0;">int</span> sum;</p>
<p style="font:11px Menlo;color:#008516;margin:0;"><span style="color:#000000;"> </span>/* COMPUTE RESULT */</p>
<p style="font:11px Menlo;margin:0;">sum = <span style="color:#3523d5;">25</span> + <span style="color:#3523d5;">37</span> &#8211; <span style="color:#3523d5;">19</span>;</p>
<p style="font:11px Menlo;color:#008516;margin:0;"><span style="color:#000000;"> </span>// DISPLAY RESULTS /</p>
<p style="font:11px Menlo;color:#d0271c;margin:0;"><span style="color:#000000;"> </span><span style="color:#401a7f;">NSLog</span><span style="color:#000000;"> (</span>@&#8221;The answer is %i&#8221;<span style="color:#000000;">, sum);</span></p>
<p style="font:11px Menlo;min-height:13px;margin:0;"> </p>
<p style="font:11px Menlo;margin:0;">}</p>
<p style="font:11px Menlo;margin:0;"><span style="color:#bb23a0;">return</span> <span style="color:#3523d5;">0</span>;</p>
<p style="font:11px Menlo;margin:0;">}</p>
</blockquote>
<h4 style="font-size:1em;"><strong><span style="text-decoration:underline;">Code Output:</span></strong></h4>
<blockquote>
<p style="font:11px Menlo;margin:0;"><strong>2012-01-21 21:55:31.080 prog1[3238:707] The answer is 43</strong></p>
</blockquote>
<p><strong><span style="text-decoration:underline;"><br /></span></strong></p>
<p>Onto 2.</p>
<p><strong><span style="text-decoration:underline;"><br /></span></strong></p>
<p><strong><span style="text-decoration:underline;"><br /></span></strong></p>
<ol> </ol>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duncanbowring.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duncanbowring.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duncanbowring.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duncanbowring.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/duncanbowring.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/duncanbowring.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/duncanbowring.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/duncanbowring.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duncanbowring.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duncanbowring.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duncanbowring.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duncanbowring.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duncanbowring.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duncanbowring.wordpress.com/216/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duncanbowring.wordpress.com&amp;blog=8536969&amp;post=216&amp;subd=duncanbowring&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://duncanbowring.wordpress.com/2012/01/21/1-first-out-the-gate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0437462a1534ad4d3960e9807bd1535d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">duncanbowring</media:title>
		</media:content>
	</item>
		<item>
		<title>Game Business &amp; Design</title>
		<link>http://duncanbowring.wordpress.com/2012/01/21/game-business-design/</link>
		<comments>http://duncanbowring.wordpress.com/2012/01/21/game-business-design/#comments</comments>
		<pubDate>Sun, 22 Jan 2012 03:02:48 +0000</pubDate>
		<dc:creator>duncanbowring</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Game Design]]></category>

		<guid isPermaLink="false">http://duncanbowring.wordpress.com/2012/01/21/game-business-design/</guid>
		<description><![CDATA[&#60; My Unfinished Notes and Thoughts &#62; Game Design; Storytelling; Marketing; Customer Experience Approach Define goals Create Ideas in meeting them Experiment and test Ideas Evaluate quality of Experiment Evaluate quality of Idea Evaluate quality of Goals Repeat Smallest amount to learn about player experience. 1-2 week sprints, more results in agile iteration. When playtest [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duncanbowring.wordpress.com&amp;blog=8536969&amp;post=214&amp;subd=duncanbowring&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&lt; My Unfinished Notes and Thoughts &gt;</p>
<p>Game Design; Storytelling; Marketing; Customer Experience</p>
<p><span style="text-decoration:underline;"><strong>Approach</strong></span></p>
<ul>
<li>Define goals</li>
<li>Create Ideas in meeting them</li>
<li>Experiment and test Ideas</li>
<li>Evaluate quality of Experiment</li>
<li>Evaluate quality of Idea</li>
<li>Evaluate quality of Goals</li>
<li>Repeat</li>
<li>Smallest amount to learn about player experience.</li>
<li>1-2 week sprints, more results in agile iteration.</li>
<li>When playtest observation isn&#8217;t lame, game is fun(?)</li>
</ul>
<p><strong><span style="text-decoration:underline;">Recipe</span></strong></p>
<ul>
<li>Attitude</li>
<li>People</li>
<li>Well-defined goals</li>
<li>Well-communicated goals</li>
<li>Well devised tests</li>
</ul>
<p><strong><span style="text-decoration:underline;">Defining Goals</span></strong></p>
<ul>
<li>Focus on the product.</li>
<li>See all goals through eyes of the customer.</li>
<li>Embrace constraints of time, technical and budget.</li>
<li>Define the majority customer market (and secondaries).</li>
</ul>
<p><strong><span style="text-decoration:underline;">Game Design</span></strong></p>
<ul>
<li>Fun game.</li>
<li>Ideas are the design.</li>
<li>Playtests are the experiments.</li>
<li>Evaluate designs through playtest results.</li>
<li>Some designs work, some do not. Iterate, no matter how late.</li>
<li>Prioritize and fix worst problems.</li>
<li>Use playtest to prioritize work for next sprint; iterate.</li>
<li>Do not discard game designs on theoretical problems.</li>
<li>Experiment in game.</li>
</ul>
<p><span style="text-decoration:underline;"><strong>Playtest</strong></span></p>
<ul>
<li>Quality Assurance</li>
<li>Balancing</li>
<li>Fun</li>
<li>??</li>
<li>May generate ideas of how to solve actual problems more effectively.</li>
</ul>
<p><span style="text-decoration:underline;"><strong>Playtest Analysis</strong></span></p>
<ul>
<li>Is sample group having experience that was designed?</li>
<li>Is the experience GREAT?</li>
<li>What affects customer experience?
<ul>
<li>AI.</li>
<li>Art.</li>
<li>Audio.</li>
<li>Informative, tutorial, in-UI help.</li>
<li>Pacing</li>
<li>Difficulty</li>
</ul>
</li>
</ul>
<p><strong><span style="text-decoration:underline;">Playtest Quality Assurance</span></strong></p>
<ul>
<li>Design people involved in playtest
<ul>
<li>Helps with playtest evaluation</li>
<li>Prioritizing</li>
<li>Motivation</li>
</ul>
</li>
<li>USE EXTERNAL PLAYTESTERS</li>
<li>Do not prompt or front-load playtesters</li>
<li>Capture thoughts during experience</li>
<li>Post-mortem Q&amp;A session unreliable</li>
<li>Read between the lines &#8211; what was NOT experienced.</li>
<li>No leading questions</li>
<li>Measure; Storytelling, Perception</li>
</ul>
<p><span style="text-decoration:underline;"><strong>Production</strong></span></p>
<ul>
<li>Solutions to playtest problems can also iterate</li>
<li>Solve problems in correct prioritized order</li>
<li>Do not oscillate.</li>
<li>Finish successful elements before iterating further.</li>
<li>Optimize most successful elements.</li>
<li>Measure risk, speed, cost.</li>
<li></li>
</ul>
<p><span style="text-decoration:underline;"><strong>Technical</strong></span></p>
<ul>
<li>Research</li>
<li>Online; auto updates, anti-cheat, communications/community.</li>
<li>Product delivery.</li>
</ul>
<p>Product success measured: Number of players vs time.</p>
<p>Thanks: Valve Corporation</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duncanbowring.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duncanbowring.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duncanbowring.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duncanbowring.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/duncanbowring.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/duncanbowring.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/duncanbowring.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/duncanbowring.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duncanbowring.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duncanbowring.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duncanbowring.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duncanbowring.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duncanbowring.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duncanbowring.wordpress.com/214/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duncanbowring.wordpress.com&amp;blog=8536969&amp;post=214&amp;subd=duncanbowring&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://duncanbowring.wordpress.com/2012/01/21/game-business-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0437462a1534ad4d3960e9807bd1535d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">duncanbowring</media:title>
		</media:content>
	</item>
		<item>
		<title>System Center &#8211; SCOM, SCCM &#8211; All change!</title>
		<link>http://duncanbowring.wordpress.com/2012/01/17/system-center-scom-sccm-all-change/</link>
		<comments>http://duncanbowring.wordpress.com/2012/01/17/system-center-scom-sccm-all-change/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 00:58:37 +0000</pubDate>
		<dc:creator>duncanbowring</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Licensing]]></category>
		<category><![CDATA[SCCM]]></category>
		<category><![CDATA[SCOM]]></category>
		<category><![CDATA[Software Assurance]]></category>
		<category><![CDATA[System Center]]></category>

		<guid isPermaLink="false">http://duncanbowring.wordpress.com/?p=100</guid>
		<description><![CDATA[Summary of Changes Individual point products will no longer be available (SCCM, SCOM, etc.). All System Center Products will only be available as one cohesive suite. Only Client Management Licenses and Server Management licenses will be available, the management servers themselves will no longer require licensing. Software Assurance will be required across all System Center [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duncanbowring.wordpress.com&amp;blog=8536969&amp;post=100&amp;subd=duncanbowring&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<ul>
<li><span style="text-decoration:underline;">Summary of Changes</span>
<ul>
<li>Individual point products will no longer be available (SCCM, SCOM, etc.). <strong>All System Center Products will only be available as one cohesive suite. </strong></li>
<li>Only Client Management Licenses and Server Management licenses will be available, the management servers themselves will no longer require licensing.</li>
<li>Software Assurance will be <strong>required</strong> across all System Center products.</li>
<li><strong>There will be price increases across the board, with the largest financial impact being to organizations that had planned to implement this technology a la carte. </strong></li>
<li><strong>These changes are going into effect on February 1<sup>st</sup>, after which you will no longer be able to buy under the old licensing model.</strong></li>
</ul>
</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duncanbowring.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duncanbowring.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duncanbowring.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duncanbowring.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/duncanbowring.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/duncanbowring.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/duncanbowring.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/duncanbowring.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duncanbowring.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duncanbowring.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duncanbowring.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duncanbowring.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duncanbowring.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duncanbowring.wordpress.com/100/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duncanbowring.wordpress.com&amp;blog=8536969&amp;post=100&amp;subd=duncanbowring&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://duncanbowring.wordpress.com/2012/01/17/system-center-scom-sccm-all-change/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0437462a1534ad4d3960e9807bd1535d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">duncanbowring</media:title>
		</media:content>
	</item>
		<item>
		<title>Games Studios Closed since 2006</title>
		<link>http://duncanbowring.wordpress.com/2012/01/17/games-studios-closed-since-2006/</link>
		<comments>http://duncanbowring.wordpress.com/2012/01/17/games-studios-closed-since-2006/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 21:30:36 +0000</pubDate>
		<dc:creator>duncanbowring</dc:creator>
				<category><![CDATA[Games]]></category>

		<guid isPermaLink="false">http://duncanbowring.wordpress.com/?p=97</guid>
		<description><![CDATA[3D Realms - 2009 7 Studios (Activision) - 2011 ACES Studio (Microsoft) - 2009 Action Forms - 2009 Ascaron - 2009 Atomic Elbow &#8211; 2008 Backbone Vancouver Beam Software/Melbourne House - 2010 BigBig (Sony) - 2012 Bizarre Creations (Activision) - 2010/2011 Black Rock (Disney) - 2011 Blue Fang Games - 2011 Blue Tongue (THQ) - 2011 BottleRocket - 2009 Brash Entertainment - 2008 Budcat (Activision) - 2010 Carbonated Games - [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duncanbowring.wordpress.com&amp;blog=8536969&amp;post=97&amp;subd=duncanbowring&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://gamasutra.com/php-bin/news_index.php?story=23518" target="_blank">3D Realms</a> - 2009<br />
<a href="http://www.gamasutra.com/view/news/32968/Report_7_Studios_To_Close_As_Activision_Realigns.php" target="_blank">7 Studios (Activision)</a> - 2011<br />
<a href="http://gamasutra.com/view/news/21981/Microsoft_Makes_Big_Cuts_At_Flight_Sim_Studio.php" target="_blank">ACES Studio (Microsoft)</a> - 2009<br />
<a href="http://en.wikipedia.org/wiki/Action_Forms" target="_blank">Action Forms</a> - 2009<br />
<a href="http://www.bluesnews.com/s/100703/ascaron-closed" target="_blank">Ascaron</a> - 2009<br />
Atomic Elbow &#8211; 2008<br />
Backbone Vancouver<br />
<a href="http://fr.wikipedia.org/wiki/Krome_Studios_Melbourne" target="_blank">Beam Software/Melbourne House</a> - 2010<br />
<a href="http://www.gamasutra.com/view/news/39569/Report_Sony_closes_Bigbig_Studios_restructures_Cambridge_branch.php" target="_blank">BigBig (Sony)</a> - 2012<br />
<a href="http://www.gamasutra.com/view/news/32519/Activision_Moves_To_Close_Bizarre_Creations.php" target="_blank">Bizarre Creations (Activision)</a> - 2010/2011<br />
<a href="http://gamasutra.com/view/news/36998/SplitSecond_Developer_Black_Rock_Closes.php" target="_blank">Black Rock (Disney)</a> - 2011<br />
<a href="http://www.gamasutra.com/view/news/35636/Zoo_Tycoon_Dev_Blue_Fang_Lays_Off_All_Development_Staff.php" target="_blank">Blue Fang Games </a>- 2011<br />
<a href="http://www.gamasutra.com/view/news/36472/THQ_Lays_Off_200_Employees_Closes_Australian_Studios.php" target="_blank">Blue Tongue (THQ)</a> - 2011<br />
<a href="http://www.gamasutra.com/view/news/25151/BottleRocket_Announces_Closure.php" target="_blank">BottleRocket</a> - 2009<br />
<a href="http://www.gamasutra.com/php-bin/news_index.php?story=21113" target="_blank">Brash Entertainment</a> - 2008<br />
<a href="http://www.gamasutra.com/view/news/31573/Activision_Closes_Guitar_Hero_Band_Hero_CoDev_Budcat.php" target="_blank">Budcat (Activision)</a> - 2010<br />
<a href="http://en.wikipedia.org/wiki/Carbonated_Games" target="_blank">Carbonated Games</a> - 2008<br />
<a href="http://www.gamasutra.com/view/news/18142/Castaway_Entertainment_Suspends_Operations.php" target="_blank">Castaway Entertainment</a> - 2008<br />
<a href="http://www.gamasutra.com/view/news/27329/Stargate_Worlds_Dev_Cheyenne_Mountain_To_File_For_Bankruptcy.php" target="_blank">Cheyenne Mountain</a> - 2010<br />
<a href="http://www.gamesindustry.biz/articles/nintendo-developer-cing-files-for-bankruptcy-report" target="_blank">Cing</a> - 2010<br />
<a href="http://www.gamasutra.com/php-bin/news_index.php?story=11229" target="_blank">Clover Studios (Capcom)</a> - 2006<br />
<a href="http://gamasutra.com/view/news/37220/Codemasters_To_Close_Bodycount_Studio_Focusing_On_Racing_Titles.php" target="_blank">Codemasters Guildford</a> - 2011<br />
<a href="http://www.gamasutra.com/view/news/34225/The_Shoot_Developer_Cohort_Studios_Closes_Down.php" target="_blank">Cohort Studios</a> - 2011<br />
<a href="http://www.gamasutra.com/php-bin/news_index.php?story=17089" target="_blank">Concrete Games</a> - 2008<br />
<a href="http://www.gamasutra.com/view/news/27018/Deep_Silver_Closes_Vienna_Studio.php" target="_blank">Deep Silver Vienna</a> - 2010<br />
<a href="http://www.gamasutra.com/php-bin/news_index.php?story=11153" target="_blank">DICE Canada</a> - 2006<br />
<a href="http://www.gamespot.com/news/6140687.html" target="_blank">Digital Anvil</a> - 2006<br />
<a href="http://www.gamasutra.com/php-bin/news_index.php?story=16138" target="_blank">EA Chicago</a> - 2007<br />
<a href="http://gamasutra.com/view/news/39515/Report_EA_shuts_down_Bright_Light.php" target="_blank">EA Bright Light</a> - 2011/2012<br />
<a href="http://www.gamespot.com/news/6165592.html" target="_blank">EA Japan</a> - 2007<br />
<a href="http://www.gamasutra.com/php-bin/news_index.php?story=21986" target="_blank">Eidos Manchester</a> - 2009<br />
<a href="http://www.vg247.com/2010/04/20/battlestations-dev-eidos-hungary-shut-down-last-year-says-square-enix/" target="_blank">Eidos Hungary</a> - 2010<br />
<a href="http://www.edge-online.com/news/empire-interactive-closing" target="_blank">Empire Interactive</a> - 2009<br />
<a href="http://www.gamasutra.com/php-bin/news_index.php?story=20167" target="_blank">Ensemble Studios (Microsoft)</a> - 2008<br />
<a href="http://www.gamasutra.com/php-bin/news_index.php?story=23625" target="_blank">Factor 5</a> - 2009<br />
<a href="http://www.gamasutra.com/php-bin/news_index.php?story=15486" target="_blank">FASA (Microsoft)</a> - 2007<br />
<a href="http://www.joystiq.com/2009/07/29/foundation-9-closes-fizz-factor-studio-cuts-back-at-double-heli/" target="_blank">Fizz Factor</a> - 2009<br />
<a href="http://www.eurogamer.net/articles/flagship-studios-closes-doors_2" target="_blank">Flagship Studios</a> - 2008<br />
<a href="http://www.siliconera.com/2010/08/04/summon-night-developers-flight-plan-close-shop/" target="_blank">Flight Plan</a> - 2010<br />
Frozen North Productions<br />
<a href="http://www.edge-online.com/news/fuzzyeyes-studio-closing-doors-report" target="_blank">FuzzyEyes</a> - 2009<br />
Gaia<br />
<a href="http://www.gamasutra.com/php-bin/news_index.php?story=23588" target="_blank">Gamelab</a> - 2009<br />
<a href="http://www.edge-online.com/news/report-game-republic-closed" target="_blank">Game Republic</a> - 2011<br />
<a href="http://www.gamasutra.com/view/news/24818/Swedish_Developer_GRIN_To_Close_Its_Doors.php" target="_blank">GRIN</a> - 2009<br />
<a href="http://en.wikipedia.org/wiki/Groove_Games" target="_blank">Groove Games</a> - 2010<br />
<a href="http://www.gamasutra.com/php-bin/news_index.php?story=20929" target="_blank">Helixe (THQ)</a> - 2008<br />
<a href="http://www.gamasutra.com/view/news/32909/Report_Hudson_US_Office_To_Close.php" target="_blank">Hudson Entertainment</a> - 2011<br />
<a href="http://www.gamasutra.com/php-bin/news_index.php?story=22046" target="_blank">Humannature Studio (Nexon Vancouver)</a> - 2009<br />
<a href="http://www.gamasutra.com/view/news/30661/Report_Deadly_Premonition_US_Publisher_Ignition_To_Close_London_Studio.php" target="_blank">Ignition London</a> - 2010<br />
<a href="http://www.gamasutra.com/view/news/31337/Report_Ignition_Florida_Shutters_As_Reich_Refocusing.php" target="_blank">Ignition Florida</a> - 2010<br />
<a href="http://en.wikipedia.org/wiki/Incognito_Entertainment" target="_blank">Incognito Entertainment (Sony)</a> - 2009<br />
<a href="http://www.gamasutra.com/php-bin/news_index.php?story=9110" target="_blank">Indie Built (Take-Two)</a> - 2006<br />
<a href="http://www.gamasutra.com/php-bin/news_index.php?story=17661" target="_blank">Iron Lore</a> - 2008<br />
<a href="http://www.joystiq.com/2011/08/09/thq-fires-200-shifts-development-focus-away-from-kids-and-licen/" target="_blank">Juice Games (THQ)</a> - 2011<br />
<a href="http://www.gamasutra.com/view/news/35190/THQ_Shutters_UK_Studio_Homefront_Developer_Kaos.php" target="_blank">Kaos Studios (THQ)</a> - 2011<br />
<a href="http://tinycartridge.com/post/4805455698/lux-pain-developer-killaware-bankrupt" target="_blank">Killaware</a> - 2011<br />
<a href="http://www.killspace.net/" target="_blank">Killspace Entertainment</a> - 2011<br />
<a href="http://www.gamasutra.com/view/news/37915/Happy_Feet_2_Dev_KMM_Brisbane_Shuts_Down.php" target="_blank">KMM Brisbane</a> - 2011<br />
<a href="http://www.gamasutra.com/view/news/31003/Report_Australias_Krome_Studios_In_Trouble_Shedding_Further_Staff.php" target="_blank">Krome Studios (might still be operating on skeleton crew)</a> - 2010<br />
<a href="http://www.gamasutra.com/view/news/27098/Kuju_Manila_To_Close_As_Matahari_Also_Shutters_Indonesian_Arm.php" target="_blank">Kuju Manila</a> - 2009<br />
<a href="http://kotaku.com/5278300/kuju-entertainment-closes-its-dedicated-unreal-engine-branch" target="_blank">Kuju Chemistry</a> - 2009<br />
<a href="http://en.wikipedia.org/wiki/Kush_Games" target="_blank">Kush Games</a> - 2008<br />
<a href="http://en.wikipedia.org/wiki/Locomotive_Games" target="_blank">Locomotive Games (THQ)</a> - 2010<br />
Loose Cannon Studios &#8211; 2010<br />
<a href="http://gamasutra.com/view/news/27213/Layoffs_Hit_Activision_Studios_Radical_Luxoflux_Neversoft_Affected.php" target="_blank">Luxoflux</a> - 2010<br />
<a href="http://www.shacknews.com/article/55703/thq-closes-five-studios-updated" target="_blank">Mass Media (THQ)</a> - 2008<br />
<a href="http://www.strategyinformer.com/news/8152/cities-xl-developer-monte-cristo-games-closes-doors-this-week" target="_blank">Monte Cristo</a> - 2010<br />
<a href="http://www.gamasutra.com/view/news/39562/Report_Monumental_lays_off_staff_goes_into_administration.php" target="_blank">Monumental Games</a> - 2012<br />
<a href="http://www.gamasutra.com/php-bin/news_index.php?story=19790" target="_blank">Midway Austin</a> - 2009<br />
<a href="http://www.gamasutra.com/view/news/24426/Midway_Confirms_Newcastle_Studio_Shutdown_Necessary_Force_IP_Ownership.php" target="_blank">Midway Newcastle</a> - 2009<br />
<a href="http://www.escapistmagazine.com/news/view/107531-MTV-Games-Closes-Its-Doors" target="_blank">MTV Games</a> - 2011<br />
<a href="http://www.gamasutra.com/view/news/39463/Cashstrapped_Firefly_MMO_developer_Multiverse_closes.php" target="_blank">Multiverse</a> - 2012<br />
<a href="http://www.develop-online.net/news/37121/NetDevil-on-the-brink-say-laid-off-staff" target="_blank">NetDevil</a> - 2011<br />
<a href="http://www.siliconera.com/2010/07/30/izuna-developers-unemployed/" target="_blank">Ninja Studio</a> - 2009<br />
<a href="http://en.wikipedia.org/wiki/Nihon_Telenet" target="_blank">Nihon Telenet</a> - 2007<br />
<a href="http://www.gamasutra.com/view/news/30967/The_Ship_Dev_All_But_Dissolved_Just_Prior_To_Release_of_Next_Game.php" target="_blank">Outerlight</a> - 2010<br />
<a href="http://en.wikipedia.org/wiki/PAM_Development" target="_blank">PAM Development (Take-Two)</a> - 2008<br />
<a href="http://www.gamasutra.com/view/news/26120/EA_Memo_Confirms_Pandemic_Consolidation_Van_Caneghem_Hire.php" target="_blank">Pandemic Australia (EA)</a> - 2009<br />
<a href="http://www.gamasutra.com/view/news/26120/EA_Memo_Confirms_Pandemic_Consolidation_Van_Caneghem_Hire.php" target="_blank">Pandemic LA (EA)</a> - 2009<br />
<a href="http://www.gamasutra.com/php-bin/news_index.php?story=20929" target="_blank">Paradigm Entertainment</a> - 2008<br />
<a href="http://www.gamasutra.com/view/news/33867/Report_Pi_Studios_Closes_ExEmployees_Form_Category_6_Studios.php" target="_blank">Pi Studios</a> - 2011<br />
<a href="http://news.bigdownload.com/2008/07/14/pivotal-games-closes/" target="_blank">Pivotal Games (Take-Two)</a> - 2008<br />
<a href="http://www.gamasutra.com/view/news/32536/Disney_Closes_Propaganda_Games_Following_Tron_Project_Completion.php" target="_blank">Propaganda Games (Disney)</a> - 2011<br />
<a href="http://www.gamasutra.com/view/news/18143/Report_Full_Auto_Developer_Pseudo_Interactive_To_Close.php" target="_blank">Pseudo Interactive</a> - 2008<br />
<a href="http://www.joystiq.com/2011/08/09/thq-fires-200-shifts-development-focus-away-from-kids-and-licen/" target="_blank">Rainbow Studios (THQ)</a> - 2011<br />
<a href="http://www.develop-online.net/news/29964/Razorworks-to-close" target="_blank">Razorworks</a> - 2009<br />
<a href="http://www.gamasutra.com/view/news/29961/Crackdown_House_Realtime_Worlds_Goes_Into_Administration.php" target="_blank">Realtime Worlds</a> - 2010<br />
<a href="http://www.gamasutra.com/view/news/27728/Rebellion_Confirms_HQ_Layoffs_Derby_Studio_Closure.php" target="_blank">Rebellion Derby</a> - 2010<br />
<a href="http://www.edge-online.com/news/activision-closes-red-octane" target="_blank">Red Octane</a> - 2010<br />
Redtribe &#8211; 2008<br />
<a href="http://www.gamasutra.com/php-bin/news_index.php?story=9276" target="_blank">Rockstar Vienna</a> - 2006<br />
<a href="http://www.gamasutra.com/php-bin/news_index.php?story=20929" target="_blank">Sandblast Games (THQ)</a> - 2008<br />
<a href="http://www.gamasutra.com/view/news/27940/Sega_Confirms_Closure_Of_Internal_Iron_Man_Golden_Axe_Dev.php" target="_blank">SEGA San Francisco</a> - 2010<br />
<a href="http://en.wikipedia.org/wiki/Sensory_Sweep_Studios" target="_blank">Sensory Sweep Studios</a> - 2010<br />
<a href="http://www.gamasutra.com/php-bin/news_index.php?story=21943" target="_blank">Seta</a> - 2008<br />
<a href="http://www.gamasutra.com/php-bin/news_index.php?story=25573" target="_blank">Shaba Games (Activision)</a> - 2009<br />
SideCar Studios &#8211; 2007<br />
Sierra Online &#8211; 2008<br />
<a href="http://en.wikipedia.org/wiki/SnapDragon_Games" target="_blank">Snapdragon Games</a> - 2009<br />
<a href="http://www.gamasutra.com/view/news/33836/SOE_Hit_With_205_Layoffs_Three_Studio_Closures_Agency_Cancelled.php" target="_blank">SOE Denver</a> - 2011<br />
<a href="http://www.gamasutra.com/view/news/33836/SOE_Hit_With_205_Layoffs_Three_Studio_Closures_Agency_Cancelled.php" target="_blank">SOE Seattle</a> - 2011<br />
<a href="http://www.gamasutra.com/view/news/33836/SOE_Hit_With_205_Layoffs_Three_Studio_Closures_Agency_Cancelled.php" target="_blank">SOE Tuscon</a> - 2011<br />
<a href="http://www.gamasutra.com/php-bin/news_index.php?story=18087" target="_blank">Stormfront Studios</a> - 2008<br />
<a href="http://www.odt.co.nz/news/business/52387/straylight-studios-liquidation" target="_blank">Straylight Studios</a> - 2009<br />
<a href="http://gamasutra.com/view/news/37700/LA_Noire_Dev_Team_Bondi_To_Officially_Shutter.php" target="_blank">Team Bondi</a> - 2011<br />
<a href="http://www.gamasutra.com/view/news/33021/Longtime_UK_Developer_The_Code_Monkeys_Shutting_Down.php" target="_blank">The Code Monkeys</a> - 2011<br />
<a href="http://www.gamasutra.com/view/news/35683/Fat_Princess_Developers_Form_New_Studio_Following_Closure.php" target="_blank">Titan Studios</a> - 2009<br />
<a href="http://www.gamasutra.com/view/news/36472/THQ_Lays_Off_200_Employees_Closes_Australian_Studios.php" target="_blank">THQ Studio Australia</a> - 2009<br />
<a href="http://gamepolitics.com/2011/06/13/thq-closing-kaos-and-digital-warrington-studios" target="_blank">THQ Digital Warrington</a> - 2009<br />
<a href="http://www.gamasutra.com/view/news/25736/Transmission_Games_Closes_Doors_Lays_Off_Staff.php" target="_blank">Transmission Games/IR Gurus</a> - 2009<br />
<a href="http://www.joystiq.com/2010/09/30/ubisoft-confirms-closure-of-brazil-studios-within-the-calendar-y/" target="_blank">Ubisoft Brazil</a> - 2010<br />
<a href="http://www.gamesindustry.biz/articles/activision-confirms-underground-closure" target="_blank">Underground Development/Z-Axis (Activision)</a> - 2010<br />
<a href="http://www.gamasutra.com/view/news/27483/THQ_Liquidates_Finnish_Mobile_Games_Studio_Universomo.php" target="_blank">Universomo (THQ)</a> - 2009<br />
<a href="http://www.gamasutra.com/php-bin/news_index.php?story=19286" target="_blank">Venom Games (Take Two)</a> - 2008<br />
<a href="http://www.gamasutra.com/php-bin/news_index.php?story=14236" target="_blank">Vicarious Visions California</a> - 2007<br />
<a href="http://www.gamasutra.com/view/news/37340/EA_Confirms_Closure_of_Dead_Space_Studio_Visceral_Melbourne.php" target="_blank">Visceral Australia (EA)</a> - 2011<br />
<a href="http://www.gamasutra.com/php-bin/news_index.php?story=8721" target="_blank">Wolfpack Studios</a> - 2006<br />
<a href="http://www.siliconera.com/2010/11/04/yukes-company-of-america-is-no-more/" target="_blank">Yuke’s Company Of America</a> - 2010<br />
<a href="http://www.edge-online.com/news/kuju-merges-zoe-mode-studios" target="_blank">Zoe Mode London </a>- 2009<br />
Zoonami &#8211; 2011</p>
<p>Reference: <a href="http://www.neogaf.com/forum/showthread.php?t=459131">http://www.neogaf.com/forum/showthread.php?t=459131</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duncanbowring.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duncanbowring.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duncanbowring.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duncanbowring.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/duncanbowring.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/duncanbowring.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/duncanbowring.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/duncanbowring.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duncanbowring.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duncanbowring.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duncanbowring.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duncanbowring.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duncanbowring.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duncanbowring.wordpress.com/97/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duncanbowring.wordpress.com&amp;blog=8536969&amp;post=97&amp;subd=duncanbowring&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://duncanbowring.wordpress.com/2012/01/17/games-studios-closed-since-2006/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0437462a1534ad4d3960e9807bd1535d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">duncanbowring</media:title>
		</media:content>
	</item>
		<item>
		<title>Game Design Document (GDD)</title>
		<link>http://duncanbowring.wordpress.com/2012/01/17/game-design-document-gdd/</link>
		<comments>http://duncanbowring.wordpress.com/2012/01/17/game-design-document-gdd/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 10:06:27 +0000</pubDate>
		<dc:creator>duncanbowring</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[game design document]]></category>
		<category><![CDATA[game mechanics]]></category>
		<category><![CDATA[story bible]]></category>

		<guid isPermaLink="false">http://duncanbowring.wordpress.com/?p=93</guid>
		<description><![CDATA[I found another template which is from Chris Taylor: http://www.runawaystudios.com/articles/ctaylordesigntemplate.doc Pre-Production Milestones • Pitch • Concept • Game Design Document • Prototype Pre-Production Deliverables • As part of the Concept Milestone o High concept o Game&#8217;s genre o Gameplay description o Features o Setting o Story o Target audience o Hardware platforms o Estimated schedule [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duncanbowring.wordpress.com&amp;blog=8536969&amp;post=93&amp;subd=duncanbowring&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I found another template which is from Chris Taylor:</p>
<p>http://www.runawaystudios.com/articles/ctaylordesigntemplate.doc</p>
<p>Pre-Production Milestones<br />
• Pitch<br />
• Concept<br />
• Game Design Document<br />
• Prototype</p>
<p>Pre-Production Deliverables<br />
• As part of the Concept Milestone<br />
o High concept<br />
o Game&#8217;s genre<br />
o Gameplay description<br />
o Features<br />
o Setting<br />
o Story<br />
o Target audience<br />
o Hardware platforms<br />
o Estimated schedule<br />
o Marketing analysis<br />
o Team requirements<br />
o Risk analysis<br />
o Infrastructure Requirements<br />
o Cost schedule / P&amp;L / Budget</p>
<p>Production Milestones<br />
o First Playable / Finding the fun<br />
o Vertical Slices<br />
o Alpha<br />
o Feature Lock<br />
o Code Freeze<br />
o Closed Beta<br />
o Open Beta<br />
o Live</p>
<p>Production Deliverables<br />
• Game Design Document<br />
o Table of Contents<br />
o Introduction/Overview<br />
o Game Mechanics<br />
o Artificial Intelligence<br />
o Game Elements<br />
o Story Overview<br />
o Game Progression<br />
o System Menus<br />
• Story Bible<br />
o Story outline is in design document, the story bible fleshes out the story<br />
o Plot and Story Flow<br />
o Detailed Story Flow<br />
o Detailed Characterizations<br />
o Backstory<br />
• Scripts<br />
o The Dialog that occurs in the game<br />
o Tree structure that controls dialog<br />
• Art Bible<br />
o Concept sketches<br />
o Resources for artist<br />
o Look and feel<br />
o Art styles<br />
o Technical guidelines<br />
• Technical Design Document<br />
o Sister specification to Art Bible and Game Design Document<br />
o Discusses how functionality will be implemented.<br />
o May include overall code structure, major classes, rendering architecture, AI design, etc.<br />
o May contain pseudocode</p>
<p>Post Production Areas<br />
• Maintenance<br />
• Updates<br />
• Support</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duncanbowring.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duncanbowring.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duncanbowring.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duncanbowring.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/duncanbowring.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/duncanbowring.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/duncanbowring.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/duncanbowring.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duncanbowring.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duncanbowring.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duncanbowring.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duncanbowring.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duncanbowring.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duncanbowring.wordpress.com/93/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duncanbowring.wordpress.com&amp;blog=8536969&amp;post=93&amp;subd=duncanbowring&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://duncanbowring.wordpress.com/2012/01/17/game-design-document-gdd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0437462a1534ad4d3960e9807bd1535d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">duncanbowring</media:title>
		</media:content>
	</item>
		<item>
		<title>MySQL</title>
		<link>http://duncanbowring.wordpress.com/2010/10/26/mysql/</link>
		<comments>http://duncanbowring.wordpress.com/2010/10/26/mysql/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 08:13:15 +0000</pubDate>
		<dc:creator>duncanbowring</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://duncanbowring.wordpress.com/?p=71</guid>
		<description><![CDATA[Work in Progress The basic MySQL component architecture: ﻿﻿ Locking Read locks on a resource are shared, mutually nonblocking. Many clients can read a resource simultaneously and don&#8217;t interfere with each other. Write locks are exclusive &#8211; they block read and write locks. Each lock operation has an overhead. Lock management is important in storage [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duncanbowring.wordpress.com&amp;blog=8536969&amp;post=71&amp;subd=duncanbowring&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong><span style="color:#ff0000;">Work in Progress</span></strong></p>
<p>The basic MySQL component architecture:</p>
<p>﻿﻿<a href="http://duncanbowring.files.wordpress.com/2010/10/mysql_architecture.png"><img class="alignleft size-full wp-image-79" title="MySQL_Architecture" src="http://duncanbowring.files.wordpress.com/2010/10/mysql_architecture.png?w=630" alt=""   /></a></p>
<p><strong><span style="text-decoration:underline;">Locking</span></strong></p>
<p>Read locks on a resource are shared, mutually nonblocking. Many clients can read a resource simultaneously and don&#8217;t interfere with each other.<br />
Write locks are exclusive &#8211; they block read and write locks.</p>
<p>Each lock operation has an overhead. Lock management is important in storage engine design.</p>
<p><span style="text-decoration:underline;">Table Locks</span></p>
<p>Basic and with the lowest overhead. This locks the whole table. If a client wishes to write to a table (insert, delete, update), it obtains a write lock. This keeps all other read and write operations in a queue. When there are no write locks, clients can set read locks and, as aforementioned, don&#8217;t conflict with other client read locks. READ LOCAL table locks allow concurrent write operations of some sorts.</p>
<p>Write locks have a higher priority than read locks; a request for a write lock will jump to the front of the lock queue if read locks are already queued. ALTER TABLE will always use a table lock, regardless of which storage engine is in place.</p>
<p><span style="text-decoration:underline;">Row Locks</span></p>
<p>This type of lock offers the best concurrency but carries the highest overhead. Row-level locks are available within InnoDB and Falcon storage engines, but not exclusive to. Row locks are part of the storage engine, not the server. The server is unaware of storage engine locks and each storage engine implements locks in different ways.</p>
<p><span style="text-decoration:underline;">Deadlocks</span></p>
<p>When multiple transactions are holding or requesting locks on the same resources creating a cycle of dependencies. Deadlocks generally occur if transactions try to lock resources in a different order. InnoDB can detect and error return on a circular dependency thus preventing what appears to be slow query times.</p>
<p><span style="text-decoration:underline;">Transaction Logging</span></p>
<p>Instead of constantly updating the disk tables on each change request, the storage engines change the table data in RAM. It will then write the change records to the transaction log, this makes for more sequential disk IO rather than completely random and thus decreases seek and access time to the disk hardware. Disk writes are usually twice as expensive but if there&#8217;s a crash, the transaction log is usually complete and will provide a recovery path.</p>
<p><span style="text-decoration:underline;"><strong>Transactions</strong></span></p>
<p>A transaction is a group of SQL queries that are treated as a single unit of work. If one command fails, none of them are run.</p>
<p><span style="text-decoration:underline;"><strong>The Storage Engines</strong></span></p>
<p><span style="text-decoration:underline;">MyISAM<br />
</span>This is MySQL&#8217;s default storage engine. It provides a good compromise between performance and offers full-text indexing, compression, GIS etc. It does NOT support transactions or row-level locks.<br />
MyISAM typically stores each table in two files: data and index. The format is platform independent and is therefore portable between system architectures.<br />
MyISAM has entire table locking. Clients obtain read locks on all tables required for read actions. Writes obtain exclusive write locks. It is possible to insert new rows into the table while select queries are running, though.</p>
<p>CHECK TABLE and REPAIR TABLE commands can manually check/repair table errors. Myisamchk command-line tools can do the same offline.<br />
Indexing is possible on the first 500 characters of TEXT and BLOB columns in these tables. Full text indexing is supported which will allow complicated search options straight in the database.<br />
Delayed Key Writes &#8211; tables marked with DELAY_KEY_WRITE create option don&#8217;t write changing index data to disk after each query. As mentioned before, this will store changes in the in-memory key buffer and flush blocks to disk once the buffer is full or the table is closed.<br />
This can increase performance on heavily used tables that have a lot of write operations. Indexes will usually be corrupted after a server crash and need repaired. Scripting with myisamchk or the other commands can satisfy this requirement.</p>
<p><span style="text-decoration:underline;"> MyISAM Merge<br />
</span>The combination of multiple MyISAM tables into one virtual table.</p>
<p><span style="text-decoration:underline;">InnoDB<br />
</span>The most popular engine for transactional storage. Performance and automatic crash recovery make it a popular choice for most needs.</p>
<p>InnoDB stores data in aseries of datafiles known as a tablespace. InnoDB manages this tablespace itself and InnoDB can store each table data and indexes into separate files, it can also use raw disk partitions for building tablespace.</p>
<p>InnoDB achieves a high level of concurrency and implements all four SQL isolation levels.<br />
InnoDB provides fast primary key lookups but non primary indexes contain the primary column, so it&#8217;s a good idea to keep the primary key lengths short. InnoDB does not compress indexes.</p>
<p>** Scalability issues with concurrency tuning ***</p>
<p>InnoDB includes predictive read-ahead data fetching from disk, an adaptive has that builds hash indexes in memory for fast lookups and an insert buffer.</p>
<p><span style="text-decoration:underline;">Memory Engine</span></p>
<p>HEAP tables can be used for fast data access to static data. The can be 10-100x faster than MyISAM and all data is stored in RAM thus eliminating disk IO. The data is lost between server restarts even though the table structure is kept.</p>
<p>According to some research, good uses for memory tables:</p>
<ul>
<li>Lookup or mapping tables such as a table that maps postal codes to state names.</li>
<li>Caching the results of periodically aggregated data</li>
<li>Intermediate results when analyzing data</li>
</ul>
<p>Memory tables are supportive of hash indexing which can be really quick.<br />
Memory tables use table locking therefore have a low write concurrency. They are unsupportive of TEXT or BLOB column types and only support fixed-size rows so they store VARCHARS as CHARS which is wasteful of memory in some scenarios.</p>
<p>MySQL uses memory engine for intermediate results that aren&#8217;t too large for a memory table. Otherwise MyISAM is used.</p>
<p><span style="text-decoration:underline;">Archive Engine<br />
</span>This only supports INSERT and SELECT queries and doesn&#8217;t support indexing. Great for logging and data mining or where fast insert queries are required &#8211; on a replication master. Replication slaves can use differing storage engines for the same data tables, which is nice.</p>
<p>Archive also supports row locking and has a buffer for high-concurrency inserts. It stops a SELECT statement after it collected the number of raws that existed in the table at the start of the query. It&#8217;s basically a storage engine that&#8217;s optimized for high speed inserting and compressed storage; funnily, archive use.</p>
<p><span style="text-decoration:underline;">CSV<br />
</span>Treats CSV files as tables without indexing. Allows for in/out server file transactions while the server is hot. Can be used for logging and for data import/exporting.</p>
<p><span style="text-decoration:underline;">Federation<br />
</span>Data is not stored locally. Each federated table refers to a table on a remote MySQL server. Network connectivity is used for all options. Can be useful for single-row lookups by primary key or for INSERT queries affecting a remote server. It generally does not perform well.</p>
<p><span style="text-decoration:underline;">Blackhole Engine<br />
</span>No storage. Every insert is discarded  but all queries are written to logs as usual. Audit/replication purposes.</p>
<p><span style="text-decoration:underline;">NDB Cluster<br />
</span>An old Sony Ericsson engine. Originally designed for HA and performance. It&#8217;s quite similar to RAID for disk block tech. It stores parity copies of data fragments across nodes. The equivalent of one physical server is dedicated to each node for redundancy.<br />
Management nodes retrieve central configuration and monitor/control the cluster. All servers intercommunicate and  geographically separate networks are not recommended for this (low latency is good).<br />
NDB performs joins at the MySQL server level and not at the storage engine. All NDB data must be obtained over the network and can result in slow complex joins. Single table lookups are very fast because each node provides fractional responses.</p>
<p>Generally not used for traditional applications.</p>
<p><span style="text-decoration:underline;">Falcon<br />
</span>MVCC. Keeps transactions wholly in memory. Rollbacks and recoveries can be very fast.<br />
*** I need to read more about the Falcon engine 2010 ***</p>
<p><span style="text-decoration:underline;">solidDB</span></p>
<p><span style="text-decoration:underline;">PBXT (Primebase XT)</span></p>
<p><span style="text-decoration:underline;">Maria</span></p>
<p><strong><span style="text-decoration:underline;">Selecting a Storage Engine</span></strong></p>
<p>Granular locking?<br />
Transactions?<br />
Chosen on a table by table basis!</p>
<p><span style="text-decoration:underline;">Transactions</span><br />
InnoDB one of the most stable and industry-proven. MyISAM good if no transactions and logging works well here.</p>
<p><span style="text-decoration:underline;">Concurrency<br />
</span>INSERT/READ = MyISAM<br />
Mixture = Row level locking capable engine for the win.</p>
<p><span style="text-decoration:underline;">Backups<br />
</span>Using multiple storage engines can increase the complexity of performance tuning and server backups (hot backups).</p>
<p><span style="text-decoration:underline;"><br />
</span></p>
<p><strong><span style="text-decoration:underline;">Administ</span></strong><strong><span style="text-decoration:underline;">ration</span></strong></p>
<p>mysqladmin &#8211; Create/delete databases/password management.<br />
mysqldump &#8211; Create a backup of a database. It will dump to an .sql command file.<br />
MySQL Administrator (deprecated)<br />
MySQL Query Browser (deprecated)<br />
phpmyadmin<br />
MySQL Workbench (replaces the deprecated apps too)</p>
<p><strong><span style="text-decoration:underline;">MySQL HA</span></strong></p>
<p>Fault tolerant architecture, avoiding single points of failure and fail-over/fail-back.</p>
<p>Data sharding/partitioning &#8211; Horizontally partition data over nodes; only a certain # of the user-base affected by failures.</p>
<p>MySQLProxy?</p>
<p><span style="text-decoration:underline;">MySQL Replication<br />
</span>GOOD: Easy to implement. Low performance impact.<br />
BAD: Asynchronous. Failback can be difficult. Needs additional components.</p>
<p><span style="text-decoration:underline;">MySQL with DRBD/ZFS/AVS<br />
</span>GOOD: Easy, low cost. Synchronous.<br />
BAD: Certain performance impact. Limited datasize (by licensing for DRBD) and transaction rates.</p>
<p><span style="text-decoration:underline;">MySQL with shared storage<br />
</span>GOOD: Performance. Hardware management.<br />
BAD: Cost of implementing storage networks.</p>
<p><span style="text-decoration:underline;">MySQL Cluster<br />
</span>GOOD: Very good performance. Self contained. Short failover time. Software only.<br />
BAD: Needs multiple physical servers. Not optimized for all applications.</p>
<p><span style="text-decoration:underline;"><strong>Master/Master / Multi-Master<br />
</strong></span>Master/Master with two active nodes would give a seamless switch with a good load balancer.<br />
Gives ability to perform schema changes online.<br />
Higher performance AND availability with both nodes up.<br />
Can limit the use of production slaves.<br />
One application entry point with load balancing.</p>
<p><span style="text-decoration:underline;">MySQL Cluster<br />
</span>HA if correctly implemented.<br />
Complicated.</p>
<p><span style="text-decoration:underline;">Linux HA<br />
</span>ARP grab of virtual IP will cause a momentary drop in service.<br />
Shared storage possible with SAN.<br />
One instance, two systems. One active, one standby.</p>
<p><span style="text-decoration:underline;"><strong>MySQL Business Continuity</strong></span></p>
<p>Depends on the HA solution!</p>
<p>Classic way is to use mysqldump. It will return an SQL file full of commands for regenerating the tables and data. Considered rather slow method of backing up but is extremely portable. Can be used for migrations.</p>
<p>Operating system level backups. MySQL needs to be stopped to ensure data consistency. mysqlhotcopy can do it while online, but it will cause a read lock and can only operate when there are no current write locks; and has to be run on the database system.</p>
<p>Replication: DRBD, slaves and so on. Any backup operations could run on a slave or a &#8216;copy&#8217;.</p>
<p>MySQL can&#8217;t do hot backups without table locking (NEED TO MAKE SURE THIS IS STILL TRUE). InnoDB tables with InnoDB Hot Backup *can*, however.</p>
<p><span style="text-decoration:underline;"><strong><br />
</strong></span></p>
<p>Caching.<br />
Detach components and build a modular and scalable design.<br />
Plan for replication and/or sharding.<br />
Append EXPLAIN before SELECTS where possible.<br />
EXPLAIN returns the execution plan chosen by the optimizer.</p>
<p><strong>Generic System Bottlenecks</strong></p>
<ul>
<li>Disk seek</li>
<li>Disk read/write throughput</li>
<li>CPU cycles</li>
<li>Memory bandwidth</li>
</ul>
<p><span style="text-decoration:underline;"><strong>Benchmarking</strong></span><br />
Before tweaking or doing anything to the system, it&#8217;s important to have a good benchmarking and testing plan in place. You need to get a baseline performance meter and iterate your tests between any changes to show any differences. This is the obvious part.</p>
<p>Write good documentation that allows for change request (:P) tracking and performance delta. It&#8217;s good to have a nice development environment that you can also develop your tests and processes without being attributed to random Internet factors. Of course, live performance monitoring is important but this is benchmarking against a change request and should reasonably be done within a QA environment.</p>
<p>Whilst this contains information about generic web and database testing, it&#8217;s also important to consider and develop methods of testing your proprietary application too. Everything that can, should be automated.</p>
<p>When benchmarking your database systems, take a record of everything.<br />
Dump schema<br />
MySQL config files<br />
Operating system configurations.<br />
Iterate your tuning step-by-step and have a complete lifecycle for your analysis.</p>
<p><span style="text-decoration:underline;">Reasons to benchmark</span></p>
<ul>
<li>Measure how the application performs.</li>
<li>Validate scalability by simulating high load (100-1000x user increase).</li>
<li>Plan for growth &#8211; hardware, network capacity and project future load/cost.</li>
<li>Test application tolerance of environmental changes &#8211; Concurrency spike, configuration management (soft/hard), storage engine changes.</li>
</ul>
<p>Two primary benchmark strategies are known as <em>full-stack </em>and <em>single-component </em>benchmarking. I.e. application suite as a whole or just MySQL.</p>
<p><span style="text-decoration:underline;">Full-Stack<br />
</span>Testing the entire environment, inclusive of web server, proprietary application and the database. This is generally the most complete picture of what affects the customer experience.<br />
MySQL is not always the problem.<br />
The full stack can help identify each component&#8217;s cache behavior.</p>
<p><span style="text-decoration:underline;">Single-Component</span><br />
Compare schema/query changes<br />
Benchmark specific problems<br />
Change management in a shorter time</p>
<p><span style="text-decoration:underline;">Metrics</span></p>
<p>Transactions per time unit<br />
Classic database benchmark. TPC-C is a standardized benchmark. Sometimes referred to as throughput but online transaction processing (OLTP) performance is considered very suitable for interactive multiuser applications. The unit is transactions per second.</p>
<p>Latency<br />
Measurement of total time a task requires. The time unit selection is dependent on the application. Extrapolation of minimum, average and maximum response times/latency is the common use.<br />
95% percentile of 5ms, task finishes in less than 5ms 95% of the time. Percentile response times are the most common way of measuring maximum response time.<br />
Graph these benchmark results as line or scatter plot and use a time period. It&#8217;s a good idea to monitor these regularly and alert on them.<br />
One example I read about was a situation where a checkpoint is run hourly, the 95th percentile response does not show the spikes and the results hide the problem of stalling system/no completed transactions during the checkpoint. Graphing the results will show this pattern based spike.</p>
<p>Scalability<br />
Performance is generally measured as a throughput/response time combination and workload varies with changing of user counts, concurrency, size and configuration (hard/soft). It&#8217;s pretty much an arbitrary metric but can give educated guessing and analysis for capacity planning against a company success projection. It can also show design weaknesses.</p>
<p>Benchmarking for concurrency increases against a consistent response time would show a design flaw in scalability for the purposes of concurrency.<br />
Batch jobs can cause interactive queries to suffer, etc.</p>
<p>Concurrency<br />
When measuring a web server, concurrency is a used metric but HTTP is a stateless connection and it isn&#8217;t <em>really</em> considered concurrency for the most part. A database concurrent hit != http server hit count. For the web server, measurement of requests per second the users generate at peak time is a good measurement of web server concurrency.</p>
<p>For example: A high number of fairly static web page hits will cause a lower number of concurrent database connections than say PHP/Ruby with persistent connections.</p>
<p>What each concurrent connection is doing is also very important. Having an established connection to the database server but running no or little quantities of queries is a possible scenario. The important metric is called <em>working concurrency</em>. This is the number of threads that are doing work simultaneously. Measurement of performance drops at higher <em>working-concurrency </em>rates is key.</p>
<p>MySQL can limit concurrency to the server base with techniques such as application queuing. Concurrency is completely different from latency and scalability: it&#8217;s a property of how you set up the benchmark. Measure the application&#8217;s performance at various levels of concurrency versus simply the concurrency rate that the application can achieve.</p>
<p>Performance is important based upon what the proprietary application does. That may be an interactive website with forms, a game, a forum.. the list goes on.</p>
<p><span style="text-decoration:underline;">Tools</span></p>
<p><span style="text-decoration:underline;"><strong>SysBench - <a href="http://sysbench.sourceforge.net/">http://sysbench.sourceforge.net/</a></strong></span></p>
<p>SysBench is a tool to benchmark the system performance. It allows you to emulate/&#8217;evaluate&#8217; OS scenarios that can give a realistic heavy database load. It kinda gives an easy way to benchmark the capabilities of a system without having to create complicated real-case procedures within your database software.</p>
<p>This will allow you to test:</p>
<ul>
<li><em>File I/O performance</em></li>
<li><em>Scheduler performance</em></li>
<li><em>Memory allocation and transfer speed</em></li>
<li><em>POSIX threads implementation performance</em></li>
<li><em>OLTP benchmark &#8211; database server performance</em></li>
</ul>
<p>The OLTP test will create tables within the MySQL server and fill it with records. It can then create client threads and benchmark requests to an N quantity.</p>
<p><strong><span style="text-decoration:underline;">mysqlslap - <a href="http://dev.mysql.com/doc/refman/5.1/en/mysqlslap.html">http://dev.mysql.com/doc/refman/5.1/en/mysqlslap.html</a></span></strong></p>
<p>MySQLslap will emulate client load for the MySQL server and report timings for each stage. It works as if multiple clients are accessing the server and is available as of MySQL 5.1.4. This tool is kinda like the Apache benchmarks.</p>
<p>The user can pass parameters that will contain SQL statements (or a file containing).<br />
mysqlslap runs in three stages:</p>
<p>Create schema, table, and optionally any stored programs or data you want to use for the test. This uses a single client connection.<br />
Run the load test. This stage can use many client connections.<br />
Clean up (disconnect, drop table if specified). This stage uses a single client connection.</p>
<p><span style="text-decoration:underline;"><strong> ab &#8211; Apache Bench - <a href="http://httpd.apache.org/docs/2.0/programs/ab.html">http://httpd.apache.org/docs/2.0/programs/ab.html</a></strong></span></p>
<p>When using a database server such as MySQL, the primary use would be for web applications/sites. It&#8217;s a good idea to consider benchmarking your web server within the routine of your database. One running great and another in a poorly state will be no use, so I&#8217;ve included ab.</p>
<p>This will allow you to show mainly how many reqs/sec Apache will be capable of serving.</p>
<p><strong><span style="text-decoration:underline;">http_load</span></strong></p>
<p>This tool is similar to ab. You can create an input file with many URLs and it will load them at random. It can also execute based upon a time interval you specify.</p>
<p><strong><span style="text-decoration:underline;">JMeter</span></strong></p>
<p>Java app that will allow the user to load another application and measure plus analyze the performance. It includes graphing and a GUI with the ability to record/replay results offline.</p>
<p><strong><span style="text-decoration:underline;">Database Test Suite</span></strong></p>
<p>Opensource test suite used for implementing TPC-C OLTP testing.</p>
<p><strong><span style="text-decoration:underline;">SuperSmack &#8211; http://www.vegan.net/tony/supersmack/</span></strong></p>
<p>Super Smack is a benchmarking, stress testing and load generation tool for MySQL (it handles PostgreSQL too).<br />
It is possible to run Super Smack against a database on the same system (either through local socket or TCP/IP, or remotely over TCP/IP.<br />
For network capable applications, it&#8217;s normally benificial to run the benchmarks remotely so that the load imposed on the database system is only from the database workload itself, and not the load created by running the actual benchmark.<br />
According to Tony Bourke (www.vegan.net), there are some considerations:<br />
<span style="text-decoration:underline;">TCP/IP versus Socket</span><br />
With MySQL, there&#8217;s about a 25% performance gain in terms of queries per second when running through the local sockets compared to TCP/IP. You can test the comparison by utilizing the local IP versus the loopback IP.<br />
<span style="text-decoration:underline;">Network Overload<br />
</span>Super Smack creates simple queries and each average packet size is approximately 100 bytes.</p>
<p><strong><span style="text-decoration:underline;">mybench - <a href="http://jeremy.zawodny.com/mysql/mybench/">http://jeremy.zawodny.com/mysql/mybench/</a></span></strong></p>
<p><strong><span style="text-decoration:underline;"><a href="http://jeremy.zawodny.com/mysql/mybench/"></a></span></strong>Mybench is a benchmarking framework written in Perl. It comes with an example script that needs to be customized to your use. It seems rather simplistic but it&#8217;s nice to not have to reinvent the wheel.<br />
It&#8217;s also referenced to within the  O&#8217;Reilly Media High Performance MySQL book.</p>
<p><span style="text-decoration:underline;"><strong>Profiling</strong></span></p>
<p>Profiling is generally done within a productive operating environment. Real-time and past data analysis are two different but equally important steps.<br />
Out-with the SQL environment:<br />
Memory<br />
CPU<br />
Disk IO<br />
Network and system health</p>
<p>.. are simple but key contributing factors to performance degradation.</p>
<p><span style="text-decoration:underline;">The Tools</span></p>
<p><span style="text-decoration:underline;">mysqltuner - <a href="http://blog.mysqltuner.com/">http://blog.mysqltuner.com/</a></span></p>
<p>MySQLtuner is a Perl script that provides a picture of MySQL&#8217;s health. It will also recommend how to increase efficiency and performance. It&#8217;s pretty automated, a kinda robot DBA.</p>
<p><code>&gt;&gt; MySQLTuner 0.9.0 - Major Hayden<br />
&gt;&gt; Bug reports, feature requests, and downloads at http://mysqltuner.com/<br />
&gt;&gt; Run with '--help' for additional options and output filtering<br />
Please enter your MySQL administrative login: secret<br />
Please enter your MySQL administrative password: more secret</code></p>
<p><code>-------- General Statistics --------------------------------------------------<br />
[OK] You have the latest version of MySQLTuner<br />
[OK] Currently running supported MySQL version 5.0.32-Debian_7etch4-log<br />
[OK] Operating on 32-bit architecture with less than 2GB RAM</code></p>
<p><code>-------- Storage Engine Statistics -------------------------------------------<br />
[--] Status: +Archive -BDB -Federated -InnoDB -ISAM -NDBCluster<br />
[--] Data in MyISAM tables: 71M (Tables: 548)</code></p>
<p><code>-------- Performance Metrics -------------------------------------------------<br />
[--] Up for: 109d 22h 8m 1s (69M q [7.283 qps], 1M conn, TX: 3B, RX: 3B)<br />
[--] Reads / Writes: 98% / 2%<br />
[--] Total buffers: 2.6M per thread and 58.0M global<br />
[OK] Maximum possible memory usage: 320.5M (62% of installed RAM)<br />
[OK] Slow queries: 0% (39/69M)<br />
[OK] Highest usage of available connections: 63% (63/100)<br />
[OK] Key buffer size / total MyISAM indexes: 16.0M/65.0K<br />
[OK] Key buffer hit rate: 100.0%<br />
[OK] Query cache efficiency: 80.6%<br />
[!!] Query cache prunes per day: 30287<br />
[OK] Sorts requiring temporary tables: 0%<br />
[!!] Temporary tables created on disk: 59%<br />
[OK] Thread cache hit rate: 99%<br />
[!!] Table cache hit rate: 0%<br />
[OK] Open file limit used: 12%<br />
[OK] Table locks acquired immediately: 99%</code></p>
<p><code> </code></p>
<p><code>-------- Recommendations -----------------------------------------------------<br />
General recommendations:</code></p>
<p>&nbsp;</p>
<p><code></p>
<ul>
<li>Enable the slow query log to troubleshoot bad queries</li>
<li>When making adjustments, make tmp_table_size/max_heap_table_size equal</li>
<li>Reduce your SELECT DISTINCT queries without LIMIT clauses</li>
<li>Increase table_cache gradually to avoid file descriptor limits</li>
</ul>
<p>Variables to adjust:</p>
<ul>
<li>query_cache_size (&gt; 16M)</li>
<li>tmp_table_size (&gt; 32M)</li>
<li>max_heap_table_size (&gt; 16M)</li>
<li>table_cache (&gt; 64)</li>
</ul>
<p></code></p>
<p>&nbsp;</p>
<p>SHOW</p>
<p>SHOW PROCESSLIST | STATUS | INNODB STATUS</p>
<p>Show processlist will display which threads are running. PROCESS privilege is required to see all threads. Utilizing the FULL keyword will show more than the first 100 characters of each statement.<br />
Generally, this statement is useful in cases of the &#8216;too many connections&#8217; error message. SUPER privilege users should always be able to connect and check the system. Threads can be killed with a KILL statement.</p>
<p>An example of SHOW PROCESSLIST would be:</p>
<pre>mysql&gt; SHOW FULL PROCESSLIST\G
*************************** 1. row ***************************
Id: 1
User: system user
Host:
db: NULL
Command: Connect
Time: 1030455
State: Waiting for master to send event
Info: NULL
<span style="text-decoration:underline;"><strong>
</strong></span>
<span style="text-decoration:underline;"><strong>mytop - http://jeremy.zawodny.com/mysql/mytop/</strong></span>
Mytop is a console app for monitoring threads and overall performance of MySQL. It's like top for *nix but gives a real-time view of the database system. Lets you monitor queries.

  MySQL on localhost (3.22.32)              up 3+23:14:20 [23:54:52]
   Queries Total: 617            Avg/Sec: 0.00  Now/Sec: 0.05  Slow: 0
   Threads Total: 1         Active: 1     Cached: 0
   Key Efficiency: 88.38%  Bytes in: 0  Bytes out: 0

Slow Query Log
 log_slow_queries=/var/lib/mysql/slow-queries.log
 long_query_time=2 Use mysqldumpslow.
 Can log directly to a table and doesn't require a server restart.
 SET GLOBAL SLOW_QUERY_LOG = { ON | OFF }

http://dev.mysql.com/doc/refman/5.1/en/logtables.html

 I need to get more familiar with EXPLAIN.
 MyTop will also help catch locking and long-running queries in real-time. This will allow you to create simple scripts to manage these... kinda like when Perforce experiences heavy database locking. You can script automatic kills, although it's not highly recommended with Perforce (I imagine MySQL too). <span style="text-decoration:underline;"><strong>Common Problems</strong></span> Poor or non-existent indexing
 Inefficient or bloated schema design
 Bad coding practices
 Server variables not tuned correctly
 Bottlenecks as mentioned previously <span style="text-decoration:underline;">Guidelines (according to MySQL.com)</span>
 Poor or missing index is the fastest way to kill a system
 Use the smallest data types necessary
 Normalize first</pre>
<p><span style="text-decoration:underline;"><strong>MySQL Monitoring</strong></span></p>
<p>Spotlight on MySQL &#8211; http://www.quest.com/spotlight-on-mysql/</p>
<p>Spotlight® on MySQL <strong>diagnoses MySQL problems in real time </strong>by graphically displaying all database activity in an intuitive user interface, enabling you to <strong>respond quickly to issues</strong> that need attention.</p>
<p>With Spotlight on MySQL, <strong>DBAs or developers running Windows</strong> can drill down to locate in-depth information on the<strong> source of a performance issue</strong>. And because the run-time nature of your MySQL databases is unique, Spotlight calibrates itself to a baseline of normal database activity.</p>
<p>This allows Spotlight to automatically establish the speed of the internal flows and other activity indicators. When a threshold is met, <strong>Spotlight notifies you using a visual or audible alert.</strong></p>
<p>Spotlight on MySQL supports MySQL versions 5.0.3 or later that employ the <strong>InnoDB</strong> storage engine.</p>
<h1>Features and Benefits</h1>
<h2>Spotlight® on MySQL</h2>
<p><strong>Complete <a href="http://www.quest.com/spotlight-on-mysql/features-benefits.aspx">visual representation</a> of the MySQL database</strong> allowing you to <a href="http://www.quest.com/spotlight-on-mysql/features-benefits.aspx">observe actual activity</a>, including process flows and <a href="http://www.quest.com/spotlight-on-mysql/features-benefits.aspx">configuration settings</a> in real time from a single display</p>
<div id="pageDiv">
<ul>
<li><strong>Quickly identifies performance bottlenecks</strong> and problem areas in complex data sharing environments using flows, graphs and visual icons</li>
<li><strong>Alerts you,</strong> with an audio or visual alarm, when key metric thresholds are triggered and if any MySQL component has exceeded a critical threshold before the issues impacts end users</li>
<li><strong>Reveals essential details</strong> of problem areas for quick diagnosis</li>
<li><strong>Drills down on <a href="http://www.quest.com/spotlight-on-mysql/features-benefits.aspx">operating system metrics</a> like CPU,</strong> I/O, memory and processes Alerts DBAs with an audio or visual alarm if any MySQL component has exceeded a critical threshold</li>
</ul>
</div>
<p>Best-ish case would be on a 15k SAS 6gb/s at approx 3.4ms seek. Would allow an average of 290.4/second</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duncanbowring.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duncanbowring.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duncanbowring.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duncanbowring.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/duncanbowring.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/duncanbowring.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/duncanbowring.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/duncanbowring.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duncanbowring.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duncanbowring.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duncanbowring.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duncanbowring.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duncanbowring.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duncanbowring.wordpress.com/71/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duncanbowring.wordpress.com&amp;blog=8536969&amp;post=71&amp;subd=duncanbowring&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://duncanbowring.wordpress.com/2010/10/26/mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0437462a1534ad4d3960e9807bd1535d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">duncanbowring</media:title>
		</media:content>

		<media:content url="http://duncanbowring.files.wordpress.com/2010/10/mysql_architecture.png" medium="image">
			<media:title type="html">MySQL_Architecture</media:title>
		</media:content>
	</item>
		<item>
		<title>Operating systems</title>
		<link>http://duncanbowring.wordpress.com/2010/04/10/operating-systems/</link>
		<comments>http://duncanbowring.wordpress.com/2010/04/10/operating-systems/#comments</comments>
		<pubDate>Sat, 10 Apr 2010 09:42:16 +0000</pubDate>
		<dc:creator>duncanbowring</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[operating systems os online]]></category>

		<guid isPermaLink="false">http://duncanbowring.wordpress.com/2010/04/10/operating-systems/</guid>
		<description><![CDATA[There will come a time when our operating systems are a managed, hosted service. It will be upgraded like an mmo; through patches. It&#8217;ll be a subscription based service but will run on demand, with your pc being some remote hypervisor. I&#8217;m not sure I&#8217;d enjoy that.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duncanbowring.wordpress.com&amp;blog=8536969&amp;post=68&amp;subd=duncanbowring&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There will come a time when our operating systems are a managed, hosted service. It will be upgraded like an mmo; through patches. It&#8217;ll be a subscription based service but will run on demand, with your pc being some remote hypervisor. I&#8217;m not sure I&#8217;d enjoy that.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duncanbowring.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duncanbowring.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duncanbowring.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duncanbowring.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/duncanbowring.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/duncanbowring.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/duncanbowring.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/duncanbowring.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duncanbowring.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duncanbowring.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duncanbowring.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duncanbowring.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duncanbowring.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duncanbowring.wordpress.com/68/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duncanbowring.wordpress.com&amp;blog=8536969&amp;post=68&amp;subd=duncanbowring&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://duncanbowring.wordpress.com/2010/04/10/operating-systems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0437462a1534ad4d3960e9807bd1535d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">duncanbowring</media:title>
		</media:content>
	</item>
		<item>
		<title>Windows Server 2008 R2 RC and Exchange 2010 Beta</title>
		<link>http://duncanbowring.wordpress.com/2009/07/22/windows-server-2008-r2-rc-and-exchange-2010-beta-2/</link>
		<comments>http://duncanbowring.wordpress.com/2009/07/22/windows-server-2008-r2-rc-and-exchange-2010-beta-2/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 00:42:52 +0000</pubDate>
		<dc:creator>duncanbowring</dc:creator>
				<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Windows Server 2008 R2]]></category>

		<guid isPermaLink="false">http://duncanbowring.wordpress.com/?p=50</guid>
		<description><![CDATA[Well. This is just a short update. I tried to install Exchange 2010 Beta onto Windows Server 2008 R2 RC today. It gave me some garbage &#8211; MICROSOFT EXCHANGE SERVER 2010 BETA IS NOT SUPPORTED ON THIS VERSION OF WINDOWS. INSTALL SERVER 2008 R2 BETA 7000. Of course, RC is 7100. Workaround: Edit the registry [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duncanbowring.wordpress.com&amp;blog=8536969&amp;post=50&amp;subd=duncanbowring&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Well. This is just a short update.<br />
I tried to install Exchange 2010 Beta onto Windows Server 2008 R2 RC today. It gave me some garbage &#8211; MICROSOFT EXCHANGE SERVER 2010 BETA IS NOT SUPPORTED ON THIS VERSION OF WINDOWS. INSTALL SERVER 2008 R2 BETA 7000.<br />
Of course, RC is 7100.</p>
<p>Workaround: Edit the registry and alter HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\</p>
<p><span style="color:#009900;">BuildLab, BuildLabEx, CurrentBuild, CurrentBuildNumber </span></p>
<p>.. to reflect 7000 instead of 7100.</p>
<p><span style="font-weight:bold;color:#cc0000;">Summary: 10 item(s). 10 succeeded, 0 failed.</span></p>
<p><a href="http://4.bp.blogspot.com/_TZgdfyI9odA/Skj8gVUAU5I/AAAAAAAAAGQ/hr2PIWw_Bs0/s1600-h/2008registry.jpg"><img style="float:left;cursor:pointer;width:320px;height:149px;margin:0 10px 10px 0;" src="http://4.bp.blogspot.com/_TZgdfyI9odA/Skj8gVUAU5I/AAAAAAAAAGQ/hr2PIWw_Bs0/s320/2008registry.jpg" border="0" alt="" /></a></p>
<p>OK. Seems that there are various errors when using the management tools on the server.<br />
The actual Exchange services themselves seem to be running OK.<br />
Unfortunately, I don&#8217;t have an x64 desktop OS, so I can&#8217;t install the mangement tools at this time. I will verify when I can.</p>
<p>An example of one of these errors:<br />
<a href="http://2.bp.blogspot.com/_TZgdfyI9odA/SkkJFftly9I/AAAAAAAAAGY/3TSHQXJF454/s1600-h/exchangeerror.jpg"><img style="cursor:pointer;width:320px;height:150px;" src="http://2.bp.blogspot.com/_TZgdfyI9odA/SkkJFftly9I/AAAAAAAAAGY/3TSHQXJF454/s320/exchangeerror.jpg" border="0" alt="" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duncanbowring.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duncanbowring.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duncanbowring.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duncanbowring.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/duncanbowring.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/duncanbowring.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/duncanbowring.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/duncanbowring.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duncanbowring.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duncanbowring.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duncanbowring.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duncanbowring.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duncanbowring.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duncanbowring.wordpress.com/50/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duncanbowring.wordpress.com&amp;blog=8536969&amp;post=50&amp;subd=duncanbowring&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://duncanbowring.wordpress.com/2009/07/22/windows-server-2008-r2-rc-and-exchange-2010-beta-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0437462a1534ad4d3960e9807bd1535d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">duncanbowring</media:title>
		</media:content>

		<media:content url="http://4.bp.blogspot.com/_TZgdfyI9odA/Skj8gVUAU5I/AAAAAAAAAGQ/hr2PIWw_Bs0/s320/2008registry.jpg" medium="image" />

		<media:content url="http://2.bp.blogspot.com/_TZgdfyI9odA/SkkJFftly9I/AAAAAAAAAGY/3TSHQXJF454/s320/exchangeerror.jpg" medium="image" />
	</item>
		<item>
		<title>Office Communications Server 2007 R2 (OCS) &#8211; Multiple domain forest</title>
		<link>http://duncanbowring.wordpress.com/2009/07/22/office-communications-server-2007-r2-ocs-multiple-domain-forest/</link>
		<comments>http://duncanbowring.wordpress.com/2009/07/22/office-communications-server-2007-r2-ocs-multiple-domain-forest/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 00:40:26 +0000</pubDate>
		<dc:creator>duncanbowring</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Office Communications Server]]></category>
		<category><![CDATA[Multiple domains]]></category>
		<category><![CDATA[OCS]]></category>

		<guid isPermaLink="false">http://duncanbowring.wordpress.com/?p=48</guid>
		<description><![CDATA[Hello! Well, I&#8217;ve been wanting to install Exchange 2007 and OCS 2007 R2 into a multi domain environment for a wee while now. When I say multiple domains, I mean parent and children. Exchange 2007 was a doddle. No problems there at all. Each user can be assigned to their own logon domain and everything [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duncanbowring.wordpress.com&amp;blog=8536969&amp;post=48&amp;subd=duncanbowring&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hello!<br />
Well, I&#8217;ve been wanting to install Exchange 2007 and OCS 2007 R2 into a multi domain environment for a wee while now. When I say multiple domains, I mean parent and children.</p>
<p>Exchange 2007 was a doddle. No problems there at all. Each user can be assigned to their own logon domain and everything seamlessly works. Presuming your DNS configuration is sane.</p>
<p>I&#8217;ve finally got this working 100% seamlessly. Sadly, under the hood it&#8217;s a little bit messy &#8211; but no different to the way it had to be done to get Exchange 2003 working in a similar environment.</p>
<p>Unfortunately, at this moment in time, Office Communications Server (all versions) doesn&#8217;t really support multiple domains well, at all. If this lives in the parent domain, such as parent.com and your users live in child1.parent.com and child2.parent.com then the user logging into OCS technically has to be parent.com.</p>
<p>The one thing that OCS does provide is an ADSI variable that lets you link the SID (security identifier) of the user on child.parent.com to the user on the parent domain. This user doesn&#8217;t even have to be enabled.</p>
<p>Whilst this is a welcomed workaround that at least allows you to &#8216;seamlessly&#8217; authenticate, it does pose a few other problems around managing your users and any Active Directory data that you may utilise &#8211; such as job title, manager, phone number.. you get the drift.</p>
<p>To get around these and calm down the nightmare a little, I wrote a script that will basically keep things in sync for the admins. Unfortunately, I cannot post the script here as my employer technically owns it.<br />
What I can do, is tell you what variables are involved:</p>
<ol>
<li>msRTCSIP-PrimaryUserAddress</li>
<li>msRTCSIP-OriginatorSid</li>
<li>msRTCSIP-PrimaryHomeServer</li>
<li>msRTCSIP-UserEnabled</li>
<li>msRTCSIP-OptionFlags</li>
</ol>
<ol>
<li>The primary user address is basically the sip address. It&#8217;s possible to populate this from the sAMAccountName plus the parent domain suffix. Remember the sip: prefix.</li>
<li>The originator SID has to match up with the actual SID from the user in the child domain.</li>
<li>Primary home server is the distinguished name of your OCS server. Kinda.<br />
<span style="color:#009900;">Example: CN=LC Services,CN=Microsoft,CN=ServerName,CN=Pools,CN=RTC Service,CN=Services,CN=Configuration,DC=parent,DC=com</span></li>
<li><span style="color:#009900;"><span style="color:#000000;">UserEnabled: This generally should be set to TRUE. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </span></span></li>
<li><span style="color:#009900;"><span style="color:#000000;">OptionFlags: For some strange reason, I kept getting errors about the server being temporarily unavailable until I set this to 256.</span></span></li>
</ol>
<p>Now these are just the required variables specific to OCS. You can also add things in such as mail, title, telephoneNumber, sn, givenName and so on.. you know the script.</p>
<p>It&#8217;s probably a good idea to scan all the domains and delete any ghost/dead users that no longer exist on the children as well as creating new ones that do.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/duncanbowring.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/duncanbowring.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/duncanbowring.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/duncanbowring.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/duncanbowring.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/duncanbowring.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/duncanbowring.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/duncanbowring.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/duncanbowring.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/duncanbowring.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/duncanbowring.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/duncanbowring.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/duncanbowring.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/duncanbowring.wordpress.com/48/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=duncanbowring.wordpress.com&amp;blog=8536969&amp;post=48&amp;subd=duncanbowring&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://duncanbowring.wordpress.com/2009/07/22/office-communications-server-2007-r2-ocs-multiple-domain-forest/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0437462a1534ad4d3960e9807bd1535d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">duncanbowring</media:title>
		</media:content>
	</item>
	</channel>
</rss>
