ID.nl logo
Zo kun je programmeren in Python - Deel 6
© PXimport
Huis

Zo kun je programmeren in Python - Deel 6

In de href="https://computertotaal.nl/artikelen/pc/zo-kun-je-programmeren-in-python-deel-5/" rel="noopener noreferrer" target="_blank">vorige les</a> leerde je met bestanden werken en zag je hoe je je programma kunt laten reageren op exceptions. Zo beginnen je programma’s ondertussen al vrij complex te worden. Tijd dus om wat structuur in je programma’s te brengen, en dat doen we in deze les met functies en modules. We bekijken ook enkele standaardmodules van Python.

Wil je meer leren over programmeren? Bekijk dan onze Cursus: programmeren in Phyton (boek & online cursus).

Tot nu toe waren onze Python-programma’s vrij kort, maar je hebt ondertussen al genoeg Python-bagage om zelf al eens aan de slag te gaan en je eigen ideeën uit te werken in programma’s. En dan merk je al snel dat je programma lang en ondoorzichtig wordt. Gelukkig kent Python verschillende manieren om wat meer structuur in je programma’s te brengen.

De eerste manier ben je al tegengekomen: functies. We hebben immers in de vorige lessen al diverse standaardfuncties van Python gebruikt, zoals len, print, input, format, split, open, read en write. Een functie is een afzonderlijk stukje code dat een afgebakende taak uitvoert die je meerdere keren zou willen uitvoeren op verschillende gegevens. Zodra je in je programma dus merkt dat je een stukje code telkens aan het herhalen bent, zou je eerste gedachte moeten zijn: ik maak er een functie van!

Een functie definiëren

We tonen je als voorbeeld hoe je een functie maakt om te berekenen of een woord een palindroom is. Een palindroom of spiegelwoord is een woord dat van achteren naar voren gelezen hetzelfde is als van voor naar achter. Een eenvoudige functie om te bepalen of een woord een palindroom is, ziet er als volgt uit:

def is_palindroom(woord):
letters = list(woord)
palindroom = True
while len(letters) > 0 and palindroom:
if letters[0] != letters[-1]:
palindroom = False
else:
letters.pop(0)
if len(letters) > 0:
letters.pop()
return palindroom

Dit is niet de efficiëntste manier om te bepalen of een woord een palindroom is, maar wel een die goed te begrijpen is. Je ziet dat er in de definitie van deze functie eigenlijk maar twee zaken nieuw zijn: de eerste en de laatste regel. In de eerste regel geven we met def is_palindroom(woord): aan dat we een functie definiëren met de naam is_palindroom en dat die één parameter meekrijgt, die we woord noemen. Dan komt onze hele berekening, die je met al je kennis uit de vorige lessen na een kleine studie zou moeten begrijpen, en op het einde geven we met return palindroom aan dat we de waarde die na onze berekening in de variabele palindroom zit teruggeven.

Een functie aanroepen

Breek je hoofd nog even niet over de inhoud van de functie. Typ de code in Thonny in en sla het bestand op onder de naam palindroom.py. Voer het dan uit met een druk op F5. Er gebeurt niets, maar de functie is nu gedefinieerd. In de terminal onderaan Thonny kun je nu de functie aanroepen. Enkele voorbeelden:

>>> is_palindroom('nepalapen')
True
>>> is_palindroom('napalm')
False
>>> is_palindroom('koortsmeetsysteemstrook')
True

Denk nu eens even na over wat er gebeurt als je is_palindroom('nepalapen') aanroept. De functie is_palindroom wordt dan uitgevoerd en aan de variabele woord van de functie wordt de string 'nepalapen' toegekend. Dan gebeurt die hele berekening, en geeft de functie als resultaat True of False. En voor elke andere string die je aan de functie doorgeeft, gebeurt de berekening op dezelfde manier. Op deze manier heb je de berekening ingekapseld in een afzonderlijk stukje code, de functie, die herbruikbaar is.

Overigens zijn door die inkapseling de parameter woord net zoals de variabelen letters en palindroom alleen binnen het blok van de functie gedefinieerd: het zijn wat we noemen lokale variabelen.

Recursieve functies

In onze functie is_palindroom gaan we met een while-lus alle letters in het woord af. Een andere manier om de functie te definiëren is met recursie: in de functie roepen we de functie opnieuw aan, maar op een deel van het woord. Dat ziet er als volgt uit:

def is_palindroom2(woord):
if len(woord) < 2:
return True
if woord[0] != woord[-1]:
return False
return is_palindroom2(woord[1:-1])

Voeg deze functie in Thonny gewoon aan hetzelfde bestand toe als is_palindroom, sla het bestand op en druk op F5 om het uit te voeren. Je kunt nu deze functie is_palindroom2 uitproberen op enkele woorden. Het resultaat moet telkens hetzelfde zijn als is_palindroom op hetzelfde woord.

De functie is_palindroom2 is een mooi voorbeeld van een recursieve functie. We bekijken eerst of het woord minder dan twee letters bevat. In dat geval (het woord is leeg of heeft één letter) is het altijd een palindroom en daarom geven we in dat geval True terug. Daarna controleren we of de eerste letter verschilt van de laatste letter van het woord. Verschillen die, dan is het woord al zeker geen palindroom en geven we dus False terug.

Dan blijft er nog één geval over: de eerste en laatste letter van het woord zijn gelijk, maar van de andere letters weten we nog niets. Wat doen we dan? We roepen de functie is_palindroom2 opnieuw op, maar op die andere letters. Die verkrijgen we door de slice (zie les 2) [1:-1] op het woord toe te passen, die het woord zonder de eerste en laatste letter teruggeeft.

Belangrijk bij recursieve functies

Als je een recursieve functie schrijft, is het belangrijk dat je de functie telkens oproept op een kleinere invoer dan waarmee je begon, zodat je uiteindelijk bij een basistest uitkomt, zoals in ons geval if len(woord) < 2: en if woord[0] != woord[-1]:. In beide gevallen roepen we de functie is_palindroom2 niet meer aan, maar geven we een waarde True of False terug. Doordat we in het derde geval altijd de eerste en de laatste letter van het woord verwijderen voor we de functie opnieuw oproepen, verzekeren we dat de functie uiteindelijk altijd bij een van de basistests uitkomt.

Met modules werken

Zonder dat je het weet, heb je nu al je eerste module geschreven. Elk Python-bestand waarin je code schrijft, is immers een module voor Python. Maak nu een nieuw Python-bestand aan in Thonny en noem het bijvoorbeeld test_palindroom.py. Als je in dit bestand de code uit palindroom.py wilt gebruiken, moet je de module palindroom importeren. Dat gaat als volgt:

import palindroom

print(palindroom.is_palindroom("nepalapen"))

Met import palindroom zeggen we aan de Python-interpreter dat we toegang willen tot alle code in de module palindroom. Python zoekt dan naar bestanden met de naam palindroom.py in zijn zoekpad. Omdat de code test_palindroom.py in dezelfde directory staat als palindroom.py, vindt Python de module en zijn de functies is_palindroom en is_palindroom2 daarin beschikbaar onder de namen palindroom.is_palindroom en palindroom.is_palindroom2.

In dit geval is het niet zo handig dat je voor elke functie uit de module palindroom de aanduiding palindroom. dient te zetten, omdat dit nogal lang is. We kunnen de naam van een module die we gebruiken gelukkig ook afkorten:

import palindroom as pal

print(pal.is_palindroom("nepalapen"))

Het is ook mogelijk om het voorvoegsel voor de module volledig weg te laten door de specifieke functies die we willen gebruiken te importeren:

from palindroom import is_palindroom

print(is_palindroom("nepalapen"))

Dat kan ook met meerdere functies:

from palindroom import is_palindroom, is_palindroom2

print(is_palindroom("nepalapen"))

print(is_palindroom2("parterretrap"))

Zodra je Python-code wat langer wordt, is het aan te raden om ze in modules op te splitsen. Een goede vuistregel is dat elke module code voor één specifiek doel moet bevatten. In ons geval bevat de module bijvoorbeeld alle mogelijke code die met palindromen te maken heeft. Als we daarnaast ook code voor anagrammen zouden willen toevoegen, doe je dat het best in een afzonderlijke module, anagram.py.

Systeeminformatie

Python zelf bestaat ook uit een heleboel standaardmodules waarin allerlei handige functies zitten. Zo is er de module platform om informatie over het platform waarop je Python-programma draait op te vragen:

>>> import platform
>>> platform.architecture()
('64bit', 'ELF')
>>> platform.platform()
'Linux-4.15.0-33-generic-x86_64-with-Ubuntu-18.04-bionic'
>>> platform.processor()
'x86_64'
>>> platform.python_version()
'3.6.7'
>>> platform.system()
'Linux'

Verder bevat de standaardmodule os allerlei functies die met het besturingssysteem te maken hebben. Zo kun je een lijst opvragen van de bestanden in de huidige directory:

>>> import os
>>> os.listdir()
['palindroom.py', 'test_palindroom.py']

Werken met getallen

Als je met getallen wilt werken, komt de module math goed van pas. Die bevat allerlei functies voor berekeningen, zoals je in het volgende voorbeeld ziet:

>>> import math
>>> math.floor(4.3)
4
>>> math.ceil(4.3)
5
>>> math.gcd(28, 12)
4
>>> math.sqrt(2)
1.4142135623730951
>>> math.e
2.718281828459045
>>> math.pi
3.141592653589793
>>> math.sin(2*math.pi)
-2.4492935982947064e-16

In de laatste regel zie je al een nadeel van berekeningen met floats: door afrondingsfouten geeft de berekening van de sinus van 2 keer pi een heel klein getal (-2 en nog iets maal 10 tot de -16de macht) in plaats van het juiste resultaat 0.

Een andere nuttige module is random, waarmee je willekeurige getallen kunt genereren:

>>> import random
>>> random.randint(1, 10)
7
>>> random.choice(['lies', 'jan', 'kees', 'mireille', 'koen', 'rob'])
'rob'
>>> namen = ['lies', 'jan', 'kees', 'mireille', 'koen', 'rob']
>>> random.shuffle(namen)
>>> namen
['jan', 'rob', 'koen', 'mireille', 'lies', 'kees']

Zo geeft de functie randint(a, b) een willekeurig geheel getal tussen a en b terug (a en b inbegrepen). Met choice kies je een willekeurig element uit een lijst. En met shuffle schud je een lijst willekeurig door elkaar.

Samenvatting

In deze les heb je geleerd om je Python-code wat meer te structureren. Enerzijds heb je berekeningen die je vaak herhaalt in functies leren opnemen. Anderzijds heb je geleerd hoe je functies die bij elkaar horen kunt afscheiden in een afzonderlijke module. We hebben tot slot ook met enkele standaardmodules van Python kennisgemaakt. In de volgende les gaan we op de structuur van datatypes in: we tonen je hoe je zelf eigen datatypes kunt definiëren in de vorm van klassen.

Opdracht

Open de module palindroom.py in Thonny en voer ze uit met een druk op F5. Voer in de terminal onderaan de volgende opdrachten in: *>>> is_palindroom('parterretrap')True>>> woord**Traceback (most recent call last):**File "

Uitwerking

De parameter woord in de functie is een lokale variabele: die is alleen binnen het blok van de functie gedefinieerd. Als je de functie met het argument 'parterretrap' oproept, wordt die string in de functie aan de lokale variabele woord toegekend, maar na het uitvoeren van de functie is die variabele niet meer beschikbaar en geeft Python dus met een NameError aan dat het de naam woord niet kent.

Cheatsheet

Functie: een afzonderlijk stukje code dat je meerdere keren uitvoert. Importeren: aangeven dat je een module wilt gebruiken. Lokale variabele: een variabele die alleen binnen een specifiek blok (bijvoorbeeld van een functie) gedefinieerd is. Module: een afzonderlijk bestand met Python-code. Recursieve functie: een functie die zichzelf aanroept.

▼ Volgende artikel
Vanilla OS maakt Linux simpel en krachtig
© Andreas Prott - stock.adobe.com
Huis

Vanilla OS maakt Linux simpel en krachtig

Vanilla OS is een Linux-distributie die zichzelf automatisch bijwerkt en tegelijk veel flexibiliteit biedt in het installeren van software uit diverse bronnen. Ook Linux-pakketten voor andere Linux-distributies kun je gebruiken met Vanilla OS.

Na het lezen van dit artikel weet je hoe Vanilla OS werkt en wat deze Linux-distributie voor jou kan betekenen: • Installeer Vanilla OS en maak gebruik van de versleutelde installatie • Configureer de GNOME-desktopomgeving en pas het systeem aan jouw voorkeuren aan • Houd je systeem up-to-date met automatische updates • Installeer software via Flatpak, de ingebouwde appwinkel, of gebruik traditionele Linux-pakketten via de geïsoleerde Vanilla System Operator (VSO) • Creëer subsystemen met Apx om software van andere Linux-distributies te draaien Ook interessant: Weg met Windows! Probeer deze Linux-alternatieven: EndeavourOS of Manjaro

Bij klassieke Linux-distributies zoals Ubuntu, openSUSE en Fedora komen zowel de componenten van het besturingssysteem als de extra software die je installeert uit één bron. De ontwikkelaars zorgen ervoor dat dit allemaal samenwerkt, maar toch treden er soms problemen op, met een instabiel systeem of niet-werkende software als gevolg.

Een andere aanpak zijn de zogenoemde ‘immutable’ (ofwel onveranderlijke) besturingssystemen. Hierbij kun je zelf niets veranderen aan de basiscomponenten van het besturingssysteem, dat automatische updates krijgt. Extra software installeer je geïsoleerd van het besturingssysteem, wat beter is voor de stabiliteit. Vanilla OS is zo’n immutable Linux-distributie en richt zich op toegankelijkheid voor iedereen.

1 Vanilla OS installeren

De nieuwste versie, Vanilla OS 2, vraagt minstens 4 GB geheugen en 32 GB opslagruimte op een 64bit-computer met UEFI-ondersteuning. Download het iso-image van de distributie en schrijf het met een programma zoals Win32 Disk Imager naar een usb-stick. Start je computer dan op vanaf de usb-stick.

In het welkomstscherm kies je voor Install. Selecteer vervolgens je taal (Nederlands staat ertussen), toetsenbordindeling en tijdzone. Selecteer dan de schijf waarop je Vanilla OS wilt installeren en klik op Use Entire Disk.

Vanilla OS stelt standaard voor om je volledige harde schijf te versleutelen. Kies een wachtwoord voor deze versleuteling. Bevestig daarna je instellingen. Na de installatie herstart je de computer en verwijder je de usb-stick. Vanilla OS start dan op en toont je een bootmenu met twee opties: Current State (A) en Previous State (B). Hiermee kun je na een mislukte update altijd terugkeren naar de vorige toestand. Vervolgens voer je het wachtwoord in om de schijf te ontsleutelen.

Stel een wachtwoord in voor de schijfencryptie.

2 Initiële configuratie

Na de eerste opstart van Vanilla OS krijg je de configuratiewizard te zien. Daarin kies je opnieuw je taal, toetsenbordindeling en tijdzone en daarna een kleurschema (licht of donker). In de volgende stappen maak je een gebruikersaccount, geef je de computer een naam en kies je welke toepassingen je wilt installeren. Bij elke categorie toepassingen kun je na een klik op het pijltje individueel aanvinken welke toepassingen je wenst. In de Common Utilities vind je zelfs toepassingen om games te spelen en Windows-software te draaien via Wine. Dat is een indicatie van de focus van Vanilla OS op het kunnen draaien van zo veel mogelijk software. Ook voor de browsers heb je heel wat keuze. Herstart daarna je computer.

Na de herstart en het invoeren van het wachtwoord voor de schijfencryptie kom je in het aanmeldvenster waar je met de ingestelde gebruikersnaam inlogt. Kies en bevestig daarna een wachtwoord voor de gebruiker. Nadat je bent aangemeld, moet je het wachtwoord nog eens invoeren om de installatiewizard toestemming te geven om toepassingen te installeren. De toepassingen die je voor de herstart hebt geselecteerd, worden nu als Flatpak-pakketten geïnstalleerd. Deze zijn volledig geïsoleerd van de basis van je besturingssysteem. De installatie kan even duren.

Vanilla OS biedt een uitgebreide selectie van browsers aan.

3 Automatische systeemupdates

Daarna biedt Vanilla OS je een overzicht van de mogelijkheden, met knoppen om bijvoorbeeld systeemupdates te configureren, via de appwinkel extra toepassingen te installeren, de instellingen van de gebruikte desktopomgeving GNOME aan te passen, en om online accounts voor e-mail en kalenders toe te voegen.

Als je op Configure Updates klikt, stel je de frequentie in waarmee Vanilla OS op systeemupdates controleert en die downloadt. Standaard gebeurt dit wekelijks, maar je kunt dit ook op dagelijks of maandelijks instellen. Met de optie Slimme updates, die standaard is ingeschakeld, zal Vanilla OS geen updates downloaden terwijl je computer actief is. Zo voorkom je dat de downloads je netwerkverbinding vertragen terwijl je aan het gamen of videobellen bent.

Systeemupdates gebeuren automatisch op een ingestelde frequentie.

4 GNOME-desktopomgeving

Vanilla OS gebruikt het klassieke GNOME als desktopomgeving. Als je al eens met Ubuntu, Fedora, openSUSE of een andere Linux-distributie hebt gewerkt die GNOME gebruikt, zul je snel met Vanilla OS kunnen werken. Rechts bovenaan vind je de systeemstatusicoontjes. Klik hierop om bijvoorbeeld meer informatie te krijgen over je netwerkverbinding, batterijlevensduur, energiemodus en audiovolume. In het kader dat verschijnt, staan ook icoontjes om rechtstreeks naar de systeeminstellingen te gaan, je scherm te vergrendelen, of om de computer uit te schakelen of te herstarten.

In het midden bovenaan zie je de datum en tijd. Klik je daarop, dan krijg je een kalender te zien en een lijst met recente notificaties. Het icoontje helemaal links bovenaan is de activiteitenknop. Wanneer je hierop klikt (of de Super- of Windows-knop op je toetsenbord indrukt), verschijnt het activiteitenoverzicht. Je krijgt dan alle open vensters te zien, een zoekveld bovenaan om naar toepassingen te zoeken en een balk met icoontjes onderaan met toepassingen, waaronder het icoontje met de negen bolletjes dat alle toepassingen toont. Helemaal rechts zie je ook een gedeelte van een nieuwe desktop, waarmee je een nieuwe werkruimte opent als je niet al je vensters op dezelfde desktop wilt hebben.

Vanilla OS is gebaseerd op de gebruiksvriendelijke desktopomgeving GNOME.

5 Software installeren

De aanbevolen manier om software te installeren in Vanilla OS is met het programma Software. Hiermee zoek je naar applicaties in Flathub, een appwinkel voor distributieonafhankelijke Linux-applicaties. Je kunt in een aantal categorieën een selectie van software bekijken of onmiddellijk met de zoekknop linksboven de naam van een toepassing intypen. Voor elke toepassing krijg je een beschrijving, een schermafbeelding, versiegeschiedenis, beoordelingen en een link naar de projectwebsite te zien. Flathub biedt overigens niet alleen opensource-software aan, maar ook propriëtaire software zoals Spotify en Steam.

Software die je op deze manier installeert, wordt standaard automatisch van updates voorzien. Wil je dat niet, klik dan op het menu van Software rechts bovenaan, kies Voorkeuren en kies bij Software-updates voor Handmatig in plaats van Automatisch. Automatische updates worden sowieso gepauzeerd in energiebesparingsmodus. Je kunt in Software ook de geïnstalleerde pakketten bekijken en verwijderen.

Met de toepassing Software installeer je duizenden toepassingen van Flathub.

6 Zonder Flatpak

Dankzij Flatpak zijn de toepassingen volledig gescheiden van het besturingssysteem en kun je dus niet per ongeluk je systeem om zeep helpen. Maar niet alle software is in een Flatpak-versie beschikbaar. Bovendien laat Vanilla OS ook niet toe om de systeemconfiguratie aan te passen buiten de mogelijkheden van de systeemapplicaties om. Je kunt dus niet zomaar als root-gebruiker inloggen zoals in een traditionele Linux-distributie, een willekeurig pakket installeren en de nodige systeembestanden aanpassen.

Om toch extra software te kunnen installeren, heeft Vanilla OS de Vanilla System Operator (VSO) ingebouwd. Dit is een geïsoleerd minibesturingssysteem dat in een container draait, waarin je wel zelf software zonder Flatpak kunt installeren. Er is zelfs een gebruiksvriendelijke interface rond gebouwd. Download je bijvoorbeeld een .deb-pakket, dat je traditioneel in Ubuntu of Debian zou kunnen installeren, dan hoef je alleen maar op het gedownloade bestand te dubbelklikken in het programma Bestanden om het in VSO te installeren met de hulp van het programma Sideloaden. Daarna is het beschikbaar tussen je geïnstalleerde toepassingen. Je ziet geen verschil met de Flatpak-toepassingen, maar onderhuids draait de toepassing in een container die van het besturingssysteem is geïsoleerd.

Vanilla OS installeert deb-bestanden in een geïsoleerde container.

7 Systeemterminal

Als je het standaard terminalprogramma van Vanilla OS opent, Black Box, dan open je geen shell in Vanilla OS zelf, maar in de container van Vanilla System Operator. Ook hier kun je extra software installeren met Debians pakketbeheerder apt, bijvoorbeeld terminalprogramma’s die je graag gebruikt. Dit alles kan zonder enige impact op de stabiliteit van het basisbesturingssysteem. De container is bovendien geïntegreerd met jouw persoonlijke map, zodat de erin geïnstalleerde software gewoon toegang heeft tot jouw bestanden.

We hadden bijvoorbeeld de terminal nodig toen we het .deb-bestand van de AI-software Jan met Sideloaden hadden geïnstalleerd en er na een klik op het icoontje van het programma niets gebeurde. We openden Black Box, voerden de opdracht jan uit en zagen een foutmelding over een ontbrekende bibliotheek libasound2.so. Blijkbaar gaf het .deb-bestand dit niet als afhankelijkheid aan. We installeerden de bibliotheek in de terminal met deze opdracht, waarna Jan wel opstartte:

sudo apt install libasound2

Overigens kun je vanuit VSO wel toegang krijgen tot een shell van Vanilla OS zelf met de opdracht host-shell. Aangezien het systeem onveranderlijk is, ben je wel beperkt in je mogelijkheden. Maar je kunt wel configuratiebestanden in de map /etc aanpassen en systemd-services beheren met systemctl. Met exit keer je terug naar de VSO-shell.

In Black Box heb je volledige toegang tot een geïsoleerde container.

Android is lastig

Op dezelfde manier dat je .deb-bestanden in een container kunt installeren, ondersteunt Vanilla OS ook Android-apps. De ontwikkelaars waarschuwen wel dat het om een experimentele functie gaat en tijdens onze test kregen we het zelf niet aan de praat. Je moet eerst het Android-subsysteem initialiseren. Typ daarvoor in de VSO-shell in Black Box deze opdracht in:

vso android init

Dit installeert Waydroid, Android in een container. Op het einde zou je in het groen SUCCESS moeten zien. Download daarna het apk-bestand van een Android-app, bijvoorbeeld op de website van F-Droid voor opensource-apps of diverse websites die apk-bestanden aanbieden van apps die op Google Play staan. Daarna zou je in het programma Bestanden op dit apk-bestand moeten kunnen dubbelklikken om het te installeren. Tijdens onze test moesten we eerst rechtsklikken, Openen met… kiezen, het programma Sideloaden kiezen en onderaan Altijd gebruiken voor dit bestandstype inschakelen. Dit toont al dat deze functionaliteit nog niet af is en zelfs na veel zoekwerk konden we hierna nog altijd geen Android-apps openen.

8 Linux-subsystemen

Met de functie Apx gaat Vanilla OS nog verder: hiermee kun je in containers subsystemen aanmaken gebaseerd op diverse Linux-distributies met bijbehorende pakketbeheerders.

Wil je een programma installeren dat in Arch Linux beschikbaar is? Maak dan gewoon een subsysteem aan met Arch Linux als stack en pacman als pakketbeheerder. Apx ondersteunt als stacks Alpine, Arch Linux, Fedora, openSUSE, Ubuntu en Vanilla OS. Als pakketbeheerders heb je zo de keuze uit apk, apt, dnf, pacman en zypper. Open het programma Apx en klik op het plusicoontje links bovenaan om een nieuw subsysteem aan te maken.

Ook voor ontwikkelaars is dit handig. Je installeert dan een geïsoleerde container met je gewenste softwarestack, die anders zou kunnen conflicteren met wat je in je basisbesturingssysteem hebt geïnstalleerd. Geef je subsysteem dus een naam, bijvoorbeeld gecko, kies een stack (het onderliggende besturingssysteem), bijvoorbeeld opensuse, en klik op Aanmaken. Apx toont dan een nieuw subsysteem gebaseerd op openSUSE, met de erbij horende pakketbeheerder zypper. Klik erop en dan op Start subsystem.

Via Apx maak je een subsysteem met een gekozen Linux-distributie.

9 Software in subsysteem installeren

Nu kun je vanuit de VSO-terminalsessie software installeren in het subsysteem. Heet je subsysteem bijvoorbeeld gecko, zoek dan naar de gewenste software, bijvoorbeeld Qucs, in het subsysteem met:

apx gecko search qucs

Krijg je een resultaat te zien (in dit geval het pakket qucs-s), dan installeer je dat met:

apx gecko install qucs-s

De deelopdrachten search, install enzovoort zijn hetzelfde voor alle pakketbeheerders en je kunt in het tabblad met pakketbeheerders in Apx zien welke achterliggende opdrachten er voor elke pakketbeheerder worden aangeroepen.

Na de installatie zie je de melding 1 apps geëxporteerd. Apx maakt de in de container geïnstalleerde toepassing namelijk ook beschikbaar in Vanilla OS zelf. Dat kun je uitproberen door het activiteitenoverzicht te openen en daarna naar Qucs te zoeken. De toepassing staat tussen je andere toepassingen als Qucs-S on gecko. Wanneer je hierop klikt, start Vanilla OS automatisch het subsysteem als dit nog niet is gebeurd en opent het daarin de toepassing. Het programma heeft ook, net zoals het hele subsysteem, toegang tot je bestanden. Je ziet alleen aan de andere stijl van het venster dat het in een container van een andere distributie draait.

Programma’s in een subsysteem start je rechtstreeks in Vanilla OS op.

10 In subsysteem werken

Je kunt ook vanuit de VSO-shell rechtstreeks in een subsysteem een terminalsessie openen met (met de naam van je subsysteem in plaats van gecko):

apx gecko enter

Hierin heb je toegang tot het volledige besturingssysteem dat je in het subsysteem hebt geïnstalleerd. Als je nu pakketten wilt installeren, kan dat wel niet met de apx-opdrachten, maar moet je de pakketbeheerder zelf gebruiken.

In dit subsysteem kun je een volledige ontwikkelomgeving of softwarestack opzetten, bijvoorbeeld om eenvoudig software in verschillende Linux-distributies uit te testen. Met exit verlaat je het subsysteem en keer je terug naar de VSO-shell. Daarin kun je ook met deze opdracht de status van alle geïnstalleerde subsystemen opvragen:

apx subsystems list

Kijk ook eens welke andere deelopdrachten van Apx er beschikbaar zijn door gewoon apx zonder toevoegingen te typen.

Met Vanilla OS draai je eenvoudig meerdere subsystemen van diverse Linux-distributies.

11 Stacks en pakketbeheerders toevoegen

Je bent zelfs niet beperkt tot de stacks en pakketbeheerders die Vanilla OS standaard in Apx aanbiedt. Open je in Apx links de lijst met stacks en klik je dan op het plusicoontje, dan opent het venster om een nieuwe stack aan te maken. Je geeft die een naam naar keuze en bij Basis vul je de url van een Docker-container in. In de lijst met bestaande stacks zie je bijvoorbeeld bij Alpine alpine:latest staan en bij openSUSE registry.opensuse.org/opensuse/tumbleweed:latest. Je kiest ook de pakketbeheerder voor het subsysteem uit de lijst en daaronder kun je zelfs pakketten opgeven die je standaard in de stack wilt installeren.

Op dezelfde manier voeg je een nog niet ondersteunde pakketbeheerder toe, bijvoorbeeld yay als alternatief voor pacman in Arch Linux-gebaseerde subsystemen. Je geeft de pakketbeheerder een naam, schakelt in of die met rootrechten moet draaien (de meeste wel), en vult alle opdrachten in zodat je pakketbeheertaken eenvoudig kunt uitvoeren met apx-opdrachten vanuit de VSO-shell. Het moge duidelijk zijn: welke Linux-software je ook wilt installeren, Vanilla OS biedt er een mogelijkheid voor.

Je kunt ook je eigen pakketbeheerder definiëren in Apx.

▼ Volgende artikel
Consumenten testen: de Philips Heating CX2120/01 compacte keramische verwarming
© Philips
Energie

Consumenten testen: de Philips Heating CX2120/01 compacte keramische verwarming

De Philips Heating CX2120/01 is een compacte en krachtige keramische verwarming. Met zijn snelle opwarming, stille werking en meerdere veiligheidsfuncties is het een ideale keuze voor kleinere ruimtes of als bijverwarming. Maar hoe bevalt dit apparaat in de praktijk? Lees hier wat het Review.nl Testpanel van de Philips Heating CX2120/01 vond.

Partnerbijdrage - in samenwerking met Philips

De Philips Heating CX2120/01 is een draagbare keramische verwarming met een vermogen tot 1500 W. Dit compacte model heeft vijf verwarmingsmodi en meerdere veiligheidsvoorzieningen, zoals een kantelbeveiliging en oververhittingsbescherming. Met een stille werking die minder geluid produceert dan fluisteren, is het apparaat geschikt voor gebruik in studeerkamers, slaapkamers en badkamers. 

De Philips Heating CX2120/01 heeft van de testers een gemiddelde reviewscore van 8,4 gekregen. Vooral de snelle opwarming, het compacte formaat en het strakke design worden geprezen. Hieronder worden de ervaringen van de testers uitgebreid besproken. 

Snel en lekker warm

Veel testers zijn onder de indruk van hoe snel de kachel een ruimte verwarmt. Tester J. zegt: "Het is een fijn product. Hij warmt mijn studeerkamer en badkamer erg snel op." JacquelinevK94 deelt deze ervaring: "Deze heater is binnen no-time warm, echt ideaal!" Ook Maup10 is enthousiast: "Binnen een paar seconden voel je al een aangename warmte, wat echt handig is op koude ochtenden." 

Daarnaast blijkt de kachel krachtig genoeg om zelfs iets grotere ruimtes te verwarmen. Tester B. zegt hierover: "Wat ons echt opviel, was dat het apparaat zelfs in grotere ruimtes merkbaar comfort toevoegt." W. bevestigt: "Onze veranda is wat groter dan 15 vierkante meter, maar deze heater kan ook daar prima ingezet worden om even voor wat bijverwarming te zorgen." 

Compact en makkelijk te verplaatsen 

De meeste testers waarderen het compacte en lichte ontwerp, waardoor de kachel eenvoudig te verplaatsen is. Lvw0604 zegt: "Je neemt hem gemakkelijk mee en binnen enkele minuten zit je comfortabel." JacquelinevK94 is ook tevreden: "De heater is lekker compact en licht, dus je zet hem zo van de ene kamer in de andere kamer." Het compacte formaat is ook handig wanneer je hem niet nodig hebt.  Hondijkje merkt op: "Je kunt dit kacheltje makkelijk opbergen als je hem niet in gebruik hebt."

©Philips

Veel veiligheidsvoorzieningen

De kachel is voorzien van meerdere veiligheidsopties, iets wat testers belangrijk vinden. Tester C. zegt: "Een belangrijk aspect is de aandacht die er is geschonken aan de veiligheid. Er zit een omvalbeveiliging op, oververhitting wordt voorkomen en hij wordt na een bepaalde tijd automatisch uitgeschakeld." Mvdm1973 vindt het heel safe voelen dat er beveiliging op zit in het geval de verwarming zou vallen.

"Ik was wat kritisch en vroeg me af of zo'n klein apparaat wel kon voldoen aan mijn wensen. Moet zeggen, dit is best wel een krachtpatser."

- Tester W.

Overwegend stil, maar soms hoorbaar 

Een groot pluspunt is dat de kachel vrijwel geluidloos werkt. Tester J. zegt: "Zelfs op de hoogste stand hoor je nauwelijks geluid." Maup10 is het hiermee eens: "Het apparaat werkt heel stil, wat perfect is als je het in de slaapkamer of in een thuiskantoor gebruikt."  Maar sommige testers ervaren dat anders. Zo merkt Troost op: "Enige minpunt is dat hij wel wat geluid maakt." 

©Philips

Duidelijke bediening, maar app wordt gemist

De bediening wordt als eenvoudig ervaren. Hondijkje zegt: " De pictogrammen op het kacheltje zijn makkelijk te lezen zodat je precies ziet op welke stand je de kachel ingesteld hebt staan." Wel zien sommige testers ruimte voor verbetering. Maup10 zegt: "Een klein nadeel vond ik dat je de temperatuur niet direct op het apparaat kunt instellen." Mw X. vult aan: "Er is helaas geen temperatuur zichtbaar en hij heeft ook geen app, waardoor ik een aparte thermometer gebruik."  Hoewel de app door meer testers gemist wordt, zegt JacquelinevK94 daarover: "Maar op zich is dat ook niet nodig door de duidelijke knopjes."

©Philips

✅ Pluspunten

  • Snel warm

  • Compact en lichtgewicht

  • Makkelijk te bedienen

  • Veiligheidsvoorzieningen

❌ Minpunten

  • Geen app

  • Energieverbruik bij langere gebruiksduur

Eindoordeel

De Philips Heating CX2120/01 is een efficiënte en compacte keramische verwarming die snel warmte levert en eenvoudig te verplaatsen is. Testers zijn enthousiast over de snelle opwarming, het gebruiksgemak en de stille werking. Ook de veiligheidsvoorzieningen worden gewaardeerd. Ondanks het ontbreken van een app scoort deze compacte keramische verwarming een fraaie 8,4 bij de testers.

Ontdek de Philips Heating CX2120/01 compacte keramische verwarming

Op Kieskeurig.nl