東方算程譚

Oriental Code Talk ── επιστημηが与太をこく、弾幕とは無縁のシロモノ。

目次

Blog 利用状況

ニュース

著作とお薦めの品々は

著作とお薦めの品々は
東方熱帯林へ。

あわせて読みたい

わんくま

  1. 東京勉強会#2
    C++/CLI カクテル・レシピ
  2. 東京勉強会#3
    template vs. generics
  3. 大阪勉強会#6
    C++むかしばなし
  4. 東京勉強会#7
    C++むかしばなし
  5. 東京勉強会#8
    STL/CLRによるGeneric Programming
  6. TechEd 2007 @YOKOHAMA
    C++・C++/CLI・C# 適材適所
  7. 東京勉強会#14
    Making of BOF
  8. 東京勉強会#15
    状態遷移
  9. 名古屋勉強会#2
    WinUnit - お気楽お手軽UnitTest

CodeZine

  1. Cで実現する「ぷちオブジェクト指向」
  2. CUnitによるテスト駆動開発
  3. SQLiteで組み込みDB体験(2007年版)
  4. C++/CLIによるCライブラリの.NET化
  5. C# 1.1からC# 3.0まで~言語仕様の進化
  6. BoostでC++0xのライブラリ「TR1」を先取りしよう (1)
  7. BoostでC++0xのライブラリ「TR1」を先取りしよう (2)
  8. BoostでC++0xのライブラリ「TR1」を先取りしよう (3)
  9. BoostでC++0xのライブラリ「TR1」を先取りしよう (4)
  10. BoostでC++0xのライブラリ「TR1」を先取りしよう (5)
  11. C/C++に対応した、もうひとつのUnitTestFramework ─ WinUnit
  12. SQLiteで"おこづかいちょう"
  13. STL/CLRツアーガイド
  14. マージ・ソート : 巨大データのソート法
  15. ヒープソートのアルゴリズム
  16. C++0xの新機能「ラムダ式」を次期Visual Studioでいち早く試す
  17. .NETでマンデルブロ集合を描く
  18. .NETでマンデルブロ集合を描く(後日談)
  19. C++/CLI : とある文字列の相互変換(コンバージョン)
  20. インテルTBBによる選択ソートの高速化
  21. インテルTBB3.0 によるパイプライン処理
  22. Visual C++ 2010に追加されたSTLアルゴリズム
  23. Visual C++ 2010に追加されたSTLコンテナ「forward_list」
  24. shared_ptrによるObserverパターンの実装
  25. .NETでマンデルブロ集合を描く(番外編) ── OpenCLで超並列コンピューティング
  26. StateパターンでCSVを読む
  27. 状態遷移表からStateパターンを自動生成する
  28. 「ソートも、サーチも、あるんだよ」~標準C++ライブラリにみるアルゴリズムの面白さ
  29. インテルTBBの同期メカニズム
  30. なぜsetを使っちゃいけないの?
  31. WPFアプリケーションで腕試し ~C++でもWPFアプリを
  32. C++11 : スレッド・ライブラリひとめぐり
  33. Google製のC++ Unit Test Framework「Google Test」を使ってみる
  34. メールでデータベースを更新するココロミ
  35. Visitorパターンで遊んでみたよ
  36. Collection 2題:「WPFにバインドできる辞書」と「重複を許す検索set」
  37. Visual C++ 2012:stateless-lambdaとSQLiteのぷち拡張
  38. 「Visual C++ Compiler November 2012 CTP」で追加された6つの新機能

@IT

  1. Vista時代のVisual C++の流儀(前編)Vista到来。既存C/C++資産の.NET化を始めよう!
  2. Vista時代のVisual C++の流儀(中編)MFCから.NETへの実践的移行計画
  3. Vista時代のVisual C++の流儀(後編) STL/CLRによるDocument/Viewアーキテクチャ
  4. C++開発者のための単体テスト入門 第1回 C++開発者の皆さん。テスト、ちゃんとしていますか?
  5. C++開発者のための単体テスト入門 第2回 C++アプリケーションの効率的なテスト手法(CppUnit編)
  6. C++開発者のための単体テスト入門 第3回 C++アプリケーションの効率的なテスト手法(NUnit編)

AWARDS


Microsoft MVP
for Visual Developer - Visual C++


Wankuma MVP
for いぢわる C++


Nyantora MVP
for こくまろ中国茶

Xbox

Links

記事カテゴリ

書庫

日記カテゴリ

綺麗じゃん、見た目。 ^^

// C++に拡張メソッドがあったら──

template<typename Container, typename T>
inline bool contains(this const Container& c, const T& val) {
  return std::find(c.begin(), c.end(), val) != c.end();
}

使用前:
vector<int> v; int n;
if ( std::find(c.begin(),c.end(),n) != c.end() )
  ...めっけー♪

使用後:
vector<int> v; int n;
if ( v.contains(n)  )
  ...めっけー♪

ふ、ふつくしい....

ただ、これがOKなら
vector<int>* pv;  pv->contains(n);
も許さんならんのでちょいとめんどっちーでしょね。

投稿日時 : 2009年2月6日 13:01

コメントを追加

# re: 綺麗じゃん、見た目。 ^^ 2009/02/06 13:05 a

s/comtains/contains/

# re: 綺麗じゃん、見た目。 ^^ 2009/02/06 13:19 επιστημη

ぐげ。おたおたと修正しまつ。

# re: 綺麗じゃん、見た目。 ^^ 2009/02/06 16:04 アキラ

名前空間内の拡張メソッドはどうするんだろ。
using namespaceしないと使えない?

# re: 綺麗じゃん、見た目。 ^^ 2009/02/06 16:16 επιστημη

> 名前空間内の拡張メソッド

namespace epi {
 template.... contains(...
}

vector<int> v;
epi::v.contains(n); // えー?
v.epi::contains(n); // いやーん

しっくりいきませんなぁ。
using namespace が落とし処でしょうかねぇ。

# re: 綺麗じゃん、見た目。 ^^ 2009/02/07 8:03 インドリ

結構いいものですね。研究の価値ありですね。
ただその一方で、【どんなクラスでも】拡張できるのはクラス設計者としてはちょっと困る・・・
せっかくオブジェクト指向技法で複雑でスパゲッティな現実の情報をすっきりと整理したのに、また絡み合わさないでー。
sealedキーワードの様に、拡張メソッド禁止キーワードとかで、使われ方を制御できたらいいのになぁ・・・

# re: 綺麗じゃん、見た目。 ^^ 2009/02/07 8:19 インドリ

拙い例を書いてみました。

public class Foo {
public:

void Out( int val ) { ..... }

}

//クラス設計が台無しに・・・
public class BadOut {
public:

void Out( this const Foo& f ) { ... }

}


行儀が悪い拡張メソッドを防ぎたいです。
メソッドオーバーライドとか継承を考えた時、親クラスや紛らわしいメソッドを定義されたら困ります。
C++はまだいいほうなのですが、C#とかでObjectとかを引数に取る馬鹿拡張メソッドとかされたらもう地獄です。

# re: 綺麗じゃん、見た目。 ^^ 2009/02/07 9:40 επιστημη

↑説明ヘタすぎ。万人に通じると思ったら大間違い。

こいつのどこが台無しなんでしょか。
こんな拡張してもconstなfにOutできるようにはならんですよ?

# re: 綺麗じゃん、見た目。 ^^ 2009/02/07 10:02 インドリ

>↑説明ヘタすぎ。万人に通じると思ったら大間違い。

済みません。επιστημηさんなら察しがつくと思って説明さぼってしまいました。
ちゃんとした説明を書きます。

public class Foo {
public:

//整数型の値を加工して出力するメソッド
void Out( int val ) { ... }

}

//クラス設計が台無しになるクラス
public class BadOut {
public:

/*
Fooクラスのインスタンス情報をどこかへ出力しようとしたり、
関係の無い処理をやっちゃう意味不明なメソッド。
*/
void Out( this const Foo& f ) {
//予想もつかない馬鹿な処理をする。
cout << "Bad!!!";
A a = new A();
(省略)
}

}

こんなメソッドでFooクラスを拡張されてしまうと・・・
Foo f = new Foo();
f.( ); //値を渡すのを忘れた!バグッた!

とミスを誘うFooクラスが出来上がってしまいます。
こんな事されたらFooクラスを設計した人が困ります。
これがC#になるとObjectクラスを引数とする拡張メソッドを定義されると大規模なミスを誘発していまいます。
※同様にC++では汎用ポイタを引数とする拡張メソッドをされると混乱を生みかねません。

他にも色々ありえますが、纏めて言いますとクラス設計者が意図しない拡張を強制的にされたらどうするのかという問題です。
ボクはそこが引っかかります。

# re: 綺麗じゃん、見た目。 ^^ 2009/02/07 10:04 インドリ

何度も済みません。

>f.( ); //値を渡すのを忘れた!バグッた!

これはf.Out()です。
失礼致しました。

# re: 綺麗じゃん、見た目。 ^^ 2009/02/07 10:18 επιστημη

> ミスを誘うFooクラスが出来上がってしまいます。
> こんな事されたらFooクラスを設計した人が困ります。

そんなリスクは百も承知。
今のままでも

class FooEx : public Foo {
public:
 void Out() const { ... } // らめぇぇ!
};

なんて手段使えばいぢり放題なんだから。

不適切なメンバを追加できる(ように見える)のはわかった。

「隠してあるメンバを不用意にアクセスできる」例は示すことができないのよね?
前のエントリで僕が示せとゆーてたのはコレなんだけど。

# re: 綺麗じゃん、見た目。 ^^ 2009/02/07 12:13 アキラ

> インドリさん
拡張メソッドを語るのであれば、アスペクト指向を学んだほうがいいです。

# re: 綺麗じゃん、見た目。 ^^ 2009/02/07 16:44 インドリ

アキラさんへ
えっアスペクト指向と関係あるの?
アキラさんどういうこと?
是非教えてください。
ボクはタダのコードジェネレーターの一種と思っていた。
でも、アスペクト指向となると今まで常識が覆るので別問題。
もしかしてアキラさんが言いたいのは横断的関心事なのかな?

# re: 綺麗じゃん、見た目。 ^^ 2009/02/07 17:00 επιστημη

あちこちに散らばったコードを編み上げるとこなんざ、
アスペクト指向のノリですわねぇ。

# re: 綺麗じゃん、見た目。 ^^ 2009/02/07 17:01 インドリ

>前のエントリで僕が示せとゆーてたのはコレなんだけど。

了解しました。

このトリックを説明するためにC#のコード書きます。
これでコンパイルOKです。


class Foo {

private void Out() { }

}

static class Bad {

public static void Out(this Foo f) {}

}


馬鹿々しい事ですがこのコードは誤解を与えます。
継承の場合sealed出来るので、拡張メソッドにも何らかの制御機能が欲しいです。

追伸
これでボクの印象が悪かったのですが、 επιστημηさんのコードを見ていると拡張メソッドもそんなに悪くないかも・・・と前向きになってきています。

# re: 綺麗じゃん、見た目。 ^^ 2009/02/07 17:19 επιστημη

ちがうってヴぁ。

「隠してあるメンバを不用意にアクセスできる」
てのは、拡張メソッドの中から拡張元の
private/protectedなメソッド/メンバを呼べるってこと。

その例でいけば、
public static void Out(this Foo f) {
 ここで f.Out() を呼んでみろよ!
}

ですよ。これができるなら、
あなたの主張する「カプセル化を壊す」を認めるよと。

# re: 綺麗じゃん、見た目。 ^^ 2009/02/07 17:26 インドリ

見えると違って、本当にするとは・・・
一応リフレクション使えば出来ますが、それはεπιστημηさんが意図した質問の答えとズレている気がする・・・
※リフレクションはちょっと姑息ですよね?
(リフレクションとか使わずに)見えるのではなくて、本当に出来るのかと問われたらNoです。
実際に出来なかったらいいかも・・・
でも、出来ない事がそう見えるのも気味が悪いし・・・
この辺の気味悪さはどう思われますか?
επιστημηさんの考え方の影響を受けて、バリバリ拡張メソッド派に変るかも・・・

# re: 綺麗じゃん、見た目。 ^^ 2009/02/07 17:34 επιστημη

> 一応リフレクション使えば出来ますが

それは拡張メソッド"で"できるこっちゃないもんね。

> この辺の気味悪さはどう思われますか?

「やった奴が悪い」じゃないすかね。
導出クラスで邪悪なメソッド追加するのと同類って希ガス。

> επιστημηさんの考え方の影響を受けて、バリバリ拡張メソッド派に変るかも・・・

積極的に薦めちゃいませんよ。
居心地の悪さを感じるのは事実だし、
やるなら「繊細かつ大胆に」じゃないかな。

# re: 綺麗じゃん、見た目。 ^^ 2009/02/07 17:37 インドリ

>やるなら「繊細かつ大胆に」じゃないかな。

成る程。
επιστημηさんのお陰で、拡張メソッドに利点があるのが分かったので、悪い方じゃなくて良い使い方を研究してみます。

# re: 綺麗じゃん、見た目。 ^^ 2009/02/07 17:54 επιστημη

実際operator-overroadは拡張メソッドみたいなもんでしょ。
operator==()をめちゃくちゃに(しかも勝手に)定義できてしまうけど、
それは「やった奴の責任」です。それと同類かと。

# re: 綺麗じゃん、見た目。 ^^ 2009/02/07 18:26 アキラ

拡張メソッドは、オブジェクト指向だけでは解決できない問題を解決するためにアスペクト指向の横断から取り入れられた機能です。

すでに用意されているクラスを特定のアプリケーションのために拡張してしまうと、そのクラスを他のアプリケーションに使うには再度修正してテストしてから使わないといけないですよね。

拡張メソッドは、既存のクラスはそのままでカプセル化を破壊せず、特定アプリケーションのために既存のクラスを安全に拡張するための機能です。

メソッドを内部に追加するのじゃなくて外付けするなら取り外しも容易だから汎用的な目的のためにも利用できますしね。

言語の機能だけを見て「うげー」って言うのじゃなくて
背景もちゃんと調べたほうがいいですよ。

# re: 綺麗じゃん、見た目。 ^^ 2009/02/07 19:40 επιστημη

> 既存のクラスはそのままでカプセル化を破壊せず

これが保証されない拡張メソッドだったら全力でブロック。
拡張メソッドでいたづらし放題ってことではなさそうなので
"容認派"てことになりますか。

定義があちこちに散らばるのが気になる、
つかヘッダ眺めただけじゃ全容が明らかにならないのが
居心地悪いと感じるとこなんだけど、
それはoperator-overroadも同じですし。

operator< を"勝手に"定義して map に放り込むなんて、
やっちゃうからねぇ実際 ^^;

# re: 綺麗じゃん、見た目。 ^^ 2009/02/07 19:59 アキラ

定義があちこちに散らばるのはC#のpartial classもそうですよね。
でも受け入れられてます。

C++0xでもコンセプトマップによって要件を満たすクラスにメンバ関数を追加することもできますし

Scalaのimplicit conversionも、指定したメンバがそのクラスになくて、そのクラスが他の型に変換可能ならそっちのメンバも探しにいくようにしてます。

一目で機能を見渡せるよりは、IDEが機能一覧表示するよう進化する方向に来てるのかもしれませんね。

# re: 綺麗じゃん、見た目。 ^^ 2009/02/07 21:46 επιστημη

んー...僕は「秀丸とコマンドラインらぶ」なアナクロ職人なので
IDEの助けを借りないとァレなのには少なからず抵抗があるんだけども、
そーゆー流れなのは否めませんからねぇ。

ビギナの質問なんかにコード見せろよってお願いすると
まったくもってスットンキョーなとこを切り出してきたり
するじゃない。その傾向がより顕著になりそうね ^^;

# re: 綺麗じゃん、見た目。 ^^ 2009/02/07 22:24 アキラ

ぼくもIDEラブな人ではないので同意しておきます(^^
IDEの支援がなくても、リファレンスがあればいいんじゃないかと。

# re: 綺麗じゃん、見た目。 ^^ 2009/02/08 0:07 NyaRuRu

>>επιστημη さん
>実際operator-overroadは拡張メソッドみたいなもんでしょ。

これは私もそう思います.
という話を書いたのが以下.
http://d.hatena.ne.jp/NyaRuRu/20080316/p2

>>アキラさん
>拡張メソッドは、オブジェクト指向だけでは解決できない問題を解決するために
>アスペクト指向の横断から取り入れられた機能です。

これは割と初耳なんですが,どこかに出典ありますか?
(partial class をアスペクト志向の方面から説明する文章はいくつか見たことがありますが……)

# re: 綺麗じゃん、見た目。 ^^ 2009/02/08 0:42 アキラ

えムナウさんから「拡張メソッドは管理されたアスペクト指向である」と伺っています。
アンダースのセッションの際に聞いたのではないかと。

以下のセッション内容も見てみると、「安全なAOP」であるとも読み取れます。
http://www.microsoft.com/japan/msdn/community/person/andershejlsberg/communityreport.aspx

# re: 綺麗じゃん、見た目。 ^^ 2009/02/08 1:39 NyaRuRu

>以下のセッション内容も見てみると、「安全なAOP」であるとも読み取れます。

うーみゅ.「安全なAOP」ではなく,「AOPと違って(Anders的な意味での)安全」と言っているような.
てかまあ当日会場には居たわけですが (よく見ると写ってる!).

Anders の AOP 嫌いは表に出てる話出てない話と色々聞いているので,少なくとも Anders 本人が「拡張メソッドは AOP から取り入れられたもの」と公言することはないと思うんですけどねぇ.

# re: 綺麗じゃん、見た目。 ^^ 2009/02/08 9:19 インドリ

アキラさん有難う♪
確かに言語の機能には罪はなく、嫌悪感よりも前向きに取り組むべきですよね。
自分でも「なんでだろう」と心理を探ったところ、どうやら何癖を何時もつけられているからのようです。
私はずっと、マニュアルも何も読まないし、説明も覚えておかない。それで居て自分が絶対に間違わないようにしろ!といわれて来ました。
そうした理不尽なクレームが知らず知らず私の心を蝕んでいたようです。
改めて考えてみれば、AOPだと考えたり、Smalltalk風だと考えたら拡張メソッドもそれほど不自然なものではなく、明らかに自分の心理がもたらした産物ですね。
これからはこれを教訓にし全ての機能について前向きに考えるようにします。

# re: 綺麗じゃん、見た目。 ^^ 2009/02/08 10:19 επιστημη

ま、また目新しいのが出てきたぞ♪

"Smalltalk風"ってどゆことすか?

# ぐげ、間違っちょる... overroad ぢゃねぇよ overload ぢゃんよ orz

# re: 綺麗じゃん、見た目。 ^^ 2009/02/08 10:46 インドリ

Smalltalkはあまり使った事無い(Squeakちょっとさわっただけ)のですが、オブジェクト指向設計系の本でよく例に出てくる記述が・・・


オブジェクト指向の本質はメッセージです。各オブジェクトに異なる振る舞いをさせるには(中略)
Foo(インスタンスのポインタ, パラメーター, ...)


大体こんな感じの記述が載っています。
C++はクラスベースでf.Foo( )とか考えますが、Smalltalkでは、【関数にメッセージを送る】と表現するそうです。

# re: 綺麗じゃん、見た目。 ^^ 2009/02/08 11:05 επιστημη

うん、わかる。すんなりわかる。
で、拡張メソッドとのカラミは?

「Smalltalkはメソッドを外付けできる」ってことじゃないよね?

> 各オブジェクトに異なる振る舞いをさせるには(中略)
> Foo(インスタンスのポインタ, パラメーター, ...)

Smalltalkの解説としてこう書いてあった、ってことですか?
「オブジェクト指向の手続き型言語(ぶっちゃけC)による表現」がこうなる、
なら納得するけども。

>【関数にメッセージを送る】

「オブジェクトにメッセージを送る」じゃなくて?

# re: 綺麗じゃん、見た目。 ^^ 2009/02/08 14:34 みずしま

> 「Smalltalkはメソッドを外付けできる」ってことじゃないよね?

Smalltalkではメソッドを外付けできますね。いや、おそらくインドリさんの意図とは全く異なると思うので、完全に横槍なのですが。

# re: 綺麗じゃん、見た目。 ^^ 2009/02/08 14:40 επιστημη

できるんだー、拡張メソッドみたいな手口じゃないとはいえ。

mix-inみたいな、メソッド呼び出しを他のオブジェクトに無茶振りするとか?
# Smalltal的にはメッセージの横流しつかタライ回しつか。

# re: 綺麗じゃん、見た目。 ^^ 2009/02/08 14:58 みずしま

Rubyもそうなんですが、拡張メソッドとは違って、本当に「元のクラス」に後付けでメソッドを追加する感じです。既存のクラスのメソッドの上書きもできるので、拡張メソッドと比べて危険性も高いかとも思います。Smalltalkは詳しくないので、Rubyで書くとこんな感じです。

puts 3 + 2 # 5
class Fixnum #Fixnumは固定長整数を表す組み込みクラス
def +(that) #+メソッドを上書き
self - that # selfはC++言語族のthis相当
end
def is_odd #is_oddメソッドを追加
self % 2 == 1
end
end
puts 3 + 2 # 1
puts 3.is_odd # true
puts 4.is_odd # false

# re: 綺麗じゃん、見た目。 ^^ 2009/02/08 15:12 インドリ

みずしまさんが言っている通りです。
厳密に言うと、Smalltalkの考え方と拡張メソッドは違うと思うのですが(そもそも解釈が間違っているかも)、そんな事いっちゃあ拡張メソッドが好きになれません。
何とか拡張メソッドが好きになれるように努力している最中です。
こんな感じで・・・

反対派の自分「拡張メソッド明らかに浮いているよね?またクレームきたらどうするの?」
賛成派の自分「そこはほら、AOPと思えば・・・」
反対派の自分「中途半端すぎる!AspectJでいいじゃん!ポイントカットしたい!」
賛成派の自分「いや、それはそうだけど、Smalltalkと似てない?それにRubyも似たような機能あるじゃん。前向きに考えようよ。」
↑今この最中

# re: 綺麗じゃん、見た目。 ^^ 2009/02/08 15:22 インドリ

参考の為に書いておきます。
ちょっと違うけど、特異メソッドが似ているかな?

obj = Object.new()
def obj.hello() #いきなりインスタンスにメソッドを定義

puts ("Hello")

end
ojb.hello(); #呼び出せる!

# re: 綺麗じゃん、見た目。 ^^ 2009/02/08 15:24 インドリ

済みません。また間違えました。

>ojb.hello(); #呼び出せる!
obj.hello() #呼び出せる!

ついつい行末文字つけてしまいました。

# re: 綺麗じゃん、見た目。 ^^ 2009/02/08 17:31 επιστημη

なるほど、メソッドの拡張(extension)ていうより注入(injection)ですな。

# ちっとも Smalltalk風 ぢゃないやんWWW (手口的な意味で)

# re: 綺麗じゃん、見た目。 ^^ 2009/02/08 20:34 インドリ

ついついRubyプログラミングしてしまいました。
ということでSqueakのプログラムも書きます。

newObject := Foo new initialize.

見た目は拡張メソッドと大分違いますが、このサンプルコードの動きがとっても「メッセージ指向」で動きが何となく拡張メソッドぽいです。

【動き】
最初のメッセージFoo newが実行されFooインスタンスが返えされます。
次にそのインスタンスにinitializeメッセージが送られます。
最後にその結果がnewObjectに格納されます。

このメッセージを送るという行為が人(書籍)によっては
関数名(インスタンスポインタ, パラメーター...)
を彷彿とさせるようです。
ボク本人としては「うーん。なんとなく意味は分かるけどもやっぱり見た目は拡張メソッドじゃないよね」って感じですw
それでも何とか拡張メソッドを好きになるよう努力します!

# re: 綺麗じゃん、見た目。 ^^ 2009/02/08 20:44 επιστημη

うん、Smalltalkではクラスも(メタクラスの)オブジェクト
なんで Foo に対して new ってメッセージが送れるのね。

C#でも似たことはできて、
Foo initialize() { 初期化してreturn this }
static Foo Create() { return new Foo(); }
を用意しておけば:

var newObject = Foo.Create().Initialize();

だから。

で、こいつから拡張メソッドを連想できるかといえば...僕には無理。

# re: 綺麗じゃん、見た目。 ^^ 2009/02/20 0:21 黒龍

C++は多重継承あるからmix-in的なものを求める原動力がちと弱い気もします。
そのあたりべっつに無くてもいいやぁなのかもうそろそろ破綻無く入れるの無理wなのかはよくわかりませんが。
てか伸びるの早いww

# re: 綺麗じゃん、見た目。 ^^ 2009/02/20 17:16 επιστημη

うーん...とはいえmix-inと多重継承は別モンですからー。
安全に機能追加できるてのは魅力的でする。

> てか伸びるの早いww

ソーメン並みですww

# Fantastic beat ! I would like to apprentice at the same time as you amend your website, how could i subscribe for a blog site? The account aided me a applicable deal. I have been tiny bit familiar of this your broadcast provided vivid transparent idea 2021/09/02 20:54 Fantastic beat ! I would like to apprentice at the

Fantastic beat ! I would like to apprentice at the same time as
you amend your website, how could i subscribe for a blog site?

The account aided me a applicable deal. I have been tiny bit
familiar of this your broadcast provided vivid transparent idea

# This piece of writing offers clear idea in support of the new people of blogging, that genuinely how to do running a blog. 2021/09/06 5:58 This piece of writing offers clear idea in support

This piece of writing offers clear idea in support of the new people of blogging, that genuinely how to do running a blog.

# This piece of writing offers clear idea in support of the new people of blogging, that genuinely how to do running a blog. 2021/09/06 5:59 This piece of writing offers clear idea in support

This piece of writing offers clear idea in support of the new people of blogging, that genuinely how to do running a blog.

# This piece of writing offers clear idea in support of the new people of blogging, that genuinely how to do running a blog. 2021/09/06 6:00 This piece of writing offers clear idea in support

This piece of writing offers clear idea in support of the new people of blogging, that genuinely how to do running a blog.

# This piece of writing offers clear idea in support of the new people of blogging, that genuinely how to do running a blog. 2021/09/06 6:01 This piece of writing offers clear idea in support

This piece of writing offers clear idea in support of the new people of blogging, that genuinely how to do running a blog.

# Hello! I know this is kinda off topic however , I'd figured I'd ask. Would you be interested in exchanging links or maybe guest authoring a blog article or vice-versa? My blog goes over a lot of the same topics as yours and I feel we could greatly benef 2021/09/12 23:21 Hello! I know this is kinda off topic however , I'

Hello! I know this is kinda off topic however , I'd
figured I'd ask. Would you be interested in exchanging links or maybe guest authoring a
blog article or vice-versa? My blog goes over a lot of the same topics as yours and I feel we could greatly benefit from each
other. If you're interested feel free to send me an email.
I look forward to hearing from you! Terrific blog by
the way! ps4 https://bit.ly/3nkdKIi ps4 games

# Hello! I know this is kinda off topic however , I'd figured I'd ask. Would you be interested in exchanging links or maybe guest authoring a blog article or vice-versa? My blog goes over a lot of the same topics as yours and I feel we could greatly benef 2021/09/12 23:22 Hello! I know this is kinda off topic however , I'

Hello! I know this is kinda off topic however , I'd
figured I'd ask. Would you be interested in exchanging links or maybe guest authoring a
blog article or vice-versa? My blog goes over a lot of the same topics as yours and I feel we could greatly benefit from each
other. If you're interested feel free to send me an email.
I look forward to hearing from you! Terrific blog by
the way! ps4 https://bit.ly/3nkdKIi ps4 games

# Hello! I know this is kinda off topic however , I'd figured I'd ask. Would you be interested in exchanging links or maybe guest authoring a blog article or vice-versa? My blog goes over a lot of the same topics as yours and I feel we could greatly benef 2021/09/12 23:23 Hello! I know this is kinda off topic however , I'

Hello! I know this is kinda off topic however , I'd
figured I'd ask. Would you be interested in exchanging links or maybe guest authoring a
blog article or vice-versa? My blog goes over a lot of the same topics as yours and I feel we could greatly benefit from each
other. If you're interested feel free to send me an email.
I look forward to hearing from you! Terrific blog by
the way! ps4 https://bit.ly/3nkdKIi ps4 games

# Hello! I know this is kinda off topic however , I'd figured I'd ask. Would you be interested in exchanging links or maybe guest authoring a blog article or vice-versa? My blog goes over a lot of the same topics as yours and I feel we could greatly benef 2021/09/12 23:24 Hello! I know this is kinda off topic however , I'

Hello! I know this is kinda off topic however , I'd
figured I'd ask. Would you be interested in exchanging links or maybe guest authoring a
blog article or vice-versa? My blog goes over a lot of the same topics as yours and I feel we could greatly benefit from each
other. If you're interested feel free to send me an email.
I look forward to hearing from you! Terrific blog by
the way! ps4 https://bit.ly/3nkdKIi ps4 games

# If you wish for to obtain a good deal from this post then you have to apply such methods to your won webpage. quest bars https://www.iherb.com/search?kw=quest%20bars quest bars 2021/09/13 1:36 If you wish for to obtain a good deal from this po

If you wish for to obtain a good deal from this post then you have to apply such methods to your won webpage.

quest bars https://www.iherb.com/search?kw=quest%20bars quest bars

# If you wish for to obtain a good deal from this post then you have to apply such methods to your won webpage. quest bars https://www.iherb.com/search?kw=quest%20bars quest bars 2021/09/13 1:37 If you wish for to obtain a good deal from this po

If you wish for to obtain a good deal from this post then you have to apply such methods to your won webpage.

quest bars https://www.iherb.com/search?kw=quest%20bars quest bars

# If you wish for to obtain a good deal from this post then you have to apply such methods to your won webpage. quest bars https://www.iherb.com/search?kw=quest%20bars quest bars 2021/09/13 1:38 If you wish for to obtain a good deal from this po

If you wish for to obtain a good deal from this post then you have to apply such methods to your won webpage.

quest bars https://www.iherb.com/search?kw=quest%20bars quest bars

# If you wish for to obtain a good deal from this post then you have to apply such methods to your won webpage. quest bars https://www.iherb.com/search?kw=quest%20bars quest bars 2021/09/13 1:39 If you wish for to obtain a good deal from this po

If you wish for to obtain a good deal from this post then you have to apply such methods to your won webpage.

quest bars https://www.iherb.com/search?kw=quest%20bars quest bars

# Wow, that's what I was exploring for, what a stuff! existing here at this webpage, thanks admin of this site. 2021/10/26 20:37 Wow, that's what I was exploring for, what a stuff

Wow, that's what I was exploring for, what a stuff! existing here at this webpage, thanks admin of this site.

# Marvelous, what a webpage it is! This webpage provides valuable facts to us, keep it up. 2021/11/12 16:53 Marvelous, what a webpage it is! This webpage prov

Marvelous, what a webpage it is! This webpage provides valuable facts to us, keep it up.

# Marvelous, what a webpage it is! This webpage provides valuable facts to us, keep it up. 2021/11/12 16:54 Marvelous, what a webpage it is! This webpage prov

Marvelous, what a webpage it is! This webpage provides valuable facts to us, keep it up.

# Marvelous, what a webpage it is! This webpage provides valuable facts to us, keep it up. 2021/11/12 16:54 Marvelous, what a webpage it is! This webpage prov

Marvelous, what a webpage it is! This webpage provides valuable facts to us, keep it up.

# Marvelous, what a webpage it is! This webpage provides valuable facts to us, keep it up. 2021/11/12 16:55 Marvelous, what a webpage it is! This webpage prov

Marvelous, what a webpage it is! This webpage provides valuable facts to us, keep it up.

# doxycycline without prescription https://doxycyline1st.com/
doxycycline online 2022/02/26 0:08 Jusidkid

doxycycline without prescription https://doxycyline1st.com/
doxycycline online

# An impressive share! I've just forwarded this onto a co-worker who had been conducting a little homework on this. And he in fact bought me dinner due to the fact that I found it for him... lol. So let me reword this.... Thanks for the meal!! But yeah, t 2022/03/22 21:44 An impressive share! I've just forwarded this ont

An impressive share! I've just forwarded this onto a co-worker who had been conducting a little
homework on this. And he in fact bought me dinner due to the fact
that I found it for him... lol. So let me reword this....
Thanks for the meal!! But yeah, thanks for spending some time to talk about
this matter here on your website.

# clomid dosage https://clomiden.fun/ 2022/04/12 12:26 Clomids

clomid dosage https://clomiden.fun/

# prednisone 50 mg buy http://prednisonefast.site/ 2022/04/16 22:20 Prednisone

prednisone 50 mg buy http://prednisonefast.site/

# I pay a visit daily a few sites and sites to read posts, except this web site presents feature based posts. 2022/06/03 5:25 I pay a visit daily a few sites and sites to read

I pay a visit daily a few sites and sites to
read posts, except this web site presents feature based
posts.

# I pay a visit daily a few sites and sites to read posts, except this web site presents feature based posts. 2022/06/03 5:26 I pay a visit daily a few sites and sites to read

I pay a visit daily a few sites and sites to
read posts, except this web site presents feature based
posts.

# I pay a visit daily a few sites and sites to read posts, except this web site presents feature based posts. 2022/06/03 5:27 I pay a visit daily a few sites and sites to read

I pay a visit daily a few sites and sites to
read posts, except this web site presents feature based
posts.

# I pay a visit daily a few sites and sites to read posts, except this web site presents feature based posts. 2022/06/03 5:28 I pay a visit daily a few sites and sites to read

I pay a visit daily a few sites and sites to
read posts, except this web site presents feature based
posts.

# Heya i am for the first time here. I came across this board and I to find It really helpful & it helped me out a lot. I am hoping to offer one thing back and help others such as you aided me. 2022/06/06 7:50 Heya i am for the first time here. I came across t

Heya i am for the first time here. I came across this
board and I to find It really helpful & it helped me out a lot.

I am hoping to offer one thing back and help others such as you aided me.

# Thanks for finally writing about >綺麗じゃん、見た目。 ^^ <Loved it! 2022/06/06 11:42 Thanks for finally writing about >綺麗じゃん、見た目。 ^^

Thanks for finally writing about >綺麗じゃん、見た目。 ^^ <Loved it!

# Thanks for finally writing about >綺麗じゃん、見た目。 ^^ <Loved it! 2022/06/06 11:42 Thanks for finally writing about >綺麗じゃん、見た目。 ^^

Thanks for finally writing about >綺麗じゃん、見た目。 ^^ <Loved it!

# Thanks for finally writing about >綺麗じゃん、見た目。 ^^ <Loved it! 2022/06/06 11:43 Thanks for finally writing about >綺麗じゃん、見た目。 ^^

Thanks for finally writing about >綺麗じゃん、見た目。 ^^ <Loved it!

# This piece of writing is genuinely a good one it helps new internet people, who are wishing in favor of blogging. 2022/06/08 6:03 This piece of writing is genuinely a good one it h

This piece of writing is genuinely a good one it helps new internet people,
who are wishing in favor of blogging.

# This piece of writing is genuinely a good one it helps new internet people, who are wishing in favor of blogging. 2022/06/08 6:04 This piece of writing is genuinely a good one it h

This piece of writing is genuinely a good one it helps new internet people,
who are wishing in favor of blogging.

# This piece of writing is genuinely a good one it helps new internet people, who are wishing in favor of blogging. 2022/06/08 6:05 This piece of writing is genuinely a good one it h

This piece of writing is genuinely a good one it helps new internet people,
who are wishing in favor of blogging.

# Greetings I am so happy I found your website, I really found you by mistake, while I was browsing on Yahoo for something else, Nonetheless I am here now and would just like to say kudos for a incredible post and a all round exciting blog (I also love th 2022/06/08 12:24 Greetings I am so happy I found your website, I re

Greetings I am so happy I found your website, I really found you by mistake, while I was browsing on Yahoo for something else, Nonetheless I
am here now and would just like to say kudos for a incredible post and a all round exciting blog (I also love the theme/design), I don’t have time to go
through it all at the minute but I have bookmarked it and also added your RSS feeds, so when I have time I will be
back to read more, Please do keep up the great b.

# Helpful information. Fortunate me I found your web site by chance, and I'm stunned why this twist of fate didn't came about earlier! I bookmarked it. 2022/06/09 10:17 Helpful information. Fortunate me I found your web

Helpful information. Fortunate me I found your web site
by chance, and I'm stunned why this twist of fate didn't came about earlier!
I bookmarked it.

# What's up, just wanted to tell you, I liked this blog post. It was inspiring. Keep on posting! 2022/06/10 11:03 What's up, just wanted to tell you, I liked this b

What's up, just wanted to tell you, I liked this blog post.

It was inspiring. Keep on posting!

# I was suggested this website through my cousin. I'm no longer sure whether this publish is written by means of him as no one else realize such distinctive about my trouble. You are incredible! Thanks! 2022/07/07 6:31 I was suggested this website through my cousin. I'

I was suggested this website through my cousin. I'm no longer sure whether this publish is written by means of
him as no one else realize such distinctive about my
trouble. You are incredible! Thanks!

# generic clomiphene https://clomidonline.icu/ 2022/07/08 13:06 Clomidj

generic clomiphene https://clomidonline.icu/

# ivermectin rosacea before and after https://stromectolbestprice.com/ 2022/07/30 0:00 BestPrice

ivermectin rosacea before and after https://stromectolbestprice.com/

# We are a gaggle of volunteers and opening a new scheme in our community. Your website provided us with helpful info to work on. You have done a formidable activity and our entire group will be grateful to you. 2022/08/02 10:01 We are a gaggle of volunteers and opening a new sc

We are a gaggle of volunteers and opening a new scheme in our community.

Your website provided us with helpful info to work on.
You have done a formidable activity and our entire group will be grateful to you.

# Hurrah, that's what I was looking for, what a data! present here at this website, thanks admin of this site. 2022/08/03 14:06 Hurrah, that's what I was looking for, what a data

Hurrah, that's what I was looking for, what a data!

present here at this website, thanks admin of this site.

# cheapest prednisone no prescription https://deltasone.icu/
prednisone 10 mg brand name 2022/08/22 9:14 Prednisone

cheapest prednisone no prescription https://deltasone.icu/
prednisone 10 mg brand name

# non prescription ed pills https://ed-pills.xyz/
ed medications 2022/09/17 7:22 EdPills

non prescription ed pills https://ed-pills.xyz/
ed medications

# mens ed pills https://ed-pills.xyz/
erectile dysfunction drug 2022/09/17 19:27 EdPills

mens ed pills https://ed-pills.xyz/
erectile dysfunction drug

# bactrim no prescription https://antibiotic.best/ 2022/10/08 3:32 Antibiotic

bactrim no prescription https://antibiotic.best/

# I am regular visitor, how are you everybody? This piece of writing posted at this web page is in fact good. 2022/11/27 2:04 I am regular visitor, how are you everybody? This

I am regular visitor, how are you everybody? This piece of writing
posted at this web page is in fact good.

# doxycycline 500mg - https://doxycyclinesale.pro/# 2023/04/21 17:19 Doxycycline

doxycycline 500mg - https://doxycyclinesale.pro/#

# 1 mg prednisone daily - https://prednisonesale.pro/# 2023/04/22 4:36 Prednisone

1 mg prednisone daily - https://prednisonesale.pro/#

# over the counter health and wellness products https://overthecounter.pro/# 2023/05/08 23:03 OtcJikoliuj

over the counter health and wellness products https://overthecounter.pro/#

# erection pills: https://edpills.pro/# 2023/05/15 15:19 EdPillsPro

erection pills: https://edpills.pro/#

# treatments for ed https://edpill.pro/# - best pills for ed 2023/06/27 14:47 EdPills

treatments for ed https://edpill.pro/# - best pills for ed

# paxlovid pill https://paxlovid.store/
paxlovid price 2023/07/13 13:12 Paxlovid

paxlovid pill https://paxlovid.store/
paxlovid price

# paxlovid for sale https://paxlovid.life/# Paxlovid buy online 2023/07/25 20:32 Paxlovid

paxlovid for sale https://paxlovid.life/# Paxlovid buy online

# cytotec pills buy online https://cytotec.ink/# - buy cytotec pills 2023/07/26 14:26 PillsFree

cytotec pills buy online https://cytotec.ink/# - buy cytotec pills

# cheap erectile dysfunction pills online https://edpillsotc.store/# - cheapest ed pills online 2023/10/08 1:27 EdPills

cheap erectile dysfunction pills online https://edpillsotc.store/# - cheapest ed pills online

# farmaci senza ricetta elenco https://farmaciait.pro/ farmacia online senza ricetta 2023/12/04 10:21 Farmacia

farmaci senza ricetta elenco https://farmaciait.pro/ farmacia online senza ricetta

# ph sweetie fox https://sweetiefox.pro/ - sweetie fox
2024/03/06 22:13 SwitieFox

ph sweetie fox https://sweetiefox.pro/ - sweetie fox

タイトル
名前
URL
コメント