Vue.js Event modifier: .stop .prevent .passive .once .self .capture explanation
Two articles explain well this subject. One is in Chinese, the other is in English.
Two articles explain well this subject. One is in Chinese, the other is in English.
If you sit down at set of sun,
And count the acts that you have done,
And counting, find
One self-denying deed, one word,
That eased the heart of him who heard,
One glance most kind,
That fell like sunshine where it went --
Then you may count that day well spent,
But if through all the livelong day,
You’ve cheered no heart, by yea or nay --
If, through it all
You’ve nothing done that you can trace,
That brought the sunshine to one face -- No act most small.
Then count that day as worse than lost.
If you've got LINQ available to you, you can use Union, Except, Intersect, and Distinct:
You want to add a unique index to a table, and unfortunately, there are already many duplicate rows in it. Manually find and delete these rows is time-wasting and error-prone. So why won't we just write one SQL statement and quickly resolve it?
First try, I wrote the following statement, and it won't work:
DELETE FROM PromotionSkus A
WHERE
A.SkuId IN (SELECT SkuId FROM PromotionSkus B GROUP BY B.SkuId HAVING COUNT(B.SkuId) > 1)
AND
A.Id NOT IN (SELECT MIN(Id) FROM PromotionSkus C GROUP BY C.SkuId HAVING COUNT(C.SkuId) > 1);
AND this one below works!
DELETE FROM PromotionSkus A
WHERE
A.Id NOT IN (SELECT Id FROM (SELECT MIN(Id) AS Id, COUNT(SkuId) AS Total FROM PromotionSkus GROUP BY SkuId HAVING Total > 1) AS B)
AND
A.SkuId IN (SELECT SkuId FROM (SELECT SkuId FROM PromotionSkus GROUP BY SkuId HAVING COUNT(SkuId) > 1) AS C);
The reason is well explained in this brilliant article.
Another mysql tip: using mysqldump export a table with one line one row.
mysqldump --databases YourDataBaseName --tables YourTableName --skip-extended-insert
Why do we need that? It is much easier to compare !
StartUp.cs
, add the highlight part below:services.AddMemoryCache().AddMvcCore().AddJsonOptions(opts => { opts.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()); }) .AddDataAnnotationsLocalization();
Enable XML Comments
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<NoWarn>$(NoWarn);1591</NoWarn>
</PropertyGroup>
2. Add the options in the code below
services.AddSwaggerGen(options =>
{
options.IncludeXmlComments(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"{AppDomain.CurrentDomain.FriendlyName}.xml"), true);
});