情報科学屋さんを目指す人のメモ(FC2ブログ版)

何かのやり方や、問題の解決方法をどんどんメモするブログ。そんな大学院生の活動「キャッシュ」に誰かがヒットしてくれることを祈って。

ブログ内検索

スポンサーサイト このエントリーを含むはてなブックマーク

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサー広告 | 編集
このエントリーをはてなブックマークに追加 Clip to Evernote

Overlay Weaver の使い方 このエントリーを含むはてなブックマーク

「Overlay Weaver 使い方」でこのblogにやってきてくれる方がいるのに、 このblogには使い方が無い!ということで(最低限ですが)書いてみます。

今回の目的は、「『うわ、めんどくさそう』を、『とりあえず動いたからこれで行けるかもしれない』 にして、Overlay Weaverユーザ仲間を逃がさないようにしよう」です。つまるところ、 「手取り足取り」タイプです。とりあえず、動くと気分が変わりますし、 卒論終わるかなっていう不安も少しは和らぐでしょう、と。

準備

今回は、きっとOverlay Weaverのホームページを見ても分からなかった人が対象なので、 eclipseを想定します。なので、eclipseでJavaアプリケーションが実行できる準備だけは各自行っておいてください。 また、今回は、1台のマシン上で仮想的にノードを複数起動するモードで実行してみます。

ソースコードを入手する

ソースコードは、sourceforge.netというところに存在します。 公式の解説の通りでもいいですが、 eclipseの機能を使えば簡単に入手できます。

まず、「Package Explorer」の何もないところで右クリックして、「Import...」を クリックします。そして、「CVS>Projects from CVS」を選択して「Next」。

Create a new repository location」を選択して「Next」を押して、 次のように入力してください。

  • Host
    overlayweaver.cvs.sourceforge.net
  • Repository path
    /cvsroot/overlayweaver
  • User
    anonymous
  • Password
    (何も入力せず、空欄のまま)
  • Connection type
    pserver

入力を確認したら「Next」を押します。

Use an existing module(this will allow you to browse the modules in the repository)」を 選択すると、接続が始まります ここで失敗した場合は、一つ前の画面を確認してくださいFinish

フォルダがいくつか表示されたら、その中の「overlayweaver」フォルダを 選択して「Finish」を押してください。しばらくすると、 めでたくソースコードのダウンロードが完了します。

シナリオを用意する

シナリオ」とは、これからたくさんのノードを起動したり、操作する際に、 どのようにノードを起動して、どのような操作をするかをあらかじめ記述したファイルのことです。 ここで、今回利用するシナリオファイルを用意します。 中身は私が作ってしまいますが、内容は自分で作るときの参考になると思います。

「Package Explorer」で、パッケージツリーの根本にあたる overlayweaverを右クリックして、「New>Folder」で、 「Folder name」に「scenario」と入力して「Finish」を押してください。

次に、今作成した「scenario」フォルダに、シナリオファイルを作ります。 「scenario」フォルダを右クリックして、「New>File」で、 「test-scenario」と入力して、「Finish」を押します。

すると、test-scenarioの編集画面が開くので、次に掲載するシナリオをコピペして 保存(Ctrl+S)してください 下のシナリオをコピーするときは、枠の右上に表示されるコピーボタンを 使ってください

##########
# start
##########

class ow.tool.dhtshell.Main
schedule 0 invoke
timeoffset 2000

##########
# invoke
##########


##########
# firstnode
##########

class ow.tool.dhtshell.Main
arg -m emu0 -a Chord -r Iterative
schedule 0 invoke
timeoffset 2020

##########
# othernodes
##########

arg -m emu0 -a Chord -r Iterative
schedule 0,10,100 invoke
timeoffset 3030

##########
# join
##########

schedule 0 controls 2 init emu1
schedule 50 controls 3 init emu1
schedule 100 controls 4 init emu1
schedule 150 controls 5 init emu1
schedule 200 controls 6 init emu1
schedule 250 controls 7 init emu1
schedule 300 controls 8 init emu1
schedule 350 controls 9 init emu1
schedule 400 controls 10 init emu1
schedule 450 controls 11 init emu1
schedule 500 controls 12 init emu1
schedule 550 controls 13 init emu1
schedule 600 controls 14 init emu1
schedule 650 controls 15 init emu1
schedule 700 controls 16 init emu1
schedule 750 controls 17 init emu1
schedule 800 controls 18 init emu1
schedule 850 controls 19 init emu1
schedule 900 controls 20 init emu1
schedule 950 controls 21 init emu1
schedule 1000 controls 22 init emu1
schedule 1050 controls 23 init emu1
schedule 1100 controls 24 init emu1
schedule 1150 controls 25 init emu1
schedule 1200 controls 26 init emu1
schedule 1250 controls 27 init emu1
schedule 1300 controls 28 init emu1
schedule 1350 controls 29 init emu1
schedule 1400 controls 30 init emu1
schedule 1450 controls 31 init emu1
schedule 1500 controls 32 init emu1
schedule 1550 controls 33 init emu1
schedule 1600 controls 34 init emu1
schedule 1650 controls 35 init emu1
schedule 1700 controls 36 init emu1
schedule 1750 controls 37 init emu1
schedule 1800 controls 38 init emu1
schedule 1850 controls 39 init emu1
schedule 1900 controls 40 init emu1
schedule 1950 controls 41 init emu1
schedule 2000 controls 42 init emu1
schedule 2050 controls 43 init emu1
schedule 2100 controls 44 init emu1
schedule 2150 controls 45 init emu1
schedule 2200 controls 46 init emu1
schedule 2250 controls 47 init emu1
schedule 2300 controls 48 init emu1
schedule 2350 controls 49 init emu1
schedule 2400 controls 50 init emu1
schedule 2450 controls 51 init emu1
schedule 2500 controls 52 init emu1
schedule 2550 controls 53 init emu1
schedule 2600 controls 54 init emu1
schedule 2650 controls 55 init emu1
schedule 2700 controls 56 init emu1
schedule 2750 controls 57 init emu1
schedule 2800 controls 58 init emu1
schedule 2850 controls 59 init emu1
schedule 2900 controls 60 init emu1
schedule 2950 controls 61 init emu1
schedule 3000 controls 62 init emu1
schedule 3050 controls 63 init emu1
schedule 3100 controls 64 init emu1
schedule 3150 controls 65 init emu1
schedule 3200 controls 66 init emu1
schedule 3250 controls 67 init emu1
schedule 3300 controls 68 init emu1
schedule 3350 controls 69 init emu1
schedule 3400 controls 70 init emu1
schedule 3450 controls 71 init emu1
schedule 3500 controls 72 init emu1
schedule 3550 controls 73 init emu1
schedule 3600 controls 74 init emu1
schedule 3650 controls 75 init emu1
schedule 3700 controls 76 init emu1
schedule 3750 controls 77 init emu1
schedule 3800 controls 78 init emu1
schedule 3850 controls 79 init emu1
schedule 3900 controls 80 init emu1
schedule 3950 controls 81 init emu1
schedule 4000 controls 82 init emu1
schedule 4050 controls 83 init emu1
schedule 4100 controls 84 init emu1
schedule 4150 controls 85 init emu1
schedule 4200 controls 86 init emu1
schedule 4250 controls 87 init emu1
schedule 4300 controls 88 init emu1
schedule 4350 controls 89 init emu1
schedule 4400 controls 90 init emu1
schedule 4450 controls 91 init emu1
schedule 4500 controls 92 init emu1
schedule 4550 controls 93 init emu1
schedule 4600 controls 94 init emu1
schedule 4650 controls 95 init emu1
schedule 4700 controls 96 init emu1
schedule 4750 controls 97 init emu1
schedule 4800 controls 98 init emu1
schedule 4850 controls 99 init emu1
schedule 4900 controls 100 init emu1
timeoffset 9030
timeoffset 14030

##########
# put
##########

schedule 0 control 29 put key0 value0
schedule 45 control 29 status
schedule 50 control 6 put key1 value1
schedule 95 control 6 status
schedule 100 control 86 put key2 value2
schedule 145 control 86 status
schedule 150 control 80 put key3 value3
schedule 195 control 80 status
schedule 200 control 24 put key4 value4
schedule 245 control 24 status
schedule 250 control 54 put key5 value5
schedule 295 control 54 status
schedule 300 control 21 put key6 value6
schedule 345 control 21 status
schedule 350 control 90 put key7 value7
schedule 395 control 90 status
schedule 400 control 1 put key8 value8
schedule 445 control 1 status
schedule 450 control 65 put key9 value9
schedule 495 control 65 status
schedule 500 control 86 put key10 value10
schedule 545 control 86 status
schedule 550 control 18 put key11 value11
schedule 595 control 18 status
schedule 600 control 58 put key12 value12
schedule 645 control 58 status
schedule 650 control 35 put key13 value13
schedule 695 control 35 status
schedule 700 control 65 put key14 value14
schedule 745 control 65 status
schedule 750 control 81 put key15 value15
schedule 795 control 81 status
schedule 800 control 94 put key16 value16
schedule 845 control 94 status
schedule 850 control 58 put key17 value17
schedule 895 control 58 status
schedule 900 control 51 put key18 value18
schedule 945 control 51 status
schedule 950 control 88 put key19 value19
schedule 995 control 88 status
schedule 1000 control 76 put key20 value20
schedule 1045 control 76 status
schedule 1050 control 27 put key21 value21
schedule 1095 control 27 status
schedule 1100 control 49 put key22 value22
schedule 1145 control 49 status
schedule 1150 control 46 put key23 value23
schedule 1195 control 46 status
schedule 1200 control 59 put key24 value24
schedule 1245 control 59 status
schedule 1250 control 81 put key25 value25
schedule 1295 control 81 status
schedule 1300 control 63 put key26 value26
schedule 1345 control 63 status
schedule 1350 control 15 put key27 value27
schedule 1395 control 15 status
schedule 1400 control 2 put key28 value28
schedule 1445 control 2 status
schedule 1450 control 83 put key29 value29
schedule 1495 control 83 status
schedule 1500 control 48 put key30 value30
schedule 1545 control 48 status
schedule 1550 control 55 put key31 value31
schedule 1595 control 55 status
schedule 1600 control 78 put key32 value32
schedule 1645 control 78 status
schedule 1650 control 84 put key33 value33
schedule 1695 control 84 status
schedule 1700 control 65 put key34 value34
schedule 1745 control 65 status
schedule 1750 control 93 put key35 value35
schedule 1795 control 93 status
schedule 1800 control 49 put key36 value36
schedule 1845 control 49 status
schedule 1850 control 41 put key37 value37
schedule 1895 control 41 status
schedule 1900 control 96 put key38 value38
schedule 1945 control 96 status
schedule 1950 control 71 put key39 value39
schedule 1995 control 71 status
schedule 2000 control 76 put key40 value40
schedule 2045 control 76 status
schedule 2050 control 62 put key41 value41
schedule 2095 control 62 status
schedule 2100 control 71 put key42 value42
schedule 2145 control 71 status
schedule 2150 control 85 put key43 value43
schedule 2195 control 85 status
schedule 2200 control 60 put key44 value44
schedule 2245 control 60 status
schedule 2250 control 28 put key45 value45
schedule 2295 control 28 status
schedule 2300 control 68 put key46 value46
schedule 2345 control 68 status
schedule 2350 control 95 put key47 value47
schedule 2395 control 95 status
schedule 2400 control 77 put key48 value48
schedule 2445 control 77 status
schedule 2450 control 73 put key49 value49
schedule 2495 control 73 status
schedule 2500 control 25 put key50 value50
schedule 2545 control 25 status
schedule 2550 control 12 put key51 value51
schedule 2595 control 12 status
schedule 2600 control 91 put key52 value52
schedule 2645 control 91 status
schedule 2650 control 79 put key53 value53
schedule 2695 control 79 status
schedule 2700 control 29 put key54 value54
schedule 2745 control 29 status
schedule 2750 control 22 put key55 value55
schedule 2795 control 22 status
schedule 2800 control 30 put key56 value56
schedule 2845 control 30 status
schedule 2850 control 57 put key57 value57
schedule 2895 control 57 status
schedule 2900 control 30 put key58 value58
schedule 2945 control 30 status
schedule 2950 control 78 put key59 value59
schedule 2995 control 78 status
schedule 3000 control 76 put key60 value60
schedule 3045 control 76 status
schedule 3050 control 68 put key61 value61
schedule 3095 control 68 status
schedule 3100 control 40 put key62 value62
schedule 3145 control 40 status
schedule 3150 control 13 put key63 value63
schedule 3195 control 13 status
schedule 3200 control 98 put key64 value64
schedule 3245 control 98 status
schedule 3250 control 74 put key65 value65
schedule 3295 control 74 status
schedule 3300 control 46 put key66 value66
schedule 3345 control 46 status
schedule 3350 control 92 put key67 value67
schedule 3395 control 92 status
schedule 3400 control 42 put key68 value68
schedule 3445 control 42 status
schedule 3450 control 50 put key69 value69
schedule 3495 control 50 status
schedule 3500 control 36 put key70 value70
schedule 3545 control 36 status
schedule 3550 control 79 put key71 value71
schedule 3595 control 79 status
schedule 3600 control 14 put key72 value72
schedule 3645 control 14 status
schedule 3650 control 55 put key73 value73
schedule 3695 control 55 status
schedule 3700 control 35 put key74 value74
schedule 3745 control 35 status
schedule 3750 control 11 put key75 value75
schedule 3795 control 11 status
schedule 3800 control 91 put key76 value76
schedule 3845 control 91 status
schedule 3850 control 12 put key77 value77
schedule 3895 control 12 status
schedule 3900 control 57 put key78 value78
schedule 3945 control 57 status
schedule 3950 control 76 put key79 value79
schedule 3995 control 76 status
schedule 4000 control 79 put key80 value80
schedule 4045 control 79 status
schedule 4050 control 59 put key81 value81
schedule 4095 control 59 status
schedule 4100 control 82 put key82 value82
schedule 4145 control 82 status
schedule 4150 control 85 put key83 value83
schedule 4195 control 85 status
schedule 4200 control 46 put key84 value84
schedule 4245 control 46 status
schedule 4250 control 48 put key85 value85
schedule 4295 control 48 status
schedule 4300 control 46 put key86 value86
schedule 4345 control 46 status
schedule 4350 control 14 put key87 value87
schedule 4395 control 14 status
schedule 4400 control 57 put key88 value88
schedule 4445 control 57 status
schedule 4450 control 51 put key89 value89
schedule 4495 control 51 status
schedule 4500 control 71 put key90 value90
schedule 4545 control 71 status
schedule 4550 control 30 put key91 value91
schedule 4595 control 30 status
schedule 4600 control 56 put key92 value92
schedule 4645 control 56 status
schedule 4650 control 34 put key93 value93
schedule 4695 control 34 status
schedule 4700 control 10 put key94 value94
schedule 4745 control 10 status
schedule 4750 control 74 put key95 value95
schedule 4795 control 74 status
schedule 4800 control 94 put key96 value96
schedule 4845 control 94 status
schedule 4850 control 84 put key97 value97
schedule 4895 control 84 status
schedule 4900 control 30 put key98 value98
schedule 4945 control 30 status
schedule 4950 control 99 put key99 value99
schedule 4995 control 99 status
timeoffset 19035

##########
# get
##########

schedule 0 control 29 get key0
schedule 45 control 29 status
schedule 50 control 6 get key1
schedule 95 control 6 status
schedule 100 control 86 get key2
schedule 145 control 86 status
schedule 150 control 80 get key3
schedule 195 control 80 status
schedule 200 control 24 get key4
schedule 245 control 24 status
schedule 250 control 54 get key5
schedule 295 control 54 status
schedule 300 control 21 get key6
schedule 345 control 21 status
schedule 350 control 90 get key7
schedule 395 control 90 status
schedule 400 control 1 get key8
schedule 445 control 1 status
schedule 450 control 65 get key9
schedule 495 control 65 status
schedule 500 control 86 get key10
schedule 545 control 86 status
schedule 550 control 18 get key11
schedule 595 control 18 status
schedule 600 control 58 get key12
schedule 645 control 58 status
schedule 650 control 35 get key13
schedule 695 control 35 status
schedule 700 control 65 get key14
schedule 745 control 65 status
schedule 750 control 81 get key15
schedule 795 control 81 status
schedule 800 control 94 get key16
schedule 845 control 94 status
schedule 850 control 58 get key17
schedule 895 control 58 status
schedule 900 control 51 get key18
schedule 945 control 51 status
schedule 950 control 88 get key19
schedule 995 control 88 status
schedule 1000 control 76 get key20
schedule 1045 control 76 status
schedule 1050 control 27 get key21
schedule 1095 control 27 status
schedule 1100 control 49 get key22
schedule 1145 control 49 status
schedule 1150 control 46 get key23
schedule 1195 control 46 status
schedule 1200 control 59 get key24
schedule 1245 control 59 status
schedule 1250 control 81 get key25
schedule 1295 control 81 status
schedule 1300 control 63 get key26
schedule 1345 control 63 status
schedule 1350 control 15 get key27
schedule 1395 control 15 status
schedule 1400 control 2 get key28
schedule 1445 control 2 status
schedule 1450 control 83 get key29
schedule 1495 control 83 status
schedule 1500 control 48 get key30
schedule 1545 control 48 status
schedule 1550 control 55 get key31
schedule 1595 control 55 status
schedule 1600 control 78 get key32
schedule 1645 control 78 status
schedule 1650 control 84 get key33
schedule 1695 control 84 status
schedule 1700 control 65 get key34
schedule 1745 control 65 status
schedule 1750 control 93 get key35
schedule 1795 control 93 status
schedule 1800 control 49 get key36
schedule 1845 control 49 status
schedule 1850 control 41 get key37
schedule 1895 control 41 status
schedule 1900 control 96 get key38
schedule 1945 control 96 status
schedule 1950 control 71 get key39
schedule 1995 control 71 status
schedule 2000 control 76 get key40
schedule 2045 control 76 status
schedule 2050 control 62 get key41
schedule 2095 control 62 status
schedule 2100 control 71 get key42
schedule 2145 control 71 status
schedule 2150 control 85 get key43
schedule 2195 control 85 status
schedule 2200 control 60 get key44
schedule 2245 control 60 status
schedule 2250 control 28 get key45
schedule 2295 control 28 status
schedule 2300 control 68 get key46
schedule 2345 control 68 status
schedule 2350 control 95 get key47
schedule 2395 control 95 status
schedule 2400 control 77 get key48
schedule 2445 control 77 status
schedule 2450 control 73 get key49
schedule 2495 control 73 status
schedule 2500 control 25 get key50
schedule 2545 control 25 status
schedule 2550 control 12 get key51
schedule 2595 control 12 status
schedule 2600 control 91 get key52
schedule 2645 control 91 status
schedule 2650 control 79 get key53
schedule 2695 control 79 status
schedule 2700 control 29 get key54
schedule 2745 control 29 status
schedule 2750 control 22 get key55
schedule 2795 control 22 status
schedule 2800 control 30 get key56
schedule 2845 control 30 status
schedule 2850 control 57 get key57
schedule 2895 control 57 status
schedule 2900 control 30 get key58
schedule 2945 control 30 status
schedule 2950 control 78 get key59
schedule 2995 control 78 status
schedule 3000 control 76 get key60
schedule 3045 control 76 status
schedule 3050 control 68 get key61
schedule 3095 control 68 status
schedule 3100 control 40 get key62
schedule 3145 control 40 status
schedule 3150 control 13 get key63
schedule 3195 control 13 status
schedule 3200 control 98 get key64
schedule 3245 control 98 status
schedule 3250 control 74 get key65
schedule 3295 control 74 status
schedule 3300 control 46 get key66
schedule 3345 control 46 status
schedule 3350 control 92 get key67
schedule 3395 control 92 status
schedule 3400 control 42 get key68
schedule 3445 control 42 status
schedule 3450 control 50 get key69
schedule 3495 control 50 status
schedule 3500 control 36 get key70
schedule 3545 control 36 status
schedule 3550 control 79 get key71
schedule 3595 control 79 status
schedule 3600 control 14 get key72
schedule 3645 control 14 status
schedule 3650 control 55 get key73
schedule 3695 control 55 status
schedule 3700 control 35 get key74
schedule 3745 control 35 status
schedule 3750 control 11 get key75
schedule 3795 control 11 status
schedule 3800 control 91 get key76
schedule 3845 control 91 status
schedule 3850 control 12 get key77
schedule 3895 control 12 status
schedule 3900 control 57 get key78
schedule 3945 control 57 status
schedule 3950 control 76 get key79
schedule 3995 control 76 status
schedule 4000 control 79 get key80
schedule 4045 control 79 status
schedule 4050 control 59 get key81
schedule 4095 control 59 status
schedule 4100 control 82 get key82
schedule 4145 control 82 status
schedule 4150 control 85 get key83
schedule 4195 control 85 status
schedule 4200 control 46 get key84
schedule 4245 control 46 status
schedule 4250 control 48 get key85
schedule 4295 control 48 status
schedule 4300 control 46 get key86
schedule 4345 control 46 status
schedule 4350 control 14 get key87
schedule 4395 control 14 status
schedule 4400 control 57 get key88
schedule 4445 control 57 status
schedule 4450 control 51 get key89
schedule 4495 control 51 status
schedule 4500 control 71 get key90
schedule 4545 control 71 status
schedule 4550 control 30 get key91
schedule 4595 control 30 status
schedule 4600 control 56 get key92
schedule 4645 control 56 status
schedule 4650 control 34 get key93
schedule 4695 control 34 status
schedule 4700 control 10 get key94
schedule 4745 control 10 status
schedule 4750 control 74 get key95
schedule 4795 control 74 status
schedule 4800 control 94 get key96
schedule 4845 control 94 status
schedule 4850 control 84 get key97
schedule 4895 control 84 status
schedule 4900 control 30 get key98
schedule 4945 control 30 status
schedule 4950 control 99 get key99
schedule 4995 control 99 status
timeoffset 24040

ちなみに、このシナリオは100ノード起動して、100回putして、 そのデータを100回のgetで再び取り出しています。

ログ用の設定を用意

このあと、結果の表示がごちゃごちゃしすぎるのを防ぐため、ログ(logging API)を出力しないように 設定ファイルを作ります。簡単です。

scenarioフォルダに「log-off.properties」という名前でファイルを作り、 中身に

.level=OFF

とだけ記述して保存してください。終わりです。

実行用設定を作成する

Run>Debug Configurations...」で、デバッグ起動設定を開きます。

開いたら、左にある「Java Application」を選択して、 画面左上のNewボタンを押します 書類の右上にプラスマークのあるボタンです

右側にいろいろな設定項目の入力フォームが表示されると思います。 まず最初に現れた画面で、Nameに「overlayweaver」、Projectに 「overlayweaver」、Main classに「ow.tool.emulator.Main」 と入力してください。

続いて、「Arguments」タブを開いて、「Program arguments」に

${project_loc:overlayweaver}\scenario\test-scenario

と入力してください ここではシナリオファイルを指定していますが、区切り文字がWindowsの「\」に なっています。他のOSでは適宜変更してください(たぶん普通「/」)

そして、同じく「VM arguments」に

-Djava.util.logging.config.file=${project_loc:overlayweaver}\scenario\log-off.properties

と入力してください。続いて「Common」タブを開いて、下の方の「Standard Input and Output」の 中にある「File」チェックボックスをONにして、右の枠内に

${project_loc:overlayweaver}\scenario\test-scenario-out

と入力し、下の「Apply」ボタンを押します。

起動

「Apply」ボタンの下にあった「Debug」ボタンをクリックすると、Overlay Weaverが起動します。

すると、コンソールに実行結果が出力されます。 今回の実行では、100ノードが起動し、Joinを行った後、100回のPutを行い、100回のGetを 短い時間の間に一気に実行しています

ちなみに、流れてしまった実行結果ですが、scenarioフォルダに「test-scenario-out」 という名前で保存されているはずです。チェックしてみてください。

まとめ

公式ページを見て挫折しても、eclipseさえ使ったことがあれば、 ここを読むことで30分ほどでOverlay Weaverの 起動が行えると思います。とりあえずこれで動くようになったので、 OverlayWeaver用にDHTアルゴリズムを作成したり、シナリオを追加したりすれば いいと思います。何をやっているか分からないときは、それぞれ関連しそうなキーワードで調べてみてください。だんだん分かってくると思います。

追記

  • 2011.01.15 VM argumentsの入力内容から「-Djava.util.logging.config.file=」が抜けていたので修正

Effective Java 第2版
改訂第2版 Java言語プログラミングレッスン (上)
増補改訂版Java言語で学ぶデザインパターン入門

DHT | コメント:0 | トラックバック:0 | 編集
このエントリーをはてなブックマークに追加 Clip to Evernote

この記事のコメント

コメントの投稿 エントリの新旧に関わらず、極力18時間中に返信します。














この記事のトラックバック

トラックバックURL:
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。