c++ custom object serialization

C ++에서의 직렬화 구현

 , 2012 년 11 월 26 일
C ++ 직렬화 구현

이메일 주소는 괜찮습니까? 귀하는 뉴스 레터에 가입했으나 귀하의 이메일 주소는 확인되지 않았거나 오랜 기간 재확인되지 않았습니다. 제발 클릭 여기에 확인 이메일이 전송 가지고 우리가 당신의 이메일 주소를 확인하고 다시 당신에게 뉴스 레터를 보내 시작할 수 있습니다. 또는 구독을 업데이트 할 수 있습니다 .
우리는 우리의 C ++ 객체가 영속성을 유지하기를 바랍니다.
모든 객체는 ‘상태’를 파일에 저장하고 프로세스가 시작될 때 읽는 방법을 알아야하므로 중단 된 부분부터 계속할 수 있습니다.
그러나 C ++의 직렬화 구현은 (C #과 달리) 사소한 것이 아니며 우리 모두가 의존하기를 원하지 않습니다
MFC 프레임 워크 또는 부스트 직렬화 (어떤 템플릿을 사용하여 거대한 실행 파일을 만들 수 있습니다!).
다음은 직렬화 구현에 대한 요점입니다.
1. 복제 가능한 객체에 대한 추상 클래스가 있어야합니다.
2. 클래스 이름을 가진 복제 가능한 객체를 만드는 팩토리 클래스가 있어야합니다.
(힌트 : 싱글 톤 구현 사용).
3. 템플릿을 전혀 사용할 필요가 없습니다!
4. C ++에 정적 생성자가 없기 때문에 클래스를 자동으로 factory에 등록하는 것은 쉽지 않습니다.
이 작업은 클래스에 정적 멤버를 추가하는 매크로로 수행 할 수 있습니다.
5. 객체를 어디에 저장했는지 모르기 때문에 추상 Archive 클래스가 있어야합니다.
(파일, 파이프, 메모리 ..).
6. auto_ptr을 사용하여 직렬화가 실패하거나 예외가 발생할 경우 오브젝트를 삭제하십시오.
다음은 직렬화를위한 간단하지만 완전한 구현 프레임 워크입니다 . 파일 설명 :

  • Dynamics.h – 복제 가능한 컬렉션의 싱글 톤 구현.
  • Persistent.h / .cpp – Dynamics.h를 사용하는 직렬화 구현.

Dynamics.h :
먼저 복제 가능한 모든 객체에 대한 기본 클래스를 선언합니다. 모든 복제 가능한 클래스는 ‘Clonable’에서 파생되고 createObj메소드를 구현해야합니다 . createObj클래스의 새 객체를 반환해야합니다.

class Clonable
{
public:
    virtual ~Clonable() {}
    virtual Clonable* createObj() const = 0;
};

복제 가능한 객체의 컬렉션을 선언해야합니다. 이름을 주면 모든 복제 가능한 클래스의 인스턴스를 만들 수 있어야합니다.
예 :

string className = "MyComplexClass";
Clonable* instance = Clonables::Instance().create(className);
MyComplexClass* pCmplx = dynamic_cast<MyComplexClass*>(instance);

아래는 Cloneable 컬렉션 클래스입니다. 싱글 톤 구현에 주목하십시오.

class Clonables {
private:
    typedef map<string, const Clonable*> NameToClonable;
    NameToClonable __clonables;
private:
    Clonables() {}
    Clonables(const Clonables&);                 // Prevent copy-construction
    Clonables& operator=(const Clonables&);      //  Prevent assignment
    ~Clonables()
    {
        for(NameToClonable::const_iterator it = __clonables.begin(); it != __clonables.end(); it++){
            const Clonable* clone = it->second;
            delete clone;
        }
        __clonables.clear();
    }
public:
    static Clonables& Instance()
    {
        static Clonables instance;   // Guaranteed to be destroyed.                              
        return instance;    // Instantiated on first use.
    }
public:
    void addClonable(const char* className, const Clonable* clone)
    {
        string name = className;
        NameToClonable::const_iterator it = __clonables.find(name);
        if(it == __clonables.end()) {
            __clonables[name] = clone;
        }
    }
    Clonable* create(const char *className)
    {
        string name = className;
        NameToClonable::const_iterator it = __clonables.find(name);
        if(it == __clonables.end()) return NULL;
        const Clonable* clone = it->second;
        return clone->createObj();
    }
};

'<code>Clonables복제 가능한 파생 클래스는 ‘(우리의 복제 가능한 컬렉션)에 등록 할 수 있도록 다음 클래스의 정적 멤버를 추가 할 수 있습니다 .

class AddClonable {
public:
    AddClonable(const char* className, const Clonable* clone){
        Clonables::Instance().addClonable(className, clone);
    }
};

Persist.h :
우리는 우리의 끈질긴 사물이 어디에 저장 될지 확신하지 못합니다. 따라서 우리는 스트리밍을위한 기본 클래스 (저장 및로드 지원 포함)를 구현해야합니다. 아카이브는 파일이나 파이프 또는 객체를 저장하는 모든 것이 될 수 있습니다.

class Archive
{
private:
    bool _isStoring;
public:
    Archive(bool isStoring = true) : _isStoring(isStoring) {}
    virtual ~Archive() {}
    virtual void write(const void* buffer, size_t length) {}
    virtual void read(void* buffer, size_t length) {}
    Archive& operator<<(const string& str);
    Archive& operator>>(string& str);
    Archive& operator<<(int val);
    Archive& operator>>(int& val);
    bool isStoring() const { return _isStoring; }
    void setDirection(bool isStoring) { _isStoring = isStoring; }
};

STL iostream을 사용하는 특정 ‘Archive’클래스를 정의합시다.

class ArchiveFile: public Archive
{
private:
    iostream* _stream;
public:
    ArchiveFile(iostream* stream) : _stream(stream) {}
    virtual ~ArchiveFile() {}
    virtual void write(const void *buffer, size_t length);
    virtual void read (void* buffer, size_t length);
};

Persistent 클래스는 아래의 ‘Persistent’클래스에서 파생되고 ‘serialize’메소드를 구현합니다.
영속 객체는 또한 복제 가능 객체입니다.

class Persistent : public Clonable
{
public:
    virtual ~Persistent() {}
    static Persistent* load(Archive& stream);
    void store(Archive& stream) const;
protected:
    virtual void serialize(Archive& stream) {}
    virtual int version() const { return 0; }
};

우리는이 방법의 자동 구현 createObj과 자동 등록을 원합니다.
우리 클래스의 복제물 컬렉션에. 이것은 다음의 매크로 declerations와 함께 할 수 있습니다 :
PERSISTENT_DECL매크로 createObj는 우리를위한 ‘Clonable’클래스 의 메소드를 구현합니다 . 또한 AddClonable클래스에 정적 멤버를 추가합니다 . 이렇게하면 우리의 영속 클래스가 복제 가능한 컬렉션에 자체 등록됩니다. 이것은 .h 클래스 정의에 추가되어야합니다 (아래 예 참조).

#define PERSISTENT_DECL(className) \
public: \
virtual Clonable* createObj() const \
{ \
    return new className(); \
} \
private: \
static AddClonable _addClonable;

PERSISTENT_IMPL이 정적 멤버를 초기화합니다. 이것은 .cpp 클래스 구현에 추가되어야합니다.

#define PERSISTENT_IMPL(className) \
    AddClonable className::_addClonable(#className, new className());

사용법의 예 : Event.h는 'Event' 영속성이 있어야 하는 간단한 클래스를 정의합니다 .

class Event : public Persistent {
private:
 int _id;
public:
 Event() : _id(0) {}
 virtual ~Event() {}
 int getId() const { return _id; }
protected:
 virtual void serialize(Archive& stream)
 {
  if(stream.isStoring())
   stream << _id;
  else
   stream >> _id;
 }
 PERSISTENT_DECL(Event)
};

Event.cpp

#include "Event.h"

PERSISTENT_IMPL(Event)

우리는에 뛰어 전에 '<code>Archive' 및 '<code>Persistent' 클래스 구현, 여기에 동일한 내용을 가진 새로운 개체로 다시 읽어 후 바탕 화면에 바이너리 파일로 우리의 ‘이벤트’객체를 직렬화하는 방법의 예입니다.

void serialize_example()
{
    auto_ptr<Event> event(new Event());
    fstream file("C:\\Users\\Gilad\\Desktop\\try.data",
        ios::out | ios::in | ios::binary | ios::trunc);
    ArchiveFile stream(&file);
    if(! file)
        throw "Unable to open file for writing";
    event->store(stream);
    file.seekg(0, ios::beg);
    Event* newEvent = dynamic_cast<Event*>(Persistent::load(stream));
    event.reset(newEvent);
    file.close();
}

<event>Persistent.cpp :
우리는 기본적인 ‘int’및 ‘string’아카이브를 사용하여 구현을 시작합니다.

Archive& Archive::operator<<(int val)
{
     write(&val, sizeof(int));
     return *this;
}
Archive& Archive::operator>>(int& val)
{
     read(&val, sizeof(int));
     return *this;
}
Archive& Archive::operator<<(const string& str)
{
    int length = str.length();
    *this << length;
    write(str.c_str(), sizeof(char) * length);
    return *this;
}
Archive& Archive::operator>>(string& str)
{
    int length = -1;
    *this >> length;
    vector<char> mem(length + 1);
    char* pChars = &mem[0];
    read(pChars, sizeof(char) * length);
    mem[length] = NULL;
    str = pChars;
    return *this;
}

이제 특정 STL iostream 보관 구현을 추가해 보겠습니다.

void ArchiveFile::write(const void* buffer, size_t length)
{
    _stream->write((const char*)buffer,length);
    if(! *_stream)
        throw "ArchiveFile::write Error";
}
void ArchiveFile::read(void* buffer, size_t length)
{
    _stream->read((char*)buffer, length);
    if(! *_stream)
        throw "ArchiveFile::read Error";
}

이것은 영구 객체를 아카이브에 저장 하는 방법입니다 .

  1. 개체의 클래스 이름을 저장하십시오.
  2. 클래스의 버전을 저장하십시오.
  3. 객체를 직렬화하도록 호출합니다.
void Persistent::store(Archive& stream) const
{
    string className = typeid(*this).name();
    className = className.substr(className.find(' ') + 1);
    stream << className;
    int ver = version();
    stream << ver;
    stream.setDirection(true);
    const_cast<Persistent *>(this)->serialize(stream);
}

다음은 아카이브에서 객체를 로드 하는 방법입니다 .

  1. 아카이브에서 클래스 이름 읽기
  2. cloneable 컬렉션과 간단한 캐스트를 사용하여 객체를 만듭니다.
  3. 버전이 올바른지 확인하십시오.
  4. 우리의 객체가 스스로를 비 직렬화하게하십시오.

auto_ptr의 사용에주의하십시오. (serialize 메소드와 같이) 예외가 발생하면 우리의 영속 객체가 삭제 될 것입니다.

Persistent* Persistent::load(Archive& stream)
{
    string className;
    stream >> className;
    Clonable* clone = Clonables::Instance().create(className.c_str());
    if(clone == NULL)
        throw "Persistent::load : Error creating object";
    auto_ptr<Clonable> delitor(clone);
    Persistent * obj = dynamic_cast<Persistent *>(clone);
    if(obj == NULL) {
        throw "Persistent::load : Error creating object";
    }
    int ver = -1;
    stream >> ver;
    if(ver != obj->version())
        throw "Persistent::load : unmatched version number";
    stream.setDirection(false);
    obj->serialize(stream);
    delitor.release();
    return obj;
}

“c++ custom object serialization”의 290개의 댓글

  1. Greetings! Quick question that’s entirely off topic.

    Do you know how to make your site mobile friendly?
    My site looks weird when viewing from my iphone 4.

    I’m trying to find a theme or plugin that might be able to fix this problem.
    If you have any suggestions, please share. Appreciate it!

  2. I just want to tell you that I am just very new to blogs and actually liked your blog. Probably I’m going to bookmark your blog post . You really have superb writings. Regards for revealing your blog.

  3. Oh my goodness! an impressive post guy. Thanks Nonetheless I am experiencing issue with ur rss. Don?t understand why Unable to sign up for it. Exists any person getting the same rss trouble? Any individual that recognizes kindly respond. Thnkx

  4. Hey There. I found your blog using msn. This is an extremely well written article. I’ll be sure to bookmark it and return to read more of your useful info. Thanks for the post. I’ll definitely comeback.

  5. I really like your blog.. very nice colors & theme. Did you design this website yourself or did you hire someone to do it for you? Plz answer back as I’m looking to construct my own blog and would like to know where u got this from. thanks

  6. Hello would you mind letting me know which web host you’re using? I’ve loaded your blog in 3 completely different web browsers and I must say this blog loads a lot faster then most. Can you recommend a good hosting provider at a honest price? Thanks, I appreciate it!

  7. There are some interesting moments in this short article however I don?t recognize if I see every one of them facility to heart. There is some validity yet I will certainly take hold opinion up until I check into it even more. Excellent article, thanks and we desire extra! Added to FeedBurner also

  8. Can I just claim what a relief to find someone that actually knows what theyre talking about on the net. You most definitely recognize just how to bring a concern to light and make it crucial. Even more individuals need to read this and also recognize this side of the tale. I angle believe youre not extra popular due to the fact that you definitely have the gift.

  9. Aw, this was a really wonderful post. In idea I want to place in writing like this in addition? taking time and actual initiative to make a great write-up? however what can I state? I procrastinate alot and never appear to obtain something done.

  10. When I originally commented I clicked the -Alert me when brand-new remarks are included- checkbox as well as now each time a remark is included I obtain four e-mails with the very same comment. Exists any way you can eliminate me from that solution? Many thanks!

  11. I’m impressed, I have to admit. Rarely do I come across a blog that’s both educative and engaging, and without a doubt, you’ve hit the nail on the head. The problem is something not enough folks are speaking intelligently about. I’m very happy I came across this during my hunt for something regarding this.

  12. You’re so cool! I don’t believe I have read anything like this before. So nice to find another person with a few genuine thoughts on this issue. Seriously.. thanks for starting this up. This site is something that is required on the web, someone with some originality!

  13. You are so interesting! I don’t think I’ve truly read anything like that before. So wonderful to discover another person with some original thoughts on this topic. Seriously.. many thanks for starting this up. This website is one thing that’s needed on the web, someone with some originality!

  14. After I originally commented I appear to have clicked the -Notify me when new comments are added- checkbox and from now on each time a comment is added I receive four emails with the exact same comment. Perhaps there is a way you are able to remove me from that service? Many thanks!

  15. May I just say what a relief to find someone who truly knows what they are discussing on the net. You actually know how to bring a problem to light and make it important. More people ought to read this and understand this side of your story. I was surprised that you are not more popular because you definitely have the gift.

  16. Can I simply say what a relief to find a person that genuinely understands what they’re discussing on the net. You actually realize how to bring an issue to light and make it important. More and more people should check this out and understand this side of the story. I can’t believe you’re not more popular given that you surely have the gift.

  17. I must thank you for the efforts you’ve put in penning this blog. I am hoping to see the same high-grade blog posts from you later on as well. In fact, your creative writing abilities has inspired me to get my own website now 😉

  18. After looking at a few of the articles on your website, I seriously appreciate your way of writing a blog. I added it to my bookmark site list and will be checking back in the near future. Please visit my website as well and tell me how you feel.

  19. An outstanding share! I have just forwarded this onto a coworker who has been doing a little homework on this. And he in fact bought me dinner simply because I found it for him… lol. So allow me to reword this…. Thanks for the meal!! But yeah, thanks for spending time to talk about this subject here on your web page.

  20. Hi there! This blog post could not be written any better! Looking through this post reminds me of my previous roommate! He constantly kept talking about this. I’ll send this information to him. Fairly certain he will have a very good read. I appreciate you for sharing!

  21. Good day! I could have sworn I’ve visited your blog before but after browsing through some of the articles I realized it’s new to me. Nonetheless, I’m certainly happy I discovered it and I’ll be book-marking it and checking back regularly!

  22. The next time I read a blog, Hopefully it doesn’t disappoint me as much as this particular one. I mean, Yes, it was my choice to read through, however I really thought you would have something useful to talk about. All I hear is a bunch of complaining about something that you could possibly fix if you were not too busy seeking attention.

  23. I am usually to blogging as well as i really value your content. The article has actually peaks my interest. I am going to bookmark your site and also maintain looking for brand-new information.

  24. Having read this I believed it was rather enlightening. I appreciate you spending some time and energy to put this short article together. I once again find myself spending a lot of time both reading and leaving comments. But so what, it was still worthwhile!

  25. I’m impressed, I have to admit. Rarely do I come across a blog that’s both equally educative and engaging, and let me tell you, you’ve hit the nail on the head. The problem is an issue that not enough folks are speaking intelligently about. I’m very happy that I came across this during my search for something relating to this.

  26. This is the right webpage for anyone who really wants to understand this topic. You know so much its almost hard to argue with you (not that I really would want to…HaHa). You definitely put a brand new spin on a topic that’s been discussed for a long time. Excellent stuff, just excellent!

  27. I’m impressed, I have to admit. Rarely do I encounter a blog that’s both equally educative and amusing, and without a doubt, you have hit the nail on the head. The issue is something not enough folks are speaking intelligently about. Now i’m very happy that I found this in my search for something concerning this.

  28. The next time I read a blog, I hope that it does not disappoint me just as much as this particular one. I mean, Yes, it was my choice to read, but I genuinely believed you would probably have something interesting to say. All I hear is a bunch of crying about something that you could possibly fix if you weren’t too busy seeking attention.

  29. After I initially commented I seem to have clicked the -Notify me when new comments are added- checkbox and now each time a comment is added I get four emails with the same comment. Is there an easy method you can remove me from that service? Many thanks!

  30. Hello! I could have sworn I’ve visited this web site before but after going through many of the articles I realized it’s new to me. Nonetheless, I’m definitely delighted I came across it and I’ll be bookmarking it and checking back frequently!

  31. An outstanding share! I have just forwarded this onto a colleague who was conducting a little homework on this. And he actually bought me breakfast simply because I stumbled upon it for him… lol. So allow me to reword this…. Thank YOU for the meal!! But yeah, thanx for spending some time to talk about this issue here on your site.

  32. Having read this I thought it was extremely enlightening. I appreciate you finding the time and energy to put this short article together. I once again find myself spending a significant amount of time both reading and commenting. But so what, it was still worth it!

  33. Having read this I thought it was really enlightening. I appreciate you taking the time and energy to put this short article together. I once again find myself personally spending a lot of time both reading and commenting. But so what, it was still worth it!

  34. I’d like to thank you for the efforts you have put in writing this blog. I’m hoping to view the same high-grade content by you later on as well. In truth, your creative writing abilities has encouraged me to get my very own site now 😉

  35. Hi, I do think this is a great web site. I stumbledupon it 😉 I may revisit yet again since I bookmarked it. Money and freedom is the best way to change, may you be rich and continue to help others.

  36. A fascinating discussion is worth comment. There’s no doubt that that you need to write more on this issue, it might not be a taboo subject but generally people don’t talk about these issues. To the next! Best wishes!!

  37. This is the right website for everyone who really wants to find out about this topic. You understand a whole lot its almost hard to argue with you (not that I actually will need to…HaHa). You definitely put a new spin on a subject that’s been written about for years. Great stuff, just great!

  38. I’m impressed, I must say. Seldom do I come across a blog that’s equally educative and amusing, and without a doubt, you’ve hit the nail on the head. The issue is something that too few men and women are speaking intelligently about. I am very happy that I found this during my search for something relating to this.

  39. Aw, this was an actually great message. In suggestion I would love to place in writing similar to this furthermore? taking some time as well as actual initiative to make a very good write-up? but what can I claim? I put things off alot and by no means seem to get something done.

  40. Your style is very unique in comparison to other folks I’ve read stuff from. I appreciate you for posting when you’ve got the opportunity, Guess I will just book mark this web site.

  41. This is the perfect webpage for anyone who hopes to understand this topic. You realize a whole lot its almost hard to argue with you (not that I personally would want to…HaHa). You certainly put a brand new spin on a subject that’s been written about for ages. Excellent stuff, just wonderful!

  42. Right here is the perfect site for everyone who hopes to find out about this topic. You realize so much its almost hard to argue with you (not that I actually would want to…HaHa). You certainly put a brand new spin on a topic that has been written about for decades. Wonderful stuff, just great!

  43. I absolutely love your blog.. Pleasant colors & theme. Did you develop this amazing site yourself? Please reply back as I’m attempting to create my very own site and would love to find out where you got this from or exactly what the theme is named. Cheers!

  44. After exploring a handful of the articles on your web page, I truly appreciate your technique of blogging. I saved it to my bookmark webpage list and will be checking back in the near future. Please check out my website too and tell me what you think.

  45. Greetings, I do think your site could be having internet browser compatibility problems. Whenever I look at your website in Safari, it looks fine but when opening in IE, it’s got some overlapping issues. I just wanted to provide you with a quick heads up! Aside from that, great site!

  46. A fascinating discussion is definitely worth comment. I do think that you should write more on this issue, it might not be a taboo matter but typically people do not discuss these topics. To the next! Many thanks!!

  47. A fascinating discussion is definitely worth comment. I do think that you need to publish more about this subject, it might not be a taboo subject but generally people don’t speak about such topics. To the next! Best wishes!!

  48. Hi, I do believe this is an excellent website. I stumbledupon it 😉 I may revisit once again since i have bookmarked it. Money and freedom is the best way to change, may you be rich and continue to guide others.

  49. Hello there! This blog post could not be written any better! Looking through this article reminds me of my previous roommate! He continually kept talking about this. I will forward this article to him. Pretty sure he’ll have a good read. Thank you for sharing!

  50. I absolutely love your site.. Great colors & theme. Did you build this website yourself? Please reply back as I’m attempting to create my very own site and would love to know where you got this from or exactly what the theme is called. Thank you!

  51. An outstanding share! I have just forwarded this onto a co-worker who had been doing a little homework on this. And he in fact ordered me breakfast simply because I found it for him… lol. So let me reword this…. Thanks for the meal!! But yeah, thanx for spending time to talk about this issue here on your website.

  52. Hi, I do think this is an excellent web site. I stumbledupon it 😉 I may come back once again since i have book-marked it. Money and freedom is the greatest way to change, may you be rich and continue to guide other people.

  53. After looking into a few of the blog posts on your blog, I really appreciate your technique of blogging. I saved it to my bookmark webpage list and will be checking back soon. Please check out my website as well and let me know what you think.

  54. Oh my goodness! Incredible article dude! Thank you so much, However I am having difficulties with your RSS. I don’t understand the reason why I am unable to join it. Is there anybody having identical RSS issues? Anybody who knows the solution can you kindly respond? Thanks!!

  55. Everything is very open with a really clear clarification of the issues. It was truly informative. Your website is very helpful. Thank you for sharing!

  56. Hello! I just want to offer you a big thumbs up for the excellent info you’ve got right here on this post. I am coming back to your blog for more soon.

  57. Aw, this was an incredibly nice post. Taking the time and actual effort to generate a really good article… but what can I say… I put things off a whole lot and never seem to get anything done.

  58. Hi there! I could have sworn I’ve been to this web site before but after looking at a few of the posts I realized it’s new to me. Anyways, I’m definitely delighted I discovered it and I’ll be book-marking it and checking back frequently!

  59. After looking at a few of the articles on your web site, I seriously like your way of blogging. I bookmarked it to my bookmark webpage list and will be checking back soon. Please check out my website too and let me know your opinion.

  60. This is the right webpage for anyone who would like to find out about this topic. You know a whole lot its almost tough to argue with you (not that I really will need to…HaHa). You definitely put a brand new spin on a subject that’s been discussed for decades. Great stuff, just wonderful!

  61. Greetings, I think your web site could possibly be having web browser compatibility problems. Whenever I take a look at your website in Safari, it looks fine but when opening in I.E., it’s got some overlapping issues. I simply wanted to provide you with a quick heads up! Besides that, excellent site!

  62. After I originally left a comment I appear to have clicked the -Notify me when new comments are added- checkbox and now whenever a comment is added I recieve four emails with the same comment. Perhaps there is a means you can remove me from that service? Appreciate it!

  63. I’m excited to find this great site. I wanted to thank you for ones time due to this wonderful read!! I definitely enjoyed every bit of it and I have you book-marked to see new things on your blog.

  64. Right here is the right blog for anyone who wishes to find out about this topic. You know a whole lot its almost tough to argue with you (not that I actually will need to…HaHa). You certainly put a fresh spin on a topic that’s been written about for ages. Excellent stuff, just excellent!

  65. After checking out a number of the blog posts on your site, I really like your technique of blogging. I book marked it to my bookmark webpage list and will be checking back in the near future. Please check out my website as well and let me know your opinion.

  66. I’d like to thank you for the efforts you have put in penning this site. I really hope to check out the same high-grade content from you later on as well. In fact, your creative writing abilities has inspired me to get my very own website now 😉

  67. I have to thank you for the efforts you have put in penning this site. I am hoping to see the same high-grade content from you later on as well. In truth, your creative writing abilities has motivated me to get my own website now 😉

  68. Oh my goodness! Awesome article dude! Thank you so much, However I am going through problems with your RSS. I don’t know the reason why I am unable to join it. Is there anybody else getting identical RSS problems? Anyone who knows the solution will you kindly respond? Thanx!!

  69. The next time I read a blog, I hope that it won’t disappoint me just as much as this particular one. After all, I know it was my choice to read, however I truly believed you’d have something helpful to talk about. All I hear is a bunch of complaining about something that you could possibly fix if you weren’t too busy seeking attention.

  70. The next time I read a blog, Hopefully it doesn’t disappoint me just as much as this one. I mean, Yes, it was my choice to read through, however I truly thought you would have something interesting to talk about. All I hear is a bunch of complaining about something you could possibly fix if you were not too busy searching for attention.

  71. Youre so great! I do not mean Ive check out anything such as this before. So good to find somebody with some initial ideas on this subject. realy thanks for beginning this up. this internet site is something that is needed on the internet, somebody with a little creativity. useful job for bringing something brand-new to the web!

  72. After I initially commented I seem to have clicked the -Notify me when new comments are added- checkbox and now each time a comment is added I recieve four emails with the same comment. There has to be a means you can remove me from that service? Kudos!

  73. You’re so awesome! I don’t think I’ve truly read through anything like that before. So wonderful to find another person with some genuine thoughts on this subject matter. Really.. thanks for starting this up. This web site is something that’s needed on the web, someone with a bit of originality!

  74. I have to thank you for the efforts you’ve put in penning this site. I really hope to view the same high-grade content by you later on as well. In truth, your creative writing abilities has encouraged me to get my own website now 😉

  75. You’re so interesting! I do not believe I’ve read anything like that before. So great to find someone with some original thoughts on this topic. Seriously.. thank you for starting this up. This site is something that’s needed on the web, someone with a bit of originality!

  76. Hello! I could have sworn I’ve visited your blog before but after browsing through some of the articles I realized it’s new to me. Regardless, I’m definitely delighted I found it and I’ll be book-marking it and checking back often!

  77. Howdy, I think your blog could be having internet browser compatibility issues. When I take a look at your web site in Safari, it looks fine but when opening in I.E., it has some overlapping issues. I simply wanted to provide you with a quick heads up! Aside from that, wonderful blog!

  78. Hello there! I could have sworn I’ve visited your blog before but after going through a few of the posts I realized it’s new to me. Nonetheless, I’m definitely delighted I came across it and I’ll be bookmarking it and checking back regularly!

  79. After looking over a few of the blog articles on your blog, I truly like your technique of blogging. I added it to my bookmark website list and will be checking back soon. Please check out my website as well and let me know your opinion.

  80. Having read this I believed it was really enlightening. I appreciate you spending some time and effort to put this short article together. I once again find myself personally spending a significant amount of time both reading and leaving comments. But so what, it was still worthwhile!

  81. Hi, I do think this is an excellent site. I stumbledupon it 😉 I am going to return yet again since i have bookmarked it. Money and freedom is the greatest way to change, may you be rich and continue to help other people.

  82. Oh my goodness! Incredible article dude! Many thanks, However I am encountering difficulties with your RSS. I don’t know why I am unable to subscribe to it. Is there anybody else having the same RSS problems? Anyone that knows the answer will you kindly respond? Thanks!!

  83. After I initially left a comment I appear to have clicked the -Notify me when new comments are added- checkbox and now each time a comment is added I recieve four emails with the same comment. There has to be a way you can remove me from that service? Thanks a lot!

  84. Right here is the right blog for everyone who wants to find out about this topic. You understand a whole lot its almost hard to argue with you (not that I personally will need to…HaHa). You certainly put a fresh spin on a subject that’s been written about for a long time. Great stuff, just wonderful!

  85. I’m very happy to find this web site. I wanted to thank you for ones time just for this wonderful read!! I definitely really liked every bit of it and i also have you saved as a favorite to check out new things in your web site.

  86. An impressive share! I have just forwarded this onto a coworker who has been conducting a little homework on this. And he actually bought me lunch because I stumbled upon it for him… lol. So allow me to reword this…. Thank YOU for the meal!! But yeah, thanks for spending some time to talk about this issue here on your site.

  87. Hi there! This post couldn’t be written much better! Reading through this post reminds me of my previous roommate! He always kept preaching about this. I most certainly will forward this information to him. Pretty sure he’s going to have a good read. Thank you for sharing!

  88. Can I simply state what an alleviation to locate somebody who actually understands what theyre discussing on the net. You absolutely understand exactly how to bring an issue to light as well as make it important. Even more individuals require to read this and also recognize this side of the story. I angle believe youre not a lot more popular because you absolutely have the gift.

  89. Can I just say what a comfort to uncover somebody who genuinely understands what they are talking about online. You actually realize how to bring an issue to light and make it important. More people should look at this and understand this side of your story. I was surprised you aren’t more popular because you definitely possess the gift.

  90. I’m very happy to find this web site. I want to to thank you for your time for this wonderful read!! I definitely really liked every part of it and i also have you book marked to look at new information on your web site.

  91. Can I just say what a comfort to discover somebody that genuinely knows what they’re talking about on the internet. You certainly know how to bring a problem to light and make it important. A lot more people have to read this and understand this side of your story. I can’t believe you aren’t more popular since you certainly have the gift.

  92. After exploring a few of the blog posts on your blog, I honestly like your way of blogging. I bookmarked it to my bookmark site list and will be checking back soon. Please check out my website as well and tell me what you think.

  93. I’d like to thank you for the efforts you’ve put in writing this site. I really hope to view the same high-grade blog posts from you in the future as well. In truth, your creative writing abilities has inspired me to get my very own website now 😉

  94. May I just say what a comfort to uncover a person that really knows what they are talking about online. You actually know how to bring a problem to light and make it important. A lot more people have to look at this and understand this side of your story. I was surprised that you’re not more popular because you surely possess the gift.

  95. May I just say what a relief to discover a person that truly knows what they’re talking about over the internet. You actually understand how to bring a problem to light and make it important. More people ought to read this and understand this side of your story. I was surprised that you’re not more popular given that you surely have the gift.

  96. I absolutely love your website.. Great colors & theme. Did you build this amazing site yourself? Please reply back as I’m hoping to create my own personal site and would love to know where you got this from or what the theme is named. Thank you!

  97. Howdy! I could have sworn I’ve visited this site before but after looking at many of the posts I realized it’s new to me. Regardless, I’m definitely delighted I came across it and I’ll be bookmarking it and checking back often!

  98. Hi, I do think this is a great blog. I stumbledupon it 😉 I may return once again since I book marked it. Money and freedom is the greatest way to change, may you be rich and continue to guide other people.

  99. I’m pretty pleased to find this site. I want to to thank you for ones time for this fantastic read!! I definitely loved every part of it and i also have you bookmarked to look at new things in your website.

  100. I uncovered your blog site on google and also inspect a few of your early posts. Continue to keep up the excellent operate. I simply added up your RSS feed to my MSN News Reader. Looking for onward to reading more from you later!?

  101. Aw, this was an incredibly nice post. Finding the time and actual effort to make a top notch article… but what can I say… I hesitate a whole lot and don’t manage to get nearly anything done.

  102. Nice post. I learn something new and challenging on sites I stumbleupon every day. It’s always exciting to read articles from other writers and practice something from other websites.

  103. A fascinating discussion is worth comment. I think that you should write more on this topic, it may not be a taboo subject but usually people do not discuss these issues. To the next! Many thanks!!

  104. I blog quite often and I really appreciate your information. This great article has really peaked my interest. I’m going to take a note of your site and keep checking for new details about once a week. I opted in for your Feed as well.

  105. After I initially left a comment I appear to have clicked on the -Notify me when new comments are added- checkbox and now whenever a comment is added I recieve four emails with the exact same comment. There has to be a means you are able to remove me from that service? Many thanks!

  106. You made some good points there. I looked on the internet for more information about the issue and found most people will go along with your views on this web site.

  107. When I initially left a comment I appear to have clicked the -Notify me when new comments are added- checkbox and now every time a comment is added I receive 4 emails with the exact same comment. Is there a way you can remove me from that service? Kudos!

  108. Hi, I do believe this is a great website. I stumbledupon it 😉 I am going to return once again since I book marked it. Money and freedom is the best way to change, may you be rich and continue to help others.

  109. Can I just say what a comfort to find somebody that actually understands what they are talking about on the net. You actually realize how to bring a problem to light and make it important. More people ought to look at this and understand this side of the story. I was surprised that you are not more popular since you definitely have the gift.

  110. I seriously love your site.. Excellent colors & theme. Did you make this web site yourself? Please reply back as I’m planning to create my very own website and would like to find out where you got this from or what the theme is named. Appreciate it!

  111. After I initially commented I appear to have clicked the -Notify me when new comments are added- checkbox and from now on every time a comment is added I get four emails with the same comment. Perhaps there is a means you are able to remove me from that service? Thank you!

  112. I was extremely pleased to find this website. I want to to thank you for your time for this particularly fantastic read!! I definitely enjoyed every bit of it and i also have you bookmarked to check out new stuff in your blog.

  113. Aw, this was an exceptionally good post. Taking a few minutes and actual effort to create a good article… but what can I say… I put things off a whole lot and don’t seem to get anything done.

  114. Can I just say what a comfort to uncover somebody that genuinely knows what they’re discussing on the net. You definitely understand how to bring a problem to light and make it important. More and more people really need to check this out and understand this side of your story. It’s surprising you aren’t more popular because you certainly have the gift.

  115. I must thank you for the efforts you’ve put in writing this site. I really hope to check out the same high-grade content from you later on as well. In fact, your creative writing abilities has motivated me to get my very own website now 😉

  116. Howdy! This blog post could not be written any better! Going through this article reminds me of my previous roommate! He always kept preaching about this. I will forward this post to him. Fairly certain he’ll have a very good read. Many thanks for sharing!

  117. After study a few of the post on your web site now, as well as I truly like your method of blogging. I bookmarked it to my book mark web site listing and will certainly be checking back quickly. Pls check out my web site also and let me understand what you assume.

  118. I really love your site.. Very nice colors & theme. Did you build this amazing site yourself? Please reply back as I’m attempting to create my very own site and want to know where you got this from or just what the theme is called. Cheers!

  119. Can I simply say what a comfort to discover somebody who genuinely knows what they’re talking about on the net. You certainly know how to bring an issue to light and make it important. More and more people should look at this and understand this side of the story. It’s surprising you aren’t more popular since you most certainly possess the gift.

  120. Hi, I do think this is an excellent web site. I stumbledupon it 😉 I am going to come back yet again since i have bookmarked it. Money and freedom is the best way to change, may you be rich and continue to guide others.

  121. Next time I read a blog, I hope that it won’t fail me just as much as this one. I mean, I know it was my choice to read through, however I actually believed you would probably have something helpful to talk about. All I hear is a bunch of whining about something you could possibly fix if you were not too busy searching for attention.

  122. Howdy! I could have sworn I’ve visited this site before but after looking at many of the posts I realized it’s new to me. Regardless, I’m definitely happy I discovered it and I’ll be book-marking it and checking back often!

  123. When I initially commented I appear to have clicked on the -Notify me when new comments are added- checkbox and from now on whenever a comment is added I recieve 4 emails with the same comment. Is there an easy method you can remove me from that service? Cheers!

  124. Hi there, I believe your web site might be having browser compatibility issues. Whenever I look at your web site in Safari, it looks fine however, if opening in I.E., it’s got some overlapping issues. I simply wanted to provide you with a quick heads up! Aside from that, fantastic blog!

  125. May I just say what a relief to uncover somebody that genuinely understands what they are discussing on the net. You certainly understand how to bring a problem to light and make it important. More and more people have to look at this and understand this side of the story. I can’t believe you’re not more popular because you certainly have the gift.

  126. After research a few of the blog posts on your site currently, and I truly like your means of blogging. I bookmarked it to my bookmark web site checklist and will be examining back soon. Pls check out my web site also as well as let me know what you assume.

  127. After I originally commented I seem to have clicked the -Notify me when new comments are added- checkbox and now each time a comment is added I receive four emails with the exact same comment. Is there an easy method you are able to remove me from that service? Kudos!

  128. Can I just say what a relief to discover an individual who actually understands what they are talking about on the web. You actually understand how to bring a problem to light and make it important. A lot more people ought to check this out and understand this side of your story. I can’t believe you are not more popular given that you definitely have the gift.

  129. An outstanding share, I simply provided this onto an associate who was doing a little evaluation on this. As well as he actually acquired me breakfast since I located it for him. smile. So let me rephrase that: Thnx for the treat! However yeah Thnkx for investing the moment to review this, I feel strongly regarding it as well as like learning more on this subject. If possible, as you become experience, would certainly you mind upgrading your blog with even more details? It is highly handy for me. Huge thumb up for this post!

댓글 남기기