اشتراکها
اشتراکها
SQLite بیست ساله شد
مسیرراهها
+AngularJS 2.0
شروع به کار با AngularJS 2.0 و TypeScript
- قسمت اول - نصب پیشنیازها
- قسمت دوم - معرفی کامپوننتها
- قسمت سوم - غنی سازی کامپوننتها
- قسمت چهارم - data binding
- قسمت پنجم - بررسی چرخهی حیات کامپوننتها
- قسمت ششم - کامپوننتهای تو در تو
- قسمت هفتم - سرویسها و تزریق وابستگیها
- قسمت هشتم - دریافت اطلاعات از سرور
- قسمت نهم - مسیریابی
- «مسیریابی در Angular»
- قسمت دهم - کار با فرمها - قسمت اول
- قسمت یازدهم - کار با فرمها - قسمت دوم
- قسمت دوازدهم - توزیع برنامه
- «سری آموزشی Angular CLI»
فرمهای مبتنی بر قالبها در Angular
- قسمت اول - معرفی و ایجاد ساختار برنامه
- قسمت دوم - ایجاد اولین فرم
- قسمت سوم - Data binding
- قسمت چهارم - اعتبارسنجی ورودیها
- قسمت پنجم - ارسال اطلاعات به سرور
- نوشتن اعتبارسنجهای سفارشی
- اعتبارسنجی از راه دور در فرمهای مبتنی بر قالبهای Angular
Angular Animation
آپلود فایل
- بررسی روش آپلود فایلها از طریق یک برنامهی Angular به یک برنامهی ASP.NET Core
- کامپوننت ng2-file-upload
طراحی یک گرید با Angular و ASP.NET Core
Angular Material 6x
- قسمت اول - افزودن آن به برنامه
- قسمت دوم - معرفی Angular Flex layout
- قسمت سوم - طرحبندی برنامه
- قسمت چهارم - نمایش پویای اطلاعات تماسها
- قسمت پنجم - کار با Data Tables
- قسمت ششم - کار با فرمها و دیالوگها
- قسمت هفتم - کار با انواع قالبها
- قسمت هشتم - جستجوی کاربران توسط AutoComplete
- شمسی سازی Date-Picker توکار Angular Material 6x
راهاندازی Http Interceptor
استفاده از کتابخانهی moment-jalaali در برنامههای Angular
امکان تعریف قالبها در Angular با دایرکتیو ng-template
روشهایی برای مدیریت بهتر عملگرهای RxJS در برنامههای Angular
ارتقاء به HTTP Client در Angular 4.3
استفاده از کتابخانهی moment-jalaali در برنامههای Angular
امکان تعریف قالبها در Angular با دایرکتیو ng-template
روشهایی برای مدیریت بهتر عملگرهای RxJS در برنامههای Angular
ارتقاء به HTTP Client در Angular 4.3
- ابزارهای توسعه
اشتراکها
کتاب ASP.NET Core 3.1 A-Z
ASP .NET Core 3.1 A-Z ebook cover
You can find the complete ebook on GitHub using one of the links below:
Threads App UI Design in Figma step by step UI/UX Design + Link
Designing a great app that offers a seamless user experience can be a challenging task, especially when you have numerous components to manage. Figma, a collaborative interface design tool, has become a popular choice for UI/UX designers. In this article, we'll explore the process of designing Threads, a messaging app, from scratch in Figma. We'll walk you through the complete UI/UX design process, including wireframing, prototyping, and design system creation.
مسیرراهها
کتابخانه Angular Material 6x
شرح مساله
میانگین متحرک یا moving average به چند دسته تقسیم میشود که سادهترین آنها میان متحرک ساده است.
برای محاسبه میانگین متحرک باید بازه زمانی مورد نظر را مشخص کنیم. مثلا میانگین فروش در 3 روز گذشته.
به جدول زیر توجه بفرمایید:
میانگین متحرک فروش سه روز و چهار روز گذشته در جدول فوق قابل مشاهده است.
بطور مثال مقدار میانگین متحرک سه روزه برای روز چهارم برابر است با جمع فروش سه روز گذشته تقسیم بر سه. یعنی 3/(10+12+13)
و برای روز ششم میانگین متحرک 4 روزه برابر است با جمع فروش چهار روز گذشته و تقسیم آنها بر چهار. یعنی 10+12+13+16 تقسیم بر 4 که برابر است با 12.7
در نمودار زیر، خط قرم رنگ مربوط به میانگین متحرک ساده (میانگین فروش سه روز گذشته) است و خط آبی رنگ نیز میزان فروش است
راه حل در SQL Server 2012
توسط توابع window این مساله را به سادگی میتوانیم حل کنیم. همانطور که مشاهده میشود در تصویر زیر. کافیست ما به سطرهایی در بازهی سه سطر قبل تا یک سطر قبل (برای میانگین متحرک سه روزه) دسترسی پیدا کرده و میانگین آن را بگیریم.
ابتدا این جدول را ایجاد و تعدادی سطر برای نمونه در آن درج کنید:
سپس برای محاسبه میانگین متحرک در بازه سه روز گذشته query زیر را اجرا کنید:
قلب query دستور ROWS BETWEEN 3 PRECEDING AND 1 PRECEDING میباشد.
به این معنا که سطرهایی در بازهی سه سطر قبل و یک سطر قبل را در Window انتخاب کرده و عمل میاگنین گیری را بر اساس مقادیر مورد نظر انجام بده.
راه حل در SQL Server 2005
به درخواست یکی از کاربران من راه حلی را پیشنهاد میکنم که جایگزین مناسبی برای روش قبلی است در صورت عدم استفاده از نسخه 2012. توابع window در اینگونه مسائل بهترین عملکرد را خواهند داشت.
FOR FUN
توسط توابع Analytical ای چون LAG نیز میتوان اینگونه مسائل را حل نمود. بطور مثال توسط تابع LAG به یک مقدار قبلی، دو مقدار قبلی و سه مقدار قبلی دسترسی پیدا کرده و آنها را با یکدیگر جمع نموده و تقسیم بر تعدادشان میکنیم یعنی:
میانگین متحرک یا moving average به چند دسته تقسیم میشود که سادهترین آنها میان متحرک ساده است.
برای محاسبه میانگین متحرک باید بازه زمانی مورد نظر را مشخص کنیم. مثلا میانگین فروش در 3 روز گذشته.
به جدول زیر توجه بفرمایید:
میانگین متحرک فروش سه روز و چهار روز گذشته در جدول فوق قابل مشاهده است.
بطور مثال مقدار میانگین متحرک سه روزه برای روز چهارم برابر است با جمع فروش سه روز گذشته تقسیم بر سه. یعنی 3/(10+12+13)
و برای روز ششم میانگین متحرک 4 روزه برابر است با جمع فروش چهار روز گذشته و تقسیم آنها بر چهار. یعنی 10+12+13+16 تقسیم بر 4 که برابر است با 12.7
در نمودار زیر، خط قرم رنگ مربوط به میانگین متحرک ساده (میانگین فروش سه روز گذشته) است و خط آبی رنگ نیز میزان فروش است
راه حل در SQL Server 2012
توسط توابع window این مساله را به سادگی میتوانیم حل کنیم. همانطور که مشاهده میشود در تصویر زیر. کافیست ما به سطرهایی در بازهی سه سطر قبل تا یک سطر قبل (برای میانگین متحرک سه روزه) دسترسی پیدا کرده و میانگین آن را بگیریم.
ابتدا این جدول را ایجاد و تعدادی سطر برای نمونه در آن درج کنید:
CREATE TABLE Samples ( [date] SMALLDATETIME, selling SMALLMONEY ); INSERT Samples VALUES ('2010-12-01 00:00:00', 10), ('2010-12-02 00:00:00', 12), ('2010-12-03 00:00:00', 13), ('2010-12-04 00:00:00', 16), ('2010-12-05 00:00:00', 19), ('2010-12-06 00:00:00', 23), ('2010-12-07 00:00:00', 26), ('2010-12-08 00:00:00', 27), ('2010-12-09 00:00:00', 20), ('2010-12-10 00:00:00', 18), ('2010-12-11 00:00:00', 19);
SELECT [date], selling, CASE WHEN rnk < 4 THEN NULL ELSE mv END AS SimpleMovingAverage FROM (SELECT *, AVG(selling) OVER(ORDER BY [date] ROWS BETWEEN 3 PRECEDING AND 1 PRECEDING) AS mv, ROW_NUMBER() OVER(ORDER BY [date]) AS rnk FROM Samples ) AS d;
قلب query دستور ROWS BETWEEN 3 PRECEDING AND 1 PRECEDING میباشد.
به این معنا که سطرهایی در بازهی سه سطر قبل و یک سطر قبل را در Window انتخاب کرده و عمل میاگنین گیری را بر اساس مقادیر مورد نظر انجام بده.
راه حل در SQL Server 2005
به درخواست یکی از کاربران من راه حلی را پیشنهاد میکنم که جایگزین مناسبی برای روش قبلی است در صورت عدم استفاده از نسخه 2012. توابع window در اینگونه مسائل بهترین عملکرد را خواهند داشت.
SELECT S.[date], S.selling, CASE WHEN COUNT(*) < 3 THEN NULL ELSE AVG(s) END AS SimpleMovingAverage FROM Samples AS S OUTER APPLY (SELECT TOP(3) selling FROM Samples WHERE [date] < S.[date] ORDER BY [date] DESC) AS D(s) GROUP BY S.[date], S.selling ORDER BY S.[date];
FOR FUN
توسط توابع Analytical ای چون LAG نیز میتوان اینگونه مسائل را حل نمود. بطور مثال توسط تابع LAG به یک مقدار قبلی، دو مقدار قبلی و سه مقدار قبلی دسترسی پیدا کرده و آنها را با یکدیگر جمع نموده و تقسیم بر تعدادشان میکنیم یعنی:
select [date], selling, ( lag(selling, 1) over(order by [date]) + lag(selling, 2) over(order by [date]) + lag(selling, 3) over(order by [date]) ) / 3 from Samples;
وقتی ما تستهای Unit - Integration - UI را مینویسیم، به طور معمول پیش میآید که بخواهیم آبجکتی را نیز از نوع DateTime، اثبات کنیم (Assert.That). وقتی دو DateTime را با هم مقایسه میکنیم، معمولا این دو به خاطر ثانیه و یا میلی ثانیه با هم برابر نمیشوند. به همین دلیل ما به راه بهتری برای مقایسه نیاز داریم. برای مثال اگر بخواهیم دو تاریخ زیر را مقایسه کنیم:
این دو تاریخ تقریبا با هم برابرند و تنها 1 ثانیه با هم اختلاف دارند. در بیشتر موارد 1 ثانیه مسئله مهمی نیست و قابل چشم پوشی میباشد. بنابراین ما نیاز به متدی برای اثبات داریم که بتوانیم آن را برای چشم پوشی از 1 ثانیه اختلاف، تنظیم کنیم.
بنابراین نیازی به پیاده سازی متد سفارشی نیست.
برای استفاده:
2016-11-13 21:03:20 <=> 2016-11-13 21:03:21
چگونگی اثبات کردن DateTime در NUnit
NUnit با استفاده از کلمه کلیدی Within این کار را به صورت کامل پشتیبانی کرده است.DateTime now = DateTime.Now; DateTime later = now + TimeSpan.FromHours(1.0); Assert.That( now, Is.EqualTo(now) ); Assert.That( later, Is.EqualTo(now).Within( TimeSpan.FromHours(3.0) ) ); Assert.That( later, Is.EqualTo(now).Within(3).Hours );
چگونگی اثبات کردن DateTime در MSTest
با استفاده از متد AreEqual در کلاس زیر میتوان دو تاریخ را با هم مقایسه کرد و میزان اختلاف قابل چشم پوشی را نیز با استفاده از پارامتر maximum تعیین کرد.public static class DateTimeAssert { public static void AreEqual( DateTime? expectedDate, DateTime? actualDate, TimeSpan maximum ) { if ( expectedDate == null && actualDate == null ) return; if ( expectedDate == null ) throw new NullReferenceException( "The expected date was null" ); if ( actualDate == null ) throw new NullReferenceException( "The actual date was null" ); var totalSecondsDifference = Math.Abs( ( actualDate.Value - expectedDate.Value ).TotalSeconds ); if ( totalSecondsDifference > maximum.TotalSeconds ) { throw new Exception( $"Expected Date: {expectedDate}, Actual Date: {actualDate} Expected: {maximum}, Total Seconds Difference: {totalSecondsDifference}" ); } } }
DateTimeAssert.AreEqual( new DateTime(2016, 11, 12, 21, 4, 5), new DateTime(2016, 11, 13, 21, 4, 5), TimeSpan.FromMilliSeconds(500)); DateTimeAssert.AreEqual( new DateTime(2016, 11, 12, 21, 4, 5), new DateTime(2016, 11, 13, 21, 4, 5), TimeSpan.FromMinutes(0.5)); // half a minute = 30s
اشتراکها