Memento یک الگوی طراحی مفید و ساده است که برای ذخیره و بازیابی state یک object استفاده میشود. در بعضی از مقالات از آن به عنوان snapshot نیز یاد شده است! اگر با git کار کرده باشید، این مفهوم را میتوان در git بسیار یافت؛ هر commit به عنوان یک snapshot میباشد که میتوان به صورت مکرر آن را undo کرد و یا مثال خیلی سادهتر میتوان به ctrl+z در سیستم عامل اشاره کرد. به مثال زیر توجه کنید: Int temp;
Int a=1;
temp=a;
...
در قسمت قبلی ، نحوه ارتباط بین کامپوننتهای Parent و Child را مورد بررسی قرار دادیم و اینکه چگونه دادههایشان را به اشتراک میگذارند؛ اما چند موضوع در روش قبلی مورد بحث میباشد: 1) مدیریت nested componentها برای استفاده از چنین روشی مشکل است. 2) اگر تعداد دادههای اشتراکی زیاد باشد، مدیریت آنها با استفاده از props گیج کننده میباشد. 3) اگر دو کامپوننت مجزا (Sibling Component) قصد به اشتراک گذاری اطلاعاتی را داشتند تکلیف چی ...
برنامههای Vue.js ای از چندین کامپوننت برای بخش بندی هر قسمت تشکیل میشوند و این بخش بندی برای مدیریت بهتر تغییرات، خطایابی، نگهداری و استفاده مجدد ( reusable) میباشد. فرض کنید تعدادی کامپوننت در برنامه داریم و اطلاعات این کامپوننتها بهم وابسته میباشند؛ بطور مثال یک کامپوننت انتخاب دسته بندی را داریم و به محض تغییر این مقدار، میخواهیم لیستی از محصولات پیشنهادی یا پرفروشِ آن دسته بندی، در کامپوننت پایین صفحه نمایش داده شود و یا خرید ...
دیشب نسخه 6 پیشنمایش دات نت کور 3، منتشر شد و ویژگیهای بسیار خوبی را ارائه کرد و بهانهای شد تا با برخی از ویژگیها مخصوص خروجی گرفتن از برنامه در دات نت کور 3 آشنا بشویم. PublishSingleFile توسط این دستور میتوانید برنامه خودتان را همراه با تمام اسمبلیها و فایلها، در یک فایل Exe قرار دهید و اجرا کنید. برای بار اول اجرا ممکن است چند ثانیه طول بکشد ولی از دفعات بعد، تاخیری در اجرا نخواهیم داشت. در واقع این روش تمام فایلها ر ...
از زمان ارائهی نگارش 72 مرورگر chrome، قابلیتهای استفاده از ES10، میسر شدهاست. برای اینکه از شماره نگارش مرورگر خود مطلع شوید، کافیست به منوی Help و سپس بر روی گزینهی About Google Chrome کلیک کنید تا شمارهی نسخهی نصبی بر روی سیستم شما مشخص شود: تابع ()flat : امکان یکی شدن همه آرایههای زیرمجموعه (sub-array) مجموعه را در یک آرایه جدید فراهم میکند و با استفاده از depth، سطح ادغام آرایه را مشخص میکنیم (عملکرد این تا ...
در قسمت قبلی نحوه کانفیگ اولیه برنامه را به همراه نصب پلاگینهای مورد نیاز، بررسی نمودیم؛ در ادامه قصد داریم تا چندین کامپوننت , ^ را برای نمایش لیست فیلمها، جزییات فیلم و جستجو، به برنامه اضافه کنیم و به هر کدام یک route را نیز انتساب دهیم. از کامپوننتها برای بخش بندی قسمتهای مختلف سایت استفاده میکنیم. هر بخش برای دریافت و نمایش اطلاعاتی خاص مورد استفاده قرار میگیرد. بر خلاف Angular که بهراحتی با دستور زیر میتوان برای آن یک کامپون ...
Vue.js یکی از محبوب ترین فریم ورکهای SPA است و سایت جاری نیز دارای مقالات خوبی دربارهی Vue.js میباشد. قصد داریم طی چند مقاله با استفاده از Vue.js و چندین پلاگین مطرح آن، یک سایت سادهی نمایش فیلم را ایجاد کنیم. ابتدا Node.js را بر روی سیستم خود نصب کنید (پیشنهاد ما نسخهی LTS میباشد). مراحل نصب آن ساده است و بصورت Nextهایی پی در پی میباشد؛ بصورت پیش فرض npm نیز همراه آن نصب میشود. سپس دو دستور زیر را جهت صحت انجام مرا ...
فرض کنید اسمبلی A که System.Drawing.Common، نام دارد، فضای نام System.Drawing.Common را ارائه میدهد و اسمبلی B که CoreCompact.System.Drawing نام دارد، باز هم دقیقا همان فضای نام را ارائه میدهد. سؤال: آیا میتوان از این دو اسمبلی مختلف در برنامهی خود استفاده کرد؟ یا مثال دیگر آن داشتن دو اسمبلی با نگارشهای مختلف، از یک کتابخانه است. برای مثال یکی بر اساس netcoreapp2.1 تهیه شدهاست و دیگری بر اساس netstandard2.0 و به هر دلیلی نیاز است که ...
امکان تعریف نوعهای شمارشی async در C# 8.0
فرض کنید قصد دارید یک متد async از نوع IEnumerable را که تعدادی yield return به تاخیر افتاده را به همراه دارد (yield returnها فقط زمانی اجرا میشوند که بر روی آنها متدهایی مانند ToList و یا حلقهی foreach اجرا شوند) و همچنین توسط await Task.Delay، دریافت اطلاعات به صورت async را نیز شبیه سازی میکند، تهیه کنید: public struct Statement
{
public int Id { get; }
publ ...