Webinar agenda:
0:00 – Introduction
0:55 – OSS in the .NET Community
3:00 – Welcome, Jeremy and FluentValidation
6:17 – OSS Power-Ups
8:11 – Rider plugin for FluentValidation
9:07 – Introduction to FluentValidation
13:36 – Custom validation messages and placeholders
18:33 – Cross-property validation
21:17 – Nested and compositional validation
25:57 – Validator extensions
31:40 – Unit testing validators
51:25 – ASP.NET Core integration
1:03:35 – Synchronous and asynchronous validation
1:07:33 – Q&A and wrap-up
Want to learn about the latest and greatest in the 64-bit Visual Studio 2022? Join Scott Hanselman and Visual Studio product team as they take Visual Studio 2022 for a spin.
20:27 Profiling .NET apps in Visual Studio 2022
23:19 Cross platform apps with WSL and CMake in Visual Studio 2022
26:07 Testing your .NET app on Linux
28:00 Easily create CI/CD pipelines using GitHub actions with Visual Studio 2022
30:40 Balloon drop!
قسمت دوم از بررسی کاراکتر معماری مایکروسرویس ها، در این ویدیو بحث هایی در مورد تراکنشها و برقراری ارتباط بین سرویسها و چالیش هایی که وجود داره صحبت کردیم.
01:00 Previous Session
03:00 Data Isolation
04:40 Api Layer
06:50 Frontend
08:00 Operational Reuse and Sidecar Pattern
14:30 Communication - Orchestration and Choreography
21:10 Transaction and Saga
27:30 Architecture Characteristics Rating
Learn FULL STACK Web Development in 2 HOURS! ASP.NET & Angular
Timestamps:
00:00:00 Welcome to our 2 hour FULL STACK Course!
00:01:12 What you will learn during the next 2 hours
00:03:29 Day 1 Multi-Page and Single-Page Applications, TypeScript, and Angular Components
00:21:57 Day 2 One-Way Binding and Event Binding in Angular
00:34:23 Day 3 Our Flight Booking Portal and routing in Angular
00:44:52 Day 4 The 'Search Flight' page, Design a HTML page, install Font Awesome using Node, and TypeScript interfaces
01:27:00 Day 5 ASP.NET Core REST API, SWAGGER for documenting and testing our API
01:55:51 Thanks for watching!
اطلاعات daylight saving time یا بازه صرفه جویی زمانی ویندوز در دو مدخل رجیستری زیر ثبت میشوند:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation] [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Iran Standard Time]
تصویر سوم مرتبط است به ویندوزهای ویستا به بعد که مفهوم dynamic daylight saving time در آنها معرفی شده است.
در اینجا یک نمونه اطلاعات زمانی ثبت شده مرتبط با ایران را مشاهده میکنید:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Iran Standard Time] "Display"="(GMT+03:30) Tehran" "Dlt"="Iran Daylight Time" "Std"="Iran Standard Time" "MapID"="-1,72" "Index"=dword:000000a0 "TZI"=hex:2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,04,00,03,00,17,00,3b,\ 00,3b,00,00,00,00,00,03,00,02,00,03,00,17,00,3b,00,3b,00,00,00
using System.Runtime.InteropServices; namespace TimeZoneInfo.Core { [StructLayout(LayoutKind.Sequential)] public struct TZI { public int Bias; public int StandardBias; public int DaylightBias; public SystemTime StandardDate; public SystemTime DaylightDate; } }
using System; using System.Runtime.InteropServices; namespace TimeZoneInfo.Core { [StructLayoutAttribute(LayoutKind.Sequential)] public struct SystemTime { public short Year; public short Month; public short DayOfWeek; public short Day; public short Hour; public short Minute; public short Second; public short Milliseconds; } }
2C 01 00 00 00 00 00 00 C4 FF FF FF 00 00 0A 00 00 00 05 00 02 00 00 00 00 00 00 00 00 00 04 00 00 00 01 00 02 00 00 00 00 00 00 00
(little-endian) => (big-endian) 2C 01 00 00 => 00 00 01 2C = 300 Bias 00 00 00 00 => 00 00 00 00 = 0 Std Bias C4 FF FF FF => FF FF FF C4 = 4294967236 Dlt Bias ( SYSTEM TIME ) StandardDate 00 00 => 00 00 = Year 0A 00 => 00 0A = Month 00 00 => 00 00 = Day of Week 05 00 => 00 05 = Day 02 00 => 00 02 = Hour 00 00 => 00 00 = Minutes 00 00 => 00 00 = Seconds 00 00 => 00 00 = Milliseconds ( SYSTEM TIME ) DaylightDate 00 00 => 00 00 = Year 04 00 => 00 04 = Month 00 00 => 00 00 = Day of Week 01 00 => 00 01 = Day 02 00 => 00 02 = Hour 00 00 => 00 00 = Minutes 00 00 => 00 00 = Seconds 00 00 => 00 00 = Milliseconds
همچنین Day از یک شروع میشود و DayOfWeek از صفر. Year اگر صفر وارد شود به معنای زمان نسبی است و برای سال بعد نیز میتواند کاربرد داشته باشد (و عموما صفر تعریف شده است).
بنابراین برای تبدیل DateTime به SystemTime سازگار با TZI به فرمول زیر خواهیم رسید:
public static SystemTime ToSystemTime(DateTime time) { var result = new SystemTime { Year = 0, // سال نسبی وارد میشود نه مطلق Month = (short)time.Month, DayOfWeek = (short)time.DayOfWeek, Hour = (short)time.Hour, Minute = (short)time.Minute, Second = (short)time.Second, Milliseconds = (short)time.Millisecond }; int weekdayOfMonth = 1; // شماره هفته است نه شماره روز for (int dd = time.Day; dd > 7; dd -= 7) weekdayOfMonth++; result.Day = (short)weekdayOfMonth; return result; }
using System; using System.Runtime.InteropServices; namespace TimeZoneInfo.Core { public static class ByteUtils { public static Byte[] SerializeByteArray<T>(T msg) where T : struct { int objsize = Marshal.SizeOf(typeof(T)); Byte[] ret = new Byte[objsize]; IntPtr buff = Marshal.AllocHGlobal(objsize); Marshal.StructureToPtr(msg, buff, true); Marshal.Copy(buff, ret, 0, objsize); Marshal.FreeHGlobal(buff); return ret; } } }
پس از اعمال تغییرات فوق، نیاز است یکبار ویندوز را ری استارت کنید.
دوره کامل Docker
Complete Docker Course - From BEGINNER to PRO! (Learn Containers)
Learn Docker and containers to improve your software systems! 🐳 📦
This course covers everything from getting started all the way through building a containerized web application and deploying it to the cloud!
Timestamps:
00:00 - Introduction
04:40 - History and motivation
30:27 - Technology overview
40:30 - Installation and set up
47:15 - Using 3rd party container images
48:06 - Understanding container data and docker volumes
1:13:00 - Demo application
1:28:37 - Building container images
2:23:46 - Container registries
2:33:45 - Running containers
3:02:36 - Container security
3:06:58 - Interacting with Docker objects
3:18:36 - Development workflow
3:52:05 - Ephemeral environments with Shipyard
4:07:17 - Deploying containers
4:42:59 - Final wrap up
میانگین متحرک یا 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;
Learn Blazor WebAssembly and Web API on .NET 6 by building a shopping cart application using C#. This course also provides a guide on how to integrate a payment gateway into your Blazor WebAssembly component, so that a user is able to pay for products through your application using a debit or credit card or PayPal account.
⭐️ Course Contents ⭐️
⌨️ (0:00:00) Introduction
⌨️ (0:00:51) Create the Database using EF Core Code First Database Migrations
⌨️ (0:26:05) Retrieve Product Data from Database (Web API component)
⌨️ (0:30:17) Create Classes for Data Transfer Objects (DTOs)
⌨️ (0:36:22) Create ProductRepository Class (Repository Design Pattern)
⌨️ (0:43:05) Create ProductController Class
⌨️ (0:51:08) Create DtoConversion Class (DTO Conversion Extension methods)
⌨️ (0:57:45) Display Product Data to User (Blazor WebAssembly Component)
⌨️ (1:39:59) Display Data for Specific Product to User (Web API and Blazor)
⌨️ (2:06:07) Add Product to Shopping Cart (Web API and Blazor)
⌨️ (2:52:40) Remove Product from Shopping Cart (Web API and Blazor)
⌨️ (3:14:03) Update the Quantity of Products in the Shopping Cart (Web API, Blazor, Blazor JavaScript Interoperability)
⌨️ (3:44:01) Update the Header Menu in Response to a Change to the State of the Shopping Cart (Creating Custom Events in Blazor)
⌨️ (4:04:48) Integration of PayPal Payment Gateway into Blazor Component
⌨️ (4:36:03) Dynamically Populate the Side-Bar Menu (Web API and Blazor)
⌨️ (5:05:44) Optimise Code for Performance (Web API and Blazor)
⌨️ (5:08:26) Use Include Extension Method in LINQ Query (Web API)
⌨️ (5:14:00) User Local Storage Functionality (Blazor)
⌨️ (5:35:42) Outro
پیاده سازی سرویس دیسکاوری با Consul
بعد از مدتها دوری از این پلی لیست، گفتیم یکمی این رو هم ببریم جلو و یه ویدیو براش بسازیم در ادامه بحث مایکروسرویس ها، این سری رفتیم سراغ سرویس دیسکاوری و با Consul که از کمپانی HashiCorp هست، کار کردیم و تونستیم مایکروسرویس هارو در زمان لود رجیستر کنیم و Ocelot رو هم به این سرویس دیسکاوری وصل کنیم.
00:00 Ocelot, API Gateway
05:00 Implementing 2 Microservices and API Gateway
10:08 What is Consul
10:37 Running Consul in Docker
15:31 Consul UI
16:40 Self Registration Microservice into Consul
20:28 IHostedService
27:15 Register Services into IServiceCollection
35:00 Connect Ocelot to Consul
مدت زمان ویدیو : 41 دقیقه
قسمت 5ام از سری ویدیوهای کانکارنسی داریم کم کم به انتهای ویدیوها میرسیم و در این ویدیو درمورد بکگراند تردها و فرگراند تردها صحبت کردیم، به طور کامل فضای تسک و ترد پول رو بررسی و باز کردیم و در انتها یه نگاهی هم به فضای async, await انداختیم که در ادامه ویدیوها بیشتر صحبت میکنیم.
0:00 last session
03:00 Background and foreground thread
06:50 CLR
07:19 Thread Pool
11:00 Task
13:30 Task Result
16:40 Long Running Tasks