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

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

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

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

  • آخرین بازدید

  • روز های برد

    98

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

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

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

389 عالی

4 دنبال کننده

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

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

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

موقعیت

  • شهر
    اورمیه

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

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

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

    راه حل این مسئله ساده‌تر از پیچیدگی که فکر می‌کنید هست. کافیه از 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" } } } }
  3. فعال‌سازی مشاوره‌های ویژه در صفحه‌ی اینستاگرام و تلگرام.

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

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

    پردازنده‌ها چگونه طی ۴۰ سال گذشته تغییر کرده‌اند؟ پردازنده‌ها از پیدایش تا‌به‌حال، در‌حال‌پیشرفت بوده‌اند و روز‌به‌روز درکنار قدرتمند‌ترشدن، مصرف انرژی آن‌ها هم بهینه‌سازی شده است. اما این پیشرفت‌ها چقدر بوده و در آینده چگونه خواهد بود؟ وقتی از طرح‌های پیشرفت تکنولوژی، به‌ویژه قانون مور، صحبت به‌میان می‌آید، طرح «۳۵ سال از داده‌های ریزپردازنده‌ها» که آن را ام. هورویتز، اف. لابونت، اُ. شچم، کی. الوکتن، ال. هموند و سی. بَتِن جمع‌آوری کرده‌اند، می‌تواند یکی از طرح‌های مهم باشد. بعد‌ها، سی. مور هم اطلاعاتی به این پروژه اضافه کرد. این طرح را چه با خطوط پیشرفت و چه بدون آن‌ها می‌توان در جاهای مختلفی از اینترنت پیدا کرد؛ هر‌‌چند این طرح فقط تا سال ۲۰۱۰ کامل شده و در چند سال اخیر، کامل نشده است. برای به‌روزکردن داده‌های این طرح که هر‌چند درست‌بودن آن تا سال ۲۰۱۰ مشخص نیست، داده‌هایی از 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 است.
  5. کامبیز اسدزاده

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

    سلام، بهتره موقع سوال پرسی از قوانین نگارشی استفاده کنید و همچنین علائم نشان گذاری مثل نقطه، ویرگول، علامت سوال استفاده کنید تا بفهمیم منظورتون سوالی هست یا پاسخ و نظر! اگر منظور شما این هست که توی Text می‌تونید تصویر اعمال کنید باید بگم اشتباهه همچین چیزی نمیشه مگر اینکه خودتون توسعش بدین. اگر منظورتون این هست که آیا می‌شه تصویر در داخل نوع Text اعمال کنید؟ این هم جوابش منفی هست، چرا که نوع Text از تگ‌های محدود html پشتیبانی می‌کنه نه همه‌ی اون‌ها مثل img و غیره...! پیشنهاد من این است که محتوا رو تجزیه کنید و نوع تصویر رو به کنترل نوع Image پاس بدین، و نوع متن رو به Text. اگر هم این کار رو نمی‌تونید گزینه‌ی پیشنهادی استفاده از WebView هست که خودش این موارد رو مدیریت می‌کنه.
  8. سلام، پروژه‌های بسیاری وجود دارند که جهت نگه‌داری اطلاعات و تراکنش‌های بسیاری به جای استفاده از بانک‌های اطلاعاتی لوکال (local) از بانک‌های تحت سرور یا وب استفاده می‌کنند. به طور کلی روش‌هایی برای برقراری ارتباط بین سرور و کلاینت وجود دارد که یکی از بهترین آن‌ها معماری Representational State Transfer (REST) است. بسیاری از نرم‌افزار‌ها و اپلیکیشن‌های موبایل یا حتی دسکتاپ تحت چنین روش‌هایی ارتباط برقرار می‌کنند. که تحت عملیات GET،POST،PUT و DELETE معرفی شده‌اند. با توجه به اینکه توسعه و آزمایش ترنسفِرِ اطلاعات به روش‌های فوق نیازمند آزمایش واقعی آن است ابزار‌هایی وجود دارد تا شما عملیات ارسال و دریافت نتایج آن را مشاهده کنید. برخی از این ابزار‌ها عبارتند از وب‌سایت‌ ApiTester که برای آزمایش و خطای سریع بسیار کاربرد دارند. اما با توجه به نیاز در این زمینه، ابزار بسیار معروف و قدرتمندی وجود دارد به نام Postman که حدود پنج میلیون توسعه‌دهنده از آن استفاده می‌کند. شما می‌توانید آن را از این آدرس مناسب با پلتفرم خود، آن را دریافت کنید. این ابزار قابلیت ارسال همزمان درخواست‌ها را دارد و تقریباً از همه‌ی معماری و قالب‌های مورد نیاز پشتیبانی می‌کند. شخصاً این ابزار را برای همگان توصیه می‌کنم، بسیار مفید و کاربردی است.
  9. کامبیز اسدزاده

    سلام و درود بر شما، پست زیر رو بررسی کنید، اگه فراتر از این نیاز داشتین اطلاع بدین بیشتر توضیح بدم.
  10. کامبیز اسدزاده

    در استاندارد سی‌پلاس‌پلاس وقتی نیاز است تا نوعی را برای متغیر خود انتخاب و توصیف کنید به طور معمول آن را به صورت‌های نوعِ اساسی و پایه مانند عدد صحیح، رشته، آرایه و غیره و یا یک نوع ویژه‌ی واجد شرایط جهتِ استثناء شدن توصیف می‌کنیم. این انواع به دو صورت no cv-qualifier و cv-qualifier از هم متفاوت توصیف می‌شوند. کلمات CV خلاصه‌ شده‌ی const و volatile است، زمانی که شما نوعی از متغیر را تحت کلمات کلیدی const و volatile توصیف می‌کنید در واقع نوع آن را تحت عنوان const-qualified و volatile-qualified توصیف کرده‌اید که از تعریف عادی متمایز می‌شوند و با این کار متغیر را واجد شرایط خاصی قرار می‌دهید. برای مثال، نوع زیر در قالب استاندارد cv-qualifier تعریف شده است که به صورت ضروری مقدار اولیه‌ی آن نیز مشخص شده است: const int ci = 3; در صورتی که کدی همانند نمونه‌ی زیر داشته باشیم: const int ci = 3; ci = 4; از طرف کامپایلر با خطایی مشابه خطای زیر مواجه خواهیم شد: error: cannot assign to variable 'ci' with const-qualified type 'const int' منظور از این خطا این است که، مقدار جدیدی را شما نمی‌توانید به متغیری از نوع const که تحتِ شرایطِ const-qualified می‌باشد بدهید. از طرفی اگر نوع متغیر خود را با volatile توصیف کنید، مقدار متغیر در هر نَخ (Thread) دیگر احتمال تغییر یافتن را خواهد داشت. volatile int ci = 3; ci = 4; در واقع شما آن متغیر را واجد شرایط ویژه‌ای قرار داده‌اید که بتواند در هرجا که نیاز بود تغییر پیدا کند. (در این حالت بر خلاف نوع const کامپایلر خطایی را از خود ساطع نمی‌کند و علاوه بر آن در زمان بهینه‌سازی از آن مورد صرف نظر خواهد کرد). استفاده از کلمه‌ی کلیدی volatile بهینه‌سازی کامپایلر را از بهینه‌سازی آن دور می‌کند.توجه داشته باشید که یک کلمه‌ی کلیدی ویژه نیز وجود دارد به نام mutable که از آن زمانی استفاده می‌شود که اعضای کلاس و نوع توابع شما به صورت const یعنی از نوع const-qualified توصیف شده باشد که تغییر آن امکان‌پذیر نیست. در صورتی که لازم باشد استثناء یا واجد شرایط قرار بگیرد نوع آن توسط mutable می‌تواند توصیف شود که اجازه‌ی تغییر فقط به آن مورد داده خواهد شد. mutable int i; در نهایت متغیر‌ زیر به صورت no cv-qualitifier تعریف شده است که در حالت معمول بر اساس قوانین و شرایطی که کامپایلر در نظر می‌گیرد با آن برخورد و در صورت نیاز بهینه‌سازی خواهد شد. int i = 2;
  11. کامبیز اسدزاده

    سلام و درود، این پست صرفاً جنبه‌ی مشاوره و به اشتراک گذاری تجربیات را دارد (بنابراین نحویِ بیان آن عامیانه است). من @کامبیز اسدزاده : Kambiz Asadzadeh : علاوه بر برنامه‌نویسی و علاقه‌ی شدیدی که دنیای تکنولوژی و مخصوصاً مهندسی کامپیوتر و به ویژه برنامه‌نویسی در حوزه‌ی استارت‌آپی دارم، سال‌هاست که به عنوان منتور فنیِ استارت‌آپ‌ها در رویداد‌ها، جلسات و دوره‌همی‌های بسیاری شرکت و در محور رُشد فردی‌ فنی فعالیت به استارت‌آپ‌های بسیاری کمک کرده ام. با توجه به منتورینگ انواع مختلف استارت‌آپ‌ها در حوزه‌های IT مشکلات، سوالات و موارد بسیاری رو شناسایی و برای آن‌ها راه‌کار‌هایی رو ارائه داده‌ام که به نوبه‌ی خودم برخی از آن‌ها را در اختیار شما قرار خواهم داد. بهتره قبل از هر چیز تعریفی از منتور (Mentor) و منتورینگ داشته باشیم! بنابراین مقاله‌ی زیر را حتماً مطالعه کنید. حال با توجه به تجربیات مربوط به این حوزه، لازم دونستم بخشی از این راه‌کار‌ها رو در اختیار کسانی قرار بدم که مُدام در ذهن خود دنبال پاسخی برای چگونکی‌های رسیدن به یک مهارت مطلوب فردی هستن. مدتی هست من در گروه‌ها و شبکه‌های اجتماعی بسیاری مشاهده می‌کنم که افراد تازه کار به دنبال این هستند که چگونه و به چه شیوه‌ای می‌تونن برنامه‌نویسی حرفه‌ای و مفید را یاد بگیرند. پاسخ این سوال پیچیده نیست، اما شاید خصوصیاتی را که باید بر روی آن‌ها تمرکز داشته باشید رو به خوبی نمی‌شناسید! من به شما کمک می‌کنم تا در این مسیر مسائلی که واقعاً باید به آن‌ها دقت کنید رو شناخته و اون‌ها رو در نظر بگیرید. خصوصیات یک برنامه‌نویس حرفه‌ای چیست؟ علاقه و استعداد در حوزه‌ی برنامه‌نویسی (داشتن اراده‌ی قوی). سِمِج و کُنجکاو بودن. شکست ناپذیر (خستگی ناپذیر). مخالف هر گونه بهانه و تنبلی - به کار گیری روش‌های صحیح حل مسائل و رسیدن به پسخ سوالات. رقابت با هیچکس به جز دیروز خودِت! (رقیبت باید خودت باشی نه شخصِ خاصی) از دیگران الگو بگیر اما با کسی به جز خودت رقابت نکن. کم توقع از لحاظ کمک گرفتن از دیگران بر روی مسائل ساده باش (پر توقع از لحاظ رسیدن به پاسخ با تلاش‌های فردی باش). تعصب نداشتن بر یک حوزه یا زبان یا هر ابزاری (زبان‌های برنامه‌نویسی لوازم و ابزار‌های جعبه‌ابزار یک برنامه‌نویس هستند). هدف داشتن (هدف مفید - نه مُخرب). آینده نگر بودن (همیشه احتمالات رو در نظر بگیر و چشم بسته دنبال چیزی نباشید) و حرف هر کسی رو در بیان اول بدون تحقیق (سند) قبول نکن. حرف شنوی و استفاده از تجربیات دیگران بسیار خوب هست (اما باید مطمئن باشید که اون پیشنهاد صحیح هست نه غلط!) حالا ممکن پیشنهاد دهنده استاد دانشگاه باشه یا می‌تونه یکی از ما داخل شبکه‌های اجتماعی باشه! (بهتره دنبال منتور باشید). همیشه یک قدم از چیزی که هستید جولو تر باشید. حرفه‌ای باش! حرفه‌ای‌های برنامه‌نویسی رو با اخلاقِ خوبشون باید شناخت. عدم حسادت و غرور در آموزشِ آموخته‌ها و تجربیات یکی از بهترین نکات حرفه‌ای بودن است. من چطور می‌تونم یک برنامه‌نویس حرفه‌ای بشم؟ پاسخ، با توجه با خصوصیات بالا، یک برنامه‌نویس با تلاش مستمر و متکی به دانش و مستندات صحیح می‌تونه با مرور زمان مهارت خودش رو افزایش و تجربیات و سوابش و رزومش رو قوی کنه. به هیچ عنوان راه صد ساله را یک شبه نمی‌تونه بره! آیا دانشگاه در برنامه‌نویسِ مفید شدن مهم است؟ این سوال بسیار زیاد به گوش می‌خوره، اما حقیقت اینه که دانشگاه به عنوان یک ابزار ساخت و پیشرفت فردی بشما نمیاد! متاسفانه دانشگاه‌ها و دانشجویانی که با هدف التماس به اساتید و دیگر افراد به دنبال پاس کردن دروس دانشگاهی هستن هیچ شانسِ موفقیتی در رسیدن به یک حرفه‌ای شدن رو ندارن! نتیجه‌ی این شیوه از یادگیری و آموزش چیزی به جز فارغ‌التحصیل شدن همراه با یک کاغذ پاره نخواهد بود و هیچ جایی در بازار و دنیای واقعی نخواهد داشت. البته منظور از این صحبت‌ها این نیست که دانشگاه مفید نبوده و تاثیری در موفقیت نداره، اما حقیقت اینه که علم واقعیِ برنامه‌نویسی با توجه به نظام آموزشی و شرایطی که وجود داره به دست نمیاد. چطور می‌توانم به پاسخ سوالاتی که دارم برسم؟ خوشبختانه دنیای مُدرن امروزی زمینه‌ای برای برقراری ارتباط بین یکدیگر را به خوبی فراهم کرده، در صورتی که شما سعی خودتون رو کردین اما نتونستین مشکلی که با اون مواجه شدین رو حل کنید، جای نگرانی نداره! همه‌ی ما یک استاد مشترک داریم (اسمش گوگل Google) هست. شما می‌تونید با جستجو در این موتور جستجوگر به ۱۰۰٪ پاسخ‌های خود برسید. نکته: سعی کنید سوالات خودتون رو به زبان علمی بپرسید (انگلیسی) حتی اگه زبان شما دست‌ و پا شکسته باشه درصد موفقیت و رسیدن به پاسخ بهتر و سریعتر در این حالت بسیار زیاده. بنابراین شما می‌تونید پاسخ سوالات خودتون رو خیلی راحت با چند کلمه‌ی مشخص بپرسید مثل نمونه‌های زیر: Why should I learn C++ in 2019? How to declare an array in C++? How to declare a string in Java? Why do we need pure virtual function in C++? How do I create a class in Visual Studio 2017? How long will it take to learn Python? مطمئن باشید جستجو‌گر گوگل تحت هوش مصنوعی خودش بهترین و نزدیک‌ترین پاسخ‌ها رو نسبت به سوال شما پیشنهاد خواهد داد! این کار باعث می‌شه حتی شمایی که به سوال پُرسی مغرور هستید یا حتی شمایی که به خودتون زحمت نمی‌دین جستجو کنید به راحتی به پاسخ‌هایی برسید که قراره اون رو از کسی بپرسید! یک برنامه‌نویس حرفه‌ای رو چطور می‌شه شناخت؟ یک برنامه‌نویس حرفه‌ای ادعای تو خالی ندره! هر زمان که دیدین یک برنامه‌نویس از دانش خودش ادعا می‌کنه مطمئن باشید اونوطور که باید به تکامل نسبی در این علوم نرسیده! دنیای برنامه‌نویسی نامحدود و بسیار گسترده هست. برنامه‌نویس حرفه‌ای معمولاً دست به آموزش و یاری دیگران نیز داره، معمولاً از تجربیات حرفه‌ای خودشون در اختیار دیگران نیز قرار میدن. البته این بستگی به شرایط هم داره (ممکنه کسی به خاطر مشغله‌ی زندگی روزمره) نتونه اونطور که باید به دیگران کمک کنه (شاید هم اصلاً علاقه‌ای به یاد دادن نداره ) شاید هم اعتماد به نفس کافی نداشته باشه که همه‌ی این‌ها طبیعی است. اما Github و سایت‌های مرجع، مقالات، کتاب‌ها و نمونه‌کار‌ها نیز نمونه مثال خوبی برای پیدا کردن منابع به اشتراک‌گذاری چنین افرادی هست که می‌تونه در شناخت مهارت‌هاش ملاک باشه. صحبت‌های شخصی مثل استیو جابز رو در کنفرانس Stanford سال ۲۰۰۵ پیگیر باشید ببینید تنها رابطش با دانشگاه چی بوده. البته منظورم این نیست که خدایی نکرده دانشگاه رو بیخیال بشید خیر! چون خیلی‌ها خصوصیات بالارو ندارند و بهتره تشریف ببرن دانشگاه و همونجا شاید به کمک کاغذ پاره یه چیزی شدن رضایت به یک حقوق کارمندی هم دلیل بدی نیست...! اما اگه می‌خوای دنیا رو بسازی باید فراتز از چهارچوب محدودی که برات ساختن تفکر کنی! خلاصه‌ی این صحبت‌ها از نظر من = تلاش‌ مکرر در قالب (خودآموزی) هست باید به خودت، فرصت و نعمتی که خالقِت بهت داده اطمینان و اعتقاد داشته باشی). إنَّ لِكُلِّ شَيءٍ زَكاةً ، وزَكاةُ العِلمِ أن يُعَلِّمَهُ أهلَهُ. امام صادق عليه ‏السلام: هرچيزى ‏زكاتى دارد و زكات دانش، آموختن آن است به اهلش. به فرموده رسول خدا (صلی الله علیه و آله): یا عالم باش یا در حال آموختن دانش و وقت خود را در بیهودگی و خوشگذرانی صرف نکن. نظرات دیگر... آنتونی جی. دی آنجلو: اشتیاق‌تان برای یادگیری را توسعه دهید، تا هرگز در راه رشد و تعالی متوقف نشوید. آلبرت اینشتین: تنها چیزی که در یادگیری من تداخل ایجاد می‌کند، تحصیلاتم است. وینستون چرچیل: من شخصا همیشه آماده یادگیری هستم، اگرچه دوست ندارم همیشه تحت تعلیم باشم. افلاطون: دانشی که همراه با اجبار کسب شود در ذهن نمی‌ماند. Education is the most powerful weapon which you can use to change the world. - Nelson Mandela I have no special talent. I am only passionately curious. - Albert Einstein A person who won't read has no advantage over one who can't read. - Mark Twain احتمال به‌روز رسانی و ادامه‌ی این پست وجود دارد...
  12. کامبیز اسدزاده

    منتور (Mentor) کیست و منتورینگ چیست؟

    منتور چیست؟ منتور (Mentor) به افرادی می‌گویند که در یک زمینه‌ی خاصی تخصص، تسلط و تجربه دارند و در آن زمینه کارشناس و صاحب نظر هستند و می‌توانند به دیگران در یادگیری آن کار کمک کنند. منتور یک رابطه ارگانیک و دوستانه با افراد جوانتر تحت سرپرستی خود برقرار می‌کند و نه تنها در مورد دروس دانشگاهی بلکه در خصوص مشاغل و مشکلات فرهنگی، اجتماعی و روحی و روانی آنان را یاری می دهد. همه‌ی ما در زندگیمان فردی را ملاقات کرده‌ایم که هم نشینی و هم صحبتی با او برای زندگی ما اهمیت داشته است. برای مثال، این فرد می‌تواند یکی از معلم‌های ما و یا یکی از اعضای خانواده‌ باشد. چنین فردی را می توان منتور نامید. خصوصیات و وظایفی که منتور دارد سابقه کار قابل توجه علاقه‌مند به آموزش و انتقال تجربیات خود به دیگران دارای تجربه‌ی شکست و موفقیت دارای ارتباطات قابل توجه سابقه‌ی کار در تیم‌های استارت‌آپی آگاه به مسائل استارت‌آپی اهل دانش دانش و تجربیات زندگی خود را به اشتراک می‌گذارد توصیه می‌کند و مشاوره می‌دهد گوش می‌دهد الهام می‌بخشد تشویق می‌کند با علاقه به سؤالات و نگرانی‌های فرد پاسخ می‌دهد صادق و انتقادپذیر است راجع به هدف‌گذاری بحث می‌کند در مورد رشد شغلی و حرفه‌ای مشاوره می‌دهد منابع را شناسایی می‌کند به رشد مهارت‌های مدیریت و رهبری کمک می‌کند برای رشد فرهنگ سازمانی تلاش می‌کند می‌تواند باعث شفافیت در سازمان شود رزومه‌ها را بررسی می‌کند نکته‌های کلیدی برای مصاحبه را تعیین می‌کند حمایت کننده است ممکن است فرد را به اشخاص کاربلد دیگری ارجاع دهد فرد را به چالش می‌کشد تا از حوزه‌ی امن خودش بیرون بیاید یک محیط یادگیری ایمن برای ریسک کردن ایجاد می‌کند روی رشد همه‌جانبه‌ی فرد تمرکز دارد مزایایی که یک منتور می‌تواند داشته باشد پژوهش‌ها نشان داده است که کسانی که از وجود منتور بهره برده‌اند، احساس رضایت بیشتری نسبت به شغل خود دارند. علاوه‌ براین، این افراد اغلب اوقات عملکرد بالاتری پیدا کرده‌اند، حقوق بالاتری می‌گیرند و روند پیشرفت‌شان در شغل سریع‌تر است. او بازار را به خوبی می‌شناسد و رفتار با مشتری را به شما می‌آموزد. او چشم‌اندازی بزرگ دارد و صحبت با او چشم‌انداز شما را بهبود می‌دهد. راه و چاه را از هم شناخته و شما را با برخی اشتباهات فاحشی آشنا می‌کند که نبایدانجام دهید. او شبکه‌ای بزرگ از کارآفرینان، سرمایه‌گذاران و مسوولین دارد که می‌توانید واقعاً روی آن حساب کنید. خود او شاید در مقام یک فرشته کسب‌وکار روی کسب‌وکار شما سرمایه‌گذاری کند. شما گاهاً درگیر امور اجرایی جزئی می‌شوید و از بحث‌های کلانی مثل استراتژی کسب‌وکارتان دور می‌شوید. او کسب‌وکار را از بیرون می‌بیند و مسیر نادرست را گوشزد می‌کند. او فردی موفق است و باانگیزه. پس در مراحل سخت و خشن راه‌اندازی کسب‌وکار در ایران به شما روحیه و انگیزه مضاعف می‌دهد. به طور کلی، حوزه‌ی فعالیت‌های منتورها را در دو گروه می‌توان دسته‌بندی کرد؛ حوزه‌ی شغلی (حرفه‌ای) و حوزه‌ی روان‌شناختی. در حوزه‌ی حرفه‌ای، منتور تلاش می‎کند تا به عنوان یک مربی به فرد توصیه‌هایی داشته باشد و رشد و عملکرد حرفه‌ای او را بالا ببرد. در حوزه‌ی روان‌شناختی، منتور به عنوان یک الگو ایفای نقش می‌کند و به عنصر الهام‌بخش تبدیل می‌شود. این دو حوزه معمولاً همزمان اتفاق می‌افتند و به فرد این امکان را می‌دهند تا علاوه بر پیشرفت در حوزه‌ی شغلی، توازنی مناسب بین شغل و زندگی شخصی برقرار سازد. دانش، توصیه و منابعی که منتور با فرد در میان می‌گذارد بستگی به اهداف رابطه‌ی منتورینگ دارد. ممکن است منتور اطلاعاتی را راجع به مسیر شغلی خود به فرد بدهد یا بیشتر به دنبال پشتیبانی کردن احساسی، دادن انگیزه و بازی کردن نقش یک الگو باشد. کمک به کشف ظرفیت‌های جدید در هر شغل، هدف‌گذاری صحیح و شناسایی منابع نیز می‌تواند در حوزه‌ی عملکرد منتور قرار بگیرد. نقش منتور با توجه به نیاز فرد تغییر می‌کند. بعضی از رابطه‌های منتورینگ بر اساس برنامه‌هایی ساختاریافته و منظم بنا شده‌اند که انتظارات و دستورالعمل‌های مشخصی دارند ولی بعضی دیگر، حالتی غیررسمی دارند. نکته: همانطور که انتخاب یک منتور خوب مزایای بسیاری در رُشد فردی و موفقیت کسب‌و‌کار شما دارد؛ به همان اندازه انتخاب یک منتور نا مناسب و بد تاثیر منفی خواهد داشت. توجه: منتور‌ینگ خود به عنوان یک شغل نیز محسوب می‌شود، همانگونه که مشاوره مهم است! استفاده از تجربیات یک مشاور کسب‌و‌کار و فنی ارزش بسیاری دارد و بدون شک بسیار مهم خواهد بود. بنابراین منتورینگ متناسب با نوع استارت‌آپ و مشارکتی که در رُشد آن دارد هزینه یا سهمی را برای آن مشخص می‌کند و در توسعه‌ی فردی و یا استارت‌آپ به وظایف خود عمل می‌کند. منتور فنی یا منتور کسب‌و‌کار!؟ لازم به ذکر است در رابطه با این موضوع روشن سازی شود که منتور کسب‌و‌کار می‌تواند راه و روش توسعه‌ی کسب‌و‌کار شما را بهبود داده و برای شما مشاوره‌های مفیدی در این زمینه ارائه دهد. در مقابل منتور فنی می‌تواند با در نظر گرفتن مسیری که منتور کسب‌و‌کار برای شما مشخص کرده است راه و روش صحیح توسعه‌ی محصول و استارت‌آپ شما را از لحاظ فنی ارائه دهد. یک منتور فنی می‌تواند صاحب نظر در حوزه‌ی کسب‌و‌کار نیز باشد (این بستگی به تجربیات استارت‌آپی و کسب‌و‌کار آن خواهد داشت). بهره‌گیری از هر دو نوع منتور در رشد فردی و استارت‌آپی شما بسیار موثر خواهد بود. خلاصه‌ای از تعریف منتور منتور کسی است که همانند یک فانوس دریایی مسیر موفقیت و شکست را در هر شرایطی برای شما روشن سازد
  13. ابزار Android NDK به عنوان مجموعه‌از ابزار‌هایی است که به شما امکان آن را می‌دهد تا بخشی از برنامه‌های خود را به صورت بومی تحت زبان C و ++C توسعه دهید. بنابراین NDK از چندین کتابخانه‌ی در زمان اجرای ++C پشتیبانی می‌کند؛ در این پست در رابطه با آخرین تغییرات مرتبط با NDK اطلاع رسانی می‌شود. public class MyActivity extends Activity { /** * Native method implemented in C/C++ */ public native void computeFoo(); } بر اساس آخرین تغییرات کتابخانه‌های استاندارد libstdc++ به libc++ به‌روز رسانی و تمامی ویژگی‌های استاندارد C++17 پشتیبانی می‌شود که از نسخه‌ی R18 به بعد در دسترس قرار گرفته است. برخی از تغییرات مهم که لازم است به آن‌ها توجه شود به صورت زیر می‌باشند: تغییرات اساسی از نسخه‌ی NDK R17 آغاز شده است که در آن یکی از مهمترین و تکان‌ دهنده‌‌ترین تغیرات حذف GCC است که قرار بر این بود در نسخه‌های جدید NDK R18 پشتیبانی از GCC به صورت کامل حذف و Clang جایگزین آن شود. در نسخه‌ی R18 پشتیبانی از gnustl, gabi++و stlport حذف شده است. پشتیبانی از ICS از اندروید‌های ۱۴ و ۱۵ به بعد حذف شده است. بر اساس قوانی جدید گوگل، بار‌گذاری اپلیکیشن از تاریخ آگوست ۲۰۱۹ به بعد در فروشگاه گوگل پلی (Play Store) نیازمند نسخه‌ی معماری ۶۴ بیتی می‌باشد. پشتیبانی از C++17 در نسخه‌ی R18 به بعد تایید نهایی و قابل استفاده شده است و همچنین در نسخه‌های R19 استفاده از تمامی استاندارد‌های منسوخ شده پیشنهاد نمی‌شود. کلمات کلیدی new و delete در استاندارد جدید ++C از نسخه‌ی R18 منسوخ و در نسخه‌ی R19 به طور کامل حذف خواهند شد. پشتیبانی از مدیریت‌های استثناء (RTTI) در NDK به صورت پیش‌فرض غیر فعال می‌شود. مانند استثنائات، RTTI در libc++ پشتیبانی می‌شود، اما به صورت پیشفرض در android-build غیرفعال شده است که برای فعال‌سازی آن‌ می‌توانید از cmake و دیگر ابزار‌ها استفاده کنید. هیچ محدودیتی در رابطه با هِدر‌های سی‌پلاس‌پلاس در اندروید وجود ندارد. برای فعال سازی RTTI در برنامه‌ی شما در ndk-build کد زیر را در application.mk اضافه کنید: APP_CPPFLAGS := -frtti همچنین برای فعال سازی آن برای یک ماژول خاص در ndk-build کد دستوری زیر را استفاده کنید: LOCAL_CPP_FEATURES := rtti روش دیگر به صورت زیر است: LOCAL_CPPFLAGS := -frtti نکته: تحت این سند ویژگی‌های سیستمی STL در آینده حذف خواهند شد. توجه: libc++ یک کتابخانه‌ی سیستمی نیست. در صورتی که از libc++_shared.so استفاده می‌کنید باید آن را در داخل فایل apk خود قرار دهید. در صورتی که از Gradle استفاده می‌کنید این کار به صورت خودکار انجام می‌شود.
  14. نسخه‌ی Qt Creator 4.8.1 منتشر شد. تغییرات و بهود‌ها: Qt Creator version 4.8.1 contains bug fixes. The most important changes are listed in this document. For a complete list of changes, see the Git log for the Qt Creator sources that you can check out from the public Git repository. For example: git clone git://code.qt.io/qt-creator/qt-creator.git git log --cherry-pick --pretty=oneline origin/v4.8.0..v4.8.1 General * Fixed too large minimum size of preferences dialog (QTCREATORBUG-21678) Editing * Fixed that text marks could vanish (QTCREATORBUG-21628) * Fixed wrong background color for some text highlighting items (QTCREATORBUG-21661) * Fixed handling of system text encoding on Windows (QTCREATORBUG-21622) * Language Client * Fixed crash after failed server restarts (QTCREATORBUG-21635) All Projects * Fixed crash when renaming file in file system view (QTCREATORBUG-21741) * Fixed that `Create suitable run configurations automatically` setting was not saved (QTCREATORBUG-21796) QMake Projects * Fixed handling of `unversioned_libname` (QTCREATORBUG-21687) C++ Support * Clang Code Model * Fixed Clang backend crashes when `bugprone-suspicious-missing-comma` check is enabled (QTCREATORBUG-21605) * Fixed that `Follow Symbol` could be triggered after already moving to a different location * Fixed tooltip for pointer variables (QTCREATORBUG-21523) * Fixed issue with multi-line completion items (QTCREATORBUG-21600) * Fixed include order issue that could lead to issues with C++ standard headers and intrinsics * Fixed highlighting of lambda captures (QTCREATORBUG-15271) * Fixed issues with parsing Boost headers (QTCREATORBUG-16439, QTCREATORBUG-21685) * Clang Format * Fixed handling of tab size (QTCREATORBUG-21280) Debugging * Fixed `Switch to previous mode on debugger exit` (QTCREATORBUG-21415) * Fixed infinite loop that could happen when adding breaking on non-source line (QTCREATORBUG-21611, QTCREATORBUG-21616) * Fixed that debugger tooltips were overridden by editor tooltips (QTCREATORBUG-21825) * Fixed pretty printing of multi-dimensional C-arrays (QTCREATORBUG-19356, QTCREATORBUG-20639, QTCREATORBUG-21677) * Fixed issues with pretty printing and typedefs (QTCREATORBUG-21602, QTCREATORBUG-18450) * Fixed updating of breakpoints when code changes * CDB * Fixed `Step Into` after toggling `Operate by Instruction` (QTCREATORBUG-21708) Test Integration * Fixed display of UTF-8 characters (QTCREATORBUG-21782) * Fixed issues with custom test macros (QTCREATORBUG-19910) * Fixed source code links for test failures on Windows (QTCREATORBUG-21744) Platform Specific Android * Fixed `ANDROID_NDK_PLATFORM` setting for ARMv8 (QTCREATORBUG-21536) * Fixed debugging on ARMv8 * Fixed crash while detecting supported ABIs (QTCREATORBUG-21780) برای دریافت کلیک کنید.
  15. کامبیز اسدزاده

    سلام، این تاپیک صرفاً جهت بازبینی و رقابت بین کد‌های نوشته شده توسط شما است، شما می‌توانید سَبکِ تمیز‌نویسی (استایلِ) کد‌های خود را برای معرفی به دیگران در این بخش به اشتراک بگذارید. کد‌هایی که از لحاظ خوانایی و پاکی و فاقد باگ‌های احتمالی هستند امتیاز مثبت و کد‌هایی که فاقد آن باشند امتیاز منفی خواهند گرفت.
×