رفتن به مطلب
جامعه‌ی برنامه‌نویسان مُدرن ایران

جستجو در تالارهای گفتگو

در حال نمایش نتایج برای برچسب های '++c'.



تنظیمات بیشتر جستجو

  • جستجو بر اساس برچسب

    برچسب ها را با , از یکدیگر جدا نمایید.
  • جستجو بر اساس نویسنده

نوع محتوا


وبلاگ‌ها

چیزی برای نمایش وجود ندارد

چیزی برای نمایش وجود ندارد

تالارهای گفتگو

  • انجمن‌های آی او استریم
    • اخبار و اعلامیه‌های سایت
    • اسناد و قوانین مرجع
    • رویداد‌ها و جلسات
    • معرفی محصولات نوشته شده‌ بومی
    • مرکز نظرسنجی جامعه‌ی برنامه‌نویسان
    • مقالات و اسناد مشاوره‌ای
    • مرکز چالش برانگیز برنامه‌نویسان
    • رمز‌های موفقیت
    • ابزار‌ها و نرم‌افزارهای کاربردی برنامه‌نویسان حرفه‌ای
  • استارتاپی و کسب‌و‌کار
    • استارتاپ‌ها
    • سرمایه گذاری
    • شتاب دهنده‌ها
    • پارک‌های علم و فناوری و مراکز رشد
    • مصاحبه با استارت‌آپ‌ها
    • قوانین حقوقی
    • داستان‌های موفقیت
    • کارآفرینان و متخصصین
    • مشاوره اجرای کسب‌وکار
    • اخبار حوزه‌ی استارتا‌پی
    • آگهی‌های استخدامی
  • زبان‌های برنامه نویسی
    • برنامه نویسی در C و ‏++C
    • برنامه نویسی با Java
    • برنامه نویسی با JavaScript
    • برنامه نویسی با Go
    • برنامه نویسی با Python
    • برنامه نویسی با Delphi
    • برنامه نویسی با Ruby
    • برنامه نویسی با VB6
  • طراحی و توسعه وب
    • برنامه نویسی در PHP
    • برنامه نویسی با Node.JS
  • طراحی و توسعه وب اپلیکیشن‌ها
    • طراحی و توسعه در Angular
    • طراحی و توسعه در React.JS
    • طراحی و توسعه در Vue.JS
  • طراحی و توسعه موبایل و اِمبِد‌ها و تلوزیون‌ها
    • برنامه نویسی تحت محصولات اپل
    • برنامه نویسی تحت محصولات گوگل
    • طراحی و توسعه تحت محصولات دیگر
  • برنامه‌نویسی سطح پایین و سیستم عامل‌ها
    • سیستم عامل‌های آزاد
    • سیستم عامل‌های تجاری
    • مباحث آموزشی مرتبط با سیستم‌عامل
  • شبکه و اینترنت
    • مباحث و منابع آموزشي
    • سوالات و مشکلات
  • بانک‌های اطلاعاتی
    • پایگاه داده MySQL
    • پایگاه داده PostgreSQL
    • پایگاه داده SQLite
    • پایگاه داده MongoDB
    • پایگاه داده SQL Server
    • دیگر پایگاه‌های داده
  • برنامه نویسی تحت محصولات اپل
    • محیط توسعه Xcode
    • برنامه نویسی با Objective-C
    • برنامه نویسی با Swift
  • برنامه نویسی تحت محصولات مایکروسافت
    • محیط توسعه Visual Studio
    • برنامه نویسی در ASP.NET MVC
    • برنامه نویسی با #C
    • برنامه نویسی با Visual Basic.Net
    • طراحی و توسعه تحت Wpf
    • طراحی و توسعه تحت Universal و Fluent
  • طراحی و توسعه تجربه کاربری (UX) و رابط کاربری (UI)
    • طراحی رابط کاربری (UI)
    • طراحی تجربه کاربری (UX)
  • درخواست انجام پروژه (ویژه)
    • پروژه‌های منبع‌باز
  • سوالات و مباحث عامیانه
    • سوالات دانشجویی
    • فناوری و سخت افزار
    • سوالات مشاوره‌ای و تخصصی مرتبط با حوزه‌ی برنامه‌نویسی
  • سطل آشغال
    • سطل آشغال

Product Groups

  • کتاب‌ها و مقالات آموزشی

دسته ها

  • علمی
  • استارتاپی
  • برنامه‌نویسی
    • زبان‌های برنامه نویسی
    • معماری‌ها
  • کامپایلر و مفسر
  • محیط‌های توسعه
  • پلتفرم‌های توسعه
  • مجوز‌های نرم‌افزاری
  • فناوری‌ها
    • پردازش تصویر
    • اینترنت اشیاء
    • پردازش ابری (Cloud Computing)
    • چند سکویی (Cross-Platform)
    • بیگ دیتا (Big Data)
    • هوش مصنوعی (AI)
    • سخت افزار
    • نرم‌افزار و اپلیکیشن
    • اینترنت و شبکه
    • رمزنگاری
    • امبد‌ها (Embedded)
  • طراحی
    • تجربه کاربری
    • رابط کاربری

دسته ها

  • عمومی
  • گرافیکی
  • شبکه و ارتباطات

دسته ها

  • کامپایلر‌ها
  • محیط‌های توسعه
  • کتابخانه‌ها
  • ماژول‌ها و پلاگین‌ها
  • محصولات بومی
  • کتاب‌ها و مقالات
  • زبان‌ها و ابزار‌ها
  • طراحی و گرافیک

جستجو در ...

نمایش نتایجی که شامل ...


تاریخ ایجاد

  • شروع

    پایان


آخرین بروزرسانی

  • شروع

    پایان


فیلتر بر اساس تعداد ...

تاریخ عضویت

  • شروع

    پایان


گروه


شناسه گیت‌هاب


شناسه لینکدین


شهر

6 نتیجه پیدا شد

  1. در این آموزش با کمک کتابخانه‌ی chilkat که در اینجا معرفی شده است،‌ وارد حساب کاربری خود در iostream می‌شویم!. فرم را می‌توانید به سلیقه‌ی خود طراحی کنید . که فرم ورود به این صورت است. کد: import QtQuick 2.12 import QtQuick.Controls 2.12 import QtQuick.Window 2.12 import QtQuick.Dialogs 1.2 import QtQuick.Controls.Material 2.3 ApplicationWindow{ id:window width: 300 height: 350 title: "فرم ورود" visible: true flags: Qt.FramelessWindowHint | Qt.Window x: Screen.width / 2 - width / 2 y: Screen.height / 2 - height / 2 header: Label{ id: header color: "#fff" text: "iostream" font.family: "Times New Roman" font.pointSize: 40 topPadding: -5 verticalAlignment: Text.AlignVCenter horizontalAlignment: Text.AlignHCenter background: Rectangle{ color: "#23ab85" } } Button { id: close x: 0 y: -6 width: 34 height: 45 icon.name: "close-icon" icon.source: "qrc:/cancel.png" icon.color: "red" highlighted: true Material.accent: Material.shade("#fff",Material.Shade100) onClicked: window.close() } Item { MessageDialog{ id:message title: "خطا" visible: false } anchors.fill: parent TextField { id: email x: 60 y: 30 width: 180 font.pointSize: 15 font.family: "Times New Roman" placeholderText: "نام کاربری یا ایمیل" Material.accent: Material.Green } TextField { id: password x: 60 y: 80 width: 180 font.pointSize: 15 font.family: "Times New Roman" placeholderText: "گذر واژه" Material.accent: Material.Green echoMode: TextField.Password } Button { id: _login x: 55 y: 140 width: 186 height: 50 text: "ورود " highlighted: true font.pointSize: 15 font.family: "Times New Roman" topPadding: 3 Material.accent: Material.shade("#3e4148",Material.Shade500) onClicked: { if(Login.login(email.text,password.text)){ userpanle._url=Login.panle() userpanle.visible=true } else{ message.text="ورود ناموفق بود!" message.visible=true } } } } footer: Label{ text: "جامعه‌ی‌ برنامه‌نویسان مٌدرن ایران" color: "#fff" height: 50 topPadding: -6 verticalAlignment: Text.AlignVCenter horizontalAlignment: Text.AlignHCenter font.pointSize: 18 font.family: "Times New Roman" background: Rectangle{ color: "#23ab85" } } UserPanle{id: userpanle; visible: false;} } اکنون یک کلاس ایجاد کنید که بتوانیم درخواست‌های خود را ارسال کنیم!. در اینجا کلاس Login و دارای دو متد ‌login و userPanel است. #ifndef LOGIN_H #define LOGIN_H #include <QObject> #include <QDesktopServices> #include <QUrl> #include <CkHttp.h> #include <CkHttpRequest.h> #include <CkHttpResponse.h> class Login : public QObject { Q_OBJECT public: explicit Login(QObject *parent = nullptr); Q_INVOKABLE bool login(const QString & email_username,const QString & password); Q_INVOKABLE QString userPanel(); signals: public slots: private: QString m_finalRedirectUrl; CkHttp m_http; }; #endif // LOGIN_H متد login دو آرگومان ورودی دریافت می‌کند: ۱.نام کاربری یا ایمیل 2. گذرواژه این درمورد بعضی از وبسایت‌ها صدق نمی‌کند!.یعنی علاوه پُر کردن فیلد‌های خواسته شده، فیلد‌های دیگری را هم باید پُر کنید تا به شما اجازه ورود بدهند!. متد دوم مربوط به صحفه‌ای است که ما درخواست کرده‌ایم و نتیجه برگشت داده می‌شود!. در ادامه بیشتر توضیح خواهم داد. تابع login را به این صورت تکمیل می‌کنیم!. #include "login.h" #include <QDebug> Login::Login(QObject *parent) : QObject(parent) { if(m_http.UnlockComponent("30-day trial")!=true) qDebug()<<m_http.lastErrorText(); } bool Login::login(const QString &emailـusername, const QString &password) { m_request.AddParam("auth",emailـusername.toUtf8()); m_request.AddParam("password",password.toUtf8()); m_request.put_Path("/login"); CkHttpResponse* m_response; m_response= m_http.SynchronousRequest("www.iostream.ir",443,true,m_request); if(m_response->get_LastMethodSuccess()!=true) { qDebug()<<m_response->lastErrorText(); return false; } m_finalRedirectUrl= m_response->finalRedirectUrl(); userPanel(); delete m_response; return true; } QString Login::userPanel() { QDesktopServices::openUrl(QUrl(m_finalRedirectUrl)); // return m_finalRedirectUrl; } کلاس CkHttpRequest باید هر بار درخواستی را آماده، و سپس با متد SynchronousRequest از کلاس CkHttp ارسال کند. با استفاده از متد AddParam پارامتر ‌های لازم را اضافه می‌کنیم، مرورگر خود را باز کنید وارد صحفه‌ی ورود به حساب کاربری ‌شوید،‌ بر روی فیلد اول(نام کاربری یا ایمیل) کلیک راست کرده و گزینه Inspect را انتخاب کنید. تگ مربوط به این فیلد نمایش داده می‌شود. <input type="text" placeholder="نام کاربری یا ایمیل" name="auth" id="auth" value="*************"> و فیلد دوم(گذرواژه) هم به همین صورت. <input type="password" placeholder=" گذرواژه" name="password" id="password" value="********"> فرض بر این گرفته می شود شما با HTML آشنایی دارید!. متد AddParam دو ارگومان ورودی دریافت می‌کند: 1.نام فیلد 2.مقدار فیلد به ویژگی نام(name) دقت کنید،‌ با این ویژگی و نامی که برای آن انتخاب می‌کنیم می‌توانیم به مقدار(value) آن دسترسی داشته باشیم! پس ورودی اول متد AddParam برابر با نام فیلد می‌شود(auth) و ورودی دوم هم مقدار فیلد است،‌ که در اینجا مقادیر از پارامتر‌های تابع ‌login دریافت می‌شوند. با متد put_Path مسیر صحفه‌ی مورد نظر را مشخص می‌کنیم، که صحفه‌ی مورد نظر ما ‌login/ است. از کلاس CkHttpResponse برای دریافت پاسخ استفاده می‌کنیم، هنگامی که ما درخواستی را ارسال می‌کنیم، یک پاسخ در قالب یک شئ از کلاس ‌CkHttpResponse برگشت داده می‌شود. پاسخ می‌تواند موفقیت آمیز باشد یا نباشد! که این مورد می‌تواند با متد get_LastMethodSuccess بررسی شود. در نهایت درخواست خود را ارسال می‌کنیم! متد SynchronousRequest چهار آرگومان ورودی دریافت می‌کند: 1.نام میزبان 2.پورت ورودی 3.تایید کردن یا نکردن گواهینامه‌ی ‌ssl 4.درخواستی را که از قبل اماده کرده‌ایم نام میزبان در این مثال www.iostream.ir است. پورت ورودی 443 است که پروتکل ‌HTTPS از ان استفاده می‌کند. می‌توانید تایید کنید که اطلاعات شما بصورت رمزنگاری شده فرستاده شوند یا نه. درخواستی را که از قبل اماده کردیم m_request. با استفاده از متد finalRedirectUrl اخرین صحفه‌ای که کاربر منتقل شده است برگشت داده می‌شود، که در متغییر m_finalRedirectUrl ذخیره خواهد شد. اکنون می توانیم با استفاده از متد openUrl از کلاس QDesktopServices ادرس صحفه‌ی ذخیره شده را در مرورگر باز کنیم!. یا می‌توانید از ‌‌ WebEngineView در ‌qml برای نمایش استفاده کنید. به این صورت: import QtWebEngine 1.7 import QtQuick.Window 2.3 Window{ width: 1000 height: 600 title: "userPanel" visible: true property string _url: "" WebEngineView{ anchors.fill: parent url: _url } }
  2. سید محمد عباسی

    با سلام خدمت شما دوستان، درخدمت شما هستم با آموزش کتابخانه‌ی chilkat، کتابخانه‌ای مفید و کارآمد برای کار با شبکه، که بیشترین تمرکز را در شبکه دارد! به راحتی می‌توانید با این کتابخانه کار کنید. کافیست کمی به زیر و بم این کتابخانه اشنا شوید تا انچه برنامه شما به شبکه نیاز دارد براورده سازد! در این اموزش نحوه اضافه کردن کتابخانه در محیط Qt Creator همراه با یک مثال ساده دانلود فایل را یاد خواهید گرفت. ابتدا نسخه متناسب با کامپایلر خود را از اینجا دانلود کنید و سپس گام به گام این مراحل را انجام دهید. 1.روی پروژه خودتان راست کلیک کنید و گزینه AddLibrary را انتخاب کنید.همانند تصویر زیر: 2.گزینه ExternalLibrary را انتخاب کنید، روی Next کلیک کنید. 3.تیک مربوط به نوع سیستم عامل خود را انتخاب کنید(در این مثال Linux) و فایل libchillat-9.5.0.a را انتخاب کنید، روی Next کلیک کنید. 4.در اینجا با کلیک بر روی Next کتابخانه را به پروژه خود اضافه کنید. 5. برنامه را اجرا کنید. فرم را به سلیقه‌ی خود می‌توانید طراحی کنید. اکنون یک کلاس با نام دلخواه اضافه کنید که در این مثال کلاس download است، ما فقط به یک تابع نیاز خواهیم داشت که ادرس فایل و مکان ذخیره فایل را گرفته و فایل را دانلود کند و در مکان مورد نظر ذخیره کند.پس چیزی شبیه به این را خواهیم داشت! #ifndef DOWNLOAD_H #define DOWNLOAD_H #include <QObject> #include <QFileDialog> #include <CkHttp.h> class Download : public QObject { Q_OBJECT public: explicit Download(QObject *parent = nullptr); Q_INVOKABLE bool donwloadFile(const QString & url); signals: public slots: private: QString m_filePath; bool m_success; CkHttp m_http; }; #endif // DOWNLOAD_H از Q_INVOKABLE به منظور دسترسی متد در فایل qml استفاده می‌کنیم، و از متغیر های m_filePath برای ذخیره مکان و m_success برای دانلود و عدم دانلود! از کلاس CkHttp برای دانلود فایل استفاده خواهیم کرد، این کلاس متد‌‌های مختلفی را فراهم می‌کند، که هر کدام کاربردی دارند! برای دانلود ما از متد Download استفاده می‌کنیم، این متد در صورت موفقیت در دانلود فایل true و عدم دانلود false را برگشت می‌دهد. در فایل cpp به این صورت تابع خود را تکمیل می‌کنیم! #include "download.h" #include <QDebug> Download::Download(QObject *parent) : QObject(parent) { m_success= m_http.UnlockComponent("30-day trial"); if(m_success!=true) qDebug()<<"Not UnlockComponent Error: "<<m_http.lastErrorText(); } bool Download::donwloadFile(const QString &url) { m_filePath=QFileDialog::getSaveFileName(nullptr,"محل ذخیره فایل را انتخاب کنید"); if(m_filePath!="") { m_success= m_http.Download(url.toUtf8(),m_filePath.toUtf8()); if(m_success!=true) { qDebug()<<"Error Download: "<<m_http.lastErrorText(); return false; } qDebug()<<"ContentType: "<<m_http.lastContentType(); return true; } return false; } بعضی از کلاس های این کتابخانه نیاز به مجوز دارند! بدون مجوز نمی‌توان از کلاس ها استفاده کرد! در کانستراکت کلاس ابتدا با متد UnlockComponent به مدت 30 روز رایگان استفاده می‌کنیم(30-day trial). در صورتی که مجوز به ما داده شود متغیر m_success برابر با true خواهد شد، در غیر اینصورت می‌توان با متد lastErrorText خطا ها را مشاهده کرد و نسبت به رفع آن اقدام کرد.با استفاده از متد getSaveFileName از کلاس QFileDialog مکان فایل را در صورت انتخاب در متغیر m_filePath ذخیره می‌کنیم، بعد از انتخاب مکان ذخیره فایل بررسی می‌کنیم متغیر m_filePath خالی نباشد!. متد Download دو ارگومان ورودی دریافت می‌کند! 1.ادرس فایل 2. محل ذخیره فایل در صورتی که فایل با موفقیت دانلود شود با متد lastContentType نوع فایل را نمایش داده می‌شود و فایل در مکانی که از قبل انتخاب کردیم ذخیره می‌شود. به عنوان مثال می‌خواهیم قالب صحفه‌ی نخست iostream را در یک فایل txt ذخیره کنیم! پس به این صورت عمل می‌کنیم.
  3. کلاس Single Tone ژنریک با استفاده از اشاره گرهای هوشمند برای ساخت آبجکتی از یک کلاس با یک نمونه واحد برای صرفه جویی در حافظه مصرفی #ifndef SINGLETON_H #define SINGLETON_H #include <memory> namespace BP { template<typename CL> class SingleTone { protected: SingleTone() = default; // defualt ctor virtual inline ~SingleTone(){ delete instance; } private: static CL* instance; SingleTone(const SingleTone&) = delete; //copy ctor SingleTone(SingleTone&&) = delete ; //move ctor SingleTone& operator=(const SingleTone&) =delete ; // copy oprator assignment SingleTone& operator=(SingleTone&&) =delete ; // move oprator assignment static void destory(CL* my){ delete my ; instance = NULL; } public: std::unique_ptr<CL , decltype(&destory)> factory(){ //lazy instation if(instance == NULL){ instance = new CL(); } return std::unique_ptr<CL , decltype(&destory)>(instance , &destory); } }; template<typename CL> CL* SingleTone<CL>::instance = NULL; } #endif // SINGLETON_H ونحوه استفاده از کلاس فوق من کلاسی دارم برای ارتباط با پایگاه داده به نام DBProvider که در این کلاس متدی به نام OpenConnection را صدا زدم. توجه کنید که هر کلاسی که بخواهید را می توانید به حالت single tone ایجاد نمایید. روش اول فراخوانی db = SingleTone<DBProvider>::factory ()->OpenConnection () روش دوم فراخوانی db = (*SingleTone<DBProvider>::factory ()).OpenConnection (); فقط توجه داشته باشید که آبجکتهایی که single tone هستند یک اشاره گر واحد دارند بنابراین در کل برنامه یکسان خواهند بود.
  4. با سلام ! دو قطعه برنامه ی زیر یکی آرایه ۱۰۰۰۰۰ تایی در حافظه Stack ساخته و به صورت Random مقداردهی شده و Sort میشود. کد اول به زبان ++C و با استاندارد 11 نوشته شده است که حدود ۷ دقیقه و کد دوم به زبان C نوشته شده است که حدود 1 دقیقه زمان میبرد ! CPU : Intel i7 M 620 (4) @ 2.667GHz آیا راهی برای بهینه سازی سرعت اجرای برنامه ی نوشته شده به زبان ++C هست ؟ کد نوشته به زبان ++C : #include <iostream> #include <functional> #include <utility> #include <array> #include <random> #include <chrono> const unsigned int MAX_LENGTH = 100000; bool Compare(unsigned int FirstVariable,unsigned int SecondVariable){ if(FirstVariable < SecondVariable) return true; return false; } void SortArray(std::array<unsigned int,MAX_LENGTH> &MyArray,std::function<bool(unsigned int,unsigned int)> function){ for(unsigned int index=0;index < MAX_LENGTH;++index) for(unsigned int AnotherIndex=0;AnotherIndex<MAX_LENGTH;++AnotherIndex) if(function(MyArray[index],MyArray[AnotherIndex])) std::swap(MyArray[index],MyArray[AnotherIndex]); } void PrintArrayElements(const std::array<unsigned int,MAX_LENGTH> &MyArray){ for(const auto &item : MyArray) std::cout << item << std::endl; } void RandomizeArray(std::array<unsigned int,MAX_LENGTH> &MyArray){ std::mt19937_64 Random(static_cast<int>(std::chrono::high_resolution_clock::now().time_since_epoch().count())); std::uniform_int_distribution<> RandomGenerator(0,1000); for(unsigned int index=0;index<MAX_LENGTH;++index) MyArray[index] = static_cast<unsigned int>(RandomGenerator(Random)); } int main(){ std::array<unsigned int,MAX_LENGTH> MyOrginalArray; RandomizeArray(MyOrginalArray); SortArray(MyOrginalArray,Compare); PrintArrayElements(MyOrginalArray); return 0x0000; } کد نوشته شده به زبان C : #include <stdio.h> #include <stdlib.h> #include <time.h> #include <stdbool.h> #define MAX_LENGTH 100000 bool Compare(unsigned int FirstVariable,unsigned int SecondVariable){ if(FirstVariable < SecondVariable) return true; return false; } void SortArray(unsigned int *MyArray,bool (*compare)(unsigned int,unsigned int)){ unsigned int tmp=0; for(unsigned int index=0;index < MAX_LENGTH;++index){ for(unsigned int AnotherIndex=0;AnotherIndex<MAX_LENGTH;++AnotherIndex){ if(compare(MyArray[index],MyArray[AnotherIndex])){ tmp = MyArray[index]; MyArray[index] = MyArray[AnotherIndex]; MyArray[AnotherIndex] = tmp; } } } } void RandomizeArray(unsigned int *MyArray){ srand(time(NULL)); for(unsigned int index=0;index < MAX_LENGTH ;++index) MyArray[index] = rand() % 1000; } void PrintArrayElements(unsigned int *MyArray){ for(unsigned int index=0;index<MAX_LENGTH;++index) fprintf(stdout,"%d\n",MyArray[index]); } int main(){ unsigned int Array[MAX_LENGTH]; RandomizeArray(Array); SortArray(Array,Compare); PrintArrayElements(Array); return 0x0000; }
  5. سلام خدمت اساتید محترم . در مورد qint64 میخواستم اطلاعاتی کسب کنم. برای چه مواردی در برنامه نویسی با Qt استفاده می شود ؟ با تشکر.
  6. درود از دوستان کسی وقت داره آموزش فارسی ساخت listmodel توسط C++ و ارسالش به qml رو بزاره ما هم استفاده کنیم. تو اغلب سایت های خارجی خیلی خلاصه وار بحث شده. اگر کسی تجربه ای داره ممنون میشم اینجا آموزششو بزاره. چون ظاهرا در پست قبلی من نتونستم با کلاس و توابع خود qml یه سرچ باکس برای listview بسازم و باید حتما با C++ لیست مدل رو ساخت و توسط ارسال به qml بشه سرچ کرد با سپاس
×