8/6/2017

“Pro Git”-boek ook in Nederlandstalige versie

Filed under: — cybrarian @ 3:47 pm

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

Git is het broncode-beheersysteem dat opgestart werd door Linus Torvalds, en nu door/voor honderdduizenden projecten gebruikt wordt. 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..


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).
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: test.txt = nieuw bestand vastgesteld.

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

Commando’s

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

Deze configuraties worden met –global eenmalig gedaan; je kan ze zonder global uitvoeren voor een project met afwijkende gegevens.
Je kan op dezelfde manier je editor en diff tool instellen.
Bekijk de instellingen met (de laaste lijn) –list. (antwoord leeg=geen instellingen)

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.

git status = overzicht toestand, bv nieuwe bestanden enz
git add test.txt = toevoegen aan staging (unstage git rm –cached test.txt);
git add '*.txt' = als wildcards gebruikt worden: aanhalingstekens
git
git commit -m "beschrijving van de inhoud of wijziging" = 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 log = geeft in volgorde al de laatste handelingen

git remote add korteNaam git@gitlab.com/userdirectory/repository.git = aanmaken 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 push -u korteNaam master = alles naar online

git pull korteNaam master = alles terug binnenhalen om te werken.

git diff HEAD = verschillen zien tov laatste commit, meest recente=’HEAD’
git diff --staged = verschillen zien eigen staged tov laatste online pull

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 checkout branchename_voor_mij = overschakelen naar branch

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

Ik wil …

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

git status
# On branch master
# Your branch is ahead of ‘origin/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)

– 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
  • Wat met .png, .jpg, enz. Apart opslaan omdat ze binary zijn?
  • 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?

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

(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