<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/masahase/">
    <title>masahase&#039;s memo @ ウィキ</title>
    <link>http://w.atwiki.jp/masahase/</link>
    <atom:link href="https://w.atwiki.jp/masahase/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>masahase&#039;s memo @ ウィキ</description>

    <dc:language>ja</dc:language>
    <dc:date>2011-08-16T18:34:39+09:00</dc:date>
    <utime>1313487279</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/masahase/pages/21.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/masahase/pages/22.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/masahase/pages/18.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/masahase/pages/20.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/masahase/pages/2.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/masahase/pages/21.html">
    <title>ソフト開発/SSMirror</title>
    <link>https://w.atwiki.jp/masahase/pages/21.html</link>
    <description>
      <![CDATA[<!--@@@@@-->
<div class="plugin_contents"><!--@@@@@--><ul><li><a href="#id_956da2f4">目的</a></li>
<li><a href="#id_057126df">概要</a></li>
<li><a href="#id_fe10acda">データ構成</a><ul><li><a href="#id_ea32a75c">SS管理用</a><ul><li><a href="#id_7678737e">SS本体</a></li>
<li><a href="#id_55d0dfd7">シリーズ</a></li></ul></li>
<li><a href="#id_22437ced">既読管理用</a></li>
<li><a href="#id_7ecbd123">タグ管理用</a></li></ul></li></ul></div>

<h2 id="id_956da2f4">目的</h2>
<ul><li> 既読管理</li>
<li> サイト消滅による作品消滅の防止</li>
<li> 負荷分散</li>
<li> GAEのテスト</li></ul>
<h2 id="id_057126df">概要</h2>
<div>
ネットに公開されているSSの既読管理を行う。ついでにミラーリングを行う。

</div>
<br />
<h2 id="id_fe10acda">データ構成</h2>
<h3 id="id_ea32a75c">SS管理用</h3>
<h4 id="id_7678737e">SS本体</h4>
<ul><li> 題名</li>
<li> 作者</li>
<li> 元URL</li>
<li> 本文</li>
<li> シリーズ</li></ul>
<br />
<h4 id="id_55d0dfd7">シリーズ</h4>
<ul><li> 題名</li>
<li> 元URL</li>
<li> タグリスト</li></ul>
<br />
<h3 id="id_22437ced">既読管理用</h3>
<ul><li> ユーザーID</li>
<li> SS本体への参照</li>
<li> 既読フラグ</li></ul>
<br />
<h3 id="id_7ecbd123">タグ管理用</h3>
<ul><li> タグ名</li>
<li> 親タグへの参照</li></ul>]]>    </description>
    <dc:date>2011-08-16T18:34:39+09:00</dc:date>
    <utime>1313487279</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/masahase/pages/22.html">
    <title>ソフト開発/SSBrowser</title>
    <link>https://w.atwiki.jp/masahase/pages/22.html</link>
    <description>
      <![CDATA[<!--@@@@@-->
<div class="plugin_contents"><!--@@@@@--><ul><li><a href="#id_956da2f4">目的</a></li>
<li><a href="#id_057126df">概要</a></li></ul></div>

<h2 id="id_956da2f4">目的</h2>
<ul><li> 既読管理</li>
<li> 通信料削減</li>
<li> オフラインでの閲覧</li></ul>
<h2 id="id_057126df">概要</h2>
<div>
SSMirrorの一部をオフラインで稼動させる。既読管理等はSSMirror側にも反映させる。
<br />
とりあえず、手持ちのXperia Acroで動作すること優先。
</div>]]>    </description>
    <dc:date>2011-08-16T02:31:33+09:00</dc:date>
    <utime>1313429493</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/masahase/pages/18.html">
    <title>ソフト開発</title>
    <link>https://w.atwiki.jp/masahase/pages/18.html</link>
    <description>
      <![CDATA[<!--@@@@@--><h2 id="id_6fe201a6">ソフト開発</h2>
<h3 id="id_5af1a816">数値解析ソフト</h3>
<div>
Abaqus Student Editionが残念な感じだったので、それに代わる遊び道具を作る。
<br />
<a href="http://w.atwiki.jp/masahase/pages/19.html"  title="ソフト開発/MNAS (6195d)">./MNAS</a>

</div>
<h3 id="id_3d1583b8">ファイルシステム</h3>
<div>
アーカイブ用のファイルシステムをFUSEを用いて作る。
<br />
<a href="http://w.atwiki.jp/masahase/pages/20.html"  title="ソフト開発/DBDumpFS (6169d)">./DBDumpFS</a>

</div>
<h3 id="id_5b30b8e1">ネット小説汎用ミラー(on GAE)</h3>
<div>
<a href="http://w.atwiki.jp/masahase/pages/21.html"  title="ソフト開発/SSMirror (5429d)">./SSMirror</a>

</div>
<h3 id="id_246332fe">ネット小説リーダー(on Android)</h3>
<div>
<a href="http://w.atwiki.jp/masahase/pages/22.html"  title="ソフト開発/SSBrowser (5429d)">./SSBrowser</a>

</div>
<br />
<br />
<br />
<div>
<a href="http://w.atwiki.jp/masahase/pages/14.html"  title="ソフト開発/小説投稿サイト用アプリ開発 (6174d)">./小説投稿サイト用アプリ開発</a>
</div>]]>    </description>
    <dc:date>2011-08-15T23:18:12+09:00</dc:date>
    <utime>1313417892</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/masahase/pages/20.html">
    <title>ソフト開発/DBDumpFS</title>
    <link>https://w.atwiki.jp/masahase/pages/20.html</link>
    <description>
      <![CDATA[<!--@@@@@-->
<div class="plugin_contents"><!--@@@@@--><ul><li><a href="#id_956da2f4">目的</a></li>
<li><a href="#id_057126df">概要</a></li>
<li><a href="#id_ed543d28">テーブル構成</a></li>
<li><a href="#id_1acc242e">各システムコールでの動作</a><ul><li><a href="#id_97a1ed07">getattr(path)</a></li>
<li><a href="#id_eaf7c289">readlink(path)</a></li>
<li><a href="#id_c18f85de">readdir(path,count)</a></li>
<li><a href="#id_73ed0dfe">mknod(path,mode,dev)</a></li>
<li><a href="#id_7f54cc70">mkdir</a></li>
<li><a href="#id_783af2c8">unlink(path)</a></li>
<li><a href="#id_ff1cc245">rmdir(path)</a></li>
<li><a href="#id_efde22d6">symlink(targetPath,linkPath)</a></li>
<li><a href="#id_b2c069f7">rename(oldPath,newPath)</a></li>
<li><a href="#id_58a23073">link</a></li>
<li><a href="#id_cf1a4e5c">chmod(path,mode)</a></li>
<li><a href="#id_368c964f">chown</a></li>
<li><a href="#id_9d594295">truncate(path,length)</a></li>
<li><a href="#id_5a2a4745">utime(path,times)</a></li>
<li><a href="#id_c5c57e25">open(path,flags)</a></li>
<li><a href="#id_ce14f3d6">read(path,length,offset)</a></li>
<li><a href="#id_e28fd11d">write(path,buf,offset)</a></li>
<li><a href="#id_f092ad9d">release(path,flags)</a></li>
<li><a href="#id_ca59b7f9">statfs()</a></li>
<li><a href="#id_aa09119e">fsync()</a></li>
<li><a href="#id_76b79629">create</a></li>
<li><a href="#id_99202879">opendir</a></li>
<li><a href="#id_22e054a2">releasedir</a></li>
<li><a href="#id_77c374e8">fsyncdir</a></li>
<li><a href="#id_46e6bd53">flush(path)</a></li>
<li><a href="#id_f7a0819e">fgetattr</a></li>
<li><a href="#id_02f26786">ftruncate</a></li>
<li><a href="#id_9e79f309">getxattr</a></li>
<li><a href="#id_79254ba0">listxattr</a></li>
<li><a href="#id_22c37c65">setxattr</a></li>
<li><a href="#id_5802365f">removexattr</a></li>
<li><a href="#id_35b8577e">access</a></li>
<li><a href="#id_9597478d">lock</a></li>
<li><a href="#id_4760b409">utimens</a></li>
<li><a href="#id_39d634d7">bmap</a></li>
<li><a href="#id_e75fa1cd">fsinit</a></li>
<li><a href="#id_0feda038">fsdestroy</a></li></ul></li></ul></div>

<h2 id="id_956da2f4">目的</h2>
<ul><li> 各種データのアーカイブ(保管)</li>
<li> 大量のデータを少ない容量で保管</li></ul>
<br />
<h2 id="id_057126df">概要</h2>
<ul><li> 実データの変更履歴を全て保存</li>
<li> ブロック単位でデータ圧縮(圧縮法にbz2を使用)</li>
<li> i-nodeにリビジョン番号を持たせることで同じi-nodeのファイルの履歴を保持</li>
<li> データ構造は自作せずSQLiteを用いることで代替</li>
<li> FUSEを使用してFileSystemを実装</li></ul>
<br />
<h2 id="id_ed543d28">テーブル構成</h2>
<ul><li> Inode</li></ul>
<div>
他のファイルシステムにおいてi-nodeとなる構造体

</div>
<table>
<tr class="atwiki_tr_odd atwiki_tr_1" >		<!--0-0--><td style="">inode_num</td>
		<!--0-1--><td style="">i-node番号</td></tr>
<tr class="atwiki_tr_even atwiki_tr_2" >		<!--1-0--><td style="">rev_id</td>
		<!--1-1--><td style="">リビジョン番号</td></tr>
<tr class="atwiki_tr_odd atwiki_tr_3" >		<!--2-0--><td style="">uid</td>
		<!--2-1--><td style="">オーナーのUID</td></tr>
<tr class="atwiki_tr_even atwiki_tr_4" >		<!--3-0--><td style="">gid</td>
		<!--3-1--><td style="">オーナーのGID</td></tr>
<tr class="atwiki_tr_odd atwiki_tr_5" >		<!--4-0--><td style="">atime</td>
		<!--4-1--><td style="">最終アクセス時間</td></tr>
<tr class="atwiki_tr_even atwiki_tr_6" >		<!--5-0--><td style="">mtime</td>
		<!--5-1--><td style="">最終更新時間</td></tr>
<tr class="atwiki_tr_odd atwiki_tr_7" >		<!--6-0--><td style="">ctime</td>
		<!--6-1--><td style="">メタデータの最終更新時間</td></tr>
<tr class="atwiki_tr_even atwiki_tr_8" >		<!--7-0--><td style="">size</td>
		<!--7-1--><td style="">ファイルサイズ</td></tr>
<tr class="atwiki_tr_odd atwiki_tr_9" >		<!--8-0--><td style="">mode</td>
		<!--8-1--><td style="">保護モード</td></tr>
<tr class="atwiki_tr_even atwiki_tr_10" >		<!--9-0--><td style="">dev</td>
		<!--9-1--><td style="">デバイス番号(特殊ファイルのときのみ、通常のファイルのときは0)</td></tr>
</table>
<br />
<ul><li> Dentry</li></ul>
<div>
ディレクトリ内のファイルの名前とi-node番号の組

</div>
<table>
<tr class="atwiki_tr_odd atwiki_tr_1" >		<!--0-0--><td style="">parent</td>
		<!--0-1--><td style="">ディレクトリのInodeエントリ番号</td></tr>
<tr class="atwiki_tr_even atwiki_tr_2" >		<!--1-0--><td style="">filename</td>
		<!--1-1--><td style="">ファイル名</td></tr>
<tr class="atwiki_tr_odd atwiki_tr_3" >		<!--2-0--><td style="">inode_num</td>
		<!--2-1--><td style="">i-node番号</td></tr>
</table>
<br />
<ul><li> RawData</li></ul>
<div>
実データを保存するブロックを表す

</div>
<table>
<tr class="atwiki_tr_odd atwiki_tr_1" >		<!--0-0--><td style="">hash_sha256</td>
		<!--0-1--><td style="">このブロックのデータのsha256</td></tr>
<tr class="atwiki_tr_even atwiki_tr_2" >		<!--1-0--><td style="">data</td>
		<!--1-1--><td style="">このブロックのデータをbz2で圧縮した後base64エンコードしたもの</td></tr>
</table>
<br />
<ul><li> DataList</li></ul>
<div>
ファイルを構成するブロックのリスト

</div>
<table>
<tr class="atwiki_tr_odd atwiki_tr_1" >		<!--0-0--><td style="">parent</td>
		<!--0-1--><td style="">ファイルのInodeエントリ番号</td></tr>
<tr class="atwiki_tr_even atwiki_tr_2" >		<!--1-0--><td style="">series</td>
		<!--1-1--><td style="">ファイル内での番号(0スタート)</td></tr>
<tr class="atwiki_tr_odd atwiki_tr_3" >		<!--2-0--><td style="">data</td>
		<!--2-1--><td style="">RawDataエントリ番号</td></tr>
</table>
<br />
<h2 id="id_1acc242e">各システムコールでの動作</h2>
<h3 id="id_97a1ed07">getattr(path)</h3>
<div>
stat(2)と同じ。
<br />
stat構造体を返す。

</div>
<br />
<h3 id="id_eaf7c289">readlink(path)</h3>
<div>
シンボリックリンクのリンク先のパスを返す。

</div>
<br />
<h3 id="id_c18f85de">readdir(path,count)</h3>
<div>
このcountは大抵の場合無意味。
<br />
このディレクトリに含まれるファイル名とi-node番号の組を返す。

</div>
<br />
<h3 id="id_73ed0dfe">mknod(path,mode,dev)</h3>
<div>
pathで指定されたパスを持つファイルを生成する。modeがS_IFCHRとS_IFBLK以外ならdevは無視する。S_IFCHRとS_IFBLKならdevは作成するデバイスファイルのメジャー番号とマイナー番号。

</div>
<br />
<h3 id="id_7f54cc70">mkdir</h3>
<h3 id="id_783af2c8">unlink(path)</h3>
<div>
ファイルの削除。親ディレクトリのディレクトリエントリの修正。

</div>
<br />
<h3 id="id_ff1cc245">rmdir(path)</h3>
<div>
ディレクトリの削除。親ディレクトリのディレクトリエントリを修正。

</div>
<br />
<h3 id="id_efde22d6">symlink(targetPath,linkPath)</h3>
<div>
modeにstat.S_IFLNKフラグを立てたファイルを作成

</div>
<br />
<h3 id="id_b2c069f7">rename(oldPath,newPath)</h3>
<div>
ファイル名の変更。親ディレクトリのディレクトリエントリを修正。

</div>
<br />
<h3 id="id_58a23073">link</h3>
<h3 id="id_cf1a4e5c">chmod(path,mode)</h3>
<div>
対象ファイルの保護モードを変更。

</div>
<br />
<h3 id="id_368c964f">chown</h3>
<h3 id="id_9d594295">truncate(path,length)</h3>
<div>
指定した長さにファイルを切り詰める

</div>
<br />
<h3 id="id_5a2a4745">utime(path,times)</h3>
<div>
utimeを更新

</div>
<br />
<h3 id="id_c5c57e25">open(path,flags)</h3>
<div>
辞書openfilesにエントリがなければ追加しエントリがあれば参照カウンタを増やす

</div>
<br />
<h3 id="id_ce14f3d6">read(path,length,offset)</h3>
<div>
ファイルのoffsetの位置からlengthだけ読んで返す。

</div>
<br />
<h3 id="id_e28fd11d">write(path,buf,offset)</h3>
<div>
ファイルに書き込む

</div>
<br />
<h3 id="id_f092ad9d">release(path,flags)</h3>
<div>
辞書openfilesの該当エントリの参照カウンタを減らす

</div>
<br />
<h3 id="id_ca59b7f9">statfs()</h3>
<div>
ファイルシステム自体のstat。
<br />
以下の6つの要素を持ったタプルを返す;

</div>
<ul><li> ブロックサイズ　バイト単位のブロックサイズ</li>
<li> 全ブロック数　確保しているブロック数</li>
<li> 空きブロック数　使われていないブロック数</li>
<li> 全ファイル数　確保しているi-node数</li>
<li> 空きファイル数　使用していないi-node数</li>
<li> ファイル名の長さ　ファイル名に使える最大長さ</li></ul>
<div>
未定義ならその要素を0にして返す

</div>
<br />
<h3 id="id_aa09119e">fsync()</h3>
<div>
現在のトランザクションをコミットし、新しいトランザクションを始める。

</div>
<br />
<h3 id="id_76b79629">create</h3>
<br />
<h3 id="id_99202879">opendir</h3>
<h3 id="id_22e054a2">releasedir</h3>
<h3 id="id_77c374e8">fsyncdir</h3>
<h3 id="id_46e6bd53">flush(path)</h3>
<div>
何もしない

</div>
<h3 id="id_f7a0819e">fgetattr</h3>
<h3 id="id_02f26786">ftruncate</h3>
<h3 id="id_9e79f309">getxattr</h3>
<h3 id="id_79254ba0">listxattr</h3>
<h3 id="id_22c37c65">setxattr</h3>
<h3 id="id_5802365f">removexattr</h3>
<h3 id="id_35b8577e">access</h3>
<h3 id="id_9597478d">lock</h3>
<h3 id="id_4760b409">utimens</h3>
<h3 id="id_39d634d7">bmap</h3>
<h3 id="id_e75fa1cd">fsinit</h3>
<h3 id="id_0feda038">fsdestroy</h3>]]>    </description>
    <dc:date>2009-08-05T23:09:35+09:00</dc:date>
    <utime>1249481375</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/masahase/pages/2.html">
    <title>メニュー</title>
    <link>https://w.atwiki.jp/masahase/pages/2.html</link>
    <description>
      <![CDATA[<!--@@@@@--><h3 id="id_b7a6c500">メニュー</h3>
<ul><li><a href="http://w.atwiki.jp/masahase/pages/1.html"  title="トップページ (6570d)">トップページ</a></li>
<li><a href="http://w.atwiki.jp/masahase/pages/11.html"  title="Maxima (6563d)">Maxima</a></li>
<li><a href="http://w.atwiki.jp/masahase/pages/15.html"  title="AbaqusMemo (6418d)">AbaqusMemo</a></li>
<li><a href="http://w.atwiki.jp/masahase/pages/17.html"  title="所有している革靴 (6243d)">所有している革靴</a></li>
<li><a href="http://w.atwiki.jp/masahase/pages/18.html"  title="ソフト開発 (5429d)">ソフト開発</a></li></ul>
<br />
<hr />
<ul><li><a href="http://w.atwiki.jp/masahase/pages/8.html"  title="プラグイン (6570d)">プラグイン紹介</a></li>
<li><a href="http://w.atwiki.jp/masahase/pages/2.html"  title="メニュー (6174d)">メニュー</a></li></ul>
<br />
<hr />
<h3 id="id_453df200">リンク</h3>
<ul><li><a href="http://atwiki.jp"  target="_blank"  rel="nofollow">@wiki</a></li>
<li><a href="http://atwiki.jp/guide/"  target="_blank"  >@wikiご利用ガイド</a></li></ul>
<br />


<br />
<br />


<br />
<div>
<a rel="nofollow" href="http://w.atwiki.jp/masahase/pedit/2.html">ここを編集</a>
</div>]]>    </description>
    <dc:date>2009-08-01T19:23:07+09:00</dc:date>
    <utime>1249122187</utime>
  </item>
  </rdf:RDF>
