<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Everything In Between &#187; Ruby</title>
	<atom:link href="http://maymay.net/blog/category/programming/ruby/feed/" rel="self" type="application/rss+xml" />
	<link>http://maymay.net/blog</link>
	<description>The brutally honest, first-person account of Meitar Moscovitz&#039;s life.</description>
	<lastBuildDate>Thu, 19 Jan 2012 08:54:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>No-Framework Ruby on the Web using eRuby on Mac OS X</title>
		<link>http://maymay.net/blog/2007/10/25/no-framework-ruby-on-the-web-using-eruby-on-mac-os-x/</link>
		<comments>http://maymay.net/blog/2007/10/25/no-framework-ruby-on-the-web-using-eruby-on-mac-os-x/#comments</comments>
		<pubDate>Thu, 25 Oct 2007 05:00:16 +0000</pubDate>
		<dc:creator>Meitar</dc:creator>
				<category><![CDATA[HOWTO]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tech/Computing]]></category>
		<category><![CDATA[Unix/Linux]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://maymay.net/blog/archives/2007/10/25/no-framework-ruby-on-the-web-using-eruby-on-mac-os-x/</guid>
		<description><![CDATA[I have a suspicion that there are a lot of web developers out there who, like me, are eager to start learning more about Ruby but who are stunted by the incredible amount of unfamiliar conventions that are used in Rails. For many of us, our first introduction to Ruby was (or is) through Rails [...]]]></description>
			<content:encoded><![CDATA[<p>I have a suspicion that there are a lot of web developers out there who, like me, are eager to start learning more about <a href="//ruby-lang.org/">Ruby</a> but who are stunted by the incredible amount of unfamiliar conventions that are used in <a href="//rubyonrails.com/">Rails</a>. For many of us, our first introduction to Ruby was (or is) through Rails and the challenge of learning <em>both</em> Ruby and Rails at once should not be underestimated; frankly it&#8217;s damn hard.</p>
<p>Thankfully, there&#8217;s an easier way. Especially if you&#8217;re accustomed to &#8220;old-school&#8221; development workflows that you learned through, say, <acronym title="PHP Hypertext Preprocessor; an HTML-embedded scripting language">PHP</acronym> or perhaps Perl scripting, then ditching Rails and starting purely with Ruby might be the way to go. Doing things on your own without the &#8220;magic&#8221; of Rails will let you learn Ruby in a simple, yet fully-featured environment, much like the way you might have learned classic <acronym title="Common Gateway Interface">CGI</acronym> programming.</p>
<p>Specifically, by using <a href="//eruby.info/">eRuby</a>, the Embedded Ruby interpreter, you can make Ruby web development feel just like <acronym title="PHP Hypertext Preprocessor; an HTML-embedded scripting language">PHP</acronym> development. Install it, upload an <acronym title="HyperText Markup Language">HTML</acronym> file with some embedded Ruby code in it, and—voila—you have a single-page web application.</p>
<h3>Why this tutorial?</h3>
<p><a href="http://www.hiveminds.co.uk/node/3094">Hivemind&#8217;s Getting Started with Ruby on the Web</a> is an excellent resource that described this process from start-to-finish for Windows users. In fact, it was after finding that article that I realized web development with Ruby didn&#8217;t have to be governed by Rails and, being a web developer like the authors of <cite>Hiveminds</cite>, I wanted an easy way to use my Ruby knowledge on the Web.</p>
<p>However, I couldn&#8217;t find any similar tutorial or walkthrough for those of us who use Macs. Even the Linux walkthroughs are lacking (or at least my Googling skill for them is). After spending a little while successfully getting eRuby set up on my Mac running Mac <acronym title="Operating System">OS</acronym> X 10.4 Tiger, I thought I&#8217;d share what I learned with others, so I wrote this article. Its content mirrors the one from Hiveminds to a great degree but focuses on getting eRuby installed on Mac <acronym title="Operating System">OS</acronym> X instead of Windows (obviously). I imagine these instructions should be pretty similar if not identical for any other *nix-like platform.</p>
<h3>The Setup</h3>
<p>Getting eRuby installed and configured with your web server is actually pretty straightforward and won&#8217;t take an experienced web developer much time at all. All we&#8217;re going to need is the <a href="//httpd.apache.org/">Apache web server</a> and the <a href="//ruby-lang.org/">Ruby programming language</a> to start, both of which are already pre-installed on Mac <acronym title="Operating System">OS</acronym> X 10.4 Tiger. (And in Mac <acronym title="Operating System">OS</acronym> X 10.5 Leopard, Apple is even <a href="/blog/archives/2007/10/18/the-10-geekiest-leopard-features-i-will-probably-love/#li-1">shipping new Macs with Ruby On Rails preconfigured</a>, but that&#8217;s a subject for another time.) However, Apple typically ships an older copy of Ruby than is readily available, so you might choose to use a newer version of Ruby that you download yourself.</p>
<p>The easiest way to get a copy of eRuby (and an updated Ruby, if you want it) is with a package manager such as <a href="//macports.org/">MacPorts</a>. With MacPorts installed (which is a simple, standard package installation downloadable from the MacPorts home page), simply run</p>
<pre><kbd>sudo port install eruby</kbd></pre>
<p>from your terminal to download the latest stable Ruby and eRuby in one fell swoop. After this runs, you&#8217;ll have a new Ruby in <code>/opt/local/bin/ruby</code> and an eRuby in <code>/opt/local/bin/eruby</code>. Alternatively, of course, you could compile and install eRuby yourself. <a href="//eruby.info/" title="Scroll to the 'How do I get eRuby?' section.">Instructions for that</a> are on the eRuby homepage.</p>
<p>As a quick test to see if everything is installed and working correctly, create a plain text file with your favorite editor that contains the following code:</p>
<pre><code class="ruby">Hello world! The time is now &lt;%= Time.now %&gt;.</code></pre>
<p>All this does is print out a &#8220;Hello world!&#8221; greeting and then announces the current time (as reported by your system clock, of course).</p>
<p>If you named the above file <var>helloworld.rhtml</var> then you can feed this file to the <code>eruby</code> interpreter as follows:</p>
<pre><kbd>eruby helloworld.rhtml</kbd></pre>
<p>Note that the file extension doesn&#8217;t actually matter. You could use <code>.erb</code>, if you like, or any other arbitrary file extension. The file extension is, as you&#8217;ll see later, only used for telling Apache which kind of file it is. So once you come up with file extension you like, stick with it. The standard file extensions are either <code>.rhtml</code> or <code>.erb</code>, so I&#8217;d recommend using one of those. (I prefer <code>.erb</code>, myself, since I don&#8217;t necessarily only want to create <acronym title="HyperText Markup Language">HTML</acronym> pages. I might want to create <acronym title="eXtensible Markup Language">XML</acronym> documents like news feeds or even <acronym title="eXtensible Markup Language">XML</acronym> databases, so <code>.erb</code> seems a more reasonable file name extension, though most of the eRuby documentation uses <code>.rhtml</code>.)</p>
<p>If things worked properly, you should see output similar to the following:</p>
<pre><samp class="plaintext">Hello world! The time is now Wed Oct 24 21:58:54 -0400 2007.</samp></pre>
<h3>Serve it up!</h3>
<p>Now that eRuby is installed and working, the next step is to set it up as a <acronym title="Common Gateway Interface">CGI</acronym> so that when your web server (Apache, in my case) fetches the file it will first feed it through eRuby for processing before sending it back to the browser. The simplest way to do this is to configure Apache to use a specific directory somewhere on your filesystem as a <acronym title="Common Gateway Interface">CGI</acronym> directory—that is, a directory whose contents are all treated as <acronym title="Common Gateway Interface">CGI</acronym> programs. You do this via Apache&#8217;s <a href="//httpd.apache.org/docs/1.3/mod/mod_alias.html#scriptalias" title="Documentation for Apache's ScriptAlias directive."><code>ScriptAlias</code></a> directive.</p>
<p>Conveniently, standard installations of Mac <acronym title="Operating System">OS</acronym> X already come with a <acronym title="Common Gateway Interface">CGI</acronym> directory. It&#8217;s located at <code>/Library/WebServer/CGI-Executables</code>. This directory is just like any other, except that Apache treats it specially. It treats it specially because Apache&#8217;s configuration file, <code>/etc/httpd/httpd.conf</code> contains a line of text that reads as follows. (On a standard installation of Mac <acronym title="Operating System">OS</acronym> X client, this is line 671 of the file.)</p>
<pre><code class="httpd-conf">ScriptAlias /cgi-bin/ "/Library/WebServer/CGI-Executables/"</code></pre>
<p>This line basically just tells apache, &#8220;Treat every file in the <code>/Library/WebServer/CGI-Executables</code> directory as though it were a <acronym title="Common Gateway Interface">CGI</acronym> program.&#8221; So, since that&#8217;s how we&#8217;re treating eRuby, we&#8217;re going to want to put our <code>eruby</code> binary in that directory. However, we don&#8217;t actually want to make copies of the binary. Having too many copies of a program on your system can easily get confusing. So instead, we&#8217;ll make a symbolic link (or an alias to use the classic Mac terminology) to the binary.</p>
<pre><kbd>ln -s /opt/local/bin/eruby /Library/WebServer/CGI-Executables/eruby</kbd></pre>
<p>With our <code>eruby</code> <acronym title="Common Gateway Interface">CGI</acronym> executable in the proper place for Apache to find it, we can now tell Apache which files we want it to send to this program. We do this using the <a href="//httpd.apache.org/docs/1.3/mod/mod_mime.html#addhandler" title="Documentationf or Apache's AddHandler directive."><code>AddHandler</code></a> and <a href="//httpd.apache.org/docs/1.3/mod/mod_actions.html#action" title="Documentation for Apache's Action directive."><code>Action</code></a> directives.</p>
<p><code>AddHandler</code> simply tells Apache to treat files with a certain extension in a certain way. For instance, you can say something like, &#8220;Treat all files ending in <code>.php</code> as <acronym title="PHP Hypertext Preprocessor; an HTML-embedded scripting language">PHP</acronym> scripts.&#8221; Similarly, you can (and will) tell Apache, &#8220;Treat all files ending in <code>.rhtml</code> or <code>.erb</code> as eRuby <acronym title="Common Gateway Interface">CGI</acronym> pages.&#8221;</p>
<p>To do this, we add the following line to our <code>/etc/httpd/users/<var>username</var>.conf</code> file somewhere inside the <code>&lt;Directory&gt;</code> and <code>&lt;/Directory&gt;</code> block. Naturally, replace <var>username</var> with, of course, your <a href="//docs.info.apple.com/article.html?artnum=106824" title="Apple KBase Article number 106824 describes use short names in more detail.">Mac <acronym title="Operating System">OS</acronym> X user&#8217;s short name</a>:</p>
<pre><code class="httpd-conf">AddHandler rubypage .erb .rhtml</code></pre>
<p>Again, this just tells Apache that files ending in <code>.erb</code> and <code>.rhtml</code> should be treated the same way other <code>rubypage</code>s are treated. But how are eRuby pages supposed to be treated? They&#8217;re supposed to be handed off to the eRuby program, of course, so we need an <code>Action</code> directive that applies to the <code>rubypage</code> handler we just defined.</p>
<p>Right below the above line, add the following line, too:</p>
<pre><code class="httpd-conf">Action rubypage /cgi-bin/eruby</code></pre>
<p>This line tells Apache that any file that it is treating as a &#8220;rubypage&#8221; file should be sent to the program at the <acronym title="Uniform Resource Locator">URL</acronym> accessible at <code>/cgi-bin/eruby</code>, which we&#8217;ve defined earlier to be our symbolic link to the <code>eruby</code> interpreter.</p>
<p>Your completed user-specific Apache configuration file should now look something like this:</p>
<pre><code class="httpd-conf">&lt;Directory "/Users/<var>username</var>/Sites/"&gt;
&hellip;
    # Let eRuby files get parsed through the proper <acronym title="Common Gateway Interface">CGI</acronym> binary
    AddHandler rubypage .erb .rhtml
    Action rubypage /cgi-bin/eruby
&lt;/Directory&gt;</code></pre>
<h3>Are You Being Served?</h3>
<p>That&#8217;s it, everything should now be in place. To make sure, move your earlier <code>helloworld.rhtml</code> file into your user&#8217;s <code>Sites</code> folder, and now simply point your browser to <code>http://localhost/~<var>username</var>/helloworld.rhtml</code> (again, replacing <var>username</var> with your Mac <acronym title="Operating System">OS</acronym> X user short name, of course). Congratulations, you&#8217;re serving up Ruby-coded applications via eRuby.</p>
<h3>Additional Reading</h3>
<p>This is just the set up, of course. Now the real fun begins: learning Ruby. Here are some suggested places to start.</p>
<ul>
<li><a href="//www.ruby-doc.org/docs/ProgrammingRuby/html/web.html">Programming Ruby: Ruby and the Web</a> — A chapter out of the free book <cite>Programming Ruby</cite> all about Ruby as a <acronym title="Common Gateway Interface">CGI</acronym> programming language.</li>
<li><a href="//hiveminds.co.uk/node/3189">Hiveminds: eRuby: How to use Ruby <acronym title="Common Gateway Interface">CGI</acronym> and ERB templating for Web Pages</a> — a quick&#8217;n'dirty article explaining the basics of using Ruby on web pages in classic <acronym title="Common Gateway Interface">CGI</acronym> style where program logic and <acronym title="HyperText Markup Language">HTML</acronym> templates are kept separated, as opposed to classic <acronym title="PHP Hypertext Preprocessor; an HTML-embedded scripting language">PHP</acronym> style, where the two are mingling together on one page.</li>
<li><a href="//coolnamehere.com/geekery/ruby/web/cgi.html">COOLNAMEHERE: Simple Ruby <acronym title="Common Gateway Interface">CGI</acronym></a> — Like the Hiveminds example above, another quick&#8217;n'dirty Ruby <acronym title="Common Gateway Interface">CGI</acronym> how-to.</li>
<li><a href="//ruby-doc.org/stdlib/libdoc/cgi/rdoc/index.html">cgi: Ruby Standard Library Documentation</a> — Ruby&#8217;s standard library contains a rich set of features, and the <acronym title="Common Gateway Interface">CGI</acronym> objects are among them. They are well-documented in the official Ruby Documentation Project.</li>
</ul>
<p>Naturally, feel free to leave comments if you have more resources that you found helpful.</p>
]]></content:encoded>
			<wfw:commentRss>http://maymay.net/blog/2007/10/25/no-framework-ruby-on-the-web-using-eruby-on-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>The 10 Geekiest Leopard Features I Will Probably Love</title>
		<link>http://maymay.net/blog/2007/10/18/the-10-geekiest-leopard-features-i-will-probably-love/</link>
		<comments>http://maymay.net/blog/2007/10/18/the-10-geekiest-leopard-features-i-will-probably-love/#comments</comments>
		<pubDate>Thu, 18 Oct 2007 15:45:59 +0000</pubDate>
		<dc:creator>Meitar</dc:creator>
				<category><![CDATA[AppleScript]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Security & Privacy]]></category>
		<category><![CDATA[Tech News]]></category>
		<category><![CDATA[Tech/Computing]]></category>
		<category><![CDATA[Unix/Linux]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://maymay.net/blog/archives/2007/10/18/the-10-geekiest-leopard-features-i-will-probably-love/</guid>
		<description><![CDATA[This is already horribly old news, and by old I mean several days ago since that&#8217;s about as fast as it takes technology news to grow old, but Apple is releasing Mac OS X 10.5 &#8220;Leopard&#8221; at the end of this month. Apple is calling this release a &#8220;major upgrade,&#8221; and indeed Apple has rarely [...]]]></description>
			<content:encoded><![CDATA[<p>This is already horribly old news, and by old I mean several days ago since that&#8217;s about as fast as it takes technology news to grow old, but Apple is releasing Mac <acronym title="Operating System">OS</acronym> X 10.5 &#8220;Leopard&#8221; at the end of this month. Apple is calling this release a &#8220;major upgrade,&#8221; and indeed Apple has rarely made its users wait so long between operating system releases as they have done between Tiger (Mac <acronym title="Operating System">OS</acronym> X 10.4) and Leopard. So, I&#8217;m already excited.</p>
<p>But then today I was glossing over <a href="//apple.com/macosx/features/300.html">Apple&#8217;s featured features list</a> and I got even more excited. There are the usual, largely meaningless, fluff updates that are nice for Joe Schmo or his mother, but that power users simply don&#8217;t care about, like the new iChat support for animated buddy icons, but the list is also chock-full of really cool, really <em>useful</em> features.</p>
<p>What&#8217;s interesting is that a good deal of these features aren&#8217;t really new features at all. For instance, if you knew how to manipulate the NetInfo database on your Mac, you could already share any folder via Apple&#8217;s &#8220;Personal File Sharing&#8221; feature. (Here&#8217;s a <a href="http://www.macosxhints.com/article.php?story=20011108161839416">Mac <acronym title="Operating System">OS</acronym> X Hints hint explaining how to do it</a>.) In Leopard, however, Apple claims that this functionality is now integrated straight into a folder&#8217;s Get Info… window. If it works as smoothly as Apple claims, this is finally going to bring Mac <acronym title="Operating System">OS</acronym> X (client) into decent competition with Windows XP Professional in terms of <acronym title="Graphical User Interface">GUI</acronym>-level power-user features.</p>
<p>However, while all of these features are really cool, here&#8217;s a list of the ten geekiest features I will probably absolutely love, for one reason or another.</p>
<ul>
<li id="li-1"><strong>Ruby on Rails, out of the box</strong> — <em>The</em> hot thing in web development right now is Ruby on Rails. Macs have already been the best personal desktop and web development platform because they have built-in support for the Apache web server and a host of other features, but now they will come with a ready-to-roll installation of Ruby on Rails, sporting Mongrel and (better yet) Capistrano! Specifically with the addition of Capistrano, which is terribly undersold as simply a Ruby on Rails deployment platform, these UNIX-y &#8220;toolbox&#8221; items are bound to make Macs that much more useful right out of the box.</li>
<li id="li-2"><strong>Safari&#8217;s full history search</strong> — As their recent public partnerships with Google have shown, Apple is very clearly invested in search technologies. Spotlight gets a huge number of improvements in Leopard, but none which I think are going to be more useful to more people than this one: spotlight searches on the full text of each web page in your visited history list. That&#8217;s just awesome. Also awesome: using spotlight as a calculator and as a dictionary, which also shows just how Google-like Apple is trying to be. (<a href="http://www.google.com/help/cheatsheet.html">Google also lets you ask it arithmetic questions and a dictionary</a>.)</li>
<li id="li-3"><strong>Wikipedia articles in Dictionary.app</strong> — I <em>love</em> Wikipedia because it&#8217;s one of the fastest ways to get (relatively) reliable information quickly. Now that Dictionary.app has built-in integration with Wikipedia, imagine the possibilities for getting that knowledge instant-gratification craving fixed. Apple has not yet announced this capability, but I can easily envision a scenario where all Cocoa text fields are instantly &#8220;wikified&#8221; (with text that matches Wikipedia articles highlighted) much in the same way that current Cocoa text fields allow you to right-click on a misspelled word and have it corrected by Dictionary.app.</li>
<li id="li-4"><strong><a href="http://www.apple.com/macosx/features/300.html#security">Application-based firewall</a></strong> — In classic Apple fashion, functionality that was previously available via third-party additions is now available from Apple itself. In this case, I have to wonder how well Apple&#8217;s updates to its firewall will obviate the need for <a href="http://www.obdev.at/products/littlesnitch/index.html">Little Snitch</a>, which is basically an application-based firewall, too, and a good one at that.</li>
<li id="li-5"><strong>Built-in <em>guest</em> log-in account</strong> — If you&#8217;re as paranoid about security as I am, you&#8217;ve already created a special, limited-access user on your system (called Guest or Visitor or whatever) and whenever friends are over, you tell them to use that account instead of your own. Now in Leopard, Apple has gone through the trouble of setting this up for us already. A small change that is going to have a big impact.</li>
<li id="li-6"><strong>Scriptable System Preferences &amp; applications</strong> — With AppleScript, you can automate the things your computer does with scripts, as long as those things are &#8220;scriptable.&#8221; In previous versions of Mac <acronym title="Operating System">OS</acronym> X, huge gaping holes of what things shipped by Apple were scriptable existed, causing me (personally) some really annoying headaches. AppleScript <acronym title="Graphical User Interface">GUI</acronym> scripting helped me get around many of those roadblocks, but now it seems Apple is finally filling in some of the most notorious gaps in this functionality with scriptable System Preferences. Yay!</li>
<li id="li-7"><strong>Automator workflow variables</strong> — Automator brings the power of AppleScript I just mentioned to more people with a completely graphic programming environment. There is no need to open up a text document and write AppleScript code because Automator lets you create a script (called a Workflow in Automator jargon) using your mouse by dragging and dropping <dfn>actions</dfn> into the order you want them to be performed. It&#8217;s very slick, but until now it&#8217;s been very limited. With Leopard, Apple is beefing up Automator so that it includes things like variables, basic programmatic capability that was sorely lacking before. (Also majorly cool: a command-line utility to access Automator!)</li>
<li id="li-8"><strong><a href="http://www.apple.com/macosx/features/300.html#finder">Finder.app&#8217;s path bar</a></strong> — Every serious Mac user knows that the Finder needs a lot of help. Now, it&#8217;s getting some. Something the Windows Explorer has had forever (as had every desktop environment for Linux, of course) is a visual cue to show you where in your filesystem tree a given folder is located when you are viewing said folder. Now the Finder gains this capability (though Apple&#8217;s description implies that it&#8217;s going to be off by default) with what Apple is calling a &#8220;Path Bar&#8221;. Finally!</li>
<li id="li-9"><strong>Cocoa and scripting bridges</strong> — Even though no one really seems to know about it, it has long been possible for languages other than AppleScript to do things like send Apple Events to Mac <acronym title="Operating System">OS</acronym> X applications. Specifically, Ruby and JavaScript, two of the most well-known web development languages in existence, can already do this with a single ScriptingAddition (OSAX). But now Apple is making this functionality a central feature <em>and</em> fully extending it to their Objective-C (and Cocoa) language and applications such as Xcode and Interface Builder. This means people like me will have a shallower learning curve before we&#8217;re able to create full-fledged, native Mac <acronym title="Operating System">OS</acronym> X applications. Now <em>that&#8217;s</em> exciting!</li>
<li id="li-10"><strong>Xcode 3 refactoring</strong> — This is something you kind of have to see to believe. I got the opportunity to see it demoed at Apple&#8217;s Leopard Tech Talks last year and I was really excited by it. With the new Xcode, Apple&#8217;s development <acronym title="Integrated Drive Electronics">IDE</acronym>, you can do away with find-and-replace searches for things like renaming functions because Xcode understands what parts of your code are what structures and, when you tell it to &#8220;change the function named myFunction to myNewFunction,&#8221; it&#8217;ll only find-and-replace <em>function names</em> instead of every instance of the string &#8220;myFunction.&#8221; That&#8217;s pretty big, and if it were available for more languages, it&#8217;s <em>almost</em> enough to make me ditch <code>vim</code>.</li>
</ul>
<p>So there you have it. Ten features you might not have already known about that are some of the most promising features I can see in Leopard. And I didn&#8217;t even get into Wide-Area Bonjour, which could make services like DynDNS or No-<acronym title="Internet Protocol">IP</acronym> a thing of the past (and which I still want to learn more about), or the new Terminal application (finally with tabs!), or even the multiple user certificates for S/MIME encrypted email.</p>
<p><ins datetime="2007-10-24T15:04-0500"><strong>Note:</strong> One of the least known security features available on Mac <acronym title="Operating System">OS</acronym> X is also possibly one of the best, and the simplest. Evidently, <a href="http://developer.apple.com/documentation/MacOSX/Conceptual/universal_binary/universal_binary_diffs/chapter_3_section_6.html">all Intel-based Macs are shipped with the <acronym title="eXecute Disable; a feature of modern Intel chipsets that prevent execution of memory from the stack">XD</acronym> (<acronym title="Also Known As">aka</acronym>. <acronym title="No eXecute; a feature of AMD's modern chipsets that prevent execution of memory from the stack">NX</acronym>, <acronym title="Also Known As">aka</acronym>. <acronym title="Data Execution Prevention; Micosoft Windows's supporting implementation of Intel's Execute Disable bit">DEP</acronym>) bit turned on</a>—and thankfully there doesn&#8217;t seem to be any way for users to turn it off. However, this isn&#8217;t a silver bullet and if you want to learn why you should check out this excellent <a href="//anandtech.com/cpuchipsets/showdoc.aspx?i=2239">Anandtech article: <cite>A Bit About the <acronym title="No eXecute; a feature of AMD's modern chipsets that prevent execution of memory from the stack">NX</acronym> Bit</cite></a>.</ins></p>
]]></content:encoded>
			<wfw:commentRss>http://maymay.net/blog/2007/10/18/the-10-geekiest-leopard-features-i-will-probably-love/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

