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 files in mijn project? (upd 2024)
Inderdaad wordt er een verborgen directory gemaakt met de files die git nodig heeft voor zijn werk. Wil je terug een “zuivere” kopie zonder die git files, een “export”, dan kan je bv een “archive” laten maken door git-archive; daar zit geen .git directoy in.

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 commit --amend vergist in tekst van commit? edit..

git log = geeft soort “history”, 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 diff --color > ~/diff.txt verschillen inclusief kleurcodes bewaren om terug te kunnen zien met bv cat diff.txt

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

20/9/2017

KMail verzonden komt niet aan

Filed under: — cybrarian @ 10:11 am

Bij het melden van een fout ivm het vesturen van e-mail over een proximus verbinding, werd me detail-informatie gevraagd over de verzonden mail.
Die kon ik in de headers van de outbox van kmail niet vinden, ook niet met “All headers” aangezet in de opties.

KMail gebruikt een hulpmiddel voor het verzenden van de mail, nl Akonadi. Daar ten rade dus, maar Akonadi komt als applicatie niet voor in je desktop menu.

Open een terminal of ga via menu naar “run command” en tik:
akonadiconsole

Het programma Akonadi Console laat toe om “Enable debugger” aan te vinken. Als je dan een mail verstuurd kan je allerlei details zien.

Er zijn volgende tabbladen:

Agents – Browser – Debugger – Raw Socket – DB Browser – DB Console – Job Tracker – Resources Scheduler – Notification Monitor – Item Search

De Debugger heeft/krijgt nog sub-tabbladen als akonadi_maildir_resource_0

Je ziet er dingen als:

855 UID FETCH 43299 FULLPAYLOAD CACHEONLY ANCESTORS INF EXTERNALPAYLOAD (UID REMOTEID REMOTEREVISION COLLECTIONID FLAGS SIZE) 
* 43299 FETCH (UID 43299 REV 1 REMOTEID ... 

Hopelijk helpt dat voort.

16/9/2017

Mysql, MariaDB databank: welk type sleutel of id, en hoe groot?

Filed under: — cybrarian @ 10:27 am

Hoe groot kan een id worden? Meestal zet je de waarde van de sleutel op auto-increment.
Maar je wil liefst niet verrast worden door een databank waar je geen records meer kan toevoegen.

UNSIGNED INT: 4.294.967.295
UNSIGNED BIGINT: 18.446.744.073.709.551.615

Ik zie aangeraden worden om
– niet te spaarzaam te zijn op ruimte
– werk je op een 32 bit of 64 bit systeem?
– UNSIGNED te gebruiken als het kan; als je niet van plan bent om negatieve waarden te gebruiken kan je het bereik van een type als INT of BIGINT verdubbelen.
– INT(8) of INT(44) maakt geen verschil, aangezien dat getal enkel slaat op de weergave van de getallen, niet op de (maximum) waarde.

Waarschijnlijk is het niet slecht om in je applicatie een test in te bouwen bij het aanmaken van records, en het niet kunnen maken van een nieuw record op te vangen met een foutafhandeling. Maar zelfs dan kan het moeilijk worden om je applicatie overeind te houden, en levert het zeker problemen op voor de gebruiker. Misschien iets inbouwen voor als je in de richting van het maximum gaat?

8/9/2017

phpMyAdmin logt uit na 1440 seconden

Filed under: — cybrarian @ 9:22 am

Het is nu eenvoudig om de instelling van phpMyAdmin te veranderen zonder zelf in de configuratie bestanden te moeten gaan zoeken:

  • Start phpMyAdmin, log in
  • Kies het hoofdscherm (bv server:localhost) met General Settings en Appearance settings in het midden, en Database server – Web server – phpMyAdmin in de rechterkolom
  • Appearance settings, klik onderaan op “More settings”
  • Klik op het tweede tabblad met een steeksleutel: “Features”
  • Login cookie validity (seconden): verander 1440 naar een gepast getal.
  • Klik “Apply” om te bevestigen.

Helaas is deze instelling enkel geldig voor de huidige sessie!

Voor een meer permanente moet je toch op de server zijn:

In config.inc.php :
$cfg['LoginCookieValidity'] = 36000;

en in .htaccess bestand in de phpMyAdmin site:
php_value session.gc.maxlifetime 36000

Voor het gemak wat omrekeningen:

1140 seconden = 24 minuten
3600 seconden = 1 uur
28800 seconden = 8 uur
86400 seconden = 24 uur
432000 seconden = 5 dagen.

enz.

Powered by WordPress