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.

27/8/2017

Snelheid vergelijken

Filed under: — cybrarian @ 1:26 pm

Ik mag kiezen tussen twee computers; hoe vergelijken? Wat is de snelste?

Tools om te meten

Twee tools die beschikbaar zijn in verschillende distro’s (debian/buntu; opensuse):

  • stress-ng
  • sysbench (oorspronkelijk voor mysql servers?)

20/8/2017

OpenSUSE Leap 42.2

Filed under: — cybrarian @ 5:23 pm

Installatie vanaf USB-stick (gaat snel: 17:20 – 17.40 + updates en instellingen 0:30 ) op een laptop.
Omstandigheden:

  • Gebruik hele harde schijf (bevatte oude opensuse 13.1)
  • Gebruik LVM encryptie voor homedirectory
  • Importeer bestaande gebruikersaccounts (waren er 2)
  • Land BE, Taal: US Eng (standaard), later zal ik eventueel de desktop gebruiker NL talig maken.
  • Standaard desktop KDE, met voorlopig standaar software selectie.

25/7/2017

RJ-45 stekkers op netwerkkabel zetten

Filed under: — cybrarian @ 10:38 am

Koop:

  • Netwerkkabel CAT5, CAT5e, CAT6 (laatste is duurder/beter)
  • RJ-45 stekkers, en vooral: trekbeveiliging!

Je kan de stekkers+trekbeveiliging samen kopen; de trekbeveiliging bestaat uit een plastic hoesje dat een uitstulping heeft op de plaats van het uitstekende weerhaakje dat de stekker vasthoudt in de netwerkaansluiting. Soms heeft het de vorm van twee “oortjes” aan beide zijden van het haakje.

De trekbeveiliging moet vermijden dat de “klik”-lipjes van de stekker afbreken als je de kabel ergens doorheen haalt, bv terug uit een bussel kabels trekt. Als dat weerhaakje afbreekt, klikt de stekker niet meer vast in je computer of je switch, en geeft dat onbetrouwbare netwerkverbinding. Soms lijkt het stekkertje er nog in te zitten, maar heb je toch geen netwerk, omdat het contact niet goed is.

Een zeer duidelijk handleiding (Engelstalig) vond ik hier: www.wikihow.com/Crimp-Rj45

Ik geef even de Nederlandstalige uitleg erbij:

  1. draad en stekkers (zie boven; denk aan de trekbeveiliging!): Steek het hoesje over de kabel met de smalle kant, zodat de open kant naar het einde van de draad wijst. Nadien zal je het over de stekker schuiven.
  2. strip 3 cm van de buitenkant van de draad af. Je krijgt vier draadparen te zien: oranje-wit, groen-wit, bruin-wit, blauw-wit (of andere kleuren).
  3. plooi de draadparen allemaal om zodat de kern of drager van de draad vrijkomt; dat kan een plastic kabel zijn, of een voorgevormde (doorsnee kruis) scheiding van de vier draadparen.
  4. snij die binnendrager af (mag weg).
  5. maak de uiteinden van de opgedraaide draadparen recht, zodat de draden mooi plat naast elkaar komen te liggen.
  6. Volgorde: bruin-wit, groen-wit, blauw-wit, oranje-wit. De witte draad heeft altijd een bijhorende kleur (van origineel draadpaar); soms heeft de witte draad ook een zachte kleuraanduiding, bv een dun lijntje, dat toont waar hij bij hoort. Sorteer in de volgorde hieronder aangegeven.
  7. knip mooi recht af.
  8. schuif in de stekker (ps: hoes niet vergeten?). Bovenzicht op weerhaakje of onderaanzicht; check dat de kleurenvolgorde klopt en dat je de draad goed vasthebt om in de tang te passen.
  9. steek de stekker in de tang en knijp vast. Knijp een tweede keer om goed vast te zetten. Schuif de beschermhoes over de stekker (trekbeveiliging).
  10. herhaal hetzelfde aan de andere kant van de kabel.
  11. check de kabel met een kabeltester: elke draad 1-8 moet goed zijn. (ground is niet aangesloten)

Als de test slecht is, knip de meest verdachte stekker eraf en begin opnieuw. De stekkers zijn wegwerp eens dat je ze gebruikt hebt.

Draad naar beneden, stekker onderkant:

wiOrOran– wiGrBlauw – wiBlGroen – wiBrBruin

Draad naar beneden, stekker bovenkant:

Bruin – wiBrGroen – wiBlBlauw – wiGrOranje – wiOr

Hoewel de draadjes aan iedere stekker hetzelde uitkomen, is het toch belangrijk om de juiste draad (groen-blauw) anders aan te sluiten dan gewoon de opeenvolgende kleuren. De snelheid gaat eronder lijden als het niet juist is (bv maar 100 megabit ipv 1000).

Nummeren
Zet een nummer en een datum op de mantel van de draad, aan beide kanten.

Houd een rekenblad bij met de nummers, lengte, kleur en de plaats en/of het doel van de kabel. Later zal je blij zijn als je bv aan de datum ongeveer kan weten waarvoor je die kabel gelegd hebt, en waar die dus waarschijnlijk naartoe loopt, of je kan het opzoeken in je rekenblad adhv het nummer.

24/7/2017

OpenSUSE Software updates in desktop: error?

Filed under: — cybrarian @ 9:55 am

Meestal lopen de updates die je in de desktop start na een melding dat er nieuwe updates zijn, goed. Uitzonderlijk eindigt het met een foutmelding en wordt de update niet uitgevoerd. Soms loopt die nadien wel en is het probleem opgelost. Maar anders blijf je met een niet-geupdate systeem zitten.

Logisch is om naar de foutmeldingen te gaan kijken:
/var/log/pk_backend_zypp

Er gewoon even doorbladeren levert misschien al een hint op, hoewel een gewone desktopgebruiker er misschien niet veel boodschap aan zal hebben (moet trouwens met root-toegang). Oudere logs hebben een cijfertje erachter, bv /var/log/pk_backend_zypp-1

Je kan met een klik op de updates melding op de desktop kijken naar de updates in detail, en bv een van de updates afzetten (uitproberen welke / hoeveel). Ik zet wel eens alles af behalve de eigen (suse) systeemupdates, die zijn het belangrijkste. Als de update dan wel loopt, zat het probleem bij een van de paketten die je afgezet hebt.

Een andere manier om uit te proberen of je het probleem kan omzeilen, is in de repositories de minder belangrijke af te zetten, meestal van zelf extra bijgeïnstalleerde software zoals media, programmeeromgevingen, speciale hardware-dingen enz.
Dat kan van binnen Yast (root wachtwoord nodig), Software, Software Repositories, kijk naar de kolom met de vinkjes “enabled” (ingeschakeld). Schakel op het eerste zicht minder belangrijke uit, probeer de update (nu zullen de updates van die repo’s er niet mee inzitten). Schakel ze nadien terug in, waarna je nog eens de update probeert.

Ook kan je in Yast zelf manueel je updates starten bij Yast, Software, Online Update. Dan kan je beter zien wat er gebeurt.

Als dat niet helpt kan je naar de commandolijn, niet moeilijk en werkt altijd:

Open een terminal, en tik:
sudo zypper up
Je moet het wachtwoord geven van root.
De update rolt nu in tekst over je scherm, en zal ergens stoppen, bv bij de update van een “commmerciële” software. Die stelt de vraag of je akkoord bent met de gebruikersvoorwaarden, en daar moet je op antwoorden (meestal “y” of zo).
Daarna loopt de update voort.

Eigenlijk was er dus geen probleem, maar lijkt die vraag om de licentievoorwaarden te bevestigen niet door te komen naar de grafische interface (wat vroeger wel werkte meen ik me te herinneren).

ps:
Mogelijk is dat een instelling ergens in yast, als ik het vind doe ik een update hier.


Volgens
https://doc.opensuse.org/documentation/leap/startup/html/book.opensuse.startup/cha.onlineupdate.you.html
bestaat die instelling inderdaad. Op mijn systeem krijg ik die keuze niet, maar in
Yast/Software: Online Update/Configuration/Online Update...
wordt me verteld om extra packages bij te installeren:
yast2-online-update-configuration

Dat levert dan een “automatic online update” venster op met de keuze dat systeem aan te zetten, en “Agree with licenses” aan te vinken, “skip interactive packages” uit te zetten, alsook het interval in te stellen, “recommended packages” mee te nemen enz.

23/7/2017

Overbruggen tussen azerty be en azerty fr en andere Linux toetsen – tekens

Filed under: — cybrarian @ 10:46 am

Probleem: een laptop heeft een ander toetsenbord dan wat je zelf gebruikt; bv de hardware is een Franse azerty (azerty fr), en zelf gebruik je een Belgische azerty. Ik heb een voorbeeld van een netbook die blijkbaar aangepast is, en ik vermoed van franse azerty naar belgische. Het toetsenbord heeft sommige toetsen overplakt; de letters niet, maar vooral lettertekens, daar zitten juist de verschillen tussen de Belgische en de Franse azerty.

Probleem <>
De groter-dan > en kleiner-dan tekens < vind ik echter niet op dit toetsenbord. Er is geen enkele toets waar die op voorkomen. Na heel wat rondspelen met de combinatietoetsen shift, control, alt, en alt-gr vind ik de juiste combinatie:

alt-gr shift w geeft <

alt-gr shift x geeft >

Ik ben nu nog op zoek naar de backslash…

UPD: alt-gr ) geeft \
dus de toets met haakje en graden teken [)°]

Veel kan je terugvinden op deze wiki pagina, onderaan het toetsenbord met linux deadkeys:
https://en.wikipedia.org/wiki/AZERTY

14/7/2017

LibreOffice Draw standaard lijndikte en vlakvulling

Filed under: — cybrarian @ 9:56 am

Als je LibreOffice na installatie start, en in Draw een object tekent uit het flowcharts menu, zijn die altijd blauw van kleur en het vlak is helemaal opgevuld, de lijnen zijn grijs of zo, niet handig voor een afdruk.

Ik wil een zwarte lijn, dik genoeg op gedrukt te kunnen worden, en de vlakken leeg zodat ik er iets in kan schrijven. En ik wil dat de volgende keer als ik een document open, het standaard zo ingesteld is.

Standaard instelling bepalen
LibreOffice gebruikt een template bij het openen van een nieuw document. We moeten een standaard template maken voor onze wensen.

Instellingen
Open een nieuw document. Open de stijlen (F11 of Format, Styles and Formatting).
Bovenaan staat “Default”. Klik rechts (je krijgt een keuze New… en Modify…) en kies “Modify”.
Je krijgt een venster “Graphic Styles: Default”, met tabbladen voor de eigenschappen van lijnen, vlakken, lettertype, enz.
Wijzig naar:

  • Line Properties: Color: Black
  • Line Properties: Width: 0.01 cm (*)
  • Area Fill: None

* De lijndikte is wat eigenaardig; hier staat de dikte in cm. In mijn tekeningen krijg ik bij “properties” de maat in puntdikte: 0,5 pt. Probeer uit vanaf welke dikte je het (leesbaar/duidelijk zichtbaar) kan afdrukken, en kies dat als standaardinstelling.

Bewaren (als standaard)
Bewaar met File, Templates, Save as Template.
Geef een naam, bv “MijnStandaardDocument”, en vink het vakje “Set as Default Template” aan.
Bewaar (save).

De volgende keer als je een nieuw document maakt, worden deze instellingen geladen.
Het kan handig zijn om hier ook standaard voetnoot met (organisatie)naam, document bestandsnaam, of print-datum mee in op te nemen.

5/7/2017

OOP: Object Oriented Programming (object geöriënteerd programmeren)

Filed under: — cybrarian @ 11:22 am

Ik houd verder in het artikel de afkorting OOP aan, want is “ogp” en wat een lelijke vertaling – misschien beter “pmo”; “programmeren met objecten”?)

Basisprincipes van OOP:

  • encapsulation: insluiting
  • inheritance: overerving
  • polymorphism : polymorfie

Encapsulation (insluiting)
Een stukprogramma vormt een module die niet helemaal afgesloten is van de buitenwereld, maar wel enkel op een beperkte en voorgedefinieerde manier met de buitenwereld communiceert, via een “interface”. De binnenkant is de “implementation”, en die bepaalt hoe het stukje code intern zijn werk doet. Door de definitie van de interface kan de binnenkant aangepast binnen de grenzen van de interface (zonder de interface te veranderen), waardoor het stukje code gewoon blijft werken in de programma’s die het gebruiken. Het veranderen van de interface heeft grote gevolgen, dat moet dus vermeden worden: dit vereist goed nadenken over de interface.

Inheritance
Overerving kan dienen voor:

  • hergebruiken implementatie: code automatisch beschikbaar maar kies kritisch!
  • specialisatie: uitbreiding enkel het verschil bijprogrammeren, bv extra dimensie z-coördinaat, of herdefiniëren
  • typevervanging

Belangrijke voorwaarde: als je overerving gebruikt, test altijd of de betekenis klopt met child is een parent (bv kind is een mens, auto is een voertuig enz).

De klasse-hiërarchie moet relatief ondiep en dus overzichtelijk blijven!
Algemene dingen moeten naar abstracte basisklassen.

Tijdens het opbouwen van de klassenhiërarchie zullen klassen regelmatig herschreven moeten worden, dat is een goed moment om herhalen van code te vermijden.

Polymorphism
(…)


OOP woordenlijst
:

Abstraction
Accessor
Child (child class)
Class
Constructor
Definition
Encapsulation
Generalisation (itt specialisation)
Implementation
Inheritance
Initialisation
Initiation
Interface
Method
Object
Overriding (vervanging methode)
Parent (parent class)
Polymorphism
Private
Protected
Public
Refactoring (herschrijven van klassen)
Responsability (in het object door afsluiten implementatie)
Root (root class)
Specialisation
Subclass

29/6/2017

Git voorbeeld: gitlab

Filed under: — cybrarian @ 3:31 pm

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

(*) Ergens zag ik aangeraden om daarvoor een “group” te gebruiken.
Je kan trouwens ook een “group” invite doen om te delen.

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.

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

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 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).
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).
(https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository)

Commando’s

git config --global user.name "mijn naam"
git config --global user.email mijnemail@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 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 rm --cached test.txt = unstage 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 commit -a -m 'grote lijn van wijziging' = combinatie -a en -m

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 = verschillen zien tussen working directory en staging
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 checkout branchename_voor_mij = overschakelen naar branch

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

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)

– 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
Goede commit messages zien er zo (niet) uit:
https://chris.beams.io/posts/git-commit/

(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, ...

8/5/2017

HardInfo (maar niet in KDE5?)

Filed under: — cybrarian @ 9:11 am

HardInfo
is een gereedschap om je informatie over je computer te geven, waaronder een inschatting van de (relatieve) snelheid.
De meeste van die andere informatie krijg je ook in KDE’s infocenter (KInfoCenter), maar niet de snelheidstest.

In HardInfo zit een rubriek Benchmarks.
Daaronder: CPU Blowfish, CPU CryptoHash, CPU Fibonnacci, CPU N-Queens, FPU FFT, FPU Raytracing.

Je opent die rubriek Benchmarks, en kiest er één uit, bv CPU Blowfish; er begint een korte test.
Dan krijg je op het scherm het resultaat in de vorm van een strokendiagram met cijfers en vergelijking met een Intel en een PowerPC referentiesysteem.

Oeps
Maar helaas kan je in KDE niet lezen wat de cijfers zijn in de grafiek, enkel de onderste (referentie toestel) kan je lezen omdat die buiten de balk valt.
– versie KDE 5, bv opensuse Leap 42.2.:

KDE Frameworks 5.26.0
Qt 5.6.1 (built against 5.6.1)

In Tumbleweed is het wel ok:

KDE Frameworks 5.33.0
Qt 5.7.1 (built against 5.7.1)

Als je op hetzefde systeem een andere desktop draait, bv xfce, kan je de cijfers op de grafiek wel lezen.

Rapport
De KDE gebruiker kan de cijfers toch krijgen door een rapport te maken in Hardinfo (Desktop/hardinfo_report.html bv); dat rapport opent dan in de browser.

CPU Blowfish
This Machine 1998 MHz 5.712
Intel(R) Celeron(R) M processor 1.50GHz (null) 26.1876862
PowerPC 740/750 (280.00MHz) (null) 172.816713

Terminal
Of op de commandolijn; op een terminal hardinfo tikken geeft je ook het hele verslag (is wel even bezig dan en alles scrolt voorbij).

Er bestaat soms nogal wat verschil tussen op het eerste zicht dezelfde toestellen:
This Machine (A xw4600) 1998 MHz min 5.712
This Machine (H xw4600) 1998 MHz min 3.073



Alternatief: BogoMIPS?

Op Linux systemen was het aantal BogoMIPS populair, af te lezen in de terminal met het commando lscpu

latitude:/home/copyleft # lscpu

BogoMIPS: 5053.87

Maar opgelet, dit is een uitvinding van Linus voor intern gebruik in de opstartprocedure van de Linux kernel, en dient hoegenaamd NIET als benchmark!

Cijfers
Enkele vb, gesorteerd op stijgende BogoMIPS, met tussen haakjes de Hardinfo benchmark (CPU Blowfish):

  • F D-Latt - x86_64 4cpu Core i5 2520M @ 2.50 GHz max 4988.92 BogoMIPS (3.870)
  • L E6400 - x86_64 2cpu core2Duo P8700 @ 2.53GHz max 5053.87 BogoMIPS (?)
  • H Ebook - x86_64 4cpu Core i5 M540 @ 2.53 GHz max 5053.87 BogoMIPS (4.871)
  • H xw4600 - x86_64 4cpu Core2Quad Q9550 @ 2.83 GHz max 5666.28 BogoMIPS (3.073)
  • H DOpt380 - x86_64 2cpu core2Duo E7500 @ 2.93 GHz max 5852.59 BogoMIPS (6.01)

opnieuw gesorteerd volgens benchmark van trager naar sneller (blowfish):

  • T HPCpq.. - Celeron ?cpu core2Duo E4400 @ 2.00 GHz max = 3989.91 BogoMIPS (10.258)
  • L E6400 - x86_64 2cpu core2Duo P8700 @ 2.53GHz max = 5053.87 BogoMIPS (? N.A. )
  • H DOpt380 - x86_64 2cpu core2Duo E7500 @ 2.93 GHz max = 5852.59 BogoMIPS (6.01)
  • P xw4600 - x86_64 2cpu Core2Duo E8400 - 3.0 GHz @ 1.998GHz = 6000.47 BogoMIPS (5.846)
  • B xw4600 - x86_64 2cpu Core2Duo E8400 @ 3.0 GHz max = 6000.47 BogoMIPS (5.752)
  • W HPCpq7900 - x86_64 2cpu Core2Duo E8500 - 3.16 GHz @ 1.998GHz 6317.23 = BogoMIPS (5.49)
  • H Ebook - x86_64 4cpu Core i5 M540 @ 2.53 GHz max = 5053.87 BogoMIPS (4.871)
  • F D-Latt - x86_64 4cpu Core i5 2520M @ 2.50 GHz max = 4988.92 BogoMIPS (3.870)
  • H xw4600 - x86_64 4cpu Core2Quad Q9550 @ 2.83 GHz max = 5666.28 BogoMIPS (3.073)

Andere conclusies!

Andere cpu-benchmarks op internet vertellen dan weer heel andere dingen:

L E6400 x86_64 2cpu core2Duo P8700 @ 2.53GHz = 1638
H Optip x86_64 2cpu core2Duo E7500 @ 2.93 GHz = 1879
H Ebook x86_64 4cpu Core i5 M540 @ 2.53 GHz = 2448
F D-Latt x86_64 4cpu Core i5 2520M @ 2.50 GHz = 3565
H xw4600 x86_64 4cpu Core2Quad Q9550 @ 2.83 GHz = 4010

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

15/3/2017

compgen

Filed under: — cybrarian @ 11:21 am

Ik ontdek een enorm handig commando, dat veel meer een ingebouwde tool in de bash shell blijkt te zijn:

compgen

Je kan er allerlei lijsten mee maken, bv van alle commando’s die je kan gebruiken op je server/pc.

Maar waar het mij best uitkwam is bij het snel checken of een gebruiker in het systeem is aangemaakt na installatie van een server (database):

compgen -u

at
avahi
avahi-autoipd
bin
daemon
dnsmasq
ftp
games
kdm
lp
mail
man
messagebus
mysql
news
nobody
nscd
ntp
polkitd
postfix
pulse
root
rtkit
scard
sshd
statd
svn
tftp
usbmux
uucp
wwwrun
cybrarian
pesign
postgres

Dat lijst eenvoudig alle namen op, zonder al de details die je zou krijgen met

cat /etc/passwd

at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash                                                                                    
avahi:x:497:496:User for Avahi:/var/run/avahi-daemon:/bin/false                                                                             
avahi-autoipd:x:486:483:User for Avahi IPv4LL:/var/lib/avahi-autoipd:/bin/false                                                             
bin:x:1:1:bin:/bin:/bin/bash                                                                                                                
daemon:x:2:2:Daemon:/sbin:/bin/bash                                                                                                         
dnsmasq:x:494:65534:dnsmasq:/var/lib/empty:/bin/false                                                                                       
ftp:x:40:49:FTP account:/srv/ftp:/bin/bash                                                                                                  
games:x:12:100:Games account:/var/games:/bin/bash                                                                                           
kdm:x:488:486:KDM Display Manager daemon:/var/lib/kdm:/bin/false                                                                            
lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash                                                                                           
mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false                                                                                
man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash                                                                                    
messagebus:x:499:499:User for D-Bus:/var/run/dbus:/bin/false                                                                                
mysql:x:60:493:MySQL database admin:/var/lib/mysql:/bin/false                                                                               
news:x:9:13:News system:/etc/news:/bin/bash                                                                                                 
nobody:x:65534:65533:nobody:/var/lib/nobody:/bin/bash                                                                                       
nscd:x:487:484:User for nscd:/var/run/nscd:/sbin/nologin
ntp:x:74:492:NTP daemon:/var/lib/ntp:/bin/false
polkitd:x:492:491:User for polkitd:/var/lib/polkit:/sbin/nologin
postfix:x:51:51:Postfix Daemon:/var/spool/postfix:/bin/false
pulse:x:490:489:PulseAudio daemon:/var/lib/pulseaudio:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
rtkit:x:491:490:RealtimeKit:/proc:/bin/false
scard:x:489:487:Smart Card Reader:/var/run/pcscd:/usr/sbin/nologin
sshd:x:496:495:SSH daemon:/var/lib/sshd:/bin/false
statd:x:493:65534:NFS statd daemon:/var/lib/nfs:/sbin/nologin
svn:x:485:482:user for Apache Subversion svnserve:/srv/svn:/sbin/nologin
tftp:x:495:494:TFTP account:/srv/tftpboot:/bin/false
usbmux:x:498:65534:usbmuxd daemon:/var/lib/usbmuxd:/sbin/nologin
uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash
wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false
cybrarian:x:1001:100:cybrarian:/home/cybr:/bin/bash
pesign:x:484:477:PE-COFF signing daemon:/var/lib/pesign:/bin/false
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash

14/3/2017

PostgreSQL installeren, configureren

Filed under: — cybrarian @ 11:48 pm

zie ook ons PostgreSQL artikel

Ik volg een (openSUSE) installatie met dit Engelstalig artikel, en vat het ook even samen…
https://www.howtoforge.com/tutorial/how-to-install-postgresql-and-phppgadmin-on-opensuse-leap-42.1/#step-install-postgresql

Opm: Ik installeerde via Yast ipv met zypper; zoek “postgres” en je krijgt heel wat opties; installeer de server, de client, de management tool pgadmin3, de webtool phpPgAdmin, de odbc- en libreoffice-drivers, … De server heeft het versienummer in de naam (postgresql94), de client niet (postgresql).

  • Leap 42.2 – postgresql94 – postgres – pgadmin .. – phpPgAdmin ..
  • openSUSE 13.1 – postgres92 (9.2) – postgres (psql 9.2) – pgadmin3 1.16 – phpPgAdmin 5.0.4

Starten doe je zo:

systemctl start postgresql
vroeger: /etc/init.d/postgresql start

… en checken of hij draait in details als (* volledig log zie onderaan):

linuxbox:/home/cybr # systemctl status postgresql

postgresql.service - PostgreSQL database server
Active: active (running) since Tue 2017-03-14 22:01:20 CET; 9s ago

linuxbox:/home/cybr # journalctl -u postgresql

Mar 14 22:01:19 linuxbox postgresql-init[4956]: 2017-03-14 22:01:19 CET HINT: Future log output will appear in directory "pg_log".
Mar 14 22:01:20 linuxbox systemd[1]: Started PostgreSQL database server.

Met veel details en uitleg:

ps aux|grep postgres

wat de hiërarchie toont van de processen (=> pid hoofdproces):

ps -AH|grep postgres

Bij installatie is er een user postgres gemaakt op de server;
compgen -u
je moet werken als die gebruiker om verder te configureren (als root wordt niet toegelaten in de standaard configuratie):

linuxbox:/home/cybr # su - postgres

postgres@linuxbox:~>

Start de commandolijn “client” psql:

postgres@linuxbox:~> psql

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

Zet eerst een wachtwoord:

postgres=# \password postgres

Enter new password:
Enter it again:
postgres=#

Je geraakt uit de postgres commandolijn met \q

Maak, nog steeds als postgres user op je Linux systeem een nieuwe gebruiker en rol aan, en geef hem ineens superkrachten (en een database):

createuser -s nano
createdb nano_db

Geen reaktie = geen foutmeldingen.
Dan terug inloggen in psql en:

postgres=# alter user nano with encrypted password 'nano2test';

ALTER ROLE

postgres=# grant all privileges on database nano_db to nano;

GRANT


Op een andere terminal pas je de instellingen aan om op een publiek ip adres te luisteren, zodat je vanop een andere computer toegang krijgt, of een applicatie toegang kan geven.

mcedit /var/lib/pgsql/data/postgresql.conf

en wijzig de gepaste lijnen naar:

listen_addresses = 'localhost'
port = 5432

En dan de wachtwoordcontrole naar md5:

mcedit /var/lib/pgsql/data/pg_hba.conf

(de oude standaard waarde staat er nog boven)

# TYPE DATABASE USER ADDRESS METHOD

# "local" is for Unix domain socket connections only
# local all all peer
local all all md5
# IPv4 local connections:
# host all all 127.0.0.1/32 ident
host all all 127.0.0.1/32 md5
# IPv6 local connections:
# host all all ::1/128 ident
host all all ::1/128 md5

en herstart de server:

systemctl restart postgresql

Om phpPgAdmin toegang te geven:

mcedit /etc/phpPgAdmin/config.inc.php

en vul de localhost in:

$conf['servers'][0]['host'] = '';

naar

$conf['servers'][0]['host'] = 'localhost';

Bovendien heeft Apache wat extra activatie nodig; check of php5 en version geladen zijn:

a2enmod -l

Indien niet:

a2enmod php5
a2enmod version

Herstart apache en postgresql.

In phpPgAdmin (http://localhost/phpPgAdmin/)
kreeg ik voordien te zien:

Attempt to connect with invalid server parameter, possibly someone is trying to hack your system.

Maar nu krijg ik netjes een welkom, een taalkeuze en als ik op Servers klik:

Server Host Port Username Actions
PostgreSQL localhost 5432

Ik kan nu (op PostgreSQL klikken en) inloggen met de voorheen gemaakte nano account. Ik zie de nano_db database en postgres (default administrative connection database).
Inloggen met de administratieve account postgres gaat niet! (maar dat is dus de bedoeling).

En de server terug stoppen:

systemctl stop postgresql
(daarna werkt natuurlijk phpPgAdmin niet meer, en blijft hangen op : “Login to PostgreSQL”)

Klaar!

(en nu misschien eens proberen te gebruiken vanuit Gambas?)

– – –
* vervolg starten/checken server:
(meer…)

13/3/2017

gcompris hangt plasmashell (Leap 42.2)

Filed under: — cybrarian @ 1:52 am

Ik installeerde enkele educatieve softwares op een openSUSE Leap 42.2. Daarna ga ik naar het menu, onderwijs, Diversen … en dan hangt de desktop. Muiscursor (pijltje) beweegt niet meer, de lopende monitoring tools op de desktop bevriezen, en de hele desktop is niet meer bruikbaar.

Ik kan wel omschakelen naar een sessie op CTRL-F1. Ik log in als root en zie met top dat plasmashell voor zowat 100% de processortijd in beslag neemt. En waarschijnlijk met iets heel doms.. in een rondje draaien bv.

In de desktop kan je met de Control-Alt-Backspace toetsencombinatie wel de grafische sessie afbreken (misschien 2x CTRL-ALT-BS nodig).

Ik vond op deze post https://forums.opensuse.org/showthread.php/523406-Menu-freeze-if-gcompris-qt-is-installed de perfecte beschrijving, wel voor Tumbleweed ipv Leap. Maar ik heb inderdaad ook de Qt-gcompris versie geïnstalleerd. En ook de beschreven oplossing werkt voor mij perfect:

rm /usr/share/appdata/org.kde.gcompris.desktop
rm /usr/share/applications/org.kde.gcompris.desktop

Daarna geeft het menu “Onderwijs / Diversen” me mooi “Tux Paint”.
Onder dat menu krijg ik “Onderwijs / Lesprogramma’s / GCompris”, en ook dat menu werkt.
Ik ben er dus zelfs beter aan toe dan de auteur van voorvermelde post.

Powered by WordPress