เด เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดเดพเตป เดเดเตเดเดจเต เดเดฐเต เดเตเดเดชเตเดฒเตเดฑเตเดฑเต (เดเตเดเตเดเดฟเดเดเตเดเตผ) เดธเตเดทเตเดเดฟเดเตเดเตเดตเตเดจเตเดจเตเด เดกเตเดเตเดเตผ/เดกเตเดเตเดเตผ-เดเดฎเตเดชเตเดธเตเด เดเตเดจเตป เดชเดพเดเตเดเตเดเต เดฎเดพเดจเตเดเดฑเตเด เดเดชเดฏเตเดเดฟเดเตเดเต C++ เตฝ เดเดฐเต REST API เดธเตเดตเดจเด เดเดดเตเดคเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เด เดจเตเดคเดฐเตเดเตเดทเด เดเดเตเดเดจเต เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเดตเตเดจเตเดจเตเด เดธเดเดธเดพเดฐเดฟเดเตเดเตเด.
เดเดฐเต เดฌเดพเดเตเดเตเตปเดกเต เดกเตเดตเดฒเดชเตเดชเดฑเดพเดฏเดฟ เดเดพเตป เดชเดเตเดเตเดเตเดคเตเดค เด
เดเตเดคเตเดค เดนเดพเดเตเดเดคเตเดคเดฃเดฟเตฝ, เด
เดเตเดคเตเดค เดฎเตเดเตเดฐเตเดธเตผเดตเตเดธเต เดเดดเตเดคเดพเตป เดเดจเตเดคเต เดเดชเดฏเตเดเดฟเดเตเดเดฃเด เดเดจเตเดจ เดเตเดฆเตเดฏเด เดเดฏเตผเดจเตเดจเต. เดเดคเตเดตเดฐเต เดเดดเตเดคเดฟเดฏเดคเตเดฒเตเดฒเดพเด เดเดพเดจเตเด เดเดพเดจเตเด เดเตเตผเดจเตเดจเต เดเดดเตเดคเดฟเดฏเดคเดพเดฃเต
เด เดคเดฟเดจเดพเตฝ, เดเดฏเตผเดจเตเดจ เดฒเตเดกเต เดธเตเดตเดจเด เดเดดเตเดคเดพเดจเตเดณเตเดณ เดเตเดฎเดคเดฒ เดเดเตเดเตพ เด เดญเดฟเดฎเตเดเตเดเดฐเดฟเดเตเดเต, เด เดคเดฟเดฒเตเดเตเดเต เดตเดฐเตเดจเตเดจ เดกเดพเดฑเตเดฑ เดฎเตเตปเดเตเดเตเดเดฟ เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเดฒเตเดเตเดเต เดเดดเตเดคเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด เดเดจเตเดจเดคเดพเดฏเดฟเดฐเตเดจเตเดจเต เดชเตเดฐเดงเดพเดจ เดเตเดฎเดคเดฒ. เดฎเดฑเตเดฑเตเดฐเต เดธเตเดฎเตเดเตเดเต เดฌเตเดฐเตเดเตเดเดฟเดจเต เดถเตเดทเด, เดเดฐเต C++ เดกเตเดตเดฒเดชเตเดชเตผ เดเดจเตเดจ เดจเดฟเดฒเดฏเดฟเตฝ, เดชเตเดฐเตเดธเต เดเดชเดฏเตเดเดฟเดเตเดเต เด เดธเตเดตเดจเด เดเดดเตเดคเดพเตป เดเดฐเต เดธเตเดนเตเดคเตเดคเต เดจเดฟเตผเดฆเตเดฆเตเดถเดฟเดเตเดเต. เดเดคเต เดตเตเดเดฎเตเดฑเดฟเดฏเดคเตเด เดเตเดเตเดคเตฝ เดเตฝเดชเตเดชเดพเดฆเดจเดเตเดทเดฎเดคเดฏเตเดณเตเดณเดคเตเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเตเด, เดชเตเดคเตเดตเต, เดเตเดฎเดฟเดจเตเดฑเต เดตเดฟเดญเดตเดเตเดเตพ เดเดเตเดเดจเต เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเดฃเดฎเตเดจเตเดจเต เดเดเตเดเตพเดเตเดเต เด เดฑเดฟเดฏเดพเดฎเตเดจเตเดจเดคเดฟเตฝ เดเตเดฑเดฟ เดธเดจเตเดคเตเดทเดฟเดเตเดเตเด. เด เดคเดฟเดจเต เดเดพเตป C++-เตฝ เดเดฐเดฟเดเตเดเดฒเตเด เดเดคเตเดคเดฐเด เดเดพเดฐเตเดฏเดเตเดเตพ เดเตเดฏเตเดคเดฟเดเตเดเดฟเดฒเตเดฒเตเดจเตเดจเตเด เดฌเดพเดเตเดเดฟเดฏเตเดณเตเดณ 20+ เดฎเดฃเดฟเดเตเดเตเตผ เด เดจเตเดฏเตเดเตเดฏเดฎเดพเดฏ เดฒเตเดฌเตเดฐเดฑเดฟเดเตพ เดคเดฟเดฐเดฏเตเดจเตเดจเดคเดฟเดจเตเด เดเดเดชเตเตฝ เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด เดฒเดฟเดเตเดเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด เดเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดตเดฟเดจเดฟเดฏเตเดเดฟเดเตเดเดพเดฎเตเดจเตเดจเตเด เดเดพเตป เดฎเดฑเตเดชเดเดฟ เดจเตฝเดเดฟ. เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ เดชเดฑเดเตเดเดพเตฝ, เดเดพเตป เดเตเดดเดฟเดฏเดฟเดฑเดเตเดเดฟ. เด เดคเดพเดฃเต เดเดเตเดเตพ เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเดคเตเด เดถเดพเดจเตเดคเดฎเดพเดฏเดฟ เดชเตเดคเตเดคเดฃเดฟเตฝ เดเดฒเตเดฒเดพเด เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดเดฟเดฏเดคเตเด.
เดเดชเตเดชเตเตพ, เดจเดฟเตผเดฌเดจเตเดงเดฟเดค เดธเตเดตเดฏเด เดเดฑเตเดฑเดชเตเดชเตเดเตฝ เดธเดฎเดฏเดคเตเดคเต, C++ เตฝ เดธเตเดตเดจเดเตเดเตพ เดเดเตเดเดจเต เดเดดเตเดคเดพเดฎเตเดจเตเดจเต เดเดฃเตเดเตเดชเดฟเดเดฟเดเตเดเดพเตป เดเดพเตป เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเต. เด
เดจเตเดฏเตเดเตเดฏเดฎเดพเดฏ เดฒเตเดฌเตเดฐเดฑเดฟ เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเตเดเดฏเดพเดฏเดฟเดฐเตเดจเตเดจเต เดเดฆเตเดฏเด เดเตเดฏเตเดฏเตเดฃเตเดเดคเต. เดเดจเตเดฑเต เดคเดฟเดฐเดเตเดเตเดเตเดชเตเดชเต เดตเตเดฃเต
conanfile.txt
[เดเดตเดถเตเดฏเดฎเดพเดฃเต]
poco/1.9.3
libpq/11.5
เดเตเดเดพเดคเต เดเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดเดฎเดพเตปเดกเต เดเดชเดฏเตเดเดฟเดเตเดเต "conan install ." เดเดตเดถเตเดฏเดฎเดพเดฏ เดฒเตเดฌเตเดฐเดฑเดฟเดเตพ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเด. เดธเตเดตเดพเดญเดพเดตเดฟเดเดฎเดพเดฏเตเด, เด เดคเดฟเตฝ เดฎเดพเดฑเตเดฑเดเตเดเตพ เดตเดฐเตเดคเตเดคเตเดฃเตเดเดคเตเด เดเดตเดถเตเดฏเดฎเดพเดฃเต
CMakeLists.txt
include(build/conanbuildinfo.cmake)
conan_basic_setup()
target_link_libraries(<target_name> ${CONAN_LIBS})
เด เดคเดฟเดจเตเดถเตเดทเด, PostgreSQL-เดจเตเดชเตเดชเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป เดเดพเตป เดเดฐเต เดฒเตเดฌเตเดฐเดฑเดฟ เดคเดฟเดฐเดฏเดพเตป เดคเตเดเดเตเดเดฟ, เดเดพเดฐเดฃเด เดเดจเดฟเดเตเดเต เดเตเดฒเดฟ เดชเดฐเดฟเดเดฏเด เดเตเดฑเดตเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดเดเตเดเดณเตเดเต เดชเตเดคเตเดคเตบ เดธเตเดตเดจเดเตเดเดณเตเดฎเดพเดฏเดฟ เดธเดเดตเดฆเดฟเดเตเดเดคเตเด เดเดคเดพเดฏเดฟเดฐเตเดจเตเดจเต. เดชเดฟเดจเตเดจเต เดเดพเตป เดเดจเตเดคเดพเดฃเต เดชเด เดฟเดเตเดเดคเตเดจเตเดจเต เดจเดฟเดเตเดเตพเดเตเดเดฑเดฟเดฏเดพเดฎเต? เดเดคเต POCO-เดฏเดฟเดฒเดพเดฃเต! เดเดจเตเดจเดพเตฝ เดเดคเต POCO-เดฏเดฟเดฒเดพเดฃเตเดจเตเดจเตเด เด เดคเต เดเดเตเดเดจเต เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดฃเดฎเตเดจเตเดจเต เด เดฑเดฟเดฏเดฟเดฒเตเดฒเตเดจเตเดจเตเด เดเตเดจเดจเต เด เดฑเดฟเดฏเดฟเดฒเตเดฒ; เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เดเดพเดฒเดนเดฐเดฃเดชเตเดชเตเดเตเด เดเดฐเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเตฝ เดเดฃเตเดเต (เด เดชเดฟเดถเดเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดพเตป เดเดคเดฟเดจเดเด เดคเดจเตเดจเต POCO เดฏเตเดเต เดธเตเดฐเดทเตโเดเดพเดเตเดเตพเดเตเดเต เดเดดเตเดคเดฟเดฏเดฟเดเตเดเตเดฃเตเดเต). เดเดคเดฟเดจเตผเดคเตเดฅเด เดจเดฟเดเตเดเตพ เดฎเดฑเตเดฑเตเดฐเต เดฒเตเดฌเตเดฐเดฑเดฟ เดคเตเดเตเดฃเตเดเดฟเดตเดฐเตเดฎเตเดจเตเดจเดพเดฃเต.
เดชเดฟเดจเตเดจเต เดเดจเตเดฑเต เดคเดฟเดฐเดเตเดเตเดเตเดชเตเดชเต เดเดจเดชเตเดฐเตเดคเดฟ เดเตเดฑเดเตเด เดเดฐเต เดฒเตเดฌเตเดฐเดฑเดฟเดฏเดฟเตฝ เดตเตเดฃเต
เด
เดญเตเดฏเตผเดคเตเดฅเดจเดเตพ เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเดจเตเดจ เดเดฐเต เดธเตเดตเดจ เดเตเดเดชเตเดฒเตเดฑเตเดฑเต เดเดดเตเดคเตเด เดเดจเตเดจเดคเดพเดฏเดฟเดฐเตเดจเตเดจเต เด
เดเตเดคเตเดค เดเดเตเดเด.
Poco::Util::ServerApplication-เตฝ เดจเดฟเดจเตเดจเต เดเดเตเดเดณเตเดเต TemplateServerApp เดเตเดฒเดพเดธเต เด
เดตเดเดพเดถเดฎเดพเดเตเดเตเดเดฏเตเด เดชเตเดฐเดงเดพเดจ เดฐเตเดคเดฟ เด
เดธเดพเดงเตเดตเดพเดเตเดเตเดเดฏเตเด เดตเตเดฃเด.
TemplateServerApp
#pragma once
#include <string>
#include <vector>
#include <Poco/Util/ServerApplication.h>
class TemplateServerApp : public Poco::Util::ServerApplication
{
protected:
int main(const std::vector<std::string> &);
};
int TemplateServerApp::main(const vector<string> &)
{
HTTPServerParams* pParams = new HTTPServerParams;
pParams->setMaxQueued(100);
pParams->setMaxThreads(16);
HTTPServer s(new TemplateRequestHandlerFactory, ServerSocket(8000), pParams);
s.start();
cerr << "Server started" << endl;
waitForTerminationRequest(); // wait for CTRL-C or kill
cerr << "Shutting down..." << endl;
s.stop();
return Application::EXIT_OK;
}
เดชเตเดฐเดงเดพเดจ เดฐเตเดคเดฟเดฏเดฟเตฝ เดจเดฎเตเดฎเตพ เดชเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดธเดเตเดเดฎเดพเดเตเดเดฃเด: เดชเตเตผเดเตเดเต, เดคเตเดฐเตเดกเตเดเดณเตเดเต เดเดฃเตเดฃเด, เดเตเดฏเต เดตเดฒเตเดชเตเดชเด. เดเดฑเตเดฑเดตเตเด เดชเตเดฐเดงเดพเดจเดฎเดพเดฏเดฟ, เดเตปเดเดฎเดฟเดเดเต เด เดญเตเดฏเตผเดคเตเดฅเดจเดเตพเดเตเดเดพเดฏเดฟ เดจเดฟเดเตเดเตพ เดเดฐเต เดนเดพเตปเดกเตโเดฒเตผ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดฃเด. เดเดฐเต เดซเดพเดเตเดเดฑเดฟ เดธเตเดทเตเดเดฟเดเตเดเดพเดฃเต เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเต
TemplateRequestHandlerFactory
class TemplateRequestHandlerFactory : public HTTPRequestHandlerFactory
{
public:
virtual HTTPRequestHandler* createRequestHandler(const HTTPServerRequest & request)
{
return new TemplateServerAppHandler;
}
};
เดเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดเดคเต เดเดฒเตเดฒเดพ เดธเดฎเดฏเดคเตเดคเตเด เดเดฐเต เดนเดพเตปเดกเตโเดฒเตผ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต - TemplateServerAppHandler. เดเดตเดฟเดเตเดฏเดพเดฃเต เดจเดฎเตเดเตเดเต เดจเดฎเตเดฎเตเดเต เดฌเดฟเดธเดฟเดจเดธเตเดธเต เดฏเตเดเตเดคเดฟ เดธเตเดฅเดพเดชเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเดจเตเดจเดคเต.
TemplateServerAppHandler
class TemplateServerAppHandler : public HTTPRequestHandler
{
public:
void handleRequest(HTTPServerRequest &req, HTTPServerResponse &resp)
{
URI uri(req.getURI());
string method = req.getMethod();
cerr << "URI: " << uri.toString() << endl;
cerr << "Method: " << req.getMethod() << endl;
StringTokenizer tokenizer(uri.getPath(), "/", StringTokenizer::TOK_TRIM);
HTMLForm form(req,req.stream());
if(!method.compare("POST"))
{
cerr << "POST" << endl;
}
else if(!method.compare("PUT"))
{
cerr << "PUT" << endl;
}
else if(!method.compare("DELETE"))
{
cerr << "DELETE" << endl;
}
resp.setStatus(HTTPResponse::HTTP_OK);
resp.setContentType("application/json");
ostream& out = resp.send();
out << "{"hello":"heh"}" << endl;
out.flush();
}
};
PostgreSQL-เตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป เดเดพเตป เดเดฐเต เดเตเดฒเดพเดธเต เดเตเดเดชเตเดฒเตเดฑเตเดฑเตเด เดธเตเดทเตเดเดฟเดเตเดเต. เดเดฐเต เดชเดเตเดเดฟเด เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดชเตเดฒเตเดฏเตเดณเตเดณ เดฒเดณเดฟเดคเดฎเดพเดฏ SQL เดจเดฟเตผเดตเดนเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดเดฐเต เดฐเตเดคเดฟเดฏเตเดฃเตเดเต ExecuteSQL(). เดเตเดเตเดคเตฝ เดธเดเตเดเตเตผเดฃเตเดฃเดฎเดพเดฏ เด เดจเตเดตเตเดทเดฃเดเตเดเตพเดเตเดเต โโเดกเดพเดฑเตเดฑ เดตเตเดฃเตเดเตเดเตเดเตเดเดฒเดฟเดจเต, เดจเดฟเดเตเดเตพ เดตเดดเดฟ เดเดฐเต เดเดฃเดเตเดทเตป เดจเตเดเตเดฃเตเดเดคเตเดฃเตเดเต เดเตเดฑเตเดฑเตเดเดฃเดเตเดทเตป() เดเตเดเดพเดคเต libpg API เดเดชเดฏเตเดเดฟเดเตเดเตเด. (เดเดฐเตเดชเดเตเดทเต เดชเดฟเดจเตเดจเตเดเต เดเดพเตป เด เด เดจเตเดคเดฟ เดคเดฟเดฐเตเดคเตเดคเตเด).
เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต
#pragma once
#include <memory>
#include <mutex>
#include <libpq-fe.h>
class Database
{
public:
Database();
std::shared_ptr<PGconn> GetConnection() const;
bool ExecuteSQL(const std::string& sql);
private:
void establish_connection();
void LoadEnvVariables();
std::string m_dbhost;
int m_dbport;
std::string m_dbname;
std::string m_dbuser;
std::string m_dbpass;
std::shared_ptr<PGconn> m_connection;
};
เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเดฒเตเดเตเดเต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฒเตเดฒเดพ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเดณเตเด เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดเตเดคเตเดคเดคเดพเดฃเต, เด เดคเดฟเดจเดพเตฝ เดจเดฟเดเตเดเตพ .env เดซเดฏเตฝ เดธเตเดทเตเดเดฟเดเตเดเตเดเดฏเตเด เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต.
.เดเดเดตเต
DATABASE_NAME=template
DATABASE_USER=user
DATABASE_PASSWORD=password
DATABASE_HOST=postgres
DATABASE_PORT=5432
เดจเดฟเดเตเดเตพเดเตเดเต เดเดฒเตเดฒเดพ เดเตเดกเตเด เดเดตเดฟเดเต เดเดพเดฃเดพเด
เดเดชเตเดชเตเตพ dockerfile, docker-compose.yml เดเดจเตเดจเดฟเดต เดเดดเตเดคเตเดจเตเดจเดคเดฟเดจเตเดฑเต เด เดตเดธเดพเดจ เดเดเตเดเด เดตเดฐเตเดจเตเดจเต. เดธเดคเตเดฏเด เดชเดฑเดเตเดเดพเตฝ, เดเดคเดฟเดจเต เดเตเดเตเดคเตฝ เดธเดฎเดฏเดฎเตเดเตเดคเตเดคเต, เดเดพเตป เดเดฐเต เดจเตเดฌเดพเดฏเดคเดฟเดจเดพเตฝ เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดเดฐเต เดคเดตเดฃเดฏเตเด เดฒเตเดฌเตเดฐเดฑเดฟเดเตพ เดชเตเดจเตผเดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดฃเตเดเดคเต เดเดตเดถเตเดฏเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดฎเดฑเดฟเดเตเดเต เดเตเดจเดจเตเดฑเต เดเตเดดเดชเตเดชเดเตเดเตพ เดเดพเดฐเดฃเด. เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, conan เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด เดเดตเดถเตเดฏเดฎเดพเดฏ เดกเดฟเดชเตปเดกเตปเดธเดฟเดเตพ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด, เด เดคเต โconan install .โ เดกเตเตบเดฒเตเดกเต เดเตเดฏเตโเดคเดพเตฝ เดชเตเดฐเดพ, เด เดคเต -s compiler.libcxx=libstdc++11 เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเตผ เดเตเดเดฟ เดจเตฝเดเตเดฃเตเดเดคเตเดฃเตเดเต, เด เดฒเตเดฒเดพเดคเตเดคเดชเดเตเดทเด เดจเดฟเดเตเดเดณเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดฒเดฟเดเตเดเต เดเตเดฏเตเดฏเตเดจเตเดจ เดเดเตเดเดคเตเดคเดฟเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดเตเดเตเดเด เดชเดฟเดถเดเตเดเตพ เดเดฃเตเดเดพเดเดพเตป เดธเดพเดงเตเดฏเดคเดฏเตเดฃเตเดเต. เดเตเดฑเดเตเดเต เดฎเดฃเดฟเดเตเดเตเดฑเตเดเดณเดพเดฏเดฟ เดเดพเตป เด เดชเดฟเดถเดเดฟเตฝ เดเตเดเตเดเตเดเดฟเดเตเดเดฟเดเดเตเดเตเดเดฏเดพเดฃเต, เดเตเดฑเดเตเด เดธเดฎเดฏเดคเตเดคเดฟเดจเตเดณเตเดณเดฟเตฝ เด เดชเตเดฐเดถเตเดจเด เดชเดฐเดฟเดนเดฐเดฟเดเตเดเดพเตป เด เดฒเตเดเดจเด เดฎเดฑเตเดฑเตเดณเตเดณเดตเดฐเต เดธเดนเดพเดฏเดฟเดเตเดเตเดฎเตเดจเตเดจเต เดเดพเตป เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเต.
เด
เดเตเดคเตเดคเดคเดพเดฏเดฟ, docker-compose.yml เดเดดเตเดคเดฟเดฏ เดถเตเดทเด, เดเดจเตเดฑเต เดธเตเดนเตเดคเตเดคเดฟเดจเตเดฑเต เดเดชเดฆเตเดถเดชเตเดฐเดเดพเดฐเด, เดเดพเตป เดชเดฟเดจเตเดคเตเดฃ เดเตเตผเดคเตเดคเต
เดฎเดฟเดเดเตเดเดคเตเด เดถเดเตเดคเดตเตเดฎเดพเดฏ, เดเดจเตเดจเดพเตฝ C++ เดชเตเดฒเตเดณเตเดณ เดตเดฟเดเดฟเดคเตเดฐเดฎเดพเดฏ เดญเดพเดทเดฏเดฟเตฝ REST API เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพ เดตเดฟเดเดธเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเตเดณเตเดณ เดชเดพเดคเดฏเดฟเตฝ เดคเตเดเดเตเดเดเตเดเดพเตผเดเตเดเต เด เดเตเดเดชเตเดฒเตเดฑเตเดฑเต เดธเดนเดพเดฏเดฟเดเตเดเตเดฎเตเดจเตเดจเต เดเดพเตป เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเต.
เดเตเดเดพเดคเต, เดเดตเดฟเดเต เดตเดพเดฏเดฟเดเตเดเดพเตป เดเดพเตป เดตเดณเดฐเต เดถเตเดชเดพเตผเดถ เดเตเดฏเตเดฏเตเดจเตเดจเต
เด เดตเดฒเดเดฌเด: www.habr.com