اشتراک‌ها
سری 10 قسمتی توسعه‌ی برنامه‌های React با TypeScript از JetBrains

ReactJS is wildly popular and thus wildly supported. TypeScript is increasingly popular, and thus increasingly supported.

The two together? Not as much. Given that they both change quickly, it's hard to find accurate learning materials.

React+TypeScript, with JetBrains IDEs? That three-part combination is the topic of this series. We'll show a little about a lot. Meaning, the key steps to getting productive, in the IDE, for React projects using TypeScript. Along the way, we'll show test-driven development and emphasize tips and tricks in the IDE.

Other videos from this series:
1. Project Setup: https://youtu.be/wm8WdAB64gw
2. Project Cleanup: https://youtu.be/b0KrB31hN5k
3. Testing: https://youtu.be/Y_TGIsFnvo4
4. Debugging Node.js: https://youtu.be/r1kwXZnO8gw
5. Debugging in Chrome: https://youtu.be/dvmZi_DWu9I
6. TSX and ES6: https://youtu.be/JXrZDUzkc2Q
7. Class Props: https://youtu.be/HYmoeUF9ZH0
8. Class State: https://youtu.be/21-VMTmiV8E
9. Rich Events and Testing: https://youtu.be/OO7OmA5UlQM
10. Presentation Components: https://youtu.be/SnCGW6JUo4E 

سری 10 قسمتی توسعه‌ی برنامه‌های React با TypeScript از JetBrains
مسیرراه‌ها
ASP.NET MVC
              نظرات مطالب
              پَرباد - آموزش پیاده‌سازی پرداخت آنلاین در دات نت - آموزش پایه
              در نسخه ۲.۱.۰ ، باشگاه مشتریان بانک ملت نیز افزوده شده.

              جهت استفاده کافیست در هنگام درخواست پرداخت، حساب‌هایی که باید مبلغی به آنها واریز شود را مشخص نمایید.

              مثال:
              var result = _onlinePayment.Request(invoice =>
              {
                 invoice
                     // سایر مشخصات صورت حساب
                     .SetAmount(50000)
                     .AddMellatCumulativeAccount(subServiceId: 330, amount: 20000, payerId: 22)
                     .AddMellatCumulativeAccount(subServiceId: 333, amount: 30000);
              });


              • SubServiceId : کد شناسه حساب واریزی
              • Amount : مبلغی که باید برای حساب مورد نظر ریخته شود
              • PayerId : شناسه پرداخت (در صورت نداشتن این مورد، می‌توانید از متد overload آن استفاده کنید)

              نکته ۱: حساب‌هایی که قصد واریز به آنها را دارید باید از قبل در هنگام عقد قرار داد با بانک، ارائه شده باشند. در غیر اینصورت امکان استفاده از این سرویس را ندارید.
              نکته ۲: جمع مبلغ‌های تقسیم شده بین حساب‌ها، باید معادل مبلغ کل صورت‌حساب باشد.
              نکته ۳: نیازی به ذکر درگاه ملت توسط متد UseGateway نیست. این کار به صورت خودکار انجام می‌شود.

              در صورت مشاهده هر گونه اشکال، می‌توانید آن را در صفحه پروژه و یا GitHub عنوان کنید.

              نظرات مطالب
              آرگومان‌های نامگذاری شده (named arguments/parameters) در C#4
              یک نکته‌ی تکمیلی: بهبود جزئی آرگومان‌های نامدار در C# 7.2

              تا پیش از C# 7.2، آرگومان‌های نامدار، تنها پس از ذکر آرگومان‌های بدون نام، مجاز بودند. برای مثال اگر امضای متدی به صورت زیر باشد:
              public static void Write(int age, string name, string homeTown)
              فراخوانی آن به صورت زیر تا C# 7.2 مجاز نبود:
              Write(age: 20, "User 1", homeTown: "Tehran");
              و باخطای کامپایلر زیر، کامپایل نمی‌شد:
              Named argument specifications must appear after all fixed arguments have been specified.
              این محدودیت در C# 7.2 برطرف شده‌است؛ به این شرط که موقعیت پارامترها تغییری نکنند و پارامترها دقیقا در همانجایی که قرار است باشند، معرفی شوند.
              در این حالت تمام فراخوانی‌های ذیل در C# 7.2 مجاز هستند:
              Write(age: 20, name: "User 1", "T1");
              Write(age: 21, "User 2", homeTown: "T2");
              Write(age: 22, "User 3", "T3");
              Write(23, name: "User 4", "T4");
              نظرات مطالب
              Url Routing در ASP.Net WebForms
              با سلام؛ وسایتم خوب کار میکنه فقط وقتی این قسمت که به جای فضای خالی _ بزار رو گزاشتم مشکل پیدا کردم چطور درستش کنم. 
               <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("NewsID", "ShowNews.aspx?id={0}")+ Eval("NewsTitle","&_title={0}").ToString().Replace(" ","_")%>'
              این خطهای اضافی دنباله خبر ماله چیه که درست شده اخه من برای درج خبر کاراکتر اضافی وارد نکردم که؟کلا چرا بعد از خبر هام این قدر-------- میزاره 
              http://localhost:28625/ShowNews.aspx?id=25&_title=%D8%A2%D8%AE%D8%B1%DB%8C%D9%86_%D8%AA%D8%B5%D8%A7%D9%88%DB%8C%D8%B1_%D8%A7%D8%B2_%22%D9%85%D8%B1%D8%AA%D8%B6%DB%8C_%D9%BE%D8%A7%D8%B4%D8%A7%DB%8C%DB%8C%22__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
              اشتراک‌ها
              سری آموزشی MCSA 2022

              MCSA (Microsoft Certified Solutions Associate) is a certification program intended for people who seek entry-level jobs in an information technology (IT) environment.
              20 videos 

              سری آموزشی MCSA 2022
              مطالب
              بررسی مفاهیم متغیرهای Value Type و Reference Type در سی شارپ
              نوع داده(Data Type) ، متغیر‌ها(Variables) ، انواع مقداری(Value Type) ، انواع ارجاعی(Reference Type)

              مقدمه :
              نوع داده‌ها، اجزای اصلی سازنده‌ی یک زبان برنامه نویسی و شبیه قواعد هر زبانی هستند.
              مفاهیمی که در این مطلب بررسی خواهد شد :
               • Data Type نوع داده
               • Variables  متغیرها
               • Naming Convention قرارداد‌های نامگذاری
               • Value Type/Reference Type انواع مقداری و ارجاعی
               • Stack/heap memory  حافظه پشته و هرم

              نوع داده

              در دنیای واقعی، برای نگهداری مواد مختلف، ظروف مختلفی با اندازه‌های مختلفی طراحی شده است. در دنیای برنامه نویسی، به تناسب اطلاعاتی که می‌خواهیم در حافظه ذخیره کنیم، باید نوع ظرف ذخیره سازی را انتخاب کنیم. نوع ظرف ذخیره سازی را در دنیای برنامه نویسی، نوع داده‌ها مشخص می‌کنند.
              در دات نت، همه‌ی نوع داده‌ها (Data Type) بصورت مستقیم و یا غیر مستقیم، از کلاس System.Object مشتق شده‌اند.


              متغیرها

              متغیر‌ها برای ذخیره‌ی مقادیر (اطلاعات)، استفاده می‌شوند. به این مثال دقت کنید: ما یک کیف داریم که در آن یک کتاب قرار دارد. در اینجا کیف نقش متغیر و کتاب نقش مقدار (value) را ایفا می‌کند. اندازه‌ی کیف همان نوع داده (Data Type) در دنیای برنامه نویسی می‌باشد.


              چک کردن سایز نوع داده (Data Type)

              ما نیازی به حفظ کردن اندازه‌ی نوع داده‌ها نداریم. در سی شارپ متدی به نام () sizeof مهیا شده است که با چک کردن نوع داده، اندازه‌ی آن را بر حسب بایت نمایش می‌دهد.
              به مثال زیر دقت کنید:
              Console.WriteLine(sizeof(int));
              Console.WriteLine(sizeof(char));
              Console.WriteLine(sizeof(bool));
              Console.WriteLine(sizeof(decimal));
              Console.WriteLine(sizeof(float));
              خروجی کد‌های بالا :
               4
              2
              1
              16
              4

              نکته : متد sizeof فقط برای نمایش اندازه‌ی نوع داده‌های مقداری (value type) می‌تواند مورد استفاده قرار گیرد.


              چک کردن نوع داده

              ما می‌توانیم نوع داده‌ها را برای بدست آوردن کلاسی که به آن تعلق دارند، چک کنیم.
              مثال :
               int a = 23;
              float b = 3.14f;
              Console.WriteLine(a.GetType());
              Console.WriteLine(b.GetType());
              خروجی کد‌های بالا : 
              System.Int32
              System.Single

              چک کردن نوع داده‌ی دو شیء

              فرض کنید 2 شیء را با نام‌های obj1 و obj2 داریم که هر دو از نوع long هستند. برای اینکه این مقایسه را انجام دهیم، از متد Object.RefrenceEqual می‌توان استفاده کرد.
              مثال :
              long obj1 = 356;
              long obj2 = 54;
              float obj3 = 234;
              Console.WriteLine(object.ReferenceEquals(obj1.GetType(), obj2.GetType()));
              Console.WriteLine(object.ReferenceEquals(obj1.GetType(), obj3.GetType()));
              خروجی کد‌های بالا : 
              True
              False

              تعریف یک متغیر ومقدار دهی به آن
              سی شارپ یک زبان strongly typed است (البته با در نظر نگرفتن نوع dynamic آن). به این معنا که کلیه‌ی متغیر‌ها، قبل از استفاده باید تعریف و مقدار دهی شوند و بعد از تعریف متغیر، نمی‌توان نوع آن را تغییر داد. رفتار یک متغیر بر اساس نوع انتخابی ما مشخص می‌شود. بطور مثال با انتخاب نوع int تنها می‌توان اعداد صحیح را ذخیره و نگهداری کرد و برای تغییر رفتار متغیر‌ها باید آنها را تبدیل کنیم.

              تعریف یک متغیر
              برای استفاده از یک متغیر ابتداباید آن را تعریف کنیم :
              //<data type> <variable name>;
              Int a;

              مقداردهی اولیه یک متغیر

              مقدار دهی اولیه‌ی یک متغیر با استفاده از عملگر = و نوشتن مقدار مورد نظر برای ذخیره کردن در متغیر، در سمت راست عملگر اتفاق خواهد افتاد.
              //<data type> <variable name>=value;
              Int a=23;
              Int a;//declare تعریف
              a=23;//مقدار دهی اولیه initializing
              Int a=23;//تعریف و مقدار دهی در یک خط
              Int a,b,c=23;//تعریف چند متغیر و مقدار دهی در یک خط


              قرار دا‌دهای نام گذاری متغیر‌ها :

              در دنیای برنامه نویسی دو نوع قرار داد نام گذاری بسیار متداول وجود دارند:
               1-  camelCase : در این قرار داد، حرف اول کلمه‌ی اول، بصورت کوچک و حرف اول از کلمه‌ی دوم، بصورت بزرگ نوشته خواهد شد. برای مثال: firstName,lastName
               2- PascalCase : در این قرار داد حروف ابتدایی دو کلمه‌ی مجاور، بصورت بزرگ نوشته خواهند شد: FirstName,LastName

              چند نکته :
               • نامگذاری متغیر‌ها را می‌توانید با علامت _ و یا @ شروع کنید.
               • کلمات کلیدی (key word) سی شارپ نمی‌توانند به عنوان نام متغیر مورد استفاده قرار بگیرند (مگر آنکه با @ شروع شوند).
               • در بین نام متغیر نباید فضای خالی وجود داشته باشد. کاراکتر‌های سازنده‌ی متغیر می‌توانند اعداد، حروف و زیر خط باشند.
              لیستی از نام گذاری‌های مجاز:
               int abc;
              long _abcd;
              float @abcd;
              bool main_button;
              decimal piValue;
              string firstName;
              string first_name;
              bool button55_on;
              لیستی از نام گذاری‌های غیر مجاز
              long _a.5bc5d;
              float @ab cd;
              decimal pi@Value;
              //استفاده از کلمات کلیدی سی شارپ که کامپایلر آنها را مجاز نمی‌داند
              bool class;
              string namespace;
              string string;
              int static;
              برای مطالعه‌ی کاملتر کلمات کلیدی سی شارپ می‌توانید اینجا را مطالعه کنید.


              در ادامه کمی در مورد نوع داده‌ها بحث خواهیم کرد.
              در سی شارپ دو مدل نوع داده وجود دارد:
               • انواع مقداری Value Type
               • انواع ارجاعی یا اشاره‌ای Reference Type

              انواع مقداری (Value Type) :
               • انواع مقداری مستقیما حاوی داده‌ها هستند. اگر یک متغیر از نوع مقداری را به یک متغیر دیگر تخصیص دهید، مقدار آنها مستقیما کپی می‌شوند؛ برعکس نوع‌های اشاره‌ای که با نخصیص یک متغیر به یک متغیر دیگر، تنها اشاره‌گر به مقدار شیء کپی خواهد شد و نه خود شیء.
               • کلیه نوع‌های مقداری از کلاس ValueType مشتق شده‌اند.
               • در فضای stack  به آنها حافظه تخصیص داده می‌شود.
               • نمی‌توانند مقدار null  بپذیرند. البته با قابلیت nullabletype امکان تخصیص مقدار null به نوع داده‌های مقداری نیز مهیا شده است.
               • همه نوع‌های داده‌های مقداری، یک سازنده پیش فرض دارند که به صورت ضمنی کار مقدار دهی اولیه برای آنها را انجام می‌دهد. برای مطالعه بیشتر درباره مقادیر پیش فرض به اینجا مراجعه کنید.

              انواع مقداری به دو دسته‌ی اصلی تقسیم می‌شود :
               • Structs
               • Enumerations

              طبقه بندی Structs به صورت زیر است :
               • Numeric Type
              * Integral Type : sbyte,short,ushort,int,uint,long,ulong,char
              * Floating-Point Types : float,double
              * Decimal : decimal
               •  Bool دو مقدار true و false
               • User Defined Struct


              نوع داده نال (تهی) پذیر (nullable Type) و چگونگی تعریف آن

              در ابتدای معرفی نوع داده‌های مقداری گفتیم همیشه باید وضعیت متغیر مشخص و مقدار دهی اولیه‌ی آن یا به صورت ضمنی و یا آشکار انجام شود. هیچ یک از نوع داده‌های مقداری نمی‌توانند بصورت null تعریف شوند. برای تبدیل یک نوع داده مقداری به صورتی که قابلیت ذخیره‌ی مقدار null را داشته باشد، بعد از نوشتن نوع داده، علامت سوال ؟ قرار می‌دهیم.
               < data type >? < variable name >= null; //syntax

              int? a = null; //assigning null
              int? b = 55; //assigning null and a value
              var? c = 55 //it will give error

              نکته :  var نمی‌تواند بصورت nullable تعریف شود.

              برای چک کردن مقدار در انواع تهی پذیر (nullable) دو خصوصیت وجود دارد:
               • HasValue
              اگر مقداری در متغیر وجود داشته باشد ارزش true  بازگردانده می‌شود؛ در غیر اینصورت ارزش false
               • Value
              مقدار واقعی متغیر را باز می‌گرداند.

              مثال :
               int? a = null;
              int? b = 22;
              Console.WriteLine(a.HasValue);
              //------------
              Console.WriteLine(b.HasValue);
              Console.WriteLine(b.Value);
              خروجی کد بالا :
               False
              True
              22

              انواع ارجاعی Reference Type

              انواع ارجاعی مستقیما حاوی اطلاعات نیستند و ارجاعی هستند به آدرسی از حافظه که حاوی اطلاعات واقعی است. به بیانی دیگر، اشاره‌گری به آدرسی از حافظه هستند.
               • انواع ارجاعی بصورت غیر مستقیم حاوی داده‌ها هستند.
               • در بخشی از حافظه که به آن heap می‌گوییم، به آنها فضا اختصاص داده می‌شود.
               • می‌توانند بصورت null (بدون مقدار) باشند.

              انواع ارجاعی نیز به دو دسته‌ی کلی تقسیم می‌شوند :

               • انواع از پیش تعریف شده
                Object,string,dynamic
               • انواع تعریف شده توسط کاربر
                      class,interface,delegate

              نکته : آدرس مکانی از حافظه که داده‌ها در آن قرار دارند، در بخش پشته یا Stack ذخیره می‌شود و داد‌ه‌ها در فضای heap ذخیره می‌شوند.
              مثال :
               test obj; //allocating reference on stack
              obj= new test(55);//allocating object on heap

              نکته : دو متغیر از نوع ارجاعی می‌توانند به یک آدرس از حافظه اشاره کنند. در شکل زیر این موضوع نشان داده شده است.

               
              در شکل زیر طبقه بندی نوع داده‌ها در سی شارپ نشان داده شده است :


              • عملیات کپی در نوع داده مقداری
              وقتی از یک متغیر مقداری را به یک متغیر دیگر تخصیص می‌دهیم، یک کپی جدید از آن در فضای stack  ایجاد می‌شود. بدین معنی که محتوای دو متغیر یکسان هستند، ولی در دو بخش مجزای در حافظه‌ی Stack قرار دارند. به همین خاطر تغییر  محتوای یک متغیر، محتوای متغیر دیگر را تغییر نمی‌دهد.
              مثال :
               int a = 55;//declare a and initialize
              int copya = a;//copya contains the copy of value a
              دیاگرام حافظه کد بالا :

               

              • عملیات کپی، در نوع داده‌ی ارجاعی
              وقتی یک متغیر از نوع ارجاعی را به یک متغیر دیگر تخصیص می‌دهیم، دو اشاره‌گر در فضای Stack ایجاد می‌شود که به یک مقدار واحد در حافظه‌ی heap اشاره می‌کنند. آدرس‌های ذخیره شده‌ی در stack  یکسان هستند.
              مثال : در اینجا فرض بر این است کهtest یک کلاس تعریف شده‌ی توسط کاربر می‌باشد.
              test obj;
              obj=new test(23);
              test objCopy;
              objCopy = obj;

              دیاگرام حافظه‌ی قطعه کد بالا به شکل زیر است :



              تخصیص حافظه در بخش Stack  و Heap به متغیر‌ها

              سیستم عامل و net CLR. حافظه را به دو بخش stack و heap تقسیم بندی می‌کنند.
              زمانی که یک متد را فراخوانی می‌کنیم، در بخش پشته به پارامتر‌های متد فضا تخصیص داده می‌شود و بعد از پایان کار متد، فضای اشغال شده‌ی بوسیله GC یا همان Garbage collection  آزاد می‌شود.
              تخصیص حافظه در Stack  بر اساس قانون LIFO انجام و به ترتیب و پشت سر هم، حافظه تخصیص داده می‌شود. دیاگرام تخصیص حافظه به stack:


              تخصیص حافظه در Heap بصورت تصادفی است؛ بر عکس پشته (stack) که به ترتیب و متوالی انجام می‌شد. انواع ارجاعی در Stack  ذخیره می‌شوند؛ ولی داده‌ی واقعی در heap قرار می‌گیرد.
              حافظه‌های پویا در بخش heap و حافظه‌های استاتیک در بخش stack تخصیص داده می‌شوند.
               
              اشتراک‌ها
              23.Visual Studio 2017 15.9 منتشر شد

              Issues Fixed in 15.9.23

              • Fixed C++ compiler bug for proper folding of inline variable dynamic initializers. Ported from the VS 2019 16.0 release.
              • Security improvements in vctip.exe.
              • A change to enable Enterprise IT administrators and deployment engineers to configure tools like Microsoft Update client & SCCM to determine applicability of VS2017 updates hosted on Microsoft Update Catalog & WSUS.

              Security Advisory Notices

              23.Visual Studio 2017 15.9 منتشر شد
              اشتراک‌ها
              NET 5.0.5. منتشر شد

              Today, we are releasing the .NET April 2021 Updates. These updates contains reliability and other non-security improvements. See the individual release notes for details on updated packages.

              You can download 5.0.5 versions for Windows, macOS, and Linux, for x86, x64, Arm32, and Arm64.

              NET 5.0.5. منتشر شد