Als je de grootte van alle elementen op je pagina wilt zien: * { outline: 1px solid limegreen; } Als je images op je pagina wilt lazy loaden: <img loading="lazy"/> Gradient color text: .gradient-text { background-image: (90deg, red, blue); background-clip: text; >color: transparent; }
vrijdag 27 januari 2023
CSS trucs
vrijdag 20 januari 2023
Bij belangrijke wijzigingen in PostgreSQL altijd transactions gebruiken
Bij wijzigingen in productie in PostgreSQL moet je altijd eerst bepalen hoeveel rijen worden geraakt door een statement. Dat kun je makkelijk doen door een transactie te gebruiken. Die kun je namelijk terugdraaien.
begin transaction; delete from tabel where attr='waarde'; rollback; En als alles volgens verwachting is, dan kun je rollback; veranderen in commit;
dinsdag 17 januari 2023
Angular traag bij websocket activiteit. Hoe kan dat?
Angular gebruikt zone.js om change detection te doen. Die zone.js heeft websockets gepatched om netwerk activiteit te detecteren. Bij het laden van ieder data gedeelte via de websocket wordt een change detection getriggerd. Daarom duurt het inladen van de gegevens zo lang als je websockets gebruikt en change detection niet goed is ingericht in je applicatie.
Zie https://blog.angular-university.io/how-does-angular-2-change-detection-really-work/
De websocket functie "onmessage" moet je buiten de Angular Zone houden om te voorkomen dat bij iedere aanroep een change detection wordt getriggered:
Doe iets als:
import { NgZone } from '@angular/core';
constructor (private _ngZone : NgZone) {};
await this._ngZone.runOutsideAngular(async () => {
await this.websocketcode.open();
});
zondag 15 januari 2023
Branching is slecht voor de kwaliteit van het software product
Why CI is BETTER Than Feature Branching.
Real Programmers commit to Master.
Branches moeten niet lang bestaan, want hoe langer ze bestaan hoe groter het verschil wordt. Ze mogen maar een paar dagen bestaan. Daarna wordt het mergen moeilijker en na een maand nog veel moeilijker.
NodeJS weer in de prullenbak.
Hebben jullie wel eens in de directory node_modules gekeken? Wat een ontzettende troep packages staan daar in.
Bijvoorbeeld een package "boolbase" van 8 code regels. Wrappy 28 regels. Has: 2 regels! Has-flag: 7 regels code. Abbrev: 60 regels met variabele namen zoals MonkeyPatch. Has-unicode: 7 regels. Humanize-ms: 11 regels gemaakt door dead-horse.
Deze mini-packages doen ook nog eens hele vreemde checks. Als je op Windows-NT zit dan heb je geen unicode volgens package Has-unicode.
Deze troep code is een grote reden voor mij om van NPM af te stappen. Daarom heb ik al m'n prive projecten gemaakt met NodeJS omgezet naar ASP.NET Core met top-levels minimal Web API statements. Waarom? Omdat ik het NodeJS moeras werd ingetrokken. Ik deed lelijke dingen zoals:
process.env.NODE_TLS_REJECT_UNAUTHORIZED="0";
Het is een manier om https certificaat error te negeren.
Datzelfde doen in ASP.NET Core is veel doordachter en mooier. NodeJS voelt bij mij als een snel in elkaar gezette hack. Dat is het ook eigenlijk, want NodeJS is gewoon de Chrome V8 Javascript Engine werkend gemaakt als standalone. Dat kon omdat het opensource was. Leuke hack. Maar het losse zand genaamd NPM packages ga ik niet gebruiken, want voor troep kies ik niet. NodeJS ligt er bij mij uit.
Wisten jullie dat de nieuwste Visual Studio 2022 ook hot-reload heeft? Samen met top-level statements en minimal web api levert het behoorlijk compacte code op. Je kunt eenvoudig een "ASP.NET Core Empty" project aanmaken en dan heb je een simpele webserver.
dinsdag 10 januari 2023
WSL 2. Een hele lichte manier om Linux op Windows te draaien.
WSL 2 is een manier om Ubuntu Linux te draaien in Windows. Het is een hele lichte VM. Die VM wordt afgesloten als er geen Bash meer een connectie heeft met de VM.
Een simpele manier om de Linux Sourcecode van een tool te compileren is, is om een command-prompt in Administrator mode te openen en naar de windows directory van de tool te gaan. Daar "wsl" te typen. Dan wordt WSL gestart en naar de actuele windows directory gegaan. Ideaal.
Tevens kan Dotnet 8.0 geinstalleerd worden op deze Ubuntu:
https://learn.microsoft.com/en-us/dotnet/core/install/linux-ubuntu#register-the-microsoft-package-repository
https://learn.microsoft.com/nl-nl/windows/wsl/setup/environment#set-up-your-linux-user-info
Commando's om de Linux te updaten:
sudo apt update sudo apt upgrade sudo apt install build-essential sudo apt install rustc sudo apt-get install -y dotnet-sdk-8.0 Welke ipadres heeft de localhost op de windows host gezien vanuit WSL 2? ip route show | grep -i default | awk '{ print $3}' Welk ipadres heeft de WSL 2 instantie gezien vanuit Windows? ifconfig in de WSL 2. Of op windows: wsl hostname -I Welk linux zitten we? cat /etc/issue Welke ipadressen hebben we? ifconfig x86-64? uname -a wsl afsluiten? wsl --shutdown
maandag 9 januari 2023
Clear local nuget cache
dotnet nuget locals all --list dotnet nuget locals all --clear
vrijdag 6 januari 2023
Remote compiling in Linux in Visual Studio Code
Met WSL kun je een Linux draaien in Windows. Visual Studio Code heeft een plugin om C++ code te laten compileren door die WSL linux en vervolgens het editten te doen in Visual Studio Code.
donderdag 5 januari 2023
Text search in PostgreSQL
In PostgreSQL kun een ts_vector kolom maken waarop je kunt
zoeken met een ts_query. Je gebruikt de @@ operator om te matchen.
select to_tsvector('fat cats ate fat rats');
select to_tsquery('fat & cat');
select to_tsvector('fat cats ate fat rats') @@ to_tsquery('fat & cat');
Het kan zijn dat je de query moet fatsoeneren.
Gebruik onderstaande om bv. de streepjes te verwijderen uit een kenteken:
select regexp_replace('01-ABC-10', '[^\w]+', '', 'gi');