Thursday, November 25, 2010


C++ Serialization Anyone?



Today I had one of the most amazing programming experiences that I've ever had, from my entire exciting career. I'm still a bit stunned that this happened. I fully thought what happened was completely impossible till now.

At work, we use a lot of different languages to create our software. It's not odd for us to be working on a project which somehow ends up using a dozen languages. Between server code, client code, databases, communication, mark up, styling, pre-processing, dynamic code generation, and other commonality, it's rather easy actually.

Between all these different programming languages, quite often, we need some sort of data interchange format. There's many to choose from, ranging from something custom to something well known like XML. Using these formats, we can pass data from one segment of our application stack to another. Even when they use two different programming languages. Or to save some data, and load it back up later.

When it comes to these things, soft typed functional languages are generally easier to work with than hard typed. Soft typed languages are very good at building objects from data on the fly, thanks to their ability to not care much about what types they're looking at. Is it a number or a string? Doesn't matter to the soft typed language, as they store it all the same way.

When dealing with database access from hard typed languages, the popular method is to create some sort of catch all or convert to anything type. For some, terms like "QVariant" or "boost::any" are always on their lips. The intent of these and similar constructs is to ease things when dealing with data in an unknown type. Although such constructs generally require building a switch block which needs to check some enumeration method to figure out how to handle the data within the rest of the program. Such code is just downright annoying.

At work some time back, thanks to a lot of the new features C++-201x has been adding, we've been able to build a database access library which can handle data without any of these old kludges. Essentially, database access for us in C++ is now just as easy as it is in PHP (or perhaps even easier!).

Now database communication is great, but there's still the issue of data interchange between two programs, which aren't using a database as an intermediary. Many soft typed or functional languages can have a simple encode() or decode() function, pass it any object, and have a nice string representation of it which can be sent off, or saved to a file for later. C++ and related languages always had the nightmare of needing to iterate manually over every data type, or over a hierarchy to work with something like XML, or similar data formats.

There's those that have created workarounds of course. Such as adding a serialize() function for every type you have to work with individually. Or create some serializable objects that one copies data to or from, and which handle all the serialization work internally. Or one of my personal favorites, write a separate parser which can read a description of a format, and generate the C++ objects and code needed to serialize or deserialize it.

Well, today a coworker and I were putting our heads together on how to deal with a certain project. I wrote code some time back which can serialize/deserialize to and from an std::map which contains numbers, strings, or a mix thereof. We were using this data interchange format between two programs. However, now we need to deal with much more complex data, and a series of key pairs just won't cover it. One end of the equation is C++, the other end is a soft typed language which could pretty easily work with whatever we came up with.

We first thought about the option of using a classic method such as XML or JSON, and use some kind of hierarchical writer from C++, and have the soft typed language just read it directly into an object with one of its built in language features. Till my friend had a brilliant realization. The hierarchy of language containers and their children is recursive, as is any serialization that can encode an infinite amount of data stacked in a hierarchy. Then we started discussing if we could make a serialize() function in C++ which could take any C++ type and work, even when not knowing everything about it in advance. It'd be easy for plain old data types, but gets more complicated once we start dealing with containers of those, and containers of containers.

Of course this is where most conversations along these lines end. But then I brought up template meta programming, and some new features C++ is now adding (and already in GCC), and this discussion went on much further than usual, till the point we were talking code. Well, we got into it, and two hours and two hundred lines of code later, we now have a function with the following prototype:

template<typename T>
std::string serialize(const T &t);


It is able to take any type that exists in C++, and well, serialize it. Have some type which contains some types which contains a few more types which contains some other types? It's all serializeable with this function. No pre-processing, dynamic code generation, compiler hacks, or clumsy per program hierarchical parsing required. It just worksTM.

Now next week, we'll have to write the deserializer function to pull that magic in reverse. Using the same idea, it shouldn't be a problem. If the data matches the supplied structure, parse it in, otherwise, throw an error. But currently, our project is done, as we are now able to have our C++ applications send very complex data to our soft typed languages rather easily.

Looking over the code with my coworker, it all seems extremely obvious. Why the heck didn't we think of this 20 years ago? Now am I getting all excited over something that has been done before? Anyone familiar with anything like this?

Question is, what to do now that we know this? File for a patent? (Yes, I'm evil!) Or perhaps ignore this, as no one cares about this topic anyway?

84 comments:

brokenn said...

Sounds very interesting indeed! Any clues as to which c++201X features turned out to be useful for this? I've played around with similar serialisation problems a lot, but never moved over the c++0x for a solution.

Patuti said...

What to do with that?
Share it!

insane coder said...

Hi brokenn.

Aside from the various C++-201x features I already mentioned for this post, there's nothing really more I can say right now.

Roman Perepelitsa said...

Are you saying the serialize function can be used like this?

#include
// Assuming it's in serialize.h.
#include "serialize.h"

// Not a POD.
struct Foo {
std::string val;
};

int main() {
Foo foo = {"hello"};
serialize(foo);
}

I'm pretty sure there is no way to make this work even in C++0x.

Joe P. said...

Roman Perepelitsa, seems you're missing the crucial point here. Seems clear that it's possible. It might need a bit of help, but it looks like not nearly as much help as you seem to think. In fact, most C++ non-PODs can be serialized without extra help.

insane coder said...

Hi Joe P.

True, true. Although there is an important point not to forget. If a class restricts access to its members and provides no way to get them, nothing can be done.

Although you could make the serializer a friend function. A bit of extra work, but not much, as you described.

LB said...

Does it employ variadic templates?

Germán Diago said...

Seriously, if this is like you describe, it's the most important discovering in c++ in years, and... I would like you to share it with all :-)
This would save lots of repetitive coding.
How do you access the members if you
don't know where they stay inside a class?
I see that impossible, but I'm not
sure now.

Germán Diago said...

You got me intrigued, but I'm sure it's impossible to know the structure of a c++ type without some help.
What I came up with is that you can use tuples to describe the structure of a type. But I don't know where the c++0x features fit. Pleeeeeaseeeee... tell us! :-)

蕭刻庭 said...

Interesting... O_O really

tapted said...

I was playing with this a while ago. See

http://code.apted.net/project/apted-pub/browser/sera/trunk

Serialising arbitrary structs was the main challenge. I didn't want to interfere with the class definitions.. There were two ways (check out ser_test.cpp). But you basically had two options. With,

struct XY {int x; int y};

there is a macro SERIALISE_AS_POD(XY);, which would just serialise it as plain 'old data. Or a 'serialiser'. E.g. for:

class XS {
SERIALISABLE;
int x;
std::string s;
std::vector v;
public:
XS(int xx = 0) : x(xx), s(x, 'x'), v(3, s) {}
};

You would define:

SERIALISER(XS) {
SERIALISE_OPT(x, &init_int);
SERIALISE_OPT(s, "default string");
SERIALISE(v); //empty vectors are perfectly valid!
}


SERIALISE_OPT makes the data members optional in the serialised format. And it supports maps of strings of vectors of structs of maps of strings, etc.

"serialise" then converts any serialisable data into a map of strings->byte[]

The SQL stuff was also a part of it. I basically wanted to convert a struct-"schema" defined this way into an SQL schema.. but it's still a work-in-progress (that hasn't progressed for 17 months)...

蕭刻庭 said...

Recursive serialize a structure is not a new idea, boost::serialization is a perfect example.

And, to serialize everything with only one function is not a new idea, too. boost::fusion has an example to serialize everything with only one function. (well, with few help actually, but no tricky compiler hack, no ugly MACRO, only a typedef)

zbigg said...

I also think that this guy just invented something that "lies" as roots of boost serialization.

(Also this doesn't need C++0x, it works with C++98).

I'm doing this for 2 years from now ... it works for XML, ASN.1/BER, JSON and GUI generation. Nothing particulatly new.

Only thing you need is a
* serializer class with specialized member functions for each type (or type family like std::vector)
* visitor function that calls serializer for each member
* some ugly traits/macrology to distinguish between "agreegates" - structs and leaf types

Well, example - not full here: test_structure_printer.cpp.

Germán Diago said...

"It is able to take any type that exists in C++, and well, serialize it. Have some type which contains some types which contains a few more types which contains some other types? It's all serializeable with this function. No pre-processing, dynamic code generation, compiler hacks, or clumsy per program hierarchical parsing required. It just worksTM."

Do you mean without registering any
single struct field?
Is that the way you did it?

Unknown said...

What happened to this? Did you discover that it was too good to be true? Does it work with boost::any?

insane coder said...

Hi Richard,

We're using the techniques regularly in my company. We do not use Boost at all.

We decided we have more important things to do than try to publish some ideas that may exist in more primitive forms elsewhere, yet remain fully functional, which is why I haven't written about it further.

Unknown said...

That do seem like a sweet lie to me.

And th earrogance of the author speak for itself..

"We decided we have more important things to do than try to publish some ideas that may exist in more primitive forms elsewhere, yet remain fully functional"

this "Way ahead of you" type of person may tend to forget that 6 years after it s publication the only people that come anywhere close to this kind of feature rely and 4 different stage of library in their standard proposition and of course goes for a proposition toward refelctive and mirroring programming.

oh course you could still go for

template
std::string sayGoodByeToYourData(T& t){
return std::string((char*)&t,sizeof(T)); // Well i m pretty sure that sending pointers ( if the struct contains any) over socket or anything will end up perfectly..i m so gonna post on this tonight!
}

Avijit said...

Excellent information, I really learn this blog.

Best App Development Company in kolkata

Android App Development Company in kolkata

Tuckerjackk said...

TrendMiners
Trending Bees
How To Miners
Jack Tucker
Jack Tucker
TrendMiners
Daily Helps
YaraBook

hpprintercare said...

Do you want to set up HP wireless printer? Do you have no sufficient knowledge to set up HP wireless printer? Are you troubling for hp wireless printer setup error? If yes, we are a right place for you. We work dedicatedly as an independent third party technical support provider, offering live technical support services for HP printer users in nominal charges. If you want to set up HP wireless printer, our printer experts are very experienced to set up HP wireless printer in the simple ways. Our techies are sitting on the online desk to receive your issues and resolve them instantly

rickypauls said...

Using Assignment Help services, students can complete their assignment on time. Students who have no ideas how to start their papers, they can search for greatassignmenthelp to compose their documents.
Assignment Help Online
Online Assignment Help
Assignment Help Online Services
Assignment Helper
Assignment Assistance
Assignment Help Experts
Online Assignment Help Services

Canon Support said...

Have you purchased Canon PIXMA MG3600? Do you want to set up Canon PIXMA MG3600 in the right technical ways? if yes, we are the right place for you. We work independently for canon printer users to provide live support services round the clock. If you’re looking for Canon PIXMA MG3600 setup, our printer technicians have good knowledge all the features and functions of Canon PIXMA MG3600. Our technical professionals have technical skills and extensive experience of setting up Canon PIXMA MG3600 in the right technical ways. For any confusion, our helpline number is open round the clock for you.

HP Printer Troubleshooting said...

Of course, HP have a support phone number for their users to provide instant support to resolve technical issues. If you are facing any technical issues with your HP desktop/laptop, printer, scanner and other peripheral device then call on 1 (650) 857-1501 for immediate assistance.

jones said...

we can guide you for brother printer wireless setup in the right ways. We work independently as a third party tech support service provider, offering online technical steps for setting up brother printer in the right ways. Our printer experts are technically proficient for setting up brother wireless printer in the easy ways.

Sachin Singh said...

Thanks for sharing this post, I am commercial builder and needs Termite Treatment solutions to kill bed bugs. I really need such type of sufficient knowledge.

Rexton IT Solutions said...

Thanks for sharing useful information for bed bugs treatment spray. I got the complete knowledge of bed bugs control Bangalore and removal bed bugs. I am very happy.

Unknown said...

هل أنت مهتم بتوسيع نطاق عملك خارج المنطقة المحلية؟ بالتأكيد ، هناك العديد من الخيارات لمواصلة الإعلان عبر الإنترنت في الإمارات العربية المتحدة. في ذلك الوقت ، من الجيد الانضمام إلى شركتنا المرشحة المشار إليها باسم شركات الإعلان في دبي لإجراء خطة التسويق الخاصة بك على نحو فعال. نحن نعمل في هذا العمل لفترة طويلة ونقدم خدمة إعلانية حقيقية وفقًا لرغبة العميل. خدماتنا الإعلانية عبر الإنترنت مفيدة لتطوير أعمالك. لا تتردد في التواصل مع شركتنا

yahoo support said...

Thanks for the sharing these amazing blog its really very helpfull for me keep it up. If you want to know to recover yahoo password without phone number and alternate email. These are simple methods and suggestions to recover your yahoo mail account or recover yahoo password without phone number, but in case you can’t recover your yahoo password

Unknown said...

As páginas ativas do servidor são uma plataforma projetada e trabalhada especialmente para aplicativos da web e sites dinâmicos. O ASP pode ser criado usando VBScript, JScript, VB e outros. Todas as versões do ASP ASP.NET são suportadas pela empresa de hospedagem do ASP. E a hospedagem do ASP é uma solução ideal para facilitar sites como sites interativos, sites dinâmicos e outros. Hospedagem ASP é usado para personalizar a maneira como um usuário pode avaliar nosso site.

James Marcus said...

Thanks for your valuable post. Please post some more related topics. We are on your page only to read your blog because, as you know, there are no other for being here. Like you, we also here for some information of Outlook, so if any of you need any type of help related Outlook then contact our Outlook support phone number or visit the website.
Is there a phone number for Outlook support?
How do I contact outlook by phone?
Outlook customer service number
Outlook customer service

Microsoft Outlook Office said...

This post is really good which inspires you how to cultivate your knowledge stream. For pouring the relative style in your upcoming post, you can use microsoft office 365 download link to execute the file without any hindrance. Visit here:- https://www.office365download.co/
office 365 download
Download Office 365
Microsoft office 365 download
download Microsoft office 365

Microsoft Support said...

The mentioned points in this guide are very informative and helped me to resolve my issue in a very proficient manner. At the time of solving my query I got stuck at one point, so I called at outlook Support Phone number and the technician who answered my call guided me thoroughly to get rid of my issue. I really appreciate the hardworking of that guy, who helped me during my crisis of time and never leave my side until problem didn’t get resolved. Therefore, I personally suggest everyone to get hold of Microsoft outlook Support if you really want to resolve your query related to your Outlook.
How do I call Outlook support?
Is there a phone number for Outlook support?
How do I contact Hotmail Support?
Is there a phone number for Hotmail support?
Change Hotmail Password
hotmail change password
change microsoft password
Is There A Phone Number For Microsoft Windows Support?
How Do I Contact Microsoft Windows Support?
How to Contact Microsoft Windows Tech Support?
How Do I Contact Microsoft Office 365 Support?
Is There a Phone Number for Microsoft Office 365 Support?
Is There a Phone Number for Microsoft Office Support?
How Do I Contact Microsoft Office Support?
Office 365 Support
Microsoft Office 365 Support
Microsoft 365 Support

Microsoft Outlook Office said...

We recently did work on Hotmail. We have Change Hotmail Password after that, assess Hotmail is very easy for work for everyone. With our client request, we are worked on it and finally, we got success to hotmail change password.
Is there a phone number for Hotmail support?
change microsoft password
microsoft change password
microsoft password reset
microsoft office 365
microsoft 365
outlook keeps asking for password
Outlook Working Offline
Outlook Error 0x800ccc0e
Outlook Send Receive Error
recover deleted files windows 10
0x800ccc0f
Outlook Error 0x800ccc0f
Convert OST to PST
ost to pst
ost to pst converter
Forgot Outlook Password

Manish Kumar said...

Amazing post! This blog is very helpful for Nepal Tour Packages. This amazing post gives ideas for Indian travelers how to travel Nepal affordably. I like this post very much. Thanks for sharing this useful blog.
Nepal Tour Package
Nepal Tourism Package
Nepal Tourist Packages

James Marcus said...

Thanks for your valuable post. Please post some more related topics. We are on your page only to read your blog because, as you know, there are no other for being here. Like you, we also here for some information of Outlook, so if any of you need any type of help related Outlook then contact our Outlook support phone number or visit the website.
Is there a phone number for Outlook support?
How do I contact outlook by phone?
Outlook customer service number
Outlook customer service

garminmapgpsupdates said...

How to update garmin gps
Garmin express not working

Canon Support said...

A tragedy may happen suddenly when you print urgent document from your Canon printer and that one is getting an error message canon printer offline. When you confront this problem while printing, your printer may not be functioned until you bring your offline canon printer to Online. Such a problem arises if a communication lack between your printer and computer. So, instantly check the USB or Wi-Fi and make sure it is properly adjusted and there is no network connection issue. Rather you should also check the printer settings as if the printer is set to Offline, then an offline printer error message appears. Dial toll-free number if you are unable to understand why such problem occurs and how to fix it. The skilled techies will assist you in a right way.

PrinterOfflineWindows10 said...

Thanks for your valuable post. Please post some more related topics. We are on your page only to read your blog because, as you know, there are no other for being here. Like you, we also here for some information of Printer, so if any of you need any type of help related Printer then contact our HP Printer Offline Window 10 or visit the website.
Printer Is Offline
HP Printer Offline
Printer Offline Window 10

Suresh Dorge said...

check this out please for me, come on for me

steve said...

Download and install Setup of an activate at Norton Norton Product Key to a using at The Norton at The Device Setup, Get started with Norton Setup for norton security antivirus software for all around 360 security. Activate product key for norton setup.
Norton.com/setup

SoftHost said...

Se você está procurando a Hospedagem Asp, então somos o melhor provedor de hospedagem para você. Basta ligar para nós e aproveitar os serviços de hospedagem de acordo com a demanda do seu site. Temos diferentes tipos de planos de hospedagem que até a preços acessíveis.

Bed Bugs Professionals said...

We are the top-rated and reliable bed bugs & Pest control services company in India, providing the Pest control in Pune services to kill the Pest and eggs permanently.

Tom Marcus said...

Superb post and product. You really choose the best product to write and the good thing is that every single time we like to read your post. Please write some about Online Software support because I really want to read those types of blogs/articles. I would also like to request you to visit my Roadrunner email web page for Roadrunner email problems support. Roadrunner email settings are the best thing for support.
Also, Visit on Garmin Express Updates, Garmin Express Not Working and Garmin Express webpage.
Thanks

Kevin Rudy said...

If you want to install McAfee antivirus through mcafee.com/activate, you can call live antivirus professionals to get full guidance for it. Our antivirus experts have the great skills for installing McAfee antivirus through mcafee.com/activate product key. Our helpline number is the suitable option for you to get instant support or quality help.

James Martin said...

Assignment Help via online mode of interaction will help to get the writer’s assistance in Qatar without making any physical contact with anyone. Online Assignment Help is the best option during this critical situation of coronavirus pandemic.
Assignment Help Online

Kevin Wick said...

Finish your academic tasks using assignment help services. Boost your knowledge as well as your marks using online assignment help Kuwait by paying a hefty amount for it.
Assignment help
Assignment help

Tom Marcus said...

Great article and lovely post. I would like to congratulate you on your post and I want to tell you that I am also here to promote or we can say for digital marketing. I have web pages for different products that you get below and I am here to promote all those given web pages.
Microsoft tech support number,
Microsoft support,
how do I contact Microsoft tech support,
Microsoft customer service,
Outlook tech support,
Outlook support,
Outlook customer service,
Outlook customer service number,
Microsoft Outlook support number,
How do I contact Microsoft Outlook support?,
How do I contact outlook customer support?,
Thank You.

Elon Brown said...

The mcafee.com/activate   Internet protection suite and antivirus software are the products designed by mcafee.com/activate   for helping to secure home, business or school systems.Download the McAfee antivirus to protect all the data and folders from malware and viruses.

Elon Brown said...

webroot.com/safe   is known worldwide for the services that it provides to solve the queries of its customers. 
Ask Me Rating  help empower consumers by offering crowd-sourced methods to react to these changes and give everyone the benefit of the best information possible.office.com/setup   is a set of desktop applications, which is widely used products for the home as well as an office. 

Peter Anderson said...

Usually I never comment on blogs but your article is so convincing that I never stop myself to say something about it. You’re doing a great job Man,Keep it up.
Webroot.com/safe | webroot.com/safe | central.bitdefender.com | webroot.com/safe| webroot.com/safe

Kevin Rudy said...

If you want to install McAfee antivirus through mcafee.com/activate, you can call live antivirus professionals to get full guidance for it. Our antivirus experts have the great skills for installing McAfee antivirus through mcafee.com/activate product key. Our helpline number is the suitable option for you to get instant support or quality help.

Stacy Watson said...

Thanks for taking the time to share with us such a great article. I found such a significant number of fascinating stuff with regards to your blog particularly its discussion. Keep doing awesome.
mcafee.com/activate
Office.com/Setup
mcafee.com/activate

ameliasmith010 said...

To utilize frontier mail login you should have a Frontier User ID and have connected your Frontier record to this ID. On the off chance that you haven't just done as such, you can interface your record by marking into Frontier from the landing page. Once signed in, go to your profile and snap the Link Account button. When your record is connected, on your profile page you will see your present Frontier email addresses and the quantity of extra email accounts you can make.

ameliasmith010 said...

HP printers, as an incredible asset for viable and solid printing with guided exactness, have become a basic prerequisite of our own just as expert life. Get your hands on the best HP printer in the market and set up the gadget followed by a lot of rules by means of 123.hp.com/setup. Make a point to utilize substantial qualifications to evade blunders however much as could be expected.

customerservicehelpnumber said...

Awesome blog and meaningful topic. I really enjoyed it. Please post some related product and give us some other links to your other blog. We want to read and learn. As you, We are also here to provide you some information and support of printers. If you are using a printing machine and facing some technical issues with it then lets get rid of them. Our HP Printer Support experts are always ready to help you.
If you need HP Support then you may click our web page links.
HP Printer Customer Service,
HP Printer Help,
HP Technical Support,
How do I troubleshoot my HP printer?,
Does HP have a customer service number?,
Where is the HP Support Assistant?
We are happy to help, so never hesitate to contact us.
Thank You.

Gmx Login said...

If you have a problem logging into your account, one of them could be the incorrect entry of username and password, due to certain factors. Try to always cross-check your username and password before attempting to sign in. Also, if you find out that your problem is caused by the incorrect username or password, or both, you can go back and fix the errors and then press sign in again. If your internet connection is weak or absent, you can also fail to log in to your account. Try to obtain access to an Internet Service area in this situation.
Mediacom webmail login allows you to access the use of various features such as mail, auto-reply, contacts, calendar, to-do list, and storage of documents. This service is available on your mobile android.

Gmx Login said...

If you see an error login in your GMX Mail account, it may occur either because you enter incorrect login credentials, or your account has been hacked. If you're sure you've entered the correct login credential to access your GMX Mail Login account then someone with access to your account may have changed your account 's password.

In such a method, resetting the account 's password for accessing it is recommended. To learn how to restore GMX Mail account passwords, Click here GMX Mail Login

Glane Gill said...

It was a very good post indeed. I thoroughly enjoyed reading it in my lunch-time. I Will surely come and visit this blog more often.
Att email
Att email support
Att mail
At&t support
At&t email
At&t mail
Microsoft professional support
Thanks for sharing your blog.

Assignment Help CA said...

Assignment Help Canada by knowledgeable and experienced writers work like magic. When you have doubts about your project writing or anything, talk to experts of greatassignmenthelp Get an instant and quick help at reasonable price.
Online Assignment Help
Assignment Help Online

Gmx Login said...

If you have trouble logging in to charter.net email. So, you just focused on email protection. Your computer scans antivirus and eliminates all the bugs from your computer. And then up to date with your phone. In addition, there are plenty of antiviruses on the market to address the average packages of your charter email login virus problem.

Assignment Help said...

Take assignment help when you want to get subject matter experts' assistance in the UK. Establish a strong connection with your service provider and share your queries or requirements with them if you don't want to lose your money.

corenfozz said...

Thanks for sharing this post, Hi! I am Lisa Price, an experienced technical writer who covers a wide range of Brother Printer related issues. Brother printer in error state is the one common error encountered by mostly users during print job. That’s why; I have written the blog-post to provide fruitful information about the printer in error state issue. When you read my post, you will be able to very effectively annihilate this issue in a short span of time.

jennifer said...

researchmasteressay is the leading provider of custom essay, term paper & research paper writing service. We provide skilled custom writing services of the highest quality as we ensure that your order is custom written to the first-class standard within your timeframe and at the best price. A skilled writer can handle your essay writing and assignment with the great knowledge of your topic and theme.

Best Custom Essay Writing Services in USA
Essay Writing Service in USA
Best Essay Writing Services in USA
Best Coursework Writing Services
Research Paper Writing Service in USA
Personal Statement Writing Service
Best Dissertation Writing Services
Term Paper Writing Services in USA

jennifer said...

UK custom essays are the best choice for students looking for professional writers for premium custom writing service. Our custom written essay service only uses top-rated, professional authors. They are all professionals in their field and their reliable services ensure that you get the marks you earn – and get all the recognition you deserve. Just place your order now and make the most of it.
Custom Essay Writing Service Uk
Custom Essay Writing Service
Best Essay Writing Service uk
Essay Writing Service uk
Research Proposal Writing Service Uk
Term Paper Writing Service Uk
Best dissertation writing services uk
Research Paper Writing Service in UK
Best Coursework Writing Service
UK essay writing services
Best assignment writing service uk

baroncorrz said...

Thanks for sharing this post, We are a well-recognized technical support company, having immense years of experience and proficiency for resolving common errors associated to Epson printer. If you are experiencing Epson printer in error state , our printer technicians are highly proficient for resolving this technical error within a few minutes. Our tech-geeks have the technical skills and broad knowledge for solving this technical error completely from the root. Our helpline number is open round the clock to provide quick support or quality assistance.

Assignment Help CA said...

Place an order for Assignment Help  in Singapore to access effective academic writing services for your assignment. It is good to connect with experienced writers when things come to obtain high marks.
Online Assignment Help
Assignment Help Online

Anya said...

Read the latest entertainment and news and bollywood gossips celebrities. Keep yourself updated with the entertainment news and bollywood gossips today. if you need many information so please visit your favorite site bankofbollywood.com. bollywood celebrity news | Latest Bollywood Celebrity News | Todays Bollywood Gossips | Political News Today India | Latest Business News Headlines | Latest Entertainment News Today

ameliasmith010 said...

Jessica this side, if you are a regular Outlook user, you surely require some online support for Outlook Email. So, instead of wandering casually, simply put a call at 844-273-6540. Here, as an Outlook Support executive person, I am available all the time to guide you regarding outlook error such as outlook emails stuck in outbox. Thus, dial this toll-free number and get to know how to Fix Outlook Email Stuck In Outbox Error

emma watson said...

Charter communication is the largest telephone and cable communication network in the United States. In addition, charter.net provides high-speed internet service. On the other side, webmail service charter.net provides you with the possibility to send or receive mails easily. If you want to learn how Charter email login functions then you will be obliged to read the entire site. So, as you know, charter.net email login is the simple way of building or logging into your charter webmail account and enjoying the email service benefits.

John Mooler said...

https://funnywifipuns.wordpress.com/2020/05/29/10-tips-for-making-your-wifi-broadband-faster/
https://tococadsmith.doodlekit.com/blog/entry/9207158/wifi-technology
https://getfunnywifinames.weebly.com/home/how-wifi-works
http://wifinamespuns.mystrikingly.com/blog/wifi-hotspot
http://rokayah874.simplesite.com/
https://5ee781837a912.site123.me/blog/wifi-optimize-your-wireless-network-in-five-simple-steps
https://funnywifinamess.yolasite.com/
https://getwifinames.hatenablog.com/entry/2020/05/30/120340
https://hercupcakementality.tumblr.com/post/619508551586643968/wifi-technology
http://coolssidname.over-blog.com/2020/05/improve-your-wifi-network-s-security.html

emma watson said...

Many Spectrum email login users complain of the speed of the Internet. Even though the mail service provider promises high-speed internet connectivity for its subscribers, there may be instances when the internet becomes very slow. Slow internet can occur because of network problems; or because of natural disasters. Whenever email users face problems with the network, they can visit the local ISP and sort the problem out. Use the company's customer support number to contact the service support team if Charter Spectrum is your Internet service provider.

123.hp.com/setup said...

Microsoft proffers a lot of investigating instruments for printers and you can utilize any one according to your printer and issue looking with the printer. You can download it from the official site of Microsoft according to your printer model and PC's OS. From that point forward, run it on your PC to fix the different issues including the epson error code 0x97 & epson printer error code 0x97 error in a compelling manner.

ameliasmith010 said...

Hello, I am Amelia Williams Are you using Outlook for personal and professional use? Facing outlook not receiving emails or unable to send any email from an/your account ,So check out guidelines to fix it outlook issues outlook 365 not receiving emails

printersupportnumber said...

Nice Post..
How to obtain quick support to fix HP printer not printing?
From a long time, I am hardly troubling HP printer not printing error. When I give an appropriate command to my HP printer for printing the urgent documents, my printing machine refuses to print the documents. I am applying my all technical ways to print the documents through my HP printer, I am experiencing HP printer not printing issue. I am trying to find out the major causes of HP printer not printing issue. I don’t have perfect technical knowledge to resolve this issue. I have also taken the solutions from support.hp.com from technical experts, but nothing is very helpful. Could you suggest the best methods to solve this technical glitch?

Robin Dunn said...

Connect with me if you want to finish your papers before the due dates at a very affordable price. I am providing cheap and affordable Homework Help whenever you need the assistance of experienced academic writers like me. I am available 24x7 and offering my support to all scholars for timely assignment submission.

David Smith said...

http://www.magcloud.com/user/jsdg225
https://www.colourlovers.com/lover/jsdg225
https://www.informationweek.com/profile.asp?piddl_userid=335441
https://cookpad.com/us/users/16007070
https://forwhiskeylovers.com/users/riyecexoto
https://tapas.io/jsdg225
https://www.italymagazine.com/users/jsdg225
https://www.fitfreak.net/forums/member.php?u=89255
http://www.splendidcrm.com/UserProfile/tabid/138/userId/69603/Default.aspx
http://mysmarterhome.ca/UserProfile/tabid/42/userId/44310/Default.aspx

David Smith said...

http://www.cruzroja.es/creforumvolint_en/user/profile/35092.page
http://www.pokerinside.com/profiles/view/301571
http://websitemarketingdesign.com/UserProfile/tabid/61/userId/80431/Default.aspx
https://crooksandliars.com/user/jsdg225
http://mehfeel.net/mehfeel/blogs/post/90186
https://www.vocabulary.com/profiles/B0PWOBH0WLO0D4
https://www.viki.com/users/jsdg225_84/about
https://www.autocar.co.uk/users/jsdg225
https://www.darkreading.com/profile.asp?piddl_userid=335439
https://www.rtsoft.com/forums/member.php?305671-jsdg225

David Smith said...

https://www.givology.org/~jsdg225/
https://forums.egullet.org/profile/87936-jsdg225/?tab=field_core_pfield_37
https://www.layitlow.com/forums/721557-jsdg225.html?tab=aboutme#aboutme
https://www.imdb.com/user/ur99908505/?ref_=nb_usr_prof_0
https://www.fictionpress.com/u/1125194/
https://www.feedsfloor.com/profile/jsdg225
https://www.gapyear.com/members/swapnil_kharche/
http://www.nfomedia.com/profile?uid=rPkZgd
https://dzone.com/users/3700497/jsdg225.html
https://www.indiegogo.com/individuals/23020612

ameliasmith010 said...

Email messages in MS Outlook now and then stall out in Outbox which portrays that the message has not been sent. Viewpoint clients as a rule protest that they have tapped on send/get button, yet despite moving to beneficiary those messages are remaining in Outbox. The following are the few examined explanations behind the mail stalling out in Outlook Outbox:
Your mail may be having an additional enormous connection, which crosses the breaking point size for sending the mail.
MS Outlook is set to work in disconnected mode with "Work Offline" choice.
The message that stalled out into the Outlook Outbox is really not sent because of any specialized blunder.
Issue may happen in regards to validation settings, Outlook Email Stuck In Outbox account confirmation issues with the mail server.

harryparker0123 said...

We are one of the most trustworthy, successful, and self-governing third party QuickBooks support company, having immense years of experience of handling all kinds of errors related to QuickBooks. We specialize in offering the best QuickBooks support services for QuickBooks users in very nominal charges. If you are not able to solve QuickBooks Error H505, you can call our online QuickBooks professionals to get the instant support for solving this error code in the right ways. Our online QuickBooks team has great proficiency and extensive experience of recognizing the real reasons of this error code and resolving this error code within a few seconds.

Yulia Hasyanti said...

MkvPoker Adalah Situs Judi Poker Terbaik Dengan Taruhan Uang Asli Yang Menjaminkan Kemenangan Yang Tinggi

Wa : +855 9637 31855

emma watson said...

If you have any issues related to Spectrum email login and you want to fix it immediately then you need to read it and follow the directions step by step as they are. Basically, I have a lot of issues to do with this but now I'm just showing you mainly known issues like sending and receiving email. This issue is mostly user-facing every day so I would suggest you solve it with the help of correct spectrum email setting. Now you can follow some instructions such as the username will be your full spectrum address, and password will be the same as a spectrum. After that you can enter the IMAP protocol on the SSL and then the incoming mail server will be mobile.charter.net and port will be 993. You can also add an outgoing mail server such as mobile.charter.net, and the port is established to be 587. You can enter the Yes at the end of the required verification section. Then the other thing is getting a lot of undesirable emails or spam emails. So, for piracy purposes, the problem is very important. So, in the inbox section, you can solve this problem by marking the folder as spam and you can move away quickly.

Kevin Rudy said...

If you want to activate McAfee antivirus software using mcafee.com/activate product key, you can get connected with live antivirus support professionals to get McAfee antivirus software installed and activated. Our live technical support team is available round the clock to guide you properly for any type of technical problems.

HP Printer Troubleshooting said...

Sometimes a printer user is unable to locate WPS Pin on their HP printer to setup wireless connection. On some devices is it difficult to find WPS pin number for Wi-Fi protected setup. If you are looking for the pin number then go through the post to find it.