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

کامبیز اسدزاده

بنیـــان گذار
  • تعداد ارسال ها

    335
  • تاریخ عضویت

  • روز های برد

    154

آخرین بار برد کامبیز اسدزاده در 28 مهر

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

اعتبار در سایت

498 عالی

8 دنبال کننده

درباره کامبیز اسدزاده

اساتید
توسعه‌ دهنده بَک اِند
توسعه‌ دهنده فرانت اِند
توسعه دهنده فول اِستَک
منتور‌ها و مشاورین
  • تاریخ تولد 12 فروردین 1368

اطلاعات شبکه‌ای

موقعیت

  • شهر
    اورمیه

آخرین بازدید کنندگان نمایه

2,976 بازدید کننده نمایه
  1. کامبیز اسدزاده

    خوشم میاد سوألت بسیار بسیار تازست! یعنی کیوت این فناوری رو چند روزی نیست معرفی کرده! همچین کاربرای فعالی داریم ما... احسنت به هر حال، من سعی کردم چند بار این ویژگی رو بخونم و اگر درست متوجه شده باشم، با توجه به درکی که از مستندات خودش داشتم باید همچین تعریفی داشته باشه که در ادامه باز‌نویسی کردم. در صنایع مختلفِ پزشکی و اتوماسیون‌های پیشرفته و یا خودرو‌سازی نمایش اطلاعاتِ ایمن، مرتبط با اطلاعات مربوط به خطا‌ها و گزارشات بحرانی که بسیار هم مهم و حساس هستند که متخصص‌ها باید به این اطلاعات در زمان خودش همراه با اطلاعات صحیح و ایمنی از طریق صفحه‌ نمایشگر‌های دیجیتالی در اختیار داشته باشند مهم است. برای مثال در صنعت پزشکی، پرستاران، پزشکان و تکنسین‌ها از وسایل پزشکی بسیار مهمی استفاده می‌کنند که باید این تجهیزات به حداکثر ایمنی در زمان ارائه‌ی گزارش‌ها در جای مناسب خودشون تضمین شوند. با توجه به مشکلات احتمالی که در زمان ارائه‌ی این گزارشات در زمان رندر سازی سمت UI (که بسیار حساس هستند و نباید تأخیر و یا اختلالی در ارائه‌ی این‌ موارد به وجود بیاد) کیوت سعی کرده راهکاری را ارائه بدهد تا این مشکلات احتمالی را تضمین و ایمن سازد. بنابراین، ماژول Qt Safe Renderer هم یک راهکار از طرف شرکت کیوت است برای ارائه‌ی اطلاعات حساس و ایمن در برنامه‌های کاربردی ایمنی که عملکرد آن‌ها بر اساس کیوت است. این ماژول یک محصول تجاری است که باید جداگانه خریداری شود، زیرا بخشی از مجوز‌های توسعه‌ی برنامه‌ یا دستگاه مربوط به این ویژگی بخشی از برنامه‌های کیوت محسوب نمی‌شوند. این راهکار برای این ارائه شده تا، یک سیستم جداگانه برای ادغام و یکپارچه‌سازی یک سیستم با پردازش‌های جداگانه جهت عملکرد‌های مهم ایمنی و غیر ایمنی باشد. با توجه به ساختاری که دارد، پردازش‌های مورد نیاز را به یک زیر سیستم مستقل در فرآیند اختصاصی اجرا می‌کند، مانند ظبط گرافیکی از اطلاعات مهم و ایمنی که این موارد را تضمین خواهد کرد. در واقع این راه‌کار، وظیفه‌ی مانیتورینگ اصلی عملکرد رابط‌کاربری اصلی و خطاهای موجود در آن را بر عهده می‌گیرد تا اختلالی در زمان ارائه‌ی اطلاعات مهم و حساس رُخ ندهد.
  2. کامبیز اسدزاده

    چهار زبان برتر برنامه‌نویسی برای بلاک‌چین

    زبانی را انتخاب کنید که پاسخگوی برنامه‌ی تحت بلاک‌چین شما باشد! فناوری بلاک‌چین به سرعت در حال تبدیل شدن به یکی از مهمترین پیشرفت‌های فناوری در چند دهه‌ی گذشته است. این سیستم، معاملات ناشناس و همتا را بین کاربران امکان‌پذیر می‌کند که اساساً بر پایه‌ی انقلاب رمزنگاری است. بازار جهانی بلاک‌چین در حال حاضر حدود ۱.۲ میلیارد دلار تخمین زده می‌شود و کارشناسان پیش‌بینی می‌کنند که تا سال ۲۰۲۵ به ارزش ۵۷ میلیارد دلار برسد که در سال بیش از ۶۹ درصد رشد خواهد داشت. عمده‌ی شرکت‌ها و سرمایه‌دارانِ سرمایه‌گذار در توسعه‌ی فناوری جدید رمزنگاری، قرارداد‌های هوشمند دفترچه‌های توزیع‌شده برای بانک‌های سنتی، توکن‌های بازی و سیستم‌های مدیریت زنجیره تأمین با شرکت‌های مشاوره بلاک‌چین همکاری می‌کنند. توسعه‌دهندگان در حال حاضر از زبان‌های برنامه‌نویسی محبوبی مانند C++ و JavaScript برای ساختن برنامه‌های سفارشی بلاک‌چین استفاده می‌کنند. علاوه بر این، مهندسان رمزنگاری زبان‌هایی مانند Simplicty و Solidity را برای این کار طراحی کرده‌اند. اما، آن‌ها آیا این‌ها بهترین زبان‌های برنامه‌نویسی برای فناوری بلاک‌چین هستند؟ بلاک‌چین چیست؟ بانکداری سنتی از یک بانک به عنوان رهبر و واسط استفاده می‌کند. جهت انتقال پول به یک دوست، یک شخص ابتدا حسابی داشته باشد و بخواهد که پول را به یک شماره حساب خاص که برای اوست انتقال دهد. بانک، حساب ارسال کننده را برای وجه بررسی می‌کند و آن وجه را به مقصد منتقل می‌کند و معامله در حساب فرستنده ثبت می‌شد. همچنین بانک دریافت کننده نیز همین کار را باید انجام دهد. با این حال، مشکل سیستم بانکی سنتی این است که سوابق در داخل ذخیره می‌شوند و در برابر هک و دستکاری‌های آسیب‌پذیر هستند. بلاک‌چین با ذخیره کردن تمامی سوابق به صورت آنلاین در یک دفترچه‌ی مستعار (بی‌نام) ذخیره می‌کند که توسط هر کسی قابل دسترس است. بلاک‌چین از بلاک‌ها استفاده می‌کند، یا مجموعه‌ای از داده‌ها، مشابه سطر‌ها و ستون‌های صفحه‌های گسترده جهت ذخیره داده‌ها استفاده می‌کند. بلاک‌ها به ترتیب متوالی به «زنجیر» اضافه می‌شوند. برخلاف دفترچه‌های سنتی، که در داخل ذخیره می‌شوند، هر کاربرِ بلاک‌چین دارای سوابق کاملی از کل بلاک‌چین در رایانه‌ی خود است. این بدان معنی است که در صورت داشتن کد هش (رمز‌شده‌ی) مربوطه می‌توانند به سرعت هر معامله‌ای را که اتفاق افتاده است را پیدا کنند. از آن‌جایی که این داده‌ها به صورت عمومی ذخیره می‌شوند، هرگز قابل تغییر یا حذف نیستند! در نتیجه آرامش خاطر را به کاربران فراهم می‌کند. زبان برنامه‌نویسی JavaScript (جاوااسکریپت) از آن‌جایی که گیت‌هاب به تازگی این زبان را به عنوان محبوب‌ترین زبان برای توسعه‌دهندگان اعلام کرده است، به طور باورنکردنی بیش از ۹۵٪ وب‌سایت‌ها به طریقی از آن‌ استفاده می‌کنند. با این حال، جاوااسکریپت تنها پادشاه وب نیست؛ چرا که به عنوان یک زبان انعطاف‌پذیر در بلاک‌چین استفاده می‌شود. یکی از دلایلی که جاوااسکریپت را برای توسعه‌دهندگان می‌بخشد نحوه‌ی دستیابی به مدیریت کد‌ها به صورت ناهمزمان (ناهمگام) است. این امر در بلاک‌چین بسیار مهم است، زیرا ممکن است هزاران یا حتی میلیون‌ها معاملات در همان زمان آغاز شود! برنامه‌نویسی موازی یک برنامه را قادر می‌سازد تا چندین عمل را به صورت همزمان انجام دهد در حالی که برنامه‌نویسی استاندارد و همزمان نمی‌توانند آن حجم را تحمل و کنترل کنند. با اجرای چندین کار به صورت همزمان، کد ناهمزمان می‌تواند باعث افزایش پاسخگویی و عملکرد برنامه شود. این امر باعث می‌شود برنامه‌های بلاک‌چین بتوانند حجم بسیار زیادی از اقدامات را بدون عملکرد کُند و نا امید سازی کاربر، آن را انجام دهند. زبان برنامه‌نویسی C++ (سی‌پلاس‌پلاس) سی‌پلاس‌پلاس همچنین به عنوان یکی از قدرتمند‌ترین و محبوب‌ترین زبان‌های برنامه‌نویسی در دنیای فناوری شناخته می‌شود و در صنعت بلاک‌چین نیز یک قدرت غالب است. زبان شیء‌گرایی برای توسعه بلاک‌چین مناسب است، زیرا از همان اصول کپسوله‌سازی، انتزاع، چند‌ریختی و مخفی کردن داده‌ها استفاده می‌کند. به عنوان مثال بلاک‌چین از ویرایش‌های ناخواسته از داده‌ها جولوگیری می‌کند. توسعه‌دهندگان همچنین به دلیل قابلیت کنترل حافظه، از C++استفاده می‌کنند. این زبان به شما اجازه می‌دهد تا بلوک‌های ایمن را نگه‌ داشته و تعداد زیادی از درخواست منابع را مدیریت کنید. با اجازه دادن به هر نود (گره) شبکه می‌توانید بلوک‌های فردی را پذیرفته یا رد کنید. همچنین C++ به دلیل پشتیبانی و مدیریت وظایف موازی و نخی به طور گسترده در بلاک‌چین مورد استفاده قرار می‌گیرد. این زبان قادر به مدیریت هردو ویژگی موازی و غیرموازی در وظایف است، در واقع می‌تواند به خوبی انجام وظایف تک-نخی/تک رشته‌ای (single-thread) را بهبود دهد. نمونه‌ی فوق‌العاده‌ای از برنامه‌های اساسی از بلاک‌چین که با C++ نوشته شده است EOS نام دارد. این نرم‌افزار به صورت منبع‌باز در سال ۲۰۱۸ توسط بلاک منتشر شد و به گونه‌ای طراحی شده است که معاملات را سریع‌تر از گزینه‌های دیگر پردازش می‌کند. این نرم‌افزار اجازه می‌دهد تا در کمتر از یک ثانیه معامل را تأیید کرده و فقط در دو دقیقه آن را نهایی کنید. زبان برنامه‌نویسی Solidity این زبان یک نمونه‌ی هوشمند است که با همکاری توسعه‌دهندگان Ethereum و بلاک‌چین توسعه یافته است. این زبان به صورت اختصاصی دامنه‌های بسیاری از اصول و اصطلاحات مشابه به جاوا‌اسکریپت را برای ایجاد برنامه‌های با کیفیت بالا و غیر متمرکز فراهم می‌کند. توسعه‌دهندگان، این زبان را برای این ترجیح می‌دهد که به شما این امکان را فراهم می‌کند تا یک کد سطح بالا را برای شبکه‌ی بلاک‌چینی Ethereum، دومین بلاک‌چین رمزنگاری محبوب، که می‌تواند به زبان سطح پایین و کد ماشین کامپایل شود. در حال حاضر Solidity در طیف گسترده‌ای از سکو‌ها (پلتفرم‌های) بلاک‌چینی از جمله، Ethereum، Tendermint، Ethereum Classic و Counterparty موجود است. زبان برنامه‌نویسی Simplicity این یک زبان کاملاً جدید است که در تاریخ نوامبر ۲۰۱۷ برای قرارداد‌های خاص و هوشمندِ بلاک‌چین طراحی و منتشر شده است. این زبان برای افزایش بهره‌وری و پنهان‌سازی اجزای منطقی سطح پایین از مهندسان است که یکی از دلایلی است که به سرعت در جامعه محبوب می‌شود. مانند C++، این یک زبان شیء‌گرایی است که برای جولوگیری از خطاها و تغییر داده‌ها در بلاک‌چین استفاده می‌کند. خلاصه بلاک‌چین اینجاست تا بماند! فناوری محبوب (Record-Keeping) چیزی است که تبادلات رمزنگاری را ممکن می‌سازد و بطور گسترده توسط شرکت‌ها، افراد و خدمات مشاوره‌ای بلاک‌چین، برای توسعه‌ی نرم‌افزار مورد استفاده قرار می‌گیرد. توسعه دهندگان می‌توانند به راحتی از زبان‌های محبوب مانند C++ و JavaScript برای توسعه‌ی بلاک‌چین استفاده کنند. از طرفی این انجمن اخیراً زبان‌هایی به عنوان Solidity و Simplicity را ایجاد کرده است که باعث می‌شود تا فرآیند توسعه‌ی رمزنگاری روان‌تر شود.
  3. اصطلاحاتی که بهتر است در مورد C++ مدرن بدانید! داشتم به این فکر می‌کردم که برخی از مبتدیان برنامه‌نویسی به خصوص کسانی که به سراغ زبان‌هایی مثل سی++ می‌روند معمولاً مستقیم وارد کد نویسی می‌شوند و به این گمان که آغاز برنامه‌نویسی یعنی نوشتن یک کد با خروجی «سلام، دنیا»! دریغ از آن‌ که بعضی از موارد مانند «معرفی کامپایلر و انواع آن» و حتی «ساختار برنامه‌های نوشته شده تحت سی‌پلاس‌پلاس» و یا حتی «مدیریت حافظه» را در نظر بگیرند! من معمولاً در مقالات و آموزش‌های خودم به این اشاره می‌کنم که قبل از هر چیز باید با ساختار برنامه‌های نوشته شده‌ی یک زبان آشنا شد و سپس به بررسی موارد دیگر مانند نحو زبان و یا دیگر ویژگی‌های آن. بنابراین، یکی از خطرناک‌ترین عواملی که موجب خونریزی داخلی یک نرم‌افزار در برنامه‌های نوشته شده توسط برنامه‌نویس درC++ می‌شود عدم مدیریت حافظه‌ی اختصاص یافته است که باید بعد از اختصاص یافتن حافظه در زمان معین آن را آزادسازی کند. در صورتی که این کار صورت نگیرد عمل Memory Leak (نَشتِ حافظه) رخ داده است. بسیاری از علاقه‌مندان بر این باورند که چون سی++ دارای GC یا همان Grabbage Collector (زباله‌روب) نیست که البته صحیح است! سی++ دارای GC نیست و این امر محدودیت یا نکته ضعف آن هم نیست! سی++ همه چیز را آزادانه در اختیار برنامه‌نویس قرار می‌دهد تا خود در زمان مناسب روش مدیریت حافظه را انتخاب کند. در علوم رایانه بازیافت حافظه یا زباله‌روبی نوعی مدیریت حافظه‌ی خودکار است که عمل مدیریت حافظه‌های اختصاص یافته شده را به دست می‌گیرد و اکثر زبان‌های برنامه‌نویسی مانند #C، جاوا و دیگر موارد مشابه به آن مجهز به این ویژگی هستند که البته وجود چنین ابزار‌هایی می‌تواند توهمی را ایجاد کند مبنی بر آن که دیگر نیازی به مدیریت منابع نیست، اما در بعضی موارد مدیریت منابع هنوز یک الزام است چرا که منابع آزاد شده هنوز هم دلیل بر نشتِ حافظه هستند. این نشت حافطه زمانی اتفاق می‌افتد که اشیاء هنوز قابل دسترس از طرف اشیاءای که زنده هستند اما هرگز مورد استفاده‌ی دوباره قرار نمی‌گیرند اتفاق بی‌افتد. در بسیاری از زبان‌های برنامه‌نویسی این ویژگی وجود دارد که طبیعتاً مدیریت توسط GC راه حل بسیار خوب و بی نقصی نیست. اما با توجه به عدم وجود GC در سی++ اکثراً با روش‌های دستی برای مدیریت حافظه می‌پردازند که رایج‌ترین روش آن استفاده از عمل new و delete در اختصاص دادن و آزاد‌سازی حافظه است. بسیاری از ما با سی++ در دانشگاه و یا دروس مرتبط با مفاهیم اولیه برنامه‌نویسی آشنا شده ایم، اما معمولاً مفاهیم مربوطه برای نسل‌های قبلی و منسوخ شده‌ی این زبان است. بهتر است در نظر داشته باشید که برنامه‌نویسی مدرن یعنی پیروی از اصول و قوانین جدیدی که در تکامل یافتن یک زبان به کار گرفته می‌شود. RAII : Resource Acquisition is initialization بنابراین، باید در نظر گرفت مدیریت حافظه از استاندارد ۱۱ به بعد این زبان به روش‌های بسیار مدرن‌تری هوشمند سازی شده است. یکی از بهترین تکنیک‌های موجود در هسته‌ی زبان الگوی RAII است. تکنیک RAII مخفف «Resource Acquisition is initialization» به مفهوم (کنترل تخصیص منابع و آزاد‌سازی آن‌ها) یک ویژگی اصلی در سی‌پلاس‌پلاس است، که متکی به کامپایلر (همگردان) برای فراخوانی خودکار بعضی موارد عنوان می‌شود. با قرار دادن چنین کدی در مخرب (ویرانگر) دیگر به فراخوانی آن کد توسط برنامه‌نویس نیست و کامپایلر خود این کار را انجام می‌دهد. به طور کلی این الگو هر شیء را مجبور می‌سازد تا در زمان مواجه با رفتار‌های ناهنجار خود را پاکسازی کند. به طور کلی هنگامی که شما یک شیء را مقدار‌دهی اولیه می‌کنید، قبل از انجام آن باید منابع مورد نیاز آن را تأمین کنید (در سازنده). هنگامی که یک شیء از محدوده‌ خارج می‌شود، هر منبعی را که مورد استفاده قرار داده است باید آزاد کند (در مخرب - ویرانگر). نکات کلیدی هرگز نباید یک شیء به حالت نیمه آماده یا نیمه از بین‌ رفته وجود داشته باشد! وقتی که یک شیء ساخته می‌شود، آن شیء باید در حالت آماده باش برای استفاده باشد. وقتی یک شیء از محدوده خارج می‌شود، باید منابع اختصاص یافته‌ی خود را در حافظه آزاد کند (کاربر مجبور به انجام کار دیگری نیست). آیا RAII عنوان بدی برای مفهوم این تکنیک است! از نظر خالق سی‌پلاس‌پلاس نام بهتر می‌تواند به صورت زیر باشد: مدیریت منابع مبتنی بر حوزه (محدوده یا دامنه) : Scope Based Resource Management چیزی که تکنیک RAII را نقض می‌کند چیست؟ اشاره‌گر‌های خام و تخصیص حافظه فراخوانی با کلمه‌ی کلیدی new برای دست آوردن یا اختصاص دادن منبع (حافظه). فراخوانی با کلمه‌ی کلیدی delete برای آزاد‌سازی منبع (حافظه). اما این مورد به صورت خودکار بعد از خروج از محدوده توسط اشاره‌گر‌ها صورت نمی‌گیرد. void rawPtrFn() { // acquire memory resourceNode* n = newNode; // manually release memory delete n; } بنابراین در صورتی که برنامه‌نویس استفاده از کلمه‌ی کلیدی delete را برای آزاد‌سازی حافظه فراموش کند (نشتِ حافظه) رخ می‌دهد. بنابراین این عمل کافی است تا تکنیک RAII را نقض کنیم. void UseRawPointer() { // Using a raw pointer -- not recommended. Song* pSong = new Song(L"Nothing on You", L"Kambiz Asadzadeh"); // Use pSong... // Don't forget to delete! delete pSong; } بنابراین، راه حل RAII برای این امر در چیست؟ کلاسی داشته باشید که : حافظه را هنگام مقدار‌دهی اولیه تخصیص دهد. حافظه را هنگام فراخوانی مخرب (ویرانگر) آزاد کند. دسترسی به اشاره‌گر‌های زیرین را امکان‌پذیر کند. اشاره‌گر‌های هوشمند (Smart Pointers) این ویژگی اساساً مدیریت حافظه‌ی خودکار را ارائه می‌دهد. زمانی که یک اشاره‌گر هوشمند دیگر استفاده نمی‌شود (زمانی که از محدوده‌ی خود خارج می‌شود) حافظه‌ی مورد نظر خود را به طور خودکار آزاد می‌کند.توجه داشته باشید که اشاره‌گر‌های سنتی با عنوان اشاره‌گر‌های خام (Raw Pointer) شناخته می‌شوند. اشاره‌گر‌های هوشمند را می‌تواند یک شکل کلی از GC در نظر گرفت؛ نوعی مدیریت خودکار وقتی که دیگر توسط برنامه مورد استفاده قرار نمی‌گیرند حافظه‌ی اختصاص یافته‌ی آن شیء به طور خودکار حذف می‌شود. در استاندارد ۱۱ سی‌پلاس‌پلاس سه نوع اشاره‌گر هوشمند معرفی شده است که همه‌ی آن‌ها در فایل سرآیند <memory> از کتابخانه‌ی استاندارد STL معرفی شده‌اند. کلاس std::unique_ptr یک اشاره‌گر هوشمند که دارای یک منبع تخصیص حافظه‌ی پویا است. کلاس std::shared_ptr شامل یک اشاره‌گری است که دارای یک منبع تخصیص حافظه‌ی پویا با تفاوت اینکه می‌تواند چندین شیء را به صورت اشتراکی از یک منبع مشترک ردیابی کند. کلاس std::weak_ptr مانند std::shared_ptr است که شمارنده‌ی آن افزایش نمی‌یابد. به مثال زیر توجه کنید: { std::unique_ptr<int> p(new int); // شیء p قابل استفاده در داخل حوزه است. } // در این بخش که خارج از دامنه‌ی اشاره‌گر است حافظه‌ی اختصاص یافته آزاد می‌شود. همانطور که مشخص است یک شیء که تحت اشاره‌گر هوشمند مورد استفاده قرار می‌گیرد تا زمانی که خارج از حوزه‌ی خود قرار نگیرد قابل استفاده خواهد بود. نمونه کد پایین مثالی از نحوه‌ی نمونه سازی تحت اشاره‌گر‌های هوشمند است. void UseSmartPointer() { // Declare a smart pointer on stack and pass it the raw pointer. unique_ptr<Song> song2(new Song(L"Nothing on You", L"Kambiz Asadzadeh")); // Use song2... wstring s = song2->duration_; //... } // song2 is deleted automatically here. این مقاله در یک فرصت مناسب به به جزئیاتی بیشتری خواهد پرداخت...
  4. کامبیز اسدزاده

    همینطوره خب، منم اشاره کردم مثالش رو که تحت Get باید پارامتر‌ها رو در Url بیاری. توی اندروید و مثالی که زدی تابع getParams اضافه هست و صرفاً در روش Post به درد می‌خوره. با توجه به مثال خودت همچین کاری کافی هست : String Url="http://192.168.43.3/shop/register.php?username=name&email=mymail";
  5. کامبیز اسدزاده

    چرا گیر دادی به متد Get؟ در این متد زمانی می‌تونید پارامتری رو ارسال کنید که در قالب url باشه. برای مثال به این شکل: http://www.domain.com/request.php?username=myname&email=myemail در این صورت دیگه نمی‌تونید کوئری‌های سفارشیِ خارج از url ارسال کنید.
  6. کامبیز اسدزاده

    سلام، متد Get متدی برای درخواست اطلاعات هست نه ارسال! هرچند برای ارسال هم استفاده می‌شه اما اگر شما می‌خواهید اطلاعاتی مثل همین کدی که می‌بینم رو در قالب کوئری نه url ارسال کنید بهتره متد رو به Post تغییر بدین. خیلی ساده بخوام توضیح بدم هرجا که قرار بود مقادیری رو به عنوان کوئری به سمت سرور ارسال کنید حتماً از Post استفاده کنید. در این صورت لازم نیست پارامتر‌ها رو در قالب url ارسال کنید. مثالی هم که زدین متد Post هست، اگر دقت کنید نوع params داره چند تا نوع با مقدار رو ارسال می‌کنه. سمت سرور هم مثلاً با Php با در نظر گرفتن نوع درخواست از Post به این شکل می‌تونید مقدار رو بگیرید. $email = $_POST["email"]; $username = $_POST["username"]; $password = $_POST["password"]; $mobile = $_POST["mobile"]; echo $email; ... ..... ......
  7. کامبیز اسدزاده

    سلام، این روش‌ها که بهشون اشاره کردین به عنوان متد (method) انتقال اطلاعات بین سرور و کلاینت هستند. برای دریافت و یا اعمالِ یک درخواست برای انجام کار مانند انتقال، به‌روز‌رسانی، دریافت، حذف و غیره از متد‌هایی مثل GET, POST, DELETE, PUT, PATCH استفاده می‌شود که متد‌های Get و Post دو نمونه‌ی مهم و پرکاربردی از این روش‌ها محسوب می‌شوند. در اندروید شما برای اینکه بخواهید اطلاعاتی را از سرور خود دریافت و یا انتقال دهید، اگر اون پروتکل تحت http یا https باشه می‌توانید تحت این متد‌ها تراکنش را انجام دهید. بنابراین هیچ فرقی بین متد‌های GET و POST در اندروید و HTML وجود نداره چون این‌ها یک سری متد‌های استانداردِ از قبل تعریف شده برای پروتکل‌ HTTP بشمار می‌آیند.
  8. معمولاً در سی‌پلاس‌پلاس برای چاپ اطلاعات مربوط به کد منبع از ماکرو‌ها استفاده می‌شود. ماکروها به عنوان یکی از ویژگی‌های بسیار قدرتمند زبان C محسوب می‌شوند که در C++ نیز از آن‌ها پشتیبانی می‌شود. برای مثال ماکرو‌های __LINE__ و __FILE__ اطلاعات مربوط به شماره خط، فایل و نام آن را بر می‌گردانند. در استاندارد جدید یعنی 2a یا همان نسخه‌ی ۲۰ زبان، کلاس source_location معرفی شده است که در فایل سرآیند <source_location> تعبیه شده است. با دسترسی به فیلد‌های line، column، filename و function_name می‌توان تحت این کلاس مشخصات مورد نیاز را از کد منبع چاپ کرد. مثال : #include <iostream> #include <string_view> #include <source_location> void log(std::string_view message, const std::source_location& location = std::source_location::current()) { std::cout << "info:" << location.file_name() << ":" << location.line() << " " << message << '\n'; } int main() { log("Hello world!"); } خروجی کد مربوطه به صورت زیر است. info:main.cpp:15 Hello world! منبع در مرجع سی‌پلاس‌پلاس
  9. کامبیز اسدزاده

    سلام، معمولاً یکی از بزرگترین مشکلات استارتاپ‌ها همین سهام‌بندی و عدم رضایت بین اعضای گروه هست. بنابراین من یک توضیح خلاصه و مقدماتی میدم شاید کمک کند. برای اینکه این مشکل حل بشه باید توجه کرد بنیان‌گذاران باید مسئولیت مشخصی داشته باشند. میزان تاثیر و اهمیت تخصص و وجود یک فرد در گروه جهت به بلوغ رساندن پروژه بسیار مهم است. اینکه چه کسی ارزش بیشتری خلق می‌کند مهم است. البته نوع استارتاپ هم بسیار موثر است، برای مثال استارتاپی که اساس آن نرم‌افزار است مسلماً تخصص یک مهندس نرم‌افزار بسیار اهمیت دارد. در نهایت موارد زیر برای هر یک می‌تواند مورد توجه قرار گیرد: میزان نقش آفرینی قدرت رسانه‌ای قدرت تخصصی و توسعه تجربه و نفوز میزان مسئولیت پذیری نوع فعالیت تجربه‌ی قبلی از استارتاپ‌ها اعتبار ارائه شده مالی و یا تخصصی دانش و میزان تحصیلات و ... میزان درصد هم بهتر است بر اساس توافق بر اساس سود به دست آمده نیز باید با توجه به میزان ارزش‌گذاری هر یک از افراد صورت بگیرد. برای مثال با توجه به تعریف شما، تاثیرِ توسعه‌دهندگان فرانت‌اند و بک‌اند (به خصوص بک‌اند) در به وجود آمدن یک نرم‌افزار بیشتر از گرافیست و برنامه‌ریز است. بنابراین ترتیب تاثیر و ارزش‌گذاری لیست شما با توجه به نوع محصول شما درست است. چرا که ابتدا باید محصول به لطف و دانش برنامه‌نویس توسعه و سپس طراحی رابط‌کاربری ایجاد شود تا در نهایت به مراحل گرافیکی (تجربه‌کاربری، بصری، رابط‌کاربری نهایی) و سپس به مرحله‌ی معرفی و تبلیغات برسد.
  10. لینکی که دادم پاسخ مرتبط با همون سوأل بود. این مقالات رو مطالعه کنید:
  11. کامپوننت یا جزء (بخشی) از یک نرم‌افزار یا پروژه هستند. پروژه‌ی شما می‌تونه از بخش‌ها و اجزای اصلی و فرعی بسیاری تشکیل شود که هر کدام وظیفه‌ی خود را خواهند داشت. برای مثال در یک پروژه تحت سی‌پلاس‌پلاس یک کنترل به عنوان یک جزء یا همان کامپوننت تعریف می‌شود. در رابطه با SDK مخفف (Software Development Kit) به معنای کیت توسعه‌ی نرم‌افزار است. کیت توسعه‌ی نرم‌افزار به مجموعه توابع و کتابخانه‌های کامپایل شده‌ای که تولیدکنندگان نرم‌افزار برای آسان کردن برنامه‌نویسی برای محیط یا سکوی خاصی فراهم می‌کنند و در اختیار برنامه‌نویسان کاربردی قرار می‌دهند گفته می‌شود. به عنوان مثال جهت توسعه‌ی محصولات ویندوز و دسترسی به سرویس‌های آن شما باید از کیت ویندوز استفاده کنید. تفاوت بین چهارچوب (فریم‌ورک) و کیت این است گه کیت برای توسعه‌ی یک پلتفرم خاص کمک می‌کند تا شما محصول خود را برای آن هدف توسعه دهید. اما کتابخانه یا فریم‌ورک با اینکه مشابه کیت هستند اما آن‌ها شامل کلاس‌ها، توابع و راهکار‌های بسیار مفیدی برای تکمیل یا حل نیاز‌های جانبی به کار می‌رود. معمولاً توسعه‌ی نرم‌افزار‌ها می‌تواند بر اساس کتابخانه و فریمورک‌هایی انجام شود. برای مثال OpenSSL یک کتابخانه‌ی رمزنگاری است. یا Qt به عنوان یک کتابخانه و فریمورک گرافیکی جهت تولید و توسعه‌ی رابط‌های کاربری مورد استفاده قرار می‌گیرد. نه تنها در سی++ بلکه در زبان‌های دیگر هم این موارد کاربرد دارند.
  12. کامبیز اسدزاده

    سلام و درود بر اعضای محترم، نسخه‌ی جدید ۰.۶.۷۸۳ با به‌روز رسانی‌ها، بهود‌ها و ویژگی‌های پایه برای ویندوز ۳۲ و ۶۴ بیتی منتشر شد. برای دریافت و مشاهده‌ی جزئیات کلیک کنید. مشکلات و مواردی که حل شده‌اند به صورت زیر است: بهبود‌ها حل شدن مشکل کرش و هنگ کردن نرم‌افزار در سیستم‌هایی که فاقد کارت گرافیکی یا درایور‌های نصب شده هستند (مشکل گزارش شده در نسخهٔ Fanoox Standard) حل شدن مشکل کرش برنامه بعد از بازدید‌های پشت سر هم از پکیج‌های آموزشی به صورت تصادفی ادغام نسخه‌های Software و OpenGLEs بر روی نسخهٔ استاندارد بر پایهٔ سِل حل شدن مشکل پذیرش شماره تلفن معتبر حل شدن مشکل ارتفاع کم در بخش اسکرول دربارهٔ ما و گزینه‌های سوألات متداول حل شدن عدم سوئیچ به صورت خودکار در بخش تأیید شماره وارد شده حل شدن نمایش نوتیفیکیشن بعد از هر بار به‌روز‌رسانی پروفایل حل شدن عدم بازیابی و تغییر رمزعبور حل شدن عدم اعمال محدودیت در اسلایدر امتیاز حل شدن عدم بررسی آدرس پست الکترونیکی و شمارهٔ موبایل در بخش پروفایل و زمان ثبت‌نام حل شدن ارسال مقدار شمارهٔ موبایل نامعتبر حل شدن عدم هماهنگی استایل دکمه‌های خروج پروفایل حل شدن عدم پذیرش کلید Enter در تأیید ایمیل و شمارهٔ همراه حل شدن عدم هماهنگی چیدمان در متن‌های سوألات متداول حل شدن ارسال مقادیر عدد در عنوان‌ نظرات حل شدن عدم غیرفعال شدن دکمهٔ ارسال نظر بعد از ارسال و تأیید  ویژگی‌های جدید بازنویسی و جایگزینی کلاس شبکهٔ پیشفرض جایگزینی و حذف ماژول Qt Multimedia با FFmpeg - این تغییرات در نتیجه منجر به پشتیبانی از دِکدر سخت‌افزاری برای DXVA2, VAAPI, VDA, CedarX, CUDA می‌باشد. بنابراین نیازی نیست افزونه‌ای مانند K-Lite Codec به عنوان دکدر ویدیو‌ها بر روی سیستم شما نصب باشد - پشتیبانی از فرمت‌های Hi10P اعمال شد - افزوده شدن ویژگی Real time preview در هستهٔ پلیر (در نسخه‌های بعدی فعال خواهد بود) - ویژگی فیلتر‌ برای OSD - امکان فیلتر سازی بر اساس libavfilter و مانند stero3d و blur - امکان پشتیبانی از ویژگی زیر‌نویس در قالب srt و ass بر اساس موتور libass - نمایش و رندر ویدیو به صورت فریم به فریم یا FBF - استریم بر پایه منابع فایل محلی، rtsp، https و ... و حتی پشتیبانی از استریمر سفارشی - پشتیبانی از چند خروجی برای هر کاربر - پشتیبانی و اعمال وضعیت بر اساس OpenGL و Software برای اعمال brightness, contrast, saturation, hue - پشتیبانی از پروتکل‌ mbedTLS با پشتیبانی TLS - پشتیبانی از فیلترینگ بیت‌استریم برای ویرایش فراداده‌ها در جریان‌های H.264, HEVC و MPEG-2 افزوده شدن سیستم به‌روزرسانی هوشمند جهت تشخیص نوع پلتفرم برای نسخهٔ سازگار جایگزینی تمامی ویژگی‌های پیشفرض پخش کننده با انجین جدید افزوده شدن پوسته‌های تاریک و روشن افزوده شدن نوار جستجوی اصلی افزوده شدن فیلتر‌های مرتب سازی در جستجو افزوده شدن نوار پنجرهٔ اختصاصی افزوده شدن امکان ساخت رمزعبور اختصاصی در بخش فراموشی رمز اافزوده شدن امکان ارسال رمزعبور جدید به شماره تلفن همراه جهت تأیید افزوده شدن ویژگی تمام صفحه و تنظیم حداکثری اندازه افزوده شدن امکان افزودن تصویر نمایه افزوده شدن نوار پنجرهٔ اختصاصی افزوده شدن دکمهٔ پسندیدن و دیگر تغییرات جزئی
  13. کامبیز اسدزاده

    این کنترل استانداردش همین هست، در واقع مشکل وجود نداره. دلیلش هم اینه که اشیاء رو باید در عرض و طول مشخصی از لیست قرار بدین. برای مثال مشخصه‌ی width بهتره برابر با مشخصه‌ی width والدش باشه.
  14. کامبیز اسدزاده

    به این روش عمل کنید: TextInput{ id: textInput width: 100 height: 30 text: "Hello, World!" selectByMouse: true MouseArea{ id: mouseArea enabled: textInput.focus ? false : true anchors.fill: parent cursorShape: Qt.IBeamCursor onClicked: textInput.forceActiveFocus() } }
  15. کامبیز اسدزاده

    درود، مثال درسته، اما مرتبط با نسخه‌ی ۲.۰ از Qt Controls نیست، مرتبط به نسخه قدیمی ۱.۰ هستش که به صورت زیر بهش دسترسی خواهید داشت. در نسخه‌های جدید روش توسعه پوسته متفاوت و البته بسیار راحت‌تر هست که در ادامه مثال زدم. import QtQuick.Controls.Styles 1.4 البته توصیه می‌کنم از نسخه جدید استفاده کنید. مثال : import QtQuick 2.12 import QtQuick.Controls 2.12 RadioButton { id: control text: qsTr("RadioButton") checked: true indicator: Rectangle { implicitWidth: 26 implicitHeight: 26 x: control.leftPadding y: parent.height / 2 - height / 2 radius: 13 border.color: control.down ? "#17a81a" : "#21be2b" Rectangle { width: 14 height: 14 x: 6 y: 6 radius: 7 color: control.down ? "#17a81a" : "#21be2b" visible: control.checked } } contentItem: Text { text: control.text font: control.font opacity: enabled ? 1.0 : 0.3 color: control.down ? "#17a81a" : "#21be2b" verticalAlignment: Text.AlignVCenter leftPadding: control.indicator.width + control.spacing } } این هم مستند نحوه‌ی گسترش پوسته در کیوت کوئیک کنترل ۲.۰
×
×
  • جدید...