12/6/2026

Lazarus’ nuttig voorbeeld

Filed under: — cybrarian @ 1:42 pm

Zie ook Lazarus op Linux, Lazarus gebruik en Lazarus’ nuttig voorbeeld, Lazarus installeren

Ik zag een voorbeeld over barcodes maken, meer bepaald Quick Response (QR) Codes:
http://lazplanet.gitlab.io/2021/12/generate-qr-codes.html .
Dat lijkt me nuttig als het gekoppeld kan worden aan een database. (Voordien heb ik het voorbeeld van een knop op een Form gemaakt, en .. nog geen andere).
Dit is tevens een voorbeeld van het gebruiken van een (externe) library in Lazarus; hier LazBarcodes.
– waarvan je de code moet afhalen van sourceforge in de vorm van een .zip bestand.
– ze uitpakken en gebruiken in Lazarus.

Dat kan op twee manieren:
– (systemwide) opnemen als een component in de Lazarus toolbar (+Lazarus terug compileren).
– in je project directory opnemen (deze manier had ik eerst geprobeerd, maar leverde me wat probleempjes op – in Lazarus 2.2.6)

1. Opnemen in Lazarus
Deze manier heb ik dat op een andere computer geprobeerd met een recenter systeem (OpenSUSE Tumbleweed) met Lazarus 4.6, met meer succes.
Hiervoor heb ik de uitleg op die site niet gevolg, maar gewoon op gevoel (*) gewerkt: Ik heb bij het menu “Package” gekozen voor “Online Package Manager”. Die gaat open en haalt online een lijst met 217 packages af die beschikbaar zijn. Daartussen (te vinden door een paar letters in de zoekfunctie bovenaan te geven) staat toevallig ook hetgeen ik nodig heb: lazbarcodes (+_runtimeonly) in versie 2.0.4.0.
Aangevinkt, bevestigd met knop “Install”, en beide paketten werden afgehaald en geïnstalleerd (waarbij ook met afhankelijkeheden gecompileerd), waarna aangeboden wordt Lazarus te hercompileren om het er in op te nemen.

Do you want to rebuild Lazarus with profile: Normal IDE?

Er flitsen een paar honderd lijnen output voorbij en Lazarus herstart, en er is een tabblad bijgekomen “Laz Barcodes” met de barcode-toolbuttons.
*) gevoel ook opgebouwd door het geknoei met de andere methode, en met wat ik daarvoor al rondgelezen en geprobeerd had.

Dan kan je de barcode uit de toolbar kiezen en op de form zetten, en de rest van de code toevoegen, “Run” en inderdaad, er wordt een QR code gemaakt op basis van iets wat je in het tekstvak typt.

2. in project opnemen
* maak een nieuw project, bewaar het in een nieuwe directory (bewaar ook de Unit?)
* in die nieuwe directory (staat nu unit1.pas/frm, GenerateQR.lps/lpr/lpi/ico en een backup directory, maak een “libs” directory bij.
Daarin pak je de download uit (wordt bv “lazarus-cc-svn-r10029-components-lazbarcodes”), en je geeft die een eenvoudigere naam, bv lazbarcodes.
Dan zo je nu dus een README.txt file moeten kunnen vinden in iets als /home/myuser/dev/LazarusFps/GenerateQR/libs/README.txt.

In je project:
– Project, Project Options (interessant scherm met o.a. het icoon van het project)
– verder: Compiler options, Paths, Other Unit Files.
Vul daar in (of kies): libs/lazbarcodes/src en “ok”.

Het project, de code

Dan in code view onder “uses”, zet ubarcodes.

Onder var een variabele toevoegen voor de TBarcodeQR component-object:

var

QR: TBarcodeQR;

En in de form komt iets als:

procedure TForm1.FormCreate(Sender: TObject);
begin
  try
    QR := TBarcodeQR.Create(nil);
    with QR do begin
      Parent := Form1;
      Top := 0;
      Left := 0;
      SetBounds(0, 40, 300, 300);
      Text := Memo1.Text;
      Show;
    end;
  finally
  end;
end;

Via dubbelklik op form en
Events – OnDestroy in de object inspector:

procedure TForm1.FormDestroy(Sender: TObject);
begin
  if QR <> nil then QR.Free;
end;

Maak een TMemo op deform en zet tekst in de eigenschap Lines “Type anything here to generate a QR Code…“ en dubbelklik om de code toe te voegen:

procedure TForm1.Edit1Change(Sender: TObject);
begin
  QR.Text := Memo1.Text;
end;

En dan komt het moment (*) van de beloning;
– “Run”, en een venster met QR code op het scherm.
– * of niet. Op een ander toestel met een oudere versie 2.2.6
komt er een foutmelding in een tabblad “ubarcodes” op uses …, zint, udrawers;

ubarcodes.pas(9,3)Fatal:Cannot find zint used by ubarcodes

Zie ook Lazarus op Linux, Lazarus gebruik en Lazarus’ nuttig voorbeeld

Pogingen om het (op deze manier) op te lossen zijn voorlopig niet gelukt. Ik richt me dus op de recentere versie.
(meer…)

27/5/2026

Gitlab van wachtwoord naar personal access token

Filed under: — cybrarian @ 10:07 am

Wachtwoord-toegang afgeschaft
Het gebruik van een gewoon wachtwoord voor git pull, git push enz is eind april afgeschaft door GitLab.
Met als gevolg dat je
– niet meer met je wachtwoord kan inloggen
– een foutmelding krijgt bij je commando’s, bv:

git push
remote: HTTP Basic: Access denied. If a password was provided for Git authentication, the password was incorrect or you're required to use a token instead of a password. If a token was provided, it was either incorrect, expired, or improperly scoped. See https://gitlab.com/help/topics/git/troubleshooting_git.md#error-on-git-fetch-http-basic-access-denied
fatal: Authentication failed for 'https://gitlab.com/mijnproject/mijnproject.git

Je hebt nu een token nodig in plaats van het wachtwoord.

Een token maken
Het token maak je online op de GitLab website, en daar is intussen 2FA verplicht, dus houd je e-mail al in de buurt (tenzij je een andere 2FA methode had ingesteld).
In het webplatform van GitLab inloggen met naam en (nog wel) het wachtwoord, dan verification code uit de mail ingeven.
In je instellingen (rechtsboven onder icoon/avatar) een token bijmaken.
Preferences / access / personal access tokens
Je ziet daar een overzicht van de toestand van je tokens: Active, Expiring, Revoked en Expired tokens.

Kies “generate token” en volg de aanwijzingen op het scherm; je moet alvast invullen:
– token name
– description
– vervaldatum (maximal tot 2027-05-27)
– select scopes (bv write_repository, api)
Bevestig, dan krijg je:

Your new token has been created
Token details

en daaronder een lijn met 62 tekens (hoofd/kleine letters, cijfers en leestekens)

Die moet je kopieren van de site en ergens veilig opslaan; dat is de nieuwe vervanging voor het wachtwoord bij git bewerkingen.

In het overzicht staat nu:

Active tokens
1

Ik kan geen nieuw wachtwoord ingeven
Als ik git commando’s ingeef moet ik het wachtwoord niet ingeven, en ook geen login.
– in de config file zie ik de standaardgegevens voor git gebruik
– git config –list toont ook de standaard gebruiker.

Als je in een “Konsole” terminal in een KDE-omgeving werkt, kan het zijn dat je wachtwoorbeheerder van KDE je wachtwoord bijhield. Daar kan je het wachtwoord veranderen; plak de gegenereerde tekstlijn (token) in de plaats van het wachtwoord.

Het kan zelfs dat daar een andere login staat dan in de .gitconfig file.

Meer tokens
Je kan op toestellen waar je alleen code moet afhalen een ander token gebruiken, waarbij je alleen lees-rechten instelt bij scope van het token, bij het aanmaken.
Daardoor is het wachtwoord van je account niet nodig op die plaats, wat veiliger is.

18/5/2026

Lazarus gebruik [in bewerking]

Filed under: — cybrarian @ 11:35 pm

En een beetje vergelijken met Gambas ook …

Zie ook Lazarus op Linux, Lazarus installeren en Lazarus’ nuttig voorbeeld

Ik begrijp dat bij een Lazarus project onderscheid gemaakt wordt tussen de Lazarus code (voor de GUI) en de Freepascal code: LCL = Lazarus Class Library, FCL = Free Pascal Library)

Ik probeer een paar dingen uit op mijn vers geïnstalleerde Lazarus/fpc (bv generate qr codes)

Het scherm is onderverdeeld en je vindt bovenaan menu’s en knoppenbalken, daaronder de Form (editor), Eigenschappen van objecten: “Object Inspector” met zowel de Properties (eigenschappen) als de Events (gebeurtenissen).

Dit zijn aparte vensters (*) die verplaatst kunnen worden (zo’n beetje als in Gambas1). Dus opgelet als je de IDE op een andere desktop wil zetten: alles meenemen!

(*) naargelang je keuze bij de eerste keer opstarten. Je kan kiezen om alles onder een hoofdvenster te hebben, of aparte “ronddrijvende” vensters.
Bij de “hoofdvenster” keuze staat de object inspector links (met Components en daaronder Properties/Events), en heb je rechts een vlak met tabbladen: Messages, Watches, Search Results, Assembler en Breakpoints.

Door een onbedoelde klik (waarbij ik dus niet zag wat ik deed) ben ik trouwens het tabbblad Watches al kwijt. Ik zoek gevoelsmatig bbij “View” naar het weergeven van Watches, en ik kan het daar inderdaad kiezen, waarna het een apart los venstertje wordt. Links staat de titel in een balk met de tekst kwart gedraaid zodat die van onder naar boven leest en in de richting van de balk zit. Ik merk dat je die balk kan vastnemen en ergens naartoe kan trekken. Waar je hem loslaat komt het “Watches” venster dan vast terecht. Na een paar andere locaties krijg ik het terug in het rijtje van Messages enz, maar dan wel achteraan.

Bestanden:
.lpi Lazarus Project Information (xml) met info over libraries, units..
.lpr master source file met pascal code.
.lfm lazarus form (met gegevens zoals gemaakt in Object inspector)
.lrs gegenereerde resource file.
.pas de code van bv een form
ppas.bat wordt vermeld als tijdelijk bestand (script), gemaakt (en terug verwijderd) door de compiler
– De “executable” heeft geen uitgang en wordt gewoon in de projectdirectory gemaakt (maar je kan dat instellen).

De IDE maakt automatisch een Unit1 aan, dat is een broncodebestand dat bij je form Form1 hoort, en de code van die form krijgt (bv dubbelklik op form brengt je in de broncode van Unit1.
Als je bepaalde berekeningen andere code apart wil houden kan je die in een andere Unit steken. Je moet wel aangeven dat die gebruikt moet worden door de naam in te vullen in “Uses …” in de code.

Dankzij de “Package manager” kan je extra functionaliteit installeren in Lazarus (zie vb QR-codes).

Wat ik fijn vind aan Lazarus / (free)pascal
– de duidelijke toewijzing door := in plaats van de = die ook in een test gebruikt wordt
– bij het plaatsen van een element op een form geeft die een blauw uitlijn-lijntje aan zodat je gemakkelijk de elementen mooi onder/naast elkaar kan zetten.
– De tooltip help bij de code schuift duidelijk op in de lijst van parameters, zodat je goed ziet aan welke parameter je bent, door zwarte achtergrond, witte tekst en bold wit voor huidige. (in Gambas is het onderlijd geloof ik).
– De “case” structuur is heerlijk eenvoudig:

case x of 
  'a', 'b', 'c'
else
  WriteLn ('not in abc')
end;

(In gambas zit er een “select” voor)
IDE: je kan een onderdeel van het scherm dat een bepaalde functie heeft in zijn linkse, verticale titel-balk vastpakken en het daarmee helemaal ergens anders naartoe slepen. Het tabblad Watches kan ook een gebied over de hele breedte worden net boven de tabbladen, enz

Waar ik aan moet wennen
– De “begin” lijn in methodes/procedures vind ik nu (na Gambas) een beetje overbodig, maar wel een typische Pascal eigenschap.
– aanhalingstekens worden niet aanvaard, dus niet “letterlijk” maar ‘letterlijk’.
– elke code-lijn moet eindigen met een ; (ipv niets in gambas, wat soms minder duidelijk leest als de instructie over meer lijnen loopt)
– je moet in de broncode opgeven welke libraries gebruikt (met uses SysUtil, db,..) tov Gambas waar je dat in de IDE opgeeft bij het project.
– gedefinieerde variabele is niet onmiddellijk in tooltip hulp beschikbaar (lijkt me).
– try / finally / end; (geen ; na finally) de finally wordt ook uitgevoerd ingeval van een fout in het try gedeelte van de code. Finally wordt ook uitgevoerd bij normaal verloop (geen fout) en zelfs bij een exit tussen de try en finally code.
(Gambas: Try / If Error.. maar Finally bestaat ook als altijd uit te voeren en Catch als uit te voeren bij fout).

Wat ik raar vind

* Lazarus: kopie van project
– iets heel eenvoudigs als een project van naam veranderen/bewaren met een andere naam is omslachtig in Lazarus.
In Gambas geef je gewoon de projectmap een andere naam, en klaar. Of save as en bewaar het met de nieuwe naam.
Bv: mijn “TweedeLazarus” project wil ik omnoemen naar “MijnQRcode”. Ik vindt een paar beschrijvingen, de ene zegt Project, save as .. , maar dan moet je zelf in dat project nog allerlei namen gaan veranderen. De andere beschrijving zegt om File, Save as te gebruiken, maar ook dan moet je manueel allerlei andere dingen ook hernoemen.

Ik probeer 3 manieren uit:

1) ik kopieer de map van het project “TweedeLazarus” naar “MijnQRcode1”.
– in de map zitten dan een aantal bestanden met de vroegere naam: TweedeLazarus (de executable, die wil ik hier al helemaal niet). Het programma compileert en werkt, dus die namen spelen toch niet zo’n rol; behalve misschien in onderlinge referenties.
In Gambas hebben die generieke namen, bv Main (main module), FMain (main Form), … zodat die altijd “juist” blijven. De context is toch altijd de project map waar ze in zitten, en die heeft de project name. Het enige wat je moet veranderen is de project description naargelang wat je daar gezet hebt.
2) Ik probeer Project, Save As .. maar dan geeft Lazarus aan een .lpi bestand te gaan bewaren, niet een nieuwe projectmap te maken. Als ik dan op die plaats maar zelf Create New Folder doe, en daarin bewaar, komen daar: MijnQRcode2.res, MijnQRcode2.lps, MijnQRcode2.lpr, MijnQRcode2.lpi, MijnQRcode2.ico. Vergelijk met originele map, die heeft nog een map “backup” en “lib”, unit1.pas, unit1.frm, die komen dus niet “mee”.
(Als ik geen nieuwe map had aangemaakt maar in de bestaande had bewaard, was het dicht bij een rename geweest denk ik..

3) (todo): File, Save As .. staat klaar om unit.pas te bewaren, in de eigen projectmap, wat waarschijnlijk alleen zin heeft als je een unit2 wil maken waarin je veel van unit1 wil overnemen. Ik neem aan dat ik hier ook naar die andere directory kan gaan waar ik voorheen voor mijn project Save as gedaan heb..Als ik een project
Ik krijg de vraag "The new unit is not yet in the unit search path. Add directory /home/myuser/dev/LazarusFPs/MijnQRcode3/ ?"
Als ik bevestig is de volgende vraag:”The unit Unit1 is used by other files. Update references automatically?” en dan de uitgebreide keuze: “No to all”, “Yes to all”, “No”, “Yes”. Moeilijk als je niet begrijpt wat die vraag betekent… Ik kies No to all omdat ik geen risico wil lopen met mijn origineel project waarvan ik begonnen ben. Nadien bevat MijnQRcode3: mapje backup, unit1.frm, unit1.pas

Conclusie: Als ik een kopie van een project wil dan
– kopieer ik de hele project map vanuit bestandbeheer naar een andere naam. Als je “run” kiest zie je in het lopende programma geen verschil (Form heet gewoon Form1), maar de naam van het gecompileerde bestand is de oude naam, maar je kan die dan hernoemen nadien.
– Dus misschien handiger: Project, Save As, en dan aanvullen met de ontbrekende bestanden, misschien met File, Save As..

* FreePascal:
Hoewel pascal een van de eerste programmeertalen was die ik leerde, vind ik sommige dingen ondertussen een beetje eigenaardig…
– de if ... then (else) voelt inconsequent door ontbrekend einde, of tenminste zonder “end” of “endif”, maar eindigt wel met een ;
– de end. op het einde lijkt me overbodig, de vanzelfsprekende eof is ook wel goed.. (zoals bij Gambas).

Zie ook Lazarus op Linux, Lazarus gebruik en Lazarus’ nuttig voorbeeld

Lazarus op Linux

Filed under: — cybrarian @ 2:29 pm

Programmeren voor de Linux desktop (of CLI) met tools onder GPL vrije-software-licenties kan op veel manieren; een universeel/platformoverschrijdende is de combinatie Free Pascal + Lazarus, (de gemakkelijkste is waarschijnlijk Gambas).
– Free Pascal is de programmeertaal (afgekort: fpc).
– Lazarus is de programmeeromgeving (IDE, trouwens zelf geschreven in fpc)
Zie ook Lazarus gebruik, Lazarus’ nuttig voorbeeld, en Lazarus installeren

Geschiedenis
– pascal was een veelgebruikte programmeertaal in het onderwijs ten tijde van de tekst-schermen.
– er waren pogingen om een vrije visuele programmeeromgeving te maken die Pascal gebruikte, zoals het Megido project dat rond 1998 verder wilde bouwen op de SpeedSoft Sibyl IDE en Free Pascal, en die gecombineerd en als OS/FS naar Linux wou brengen. Wat uiteindelijk niet gerealiseerd werd en het project viel uiteen in 1999.
– de behoefte aan een visuele programmeertaal voor Linux werd in 1999 ingevuld door de eerste versie van Gambas, dat in plaats van Pascal een basic-achtige taal gebruikte, en waarvan de IDE ook gewoon Gambas heette (en die ook in Gambas geschreven is).
– Ongeveer op dat moment werd het Lazarus project gestart, dat de ambitie had om een “Delphi voor Linux” te maken, de visuele componenten kregen vorm in 2001, en de eerste beta-versie van Lazarus verscheen in 2003.
– Vgl: In 2005 was Gambas aan versie 1.0.
– Vgl: In 2008 verscheen Gambas2, een volledig herwerkte versie die overschakelde van vlottende vensters naar een inclusief venster, en een volledig vernieuwde vorm had, maar het was ook duidelijk dat Gambas niet de ambitie had om cross-platform te worden.
– in 2012 kwam van Lazarus de offiële versie 1.0 uit.
– Momenteel is 4.6 de laatste versie, uitgekomen in februari 2026.
– Versies op openSUSE -Leap 15.6: Lazarus 3.2 (*) met FPC 3.2.2; -Leap 16.0: Lazarus 3.6 (*) met FPC 3.2.2 maar conflict busybox, -Tumbleweed: Lazarus 4.8;
* (maar ook recentere via repo’s)

Lazarus
– de gegevens over een Lazarus project wordt bewaard in een “.lpi” bestand.
– het bevat bestandsverwijzingen, compiler instellingen, enz.
– een project bewaren biedt aan “unit1.pas” te bewaren in de gekozen map.
– het project heet standaard waarschijnlijk “Project1”, en je zal dan allerlei bestanden terugvinden met die naam; Project1.lpi, Project1.lpr, Project1.lps, Project1.res, Project1.ico, Unit1.lfm, Unit1.pas, en er is ook een Backup map aangemaakt.
– als je daarna bv op die Unit1.pas klikt, gaat je project terug open in Lazarus.
www.lazarus-ide.org
– code-voorbeelden: https://www.streetinfo.lu/computing/lazarus/lazarus_gui.html
– Basis uitleg: Hello World en meer op wiki.freepascal.org

Installatie op Suse, Debian.. zie Lazarus installeren

Ik heb er verder geen project mee gemaakt, maar de IDE voelt aangenaam, maarr ook wel uitgebreider dan Gambas.
Volgende stap bv: https://wiki.freepascal.org/Lazarus_Tutorial

Zie ook Lazarus gebruik en Lazarus’ nuttig voorbeeld

22/4/2026

mariadb en utf8 foutmelding

Filed under: — cybrarian @ 11:25 am

Op een computer die wat geschiedenis heeft(*) kreeg ik een probleem met een applicatie die een databaseverbinding maakt.

Foutmelding: iets met niet gevonden utf8 in /usr/share/mariadb/charsets/Index.xml

In dat bestand staan een aantal charsets, waaronder utf8mb3.

Om het aan te passen ga ik als root tewerk.

Ik zet bij het stuk van utf8mb3 een extra alias: utf8 (maar met de xml tags dan; er staat al een alias utf-8 trouwens).
Uitgelogd, terug ingelogd, applicatie geprobeerd: werkt niet.

Ik kopieer het deel van utf8mb3, en wijzig de titel naar utf8. Bewaar.

Daarna werkt het.


(*) geschiedenis: OpenSUSE Leap 15.4 geupdate van vorige openSUSE versies.

30/3/2026

shell script invoer hulp

Filed under: — cybrarian @ 2:12 pm

Ik heb een script dat software afhaalt als broncode en compileert tot werkend programma:

./InstallFromNextcloud.sh

Als parameter geef ik de naam van de software in, en het versienummer dat ik wil installeren.

Weet ik dat niet, en laat ik de versie weg, dan toont het script alle versies die beschikbaar zijn.

Als geen parameter is gegeven, bv omdat ik de naam niet van buiten weet, krijg ik alle mogelijkheden te zien:

...
if [ -z "$1" ]
then
  echo "No application name to install. Available in releasedir... "
  echo $releasedir
  ls -lFAh $releasedir
  ...

Maar soms is die lijst te lang, ik wil de eerste letters kunnen geven. Ik pas mijn script aan: als er maar een paar letters zijn ingegeven (hier bv max 3), wordt verondersteld dat dat niet de naam van de af te halen software is, maar enkel de eerste letters, en wordt alles getoond dat daarmee begint.

...
size=${#1}
echo "$size"
echo "Script to install gambas3 app ($1) with version ($2) in $targetdir .." 
cd $targetdir/gb3prj
if (($size < 4))
then
  echo "smaller than 4"
  ls -lFAh $releasedir/$1*
  echo "please enter complete name for ($1)"
  exit 0
fi
...

Dan stopt het script hier; met pijltje naar boven kan ik het vorig commando ophalen en aanvullen met wat ik ondertussen gelezen heb.

4/12/2025

Arduino App Lab op Uno Q

Filed under: — cybrarian @ 3:04 pm

Arduino App Lab
(kort ik verder af als AAL)

Het artikel over de nieuwe Arduino Uno Q verwees naar: Dan start de Arduino App Lab - 0.2.4 .... Hier gaan we verder …

Er staan op het scherm een heleboel applicaties die extra hardware nodig hebben, een micro, camera, enz, maar ook een eenvoudige “blink led”

Als je die kiest, en je drukt op Start, begint de IDE allerlei dingen te downloaden, extracten, … En het resultaat is dat er een rode led begint te pinken op het bord: led 3 (de leds zijn genummerd van 1 tot 4 en de blauwe op 2 was aan als aan/uit led leek het (de usb C heeft ook nog een groen led naast de aansluiting aan de overkant van het bord).

In het midden van het scherm bovenaan Editor/console knop.
In Editor staat de hele tekst met uitleg over de app en de code, console geeft de output van het downloaden en uitpakken.

Er is rechtsboven op het scherm nu een “stop” knop zichtbaar, en een “Copy and edit app” knop. Welke denk je dat we kiezen? Copy en edit..

Create new app (naam) : “Copy of Blink LED” staat klaar. Goede naam.

Dan kan je de code aanpassen in Editor met “write” (preview toont de code in een vorm om te lezen, dwz de commentaren normaal en de code gekleurd.

Ik verander de waarde van de time.sleep van 1 naar 5. Er is geen “Save” dus ik doe maar onmiddellijk “run”.
Ik krijg een waarschuwing (omdat de vorige nog liep), en dan begint het werk weer, dat leidt tot “Running”…

Ik merk geen verschil. Ik blijk de Readme file veranderd te hebben, dus ik kijk even verder rond in de IDE en vind onder Files, Python “main.py”. Daar verander ik nu de code, en run… Nu gaat die inderdaad trager.

Een andere voorbeeldapp die geen extra hardware nodig heeft is de weer-app; die haalt data af van online en geeft zijn interpretatie weer via het scherm van de LED-matrix: “Weather forecast”.

Ik vraag me af of het pulserend hart terug start als ik herstart; herstarten gaat vrij snel trouwens. Ik moet het login wachtwoord geven dat ik laatst aanmaakte (min. 8 tekens). De pulserende hartslag is er niet meer *. Dat komt misschien omdat alleen de laatste sketch bewaard wordt in de arduino? Dat zou dan de trager blinking led moeten zijn, maar die lijkt ook niet vanzelf te “runnen”.
(* ps: terug te vinden op https://github.com/arduino/ArduinoCore-renesas/blob/main/libraries/Arduino_LED_Matrix/examples/MatrixIntro/MatrixIntro.ino)

Arduino App Lab Learn
Links beneden een “Learn” knop, die toegang geeft tot korte inleidingen.
– goede uitleg over de arduino Uno Q.
– goede uitleg over arduino lab, hoe te installeren op verschillende manieren
– wat is een app
– wat is een brick
– AI modellen
– hoe werken de ingebouwde voorbeelden
– Q als SBC met uitbreiding op usb-C
– Q in netwerk mode (via wifi/ssh)

Wat ik mis is hoe ik bv extra voorbeelden kan afhalen. Zo bestaat de begin-animatie als project op github onder de naam “MatrixIntro”. Ik zou verwachten dat je ergens meer voorbeelden kan downloaden rechtstreeks vanuit App Lab.
Je kan in de App Lab ook nergens rechtsklikken om meer opties te bereiken, er zijn geen mouseover tooltips, er is zefls geen menu, dus geen File, Open of Help, About.
(en ja, dat is misschien de betekenins van 0.x.x)

Arduino App Lab update naar 0.7.0
Terwijl ik dit allemaal aan het doen ben, komt er een update binnen voor Arduino Lab, met melding 0.7.0 .. dat klinkt goed…of nee, het is de CLI die een update krijgt, niet de desktop applicatie, die blijft 0.2.4.

Wijzigen van een voorbeeldapp

De weather forecast app gaf “regen” terwijl buiten de mist optrok en de zon begon te schijnen. In de weather app staat in de code de stad op “Turijn”, en die moet je dus aanpassen. Dat kan niet in de voorbeeldapp zelf, die is read-only.
Maar ik had eerst al een probleem met het afsluiten van de draaiende app (die had meer dan een dag gedraaid), en sloot dan maar de hele app lab omgeving. Terug open in de weather app, copy and edit als “Weather forecast Belgium on LED matrix”.
Ik vraag me af hoe de steden geschreven zijn, of je bv “Brussel”, of het Engelse “Brussels” moet gebruiken.
Ik vind code op
gtihub.com/arduino/app-bricks-py/tree/main/src/arduino/app_bricks/weather_forecast
maar ik vind niet onmiddellijk de beschikbare steden.

Ik probeer dan maar met een willekeurige Belgische stad, dat lijkt te werken, maar geeft weer regen, dus vraag me af of het inderdaad iets veranderd heeft.
Als je de code aanpast door bv eerst een animatie op het schermpje te zetten bij opstart, en dan een “clear” te doen telkens je gegevens ververst, wordt het duidelijker. Tijdens het draaien kan je ook naar de Console, Python gaan kijken, daar zie je feedback, bv als je een niet gevonden plaatsnaam hebt gebruikt.

Upd:
De volgende keer dat ik de Arduino Q opstart, dwingt AAL me weer tot een update, en daarna heeft hij versienummer 0.3.0.
Eigenaardig of vervelend genoeg gaat die terug helemaal door de installatieprocedure, met bord instellingen (toetsenbord etc), netwerk, en login, wachtwoord gegevens.
Plots moet het wachtwoord ook langer zijn heb ik de indruk, vorige keer was 6 tekens nog goed, nu moet ik er 8 geven. Ergens moest er ook een naam gekozen worden voor het bord, en er wordt standaard iets klaargezet (malia).
Ik weet niet of er iets is fout gegaan met de update, maar de apps die de web browser gebruiken werken niet meer. Ik kan de web browser ook niet uit het Application menu opstarten (buiten de AAL), dus daar lijkt iets fout mee te zijn.

Failed to execute default Web Browser.
Input/output error.

Ik probeer via synaptic package manager (waar hij wel geïnstalleerd staat aangegeven) die te upgraden. Dat helpt niet.

Via de terminal opstarten: chromium

The profile appears to be in use by another Chromium process on another computer (uno-q). Chromium has locked the profile so that it doesn’t get corrupted. If you are sure no other processes are using this profile, you can unlock the profile and relaunch Chromium.

Er staat niet bij “hoe” je het profiel kan vrijmaken.

Op basis van sommige posts als deze
1) https://bbs.archlinux.org/viewtopic.php?id=294107
waarin verwezen wordt naar de oorzaak beschreven in deze
2) https://wiki.archlinux.org/title/Network_configuration#Set_the_hostname
besluit ik dat de oorzaak het wisselen van de naam is geweest, na die update, naar “malia”, en in de foutmelding wordt gewag gemaakt van de naam “uno-q”.
Dus ik wijzig de hostname naar uno-q om het probleem op te lossen zonder manueel bestanden te moeten gaan verwijderen (zoals beschreven in 1).

sudo hostname uno-q

Dat werkt. Ik kan chromium terug starten, en werkt het in “Blink LED with UI” voorbeeld ook terug.

14/9/2025

Python jupyter notbook of notebook?

Filed under: — cybrarian @ 8:22 pm

Notbook

Ik heb een aantal bestanden van een cursus die eindigen op .ipynb, bv oefening1.ipynb, oplossing1.ipynb..
Die komen uit een ipython notebook of jupyter notebook, die op de cursus in een remote sessie van een Windows machine op een Azure server zat.
Ik ben dus niets met het cursusmateriaal..
… tenzij ik aan configuratie geraak om zelf die jupyter te draaien.

Ik probeer dat te installeren in opensuse tumbleweed (waarop ik al wat python 3.13 geïnstalleerd had):

jupyter-notebook (en een hoop bijhorende bestanden).

Jupyter gestart: start soort omgeving; er komt eerst een foutmelding:

java.lang.InternalError: Unable to load native GTK libraries

en

Server Connection Error
A connection to the jupyter server could noet be established. JupyterLab will continue trying to reconnect. Check your network connection or Jupyter server configuration.

(ik heb het herhalen van de foutmelding afgevinkt)

Op de achtergrond krijg ik nu de werkomgeving van Jupyter; vooraan een venster met een foutmelding:
Van daaruit kan ik echter geen bestaande projecten openen op dit moment, de bestandsbeheerder geeft mijn homedir weer, maar ik kan bv niet de map “dev” ingaan.

Waarschijnlijk is er een manier om de werkdirectory in te stellen en een fatsoenlijk programma zou dat vriendelijk vragen bij de eerste start. Ik heb een paar keer rondgekeken of ik die mogelijkheid vond, maar besliste toen eerst iets anders te proberen: de omgekeerde weg.

Notebook
Ik kopieer de ipynb bestanden naar mijn laptop in het mapje dev/python/jupyternb, en klik in Dolphin op zo’n ipynb bestand.
Er gebeurt vanalles, en plots zit ik in die oefening. Het blijkt een Firefoxvenster te zijn met de url “http://localhost:8888/notebooks/oefening1.ipynb

Nice 🙂

11/9/2025

Python

Filed under: — cybrarian @ 8:48 pm

Python 3.13

Geïnstalleerd op openSUSE Tumbleweed:

python 313… 3.13.7.1

numpy 313

scipy python313-scipy

mathplotlib python313-matplotlib

pandas python313-pandas-plot

tensorflow python313-transformers

Editor

Idle3: python313-idle – An Integrated Development Environment for Python
– Version: 3.13.7-1.1
– komt in development menu als IDLE3
– afkorting van: Python’s Integrated Development and Learning Environment (zie https://docs.python.org/3/library/idle.html)

Todo: Pyzo
– python313-pyzo – Python IDE for scientific computing
– Version: 4.11.2-2.1
– komt niet in menu?
– via zypper install pyzo komt die wel in menu, maar programma klapt onmiddellijk toe na opstartscherm.

Todo: Thonny (beschikbaar Version: 4.1.7-1.2)
– veel Raspberry Pi voorbeelden zijn daarin gemaakt

Geprobeerd: editor/IDE pycharm-community uit MaxxedSUSE

Geprobeerd: Jupyter, zie (Python jupyter notbook of notebook?)

Pyzo foutmelding: … (meer…)

14/8/2025

Git show

Filed under: — cybrarian @ 11:03 pm

Ik zoek wanneer een bepaald stuk code ingevoerd is.

Met git log krijg ik de nummers van de commits.

Met git show (commit nummer) kan ik kijken wat daarin gebeurd is (+ -)

8/3/2025

Git: Wanneer is bestand veranderd

Filed under: — cybrarian @ 10:07 pm

Wanneer is een bepaald bestand in mijn project veranderd?

Ik wil weten wanneer ik de laatste keer het bestand Libraries.txt heb aangepast, omdat ik het niet terugvind in Changes.txt (log van versienummers en veranderingen). Ik ben nu aan versie 0.6.9.

git log -p Libraries.txt

Bovenste deel van het antwoord:

commit 3acf9773661770233e444600....
Author: cybrarian
Date: Fri Feb 21 00:49:20 2025 +0100
'
0.6.2 gridinfo 3j columns
'
diff --git a/Libraries.txt b/Libraries.txt
index e353c0e..e8a4df3 100644
--- a/Libraries.txt
+++ b/Libraries.txt
@@ -1 +1 @@
-myprojectlib 0.6.4
+myprojectlib 0.6.6
.
commit a45dd20dd2bd279017....
Author: cybrarian

Date: Thu Feb 13 19:47:52 2025 +0100
...
...

Het antwoord: bij versie 0.6.2 is de inhoud gewijzigd van 0.6.4 naar 0.6.6.

9/1/2025

git rm (Git remove) ongedaan maken

Filed under: — cybrarian @ 5:08 pm

git checkout HEAD -- naamvanbestand

12/12/2024

Plaats voor data en de vuilbak (Trashcan)

Filed under: — cybrarian @ 10:17 pm

De gegevens van een programma

De $XDG_DATA_HOME base directory bepaalt de “data” directory voor applicaties.
Terugvalwaarde is $HOME/.local/share

Vuilbakstandaard

Volgens de freedesktop specificaties zit het zo:
-locatie van de “hoofd” vuilbak is vastgelegd in systeemvariabele :
$XDG_DATA_HOME/Trash

Als die (XDG_DATA_HOME) niet gedefinieerd is, is de standaardwaarde voorzien:

~/.local/share/Trash/files

Bij het maken van een desktopgebruiker, maakt het systeem een trash directory volgens de waarde in $XDG_DATA_HOME/Trash of op de standaarlocatie.

10/12/2024

Git diff uitvoer op het scherm houden

Filed under: — cybrarian @ 9:50 am

Als ik op mijn huidige systeem git diff doe, wordt het antwoord getoond in een soort tekstverwerker waarin ik handig kan scrollen, zoeken enz, en die ik verlaat met “q”.
Maar helaas, als ik daarna een andere aktie wil doen, bv een commit waarin ik als commentaar iets schrijf wat ik uit die diff haal, zie ik die niet meer.

Ik wil dus de uitvoer van diff op het scherm houden, bv voor het bestand Changes.txt:

git --no-pager diff Changes.txt

Even gemakkelijk kan je dan de text ook omleiden naar een bestand:

git --no-pager diff Changes.txt > ~/diffMybranchOtherbranch-Changes.txt

20/11/2024

Git: Wanneer is welke wijziging in een bestand ontstaan?

Filed under: — cybrarian @ 12:06 pm

Er is ergens een stomme bug veroorzaakt, waarschijnlijk lang geleden, en de oorzaak is onduidelijk; is het met een aanpassing aan de code gebeurd, of per vergissing door even in de editor in een verkeerd bestand iets te doen bij te snelle toetsaanslagen tijdens het werk?

Hoe kan git mij helpen dat moment terug te vinden?

Log path:

git log --path

bv:
git log -- Trypo/.src/TrypoForms/FDayReq.class

Daarmee kan je al zien wanneer daar de laatste aanpassingen gedaan zijn. Maar welke?

Bv de bug bevondt zich op regel 889 en betrof missende () bij een bewerking.

Log line:

git log -L(from),(to):(path)

bv:

git log -L887,891:Trypo/.src/TrypoForms/FDayReq.class

Dit geeft me de – en + regels, en hiermee kan ik snel vinden wat er juist gebeurd is.

19/11/2024

Git: mijn main en origin/main verschillen

Filed under: — cybrarian @ 11:09 am

De online versie van de master en mijn eigen lokale versie zijn uiteengelopen.

git checkout master
Switched to branch 'master'
Your branch and 'origin/master' have diverged,
and have 11 and 1 different commits each, respectively.

Ik kan het niet eenvoudig oplossen met push of pull:


git status
On branch master
Your branch is ahead of 'origin/master' by 11 commits.
(use "git push" to publish your local commits)
'
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git restore
..." to discard changes in working directory)
modified: .project
'
no changes added to commit (use "git add" and/or "git commit -a")
linuxuser@copyleft:~/Git/MyProject> git push
To gitlab.com:dev/myproject.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'gitlab.com:dev/myproject.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
linuxuser@copyleft:~/Git/MyProject> git pull
error: cannot pull with rebase: You have unstaged changes.
error: please commit or stash them.

Ik haalde de main af in een test directory en met Kompare bekeek ik de verschillen om te checken wat er aan de hand was. Conclusie: mijn locale versie moet de nieuwe main/master worden.

Ik beveilig eerst mijn locale wijzigingen in een nieuwe branch:
(Als het over een kleine wijziging ging zou ik misschien git stash en git stash pop gebruiken)

git branch backup-mainlocal

Daarna even checken:

git status
On branch master
Your branch and 'origin/master' have diverged,
and have 12 and 1 different commits each, respectively. (...)

Ik zit nog in mijn master; gelijkzetten met de online versie:

git reset --hard origin/master
HEAD is now at efde303 Update ReadMe.txt with sourceforge tar.gz link

Ik zie de laatste wijziging daar in mijn ReadMe bestand.
Nu zijn beide versies terug gelijk:

git status
On branch master
Your branch is up to date with 'origin/master'.

en kan ik de wijzigingen toepassen uit mijn backup:

git merge backup-mainlocal
Merge made by the 'ort' strategy.
.component | 4 ++++
.gitignore | 19 +++++++++++++++++
.project | 3 ++-
.src/FMain.class | 54 +++++++++++++++++++++++++++++++++++++++++-------
.src/FMain.form | 4 ++--
...
Changes.txt | 15 ++++++++++++++
Help.txt | 2 +-
10 files changed, 441 insertions(+), 29 deletions(-)
create mode 100644 .component
create mode 100644 .gitignore

En online brengen:

linuxuser@copyleft:~/Git/MyProject/> git push
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 627 bytes | 627.00 KiB/s, done.
Total 4 (delta 1), reused 0 (delta 0), pack-reused 0
To gitlab.com:dev/myproject.git
efde303..c950ea5 master -> master

Ok nu zijn ze terug synchroon.

7/11/2024

git reset –hard

Filed under: — cybrarian @ 12:35 pm

Ik moet een oud project oppikken dat ooit een aparte branch had waarin ik wil gaan werken, en ik moet de code up to date maken met de huidige stand.

git reset --hard origin/master

Als antwoord krijg ik:

HEAD is now at 01d4e38 fix conflicts

Ik vraag me af welke conflicts er dan zijn, want er worden er geen opgesomd. Normaal, als er conflicten zijn, wordt de aktie niet uitgevoerd, maar hier heb ik wel de bevestiging van “Head is now at ..”.

Bij nader inzien bleek “fix conflicts” de commit message te zijn van de laatse commit waar head nu op zit ….

11/10/2024

Eén bepaalde tak afhalen van git

Filed under: — cybrarian @ 10:17 am

Eén enkele branch afhalen van een git repository

Ik heb in een “dev” map een project “myproject” met ontwikkeling in Gambas3 op een pc met Kde-desktop.

Er is één tak van het project, branch “compat-lxde”, die ik ontwikkel op een ander toestel (Raspberry Pi) met een LXDE desktop; om de applicatie daar compatibel met die desktop te houden. Hierin neem ik bijna alles over van de “main”, behalve de dingen die niet werken in een LXDE desktop, die laat ik weg of pas ik aan.

De branches main en compat-lxde lopen dus grotendeels parrallel.

Soms wijzig ik iets op di Pi aan de lxde versie dat ook nuttig is voor main, en om dat binnen te halen wil ik ook de lxde code op mijn KDE-pc, maar op zo’n manier dat ik mij niet vergis met mijn gewone development, ik moet vermijden dat ik mijn gewone development aan het doen ben in de lxde versie bv.

Ik wil dus op mijn pc op een andere plek één bepaalde tak van mijn ontwikkeling apart bijhouden om die daar enkel te raadplegen.
Ik wil hier niet alle andere branches in hebben want die heb ik in mijn dev map, en daar werk ik ook aan.

Algemeen:
git clone -b --single-branch

Bv: als branch compat-lxde bestaat in het project:
git clone -b compat-lxde --single-branch https://gitlab.com/project/myproject.git

Ook op de Raspberry Pi kan het nuttig zijn om niet alle code binnen te halen, maar enkel de branch “compat-lxde” en bv “main” of “test”.

Nu kan ik op de pc in mijn dev directory de branches gebruiken om in te werken, bv in “feat-abc”, dan naar test, tot binnenhalen in main.

Ik ga naar de pi, integreer daar alles van main in de lxde branch. Ik doe terloops ook nog een kleine correctie (die terug naar test/main moet).

Ik ga op de pc naar de map met de lxde, haal de wijzigingen af (pull), kan die openen en knippen/plakken naar het project dat in de ontwikkelomgeving open staat in dev directory.

Normaal zit in de dev directory ook de lxde branch, en kan je daar diff’s met test/main doen en zo.

Om een enkele tak lokaal toe te voegen, doe:

git remote set-branches –add origin [remote-branch]
git fetch origin [remote-branch]:[local-branch]

17/9/2024

Gitlab rol veranderen van een lid van een project

Filed under: — cybrarian @ 11:20 am

Doel: een “Developer” mogelijkheid geven om de main te updaten.

De leden van een project kunnen hun rol hebben gekregen doordat ze lid zijn va een “group”, en die kan dan niet apart ingesteld worden voor een subproject van die group, bv devcopyleft/clTools
Rollen zijn in stijgende volgorde : Guest - Reporter - Developer - Maintainer - Owner

Ga naar de hoofdpagina van de group, bv devcopyleft.
Daar bij “Manage”, zie je de “Group Members”.
Als je de nodige rechten hebt (oprichter van de group: “owner”) kan je in de kolom “Role” klikken op de rol en die veranderen, bv naar “Maintainer”.
Nu kan hij “push” naar “main” doen.

16/9/2024

Raspberry Pi opstarten met programma op desktop

Filed under: — cybrarian @ 2:25 pm

De Rapsberry Pi laten opstarten in een bepaalde toepassing

Er is een map waar bij het opstarten gekeken wordt welke programma’s te starten:/home/pi/.config/autostart

ps: In documentatie vind ik ook nog andere gelijkaardige mappen: /home/pi/.config/lxsession/LXDE-pi/autostart

Het kan dat de map ~/.config/autostart nog niet bestaat;

  • op één pi bestond die niet en heb ik die gemaakt
  • op de andere bestond die wel en bevatte die een bestand LXinput-setup.desktop, met toetsenbord/muisinstellingen

Een programma dat je in deze map zet wordt automatisch uitgevoerd.

Opstarten met een zelfgeschreven applicatie in gambas3
– Vanuit de gambas programmeeromgeving (Gambas3-IDE) kan je een programma compileren tot uitvoerbaar, met de optie om een link op de desktop te maken; doe dat.
– de link kan je dan naar de autostart map verplaatsen (of kopieren).

Powered by WordPress