<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
	>
<channel>
	<title>Comments on: Registry vs INI files</title>
	<atom:link href="http://www.eddiefast.com/2007/11/registry-vs-ini-files/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.eddiefast.com/2007/11/registry-vs-ini-files/</link>
	<description></description>
	<pubDate>Tue, 07 Feb 2012 17:07:17 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Ian B</title>
		<link>http://www.eddiefast.com/2007/11/registry-vs-ini-files/comment-page-1/#comment-159</link>
		<dc:creator>Ian B</dc:creator>
		<pubDate>Thu, 21 Feb 2008 00:55:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.eddiefast.com/?p=189#comment-159</guid>
		<description>Ed,

  I think I'm glad I don't read Raymond's posts.  :)  There is another point about binary speed that I thought I should bring up.  Some programs rely on text files for configuration, but then compile them before use.  sendmail and postfix are good examples of programs that do this with their use of map files like "aliases".  This nicely handles transaction level issues too.  PHP developers use caching to the same effect as well.  Edit code, flush cache to see changes and get compiled speed.

  There is another text file format that I've recently discovered called YAML (YAML Ain’t Markup Language):
http://www.yaml.org/spec/1.1/

  It has all of the benefits of XML without the XML.</description>
		<content:encoded><![CDATA[<p>Ed,</p>
<p>  I think I&#8217;m glad I don&#8217;t read Raymond&#8217;s posts.  <img src='http://www.eddiefast.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  There is another point about binary speed that I thought I should bring up.  Some programs rely on text files for configuration, but then compile them before use.  sendmail and postfix are good examples of programs that do this with their use of map files like &#8220;aliases&#8221;.  This nicely handles transaction level issues too.  PHP developers use caching to the same effect as well.  Edit code, flush cache to see changes and get compiled speed.</p>
<p>  There is another text file format that I&#8217;ve recently discovered called YAML (YAML Ain’t Markup Language):<br />
<a href="http://www.yaml.org/spec/1.1/" rel="nofollow">http://www.yaml.org/spec/1.1/</a></p>
<p>  It has all of the benefits of XML without the XML.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anm</title>
		<link>http://www.eddiefast.com/2007/11/registry-vs-ini-files/comment-page-1/#comment-164</link>
		<dc:creator>Anm</dc:creator>
		<pubDate>Sun, 02 Dec 2007 03:24:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.eddiefast.com/?p=189#comment-164</guid>
		<description>Two things...  First, you've generalized a feature of Java to something that does not apply to what I said about Apple's preferences.  In the case of preferences, the reverse domain name is in the filename, not a directory structure.

As for Java, it not mandatory.  It only really concerns Java classes that will be distributed as a library, where the risk of namespace collision is possible.  That said, it would certainly be nice if you could collapse some of the unnecessary hierarchy.  Something like "edu.usc.ict/saso/nlu/.." or even "edu.usc.ict.saso/nlu/..".  For the purposes of the compiler and compile-in-place development directories, this should not be an significant issue, as the '.' character has a specific meaning in a Java identifier.  The extra test to find the correct path (com.example/.. or com/example/..) shouldn't cost much in a single compile, and could even be cached between compile iterations.  After all, a degree of guess and check is already implemented as each entry of a classpath is tested.  I would not recommend this convenience inside JAR files, and definitely not on raw .class files across http (who does that anymore anyway?).</description>
		<content:encoded><![CDATA[<p>Two things&#8230;  First, you&#8217;ve generalized a feature of Java to something that does not apply to what I said about Apple&#8217;s preferences.  In the case of preferences, the reverse domain name is in the filename, not a directory structure.</p>
<p>As for Java, it not mandatory.  It only really concerns Java classes that will be distributed as a library, where the risk of namespace collision is possible.  That said, it would certainly be nice if you could collapse some of the unnecessary hierarchy.  Something like &#8220;edu.usc.ict/saso/nlu/..&#8221; or even &#8220;edu.usc.ict.saso/nlu/..&#8221;.  For the purposes of the compiler and compile-in-place development directories, this should not be an significant issue, as the &#8216;.&#8217; character has a specific meaning in a Java identifier.  The extra test to find the correct path (com.example/.. or com/example/..) shouldn&#8217;t cost much in a single compile, and could even be cached between compile iterations.  After all, a degree of guess and check is already implemented as each entry of a classpath is tested.  I would not recommend this convenience inside JAR files, and definitely not on raw .class files across http (who does that anymore anyway?).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: FastEddie</title>
		<link>http://www.eddiefast.com/2007/11/registry-vs-ini-files/comment-page-1/#comment-163</link>
		<dc:creator>FastEddie</dc:creator>
		<pubDate>Sat, 01 Dec 2007 02:01:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.eddiefast.com/?p=189#comment-163</guid>
		<description>My beef is that it creates an almost mandatory 3 nested deep directory structure (in the file system!) on every entry, when in most cases, it's unnecessary.  I dislike it from my experience in Java.  The nesting there is absurd.  You have to drill down farther and farther, just to see the source.  No reason that casual source code needs to be quarantined by namespace, 3 levels deeps in the file system.  Where's that source?  Double click, double-click, double-click, double-click (am I there yet?), double-click....</description>
		<content:encoded><![CDATA[<p>My beef is that it creates an almost mandatory 3 nested deep directory structure (in the file system!) on every entry, when in most cases, it&#8217;s unnecessary.  I dislike it from my experience in Java.  The nesting there is absurd.  You have to drill down farther and farther, just to see the source.  No reason that casual source code needs to be quarantined by namespace, 3 levels deeps in the file system.  Where&#8217;s that source?  Double click, double-click, double-click, double-click (am I there yet?), double-click&#8230;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anm</title>
		<link>http://www.eddiefast.com/2007/11/registry-vs-ini-files/comment-page-1/#comment-162</link>
		<dc:creator>Anm</dc:creator>
		<pubDate>Fri, 30 Nov 2007 23:02:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.eddiefast.com/?p=189#comment-162</guid>
		<description>What is your beef with reverse domains?

It is used to prevent namespace collisions by relying on a shared name authority.  Reversing it keeps related entries grouped together when sorted alphabetically.  In contrast, Microsoft's registry relies on the statistically unique UUID, which is anything but human readable or intelligently sorted.  Give me reverse domains over that any day.</description>
		<content:encoded><![CDATA[<p>What is your beef with reverse domains?</p>
<p>It is used to prevent namespace collisions by relying on a shared name authority.  Reversing it keeps related entries grouped together when sorted alphabetically.  In contrast, Microsoft&#8217;s registry relies on the statistically unique UUID, which is anything but human readable or intelligently sorted.  Give me reverse domains over that any day.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: FastEddie</title>
		<link>http://www.eddiefast.com/2007/11/registry-vs-ini-files/comment-page-1/#comment-161</link>
		<dc:creator>FastEddie</dc:creator>
		<pubDate>Fri, 30 Nov 2007 22:21:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.eddiefast.com/?p=189#comment-161</guid>
		<description>Sounds good.  It's sounds much more manageable than the current Windows registry (except for the reverse-domain part, why do people think that's a good idea???)

Here's a quote from the comments that mentions plists as well:

"Apple has an elegant solution, .plist files are basically XML files but can also be in a binary format, there is a command-line utility called 'plutil' that can convert them from binary to human readable and vice versa (there is also a GUI editor). Applications using these plist files (through the appropriate API's) can use both types transparently. If you want to tweak something, just convert it to human readable, and when done tweaking return it to binary if you prefer."</description>
		<content:encoded><![CDATA[<p>Sounds good.  It&#8217;s sounds much more manageable than the current Windows registry (except for the reverse-domain part, why do people think that&#8217;s a good idea???)</p>
<p>Here&#8217;s a quote from the comments that mentions plists as well:</p>
<p>&#8220;Apple has an elegant solution, .plist files are basically XML files but can also be in a binary format, there is a command-line utility called &#8216;plutil&#8217; that can convert them from binary to human readable and vice versa (there is also a GUI editor). Applications using these plist files (through the appropriate API&#8217;s) can use both types transparently. If you want to tweak something, just convert it to human readable, and when done tweaking return it to binary if you prefer.&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anm</title>
		<link>http://www.eddiefast.com/2007/11/registry-vs-ini-files/comment-page-1/#comment-160</link>
		<dc:creator>Anm</dc:creator>
		<pubDate>Fri, 30 Nov 2007 19:43:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.eddiefast.com/?p=189#comment-160</guid>
		<description>I have to say, I think Apple presented a best of both worlds solution for Application preferences.  Their 'database' for each application is effectively two preference directories: one in the /Library/Preferences and one in ~/Library/Preferences.  Technically there is also a /System/Library for the OS, but currently there is no Prerferences directory located there.

Inside these directories are reverse-domain-named .plist files.  Plist stands for "property list", and it is effectively a XML structure file (modified from the original NextStep plist test files). The structure provides Unicode strings, numbers, dates, and even arrays and dictionaries.

That said, the current recommendation is a binary version of this, addressing the parsing speed issue.  But fear not, apple open sourced their libraries for handling plists (as part of the BSD licensed Darwin source release) and their binary counterparts.  Not only does this provide a standard interface for accessing the files, but it has lead to many automated and GUI tools for manipulating .plist files.

So to address Raymonds complaints of INI files:
 * We get Unicode and structured data.
 * Security granularity is provided by different .plist files, and more specifically, standard locations for common security permissions.
Additionally, we have a standard location that is something other than ~/.app/ or ~/.apprc (stupid Unix).

In theory, we have the threading problems with writing data and locking files, but these are generally a good thing.  I don't believe Windows registry is transactional, so I cannot write multiple related keys without risking another app will read a partial state.  Grouping data by .plist files implicitly provides that transactional security.  Of course this leads to potential denial of service, but the separation of system and user preferences, and the use of different files per application / library, means that the effects are minimized unless you have more widespread problems (e.g., malicious programs with Admin priviledges).

I will say that some applications side-step the .plist format (usually in favor of some legacy format), but at least they still use directories within the ~/Library/Preferences directory.  I still know exactly what to back up and exactly where to look if I need to repair / wipe an app's preferences.</description>
		<content:encoded><![CDATA[<p>I have to say, I think Apple presented a best of both worlds solution for Application preferences.  Their &#8216;database&#8217; for each application is effectively two preference directories: one in the /Library/Preferences and one in ~/Library/Preferences.  Technically there is also a /System/Library for the OS, but currently there is no Prerferences directory located there.</p>
<p>Inside these directories are reverse-domain-named .plist files.  Plist stands for &#8220;property list&#8221;, and it is effectively a XML structure file (modified from the original NextStep plist test files). The structure provides Unicode strings, numbers, dates, and even arrays and dictionaries.</p>
<p>That said, the current recommendation is a binary version of this, addressing the parsing speed issue.  But fear not, apple open sourced their libraries for handling plists (as part of the BSD licensed Darwin source release) and their binary counterparts.  Not only does this provide a standard interface for accessing the files, but it has lead to many automated and GUI tools for manipulating .plist files.</p>
<p>So to address Raymonds complaints of INI files:<br />
 * We get Unicode and structured data.<br />
 * Security granularity is provided by different .plist files, and more specifically, standard locations for common security permissions.<br />
Additionally, we have a standard location that is something other than ~/.app/ or ~/.apprc (stupid Unix).</p>
<p>In theory, we have the threading problems with writing data and locking files, but these are generally a good thing.  I don&#8217;t believe Windows registry is transactional, so I cannot write multiple related keys without risking another app will read a partial state.  Grouping data by .plist files implicitly provides that transactional security.  Of course this leads to potential denial of service, but the separation of system and user preferences, and the use of different files per application / library, means that the effects are minimized unless you have more widespread problems (e.g., malicious programs with Admin priviledges).</p>
<p>I will say that some applications side-step the .plist format (usually in favor of some legacy format), but at least they still use directories within the ~/Library/Preferences directory.  I still know exactly what to back up and exactly where to look if I need to repair / wipe an app&#8217;s preferences.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

