متد حسود یا Feature envy در دسته بندی « کدهایی بیش از اندازه، وابسته به هم » قرار میگیرد. چنین متدی بیش از آنکه از فیلدها و خصوصیات کلاس خود استفاده کند، از فیلدها و خصوصیات شیء دیگری از نوعی دیگر، استفاده میکند. یکی از اشکالات کدهای بیش از اندازه وابسته به هم، دشواری در نگهداری و تغییر کد است. بهطوریکه در زمان تغییر بخشی از کد، نیاز است بخشهای مرتبط نیز مورد بررسی قرار گیرند. همچنین وابستگی بیش از اندازه کلاسها به یکدیگر قابل ...
در قسمت دوم ، قالب نمایش ردیفهای جدول، ثابت است و درون جدول به صورت مستقیمی درج و تعریف شدهاست. در ادامه میخواهیم این گرید را به نحوی تغییر دهیم که به ازای حالتهای مختلفی مانند نمایش اطلاعات و یا ویرایش اطلاعات هر ردیف، از قالبهای خاص آنها استفاده شود.
قابلیتی که در ادامه از آن برای «قالب پذیر ساختن گرید» استفاده خواهیم کرد، همان نکتهی «امکان تعویض پویای قالبهای یک دربرگیرنده» است که در مطلب « امکان تعریف قالبها در Angul ...
معرفی دایرکتیو ng-template
همانطور که از اسم آن نیز مشخص است، ng-template به معنای قالب انگیولار است و هدف از آن، ارائهی قسمتی از قالب نهایی یک کامپوننت میباشد. فریم ورک Angular از دایرکتیو ng-template در پشت صحنهی دایرکتیوهای ساختاری مانند ngIf، ngFor و ngSwitch استفاده میکند. برای مثال، قسمت if، تبدیل به یک ng-template شده و else آن نیز تبدیل به یک ng-template ضمنی دیگر خواهد شد.
روش فعالسازی و نمایش قالب ...
در تکمیل سری بررسی ویژگیهای C# 7.0 ، ذکر ویژگی Discards نیز ضروری است. Discards به معنای متغیرهای محلی هستند که قابل انتساب بوده، اما قابل خواندن نیستند. دارای نامی نیستند و تنها توسط یک _ مشخص میشوند. در اینجا underscore یا _، یک واژهی کلیدی است؛ مانند var و قابلیت خوانده شدن را ندارد (نمیتواند در سمت راست یک انتساب قرار گیرد).
علت وجود Discards در C# 7.0
گاهی از اوقات میخواهیم از مقادیر بازگشت داده شدهی تو ...
ASP.NET Core از مکانیزم « Data protection » برای تولید کلیدهای رمزنگاری اطلاعات موقتی خود استفاده میکند. این روش در دو حالت هاست برنامهها توسط IIS و یا عدم تنظیمات ذخیره سازی آنها به صورت دائمی، اطلاعات خود را در حافظه نگهداری میکند و با ریاستارت شدن سرور و یا IIS، این کلیدها از دست رفته و مجددا تولید میشوند. به این ترتیب کاربران شاهد این مشکلات خواهند بود:
الف) چون کوکیها و یا توکنهای آنها دیگر قابل رمزگشایی نیستند (به ...
این کد بد بو در دسته « جلوگیری کنندگان از تغییر » قرار میگیرد. اگر زمان ایجاد یک کلاس فرزند برای کلاسی، مجبور به ایجاد یک کلاس فرزند متناظر آن برای کلاس دیگری باشید، با این کد بد بود مواجه هستید. معمولا زمانی این اتفاق میافتد که یک درخت ارث بری به درخت ارث بری دیگری وابسته باشد. بهطوری که هر یک از کلاسهای موجود در آن، با یک کلاس در درخت دیگر متناظر باشند و ارتباط داشته باشند. این امر ایجاد تغییرات در کد را با مشکل مواجه خواهد کرد. ...
در مطلب « Angular CLI - قسمت پنجم - ساخت و توزیع برنامه » با نحوهی ساخت و توزیع برنامههای Angular، در دو حالت محیط توسعه و محیط ارائهی نهایی آشنا شدیم. همچنین در مطلب « یکپارچه سازی Angular CLI و ASP.NET Core در VS 2017 » نحوهی ترکیب یک برنامهی ASP.NET Core و Angular را بررسی کردیم. در اینجا میخواهیم فایل index.html ایی را که Angular CLI تولید میکند، با فایل Layout برنامههای ASP.NET Core جایگزین کنیم؛ تا بتوانیم در صورت نیاز، سفارش ...
در قسمت قبل با الگوریتم Association Rules که بیشتر برای تحلیل سبد خرید استفاده میشد، آشنا شدیم. در این قسمت که قسمت آخر از سری مقالات الگوریتمهای داده کاوی در SSDT میباشد، با الگوریتمهای Neural Network و Logistic Regression آشنا میشویم.
Neural Network (هوش مصنوعی) مقدمه روشی کار مغز
انسان برای حل مسالهای که با آن مواجه میشود را درنظر بگیرید. ابتدا حقایق مساله
را در چند سطح تحلیل ...
در قسمت قبل با مفهوم مایکرو سرویسها آشنا شدیم. سرویسهای کوچک و مجزایی که بصورت مستقل، قابلیت توسعه و استقرار دارند و در راستای انجام یک قابلیت کسب و کار در اختیار دیگران قرار میگیرند. ویژگیهای یک مایکرو سرویس چیست؟ بعد از آشنایی با معماری مایکرو سرویسها میخواهیم با ویژگیهای آن آشنا شویم. البته باید به این نکته توجه داشت که همهی معماریهای مایکروسرویسها این ویژگیها را ندارند؛ ولی میتوان انتظار داشت اکثر آنها این ویژگیها ...
فیلد موقتی یا Temporary field در دسته بندی الگوهای « بد استفاده کنندگان از شیء گرایی » قرار میگیرد. در این الگوی بد، فیلدها یا خصوصیات یک کلاس، در شرایط خاصی مقدار گرفته و مورد استفاده قرار میگیرند و در بقیه شرایط خالی هستند. زمانیکه در یک کلاس، متدی برای انجام فعالیت خود، تعدادی پارامتر ورودی زیادی نیاز داشته باشد، ممکن است برنامه نویس برای مواجه نشدن با تعداد پارامترهای زیاد ورودی، فیلدها یا خصوصیاتی را در کلاس مربوط به آن متد ایجا ...