13/11/2018

Git: hoe haal ik of zie ik remote branch?

Filed under: — cybrarian @ 1:16 pm

(in de reeks Git…)

Zien
Online (in de web interface) zie ik de branches:

  • master
  • test
  • issue1

Maar lokaal zie ik alleen mijn eigen master (sic!):

git branch -l
* master

Ook na een git fetch blijft dat zo.

Git fetch heeft een standaardgedrag of volgt instellingen, maar je kan meer specifiek git fetch origin doen:

~/Git/TrypoPrj/TrypoPrj> git fetch origin
~/Git/TrypoPrj/TrypoPrj> git branch -l
* master

Bovendien moet je eigenlijk –list gebruiken (-l dient om een reflog aan te maken), en toont git branch –list enkel de lokale branches. Maar

git branch -r

origin/HEAD -> origin/master
origin/feat-01
origin/master
origin/test

toont de remote, of wil je alles:

git branch -a

* master
remotes/origin/HEAD -> origin/master
remotes/origin/feat-01
remotes/origin/master
remotes/origin/test

met extra info als laatste commit message:

git branch -v -a

* master 8ab6216 [ahead 1] remove .directory from tracked files
remotes/origin/HEAD -> origin/master
remotes/origin/feat01 2bbd368 Complete changes.txt with done work
remotes/origin/master de381ad Resolve merge conflict by combine and reorder lines in changes.txt

Afhalen
Als je een branch van remote wil halen kan je die opgeven

git fetch origin branch-naam
Daarna logischerwijze merge in je eigen (bv master) en commit:

git merge origin/branch-naam
git commit ...

Git ingore negeert opgegeven bestand niet

Filed under: — cybrarian @ 10:47 am

(in de reeks Git…)

Hoewel ik .settings heb toegevoegd tot gitignore, blijft het af en toe opduiken als gewijzigd bestand, klaar om mee te committen. Ik begrijp niet of het komt door merge met andere medewerkers die misschien een andere instelling hebben (hoewel ik dacht dat die lokaal was).

Oorzaak is bv dat het bestand oorspronkelijk niet in gitignore zat, en er pas later is aan toegevoeg, toen het al getracked werd. En .gitignore werkt alleen voor “untracked” files (voor nieuwe bestanden dus).

Er is een extraatje nodig (how to make git forget..):

git update-index --assume-unchanged

git update-index --assume-unchanged .settings

Je krijgt geen feedback na dit commando.

28/9/2018

Git voorbeeld: SourceForge

Filed under: — cybrarian @ 10:24 am

(Reeks Githandboek (nl)commando’s vbbranch, mergeGitLab vbSourceForge vbgit en gambas)

SourceForge (https://sourceforge.net/) was in de open source en free softwarewereld zowat de eerste, grootste en bekendste website voor het online houden van een open source of free software project. Je kon de broncode gewoon uploaden als .tar.gz bestanden, of het Code Versioning System gebruiken (cvs), naast de vele project-tools voor opvolging van bugs, communicatie enz. (zie 2009)

SourceForge heeft achtergrond in VA Software (denk ook aan VA Linux, Geeknet, enz), ondertussen horen ze bij Slashdot media.
Het traject van de zoektocht naar rendabiliteit en de overnames deed Sourceforge geen goed en zaaide twijfel bij developers.
Heel wat nieuwe projecten gingen naar GitHub, (en meer recent GitLab), die specifiek gericht waren op het ondertussen in de FOSS wereld populaire geworden git-broncodebeheersysteem.

Maar ondertussen biedt SourceForge ook Git aan. Sinds januari 2018 promoten ze het aktief met een importeer-tool om GitHub projecten over te zetten naar SourceForge.
https://sourceforge.net/blog/introducing-the-new-sourceforge/

Wie al op Sourceforge zit kan zijn project beginnen beheren met git: https://sourceforge.net/p/forge/documentation/Git/

Om gemakkelijk te communiceren met de sourceforge repository is het best om een public key/private key communicatie op te zetten. Daarvoor moet je een “key” hebben, die je maakt met ssh-keygen.
Daarna moet je de projectdirectory initialiseren voor gebruik met git. En dan moet je je startcode “uploaden”, in git-terminologie comit-en en push-en.

1. Keys

1.1 keys maken:

De handleiding van sourceforge zegt:

ssh-keygen -t ed25519 -C “gebruikersnaam@shell.sf.net”

De plaats waar je dit doet is eender (bv kan je al in de projectdirectory staan).
De gebruikersnaam is die van je login, niet de weergegeven naam!
Na het commando krijg je de vraag in welk bestand de key bewaard mag worden, je kan het voorstel gewoon bevestigen.
Daarna kan je een wachtwoord ingeven (veiliger), wat je moet heringeven om te bevestigen.
Het eindigt met de plaatsen waar je identificatie en je public key bewaard werden*, en met je fingerprint.
Daaronder komt een beetje “ascii-art” met je randomart image.
* Je kan je instellingen checken in de bestanden:
private key: /home/usernaam/.ssh/id_ed25519 (deze moet je geheim houden!)
public key: /home/usernaam/.ssh/id_ed25519.pub (deze moet je meedelen)

1.2 keys registreren

Log in op SF en ga naar:
https://sourceforge.net/auth/shell_services
Daar plak je de inhoud van je .pub bestand.

2. Projectdirectory

De directory die je wil opnemen in het git beheer moet je initialiseren voor git gebruik.
Ga in de directory staan (cd projectdir), en check git:

git status
Als je … krijgt is er al een git repository van gemaakt!
Als er nog geen git initialisatie gebeurd is op deze directory krijg je een melding als:

fatal: Not a git repository

…(enz)

Tik het initialisatiecommando dat de nodige subdirectories en bestanden maakt:
init git

Initialised empty Git repository in …

Opgelet! Nu zijn er een aantal (onzichtbare) directories/bestanden bijgekomen voor git, gebruik deze projectdirectory niet meer om op een andere manier te kopiëren als project sourcecode, want hij is “vervuild” met git.

3. Stel de bron in

Als de broncode nog niet in de directory staat, kopieer je die ernaartoe. Ze vormen de verzameling van alle onderdelen die je nodig hebt om een programma te kunnen compileren.
Met git status toont git wat het daar ziet.

Je stelt ook de bestanden in die NIET naar de git-server moeten, omdat ze enkel lokaal nut of belang hebben (bv lokale instellingen van de programmeeromgeving), of omdat ze prive-informatie bevatten.
Maak daarvoor een bestand .gitignore in de projectdirectory.

git rm --chached (file) om iets wat er per vergissing toch is terechtgekomen; check met git status.

git commit -am ‘initial commit at version 0.1.5’

Je krijgt de melding dat een ‘standaard’ e-mail adres gebruikt is; je kan het instellen met:

git config --global --edit

pas aan, bewaar (standaard met ESC :w en :q), en daarna fix de identiteit die gebruikt werd met:

git commit --amend --reset-author

Je krijgt dan een tekst te zien (waarin je bv het e-mail adres kan verbeteren, dacht ik, maar dat blijkt achteraf niet met git log**); ook weer ESC :wq om te bewaren en verlaten.

4. Stel de server in

Nu moet je een verbinding instellen met de server, waar de broncode naartoe moet.

git remote add origin ssh://login@git.code.sf.net/p/gitin/code

(met je eigen login natuurlijk; de username).

En dan de eigenlijke “upload”:

git push -u origin master
Er wordt een bevestiging gevraagd van de git.code.sf.net server (met ip)
Die wordt dan toegevoegd aan de “known hosts”.
Daarna moet je je wachtwoord ingeven (dat van de ssh key).

Met wat geluk eindigt alles met:

Branch master set up to track remote branch master from origin.

Nu kan je via de website het resultaat zien onder het tabblad “code”:
https://sourceforge.net/p/projectname/code/

De projectdirectory is volledig te “browsen”!
Onderaan verschijnt de inhoud van het readme.txt bestand.

Zeer handig is de kolom “Commit”, want daar verschijnt de commit message, en je kan daarmee snel zien wat de laatste verandering is in een directory of bestand.


**)
Je moet eerst expliciet de gegevens instellen, bv het e-mail adres wordt afgeleid uit je username en je hostname, dus je krijgt username@host, en dat kan bv de lokale hostname van je pc zijn.

Je moet dan eerst expliciet de username of het e-mail adres instellen:

git config --global user.name "gebruikersnaam"
git config --global user.email "user@domein.abc"


5. Gebruik.

– Code

git commit -am 'initial commit at v.0.1.3'

Nadat van een project de originele code naar de server geladen is, wordt ze zichtbaar in de “code” tab van de Sourceforge website, bv als:

Tree[987456] master/

Op die pagina krijg je ook de commando’s aangeboden die je nodig hebt om ssh/https/RO (read-only) toegang te krijgen.

– Clone

RO is genoeg om het project af te halen:

git clone git://git.code.sf.net/p/projectnaam/code projectnaam-code

Dit maakt een lokale directory projectnaam-code, verwijzend naar de structuur op de server (beetje verschillend van GitLab).

Om ook schrijftoegang te hebben moeten eventueel de rechten aangepast worden door de admin van het project, en moet je één van de voorgestelde read/write commando’s geven.

git branch --list toont: “* master”

fatal: remote error: access denied or repository not exported…

Als je oorspronkelijk enkel read-access hebt gevraagd (bij project clone), kan je nadien de instellingen aanpassen in het .git/config bestand. Volgens de documentatie:

git://PROJECTNAME.git.sourceforge.net/gitroot/PROJECTNAME/REPONAME (read-only)
ssh://USERNAME@PROJECTNAME.git.sourceforge.net/gitroot/PROJECTNAME/REPONAME (read/write)

Bij mij zag het er iets anders uit:

url = git://git.code.sf.net/p/projectnaam/code

url = ssh://USERNAME@git.code.sf.net/p/projectnaam/code

Zoek de regel die begint met git:// en verander hem naar ssh:// waarbij je “USERNAME@” toevoegt (maar dan je echte loginnaam natuurlijk).

4/9/2018

Git gebruik organiseren: branches, comit, merge

Filed under: — cybrarian @ 8:59 pm

(Reeks Githandboek (nl)commando’s vbbranch, mergeGitLab vbSourceForge vbgit en gambas)
Zie ook artikel over branches in git, (Engelstalig, 2015)

Branch commando’s

git branch = toon branches = git branch --list = toon branches
git branch -v = toon laatste commit messages
git branch Testing = maak nieuwe branch met naam “Testing”
git checkout Testing = overschakelen naar branch
git merge bugfix = merge bugfix in huidige branch (vorige checkout branch, hier dus Testing)
git branch -d bugfix = verwijder branch (gaat niet? checked out?)

Branch, merge
Veelgebruikte struktuur van vertakkingen:

Master branch (-> production server)
Develop branch (-> staging server)

  • Feature branch
  • Hotfix branch
  • Release branch
  • Support branch

Git Branching and merging strategies beschrijft het zo:

Master – Test – Develop

Uit Master wordt initieel test gemaakt, uit test develop, en uit develop de feature branches.

Master - Test - Develop -- Feature-1
                        -- Feature-2

(

De Develop stage krijgt updates uit de feature branch die gewijzigd is;

.. Develop <-- Feature-1
           <-- Feature-2

De feature branches houden zich up to date door de wijzigingen uit de develop regelmatig af te halen (rebase). Hoe beter ze onderling op de hoogte blijven van de ontwikkeling, hoe minder conflicten later.

.. Develop --> Feature-1
           --> Feature-2

En alles van develop gaat uiteindelijk naar boven naar test, dan naar Master.

Vanuit Master wordt een Release 1.0 branch gemaakt.
Later vanuit Master een Release 2.0 branch.

De bugs die ontdekt worden in de Release branches, kunnen gepatcht worden (éérst op eerste versie waar die voorkomt)
bv comit op Release 1 –
van daaruit Merge naar Release 2
van daaruit Merge naar Develop (waarna het met rebase bij de feature branches komt, en waar het klaar zit voor de volgende release naar boven)

Overzicht van bestaande branches:

git branch --list

bugfix
* master
testing

Verschillende commits:

  • Merge
  • Fast-Forward
  • Rebase

Branch namen

Vb van een prefix die onderscheidend werkt:

feat-shortname bv: feat-stocklist
fix-shortname bv: fix-bugitem1234
hot-shortname bv: hot-fixCrashStartWithoutDb
rel-shortname bv: rel-v1-2
try-shortname bv: try-stocklistlocalcache

Branch lokaal-remote

Een lokaal gemaakte branch kan nadien gewoon naar de server gestuurd worden:

git push origin feat-1

Voorbeeld 1 merge (recursive):

master: bestand 1 veranderd; commit
develop: bestand 2 veranderd; commit

git checkout master
git merge testing

Merge made by the ‘recursive’ strategy.
TweedeBestand.txt | 1 +
1 file changed, 1 insertion(+)

Voorbeeld 2 merge (fast-forward):

git checkout master
git checkout -b bugfix

Switched to a new branch ‘bugfix’

Wijzig bestand 2, en …

git commit -a -m "voeg commentaar toe"

[bugfix 02aa0b3] voeg commentaar toe
1 file changed, 1 insertion(+)

git checkout master

Switched to branch ‘master’
Your branch is ahead of ‘origin/master’ by 3 commits.
(use “git push” to publish your local commits)

git merge bugfix

Updating feb4282..02aa0b3
Fast-forward
TweedeBestand.txt | 1 +
1 file changed, 1 insertion(+)


Voorbeeld 3: opkuisen na merge

Daarna mag de tak van de bugfix weg:

git branch -d bugfix

Deleted branch bugfix (was 02aa0b3).

Als hij nog aktief staat krijg je een fout:

error: Cannot delete branch ‘bugfix’ checked out at ‘/home/..

Voorbeeld 4 merge (rebase)

branch master, test, feat-1, feat-2

wijzigingen feat-1, commit
wijzigingen feat-2, commit

git checkout test
git status

git merge feat-1

Updating f276191..804f3c6
Fast-forward
Project/.src/Filename.class | 12 +++++++++++-
… (bestanden en wijzigingen)
12 files changed, 291 insertions(+), 37 deletions(-)
create mode 100644 Project/.src/FGetText.class
create mode 100644 Project/.src/FGetText.form

git merge feat-2

Auto-merging Project/Changes.txt
Auto-merging Project/.src/MForm.module
Auto-merging Project/.src/FMain.class
Merge made by the ‘recursive’ strategy.
Project/.src/FMain.class | 2 +-
Project/.src/MForm.module | 1 +
… (bestanden en wijzigingen)
7 files changed, 646 insertions(+), 1 deletion(-)
create mode 100644 Project/.src/Class/CIntWeek.class
create mode 100644 Project/.src/Forms/FInterim.class

Om in mijn feat-1 alle wijzigingen van test al mee te krijgen:

git checkout feat-1
git rebase test

(alhoewel niet iedereen voorstander is van rebase gebruik, zie ook fetch/merge, pull)

Merge Error 1

Fout op 1 bestand dat lokaal veranderd is, maar enkel een .settings bestand is dat mag overschreven worden:

git reset --hard
Daarna terug de merge.

Merge Error 2

git checkout test
git merge feat-1

Auto-merging Proj/Changes.txt
CONFLICT (content): Merge conflict in Proj/Changes.txt
Automatic merge failed; fix conflicts and then commit the result.

git status

On branch test
You have unmerged paths.
(fix conflicts and run “git commit”)
(use “git merge –abort” to abort the merge)

Changes to be committed:

modified: Proj/.src/ProjForms/FInterim.class
modified: Proj/.src/ProjForms/FInterim.form

Unmerged paths:
(use “git add …” to mark resolution)

both modified: Proj/Changes.txt

Inderdaad, de Changes.txt file is gewijzigd in beide takken. Als je het bestand in de huidig aktieve branch (de merge branch Test in dit geval) opent, zal je aanduidingen zien van de overlapping:

0.1.2 
...
< <<<<<< HEAD

FFactoring:
0.1.2 
=======
>>>>>>> feat-interim

HEAD : geeft de “hoofd”-branch aan, waar naartoe gemerged wordt, waarna die tekstversie
====== : geeft de scheiding aan naar het begin van de ingevoegde (feature-,..) branch en de bijhorende tekstversie
Ook de ingevoegde branch naam staat er achter.

Maak van de tekst de versie die het uiteindelijk moet worden, combineer beide stukken of gooi wat weg.
Stage de veranderingen met git add .
Commit de veranderingen met git commit -m "Resolve merge conflict by combining and ordening changes.txt"

Probeer daarna opnieuw een merge.

29/9/2017

GIT commando’s, vb, problemen

Filed under: — cybrarian @ 10:45 pm

(Reeks Githandboek (nl)commando’s vbbranch, mergeGitLab vbSourceForge vbgit en gambas)

Commando’s

git config --global user.name "mijn naam"
git config --global user.email mijnemail@mijndomein.tld
git config --list

Je kan op dezelfde manier je editor en diff tool instellen.
Waarde wordt bewaard in ~/.gitconfig (in opensuse).

Bekijk de instellingen daar, of zoals de laaste lijn met –list.
(antwoord leeg=geen instellingen)

Deze configuraties worden met –global eenmalig gedaan; je kan ze zonder global uitvoeren voor een project met afwijkende gegevens (na git init in de projectdirectory):

git config user.name "mijn andere naam"
git config user.email anderemail@mijndomein.tld

Deze komen terecht in de lokale .git/config

git init = start gebruik git; creatie van ~/.git/ directory in de projectdir waar je bent

git clone git://gitserver.org/iemandsdirectory/eenproject.git = haalt een bestaand project af en maakt een werkdirectory klaar.

Initialized empty Git repository in /home/name/Gambas3Prj/PrjName/.git/

Als het project via de webinterface is aangemaakt zal je meestal een “text” bestand README.md in vinden;
extentie md staat voor markdown, voor eenvoudige opmaak nummering enz met # heading *bold* -listitem enz

Waarna git status:

# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use “git add” to track)

Beginnen met een kopie van een project:
git clone git://gitlab.com/iemand.naam/eenProject.git

Cloning into ‘eenProject.git’ …

(Fouten zie ook 4*)

Waar komt clone terecht?
Als je geen git init gedaan hebt, maar onmiddellijk git clone:
– clone van het project “GitUse”
– commando van in de directory ~/Git/GitUsePrj>
Dan wordt ~/Git/GitUsePrj/GitUse gemaakt, met daarin de verborgen .git directory.

git status = overzicht lokale(!) toestand, bv nieuwe bestanden enz (! zie git fetch)
git status -s = korte samenvatting toestand, met afkortingen als M, MM, A, ??
git add test.txt = toevoegen aan staging (of nieuw bestand opvolgen- in “tracked”)
git add . voegt alle nieuwe files en dirs toe (behalve ignored)
git add -u kijkt naar de wijzigingen aan de tracked files.
git rm --cached test.txt = untrack/unstage test.txt;
git add '*.txt' = als wildcards gebruikt worden: aanhalingstekens
git
git commit -m "beschrijving van de inhoud of wijziging (m=message)" = toevoegen aan repository van alles wat in staging staat; anders filenaam opgeven
git commit test.txt = commit alleen deze file
git commit -a = gaat zelf de nodig add en remove (rm) doen
git commit -a -m 'grote lijn van wijziging' = combinatie -a en -m

git log = geeft in volgorde al de laatste handelingen (in editor; verlaten met :q )
Remote instellen:
git remote add korteNaam git@gitlab.com/userdirectory/repository.git = opgeven van repository op de gitruimte ; standaard branch is ‘master’
git remote add korteNaam https://domain.tld/userdirectory/repository.git = versie met https in plaats van git of ssh.
git remote -v = lijst van gedefinieerde fetch en push remotes

git push -u korteNaam master = alles naar online (git push origin master)

git fetch = toestand van de online versie ophalen (waardoor je -lokaal- de status kan vergelijken met de bijgewerkte toestand online tot dat punt)

git pull korteNaam master = alles direkt binnenhalen om te werken. (Eigenlijk fetch + auto merge; je krijgt geen kans meer om de verschillen te bekijken zoals na fetch!)

git diff = verschillen zien tussen working directory en staging (standaard editor :q om te verlaten)
git diff HEAD = verschillen zien tov laatste commit, meest recente=’HEAD’
git diff --staged = verschillen zien eigen staged tov laatste online pull
git diff --cached = ” ” ”

git reset = verwijder laatste staged (maar file blijft wel tracked)
git checkout -- unwantedfile.txt = (spatie laten)

git branch branchname_voor_mij = maak nieuwe branch
git branch --list = toon branches
git checkout branchename_voor_mij = overschakelen naar branch
git branch -d branchname_voor_mij = verwijder branch (gaat niet: checked out?)

git rm '*.txt' = verwijderen van de files + wijz. klaarzetten in staging

Bij (merge) conflict, bv na git pull:
git mergetool
Dat brengt je in een gestuurde oplossing file per file, met info en keuzes als: use modified (m) or deleted (d) file, abort (a) …
Je moet dan eerst een git commit doen en daarna terug git pull.

Ik wil …

– controleren welke (exluded/uit te sluiten) bestanden mee in git zitten:

git ls-files (alleen bestanden)
git ls-files --stage (meer detail: [tag] mode object stage file)

– fout opgezette lokale repo wissen en opnieuw beginnen: rm -rf .git

(hier zit alles in). Check je .gitignore file in de project directory (waar .git stond), met git init wordt die overschreven?
rm -rf .git
git ls-files
fatal: Not a git repository (or any parent up to mount point /home)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)

– weten of mijn lokale repo bij is met online: git status

git status
# On branch master
# Your branch is ahead of ‘nieuws/master’ by 1 commit.
# (use “git push” to publish your local commits)
#
# Untracked files:
# (use “git add …” to include in what will be committed)
#
# ProjectToTrack/.settings
nothing added to commit but untracked files present (use “git add” to track)

(zie ook 5*)

– mijn versie naar boven naar online duwen git push

git push –all
Counting objects: 9, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 521 bytes | 0 bytes/s, done.
Total 5 (delta 1), reused 0 (delta 0)
To git@gitlab.com:/mat.abc/Test.git
9512a28..a72f459 master -> master

– de laatste online versie afhalen git pull test master

git pull test master
Pass a valid window to KWallet::Wallet::openWallet().
Pass a valid window to KWallet::Wallet::openWallet().
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (5/5), done.
From https://gitlab.com/mat.ara/Test
* branch master -> FETCH_HEAD
9512a28..a72f459 master -> test/master
Updating 9512a28..a72f459
Fast-forward
ProjectToTrack/.src/FMain.form | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)

Enkele vragen blijven nog:

  • worden er bestanden bijgemaakt door git in de specifieke subdirectories van een project, of alleen in de onzichtbare .git directory op hoogste niveau?
  • wat is beste methode: directories opnemen en files excluden, of specifieren welke wildcard-files moeten opgenomen worden?
    Bv voor gambas: ./*.txt; ./src/*.class; ./src/*.form erin of .gambas; .settings; .*~ eruit: Gebruik .gitigrnore (gambas maakt nu een .gitignnore bij creatie van een project).
  • Wat met .png, .jpg, enz. Apart opslaan omdat ze binary zijn? Kunnen mee in ropository maar de diff is enkel op tekst.
  • moet een projectdir dezelfde naam hebben op de verschillende locaties? De dir waarin je git init doet waarschijnlijk niet, en de rest haal je mee binnen zeker?
  • Hoe werken vanop verschillende computers (als dezelfde ‘gebruiker’ (zelfde e-mail adres); ssh keys kopieren of meer keys maken? Hier ben ik nu geneigd om verschillende “users” te maken op de verschillende toestellen/locaties. Maar als ieder van die users dezelfde branch “dev” gebruikt wordt het snel weer verwarrend. Je moet telkens de branches met dezelfde naam mergen.
    Ik plan nu:

    • workmail@domainwork.tld - > branch "devwork"
    • secondwork@webmail.tld - > branch "devlaptop"
    • personalmail@hosting.tld - > branch "devhome"

    Dan is het ook duidelijker dat je inderdaad moet mergen.

Links
Een paar links voor zolang ze geldig zijn:

Nederlandstalig! https://git-scm.com/book/nl/v1/Aan-de-slag
https://git-scm.com/book/en/v1/Getting-Started-First-Time-Git-Setup
https://help.github.com/articles/se-up-git/
https://try.github.io/levels/1/challenges/1
Goede commit messages zien er zo (niet) uit:
https://chris.beams.io/posts/git-commit/
https://longair.net/blog/2009/04/16/git-fetch-and-merge/ fetch, merge (of pull?)

(meer…)

29/6/2017

Git voorbeeld: gitlab

Filed under: — cybrarian @ 3:31 pm

(Reeks Githandboek (nl)commando’s vbbranch, mergeGitLab vbSourceForge vbgit en gambas)

Samenwerken of verdeeld werken

Een van de online diensten die git aanbieden is gitlab.com

Ik heb die gebruikt als voorbeeld bij mijn git artikel.

Registratie
Je maakt een account aan met een naam, wachtwoord en e-mail adres. Op dat laatste krijg je dan een bevestigingsmail met een link.
Je kan een icoontje voor jezelf kiezen (“avatar”) zoals in veel online diensten, of het wordt herkend als je geregistreerd hebt bij een centraal register van avatars.
Je kan je ssh key (het publieke deel) in de user settings invoegen.

Project

Bij het maken van een nieuw project moet je nadenken over de “namespace”, want het is niet eenvoudig om die nadien te wijzigen. De belangrijkste vraag is of je het project onder je eigen naam/namespace maakt;
– naam/project
of onder de naam van een groep: (zie ook verder Group)
– groupnaam/projectnaam)
Als je samen met anderen wil werken is group aan te raden (zou eigenlijk standaard moeten zijn).

Wijzigen
Om het nadien te wijzigen moet je extra opties aktiveren (Project Settings, Advanced, Expand), Transfer project, Select a new namespace; daar kan je kiezen uit bestaande projecten. Je moet nog eens bevestigen met het intypen van de projectnaam ter controle.
(De rode omgeving geeft aan dat er onverwachten en onaangename gevolgen kunnen zijn, zorg zeker voor een backup).

Je moet daarna ook je instellingen aanpassen op je lokale git-werkstation; je kan de bestaande opvragen met:

git remote -v
wijzig met hetzelde commando als het opzetten:
git remote set-url
git remote set-url origin git@gitlab.com/GrpProject/projectname.git
(zowel de fetch als de push werden aangepast)

Als je in de web-interface een oude URL gebruikt die je bewaard had, krijg je een viendelijke foutmelding (en wordt je indien mogelijk doorverwezen):

Project ‘username/projectname’ was moved to ‘GrpPrjname/projectname’. Please update any links and bookmarks that may still have the old path.

Prive of publiek
Gitlab laat op dit moment toe om een account aan te maken en je project in te stellen als:

  • publiek open source project
  • privé project

Het privé project belet je niet om toch met anderen samen te werken.
Voor het project heb je Settings: “General-Members-Integrations-Repository-Pipelines-Pages-Audit Events”; kies “Members”, “Select members to invite”. Rol en vervaldatum kunnen ingesteld worden.

Repository
(upd 12-10-2018)
Als je het project via de webinterface (website) van GitLab aanmaakt, kan je
* de repository klaarmaken om met een “clone” commando af te halen (initialisatie van de “master”); daarbij kan je de README.md invullen.
* onmiddellijk een LICENSE kiezen; met een eenvoudige klik kan je een licentie bestand toevoegen aan je repository. Je kan kiezen uit een lijstje waarin bv GPL en andere licenties voorkomen. Als je bv GPL3 kiest, wordt er een bestand LICENSE gemaakt met als inhoud de GPL3, en als commit geregistreerd.
Afhalen met:
git clone git://git@gitlab.com:userORgroup/projectname.git

Groep
Daarvoor maak je een groep aan (menu “+”, new group), die je een naam naar keuze geeft; ik hou hem vrij algemeen omdat het gemakkelijk is om veel projecten te delen met 1 groep.

Daarna ga je de leden voor de groep kiezen. Zelf ben je al lid doordat je de groep gemaakt hebt. Je kan een andere account opzoeken in de bestaande gitlab accounts, en lid maken van de groep. Je kan zoeken op naam, e-mail adres. Je kan de duur instellen van het lidmaatschap, en het niveau (Guest, Reporter, Developer, Master, Owner); Owner ben je zelf.

De andere partij krijgt dan een mail met “Access to the NewGroupName group was granted”. Hij kan met een klik weer uit de groep stappen.

Die andere account kan natuurlijk ook een andere account van jezelf zijn, waarbij je bv thuis een andere account gebruikt dan op het werk.

Groepsproject
Het is de bedoeling dan een nieuw project te maken binnen die groep. Je kan een bestaand project aan die groep toevoegen / overzetten van persoonlijk project naar groepsproject; je gaat het importeren als het ware, maar dat houdt in dat de naam van het project (url) verandert, en dat kan onverwachte problemen geven wordt opgemerkt door gitlab. Je kan natuurlijk ook gewoon een nieuw project maken en daar de bestaande code van het moment in invoeren.

Rechten
De volgende stap is dan de toegangsniveau’s instellen. Hier bepaal je de fijnere betekenis van bv Developer; maar ze hebben al een ingevulde standaardbetekenis volgens deze tabel: (Permissions).
Rondkijken kan iedereen, labels toekennen bijna iedereen, en de Master kan een project maken in de groep.

Afhalen
(upd 2017-09-17)
Als je ingelogd bent op de site kan je ook in je browser door de broncode bladeren; je ziet het voorgesteld als een bestandssysteem met betanden. Je kan iedere individuele file bekijken of afhalen als download.
Op hoger/het hoogste niveau kan je ook het project afhalen (symbool van pijl naar beneden op plat streepje); je krijgt dan de keuze aangeboden om het als een gecomprimeerd pakket (bv tar.gz) te downloaden.

Documentatie-wiki
Eén van de opties in de linkermenubalk van GitLab is de wiki, die je kan gebruiken voor documentatie. Het startscherm heeft een knop “Create your first page”.

Issue tracker
De issue tracker wordt gebruikt bij het maken van voorstellen (feature proposal), fouten te melden (bug reporting), enz.
Issue tracker menu leidt naar de lijst of naar het issue board, waar je issues kan slepen naar bv de labels “To Do”, “Doing”, en andere zelf te maken onderverdelingen, waarnaar ze ook verder gesleept kunnen worden. Zo krijgen de issues een traject.

8/6/2017

“Pro Git”-boek ook in Nederlandstalige versie

Filed under: — cybrarian @ 3:47 pm

(Reeks Githandboek (nl)commando’s vbbranch, mergeGitLab vbSourceForge vbgit en gambas)

Pro Git
Het boek is origineel in het Engels uitgegeven, en is in tweede versie te vinden op https://git-scm.com/book/en/v2
Geschreven door Scott Chacon en Ben Straub en uitgegeven bij Apress.
Ze kozen voor de “Creative Commons Attribution Non Commercial Share Alike 3.0 license”, waardoor het ook vertaald kan worden.
Een papieren versie bestaat ook en is waarschijnlijk te vinden via Amazon.com.

De Nederlandstalige versie (is gebaseerd op de eerste versie) en bevat:

6/6/2017

git

Filed under: — cybrarian @ 2:04 pm

(Reeks Githandboek (nl)commando’s vbbranch, mergeGitLab vbSourceForge vbgit en gambas)

Git is het broncode-beheersysteem dat opgestart werd door Linus Torvalds, en nu door/voor honderdduizenden projecten gebruikt wordt. Het maakt samenwerken aan broncode en aftakken plus terug samenvoegen mogelijk. Het is een client-server systeem, waarbij het serverdeel ook gebruikt kan worden van een hoster die het als online dienst aanbiedt, zoals github, gitlab, sourceforge…

ClientSecureConceptTerminologieCommando’sVragenLinks – ..gebruik..
Images: “Pro Git book” by Scott Chacon en Ben Straub, Creative Commons SA licentie


Client
git is het commando op de commandolijn, dat je kan zoeken in je software repository voor installatie (in bv OpenSUSE zoek je in Yast naar “git”, dat zal de nodige software-onderdelen afhalen, een 15-tal; * zie dependencies hier ).
De server (deamon) moet je apart installeren, maar die heb je niet nodig als je een externe dienst gebruikt.

Secure
Voor de communicatie van git heb je een publiek/private sleutel nodig; als je die nog niet hebt, in de terminal:
ssh-keygen -t rsa -C "mijnemail@mijndomein.tld" -b 4096
Resultaat in ~/.ssh/id_rsa.pub
Als je een online dienst gebruikt als gitlab, krijg/maak je een combinatie e-mail (of username) en wachtwoord. Daarmee moet je in de online instellingen je public key invoeren.
Per e-mail krijg je een bevestiging (en ook zichtbaar in de online dienst).

Concept

  • git bewaart een soort “snapshot” van een projectdirectory, waarin het een file bewaart als die veranderd is, anders een ‘link’ naar de bestaande file (in vorige snapshot)
  • git werkt zo veel mogelijk lokaal. Je hebt zelf, lokaal, een “werkdirectory”, een “staging area” en een “repository” (git directory)
  • je haalt het/een project naar je werkdirectory met clone (of “checkout”)
  • lokaal is een gewijzigde file “changed”, “staged” of “comitted”
  • het gebruikt je username en e-mail adres naast de ssh keys
  • om te vermijden dat allerlei lokale tijdelijke bestanden (van bv tekstverwerker) in je repository terechtkomen, kan je een “.gitignore” bestand gebruiken (vb).

Terminologie:

“Untracked” files: bv maak test.txt = nieuw bestand vastgesteld. (niet “in” git)
“Tracked”: bestand wordt opgevolgd door git (“index”). Na bv git add test.txt – staat dan als “new file” in status.
“Unmodified” files: bestanden die in opvolging staan (1e added) maar niet veranderd zijn sindsdien (lokaal, door jezelf).
“Modified”: bestanden in opvolging (tracked) en waar je aan gewerkt hebt. Ze zijn nog niet “staged”, dat doe je met “git add”.
“Staged” : changes to be committed; bestand in opvolging dat veranderd is én klaar staat om met een commit opgenomen te worden in de repository.
“Staging” area: waar Git de wijzigingen volgt. Op te volgen bestanden moeten in de staging area terechtkomen met git add. Deze wordt later gesynchroniseerd naar je lokale repository, die later naar de online kan geduwd worden.
“Comitted”: bestanden die staged zijn finaal in je lokale repo* opnemen met commit en voorzien zijn van commit messages, een korte/lange beschrijvende tekst die later ook zichtbaar wordt voor deze commit.
*(er is nog niet gesynchroniseerd met de online repo)
Master: standaard aangemaakte ontwikkelingstak, stam van de ontwikkelingsboom. Meestal dus de branch waarvan andere afgeleid worden.
Branch: (zij)tak, afgesplitst van tak of master (deelontwikkelingen doen, onderscheid maken tussen development en release, ..). Voor git een (verzetbare) pointer (met label) naar een commit.
Head : een soort pointer die aangeeft welke snapshot van de branch lokaal aktief is (“checked out”).
Tag : referentie om bepaald punt in ontwikkeling te markeren
Node: iedere commit maakt een nieuwe node of knooppunt in de ontwikkelingsboom.
.
(https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository)

(ingekort 29/9; Zie ook git commando’s, vb, problemen)

(meer…)

4/1/2013

Digitale recorder: ICD-P620: 1LPoS

Filed under: — cybrarian @ 6:40 pm

Een vraag van een gebruiker: ik wil mijn digitale voice-recorder ICD-P620 aansluiten op een Linux computer om de bestanden ervan over te zetten en eventueel te bewerken als dat kan.

Helaas, deze recorder mag dan nog zo goed werken, om aan te sluiten op Linux is dit 1 Little Piece of Shit. Alleen een “32-bit Windows” programma is bijgeleverd op CD, en met geen enkel ander systeem kan je er iets mee doen. Geen Linux-drivers te vinden, zelfs geen Mac software beschikbaar!

Je kan het toestel wel aansluiten met een mini-usb naar usb-aansluiting, en op het scherm van de recorder krijg je “PC LINK”, maar dat geeft geen mount-reaktie op de computer.

lsusb geeft in de laatste lijn de hardware weer:

cybrarian@akoya:~$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 007 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Bus 002 Device 002: ID 054c:0271 Sony Corp. IC Recorder (P)

Maar daar stopt het.
(iemand die het wel aan de praat krijgt: laat het weten!)

18/8/2006

Gimp voor bij de digitale camera

Filed under: — wigosix @ 5:32 pm

gimp_installedEen student die voor een opleiding videoreportage een Mac bijeengespaard had, krijgt een jaar later een digitale camera. Geld voor een programma als Photoshop is er niet.*

Niet alleen als je je geld anders wil besteden, maar ook als er geen winkel in de buurt / of niet open is op dit moment, kan je “Gimp” proberen. Het is een programma dat foto’s en andere “pixel”beelden kan bewerken, of waarin je ook gewoon vanaf nul kan beginnen tekenen.
In een vroeger artikel op deze site las je al dat Gimp op Mac een basisprogramma nodig heeft, “XFree86”. Dankzij die onderlaag is het mogelijk programma’s te draaien die voor andere unix-achtige systemen als Linux gemaakt zijn, waar Gimp erg populair is. Ik ga er dus van uit dat je diezelfde voorbereiding achter de rug hebt.

De site waar ik Gimp voor Mac vond zit op de bekende “sourceforge”:
http://gimp-app.sourceforge.net/
Op een paar minuten zou je de 86 Mb met een breedbandverbinding moeten afgehaald hebben.

Na de download heb ik een bestand Gimp-2.2.11.dmg van 82,6 Mb in mijn browser download map.
Als ik erop klik worden 4 bestanden beschikbaar:

Gimp.app
LICENSE.txt
Turn On X11 Focus Follows Mouse.app
README.txt

Ik trek de “gimp.app” naar de “applications” in de “finder” (Engelstalig systeem hier), maar starten doet hij nog niet. Ik heb me vergist en op dit systeem staat nog geen unix-“XFree” omgeving. Ofwel kan ik hem downloaden, ofwel van de mac systeem CD’s halen, wat ik nu verkies. Ik gok op CD 2 omdat ik denk dat het minder vanzelfsprekend is om te installeren. Fout dus; we zijn in mac-land en daar moet je beginnen met CD1. Op een paar minuten is het geïnstalleerd (ik volgde de vroeger vermelde instructies van deze site).

Nu op de “Gimp” klikken in de applicaties … en daar opent het “X” systeem. Ik moet daarna terug op Gimp klikken, de volgorde is blijkbaar eerst X opstarten, daarna het programma dat er in draait.

Gimp heeft een verwelkomingsscherm waarbij het de eerste instellingen doet: de installatie maakt een aantal mappen die nodig zijn, je kan een buffer en een swap folder kiezen (ik neem de voorgestelde). Gimp start met een tip en een vester met de werktuigen, een ander met de lagen/kanalen/paden. De installatie is klaar, het programma werkt. Op internet is meer info te vinden over het gebruik, en er bestaan ook boeken over. Maar ook als je dingen uitprobeert kan je waarschijnlijk al ver genoeg geraken voor de basisbewerkingen.

De officiele pagina voor gimp op mac is http://www.gimp.org/macintosh/.
Het Documentatie centrum is Engelstalig,
evenals deze Gebruikers site.
MacGimp.org is een goede nieuws-en informatie site voor Gimp op Mac.
Bij het ontbreken van de X omgeving (XFree86) vind je download en/of info op deze site, die ook vertelt dat het vanaf OS-X versie 4.x bijgeleverd is op de CD’s met het systeem.

* Een blik op een willekeurige website:
Adobe Photoshop CS 2 in het NL kost meer dan 1000 euro; de Engelstalige versie vind je een paar honder euro goedkoper. Een “Academic” versie kost – waarschijnlijk na het voldoen aan formaliteiten – toch nog altijd bijna 350 euro. En het programma Adobe Photoshop Elements, dat aangeraden wordt voor eenvoudigere fotobewerking, kost in de UK versie zo’n 90 euro.
.

15/4/2018

BBC micro:bit

Filed under: — cybrarian @ 5:26 pm

16/3/2017

PostgreSQL

Filed under: — pinguim @ 1:25 pm

Postgres

Een databank met SQL-taal, PostgreSQL – soms afgekort tot Postgres (vroegere naam Postgres95, Postgres verwees naar Ingres), is ontworpen voor gebruik op unix-achtige systemen, en is beschikbaar in de meeste Linux distributies, bij hosting providers enz.

LAMP?

De PostgreSQL wereld vertaalt de LAMP afkorting anders dan “Linux Apache MySQL Php”, en eigenlijk is hun afkorting zelfs logischer: Linux Apache Middleware PostgreSQL, waarbij Middelware staat voor de taal, bv php, python, …

De clients

Er zijn verschillende clients, als psql (commmandolijn), pgAdmin3, en phpPgAdmin.

  • psql

    Deze werkt pas als alles juist geconfigureerd is (zie PostgreSQL installeren)

    postgres@linuxbox:~> psql

    psql (9.4.9)
    Type "help" for help.
     
    postgres=#

    Of geef opties als:
    cybr@linuxbox:~> psql -d mydatabase
    cybr@linuxbox:~> psql -U myusername

    zoniet :
    psql

    psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket “/tmp/.s.PGSQL.5432”?

    psql

    psql: FATAL: role “myusername” does not exist

    (als je geen username opgeeft wordt standaard de linux user gebruikt)

    psql: FATAL: database “cybr” does not exist

    (als je geen database opgeeft en die van de user die dan als standaard genomen wordt, niet bestaat)

  • pgAdmin3 of pgAdminIII?

    Op commandolijn starten met :
    pgAdmin3
    wat een applicatie start (met een olifantfoto), en als titel heeft “pgAdminIII”

WebInterface

De bijhorende web-interface (vergelijkbaar met phpMyAdmin) is phpPgAdmin.
http://localhost/phpPgAdmin/

En MySQL?

Kan PostgreSQL geïnstalleerd worden op dezelfde server waar al een MySQL databank draait? Ja, in principe wel. Maar een praktijkvoorbeeld leert toch voorzichtig te zijn met je productieserver; bij na-installatie van postgreSQL op een bestaande distributie, eindigde ik met een fout die de webserver verhinderde te starten:
Syntax error on line 15 of /etc/apache2/conf.d/phpPgAdmin.conf
Dit heeft blijkbaar met phpPgAdmin te maken, en waarschijnlijk niets met PostgreSQL op zich, maar het effect is duidelijk.
Het heeft ook te maken met de distributie OpenSUSE 13.1, en de standaard daarin niet geladen Apache module mod_version.
Het is even snel verholpen door het toevoegen van die module in de apache configuratie /etc/sysconfig/apache2:

APACHE_MODULES=”… version”

Dan wordt het iets als:

# fairly minimal
# APACHE_MODULES=”authz_host alias auth dir log_config mime setenvif”
#
# apache’s default installation
# APACHE_MODULES=”authz_host actions alias asis auth autoindex cgi dir imap include log_config mime negotiation setenvif status userdir”
# your settings
APACHE_MODULES=”actions alias auth_basic authn_file authz_host authz_groupfile authz_user autoindex cgi dir env expires include log_config mime negotiation setenvif ssl userdir reqtimeout authn_core authz_core version”

De server

Installeer in Suse via Yast, zoek “postgreSQL” of
zypper in postgresql94 postgresql94-contrib postgresql94-server

Starten gebeurt net als bij de andere servers als root met:

systemctl start postgresql

Check systemctl status postgresql

systemctl status postgresql
postgresql.service – LSB: Start the PostgreSQL master daemon
Loaded: loaded (/etc/init.d/postgresql)
Active: active (exited) since Mon 2017-03-13 11:13:32 CET; 10s ago
Process: 12947 ExecStart=/etc/init.d/postgresql start (code=exited, status=0/SUCCESS)

Mar 12 11:13:26 pgbox su[12963]: (to root) root on (null)
Mar 12 11:13:31 pgbox postgresql[12947]: Initializing PostgreSQL 9.2.14 at location /var/lib/pgsql/data..done
Mar 12 11:13:31 pgbox su[13034]: (to root) root on (null)
Mar 12 11:13:31 pgbox su[13069]: (to root) root on (null)
Mar 12 11:13:32 pgbox postgresql[12947]: Starting PostgreSQL 9.2.14 ..done
Mar 12 11:13:32 pgbox systemd[1]: Started LSB: Start the PostgreSQL master daemon.

Installatie

Zie PostgreSQL installeren

Gebruik (verschil MySQL/MariaDB)

EN-talig bondig overzicht op deze digital ocean site

Schema
In MySQL heb je een database, die verschillende tables bevat.
In PostgreSQL heb je een database, die bevat een Schema, dat bevat Tables
database.schema.table
Zonder er op te letten heb ik mijn tables in het schema “public” gemaakt.

Tabel
– “without OIDS” staat standaard aan in phpPgAdmin (**)
– Tabel zit in een Schema (database.schema.table)
– Tabel kan gemaakt worden “LIKE parent_table” (create table like ..) dan wordt die structuur al volledig overgenomen
– Tabel kan gemaakt worden met INHERITS; dat creëert een band

Veldtypes
veld “auto-increment” -> veld Type SERIAL (*)
veldtype int -> veld Type integer
veldtype varchare -> veld Type character varying (er bestaat ook Type text)
veldtype float -> numeric (voor geldbedragen, exact), anders float (inexact)
veldtype datetime -> timestamp (without time zone?).

*) SERIAL :

  • bij het maken van de tabel, creatie van het veld, kan SERIAL worden opgegeven (is eerste keuze in lijst phpPgAdmin types); dan wordt automatisch al het nodige gedaan (en wordt het uiteindelijk toch type integer). Je moet daar verder geen type, lengte, of zo bij opgeven, wel eventueel “Primary key” aanduiden.
  • Bij SERIAL wordt automatisch NOT NULL ingevuld.
  • Als je eerst integer kiest, kan je nadien niet wijzigen naar SERIAL! (je moet dan het veld verwijderen en opnieuw maken)
  • **) OIDS: Vroeger kon je in PostgreSQL ook tabellen maken zonder “id”, en toch individuele rijen aanspreken omdat PostgreSQL zelf een soort Object IDentifierS aanmaakte, die je expliciet kon opvragen en gebruiken. Nu maak je normaal tabellen met optie WITHOUT OIDS.

Commando’s

\l = show databases
\d = show tables
\d = show tables
\d table = show columns
\d+ table = describe table

20/12/2016

openSuse Leap 42.1 naar 42.2

Filed under: — cybrarian @ 11:45 am

Einde van de updates voor 13.1! Dus tijd om een nieuwe versie te installeren. Als je alleen een 42.1 DVD bij de hand hebt, kan je die installeren, en daarna upgraden.

Een goede beschrijving, met schermafbeeldingen, is te vinden op
https://kamarada.github.io/en/2016/10/31/how-to-upgrade-from-opensuse-leap-421-to-422/#.WFkGj5_YQW0.

Kort:

  • Upgrade huidige
  • Wijzig repositories naar 42.2
  • zypper dup
  • reboot
  • Upgrade je bestaande 42.1 systeem tot het helemaal bijgewerkt is.
  • Alle repositories verwijderen, behalve de typische distro repo’s
  • Wijzig de distro repo’s van 42.1 naar 42.2 (in de naam + url)
  • Start een console: zypper ref om de nieuwe repositories te checken.
  • Nog in de console: zypper dup --download-only om de update helemaal af te halen.
  • Nog in de console (best uit je grafische omgeving gaan – of als je op dit moment herstart, niet in de verleiding komen om de updates van de desktopmelding te doen! Gewoon opstarten en NIET inloggen maar een terminal nemen op ALT F1 bv.). init 3 en daarna zypper --no-refresh dup om de update te starten.
    op het scherm staat even:
    Loading repository data...
    Reading installed packages ...
    Computing repository update ...

    en daarna komt de vraag om bevestiging. Er zal misschien een melding komen dat er niets gedownload moet worden. Bevestig nog de start met enter.
    Er wordt afgeteld bij het installeren van de paketten, bv bij mij naar 2198, telkens met de namen erbij. Eindigt op “There are some running programs that might use files deleted by recent upgrade. … etc”
  • reboot

Het bootmenu is aangepast naar Leap 42.2.
Op de desktop valt het ander icoon voor KInfocenter op.

Daarna kan je nog eens naar de update instellingen kijken, en nieuwe software installeren.
Of eerst repositories toevoegen, bv de “community” repositories als packman, libdvdcss enz..

Voor “bekende” software: One click install, bv:
Gambas
Gambas2 zit in de KDE3 packages: software.opensuse.org/package/gambas2 voor Leap 42.2; nadien de IDE bij installeren!

Gambas3 zit in de Education packages software.opensuse.org/package/gambas3; nadien de IDE bij installeren!
ps: werkt oorspronkelijk niet: “unable to find startup file”.
Er blijken in yast nog heel wat onderdelen installeerbaar; ik duid elke keer aan wat op de commandolijn als ontbrekend wordt gegeven bij het commando gambas3.gambas; gb.- gui.qt, form.terminal, inotify, geom; daarna start de IDE alvast op.
Er zijn nog veel componenten installeerbaar: pdf, webkit, report, script, media, mime, httpd, chart, compress, dbus, data, crypt,odbc, mysql, …

Arduino
Voor arduino programmering de zogenaamde ChrossToolchain:
– Versie 1.0.6 (-3.5; oud en niet meer geüpdate)
– Versie 1.6.12 (overschrijft eventuele 1.0.6).
Vergeet niet de gebruikers toe te voegen aan de groepen “dialup”, “lock” en “uucp”.

QCAD
– rechtstreeks uit Yast, Install Software
– v. 2.0.5
– gebruikt Qt3 libraries.

Inkscape 0.91, Filezilla 3.12, Scribus 1.4.6, mc 4.8.15, …

4/11/2016

Industruino Proto met Arduino-hart

Filed under: — cybrarian @ 3:38 pm

De Industruino
Een Belgisch(*) product, gebaseerd op Arduino: de Industruino. Een klein kastje, de grootte van een thermostaat of zo, met Arduino processorbord, en schroef-aansluitingen voor de in- en uitgangen. Te programmeren in de gewone Arduino IDE (met extra Arduino/Industruino bibliotheken), en te monteren op een standaard DIN-rail in een electriciteitskast.
Je hebt een voeding nodig van 12 of 24 volt (kan met een rail-gemonteerde voeding ernaast).

* Leek zo vanwege Europese verdeling vanuit België en Belgische vlag bij support-antwoorden; ondertussen is duidelijk dat de Belg vanuit China werkt.

Arduino + scherm
Zonder geknoei maak je gemakkelijk een echte toepassing met een scherm en een paar knoppen. Het is ook ongelooflijk handig om een scherm te hebben op een bord waarvan de functie nog verandert tijdens het gebruik.

Versies
Er zijn twee versies:

  • Proto: met prototype bord onder het brein, om zelf enkele componenten op te solderen.
  • Ind I/O: voor zwaardere in- en uitgangen op niveau van PCL-sturingen in de industrie (24V).

Van ieder toestel bestaat een versie met meer geheugen (andere processor).
Er is een bijhorende uitbreidingsmodule die een netwerkaansluiting en een mini-sd-kaartlezer biedt.

Gebruik en installatie
– Je moet de delen samenbouwen: het “top board” bevat behalve het scherm ook en vooral de processor, en heeft de aansluiting voor de kleine usb-stekker.
– Eerst de Arduino programmeeromgeving installeren (versie 1.0.6 of 1.6.x).
– Uitbreidingen installeren voor Industruino scherm, en naargelang de versie van de hardware ook daarvoor hardware uitbreidingen en bibiotheken.
– zie uitgebreider onderaan: terminologie, installatie-log.

Conclusie
De industruino “Proto” is enorm handig om prototypes te maken, maar ook om onmiddellijk een toepassing te bouwen. Je kan de grote lijnen van een idee uitwerken op een breadboard met je gewone Arduino/Genuino (of compatibelen), en met industruino heb je een kant en klare behuizing.


Terminologie en numerologie
UC1701 : library for Industruino LCD functionality
INDIO.h : librarry voor Industruino IND.I/O Baseboard (Arduino IDE versions 1.6.+); nodig voor groene schroefaansluitingen;
Wire.h : library voor I2C (expander op Indio)
EthernetIndustruino: voor Ethernet module (gebased op de standaard Arduino Ethernet library).
SPI.h : , SPI library; Ethernet module is verbonden over SPI (dus #include SPI.h)
FRAM : ..

Installatie topboard, scherm en ethernet uitbreiding
Industruino installeren, doel:
– de werking testen met een voorbeeldprogramma, bv met de knipperende led sketch.
– je eigen programma inladen.

1. Uitbreiden van de (Arduino IDE) softwareomgeving met het industruino bord

– Voor de gewone Industruino Proto (top board Atmega32u4) is dat voldoende omdat die werkt als een Arduino Leonardo, maar je moet wel de bibliotheken voor het scherm toevoegen.

– Voor de Industruino Proto “1286 MCU variant” (meer geheugen en top board AT90USB1286) moet je bijkomende uitbreidingen installeren om ermee te kunnen werken, werkt op dit moment (begin 2017) niet met de huidige versie van de Arduino IDE 1.6.13.

Uitleg op https://industruino.com/page/techcentre
met link naar support file package: Industruino_support_file_package_1.6.zip
van https://static.industruino.com
Uitpakken maakt een struktuur van mapjes met bestanden, met telkens een “readme”:

Please copy the “Industruino” folder into your Arduino IDE “Hardware” folder;

Folder location on Mac: Applications/Arduino.app/Contents/Resources/Java/Hardware
Folder location on Windows: C:\\Program Files (x86)\\Arduino\\Hardware\

After you restart the Arduino IDE please select “Industruino 1286” from the “Tools->Board” menu. You are now ready to upload code to your Industruino.

Niets voor Linux gebruikers?
– het werkt als je in de Arduino directory een map “hardware” maakt, en daar de “Industruino” map in kopieert uit de uitgepakte map “1286 Board definition”.
– met de meest up-to-date versie van de Arduino programmeeromgeving heb je wel een probleem, die is op dit moment nog niet ondersteund, waardoor je bij het compileren van je programma een foutmelding krijgt. Tot 1.6.5 zou ok zijn, in OpenSUSE/42.2 zit ik momenteel aan 1.6.13.

2. Uitbreiden van de bibliotheken met de LCD bibliotheek
– https://github.com/Industruino/libraries
– eenvoudige module (minder geheugengebruik): een aangepaste UC1701.
(je kan een download doen van de libraries/master, daar zit alles in)
De voorbeelden uit de directory Libraries naar Arduino/libraries
Daarin komen de mapjes: EthernetIndustruino, Indio, UC1701

3. Uitbreiden van de bibliotheek met de ethernet bibliotheek
– https://github.com/Industruino/libraries (je kan een download doen van de libraries/master, daar zit alles in)
– “EthernetIndustruino”

Na stappen 2 en 3 zijn die zichtbaar in de programmeeromgeving;

Menu “Sketch, bibliotheek importeren, industruino”

Geeft:

#include
#include < dns .h >
#include < ethernetclient .h >
#include < ethernetindustruino .h >
#include < ethernetserver .h >
#include < ethernetudp .h >
#include < twitter .h >
#include < util .h >

en bij de voorbeeldbestanden te laden via:
“Bestand, voorbeelden, EthernetIndustruino”

“Bestand, Sketchbook, libraries, EthernetIndustruino”

IDE
De IDE crasht regelmatig, maar hij is snel terug op te starten (gebeurt meestal bij het uploaden van de code naar industruino). Soms ben ik ook de seriële poort kwijt (enkel nog dev/ttyS0 ipv ook dev/ttyACM0 die ik moet selecteren voor de industruino) en moet ik de IDE herstarten of de USB-kabel opnieuw verbinden.

4/9/2016

Arduino link compilatie

Filed under: — cybrarian @ 9:59 pm

In de wetenschap dat links soms snel hun houdbaarheidsdatum overschrijden …

The Arduino Starter Kit Datasheets

Over de op C lijkende Arduino programmeertaal

Arduino en Gambas!

Audio naar pc-luidspreker

Arduino en geluid

Funduino gebruiksvoorbeelden (arduino compatible)

  • Funduino – Kits und Anleitingen für Arduino
  • Funduino GmbH, 2016
  • Handleiding gebruik Leds, bewegingsmelder, afstandsbediening, vochtigheidsmeter, relais, RFID, …
  • http://funduino.de

Toetsenbord gebruik

Arduino/sainsmart UNO projecten

  • Sainsmart starterkits handleiding
  • Sainsmart.com, /10/2016
  • Zip met pdf boek 103 blz + aparte mapjes met projectcode/hoofdstuk, goede beschrijving, foto’s, enz.
  • sainsmart zip bestand

(meer…)

19/6/2016

Arduino project 02: van LEDs naar Rood, Goud, en Groen

Filed under: — cybrarian @ 10:52 pm

Terminologie in het Nederlands voor gebruikers van het Engelstalig Arduino Projects Book bij de starter kit.
Aangevuld met een variant op het beschreven project (02 in Arduino IDE Examples, 10 Starterkit)

Project 02
In het tweede project worden 2 rode leds en één groene gestuurd vanuit het programma; het detecteren van een knopdruk verandert de loop van het programma en de toestand van de leds.

Arduino’s digitale verbindingen hebben de mogelijkheid om zowel voor invoer gebruikt te worden, als voor uitvoer, mits anders gedefinieerd vanuit het programma.

Terminologie:

High: hoog, dat betekent dat er spanning op zit of gezet wordt.
Low: laag, dat betekent dat er geen spanning op zit of gezet wordt.

Programmeercode

Dit is het eerste project waarin geprogrammeerd wordt. De basis van zowat elk Arduino programma bestaat uit twee procedures, één om instellingen te doen, en één voor het lopen van het programma (eindeloos herhalen, vandaar “loop” of in een kringetje draaien), meestal bestaat het uit iets meten en reageren.

void setup(){
// code
}

void loop(){
// code
}

Je kan dit bewaren als “leegproject.ino”, en hiervan telkens beginnen.

Syntax
Commmentaar volgt achter twee schuine streepjes, code wordt meestal afgesloten met een puntkomma en structuren worden begrenst door accolades. Void betekent dat er geen waarde teruggegeven wordt door de procedure. Variabelen worden voorafgegaan door hun type bij declaratie.

Variant
Als de middelste rode led vervangt door een gele, krijg je rood-geel-groen, de kleuren en volgorde van een verkeerslicht.
Door een paar aanpassingen aan het programma laat je de gele led knipperen als begintoestand, en vanaf de druk op de knop gaat een aantal keer de gewone verkeerscyclus gevolgd worden met rood, groen, kort oranje en weer rood.

CODE …
(meer…)

18/6/2016

Arduino kennis compilatie

Filed under: — cybrarian @ 11:45 pm

Een paar handige dingen samengevat:

Terminologie
Schakelingen
Code
Voeding
Ideeën

Op basis van experimenten uit het Arduino documentatie, projecten uit Arduino Projecten boek en eigen varianten daarop (zie andere LigLog Arduino artikels), en andere Arduino-achtige documentatie (…)

Terminologie alfabetisch:

  • Anode: + kant van LED (voedingsspanning +)
  • ADC: Anoloog – Digitaal Convertor (ingeboud in arduino via A0-A5)
  • Buzzer, active: piezo met ingebouwd sturing voor frequentie van de toon, moet alleen spanning krijgen.
  • Buzzer, passive: piezo die aangestuurd moet worden met een pulserende spanning (audio) om een bepaalde toon te krijgen, vlg luidspreker.
  • DC motor: motor die draait naargelang er stroom door gestuurd wordt; +/- omkeerbaar. pieken!
  • Kathode – kant van LED (ground -)
  • LCD : Liquid Christal Display, bv 2 regels van 16 tekens.
  • LDR : Light Dependent Resistor (zie Photoresistor)
  • PWM Pulse Width Modulation. Pulserend stroom geven om een lagere gemiddelde waarde te bekomen; bv bij een led om die minder hard te doen branden.
  • Photoresistor: lichtgevoelige weerstand; de weerstand verandert naargelang het licht dat erop valt.
  • Piezo: behuizing met trillend membraan; niet gepolariseerd, gestuurd door bv tone(9, 440).
  • PinMode: pinMode(pinNumber,OUTPUT); // INPUT
  • PinWaarde zetten: digitalWrite(pinNumber, LOW); // HIGH
  • PinWaarde lezen: digitalRead(pinNumber); // -> LOW/HIGH
  • PinWaarde Lezen 0-1023: int sensorVal = analogRead(sensorPin);
  • Pulse Width Modulation: zie PWM
  • Serial: Seriële communicatie, stuurt naar seriële poort (usb)
  • Servo motor: 180 graden met pulse tussen 1000 en 2000 milliseconden stuurbare motor (waarden 0-179). Pieken!
  • TMP36: temperatuur voeler, meet lineair de temperatuur naar spanning u; omzetten naar °C op basis van eigenschap, bv (u – 0.5)*100.

TerminologieSchakelingenIdeeën … —

Schakelingen

enkele handige dingen om te weten en op te letten

LCD: pinnen als:

  • RS: Register Select, soort cursorfunctie
  • R/W : Read/Write pin, hier meestal in Write mode.
  • EN : Enable; vertelt dat commando komt.
  • D0..D7: Data pins om (letter)tekens naar het scherm te sturen
  • GND: ground
  • 5V: voeding +

LED + voorschakelweerstand 220 Ohm (rood-rood-bruin) hier bij 5 V; deze leds zijn max 23mA.

LED RGB (R lange-min B G) + voorschakelweerstand 220 Ohm (rood-rood-bruin) per kanaal RGB [project 1]

Drukknop (switch) : 4 pinnen; 2 pinnen die uit 1 metalen stripje zouden kunnen bestaan zijn inderdaad intern doorverbonden; dus 2 aansluitpunten per kant. [project 1]

Drukknop uitlezen: digitaal LOW (switch open) uitlezen veronderstelt: [project 2]
plus – draad- switch in – switch uit :
1) weerstand 10 kOhm (or-zw-br) – min
2) draad naar digitale leespin.

TMP36: met platte kant naar je toe (leesbaar): [project 3]
– L voeding +
– M : uitleeswaarde naar Analoge input op Arduino, bv A0
– R : naar –

Lichtvoeler (Photoresistor) + 10 kOhm (or-zw-br) naar min;
plus – lichtvoeler – 1) analoog in 2) weerstand 10 K – min

Draaiknop (potentiometer): verdeelt de stroom;
– plus
– evoluerende waarde, uitleesbaar met analoog in
– min
Eventueel een condensator over de plus – min (bv combinatie sturing servomotor)

Piezo: digital out – piezo – gnd

Servomotor: trekt plots stroom pieken, af te vlakken door een condensator 10 uF (microFarad) over plus-min.
– plus
– witte draad komt van digitale uitgang Arduino (bv pin 9)
– min

TerminologieSchakelingenIdeeën … —

Code

Arduino pogramma’s worden sketches genoemd. Daaruit:

serial:
Gebruiken van usb-verbinding als seriële poort voor communicatie naar computer:
bv Serial.begin(9600); Serial.print(“..”);
af te lezen met bv de serial monitor op de computer.

lcd

Voeding

De Arduino krijgt spanning via de usb-poort, m.a.w. van je computer/laptop/usb-voedingsstekker.
Maar de Arduino heeft ook een voedingsaansluiting, voor een rond stekkertje (2,1 mm). Helaas staat er niet bij welk voltage en welke polarisering de voedingsdraad moet leveren.

Volgens de officiële site:

9 tot 12 volt, min. 250 mA, kern positief (midden +)

Het vermogen van de voeding: voor alleen Arduino is 250 mA genoeg, maar koppel je de voeding door naar een bordje waar een aantal leds en andere componenten (motor) op aangesloten worden, ga je beter naar 500 mA of 1000 mA (= 1A).

Ze geven er een voorbeeld van een voeding.

Ideeën

  • Verkeerslicht (leds, voeler)
  • .. met voetgangerslicht (leds, voeler, drukschakelaar)
  • Handbeweging boven buisjes “toveren” … (lichtgevoelige cellen)
  • Bareel zoals aan spoor (servomotor)
  • ..
  • combinatie van allerlei onderdelen van de starterkit: een flipperkast?

TerminologieSchakelingenIdeeën … —

22/5/2016

Arduino (IDE) in gebruik: Hello World?

Filed under: — cybrarian @ 11:33 pm

Zie ook Arduino Starterkit en Arduino IDE installatie

Eerste gebruik

Eens de software geïnstalleerd op Linux, zijn ze op het punt gekomen van http://www.arduino.org/learning/getting-started/getting-started-arduino-uno.

Als ik het goed begrijp is dit de volgorde:

  1. arduino software opstarten
  2. usb-kabel aansluiten
  3. software menu Tools, bord kiezen (arduino UNO)
  4. software menu Tools, poort kiezen (serieel)

Bij het aansluiten van de kabel gaat de groene “ON” led op het bord aan. Ook knippert een gele “L” led tijdelijk, maar die gaat weer uit.

In de software, bij Tools, bord UNO staat al geselecteerd, en bij Seriele poorten krijg ik keuze uit:

  • /dev/ttyACM0
  • /dev/ttyS1

Als je even kijkt wat het systeem ziet na aansluiting (terminal dmesg):

[ 6464.723055] usb 7-1: new full-speed USB device number 2 using uhci_hcd
[ 6464.905570] usb 7-1: New USB device found, idVendor=2a03, idProduct=0043
[ 6464.905583] usb 7-1: New USB device strings: Mfr=1, Product=2, SerialNumber=220
[ 6464.905591] usb 7-1: Product: Arduino Uno
[ 6464.905598] usb 7-1: Manufacturer: Arduino Srl
[ 6464.905604] usb 7-1: SerialNumber: 7543536303835191B1A2
[ 6465.198641] cdc_acm 7-1:1.0: ttyACM0: USB ACM device

Is het duidelijk dat we ttyACM0 moeten kiezen.

(Check of EasyDFU draait als je ACM0 niet vindt; start net als de IDE op de commandolijn “EasyDFU”)

Programma
We kunnen het eerste programma laden, waarvoor niets op de Arduino moet aangesloten zijn (behalve de usb kabel):

File, examples, 01.Basics, Blink

Er komt een broncode programma op het scherm in de IDE (meer nog, bij mij kwam er een tweede IDE venster naar boven met de code, het eerste lege bleef ook staan, misschien omdat ik daar per vergissing een spatie of zo getikt heb, en het als gewijzigd wordt beschouwd).

Eigenlijk had ik nu de leds van TX en RX moeten zien reageren (Transmit en Receive herinner ik me nog van de modems). Maar ik zag niets, misschien omdat het te snel ging? De led “L” knippert wel, en blijft knipperen, maar deed die dat daarvoor ook al niet?

Beste test is de broncode van het programma aanpassen en kijken of de led anders knippertl; dit wordt de “hello world” voor mijn Arduino.

De tijdsinstelling zit in delay(1000);. Ik vervang de “loop” door:

digitalWrite(13, HIGH);
delay(2000); // short on, longer out
digitalWrite(13, LOW);
delay(4000);

en ik druk terug op de upload knop in de IDE. Nu zie ik de leds TX en RX inderdaad reageren, en het ritme van knipperen verandert zoals ik verwachtte.

Met dit eenvoudig programma kan je waarden veranderen en stukjes code kopiëren; (bv een tijd van 10 is nog zichtbaar, zelfs 1 nog als je geen te fel omgevingslicht hebt). Na elke verandering moet je de code terug naar het Arduino bord sturen, je programmeert immers niet direkt het bord, maar “upload” het programma.

De IDE software afsluiten heeft dus helemaal geen invloed op de werking van Arduino. Wijzigingen aan voorbeeldprojecten kan je bewaren in een eigen gekozen map (de voorbeelden zijn tegen overschrijven beschermd); een nieuwe map met de projectnaam bevat een bestand met de uitgang .ino.

Ok, nu mijn knipperend apparaat uitschakelen. Daarover niets in het begin van het projectenboek, maar de oplossing is eenvoudig: voedingskabel uittrekken (usb kabel indien die de voeding geeft).

Dit bord is geen computer. Het heeft geen operating system dat op een correcte manier een bestandssysteem moet afsluiten. Je kan dus gewoon de voedingskabel uittrekken.

Wel belangrijk is om het bord altijd zonder stroom te zetten op het moment dat je bezig bent met componenten installeren.

25/12/2015

Hello Sailfish

Filed under: — cybrarian @ 9:27 pm

De programmeeromgeving voor Sailfish is geïnstalleerd. De eerste test is typisch “hello world”.

Start de programmeeromgeving (SailfishOS IDE in Qt Creator). Je krijgt een “welcome”-scherm met links “Nieuw project” en rechts “Open Project” (hier komen vanaf de volgende keer Recent gebruikte projecten te staan).
Kies voor SailfishOS mode, links in de lijst met iconen.
Melding: The MerSDK VM is not running. (start the virtual machine levert een foutmelding op “The virtual machine is running but not responding”).

Menu “File, New File or Project”.
Selecteer SailfishOS. “Choose…”
De plaats waar het project bewaard wordt en de naam worden gevraagd (deze mag geen spaties bevatten, maar een streepje – mag wel).
Kit Selection: Er zijn er twee zichtbaar:

  • MerSDK-SailfishOS-armv7hl (staat af): voor de Jolla phone (aan als je deze app inderdaad daar wil draaien)
  • MERSDK-SailfishOS-i486 (staat aan) voor de emulator.

Application Details: Geef samenvatting, versienummer en beschrijving. Bevestig.
Je krijgt een project overzicht, en de mogelijkheid om het als een subproject van een ander project in te stellen, en de mogelijkheid om broncode versie-systeem (version control) te gebruiken (zoals git). Kan je hier overslaan. “Finish”.

Er opent een editor scherm met een aantal stukken tekst vooraf ingezet; een aantal import statements, en een ApplicationWindow stukje met 4 lijnen code.

/* ... */
import QtQuick 2.0
import Sailfish.Silica 1.0
import "pages"

ApplicationWindow
{
initialPage: Component { FirstPage { } }
cover: Qt.resolvedUrl("cover/CoverPage.qml")
allowedOrientations: Orientation.All
_defaultPageOrientations: Orientation.All
}

Onder Open Documents zie je *:

  • CoverPage.qml
  • FirstPage.qml
  • HelloSailfish.qml
  • SecondPage.qml

(* beeld heeft andere projectnaam)
SailfishOS-FirstAppOpenDocuments

Onder Sources/src zie je HelloSailfish.cpp
Die bevat na wat includes de minimale code:
int main(int argc, char *argv[])
{
return SailfishApp::main(argc, argv);
}

Het HelloSailfish.qml bestand bevat een aantal imports en de ApplicationWindows, wat het hoogste niveau is in je app. Hier wordt de eerste pagina (eerste weergegeven scherm) vastgelegd, en ook de “cover” van je app, die getoond wordt als je app niet op vol scherm draait.

Problemen, foutmeldingen

Er is nog niet zoveel over Sailfish verschenen, maar een waardevolle bron is zeker deze pdf: https://github.com/hardcodes/developwithsailfishos. Geeft uitleg voor installatie van de programmeeromgeving op verschillende platformen (Linux, Mac, ..). Maar kijk zeker ook even door naar Know your tools, vanaf blz 42; daar vind je soms uitleg die kan helpen problemen op te lossen.

Enkele foutmeldingen:
Geen verbinding – key refused
Keys terug opgebouwd of ververst, virtual machine herstarten.
Geen groene “run” knop
Na Debug/Deploy – copy binaries – werkte de RUN knop wel.

4/10/2015

SailfishOS (developer) Links

Filed under: — cybrarian @ 8:20 pm

Algemeen:

2015-10-04 Sailfish OS (sailfishos.org/)

2015-12-25 : Gebruikersomgeving, concepten https://sailfishos.org/design/ux-framework/

Ontwikkelen/programmeren voor Sailfish:

2015-12-25 : Een pdf Developing with SailfishOS, a short introduction, (meer dan 100 pagina’s) https://github.com/hardcodes/developwithsailfishos
met meest recente in github en een link naar de pdf

2015-12-25 : Harbour Jolla App Store / droogdok https://harbour.jolla.com/

2015-12-25 : Qt ontwikkelomgeving http://www.qt.io/ide/

2015-12-25 : Virtualbox voor Sailfish emulator https://www.virtualbox.org/wiki/Downloads

2015-12-25 : MER http://merproject.org/

2015-10-04 Programmeren voor Sailfish; vb “noto” app (on youtube)

2015-12-25 : 1ste app https://sailfishos.org/develop/sdk-overview/develop-firstapp-article/

2015-12-25 : Blog met Sailfish programmeerervaring http://nckweb.com.ar/sailing-code

Powered by WordPress