« Home | バックアップの歌 » | UPSのひどい搬送 » | ちょっと息抜きしたい時に » | can i depend on the (testking) to pass (OCA 10g) e... » | How to get business days between two dates? » | Need to convert... » | Oracle helpful url list » | Oracle B-Tree Index Internals:Rebuilding The Truth(1) » | ORADEBUG - UNDOCUMENTED ORACLE UTILITY » | Of Course it would be fun »

Oracle B-Tree Index Internals:Rebuilding The Truth(2)

1万2千部を超える人気メルマガ「1分で治る!あなたの通じない英語」の
発行者であるTOMOさんが、同メルマガの有料版(2,500円)
【1分で治る!あなたの通じない英語-Revo-】
を無料開放しました。

驚くべき特典として、キャンペーン期間中にメルマガ登録すれば、
有料版のはずのメルマガを永遠に無料購読できます(爆)
カラーでとても見やすいです。

さらに追加プレゼントとして、定価15,000円の教材
【恐怖の誤英語克服マニュアル】を無料でプレゼントしてくれるそうです。

お申込みはこちらからどうぞ。
http://www.ne.jp/asahi/forward/school/000.html

___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
英語で Oracle! #035 2007/01/23
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
今までの目次です。
http://imoment.blogspot.com/2006/11/toctable-of-contents.html

おはようございます。今更ながらyoutubeってすごいです。
無名の女性シンガーMiaaRoseさんのページが、30万ヒットしてる。。。
コメントやVideo Responseも後を絶ちません。(スカウトに近いコメントも)

http://www.youtube.com/watch?v=oRXuNIsA74w

イギリス人ながら、アメリカ的な発音を持つ彼女は発音の勉強の参考になります。

youtubeの彼女のprofileページは170万アクセス。subscriberは2万5千人。
http://www.youtube.com/profile?user=miaarose

それに比べて実際のホームページは3万アクセスとさみしいです。
http://www.miaarose.net/

すみません大分話がそれてしまいました。

引き続きRichard FooteさんのIndex Rebuildに関するプレゼン資料を
ご紹介します。

※今回も引用しきれていないので、あと数回に分けて
お送りしたいと思います。

※index用語に慣れていない方は、先にoracle解説のコーナーで
知らない用語について確認されるといいかもしれません。


■ askTomでのindex rebuildに関するdiscussion
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:2913600659112

※今回は引用PDFを紹介している適切なサイトが無いので、
その資料について触れているaskTomのdiscussionをリンクとして
ご紹介します。

■ 引用PDFファイル
http://www.actoug.org.au/Downloads/oracle_index_internals.pdf

___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
記事本文
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◆ Index Creation and PCTFREE

- When an index is created, Oracle reserves the pctfree value as free space
- pctfree has a default of 10% resulting in 10% of an index remaining free
after creation
- Why ?
- To reduce and delay the occurrence of index block splits
- If there isn’t sufficient space in an index block for the new entry,
a block split is performed

◆ 50-50 Leaf Block Steps

An index block split is a relatively expensive operation:

1. Allocate new index block from index freelist
2. Redistribute block so the lower half (by volume) of index entries
remain in current block and move the other half into the new block
3. Insert the new index entry into appropriate leaf block
4. Update the previously full block such that its “next leaf block
pointer” (kdxlenxt) references the new block
5. Update the leaf block that was the right of the previously full block
such that its “previous leaf block pointer”(kdxleprv) also points to
the new block
6. Update the branch block that references the full block and add a
new entry to point to the new leaf block (effectively the lowest
value in the new leaf block)

◆ 50-50 Branch Block Splits

Insert operation is even more expensive if the corresponding branch block
is also full:

1. Allocate a new index block from the freelist
2. Redistribute the index entries in the branch block that is currently
full such that half of the branch entries (the greater values) are
placed in the new block
3. Insert the new branch entry into the appropriate branch block
4. Update the branch block in the level above and add a new entry
to point to the new branch block

◆ 50-50 Root Block Split

Root block is just a special case of a branch block:

1. Allocate two new blocks from the freelist
2. Redistributed the entries in the root block such that half the entries are
placed in one new block, the other half in the other block
3. Update the root block such that it now references the two new blocks
The root block is always physically the same block.
The root block split is the only time when the height of index increases
Therefore an index must always be balanced. Always !!
Suggestions that Oracle indexes become unbalanced are another silly
myth, made by those that don’t understand index block splits.

◆ 90-10 Block Splits

- If the new insert index entry is the maximum value, a 90-10 block split
is performed
- Reduces wastage of space for index with monotonically increasing values
- Rather than leaving behind . empty blocks, full index blocks are generated
- I prefer to call them 99-1 block splits as 90-10 is misleading

◆ Deleted Index Space

- When a delete (or update) is performed, Oracle marks the entry as deleted.

___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
英語の解釈
※自然な語順で解釈する癖をつけるために敢えて不自然な日本語に
なっているところがあります。 ()書きは後続修飾節の修飾対象です。
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◆ Index Creation and PCTFREE
indexの作成とpctfree

- When an index is created, Oracle reserves the pctfree value as free space
indexが作成されるとき、oracleはPCTFREE値を空き領域として予約します。

- pctfree has a default of 10% resulting in 10% of an index remaining free
after creation
pctfreeのデフォルトは10%なので、10%の空き領域がindex作成直後に
残っていることになります。

- Why ?
なぜ?

- To reduce and delay the occurrence of index block splits
indexブロック分割による遅延を減らすためです。

- If there isn’t sufficient space in an index block for the new entry,
a block split is performed
新しいエントリのための充分な空き領域がindexブロック内に存在しない場合、
ブロック分割が行われます。

◆ 50-50 Leaf Block Steps
50-50リーフブロックのステップ

An index block split is a relatively expensive operation:
indexのブロック分割は比較的時間を要する作業です。

1. Allocate new index block from index freelist
index freelistから新しいindex blockを割り当てます。

2. Redistribute block so the lower half (by volume) of index entries
remain in current block and move the other half into the new block
現在のブロック内のindexエントリの(容量の)半分未満のindex
エントリが現在のブロックに残り、もう一方の半分が新しいブロックに
割り当てられるよう、ブロックを再配置します。

3. Insert the new index entry into appropriate leaf block
新しいindex entryを適切なリーフブロックに挿入します。

4. Update the previously full block such that its “next leaf block
pointer” (kdxlenxt) references the new block
満杯だったブロックの「次のリーフブロックのポインタ」が
新しいリーフブロックを参照するように更新します。

5. Update the leaf block that was the right of the previously full block
such that its “previous leaf block pointer”(kdxleprv) also points to
the new block
満杯だったブロックの右側にあったリーフブロックの
「直前のリーフブロックポインタ」が新しいリーフブロックを参照するように更新します。

6. Update the branch block that references the full block and add a
new entry to point to the new leaf block (effectively the lowest
value in the new leaf block)
満杯だったブロックを参照するブランチブロックを更新し、
新しいブロックへ向けた新しいエントリポイントを追加します。
(事実上、新しいブロックの最も低い値)


◆ 50-50 Branch Block Splits
50-50ブランチブロックの分割

Insert operation is even more expensive if the corresponding branch block
is also full:
対応するブランチブロックが一杯になってしまった場合、
insertはさらに処理時間を要します。

1. Allocate a new index block from the freelist
index freelistから新しいindex blockを割り当てます。

2. Redistribute the index entries in the branch block that is currently
full such that half of the branch entries (the greater values) are
placed in the new block
約半分のブランチエントリ(大きい値のほう)が新しいブロックに
移動するように現在いっぱいになっているブランチブロックに
indexエントリを再配置します。

3. Insert the new branch entry into the appropriate branch block
新しいブランチエントリを適切なブランチブロックに挿入します。

4. Update the branch block in the level above and add a new entry
to point to the new branch block
ひとつ上のレベルのブランチブロックを更新し、
新しいブランチブロックのエントリポイントを追加します。


◆ 50-50 Root Block Split

Root block is just a special case of a branch block:
rootブロックは単にブランチブロックの特殊ケースです。

1. Allocate two new blocks from the freelist
index freelistから新しいindex blockを2つ割り当てます。

2. Redistributed the entries in the root block such that half the entries are
placed in one new block, the other half in the other block
再配置されたrootブロックに存在していたエントリの半分が
新しいブロックの1つに配置されます。
残りの半分をもうひとつの新しいブロックに移動します。

3. Update the root block such that it now references the two new blocks
rootブロックから新しい2つのブロックを参照するよう更新します。

The root block is always physically the same block.
rootブロックは常に同じ物理的にブロックです。

The root block split is the only time when the height of index increases
rootブロックの分割はindexのレベルを上げるただひとつのケースです。

Therefore an index must always be balanced. Always !!
ですから常にインデックスのバランスは保たれているのです。常に!!

Suggestions that Oracle indexes become unbalanced are another silly
myth, made by those that don't understand index block splits.
Oracleのindexがアンバランスになるという提案はindexの分割を
理解していないために思いついてしまうもうひとつのバカげた提案なのです。


◆ 90-10 Block Splits
90-10 ブロック分割

- If the new insert index entry is the maximum value, a 90-10 block split
is performed
もし、新しいinsertのindexエントリが最大の値だった場合、
90-10ブロック分割が発生します。

- Reduces wastage of space for index with monotonically increasing values
単調に値が増加していくケースによるindex領域の消耗を低減します。

- Rather than leaving behind. empty blocks, full index blocks are generated
空き領域を持つブロックを後ろに残すのではなく、満杯のブロックを生成します。

- I prefer to call them 99-1 block splits as 90-10 is misleading
90-10だと誤解を招くので、私はこれを99-1分割と呼ぶことを好んでいます。


◆ Deleted Index Space
index spaceの削除

- When a delete (or update) is performed, Oracle marks the entry as deleted.
delete(またはupdate)が発生すると、oracleはその領域に削除の印をつけます。


___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
英語解説
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◆ Index Creation and PCTFREE

PCTFREE:percent of free spaceを意味するOracleのtableやindexに指定する
物理属性。(oracle解説参照)


An index block split is a relatively expensive operation:

relatively:比較的


1. Allocate new index block from index freelist

allocate:割り当てる、全体から1部分を分け与える
freelist:空きブロックの一覧を保持するリスト (詳細はOracle解説参照)


2. Redistribute block so the lower half (by volume) of index entries
remain in current block and move the other half into the new block

redistribute:再分配する
by volume:容量の


3. Insert the new index entry into appropriate leaf block

appropriate:適切な


4. Update the previously full block such that its “next leaf block
pointer” (kdxlenxt) references the new block

previously:以前の


6. Update the branch block that references the full block and add a
new entry to point to the new leaf block (effectively the lowest
value in the new leaf block)

effectively:実質的には、効果的に(今回は実質の意味で使用)


Insert operation is even more expensive if the corresponding branch block
is also full:

even more:さらに、いっそう
correspoinding:対応した、呼応した


The root block is always physically the same block.

physically:肉体的に、物理的に、自然の法則に関連した


Therefore an index must always be balanced. Always !!

therefore:従って


Suggestions that Oracle indexes become unbalanced are another silly
myth, made by those that don't understand index block splits.

suggestion:提案、忠告、暗示、示唆
人ではなく状況が主語になる場合、暗示や示唆になる
ここではDBA Expertが暗黙の主語なっているので提案の意味
made by those that ~:that以下によって作られた(mythの修飾節)


- Reduces wastage of space for index with monotonically increasing values

wastage:お金、時間、物質、エネルギーなどの不必要な使い込み(消耗、浪費)
monotonically:単調に(mono=単一 + tone=調子、音)
(toがアクセントです。monotoneはmoがアクセントです)
ちなみに日本語では白黒などで構成された色彩を
モノトーンと呼びますが、英語ではこのニュアンスはありません。
ただの単一色を意味するので、鮮やかな単一色もmonotoneになりえます。
(一般的には地味な色合いの単一色を指します)


- I prefer to call them 99-1 block splits as 90-10 is misleading

prefer:(他よりも)好む
prefer A to BならBよりAを好む
misleading:誤解を招く、正しくないことを信じさせる


___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
★ 英語ぷちクイズ ★

※答えと思うリンクをぷちっとクリックしてください。
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

☆現在完了形は英語でどう言いますか

◆present perfect
http://clickenquete.com/a/a.php?M0002066Q0019172A17e3c
◆current complete
http://clickenquete.com/a/a.php?M0002066Q0019172A25506
◆present finish
http://clickenquete.com/a/a.php?M0002066Q0019172A31515
◆current perfect
http://clickenquete.com/a/a.php?M0002066Q0019172A446cd
○結果を見る
http://clickenquete.com/a/r.php?Q0019172Ccd12

締切:2007年01月30日23時00分
協力:クリックアンケート http://clickenquete.com/

こたえは次回に発表します。


■ 前回のこたえ

1)There's a coffee shop ( at ) the end of the block.

○結果を見る
http://clickenquete.com/a/r.php?Q0019067Cf7b2

2)Where are you? ( In ) a taxi.

○結果を見る
http://clickenquete.com/a/r.php?Q0019068Cc7c5

3)There was a big chair ( in ) the middle of the room.

○結果を見る
http://clickenquete.com/a/r.php?Q0019069Ce5fb

4)Who is she ( in ) this photograph?

○結果を見る
http://clickenquete.com/a/r.php?Q0019070C5f93

5)Ross is ( in ) the hostpital.

○結果を見る
http://clickenquete.com/a/r.php?Q0019071C130d

6)I came school ( on ) the bus.

○結果を見る
http://clickenquete.com/a/r.php?Q0019072Ca29c

====================
★ 場所を指す場合 ★
====================

◆ in:
その中や空間にいる状態を表したい場合や建物そのもを指すに使用する
例(国、街、公園、ベッド、病院、空、世界)

◆ at:
漠然とした場所でなく、位置をさらに特定したい場合、
目的や目印として指す場合、
もしくは交通機関の場所を表したい場合に使用する
例(空港、バス停、駅、デスク、ドア、交差点)

◆ on:
その場所の表面にくっついていることをイメージする場合、
例(階、道、天井、壁、テーブル)


======================================
★ 乗り物に乗っている状態を表す場合 ★
======================================

◆ on:
電車、バス、飛行機、ボート、船、馬、自転車

◆ in:
車、タクシー

※移動手段として話している場合はbyを使用


====================
★ 時間を表す場合 ★
====================

◆ at:
時刻、時間、夜(nihgt)、行事(christmas,thanks giving)

◆ on:
曜日、日、週末、行事の日(christmas day,birthday)

◆ in:
月、年、世紀、以内(in five minutes=5分以内)

※nextやlastなどを修飾する場合、前置詞は省略します。


============
★ その他 ★
============

仕事場:at work
イベント会場:at party,at wedding party,at a concert,at a baseball game
家:(at) home (atは省略可)
学校:学校に現在いる場合はat、学校に所属していることを指す場合はin


___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
Oracle解説
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
用語を順々に説明いたしますので分かっている用語については
どんどん飛ばしてください

-・ PCTFREE,PCTUSED ・-・-・-・-・-・-・-・-・-・-・-・-・-・

<PCTFREE>
tableやindex内のブロックで、insert時点ではブロックの容量全てを使い切らずに、
将来の更新の為にPCTFREEで指定したパーセント分空き領域を確保します。
デフォルトは10です。
indexにおけるPCTFREEの変更はrebuild時や、split partition時、
modify default attributes時のみ可能です。

<PCTUSED>
一度PCTFREEに達したブロックが行削除などにより、PCTUSEDで指定した
パーセントまで下がった場合、再びそのブロックがFREELISTへ登録され、
行挿入が可能になります。 (デフォルトは40)
indexではPCTUSEDを指定することはできません。


ブロックに格納されるデータ量の制御の流れを以下に示します。

<tableの場合>
1)FREELIST(後述)から空いているブロックを判断し、行挿入用に割り当てる。
2)1)で割り当てたブロックの使用量がPCTFREEの閾値に達するまで
後続のデータ挿入処理が続く。
3)PCTFREEに達したブロックは使用済みブロックとしてFREELISTから
登録が外される。
4)PCTFREEによって確保された空き領域は既にそのブロックに格納された
行の更新用に使用される。
5)一度PCTFREEに達したブロックが行削除などにより、PCTUSEDで指定した
パーセントまで下がった場合、再びそのブロックがFREELISTへ登録され、
行挿入が可能になります。

<indexの場合>
1)Create Indexの時点で、PCTFREE分だけ空き領域を残して、
indexの種別に従って適切な順序で全てのデータを格納します。
2)PCTFREEによって確保された空き領域は既にそのブロックに格納された
列の更新やtableに挿入された行に対応したentryをindex側にも
追加するために使用される。
3)indexにはPCTUSEDを指定できないので一度割りあてられたブロック内の
index entryのデータがいくら削除されようとそのブロックが再び
FREELISTに戻ることは無い。これはindexのブロック分割を極力減らす
ことを目的とした考慮です。従って必要以上の空きスペースが増えた場合に
DBAによるREBUILDまたはCOALESCEの検討が必要になる訳です。

-・ PCTFREE,PCTUSED ここまで -・-・-・-・-・-・-・-・-・-・-・


-・ FREELIST -・-・-・-・-・-・-・-・-・-・-・-・-・-・-・

tableやindex内で、使用可能なブロックの一覧を保持しているリストです。
8iまではFREELISTSパラメタによってその数を手動で管理する必要がありましたが、
9iからは表領域作成時にSEGMENT SPACE MANAGEMENT AUTOを指定することで
BITMAPによる自動管理が選択されるようになりました。(10gからはデフォルト)

自動管理を選択した場合、PCTUSED,FREELISTS,FREELIST GROUPSの値は
無視されます。

-・ FREELIST ここまで-・-・-・-・-・-・-・-・-・-・-・-・-・

今回の引用はPCTFREEの説明から始まり、様々なINDEXブロック分割の
内部動作を解説しています。

説明しているのは以下の4つのブロック分割です。

◆ 50-50 Leaf Block Splits

リーフブロックのブロック分割です。
1つのリーフブロックにindexエントリが入りきらない状態が発生した場合、
容量単位で半分に分裂し、前のリーフブロックのNEXTリーフブロックポインタと
次のリーフブロックのPREVIOUSリーフブロックポインタが更新されます。
また親となるブランチブロックのエントリポイントのリストを更新します。

※リーフブロックやブランチブロックについては前号のOracle解説を参照
http://imoment.blogspot.com/2007/01/oracle-b-tree-index.html

◆ 50-50 Branch Block Splits

ブランチブロックの分割です。
ブランチブロックに格納されているリーフブロック(または子ブランチブロック)
へのエントリポイントのリストが1つのブロックに収まりきらなくなった場合、
2つに分裂します。親ブランチブロック(またはrootブロック)のエントリポイントも
更新します。

◆ 50-50 Root Block Split

rootブロックのブロック分割です。
ブランチブロックの分割と似ているのですが、新しく親となるrootブロックが
誕生します。rootブロックの分割が唯一のindexのレベルを上げる要因です。

◆ 90-10 Block Splits

50-50 Bransh Block Splitsの特殊ケースです。
追加する値がb-tree index内で最も大きな場合に起こります。
50-50で分割するのではなく、99-1で満杯になったブロックはそのままで、
新しく追加する値だけが格納されたブロックを生成します。
これは単純に値が増加していくindexの無駄な領域発生を防ぐための考慮です。

___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
編集後記
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
今号からご購読いただいた皆様はじめまして。
本日も最後まで読んでいただきありがとうございます。

今週末、近所のLAZONAというショッピングモールの
ビックカメラで新PCを購入しました。
3万円引きに釣られて、Flets光まで申し込んでしまいました。
後で調べてみたら、うちのマンションは100MBを120世帯で共有しているとのこと。
タイミングによっては、今のADSLより遅くなるんじゃないの?orz

それではまた。

___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
おわりに
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
記述誤りなどのご指摘、
記事に関する疑問点・質問・感想・ご意見・ご感想など
yakusa_oracle@yahoo.co.jpまでお願い致します。

簡単な自己紹介はこちら
http://pr2.cgiboy.com/S/3191274

バックナンバー兼ブログはこちら
http://imoment.blogspot.com/

登録・解除はこちらから
http://www.mag2.com/m/0000200441.htm

About me

  • I'm yaksa
  • From Tokyo, Japan
My profile
にほんブログ村 IT技術ブログへ

blogRanking