たまに「じゃんぬねっと」が生存確認をする日記

しょーもない日記

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  983  : 記事  4  : コメント  25175  : トラックバック  277

ニュース

My Website

初心者向けのサイトです。

C# と VB.NET の入門サイト

最近のできごと

昔給与について身の程も弁えず (←低学歴) ウダウダ文句言っていた愚かな私が、頑張っていたら年収が 4 桁万円 (残業はありません)。人生何があるかわかりません。


最高の配偶者、可愛い娘、ハンサムな息子と幸せな日々を送っています。



ゴリラ?そんなの飼っていません!
でも昔飼っていたじゃんと突っ込み受けるw

Sponsored Link1

Sponsored Link2

Archive

書庫

前回の記事で、VB6.0 で「Form の既定のインスタンス」を防ぐ方法について書きました。

VB2005 (VB8) で、Form の既定のインスタンス (Form の暗黙的なインスタンス化) が復活してしまったので、それを防ぐ方法を考えたいと思います。

デフォルトでは、以下のようにコードから「Form の既定のインスタンス」の実体である、My.Forms 配下にアクセスできます。

My.Forms (Form の既定のインスタンス) にアクセス可能

My.Forms (Form の既定のインスタンス) にアクセス可能

できれば「コンパイル解決」したいので、いっそ使えなくしてしまいましょう。vbproj ファイルを、テキスト エディタなどで開いてみてください。

変更前の vbproj ファイル

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.50727</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{????????-????-????-????-????????????}</ProjectGuid>
    <OutputType>WinExe</OutputType>
    <StartupObject>Sub Main</StartupObject>
    <RootNamespace>WindowsApplication1</RootNamespace>
    <AssemblyName>WindowsApplication1</AssemblyName>
    <MyType>WindowsForms</MyType>
    <MyType>WindowsFormsWithCustomSubMain</MyType>
  </PropertyGroup>

<PropertyGroup> 要素内に <MyType> 要素があります。<MyType> 要素の中身は、アプリケーション フレームワークが有効である場合は "WindowsForms" が、そうでない場合は "WindowsFormsWithCustomSubMain" が格納されています。この <MyType> 要素の中身を、次のように "Empty" に変えます。

Form の既定のインスタンスと My を防いだ状態の vbproj ファイル

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.50727</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{????????-????-????-????-????????????}</ProjectGuid>
    <OutputType>WinExe</OutputType>
    <StartupObject>Sub Main</StartupObject>
    <RootNamespace>WindowsApplication1</RootNamespace>
    <AssemblyName>WindowsApplication1</AssemblyName>
    <!-- <MyType>WindowsForms</MyType> -->
    <!-- <MyType>WindowsFormsWithCustomSubMain</MyType> -->
    <MyType>Empty</MyType>
  </PropertyGroup>

こうすることで、My 自体の使用を防ぐことができます。その結果、Form の既定のインスタンスの使用も防ぐことができるわけです。

My.Forms (Form の既定のインスタンス) にアクセス不可

My.Forms (Form の既定のインスタンス) にアクセス不可

My 自体の使用を禁じると、プロジェクトのプロパティにある「アプリケーション フレームワークを有効にする」が非活性になることに注意してください。

「アプリケーション フレームワークを有効にする」が非活性になる

「アプリケーション フレームワークを有効にする」非活性になる

Form の既定のインスタンスの使用だけを封じて、My が使用できるようにするには以下のようにします。ただし、この方法ですとコンパイル解決 (コンパイル時にチェック) することができません。

VB2005 - フォームの「既定のインスタンス」の使用を実行時に防ぐ

Option Strict On

Public Class Form2

    Public Sub New()
        ' この呼び出しは、Windows フォーム デザイナで必要です。
        Me.InitializeComponent()

        ' InitializeComponent() 呼び出しの後で初期化を追加します。
        AddHandler Me.HandleCreated, Addressof Form_HandleCreated
    End Sub

    Private Shared Sub Form_HandleCreated(ByVal sender As Object, ByVal e As System.EventArgs)
        If sender Is My.Forms.Form2 Then
            Throw New System.InvalidOperationException("既定のインスタンスを使用するんじゃあないッ!!")
        End If
    End Sub

End Class

既定のインスタンスと同一のインスタンスであった場合は、InvalidOperationException 例外をスローします。

引数 sender とのインスタンス比較に、My.Forms コレクション内のメンバを使っているのは、こちらの方が '型 (Form2)' との区別がついて見やすいからです。既定のインスタンスの実体 (Form2) は、My クラスの Forms コレクションのメンバ (My.Forms.Form2) と同一になります。

VB2005 (VB8) では、同じ型のインスタンス内から、フォームの既定のインスタンスを参照することができません。そのため、HandleCreated イベントのシグネチャが、共有メンバ (Shared メンバ) になっています。

これでは、わざわざすべての Form クラスに記述が必要になってしまい、実用的ではありません。ですから、次のようにリフレクションを使って実装した方が実用的であると言えます。リフレクションを使って動的にイベントを関連付けていますので、アセンブリ (プロジェクト) にどれだけフォームを追加したとしても問題ありません。

VB2005 - フォームの「既定のインスタンス」の使用を実行時に防ぐ (リフレクション版)

Option Strict On

Public Class Program

    ' エントリ ポイント
    <System.STAThread()> _
    Public Shared Sub Main()
        ' フォームの「既定のインスタンス」をすべて HandleCreated イベント ハンドラへ動的に追加
        AddHandlerFormsHandleCreated()

        ' アプリケーションを Form1 から開始する
        System.Windows.Forms.Application.Run(New Form1())
    End Sub

    ' すべての「既定のインスタンス」の HandleCreated イベントを設定
    Private Shared Sub AddHandlerFormsHandleCreated()
        Dim oType       As System.Type = GetType(My.MyProject.MyForms)
        Dim oProperties As System.Reflection.PropertyInfo() = oType.GetProperties()

        For Each oProperty As System.Reflection.PropertyInfo In oProperties
            Dim oObject As Object = oProperty.GetValue(My.MyProject.Forms, Nothing)

            If TypeOf oObject Is System.Windows.Forms.Form Then
                Dim oForm As System.Windows.Forms.Form = DirectCast(oForm, System.Windows.Forms.Form)
                AddHandler oForm.HandleCreated, AddressOf Forms_HandleCreated
            End If
        Next oProperty
    End Sub

    ' すべての「既定のインスタンス」の HandleCreated イベント
    Private Shared Sub Forms_HandleCreated(ByVal sender As Object, ByVal e As System.EventArgs)
        Throw New System.InvalidOperationException("既定のインスタンスが使用されました。")
    End Sub

End Class

VB の言語設計者は "フォームは、単一のインスタンスである場合が多い" ことを理由に「既定のインスタンス」を復活させました。しかし、どこからでもアクセスできるのは、(特にグループ開発のことを考えて) デメリットでもあるという点も考慮して欲しかったです。既定のインスタンスを設けること自体には、もはや反対はしませんが、プロジェクトのプロパティなどで「既定のインスタンスの使用を禁止する」というオプションがあっても良いのではないでしょうか?

Microsoft Connect : Visual Studio and .NET Framework (Product Feedback Center) に、以下のようなフィードバックがあります。

Do not re-introduce the default instance of a Form! (microsoft.com) からの引用

The removal of the default instance in the initial versions of .NET was a bold move, but one that *should* have been done.
So why re-introduce them ?
They helped a little in getting newbies started, but this caused no end of hard-to-debug problems later on, and a lot of professional developers generally attempt to remove any use of them when touching the resulting code, or refuse to touch the code altogether.

意訳しますと「既定のインスタンスを再導入しないでください!!」と訴えているわけですね。さらには、255 人もの方が高いレートで Vote しています。(平均 4.62 Rate)

これとは別に「プロジェクトのプロパティなどで '既定のインスタンスの使用を禁止する' というオプションを設けてください」というフィードバックをしようかと迷っています。皆さん、投票してくれるでしょうか... (;^-^)

投稿日時 : 2006年10月26日 9:45

コメント

# re: VB2005 で Form の「既定のインスタンス」(暗黙のインスタンス化) を防ぐには? 2006/10/26 10:25 まどか
まったくもって、「インスタンス」の概念が脳から消え去るので、禁止派ですが
回避する方法を考えてみたものの、脳が大混乱しますね。。。

オプションもいいけど、異なるスコープで使用されていたら警告出すとか。
馬の耳に念仏か。

# re: VB2005 で Form の「既定のインスタンス」(暗黙のインスタンス化) を防ぐには? 2006/10/26 10:28 じゃんぬ
>まどか さん
"異なるスコープで使用されていたら" とは、何でしょうか?
もともと同クラス内では、Me しか使えませんよ。
それ以外のところがすべて NG だとすれば、完全禁止と同義です。

# re: VB2005 で Form の「既定のインスタンス」(暗黙のインスタンス化) を防ぐには? 2006/10/26 16:29 まどか
あ、スコープという言葉がまずいですね。。。
プロシージャ内のように閉じられた世界ではなくあっちゃこっちゃで使ってたら
「正しく動作しないかもよ」っていう警告です。
って閉じられた世界もへったくれも無いですね。>よく考えたら意味無い

# re: VB2005 で Form の「既定のインスタンス」(暗黙のインスタンス化) を防ぐには? 2006/10/26 19:37 未記入
暗黙のインスタンス化が嫌いでC#を選ぶ人が増えそうだね。

# re: VB2005 で Form の「既定のインスタンス」(暗黙のインスタンス化) を防ぐには? 2006/10/26 20:06 R・田中一郎
僕も、オプションを設けるというのが最も良い妥協点だと思います。
結局 VB は、裾野の広い言語でいたいということなのでしょうから。

# re: VB2005 で Form の「既定のインスタンス」(暗黙のインスタンス化) を防ぐには? 2006/10/26 21:55 うじはら
暗黙のインスタンス化は、VB6 からの移行が順調に進まないため、互換性を高めることが最大の目的なのでしょう。また、小さいプログラムの場合は、こちらの方が便利なように思います。
VBは、C++やJavaのような強い型付けの言語ではなく、PerlやPythonのような言語を目指しているように見えます。C# と構文だけ異なると揶揄されるような言語では、将来、存在意義が問われますからね。

# re: VB2005 で Form の「既定のインスタンス」(暗黙のインスタンス化) を防ぐには? 2006/10/26 22:19 じゃんぬ
> VBは、C++やJavaのような強い型付けの言語ではなく、
> PerlやPythonのような言語を目指しているように見えます。

そんなことはないと思いますよ。
Option Strict の存在からして両方できるという広さが目標でしょう。

> C# と構文だけ異なると揶揄されるような言語では、
> 将来、存在意義が問われますからね。

まともに使っているとすれば、それでも良いと思います。
VB のクセがついてしまうと、これはこれで良いと思えるものです。
今なら、COM Interop 系が得意というおまけはありますが。

# re: VB2005 で Form の「既定のインスタンス」(暗黙のインスタンス化) を防ぐには? 2006/10/27 14:42 NAKA Hirotoshi.
> VBは、C++やJavaのような強い型付けの言語ではなく、
> PerlやPythonのような言語を目指しているように見えます。

あんまりそんな風に考えてるとC#もあっさり変わってがっくりくるよ。
スタティックな、ダイナミックな、ファンクショナルなすべての方向に翼を広げていくことは明白。

# re: VB2005 で Form の「既定のインスタンス」(暗黙のインスタンス化) を防ぐには? 2006/10/27 16:44 かるあ
> これとは別に「プロジェクトのプロパティなどで '既定のインスタンスの使用を禁止する' というオプションを設けてください」というフィードバックをしようかと迷っています。
> 皆さん、投票してくれるでしょうか... (;^-^)

投票します。


# re: VB2005 で Form の「既定のインスタンス」(暗黙のインスタンス化) を防ぐには? 2006/10/29 23:24 アクア
かるあさんに同じく。

# Form の「既定のインスタンス」を禁止できるオプションが欲しい 2006/11/16 10:43 じゃんぬねっと日誌
Form の「既定のインスタンス」を禁止できるオプションが欲しい

# re: VB2005 で「Form の既定のインスタンス」と My の使用を防ぐには? 2006/12/31 17:31 ハッカ飴
否定だけで代替案が示されないと
それで?
という印象しか受けません。
フォームのインスタンス数を制限したい場合はどうするのでしょう。
シングルトンの実装も併記されてはいかがでしょうか。

# re: VB2005 で「Form の既定のインスタンス」と My の使用を防ぐには? 2007/01/01 23:05 じゃんぬねっと
どうも、記事の内容が理解されていないようです。

> 否定だけで代替案が示されないと
> それで?
> という印象しか受けません。
普通、'良くない' と思うことを改善するにあたり、代替案など設けません。
既定のインスタンス自体が望ましくない場合というテーマですから、代替案というのはヘンでしょう。
(何のための対策なのか、理解されていないのではないでしょうか)

> フォームのインスタンス数を制限したい場合はどうするのでしょう。
個人的には「制限したい」という設計自体がいかがなものかと思います。
それとも、シングルトンという意味でしょうか。(でしたら、単一のインスタンスと書きましょう)

> シングルトンの実装も併記されてはいかがでしょうか。
デザイン パターンがすべて良いものであると考えているのでしょうか?
デザイン パターンの中には、グループ開発上 (業務アプリケーション上) 苦肉の策で設けているパターンも存在します。
シングルトンもその中のひとつと言われていますし、私もそう考えています。

というより、、、'ここまでの内容が正しいか間違っているかを抜きに考えても' ですが、

『シングルトンで代用するくらいならば、
 '最初から' 既定のインスタンスを使えば良いでしょう。』

と、声を大にして言いたくなるようなご発言で、記事の内容をご理解していないと判断せざるをえません。

# re: VB2005 で「Form の既定のインスタンス」と My の使用を防ぐには? 2007/01/05 23:26 なんか。。。
頭の悪い人が1人紛れ込んだみたいですね。
無知なのは悪いことじゃないですが、無知なゆえ本質が理解できず「それで?」というのは、失礼極まりないでしょう。
そんな相手にまで、わざわざ説明するなんてお優しいですね。

# re: VB2005 で「Form の既定のインスタンス」と My の使用を防ぐには? 2007/01/16 22:01 こんなところにまで・・
ハッカ飴って有名なキチガイですよ。
相手にしちゃダメです。

# re: VB2005 で「Form の既定のインスタンス」と My の使用を防ぐには? 2007/02/20 17:35 すけけん
VB2005を勉強しているものです。
「Form の既定のインスタンス」を無効にするもうひとつの方法を見つけました。

vbprojファイル内の
<MyType>WindowsForms</MyType>
の部分はそのままで
同じ<PropertyGroup>要素内に以下を追加

<DefineConstants>_MyType="Custom",_MYAPPLICATIONTYPE="WindowsForms",_MYCOMPUTERTYPE="Windows",_MYUSERTYPE="Windows",_MYFORMS=false</DefineConstants>

これでMy.Formsが無効になり、アプリケーション フレームワークを有効にする」が非活性になりませんでした。
これってどうですかね?

# re: VB2005 で「Form の既定のインスタンス」と My の使用を防ぐには? 2007/02/20 18:22 じゃんぬねっと
>すけけん さん
これは知らなかったです。
ピンポイントで My.Forms をターゲットにしているのは良いですね!
こちらの方が効果がわかりやすいです。

このネタを使わせて頂けないでしょうか?
よろしくお願いします。

# re: VB2005 で「Form の既定のインスタンス」と My の使用を防ぐには? 2007/02/20 18:43 すけけん
早速の返答ありがとうございます。

ぜひ使ってください!

今VB2005を勉強していて、丁度My名前空間についてやっていて発見して、思わず投稿しましたw

# re: VB2005 で「Form の既定のインスタンス」と My の使用を防ぐには? 2007/02/20 18:59 じゃんぬねっと
>すけけんさん
ありがとうございます。

しかし、これは偶然発見できるようなものでもなさそうですよね。
ピンポイントで調べないとなかなか...

# re: VB2005 で「Form の既定のインスタンス」と My の使用を防ぐには? 2007/02/20 20:42 すけけん
はい、偶然みつけたってわけではないです。
説明するとちょっと長いですが。。

VisualBasic2005言語編(下)のMy名前空間について載っている章があり、
その中で、コンパイル定数によるカスタマイズというのを読みました。

そこには詳細コンパイルオプションのコンパイル定数のカスタム定数に<DefineConstants>タグでくくった文字列を設定するとカスタマイズできるとなっていました。

あいにく、自分の環境がExpressEditionで試せなかったため、.NET2003のカスタム定数にあたるDefineConstantsをvb2005のプロジェクトファイルに追加したらできましたw

なのでExpressEdition以外ならもっと簡単にできるかもしれません。

# re: VB2005 で「Form の既定のインスタンス」と My の使用を防ぐには? 2007/02/21 9:12 じゃんぬねっと
コンパイル オプションのカスタム定数に書き込めば OK みたいですね。
IDE から設定できるとなると、より一層重宝しそうです。

# re: VB2005 で「Form の既定のインスタンス」と My の使用を防ぐには? 2007/02/21 9:33 じゃんぬねっと
このままですと、My.WebServices が使用できないようなのでちょっと調べてみました。
カスタム定数に _MyWebServices=True も加えることで My.Forms だけを封じることができそうです。

ということで、これで紹介させて頂きますね。

_MyType="Custom",
_MyApplicationType="WindowsForms",
_MyComputerType="Windows",
_MyUserType="Windows",
_MyForms=False,
_MyWebServices=True

# re: VB2005 で「Form の既定のインスタンス」と My の使用を防ぐには? 2007/02/21 9:52 すけけん
My.WebServicesまで気が回ってませんでした(^^;

_MyType="Custom"とした場合、
他を省略するとそれに該当するオブジェクトが
作られなくなるみたいですね。
なので

_MyType="Custom",
_MyApplicationType="WindowsForms",
_MyComputerType="Windows",
_MyUserType="Windows",
_MyWebServices=True

これでもでいけました。

よろしくお願いいたします。

# re: VB2005 で「Form の既定のインスタンス」と My の使用を防ぐには? 2007/02/21 10:03 じゃんぬねっと
お返事ありがとうございます。

> これでもでいけました。

そうですね、省略すると False になるみたいですね。
一応明示的にという意味で、False と書いた方が良いかもしれません。

# VB のコーディング規約 (標準) に意義あり 2007/03/22 10:20 じゃんぬねっと日誌
VB のコーディング規約 (標準) に意義あり

# re: どうにもVBが好きになれない 2008/06/04 19:16 東方算程譚
re: どうにもVBが好きになれない

# tajuPfquYYeKZnj 2014/08/07 8:14 http://crorkz.com/
EUxXgr Thanks for sharing, this is a fantastic blog post.Really looking forward to read more. Fantastic.

# gFuocrVNDATPF 2018/12/17 12:10 https://www.suba.me/
5p0PSG This site really has all of the information I needed about this subject and didn at know who to ask.

# OdfWuUhQahctjMag 2018/12/20 4:32 https://www.suba.me/
lK1wt0 I truly appreciate this blog post. Will read on...

# XBzVOoEEDYWBIa 2018/12/24 22:22 https://articulos.ml/blog/view/86618/opt-to-pass-t
Wow, great article.Much thanks again. Keep writing.

# ubvBaNNQdRZywgWrErJ 2018/12/27 6:45 http://yyzsschool.com.13430.m8849.cn/member.asp?ac
You ave made some decent points there. I looked on the internet for additional information about the issue and found most people will go along with your views on this site.

# CpvDmWrhKDAnfC 2018/12/27 8:27 https://successchemistry.com/
Im grateful for the article post. Fantastic.

# tLgESrxhBxLnjA 2018/12/27 10:06 http://bood.com/__media__/js/netsoltrademark.php?d
You made some really good points there. I checked on the internet for more info about the issue and found most people will go along with your views on this web site.

# bTwSkboPdePzRet 2018/12/27 21:01 http://gallonwall35.thesupersuper.com/post/various
Merely wanna say that this is handy , Thanks for taking your time to write this.

# RlqPHbTyTBZWiaP 2018/12/27 21:08 http://depositfiles.com/files/mwvavw3tj
motorcycle accident claims What college-university has a good creative writing program or focus on English?

# UDeVgjMSBzlf 2018/12/27 22:26 http://www.anthonylleras.com/
You have made some good points there. I checked on the internet to find out more about the issue and found most individuals will go along with your views on this web site.

# hUZvZBmGJWuqQe 2018/12/28 0:52 http://www.talkmarkets.com/member/sahilroberts/blo
Would appreciate to constantly get updated great blog !.

# PGPhaXkvoFWZmMLtB 2018/12/28 2:00 http://atcarpome.mihanblog.com/post/comment/new/29
I truly appreciate this post. I have been looking all over for this! Thank goodness I found it on Bing. You have made my day! Thanks again!

# FmmhRQxIdQApKEO 2018/12/28 6:38 https://www.teawithdidi.org/members/locustbeard56/
Thanks a bunch for sharing this with all of us you actually know what you are talking about! Bookmarked. Kindly also visit my web site =). We could have a link exchange arrangement between us!

# lGPKXFHhPakUXcqZea 2018/12/28 13:48 http://sleepaccessories.pw/story.php?id=4085
Perfectly written written content, Really enjoyed looking at.

# JUslwESMrrzKV 2018/12/28 14:04 http://beautaholic.club/story.php?id=5573
Your content is valid and informative in my personal opinion. You have really done a lot of research on this topic. Thanks for sharing it.

# UteSjepYmdGJ 2018/12/28 14:43 http://www.aimcapital.biz/__media__/js/netsoltrade
like to read it afterward my links will too.

# ppPVplLjVWovJx 2018/12/29 2:47 http://3almonds.com/hamptonbaylighting
The best and clear News and why it means a great deal.

# bVzzpjkAkCjTMlBV 2018/12/29 7:37 https://foursquare.com/user/520838322/list/great-t
This is a topic that as close to my heart Best wishes! Exactly where are your contact details though?

# lKlAgiHSVXfeqtsVw 2018/12/29 10:25 https://www.hamptonbaylightingcatalogue.net
It as very effortless to find out any matter on web as compared to books, as I found this paragraph at this web page.

# sjhXwEUydYrDkaPaXX 2018/12/31 4:57 http://agendatarget9.odablog.net/2018/12/30/blacks
This website is really good! How can I make one like this !

# LiKOqrDLNaMfWiCS 2018/12/31 5:36 http://www.magcloud.com/user/shortsbase6
You made some decent points there. I looked on the web to find out more about the issue and found most individuals will go along with your views on this web site.

# xKuZUTXRNXLokSDQRo 2018/12/31 22:46 http://ws.ino.ir/UserProfile/tabid/43/UserID/42756
This blog was how do you say it? Relevant!! Finally I ave found something which helped me. Cheers!

# vfGZpmlcGCUxO 2019/01/03 1:11 http://images.google.co.uk/url?q=https://www.talkm
veux garder ta que le monde tot il marchait, je ne

# FlTBdzqlRa 2019/01/05 13:41 https://www.obencars.com/
What as up mates, how is all, and what you wish for to say concerning this article, in my view its genuinely amazing designed for me.

# NShzTSIQLIIxaPNb 2019/01/06 4:01 https://changevoyage3.planeteblog.net/2019/01/05/t
This blog post is excellent, probably because of how well the subject was developped. I like some of the comments too though I would prefer we all stay on the suject in order add value to the subject!

# GKwBJgwyFpj 2019/01/06 6:41 http://eukallos.edu.ba/
Looking forward to reading more. Great article post.Much thanks again. Want more.

# aucruektcNNJgYHJj 2019/01/07 7:02 https://status.online
It as difficult to find experienced people about this topic, however, you sound like you know what you are talking about! Thanks

# SIbFMhFmotE 2019/01/07 23:57 https://www.youtube.com/watch?v=yBvJU16l454
Thanks for sharing, this is a fantastic post. Keep writing.

# iORYPJRkNPyo 2019/01/10 0:53 https://www.youtube.com/watch?v=SfsEJXOLmcs
Thanks for another wonderful article. Where else could anyone get that type of information in such a perfect way of writing? I ave a presentation next week, and I am on the look for such information.

Thanks-a-mundo for the post.Thanks Again. Great.

# nWkkOxLavVqD 2019/01/11 5:37 http://www.alphaupgrade.com
Wow, incredible weblog format! How lengthy are you currently blogging pertaining to? you made blogging glimpse easy. The full look of your respective website is excellent, let alone the content!

# fLkfvrDoMfzGdS 2019/01/12 4:10 https://www.youmustgethealthy.com/
Im grateful for the article.Thanks Again.

# lWDFwfJzqrscT 2019/01/15 7:22 http://nemoadministrativerecord.com/UserProfile/ta
This blog was how do you say it? Relevant!! Finally I ave found something that helped me. Kudos!

# FaDnKyTuIGIGmZ 2019/01/15 13:22 https://www.roupasparalojadedez.com
It as not that I want to replicate your web page, but I really like the pattern. Could you tell me which design are you using? Or was it tailor made?

# QDLXqFbdBhAt 2019/01/15 15:26 http://odbo.biz/users/MatPrarffup337
Perfect piece of work you have done, this site is really cool with great information.

# ZAeaTHtMOixnrJQoxfa 2019/01/15 18:51 https://bottlepalm7.asblog.cc/2019/01/14/hampton-b
Major thankies for the article post. Much obliged.

# LdWxtEgXSAzSRBpOE 2019/01/15 19:31 http://www.planetrecyclingphoenix.com/
This is a topic close to my heart cheers, where are your contact details though?

# dsBYXydSXiOM 2019/01/17 0:05 http://chkpz.ru/bitrix/redirect.php?event1=&ev
This blog is obviously educating and also factual. I have discovered helluva useful stuff out of this blog. I ad love to go back every once in a while. Cheers!

Your style is really unique compared to other people I ave read stuff from. Thanks for posting when you ave got the opportunity, Guess I will just book mark this site.

# LoZDtcofbWUJYxLfLf 2019/01/17 8:16 https://visual.ly/users/nfordixiquals/account
Im thankful for the blog post.Really looking forward to read more.

# gueZtjxZSEaJosvnmT 2019/01/17 10:45 http://bookmarkbird.xyz/story.php?title=estate-age
Your style is very unique in comparison to other folks I ave read stuff from. I appreciate you for posting when you have the opportunity, Guess I will just book mark this site.

# GtKrfEyYlmSjJsySW 2019/01/21 22:32 https://betadeals.com.ng/user/profile/2488617
magnificent points altogether, you just won a new reader. What might you recommend in regards to your post that you made a few days ago? Any sure?

# OkpTprEcOcLtQm 2019/01/23 1:04 http://corktrade44.desktop-linux.net/post/organic-
You can certainly see your expertise in the work you write. The sector hopes for even more passionate writers such as you who are not afraid to say how they believe. At all times go after your heart.

# rjDKWLdzkPyz 2019/01/23 3:12 http://examscbt.com/
Looking forward to reading more. Great article.Really looking forward to read more. Awesome.

# RRutbTDcGEUBRfGC 2019/01/23 8:05 http://forum.y8vi.com/profile.php?id=286570
wow, awesome blog.Really looking forward to read more. Really Great.

# ravdjKlRWskW 2019/01/24 0:38 https://www.mixcloud.com/tracilthiner/
Some really excellent info, Gladiola I noticed this.

# nmlAbPXyTKLxWbGeFYa 2019/01/24 4:57 http://my.ipdatainfo.com/www/www.lambrettaclubcamp
It as hard to find experienced people on this subject, however, you seem like you know what you are talking about! Thanks

# wlrMkglpOFpMDdxC 2019/01/24 19:31 http://diggo.16mb.com/story.php?title=kickboxing#d
Thanks for sharing this very good write-up. Very inspiring! (as always, btw)

# gJqNRHlfPrtMp 2019/01/24 23:00 http://www.organicchemistryonline.com/__media__/js
It'а?s really a great and helpful piece of information. I'а?m glad that you just shared this helpful information with us. Please stay us up to date like this. Thanks for sharing.

# tuHItRlrAZQJciUs 2019/01/26 0:59 https://www.elenamatei.com
In my opinion, if all webmasters and bloggers made good content as you did, the net will be much more useful than ever before.

There is definately a great deal to know about this issue. I really like all the points you have made.

# HGbYzgoXuHxDEMdE 2019/01/26 17:25 https://www.womenfit.org/
you might have a terrific blog here! would you wish to make some invite posts on my blog?

# VyyXEYuJAnSPPkbX 2019/01/28 23:15 http://www.crecso.com/category/technology/
thoroughly mixed. Promotional merchandise is a great approach to advertise your organization.

# oqpCGwUBWZREV 2019/01/29 3:51 https://www.hostingcom.cl/hosting
I'а?ve learn several just right stuff here. Certainly value bookmarking for revisiting. I wonder how much attempt you place to create this type of great informative site.

# BffJooDTIntjSKH 2019/01/30 22:52 http://bgtopsport.com/user/arerapexign953/
Ridiculous story there. What happened after? Thanks!

# uQBtTZsKRCZdNV 2019/01/31 19:19 http://en.clubcooee.com/users/view/drovaalixa
Its hard to find good help I am regularly saying that its difficult to get quality help, but here is

# dKyFIlJPNKyQvCO 2019/02/01 18:51 https://tejidosalcrochet.cl/como-hacer-crochet/ide
Yeah bookmaking this wasn at a high risk conclusion great post!

# XdDMhIHiuydzaiKFPD 2019/02/02 19:00 http://adep.kg/user/quetriecurath205/
publish upper! Come on over and consult with my website.

# SVrelJLYKZYwynxfA 2019/02/03 1:06 https://500px.com/robertgibson569
Thanks-a-mundo for the article post.Thanks Again. Great.

Really wonderful information can be found on web blog.

# hDagWdZzBBM 2019/02/03 20:59 http://court.uv.gov.mn/user/BoalaEraw785/
your posts more, pop! Your content is excellent but with pics and videos, this site could definitely be one of the best

# NOnptOWkWTNRmZBhxnh 2019/02/04 18:01 http://www.sla6.com/moon/profile.php?lookup=260995
You may surely see your skills in the paintings you create. The arena hopes for all the more passionate writers like you who are not afraid to say how they think. Generally go soon after your heart.

# BrxMLbnUWYJDVh 2019/02/05 1:47 https://plus.google.com/117617158048695374236/post
to a famous blogger if you are not already

# XOEhoewEkwuCdrxFfKV 2019/02/05 6:48 http://www.anobii.com/groups/0195c6402be57e3c90/
The Spirit of the Lord is with them that fear him.

# DHouanNbGezCP 2019/02/05 16:18 https://www.highskilledimmigration.com/
wander. Final tug in the class was St. Lately it has been immaculately assembled

# CMthjsipytLvqyQqKbD 2019/02/05 21:18 http://www.aimfundscanada.biz/__media__/js/netsolt
I was suggested this website by my cousin. I am not sure whether this post is written by him as nobody else know such detailed about my trouble. You are amazing! Thanks!

# lCrBNLyWseWVVYp 2019/02/06 2:04 http://fanblogs.jp/americaiitokodori/archive/23/0?
Saved as a favorite, I really like your web site!

# ADhSDzuVjOFKTh 2019/02/06 6:39 http://www.perfectgifts.org.uk/
Thanks again for the blog post.Thanks Again. Want more.

# bKzGtkmKFWYzNgYz 2019/02/06 9:26 http://xn--b1adccaenc8bealnk.com/users/lyncEnlix15
What as up, I read your new stuff regularly. Your writing style is witty, keep it up!

# kElzGpnvirneoYAZ 2019/02/07 3:13 http://mygoldmountainsrock.com/2019/02/05/bandar-s
Respect to website author , some good entropy.

# WiFGUTEXIOvPb 2019/02/07 5:34 https://www.abrahaminetianbor.com/
It is actually difficult to acquire knowledgeable folks using this subject, but the truth is could be observed as did you know what you are referring to! Thanks

# IsdWlhIASMmv 2019/02/07 16:43 https://drive.google.com/file/d/1PWBkmGM-iVarl94Xq
This blog is really educating additionally amusing. I have discovered many handy tips out of this amazing blog. I ad love to come back again and again. Cheers!

# tFoLGxDhnqJMrB 2019/02/07 19:04 http://steelcongress.ru/excited-about-a-fast-handj
would have to pay him as well as enabling you to make sharp cuts.

spelling on several of your posts. A number of them are rife

# PrNfCRfONlLiNOgCe 2019/02/07 23:47 https://oms.umn.edu/redirect.php?q=http://webboard
Thanks for sharing, this is a fantastic blog. Fantastic.

# gxcrXLPVrdvJH 2019/02/08 17:12 http://sport-news.world/story.php?id=5819
Perfect work you have done, this internet site is really cool with great info.

used to be a amusement account it. Glance complex to more added agreeable

# QzveISMRKUUdFmIiZy 2019/02/09 0:30 https://ask.fm/vittrup71vittrup
It as wonderful that you are getting ideas from this paragraph as well as from our argument made at this place.

# QhVrpmhPrYRAkMjeHq 2019/02/12 1:01 https://www.openheavensdaily.com
Major thankies for the article.Really looking forward to read more. Keep writing.

You made some decent points there. I appeared on the internet for the issue and found most individuals will go along with with your website.

# pDIKZYxhgTlKYtrF 2019/02/12 14:14 https://uaedesertsafari.com/
read!! I definitely really liked every little bit of it and

# gOAZfFjNsVspuMkzXq 2019/02/12 18:44 https://www.youtube.com/watch?v=bfMg1dbshx0
Yay google is my queen assisted me to find this great internet site!.

# mvfnBxXJmYF 2019/02/13 21:42 http://www.robertovazquez.ca/
This is a really good tip especially to those fresh to the blogosphere. Short but very precise information Thanks for sharing this one. A must read post!

# foBIKeWCODgpHt 2019/02/14 4:17 https://www.openheavensdaily.net
I truly appreciate this blog article.Much thanks again. Great.

# rytlLHEFWZNnpnAWg 2019/02/15 10:01 http://itaes.edu.mx/geeklog/users.php?mode=profile
Right here is the perfect webpage for everyone who would like to understand this topic.

# ljOkIbdGkMpSdHH 2019/02/15 21:37 https://puppycrack60.hatenablog.com/entry/2019/02/
Looking forward to reading more. Great blog post.Thanks Again. Want more.

# opxCkKwaLzW 2019/02/19 1:45 https://www.facebook.com/&#3648;&#3626;&am
very couple of internet sites that occur to become detailed below, from our point of view are undoubtedly properly worth checking out

# zaArvFBfTezVehC 2019/02/20 16:40 https://www.instagram.com/apples.official/
This is one awesome post.Really looking forward to read more. Will read on...

JAPAN JERSEY ??????30????????????????5??????????????? | ????????

# pcYYnRDsBAYNcSDB 2019/02/22 20:39 https://dailydevotionalng.com/
This blog is really cool and besides diverting. I have picked many useful tips out of this source. I ad love to come back again soon. Thanks a bunch!

Post Feedback

タイトル
名前
Url:
コメント: