1 Laatst bewerkt door devtroll (04 Mar 2017 09:43:13)

Onderwerp: Automatiseren van je workstation

Even een succes story die ik graag wil delen met u. Ik ben, zoals de meeste wel weten, een groot fan om veel te automatiseren. Sinds een jaar automatiseer ik ook mijn workstations. Dit heeft er voor gezorgd dat ik mijzelf op een strikt 'dieet' heb gezet. Ik installeer niet meer zomaar iets. Voor elke stap die ik maak, denk ik eerst een paar keer bewust na. De keuze is hiervoor vanzelfsprekend Ansible. De code van rollen en playbooks plaats ik in Git. Git spuugt na elke push een diff lijstje per e-mail naar mij uit. Hierdoor heb ik een trackrecord en noteer ik in de code/Git waarom ik soms dingen heb gekozen of juist niet. Het heeft hiernaast voor gezorgd dat mijn werk en prive workstation nagenoeg identiek zijn. Sommige dingetjes zijn net iets anders, zoals de alias file. Dat vang ik op door aparte alias bestandjes per workstation aan te maken. Waarom vertel ik dit? Ik merk dat mijn gedrag anders is geworden. De changes zijn stabieler geworden, geen nare verrassingen en oplossingen die ik in het verleden heb uit bedacht kunnen met een simpele search terug gevonden worden. Al met al wil ik dit iedereen aanraden.

https://dump.3x3.work/perma/Ahshei4ih4Ohvaibua1O/flow.png

ACAB: All computers are broken. https://medium.com/message/everything-i … e5f33a24e1 "I've decided that you need gray hair and hemorrhoids to be a consultant.
The gray hair makes you look distinguished & the hemorrhoids make you look concerned."

Re: Automatiseren van je workstation

Welke dingen regel je precies met Ansible? Ik gebruik sinds een tijdje ook Ansible om wat dingen op mijn laptops te regelen. Dan komt het met name neer op het installeren van packages, het beheren van wat bestanden in /etc en het wel of niet aanzetten van bepaalde services.

Voor de meeste dotfiles en dat soort dingen gebruik ik momenteel nog geen Ansible (misschien in de toekomst wel; one step at a time). Tussen mijn laptops synchroniseer ik bijna mijn hele home directory met unison en dat werkt eigenlijk best goed. Daar zitten dus dotfiles tussen maar ook bijvoorbeeld .ssh/known_hosts (zodat ik maar 1 keer hoef te controleren of een fingerprint correct is) en .remmina (voor de ene keer dat ik dat nodig heb zijn de profielen die ik daarin aanmaak beschikbaar op al mijn laptops). De interessante delen zitten in git, de meeste andere dingen niet.

Re: Automatiseren van je workstation

Ha Caspar,

Packages, git repo's, pip packages, rpm repositories, postfix configuratie, vpn, enz enz.  zoals je hier boven ziet tweak ik bijv. alle umask instellingen, omdat ik de default niet veilig genoeg vind. Ik leg mijn workstations langs deze auditing tool: https://cisofy.com/lynis/ en ik probeer aan te voldoen, net zoals PCI standaarden. Zelfs in privé.  Dat vereist veel kernel tweaks en dergelijke. Ik wil die niet blijven herhalen.

ACAB: All computers are broken. https://medium.com/message/everything-i … e5f33a24e1 "I've decided that you need gray hair and hemorrhoids to be a consultant.
The gray hair makes you look distinguished & the hemorrhoids make you look concerned."

Re: Automatiseren van je workstation

Oke, dat klinkt logisch.

devtroll schreef:

Ik wil die niet blijven herhalen.

Dat vat ook wel mooi de redenen samen om tools als Ansible te gebruiken, denk ik smile

5

Re: Automatiseren van je workstation

Maikel, je begint nu wel heel erg op een nerd te lijken hoor !

Pascal's Blobfree Homepage
Een dag geen NedLinux is een dag niet geleefd

6

Re: Automatiseren van je workstation

pascal schreef:

Maikel, je begint nu wel heel erg op een nerd te lijken hoor !

Voor je het weet ben een soort Pascal

Old programmers never die: they just jump to a new address
Kubuntu 16.02 LTS, Compaq CQ61 met Linux Mint 18, een Galaxy Tab 10.1 met Android Ice Cream en een Raspberry PI met raspian
http://www.volkerskrant.nl

Re: Automatiseren van je workstation

Ik laat 1 regexp functie zien en ik stijg in de achting van Pascal. Mooi!

ACAB: All computers are broken. https://medium.com/message/everything-i … e5f33a24e1 "I've decided that you need gray hair and hemorrhoids to be a consultant.
The gray hair makes you look distinguished & the hemorrhoids make you look concerned."

8 Laatst bewerkt door QzZRBNMdJdsCmwx (05 Mar 2017 11:51:58)

Re: Automatiseren van je workstation

devtroll schreef:

Ik laat 1 regexp functie zien en ik stijg in de achting van Pascal. Mooi!

Nou, zolang je expressies als /umask (.*)(.*)(.*)/ schrijft valt dat hopelijk mee wink.

(Sorry, even pesten.)

Edit: misschien moet ik me nader verklaren. Haakjes zijn voor het veranderen van precendentie-volgorde en voor captures. Beide gebruik je hier niet en zijn dus niet zinvol. Als je ze wel zou gebruiken is de expressie strict genomen non-deterministisch. /.*/ is een reeks van nul of meer karakters. Dus de eerste /.*/ zou alles al kunnen absorberen als, waardoor de andere expressies niks 'capturen'.

Aangezien je hier geen capture gebruikt, dan is het bovenstaande equivalent aan:

/umask .*/

Dit is natuurlijk strict genomen niet correct, want umask neemt als argument tot 4 octale getallen. Dus dit is beter:

/umask [0-7]{1,4}/

</generd>

Re: Automatiseren van je workstation

Ha! Bedankt DDK! Ik ben gewoon heel slecht in regexp en het was dan ook een grapje. Je pest niet. Ik moet nog steeds dit goed onder de knie krijgen.
Ik merk dat ik steeds vaker tegen deze tekortkoming aanloop. https://regexone.com/ <-- tijd voor deze.

ACAB: All computers are broken. https://medium.com/message/everything-i … e5f33a24e1 "I've decided that you need gray hair and hemorrhoids to be a consultant.
The gray hair makes you look distinguished & the hemorrhoids make you look concerned."

10 Laatst bewerkt door 5Tgff##2699Jbv!!rrOn (05 Mar 2017 13:30:52)

Re: Automatiseren van je workstation

Zie de goede en uitgebreide uitleg over regexp.... http://www.atcomputing.nl/Training/Publ … puting.pdf

Ergens midden van H3 wordt het interessant... een pareltje!

11 Laatst bewerkt door QzZRBNMdJdsCmwx (05 Mar 2017 13:41:18)

Re: Automatiseren van je workstation

peugeot2 schreef:

Zie de goede en uitgebreide uitleg over regexp.... http://www.atcomputing.nl/Training/Publ … puting.pdf

Het legt niets uit over de onderliggende theorie van reguliere expressies. Echte reguliere expressies beschrijven namelijk reguliere talen uit de Chomsky hiërarchie. Dit betekent dat er voor elke reguliere expressie een equivalente finite state automaton is. En aangezien je elke finite state automaton deterministisch kunt maken, kun je een string met een reguliere expressie matchen in lineaire tijd.

Dit alles is relevant, want niet-reguliere toevoegingen (bijv. backreferences) zijn in het slechtste geval in exponentiële tijd. En dat kan bijv. gevolgen hebben voor security. (Je kunt strings maken die de CPU voor een paar jaar aan het werk zetten.)

Een andere reden waarom de theorie relevant is, is dat je weet wat je wel en wat je niet met een reguliere expressie uit kunt drukken. Als het analyseren van een string bijv. een context-vrije grammaticaregel vereist, dan kun je een week proberen een reguliere expressie te maken, maar dat gaat je gewoon niet lukken.

12 Laatst bewerkt door 5Tgff##2699Jbv!!rrOn (05 Mar 2017 15:02:25)

Re: Automatiseren van je workstation

Uuuh, ik snap de pdf van AT wel.... en de uitleg/toevoeging van jou niet wink

Jij begint over talen en expressies.... prima... andere insteek volgens mij. Maar ja ik ben (zonder twijfel) geen programmeur smile

Re: Automatiseren van je workstation

Russ Cox heeft er eens wat aardige artikelen over geschreven, inclusief:

https://swtch.com/~rsc/regexp/regexp1.html

14 Laatst bewerkt door QzZRBNMdJdsCmwx (05 Mar 2017 15:59:34)

Re: Automatiseren van je workstation

peugeot2 schreef:

Uuuh, ik snap de pdf van AT wel.... en de uitleg/toevoeging van jou niet wink

Ja, bevat alleen typische foutjes als:

Reeksen tekens tussen blokhaken mag je afkorten met een liggend streepje: bijvoorbeeld [a−z] betekent: elke kleine letter uit het alfabet.

Dit hangt van je locale instellingen af. Met sommige 'collate' instellingen bevat dit bijv. ook een subset van de hoofdletters. Gevolg, mensen schrijven foutief [a-z] in scripts, terwijl [[:lower:]] correct is.

---

Verder heb ik wel medelijden met mensen die zo'n handleiding schrijven. Helaas zijn er nogal wat subtiele verschillen tussen grep implementaties, locales, etc. Ook al is er een standaard. En dan zijn er implementaties met vrij grote bugs, zoals FreeBSD en via FreeBSD macOS. Ik heb wel eens wat zitten speuren naar problemen, maar met de bug reports wordt weinig gedaan, zelfs als je een patch aanlevert:

https://bugs.freebsd.org/bugzilla/show_ … ?id=201650

(OpenBSD heeft er wel meteen werk van gemaakt, hulde daarvoor.)

15

Re: Automatiseren van je workstation

Chomsky...Oh dear. Zijn epistels over politiek volg ik graag en ben ik het vaak mee eens. Zijn talenknobbel: DDK, you lost me there....

ACAB: All computers are broken. https://medium.com/message/everything-i … e5f33a24e1 "I've decided that you need gray hair and hemorrhoids to be a consultant.
The gray hair makes you look distinguished & the hemorrhoids make you look concerned."

Re: Automatiseren van je workstation

Me too...

17 Laatst bewerkt door QzZRBNMdJdsCmwx (05 Mar 2017 20:05:42)

Re: Automatiseren van je workstation

devtroll schreef:

Chomsky...Oh dear. Zijn epistels over politiek volg ik graag en ben ik het vaak mee eens. Zijn talenknobbel: DDK, you lost me there....

Voor wie milde interesse heeft...

Er zijn vier types formele talen die met verschillende soorten grammatica's uitgedrukt kunnen worden: reguliere, context-vrije, context-sensitieve, en onbeperkte grammatica's. Reguliere grammatica's zijn het minst krachtige, onbeperkte het krachtigst (duh). Menselijke taal kun je bijvoorbeeld niet met een reguliere grammatica beschrijven en veelal ook niet met een context-vrije grammatica. Veel programmeertalen kun je met een context-vrije grammatica beschrijven, maar niet met reguliere grammatica's.

Reguliere expressies kun je (kort door de bocht) zien als een notatie voor reguliere grammatica's.

Waarom geven we überhaupt om reguliere expressies als er krachtigere grammatica's zijn? De reden is eenvoudigweg dat we heel erg veel dingen wel met reguliere expressies kunnen beschrijven (umask commando's wink) en strings snel met reguliere expressies te analyseren zijn. Zoals gezegd, lineaire tijd. Dus als je string twee keer zo lang is, kost het twee keer zoveel tijd.

Nu kun je aantonen dat bepaalde formele talen niet regulier zijn. De taal a^n b^n, een arbitrair aantal a's gevolgd door exact hetzelfde aantal b's is niet regulier. Er bestaat dan ook geen reguliere expressie die je kunt gebruiken om zulke strings te matchen [1]. Een taal van deze vorm is voor de practicant vrij relevant, want als je een aantal a's gevolgd door hetzelfde aantal b's niet kunt beschrijven, dan kun je ook een arbitrair aantal openings haakjes gevolgd door het zelfde aantal sluithaakjes ook niet beschrijven. En zulk soort dingen komen we natuurlijk overal tegen: accolades in JSON, haakjes in programmeertalen, tags in HTML/XML, etc.

[1] Dit is ook een voorbeeld waarom bijvoorbeeld Perl reguliere expressies strict genomen geen echte reguliere expressies zijn. Stel dat we voor het gemak de taal even veranderen naar: (ab)^n. Dus een willekeurig aantal 'ab's gevolgd door hetzelfde aantal 'ab's. Dat kan dat in Perl met:

((ab)+)\1

Maar dit is geen reguliere taal. Dus backreferences maken reguliere expressies krachtiger dan reguliere talen. Het gevolg is echter dat je ook niet meer dezelfde garanties hebt ten opzichte van efficientie. Je kunt dit ook zien als je bedenkt hoe je dit zou moeten verwerken. Stel bijvoorbeeld dat deze expressie tegen

abababab

wilt matchen. Stel dat Perl greedy begint, het stuk tussen de haakjes matcht

abababab

dus 4 maar 'ab' maar nu zijn er geen ab's meer om de backreference te matchen. Dan moet de regex engine backtracken en probeert het

ababab

3 maal 'ab', nog maar 1 'ab' over voor de backreference. Dan is er nog meer backtracking nodig:

abab

2 maal 'ab' en de backreference kan ook 2 maal 'ab' matchen. Iedereen blij big_smile. Maar je kunt zien dat dit met complexere expressies, danwel strings, snel uit de hand gaat lopen.

Re: Automatiseren van je workstation

Duidelijk, thanks! In onze pratijk echter minder toepasbaar, waar je zelf ook al naar hint.

Re: Automatiseren van je workstation

peugeot2 schreef:

Duidelijk, thanks! In onze pratijk echter minder toepasbaar, waar je zelf ook al naar hint.

https://en.wikipedia.org/wiki/ReDoS

Re: Automatiseren van je workstation

Jaja... was al duidelijk wink