<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://mediawiki.a-eskwadraat.nl/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://mediawiki.a-eskwadraat.nl/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jason</id>
		<title>A-Eskwiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://mediawiki.a-eskwadraat.nl/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jason"/>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Special:Contributions/Jason"/>
		<updated>2026-08-10T11:19:26Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.23.2</generator>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Bestuurswissel</id>
		<title>Bestuurswissel</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Bestuurswissel"/>
				<updated>2022-03-03T16:35:25Z</updated>
		
		<summary type="html">&lt;p&gt;Jason: Add meldpunt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WebCie]]&lt;br /&gt;
&lt;br /&gt;
Dit is het stappenplan wat elk jaar bij een bestuurswissel uitgevoerd moet worden. Dit is zo snel mogelijk na de Wissel-AV die in het begin van een nieuw collegejaar plaatsvindt.&lt;br /&gt;
&lt;br /&gt;
Er moeten zowel dingen op de site gedaan worden als in de code.&lt;br /&gt;
Natuurlijk moet de sysop ook dingen op het systeem regelen maar dat is hun probleem.&lt;br /&gt;
&lt;br /&gt;
=== Website frontside ===&lt;br /&gt;
&lt;br /&gt;
# Maak een nieuwe commissie aan met login &amp;lt;code&amp;gt;bestuurjjjj&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Voeg alle mensen die daar in horen toe aan deze commissie.&lt;br /&gt;
# Maak een publisher pagina aan voor het huidige bestuur (&amp;lt;code&amp;gt;bestuurjjjj&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Update de redirects in benamite (&amp;lt;code&amp;gt;/Vereniging/Bestuur&amp;lt;/code&amp;gt; en &amp;lt;code&amp;gt;/Vereniging/Commissies/Bestuur&amp;lt;/code&amp;gt;)&lt;br /&gt;
# Dubbelcheck even of alles nog werkt.&lt;br /&gt;
&lt;br /&gt;
===Backside===&lt;br /&gt;
# Check of onderstaande dingen al meteen moeten worden aangepast, het kan best zijn dat een (oud)bestuurslid nog tijdelijk bestuursrechten nodig heeft voor de laatste inwerking of afronding van werkzaamheden.&lt;br /&gt;
# Ga naar het BESTUUR DATA deel in &amp;lt;code&amp;gt;space/specialconstants.php&amp;lt;/code&amp;gt; en verander alle data hier:&lt;br /&gt;
#:* Vul bij &amp;lt;code&amp;gt;BESTUURLOGINNAAM&amp;lt;/code&amp;gt; wederom &amp;lt;code&amp;gt;bestuurjjjj&amp;lt;/code&amp;gt; in.&lt;br /&gt;
#:* Bij mails van de boekencommissaris en de secretaris (gegenereerd door de website) moet natuurlijk de naam staan van het verantwoordelijke bestuurslid. Daarom moet je deze namen invullen in respectievelijk &amp;lt;code&amp;gt;Willem Hulst&amp;lt;/code&amp;gt; en &amp;lt;code&amp;gt;Tara Fokker&amp;lt;/code&amp;gt;&lt;br /&gt;
#:* Update de &amp;lt;code&amp;gt;MELDPUNTMENSEN&amp;lt;/code&amp;gt;. Dit zijn mensen die bij het meldpunt zichtbaar zijn, en hun e-mailadressen. Mocht je een regel verwijderen waarbij de key een string is, vergeet dan ook niet het meldpuntForm in `Vereniging.php` te updaten.&lt;br /&gt;
# Verander de regel met &amp;lt;code&amp;gt;KANDIDAATBESTUURLOGINNAAM&amp;lt;/code&amp;gt; (onder het bestuurdata-blok) in commentaar door &amp;quot;//&amp;quot; voor de regel te proppen.&lt;br /&gt;
# Update de inhoud van &amp;lt;code&amp;gt;config.yaml&amp;lt;/code&amp;gt; met de nieuwe bestuursleden.&lt;br /&gt;
&lt;br /&gt;
== Kandidaatbestuur aanmaken ==&lt;br /&gt;
&lt;br /&gt;
Het kandidaatbestuur kan aangemaakt worden door een commissie te maken op de site op dezelfde manier als de website frontside. Alle afgelopen jaren is de conventie &amp;lt;code&amp;gt;kbjjjj&amp;lt;/code&amp;gt; gebruikt. Doe dit ook, en vul dit in bij &amp;lt;code&amp;gt;KANDIDAATBESTUURLOGINNAAM&amp;lt;/code&amp;gt; en zorg ervoor dat het geen commentaar-regel is.&lt;/div&gt;</summary>
		<author><name>Jason</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Hektex_SVN</id>
		<title>Hektex SVN</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Hektex_SVN"/>
				<updated>2022-02-24T18:45:40Z</updated>
		
		<summary type="html">&lt;p&gt;Jason: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Hektex SVN is vervangen door [https://gitlab.com/iba-aes/latex-packages Git]!'''&lt;br /&gt;
&lt;br /&gt;
Alle packages en scripts die door de [[TeXniCie|TeXniCie]] onderhouden worden, staan onder versiebeheer in de Hektex [http://en.wikipedia.org/wiki/Apache_Subversion SVN].&lt;br /&gt;
&lt;br /&gt;
== Checkout ==&lt;br /&gt;
&lt;br /&gt;
Om wijzigingen aan te brengen in de classes, is het nodig de SVN repository eerst lokaal &amp;quot;uit te checken&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;svn checkout https://www.a-eskwadraat.nl/svn/hektex/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vervolgens log je in met je A-Eskwadraat inloggegevens en verschijnt er het mapje &amp;lt;code&amp;gt;hektex &amp;lt;/code&amp;gt;waarin dan de classes in staan.&lt;br /&gt;
&lt;br /&gt;
== Updaten ==&lt;br /&gt;
Als iemand een wijziging heeft gecommit naar de SVN-server, is deze nog niet doorgevoerd in je lokale &amp;lt;code&amp;gt;hektex&amp;lt;/code&amp;gt; map. Om te zorgen dat je dezelfde versie hebt als de server, doe je:&amp;lt;pre&amp;gt;svn update&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(of korter: &amp;lt;code&amp;gt;svn up&amp;lt;/code&amp;gt;). Zie voor een voorbeeldje [[WebCie_SVN#svn_up|WebCie SVN]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
Als je een wijziging maakt in je lokale SVN-map, dan weet SVN dat. Met het commando&amp;lt;pre&amp;gt;svn status&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(of korter: &amp;lt;code&amp;gt;svn st&amp;lt;/code&amp;gt;) laat SVN alle bestanden zien die gewijzigd zijn. De bestanden met een M zijn net aangepast, met een A toegevoegd maar nog niet gecommit , met een C conflicted , met een&amp;amp;nbsp;? nog niet toegevoegd en met een D net verwijderd. Zie [[WebCie_SVN#svn_st|WebCie SVN]].&lt;br /&gt;
&lt;br /&gt;
== Committen ==&lt;br /&gt;
Als je de wijzigingen in je lokale SVN-map in de globale SVN wilt aanbrengen dat kun je dat doen met het command&amp;lt;pre&amp;gt;svn commit&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hiermee breng je de wijzigingen aan bestaande bestanden aan. Als je bestanden wilt toevoegen dan kan dat met&amp;lt;pre&amp;gt;svn add&amp;lt;/pre&amp;gt;&lt;br /&gt;
Je kan commentaar aan je commit toevoegen door&amp;lt;pre&amp;gt;svn commit -m &amp;quot;text&amp;quot; &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Het is verplicht om commentaar toe te voegen. Als je commit een bug oplost dan kan dat direct via het commentaar.&lt;br /&gt;
&amp;lt;pre&amp;gt;svn commit -m &amp;quot;text Closes #bug-id&amp;quot; &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dit sluit dan direct de bug op de site.&lt;br /&gt;
&lt;br /&gt;
== Structuur ==&lt;br /&gt;
&lt;br /&gt;
De SVN bestaat uit twee mappen de ''Branches'' en de ''Trunk''. In de Trunk staan alle bestanden die ook op het systeem komen. De Branches zijn ervoor om een extra werkende kopie van de SVN te draaien, dit gebruikt men als men groote wijzigingen wilt aanbrengen zonder gevaar te lopen de lokale SVN kapot te maken.&lt;br /&gt;
&lt;br /&gt;
In de Trunk staan een aantal mapjes die hieronder worden toegelicht&lt;br /&gt;
&lt;br /&gt;
=== Classes ===&lt;br /&gt;
&lt;br /&gt;
Hierin staan alle classes die ook op het systeem draaien. Als er kleine bugs opgelost dienen te worden is het het handigst om de wijzigingen hier direct in aan te brengen.&lt;br /&gt;
&lt;br /&gt;
=== Documentatie ===&lt;br /&gt;
&lt;br /&gt;
Hierin staat alle documentatie van de classes.&lt;br /&gt;
&lt;br /&gt;
=== Ibaverklaart ===&lt;br /&gt;
&lt;br /&gt;
Hierin staan de IBA-verklaart van alle classes. Dit wordt op het moment niet gebruikt.&lt;br /&gt;
&lt;br /&gt;
=== Scripts ===&lt;br /&gt;
&lt;br /&gt;
Hierin staan de scriptjes die gebruikt worden. Dit zijn er op het moment twee, de update-classes en de vakidioot scriptjes.&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Hierin staan templates voor het gebruik binnen een LaTeX-editior.&lt;br /&gt;
&lt;br /&gt;
=== Testfiles ===&lt;br /&gt;
&lt;br /&gt;
Bedoeld om te kijken of de packages nog werken. Hierin staat van elke class een file die getext kan worden om de package te controleren.&lt;br /&gt;
[[Category:TeXniCie]]&lt;/div&gt;</summary>
		<author><name>Jason</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Hektex_SVN</id>
		<title>Hektex SVN</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Hektex_SVN"/>
				<updated>2022-02-24T18:44:21Z</updated>
		
		<summary type="html">&lt;p&gt;Jason: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Hektex SVN is vervangen door [Git](https://gitlab.com/iba-aes/latex-packages)!'''&lt;br /&gt;
&lt;br /&gt;
Alle packages en scripts die door de [[TeXniCie|TeXniCie]] onderhouden worden, staan onder versiebeheer in de Hektex [http://en.wikipedia.org/wiki/Apache_Subversion SVN].&lt;br /&gt;
&lt;br /&gt;
== Checkout ==&lt;br /&gt;
&lt;br /&gt;
Om wijzigingen aan te brengen in de classes, is het nodig de SVN repository eerst lokaal &amp;quot;uit te checken&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;svn checkout https://www.a-eskwadraat.nl/svn/hektex/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vervolgens log je in met je A-Eskwadraat inloggegevens en verschijnt er het mapje &amp;lt;code&amp;gt;hektex &amp;lt;/code&amp;gt;waarin dan de classes in staan.&lt;br /&gt;
&lt;br /&gt;
== Updaten ==&lt;br /&gt;
Als iemand een wijziging heeft gecommit naar de SVN-server, is deze nog niet doorgevoerd in je lokale &amp;lt;code&amp;gt;hektex&amp;lt;/code&amp;gt; map. Om te zorgen dat je dezelfde versie hebt als de server, doe je:&amp;lt;pre&amp;gt;svn update&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(of korter: &amp;lt;code&amp;gt;svn up&amp;lt;/code&amp;gt;). Zie voor een voorbeeldje [[WebCie_SVN#svn_up|WebCie SVN]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
Als je een wijziging maakt in je lokale SVN-map, dan weet SVN dat. Met het commando&amp;lt;pre&amp;gt;svn status&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(of korter: &amp;lt;code&amp;gt;svn st&amp;lt;/code&amp;gt;) laat SVN alle bestanden zien die gewijzigd zijn. De bestanden met een M zijn net aangepast, met een A toegevoegd maar nog niet gecommit , met een C conflicted , met een&amp;amp;nbsp;? nog niet toegevoegd en met een D net verwijderd. Zie [[WebCie_SVN#svn_st|WebCie SVN]].&lt;br /&gt;
&lt;br /&gt;
== Committen ==&lt;br /&gt;
Als je de wijzigingen in je lokale SVN-map in de globale SVN wilt aanbrengen dat kun je dat doen met het command&amp;lt;pre&amp;gt;svn commit&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hiermee breng je de wijzigingen aan bestaande bestanden aan. Als je bestanden wilt toevoegen dan kan dat met&amp;lt;pre&amp;gt;svn add&amp;lt;/pre&amp;gt;&lt;br /&gt;
Je kan commentaar aan je commit toevoegen door&amp;lt;pre&amp;gt;svn commit -m &amp;quot;text&amp;quot; &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Het is verplicht om commentaar toe te voegen. Als je commit een bug oplost dan kan dat direct via het commentaar.&lt;br /&gt;
&amp;lt;pre&amp;gt;svn commit -m &amp;quot;text Closes #bug-id&amp;quot; &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dit sluit dan direct de bug op de site.&lt;br /&gt;
&lt;br /&gt;
== Structuur ==&lt;br /&gt;
&lt;br /&gt;
De SVN bestaat uit twee mappen de ''Branches'' en de ''Trunk''. In de Trunk staan alle bestanden die ook op het systeem komen. De Branches zijn ervoor om een extra werkende kopie van de SVN te draaien, dit gebruikt men als men groote wijzigingen wilt aanbrengen zonder gevaar te lopen de lokale SVN kapot te maken.&lt;br /&gt;
&lt;br /&gt;
In de Trunk staan een aantal mapjes die hieronder worden toegelicht&lt;br /&gt;
&lt;br /&gt;
=== Classes ===&lt;br /&gt;
&lt;br /&gt;
Hierin staan alle classes die ook op het systeem draaien. Als er kleine bugs opgelost dienen te worden is het het handigst om de wijzigingen hier direct in aan te brengen.&lt;br /&gt;
&lt;br /&gt;
=== Documentatie ===&lt;br /&gt;
&lt;br /&gt;
Hierin staat alle documentatie van de classes.&lt;br /&gt;
&lt;br /&gt;
=== Ibaverklaart ===&lt;br /&gt;
&lt;br /&gt;
Hierin staan de IBA-verklaart van alle classes. Dit wordt op het moment niet gebruikt.&lt;br /&gt;
&lt;br /&gt;
=== Scripts ===&lt;br /&gt;
&lt;br /&gt;
Hierin staan de scriptjes die gebruikt worden. Dit zijn er op het moment twee, de update-classes en de vakidioot scriptjes.&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Hierin staan templates voor het gebruik binnen een LaTeX-editior.&lt;br /&gt;
&lt;br /&gt;
=== Testfiles ===&lt;br /&gt;
&lt;br /&gt;
Bedoeld om te kijken of de packages nog werken. Hierin staat van elke class een file die getext kan worden om de package te controleren.&lt;br /&gt;
[[Category:TeXniCie]]&lt;/div&gt;</summary>
		<author><name>Jason</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/WebCie_Accounts</id>
		<title>WebCie Accounts</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/WebCie_Accounts"/>
				<updated>2019-09-30T15:16:10Z</updated>
		
		<summary type="html">&lt;p&gt;Jason: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WebCie]]&lt;br /&gt;
&lt;br /&gt;
== Accounts van de WebCie ==&lt;br /&gt;
&lt;br /&gt;
Als WebCie lid heb je een aantal accounts die nodig/handig zijn. Hieronder een overzicht van alle accounts:&lt;br /&gt;
&lt;br /&gt;
'''Nodig'''&lt;br /&gt;
&lt;br /&gt;
* Systeemaccount (Schop de WebCie voorzitter + bestuur)&lt;br /&gt;
* [https://gitlab.com/iba-aes/webcie Gitlab] (Schop de WebCie voorzitter zodra je een account hebt aangemaakt)&lt;br /&gt;
* Toegang tot het WebCie root wachtwoord (Schop de WebCie voorzitter voor de uitleg)&lt;br /&gt;
&lt;br /&gt;
'''Optioneel'''&lt;br /&gt;
* [https://sentry.io Sentry] - Manier om errors van de website te bekijken. (Schop de WebCie voorzitter)&lt;/div&gt;</summary>
		<author><name>Jason</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/WebCie_Accounts</id>
		<title>WebCie Accounts</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/WebCie_Accounts"/>
				<updated>2019-09-23T17:15:59Z</updated>
		
		<summary type="html">&lt;p&gt;Jason: Created page with &amp;quot;Category:WebCie  == Accounts van de WebCie ==  Als WebCie lid heb je een aantal accounts die nodig/handig zijn. Hieronder een overzicht van alle accounts:  '''Nodig'''  *...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WebCie]]&lt;br /&gt;
&lt;br /&gt;
== Accounts van de WebCie ==&lt;br /&gt;
&lt;br /&gt;
Als WebCie lid heb je een aantal accounts die nodig/handig zijn. Hieronder een overzicht van alle accounts:&lt;br /&gt;
&lt;br /&gt;
'''Nodig'''&lt;br /&gt;
&lt;br /&gt;
* Systeemaccount (Schop de WebCie voorzitter + bestuur)&lt;br /&gt;
* [https://gitlab.com/ Gitlab] (Schop de WebCie voorzitter zodra je een account hebt aangemaakt)&lt;br /&gt;
* Toegang tot het WebCie root wachtwoord (Schop de WebCie voorzitter voor de uitleg)&lt;br /&gt;
&lt;br /&gt;
'''Optioneel'''&lt;br /&gt;
* [https://sentry.io Sentry] - Manier om errors van de website te bekijken. (Schop de WebCie voorzitter)&lt;/div&gt;</summary>
		<author><name>Jason</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Godrechten</id>
		<title>Godrechten</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Godrechten"/>
				<updated>2019-09-23T16:21:35Z</updated>
		
		<summary type="html">&lt;p&gt;Jason: Zet in juiste categorie&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Policies voor Godrechten ==&lt;br /&gt;
&lt;br /&gt;
Godrechten op de website zijn erg krachtig, ze laten ALLE informatie over ALLE leden zien. Hierom is het belangrijk dat inactieve WebCie'ers hier geen toegang toe houden. Niet zozeer dat we ze niet vertrouwen, maar er is altijd de kans dat ze gehacked worden of andere data perongeluk lekken. Hierom zijn de volgens policies opgesteld:&lt;br /&gt;
&lt;br /&gt;
* Godrechten worden weggehaald als een lid uit de WebCie gaat&lt;br /&gt;
* Godrechten worden weggehaald als een WebCie lid voor 2 maanden niet actief is en geen contact heeft opgenomen de WebCie over deze inactiefheid&lt;br /&gt;
* Er worden individuele afspraken gemaakt als een WebCie lid wel contact heeft opgenomen met de voorzitter/WebCie&lt;br /&gt;
* 'Niet actief' wordt gedefinieerd als geen commits doen en niet op werkavonden komen&lt;br /&gt;
* Er kunnen eventueel uitzonderingen gemaakt worden in overleg met de WebCie&lt;br /&gt;
&lt;br /&gt;
[[Category:WebCie]]&lt;/div&gt;</summary>
		<author><name>Jason</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Godrechten</id>
		<title>Godrechten</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Godrechten"/>
				<updated>2019-09-23T16:17:12Z</updated>
		
		<summary type="html">&lt;p&gt;Jason: Fix markup issue&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Policies voor Godrechten ==&lt;br /&gt;
&lt;br /&gt;
Godrechten op de website zijn erg krachtig, ze laten ALLE informatie over ALLE leden zien. Hierom is het belangrijk dat inactieve WebCie'ers hier geen toegang toe houden. Niet zozeer dat we ze niet vertrouwen, maar er is altijd de kans dat ze gehacked worden of andere data perongeluk lekken. Hierom zijn de volgens policies opgesteld:&lt;br /&gt;
&lt;br /&gt;
* Godrechten worden weggehaald als een lid uit de WebCie gaat&lt;br /&gt;
* Godrechten worden weggehaald als een WebCie lid voor 2 maanden niet actief is en geen contact heeft opgenomen de WebCie over deze inactiefheid&lt;br /&gt;
* Er worden individuele afspraken gemaakt als een WebCie lid wel contact heeft opgenomen met de voorzitter/WebCie&lt;br /&gt;
* 'Niet actief' wordt gedefinieerd als geen commits doen en niet op werkavonden komen&lt;br /&gt;
* Er kunnen eventueel uitzonderingen gemaakt worden in overleg met de WebCie&lt;/div&gt;</summary>
		<author><name>Jason</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Godrechten</id>
		<title>Godrechten</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Godrechten"/>
				<updated>2019-09-23T16:16:43Z</updated>
		
		<summary type="html">&lt;p&gt;Jason: Created page with &amp;quot;== Policies voor Godrechten ==  Godrechten op de website zijn erg krachtig, ze laten ALLE informatie over ALLE leden zien. Hierom is het belangrijk dat inactieve WebCie'ers hi...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Policies voor Godrechten ==&lt;br /&gt;
&lt;br /&gt;
Godrechten op de website zijn erg krachtig, ze laten ALLE informatie over ALLE leden zien. Hierom is het belangrijk dat inactieve WebCie'ers hier geen toegang toe houden. Niet zozeer dat we ze niet vertrouwen, maar er is altijd de kans dat ze gehacked worden of andere data perongeluk lekken. Hierom zijn de volgens policies opgesteld:&lt;br /&gt;
&lt;br /&gt;
- Godrechten worden weggehaald als een lid uit de WebCie gaat&lt;br /&gt;
- Godrechten worden weggehaald als een WebCie lid voor 2 maanden niet actief is en geen contact heeft opgenomen de WebCie over deze inactiefheid&lt;br /&gt;
- Er worden individuele afspraken gemaakt als een WebCie lid wel contact heeft opgenomen met de voorzitter/WebCie&lt;br /&gt;
- 'Niet actief' wordt gedefinieerd als geen commits doen en niet op werkavonden komen&lt;br /&gt;
- Er kunnen eventueel uitzonderingen gemaakt worden in overleg met de WebCie&lt;/div&gt;</summary>
		<author><name>Jason</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Intro_mogelijk_maken</id>
		<title>Intro mogelijk maken</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Intro_mogelijk_maken"/>
				<updated>2019-08-01T15:27:00Z</updated>
		
		<summary type="html">&lt;p&gt;Jason: Update het stappenplan&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Elk jaar zo rond juli is het weer zover: de intro van het komende jaar is opgestart en ze willen de inschrijvingen opengooien. Als WebCie moet je ervoor zorgen dat de volgende dingen kloppen:&lt;br /&gt;
&lt;br /&gt;
* Geef de introcommissie de juiste auth door de waarde van INTROCIE in &amp;lt;code&amp;gt;www/space/auth/init.php&amp;lt;/code&amp;gt; aan te passen&lt;br /&gt;
* Ga naar Leden -&amp;gt; Introductie -&amp;gt; Toon Introdeelnemers. Als de secretaris vergeten is om de oude deelnemers te verwijderen doe het dan zelf en schop de secretaris dat hij/zij (of de opvolger) dit na de intro moet doen ivm privacy redenen.&lt;br /&gt;
* Maak iDEAL voor kamp mogelijk:&lt;br /&gt;
  * Maak een Artikel aan in Het Nieuwe Boekenweb 2.0™&lt;br /&gt;
  * Maak een voorraad aan hiervoor (locatie: virtueel)&lt;br /&gt;
  * Lever hier meeeeer dan genoeg van (700 ofzo) &lt;br /&gt;
* Zet het juiste ID van de voorraad in het register: introKampVoorraad&lt;br /&gt;
* Pas specialconstants.php aan en zet de juiste waarde voor MAXAANTALKAMP&lt;br /&gt;
* Update de waarde van &amp;lt;code&amp;gt;EJBV&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;www/space/specialconstants.php&amp;lt;/code&amp;gt;, anders wordt &amp;quot;lid vanaf&amp;quot; opeens een jaar te vroeg!&lt;br /&gt;
* Maak de verschillende introductie pakketten:&lt;br /&gt;
  * Maak (lees: Zeg tegen de intro) voor elk pakket een nieuwe activiteit aan. Zet hierbij de titel op iets duidelijks, zoals &amp;quot;Introductiepakket WIS/NAT&amp;quot;&lt;br /&gt;
  * Zorg dat de iDeal vragen staan ingesteld. Zet hier een beetje nuttige vragen in (Voornaam/Achternaam/Email/verzin wat)&lt;br /&gt;
  * Voeg kaartjes toe voor de activiteit&lt;br /&gt;
  * Controleer of de return URL nog klopt, en zet dan de URL als Return URL: http://www.intro-utrecht.nl/?succes=pakket&lt;br /&gt;
  * Zet extern verkrijgbaar aan&lt;br /&gt;
  * Zet DigitaalVerkrijgbaar op PERSOONLIJK&lt;br /&gt;
  * Stel de Verkoopprijs in (let op dat transactiekosten hier nog bovenop komen)&lt;br /&gt;
* Ga nu testen of alles werkt&lt;br /&gt;
'''Nuttige info:'''&lt;br /&gt;
&lt;br /&gt;
* Om een betaallink te krijgen zonder de A-es layout moet &amp;lt;code&amp;gt;?cleanhtml=true&amp;lt;/code&amp;gt; worden toegevoegd.&lt;br /&gt;
&lt;br /&gt;
== Kwerries voor de intro ==&lt;br /&gt;
&lt;br /&gt;
Geef alle mentoren en of ze betaald hebben voor de pakketten. Je moet zelf de juiste activiteitID's en het juiste jaar invullen!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT `Lid`.`contactID`, `studentnr`, `voornaam`, `tussenvoegsels`, `achternaam`, (SELECT COUNT(*) FROM `iDealAntwoord` JOIN `Transactie` ON `iDealAntwoord`.`ideal_transactieID` = `Transactie`.`transactieID` WHERE `antwoord` = `Lid`.`studentnr` AND `vraag_activiteit_activiteitID` = '7299' AND `Transactie`.`status` = 'SUCCESS') AS `nr_pakketten_na_wi_twin`, (SELECT COUNT(*) FROM `iDealAntwoord` JOIN `Transactie` ON `iDealAntwoord`.`ideal_transactieID` = `Transactie`.`transactieID` WHERE `antwoord` = `Lid`.`studentnr` AND `vraag_activiteit_activiteitID` = '7298' AND `Transactie`.`status` = 'SUCCESS') AS `nr_pakketten_ica_iku_twinfo` FROM `Lid` JOIN `Mentor` ON `Lid`.`contactID` = `Mentor`.`lid_contactID` JOIN `Persoon` ON `Lid`.`contactID` = `Persoon`.`contactID` JOIN `IntroGroep` ON `Mentor`.`groep_groepID` = `IntroGroep`.`groepID` JOIN `IntroCluster` ON `IntroGroep`.`cluster_clusterID` = `IntroCluster`.`clusterID` WHERE `IntroCluster`.`jaar` = 2018&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Geef alle introdeelnemers en of ze betaald hebben voor de pakketten. Je moet zelf de juiste activiteitID's invullen!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT `Lid`.`contactID`, `studentnr`, `voornaam`, `tussenvoegsels`, `achternaam`, `IntroDeelnemer`.*, (SELECT COUNT(*) FROM `iDealAntwoord` JOIN `Transactie` ON `iDealAntwoord`.`ideal_transactieID` = `Transactie`.`transactieID` WHERE `antwoord` = `Lid`.`studentnr` AND `vraag_activiteit_activiteitID` = '7299' AND `Transactie`.`status` = 'SUCCESS') AS `nr_pakketten_na_wi_twin`, (SELECT COUNT(*) FROM `iDealAntwoord` JOIN `Transactie` ON `iDealAntwoord`.`ideal_transactieID` = `Transactie`.`transactieID` WHERE `antwoord` = `Lid`.`studentnr` AND `vraag_activiteit_activiteitID` = '7298' AND `Transactie`.`status` = 'SUCCESS') AS `nr_pakketten_ica_iku_twinfo` FROM `Lid` JOIN `IntroDeelnemer` ON `Lid`.`contactID` = `IntroDeelnemer`.`lid_contactID` JOIN `Persoon` ON `Lid`.`contactID` = `Persoon`.`contactID` &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:WebCie]]&lt;br /&gt;
[[Category:HowTo]]&lt;/div&gt;</summary>
		<author><name>Jason</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Git_(WebCie)</id>
		<title>Git (WebCie)</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Git_(WebCie)"/>
				<updated>2019-06-13T15:55:11Z</updated>
		
		<summary type="html">&lt;p&gt;Jason: Toevoegen van git hooks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Git (wat staat voor &amp;quot;Git&amp;quot;) is het bovennatuurlijke systeem waarmee we controle houden op wat er gebeurt met alle WebCie-code. Als WebCie-lid heb je een kopie (een ''checkout'') van het volledige systeem staan op je eigen account (in de map &amp;lt;code&amp;gt;~/wwwdebug&amp;lt;/code&amp;gt;). Deze code bepaalt wat jij te zien krijgt in je browser als je naar je persoonlijke debugpagina gaat (lijkt op &amp;lt;code&amp;gt;https://bla-debug.a-eskwadraat.nl&amp;lt;/code&amp;gt;). Als je wijzigingen in deze code aanbrengt, veranderen dus alleen de pagina's op jouw persoonlijke debug-omgeving. Dat noemen we een sandbox, het zorgt er voor dat je rustig je code kan ontwikkelen zonder dat de rest van de WWW daar last van heeft. Bovendien is jouw debugpagina alleen benaderbaar door WebCie-leden, dus als je per ongeluk lekkende SQL-queries schrijft is dat geen ramp.&lt;br /&gt;
&lt;br /&gt;
Op deze pagina staat basale info om aan de slag te gaan met Git. Je kan ook in de [https://git-scm.com/book/en/v2 online handleiding] kijken voor meer pro-tips.&lt;br /&gt;
&lt;br /&gt;
De WebCie is onlangs &amp;lt;!-- dat is dus 2017, laten we kijken hoe lang dat blijft staan --&amp;gt; overgestapt naar Git. Hierbij is ook de svn-geschiedenis gefilterd, dus pas op bij overstappen!&lt;br /&gt;
&lt;br /&gt;
== Workflow ==&lt;br /&gt;
&lt;br /&gt;
Een ding waar je bij git waarschijnlijk aan moet wennen is dat iedereen een eigen idee heeft van de geschiedenis van alle code. Op de server staan een setje commitgeschiedenissen (oftewel branches), en op je debug staat ook zo'n setje. Met een beetje geluk komen ze ook nog overeen, maar dat hoeft dus niet! Er zijn commando's om van iemand anders de geschiedenis overnemen. Dan krijg je een kopietje binnen van hun geschiedenis, maar wordt jouw geschiedenis ''niet'' aangepast! Je hebt bijvoorbeeld de volgende branches, allemaal opgeslagen in je eigen debug:&lt;br /&gt;
&lt;br /&gt;
* master (jouw laatste editie van de livesite)&lt;br /&gt;
* develop (jouw eigen editie van de &amp;quot;echte&amp;quot; code)&lt;br /&gt;
* feature-watleuks (jouw eigen editie van deze feature)&lt;br /&gt;
* feature-zoveel (een feature waarvan de server nog helemaal niet weet dat die bestaat)&lt;br /&gt;
* HEAD (wijst naar de laatste commit die bij jou is gebeurd, dus als het goed is de branch waar je nu op werkt)&lt;br /&gt;
* origin/master (wat jij denkt dat de servereditie van de livesite is)&lt;br /&gt;
* origin/develop (wat jij denkt dat de servereditie van de &amp;quot;echte&amp;quot; code is)&lt;br /&gt;
* origin/feature-watleuks (wat jij denkt dat de servereditie van de deze feature is)&lt;br /&gt;
&lt;br /&gt;
Als je &amp;lt;code&amp;gt;git fetch&amp;lt;/code&amp;gt; doet, zal git de laatste versie van elke branch van de server opvragen en die bewaren in origin/$branch. Dan kun je die weer in jouw branches stoppen met bijvoorbeeld &amp;lt;code&amp;gt;git merge&amp;lt;/code&amp;gt;. Het commando &amp;lt;code&amp;gt;git pull&amp;lt;/code&amp;gt; stuurt jouw editie van de huidige branch naar de server. (De server weet dus in principe niet welke gebruikers er zijn of welke branches ze hebben!)&lt;br /&gt;
&lt;br /&gt;
We hebben twee hoofdbranches: &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; en &amp;lt;code&amp;gt;develop&amp;lt;/code&amp;gt;. De livesite zou gelijk moeten lopen met de branch &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;, dus we moeten goed opletten wat we daarop zetten. Om makkelijk code te kunnen delen, gaan we in principe alle commits doen op de branch &amp;lt;code&amp;gt;develop&amp;lt;/code&amp;gt;, maar het is nog netter om met branches te werken.&lt;br /&gt;
&lt;br /&gt;
Handige commando's om het overzicht te bewaren:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;git log&amp;lt;/code&amp;gt; om de commits op je huidige branch te bekijken.&lt;br /&gt;
* &amp;lt;code&amp;gt;git log $commit-of-branch-of-etc&amp;lt;/code&amp;gt; om de commits op een andere branch te bekijken. (Het is handig om hiervoor ook &amp;lt;code&amp;gt;git fetch&amp;lt;/code&amp;gt; te doen.)&lt;br /&gt;
* &amp;lt;code&amp;gt;gitk&amp;lt;/code&amp;gt; als je beter tegen een grafische interface kan.&lt;br /&gt;
* &amp;lt;code&amp;gt;git status&amp;lt;/code&amp;gt; toont je branch, hoe die verschilt met origin/$branch en wat je ten opzichte van je branch hebt aangepast&lt;br /&gt;
* &amp;lt;code&amp;gt;git branch -a&amp;lt;/code&amp;gt; toont elke branch waar git in jouw debug van afweet&lt;br /&gt;
* &amp;lt;code&amp;gt;git log --graph --decorate --pretty=oneline --abbrev-commit&amp;lt;/code&amp;gt; om in de terminal een mooie gerichte graaf van commits te tonen (&amp;lt;code&amp;gt;--all&amp;lt;/code&amp;gt; voor alle branches tegelijk)&lt;br /&gt;
&lt;br /&gt;
=== Maak een feature ===&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;git checkout develop&amp;lt;/code&amp;gt; en &amp;lt;code&amp;gt;git pull&amp;lt;/code&amp;gt; om up to date te zijn&lt;br /&gt;
# maak een nieuwe branch met &amp;lt;code&amp;gt;git checkout -b feature-$bla&amp;lt;/code&amp;gt;&lt;br /&gt;
# ga een stukje zitten programmeren&lt;br /&gt;
# heb je nieuwe bestanden toegevoegd: vertel dat aan git met &amp;lt;code&amp;gt;git add $bestand&amp;lt;/code&amp;gt;&lt;br /&gt;
# wil je bestanden weggooien: doe dat en vertel het tegelijk aan git met &amp;lt;code&amp;gt;git rm $bestand&amp;lt;/code&amp;gt;&lt;br /&gt;
# wil je kijken wat je allemaal hebt gedaan: gebruik &amp;lt;code&amp;gt;git status&amp;lt;/code&amp;gt; en/of &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt;&lt;br /&gt;
# ben je tevreden met een setje wijzigingen: commit ze met &amp;lt;code&amp;gt;git add $gewijzigd_bestand1 $gewijzigd_bestand2 ...&amp;lt;/code&amp;gt; en &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; (het is netjes om eerst nog even te kijken wat je gaat committen zodat er geen troep meekomt)&lt;br /&gt;
# herhaal bovenstaande stappen tot je feature helemaal af is&lt;br /&gt;
# ben je klaar: stop je feature in develop met &amp;lt;code&amp;gt;git checkout develop&amp;lt;/code&amp;gt; en dan &amp;lt;code&amp;gt;git merge feature-$bla&amp;lt;/code&amp;gt; en maak het openbaar met &amp;lt;code&amp;gt;git push&amp;lt;/code&amp;gt; '''(TODO: Of gaan we helemaal hardcore met pull requests beginnen?)'''&lt;br /&gt;
# alle webcie'ers krijgen nu een mailtje met de commits die je hebt gepleegd en zullen je feliciteren en/of afkraken op je programmeerstijl&lt;br /&gt;
&lt;br /&gt;
Nu is werken in je eentje heel leuk, maar samenwerken geeft een veel mooier feestje! Daarom is het aan te raden dat je om de zoveel tijd commits van anderen opvraagt en met ze deelt:&lt;br /&gt;
&lt;br /&gt;
# als iemand anders op je branch heeft gewerkt: doe &amp;lt;code&amp;gt;git pull&amp;lt;/code&amp;gt; (krijg je een error in de trant van &amp;quot;geen remote voor branch&amp;quot;, doe dan &amp;lt;code&amp;gt;git branch --set-upstream-to origin/feature-$bla&amp;lt;/code&amp;gt; om de remote in te stellen en probeer opnieuw)&lt;br /&gt;
# als er dingen binnenkomen op develop: stop ze in je branch &amp;lt;code&amp;gt;git fetch&amp;lt;/code&amp;gt;'en en dan &amp;lt;code&amp;gt;git merge origin/develop&amp;lt;/code&amp;gt;. (Voor echte pro's is er ook &amp;lt;code&amp;gt;git rebase&amp;lt;/code&amp;gt;, maar dat heeft meer problemen met samenwerken op de branch)&lt;br /&gt;
# als je je vooruitgang wilt delen: doe &amp;lt;code&amp;gt;git push&amp;lt;/code&amp;gt; (krijg je een error in de trant van &amp;quot;geen remote voor branch&amp;quot;, doe dan &amp;lt;code&amp;gt;git branch --set-upstream-to origin/feature-$bla&amp;lt;/code&amp;gt; om de remote in te stellen en probeer opnieuw)&lt;br /&gt;
&lt;br /&gt;
=== Fix een bug ===&lt;br /&gt;
&lt;br /&gt;
(Je kan dit proces ook op develop doen als de bug niet zo heel hoge prioriteit heeft. Doe dan gewoon wat hierboven staat.)&lt;br /&gt;
&lt;br /&gt;
Is er een bug die snel opgelost moet worden? Dan gaan we op basis van de livesite werken zodat we de fix apart kunnen houden van eventuele (halfbakken) features.&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;git checkout master&amp;lt;/code&amp;gt; en &amp;lt;code&amp;gt;git pull&amp;lt;/code&amp;gt; om up to date te zijn&lt;br /&gt;
# maak een nieuwe branch met &amp;lt;code&amp;gt;git checkout -b bug-$bla&amp;lt;/code&amp;gt;&lt;br /&gt;
# doe precies hetzelfde programmeer-commitriedeltje als hiervoor beschreven&lt;br /&gt;
# als je in een commit een regel &amp;quot;Closes: #$bugnummer&amp;quot; zet, wordt de bug automatisch op gesloten gezet in Bugweb.&lt;br /&gt;
# ben je klaar: stop je fix in master met &amp;lt;code&amp;gt;git checkout master&amp;lt;/code&amp;gt; en dan &amp;lt;code&amp;gt;git merge bug-$bla&amp;lt;/code&amp;gt; en maak het openbaar met &amp;lt;code&amp;gt;git push&amp;lt;/code&amp;gt;&lt;br /&gt;
# zorg ervoor dat develop up-to-date blijft: &amp;lt;code&amp;gt;git checkout develop&amp;lt;/code&amp;gt; en dan &amp;lt;code&amp;gt;git merge master&amp;lt;/code&amp;gt; en maak het openbaar met &amp;lt;code&amp;gt;git push&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Shit's on fire yo ===&lt;br /&gt;
&lt;br /&gt;
Heb je er een potje van gemaakt, en wil je terug naar de laatste commit? Als je een enkel bestand wil terugzetten, heb je &amp;lt;code&amp;gt;git checkout $bestand&amp;lt;/code&amp;gt;; alles wat je in het bestand hebt gedaan sinds de laatste commit wordt dan teruggezet zoals het was. De makkelijkste manier om echt helemaal alles weg te gooien is met &amp;lt;code&amp;gt;git reset --hard HEAD&amp;lt;/code&amp;gt;; elk bestand dat je hebt veranderd t.o.v. je laatste commit wordt dan teruggezet zoals het was. Dit kan dus ook nuttige wijzigingen weggooien!&lt;br /&gt;
&lt;br /&gt;
Heb je er een nog erger potje van gemaakt, en heb je een foute commit gemaakt? Als dit de laatste commit(s) was (waren) op je branch en je hebt ze nog niet gepusht, dan heb je &amp;lt;code&amp;gt;git reset HEAD~1&amp;lt;/code&amp;gt; om de laatste commit weg te gooien (en &amp;lt;code&amp;gt;HEAD~&amp;lt;/code&amp;gt;''n'' om ''n'' commits tegelijk ongedaan te maken.) Heb je ze al wel gepusht, dan moet je naar de aanpak hieronder overgaan.&lt;br /&gt;
&lt;br /&gt;
Heeft iemand anders een enorm potje gemaakt, en wil je de commit ongedaan maken? Doe dan &amp;lt;code&amp;gt;git revert $commit&amp;lt;/code&amp;gt;. Dat maakt een nieuwe commit waarin precies het tegenovergestelde gebeurt van die wijzigingen. De originele commit blijft nog wel in de geschiedenis staan! Als iemand dus geheime data heeft gecommit, moet je toch echt [https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History geavanceerde tools gebruiken].&lt;br /&gt;
&lt;br /&gt;
== Om iets live te zetten ==&lt;br /&gt;
&lt;br /&gt;
Ten eerste: denk goed na of je dit echt wel wilt doen. Er kunnen nog wel eens gebruikers gaan klagen.&lt;br /&gt;
&lt;br /&gt;
Doe gewoon een &amp;lt;code&amp;gt;git push&amp;lt;/code&amp;gt; naar master op je eigen bakkie. Typ lekker &amp;lt;code&amp;gt;./zetLive.sh&amp;lt;/code&amp;gt; in de /scripts map en gaan met die banaan.&lt;br /&gt;
&lt;br /&gt;
== Migreren van SVN naar Git ==&lt;br /&gt;
&lt;br /&gt;
Is jouw debug van voor de overstap? Dan is het niet heel lastig om te switchen!&lt;br /&gt;
&lt;br /&gt;
=== Verhuizen van git-svn ===&lt;br /&gt;
Gebruik je al Git-SVN, dan kun je als volgt switchen:&lt;br /&gt;
# &amp;lt;code&amp;gt;cd wwwdebug&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;git remote add origin ssh://vm-www/srv/git&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;git fetch&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;git branch -t origin/develop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nu '''moet''' je handmatig commits van je huidige branches op develop rebasen, want anders gaat de hele geschiedenis stuk. Check dat de 3e commit vanaf het begin begint met &amp;lt;code&amp;gt;9cf65047&amp;lt;/code&amp;gt; ipv &amp;lt;code&amp;gt;cc9c5bb&amp;lt;/code&amp;gt;. Zo niet, ga je allemaal antieke ledendata meepushen (die ik met pijn en moeite heb weggefilterd) en gaat de Autoriteit Persoonsgegevens je slaan.&lt;br /&gt;
&lt;br /&gt;
=== Verhuizen zonder git-svn ===&lt;br /&gt;
Heb je wel een wwwdebug maar nog geen git? Dan moet je iets meer moeite doen om je laatste versie te bewaren:&lt;br /&gt;
# &amp;lt;code&amp;gt;cd wwwdebug&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;svn up&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;svn log&amp;lt;/code&amp;gt; Kijk hier wat de laatste revisie is!&lt;br /&gt;
# &amp;lt;code&amp;gt;git init&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;git remote add origin ssh://vm-www/srv/git&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;git fetch&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;git commit --allow-empty -m &amp;quot;Initial empty commit&amp;quot;&amp;lt;/code&amp;gt; (want git snapt het niet als je geen commit hebt gedaan en wel branches wil beginnen, dan maar zo)&lt;br /&gt;
# &amp;lt;code&amp;gt;git log origin/master&amp;lt;/code&amp;gt; Kijk hier welke git-commit overeenkomt met de laatste svn-revisie.&lt;br /&gt;
# &amp;lt;code&amp;gt;git reset --mixed $laatste_revisie_commit&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;git stash&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;git checkout -t origin/develop&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;git stash apply&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vertaalsleutel svn -&amp;gt; git ===&lt;br /&gt;
&lt;br /&gt;
Het belangrijkste verschil is dat git heel veel verschillende commitgeschiedenissen heeft en svn maar eentje. Bij elk commando vraagt svn bijvoorbeeld aan de server of er nog commits bijgekomen zijn. Git doet dat alleen als je erom vraagt met &amp;lt;code&amp;gt;git fetch&amp;lt;/code&amp;gt;. Het is daarom een goed idee om als svn'er voor elk commando &amp;lt;code&amp;gt;git fetch&amp;lt;/code&amp;gt; te runnen totdat je doorhebt wanneer het echt nuttig is.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;svn up&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;git pull&amp;lt;/code&amp;gt; (vraag aan de remotes welke veranderingen er zijn, merge die automatisch)&lt;br /&gt;
* &amp;lt;code&amp;gt;svn st&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;git status&amp;lt;/code&amp;gt; (vraag de huidige status op van jouw lokale kopie ten opzichte van jouw laatste commit)&lt;br /&gt;
* &amp;lt;code&amp;gt;svn diff&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt; (bekijk alle wijzigingen die er zijn tussen jouw lokale kopie en jouw laatste commit)&lt;br /&gt;
* &amp;lt;code&amp;gt;svn ci&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;git commit -a&amp;lt;/code&amp;gt; (stop al je wijzigingen in een nieuwe commit, die je zou kunnen opsturen naar de andere WebCie'ers)&lt;br /&gt;
&lt;br /&gt;
== Een nieuwe git-repo opzetten ==&lt;br /&gt;
&lt;br /&gt;
Als je code die niet bij de livesite hoort wilt delen met de WebCie, kan dit via een aparte git-repo. Op deze manier maak je een nieuwe repo:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;ssh vm-www&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;cd /srv&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;sudo mkdir git-$bla-repo&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;sudo chown webcie:webcie /srv/git-$bla-repo&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;sudo chmod o= /srv/git-$bla-repo&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;sudo chmod ug=rwx /srv/git-$bla-repo&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;sudo chmod g+s /srv/git-$bla-repo&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;cd /srv/git-$bla-repo&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;git init --bare --shared&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nu kun je als het goed is een &amp;lt;code&amp;gt;git clone ssh://vm-www/srv/git-$bla-repo&amp;lt;/code&amp;gt; doen!&lt;br /&gt;
&lt;br /&gt;
== Migreren tussen Git-repo's ==&lt;br /&gt;
&lt;br /&gt;
Als de repository ergens anders gehost gaat worden, wil je natuurlijk dat alle huidige code daar terechtkomt.&lt;br /&gt;
&lt;br /&gt;
Stel dat er al een repository is aangemaakt voor de code (e.g. zoals hierboven beschreven), met bijvoorbeeld de URL &amp;lt;code&amp;gt;git.example.com/user/repo&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Een WebCie'r moet dan doen:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;git remote add new-origin $REMOTE_URL&amp;lt;/code&amp;gt; &amp;amp;mdash; Voeg de nieuwe repository als een remote toe.&lt;br /&gt;
* &amp;lt;code&amp;gt;git fetch origin&amp;lt;/code&amp;gt; &amp;amp;mdash; Haal alles op uit de huidige repository.&lt;br /&gt;
* &amp;lt;code&amp;gt;git push new-origin refs/remotes/origin/\*:refs/heads/\*&amp;lt;/code&amp;gt; &amp;amp;mdash; Hiermee pushen we alles van origin naar new-origin. ([https://stackoverflow.com/questions/23947419 Aldus sprak StackOverflow]) Let wel: misschien pusht dit juist iets te veel. Bij het testen hiervan kwam er bijvoorbeeld een branch op de nieuwe remote met de naam HEAD. Dit moet je dan weer even deleten met e.g. &amp;lt;code&amp;gt;git push new-remote --delete HEAD&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;git remote remove new-origin&amp;lt;/code&amp;gt; &amp;amp;mdash; Verwijder de remote.&lt;br /&gt;
&lt;br /&gt;
Iedereen doet vervolgens:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;git remote set-url origin $REMOTE_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En klaar is Kees! (Hopelijk...)&lt;br /&gt;
&lt;br /&gt;
[[Category:WebCie]]&lt;br /&gt;
&lt;br /&gt;
== Git hooks ==&lt;br /&gt;
&lt;br /&gt;
Om het leven van de WebCie wat makkelijker te maken [https://gitlab.com/iba-aes/webcie/website/snippets/1866213 zijn er git hooks] die verschillende handmatige stappen automatiseren als ze nodig zijn. De volgende dingen zijn geautomatiseerd:&lt;br /&gt;
&lt;br /&gt;
* Het automatisch uitvoeren van &amp;lt;code&amp;gt;./composer install&amp;lt;/code&amp;gt;&lt;br /&gt;
* Het automatisch uitvoeren van &amp;lt;code&amp;gt;./minify&amp;lt;/code&amp;gt;&lt;br /&gt;
* Het automatisch uitvoeren van &amp;lt;code&amp;gt;./dia2php&amp;lt;/code&amp;gt; en &amp;lt;code&amp;gt;./dia2py&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jason</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Intro_mogelijk_maken</id>
		<title>Intro mogelijk maken</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Intro_mogelijk_maken"/>
				<updated>2019-05-09T18:16:32Z</updated>
		
		<summary type="html">&lt;p&gt;Jason: Genders&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Elk jaar zo rond juli is het weer zover: de intro van het komende jaar is opgestart en ze willen de inschrijvingen opengooien. Als WebCie moet je ervoor zorgen dat de volgende dingen kloppen:&lt;br /&gt;
&lt;br /&gt;
* geef de introcommissie de juiste auth door de waarde van INTROCIE in &amp;lt;code&amp;gt;www/space/auth/init.php&amp;lt;/code&amp;gt; aan te passen&lt;br /&gt;
* Ga naar Leden -&amp;gt; Introductie -&amp;gt; Toon Introdeelnemers. Als de secretaris vergeten is om de oude deelnemers te verwijderen doe het dan zelf en schop de secretaris dat hij/zij (of de opvolger) dit na de intro moet doen ivm privacy redenen.&lt;br /&gt;
* Maak iDEAL voor kamp mogelijk:&lt;br /&gt;
  * maak een Artikel aan in Het Nieuwe Boekenweb 2.0™&lt;br /&gt;
  * maak een voorraad aan hiervoor (locatie: virtueel)&lt;br /&gt;
  * lever hier meeeeer dan genoeg van (700 ofzo) &lt;br /&gt;
  * zet de voorraad in &amp;lt;code&amp;gt;www/WhosWho4/Boekweb2/DBObject/iDeal.cls.php&amp;lt;/code&amp;gt; op de nieuwe introkampbetaling.&lt;br /&gt;
* zet de voorraad en omschrijving in &amp;lt;code&amp;gt;www/WhosWho4/Controllers/Intro.php&amp;lt;/code&amp;gt; op de nieuwe introkampbetaling.&lt;br /&gt;
* update de waarde van &amp;lt;code&amp;gt;EJBV&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;www/space/specialconstants.php&amp;lt;/code&amp;gt;, anders wordt &amp;quot;lid vanaf&amp;quot; opeens een jaar te vroeg!&lt;br /&gt;
* als kandidaatsbestuurders meehelpen met de boekverkoop, geef ze dan ook de benodigde rechten als in [[Bestuurswissel]] omschreven.&lt;br /&gt;
&lt;br /&gt;
== Kwerries voor de intro ==&lt;br /&gt;
&lt;br /&gt;
Geef alle mentoren en of ze betaald hebben voor de pakketten. Je moet zelf de juiste activiteitID's en het juiste jaar invullen!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT `Lid`.`contactID`, `studentnr`, `voornaam`, `tussenvoegsels`, `achternaam`, (SELECT COUNT(*) FROM `iDealAntwoord` JOIN `Transactie` ON `iDealAntwoord`.`ideal_transactieID` = `Transactie`.`transactieID` WHERE `antwoord` = `Lid`.`studentnr` AND `vraag_activiteit_activiteitID` = '7299' AND `Transactie`.`status` = 'SUCCESS') AS `nr_pakketten_na_wi_twin`, (SELECT COUNT(*) FROM `iDealAntwoord` JOIN `Transactie` ON `iDealAntwoord`.`ideal_transactieID` = `Transactie`.`transactieID` WHERE `antwoord` = `Lid`.`studentnr` AND `vraag_activiteit_activiteitID` = '7298' AND `Transactie`.`status` = 'SUCCESS') AS `nr_pakketten_ica_iku_twinfo` FROM `Lid` JOIN `Mentor` ON `Lid`.`contactID` = `Mentor`.`lid_contactID` JOIN `Persoon` ON `Lid`.`contactID` = `Persoon`.`contactID` JOIN `IntroGroep` ON `Mentor`.`groep_groepID` = `IntroGroep`.`groepID` JOIN `IntroCluster` ON `IntroGroep`.`cluster_clusterID` = `IntroCluster`.`clusterID` WHERE `IntroCluster`.`jaar` = 2018&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Geef alle introdeelnemers en of ze betaald hebben voor de pakketten. Je moet zelf de juiste activiteitID's invullen!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT `Lid`.`contactID`, `studentnr`, `voornaam`, `tussenvoegsels`, `achternaam`, `IntroDeelnemer`.*, (SELECT COUNT(*) FROM `iDealAntwoord` JOIN `Transactie` ON `iDealAntwoord`.`ideal_transactieID` = `Transactie`.`transactieID` WHERE `antwoord` = `Lid`.`studentnr` AND `vraag_activiteit_activiteitID` = '7299' AND `Transactie`.`status` = 'SUCCESS') AS `nr_pakketten_na_wi_twin`, (SELECT COUNT(*) FROM `iDealAntwoord` JOIN `Transactie` ON `iDealAntwoord`.`ideal_transactieID` = `Transactie`.`transactieID` WHERE `antwoord` = `Lid`.`studentnr` AND `vraag_activiteit_activiteitID` = '7298' AND `Transactie`.`status` = 'SUCCESS') AS `nr_pakketten_ica_iku_twinfo` FROM `Lid` JOIN `IntroDeelnemer` ON `Lid`.`contactID` = `IntroDeelnemer`.`lid_contactID` JOIN `Persoon` ON `Lid`.`contactID` = `Persoon`.`contactID` &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:WebCie]]&lt;br /&gt;
[[Category:HowTo]]&lt;/div&gt;</summary>
		<author><name>Jason</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Intro_mogelijk_maken</id>
		<title>Intro mogelijk maken</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Intro_mogelijk_maken"/>
				<updated>2019-05-09T18:15:42Z</updated>
		
		<summary type="html">&lt;p&gt;Jason: Nieuwe knop om intro deelnemers te verwijderen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Elk jaar zo rond juli is het weer zover: de intro van het komende jaar is opgestart en ze willen de inschrijvingen opengooien. Als WebCie moet je ervoor zorgen dat de volgende dingen kloppen:&lt;br /&gt;
&lt;br /&gt;
* geef de introcommissie de juiste auth door de waarde van INTROCIE in &amp;lt;code&amp;gt;www/space/auth/init.php&amp;lt;/code&amp;gt; aan te passen&lt;br /&gt;
* Ga naar Leden -&amp;gt; Introductie -&amp;gt; Toon Introdeelnemers. Als de secretaris vergeten is om de oude deelnemers te verwijderen doe het dan zelf en schop de nieuwe secretaris dat die dit na de intro moet doen ivm privacy redenen.&lt;br /&gt;
* Maak iDEAL voor kamp mogelijk:&lt;br /&gt;
  * maak een Artikel aan in Het Nieuwe Boekenweb 2.0™&lt;br /&gt;
  * maak een voorraad aan hiervoor (locatie: virtueel)&lt;br /&gt;
  * lever hier meeeeer dan genoeg van (700 ofzo) &lt;br /&gt;
  * zet de voorraad in &amp;lt;code&amp;gt;www/WhosWho4/Boekweb2/DBObject/iDeal.cls.php&amp;lt;/code&amp;gt; op de nieuwe introkampbetaling.&lt;br /&gt;
* zet de voorraad en omschrijving in &amp;lt;code&amp;gt;www/WhosWho4/Controllers/Intro.php&amp;lt;/code&amp;gt; op de nieuwe introkampbetaling.&lt;br /&gt;
* update de waarde van &amp;lt;code&amp;gt;EJBV&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;www/space/specialconstants.php&amp;lt;/code&amp;gt;, anders wordt &amp;quot;lid vanaf&amp;quot; opeens een jaar te vroeg!&lt;br /&gt;
* als kandidaatsbestuurders meehelpen met de boekverkoop, geef ze dan ook de benodigde rechten als in [[Bestuurswissel]] omschreven.&lt;br /&gt;
&lt;br /&gt;
== Kwerries voor de intro ==&lt;br /&gt;
&lt;br /&gt;
Geef alle mentoren en of ze betaald hebben voor de pakketten. Je moet zelf de juiste activiteitID's en het juiste jaar invullen!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT `Lid`.`contactID`, `studentnr`, `voornaam`, `tussenvoegsels`, `achternaam`, (SELECT COUNT(*) FROM `iDealAntwoord` JOIN `Transactie` ON `iDealAntwoord`.`ideal_transactieID` = `Transactie`.`transactieID` WHERE `antwoord` = `Lid`.`studentnr` AND `vraag_activiteit_activiteitID` = '7299' AND `Transactie`.`status` = 'SUCCESS') AS `nr_pakketten_na_wi_twin`, (SELECT COUNT(*) FROM `iDealAntwoord` JOIN `Transactie` ON `iDealAntwoord`.`ideal_transactieID` = `Transactie`.`transactieID` WHERE `antwoord` = `Lid`.`studentnr` AND `vraag_activiteit_activiteitID` = '7298' AND `Transactie`.`status` = 'SUCCESS') AS `nr_pakketten_ica_iku_twinfo` FROM `Lid` JOIN `Mentor` ON `Lid`.`contactID` = `Mentor`.`lid_contactID` JOIN `Persoon` ON `Lid`.`contactID` = `Persoon`.`contactID` JOIN `IntroGroep` ON `Mentor`.`groep_groepID` = `IntroGroep`.`groepID` JOIN `IntroCluster` ON `IntroGroep`.`cluster_clusterID` = `IntroCluster`.`clusterID` WHERE `IntroCluster`.`jaar` = 2018&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Geef alle introdeelnemers en of ze betaald hebben voor de pakketten. Je moet zelf de juiste activiteitID's invullen!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT `Lid`.`contactID`, `studentnr`, `voornaam`, `tussenvoegsels`, `achternaam`, `IntroDeelnemer`.*, (SELECT COUNT(*) FROM `iDealAntwoord` JOIN `Transactie` ON `iDealAntwoord`.`ideal_transactieID` = `Transactie`.`transactieID` WHERE `antwoord` = `Lid`.`studentnr` AND `vraag_activiteit_activiteitID` = '7299' AND `Transactie`.`status` = 'SUCCESS') AS `nr_pakketten_na_wi_twin`, (SELECT COUNT(*) FROM `iDealAntwoord` JOIN `Transactie` ON `iDealAntwoord`.`ideal_transactieID` = `Transactie`.`transactieID` WHERE `antwoord` = `Lid`.`studentnr` AND `vraag_activiteit_activiteitID` = '7298' AND `Transactie`.`status` = 'SUCCESS') AS `nr_pakketten_ica_iku_twinfo` FROM `Lid` JOIN `IntroDeelnemer` ON `Lid`.`contactID` = `IntroDeelnemer`.`lid_contactID` JOIN `Persoon` ON `Lid`.`contactID` = `Persoon`.`contactID` &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:WebCie]]&lt;br /&gt;
[[Category:HowTo]]&lt;/div&gt;</summary>
		<author><name>Jason</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Backup</id>
		<title>Backup</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Backup"/>
				<updated>2019-03-13T20:38:26Z</updated>
		
		<summary type="html">&lt;p&gt;Jason: Voeg instructies toe over encryptie van data&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Geregeld worden er '''backups''' gemaakt van een groot deel van het systeem. Hier vallen onder andere de home directories en virtuele machines onder. De WebCie heeft ook een grote hoeveelheid incrementele databasebackups.&lt;br /&gt;
&lt;br /&gt;
== Interne backups ==&lt;br /&gt;
&lt;br /&gt;
De interne backups zijn bedoeld om bestanden terug te kunnen halen die per ongeluk verwijderd zijn. Elke 4 uur, met middernacht als offset, wordt er een recursieve snapshot gemaakt van alle data. Deze 4 uurlijkse snapshots worden, op die van middernacht na, 2 dagen bewaard. De snapshots van middernacht worden standaard 2 weken bewaard, met enkele uitzonderingen zoals de home directories. Deze uitzonderingen plus hun retention tijd staan op haskell in `/etc/cron.daily/managesnapshot`.&lt;br /&gt;
&lt;br /&gt;
Deze 4 uurlijkse backups worden direct gesynced naar de on-site backup in de vorm van Nikola.&lt;br /&gt;
&lt;br /&gt;
Interne backups kunnen makkelijk teruggehaald worden. In het geval van een dataset is er in de root van deze dataset een onzichtbare map .zfs. In het geval van de home kan de staat van 20 november 2015 teruggevonden worden in `/srv/home/.zfs/snapshot/2015112000`. Dit kan alleen op haskell gedaan worden aangezien deze map niet bereikbaar is over NFS. Iets vergelijkbaars kan gedaan wordne met zvol's. Eerst moet echter de property snapdev op visible gezet worden in plaats van hidden en daarna zijn de snapshots van de zvols zichtbaar in `/dev`. Snapshots zijn read-only, dus als je een zvol probeert te mounten die dirty is, dan werkt dit niet als er ext4 op de zvol staat. Ext4 wil bij het recoveren namelijk schrijven, wat niet kan. In een dergelijke situatie kan het vaak handig zijn om een snapshot te klonen en dan te mounten. Met xfs is dit niet nodig.&lt;br /&gt;
&lt;br /&gt;
== Off-site backups ==&lt;br /&gt;
&lt;br /&gt;
We slaan de data ook off-site op bij de universiteit. Dit is een virtuele machine met de naam [[Claude|claude]]. Dit gebeurd vanaf max, aangezien daar een 1:1 kopie staat van de data en op deze manier wordt haskell ontlast. De backups worden vanaf [https://mediawiki.a-eskwadraat.nl/wiki/Claude claude] gepulled vanaf max en door max eerst ge-gzipped en ge-encrypt, zodat de universiteit niet bij onze data kan. Naar [https://mediawiki.a-eskwadraat.nl/wiki/Claude claude] wordt elke eerste dag van de maand een complete kopie gedumped en voor de rest van de maand worden incrementele dumps gemaakt.&lt;br /&gt;
&lt;br /&gt;
== Relevante scripts ==&lt;br /&gt;
&lt;br /&gt;
De volgende scripts en crons die te maken hebben met backups zijn allemaal in gebruik.&lt;br /&gt;
&lt;br /&gt;
*`/usr/local/bin/backupscript` op Haskell maakt elke 4 uur (door `/etc/cron.d/autobackup`) een snapshot en stuurt deze direct naar max.&lt;br /&gt;
*`/etc/cron.daily/cleansnapshots` draait op zowel Max als Haskell en ruimt elke dag oude snapshots op. Deze file is identiek op beide machines, dus aanpassingen moeten gesynced worden.&lt;br /&gt;
*`/usr/local/bin/pullbackups` op [https://mediawiki.a-eskwadraat.nl/wiki/Claude claude] pullt backups van Max en slaat deze op.&lt;br /&gt;
*`/usr/local/bin/cleanbackups`op [https://mediawiki.a-eskwadraat.nl/wiki/Claude claude] ruimt oude snapshots op als de ruimte (2TB) vol dreigt te raken. Vol is &amp;gt;90%. Dit is een cron die elke 5 minuten checkt. Mocht er iets fout gaan zoals dat er bij het opruimen niet tenminste 1 volledige backup altijd bewaard blijft, dan mailt deze dit. Het gebeurd nog wel eens dat de nfs share van de universiteit eruit knalt, en dan flipt dit script ook.&lt;br /&gt;
&lt;br /&gt;
== WebCie: snapshots van de database ==&lt;br /&gt;
&lt;br /&gt;
Op de vm-www maakt een script automatisch elke 10 minuten een dump van de database. Een diff met de vorige db-dump wordt opgeslagen in het archief (&amp;lt;code&amp;gt;haskell:/srv/www/archief&amp;lt;/code&amp;gt;): vanaf de [[vm-www]] beschikbaar op &amp;lt;code&amp;gt;/archief/www/2018-08/07/whoswho4.2018-08-07_13_00.diff&amp;lt;/code&amp;gt; bijvoorbeeld. Ook wordt elke dag een volledige db-dump opgeslagen. Elke maand worden de volledige dumps en alle diffs samen gecomprimeerd. De dumps kun je gebruiken om per ongeluk gewiste data weer terug te zetten.&lt;br /&gt;
&lt;br /&gt;
=== Backup van binaire logs ===&lt;br /&gt;
&lt;br /&gt;
Omdat het diffprogramma soms te lang deed over het backuppen omdat de diffs heeeeeeeeel lang werden, gaan we de binaire logs gebruiken voor backups.&lt;br /&gt;
&lt;br /&gt;
Als je in de mysql-configuratie de optie log-bin aanzet, zal mysql alle updates aan de databases opschrijven in een logbestand. Dit kun je gebruiken voor [[replicatie]], of voor backups. Elke 10 minuten worden de logs geflusht en alle nieuwe bestanden gekopieerd naar het www-archief. Vervolgens worden de oude logbestanden weggegooid (zodat we niet de volledige geschiedenis steeds opnieuw overnemen). PAS OP: als je replicatie doet en een andere server is offline terwijl de logs worden weggegooid, kan die niet zomaar meer up-to-date komen! Zodra je weer replicatie wilt aanzetten (zoals [[Webcie-vm#Mariadb_en_replicatie|als je een nieuwe VM wilt maken]], moet je dus een goede oplossing hiervoor verzinnen. (Misschien: houd bij welke logbestanden al gekopieerd zijn en sla die over?)&lt;br /&gt;
&lt;br /&gt;
* https://dev.mysql.com/doc/refman/8.0/en/backup-methods.html&lt;br /&gt;
* https://dev.mysql.com/doc/refman/8.0/en/binary-log.html&lt;br /&gt;
* https://dev.mysql.com/doc/refman/8.0/en/point-in-time-recovery.html&lt;br /&gt;
&lt;br /&gt;
=== Encryptie van de backups ===&lt;br /&gt;
&lt;br /&gt;
Alle WebCie backups worden nu encrypted opgeslagen. De public key die hier voor gebruikt wordt is de &amp;quot;A-Eskwadraat Backup Service &amp;lt;webcie@a-eskwadraat.nl&amp;gt;&amp;quot; key. Deze public key staat geregistreerd in de keychain van de apache user op de vm-www2. Daarnaast is de public key te vinden in [deze](https://gitlab.com/iba-aes/webcie/website/snippets/1835239) Gitlab snippet. De private key wordt bewaard door het bestuur en de WebCie voorzitter. &lt;br /&gt;
&lt;br /&gt;
=== Decrypten van data ===&lt;br /&gt;
&lt;br /&gt;
Is het nodig om de data te decrypten? Volg het volgende stappenplan.&lt;br /&gt;
&lt;br /&gt;
* Vraag het bestuur/de WebCie voorzitter om de USB stick met de private key.&lt;br /&gt;
* Importeer de private key: `gpg --import &amp;lt;keynaam&amp;gt;`&lt;br /&gt;
* Decrypt de data: `gpg --output &amp;lt;outputfile&amp;gt; --decrypt &amp;lt;inputfile&amp;gt;`&lt;br /&gt;
* Verwijder de private key nadat je klaar bent: `gpg --delete-secret-key webcie@a-eskwadraat.nl`&lt;br /&gt;
&lt;br /&gt;
[[Category:Sysop]]&lt;br /&gt;
[[Category:WebCie]]&lt;/div&gt;</summary>
		<author><name>Jason</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Doxygen</id>
		<title>Doxygen</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Doxygen"/>
				<updated>2018-05-15T19:56:45Z</updated>
		
		<summary type="html">&lt;p&gt;Jason: Doxygen update instructies toegevoegd&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Doxygen''' is een programma dat volautomatisch code omzet in klikbare documentatiepagina. De documentatie voor de livesite is te vinden op [https://doxygen-www.a-eskwadraat.nl].&lt;br /&gt;
&lt;br /&gt;
= Persoonlijke docusites =&lt;br /&gt;
&lt;br /&gt;
'''WORK IN PROGRESS'''&lt;br /&gt;
&lt;br /&gt;
Dit gaat over het plan van [[User:Timb]] om per debugsite documentatie te genereren. Dan zou voor een &amp;lt;code&amp;gt;$bla-debug&amp;lt;/code&amp;gt; de site &amp;lt;code&amp;gt;$bla-docs-debug.a-eskwadraat.nl&amp;lt;/code&amp;gt; beschikbaar moeten zijn.&lt;br /&gt;
&lt;br /&gt;
== Gebruik ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./manage docs&amp;lt;/code&amp;gt; genereert documentatie op basis van je huidige wwwdebug. TODO: automatiseer dit dmv een script elke nacht ofzo?&lt;br /&gt;
&lt;br /&gt;
Dit zeurt over een aantal files die Doxygen zou moeten negeren maar dat niet doet. Geen idee waarom.&lt;br /&gt;
&lt;br /&gt;
== Doxygen updaten ==&lt;br /&gt;
&lt;br /&gt;
Omdat CentOS ongelofelijk oud is is de laatste versie van doxygen op de package manager 1.6.1. Om een nieuwere versie te installeren zijn er 2 mogelijkheden:&lt;br /&gt;
&lt;br /&gt;
*Deinstaalleer doxygen als dit nog geinstalleerd is met yum: sudo yum remove doxygen&lt;br /&gt;
*Download de binary van http://www.stack.nl/~dimitri/doxygen/download.html&lt;br /&gt;
*Verplaats de binary naar /usr/bin/doxygen (Zorg voor -rwxr-xr-x permissies met de file owner as root)&lt;br /&gt;
&lt;br /&gt;
Omdat vooraf gemaakte binaries saai zijn en zo kunnen we het ook zelf compilen!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://github.com/doxygen/doxygen.git&lt;br /&gt;
cd doxygen&lt;br /&gt;
mkdir build&lt;br /&gt;
cd build&lt;br /&gt;
cmake -G &amp;quot;Unix Makefiles&amp;quot; ..&lt;br /&gt;
make&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verplaats dan de binary van /usr/local/bin/doxygen naar /usr/bin/doxygen&lt;br /&gt;
&lt;br /&gt;
= PHPDoc =&lt;br /&gt;
&lt;br /&gt;
We zouden ook [https://docs.phpdoc.org/ phpdoc] kunnen gebruiken. Binnen de PHP-community lijkt het iets gebruikelijker om phpdoc te gebruiken, namelijk. Bovendien ziet het er gewoon cooler uit :D&lt;br /&gt;
&lt;br /&gt;
Helaas crasht het bij het genereren van documentatie omdat het meer dan 2GB aan RAM / schijfruimte nodig heeft om de hele WhosWho te documenteren. Dus vandaar toch maar gewoon doxygen...&lt;br /&gt;
&lt;br /&gt;
== Installatie ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;&amp;lt;code&amp;gt;pear install phpdoc&amp;lt;/code&amp;gt; op de [[vm-www-debug]]&amp;lt;/strike&amp;gt; Oh nee, dat is niet stabiel over composer updaten.&lt;br /&gt;
&lt;br /&gt;
Zet het volgende in je &amp;lt;code&amp;gt;composer.json&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;require-dev&amp;quot;: {&lt;br /&gt;
    &amp;quot;phpdocumentor/phpdocumentor&amp;quot;: &amp;quot;2.*&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
en run &amp;lt;code&amp;gt;./composer update&amp;lt;/code&amp;gt;. Dit kost even want het moet erg veel dependencies naar binnen slurpen.&lt;br /&gt;
&lt;br /&gt;
[[Category:WebCie]]&lt;/div&gt;</summary>
		<author><name>Jason</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Nieuw_WWW-lid</id>
		<title>Nieuw WWW-lid</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Nieuw_WWW-lid"/>
				<updated>2018-03-19T20:49:16Z</updated>
		
		<summary type="html">&lt;p&gt;Jason: Git link geupdate en toevoegen aan git repo info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wat je moet doen voor een nieuw lid van de [[WebCie|www]]:&lt;br /&gt;
&lt;br /&gt;
== Bestuur ==&lt;br /&gt;
&lt;br /&gt;
#Toevoegen aan 'webcie' (inloggen op de server en bij de repo)&lt;br /&gt;
&lt;br /&gt;
== Webcie ==&lt;br /&gt;
&lt;br /&gt;
Ga naar de [[vm-www-debug]] en log in als user webcie:&lt;br /&gt;
 ssh vm-www-debug&lt;br /&gt;
 sudo -i -u webcie&lt;br /&gt;
&lt;br /&gt;
Toevoegen aan de htpasswd:&lt;br /&gt;
 htpasswd /srv/htpasswd $USER&lt;br /&gt;
Toevoegen aan de htgroups&lt;br /&gt;
 vim /srv/config/vm-www-debug/httpd/conf.d/htgroups&lt;br /&gt;
 vim /srv/config/vm-www/httpd/conf.d/htgroups&lt;br /&gt;
Toevoegen aan de wwwdebug.conf&lt;br /&gt;
 cd /srv/config/vm-www-debug/httpd/conf.d/&lt;br /&gt;
 vim wwwdebug.sh&lt;br /&gt;
 ./wwwdebug.sh&lt;br /&gt;
 git commit wwwdebug.sh wwwdebug.conf&lt;br /&gt;
 git push&lt;br /&gt;
 sudo service httpd restart&lt;br /&gt;
Toevoegen aan de git repo&lt;br /&gt;
 Vraag aan een momenteel webcie lid om dit te doen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Nieuw lid ==&lt;br /&gt;
&lt;br /&gt;
Als eerste ga je je eigen debug omgeving aanmaken:&lt;br /&gt;
&lt;br /&gt;
 cd /mnt/wwwdebug&lt;br /&gt;
 mkdir $USER/&lt;br /&gt;
 cd $USER&lt;br /&gt;
 git clone https://git.a-eskwadraat.nl/webcie/website.git wwwdebug&lt;br /&gt;
 cd wwwdebug/www&lt;br /&gt;
 ./manage build --enable-debug --hostname=$bla-debug.a-eskwadraat.nl&lt;br /&gt;
 ln -s /mnt/wwwdebug/$USER/wwwdebug/ ~/wwwdebug&lt;br /&gt;
&lt;br /&gt;
=== Je eerste commit doen ===&lt;br /&gt;
&lt;br /&gt;
In de root van je website (dat is de map ~/wwwdebug/www/ dus doe als je daar nog niet in zit &amp;lt;code&amp;gt;cd ~/wwwdebug/www/&amp;lt;/code&amp;gt;) staat de map space/auth/ met daarin het bestand init.php. Voeg jezelf hier toe bij de $GODNRS. Om dit bestand vervolgens te committen doe je&lt;br /&gt;
 git commit space/auth/init.php&lt;br /&gt;
Vervolgens moet je het bestand pushen zodat de rest van de webcieërs het binnen kunnen halen&lt;br /&gt;
 git push&lt;br /&gt;
&lt;br /&gt;
[[Category:WebCie]]&lt;br /&gt;
[[Category:HowTo]]&lt;/div&gt;</summary>
		<author><name>Jason</name></author>	</entry>

	</feed>