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).
Ook als je een project hebt waar verschillende onderdelen zullen bestaan, of je op een andere manier programma’s wil groeperen, gebruik je een project. Je kan zelfs daar nog sub-projecten van definiëren.

Hoofd/kleine letters: Hoewel je de group en projectnaam met een hoofdletter kan laten beginnen, wordt de directory van je project (eigenaardig genoeg) met een kleine letter geschreven in het bestandssysteem (althans bij GitLab – is dit een toegeving aan Windows gebruikers? Het is in ieder geval vervelend als Linux gebruiker, waar MijnMap niet hetzelfde is als mijnmap).

Na create blank project in de web-interface krijg je in te vullen:

  • name
  • URL (wordt aangeboden op basis van je naam en huidige project
  • slug (“Mijn Project” wordt “mijn-project” voor directory vorming)
  • description
  • visibility level (private staat standaard aan, groep heeft toegang)
  • Initialise with README is aankruisbaar, maakt README.md

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.
(upd: dit lijkt ondertussen veranderd te zijn, volg online instructies)
Afhalen met:
git clone git://git@gitlab.com:userORgroup/projectname.git
(of gebruik hun web-interface om de juiste url te knippen/plakken, zoals hier beschreven.)
Meer basiscommando’s

cybr@penguin:~/Git/NieuwPrj> git clone git@gitlab.com:devgroup/nieuwprj.git
Cloning into 'nieuwprj'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.

In directory Test: git clone git@xxx/persis3-prj.git
maakt in de dir waar je staat:
persis3-prj
met daarin: README.md

dus je moet zelf niet die prj directory aanmaken. Als je een niveau prj directory hebt met aanverwante files en ook daarin een application directory met de broncode, kan je die zo automatisch maken door de clone opdracht.

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).
Guest Reporter Developer Maintainer Owner
– Rondkijken kan iedereen, labels toekennen bijna iedereen.
– Reporter kan met issues/requirements/tasks werken
– Developer repo’s/project wiki/security dashboard…
– Maintainer team/members, repo protection…
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.

Project verwijderen
(upd. 29/06/2021)
Ingelogd, “settings” (linkerkolom), “General”, “Advanced” (openklappen), helemaal onderaan “Delete project”
Daar staat ook bij “Delayed project deletion / Disabled”, en onderaan de knop “Delete project”.
Er wordt nog gevraagd of je “absolutely sure” bent, en je moet iets (bv de projectnaam) typen om te bevestigen.
Je kan daarna het project terug aanmaken met dezelfde naam, het krijgt een nieuwe project ID.

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.

27/6/2017

openSUSE zypper update: … package updates will NOT be installed

Filed under: — cybrarian @ 9:14 am

Bij een update met zypper krijg je soms een melding als:
#zypper up
Loading repository data...
Reading installed packages...

The following 126 package updates will NOT be installed:
(...) gnome-calculator gnome-calculator-lang gnuchess gstreamer-plugins-bad
gstreamer-plugins-bad-lang javapackages-tools k3b k3b-lang libavcodec57 libavformat57 libavutil55 libblas3 libbzrtp0 libenca0 libfftw3-3 libFLAC++6 libFLAC8
libgstadaptivedemux-1_0-0 libgstbadaudio-1_0-0 libgstbadbase-1_0-0 libgstbadvideo-1_0-0 libgstbasecamerabinsrc-1_0-0 libgstcodecparsers-1_0-0 libgstgl-1_0-0
libgstmpegts-1_0-0 libgstphotography-1_0-0 libgsturidownloader-1_0-0 libgstwayland-1_0-0 liblapack3 libmjpegutils-2_0-0 libquicktime0 libsox3 libswresample2
libswscale4 mjpegtools python-numpy sox xboard

Nothing to do.

(…) op de puntjes nog een aantal lijnen met packages opsomming; hier wat ingekort.

Wat betekent die hele lijst van NIET geïnstalleerde updates, waarom worden ze niet geïnstalleerd, waarom is er trouwens dan “Nothing to do”?

Volgens een uitleg op een openSUSE forum post gaat het om software die in verschillende repositories voorkomt. Zypper ziet hogere versienummers voor de paketten in de lijst. Maar omdat ze in een andere repository staan dan de geselecteerde (geïnstalleerd versie), doet zypper niets.
In Yast, software beheer kan je gaan kijken naar de geïnstalleerde software, versienummer en repository waar die uitkomt of waar er een alternatieve versie bestaat. Aangezien in die andere repository misschien een ander soort nummering wordt gevolgd, is het zelfs niet zeker dat de interpretatie van zypper (dat er een “hogere” versie bestaat) juist is, en het is dus normaal dat zypper er niets mee doet. Wil je wel van versie veranderen dan kan je de prioriteit van de repositories aanpassen zodat de gewenste versie een “hogere” prioriteit heeft.

De melding van zypper zou duidelijker kunnen zijn:

The following 126 packages might have higher version numbers but will not be installed:...

Referentie:
de openSUSE forum post

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).

Upd: gitlab raadt ed25519 aan ipv RSA; dus: ssh-keygen -t ed25519 -C "mijn laptop"
Daarna vanop de commandolijn: ssh -T git@gitlab.com

Welcome to GitLab, @cybrarian.copyleft!

Tenminste als je voordien
git config user.name "cybrarian.copyleft"
en
git config user.email cybrarian@somevaliddomain

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/6/2017

Sonic Pi

Filed under: — cybrarian @ 10:13 pm

Sonic Pi is een programmeeromgeving (IDE) voor muziek. Je kan er muziek in programmeren en eventueel tegelijk uitvoeren.
Ze is ontwikkeld voor Pixel op de Raspberry Pi, Pixel draait nu ook op gewone pc hardware.

Een klein geheugensteuntje bij gebruik:

Concept, programmeer-strukturen, eigenaardigheden, ...

Programmeerstrukturen (ga eerst naar concept)

1. Lineair

play 50  # speel deze toon


play 50
play 60 # en speel deze toon (tegelijk!!)

play 50
sleep 1
play 60  # begin deze toon na 1 wachttijd 

2. Loop

n.times do
  play x
  sleep y
end

live_loop :myname do
  play x
  sleep y
end

Deze blijft doorlopen tot je zelf manueel stopt of hij crasht, en wordt gebruikt bij het live performen.

3. Choose

r = [0.125, 0.25, 1].choose
play n, release: r

4. tick


notes= (ring :E4, :Fs4, :B4)
live_loop :slow do
  play notes.tick
  sleep 0.3
end

5. shuffle
(schud een lijst dooreen?)

6. one_in

one_in(2) geeft TRUE of FALSE met probability 2

Concept, programmeer-strukturen, eigenaardigheden, ...

Concepten

1. Code

Een tekstverwerkervenster waarin je “sonic pi” code schrijft om de muziek te definiëren.
Als je op “run” drukt, wordt de huidige editor-code uitgevoerd.
Er zijn verschillende tab-bladen, die “buffer” genoemd worden. Je kan elke buffer van eigen code voorzien, en iedere buffer wordt apart opgestart. Je kan een buffer niet stoppen, je kan enkel de hele uitvoering stoppen.

2. ring

ringnaam = (ring :e3, :e3, :r, :g3, :r, :r, :r, :a3)
melodie van opeenvolgende noten en rusten, op te roepen met optionele parameters:
play ringnaam.tick, release: 0.25, cutoff: 80

3. random

Random (altijd dezelfde) waarde vragen met:
print rand
Dat is de eerste van 441.000 random getallen die gegenereerd werden bij het starten.

rand = random
rrand = random uit een reeks
rrand_i = random geheel getal uit een reeks
one_in = geeft true of false met een gegeven probabiliteit
dice = waarde van 1 tot 6
choose = kiest random waarde uit een lijst

Om een muziekuitvoering voorspelbaar te houden is de random geen echte random, maar een op voorhand bepaalde reeks van waarden. Je kan naar een startpunt in die reeks springen met
use_random_seed 3
gebruik
play rrand_i(50, 95)
mycofreq = rrand(30, 100)
play n, cutoff: mycofreq

sample: drum_bass_hard, rate: r, amp: rand

4. geluiden

Emulaties bekende synths:
use_synth :tb303 / :prophet

use_synth :blade / :hoover / :piano /

Synthetiseren
use_synth :fm / :dsaw / :supersaw / :pulse / : subpulse

Parameters bv:
note, amp, pan, a d s r, a d s_level env_curve, cutoff
vibrato_rate, vibrato_depth, vibrato_delay, vibrato_onset
detune, divisor, depth, vel, hard, stereo_width, …

5. filter fx

with_fx :bitcrusher do play 50 end

with_fx :compressor do play 50 end

with_fx :echo do play 50 end

with_fx :flanger do play 50 end

with_fx :krush do play 50 end

with_fx :lpf do play 50 end (low pass filter)

with_fx :pan do play 50 end (pan -1..0..+1)

with_fx :slicer do play 50 end (phase in-out)

with_fx :panslicer do play 50 end (stereoverschuiving, phase 0.25 …)

with_fx :reverb do play 50 end

with_fx :wobble do play 50 end (modulate rlpf, rhpf filters)

6. samples

sample: ambi_choir / bd_haus / bd_tek / loop_industrial / ..

parameters:
start, finish, norm, window_size, pich_dis, time_dis
amp, pan, rate, res, cutoff,
attack, decay, sustain, release, a d s_level
env_curve, cutoff_env_curve, cutoff_min
cutoff_a d s r_level

Concept, programmeer-strukturen, eigenaardigheden, ...

Eigenaardigheden
of (voor mij) onbeantwoorde vragen

1. Buffer af?
je kan een buffer aktiveren door alt-R, maar je kan een buffer NIET UITSCHAKELEN. Dan moet je in de code iets doen (uitcommenten, de code wegknippen, enz) en dan terug alt-R in die buffer om hem in de volgende loop te doen zwijgen.

2. …

Concept, programmeer-strukturen, eigenaardigheden, ...

Powered by WordPress