رفتن به مطلب
مرورگر پیشنهادی آرساکیا گیم مرورگر های تحت موتور کرومیوم می‌باشد، برای دانلود روی مرورگر انتخابی خود کلیک کنید
Google Chrome Microsoft Edge Ungoogled Chromium Brave Opera GX Opera

ارسال‌های توصیه شده

به نام خالق یکتا که به حل کردن باگ های پروژه هامون کمک کرد (الله)

 

سلامممممممممممممممممممممممممممم عرض میکنم خدمت یک یک شومممما دوستان عزیز

امیدوارم حالتون خوب باشه

 

این تاپیک مطمعنم جالب ترین آموزشی میشه که توی عمرتون دیدید

میخوایم یاد بگیریم چطوری یک وب سایت رو بدونه HTML/CSS/JS بسازیم!

فقط با سی پلاس پلاس

 

بی مقدمه میرم سراغ کار های اصلی

 

1- روش قدیمی (ولی پرکاربرد بدون نیاز به یادگیری موارد بیشتر) روش CGI (Common Gateway Interface)

توضیح این روش: در این روش وب سرور به محض ورود میاد و درخواست ها رو به فایل کامپایل شده ی .cpp (که فرمتش .cgi هستش) میده و خروجی ای که توی .cpp نوشتین رو نشون کاربر میده

مذیت ها: نیازی به یادگیری فریم ورک های سی پلاس پلاس برای طراحی/برنامه نویسی وب ندارین - کنترل کامل روی خروجی

معایب: هر درخواست یک پروسه جدید میسازه و ترافیک رو زیاد میکنه - مدیریت Session ها و Routing ها سرویس میکنه

مناسب: پروژه های کوچیک و آموزشی

آموزش:

آپاچی/ان جین ایکس (Nginx)/لایت اسپید (روی لینوکس) رو نصب کنید

پوشه ی جدید به اسم "cgi-bin" بسازید

یک فایل C++ (.cpp) داخلش قرار بدید

(وقتی که کد هارو نوشتید) با GNU GCC کامپایلش کنید به فایل .cgi (کد):

gcc fileName.cpp -o fileName.cgi
g++ fileName.cpp -o fileName.cgi

توضیح:

fileName.cpp: اسم فایل سی پلاس پلاس

-o: مخفف شده ی -Output یعنی خروجی

fileName.cgi: اسمی که میخواید خروجی عه .cgi داشته باشه

آموزش:

چیز هایی که باید قرار بدید توی فایل .cpp عه خودتون:

// لایبرری های مورد نیاز عه خودتون
#include <iostream> // باید باشه تا بتونیم خروجی رو بسازیم
  
int main () { // مکان شروع برنامه
  cout << "Content-type: text/html\n\n"; // به مرورگر میگه که این یک فایل HTML هستش و باید خروجی HTML بدی
  cout << "<html>\n\t" << "<head>\n\t\t" << "<title>A course by JavadInteger</title>\n\t" << "</head>\n\t" << "<body>\n\t\t" << "<h1>Welcome!</h1>\n\t" << "</body>\n" << "</html>";
  /*
  توضیح کد:
  میاد و اچ تی ام ال رو باز میکنه و میره خط بعدی و یک تب میزنه
  تگ هد رو باز میکنه و میره خط بعدی و دو تا تب میزنه
  تایتل رو میزاره و میره خط بعدی و یک تب میزنه
  هد رو میبنده و میره خط بعد و تب میزنه
  بادی باز میکنه میره خط بعد دو تا تب میزنه یک هدر شماره ی یک میزاره ول کام میگه میبنده هدر یک رو بادی رو میبنده اچ تی ام ال رو هم میبنده و تمام
  */
  
  return 0; // حتما عه حتما عه حتما یادتون باشه که بزارید این رو!
}

این روش یک روش تقریبا منسوخ شدست و فقط توی آموزش ها استفاده میشه

حالا برای اجرا کافیه برید به:

http://localhost/cgi-bin/yourFile.cgi

 

2- روش مدرن با فریم ورک های تحت وب ایه سی پلاس پلاس

1- CppCMS - یکی از قویترین ها (از نظر من: رتبه #2)

مذیت ها: فریم ورک قدرتمند و سریع عه تحت وب

پشتیبانی ها: قالب ها, فریم ها, کش ها و i18n (Internationalization) (توضیح مختصر: i18n مخفف Internationalization هستش, i عه اول و n آخر و 18 کاراکتر حذف شده از وسط i و n, به معنی این هستش که مثلا من الان مینویسم Hello, اگه یه ایرانی اومدش نگه Hello, بگه "سلام")

مشابه: فریم ورک ها و لایبرری های جاوااسکریپت

مثال ساده:

#include <cppcms/application.h>
#include <cppcms/application_pool.h>
#include <cppcms/service.h>
  
class MyApp : public cppcms::application {
public:
  MyApp(cppcms::service &srv) : cppcms::application(srv) {}
  void main (std::string url) {
    response().out() << "<pre>Hello From JavadInteger</pre><br />\n<p>CppCMS Tutorial</p>";
  }
};

int main (int argc, char** argv) {
  cppcms::service srv(argc, argv);
  srv.application_pool().mount(cppcms::application_factory<MyApp>());
  srv.run();
}

این واقعیتش اولین پروژه ای بودش که با سی پی پی سی ام اس نوشتم, خیلی باحال بود حس اولین خروجی =))

 

2- Crow - یکی دیگه از قویترین ها (از نظر من: #1)

مذیت ها: سبک

مناسب برای: Rest API ها و سرویس های سبک

مشابه: Flask, FastAPI

مثال ساده:

#include "crow_all.h";

int main() {
  crow::SimpleApp App;
  
  CROW_ROUTE(app, "/") ([](){
    return "Hello from JAVADInteGer";
  });
  
  app.port(8080).multithreaded().run();
}

ایشون میان و چاپ میکنن "Hello From JAVADInteGer", یکی از بهترین فریم ورک ها برای شماهایی که دارید تازه وارد این حوزه میشید (با سی پلاس پلاس)

 

3- Drogon - سوپر قوی عه تمامشون! (#-0)

مذیت ها: مدرن ترینشون, برای ساخت یک سایت کامل استفاده میشه! از صفر!

پشتیبانی ها: ORM, بلادرنگ (WebSocket), پلاگین ها

مشابه: فریم ورک های پیشرفته dJango, Rails, Laravel یا Symfony

مثال:

#include <drogon/drogon.h>
  
int main () {
  drogon::app().registerHandler("/", [](const drogon::HttpRequestPtr&, (std::function<void (const drogon::HttpResponsePtr &)> callback {
    auto resp = drogon::HttpResponse::newHttpResponse();
    resp->setBody("Hello From std::JavadInteger::drogon");
    callback(resp);
  }).run();
}

یک نمونه ی ساده از Drogon, ولی خب ساده ترینشون رو پایین تر اعلام کردم:

 

4- Drogon - اولترا مگا لجندری پرمیوم بای جواد اینتیجر (#-99999)

متاسفیم...

فقط اولترا مگا لجندری پرمیوم ها دسترسی به این مطلب رو دارن ولی شما سطحت خیلی کمه (نیو)

اما در حد معرفی میتونیم کمکتون کنیم =))

"اولترا مگا لجندری پرمیوم" که "UltraMegaLegendaryPremium++" هم شناخته میشود, یکی از فریم ورک هایی هستش که جواد اینتیجر (عه خودمم که =))) ساخته برای راحت تر شدن همه این چرت و پرت ها, تقریبا همه ی کد ها توی دراگون و cppCMS و حتی Crow اظافی هستن, اما خب فریم ورکی که من ساختم (با Boost:Asio) خیلی ساده تر و پرکاربرد تر از این حرفاس, تازه کلی قابلیت های باحال هم داره, مثلا میتونین بک اند رو هم با ساده ترین روش ممکن بنویسید باهاش, برای اطلاعات بیشتر بهم پیام بدین تا واستون بفرستم, خیلی قابلیت های بیشتری هم داره البته مثلا MVC, Middleware, Routing System, Security, DB و...

 

ممنونم که همراهم بودید تا آموزش های بعدی شما رو به خدای بزرگ میسپارم

خدا یار و نگهدارتون باشه!

 

The only things making you unhappy are your own thoughts

:My Account

Faise.png

:My Brothers

Olden.png

Parshan.png

MohammadAli.png

Shibemarg.png

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید.
توجه: مطلب ارسالی شما پس از تایید مدیریت برای همه قابل رویت خواهد بود.

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   بازگردانی قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
  • اضافه کردن...