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

تمامی فعالیت ها

این جریان به طور خودکار بروزرسانی می شود     

  1. امروز
  2. سلام و خسته نباشد میخوام یک ویدئو در اندروید نمایش بدم زمانی که بر روی یک دکمه کلیک شد اون ویدئو رو به صورت تمام صفحه نمایش داده بشه ، این روش رو با استفاده از ApplicationWindow انجام دادم ویدئو رو در ApplicationWindow قرار دادم و زمانی که بر روی دکمه کلیک میکنم ApplicationWindow به صورت showFullScreen درمیاد . حالا مشکل من اینجاست که ApplicationWindow که من در ویدئو استفاده کردم به صورت یک پنجره جدا گانه بیرون از ApplicationWindow اصلی نمایش داده میشه . و این باعث میشه که درخروجی که برای موبایل میگیرم ویدئو قابل نمایشی نباشه. سوالم اینجاست که چطوری میتونم ApplicationWindow به گونه ای تعریف کنم که در چهارچوب ApplicationWindow اصلی قرار بگیره و بیرون نیفته ؟ ممنون میشم راهنماییم کنید با تشکر
  3. فرهاد شیری

    یک سر به لینک زیر بزنید Using ActiveX controls and COM in Qt
  4. دیروز
  5. mahan

    با عرض سلام و ادب بنده یک activeX با پسوند ocx دارم .میخوام در برنامه ام که توسط qt نوشته شده استفاده کنم چطور باید این component را به برنامه اضافه کنم و چطور فراخوانی کنم با سپاس فراوان
  6. هفته گذشته
  7. علی اکبر رشیدی

    میشه نمونه کدی چیزی بزارین متوجه بشیم چطوری باید پیاده سازی کنند
  8. کامبیز اسدزاده

    اتفاقاً من یه چیزی شبیه به همین مورد رو توی برنامه‌های خودم ساختم و از همین کنترلی که گفتم یعنی GridLayout استفاده کردم که نگه‌دارنده‌ی داخلی رو واکنشگرا بر اساس تغییر اندازه تنظیم می‌کنه مثل همین تلگرام. منطق پیاده سازی این یکم باید بر اساس ابعاد صفحات نمایشی و طول و عرض پنجره پیاده سازی بشه که نسبت به نوع پلتفرم متفاوته.
  9. علی اکبر رشیدی

    منظورمو متوجه نشدین فکر کنم یه بار برنامه تلگرام دسکتاپ رو بازکنید برنامه رو از عرض پنجره resize کنید ببینید چه اتفاقی می افته من دقیقا میخوام اینطوری باشه این لینکو نگاه کنید اگر متوجه نشدید بازم Fragments Tutorial With Example In Android Studio Creating and Using Fragments · codepath/android_guides Wiki · GitHub
  10. کامبیز اسدزاده

    راه حل این مسئله ساده‌تر از پیچیدگی که فکر می‌کنید هست. کافیه از GridLayout استفاده کنید که نسبت به مشخصه‌ی flow می‌تونید به همین چیزی که می‌خواهید برسید. مثال: https://doc.qt.io/qt-5/scalability.html ApplicationWindow { id: root visible: true width: 480 height: 620 GridLayout { anchors.fill: parent anchors.margins: 20 rowSpacing: 20 columnSpacing: 20 flow: width > height ? GridLayout.LeftToRight : GridLayout.TopToBottom Rectangle { Layout.fillWidth: true Layout.fillHeight: true color: "#5d5b59" Label { anchors.centerIn: parent text: "Top or left" color: "white" } } Rectangle { Layout.fillWidth: true Layout.fillHeight: true color: "#1e1b18" Label { anchors.centerIn: parent text: "Bottom or right" color: "white" } } } }
  11. سلام دوستان من میخواستم عملکرد شبیه فرگمنت ها تو اندروید رو برای کیوت پیاده سازی کنم یعنی وقتی صفحه عریض میشه ( فضای کافی برای نمایش یک المان دیگر فراهم باشد ) یکی از قسمت های بصری برنامه بیاد و کنار فرم اصلی برنامه ما در یک صفحه قرار بگیرد. منظورم به این شکله اگه دیده باشید توی برنامه تلگرام یا خیلی از برنامه های دیگه وقتی صفحه عریض میشه قسمتی که مربوط به نمایش چت هست در کنار لیست افرادی که چت کردیم نشون داده میشه ( وضعیت شماره دو در تصویر زیر ) و وقتی صفحه جای کافی برای نمایش هر دو قسمت را ندارد یکی از آنها مخفی میشود. ( وضعیت شماره یک در تصویر زیر ) توضیح: من این سوالو تو استک پرسیدم یکی از برنامه نویسای ژاپنی برای پاسخ به این سوال یک پروژه تو گیت گذاشتن که تقریبا همین کارو میکنه ولی میخواستم یک مثال ساده از لیست برای این کار مثل همین کاری که تلگرام کرده یکی از دوستان کمک کنه پیاده سازی کنیم تا برای همه قابل استفاده و بار آموزشی داشته باشه. لینک سوال در استک | لینک پروژه در گیت هاب
  12. فعال‌سازی مشاوره‌های ویژه در صفحه‌ی اینستاگرام و تلگرام.

  13. hmdfar

    یک کتاب خیلی عالی و حرفه ای که توسط یک فرد کاملا حرفه ای به خوبی نگارش شده واقعا ارزش خریدش رو داره و برای کسانی که میخوان کیوت رو شروع کنن بهترین مرجع فارس است
  14. مهدی کرامتی

    معرفی Permission Control System SDK برای ASP.NET MVC

    مکانیسم Role Management در ASP.NET Identity کمبودهای بسیاری دارد، از جمله اینکه جهت مشخص کردن سطح دسترسی، نام Role ها میبایست در صفت Authorize نوشته شده و Hard Code شود. این بدان معناست که برای انجام هر گونه تغییر در کنترل دسترسی مجبور خواهید بود سورس برنامه تان را دستکاری کنید. همچنین، عدم وجود امکانی برای ویرایش کاربران و Role ها، کار کردن با این مکانیسم را مشکل می کند. در راستای حل این مشکلات و کمبودها، ما یک کیت توسعه نرم افزار (SDK) به نام Permission Control System طراحی و ارائه کرده ایم. با استفاده از این SDK نیاز نیست هیچ چیزی را در برنامه جهت مدیریت دسترسی Hard Code کنید، تمام امکانات مدیریتی Dynamic است! پس از فعال کردن این SDK، هر Controller یا Action ای که به پروژه تان اضافه کنید پس از اجرای بعدی برنامه به صورت خودکار در صفحه Role Manager ظاهر خواهد شد و می توانید انتخاب کنید که کدام گروه از کاربران به چه Action ای بر حسب Role شان دسترسی خواهند داشت. آموزش کامل ویدئویی این SDK نیز با تشریح کد آن به صورت خط به خط برنامه در همین پکیج ارائه شده است. علاوه بر آموزش اجزاء SDK، موارد زیر نیز در آموزش ویدئویی ارائه شده است: آموزش کامل ASP.NET Identity با تشریح کامل کدها روش تغییر نام جداول و ستونهای ایجاد شده توسط مکانیسم Identity طراحی و پیاده سازی سیستم رمز یک بار مصرف (OTP) جهت لاگین به سیستم ایجاد و استفاده از Attribute ها ایجاد و استفاده از Global Filter ها برای کنترل دسترسی ایجاد و استفاده از HTML Helper ها لینک صفحه مربوط به SDK و آموزش ویدئویی https://github.com/delphiassistant/permission_control_system لطفا نظرات و پیشنهادات خود درباره بهبود این SDK را در پاسخ این نوشته ارسال کنید. با تقدیم احترام، مهدی کرامتی.
  15. amirb

    با توجه به این که دیتابیس نیز به راحتی قابل استخراج هست و اگر بخوام روی توکن رمزگذاری هم انجام بدم بازم با استخراج کد qml الگوریتم قابل مشاهده هست فکر کنم استفاده از qml compiler راه حل مناسب باشه. سوالی که باقی می مونه اینه که با استفاده از qml compiler اطلاعات ذخیره شده در qsettings هم به باینری تبدیل میشه یا خیر؟
  16. کامبیز اسدزاده

    پردازنده‌ها چگونه طی ۴۰ سال گذشته تغییر کرده‌اند؟

    پردازنده‌ها چگونه طی ۴۰ سال گذشته تغییر کرده‌اند؟ پردازنده‌ها از پیدایش تا‌به‌حال، در‌حال‌پیشرفت بوده‌اند و روز‌به‌روز درکنار قدرتمند‌ترشدن، مصرف انرژی آن‌ها هم بهینه‌سازی شده است. اما این پیشرفت‌ها چقدر بوده و در آینده چگونه خواهد بود؟ وقتی از طرح‌های پیشرفت تکنولوژی، به‌ویژه قانون مور، صحبت به‌میان می‌آید، طرح «۳۵ سال از داده‌های ریزپردازنده‌ها» که آن را ام. هورویتز، اف. لابونت، اُ. شچم، کی. الوکتن، ال. هموند و سی. بَتِن جمع‌آوری کرده‌اند، می‌تواند یکی از طرح‌های مهم باشد. بعد‌ها، سی. مور هم اطلاعاتی به این پروژه اضافه کرد. این طرح را چه با خطوط پیشرفت و چه بدون آن‌ها می‌توان در جاهای مختلفی از اینترنت پیدا کرد؛ هر‌‌چند این طرح فقط تا سال ۲۰۱۰ کامل شده و در چند سال اخیر، کامل نشده است. برای به‌روزکردن داده‌های این طرح که هر‌چند درست‌بودن آن تا سال ۲۰۱۰ مشخص نیست، داده‌هایی از g3data و داده‌های دیگری هم از پردازنده‌های AMD Opteron، پردازنده‌های Intel Xeon، پردازنده‌های Power7+ و Power8 مانند Xeon Phi به این طرح اضافه شدند. جزئیات این داده‌های جدید را به‌صورت خام می‌توانید درون این فایل زیپ ببینید. نتیجه‌ی این طرح عکس زیر است: درادامه، طرح به‌روز‌شده را با طرح اصلی می‌توانید مقایسه کنید. نکته‌ای جالبی که وجود دارد، این است که باتوجه‌به اینکه عملکرد پردازش تک‌هسته‌ای ازنظر کمّیّت مهم است، این مقدار پیوسته در‌حال‌پیشرفت بوده است. این افزایش نتیجه‌ی مدیریت انرژی هوشمندانه و تنظیم دینامیک فرکانس کلاک (توربو) بوده است. در آینده، چه تغییراتی به وجود خواهد آمد؟ احتمالا فرکانس و انرژی مصرفی دستخوش تغییرات زیادی قرار نخواهند گرفت. بهبود بیشتر در ساختار کلاک ممکن است باعث افزایش تدریجی عملکرد تک‌هسته‌ای پردازنده‌ها شود که البته نمی‌توان انتظار تغییر بزرگی داشت. دو نمونه از کمّیّت‌های مهم، تعداد ترازیستور‌ها و تعداد هسته‌ها هستند. تا چه زمانی قانون مور ادامه خواهد داشت؟ این احتمال وجود دارد که در آینده‌ای نزدیک، افزایشی در تعداد هسته‌ها را شاهد خواهیم بود؛ اما شاید تعداد ترانزیستور‌ها تغییری اساسی نکنند. در‌حال‌حاضر، Haswell Xeon در صدر فهرست پردازنده‌ها هستند که ۱۸ هسته‌ی پردازشی دارند. به‌هرحال با وجود این پردازنده‌ها، قانون امدال ما‌ را به‌ دنبال‌کردن همین الگوریتم ملزم خواهد کرد. پردازندهی Knight Landing Xeon Phis که به‌زودی رونمایی خواهد شد، ۷۲ هسته دارد که بیش از ۶۱ هسته بیشتر از نسل کنونی‌اش خواهد داشت. از دیدگاه الگوریتم‌ها، واقعا مهم نیست پردارنده با ۶۱ یا ۷۲ هسته کار می‌کند یا خیر؛ بلکه در هر دو مورد، الگوریتم‌هایی موازی موردنیاز هستند. در این مرحله، باید خوشحال باشیم که در‌حال‌حاضر، توانسته‌ایم با یادگیری برنامه‌ریزی GPU‌ها این الگوریتم‌ها را طراحی و اجرا کنیم. به‌روزرسانی ۲۰۱۸ دو سال داده‌ی بیشتر به‌نظر مهم نیست، هرچند به‌نظر می‌رسد قانون مور در‌حال‌ کم‌رنگ‌شدن است. یکی از موضوعاتی که باید به آن اشاره کرد، این است که اینتل دیگر تعداد ترانزیستور‌های پردازنده‌های خود را اعلام نمی‌کند. همچنین، تعدادی از پردازنده‌های این شرکت زمان زیادی بعد از موعد مقرر معرفی شدند. مدل Tick-Tock هم اصلاح شده است. با داده‌هایی از تعداد ترانزیستور‌ها که از AMD Epyc و IBM Power 9 به‌دست‌آمده طرح را به‌صورت زیر به‌روزرسانی کرده‌اند: واضح است تعداد ترانزیستور‌ها به‌صورت نموداری نمایی رو‌به‌پیشرفت بوده است. تا‌به‌امروز، پردازنده‌ی AMD Epyc با ۱۹،۰۰۰،۰۰۰،۰۰۰ ترانزیستور که به‌صورت عمومی اعلام شده، بیشترین تعداد ترانزیستور را در میان پردازنده‌ها دارد. برای مقایسه باید گفت تراشه‌ی پاسکال Nvidia GP100 درحدود ۱۵،۰۰۰،۰۰۰،۰۰۰ ترانزیستور دارد. با درنظرگرفتن این تعداد، این ارقام باهم سازگار هستند و جای شکی در تعداد ترانزیستور‌ها وجود ندارد.به‌زودی، با معرفی نود‌های پردازشی ۱۰ نانومتری منطقی است که احتمال دهیم تا چند سال آینده، منحنی نمایی و رو‌به‌رشد تعداد ترانزیستور‌ها پیشرفت خود را حفظ کند. تعداد ترانزیستور بیشتر موجب افزایش تعداد هسته‌ها می‌شود. این درحالی است که پیشرفتی که در SpecINT برای محاسبه عملکرد تک‌هسته‌ای قابل مشاهده‌است، مستقیما نتیجه‌ی استفاده از کامپایلر‌های Auto-Vectorization و Auto-Parallelization است.
  17. جدیدا
  18. کامبیز اسدزاده

    سلام، موقع استفاده از QSettings شما وقتی منبعی رو برای اون در نظر می‌گیرید بهتره توجه داشته باشید که در صورت نیاز در قالب‌های xml یا برفرض JSon و ini اطلاعات رو ذخیره می‌کنید. اطلاعات فوق معمولاً درسیستم‌عامل ویندوز در بخش رجیستری، و در پلتفرم‌های مک‌او‌اِس و آی‌او‌اس در لیست از فایل های مربوط به خودشان ذخیره سازی می‌شوند. در استاندارد‌های دیگر این اطلاعات در فایل ini ذخیره سازی می‌شوند. بنابراین دسترسی به این موارد ممکن است بسیار راحت باشد. پیشنهاد این هست اطلاعات مربوط به Session‌ها را در جدولی از دیتابیس ذخیره سازی کنید (این کار می‌تونه با کمی طراحی بر روی نوع ساختار مطمئن سازی شود) برای مثال توکنی که دریافت می‌کنید را در جدولی به نام sessions ذخیره کنید که همراه با مقادیر زمان و تاریخ اعتبار آن اعتبار سنجی می‌شود. با این روش نه تنها می‌تونید به لیستی از سوابق ورودی‌ها دسترسی داشته باشید، بلکه می‌تونید آن‌ها را به خوبی مدیریت کنید. شما می‌توانید رشته‌ای که به عنوان توکن دریافت می‌کنید را تحت الگو‌های مطمئنی رمزنگاری کنید که ترکیبی از زمان، دستگاه، آدرس آی‌پی و ... باشد. در واقع چیزی شبیه به User-Agent که حالا با زمان و اعتبار مشخصی قابل ارزیابی خواهد بود.
  19. miladrahbari

    سلام. معمولا token رو اصلا توی برنامه ذخیره نمیکنند. وقتی که برنامه باز میشود با یوزر نیم و پسوردی که کاربر دارد یک درخواست به سرور ارسال میشود و سپس سرور token را در جواب میفرسته و در دفعات بعدی کلاینت با اون token ارسال رد و بد میشه. در مورد امنیت QML لازم به ذکر هست که با فعال بودن ویژگی کامپایل کیوت کوئیک کد‌های شما در نهایت به باینری تبدیل میشه.البته این ویژگی از کیوت 5.11 به بعد رایگان شده است و در دسترس هست. https://doc.qt.io/QtQuickCompiler/
  20. amirb

    دوستان راهنمایی کنند. فکر می کنم سوال واضح باشه.
  21. سلام به نظرم در این برهه از زمان تسلط در یک زبان ویا یک Frame Work به هیچ وجه نمیتونه تضمینی برای آینده یک مهندس نرم افزار ویا یک برنامه نویس باشه! بنابراین بهتره سعی کنید ++C را شروع کنید و بصورت موازی Frame Work Qt را هم استفاده کنید، ولی به هیچ وجه از تکنولوژی های سمت زبان جاوا غافل نشید. صرف تسلط به زبان ++C الان نمیتونه خیلی مهم باشه، (البته شرایط تجاری بازار IT کشور خودمون را عرض میکنم) اونهم به این علت که قطعا درصد بسیار کمی از شرکتهای معتبر که الان در ایران فعال هستند، زبان ++C را به عنوان تکنولوژی توسعه ای نرم افزارها شون انتخاب میکنن که اونهم بخاطر خیلی از دلایل که قبلا بارها بحث شده. که البته شانس استخدام در این شرکتها هم خیلی پایین هست. متاسفانه مشکل هم از اونجا شروع میشه که، کسانی که بدون فکر و منطق هجوم میارن سمت زبانهایی مثل سی پلاس پلاس فکر میکنن با خوندن دوتا کتاب و دوتا پروژه روی گیت ایجاد کردن و مطالعه سایتهای رفرنس می تونن در زبان سی پلاس پلاس تجربه کسب کنند که قطعا نمیتونه اینطور باشه! هرچند نام کیوت و سی پلاس پلاس خیلی بزرگ جلوه میکند اما واقعیت چیزه دیگه ای هست. پس تا وقتی هم که شما شرایط قرار گرفتن دریک تیم توسعه ای نرم افزاری که تکنولوژی توسعه ی نرم افزارهای تجاری شون با زبان سی پلاس پلاس ویا فریم وورک کیوت هست، را نداشته باشید قطعا نمیتونید دراین زمینه به یک دانش خوب و قوی دست پیدا کنید. به همین علت اگر برنامه نویسی که بخواد در این بازار مشغول باشه بهتره حتما از تکنولوژی های دات نت و جاوا و تکنولوژی های سمت وب اطلاعات کافی داشته باشه.
  22. این پست رو که قبلاً نوشته شده مطالعه بفرمایید، بخش بسیار بزرگی از سوالات شما در اینجا پاسخ داده شده.
  23. الهه انصاری

    اصول طراحی: رنگ

    از سری مقالات اصول طراحی رابط کاربری با موضوع مهم و کلیدی رنگ در خدمت شما هستیم. در این مقاله، نگاهی به نحوه‌ی استفاده از طرح‌های رنگی در ایجاد بازخورد مطلوب برای طراحی شما خواهیم داشت. رنگ بخش جدایی ناپذیر از زندگی ما است. طبیعت از رنگ برای هشدار دادن به شکارچیان بالقوه، جذب گرده افشان‌ها، جذب همسران و نشان دادن میوه‌ی آماده برای خوردن استفاده می‌کند. هر کسی که ماشینی را در یک شهر رانندگی می‌کند، قوانین ترافیکی را که توسط قرمز، سبز و نارنجی تعریف شده است دنبال می‌کند. همین رنگ ها کافی هستند و نیازی به نوشته‌ی متنی نیست. در تبلیغات و طراحی، رنگ برای جلب توجه و تحریک علاقه استفاده می‌شود که گرفتن همین نتیجه از طریق روش‌های دیگر سخت‌تر است. طی تاریخ نیز از رنگ برای نشان دادن موقعیت اجتماعی و اقتصادی استفاده شده است. به عنوان مثال، اشراف و افراد سلطنتی بیشتر از رنگ بنفش بهره می‌بردند. رنگ در بسیاری از کشورها یک منبع مهم نمادگرایی است. همان طور که در شکل بالا می‌بینیم یک حالت غیر طبیعی از تصویر حس می‌شود که بخاطر استفاده‌ی رنگ غیر معمول در علامت ایست است. پس چگونه از رنگ‌ها در طراحی خود بهترین استفاده را ببریم؟ هیچ قاعده‌ی سفت و سختی وجود ندارد اما چرخ رنگ نقطه‌ی مناسبی برای شروع یادگیری نحو‌ه‌ی استفاده‌ی صحیح از رنگ‌ها است. طیف رنگ‌های گرم و سرد سه رنگ اصلی اولیه قرمز، آبی و زرد هستند. هنگامی که شما این‌ها را ترکیب می‌کنید، سه رنگ ثانویه حاصل می‌شوند: نارنجی، بنفش و سبز. اگر هر رنگ ثانویه را با رنگ اصلی همسایه‌ی خود ترکیب کنید، سومین دسته از رنگ‌ها را ایجاد می‌کنید: (زرد، نارنجی)، (زرد، سبز)، (آبی، سبز)، (بنفش، آبی)، (قرمز، بنفش)، (قرمز، نارنجی). چرخ رنگ بدین روش بدست می‌آید. تصویر بالا نشان می‌دهد که رنگ‌ها به ترتیب طیف مرتب شده‌اند: قرمز، نارنجی، زرد، سبز، آبی و بنفش (در خلاف جهت عقربه‌های ساعت). قرمز گرمترین و آبی سردترین رنگ در این چرخ است. رنگ‌ های گرم در قسمت طیف‌های قرمز، نارنجی و زرد ظاهر می‌شوند و رنگ‌های سرد در طرف مقابل چرخ رنگ ظاهر می‌شوند. طرح‌های رنگی تک رنگ (monochromatic) طرح رنگی تک رنگ از تغییرات در نور و اشباع یک رنگ استفاده می‌کند. این طرح رنگ علاوه‌ بر تمیز و ظریف بودن یک اثر آرامش بخشی ایجاد می‌کند. رنگ اولیه می‌تواند با رنگ‌های خنثی مانند سیاه، سفید یا خاکستری یکپارچه شود. ناکامی در طرح‌های تک رنگ این است که گاهی اوقات می‌تواند تضاد داشته باشد و به نظر می‌رسد جنب و جوش کمتری از سایر طرح‌های رنگ داشته باشد. طرح تک رنگ با پایه‌ی آبی طرح تک رنگ با پایه‌ی قرمز طرح‌های رنگی مشابه (Analogous Color Schemes) طرح رنگی مشابه با رنگ‌هایی که در چرخ رنگی مجاور هستند، استفاده می‌شود. یک رنگ به عنوان رنگ غالب تنظیم شده است و رنگ دیگر وظیفه‌ی غنی سازی را دارد. ضعف این مورد مانند طرح قبل این است که گاهی اوقات ممکن است حالت عدم تضاد به وجود بیاید. طرح رنگی مشابه با پایه‌ی آبی طرح رنگی مکمل (Complimentary Color Scheme) طرح رنگ مکمل یا متقارن از دو رنگ ساخته شده است که در چرخ رنگ مقابل یکدیگر قرار دارند. این طرح جهت ایجاد تضاد قوی و برای جلب توجه بسیار موفق است. طرح رنگی مکمل با پایه‌ی سبز روشن طرح مکمل تقسیم شده (Split Complementary Scheme) طرح مکمل تقسیم نوعی از طرح مکمل استاندارد است. این طرح از اجتماع یک رنگ بر روی چرخ و دو رنگ مجاور آن تشکیل می‌شود. مزیت این طرح بیش از یک طرح مجرب این است که میتواند کمی پیچیدهتر باشد در حالی که هنوز هم یک تضاد تصویری قوی وجود دارد. در تصاویر زیر نمونه‌ای از این مورد می‌بینیم. طرح‌های رنگ سه‌گانه این طرح از سه رنگ به طور یکنواخت در اطراف چرخ رنگ استفاده می‌کند. این روش برای ایجاد تعادل، غنی سازی و تضاد بسیار مناسب است؛ اگرچه تضاد در این طرح به اندازه‌ی طرح مکمل مشهود نیست. طرح سه‌گانه‌ با پایه‌ی آبی نکاتی برای استفاده از این طرح‌های رنگی یک رنگ را انتخاب کنید که بیشتر از رنگ‌های دیگر استفاده می‌شود. اگر سعی می‌کنید از مقادیر برابر هر رنگ استفاده کنید، یک محصول وحشتناک دریافت خواهید کرد. ابتدا در مورد رنگ اصلی یا پایه‌ی خود تصمیم بگیرید و سپس از رنگ‌های دیگر برای جذب علاقه استفاده کنید. سایت The Pond با استفاده از یک خاکستری با پایه‌ی آبی تیره با متن خردلی طراحی شده است که بسیار دلنشین است. اگر رنگ‌ها خیلی قاطی هم شده باشند، میزان استفاده‌ی خود را از رنگ‌ها کاهش دهید. برای ایجاد طرح‌های رنگی چندین ابزار آنلاین وجود دارد، Kuler یکی از ابزار‌های پر طرفدار است. این ابزار امکان بازی با چرخ رنگی را به شما می‌دهد و می‌توانید طرح‌های رنگی مورد نظر خود را با یک کلیک انتخاب کنید. انواع تناژهای مختلف رنگ سیاه و خاکستری می‌توانند در تمام طرح‌های رنگی مذکور استفاده شوند. این رنگ‌ها در واقع به عنوان رنگ‌های خنثی استفاده می‌شوند که با هر رنگ دیگری سازگاری دارند. تمام رنگ‌ها تحت تاثیر رنگ‌های قرار گرفته در اطراف آن‌ها هستند. نماد زیر همان سایه‌‌ی قرمز در سمت چپ و راست است، اما رنگ پس زمینه تغییر چشمگیری می‌دهد. طرح رنگی در سمت چپ چشم را اذیت می‌کند، در حالی که در تصویر سمت راست، رنگ‌ها به خوبی با یکدیگر همخوانی دارند و احساس بیننده را برانگیخته می‌کنند. الهام از طبیعت اگر شما به دنبال الهام و راهنمایی برای انتخاب رنگ هستید، کامپیوتر را خاموش کنید و به خارج از منزل بروید. طبیعت بهترین ترکیب رنگ را برای شما فراهم می‌کند. به حیوانات، گیاهان، پرندگان نگاه کنید و از طرح‌ها و رنگ‌های شگفت انگیز الهام و ایده بگیرید. از آن‌ها عکس گرفته و آن‌ها را در یک فایل ذخیره کنید. مواردی که هنگام استفاده از رنگ در طرحهای خود مد نظر می‌گیریم به قرار زیر است: آیا رنگ‌ها در طراحی شما به خوبی با هم هماهنگ هستند و یا زیبایی چندانی در کنار هم ندارند؟ آیا خواندن متن در پس زمینه دشوار است؟ آیا طراحی شما برای آنچه که میخواهید انتقال دهید بیش از حد سرد و یا بیش از حد گرم است؟ شما می‌توانید طرح‌های بیش از حد گرم را با نکات کوچک رنگ‌های سرد (و بالعکس) را خنک کنید. آیا طراحی شما فقط شامل رنگ‌های سیاه و سفید است؟ اگر اینطور است افزودن کمی رنگ واقعا می‌تواند طرح شما را به پتانسیل کامل خودش برساند. اگر شما برای وب یا برنامه‌های خود طراحی انجام می‌دهید، آیا در مورد اثر رنگ‌ها بر روی میزان قابلیت استفاده محصول تحقیق کرده‌اید؟ تئوری رنگ‌ها شامل حوزه‌ی بسیار بزرگی است که در این مقاله سعی کردیم به طور مختصر و مفید اطلاعاتی را در این مورد خدمت شما عرض کنیم. جهت تمرین و آشنایی کامل با انواع طرح‌های رنگی مشاهده‌ی این چرخ توصیه می‌شود. با تشکر از همراهی شما دوستان.
  24. GornerLabo

    آقا دمت گرم حل شد بسیار سپاس گزارم فقط این کلاس QRegExp برای چی هست؟
  25. hamed_masafi

    if (str.startsWith("ready00") ) { // codes }
  26. GornerLabo

    سلام اساتید. برنامه داریم که با سخت افزار در ارتباط است. سخت افزار در قسمتی از برنامه جواب به صورت رشته برمیگرداند. ابتدای جواب ها به یک شکل است ولی در قسمتی از جواب ها تفاوت دارد. به عنوان مثال جواب ها شاید بدین شکل باشند: ready , ready00 , ready0000, ready00044555 و ... . ما نیاز داریم یک شرط فقط در برنامه قرار بدیم به این شکل که اگر جواب ready بود فلان دستور انجام بشه اگر جواب ready00 بود فلان دستور. جواب های دیگه طبق همین جواب دوم سنجیده میشه یعنی اگر جواب ها ready00 یا ready0000 یا ready00044555 باشه دستورات یکسان انجام بشه. پس ملاک 00 بعد ready هست. چطور با کلاس QString و QRegExp و تابع contains این مساله رو حل کرد تشکر از مدیریت و اساتید سایت
  27. سلام امیدوارم حالتون خوب باشه، راستش من برنامه نویسیو از 13 سالگی شروع کردم و به علت بیماری که داشتم چندین سال اونو رها کردم (بیماری افسردگی ماژور)حالا یه مدته که خودمو ریکاوری کردم و یسری تواناییارو بدست آوردم و حالا باتوجه به اینکه احتمالا گرایش سخت افزار برای من انتخاب میشه (ترم 4 کامپیوتر نوشیروانی بابل) من خواستم ازتون بپرسم که مسیربرنامه نویسیو چطوری انتخاب بکنم که تحصیلم تو گرایش سخت افزار بیهوده نباشه و همه چیز برای برنامه نویسی کاربردی هزینه نشه و بتونم در زمینه‌ی برنامه نویسی سیستمی هم به تسلطی برسم! راستش طبق تحقیق خودم تصمیم گرفتم روی یکی از دو تا زبون قوی که سی پلاس پلاس و جاوا باشه تصمیم گیری کنم و تمام تمرکزمو روی اون قرار بدم البته زبان های علامتگذاری وب و زبان برنامه نویسی وب پی اچ پی رو هم تا فریم ورک ها بلدم و گذاشتم در کنار تمرکز اصلیم یه حالت تفریحی و درآمدی داشته باشه، اما ممکنه بخاطر بیماری اصلیم و مسائل دیگه مجبور به مهاجرت به یه کشور دیگه بشم و نمیدونم روی چه مسیری سرمایه گذاری کنم که هم بنیه علمی خوبی داشته باشه هم بنیه خوب مالی! خواهش میکنم کمکم کنین و پروژه شطرنجم(خودش بازی میکنه) اوج توان برنامه نویسیم بود که نزدیک به 7500 خط شد (به سی پلاس پلاس)و با برنامه یکی از دوستام که سخت ترین رقیب بود میتونست رقابت بکنه اما منتها به روز مسابقه نرسیدم و اونهمه تلاشم برای مسابقه هیچ شد ولی تو دانشگاه اون پروژه باعث افتخارم شده و وقتی همه از دانشجو تا استادا میبینن براشون جالب بوده حالا نمیدونم خیلی مسخره نوشتم یا جدا خوب بوده! توانایی جاوا: تاآخر مبحث شی گرایی و تسلط نسبی به کدهای گرافیک(از دیتل و دیتل)+تمرینات لازم برای یادگیری توانایی سی پلاس پلاس: تا آخر اشاره گر ها اما مبحث شی گرایی مطالعه نشده از دیتل و دیتل(البته من شنیدم که اگه مسلط به Qt بشم میتونم هرجور برنامه ای که بخوام مثلا با رابط کاربری های گرافیکی هم بسازم حالا نمیدونم درسته یا غلط) من فیلم اجرای بازی برنامم رو گذاشتم اینطوری بوده که طرفین با سی پلاس پلاس برنامه مینوشتن و هربرنامه تحت اجرای برنامه داور هرکدوم یک حرکت میزد با رعایت شرایط خطر و ضرب و ...(بنظرم یجوری طبق تعریف یه تمرین هوش مصنوعی هم بود حالا نمیدونم شایدم توهم زدم خخخ) حالا مسئله اصلیم اینه که سی پلاس پلاس و کیوت رو انتخاب کنم یا جاوا و فناوری هاش؟ البته آقای اسدزاده اگه نمونه کد بازی که نوشتمو برای سنجیدن توان سی پلاس پلاسم خواستین بگین پیوی مزاحمتون شم و براتون بفرستم باتشکر از همه بچه‌ها
  28. در این آموزش با کمک کتابخانه‌ی 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 } }
  29. Saman

    خیلی ممنون
  1. نمایش فعالیت های بیشتر
×