<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xml:lang="ja-JP">
<channel rdf:about="http://qz.tsugumi.org/">
<title>qzのメモ帳</title>
<link>http://qz.tsugumi.org/</link>
<description>qzのメモ帳 Recent Changes</description>
<dc:language>ja</dc:language>
<dc:rights>Copyright (C) qz</dc:rights>
<dc:date>2011-04-15T01:28:41+00:00</dc:date>
<items>
<rdf:Seq>
<rdf:li resource="http://qz.tsugumi.org/Perl_IO_Handle.html"/>
<rdf:li resource="http://qz.tsugumi.org/UAControl.html"/>
<rdf:li resource="http://qz.tsugumi.org/Memo.html"/>
<rdf:li resource="http://qz.tsugumi.org/man_hdiutil.html"/>
<rdf:li resource="http://qz.tsugumi.org/City_Story.html"/>
<rdf:li resource="http://qz.tsugumi.org/drug_mistakes.html"/>
<rdf:li resource="http://qz.tsugumi.org/memo_command.html"/>
<rdf:li resource="http://qz.tsugumi.org/Perl_LWP.html"/>
<rdf:li resource="http://qz.tsugumi.org/man_mdutil.html"/>
<rdf:li resource="http://qz.tsugumi.org/Perl_socket.html"/>
</rdf:Seq>
</items>
</channel>
<item rdf:about="http://qz.tsugumi.org/Perl_IO_Handle.html">
<title>Perl - IO::Handle</title>
<link>http://qz.tsugumi.org/Perl_IO_Handle.html</link>
<dc:date>2011-04-15T01:28:41+00:00</dc:date>
<content:encoded><![CDATA[<div><h2><span id="l0" class="title">概要</span></h2>
<p>入出力ハンドルにオブジェクト指向的なメソッドを導入させたもの。IO::Socket::INET などで返される他、ファイルハンドルについても適用することが可能。</p>
<h2><span id="l1" class="title">メソッド</span></h2>
<p>print を始め、read、eof、close など、ファイルハンドルに対して用いる関数が使用可能。</p>
<h2><span id="l2" class="title">サンプル</span></h2>
<div class="syntax syntax_perl"><pre>
<span class="keyword">use</span> <span class="ident">IO</span><span class="punct">::</span><span class="ident">Socket</span><span class="punct">::</span><span class="ident">INET</span><span class="punct">;</span>

<span class="keyword">my</span> <span class="symbol">$c</span> <span class="punct">=</span> <span class="ident">IO</span><span class="punct">::</span><span class="ident">Socket</span><span class="punct">::</span><span class="ident">INET</span><span class="punct">-&gt;</span><span class="ident">new</span><span class="punct">(&quot;</span><span class="string">localhost:80</span><span class="punct">&quot;)</span> <span class="keyword">or</span> <span class="ident">die</span><span class="punct">;</span>

<span class="comment"># print $c ...;</span>
<span class="symbol">$c</span><span class="punct">-&gt;</span><span class="ident">print</span><span class="punct">(</span> <span class="ident">join</span><span class="punct">(&quot;</span><span class="string"><span class="escape">\r\n</span></span><span class="punct">&quot;,</span>
  <span class="punct">&quot;</span><span class="string">GET / HTTP/1.0</span><span class="punct">&quot;,</span>
  <span class="punct">&quot;</span><span class="string">Host: localhost</span><span class="punct">&quot;,</span>
  <span class="punct">&quot;</span><span class="string"></span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string"></span><span class="punct">&quot;</span>
<span class="punct">)</span> <span class="punct">);</span>

<span class="comment"># $_ = &lt;$c&gt;; print $_;</span>
<span class="ident">print</span> <span class="symbol">$c</span><span class="punct">-&gt;</span><span class="ident">getline</span><span class="punct">;</span>

<span class="ident">print</span> <span class="symbol">$c</span><span class="punct">-&gt;</span><span class="ident">eof</span><span class="punct">;</span> <span class="comment"># &quot;&quot;</span>

<span class="comment"># print &lt;$c&gt;;</span>
<span class="ident">print</span> <span class="symbol">$c</span><span class="punct">-&gt;</span><span class="ident">getlines</span><span class="punct">;</span>

<span class="ident">print</span> <span class="symbol">$c</span><span class="punct">-&gt;</span><span class="ident">eof</span><span class="punct">;</span> <span class="comment"># 1</span>

<span class="ident">print</span> <span class="symbol">$c</span><span class="punct">-&gt;</span><span class="ident">opened</span><span class="punct">;</span> <span class="comment"># 1</span>
<span class="symbol">$c</span><span class="punct">-&gt;</span><span class="ident">close</span><span class="punct">;</span>
<span class="ident">print</span> <span class="symbol">$c</span><span class="punct">-&gt;</span><span class="ident">opened</span><span class="punct">;</span> <span class="comment"># &quot;&quot;</span>
</pre></div>
<h2><span id="l3" class="title">リンク</span></h2>
<ul>
<li><a href="http://search.cpan.org/~gbarr/IO-1.25/lib/IO/Handle.pm" class="external">IO::Handle - search.cpan.org</a></li>
</ul>
</div>]]></content:encoded>
</item>
<item rdf:about="http://qz.tsugumi.org/UAControl.html">
<title>UAControl</title>
<link>http://qz.tsugumi.org/UAControl.html</link>
<dc:date>2011-01-26T03:32:07+00:00</dc:date>
<content:encoded><![CDATA[<div><p>English version of this document is <a href="http://neko.tsugumi.org/UAControl.html" class="external">http://neko.tsugumi.org/UAControl.html</a>.</p>
<h2><span id="l0" class="title">概要</span></h2>
<p>Firefox の拡張です。ウェブサイトのホスト毎に、送信する User-Agent ヘッダを指定することが出来ます。リファラをサイト毎に指定できる拡張、<a href="https://addons.mozilla.org/ja/firefox/addon/953" class="external">RefControl</a> の改変です。</p>
<h2><span id="l1" class="title">スクリーンショット</span></h2>
<ul>
<li><span class="plugin">{{vlink("http://qz.tsugumi.org/res/img/uacontrol-snapshot.png","image","UAControl")}}</span></li>
</ul>
<p>上のように設定された場合、ドメイン blog.livedoor.jp 以下のサイトには "WindowXPのIE6.0" としてユーザーエージェントが送信され、localhost、www.google.com、www.yahoo.co.jp にはデフォルトのユーザーエージェント名が用いられます。その他のサイトには "Default for sites not listed" で指定されたユーザーエージェント名が用いられ、初期状態ではブラウザネイティブの文字列です。</p>
<h2><span id="l2" class="title">対応する Firefox の版</span></h2>
<p>3.6 - 4.0b8pre</p>
<h2><span id="l3" class="title">インストール</span></h2>
<ul>
<li><a href="https://addons.mozilla.org/ja/firefox/addon/252542" class="external">UAControl :: Add-ons for Firefox</a></li>
</ul>
<h3><span id="l4" class="sanchor">注意事項</span></h3>
<p>以前の版（0.0.2 まで）の UAControl をインストールしている場合は、まずアンインストールして下さい。ファイル構成及び拡張識別子を変更したため、別の拡張としてみなされます。</p>
<h2><span id="l5" class="title">使い方</span></h2>
<p>使い方、操作法などはほぼ RefControl に準じています。ただし RefControl ではリファラを指定する際にアスタリスクや $URL, $REF 等の変数が使えましたが、UAControl では使えません。またステータスバーに User-Agent として用いられる文字列を表示する機能は削除しています。</p>
<p>ステータスバーのアイコンを非表示にした場合、メニューバーの「ツール」から設定を行うことができます。</p>
<h3><span id="l6" class="sanchor">サブドメイン</span></h3>
<p>例としてドメイン yahoo.com について設定した場合、www.yahoo.com や finance.yahoo.com などのサブドメインについても yahoo.com における設定が使用されます。切り分けたい場合は、それぞれのサブドメインについて設定を行うことが必要です。</p>
<h2><span id="l7" class="title">備考</span></h2>
<p>ロケールは en-US と ja-JP のみ対応しています。</p>
<h3><span id="l8" class="sanchor"><a href="https://addons.mozilla.org/ja/firefox/addon/59" class="external">User Agent Switcher</a>との違い</span></h3>
<p>User Agent Switcher は JavaScript による UA 名も書き換えることが可能ですが、UAControl では単に User-Agent ヘッダを置き換えることしか出来ません。ただし UAControl では、送信する User-Agent 文字列を各ドメインごとに変更・保存することが可能です。</p>
<h2><span id="l9" class="title">履歴</span></h2>
<ul>
<li>2011/01/26 - 0.1.2.1 - Firefox 4.0.* へ対応</li>
<li>2010/11/25 - 0.1.1</li>
<li>2010/11/21 - 0.1.0 - オプションダイアログのメニュー内のチェックボックスが働かない不具合を修正、その他細かな不具合を修正、Firefox 3.5 以前での対応を打ち切り</li>
<li>2010/11/17 - 0.0.6 - アイコンを RefControl の改変のものから変更 (<a href="http://www.iconfinder.com/icondetails/32045/128/browser_earth_internet_world_icon" class="external">www.iconfinger.com</a>)</li>
<li>2010/11/10 - 0.0.5 - コードを整理</li>
<li>2010/11/09 - 0.0.4 - Firefox 4b へ対応</li>
<li>2009/01/11 - 0.0.2 - Firefox 3.6 へ対応</li>
<li>2008/04/04 - 0.0.1</li>
</ul>
<h2><span id="l10" class="title">リンク</span></h2>
<ul>
<li><a href="https://addons.mozilla.org/ja/firefox/addon/953" class="external">RefControl :: Firefox Add-ons</a></li>
<li><a href="http://www.stardrifter.org/refcontrol/" class="external">RefControl - Firefox Extension</a></li>
</ul>
<h2><span id="l11" class="title">連絡先</span></h2>
<p>xxsuke at gmail.com</p>
</div>]]></content:encoded>
</item>
<item rdf:about="http://qz.tsugumi.org/Memo.html">
<title>メモ</title>
<link>http://qz.tsugumi.org/Memo.html</link>
<dc:date>2011-01-25T09:42:11+00:00</dc:date>
<content:encoded><![CDATA[<div><h2><span id="l0" class="title">manpage の日本語訳</span></h2>
<h3><span id="l1" class="sanchor">Mac OS 特有のコマンド類</span></h3>
<p>Mac OS X 10.4 あるいは 10.6 の manpage より</p>
<ul>
<li><a href="man_diskutil.html">diskutil(8)</a></li>
<li>drutil(8)</li>
<li><a href="man_SystemStarter.html">SystemStarter(8)</a></li>
<li><a href="man_ConsoleMessage.html">ConsoleMessage(8)</a></li>
<li><a href="man_hdiutil.html">hdiutil(1)</a></li>
<li><a href="man_mdutil.html">mdutil(1)</a></li>
<li><a href="man_newfs_hfs.html">newfs_hfs(8)</a></li>
<li><a href="man_SetFile.html">SetFile(1)</a></li>
<li><a href="man_vm_stat.html">vm_stat(1)</a></li>
</ul>
<h3><span id="l2" class="sanchor">その他</span></h3>
<ul>
<li><a href="man_lftp.html">lftp(1)</a></li>
</ul>
<h2><span id="l3" class="title">その他のメモ</span></h2>
<ul>
<li><a href="usage_hdiutil.html">hdiutil の使い方</a></li>
<li><a href="memo_command.html">コマンド覚え書き</a></li>
</ul>
</div>]]></content:encoded>
</item>
<item rdf:about="http://qz.tsugumi.org/man_hdiutil.html">
<title>hdiutil(1)</title>
<link>http://qz.tsugumi.org/man_hdiutil.html</link>
<dc:date>2011-01-25T09:41:20+00:00</dc:date>
<content:encoded><![CDATA[<div><div class="plugin">{{nc}}</div>
<h2><span id="l0" class="title">名前</span></h2>
<p><span class="mancmd">hdiutil</span> -- ディスクイメージを扱う (アタッチ, 検証, 焼き込み, その他)</p>
<h2><span id="l1" class="title">書式</span></h2>
<p><span class="mancmd">hdiutil</span> <span class="manarg">verb</span> [options]</p>
<h2><span id="l2" class="title">概要</span></h2>
<p>hdiutil はディスクイメージを扱うために DiskImages フレームワークを用いる。主な動作として attach, detach, verify, create, convert, compact, burn が含まれる。
その他の動作として現在以下のものがある。help, info, checksum, chpass, unflatten, flatten, imageinfo, isencrypted, mountvol, unmount, plugins, udifrez, udifderez, internet-enable, resize, segment, makehybrid, pmap。</p>
<h2><span id="l3" class="title">背景</span></h2>
<p>ディスクイメージはディスクをエミュレートする"入れ物"（コンテナ）である。ディスクと同様に、パーティションの作成やフォーマットが可能である。ディスクイメージの多用はディスクイメージコンテナとその中身との区別を不明瞭にさせるが、この区別はディスクイメージの理解のために重要である。"attach" と "detach" はディスクイメージのシステムとの接続、接続解除の方法として区別するために用いられる。</p>
<p>例えば、Mac OS X の Finder でディスクイメージをダブルクリックする場合、二つの分離された出来事が起こる。まず、イメージが外部ドライブと同じようにシステムに "attach" される。そして、カーネルとディスク管理システムは認識されたファイル構造に従い新しいデバイスを探す。もしいずれかのファイル構造が確認されれば、関連付けられたボリュームがマウントされ Finder 上に現れる。</p>
<p>"ディスクイメージ" の処理がディスクイメージデバイスのブロックに対して、あるいは（たいていの場合ファイルである）イメージの内容に対して適用されるか、考慮すること。例えば、verify は読み込み専用ディスクイメージの中のブロックが作成されて以降変更されていないか検証する。一方、create -srcfolder はディスクイメージコンテナを作成し、ファイルシステムをその中に加え、指定されたファイルを新たなファイルシステムにコピーする。</p>
<h2><span id="l4" class="title">共通オプション</span></h2>
<p><span class="mancmd">hdiutil</span> はどの動作においても以下のオプションを受け取る。</p>
<dl>
<dt><span class="manopt">-verbose</span></dt><dd> 出力を冗長にする（既定では出力は少ない）。ある操作が失敗する場合、その理由を明らかにすることに役立つ。少なくとも、特定のイメージについての厳密な報告が出力される。</dd>
</dl>
<dl>
<dt><span class="manopt">-quiet</span></dt><dd>標準出力及び標準エラー出力を閉じ、コマンドが正常に行われたかどうかは終了ステータスのみによって示される。<span class="manopt">-debug</span> や <span class="manopt">-verbose</span> が同時に指定された場合、無視される。</dd>
</dl>
<dl>
<dt><span class="manopt">-debug</span></dt><dd>非常に詳細な出力をする。<span class="mancmd">hdiutil</span> と DiskImages フレームワークが行うことについての大量の情報が必要な場合に用いられる。Mac OS X 10.6 からは、<span class="manopt">-debug</span> は <span class="manopt">-verbose</span> を有効にする。</dd>
</dl>
<p><span class="mancmd">hdiutil</span> の多くの動作は、以下のオプションを理解する。</p>
<dl>
<dt><span class="manopt">-plist</span></dt><dd>結果出力を plist 形式で提供する。<span class="mancmd">hdiutil</span> を起動した他のプログラムは、通常の出力を解析するよりも <span class="manopt">-plist</span> を用いた方が良いであろう。通常の出力は、矛盾はないものの構造的ではない。</dd>
</dl>
<dl>
<dt><span class="manopt">-puppetstrings</span></dt><dd>進捗の出力表示を提供する。進捗表示により、他のプログラムにとって解析し易くなる。プログラム側で <span class="mancmd">hdiutil</span> の進捗を知りたい場合は、<span class="manopt">-puppetstrings</span> オプションを使うと良い。</dd>
</dl>
<dl>
<dt><span class="manopt">-srcimagekey</span> <span class="manarg">key=value</span></dt><dd>ディスクイメージ認識システムへ渡される key/value ペアを指定する。（<span class="manopt">-imagekey</span> と同じ）</dd>
</dl>
<dl>
<dt><span class="manopy">-tgtimagekey</span> <span class="manarg">key=value</span></dt><dd>作られたイメージへ渡される key/value ペアを指定する。（入力側イメージが存在しなければ、<span class="manopt">-imagekey</span> と同じ）</dd>
</dl>
<dl>
<dt><span class="manopt">-encryption</span> [<span class="manarg">AES-128|AES-256</span>]</dt><dd>特定の暗号化アルゴリズムを指定する。指定されなければ、既定のアルゴリズムが用いられる。既定のアルゴリズムは 128 ビット鍵の AES 暗号を用いる。</dd>
</dl>
<dl>
<dt><span class="manopt">-stdinpass</span></dt><dd>標準入力から NULL で終端されたパスワード文字列を読む。標準入力がキャラクタ端末の場合、readpassphrase(3) によってパスワード文字列を読み込む。<span class="manopt">-stdinpass</span> は <span class="manopt">-passphrase</span> を置き換える。<span class="manopt">-passphrase</span> は互換性のためにサポートされている。パスワードには NULL より前に改行文字が含まれるかも知れないことに気を付けること。例の項目を参照。</dd>
</dl>
<dl>
<dt><span class="manopt">-agentpass</span></dt><dd>パスフレーズの入力の要求を既定の振る舞いとして強制する。:<span class="manopt">-pubkey</span> を用いてパスフレーズ及び公開鍵にて保護されたイメージを作成する場合に有用である。</dd>
</dl>
<dl>
<dt><span class="manopt">-recover</span> <span class="manarg">keychain_file</span></dt><dd>イメージが作られた時に <span class="manopt">-certificate</span> で用いられた証明書に対応するキーチェインを指定する。</dd>
</dl>
<dl>
<dt><span class="manopt">-certificate</span> <span class="manarg">certificate_file</span></dt><dd>作られるイメージに対する証明書を指定する。</dd>
</dl>
<dl>
<dt><span class="manopt">-pubkey</span> <span class="manarg">PK1,PK2,...,PKn</span></dt><dd>16 進数ハッシュで署名された公開鍵のリストを指定する。保護された暗号化イメージの作成に用いられる。</dd>
</dl>
<dl>
<dt><span class="manopt">-cacert</span> <span class="manarg">cert</span></dt><dd>認証局の証明書を指定する。<span class="manarg">cert</span> は PEM ファイルあるいは c_rehash(1) が処理する証明書ディレクトリのどちらかを用いる。curl(1) の <span class="manopt">--capath</span> と <span class="manopt">--cacert</span> の項目も参照。</dd>
</dl>
<dl>
<dt><span class="manopt">-insecurehttp</span></dt><dd>SSL ホストの妥当性の確認を無視する。適切な証明を得ていない自己署名のサーバを利用する場合や、サーバ名が証明書のものと一致しないがサーバへのアクセスを強制する場合に有用である。</dd>
</dl>
<dl>
<dt><span class="manopt">-shadow</span> [<span class="manarg">shadowfile</span>]</dt><dd>イメージのデータ連結に shadow（=非実質的な仮想の）ファイルを利用する。このオプションにより、元のイメージファイルの変更を避けつつ読み込み専用イメージに対して読み書きを行えるようにする。イメージからブロックが読み込まれると、shadow ファイルに存在するブロックは元のイメージのブロックを上書きする。アタッチされたデバイスに対して書き込まれた全てのデータは、shadow ファイルにリダイレクトされる。オプションの引数が指定されなければ、<span class="manopt">-shadow</span> は既定の値として <span class="manarg">image</span>.shadow を用いる。シャドウファイルが存在しなければ新たに作られる。<span class="manopt">-shadow</span> は <span class="manopt">-cacert</span> や <span class="manopt">-insecurehttp</span> と同時に使用可能である。</dd>
</dl>
<p>イメージを作成する動作は、ファイル名が拡張子を持たない場合に自動的に基準に則った拡張子をファイル名に追加する。また与えられたファイル名によって、作成過程の振る舞いは適切に変更される。例えば、スパースイメージは拡張子として <code>.sparseimage</code> を持つファイル名が渡されれば、<code>-type SPARSE</code> を指定することなしに作成される。</p>
<h2><span id="l5" class="title">動作</span></h2>
<p>それぞれの動作について概要と引数を挙げる。引数は順不同である。セクタは 512 バイトである。</p>
<h3><span id="l6" class="sanchor"><span class="manopt">help</span></span></h3>
<p>動作についての最小限の使用法を表示する。<span class="mancmd">hdiutil</span> <span class="manarg">verb</span> <span class="manopt">-help</span> によって、その動作についての詳細な使用法が提供される。</p>
<h3><span id="l7" class="sanchor"><span class="manopt">attach</span> <span class="manarg">image</span> [<span class="manarg">options</span>]</span></h3>
<p>ディスクイメージをデバイスとしてシステムにアタッチする。<span class="manopt">attach</span> は hdid(8) のように、既にアタッチされたイメージについての情報をアタッチされたものとして返す。マウント (mount) とアタッチ (attach) は同義である。</p>
<p>新しく作成されアタッチされたイメージは新たなリムーバブルデバイスとして扱われることに気を付けること。詳しくは hdid(8) と例の項目を参照のこと。</p>
<p>共通オプション: <span class="manopt">-encryption</span>, <span class="manopt">-stdinpass</span>, <span class="manopt">-recover</span>, <span class="manopt">-imagekey</span>, <span class="manopt">-shadow</span>, <span class="manopt">-puppetstrings</span>, <span class="manopt">-plist</span></p>
<h4><span id="l8">オプション</span></h4>
<dl>
<dt><span class="manopt">-readonly</span></dt><dd>読み込み専用デバイスとしてアタッチする。</dd>
<dt><span class="manopt">-readwrite</span></dt><dd>ディスクイメージが読み込み専用のイメージであってもそれを無視しようと試みる。例えば、<span class="manopt">-readwrite</span> は HFS/ISO ハイブリッド CD イメージ上の HFS ファイルシステムを変更する為に用いられる。</dd>
<dt><span class="manopt">-nokernel</span></dt><dd>ヘルパープロセスを利用してアタッチする。Mac OS X 10.5 以降ではデフォルトである。</dd>
<dt><span class="manopt">-kernel</span></dt><dd>ヘルパープロセスを利用せずにアタッチを試みる。出来なければ失敗する。</dd>
<dt><span class="manopt">-notremovable</span></dt><dd>イメージのデタッチを不可能にする。root のみが使用可能である。</dd>
</dl>
<dl>
<dt><span class="manopt">-mount</span> <span class="manarg">required|optional|suppressed</span></dt><dd>イメージのファイルシステムをマウントするか否かを指定する。OS X 10.2.x 以前では <span class="manarg">optional</span> が既定であるが、現在は <span class="manarg">required</span> が既定となっている。</dd>
<dt><span class="manopt">-nomount</span></dt><dd><span class="manopt">-mount</span> <span class="manarg">suppressed</span> と同義である。</dd>
<dt><span class="manopt">-mountroot</span> <span class="manarg">path</span></dt><dd>ボリュームを /Volumes ではなく <span class="manarg">path</span> にマウントする。<span class="manarg">path</span> は存在しなければならない。フルマウントポイントは MNAMELEN 個の文字列（Mac OS X 10.6 では 90 文字から 1024 文字へと増えた）以内で指定する。</dd>
<dt><span class="manopt">-mountrandom</span> <span class="manarg">path</span></dt><dd><span class="manopt">-mountroot</span> と似ているが、マウントポイントは mkdtemp(3) によってランダムなものになる。</dd>
<dt><span class="manopt">-mountpoint</span> <span class="manarg">path</span></dt><dd>一つのボリュームと仮定し、/Volumes の代わりに path へとマウントを行う。システム管理者が /etc/fstab を編集して自動的に特定のボリュームを特定のファイルシステム内の位置にマウントを行う方法については fstab(5) を参考のこと。</dd>
<dt><span class="manopt">-union</span></dt><dd>ユニオンマウントを行う。ユニオンマウントは Mac OS X では既にサポートされないため、無視される。</dd>
<dt><span class="manopt">-private</span></dt><dd>システムへのマウント通知を抑止する。<span class="manopt">-private</span> は Carbon ファイルマネージャを利用したプログラムを混乱させる為、通常の使用は避けるべきである。</dd>
<dt><span class="manopt">-nobrowse</span></dt><dd>ボリュームを Finder などのアプリケーションから不可視にする。</dd>
<dt><span class="manopt">-owners</span> <span class="manarg">on|off</span></dt><dd>HFS+ ボリュームに対する所有者の可否。システムのデフォルトの値を無視するかも知れない。</dd>
<dt><span class="manopt">-drivekey</span> <span class="manarg">key=value</span></dt><dd>IOKit レジストリのデバイスへアタッチされる key/value ペアを指定する。</dd>
</dl>
<p>以下のオプションは設定 com.apple.fremeworks.diskimages の要素に対応し、ポジティブ値ネガティブ値の両方で表される。</p>
<dl>
<dt><span class="manopt">-[no]verify</span></dt><dd>イメージの検証を行うかどうか。デフォルトでは、<span class="mancmd">hdiutil</span> <span class="manopt">attach</span> はアタッチの前にチェックサムを含む全てのイメージを検証する。後方互換性の為に、hdid(8) はイメージを検証しない。</dd>
<dt><span class="manopt">-[no]ignorebadchecksums</span></dt><dd>不正なチェックサムを無視するかどうかを指定する。デフォルトでは不正なチェックサムが検出された場合、アタッチは中断される。</dd>
<dt><span class="manopt">-[no]idme</span></dt><dd>IDME イメージに対する IDME アクションを行うかどうか。IDME アクションは通常ブラウザがダウンロード後アタッチする際にのみ行われる。</dd>
<dt><span class="manopt">-[no]idmereveal</span></dt><dd>IDME 処理の結果を（Finder で）表示する</dd>
<dt><span class="manopt">-[no]idmetrash</span></dt><dd>IDME イメージを処理後にゴミ箱へ送る</dd>
<dt><span class="manopt">-[no]autoopen</span></dt><dd>イメージをアタッチ後に（Finder で）ボリュームを自動的に開く。デフォルトでは、読み込み専用ボリュームのみが Finder で自動的に開かれる。</dd>
<dt><span class="manopt">-[no]autoopenro</span></dt><dd>読み込み専用ボリュームを自動的に開く</dd>
<dt><span class="manopt">-[no]autoopenrw</span></dt><dd>読み書き可能ボリュームを自動的に開く</dd>
<dt><span class="manopt">-[no]autofsck</span></dt><dd>ディスクイメージをマウントする前に自動的なファイルシステム検査を強制するかどうか。デフォルトでは、イメージがコンピュータで検査されたことがない場合のみ、検査が行われる。</dd>
</dl>
<h3><span id="l9" class="sanchor"><span class="manopt">detach</span> <span class="manarg">dev_name</span> [<span class="manopt">-force</span>]</span></h3>
<p>ディスクイメージをデタッチし、関連する hdid プロセスを終了する。<span class="manarg">dev_name</span> は（"disk1" のような）部分的な /dev ノードパスを指定する。OS X 10.4 では、<span class="manarg">dev_name</span> はマウントポイントでも良い。Disk Arbitration が動作していれば、<span class="manopt">detach</span> はそれを利用してファイルシステムをアンマウントし、イメージをデタッチする。動作していなければ、<span class="manopt">detach</span> は（"eject" ioctl を利用して）直接ファイルシステムのアンマウント、イメージのデタッチを行う。その場合、イメージのデタッチの前に umount(8) でファイルシステムをアンマウントは不要かも知れない。イジェクト（eject）はデタッチ（detach）と同義である。</p>
<h4><span id="l10">オプション</span></h4>
<dl>
<dt><span class="manopt">-force</span></dt><dd><code>umount -f</code>と同様である。イメージ中のファイルが開かれても構わずにファイルシステムをアンマウントし、イメージをデタッチする。</dd>
</dl>
<h3><span id="l11" class="sanchor"><span class="manopt">verify</span> <span class="manarg">image</span> [<span class="manarg">options</span>]</span></h3>
<p>読み込み専用（あるいは圧縮）イメージのチェックサムを計算し、イメージ中の値と照らし合わせて検証する。<span class="manopt">verify</span> は共通オプションとして <span class="manopt">-encryption</span>, <span class="manopt">-stdinpass</span>, <span class="manopt">-srcimagekey</span>, <span class="manopt">-puppetstrings</span>, <span class="manopt">-plist</span> を受け入れる。</p>
<h3><span id="l12" class="sanchor"><span class="manopt">create</span> <span class="manarg">size_spec</span> <span class="manarg">image</span></span></h3>
<p>特定のサイズを持つイメージ、あるいは与えられたデータからのイメージを新たに作成する。<span class="manarg">image</span> が既に存在する場合、<span class="manarg">-ov</span> が指定されていなければ <span class="manopt">create</span> は失敗する。<span class="manarg">image</span> がアタッチされている場合、<span class="manarg">-ov</span> が指定されているかを問わず、上書きを行うためにはデタッチされなければならない。クロスプラットフォームの CD や DVD を作成するには、<span class="manopt">makehybrid</span> を用いること。例の項目を参照すること。</p>
<p><span class="manarg">size_spec</span> は作成されるイメージのサイズの値である。ファイルシステムとパーティションレイアウトの為の領域（既定の SPUD レイアウトの場合 64 セクタ）は、イメージ中のボリュームへデータスペースが作られる前に控除される。</p>
<p>サイズの指定には以下のオプションを用いる。</p>
<dl>
<dt><span class="manopt">-size</span> <span class="manarg">??b|??k|??m|??g|??t|??p|??e</span></dt><dd><span class="manopt">-size</span> は、mkfile(8) の形式に加えて tera-, peta-, exa- バイトの値を指定可能な指定子でイメージのサイズを指定する（'b' はバイトではなくセクタ数を指定することに注意すること）。大容量のスパースイメージを作成する場合、大きなサイズは有用である（最大で SPARSE size limit まで）。</dd>
<dt><span class="manopt">-sectors</span> <span class="manarg">sector_count</span></dt><dd>512 バイト単位のセクタ数でイメージのサイズを指定する。</dd>
<dt><span class="manopt">-megabytes</span> <span class="manarg">size</span></dt><dd>メガバイト（1024*1024 バイト）単位でイメージのサイズを指定する。</dd>
</dl>
<dl>
<dt><span class="manopt">-srcfolder</span> <span class="manarg">directory</span></dt><dd><span class="manarg">directory</span> 以下の内容を元にしてイメージサイズを指定する。また <span class="manopt">-srcfolder</span> を指定することにより、<span class="manarg">directory</span> の内容は作られるイメージにコピーされる。イメージボリュームのファイルシステム形式は、 <span class="manopt">-fs</span> で指定されない限り、コピー元のボリュームに合わせられる。<span class="manopt">-size</span> のような他のサイズ指定子は、コピー元のディレクトリのサイズを上書きし、ファイルシステム中に余剰のスペースを確保することを可能にする。<span class="manopt">-srcfolder</span> はファイルをコピーし、（asr(8) によって復元可能な）コピー先のイメージ上に新たな（理論的に最適化された）ファイルシステムを作成する。</dd>
</dl>
<p><span class="manopt">-srcdir</span> は <span class="manopt">-srcfolder</span> と同義である。</p>
<dl>
<dt><span class="manopt">-srcdevice</span> <span class="manarg">device</span></dt><dd>新しいイメージを作成する為に用いられるべき <span class="manarg">device</span> ブロックを指定する。イメージのサイズは <span class="manarg">device</span> のサイズと一致する。そのようにして作られたイメージのファイルシステムのサイズの変更には、<span class="manopt">resize</span> を使用することが出来る。<span class="manopt">-srcdevice</span> と <span class="manopt">-srcfolder</span> が指定されておりディスクに不正なブロックが存在する場合は、エラーを引き起こす。（？この問題の One way around は、ドライブが不正なブロックを見付けた際に再配置するかも知れない望みがある中でファイルを書き込むことである。；One way around this problem is to write over the files in question in the hopes that the drive will remap the bad blocks when it notices them.）データは失われるが、その後のイメージ作成処理は成功する。</dd>
</dl>
<p>共通オプション: <span class="manopt">-encryption</span>, <span class="manopt">-stdinpass</span>, <span class="manopt">-plist</span>, <span class="manopt">-imagekey</span>, <span class="manopt">-tgtimagekey</span>, <span class="manopt">-puppetstrings</span></p>
<p><span class="manopt">-imagekey</span> <span class="manarg">di-sparse-puma-compatible=TRUE</span> と <span class="manopt">-imagekey</span> <span class="manarg">di-shadow-puma-compatible=TRUE</span> はそれぞれ、OS X 10.1 でアタッチ可能なスパースイメージ、shadow イメージを作成する。<span class="manopt">-imagekey</span> <span class="manarg">encrypted-encoding-version</span> は暗号化エンコードのバージョン 1 かバージョン 2 を選択出来る。framework の設定は、全てのイメージのデフォルト値に対応するキーを持つ。バージョン 2 は OS X 10.2 とは互換性を持たないが、スパースイメージではより強固なものである。バージョン 1 はスパースイメージ以外のイメージでのデフォルト値である。OS X 10.4.7 から、スパースイメージ、暗号化イメージは常にバージョン 2 を使用する。</p>
<h4><span id="l13">一般的なオプション</span></h4>
<dl>
<dt><span class="manopt">-align</span> <span class="manarg">alignment</span></dt><dd>最終的にデータパーティションが調整されるサイズを指定する。デフォルトは 4K である。</dd>
<dt><span class="manopt">-type</span> <span class="manarg">UDIF|SPARSE|SPARSEBUNDLE</span></dt><dd>UDIF はデフォルトのディスクイメージ形式である。指定されていれば、指定されたサイズの UDRW が作成される。SPARSE を指定すると UDSP（必要に応じて拡張される読み書き可能なイメージ）が作成される。その場合デフォルトでは 1 メガバイトずつサイズが増大するが、<span class="manarg">-imagekey</span> オプションと共に <span class="manarg">sparse-band-size</span> キーを用いて、イメージが増大される毎に付加されるセクタ数を指定することが出来る。スパースイメージの最大サイズはイメージ中のファイルシステム、存在するならばパーティションマップによって規定され、システム上の制限値は 128 ペタバイトである。UDSP 中の HFS+ ファイルシステムに存在する使用されていない領域は、<span class="manopt">compact</span> によって縮小することが出来る。また、<span class="manopt">resize</span> は UDRW と内部のいずれの HFS ファイルシステムをリサイズ出来ることも心に留めておくこと。その他の情報については、「持続的なスパースイメージを用いる」を参照のこと。</dd>
<dt><span class="manopt">-fs</span> <span class="manarg">filesystem</span></dt><dd>ファイルシステムを HFS+, HFS+J, HFSX, HFS, MS-DOS, UFS の中から指定する。<span class="manopt">-fs</span> はイメージに書き込まれるファイルシステムを指定するために用いられる。また <span class="manopt">-fs</span> は、特定のファイルシステムが Apple パーティションマップの Apple_HFS パーティションに備わっていない場合、デフォルトのレイアウトを変更する。</dd>
<dt><span class="manopt">-volname</span> <span class="manarg">volname</span></dt><dd>新たに作成されたファイルシステムの名前を <span class="manarg">volname</span> にする。デフォルトは "untitled"。</dd>
<dt><span class="manopt">-uid</span> <span class="manarg">uid</span></dt><dd>新たに作成されたボリュームのルートディレクトリの所有者を、与えられたユーザ ID で示されるユーザに設定する。99 は特別な "unkwnon" ユーザを意味する（hdid(8) を参照）。</dd>
<dt><span class="manopt">-gid</span> <span class="manarg">gid</span></dt><dd>新たに作成されたボリュームのルートディレクトリの所有グループを、与えられたグループ ID で示されるグループに設定する。99 は特別な "unkwnon" グループを意味する（hdid(8) を参照）。</dd>
<dt><span class="manopt">-mode</span> <span class="manarg">mode</span></dt><dd>新たに作成されたボリュームのルートディレクトリのモードを 8 進数で表される <span class="manarg">mode</span> に設定する。</dd>
<dt><span class="manopt">-nouuid</span></dt><dd>ボリュームへ UUID を追加しない。そのようなボリュームは、OS 9 以前でフォーマットされたボリュームのように振る舞う。</dd>
<dt><span class="manopt">-[no]autostretch</span></dt><dd>ボリュームサイズが auto-stretch-size のしきい値（デフォルト: 256 MB）を超えても伸張可能なボリュームを自動的に作成する。asr(8) を参照のこと。</dd>
<dt><span class="manopt">-stretch</span> <span class="manarg">max_stretch</span></dt><dd><span class="manopt">-stretch</span> は HFS+ ファイルシステムのデータを、<span class="mancmd">hdiutil</span> <span class="manopt">resize</span> や古いシステム（定義された制限値内での伸張に限られる）で asr(8) を用いて後々伸張することが可能なものとして初期化する。<span class="manarg">max_stretch</span> は <span class="manopt">-size</span> での指定と同じである。</dd>
<dt><span class="manopt">-fsargs</span> <span class="manarg">newfs_args</span></dt><dd><span class="manopt">-fs</span> により暗黙的に指定されるファイルシステム作成プログラムへ渡される引数。newfs_hfs(8) はファイルシステムのデータ構造により必要とされる合計領域を減らすことが可能なオプションを持つ。<span class="manopt">-fs</span> <span class="manarg">HFS+</span> を指定した時、ジャーナル機能を無効にし <span class="manopt">-fsargs</span> への引数として <span class="manarg">-c</span> <span class="manarg">c=64,a=16,e=16</span> を渡してファイルシステムの gap を最小限にすると、<span class="manopt">resize</span> はより多くの領域を圧搾することが出来る。本当に最適化されたファイルシステムを得るには、<span class="manopt">makehybrid</span> が用いられる。</dd>
<dt><span class="manopt">-layout</span> <span class="manarg">layout</span></dt><dd>イメージのパーティションレイアウトを指定する。<span class="manarg">layout</span> は Mediakit.framework の MKDrivers.bundle で指定されていれば良い。NONE はパーティションマップを含まないイメージを作成する。そのようなイメージがアタッチされると、一つの /dev エントリが作成される（/dev/disk1 など）。SPUD は Single Partition UDIF の頭字語である。SPUD は DDM と Apple_HFS パーティションの一つのエントリを持った Apple Partition Scheme のパーティションマップを含むイメージを作成する。アタッチされると、複数の /dev エントリが作られ、二つ目のパーティションがデータパーティションとなる（例として /dev/disk1, /dev/disk1s1, /dev/disk1s2、二つ目のパーティションは disk1s2 である）。<span class="manopt">-fs</span> によって変更されない限り、デフォルトは SPUD である。その他のレイアウトとして、適切な OS 9 ドライバパーティションを持つ "UNIVERSAL HD" や "UNIVERSAL CD" を含む。OS 9 ドライバは OS X や Classic 環境では用いられない。</dd>
<dt><span class="manopt">-partitionType</span> <span class="manarg">partition_type</span></dt><dd>SPUD のパーティション形式を変更する。デフォルトは Apple_HFS である。適切なパーティション形式は <span class="manopt">-fs</span> への引数によって自動的に選択されるが、主な代替として Apple_UFS がある。</dd>
<dt><span class="manopt">-ov</span></dt><dd>存在するファイルを上書きする。デフォルトでは上書きされない。<span class="manopt">create</span> の項で記したように、アタッチされたイメージを上書きすることは出来ない。</dd>
<dt><span class="manopt">-attach</span></dt><dd>イメージを作成した後、アタッチする（オプションの無い <span class="manopt">attach</span> に等しい。オプションを必要とする場合は、<span class="mancmd">hdiutil</span> <span class="manopt">attach</span> を用いること）。ファイルシステムが <span class="manopt">-fs</span> によって指定されていなければ、デフォルトの <span class="manopt">attach</span> <span class="manopt">-mount</span> が要求する振る舞いでは <span class="manopt">attach</span> は失敗する。</dd>
</dl>
<h4><span id="l14">ソースを指定した場合のイメージオプション（<span class="manopt">-srcfolder</span> と <span class="manopt">-srcdevice</span>）</span></h4>
<dl>
<dt><span class="manopt">-format</span> <span class="manarg">format</span></dt><dd>最終的なイメージフォーマットを指定する。デフォルトは UDZO である。<span class="manarg">forat</span> には、<span class="manopt">convert</span> で用いられるパラメータが指定可能である。</dd>
</dl>
<h4><span id="l15"><span class="manopt">-srcdevice</span> と同時に指定可能なオプション</span></h4>
<dl>
<dt><span class="manopt">-segmentSize</span> <span class="manarg">size_spec</span></dt><dd>イメージが書き込まれる際のセグメントの最大値 <span class="manarg">size_spec</span>（<span class="mancmd">-size</span> の形式に従う）を指定する。</dd>
</dl>
<h4><span id="l16"><span class="manopt">-srcfolder</span> と同時に指定可能なオプション</span></h4>
<dl>
<dt><span class="manopt">-[no]crossdev</span></dt><dd>ソースのファイルシステムに、デバイスをまたいでの指定を可能とするか</dd>
<dt><span class="manopt">-[no]scrub</span></dt><dd>ボリュームを作成する際、一時的なファイルを読み飛ばす。これはソースがボリュームのルートディレクトリであれば、デフォルトで適用される。読み飛ばされる項目には、ゴミ箱、テンポラリファイル、スワップなどが含まれる。</dd>
<dt><span class="manopt">-[no]anyowners</span></dt><dd><span class="mancmd">hdiutil</span> を動作させるユーザに、ソースディレクトリの全てのファイルを所有していることを要求する。</dd>
<dt><span class="manopt">-copyuid</span> <span class="manarg">user</span></dt><dd>与えられた <span class="manarg">user</span> としてコピーを行う。通常では、コピーは下記で説明される仕組みに従って行われる。</dd>
<dt><span class="manopt">-skipunreadable</span></dt><dd>ユーザが読み取ることが出来ない、またはアクセス権限のないファイルを飛ばす。</dd>
</dl>
<p>デフォルトでは、<span class="manopt">create</span> <span class="manopt">-srcfolder</span> はソースディレクトリのパーミッションを維持してコピーを試みる。読み取れないファイルやイメージを作成しようとするユーザ以外のユーザによって所有されるファイル、あるいはコピーを行うユーザがグループに含まれない SGID ファイルを検出した場合、認証を要求する。</p>
<h3><span id="l17" class="sanchor"><span class="manopt">convert</span> <span class="manarg">image</span> <span class="manopt">-format</span> <span class="manarg">format</span> <span class="manopt">-o</span> <span class="manarg">outfile</span></span></h3>
<p><span class="manarg">image</span> を <span class="manarg">format</span> 形式へ変換し、<span class="manarg">outfile</span> へ書き込む。</p>
<p>上記されているように、ファイル名に拡張子がない場合は適切なものが追加される。<span class="manarg">format</span> として指定できるものは以下の通り。</p>
<ul>
<li>UDRW - UDIF 読み書き可能イメージ</li>
<li>UDRO - UDIF 読み込み専用イメージ</li>
<li>UDCO - UDIF ADC 圧縮イメージ</li>
<li>UDZO - UDIF zlib 圧縮イメージ</li>
<li>UDBZ - UDIF bzip2 圧縮イメージ（OS X 10.4 以降のみ）</li>
<li>UFBI - MD5 チェックサム UDIF イメージ</li>
<li>UDRo - UDIF 読み込み専用（obsolete）</li>
<li>UDCo - UDIF 圧縮（obsolete）</li>
<li>UDTO - DVD/CD-R マスター</li>
<li>UDxx - UDIF スタブイメージ</li>
<li>UDSP - スパースイメージ（内容によりファイルサイズが増大する）</li>
<li>UDSB - スパースバンドル（内容によりファイルサイズが増大する; バンドル形式）</li>
<li>RdWr - NDIF 読み書き可能イメージ（deprecated）</li>
<li>Rdxx - NDIF 読み込み専用イメージ（Disk Cope 6.3.3 形式）</li>
<li>ROCo - NDIF 圧縮イメージ（deprecated）</li>
<li>Rken - NDIF 圧縮（obsolete）</li>
<li>DC42 - Disk Copy 4.2 イメージ</li>
</ul>
<p>いくつかの形式で提供される圧縮の他に、UDIF と NDIF 読み込み専用形式は HFS と UFS ファイルシステムにおいて使われていない領域を完全に削除する。
UDZO では、<span class="manopt">-imageley</span> <span class="manarg">zlib-level=value</span> によって gzip(1) と同様に zlib 圧縮レベルを指定することができる。デフォルトの値は 1（最も早い）である。</p>
<p>共通オプション: <span class="manopt">-encryption</span>, <span class="manopt">-stdinpass</span>, <span class="manopt">-certificate</span>, <span class="manopt">-srcimagekey</span>, <span class="manopt">-tgtimagekey</span>, <span class="manopt">-shadow</span> with friends, <span class="manopt">-puppetstrings</span>, <span class="manopt">-plist</span></p>
<h4><span id="l18">その他のオプション</span></h4>
<dl>
<dt><span class="manopt">-align</span> <span class="manarg">alignment</span></dt><dd> デフォルトは 4（2K）である。</dd>
<dt><span class="manopt">-pmap</span></dt><dd> パーティションマップを追加する。NDIF を様々な種の UDIF へ変換したり 区画分けされていない UDIF を変換する場合、この値はデフォルトで真となる。</dd>
<dt><span class="manopt">-segmantSize</span> [<span class="manarg">size_spec</span>]</dt><dd><span class="manarg">outfile</span> に書き込まれるセグメントサイズを <span class="manarg">size_spec</span> に指定する。<span class="manopt">-segmentSize</span> が指定されたときのデフォルト値は、UDTO では 2*1024*1024（1GB セクタに相当）、その他のイメージ形式では 4*1024*1024（2GB セクタに相当）である。<span class="manarg">size_spec</span> は <span class="manopt">create</span> の <span class="manopt">-size</span> に指定される指定子と同様のものを用いることができる。</dd>
<dt><span class="manopt">-tasks</span> <span class="manarg">task_count</span></dt><dd>イメージを圧縮された形式に変換する場合に指定する、圧縮処理に使用されるスレッドの数。デフォルトは現在のシステムのアクティブなプロセッサの数である。</dd>
</dl>
<h3><span id="l19" class="sanchor"><span class="manopt">burn</span> <span class="manarg">image</span></span></h3>
<p>接続されたデバイスの光学メディアへ <span class="manarg">image</span> を焼き込む。全てのケースで、適切なデバイスが見付かるとメディアを促すよう表示される。</p>
<p>共通オプション: <span class="manopt">-shadow</span> with friends, <span class="manopt">-srcimagekey</span>, <span class="manopt">-encryption</span>, <span class="manopt">-puppetstrings</span>, <span class="manopt">-stdinpass</span></p>
<h4><span id="l20">その他のオプション</span></h4>
<dl>
<dt><span class="manopt">-device</span></dt><dd>焼き込みに使用するデバイスを指定する。<span class="manopt">-list</span> を参照のこと。</dd>
<dt><span class="manopt">-testburn</span></dt><dd>実際には焼き込まない。</dd>
<dt><span class="manopt">-anydevice</span></dt><dd>Apple により保証されていないデバイスへの焼き込みを明示的に許可する（OS X 10.4 以降では、<span class="manopt">burn</span> はデフォルトでどのデバイスへも焼き込みできるが、後方互換性のために残されている）。</dd>
<dt><span class="manopt">-[no]eject</span></dt><dd>焼き込み後にディスクを取り出す。デフォルトではディスクは取り出される。</dd>
<dt><span class="manopt">-[no]verifyburn</span></dt><dd>焼き込み後にディスクの内容を検証する。デフォルトでは検証を行う。</dd>
<dt><span class="manopt">-[no]addpmap</span></dt><dd>必要に応じてパーティションマップを追加する。いくつかのファイルシステム形式では、パーティションマップに存在しなければ光学メディアの中では認識されないことがある。このオプションはパーティションマップが必要なファイルシステムを認識させるために、焼き込み時にパーティションマップを追加する。デフォルトでは、必要があればパーティションマップは追加される。</dd>
<dt><span class="manopt">-[no]skipfinalfree</span></dt><dd>フリーパーティションをスキップする。イメージの中に Apple_Free パーティションが最後に存在することを示すパーティションマップがあれば、Apple_Free パーティションは焼き込まれない。焼き込まれたパーティションマップは、空の領域を示す。デフォルトでは、フリーパーティションはスキップされる。</dd>
<dt><span class="manopt">-[no]optimizeimage</span></dt><dd>焼き込みに際してファイルシステムを最適化する。最適化によって、HFS あるいは HFS+ ボリュームの容量を実際に含まれるデータの容量へ減らすことができる。このオプションは、焼き込まれるディスクとイメージとで異なるチェックサムを与えることがある。デフォルトでは、ディスクイメージの全てのブロックが焼き込まれる（Apple_Free を除く）。</dd>
<dt><span class="manopt">-[no]forceclose</span></dt><dd>焼き込み後にディスクをクローズするよう強制する。追加の焼き込みは不可能になる。デフォルトでは、クローズされない。</dd>
<dt><span class="manopt">-nounderrun</span></dt><dd>バッファアンダーラン保護を行わない。</dd>
<dt><span class="manopt">-[no]synthesize</span></dt><dd>ハイブリッドファイルシステムを作成する。デフォルトでは、元のイメージのブロックが正しくディスクへ焼き込めない場合に新しく HFS/ISO ファイルシステムを作成する。</dd>
<dt><span class="manopt">-speed</span> <span class="manarg">x_factor</span></dt><dd><span class="manarg">x_factor</span> には、 1, 2, 4, 6, ... `max' の任意の値を指定する。例えば 8 は 8 倍速で焼き込むことをドライブへ指定する。`max' はドライブへ最大限の速度で焼き込むように指定する。デフォルトでは `max' である。より遅い速度の方が、信頼できる焼き込みができる。速度は焼き込まれるメディアによって異なる（例えば CD と DVD への焼き込みでは <span class="manopt">-speed</span> <span class="manarg">2</span> を指定してもそれぞれで実際の焼き込み速度が異なるように）。より遅い速度を指定しても、ドライブに固有の最低焼き込み速度が存在する場合はその速度以下では焼き込まれないことに注意すること。</dd>
<dt><span class="manopt">-sizequery</span></dt><dd>焼き込みを行わず、ディスクに必要な容量を計算してセクタ数として返す。</dd>
<dt><span class="manopt">-erase</span></dt><dd>光学メディア（DVD-RW/CD-RW）の挿入を促し、ハードウェアがサポートしていれば、メディアを消去する。<span class="manarg">image</span> が指定されていれば、消去した後に焼き込まれる。</dd>
<dt><span class="manopt">-fullerase</span></dt><dd>ディスクの全てのセクタを消去する（通常、<span class="manopt">-erase</span> よりもより長い時間が掛かる）。</dd>
<dt><span class="manopt">-list</span></dt><dd>全ての焼き込み可能なデバイスを、<span class="manopt">-device</span> で指定可能な OpenFirmware パスの形で表示する。</dd>
</dl>
<h3><span id="l21" class="sanchor"><span class="manopt">makehybrid</span> <span class="manopt">-o</span> <span class="manarg">image</span> <span class="manarg">source</span></span></h3>
<p>DiskRecording フレームワークのコンテント作成システムを利用して、読み込み専用ディスクイメージへ潜在的なハイブリッドファイルシステムを作成する。</p>
<p><span class="manarg">source</span> はディレクトリあるいはディスクイメージを指定する。作成されたイメージは、<span class="manopt">burn</span> によって焼き込むことや、<span class="manopt">convert</span> によって他の読み込み専用形式へ変換できる。デフォルトでは、最近のほとんどのプラットフォームでファイルシステムは読み込み可能になる。作成されたファイルシステムは、読み書き可能な形式への変換は想定されていないが、ditto(8) や asr(8) を（ファイルコピーモードで）用いて安全にコピーすることができる。</p>
<p><span class="mancmd">hdiutil</span> は、El トリト形式の起動可能な ISO9660 ファイルシステムの作成をサポートしている。これは x86 ベースのハードウェアでの起動に一般的に用いられる。いくつかのエミュレーションモードを指定することができる。デフォルトでは、El トリト起動イメージはイメージのサイズに応じて、1.2MB, 1.44MB, 2.88MB フロッピードライブをエミュレートする。その他には "No Emulation"（非エミュレーション）と "Hard Disk Emulation"（ハードディスクエミュレーション）モードを指定可能である。それらによってそれぞれ、起動イメージをメモリへ直接読み込ませることや、パーティション分けされたハードディスクとして仮想化を行うことができる。El トリトのオプションは、データ CD に用いられるべきではない。</p>
<h4><span id="l22">ファイルシステムに関するオプション</span></h4>
<dl>
<dt><span class="manopt">-hfs</span></dt><dd>HFS+ ファイルシステムを作成する。このファイルシステムは、ISO9660, Joliet, UDF ファイルシステムと共にイメージに共存することができる。Mac OS 9 や Mac OS X のように、HFS+ を ISO9660 や UDF と同様に認識するオペレーティングシステムでは、通常では優先されるファイルシステムである。</dd>
<dt><span class="manopt">-iso</span></dt><dd>Rock Ridge 拡張の ISO9660 レベル 2 ファイルシステムを作成する。このファイルシステムは HFS+, Joliet, UDF ファイルシステムと共にイメージに共存することができる。ISO9660 は CD やある種の DVD での標準的なクロスプラットフォーム互換形式であり、事実上全てのオペレーティングシステムで認識される。ISO9660 や Joliet ファイルシステムがディスクイメージや CD に存在し、HFS+ が存在しなければ、Mac OS X は ISO9660（あるいは Joliet）ファイルシステムを使用する。</dd>
<dt><span class="manopt">-udf</span></dt><dd>UDF ファイルシステムを作成する。このファイルシステムは HFS+, ISO9660, Joliet と共にイメージに共存することができる。UDF は DVD での標準的な互換形式であるが、オペレーティングシステムがサポートしているかは OS のバージョンや UDF のバージョンによって違いがある。</dd>
</dl>
<p>デフォルトでは、ファイルシステムが指定されなければ、四つの全てのファイルシステムを持つハイブリッドイメージが作られる。複数のファイルシステムが選択された時は、イメージのデータ領域は全てのファイルシステムで共有され、ディレクトリ情報とボリュームメタデータのみがそれぞれのファイルシステムで固有のものとなる。つまり、クロスプラットフォームの ISO9660/HFS+ ハイブリッドイメージは、単一のファイルシステムを持つイメージと比較してオーバーヘッドが少ないと言える。</p>
<h4><span id="l23">その他のオプション</span></h4>
<p>ほとんどのオプションは、一つの引数をとる。</p>
<dl>
<dt><span class="manopt">-hfs-blessed-directory</span></dt><dd>作成されるファイルシステムの中の、Mac OS X の起動のために結び付けられた（"blessed"）ディレクトリへのパス。ディレクトリは、例えば正しい <span class="manarg">BootX</span> ファイルを作るために <span class="manopt">-bootinfo</span> によって結び付けられているものと考えられる。（HFS+ のみ）</dd>
<dt><span class="manopt">-hfs-openfolder</span></dt><dd>Finder によって自動的に開かれるディレクトリへのパス。bless(8) の <span class="manopt">-openfolder</span> オプションを参照のこと。（HFS+ のみ）</dd>
<dt><span class="manopt">-hfs-startupfile-size</span></dt><dd>空の HFS+ スタートアップファイルを割り当て、そのサイズをバイト単位で指定する。（HFS+ のみ）</dd>
<dt><span class="manopt">-abstract-file</span></dt><dd>ソースとなるディレクトリ（つまり、作成されるファイルシステムのルートディレクトリ）に存在する、ISO9660/Joliet Abstract ファイルとして使われるファイルへのパス。（ISO9660/Joliet）</dd>
<dt><span class="manopt">-bibliography-file</span></dt><dd>ソースとなるディレクトリ（つまり、作成されるファイルシステムのルートディレクトリ）に存在する、ISO9660/Joliet Bibliography ファイルとして使われるファイルのへパス。（ISO9660/Joliet）</dd>
<dt><span class="manopt">-copyright-file</span></dt><dd>ソースとなるディレクトリ（つまり、作成されるファイルシステムのルートディレクトリ）に存在する、ISO9660/Joliet Copyright ファイルとして使われるファイルの、パス。（ISO9660/Joliet）</dd>
<dt><span class="manopt">-application</span></dt><dd>アプリケーション（Application）文字列（ISO9660/Joliet）</dd>
<dt><span class="manopt">-preparer</span></dt><dd>作成者（Preparer）文字列（ISO9660/Joliet）</dd>
<dt><span class="manopt">-publisher</span></dt><dd>出版者（Preparer）文字列（ISO9660/Joliet）</dd>
<dt><span class="manopt">-system-id</span></dt><dd>システム ID 文字列（ISO9660/Joliet）</dd>
<dt><span class="manopt">-keep-mac-specific</span></dt><dd>HFS+ ではないファイルシステムで、Macintosh 特有のファイル（.DS_Store など）を残したままにするかどうか（ISO9660/Joliet）</dd>
<dt><span class="manopt">-eltorito-boot</span></dt><dd>El トリト起動イメージへのパス。デフォルトでは、フロッピードライブエミュレーションが使われるため、イメージは 1200KB, 1440KB, 2880KB のいずれかでなければならない。イメージがそれ以外のサイズであれば、"非エミュレーション"あるいは"ハードディスクエミュレーション"モードを有効にするために、それぞれ <span class="manopt">-no-emul-boot</span> か <span class="manopt">-hard-disk-boot</span> のどちらかが指定されていなければならない。（ISO9660/Joliet）</dd>
<dt><span class="manopt">-hard-disk-boot</span></dt><dd>El トリトハードディスクエミュレーションモードを使用する。イメージは、MBR パーティションマップを持つ単一パーティションの仮想デバイスでなければならない。</dd>
<dt><span class="manopt">-no-emul-boot</span></dt><dd>El トリト非エミュレーションモードを使用する。システムファームウェアはデバイスをエミュレートすることなく、<span class="manopt">-boot-load-size</span> によって指定されたセクタ数を読み込み、実行する。（ISO9660/Joliet）</dd>
<dt><span class="manopt">-no-boot</span></dt><dd>El トリトイメージを起動不可能とする。システムファームウェアは、データを持つ仮想デバイスを作成する。（ISO9660/Joliet）</dd>
<dt><span class="manopt">-boot-load-seg</span></dt><dd>非エミュレーション起動イメージについて、データを指定されたセグメントアドレスへ読み込む。システムファームウェアはデフォルトのアドレスを使用できるため、このオプションは奨められない。（ISO9660/Joliet）</dd>
<dt><span class="manopt">-boot-load-size</span></dt><dd>非エミュレーション起動イメージについて、512バイト単位のエミュレートセクタを指定された数だけメモリに読み込み実行する。デフォルトでは、4 セクタ（2KB）が読み込まれる。（ISO9660/Joliet）</dd>
<dt><span class="manopt">-eltorito-platform</span></dt><dd>El トリトブートカタログ検証エントリ/セクションヘッダの、指定されたプラットフォーム ID を使用する。デフォルトは x86 ハードウェアを表す 0 である。（ISO/Joliet）</dd>
<dt><span class="manopt">-eltorito-specification</span></dt><dd>複数の起動イメージを持つ複雑なレイアウトついて、ディクショナリ配列を表す OpenStep 形式あるいは XML 形式を用いた plist 形式の文字列を渡して指定する。どの El トリトオプションも子ディクショナリに設定することができ、El トリト起動イメージのみに適用される。<span class="manopt">-eltorito-specification</span> が通常の El トリトコマンドラインオプションと共に渡されたとき、これによって指定されたものはデフォルトではないセカンダリの起動エントリを作るために使用される。</dd>
<dt><span class="manopt">-udf-version</span></dt><dd>作成される UDF ファイルシステムのバージョン。"1.02" か "1.50" のどちらかを指定できる。デフォルトでは "1.50" が選択される。（UDF）</dd>
<dt><span class="manopt">-default-volume-name</span></dt><dd>全てのファイルシステムのデフォルトのボリューム名。指定されなければ、ソースディレクトリのパスのうち最後の文字列が用いられる。</dd>
<dt><span class="manopt">-hfs-volume-name</span></dt><dd>HFS+ ファイルシステムのみに用いられるボリューム名。（HFS+ のみ）</dd>
<dt><span class="manopt">-iso-volume-name</span></dt><dd>ISO9660 ファイルシステムのみに用いられるボリューム名。（ISO9660 のみ）</dd>
<dt><span class="manopt">-joliet-volume-name</span></dt><dd>Joliet ファイルシステムのみに用いられるボリューム名。（Joliet のみ）</dd>
<dt><span class="manopt">-udf-volume-name</span></dt><dd>UDF ファイルシステムのみに用いられるボリューム名。（UDF のみ）</dd>
<dt><span class="manopt">-hide-all</span></dt><dd>作成される全てのファイルシステムで不可視にするファイルとディレクトリのグロブ表現。シェルの展開を防ぐために、文字列を引用符で囲む必要がある。また文字列は glob(3) によって評価される。このオプションは複数回指定できないが、任意の複雑なグロブ表現を使うことができる。</dd>
<dt><span class="manopt">-hide-hfs</span></dt><dd>HFS+ ファイルシステムで不可視にするファイルとディレクトリのグロブ表現。ただし、他のファイルシステム上からはデータは存在して見える。（HFS+ のみ）</dd>
<dt><span class="manopt">-hide-iso</span></dt><dd>ISO ファイルシステムで不可視にするファイルとディレクトリのグロブ表現。ただし、他のファイルシステム上からはデータは存在して見える。（ISO9660 のみ）また、ハイブリッドイメージが Mac OS X 上で ISO 9660 ファイルシステムとしてマウントされた場合、Joliet 階層は ISO 階層を代替する。そのため Joliet ファイルシステムを作成する場合（デフォルト）、mount_cd9660(8) によるマウントからファイルを隠すために <span class="manopt">-hide-joliet</span> オプションも必要になる。</dd>
<dt><span class="manopt">-hide-joliet</span></dt><dd>Joliet ファイルシステムで不可視にするファイルとディレクトリのグロブ表現。ただし、他のファイルシステム上からはデータは存在して見える。（Joliet のみ）OS X では、ISO 9660 ファイルシステムで Joliet カタログが利用可能であればそちらを利用するため、作成されるファイルシステムが OS X 上で ISO としてマウントされる場合は <span class="manopt">-hide-joliet</span> オプションは事実上 <span class="manopt">-hide-iso</span> を代替するものとなる。</dd>
<dt><span class="manopt">-hide-udf</span></dt><dd>UDF ファイルシステムで不可視にするファイルとディレクトリのグロブ表現。ただし、他のファイルシステム上からはデータは存在して見える。（UDF のみ）</dd>
<dt><span class="manopt">-only-udf</span></dt><dd>UDF ファイルシステムでのみ表示させるファイルとディレクトリのグロブ表現。</dd>
<dt><span class="manopt">-only-iso</span></dt><dd>ISO ファイルシステムでのみ表示させるファイルとディレクトリのグロブ表現。</dd>
<dt><span class="manopt">-only-joliet</span></dt><dd>Joliet ファイルシステムでのみ表示させるファイルとディレクトリのグロブ表現。</dd>
<dt><span class="manopt">-print-size</span></dt><dd>イメージのサイズを計算して見積もる。作成されるイメージの実際のサイズは、この見積もられた値と同等かそれ以下であることが保証される。</dd>
<dt><span class="manopt">-plistin</span></dt><dd>コマンドラインパラメータを使用する代わりに、標準入力から標準的な plist 形式のを受け取り、ハイブリッドイメージを作成するためのパラメータとして使用する。それぞれのコマンドラインオプションは、先頭の "-" を除いた文字列を plist データのディクショナリにおけるキー名とし、パスなどの文字列の引数であれば文字列データとして、数値の引数であれば数値データとして、また切り換えられるオプションは真偽値として、それぞれ対応する値として格納する。引数のソースイメージと作成されるイメージは、それぞれ "source", "output" をキー名とし、値を指定する。</dd>
</dl>
<p><span class="manarg">source</span> にディスクイメージが指定された場合、イメージはアタッチされ、対応したイメージのマウントポイントへのパスが用いられる。この場合、絶対パスは使用することができない。<span class="manarg">source</span> がディレクトリであれば、全ての引数のパスは絶対パスあるいはカレントディレクトリからの相対パスで示されるファイルかディレクトリでなければならない。</p>
<p>ボリューム名オプションは、ファイルシステム中のファイルと同様に名前付けの制限を受けるため、それぞれのファイルシステムで適切である文字で構成される必要がある。指定した文字列がどのように修正されるかを確認するには、drutil(1) を <span class="mancmd">drutil</span> <span class="manopt">filename</span> <span class="manarg">myname</span> として使用すること。</p>
<p><span class="manopt">-abstract-file</span>, <span class="manopt">-bibliography-file</span>, <span class="manopt">-copyright-file</span> のオプションは、サブディレクトリではなくソースディレクトリ直下に存在し、また ISO9660 レベル 1 との互換性のために 8.3 形式の名前でなければならない。</p>
<h3><span id="l24" class="sanchor"><span class="manopt">compact</span> <span class="manarg">image</span></span></h3>
<p>SPARSE 形式ディスクイメージ（スパースディスクイメージ）の HFS ファイルシステムの内容を調べ、イメージ中のファイルシステムによって使用されていない領域を取り除く。<span class="manopt">compact</span> によってイメージファイルが小さくなるかは、ファイルシステムのファイル構成に依存する。</p>
<p>共通オプション:<span class="manopt">-encryption</span>, <span class="manopt">-stdinpass</span>, <span class="manopt">-srcimagekey</span>, <span class="manopt">-shadow</span> with friends, <span class="manopt">-puppetstrings</span>, <span class="manopt">-plist</span></p>
<h3><span id="l25" class="sanchor"><span class="manopt">info</span></span></h3>
<p>DiskImages.framework、ディスクイメージドライバ、及び現在アタッチされているイメージについての情報を表示する。<span class="mancmd">hdiutil</span> <span class="manopt">info</span> は <span class="manopt">-plist</span> をオプションとして受け入れる。</p>
<h3><span id="l26" class="sanchor"><span class="manopt">load</span></span></h3>
<p>ディスクイメージドライバを手動でロードする。通常、ディスクイメージドライバは DiskImages フレームワークによって必要時にロードされる。OS X 10.2 より、全てのイメージがデタッチされる時点でドライバは自動的に登録が解除される（1 分ほど再び使用されることがなければアンロードされる）。</p>
<h3><span id="l27" class="sanchor"><span class="manopt">checksum</span> <span class="manarg">image</span> <span class="manopt">-type</span> <span class="manarg">type</span></span></h3>
<p>イメージ形式によらず、イメージデータの指定された形式のチェックサムを計算する。</p>
<p>共通オプション:<span class="manopt">-shadow</span> with friends, <span class="manopt">-encryption</span>, <span class="manopt">-stdinpass</span>, <span class="manopt">-srcimagekey</span>, <span class="manopt">-puppetstrings</span>, <span class="manopt">-plist</span></p>
<p><span class="manarg">type</span> は以下に挙げる形式が指定できる。</p>
<ul>
<li>UDIF-CRC32 - CRC-32 イメージチェックサム</li>
<li>UDIF-MD5 - MD5 イメージチェックサム</li>
<li>DC42 - Disk Copy 4.2</li>
<li>CRC28 - CRC-32 (NDIF)</li>
<li>CRC32 - CRC-32</li>
<li>MD5 - MD5</li>
<li>SHA - SHA</li>
<li>SHA1 - SHA-1</li>
<li>SHA256 - SHA-256</li>
<li>SHA384 - SHA-384</li>
<li>SHA512 - SHA-512</li>
</ul>
<h3><span id="l28" class="sanchor"><span class="manopt">chpass</span> <span class="manarg">image</span></span></h3>
<p>暗号化イメージ（パスワード保護されたイメージ）のパスワードを変更する。デフォルトでは、パスワードの変更は対話的に行われる。</p>
<p>共通オプション:<span class="manopt">-recover</span>, <span class="manopt">-srcimagekey</span></p>
<p>オプションとして <span class="manopt">-oldstdinpass</span> と <span class="manopt">-newstdinpass</span> を指定することもできる。その場合 <span class="manopt">-stdinpass</span> と同様に、NULL 終端された新旧のパスワード文字列をオプションで指定した順で標準入力から読み取られる。</p>
<h3><span id="l29" class="sanchor"><span class="manopt">unflatten</span> <span class="manarg">image</span></span></h3>
<p>UDIF ディスクイメージを unflatten し、伝統的な形式（XML ではなくリソースのみの）のデュアルフォークファイルを作成する。メタデータを表すリソースフォークが 16 MB よりも大きな場合は、エラー -39 ("End of fork") によって処理は失敗する。</p>
<p>共通オプション:<span class="manopt">-encryption</span>, <span class="manopt">-stdinpass</span>, <span class="manopt">-srcimagekey</span></p>
<h3><span id="l30" class="sanchor"><span class="manopt">flatten</span> <span class="manarg">image</span></span></h3>
<p>読み込み専用（あるいは圧縮）UDIF ディスクイメージをシングルフォークファイルに flatten する。デフォルトでは、メタデータは XML（カーネルが使用する）と埋め込まれたリソースフォーク（OS X 10.1 とそれ以前）の両方に保存される。UDBZ は in-kernel ではサポートされないことに注意すること。</p>
<p>共通オプション:<span class="manopt">-srcimagekey</span>, <span class="manopt">-encryption</span>, <span class="manopt">-stdinpass</span></p>
<p><span class="manopt">flatten</span> は、UDIF が以前に <span class="manopt">unflatten</span> された場合にのみ必要なものである。</p>
<h4><span id="l31">その他のオプション</span></h4>
<dl>
<dt><span class="manopt">-noxml</span></dt><dd>in-kernel アタッチメントのために、XML データを埋め込まない。イメージは in-kernel では二度とアタッチできなくなる。</dd>
<dt><span class="manopt">-nosrcfork</span></dt><dd>リソースフォークデータを埋め込まない。イメージは OS X 10.2 以前ではアタッチできなくなる。</dd>
</dl>
<h3><span id="l32" class="sanchor"><span class="manopt">fsid</span> <span class="manarg">image</span></span></h3>
<p>指定されたディスクイメージのファイルシステムについての情報を出力する。通常、image は物理ディスクに対応する /dev エントリである。NOTE ON DEV ENTRY ACCESS セクションを参考のこと。より詳細な情報は HFS ファイルシステムの場合出力される。</p>
<p>共通オプション:<span class="manopt">-srcimagekey</span>, <span class="manopt">-encryption</span>, <span class="manopt">-stdinpass</span>, <span class="manopt">-shadow</span></p>
<h3><span id="l33" class="sanchor"><span class="manopt">hfsanalyze</span> <span class="manarg">image</span></span></h3>
<p>HFS/HFS+ ボリュームについての情報を表示する。通常の場合、<span class="manarg">image</span> は物理ディスクに対応する /dev エントリを指定する。NOTE ON DEV ENTRY ACCESS の項を参照すること。</p>
<p>共通オプション:<span class="manopt">-encryption</span>, <span class="manopt">-stdinpass</span>, <span class="manopt">-srcimagekey</span>, <span class="manopt">-shadow</span> with friends</p>
<h3><span id="l34" class="sanchor"><span class="manopt">mountvol</span> <span class="manarg">dev_name</span></span></h3>
<p>Disk Arbitration を使用して <span class="manarg">dev_name</span> のファイルシステムのマウントを試みる（<span class="mancmd">diskutil</span> <span class="manopt">mount</span> と似たもの）。<span class="manopt">-plist</span> によって XML 形式の出力が得られる。<span class="manopt">mountvol</span> は（<span class="manopt">mount</span> とは異なり）、<span class="manopt">unmount</span> によってアンマウントされたボリュームを再度マウントすることに注意すること。イメージはアタッチ・デタッチされるものであるが、ボリュームはマウント・アンマウントされるものである。<span class="manopt">mountvol</span> は <span class="manopt">unmomunt</span> の逆の処理を行うものである。</p>
<p><span class="manopt">mount</span>/<span class="manopt">attach</span> は、/dev エントリに対しても使用することができるが、/dev エントリはアタッチされるディスクイメージとして扱われる（別の /dev エントリが作られる）。これは通常の場合、望まれないことである。</p>
<h3><span id="l35" class="sanchor"><span class="manopt">unmount</span> <span class="manarg">volume</span> [<span class="manopt">-force</span>]</span></h3>
<p>関連するイメージをデタッチせずに、ボリュームをアンマウントする。<span class="manarg">volume</span> は /dev エントリあるいはマウントポイントの名前で指定する。注意: <span class="manopt">unmount</span> はボリュームに関連付けれらたディスクイメージをデタッチ<strong>しない</strong>。ボリュームはマウント・アンマウントされるものである。<span class="manopt">mount</span>（<span class="manopt">attach</span> の同義）は、イメージが既にアタッチされているがその中のボリュームがマウントされていない場合、そのボリュームをマウントすることは<em>ない</em>'（<span class="manopt">unmount</span> がファイルシステムに対して使われていれば）。<span class="manopt">mountvol</span> は <span class="manopt">unmount</span> によってアンマウントされたボリュームをマウントする。</p>
<h4><span id="l36">オプション</span></h4>
<dl>
<dt><span class="manopt">-force</span></dt><dd>ファイルシステムのファイルが開かれていても、ファイルシステムをアンマウントする。umount -f と同様である。</dd>
</dl>
<h3><span id="l37" class="sanchor"><span class="manopt">imageinfo</span> <span class="manarg">image</span></span></h3>
<p>ディスクイメージについての情報を表示する。</p>
<p>共通オプション:<span class="manopt">-encryption</span>, <span class="manopt">-stdinpass</span>, <span class="manopt">-srcimagekey</span>, <span class="manopt">-shadow</span> with friends, <span class="manopt">-plist</span></p>
<p>その他のオプション:</p>
<ul>
<li><span class="manopt">-format</span> - イメージ形式のみを表示する</li>
<li><span class="manopt">-checksum</span> - イメージのチェックサムのみを表示する</li>
</ul>
<h3><span id="l38" class="sanchor"><span class="manopt">isencrypted</span> <span class="manarg">image</span></span></h3>
<p>イメージが暗号化されているか出力する。暗号化されていれば、詳細の情報も出力される。
共通オプション:<span class="manopt">-pist</span></p>
<h3><span id="l39" class="sanchor"><span class="manopt">plugins</span></span></h3>
<p>DiskImages フレームワークのプラグインについての情報を表示する。ユーザ、システム、ローカル、ネットワークそれぞれの領域がプラグインの検索に用いられる（~/Library/Plug-ins/DiskImages, /System/Library/Plug-ins/DiskImages, /Library/Plug-ins/DiskImages, /Network/Library/Plug-ins/DiskImages）。<span class="manopt">-plist</span> が使用可能である。</p>
<h3><span id="l40" class="sanchor"><span class="manopt">internet-enable</span> [<span class="manopt">-yes</span>] | <span class="manopt">-no</span> | <span class="manopt">-query</span> <span class="manarg">image</span></span></h3>
<p>イメージについて処理後処理を可能・不可能にする。引数がなければ、IDME は可能となる。可能となれば、Disk Copy（OS X 10.2.3 以降）や OS X 10.3 以降でのダウンロード機能を利用したブラウザがイメージを初めて処理する時、イメージはその中の可視である内容をイメージの置かれているディレクトリへコピーし、イメージは IDME をオフにされゴミ箱へ送られる。</p>
<p>共通オプション:<span class="manopt">-encryption</span>, <span class="manopt">-stdinpass</span>, <span class="manopt">-srcimagekey</span>, <span class="manopt">-plist</span></p>
<h3><span id="l41" class="sanchor"><span class="manopt">resize</span> <span class="manarg">size_spec</span> <span class="manarg">image</span></span></h3>
<p>読み書き可能な UDIF が渡されると、最後のパーティションが Apple_HFS であれば、そのパーティションについて、イメージの終わり、あるいは HFS/HFS+ ファイルシステムで使われているブロックまでその容量を変更することを試みる（<span class="manarg">size_spec</span> に依存する）。<span class="manopt">resize</span> は、デバイスイメージを CD-R/DVD-R 形式へ変換して焼き込みを行うために容量を小さくすることが必要な場合にしばしば用いられる。<span class="manopt">resize</span> はデータを動かさず、gaps は再利用されないことに注意すること（？）。ファイルシステムによって作られた gaps を最小限にするために、<span class="manopt">-fsargs</span> が使用できる場合がある。<span class="manopt">resize</span> はまた、ファイルシステムとイメージの容量を区切りを越えて増加させるために用いることもできる。</p>
<p><span class="mancmd">hdiutil</span> <span class="manopt">burn</span> はデバイスの最後にある Apple_Free パーティションを焼き込まないため、リサイズされたファイルシステムを持つイメージを焼き込み、ファイルシステム中の実際のデータのみの内容を持つ CD-R/DVD-R マスタを作成することができる（データ断片化は最小限に抑えられるであろう）。</p>
<p>共通オプション:<span class="manopt">-encryption</span>, <span class="manopt">-stdinpass</span>, <span class="manopt">-srcimagekey</span>, <span class="manopt">-shadow</span> with friends, <span class="manopt">-plist</span></p>
<h4><span id="l42">サイズ指定子</span></h4>
<dl>
<dt><span class="manopt">-size</span> <span class="manarg">??b|??k|??m|??g|??t??p|??e</span></dt><dd><span class="manopt">create</span> を参照</dd>
<dt><span class="manopt">-sectors</span> <span class="manarg">sector_count</span> | <span class="manarg">min</span> | <span class="manarg">max</span></dt><dd>パーティションのサイズ変更後のサイズを 512 バイト単位のセクタ数で指定する。<span class="manarg">min</span> と <span class="manarg">max</span> の範囲を越えた値が指定されると、エラーが返されてパーティションのサイズ変更は行われない。<span class="manarg">min</span> は、パーティションがサイズ変更されるサイズの最小値を自動的に決定し、その値が用いられる。<span class="manarg">max</span> は、パーティションがサイズ変更されるサイズの最大値を自動的に決定し、その値が用いられる。</dd>
</dl>
<h4><span id="l43">その他のオプション</span></h4>
<dl>
<dt><span class="manopt">-imageonly</span></dt><dd>イメージファイルのみリサイズを行い、イメージ中のパーティションの変更は行わない。UDIF イメージに対する処理ではデフォルトである（新しく作られた自由領域にはパーティションを作ることができる）。</dd>
<dt><span class="manopt">-partitiononly</span></dt><dd>イメージ中のパーティションのみリサイズを行う（存在するファイルシステムも含む）。NDIF イメージに対する処理ではデフォルトである。パーティションが全ての領域を満たしている作られたばかりの SPUD イメージに対しては、パーティションは縮小のみ可能である。存在するパーティションの後に Apple_Free パーティションがあれば、パーティションは Apple_Free とマークされている領域まで拡げられる。パーティションの縮小により、Apple_Free パーティションが確保される。</dd>
<dt><span class="manopt">-partitionNumber</span> <span class="manarg">partitionNumber</span></dt><dd>どのパーティションをリサイズするかを指定する（UDIF のみ。下記の HISTORY を参考のこと）。<span class="manarg">partitionNumber</span> は 0 を初めとしたものであるが、<span class="mancmd">hdiutil</span> <span class="manopt">pmap</span> によって確認できるように、パーティション 0 はパーティションマップ自身のこともある。</dd>
<dt><span class="manopt">-growonly</span></dt><dd>イメージの拡張のみ許可する</dd>
<dt><span class="manopt">-shrinkonly</span></dt><dd>イメージの縮小のみ許可する</dd>
<dt><span class="manopt">-nofinalgap</span></dt><dd>リサイズの結果作られたフリーパーティションの除去を許可する。そのようなイメージはハードドライブに保存されると、OS 9 を起動できなくなったり、OS X をold-world (beige) マシンで起動できなくなる。（？; Such an image restored to a hard drive will not boot OS 9 nor will it allow OS X to boot on old-world (beige) machines.）</dd>
<dt><span class="manopt">-limits</span></dt><dd><span class="manopt">-imageonly</span> や <span class="manopt">-partitiononly</span> フラグを指定した場合に指定できるサイズ（512 バイト単位のセクタ）の最小値、現在値、最大値を表示する。イメージは変更されない。</dd>
<dt><span class="manopt">-oldlimits</span></dt><dd><span class="manopt">-limits</span> と同様に振る舞うが、伸縮可能なサイズは OS X バージョン 10.3 のものと同様に表示される（古いシステムにおいてイメージが asr(8) を必要とする場合に有用である）。</dd>
</dl>
<h3><span id="l44" class="sanchor"><span class="manopt">segment</span></span></h3>
<ul>
<li><span class="manopt">segment</span> <span class="manopt">-o</span> <span class="manarg">firstSegname</span> <span class="manopt">-segmentCount</span> <span class="manarg">#segs</span> <span class="manarg">image</span> [opts]</li>
<li><span class="manopt">segment</span> <span class="manopt">-o</span> <span class="manarg">firstSegname</span> <span class="manopt">-segmentSize</span> <span class="manarg">size</span> <span class="manarg">image</span> [opts]</li>
</ul>
<p>NDIF や UDIF ディスクイメージを分割する。分割されたイメージは、ファイルシステム、ネットワークプロトコル、メディアによって、ファイルサイズに制限が課せられている場合に用いられる。Note: 分割されたイメージが暗号化されているかどうかは、元のイメージの暗号化状態によってではなく、<span class="manopt">segment</span> に渡されるオプションによって決定される。</p>
<p>共通オプション:<span class="manopt">-encryption</span>, <span class="manopt">-stdinpass</span>, <span class="manopt">-srcimagekey</span>, <span class="manopt">-tgtimagekey</span>, <span class="manopt">-puppetstrings</span>, <span class="manopt">-plist</span></p>
<h4><span id="l45">その他のオプション</span></h4>
<dl>
<dt><span class="manopt">-segmentCount</span> <span class="manarg">segment_count</span></dt><dd>分割数を指定する。<span class="manopt">-segmentCount</span> と <span class="manopt">-segmentSize</span> は、どちらか一つのオプションを受け取る。</dd>
<dt><span class="manopt">-segmentSize</span> <span class="manarg">segment_size</span></dt><dd>分割サイズのセクタ数を、mkfile(8) の形式で指定する（不適切な数値もセクタとして扱われる）。元のイメージサイズが分割するサイズの倍数ではない場合、最後の分割ファイルはその他よりも小さいものとなる。<span class="manopt">-segmentCount</span> と <span class="manopt">-segmentSize</span> は、どちらか一つのオプションを受け取る。読み書き可能（UDRW）イメージの分割はサポートされていない（OS X 10.3 現在）。</dd>
<dt><span class="manopt">-firstSegmentSize</span> <span class="manarg">segment_size</span></dt><dd>最初の分割サイズのセクタ数を、<span class="manopt">-segmentSize</span> と同じ形式で指定する。複数の CD 保存に用いられる。</dd>
<dt><span class="manopt">-restricted</span></dt><dd>複数 CD 保存に用いられる、制限された分割ファイルを作成する。</dd>
<dt><span class="manopt">-ov</span></dt><dd>既存のファイルを上書きする。アタッチされたイメージへの上書きは許されていないことなどについては、<span class="manopt">create</span> の項目を参照すること。</dd>
</dl>
<h3><span id="l46" class="sanchor"><span class="manopt">pmap</span> <span class="manarg">image_source</span> [<span class="manopt">-options</span> <span class="manarg">optstr</span>]</span></h3>
<p>イメージやデバイスのパーティションマップを表示する。<span class="manarg">image_source</span> は、普通のファイルあるいは特別なファイル（例えば /dev/disk エントリ）である。下記の NOTE ON DEV ENTRY ACCESS の項目を参照すること。</p>
<p>共通オプション:<span class="manopt">-encryption</span>, <span class="manopt">-stdinpass</span>, <span class="manopt">-srcimagekey</span>, <span class="manopt">-shadow</span> with friends.</p>
<p><span class="manarg">optstr</span> のデフォルトは "xsSgcvk" であり、以下の組み合わせを指定できる。</p>
<ul>
<li>r raw - 調整なしで処理を行う</li>
<li>x extended - 2K と 512 エントリを処理し合わせる</li>
<li>s sectorsize - セクタ数で表示する</li>
<li>S sort - ブロック数によってソートする</li>
<li>g genfree - 割り当てられていない領域を考慮する</li>
<li>c combfree - 隣接する自由領域エントリを結合する</li>
<li>f fixfinal - 最終のパーティションをデバイスの最後まで拡張する</li>
<li>v volume synthesize - 単一ボリュームを単一パーティションエントリとする</li>
<li>k skip zero-length - ゼロ長のエントリをスキップする</li>
<li>K skip void/free - フリーあるいは無効な全てのパーティションをスキップする</li>
<li>m merge free space - 可能であれば、小さなフリーパーティションを前のパーティションと合わせる</li>
<li>i ignore shims - ブロック列の小さなフリーパーティションを無視する</li>
</ul>
<h3><span id="l47" class="sanchor"><span class="manopt">udifrez</span> [<span class="manarg">options</span>] <span class="manarg">image</span></span></h3>
<p>ディスクイメージに埋め込まれたリソース（ソフトウェアライセンス規約など）
以下のオプションのいずれかを指定しなければならない。</p>
<ul>
<li>-xml file - file の中の XML からリソースをコピーする</li>
<li>-rsrcfork file - file のリソースフォークからリソースをコピーする</li>
<li>-replaceall - イメージ中に存在する全てのリソースを削除する</li>
</ul>
<h3><span id="l48" class="sanchor"><span class="manopt">udifderez</span> [<span class="manarg">options</span>] <span class="manarg">image</span></span></h3>
<p>イメージからリソースを抽出する。
オプション:</p>
<ul>
<li>-xml - XML 出力を省略する（デフォルト）</li>
<li>-rez - Rez 形式の出力を省略する</li>
</ul>
<p>共通オプション:<span class="manopt">-encryption</span>, <span class="manopt">-stdinpass</span>, <span class="manopt">-srcimagekey</span></p>
<h2><span id="l49" class="title">例</span></h2>
<p>検証</p>
<pre>
hdiutil verify myimage.img
</pre>
<p>イメージを内部のチェックサムと照らし合わせ検証する。</p>
<p>分割</p>
<pre>
hdiutil segment -segmentSize 10m -o /tmp/aseg 30m.dmg
</pre>
<p>aseg.dmg, aseg.002.dmgpart, aseg.003.dmgpart を作成する。</p>
<p>変換</p>
<pre>
hdiutil convert master.dmg -format UDTO -o master
</pre>
<p>master.dmg を CD-R として焼き込めるイメージへ変換し、ファイル名に .toast を追加する。</p>
<pre>
hdiutil convert CDmaster.dmg -format UDTO -o CDmaster.cdr
</pre>
<p>CDmaster.dmg を CDmaster.cdr という名前の CD-R として焼き込めるイメージへ変換する。</p>
<pre>
hdiutil convert /dev/disk1 -format UDRW -o devimage
</pre>
<p>/dev/disk1 のディスクを読み書き可能なデバイスイメージファイルへ変換する。/dev/rdisk1 への読み込み権限がない場合、authopen(1) が使われる。ブロックスペシャルデバイスを使用することに注意すること。</p>
<p>焼き込み</p>
<pre>
hdiutil burn myImage.dmg
</pre>
<p>イメージを利用可能な光学メディアへ焼き込み、その後に検証を行う。</p>
<pre>
hdiutil burn myRawImage.cdr -noverifyburn -noeject
</pre>
<p>イメージを焼き込むが、検証とディスクの取り出しを行わない。</p>
<p>50 MB の暗号化イメージを作成</p>
<pre>
hdiutil create -encryption -size 50m e.dmg -fs HFS+J
</pre>
<p>非対話的に暗号化 SPUD イメージを作成</p>
<pre>
echo -n pp|hdiutil create -encryption -stdinpass -size 9m sp.dmg
</pre>
<p>"1 GB" のスパースイメージを作成（1 GB まで拡張可能なファイルシステムを持つファイル）</p>
<pre>
hdiutil create -type SPARSE -size 1g -fs HFS+ growableTo1g
</pre>
<h3><span id="l50" class="sanchor">新たにマウントされるボリュームを持つイメージを作成</span></h3>
<pre>
hdiutil create -volname Dick -size 1.3m -fs HFS -attach Moby.dmg
</pre>
<p>shadow ファイルを使用し、読み込み専用イメージを読み書き可能なものとしてアタッチして変更し、読み込み専用イメージへ変換して戻す。この方法によって、イメージを読み書き可能なものへと変換するための時間と領域を減らす。</p>
<pre>
hdiutil attach -owners on Moby.dmg -shadow
  /dev/disk2   Apple_partition_scheme
  /dev/disk2s1 Apple_partition_map
  /dev/disk2s2 Apple_HFS               /Volumes/Moby

ditto /Applications/Preview.app /Volumes/Moby

hdiutil detach /dev/disk2

hdiutil convert -format UDZO Moby.dmg -shadow
</pre>
<p>makehybrid を使用する。以下のファイルがあるとする。</p>
<pre>
albumlist.txt song2.wma     song4.m4a     song6.mp3     song8.mp3
song1.wma     song3.m4a     song5.mp3     song7.mp3
</pre>
<p>ファイルシステム間で共通の内容を持つ、HFS+/ISO9660/Joliet ハイブリッドな MusicBakup.iso を作成する。一般的に Macintosh システムでのみ閲覧可能な HFS+ ファイルシステムでは .wma ファイルを隠し、.m4a と .mp3 ファイルを可視にするものとする。Joliet ファイルシステムでは .m4a と .mp3 ファイルを隠し、.wma ファイルを可視にする。一般的に多くのプラットフォームにおける光学メディアのデフォルトファイルシステムである ISO9660 ファイルシステムでは、.mp3 ファイルのみ可視にする。三つ全てのファイルシステムでは "album-list.txt" ファイルを含ませる。-hide オプションは glob(3) により展開されるグロブ表現をとる。</p>
<pre>
hdiutil makehybrid -o MusicBackup.iso Music -hfs -iso -joliet \
    -hide-hfs 'Music/*.wma' -hide-joliet 'Music/{*.m4a,*.mp3}' \
    -hide-iso 'Music/*.{wma,m4a}'
</pre>
<p>（CD オーディオディスクの作成には drutil(1) も参照すること)</p>
<p>ディレクトリからイメージを作成（新しい形式）</p>
<pre>
hdiutil create -srcfolder mydir mydir.dmg
</pre>
<p>ディレクトリからイメージを作成（10.1 形式; 歴史的なもの）</p>
<pre>
du -s myFolder             # du(1) はリソースフォークもカウントする
10542
hdiutil create -sectors 10642 folder     # ファイルシステムに 1% ほど余分に取る
hdid -nomount folder.dmg
...
/dev/disk1s2            Apple_HFS
newfs_hfs -v myFolderImage /dev/rdisk1s2
hdiutil detach disk1
hdid folder.dmg
...
/dev/disk1s2            Apple_HFS         /Volumes/myFolderImage
sudo mount -u -t hfs -o perm /dev/disk1s2 /Volumes/myFolderImage
# 任意に所有者を有効にする; 手動でマウントされた場合 sudo は不要

ditto -rsrcFork myFolder /Volumes/myFolderImage
hdiutil detach disk1s2                  # 全てお終い
hdiutil convert -format UDZO -o folder.z.dmg folder.dmg # 圧縮
</pre>
<p>読み込み専用ディスクイメージの所有者を手動で変更する</p>
<pre>
hdiutil attach myimage.dmg
...
/dev/disk1s2            Apple_HFS         /Volumes/myVolume
sudo mount -ur -t hfs -o perm /dev/disk1s2 /Volumes/myVolume
# /sbin/mount を使って
disktool -p disk1s2             # Panther では 'diskutil unmount' を使う
mkdir /Volumes/myVolume
</pre>
<p>既知のイメージのアタッチを強制する</p>
<pre>
hdiutil attach -imagekey diskimage-class=CRawDiskImage myBlob.bar
</pre>
<h2><span id="l51" class="title">環境変数</span></h2>
<p>以下の環境変数は <span class="mancmd">hdiutil</span> と DiskImages に影響する。</p>
<dl>
<dt>com_apple_hdid_verbose</dt><dd><span class="manopt">attach</span> について <span class="manopt">-verbose</span> を有効にする。</dd>
<dt>com_apple_hdid_debug</dt><dd><span class="manopt">attach</span> について <span class="manopt">-debug</span> を有効にする。</dd>
<dt>com_apple_hdid_nokernel</dt><dd><span class="manopt">-nokernel</span> と似ているが、<span class="manopt">create</span> <span class="manopt">-attach</span> などの場合でも機能する。</dd>
<dt>com_apple_hdid_kernel</dt><dd>まず in-kernel アタッチを試みる（<span class="manopt">attach</span> <span class="manopt">-kernel</span> のように）。in-kernel は、UDRW と SPARSE イメージに対してはデフォルトの動作である。hdid(8) で述べられている RAM-based イメージを含む他のカーネル互換イメージは、<span class="manopt">attach</span> <span class="manopt">-kernel</span> が用いられない限り、あるいはこの環境変数が設定されない限り、ユーザプロセスによりアタッチされる。イメージが "カーネル互換" でなければ、in-kernel アタッチメントが必要な場合はアタッチが行われない。（警告: 現在では ram:// イメージは in-kernel でアタッチされると wired memory（固定メモリ）を使用する。）</dd>
<dt>com_apple_diskimages_insecureHTTP</dt><dd><span class="manopt">-insecurehttp</span> と同様に、SSL ピア検証を行わない。類似のコマンドラインオプションをサポートしない asr(8) のような DiskImages クライエントの場合に有用である。</dd>
</dl>
<h2><span id="l52" class="title">エラー</span></h2>
<p>DiskImages は多くのフレームワークを使用し、多くのエラーコードを目にすることになる。一般に、これらのエラー番号はユーザのためにローカライズされた文字列に変換される。それらの予備知識を得るために、エラーが起きた原因、BSD errno の値に関して intro(2) は良い説明となる。デバッグを行うには、通常の場合 <span class="manopt">-verbose</span> によって何が失敗しているのかを知る手掛かりとなる十分な情報が得られるだろう。以下は <span class="mancmd">hdiutil</span> が出くわすことになるであろう重要なエラーのリストである。</p>
<dl>
<dt>ENXIO</dt><dd>デバイスが設定されていない。このエラーは、カーネルドライバやフレームワークヘルパーと接触できない場合に DiskImages によって返される。前者は通常 IOHDIXController カーネル拡張がロードできないということを意味する。後者は通常 Foundation が提供するオブジェクト RPC 機構が設定できないということを意味する。リアタッチされた screen(1) セッションに存在するような、死んだ mach bootstrap コンテキスト環境では働かない。root ユーザは、StartupItemContext(8) によって起動項目の mach bootstrap コンテキストへアクセスすることができる。</dd>
<dt>EINVAL</dt><dd>不正な引数。このエラーは多くの状況で使用され、しばしば <span class="mancmd">hdiutil</span> の引数が細かい点で意味をなさないことの手掛かりとなる（例えば不正なレイアウト名が <span class="manopt">create</span> <span class="manopt">-layout</span> に渡されるなど）。</dd>
<dt>EFBIG</dt><dd>ファイルが大きすぎる。DiskImages は、HTTP によるディスクイメージをアクセスを試み、Range リクエストをサポートするサーバでそのディスクが大きすぎる場合、このエラーを明示的に使用する。詳細は hdid(8) を参照すること。</dd>
<dt>EAUTH</dt><dd>認証エラー。libcurl(3) が SSL ピアの検証を行えない場合、DiskImages によって使用される。詳細は <span class="manopt">-insecurehttp</span> を参照すること。</dd>
<dt>EBUSY</dt><dd>リソースがビジーである。排他的なアクセスが必要であるがそれが得られない場合に使用される。アタッチされたイメージに対して <span class="manopt">create</span> <span class="manopt">-ov</span> を行うとしたときなどに返される。</dd>
<dt>EACCES vs. EPERM</dt><dd>EACCES と EPERM は微妙に異なる。後者の "操作が許可されていない"（operation not permitted）は、不適切な実行ユーザ ID による場合など、実行できない操作を示す。一方で、"パーミッション拒否"（permission denied）は特定のアクセスモードにより処理が拒否されたことを意味する。</dd>
</dl>
<h2><span id="l53" class="title">永続的なスパースイメージを使用する</span></h2>
<p>SPARSE イメージ（スパースイメージ）は元来、最終的なイメージサイズが不明である場合に他のイメージ（UDZO など）を作成する中間段階に用いられるものとして作られた。OS X 10.3 でのように、現在では部分的なアップデートがされた SPARSE イメージは永続的なストレージとして安全に用いられるように適切に扱われる。SPARSE イメージは、10.3.2 以前のバージョンの OS X での使用は奨められず、通常はデータサイズが全く不明である場合のみに用いられるものである。<span class="manopt">resize</span> は、HFS+ ファイルシステムとそれを含むイメージのリサイズを行うことができる。</p>
<p>ファイルシステムが参照するよりも多くの領域が必要である場合、<span class="manopt">create</span> <span class="manopt">-stretch</span> と <span class="manopt">resize</span> がイメージ中のファイルシステムを拡張、縮小させる手段となる。イメージで使用されていない領域を解放する <span class="manopt">compact</span> は、永続的なストレージとして用いられる SPARSE イメージを使用する場合に便利である。SPARSE イメージはファイルシステムの断片化を増大させることに注意すること。</p>
<p>スパースイメージ内部のファイルシステムが、そのスパースイメージが置かれているボリュームよりも多くの自由領域を持っている場合に発生するエラーを避けるために、SPARSE イメージ内部の HFS ボリュームの自由領域の合計値は、そのイメージが置かれているボリュームの自由領域よりも少ないものとして報告される。イメージのファイルシステムは現在では、直接 <span class="manopt">attach</span> が行われればこのように振る舞い、ファイルシステムがアンマウントされ再びマウントされた場合（例えば <span class="manopt">unmount</span> と <span class="manopt">mountvol</span>）はそのように振る舞わない。</p>
<h2><span id="l54" class="title">NOTE ON DEV ENTRY ACCESS</span></h2>
<p>どの /dev エントリも生のディスクイメージとして扱われることが可能なため、どのデバイスがいつどのようにアクセスされるか知ることは重要である。/dev/rdisk ノードはキャラクタスペシャルデバイスであるが、BSD 上では "生" でありブロック整列 I/O が強制される。バッファキャッシュよりも物理ディスクに類似している。一方で /dev/disk ノードはバッファされたブロックスペシャルデバイスであり、主にカーネルのファイルシステムコードにより利用される。
ファイルシステムがマウントされている場合、/dev/disk ノードから読み込むことはできないが、適切な /dev/rdisk ノードは hdiutil で fsid や pmap を用いることにより読み込みアクセスが可能である。ディスクイメージフレームワークは authopen(1) を用いて open(2) によって読み込みオープンが（EACCESS によって）不可能なデバイスを開こうとする。これはリモートからのログインを行い /dev エントリにアクセスしようとする場合、明白なハングを引き起こす（認証パネルがコンソールで開かれる）。
一般的に、/dev/disk ノードはイメージングデバイス（convert , create -srcdevice の処理）に用いられる一方、/dev/rdisk は動作の速い pmap, fsid の利用に適している。特に、マウントされたジャーナルファイルシステムのブロックを読み込み専用イメージに変換する場合にイメージ中のボリュームがマウントされることが避けられる（ジャーナルが崩れてしまう）。</p>
<h2><span id="l55" class="title">互換性</span></h2>
<p>OS X 10.0 は Mac OS 9 での Disk Copy 6 ディスクイメージをサポートしていた。OS X 10.1 ではスパース、暗号化、zlib 圧縮イメージが追加された。これらのイメージは OS X 10.0 では認識されない（あるいは読み書き可能な形でアタッチした場合、破壊されるかも知れない）。スパース、シャドウ、暗号化形式は進化し、古いバージョンの OS と互換性を持つようなイメージを作成する為のスイッチが追加された（形式の増大により、パフォーマンスと信頼性の改善が犠牲となった）。特に、スパースイメージはそれが作成されたものより古いバージョンの OS X ではアタッチされることを期待できない。</p>
<p>OS X 10.2 では、多くの一般的なイメージ形式が "in-kernel"（例えば、DiskImages カーネル拡張はヘルパープロセスなしで処理可能である）となり、イメージメタデータは XML あるいは 埋め込まれたリソースフォークとして保存され、デフォルトの Disk Copy.app の "compressed" 形式が UDZO となった（10.0 との互換性を失った）。OS X 10.4 では後方互換性を犠牲とし、bzip2 圧縮が UDBZ 形式として導入され、より小さなイメージが利用可能となった（特に makehybrid と組み合わせた場合）。</p>
<p>OS X 10.4.7 では、UDIF イメージに埋め込まれていたリソースフォークは、リソースフォーク構造がもたらすメタデータの制約を避ける為に利用不可となった。結果として、10.4.7 とそれ以降で作成された UDIF イメージは、デフォルトでは OS X 10.1 及び OS X 10.0 では認識されないだろう。flatten がイメージ中に保存されたメタデータ形式のカスタマイズに用いられるようになった。</p>
<p>OS X 10.5 では迅速に圧縮可能なスパースバンドルイメージが導入されたが、過去のバージョンの OS では認識されない。OS X 10.6 では F_FULLSYNC をサポートしないネットワークファイルサーバ上のスパースバンドルイメージのアタッチのサポートが削除された。</p>
<h2><span id="l56" class="title">歴史</span></h2>
<p>ディスクイメージは当初、電子的にフロッピーディスクを複製製造することを目的とした保存及び伝送を目的として開発された。これらのフロッピーのイメージはフロッピーディスクへ作成・保存するアプリケーションと関連して、一般的に 'Disk Copy 4.2' イメージと言及される。Disk Copy 4.2 イメージは フロッピーディスクの block-for-block を表現しており、圧縮は行われていなかった。DART は圧縮をサポートした Disk Copy 4.2 の変形である。</p>
<p>NDIF（New Disk Image Format）イメージは Disk Copy 4.2 と DART イメージ形式を置き換え、フロッピーディスクよりも大きな容量をサポートすることを目的として開発された。NDIF と Disk Copy バージョン 6 により、イメージは Mac OS 9 上で大容量ストレージデバイスとして "アタッチ" することが可能となった。Apple Data Compression（ADC）-- 早い伸長についての注意深い最適化が行われている -- は、一般的に一度作成され製造上で多数回保存されるイメージを圧縮する為に用いられた。</p>
<p>UDIF（Universal Disk Image Format）デバイスイメージは NDIF の代わりに利用され、イメージをブロックデバイス全体とそのデータ（DDM, partition map, disk-based drivers など）として振る舞うことを可能にした。例えば、イメージから複製された起動可能な CD として振る舞うことができる。シングルフォークファイル（NDIF はデュアルフォークである）を保証する為に、リソースフォークがデータフォークの中に埋め込まれることとなった。UDIF は OS X ネイティブなイメージ形式である。</p>
<p>他のオペレーションシステムに由来する生のディスクイメージ（.iso ファイルなど）はディスクイメージとして認識される、それが OS X が認識可能なファイルシステムであればアタッチ・マウントが可能である。それらはまた hdiutil burn を用いて焼き込むことができる。</p>
<h2><span id="l57" class="title">WHAT'S NEW</span></h2>
<p>OS X 10.6 では、pmap が書き直され MediaKit の最新のルーチンを利用するようになり、GPT パーティションマップを適切にサポートするようになった。また全ての動作において -debug により -verbose が暗黙的に有効になるようになっている。</p>
<p>OS X 10.5 では、存在するイメージあるいは /dev ノードについて処理を行う際の attach の振る舞いが変更された。もしイメージがアタッチされているがボリュームがマウントされていない場合、ボリュームがマウントされる。以前のシステムではマウントされているボリュームではなく /dev を返す。この変更により、/dev ノードが既に存在する場合、複数作られる可能性が排除された。</p>
<h2><span id="l58" class="title">SEE ALSO</span></h2>
<p>authopen(1), hdid(8), diskutil, ditto(8), ioreg(8), drutil(1), ufs.util(8), msdos.util(8), hfs.util(8), diskarbitrationd(8), /usr/sbin/disktool (run with no arguments for usage), /System/Library/CoreServices/DiskImageMounter.app.</p>
</div>]]></content:encoded>
</item>
<item rdf:about="http://qz.tsugumi.org/City_Story.html">
<title>City Story</title>
<link>http://qz.tsugumi.org/City_Story.html</link>
<dc:date>2011-01-20T16:31:58+00:00</dc:date>
<content:encoded><![CDATA[<div><h2><span id="l0" class="title">公式サイト</span></h2>
<ul>
<li><a href="http://citystory.teamlava.com/" class="external">http://citystory.teamlava.com/</a></li>
</ul>
<h2><span id="l1" class="title">これは何のゲーム</span></h2>
<p>iPhone / iPod touch 向けの街を作るゲーム</p>
<h2><span id="l2" class="title">最も効率の良い Contract は何か</span></h2>
<h3><span id="l3" class="sanchor">基本情報</span></h3>
<table border="1">
<tr><td>Contracts</td><td>Costs</td><td>Exp</td><td>Gains</td><td>Period</td></tr>
<tr><td>Candy Bars</td><td>60</td><td>6</td><td>210</td><td>5 Mins</td></tr>
<tr><td>Friendship Bracelets</td><td>300</td><td>18</td><td>1100</td><td>1 Hrs</td></tr>
<tr><td>Video Games</td><td>400</td><td>63</td><td>1400</td><td>3 Hrs</td></tr>
<tr><td>Hula Hoops</td><td>160</td><td>9</td><td>600</td><td>15 Mins</td></tr>
<tr><td>Sporty Sneakers</td><td>1900</td><td>122</td><td>9200</td><td>1 Day</td></tr>
<tr><td>Popsicles</td><td>0</td><td>0</td><td>130</td><td>1 Mins</td></tr>
<tr><td>Blow Dryers</td><td>1500</td><td>101</td><td>6000</td><td>12 Hrs</td></tr>
<tr><td>Build-o Blocks</td><td>900</td><td>36</td><td>3200</td><td>2 Hrs</td></tr>
<tr><td>Evening Gowns</td><td>1100</td><td>82</td><td>3900</td><td>6 Hrs</td></tr>
<tr><td>Mini-Pretzels</td><td>300</td><td>10</td><td>900</td><td>15 Mins</td></tr>
<tr><td>MP3 Players</td><td>5400</td><td>250</td><td>28400</td><td>2 Days</td></tr>
<tr><td>Stylish Dolls</td><td>600</td><td>31</td><td>1900</td><td>1 Hrs</td></tr>
<tr><td>Fashionable Jackets</td><td>3300</td><td>172</td><td>16000</td><td>1 Day</td></tr>
<tr><td>Pogo Sticks</td><td>2100</td><td>54</td><td>7200</td><td>5 Hrs</td></tr>
<tr><td>Bottled Water</td><td>500</td><td>19</td><td>1500</td><td>30 Mins</td></tr>
<tr><td>Luxurious Shawls</td><td>2800</td><td>115</td><td>11200</td><td>12 Hrs</td></tr>
<tr><td>Massage Chairs</td><td>5100</td><td>156</td><td>26700</td><td>1 Day</td></tr>
<tr><td>Frozen Dinners</td><td>1300</td><td>69</td><td>4200</td><td>3 Hrs</td></tr>
<tr><td>Sports Jerseys</td><td>2200</td><td>79</td><td>7700</td><td>6 Hrs</td></tr>
<tr><td>Pretty Ponies</td><td>7800</td><td>283</td><td>41000</td><td>2 Days</td></tr>
<tr><td>Breakfast Cereal</td><td>400</td><td>14</td><td>1200</td><td>15 Mins</td></tr>
<tr><td>Gold Wrist Watches</td><td>4600</td><td>194</td><td>22200</td><td>1 Day</td></tr>
<tr><td>Coffee Makers</td><td>4300</td><td>101</td><td>17200</td><td>12 Hrs</td></tr>
<tr><td>Action Figures</td><td>900</td><td>37</td><td>2800</td><td>1 Hrs</td></tr>
<tr><td>Diamond Rings</td><td>7400</td><td>386</td><td>38900</td><td>2 Days</td></tr>
<tr><td>Digital Cameras</td><td>2900</td><td>59</td><td>9700</td><td>4 Hrs</td></tr>
<tr><td>Energy Drinks</td><td>700</td><td>23</td><td>2100</td><td>30 Mins</td></tr>
<tr><td>Change Bots</td><td>4200</td><td>141</td><td>16800</td><td>12 Hrs</td></tr>
</table>
<h3><span id="l4" class="sanchor">単純効率表</span></h3>
<table border="1">
<tr><td>Contract</td><td>Gains/Costs</td><td>Exp/Costs</td><td>Gains/Period</td><td>Exp/Period</td><td>Gains/Costs/Period</td><td>Exp/Costs/Period</td></tr>
<tr><td>Candy Bars</td><td>3.50</td><td>0.1000</td><td>2520.0000</td><td>72.0000</td><td>42.0000</td><td>1.2000</td></tr>
<tr><td>Friendship Bracelets</td><td>3.67</td><td>0.0600</td><td>1100.0000</td><td>18.0000</td><td>3.6667</td><td>0.0600</td></tr>
<tr><td>Video Games</td><td>3.50</td><td>0.1575</td><td>466.6667</td><td>21.0000</td><td>1.1667</td><td>0.0525</td></tr>
<tr><td>Hula Hoops</td><td>3.75</td><td>0.0563</td><td>2400.0000</td><td>36.0000</td><td>15.0000</td><td>0.2250</td></tr>
<tr><td>Sporty Sneakers</td><td>4.84</td><td>0.0642</td><td>418.1818</td><td>5.5455</td><td>0.2201</td><td>0.0029</td></tr>
<tr><td>Popsicles</td><td>∞</td><td>0</td><td>7800.0000</td><td>0.0000</td><td>--</td><td>0</td></tr>
<tr><td>Blow Dryers</td><td>4.00</td><td>0.0673</td><td>500.0000</td><td>8.4167</td><td>0.3333</td><td>0.0056</td></tr>
<tr><td>Build-o Blocks</td><td>3.56</td><td>0.0400</td><td>1600.0000</td><td>18.0000</td><td>1.7778</td><td>0.0200</td></tr>
<tr><td>Evening Gowns</td><td>3.55</td><td>0.0745</td><td>650.0000</td><td>13.6667</td><td>0.5909</td><td>0.0124</td></tr>
<tr><td>Mini-Pretzels</td><td>3.00</td><td>0.0333</td><td>3600.0000</td><td>40.0000</td><td>12.0000</td><td>0.1333</td></tr>
<tr><td>MP3 Players</td><td>5.26</td><td>0.0463</td><td>645.4545</td><td>5.6818</td><td>0.1195</td><td>0.0011</td></tr>
<tr><td>Stylish Dolls</td><td>3.17</td><td>0.0517</td><td>1900.0000</td><td>31.0000</td><td>3.1667</td><td>0.0517</td></tr>
<tr><td>Fashionable Jackets</td><td>4.85</td><td>0.0521</td><td>727.2727</td><td>7.8182</td><td>0.2204</td><td>0.0024</td></tr>
<tr><td>Pogo Sticks</td><td>3.43</td><td>0.0257</td><td>1440.0000</td><td>10.8000</td><td>0.6857</td><td>0.0051</td></tr>
<tr><td>Bottled Water</td><td>3.00</td><td>0.0380</td><td>3000.0000</td><td>38.0000</td><td>6.0000</td><td>0.0760</td></tr>
<tr><td>Luxurious Shawls</td><td>4.00</td><td>0.0411</td><td>933.3333</td><td>9.5833</td><td>0.3333</td><td>0.0034</td></tr>
<tr><td>Massage Chairs</td><td>5.24</td><td>0.0306</td><td>1213.6364</td><td>7.0909</td><td>0.2380</td><td>0.0014</td></tr>
<tr><td>Frozen Dinners</td><td>3.23</td><td>0.0531</td><td>1400.0000</td><td>23.0000</td><td>1.0769</td><td>0.0177</td></tr>
<tr><td>Sports Jerseys</td><td>3.50</td><td>0.0359</td><td>1283.3333</td><td>13.1667</td><td>0.5833</td><td>0.0060</td></tr>
<tr><td>Pretty Ponies</td><td>5.26</td><td>0.0363</td><td>931.8182</td><td>6.4318</td><td>0.1195</td><td>0.0008</td></tr>
<tr><td>Breakfast Cereal</td><td>3.00</td><td>0.0350</td><td>4800.0000</td><td>56.0000</td><td>12.0000</td><td>0.1400</td></tr>
<tr><td>Gold Wrist Watches</td><td>4.83</td><td>0.0422</td><td>1009.0909</td><td>8.8182</td><td>0.2194</td><td>0.0019</td></tr>
<tr><td>Coffee Makers</td><td>4.00</td><td>0.0235</td><td>1433.3333</td><td>8.4167</td><td>0.3333</td><td>0.0020</td></tr>
<tr><td>Action Figures</td><td>3.11</td><td>0.0411</td><td>2800.0000</td><td>37.0000</td><td>3.1111</td><td>0.0411</td></tr>
<tr><td>Diamond Rings</td><td>5.26</td><td>0.0522</td><td>884.0909</td><td>8.7727</td><td>0.1195</td><td>0.0012</td><td>でー</td></tr>
<tr><td>Digital Cameras</td><td>3.34</td><td>0.0203</td><td>2425.0000</td><td>14.7500</td><td>0.8362</td><td>0.0051</td></tr>
<tr><td>Energy Drinks</td><td>3.00</td><td>0.0329</td><td>4200.0000</td><td>46.0000</td><td>6.0000</td><td>0.0657</td></tr>
<tr><td>Change Bots</td><td>4.00</td><td>0.0336</td><td>1400.0000</td><td>11.7500</td><td>0.3333</td><td>0.0028</td></tr>
</table>
<h3><span id="l5" class="sanchor">考察</span></h3>
<p>基本的に作製時間が短い製品の方が単位時間あたりの獲得金貨・経験値が多い。Popsicles に至っては 1 時間に 7800 金貨を得ることが出来る。しかし長時間に渡って休みなく何十回もポチポチと繰り返すのは面倒臭い上に精神的に無理なので、基本として作製時間が 12 時間以上の製品を作製し、その間の時間調整に短時間の製品の作製を利用するのが効率が良さそう。
MP3 Players や Diamond Rings、Pretty Ponies は作製時間が 2 Days（実際は 44 時間？）と長いが、コストパフォーマンスが最も高い。</p>
<h3><span id="l6" class="sanchor">私のやり方（一例）</span></h3>
<p>12 hr で終了する Contract で、なおかつできるだけハイリターンが期待されるものを工場で作り続ける。そうすると、朝起きてちょこちょこ、家帰ってきてちょこちょこ、などのように生活時間に合わせやすい。
しかしながら収入・販売から次の Contract の製作に至るには少しばかり時間が掛かる。これを 2,3 回程度ならまだしも何回か繰り返すと、ずれが一時間ほどになる。次の終了時刻を考えなければならないが、生活時間によっては合わないこともあるだろう。そこで数時間程度で終わる Contract を間に挟み、時間の調整を行う。そして本来の予定する 12 hr * 2 単位での生産に戻る。</p>
<h3><span id="l7" class="sanchor">2011 年 初頭のアップデート</span></h3>
<p>突然密かにアップデートが行われ、およそ 20 種類もの Contracts が追加された。既存のものよりも効率がよりよくなっているものが多数含まれる。それらについても加えてデータを取ってみたい。</p>
</div>]]></content:encoded>
</item>
<item rdf:about="http://qz.tsugumi.org/drug_mistakes.html">
<title>取り違えやすい医薬品</title>
<link>http://qz.tsugumi.org/drug_mistakes.html</link>
<dc:date>2010-04-17T13:38:22+00:00</dc:date>
<content:encoded><![CDATA[<div><div class="plugin">{{nc}}</div>
<h2><span id="l0" class="title">起こし易い取り違え</span></h2>
<ul>
<li>名称が類似している</li>
<li>外観(包装・剤形)が類似している</li>
<li>規格が複数存在する</li>
<li>薬剤の配置の問題</li>
</ul>
<h2><span id="l1" class="title">例</span></h2>
<table border="1">
<tr><td>アスパラ-Ca</td><td>カルシウム補給剤</td><td>アスパラK</td><td>カリウム補給剤</td></tr>
<tr><td>アマリール</td><td>降圧剤</td><td>アルマール</td><td>血糖降下剤</td></tr>
<tr><td>アレロック</td><td>抗アレルギー剤</td><td>アテレック</td><td>降圧剤</td></tr>
<tr><td>ウテメリン</td><td>切迫流早産治療剤</td><td>メテナリン</td><td>子宮収縮止血剤</td></tr>
<tr><td>エクセグラン</td><td>抗てんかん剤</td><td>エクセラーゼ</td><td>消化酵素剤</td></tr>
<tr><td>オキシコンチン</td><td>鎮痛剤</td><td>MSコンチン</td><td>鎮痛剤</td></tr>
<tr><td>オステラック</td><td>抗炎症剤</td><td>オルメテック</td><td>降圧剤</td></tr>
<tr><td>カルデナリン</td><td>降圧剤</td><td>カルナクリン</td><td>循環障害改善剤</td></tr>
<tr><td>クラビット</td><td>抗生剤</td><td>クラリシッド</td><td>抗生剤</td></tr>
<tr><td>グリチロン</td><td>肝臓疾患・抗アレルギー剤</td><td>グリミクロン</td><td>血糖降下剤</td></tr>
<tr><td>サイレース</td><td>睡眠導入剤</td><td>セレネース</td><td>抗精神病剤</td></tr>
<tr><td>ザイロリック</td><td>高尿酸血症治療剤</td><td>カロナール</td><td>解熱鎮痛剤</td></tr>
<tr><td>サクシゾン</td><td>水溶性ヒドロコルチゾン製剤</td><td>サクシン</td><td>筋弛緩剤</td></tr>
<tr><td>セファメジン</td><td>抗生剤</td><td>セフメタゾン</td><td>抗生剤</td></tr>
<tr><td>セレナール</td><td>抗不安剤</td><td>セレネース</td><td>抗精神病剤</td></tr>
<tr><td>タキソール</td><td>抗悪性腫瘍剤</td><td>タキソテール</td><td>抗悪性腫瘍剤</td></tr>
<tr><td>タチオン</td><td>グルタチオン製剤</td><td>タリオン</td><td>抗アレルギー剤</td></tr>
<tr><td>テオドール</td><td>気管支拡張剤</td><td>テグレトール</td><td>抗てんかん剤</td></tr>
<tr><td>ニトロールR</td><td>硝酸イソソルビド製剤</td><td>ヘルベッサーR</td><td>Ca拮抗剤</td></tr>
<tr><td>ノイロビタン</td><td>ビタミン剤</td><td>ノイロトロピン</td><td>鎮痛剤</td></tr>
<tr><td>ノルバスク</td><td>降圧剤</td><td>ノルバデックス</td><td>抗乳癌剤</td></tr>
<tr><td>ノルバスクOD</td><td>降圧剤</td><td>アムロジンOD</td><td>降圧剤</td></tr>
<tr><td>パロチン</td><td>唾液腺ホルモン</td><td>メバロチン</td><td>高脂血症治療剤</td></tr>
<tr><td>プレドニン</td><td>合成副腎皮質ホルモン剤</td><td>プルゼニド</td><td>緩下剤</td></tr>
<tr><td>ペルサンチン</td><td>抗血小板剤</td><td>ペルジピン</td><td>降圧剤</td></tr>
<tr><td>ムコダイン</td><td>去痰・起動粘膜正常化剤</td><td>ムコスタ</td><td>胃炎・胃潰瘍治療剤</td></tr>
<tr><td>メジコン</td><td>鎮咳剤</td><td>メプチン</td><td>気管支拡張剤</td></tr>
<tr><td>メルカゾール</td><td>抗甲状腺剤</td><td>プロパジール</td><td>抗甲状腺剤</td></tr>
<tr><td>メチロン</td><td>スルピリン</td><td>メイロン</td><td>解毒剤(炭酸水素ナトリウム)</td></tr>
<tr><td>レスタス</td><td>抗不安剤</td><td>レスリン</td><td>抗うつ剤</td></tr>
</table>
<h2><span id="l2" class="title">外部リンク</span></h2>
<ul>
<li><a href="http://msi.info.pmda.go.jp/hsearch/index.jsp" class="external">ヒヤリハット事例検索</a></li>
<li><a href="http://medical.nikkeibp.co.jp/inc/all/di/hiyari/" class="external">薬剤師のための情報サイト｜DIオンライン</a></li>
</ul>
<h2><span id="l3" class="title">参考書籍</span></h2>
<ul>
<li><a href="http://www.amazon.co.jp/gp/product/4753220826?tag=30bfba4c6169-22" class="external">保険薬局における調剤過誤対策のマネジメント</a></li>
</ul>
</div>]]></content:encoded>
</item>
<item rdf:about="http://qz.tsugumi.org/memo_command.html">
<title>コマンド覚え書き</title>
<link>http://qz.tsugumi.org/memo_command.html</link>
<dc:date>2010-01-04T08:27:25+00:00</dc:date>
<content:encoded><![CDATA[<div><h2><span id="l0" class="title">ssh 経由でディレクトリを同期</span></h2>
<p>hoge 以下のディレクトリを server サーバの ~/Documents/hoge と同期させる</p>
<pre>
rsync -aKLvz --delete -e ssh hoge server:~/Documents
</pre>
<h2><span id="l1" class="title">find</span></h2>
<h3><span id="l2" class="sanchor">ディレクトリについてパーミッションを統一する</span></h3>
<pre>
find . -type d -exec chmod 755 {} \;
</pre>
<h3><span id="l3" class="sanchor">正規表現にマッチするファイルについて操作</span></h3>
<pre>
find . -regex '.*\.tmp' -exec rm {} \;
</pre>
<h2><span id="l4" class="title">ssh サーバにパスワード入力なしでログイン</span></h2>
<h3><span id="l5" class="sanchor">鍵を用意する</span></h3>
<pre>
% ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/hoge/.ssh/id_dsa): 任意のパス
Enter passphrase (empty for no passphrase): [ENTER]
Enter same passphrase again: [ENTER]
Your identification has been saved in 任意のパス.
Your public key has been saved in 任意のパス.pub.
The key fingerprint is:
...
The key's randomart image is:
...
</pre>
<h3><span id="l6" class="sanchor">公開鍵をサーバへ登録する</span></h3>
<pre>
% cat 任意のパス.pub | ssh サーバ 'mkdir -p ~/.ssh; cat &gt;&gt; ~/.ssh/authorized_keys'
</pre>
<h3><span id="l7" class="sanchor">設定ファイルを編集</span></h3>
<pre>
% vi ~/.ssh/config

Host サーバ
  IdentityFile 任意のパス
</pre>
</div>]]></content:encoded>
</item>
<item rdf:about="http://qz.tsugumi.org/Perl_LWP.html">
<title>Perl - LWP</title>
<link>http://qz.tsugumi.org/Perl_LWP.html</link>
<dc:date>2009-12-02T05:04:35+00:00</dc:date>
<content:encoded><![CDATA[<div><h2><span id="l0" class="title">概要</span></h2>
<p>libwww-perl。Perl 用の WWW ライブラリモジュール群。</p>
<p>HTTP プロトコルだけではなく、HTTPS や FTP、Gopher、NNTP などを介したリクエスト、あるいはローカルファイルや CPAN のファイルへのアクセス、sendmail によるメールの送信などが行える。</p>
<p>HTTPS プロトコルを利用する場合は、Crypt::SSLeay がインストールされていることが必要。</p>
<h2><span id="l1" class="title">インストール</span></h2>
<p>root ユーザで <code>cpan -i LWP</code> とすると必要なモジュールも自動でインストールされる。Windows の ActivePerl には入ってるのか分からない。<code>ppm install LWP</code> とかやるとインストールできるかも。</p>
<h2><span id="l2" class="title">LWP の簡単な例</span></h2>
<pre>
use LWP;

print LWP::UserAgent-&gt;new-&gt;request(
	HTTP::Request-&gt;new(GET =&gt; "http://localhost/"))-&gt;content;
</pre>
<p>正直なところ、ただ HTTP サーバのファイルへアクセスする目的で HTTP::Request でリクエストオブジェクトを作ってから LWP::UserAgent オブジェクトに request させる、なんてのは少し面倒。そのために、より簡素なアクセスを行いたい場合に、単純化されたモジュールが用意されている。</p>
<h2><span id="l3" class="title">LWP::Simple</span></h2>
<p>その名の通り、シンプルな LWP のインターフェイス。内部では LWP を使っている。LWP::Simple によってデフォルトでエクスポートされるサブルーチンは以下の通り。</p>
<dl>
<dt>get($url)</dt><dd>$url へ GET によってアクセスし、その内容を返す。Not Found などで失敗すると undef が返される。$url は URL を示す文字列か URI オブジェクトのどちらか。</dd>
<dt>head($url)</dt><dd>$url へ HEAD によってアクセスし、サーバが返すヘッダを Content-Type, Content-Length, Modified, Expires, Server の順のリストとして返す。それ以外は GET と同じ。</dd>
<dt>getprint($url)</dt><dd>$url へ GET によってアクセスし、その内容をデフォルトの出力先に設定されているファイルハンドルへ出力する。失敗すると、ステータスコードとエラー内容が標準エラー出力へ出力される。返り値はサーバが返すレスポンスコード。</dd>
<dt>getstore($url, $file)</dt><dd>$url へ GET によってアクセスし、その内容を $file へ保存する。返り値はサーバが返すレスポンスコード。</dd>
<dt>mirror($url, $file)</dt><dd>getstore とほぼ同様だが、If-Modified-Since と Content-Length ヘッダを用いて内容に変化があるかを調べ、変化があれば新しく保存される。</dd>
</dl>
<p>デフォルトで LWP::Simple を使う（<code>use LWP::Simple;</code>）場合、HTTP::Status のレスポンスコード（RC_*）を示す定数やそれがリクエストに成功したかを判断する is_seccess() と is_failure() もエクスポートされる。</p>
<p>また同様にデフォルトで LWP::Simple を使う場合には、get() はその内部で LWP::UserAgent を使用せず、IO::Socket::INET を使用してアクセスを行っている。たぶんそっちの方が処理が軽くて済むからに違いない。またその場合は、User-Agent として "lwp-trivial/*" が送られる。その他のサブルーチンは "LWP::Simple/*" として送られる。</p>
<p>LWP::UserAgent は LWP::Simple のモジュール内のグローバル変数 $ua として用いられている。この変数は、LWP::Simple を use する時に <code>use LWP::Simple qw($ua get head);</code> などとして自分のパッケージへインポートして弄くることもできる。例えば、<code>$ua-&gt;agent("hogehoge/0.2");</code> などとすると、送られる User-Agent を変更することができたり。また $ua をインポートすると、get が LWP::UserAgent を使うようになる。</p>
<h2><span id="l4" class="title">LWP::UserAgent を使う</span></h2>
<p>単純なアクセスを行う場合は LWP::Simple でいいのかも知れないけれど、ヘッダを解析したり POST を使いたい場合は LWP::Simple では力不足。それで、やっぱり LWP::UserAgent やらを使うということになる。</p>
<p>LWP::Simple を使わずとも、LWP::UserAgent では少し単純なアクセスを行うメソッド（get, head, post）が提供されている。POST アクセスもでき、さらにヘッダやフォームも送れるので、LWP::Simple よりは使い勝手がいい。</p>
<h3><span id="l5" class="sanchor">その例の一部</span></h3>
<p>エラーなどは一切考慮していない例。実際に厳密さが要求される環境で使う場合は、ちゃんと返り値をチェックする必要がある。</p>
<h4><span id="l6">get( URL [, ヘッダのキー =&gt; ヘッダの値 ]... )</span></h4>
<p>GET リクエストを行う。HTTP::Response オブジェクトを返す。</p>
<div class="syntax syntax_perl"><pre>
<span class="keyword">use</span> <span class="ident">LWP</span><span class="punct">;</span>

<span class="keyword">my</span> <span class="symbol">$ua</span> <span class="punct">=</span> <span class="ident">LWP</span><span class="punct">::</span><span class="ident">UserAgent</span><span class="punct">-&gt;</span><span class="ident">new</span><span class="punct">;</span>
<span class="keyword">my</span> <span class="symbol">$res</span> <span class="punct">=</span> <span class="symbol">$ua</span><span class="punct">-&gt;</span><span class="ident">get</span><span class="punct">(</span>
  <span class="punct">&quot;</span><span class="string">http://localhost/</span><span class="punct">&quot;,</span>
  <span class="punct">&quot;</span><span class="string">User-Agent</span><span class="punct">&quot;</span> <span class="punct">=&gt;</span> <span class="punct">&quot;</span><span class="string">myUA/0.1</span><span class="punct">&quot;,</span>
  <span class="punct">&quot;</span><span class="string">X-Hoge</span><span class="punct">&quot;</span>     <span class="punct">=&gt;</span> <span class="punct">&quot;</span><span class="string">hoge</span><span class="punct">&quot;</span>
<span class="punct">);</span>
<span class="ident">print</span> <span class="symbol">$res</span><span class="punct">-&gt;</span><span class="ident">as_string</span><span class="punct">;</span> <span class="comment"># サーバからの返答を、ヘッダも含めて文字列として得る</span>
<span class="ident">print</span> <span class="symbol">$res</span><span class="punct">-&gt;</span><span class="ident">content</span><span class="punct">;</span>   <span class="comment"># コンテントボディ</span>

<span class="comment"># あるいは</span>
<span class="comment"># print LWP::UserAgent-&gt;new-&gt;get(</span>
<span class="comment">#   &quot;http://localhost/&quot;,</span>
<span class="comment">#   &quot;User-Agent&quot; =&gt; &quot;myUA/0.1&quot;,</span>
<span class="comment">#   &quot;X-Hoge&quot;     =&gt; &quot;hoge&quot;</span>
<span class="comment"># )-&gt;as_string;</span>
</pre></div>
<h4><span id="l7">head( URL [, ヘッダのキー =&gt; ヘッダの値 ]... )</span></h4>
<p>HEAD リクエストを行う以外は get と同様。</p>
<div class="syntax syntax_perl"><pre>
<span class="keyword">use</span> <span class="ident">LWP</span><span class="punct">;</span>

<span class="keyword">my</span> <span class="symbol">$ua</span> <span class="punct">=</span> <span class="ident">LWP</span><span class="punct">::</span><span class="ident">UserAgent</span><span class="punct">-&gt;</span><span class="ident">new</span><span class="punct">;</span>
<span class="keyword">my</span> <span class="symbol">$res</span> <span class="punct">=</span> <span class="symbol">$ua</span><span class="punct">-&gt;</span><span class="ident">get</span><span class="punct">(</span>
  <span class="punct">&quot;</span><span class="string">http://localhost/</span><span class="punct">&quot;,</span>
  <span class="punct">&quot;</span><span class="string">User-Agent</span><span class="punct">&quot;</span> <span class="punct">=&gt;</span> <span class="punct">&quot;</span><span class="string">myUA/0.1</span><span class="punct">&quot;,</span>
  <span class="punct">&quot;</span><span class="string">X-Hoge</span><span class="punct">&quot;</span>     <span class="punct">=&gt;</span> <span class="punct">&quot;</span><span class="string">hoge</span><span class="punct">&quot;</span>
<span class="punct">);</span>
<span class="ident">print</span> <span class="symbol">$res</span><span class="punct">-&gt;</span><span class="ident">content</span><span class="punct">;</span>
</pre></div>
<h4><span id="l8">post()</span></h4>
<ul>
<li>post( URL [[, { フォームのキー =&gt; フォームの値 }] [, ヘッダのキー =&gt; ヘッダの値 ]... ] )</li>
<li>post( URL , ヘッダのキー =&gt; ヘッダの値 ]... [, Content =&gt; リクエストボディ )</li>
</ul>
<p>POST リクエストを行う。</p>
<div class="syntax syntax_perl"><pre>
<span class="keyword">use</span> <span class="ident">LWP</span><span class="punct">;</span>

<span class="keyword">my</span> <span class="symbol">$ua</span> <span class="punct">=</span> <span class="ident">LWP</span><span class="punct">::</span><span class="ident">UserAgent</span><span class="punct">-&gt;</span><span class="ident">new</span><span class="punct">;</span>
<span class="keyword">my</span> <span class="symbol">$res</span> <span class="punct">=</span> <span class="symbol">$ua</span><span class="punct">-&gt;</span><span class="ident">post</span><span class="punct">(</span>
  <span class="punct">&quot;</span><span class="string">http://localhost/</span><span class="punct">&quot;,</span>
  <span class="punct">{</span>
     <span class="punct">&quot;</span><span class="string">form_x</span><span class="punct">&quot;</span> <span class="punct">=&gt;</span> <span class="punct">&quot;</span><span class="string">aaaaa</span><span class="punct">&quot;,</span>
     <span class="punct">&quot;</span><span class="string">form_y</span><span class="punct">&quot;</span> <span class="punct">=&gt;</span> <span class="punct">&quot;</span><span class="string">にほんご</span><span class="punct">&quot;</span> <span class="comment"># 非アスキー文字はそれぞれ URL エンコードされる</span>
  <span class="punct">},</span>
  <span class="punct">&quot;</span><span class="string">User-Agent</span><span class="punct">&quot;</span>   <span class="punct">=&gt;</span> <span class="punct">&quot;</span><span class="string">myUA/0.1</span><span class="punct">&quot;,</span>
  <span class="punct">&quot;</span><span class="string">X-Hoge</span><span class="punct">&quot;</span>       <span class="punct">=&gt;</span> <span class="punct">&quot;</span><span class="string">hoge</span><span class="punct">&quot;,</span>
  <span class="punct">&quot;</span><span class="string">Content-Type</span><span class="punct">&quot;</span> <span class="punct">=&gt;</span> <span class="punct">&quot;</span><span class="string">application/x-www-form-urlencoded</span><span class="punct">&quot;</span>
<span class="punct">);</span>
<span class="ident">print</span> <span class="symbol">$res</span><span class="punct">-&gt;</span><span class="ident">content</span><span class="punct">;</span>
</pre></div>
<p>フォームの値を渡す場合、"Content-Type" や "Content-Length" のヘッダは LWP::UserAgent オブジェクトが HTTP::Request::Common を利用して自動的に設定されて送られるため、こちら側がそれらのヘッダを渡す必要はない。</p>
<p>"Content-Type" がデフォルト値の "application/x-www-form-urlencoded" 以外の値として送る必要があれば、こちらで "Content-Type" ヘッダを設定するとともに、リクエストボディデータを Content の値として post() に渡す必要がある。例えば、エンコード形式（フォームの enctype 属性）が "multipart/form-data" としてされている場合など。</p>
<div class="syntax syntax_perl"><pre>
<span class="keyword">my</span> <span class="symbol">$ua</span> <span class="punct">=</span> <span class="ident">LWP</span><span class="punct">::</span><span class="ident">UserAgent</span><span class="punct">-&gt;</span><span class="ident">new</span><span class="punct">;</span>
<span class="keyword">my</span> <span class="symbol">$res</span> <span class="punct">=</span> <span class="symbol">$ua</span><span class="punct">-&gt;</span><span class="ident">post</span><span class="punct">(</span>
  <span class="punct">&quot;</span><span class="string">http://localhost/</span><span class="punct">&quot;,</span>
  <span class="ident">Content</span> <span class="punct">=&gt;</span> <span class="punct">&quot;</span><span class="string">hoge=33&amp;hoge=11</span><span class="punct">&quot;</span>
<span class="punct">);</span>
<span class="comment"># 滅多に使わないが、同名のキーを持つフォームのリクエストを行う場合</span>
</pre></div>
<p>ただし "multipart/form-data" を送る場合は、post() メソッドを使ってリクエストを行うよりも、HTTP::Request::Common オブジェクトを直接扱って LWP::UserAgent へ request() させた方がいいかも知れない。boundary だのファイル名だの若干複雑なので……。</p>
<h3><span id="l9" class="sanchor">HTTP::Response オブジェクト</span></h3>
<p>LWP::UserAgent オブジェクトの request() によって返るはずのオブジェクト。サーバからの応答内容が含まれている。HTTP::Response は HTTP::Message を継承しているため、それ由来のメソッドを持つ。以下はほんの一例。</p>
<div class="syntax syntax_perl"><pre>
<span class="keyword">my</span> <span class="symbol">$res</span> <span class="punct">=</span> <span class="symbol">$ua</span><span class="punct">-&gt;</span><span class="ident">get</span><span class="punct">(&quot;</span><span class="string">http://localhost/</span><span class="punct">&quot;);</span>

<span class="comment"># レスポンスコード (200, 301, 404, 500...)</span>
<span class="ident">print</span> <span class="symbol">$res</span><span class="punct">-&gt;</span><span class="ident">code</span><span class="punct">;</span>

<span class="comment"># ステータスメッセージ (OK, Moved Permanently, Not Found, Internal Server Error)</span>
<span class="ident">print</span> <span class="symbol">$res</span><span class="punct">-&gt;</span><span class="ident">message</span><span class="punct">;</span>

<span class="comment"># 特定のヘッダを得る（case-insensitive）</span>
<span class="ident">print</span> <span class="symbol">$res</span><span class="punct">-&gt;</span><span class="ident">header</span><span class="punct">(&quot;</span><span class="string">Date</span><span class="punct">&quot;);</span>

<span class="comment"># ヘッダを HTTP::Headers オブジェクトとして得る</span>
<span class="keyword">my</span> <span class="symbol">$hs</span> <span class="punct">=</span> <span class="symbol">$res</span><span class="punct">-&gt;</span><span class="ident">headers</span><span class="punct">;</span>
<span class="ident">print</span> <span class="symbol">$hs</span><span class="punct">-&gt;</span><span class="ident">as_string</span><span class="punct">;</span>

<span class="comment"># 全てのヘッダフィールドの名前を得る</span>
<span class="keyword">my</span> <span class="symbol">@names</span> <span class="punct">=</span> <span class="symbol">$res</span><span class="punct">-&gt;</span><span class="ident">header_field_names</span><span class="punct">;</span>

<span class="comment"># Content-Type を得る</span>
<span class="ident">print</span> <span class="symbol">$res</span><span class="punct">-&gt;</span><span class="ident">content_type</span><span class="punct">;</span>

<span class="comment"># コンテントボディ（内容）を得る</span>
<span class="keyword">my</span> <span class="symbol">$c</span> <span class="punct">=</span> <span class="symbol">$res</span><span class="punct">-&gt;</span><span class="ident">content</span><span class="punct">;</span>
</pre></div>
<h2><span id="l10" class="title">その他</span></h2>
<p>LWP はクッキーを扱ったり、SSL によるアクセス、プロクシを介したアクセスを行ったりもできます。<code>perldoc lwpcook</code> すると色々な情報が得られます。</p>
<h2><span id="l11" class="title">リンク</span></h2>
<ul>
<li><a href="http://www.linpro.no/lwp/" class="external">libwww-perl</a></li>
<li><a href="http://homepage3.nifty.com/hippo2000/perltips/lwpcook.html" class="external">lwpcook - libwww-perl クックブック</a></li>
<li><a href="http://digit.que.ne.jp/work/wiki.cgi?Perl%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%2FLWP" class="external">Perlモジュール/LWP - Walrus, Digit.</a></li>
</ul>
</div>]]></content:encoded>
</item>
<item rdf:about="http://qz.tsugumi.org/man_mdutil.html">
<title>mdutil(1)</title>
<link>http://qz.tsugumi.org/man_mdutil.html</link>
<dc:date>2009-09-21T08:10:48+00:00</dc:date>
<content:encoded><![CDATA[<div><h2><span id="l0" class="title">名前</span></h2>
<p><span class="mancmd">mdutil</span> -- Spotlight により使用されるメタデータストアを管理する</p>
<h2><span id="l1" class="title">書式</span></h2>
<p><span class="mancmd">mdutil</span> [<span class="manopt">-pEsav</span>] [<span class="manopt">-i</span> on | off] <span class="manarg">mountPoint</span> <span class="manarg">...</span></p>
<h2><span id="l2" class="title">概要</span></h2>
<p><span class="mancmd">mdutil</span> コマンドはマウントされたボリュームのメタデータストアを管理する際に用いられる。</p>
<p>以下のオプションが利用可能である:</p>
<dl>
<dt>-p</dt><dd>Spotlight はネットワークデバイスの索引をローカルに保存している。このオプションは、適切なネットワークデバイスに対してローカルの索引を新たにすることを要求する。</dd>
<dt>-E</dt><dd>このフラグはボリュームのそれぞれのローカルストアを削除する。適切な場合、ストアは再構築される。</dd>
<dt>-i on | off</dt><dd>与えられたボリュームについての索引の作成を有効または無効にする。索引の作成はディスク領域やその他の状況により遅延される可能性があることに注意すること。</dd>
<dt>-s</dt><dd>与えられたボリュームの索引の状態を表示する。</dd>
<dt>-a</dt><dd>コマンドを全てのボリュームについて適用する。</dd>
<dt>-v</dt><dd>可能であれば詳細な情報を出力する。</dd>
</dl>
<h2><span id="l3" class="title">参照</span></h2>
<p>mdfind(1), mds(8), mdimport(1)</p>
</div>]]></content:encoded>
</item>
<item rdf:about="http://qz.tsugumi.org/Perl_socket.html">
<title>Perl - ソケット</title>
<link>http://qz.tsugumi.org/Perl_socket.html</link>
<dc:date>2009-08-29T16:15:27+00:00</dc:date>
<content:encoded><![CDATA[<div><p>IO::Socket 以下のモジュール（<a href="Perl_IO_Socket_INET.html">IO::Socket::INET</a> など）を使わずに Socket モジュールしか使わない場合のソケット操作。ちゃんとエラーチェックはやった方がいいよ。</p>
<h2><span id="l0" class="title">TCP</span></h2>
<h3><span id="l1" class="sanchor">クライアント</span></h3>
<div class="syntax syntax_perl"><pre>
<span class="keyword">use</span> <span class="ident">Socket</span><span class="punct">;</span>

<span class="keyword">my</span><span class="punct">(</span><span class="symbol">$host</span><span class="punct">,</span> <span class="symbol">$port</span><span class="punct">)</span> <span class="punct">=</span> <span class="punct">(&quot;</span><span class="string">localhost</span><span class="punct">&quot;,</span> <span class="number">9999</span><span class="punct">);</span>
<span class="keyword">my</span> <span class="symbol">$s</span><span class="punct">;</span>
<span class="ident">socket</span><span class="punct">(</span><span class="symbol">$s</span><span class="punct">,</span> <span class="ident">AF_INET</span><span class="punct">,</span> <span class="ident">SOCK_STREAM</span><span class="punct">,</span> <span class="ident">getprotobyname</span><span class="punct">(&quot;</span><span class="string">tcp</span><span class="punct">&quot;));</span>
<span class="ident">connect</span><span class="punct">(</span><span class="symbol">$s</span><span class="punct">,</span> <span class="ident">pack_sockaddr_in</span><span class="punct">(</span><span class="symbol">$port</span><span class="punct">,</span> <span class="ident">inet_aton</span><span class="punct">(</span><span class="symbol">$host</span><span class="punct">)));</span>
<span class="ident">print</span> <span class="symbol">$s</span> <span class="punct">&quot;</span><span class="string">Hello<span class="escape">\n</span></span><span class="punct">&quot;;</span>
<span class="ident">print</span> <span class="punct">&lt;</span><span class="symbol">$s</span><span class="punct">&gt;;</span>
<span class="ident">close</span><span class="punct">(</span><span class="symbol">$s</span><span class="punct">);</span>
</pre></div>
<h3><span id="l2" class="sanchor">サーバ</span></h3>
<div class="syntax syntax_perl"><pre>
<span class="keyword">use</span> <span class="ident">Socket</span><span class="punct">;</span>

<span class="keyword">my</span> <span class="symbol">$port</span> <span class="punct">=</span> <span class="number">9999</span><span class="punct">;</span>
<span class="keyword">my</span> <span class="symbol">$s</span><span class="punct">;</span>
<span class="ident">socket</span><span class="punct">(</span><span class="symbol">$s</span><span class="punct">,</span> <span class="ident">AF_INET</span><span class="punct">,</span> <span class="ident">SOCK_STREAM</span><span class="punct">,</span> <span class="ident">getprotobyname</span><span class="punct">(&quot;</span><span class="string">tcp</span><span class="punct">&quot;));</span>
<span class="ident">bind</span><span class="punct">(</span><span class="symbol">$s</span><span class="punct">,</span> <span class="ident">pack_sockaddr_in</span><span class="punct">(</span><span class="symbol">$port</span><span class="punct">,</span> <span class="ident">inet_aton</span><span class="punct">(&quot;</span><span class="string">0.0.0.0</span><span class="punct">&quot;)));</span>
<span class="ident">listen</span><span class="punct">(</span><span class="symbol">$s</span><span class="punct">,</span> <span class="ident">SOMAXCONN</span><span class="punct">);</span>

<span class="keyword">while</span><span class="punct">(</span><span class="keyword">my</span> <span class="symbol">$addr</span> <span class="punct">=</span> <span class="ident">accept</span><span class="punct">(</span><span class="keyword">my</span> <span class="symbol">$c</span><span class="punct">,</span> <span class="symbol">$s</span><span class="punct">)){</span>
  <span class="keyword">my</span><span class="punct">(</span><span class="symbol">$cport</span><span class="punct">,</span> <span class="symbol">$caddr</span><span class="punct">)</span> <span class="punct">=</span> <span class="ident">unpack_sockaddr_in</span><span class="punct">(</span><span class="symbol">$addr</span><span class="punct">);</span>
  <span class="keyword">my</span><span class="punct">(</span><span class="symbol">$host</span><span class="punct">,</span> <span class="symbol">$ip</span><span class="punct">)</span> <span class="punct">=</span> <span class="punct">(</span><span class="ident">gethostbyaddr</span><span class="punct">(</span><span class="symbol">$caddr</span><span class="punct">),</span> <span class="ident">inet_ntoa</span><span class="punct">(</span><span class="symbol">$caddr</span><span class="punct">));</span>
  <span class="ident">print</span> <span class="punct">&quot;</span><span class="string">connected from $host($ip):$cport<span class="escape">\n</span></span><span class="punct">&quot;;</span>
  <span class="keyword">my</span> <span class="symbol">$n</span> <span class="punct">=</span> <span class="punct">&lt;</span><span class="symbol">$c</span><span class="punct">&gt;;</span>
  <span class="symbol">$n</span> <span class="punct">=~</span> <span class="ident">tr</span><span class="punct">/\</span><span class="ident">r\n</span><span class="punct">//</span><span class="ident">d</span><span class="punct">;</span>
  <span class="ident">print</span> <span class="punct">&quot;</span><span class="string">client says `$n'<span class="escape">\n</span></span><span class="punct">&quot;;</span>
  <span class="ident">print</span> <span class="symbol">$c</span> <span class="punct">&quot;</span><span class="string">hi<span class="escape">\n</span></span><span class="punct">&quot;;</span>
  <span class="ident">close</span><span class="punct">(</span><span class="symbol">$c</span><span class="punct">);</span>
<span class="punct">}</span>
<span class="ident">close</span><span class="punct">(</span><span class="symbol">$s</span><span class="punct">);</span>
</pre></div>
<h2><span id="l3" class="title">UDP</span></h2>
<h3><span id="l4" class="sanchor">クライアント</span></h3>
<div class="syntax syntax_perl"><pre>
<span class="keyword">use</span> <span class="ident">Socket</span><span class="punct">;</span>

<span class="keyword">my</span><span class="punct">(</span><span class="symbol">$host</span><span class="punct">,</span> <span class="symbol">$port</span><span class="punct">)</span> <span class="punct">=</span> <span class="punct">(&quot;</span><span class="string">localhost</span><span class="punct">&quot;,</span> <span class="number">9999</span><span class="punct">);</span>
<span class="keyword">my</span> <span class="symbol">$s</span><span class="punct">;</span>
<span class="ident">socket</span><span class="punct">(</span><span class="symbol">$s</span><span class="punct">,</span> <span class="ident">AF_INET</span><span class="punct">,</span> <span class="ident">SOCK_DGRAM</span><span class="punct">,</span> <span class="ident">getprotobyname</span><span class="punct">(&quot;</span><span class="string">udp</span><span class="punct">&quot;));</span>
<span class="ident">send</span><span class="punct">(</span><span class="symbol">$s</span><span class="punct">,</span> <span class="punct">&quot;</span><span class="string">hello</span><span class="punct">&quot;,</span> <span class="number">0</span><span class="punct">,</span> <span class="ident">pack_sockaddr_in</span><span class="punct">(</span><span class="symbol">$port</span><span class="punct">,</span> <span class="ident">inet_aton</span><span class="punct">(</span><span class="symbol">$host</span><span class="punct">)));</span>
<span class="ident">close</span><span class="punct">(</span><span class="symbol">$s</span><span class="punct">);</span>
</pre></div>
<h4><span id="l5">ブロードキャストする場合</span></h4>
<div class="syntax syntax_perl"><pre>
<span class="keyword">use</span> <span class="ident">Socket</span><span class="punct">;</span>

<span class="keyword">my</span><span class="punct">(</span><span class="symbol">$host</span><span class="punct">,</span> <span class="symbol">$port</span><span class="punct">)</span> <span class="punct">=</span> <span class="punct">(&quot;</span><span class="string">192.168.1.255</span><span class="punct">&quot;,</span> <span class="number">9999</span><span class="punct">);</span>
<span class="keyword">my</span> <span class="symbol">$s</span><span class="punct">;</span>
<span class="ident">socket</span><span class="punct">(</span><span class="symbol">$s</span><span class="punct">,</span> <span class="ident">AF_INET</span><span class="punct">,</span> <span class="ident">SOCK_DGRAM</span><span class="punct">,</span> <span class="ident">getprotobyname</span><span class="punct">(&quot;</span><span class="string">udp</span><span class="punct">&quot;));</span>
<span class="ident">setsockopt</span><span class="punct">(</span><span class="symbol">$c</span><span class="punct">,</span> <span class="ident">SOL_SOCKET</span><span class="punct">,</span> <span class="ident">SO_BROADCAST</span><span class="punct">,</span> <span class="number">1</span><span class="punct">);</span> <span class="comment"># これが必要</span>
<span class="ident">send</span><span class="punct">(</span><span class="symbol">$s</span><span class="punct">,</span> <span class="punct">&quot;</span><span class="string">hello</span><span class="punct">&quot;,</span> <span class="number">0</span><span class="punct">,</span> <span class="ident">pack_sockaddr_in</span><span class="punct">(</span><span class="symbol">$port</span><span class="punct">,</span> <span class="ident">inet_aton</span><span class="punct">(</span><span class="symbol">$host</span><span class="punct">)));</span>
<span class="ident">close</span><span class="punct">(</span><span class="symbol">$s</span><span class="punct">);</span>
</pre></div>
<h3><span id="l6" class="sanchor">サーバ</span></h3>
<div class="syntax syntax_perl"><pre>
<span class="keyword">use</span> <span class="ident">Socket</span><span class="punct">;</span>

<span class="keyword">my</span> <span class="symbol">$port</span> <span class="punct">=</span> <span class="number">9999</span><span class="punct">;</span>
<span class="keyword">my</span> <span class="symbol">$s</span><span class="punct">;</span>
<span class="ident">socket</span><span class="punct">(</span><span class="symbol">$s</span><span class="punct">,</span> <span class="ident">AF_INET</span><span class="punct">,</span> <span class="ident">SOCK_DGRAM</span><span class="punct">,</span> <span class="ident">getprotobyname</span><span class="punct">(&quot;</span><span class="string">tcp</span><span class="punct">&quot;));</span>
<span class="ident">bind</span><span class="punct">(</span><span class="symbol">$s</span><span class="punct">,</span> <span class="ident">pack_sockaddr_in</span><span class="punct">(</span><span class="symbol">$port</span><span class="punct">,</span> <span class="ident">inet_aton</span><span class="punct">(&quot;</span><span class="string">0.0.0.0</span><span class="punct">&quot;)));</span>

<span class="keyword">while</span><span class="punct">(</span><span class="keyword">my</span> <span class="symbol">$addr</span> <span class="punct">=</span> <span class="ident">recv</span><span class="punct">(</span><span class="symbol">$s</span><span class="punct">,</span> <span class="symbol">$_</span><span class="punct">,</span> <span class="number">65535</span><span class="punct">,</span> <span class="number">0</span><span class="punct">)){</span>
  <span class="keyword">my</span><span class="punct">(</span><span class="symbol">$cport</span><span class="punct">,</span> <span class="symbol">$caddr</span><span class="punct">)</span> <span class="punct">=</span> <span class="ident">unpack_sockaddr_in</span><span class="punct">(</span><span class="symbol">$addr</span><span class="punct">);</span>
  <span class="keyword">my</span><span class="punct">(</span><span class="symbol">$host</span><span class="punct">,</span> <span class="symbol">$ip</span><span class="punct">)</span> <span class="punct">=</span> <span class="punct">(</span><span class="ident">gethostbyaddr</span><span class="punct">(</span><span class="symbol">$caddr</span><span class="punct">),</span> <span class="ident">inet_ntoa</span><span class="punct">(</span><span class="symbol">$caddr</span><span class="punct">));</span>
  <span class="ident">print</span> <span class="punct">&quot;</span><span class="string">received `$_'from $host($ip):$cport<span class="escape">\n</span></span><span class="punct">&quot;;</span>
<span class="punct">}</span>
<span class="ident">close</span><span class="punct">(</span><span class="symbol">$s</span><span class="punct">);</span>
</pre></div>
<h2><span id="l7" class="title">UNIX ドメインストリームソケット</span></h2>
<p>基本的には TCP に類似。</p>
<h3><span id="l8" class="sanchor">クライアント</span></h3>
<div class="syntax syntax_perl"><pre>
<span class="keyword">use</span> <span class="ident">Socket</span><span class="punct">;</span>

<span class="keyword">my</span> <span class="symbol">$name</span> <span class="punct">=</span> <span class="punct">&quot;</span><span class="string">mysock</span><span class="punct">&quot;;</span>
<span class="keyword">my</span> <span class="symbol">$s</span><span class="punct">;</span>
<span class="ident">socket</span><span class="punct">(</span><span class="symbol">$s</span><span class="punct">,</span> <span class="ident">AF_UNIX</span><span class="punct">,</span> <span class="ident">SOCK_STREAM</span><span class="punct">,</span> <span class="number">0</span><span class="punct">);</span>
<span class="ident">connect</span><span class="punct">(</span><span class="symbol">$s</span><span class="punct">,</span> <span class="ident">pack_sockaddr_un</span><span class="punct">(</span><span class="symbol">$name</span><span class="punct">));</span>
<span class="ident">print</span> <span class="symbol">$s</span> <span class="punct">&quot;</span><span class="string">Hello<span class="escape">\n</span></span><span class="punct">&quot;;</span>
<span class="ident">print</span> <span class="punct">&lt;</span><span class="symbol">$s</span><span class="punct">&gt;;</span>
<span class="ident">close</span><span class="punct">(</span><span class="symbol">$s</span><span class="punct">);</span>
</pre></div>
<h3><span id="l9" class="sanchor">サーバ</span></h3>
<div class="syntax syntax_perl"><pre>
<span class="keyword">use</span> <span class="ident">Socket</span><span class="punct">;</span>

<span class="keyword">my</span> <span class="symbol">$name</span> <span class="punct">=</span> <span class="punct">&quot;</span><span class="string">mysock</span><span class="punct">&quot;;</span>
<span class="keyword">if</span><span class="punct">(-</span><span class="ident">f</span> <span class="symbol">$name</span><span class="punct">){</span>
  <span class="ident">die</span> <span class="punct">&quot;</span><span class="string">file `$name' is already used</span><span class="punct">&quot;;</span>
<span class="punct">}</span>
<span class="keyword">my</span> <span class="symbol">$s</span><span class="punct">;</span>
<span class="ident">socket</span><span class="punct">(</span><span class="symbol">$s</span><span class="punct">,</span> <span class="ident">AF_UNIX</span><span class="punct">,</span> <span class="ident">SOCK_STREAM</span><span class="punct">,</span> <span class="number">0</span><span class="punct">);</span>
<span class="ident">bind</span><span class="punct">(</span><span class="symbol">$s</span><span class="punct">,</span> <span class="ident">pack_sockaddr_un</span><span class="punct">(&quot;</span><span class="string">mysock</span><span class="punct">&quot;));</span>
<span class="ident">listen</span><span class="punct">(</span><span class="symbol">$s</span><span class="punct">,</span> <span class="ident">SOMAXCONN</span><span class="punct">);</span>

<span class="keyword">while</span><span class="punct">(</span><span class="keyword">my</span> <span class="symbol">$addr</span> <span class="punct">=</span> <span class="ident">accept</span><span class="punct">(</span><span class="keyword">my</span> <span class="symbol">$c</span><span class="punct">,</span> <span class="symbol">$s</span><span class="punct">)){</span>
  <span class="ident">print</span> <span class="punct">&quot;</span><span class="string">connected<span class="escape">\n</span></span><span class="punct">&quot;;</span>
  <span class="keyword">my</span> <span class="symbol">$n</span> <span class="punct">=</span> <span class="punct">&lt;</span><span class="symbol">$c</span><span class="punct">&gt;;</span>
  <span class="symbol">$n</span> <span class="punct">=~</span> <span class="ident">tr</span><span class="punct">/\</span><span class="ident">r\n</span><span class="punct">//</span><span class="ident">d</span><span class="punct">;</span>
  <span class="ident">print</span> <span class="punct">&quot;</span><span class="string">client says `$n'<span class="escape">\n</span></span><span class="punct">&quot;;</span>
  <span class="ident">print</span> <span class="symbol">$c</span> <span class="punct">&quot;</span><span class="string">hi<span class="escape">\n</span></span><span class="punct">&quot;;</span>
  <span class="ident">close</span><span class="punct">(</span><span class="symbol">$c</span><span class="punct">);</span>
<span class="punct">}</span>
<span class="ident">close</span><span class="punct">(</span><span class="symbol">$s</span><span class="punct">);</span>
<span class="ident">unlink</span><span class="punct">(</span><span class="symbol">$name</span><span class="punct">);</span>
</pre></div>
</div>]]></content:encoded>
</item>
</rdf:RDF>

