Immutability comes with a lot of benefits, but sometimes it can be a bit cumbersome to deal with when you only want to update some properties. Since the object is immutable, you need to create a copy with all the existing values and the new updated one.
I will show you how Records in C# 9 will greatly simplify this
تاریخچهای از گرافیک وب
Short Bytes: Web graphics have come a long way from the time images were the only graphics on mostly static pages, to WebGL’s powerful animation, GPU and gaming capabilities, all powered by canvas HTML element’s 2D and 3D contexts. Now Webkit browser engine has proposed a new low level web graphics API standard to leverage the computing powers and hardware acceleration that latest GPU systems provide
نگارش نهایی NET Core 3.0. منتشر شد
We’re excited to announce the release of .NET Core 3.0. It includes many improvements, including adding Windows Forms and WPF, adding new JSON APIs, support for ARM64 and improving performance across the board. C# 8 is also part of this release, which includes nullable, async streams, and more patterns. F# 4.7 is included, and focused on relaxing syntax and targeting .NET Standard 2.0. You can start updating existing projects to target .NET Core 3.0 today. The release is compatible with previous versions, making updating easy.
در واقع Sequence روشی برای تولید اعداد ترتیبی با قابلیت افزایش یا کاهش عددهای دلخواه میباشد که توسط کاربر یا برنامه نویس ایجاد میشود. بنابراین Sequenceها User-Defined میباشند.
در اینجا ممکن است سئوالی پیش بیاید که اینکار توسط Identity هم قابل انجام است، اما چرا استفاده از Sequence توسط مایکروسافت پیشنهاد میشود.
بدلایل زیر استفاده از Sequence بهتر میباشد:
- ممکن است Application شما قبل از درج رکورد، درون یک جدول نیاز به عدد منحصربفردی داشته باشد.
- عدد تولید شده بوسیله Sequence را میتوانید بین جداول یا ستونهای مختلف یک جدول به اشتراک بگذارید.
- میتوانید روند تولید اعداد ترتیبی را Restart نمایید. به عبارت دیگر قابلیت Restart نمودن Sequence وجود دارد.
- میتوانید Sequence خود را براساس Sort یک یا چند فیلد، تنظیم نمایید.
Syntax آن به شرح ذیل میباشد:
CREATE SEQUENCE [schema_name . ] sequence_name [ AS [ built_in_integer_type | user-defined_integer_type ] ] [ START WITH <constant> ] [ INCREMENT BY <constant> ] [ { MINVALUE [ <constant> ] } | { NO MINVALUE } ] [ { MAXVALUE [ <constant> ] } | { NO MAXVALUE } ] [ CYCLE | { NO CYCLE } ] [ { CACHE [ <constant> ] } | { NO CACHE } ] [ ; ]
شرح Syntax :
- در زمان ایجاد Sequence، نوع آن میبایست عددی باشد، چنانچه ،Type آن را مشخص ننمایید، SQL Server، نوع آن را bigint در نظر میگیرد.
- Start With: بدین مفهوم میباشد، که Sequence ایجاد شده از چه عددی آغاز شود.
- INCREMENT BY: مفهومش این است که Sequence به چه مقداری افزایش یا کاهش یابد. به عبارت دیگری عدد تولید شده براساس مقدار Increment by تولید میشود.
- Minvalue: کمترین مقداری که Sequence میتواند ایجاد نماید.
- Maxvalue :بیشترین مقداری که Sequence میتواند ایجاد نماید.
- Cycle :مقداری را که برای Cycle تعیین مینماییم، بدین مفهوم است که Sequence پس از چه عددی میبایست Restart شود.
- Cache :عددی که برای Cache در نظر میگیریم، مفهومش این است که چه تعداد از اعداد تولید شده توسط Sequence، قبل از استفاده، میتواند در Cache قرار گیرد.
در ادامه با یک مثال ساده، یک Sequence ایجاد مینماییم:
CREATE SEQUENCE [dbo].[SequenceTest] AS [int] START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 30 CYCLE CACHE GO
برای اینکه بتوانیم مقدار Sequence را بدست آوریم، کافیست از Syntax زیر استفاده نمایید:
NEXT VALUE FOR [ database_name . ] [ schema_name . ] sequence_name [ OVER (<over_order_by_clause>) ]
اگر Select بالا را تا 30 بار انجام دهید، برای دفعه 31 مقدار آن یک میشود، چون در زمان تعریف Cycle ،Sequence را انتخاب کرده بودیم. در غیر اینصورت برای دفعه 31 با خطا زیر مواجه میشوید.
Msg 11728, Level 16, State 1, Line 1 The sequence object 'SequenceTest' has reached its minimum or maximum value. Restart the sequence object to allow new values to be generated.
در ابتدا مطابق Script زیر جدولی را ایجاد و مقادیری را درون آن درج مینماییم:
create table Kids ( ID int, Name varchar(50) ); Go insert Kids values (1,'Emma') , (1,'Tabitha') , (2,'Kendall') , (3,'Delaney') , (4,'Kyle') , (5,'Jessica') , (6,'Josh') , (7,'Kirsten') , (8,'Amanda') , (9,'Jimmy') ;
CREATE SCHEMA Samples ; GO
CREATE SEQUENCE Samples.Test AS tinyint START WITH 1 INCREMENT BY 1 ; GO
SELECT NEXT VALUE FOR Samples.Test OVER (ORDER BY Name) AS NutID, ID, Name FROM test1.Kids WHERE Name LIKE '%e%' ;
امیدوارم مطلب فوق مفید واقع شده باشد.
function timeDiff(current, prev) { const millisecond = current - prev; const second = millisecond / 1000; const minute = second / 60; const hour = minute / 60; const day = hour / 24; const week = day / 7; const month = week / 4.3; const year = month / 12; const quarter = year / 4; const unitValues = { millisecond, second, minute, hour, day, week, month, year, quarter }; return function diffValueByUnit(unitKey) { return unitValues[unitKey]; }; } const from = new Date(); from.setDate(from.getDate() - 2); console.log(from); const to = new Date(Date.now()); console.log(to); const diff = timeDiff(from, to); const result = parseFloat(Math.round(diff("hour"))); console.log(result); const rtf = new Intl.RelativeTimeFormat("fa"); console.log(rtf.format(result, "hour"));
> Wed Feb 19 2020 02:24:36 GMT+0330 (Iran Standard Time) > Fri Feb 21 2020 02:24:36 GMT+0330 (Iran Standard Time) > -48 > "۴۸ ساعت پیش"
Get-Help Get-Command
Get-Help Get-Command -Online
Get-Command -Name '*Process'
CommandType Name Version Sour ce ----------- ---- ------- ---- Cmdlet Debug-Process 7.0.0.0 Mic… Cmdlet Enter-PSHostProcess 7.2.6.500 Mic… Cmdlet Exit-PSHostProcess 7.2.6.500 Mic… Cmdlet Get-Process 7.0.0.0 Mic… Cmdlet Start-Process 7.0.0.0 Mic… Cmdlet Stop-Process 7.0.0.0 Mic… Cmdlet Wait-Process 7.0.0.0 Mic… Application mysqltest_safe_process 0.0.0.0
ls -l | grep "\.pdf$"
Get-Command -Name '*Process' | Select-Object Name,CommandType
Get-Command -Name '*Process' | Select-Object Name,CommandType | Sort-Object Name -Descending
PS /> Get-Command -Name '*Process' | Select-Object Name,CommandType -First 3 | Sort-Object Name -Descending Name CommandType ---- ----------- Exit-PSHostProcess Cmdlet Enter-PSHostProcess Cmdlet Debug-Process Cmdlet
PS /> Get-Process | Where-Object CPU -gt 1.24 | Sort-Object WorkingSet -Descending | Select-Object -First 5
- ByValue
- ByPropertyName
Get-Process Slack | Stop-Process
Get-Process | Get-Member
TypeName: System.Diagnostics.Process
PS /Users/sirwanafifi> Get-Help Stop-Process -Full NAME Stop-Process SYNTAX Stop-Process [-Id] <int[]> [-PassThru] [-Force] [-WhatIf] [-Confirm] [<CommonParameters>] Stop-Process -Name <string[]> [-PassThru] [-Force] [-WhatIf] [-Confirm] [<CommonParameters>] Stop-Process [-InputObject] <Process[]> [-PassThru] [-Force] [-WhatIf] [-Confirm] [<CommonParameters>] PARAMETERS -Confirm Required? false Position? Named Accept pipeline input? false Parameter set name (All) Aliases cf Dynamic? false Accept wildcard characters? false -Force Required? false Position? Named Accept pipeline input? false Parameter set name (All) Aliases None Dynamic? false Accept wildcard characters? false -Id <int[]> Required? true Position? 0 Accept pipeline input? true (ByPropertyName) Parameter set name Id Aliases None Dynamic? false Accept wildcard characters? false -InputObject <Process[]> Required? true Position? 0 Accept pipeline input? true (ByValue) Parameter set name InputObject Aliases None Dynamic? false Accept wildcard characters? false -Name <string[]> Required? true Position? Named Accept pipeline input? true (ByPropertyName) Parameter set name Name Aliases ProcessName Dynamic? false Accept wildcard characters? false -PassThru Required? false Position? Named Accept pipeline input? false Parameter set name (All) Aliases None Dynamic? false Accept wildcard characters? false -WhatIf Required? false Position? Named Accept pipeline input? false Parameter set name (All) Aliases wi Dynamic? false Accept wildcard characters? false <CommonParameters> This cmdlet supports the common parameters: Verbose, Debug, ErrorAction, ErrorVariable, WarningAction, WarningVariable, OutBuffer, PipelineVariable, and OutVariable. For more information, see about_CommonParameters (https://go.microsoft.com/fwlink/?LinkID=113216). INPUTS System.Int32[] System.String[] System.Diagnostics.Process[] OUTPUTS System.Diagnostics.Process ALIASES spps REMARKS Get-Help cannot find the Help files for this cmdlet on this computer. It is displaying only partial help. -- To download and install Help files for the module that includes this cmdlet, use Update-Help. -- To view the Help topic for this cmdlet online, type: "Get-Help Stop-Process -Online" or go to https://go.microsoft.com/fwlink/?LinkID=2097058.
-Id <int[]> Required? true Position? 0 Accept pipeline input? true (ByPropertyName) Parameter set name Id Aliases None Dynamic? false Accept wildcard characters? false -InputObject <Process[]> Required? true Position? 0 Accept pipeline input? true (ByValue) Parameter set name InputObject Aliases None Dynamic? false Accept wildcard characters? false -Name <string[]> Required? true Position? Named Accept pipeline input? true (ByPropertyName) Parameter set name Name Aliases ProcessName Dynamic? false Accept wildcard characters? false
"Slack" | Stop-Process
Stop-Process: The input object cannot be bound to any parameters for the command either because the command does not take pipeline input or the input and its properties do not match any of the parameters that take pipeline input.
PS /Users/sirwanafifi> $newObject = [pscustomobject]@{ Name = "Slack" } PS /Users/sirwanafifi> $newObject | Stop-Process
کتابخانه jquery-typeahead
NHibernate 5.0 منتشر شد
** Highlights
* IO bound methods have gained an async counterpart. Not intended for parallelism, make sure to await each
call before further interacting with a session and its queries.
* Strongly typed DML operation (insert/update/delete) are now available as Linq extensions on queryables.
* Entities collections can be queried with .AsQueryable() Linq extension without being fully loaded.
* Reference documentation has been curated and completed, notably with a Linq section.