Dit archief bevat de site voor CoderDojo Nijmegen zichtbaar op https://coderdojo-nijmegen.nl.
De site is gebouwd met Hugo.
Mocht je suggesties ter verbetering hebbben, fork dan gerust de site en biedt een pull-request aan.
Om de website aan te passen, maak je een clone van deze repository. Maak vervolgens een branch om je wijziging aan te kunnen bieden in een pull-request.
Het is handig om Hugo te installeren, zodat je direct kunt zien hoe je wijzigingen er in de browser uit zien. Installeer daarvoor de Hugo extended version, want die ondersteund SCSS zoals gebruikt in deze site.
Je kunt de laatse versie van Hugo downloaden op de releases pagina van de Hugo GitHub repository. De site wordt op dit moment gebouwd met versie extended_0.74.3.
Het installeren is simpel. Download de zip-file, pak 'm uit waar je wilt en je bent klaar. Er staat enkel een hugo.exe
, een licentie en README.md bestand in. Het is handig om de directory waar in hugo.exe
staat in je path op te nemen, zodat je het overal eenvoudig kunt starten.
Om de site te kunnen bekijken, start je hugo server
vanuit de root van de checkout van deze repository (daar waar ook het config.toml
bestand staat). Je kunt de site vervolgens bekijken op http://localhost:1313.
De pagina's van de site staan allemaal in de content directory volgens de structuur van de site:
C:.
├───archetypes
├───assets
│ ├───js
│ └───scss
├───content <===
│ ├───dojos
│ ├───instructies
│ ├───stichting
│ └───team
├───data
├───layouts
│ ├───dojos
│ ├───instructies
│ ├───partials
│ ├───shortcodes
│ └───_default
└───static
├───fonts
├───imgs
└───js
De rest van de directorystructuur bevat alle bestanden die nodig zijn om de site te bouwen, zoals templates, plaatjes, lettertypen en JavaScripts.
Sinds dojo #74, wordt de dojo pagina automatisch afgeleid van de aankondiging op EventBrite. Zie dojo.py voor hoe het werkt. Ieder uur wordt er gekeken of er een nieuwe aankondiging is en als die er is, dan wordt er een markdown bestand gegenereerd en naar de repository gepushed. Deze wordt vervolgens gepubliceerd op de site door deploy.py.
Om een nieuwe dojo aankondiging te maken, maak je een nieuw bestand aan in de content/dojos
directory. Gebruik als
naam de aflevering van de dojo gecombineerd met het onderwerp, zoals bijvoorbeeld 62-website-bouwen.md. Handiger is
het om commando hugo new content/dojos/70-online.md
. Dit maakt het bestand aan en vult het met "front matter":
---
title: "#{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: false
headercolor: "orange-background"
wanneer:
van: 2020-03-07T12:00:00.0Z
tot: 2020-03-07T14:30:00.0Z
waar: "Rootnet, Kerkenbos 1059, 6546 BB Nijmegen"
eventbrite:
inschrijventot: 2020-03-07T00:00:00.0Z
url: "https://www.eventbrite.nl/e/tickets-coderdojo-nijmegen-62-93475366337"
instructies:
- /instructies/microbit
---
De "front matter" is nodig om de dojo informatie boven aan de pagina te specificeren en om de inschrijfknop te tonen. Meer gedetailleerd:
- de
title
wordt afgeleid van de bestandsnaam;62-website-bouwen.md
wordt #62 Website Bouwen - de
date
wordt ook automatisch ingevuld en is gelijk aan de huidige datum en tijd. draft
wordt gebruikt om content voor te bereiden, maar nog niet live te zetten. Wij zetten die opfalse
, omdat wij de voorbereiding doen in een branch.headercolor
is een optie van onze eigen site template en bepaald de kleur van de kop van de webpagina. Deze is voor dojosorange-background
.- met
wanneer
wordt aangegeven wanneer de dojo plaats vind.van
geeft de starttijd aan entot
de eindtijd. Let er op dat je hetzelfde tijdformaat aanhoud, inclusief eventuele voorloop nullen. waar
geeft de locatie van de dojo aan. Dit wordt omgezet naar een linkje naar Google Maps, dus het is handig om echt een adres te gebruiken.eventbrite
informatie wordt gebruikt om de inschrijfknop te maken. De knop gebruikt deurl
als doel locatie.inschrijventot
wordt gebruikt om de knop te verwijderen na de opgegeven tijd. Dit is geen exacte tijd, want de knop wordt alleen verwijderd als de site opnieuw gebouwd wordt. Dit gebeurt iedere dag om 1 uur 's nachts (UTC).- tenslotte is er de
instructies
lijst om te verwijzen naar de instructies die gebruikt worden tijdens de dojo. Deze worden tijdens de dojo op de voorpagina van de MCS getoond, maar zijn niet zichtbaar op de site op internet. De lijst dient kan uit lokale paden, zoals /instructies/microbit, bestaan, maar mag ook links op internet, zoals https://projects.raspberrypi.org/nl-NL/projects/lost-in-space, bevatten.
De content/instructies
directory is vrijwel leeg. De instructies staan in hun eigen repositories en worden in de content/instructies
directory gecloned en uiteindelijk mee gebouwd met de rest van de site.
Om een nieuwe instructie te maken, volg je de volgende stappen:
- maak een repository op GitHub; er is geen vaste naam conventie, maar een aantal repositorynamen bestaat uit
programmeertaal-onderwerp
. - clone de hugo-coderdojo-nijmegen repository
- clone de repository van de nieuwe instructie in de
content/instructies
directory van de hugo-coderdojo-nijmegen checkout, dus:content/instructies/programmeertaal-onderwerp
- maak in de checkout van de nieuwe instructie een
index.md
bestand aan. Hierin wordt de instructie geschreven. Het handigst is om daarvoor commandohugo new content/instructies/proogrammeertaal-onderwerp/index.md
te gebruiken. Hugo voegt dan automatisch de "front matter" toe aan de kop van het bestand op basis van de locatie (archetype). Ook wordt dan de licentie short-code toegevoegd (zie hoofdstuk licentie). - De "front matter" van een instructie pagina bestaat uit:
--- title: "{{ replace .Name "-" " - " | title }}" date: {{ .Date }} draft: false toc: true headercolor: "teal-background" ---
- de
title
wordt automatisch ingevuld en is gelijk aanProgrammeertaal - Onderwerp
, afgeleid van de bestandsnaam. - de
date
wordt ook automatisch ingevuld en is gelijk aan de huidige datum en tijd. draft
wordt gebruikt om content voor te bereiden, maar nog niet live te zetten. Wij zetten die opfalse
, omdat wij de voorbereiding doen in een branch.toc
is een optie van onze eigen site template en creëert een inhoudsopgave op de instructie pagina. Deze staat standaard aan, omdat instructie pagina's over het algemeen uit redelijk wat hoofdstukjes bestaan en het handig is om er met een inhoudsopgave doorheen te navigeren.headercolor
is ook een optie van onze eigen site template en bepaald de kleur van de kop van de webpagina. Deze is voor instructiesteal-background
.
- de
De titel van de pagina wordt als <h1>
gerenderd net als MarkDown #
. Gebruik dus als hoogste niveau ##
om onderscheid te houden tussen de titel van de pagina en de hoofdstukken. Dit is ook van belang voor de inhoudsopgave, deze gebruikt niveaus ##
en lager.
Voor gebruik van Scratch elementen gebruik je short-code {{< scratch >}} ... {{< /scratch >}}
met daarin de Scratch code. Deze wordt dan omgezet in Scratch blocks bij het bouwen van de site. Voorbeeld:
{{< scratch >}}
wanneer [pijltje omhoog v] is ingedrukt
richt naar (0) graden
neem (5) stappen
{{< /scratch >}}
Als je ter verdieping wat meer gedetaileerde informatie wilt aanbieden, dan kan dat in een verdiepingsvak. Zie als voorbeeld uitleg over de x en y as in de Löve2D shooter instructie.
Gebruik hiervoor de short-code {{< verdieping >}} ... {{< /verdieping >}}
met daarin de verdieping. Dit kan MarkDown content zijn. Voorbeeld:
{{< verdieping >}}
## Verdieping
We leggen je in dit blok meer uit over onderwerp a.
{{< /verdieping >}}
Je kunt code voorbeelden gebruiken in je instructie en deze in eerste instantie verborgen houden. Gebruik hiervoor de {{< voorbeeld kop="kop tekst" md >}} ... {{< /voorbeeld >}}
short-code. De tekst in parameter kop
wordt getoond en daarop kan worden geklikt om het voorbeeld zichtbaar te maken. Als je een Scratch voorbeeld hebt, is de kop alleen genoeg. Wil je MarkDown gebruiken, dan moet je parameter md
toevoegen.
{{< voorbeeld kop="Klik om de voorbeeldcode te laten zien om de slang omhoog te laten bewegen" >}}
{{< scratch >}}
wanneer groene vlag wordt aangeklikt
herhaal
als <toets [pijltje omhoog v] ingedrukt?> dan
richt naar (0) graden
end
neem (10) stappen
wacht (0.1) sec.
{{< /scratch >}}
{{< /voorbeeld >}}
Hugo heeft een ingebouwde code highlight short-code. Deze kun je voor allerlei talen gebruiken. Voorbeeld:
{{< highlight python >}}
bgcolor('black')
color('green')
width(5)
forward(100)
right(90)
forward(100)
right(90)
forward(100)
right(90)
forward(100)
right(90)
{{< /highlight >}
Onder iedere instructie pagina zetten we de licentie waaronder de content beschikbaar is voor hergebruik. We gebruiken daarvoor de {{< licentie rel="link" >}}
short-code. De rel
parameter wordt niet gebruikt bij het genereren van de site, maar is toegevoegd om een link naar de licentie toe te voegen in de kale MarkDown in de instructie repositories.
{{< licentie rel="http://creativecommons.org/licenses/by-nc-sa/4.0/">}}