اشتراکها
اشتراکها
لیست 20 کتاب AngularJs
Gridify 2.0.0 منتشر شد.
تغییرات مهم ورژن 2
- پشتیبانی از جستجو در لیستهای فرزند
- پشتیبانی پیش فرض جستجو اطلاعات null
- پشتیبانی از چندین OrderBy به صورت صعودی و نزولی
- پشتیبانی از C# 8 Nullable feature
- اضافه شدن MapperConfiguration برای اعمال تنظیمات Mapper
- اضافه شدن امکان دریافت Expressionها و کامپایل آن
- بهبود عملکرد کلی کتابخانه
- بازنویسی زیرساخت (تغییرات عمده در اینترفیسها و اکستنشن متدها)
SQL Server Agent مربوط به SQL Server 2008 از کار افتاده بود و راه اندازی نمیشد. خطای مرتبط با آن در لاگهای ویندوز به نحو زیر بود:
پس از مدتی جستجو، عنوان شده بود که مسیر رجیستری زیر را یافته:
و در آن ServerHost را به نام سرور ویرایش کنید. سپس سرور را ری استارت نمائید. این تغییر انجام شد اما باز هم SQL Server Agent راه اندازی نمیشد.
لاگهای آن در مسیر ذیل ثبت میشوند:
در اینجا خطاهای زیر ثبت شده بودند:
همانطور که مشخص است مشکل اصلی در عدم توانایی لاگین اکانت SQL Server Agent ذکر شده است.
برای تغییر آن مسیر زیر را طی کنید:
به عبارتی در قسمت SQL Configuration manager، تنظیمات SQL Server Agent را یافته و نوع اکانت آنرا به Local Service تغییر دهید.
پس از آن سرویس بدون مشکل استارت شد.
SQLServerAgent could not be started (reason: Unable to connect to server '(local)'; SQLServerAgent cannot start).
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10.MSSQLSERVER\SQLServerAgent
لاگهای آن در مسیر ذیل ثبت میشوند:
C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Log\SQLAGENT.OUT
2013-01-28 20:02:34 - ! [298] SQLServer Error: 780, SQL Server Network Interfaces: The logon attempt failed [SQLSTATE HY000] 2013-01-28 20:02:34 - ! [298] SQLServer Error: 780, Cannot generate SSPI context [SQLSTATE HY000] 2013-01-28 20:02:34 - ! [000] Unable to connect to server ; SQLServerAgent cannot start 2013-01-28 20:02:34 - ! [298] SQLServer Error: 780, SQL Server Network Interfaces: The logon attempt failed [SQLSTATE HY000] 2013-01-28 20:02:34 - ! [298] SQLServer Error: 780, Cannot generate SSPI context [SQLSTATE HY000] 2013-01-28 20:02:34 - ! [382] Logon to server failed (DisableAgentXPs) 2013-01-28 20:02:34 - ? [098] SQLServerAgent terminated (normally)
برای تغییر آن مسیر زیر را طی کنید:
SQL Configuration manager -> SQL Server Agent -> Logon User -> NT/Local Service
پس از آن سرویس بدون مشکل استارت شد.
نوشتن Assert در کدهای تست، وابستگی مستقیم به انتخاب کتابخانه تست دارد. برای مثال:
NUnit:
Microsoft UnitTesting :
»Standard که باید از Should.dll استفاده نمایید؛
»Fluent که باید از Should.Fluent.dll استفاده نمایید؛(پیاده سازی همان فریم ورک Should به صورت Static Reflection)
نصب کتابخانه Should با استفاده از nuget (آخرین نسخه آن در حال حاضر 1.1.20 است ) :
نصب کتابخانه Should.Fluent با استفاده از nuget(آخرین نسخه آن در حال حاضر 1.1.19 است):
در ابتدا همان مثال قبلی را با این کتابخانه بررسی خواهیم کرد:
در نگاه اول چیز خاصی به چشم نمیخورد، اما اگر از این پس قصد داشته باشیم کدهای تست خود را تحت فریم ورک NUnit پیاده سازی کنیم در قسمت Assert کدهای خود هیچ گونه خطایی را مشاهده نخواهیم کرد.
مثال:
در مثال بالا ابتدا با استفاده از Ms UnitTesting دو Assert نوشته شده است سپس در خطوط بعدی همان دو شرط با استفاده از کتابخانه Should نوشتم. در ذیل چند مثال از استفاده این کتابخانه (البته نوع Fluent آن) در هنگام کار با رشته ها، آبجکت ها، boolean و Collectionها را بررسی خواهیم کرد:
#Should.Fluent
#مثالهای استفاده از متغیرهای DateTime و Guid
NUnit:
using NUnit.Framework; using NUnit.Framework.SyntaxHelpers; namespace TestLibrary { [TestFixture] public class MyTest { [Test] public void Test1() { var expectedValue = 2; Assert.That(expectedValue , Is.EqualTo(2)); } } }
Microsoft UnitTesting :
using Microsoft.VisualStudio.TestTools.UnitTesting ; namespace TestLibrary { [TesClass] public class MyTest { [TestMethod] public void Test1() { var expectedValue = 2; Assert.AreEqual (expectedValue , 2); } } }
کدهای Assert نوشته شده در مثال بالا با توجه به فریم ورک مورد استفاده متفاوت است. در حالی که کتابخانه Should، مجموعه ای از Extension Method هاست برای قسمت Assert در UnitTestهای نوشته شده. با استفاده از این کتابخانه دیگر نیازی به نوشتن Assert به سبک و سیاق فعلی نیست. کدهای Assert بسیار خواناتر و قابل درک خواهند بود و از طرفی وابستگی به سایر کتابخانههای تست از بین خواهد رفت.
نکته: مورد استفاده این کتابخانه فقط در قسمت Assert کدهای تست است و استفاده از سایر کتابخانههای جانبی الزامی است.
این کتابخانه به دو صورت مورد استفاده قرار میگیرد:نکته: مورد استفاده این کتابخانه فقط در قسمت Assert کدهای تست است و استفاده از سایر کتابخانههای جانبی الزامی است.
»Standard که باید از Should.dll استفاده نمایید؛
»Fluent که باید از Should.Fluent.dll استفاده نمایید؛(پیاده سازی همان فریم ورک Should به صورت Static Reflection)
نصب کتابخانه Should با استفاده از nuget (آخرین نسخه آن در حال حاضر 1.1.20 است ) :
Install-Package Should
Install-Package ShouldFluent
در ابتدا همان مثال قبلی را با این کتابخانه بررسی خواهیم کرد:
using Microsoft.VisualStudio.TestTools.UnitTesting; namespace TestLibrary { [TesClass] public class MyTest { [TestMethod] public void Test1() { var expectedValue = 2; expectedValue.Should().Equal( 2 ); } } }
مثال:
[TestMethod] public void AccountConstructorTest() { const int expectedBalance = 1000; Account bankAccount = new Account(); // Assert.IsNotNull(bankAccount, "Account was null."); // Assert.AreEqual(expectedBalance, bankAccount.AccountBalance, "Account balance not mathcing");
bankAccount.ShouldNotBeNull("Account was null"); bankAccount.AccountBalance.ShouldEqual(expectedBalance, "Account balance not matching"); }
#Should.Fluent
public void Should_fluent_assertions() { object obj = null; obj.Should().Be.Null(); obj = new object(); obj.Should().Be.OfType(typeof(object)); obj.Should().Equal(obj); obj.Should().Not.Be.Null(); obj.Should().Not.Be.SameAs(new object()); obj.Should().Not.Be.OfType<string>(); obj.Should().Not.Equal("foo"); obj = "x"; obj.Should().Not.Be.InRange("y", "z"); obj.Should().Be.InRange("a", "z"); obj.Should().Be.SameAs("x"); "This String".Should().Contain("This"); "This String".Should().Not.Be.Empty(); "This String".Should().Not.Contain("foobar"); false.Should().Be.False(); true.Should().Be.True(); var list = new List<object>(); list.Should().Count.Zero(); list.Should().Not.Contain.Item(new object()); var item = new object(); list.Add(item); list.Should().Not.Be.Empty(); list.Should().Contain.Item(item); };
#مثالهای استفاده از متغیرهای DateTime و Guid
public void Should_fluent_assertions() { var id = new Guid(); id.Should().Be.Empty(); id = Guid.NewGuid(); id.Should().Not.Be.Empty(); var date = DateTime.Now; date1.Should().Be.Today(); var str = ""; str.Should().Be.NullOrEmpty(); var one = "1"; one.Should().Be.ConvertableTo<int>(); var idString = Guid.NewGuid().ToString(); idString.Should().Be.ConvertableTo<Guid>(); }
اشتراکها
ذخیره فایلهای حجیم توسط مرورگر
اگر نیاز دارید تا فایل هایی را ذخیره کنید که از چند مگ بیشتر است میتوانید از تابع Blob استفاده کنید اما اگر میخواهید در جاوااسکریپت فایلی با حجم بسیار بسیار زیاد ذخیره کنید میتونید از این کتابخانه استفاده کنید. برای ذخیره اکسل که حدودا 8 مگ میشد به مشکل خورده بودم که به کمک این کتابخانه حل شد.
Browser | Constructs as | Filenames | Max Blob Size | Dependencies |
---|---|---|---|---|
Firefox 20+ | Blob | Yes | 800 MiB | None |
Firefox < 20 | data: URI | No | n/a | Blob.js |
Chrome | Blob | Yes | 500 MiB | None |
Chrome for Android | Blob | Yes | 500 MiB | None |
Edge | Blob | Yes | ? | None |
IE 10+ | Blob | Yes | 600 MiB | None |
Opera 15+ | Blob | Yes | 500 MiB | None |
Opera < 15 | data: URI | No | n/a | Blob.js |
Safari 6.1+* | Blob | No | ? | None |
Safari < 6 | data: URI | No | n/a | Blob.js |
Safari 10.1+ | Blob | Yes | n/a | None |
نکته تکمیلی:
در صورت استفاده از شیوه Feature Folder Structure و نرم افزار Resharper، متوجه خواهید شد که Resharper مسیر Viewها را به درستی تشخیص نمیدهد و در همان مسیر پیش فرض MVC به دنبال آنها میگردد.
برای رفع این مشکل ابتدا بسته
را از طریق Nuget دریافت و نصب نموده و سپس در فایل FeatureLocationExpander و در بالای فضای نامی مقادیر زیر را بسته به نیاز خود وارد نمایید.
از این پس نرم افزار Resharper میداند که Viewها و Partial Viewها را در کدام مسیرها باید جستجو کند.
لازم به ذکر است در صورت وجود Area میتوان به طور مثال مقادیر زیر را نیز علاوه بر موارد ذکر شده وارد نمود.
موفق باشد.
در صورت استفاده از شیوه Feature Folder Structure و نرم افزار Resharper، متوجه خواهید شد که Resharper مسیر Viewها را به درستی تشخیص نمیدهد و در همان مسیر پیش فرض MVC به دنبال آنها میگردد.
برای رفع این مشکل ابتدا بسته
JetBrains.Annotations
را از طریق Nuget دریافت و نصب نموده و سپس در فایل FeatureLocationExpander و در بالای فضای نامی مقادیر زیر را بسته به نیاز خود وارد نمایید.
using JetBrains.Annotations;
[assembly: AspMvcViewLocationFormat("~/Features/{1}/{0}.cshtml")] [assembly: AspMvcViewLocationFormat("~/Features/Shared/{0}.cshtml")] [assembly: AspMvcPartialViewLocationFormat("~/Features/{1}/{0}.cshtml")] [assembly: AspMvcPartialViewLocationFormat("~/Features/Shared/{0}.cshtml")]
لازم به ذکر است در صورت وجود Area میتوان به طور مثال مقادیر زیر را نیز علاوه بر موارد ذکر شده وارد نمود.
[assembly: AspMvcAreaViewLocationFormat("~/Areas/{2}/Features/{1}/{0}.cshtml")] [assembly: AspMvcAreaViewLocationFormat("~/Areas/{2}/Features/Shared/{0}.cshtml")] [assembly: AspMvcAreaViewLocationFormat("~/Features/Shared/{0}.cshtml")] [assembly: AspMvcAreaPartialViewLocationFormat("~/Areas/{2}/Features/{1}/{0}.cshtml")] [assembly: AspMvcAreaPartialViewLocationFormat("~/Areas/{2}/Features/Shared/{0}.cshtml")] [assembly: AspMvcAreaPartialViewLocationFormat("~/Features/Shared/{0}.cshtml")]
NuGet 5.8 is included in Visual Studio 16.8 and .NET 5.0 out of the box. You can also download NuGet 5.8 for Windows, macOS, and Linux as a standalone executable.