#Klooienmetcomputers

VIM

Arnout van Kempen over rommelen in een digitale wereld.

Tot nu toe hebben we steeds nano gebruikt als editor. Dat werkt goed, maar het kan beter. Een complexere, maar handige editor is vim. Onder Unix-gebruikers een klassieker, die eerst als Vi bekend stond en daar zijn verschillende varianten op gemaakt. Wij gaan vim gebruiken. Om te beginnen moeten we vim installeren, op de Raspberry Pi werkt dat eenvoudig met

sudo apt update
sudo apt install vim

Een groot voordeel van vim is het gebruik van plugins. Daarvoor installeren we meteen een populaire plugin-manager:

mkdir -p ~/.vim/autoload
curl -flo ~/.vim/autoload/plugin.vim https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

NB: vanaf curl is één regel!

Vervolgens moet je wat standaard-instellingen regelen. Hiertoe open je een configuratiebestand met de net geïnstalleerde editor:

vim ~/.vimrc

Je kan hierbij ook het bestand van mijn github halen. Ik heb het bestand hernoemd naar vimrc om het makkelijk vindbaar te houden, maar let op dat als je het bestand lokaal hebt gezet in je homedirectory, dat je het hernoemd en er een punt voor zet.

Deze configuratiefile zal een aantal instellingen handig zetten, maar zal vooral twee plugins laden die voor Rust handig zijn. De eerste keer dat je nu vim start, moet je in vim het commando :PlugInstall geven, zodat de plugins daadwerkelijk geïnstalleerd worden. Als alles goed is gegaan, zal je zien dat je in vim een aantal aardige commando’s hebt gekregen. Met name :ALELint en :ALEFix kan ik aanraden om eens te proberen.

Ook als je die commando's nooit gebruikt, zal je merken dat ieder Rust-bestand dat je maakt in vim automatisch netjes wordt opgemaakt bij opslaan. Verder zal je merken dat vim tabs automatisch omzet naar spaties, dat inspringen werkt zoals het hoort en dat je code met kleurcodering leesbaarder wordt gemaakt.

Tenslotte wijs ik nog graag op een verschijnsel waar je plezier van gaat hebben: In vim krijg je direct al waarschuwingen en foutmeldingen van de compiler te zien. Neem bijvoorbeeld de code uit aflevering 36, waar ik compound types liet zien. Daar zat toen een bewuste 'fout' in, die weliswaar door de compiler wel kon worden verwerkt, maar die wel een warning gaf: een ongebruikte variabele. Als je die code met cargo hebt gemaakt en opent in vim, dan krijg je direct te zien waar de warning betrekking op heeft; er staat een W voor de relevante regel. Dat is handig, als je na compiler-fouten en -warnings snel wil zien waar je iets moet verbeteren. Geen regelnummers meer onthouden zoals met nano dus, maar direct in vim zien wat er aan de hand is.

Mijn advies is wel wat te stoeien met vim voor je er echt op gaat vertrouwen. Anders dan nano heeft vim een aparte 'normale' modus waarin je commando's kan geven die beginnen met : en een 'insert' modus om tekst in te voeren. Het kan even zoeken zijn hoe alles werkt. Maar als het dan werkt, kan je vim ook volledig naar je hand zetten en laten werken zoals je wilt. Iets complexer dan nano, veel krachtiger.

Wie mee wil doen met #klooienmetcomputers kan dat doen via GitHub. Maak een account op www.github.com en zoek naar Abmvk/kmc. Het account Abmvk volgen kan ook. Lezers zijn vrij te gebruiken wat ze willen en om zelf zaken toe te voegen of aan te passen, vragen te stellen of commentaar te leveren.

Arnout van Kempen di CCO CISA is directeur compliance & risk bij aaff, de fusieorganisatie van Alfa en ABAB. Hij schrijft op persoonlijke titel.

Gerelateerd

3 reacties

Ron Heinen

Additionele toelichting op de vorige reactie:

Het ownership-principe in Rust en de zero trust-strategie voor data hebben beide betrekking op het idee van het beperken van toegang tot middelen tot alleen die entiteiten die het absoluut nodig hebben, en alleen voor de duur dat ze het nodig hebben.

In Rust is het ownership-principe een set regels die bepaalt hoe een Rust-programma geheugen beheert.

Elke waarde in Rust heeft een eigenaar, en er kan op elk moment slechts één eigenaar zijn voor een waarde.

Wanneer de eigenaar out of scope gaat, wordt de waarde gedropt.

Dit zorgt ervoor dat geheugen veilig wordt beheerd en voorkomt problemen zoals geheugenlekken en data races.

De zero trust-strategie voor data is een beveiligingsmodel dat ervan uitgaat dat elke gebruiker, apparaat en service die toegang vereist tot het netwerk van een organisatie als vijandig wordt beschouwd totdat het tegendeel is bewezen.

Deze strategie beperkt de toegang van gebruikers en systemen alleen tot de data en applicaties die ze nodig hebben om hun werk te doen.

Dus, hoewel het ownership-principe in Rust en de zero trust-strategie voor data in verschillende contexten worden toegepast (programmeertaal versus data-beveiliging), delen ze het gemeenschappelijke thema van strenge toegangscontrole en het minimaliseren van onnodige privileges.

Beide strategieën helpen bij het verbeteren van de veiligheid en betrouwbaarheid van systemen.

Ze werken door het beperken van toegang tot middelen (geheugen in het geval van Rust, data in het geval van zero trust) tot alleen die entiteiten die het absoluut nodig hebben, en alleen voor de duur dat ze het nodig hebben.

Dit helpt bij het voorkomen van misbruik van middelen en minimaliseert de impact van eventuele beveiligingsinbreuken.

Ron Heinen

@Arnout van Kempen 21 januari 2024

Citaat: "Hoe interessant ook, maar ownership in Rust is echt iets anders."

Ik wilde voorbeelden geven dat de controle over de data een belangrijk mechanisme is in ICT-Systemen.

Ik ben het met je eens dat het ownership principe van een variabele een geheel ander mechanisme is dan een zero-trust strategie.

Beide mechanismes hebben echter als gevolg dat je de data onder controle hebt.

Bijvoorbeeld bij een systeem als het verwijzingsportaal bankgegevens

https://www.tweedekamer.nl/kamerstukken/brieven_regering/detail?id=2024Z00566&did=2024D01346

is het erg belangrijk om niet alleen juridisch maar ook technisch de data onder controle te hebben.

Arnout van Kempen

Overigens, voor wie in een dappere bui is, raad ik Helix aan. Dat is een soort vim on steroids. Maar je zal daar wat meer werk aan hebben om het te installeren en naar je hand te zetten.

Staat tegenover, dan heb je ook wel echt iets moois.

Reageren op een artikel kan tot drie maanden na plaatsing. Reageren op dit artikel is daarom niet meer mogelijk.

Aanmelden nieuwsbrief

Ontvang elke werkdag (maandag t/m vrijdag) de laatste nieuwsberichten, opinies en artikelen in uw mailbox.

Bent u NBA-lid? Dan kunt u zich ook aanmelden via uw ledenprofiel op MijnNBA.nl.