donderdag 27 september 2018

Mongodb: rename database

In Robo 3T de database aanklikken en rechter muisknop en OpenShell selecteren.
Vervolgens invoeren:

db.copyDatabase("old_db_name","new_db_name")
use old_db_name
db.dropDatabase()

woensdag 26 september 2018

Ontlast GUI-thread met async/await

Als je een winforms applicatie meer "responsive" wil maken, dan moet je de GUI-thread niet meer blokkeren.
Een eenvoudig manier om dat te doen is een method die veel tijd opsoepeert async te maken.
Je hebt bijvoorbeeld de volgende code:
using (var repo = new Repository(gitDir))
{ ...

Dit verander je in:
private Task<Repository> GetRepositoryAsync(string gitDir)
{
   var task = Task<Repository>.Factory.StartNew(() => { return new Repository(gitDir); });
   return task;
}

De method waarin je deze nieuwe function aanroept moet voorzien zijn van het async keyword. De aanroep van de function is als volgt:
using (var repo = await GetRepositoryAsync(gitDir))
{ ...

zondag 23 september 2018

Low latency modes .net452

Je kunt ervoor zorgen dat er geen full garbage collect gebeurt tijdens tijdkritische zaken in .NET:
https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/latency

zondag 16 september 2018

Een ORM kan tegen je gaan werken...

Een Object Relational Mapper is ontzettend handig als je CRUD operations wil uitvoeren op tabellen. Maar ALLES proberen op te lossen met je ORM is verkeerd. Lees in deze post de ellende van iemand die dat probeert. Hij wil de volgende query door LLBLGen laten genereren:

SELECT 
COUNT(DISTINCT(PstFileEntry.OwnerEntryIdOverride)) as [UserCount], 
SUM(Size)/1024/1024 as FileSizeInMB
FROM PstFileUploadProgress a 
INNER JOIN PstFileEntry ON a.PstFileEntryId = PstFileEntry.PstFileEntryId, 
    (SELECT PstFileUploadProgress.PstFileEntryId, max(PstFileUploadProgressDateTime) as max_date 
    FROM PstFileUploadProgress
    GROUP BY PstFileUploadProgress.PstFileEntryId) b
    
WHERE a.PstFileEntryId = b.PstFileEntryId 
AND a.PstFileUploadProgressDateTime = b.max_date
AND a.PstFileUploadProgressStatus = 1

Kansloze actie!
Dit zijn duidelijk handmatige queries. Voer deze query gewoon uit met ADO.NET.
ORM's zijn niet de oplossing voor alle SQL problemen!

vrijdag 14 september 2018

bat file loop convert h265 to h264

for %%F in (*.mkv) do (
   ffmpeg -i "%%~dpnxF" -c:v libx264 "h264-%%F"
)