diff --git a/src/components/Footer.astro b/src/components/Footer.astro
new file mode 100644
index 0000000..fec0307
--- /dev/null
+++ b/src/components/Footer.astro
@@ -0,0 +1,44 @@
+---
+
+---
+
+
+
diff --git a/src/components/FormattedDate.astro b/src/components/FormattedDate.astro
new file mode 100644
index 0000000..8f59590
--- /dev/null
+++ b/src/components/FormattedDate.astro
@@ -0,0 +1,17 @@
+---
+interface Props {
+ date: Date;
+}
+
+const { date } = Astro.props;
+---
+
+
diff --git a/src/components/Header.astro b/src/components/Header.astro
new file mode 100644
index 0000000..307f1f6
--- /dev/null
+++ b/src/components/Header.astro
@@ -0,0 +1,70 @@
+---
+
+---
+
+
+
+
+
diff --git a/src/consts.ts b/src/consts.ts
new file mode 100644
index 0000000..6bc6923
--- /dev/null
+++ b/src/consts.ts
@@ -0,0 +1,2 @@
+export const SITE_TITLE = "Webkombloggen";
+export const SITE_DESCRIPTION = "Webkoms utviklerblogg";
diff --git a/_posts/2014-03-05-vote.md b/src/content/blog/2014-03-05-vote.md
similarity index 82%
rename from _posts/2014-03-05-vote.md
rename to src/content/blog/2014-03-05-vote.md
index 1f2c516..7fd3a2b 100644
--- a/_posts/2014-03-05-vote.md
+++ b/src/content/blog/2014-03-05-vote.md
@@ -1,28 +1,31 @@
---
-layout: post
-title: Vote.
+title: Vote.
+description: Vi har utviklet et stemmesystem som gjør det mulig å holde kjappe og anonyme avstemninger på abakus.no.
+pubDate: 2014-03-05
author: Tiborv
---
Hei! Har du noen gang brukt 100 år på en avstemning? Har du måttet sitte og vente på at stemmene skulle bli opptalt 300 ganger til? Vi i Webkom har løsningen! Et digitalt stemmesystem som er lett å bruke og som ikke teller feil! Nå kan du rekke å komme deg hjem samme dag som du avholder avstemmingen! #genfors2k13 #plzkillmenow #webcom
-
+\
Vi har utviklet et stemmesystem som gjør det mulig å holde kjappe og anonyme avstemninger på abakus.no. Når man stemmer får man tildelt en kvittering som man kan bruke til å bekrefte, i etterkant, hva man har stemt på ved hjelp av verifiseringssiden. Ellers så kan det nevnes at resultatsiden oppdateres med ajax, slik at man ikke trenger å refreshe siden konstant!
Her er hvordan kvitteringene blir generert:
-{% highlight python %}
+```python
def generate_receipt():
- randomString = ''.join(random.choice(string.ascii_uppercase) for i in range(10))
+ randomString = ''.join(
+ random.choice(string.ascii_uppercase) for i in range(10)
+ )
lel = list(hashlib.md5("penis"+randomString).hexdigest())
return ''.join(lel)
+```
-{% endhighlight %}
Husk å importere hashlib, random og string.
BTW: Noen hadde visst lyst til å se hvordan kakediagrammet får sine "shades of red", her nørds:
-{% highlight python %}
+```python
def generate_palettecolor(r, g, b, step, totalsteps):
scalar = 2.0
new_r = r + int(step * 78/(totalsteps*scalar))
@@ -31,4 +34,4 @@ def generate_palettecolor(r, g, b, step, totalsteps):
return "rgb(%s,%s,%s)" % (new_r, new_g, new_b)
# Returnerer fargen til et step, hvert step er en sektor i kakediagrammet.
-{% endhighlight %}
+```
diff --git a/_posts/2014-05-13-abakaffe.md b/src/content/blog/2014-05-13-abakaffe.md
similarity index 94%
rename from _posts/2014-05-13-abakaffe.md
rename to src/content/blog/2014-05-13-abakaffe.md
index 41211d4..16fcd7c 100644
--- a/_posts/2014-05-13-abakaffe.md
+++ b/src/content/blog/2014-05-13-abakaffe.md
@@ -1,15 +1,17 @@
---
-layout: post
title: Abakaffe
+description: Hvordan vi automatierte publisering av kaffetrakting på Webkom-kontoret.
+pubDate: 2014-05-13
author: relekang
---
+
Det hele startet med en papirlapp med klokkeslett for siste ferdige kaffekanne. Etter å ha hengt noen timer på kontoret en dag i slutten av forrige semester innså jeg at dette kan gjøres bedre. Webkom ble derfor enig om at prosessen burde automatiseres og at informasjonen burde publiseres på [kaffe.abakus.no](http://kaffe.abakus.no).
Dersom du er interessert i å se koden eller å bidra, finner du den på [github.com/webkom/coffee](http://github.com/webkom/coffee).
-Vi ville at oppdateringen av statusen skulle være automatisk fordi studenter med koffeinabstinenser er trolige til å glemme å trykke på en knapp. Vi gikk derfor for en løsning med en lyssensor montert på lyset som viser at trakteren er på. Sensoren er en variabel motstand styrt av lys. Den virker slik at ved mye lys vil motstanden være lavere enn ved lite lys. Dette gjør at man enkelt kan måle lys med høy nok nøyaktighet ved hjelp av en RC-krets. Kretsen ble koblet slik at signalet på GPIO-porten vil være høy når kondensatorene er ladet opp. Tiden det tar for kondesatorene å bli ladet opp vil variere basert på motstanden i lyssensoren. Etter litt testing med kretsen vi laget fant vi ut at hvis det tar mindre enn 1500 ms, så er lyset på. Nedenfor er koden som sjekker dette:
+Vi ville at oppdateringen av statusen skulle være automatisk fordi studenter med koffeinabstinenser er trolige til å glemme å trykke på en knapp. Vi gikk derfor for en løsning med en lyssensor montert på lyset som viser at trakteren er på. Sensoren er en variabel motstand styrt av lys. Den virker slik at ved mye lys vil motstanden være lavere enn ved lite lys. Dette gjør at man enkelt kan måle lys med høy nok nøyaktighet ved hjelp av en RC-krets. Kretsen ble koblet slik at signalet på GPIO-porten vil være høy når kondensatorene er ladet opp. Tiden det tar for kondesatorene å bli ladet opp vil variere basert på motstanden i lyssensoren. Etter litt testing med kretsen vi laget fant vi ut at hvis det tar mindre enn 1500 ms, så er lyset på. Nedenfor er koden som sjekker dette:
-{% highlight python %}
+```python
def rc_time(RCpin):
reading = 0
GPIO.setup(RCpin, GPIO.OUT)
@@ -25,7 +27,7 @@ while True:
status.update(True)
else:
status.update(False)
-{% endhighlight %}
+```
`rc_time` returnerer tiden det tok for siste oppladning av kondensatorene. Hver gang den returnerer oppdaterer vi `status` objektet. Status er en enkel klasse som abstraherer bort lagring til databasen slik at man ikke trenger å gjenta logikken og får en mer lesbar kode.
diff --git a/_posts/2014-08-21-passport-abakus.md b/src/content/blog/2014-08-21-passport-abakus.md
similarity index 93%
rename from _posts/2014-08-21-passport-abakus.md
rename to src/content/blog/2014-08-21-passport-abakus.md
index 19ffe98..6475d4f 100644
--- a/_posts/2014-08-21-passport-abakus.md
+++ b/src/content/blog/2014-08-21-passport-abakus.md
@@ -1,6 +1,7 @@
---
-layout: post
title: passport-abakus
+description: Autentisering av Abakus-brukere i express.js med passport
+pubDate: 2014-08-21
author: relekang
---
@@ -17,7 +18,8 @@ til. Når du har fått nøkkelen kan du kjøre `npm install --save passport-abak
for å installere pakken.
Deretter må det settes opp i din express.js app. Det kan gjøres med koden nedenfor:
-{% highlight javascript linenos %}
+
+```js
var passport = require("passport");
var passportAbakus = require("passport-abakus");
@@ -26,7 +28,7 @@ passport.serializeUser(passportAbakus.serializeAbakusUser);
passport.deserializeUser(passportAbakus.deserializeAbakusUser);
app.use(passport.initialize());
-{% endhighlight %}
+```
Først må man inkludere passport og passport-abakus så forteller man passport at
man vil bruke abakusStrategy som autentiseringsstrategi.
@@ -53,6 +55,10 @@ Det er mulig å sette opp passport-abakus slik at brukeren må være en del av
abakom for å bli logget inn. Da sender man med `{ requireAbakom: true }` i
funksjonskallet til abakusStrategy slik at linje 4 blir som dette:
-{% highlight javascript %}
-passport.use(passportAbakus.abakusStrategy({ requireAbakom: true }));
-{% endhighlight %}
+```js
+passport.use(
+ passportAbakus.abakusStrategy({
+ requireAbakom: true,
+ }),
+);
+```
diff --git a/_posts/2014-09-14-census.md b/src/content/blog/2014-09-14-census.md
similarity index 91%
rename from _posts/2014-09-14-census.md
rename to src/content/blog/2014-09-14-census.md
index d2756ff..5358ecd 100644
--- a/_posts/2014-09-14-census.md
+++ b/src/content/blog/2014-09-14-census.md
@@ -1,11 +1,11 @@
---
-layout: post
-title: census
+title: census
+description: En tjeneste for å holde oversikt over maskiner og Raspberry Pis.
+pubDate: 2014-09-14
author: relekang
-
---
-I webkom har vi noen maskiner og Raspberry Pis som har dynamiske IP-adresser.
+I webkom har vi noen maskiner og Raspberry Pis som har dynamiske IP-adresser.
Vi ønsket derfor en enkel oversikt over hvilke IPer de har og en status på om de
er oppe. Vi tenker at flere Abakus-studenter kan ha bruk for en slik tjeneste
og vil derfor gjøre det mulig for medlemmer av Abakus å bruke census. Slik det er
@@ -14,7 +14,7 @@ nå kan alle "rapportere" til census.
Census er et express.js prosjekt. [Express.js](http://expressjs.com/) er
et minimalistisk webrammeverk for node.js. Nettsiden har en offentlig del og en
del som krever autentisering. Den offentlige delen kan man se på bildet
-nedenfor.
+nedenfor.

@@ -35,4 +35,4 @@ POST-dataene må det legges inn tjenernavn og brukernavn. Vi har satt opp dette
som en cronjobb hvert 10. minutt på våre servere. Derfor vil ikonet på nettsiden bli rødt dersom
det ikke har kommet en ny POST forespørsel de siste 15. minuttene.
-Census finnes på [census.abakus.no](http://census.abakus.no) og prosjektet finnes på [github.com/webkom/census](https://github.com/webkom/census). Vi er veldig takknemelige for tilbakemeldinger [åpne ett issue](https://github.com/webkom/census/issues/new) om du har spørsmål eller forslag til forbedringer.
\ No newline at end of file
+Census finnes på [census.abakus.no](http://census.abakus.no) og prosjektet finnes på [github.com/webkom/census](https://github.com/webkom/census). Vi er veldig takknemelige for tilbakemeldinger [åpne ett issue](https://github.com/webkom/census/issues/new) om du har spørsmål eller forslag til forbedringer.
diff --git a/_posts/2014-12-28-chewie.md b/src/content/blog/2014-12-28-chewie.md
similarity index 93%
rename from _posts/2014-12-28-chewie.md
rename to src/content/blog/2014-12-28-chewie.md
index fc63791..6ef7441 100644
--- a/_posts/2014-12-28-chewie.md
+++ b/src/content/blog/2014-12-28-chewie.md
@@ -1,8 +1,8 @@
---
-layout: post
title: chewie
+description: chewie er et verktøy for produksjonssetting av prosjekter.
+pubDate: 2014-12-28
author: ekmartin
-
---
Det å produksjonssette endringer i et prosjekt er egentlig ikke en veldig tidkrevende prosess. Vi i Webkom leter likevel alltid etter muligheter til å lage kompliserte løsninger på enkle problemer, og denne gangen er [chewie](https://github.com/webkom/chewie) resultatet.
@@ -13,8 +13,8 @@ Ved hjelp av webhooks blir chewie informert om alle GitHub-status-events. Disse
Denne håndteres av [Fabric](http://fabfile.org), som ved hjelp av en config-fil vet hvilke prosjekter som hører til hvilke servere. Dette gjør at chewie, via SSH, kan koble til serverne og produksjonssette prosjekter som har blitt oppdatert.
-For øyeblikket brukes webhooks på alle våre prosjekter, og de vil dermed alltid kjøre en så ny versjon som mulig. Selv om dette gjør utviklingsprosessen lettvint er det fint å ha mulighet til å produksjonssette prosjekter manuelt og, på en generell måte. Dette kan man gjennom webgrensesnittet, hvor chewie lister prosjektene som vist under. Da det er brukt WebSockets vil man også få tilbakemeldinger presentert i sanntid i løpet av prosessen.
+For øyeblikket brukes webhooks på alle våre prosjekter, og de vil dermed alltid kjøre en så ny versjon som mulig. Selv om dette gjør utviklingsprosessen lettvint er det fint å ha mulighet til å produksjonssette prosjekter manuelt og, på en generell måte. Dette kan man gjennom webgrensesnittet, hvor chewie lister prosjektene som vist under. Da det er brukt WebSockets vil man også få tilbakemeldinger presentert i sanntid i løpet av prosessen.

-chewie er open-source, og kildekoden er tilgjenglig på [GitHub](https://github.com/webkom/chewie) (vi tar gjerne i mot pull-requests). Selv om webfrontenden til chewie kun er tilgjenglig for Webkom-medlemmer er det ingenting i veien med å forke chewie dersom du vil bruke det til egne prosjekter.
+chewie er open-source, og kildekoden er tilgjenglig på [GitHub](https://github.com/webkom/chewie) (vi tar gjerne i mot pull-requests). Selv om webfrontenden til chewie kun er tilgjenglig for Webkom-medlemmer er det ingenting i veien med å forke chewie dersom du vil bruke det til egne prosjekter.
diff --git a/_posts/2015-01-16-404-competition.md b/src/content/blog/2015-01-16-404-competition.md
similarity index 85%
rename from _posts/2015-01-16-404-competition.md
rename to src/content/blog/2015-01-16-404-competition.md
index 0ae7ce7..7f4a23d 100644
--- a/_posts/2015-01-16-404-competition.md
+++ b/src/content/blog/2015-01-16-404-competition.md
@@ -1,8 +1,8 @@
---
-layout: post
title: 404-konkurranse
+description: Lag et spill til 404-siden vår!
+pubDate: 2015-01-16
author: martinhath
-
---
Det nye året er i gang, både ribbe og pinnekjøtt har lagt seg godt rundt nedre del av magen, og øvingsfrister i samtlige fag begynner å nærme seg.
@@ -10,14 +10,14 @@ Du har kanskje allerede innsett at de store planene om «jevn jobbing hele semes
Vi i Webkom har nettopp dette --- for hva er vel tøffere enn en konkurranse?
Du har kanskje vært borte i Breakout-klonen vi har på [404](http://www.abakus.no/hurrdurr)-siden vår.
-Ikke det? Nåvel. Her er et skjermbilde:
+Ikke det? Nåvel. Her er et skjermbilde:
[](http://www.abakus.no/hurrdurr)
Hvis du hater spillet Breakout, eller må se minst femti nyanser grått før du blir fornøyd, er dette din sjanse til å skape noe stort!
Vær med på å skape historie, og hjelp til med å roe ned nervene til abakuler som er gått seg vill på Abakus' nettsider.
-## Hva trenger jeg?
+## Hva trenger jeg?
Konkurransen hostes gjennom [GitHub](https://github.com/webkom/404-competition), så det er greit å kunne det helt grunnleggende i både `git` og GitHub.
For å sette opp prosjektet trenger du også `make`, og `cookiecutter`. Se [GitHub-repoet](https://github.com/webkom/404-competition) for mer informasjon om oppsett og installasjon.
@@ -25,16 +25,16 @@ Siden vi skal lage et browserspill må du også ha syke JavaScript skills.
Neida (joda).
## Er det noen regler?
- 1. Det ferdige produktet, spillet, skal ligge i én enkel `.html` fil.
- 2. Vi har lagt opp til at dere kan bruke [Phaser](http://phaser.io/), men dere kan bruke akkurat hva dere vil.
+1. Det ferdige produktet, spillet, skal ligge i én enkel `.html` fil.
- 3. Kun ett bidrag hver, så ikke spar på kruttet.
+2. Vi har lagt opp til at dere kan bruke [Phaser](http://phaser.io/), men dere kan bruke akkurat hva dere vil.
- 4. Spillet må være ferdig i løpet av februar måned.
+3. Kun ett bidrag hver, så ikke spar på kruttet.
- 4. Vi får lov til å bruke spillet ditt som en 404-side :)
+4. Spillet må være ferdig i løpet av februar måned.
+5. Vi får lov til å bruke spillet ditt som en 404-side :)
## Hva er premien?
@@ -55,5 +55,5 @@ du kan også gjøre det hjemme fra din egen sofakrok.
Fortvil ikke! Send oss en mail, så skal vi prøve å være studassen din.
## Hva venter jeg på?
-Det vet ikke jeg heller! Kom deg inn på [GitHub](https://github.com/webkom/404-competition) og `git clone`!
+Det vet ikke jeg heller! Kom deg inn på [GitHub](https://github.com/webkom/404-competition) og `git clone`!
diff --git a/_posts/2015-02-04-slack.md b/src/content/blog/2015-02-04-slack.md
similarity index 94%
rename from _posts/2015-02-04-slack.md
rename to src/content/blog/2015-02-04-slack.md
index dfa1c91..ff1dbf4 100644
--- a/_posts/2015-02-04-slack.md
+++ b/src/content/blog/2015-02-04-slack.md
@@ -1,19 +1,18 @@
---
-layout: post
title: Slack
+description: Bli med i det nye Abakus slack-teamet!
+pubDate: 2015-02-04
author: hanswilw
-
---
Abakus har i en årrekke hostet IRC (Quassel) for sine medlemmer. Dette har gitt muligheten for likesinnede Abakuler å diskutere alt i mellom himmel og jord i kanalen #abakus på EFNet. I den siste tiden har vi observert dalende aktivitet, og det ønsker vi å gjøre noe med.
-I fjor høst valgte vi i Webkom å prøve ut Slack i stedet for IRC som intern kommunikasjonstjeneste, og det kan vi si oss godt fornøyde med. Slack er et IRC-alternativ, som er veldig anvendelig på tvers av plattform og operativsystemer. Slack kommer nemlig med en god webapp, samt klienter for Mac, iOS og Android. Det jobbes også med Windows Phone og Desktop klient.
+I fjor høst valgte vi i Webkom å prøve ut Slack i stedet for IRC som intern kommunikasjonstjeneste, og det kan vi si oss godt fornøyde med. Slack er et IRC-alternativ, som er veldig anvendelig på tvers av plattform og operativsystemer. Slack kommer nemlig med en god webapp, samt klienter for Mac, iOS og Android. Det jobbes også med Windows Phone og Desktop klient.
Dette er grunnen til at vi nå ønsker å introdusere Abakus sitt offisielle Slack-team!

-
## Hvordan gjør jeg det?
Du går inn på [Abakus](https://abakus-ntnu.slack.com/signup) sin Slack-side, og registrerer deg med din studentmail. Deretter godtar du epostverifiseringen --- vips så dyttes du inn i Slack sin webapp, og du er klar til å chatte.
@@ -34,7 +33,7 @@ Ikke vær redd, den vil fortsette å leve i beste velgående - men vi ønsker se
## Jeg ønsker forstatt å bruke min IRC-klient!
-Ingen grunn til å ikke bli med over på den andre siden! Slack har en IRC-gateway, som gjør det mulig for IRC-klienter å koble seg til vårt Slack-team.
+Ingen grunn til å ikke bli med over på den andre siden! Slack har en IRC-gateway, som gjør det mulig for IRC-klienter å koble seg til vårt Slack-team.
Her er en guide til [Weechat](http://robots.thoughtbot.com/weechat-for-slacks-irc-gateway) og [irssi](http://www.robgolding.com/blog/2014/05/16/using-slack-with-irssi/) som er to mye brukte IRC-klienter.
diff --git a/_posts/2015-02-19-vote-new.md b/src/content/blog/2015-02-19-vote-new.md
similarity index 85%
rename from _posts/2015-02-19-vote-new.md
rename to src/content/blog/2015-02-19-vote-new.md
index 0ace2a4..b01f12b 100644
--- a/_posts/2015-02-19-vote-new.md
+++ b/src/content/blog/2015-02-19-vote-new.md
@@ -1,9 +1,10 @@
---
-layout: post
title: vote optimizes the election
+description: Hva er nytt i VOTE?
+pubDate: 2015-02-19
author: ekmartin
-
---
+
Våren 2014 ble det tatt i bruk et digitalt stemmesystem ved Abakus' Generalforsamling. Det ble for det meste godt mottatt, men hadde et par problemer det måtte ordnes opp i. Nå er versjon to av vote klar for lansering og tilgjengelig på [GitHub](https://github.com/webkom/vote).

@@ -23,65 +24,69 @@ Det å spare tid har alltid vært hovedmålet med et digitalt stemmesytem. Ved p
Et av forbedringsforslagene på forrige diskusjonskveld var å gi hver bruker et nøkkelkort, som de så kan bruke når de skal gå inn og ut av lokalet. Dette gjør jobben enklere for de ansvarlige og passer på at kun tilstedeværende kan stemme. Det å lage nye avstemninger, samt gjøre opptelling av disse, har også blitt forenklet. vote skal være et nyttig og diskret verktøy, uten å bli et frustrasjonsmoment for de som bruker det.
## Implementasjon
+
vote er skrevet i Node.js, med den såkalte MEAN-stacken. Dette innebærer at [MongoDB](http://www.mongodb.com/), [Express](http://expressjs.com/) og [AngularJS](https://angularjs.org/) har blitt tatt i bruk. Express gjør det enkelt å sette opp API-er i Node, og dette fungerer bra sammen med [ensidesrammeverk](https://en.wikipedia.org/wiki/Single-page_application) som AngularJS. Som et ekstra lag oppå databasen brukes [Mongoose](http://mongoosejs.com), som gjør valideringer og lignende enkelt.
Et av de potensielle sikkerhetshullene i det gamle stemmesystemet var at Abakus.no ble brukt som innloggingsmekanisme. Da vote nå er helt selvstendig og brukere registreres på Generalforsamlingen er dette problemet løst. Nøkkelkortene utdelt på stedet er også helt anonyme. I tillegg står også brukerne fritt til å velge sitt eget brukernavn, samt et passord de tar i bruk for å logge inn senere.
I løpet av selve stemmeprosessen lagres det heller aldri noen knytning mellom brukeridentiteter og avgitte stemmer. I stedet lages det en hash av brukernavnet, avstemningen og en hemmelig nøkkel:
-{% highlight javascript %}
-exports.createHash = function(username, electionId) {
- var appSecret = process.env.APP_SECRET || 'dev_secret';
- var hash = crypto.createHash('sha512');
- hash.setEncoding('hex');
- hash.write(username);
- hash.write(String(electionId));
- hash.write(appSecret);
- hash.end();
-
- var createdHash = hash.read();
- return createdHash;
+```js
+exports.createHash = function (username, electionId) {
+ var appSecret = process.env.APP_SECRET || "dev_secret";
+ var hash = crypto.createHash("sha512");
+ hash.setEncoding("hex");
+ hash.write(username);
+ hash.write(String(electionId));
+ hash.write(appSecret);
+ hash.end();
+
+ var createdHash = hash.read();
+ return createdHash;
};
-{% endhighlight %}
+```
Når så systemet skal finne ut av om en bruker har stemt tidligere lages hashen på nytt, og dersom det allerede finnes en identisk hash i databasen blir stemmen avvist. I tillegg gjør dette at en stemme ikke kan knyttes tilbake til en enkelt bruker ved et senere tidspunkt. Alternativet en bruker stemmer på sendes heller aldri i klartekst i URL-en, da den legges ved i selve POST-forespørselen. Dette gjør at den blir kryptert når applikasjonen tar i bruk HTTPS.
## Tester
+
Selvom gode tester alltid står i fokus for Webkomprosjekter har det kanskje vært et ekstra viktig arbeidsområde for vote. Med en testdekning tilnærmet lik 100% minker sannsynligheten for uventede hendelser, samtidig som det legger til rette for at all funksjonalitet er dokumentert i tester.
Da vote har en adskilt frontend og backend har det også vært en utfordring å opprettholde tester for begge deler. Dette har resultert i hovedsakelig to typer tester: API-tester mot serveren, samt ende-til-ende-tester i nettleseren.
Ved å ta i bruk [supertest](https://github.com/tj/supertest) og [mocha](https://github.com/mochajs/mocha) til API-testene kan de ulike endepunktenes ønskede returverdier enkelt sjekkes ([kilde](https://github.com/webkom/vote/blob/8032864b0c741ccf89386156a7e5195d36a66766/test/api/vote.test.js#L171)):
-{% highlight javascript %}
-it('should not be possible to vote without logging in', function(done) {
- passportStub.logout();
- request(app)
- .post('/api/vote')
- .send(votePayload(this.activeAlternative.id))
- .expect(401)
- .expect('Content-Type', /json/)
- .end(function(err, res) {
- if (err) return done(err);
-
- var error = res.body;
- error.status.should.equal(401);
- error.message.should.equal('You need to be logged in to access this resource.');
- done();
- });
+```js
+it("should not be possible to vote without logging in", function (done) {
+ passportStub.logout();
+ request(app)
+ .post("/api/vote")
+ .send(votePayload(this.activeAlternative.id))
+ .expect(401)
+ .expect("Content-Type", /json/)
+ .end(function (err, res) {
+ if (err) return done(err);
+
+ var error = res.body;
+ error.status.should.equal(401);
+ error.message.should.equal(
+ "You need to be logged in to access this resource.",
+ );
+ done();
+ });
});
-{% endhighlight %}
+```
Det å teste frontendkoden, altså det som kjøres i nettleseren, er litt vanskeligere. Dette gjøres med [Protractor](http://angular.github.io/protractor/#/), for å sjekke at nettsiden reagerer på riktig måte når f.eks. en bruker trykker på et alternativ og prøver å stemme. Her tar vi også i bruk [cucumber-js](https://github.com/cucumber/cucumber-js), som lar oss definere frontend-funksjonalitet på følgende måte ([kilde](https://github.com/webkom/vote/blob/8032864b0c741ccf89386156a7e5195d36a66766/features/admin.feature#L24)):
-{% highlight cucumber %}
+```cucumber
Scenario: Add alternatives
Given There is an inactive election
And I am on the edit election page
When I enter a new alternative "Alternative"
And I click "Legg til alternativ"
Then I should see the alternative "Alternative"
-{% endhighlight %}
+```
Hver av setningene hører så til et steg i testen, som du kan se [her](https://github.com/webkom/vote/blob/master/features%2Fstep_definitions%2FadminSteps.js). Testene vil så kunne kjøres i en faktisk nettleser:
diff --git a/_posts/2015-03-04-aarsberetning.md b/src/content/blog/2015-03-04-aarsberetning.md
similarity index 98%
rename from _posts/2015-03-04-aarsberetning.md
rename to src/content/blog/2015-03-04-aarsberetning.md
index 8a4042f..1aa0752 100644
--- a/_posts/2015-03-04-aarsberetning.md
+++ b/src/content/blog/2015-03-04-aarsberetning.md
@@ -1,60 +1,72 @@
---
-layout: post
title: Årsberetning 2014/2015
+description: Hva har vi holdt på med i Webkom det siste året?
+pubDate: 2015-03-05
author: ekmartin
-
---
2015 har vært et interessant år for Webkom. Vi har hatt våre oppturer og nedturer, selv om det definitivt har vært flest av førstnevnte. Nye prosjekter har blitt startet og gamle har blitt vedlikeholdt. Nettopp det å starte nye prosjekter er nok også noe av det vi har blitt enda flinkere på i løpet av året som har gått. Nesten all ny kode som skrives i Webkom blir åpen kildekode før eller senere, gjerne med en tilhørende solid testdekning. Dette vil vi fortsette med i løpet av 2015, og da mens vi skriver ny Abakus.no. Her har du en kort oppsummering av noe av det vi har drevet med siden forrige generalforsamling.
## Blogg
+
Bloggen du leser nå prøver vi å holde oppdatert med info om nye prosjekter og erfaringer vi opparbeider oss gjennom vårt komitéarbeid. Vi vil på den måten prøve å oppnå at flere skal få nytte av det vi har lært. Et av målene våre er at alle i Webkom skal skrive minst én bloggpost i løpet av hvert skoleår.
## census
+
census er et nytt prosjekt som gir oss en oversikt over serverne våre. Det lever på [census.abakus.no](http://census.abakus.no). Man kan lese mer om census og hvordan
det fungerer i [bloggposten](http://webkom.abakus.no/census/) vi skrev da det ble
lansert. Det er verdt å merke seg at alle Abakus-medlemmer kan bruke census til å
holde oversikt over sine maskiner.
## chewie
+
chewie er det vi bruker til å produksjonssette prosjektene våre, og passer på at de alltid kjører siste versjon av koden. I tillegg til å gjøre dette automatisk har også chewie støtte for manuell produksjonssetting gjennom et web-grensesnitt. chewie kan du også lese mer om på [den relevante bloggposten](http://webkom.abakus.no/chewie).
## Abakus.no
### NERD
+
Selv om Webkom alltid har som fokus å streve etter nye og interessante prosjekter er det viktig å vedlikeholde det man allerede har. I løpet av 2014/2015 har det blitt utført en rekke feilrettinger på Abakus.no, hvorav mye går på sikkerhet relatert til bedriftsdatabasesidene. Nye karrieresider har også blitt implementert, og disse vil fylles opp i løpet av det kommende året.
### Autentiserings-API
+
Abakus.no har lenge hatt et API for å autentisere Abakus-medlemmer. API-et har blitt brukt av flere tjenester, blant annet Abacash, PRs bildearkiv, census og chewie. I år har vi jobbet for at det skal være enklere å sette opp nye tjenester som krever autentisering. Vi har derfor laget [django-abakus-auth](https://github.com/webkom/django-auth-abakus) og [passport-abakus](https://github.com/webkom/passport-abakus) til henholdsvis Django- og Node.js-prosjekter.
### LEGO (nye Abakus.no)
+
Det ble mot slutten av 2014 bestemt at Abakus.no skulle skrives på nytt, fra bunnen av. Da dette er et krevende prosjekt kommer det til å være Webkoms hovedmål for 2015/2016. Prosjektet skal ha som mål å definere en oppdelt struktur mellom serverssiden og klientsiden, med et API tilgjengeliggjort for Abakus’ medlemmer. Dette skal gjøre det enklere å lage eksterne applikasjoner opp mot Abakus.no, samtidig som det skal gjøre videre utvikling og vedlikehold av siden enklere internt i Webkom. LEGO står derfor for «LEGO Er Ganske Oppdelt».
## Ny i Trondheim
+
Målet med Ny i Trondheim var å skape en portal for nye studenter ved NTNU, uavhengig
av hvilken linjeforening de kom fra. I løpet av våren 2014 ble det bestemt at siden
skulle skrives helt på nytt. Resultatet skulle bli en [åpenkildekodeløsning](https://github.com/webkom/nyitrondheim) det skulle kunne bygges
videre på i de kommende årene. Det originale målet om å være en studentportal ble også
utvidet, og prosjektet skulle nå omfatte ikke bare andre linjeforeninger, men også andre
-Trondheimsskoler. Vi håper å kunne utvide portalen med enda flere bidragsytere i løpet av
-2015.
+Trondheimsskoler. Vi håper å kunne utvide portalen med enda flere bidragsytere i løpet av 2015.
## Puppet
+
Puppet er et system vi bruker for å definere hvilke applikasjoner vi skal ha installert på våre servere. Omtrent all vår Puppet-kode har i løpet av året blitt skrevet på nytt. Stort sett alle våre tjenester er produksjonssatt av Puppet. Dette gjør det enkelt for oss å flytte tjenester mellom servere, dersom det skulle bli nødvendig.
## vote
+
Abakus tok for første gang i bruk et digitalt stemmesystem på generalforsamlingen i 2014. Det ble for det meste tatt godt i mot, men litt sikkerhetsmessig kritikk kom likevel frem. Mot slutten av 2014 ble det dermed bestemt å skrive hele stemmesystemet på nytt. I motsetning til det gamle systemet, som var integrert i Abakus.no, skulle vote nå være en frittstående entitet, med åpen kildekode. Resultatet kan du lese mer om [her](http://webkom.abakus.no/vote).
## holonet
+
Holonet skal behandle all mail relatert til Abakus når LEGO, nye Abakus.no, kommer ut i produksjon. Slik som systemet er i dag behandles all mail av NERD, nåværende Abakus.no. Dette har fungert bra, men et minus er at nettsiden må fungere for at mail skal kunne prosesseres. Med holonet kjørende på en separat server er vi ikke lenger avhengige av dette, noe som vil være en stor fordel. Som en del av prosjektet har vi også utviklet en Django-plugin som snakker med API-et til holonet. Dette gjør det enkelt for oss å integrere mailsystemet i LEGO. For brukerne av LEGO vil systemet for å lage mailinglister fungere på tilsvarende måte som det gjør i dag. Både holonet og django-holonet er åpen kildekode og tilgjengelig på [GitHub](https://github.com/webkom).
## noetikon
+
[noetikon](http://files.abakus.no) er et nytt prosjekt som resultat av at vi mistet Windows-serveren vår i fjor høst. Vi satte opp en nettside for å kunne hente ut det som var lagret på samba tidligere, så enkelt som mulig. Det er nå til vurdering om dette prosjektet skal brukes som et filarkiv for Abakus dersom vi implementerer støtte for opplastning.
## Servere
+
Da antallet tjenester Webkom drifter har gått opp det foregående året krever dette en økt mengde servere. Vi har i dag 13 serverinstanser kjørende, mange av disse er virtuelle. Alle våre tjenere står plassert på serverrommet ved Webkomkontoret. Vi har i løpet av året tatt i bruk virtuelle maskiner slik at vi lettere kan dele opp tjenester. Dette gir oss også en fordel når vi samarbeider med XCOM, itDAGENE og Datakameratene. Vi har også gjennomført en skikkelig høstrengjøring. Dette innebar ny nettverkskabling og opprydding i server-racket.
### backup
+
Forrige høst mistet vi lagringen vi hadde på vår eneste Windows-server. Dette var et resultat av glipp i rutiner og dårlig erfaringsoverføring. Selv om vi også ved dette tidspunktet hadde solide rutiner på backup av så å si alle tjenester, vel å merke på de resterende Linux-serverne, har dette blitt betraktelig forbedret i løpet av det siste halvåret. I tillegg til å sette opp ekstern lagring ut av huset, tas det backup en gang i døgnet til våre lokale servere, lagret med RAID 5. Vi bruker [ossus](https://github.com/frecar/ossus) til å ta ekstern backup.
Vi håper å se deg på [Slack](http://webkom.abakus.no/slack) i løpet av 2015. Nye prosjekter kommer på [GitHub](https://github.com/webkom), følg gjerne med!
diff --git a/_posts/2015-03-10-chewie-uten-fabric.md b/src/content/blog/2015-03-10-chewie-uten-fabric.md
similarity index 72%
rename from _posts/2015-03-10-chewie-uten-fabric.md
rename to src/content/blog/2015-03-10-chewie-uten-fabric.md
index 838837c..938251b 100644
--- a/_posts/2015-03-10-chewie-uten-fabric.md
+++ b/src/content/blog/2015-03-10-chewie-uten-fabric.md
@@ -1,11 +1,10 @@
---
-layout: post
title: chewie uten fabric
+description: Oppdatering av chewie
+pubDate: 2015-03-10
author: relekang
-
---
-
Da vi først lagde chewie, brukte vi [Fabric](http://www.fabfile.org/) til den
delen av chewie som logger inn på serverne og oppdaterer prosjektene. Ettersom
chewie er skrevet i JavaScript med Node.js, og Fabric er et Python-bibliotek,
@@ -19,26 +18,30 @@ våre servere over SSH. ssh2-modulen er eventbasert. Det vil si at man må sette
eventlyttere for å kjøre kommandoer over en SSH-tilkobling. Nedenfor vises hvordan
man kunne kjørt kommandoen `date` over en tilkobling satt opp med ssh2.
-{% highlight javascript %}
+```js
var conn = new Client();
-conn.on('ready', function() {
- console.log('Client :: ready');
- conn.exec('date', function(err, stream) {
- if (err) throw err;
- stream.on('close', function(code, signal) {
- conn.end();
- }).on('data', function(data) {
- console.log('STDOUT: ' + data);
- })
- });
-}).connect(options);
-{% endhighlight %}
+conn
+ .on("ready", function () {
+ console.log("Client :: ready");
+ conn.exec("date", function (err, stream) {
+ if (err) throw err;
+ stream
+ .on("close", function (code, signal) {
+ conn.end();
+ })
+ .on("data", function (data) {
+ console.log("STDOUT: " + data);
+ });
+ });
+ })
+ .connect(options);
+```
Når vi deployer, så kjører vi flere kommandoer etter hverandre. Dette hadde allerede ført
til at vi hadde måttet sette opp flere lyttere, og håndtere nedkoblingen av forbindelsen i
etterkant, ikke i `stream.on('close')`. Vi ønsket derfor en bedre løsning, der vi
ville kunne gi en liste med kommandoer og håndtere output med lyttere, men håndtere
-resultater med *callbacks* eller *promises*. Vi var mer positive til promises enn til
+resultater med _callbacks_ eller _promises_. Vi var mer positive til promises enn til
callbacks, siden vi allerede bruker promises der det er egnet i de fleste av våre
JavaScript-prosjekter. Lurer du på hva promises er eller hvorfor vi bruker det,
kan du ta en titt på
@@ -48,19 +51,19 @@ lagde derfor [promised-ssh](https://github.com/relekang/promised-ssh) som en
promise-abstraksjon av ssh2. Denne pakken gjør at vi kan kjøre, for eksempel, `date` på en server
med koden nedenfor.
-{% highlight javascript %}
+```js
ssh
.connect(options)
- .then(function(connection) {
- return connection.exec(['date']);
+ .then(function (connection) {
+ return connection.exec(["date"]);
})
- .spread(function(stdout, stderr) {
- if (stdout) console.log('STDOUT: ' + stdout);
+ .spread(function (stdout, stderr) {
+ if (stdout) console.log("STDOUT: " + stdout);
})
- .catch(function(error) {
- console.log('Could not run command')
+ .catch(function (error) {
+ console.log("Could not run command");
});
-{% endhighlight %}
+```
Den store fordelen med å ha byttet ut Fabric med promised-ssh, er at vi nå har bedre
muligheter til å håndtere feil på en god måte. I tillegg har vi nå droppet
@@ -71,13 +74,13 @@ Dersom du er interessert i hvordan vi har tatt i bruk promised-ssh kan du se
på [Deployment](https://github.com/webkom/chewie/blob/master/src/Deployment.js)-objektet.
Det kan brukes så enkelt som i koden nedenfor.
-{% highlight javascript %}
-new Deployment('chewie')
+```js
+new Deployment("chewie")
.run()
- .then(function() {
- console.log('Successfully deployed chewie');
+ .then(function () {
+ console.log("Successfully deployed chewie");
})
- .catch(function(error) {
- console.log('An error occured while deploying chewie', error);
+ .catch(function (error) {
+ console.log("An error occured while deploying chewie", error);
});
-{% endhighlight %}
+```
diff --git a/_posts/2015-03-18-vinner-404-competition.md b/src/content/blog/2015-03-18-vinner-404-competition.md
similarity index 89%
rename from _posts/2015-03-18-vinner-404-competition.md
rename to src/content/blog/2015-03-18-vinner-404-competition.md
index f2df67d..b51bfb5 100644
--- a/_posts/2015-03-18-vinner-404-competition.md
+++ b/src/content/blog/2015-03-18-vinner-404-competition.md
@@ -1,28 +1,28 @@
---
-layout: post
title: Vinner av Webkoms 404-konkurranse!
+description: Vi har kåret en vinner av vår 404-konkurranse!
+pubDate: 2015-03-18
author: edvardvb
-
---
For knappe to måneder siden annonserte vi vår store 404-konkurranse, hvor vi lot hobby-entusiaster, ambisiøse game
devs og den jevne abakule konkurrere om et ettertraktet V.I.P. medlemsskap på Downtown. Konkurransen ble avsluttet
ved utgangen av februar, og vi har nå etter en lang diskusjon klart å velge en vinner.
-Selv om det bare er én vinner vil vi nå ha hele *tre* 404-spill på [abakus.no](http://www.abakus.no), altså to nye i tillegg
+Selv om det bare er én vinner vil vi nå ha hele _tre_ 404-spill på [abakus.no](http://www.abakus.no), altså to nye i tillegg
til det gamle 404-spillet, slik at du får et tilfeldig spill hver gang du får en 404-error (forhåpentligvis skjer ikke det så
ofte). Her får du en kort oppsummering av de to nye spillene, og en begrunnelse på hvorfor vi mener vinneren fortjente seieren:
-##2. plass - The Floor is Lava - Audun Liberg
+## 2. plass - The Floor is Lava - Audun Liberg
[](https://rawgit.com/Vardark/404-competition/master/entries/audunlib/index.html)
-The Floor is Lava imponerte oss med hele *seks* (6) baner, og støtte for to spillere. Dette er et plattformspill
+The Floor is Lava imponerte oss med hele _seks_ (6) baner, og støtte for to spillere. Dette er et plattformspill
hvor man styrer en figur som såklart skal holde seg unna lavaen, samtidig som den må passe seg for en del fiender.
Figuren kan samle ammunisjon som den kan skyte på fiendene. Noen av nivåene er til og med dynamiske, slik at man
ikke kan stå på samme sted for lenge. Ønsker du å teste spillet kan du klikke på bildet ovenfor.
-##1. plass - Survive - Mats Byrkjeland
+## 1. plass - Survive - Mats Byrkjeland
[](https://rawgit.com/draperunner/404-competition/master/entries/matsby/dist/matsby.html)
diff --git a/_posts/2017-03-03-jubileum.md b/src/content/blog/2017-03-03-jubileum.md
similarity index 90%
rename from _posts/2017-03-03-jubileum.md
rename to src/content/blog/2017-03-03-jubileum.md
index 6ab731e..ea9bc5b 100644
--- a/_posts/2017-03-03-jubileum.md
+++ b/src/content/blog/2017-03-03-jubileum.md
@@ -1,18 +1,17 @@
---
-layout: post
title: Abakus fyller 40 år
+description: Abakus fyller 40 år og det må feires!
+pubDate: 2017-03-03
author: hanse
-
---
-
+
I år fyller Abakus 40 år, noe som seg hør og bør må feires med en snau uke med festiviteter. Jubileumsuka består av en rekke arrangementer og for å holde orden på all moroa fikk webkom i samarbeid med representanter fra PR i oppdrag å lage en nettside som kunne være et kompliment til abakus.no og ymse Facebook-eventer.
-
Webkom lar sjelden en mulighet til å prøve nye ting gå fra seg og valgte å benytte rammeverket Next.js fra überhippe [Zeit, Inc](https://zeit.co/), som blant annet også står bak [now](https://zeit.co/now). Vi har i flere år nå benyttet oss av [React](https://facebook.github.io/react/) for stort sett det meste vi har laget, og Next.js er bygget på nettopp React, men med enklere oppsett av [code splitting](https://webpack.github.io/docs/code-splitting.html), server side rendering og rask [hot reloading](https://webpack.github.io/docs/hot-module-replacement.html) enn man vanligvis møter når man gjør det selv.
-
+
diff --git a/_posts/2022-11-02-oktober-2022.md b/src/content/blog/2022-11-02-oktober-2022.md
similarity index 98%
rename from _posts/2022-11-02-oktober-2022.md
rename to src/content/blog/2022-11-02-oktober-2022.md
index 23bbb94..9fd0cba 100644
--- a/_posts/2022-11-02-oktober-2022.md
+++ b/src/content/blog/2022-11-02-oktober-2022.md
@@ -1,6 +1,7 @@
---
-layout: post
title: Oktober 2022
+description: En oppsummering av hva vi har gjort i oktober 2022.
+pubDate: 2022-11-02
author: eikhr
---
diff --git a/_posts/2023-01-11-november-december-2022.md b/src/content/blog/2023-01-11-november-december-2022.md
similarity index 96%
rename from _posts/2023-01-11-november-december-2022.md
rename to src/content/blog/2023-01-11-november-december-2022.md
index 1f09501..ea06e7d 100644
--- a/_posts/2023-01-11-november-december-2022.md
+++ b/src/content/blog/2023-01-11-november-december-2022.md
@@ -1,6 +1,7 @@
---
-layout: post
-title: Ukesmail, arrangementstatistikk og Typescript (nov. og des. 2022)
+title: November og Desember 2022
+description: Oppsummering av hva som har skjedd i Webkom i November og Desember 2022
+pubDate: 2023-01-11
author: eikhr
---
@@ -11,7 +12,7 @@ Selv om det har vært litt stille på utviklerbloggen i det siste betyr det på
En av de mest spennende tingene som har blitt implementert er en ny adminside som viser statistikk over påmeldingene til et arrangement. Her kan man se fordelingen av klassetrinn, linje, kjønn og gruppetilhørighet, samt en graf over når folk melder seg på og av. Dette vil gjøre det betydelig enklere å hente ut data om hvem som deltar på ulike arrangementer og vil forhåpentligvis være av stor nytte for arrangerende komiteer og PR i forbindelse med planlegging og markedsføring av inkluderende arrangementer.
-
+
### Ukesmail
@@ -21,7 +22,7 @@ Hvis dere har sjekket mailen deres i det siste, har dere kanskje lagt merke til
### Typescript
-Til slutt har vi jobbet mye bak scenen med å rydde opp og oppdatere kodebasen [lego-webapp](https://github.com/webkom/lego-webapp), som er React-applikasjonen du ser når du går inn på abakus.no. Som mange sikkert vet er Javascript et dynamisk typet språk, som vil si at variabler ikke har noen spesifikk type i koden. Dette kan føre til man introduserer bugs som ikke kommer til syne før man utfører spesifikke sekvenser av handlinger i programmet. For å minske dette problemet finnes det ulike statiske typesjekkere man kan bruke for å legge til typer i Javascript koden sin. Vi har lenge brukt [Flow](https://flow.org/) til dette, men ettersom [Typescript](https://www.typescriptlang.org/) har blitt en de facto standard i Javascript økosystemet har det vært et ønske om å migrere over til det.
+Til slutt har vi jobbet mye bak scenen med å rydde opp og oppdatere kodebasen [lego-webapp](https://github.com/webkom/lego-webapp), som er React-applikasjonen du ser når du går inn på abakus.no. Som mange sikkert vet er Javascript et dynamisk typet språk, som vil si at variabler ikke har noen spesifikk type i koden. Dette kan føre til man introduserer bugs som ikke kommer til syne før man utfører spesifikke sekvenser av handlinger i programmet. For å minske dette problemet finnes det ulike statiske typesjekkere man kan bruke for å legge til typer i Javascript koden sin. Vi har lenge brukt [Flow](https://flow.org/) til dette, men ettersom [Typescript](https://www.typescriptlang.org/) har blitt en de facto standard i Javascript økosystemet har det vært et ønske om å migrere over til det.
I november fikk vi endelig gjort overgangen ved å kjøre en automatisk [flow-til-ts](https://github.com/Khan/flow-to-ts) konverterer i [denne PR-en](https://github.com/webkom/lego-webapp/pull/3215) med over 100.000 linjer endret(!). Dette gjorde størsteparten av jobben, men lot det ligge igjen rundt 1300 ESLint warnings om dårlige typer, samt noen tusen Tyescript-feilmeldinger. Disse jobber vi enda med å fikse opp i, men resultatet blir en betydelig tryggere kodebase som er lettere å vedlikeholde i årene fremover.
diff --git a/_posts/2023-02-06-january-2023.md b/src/content/blog/2023-02-06-january-2023.md
similarity index 90%
rename from _posts/2023-02-06-january-2023.md
rename to src/content/blog/2023-02-06-january-2023.md
index ce1059e..82fcf20 100644
--- a/_posts/2023-02-06-january-2023.md
+++ b/src/content/blog/2023-02-06-january-2023.md
@@ -1,28 +1,32 @@
---
-layout: post
title: Januar 2023
+description: Oppsummering av hva vi har jobbet med i januar 2023
+pubDate: 2023-02-06
author: haukkagu
---
Ny måned, nye muligheter og et nytt innlegg på utviklerbloggen! Her er en oppsummering av hva vi har jobbet med i januar.
## Ny og moderne look
+
I januar har vi jobbet hardt med å forbedre looken til abakus.no. Det er flere aspekter ved nettsiden som ser gammelt og utdatert ut, og målet vårt har vært å få nettsiden til å virke litt mer moderne. Noe av det vi har implementert er en ny font, finere farger, runde hjørner på komponenter, en splitter ny kalender og kulere komponenter for arrangementer på profilen! Under følger noen før- og etterbilder.
-|**Før**|**Etter**|
-|||
-|||
-|||
+| **Før** | **Etter** |
+| -------------------------------------------------------- | ------------------------------------------------------ |
+|  |  |
+|  |  |
+|  |  |
For mer detaljer, sjekk endringsloggen på bunnen av blogginnlegget.
## Abanav
+
Skal du sende inn en kvittering til Abakus, men er usikker på hvor du skal gjøre dette? Kanskje du vil forberede deg til genfors, men aner ikke hvor man finner statuttene? Frykt ikke lengere, for nå har Abakus sin helt egen instabart: Abanav. Abanav gir deg en oversikt over alle nettjenestene til Abakus, alt fra abakus.no til nettsiden for statuttene og kvitteringer. Ta en tur innom på [aba.wtf](https://aba.wtf) og finn hva enn du leter etter!
-
## Opprydding av vote
+
I tillegg til LEGO har vi også jobbet en del med et annet prosjekt denne måneden, nemlig vote. Kodebasen til vote var mildt sagt utdatert ettersom teknologi-stakken har vært relativt uendret siden vote ble skrevet i 2015. Vi hadde derfor en rekke ting vi ønsket å fornye. For det første var vote-backend skrevet i ikke-typet javascript. Som jeg har skrevet om tidligere på utviklerbloggen er statiske typer et godt verktøy for å unngå å introdusere feil, noe som er svært viktig i et system som vote. Vi har derfor hatt et mer eller mindre pågående prosjekt lenge nå, om å legge til TypeScript-typer. Etter en god siste innspurt etter jul, har TypeScript-koden endelig merget inn i master. Dette vil gjøre det tryggere og lettere for oss å gjøre endringer og vedlikehold på vote.
Videre var vote-frontend skrevet i AngularJS, forgjengeren til frontend-rammeverket Angular som dere kanskje har hørt om. Dette er et 12 år gammelt rammeverk som ikke har vært i aktiv utvikling siden 2018. Her har vi valgt å ta en stormskritt inn i fremtiden ved å skrive hele frontend på nytt i SvelteKit. Dette ble påbegynt i januar, men her gjenstår fremdeles en del arbeid. En del forberedelser ble derimot gjennomført i januar. Vi har blant annet byttet ut byggeverktøyet webpack med vite, og testverktøyet mocha med vitest. Vi regner derfor med å komme godt i gang med dette i februar, og gleder oss til å vise frem en ny og forbedret vote om ikke alt for lenge.
@@ -36,6 +40,7 @@ Videre var vote-frontend skrevet i AngularJS, forgjengeren til frontend-rammever
- 🧹 - Opprydning
### Nytt:
+
- 🧹 **Opprydding av vote** ([vote#534](https://github.com/webkom/vote/pull/534), [vote#532](https://github.com/webkom/vote/pull/532), [vote#522](https://github.com/webkom/vote/pull/522), [vote#521](https://github.com/webkom/vote/pull/521), [vote#518](https://github.com/webkom/vote/pull/518), [vote#517](https://github.com/webkom/vote/pull/517), [vote#516](https://github.com/webkom/vote/pull/516), [vote#515](https://github.com/webkom/vote/pull/515))
- 🚀 **Personvern**, personvernerklæring er nå lagt til i footeren ([lego-webapp#3485](https://github.com/webkom/lego-webapp/pull/3485))
- 🚀 **Analytics**, analytics har blitt lagt til lenker i ukesmail ([lego#3198](https://github.com/webkom/lego/pull/3198))
@@ -53,6 +58,7 @@ Videre var vote-frontend skrevet i AngularJS, forgjengeren til frontend-rammever
- 🎨 **Diverse komponenter**, forbedret designet til diverse komponenter ([lego-webapp#3416](https://github.com/webkom/lego-webapp/pull/3416))
### Fikset:
+
- 🧹 **Hovedsiden**, refactor av hovedsiden ([lego-webapp#3449](https://github.com/webkom/lego-webapp/pull/3449))
- 🧹 **TypeScript-relaterte feilmeldinger**, opprydning av typescript feilmeldinger og typer ([lego-webapp#3385](https://github.com/webkom/lego-webapp/pull/3385), [lego-webapp#3386](https://github.com/webkom/lego-webapp/pull/3386))
- 🐛 **Diverse bugfikser** ([lego-webapp#3504](https://github.com/webkom/lego-webapp/pull/3504), [lego-webapp#3496](https://github.com/webkom/lego-webapp/pull/3496), [lego-webapp#3486](https://github.com/webkom/lego-webapp/pull/3486), [lego-webapp#3468](https://github.com/webkom/lego-webapp/pull/3468), [lego-webapp#3433](https://github.com/webkom/lego-webapp/pull/3433), [lego-webapp#3457](https://github.com/webkom/lego-webapp/pull/3457))
diff --git a/_posts/2023-04-01-february-march.md b/src/content/blog/2023-04-01-february-march.md
similarity index 99%
rename from _posts/2023-04-01-february-march.md
rename to src/content/blog/2023-04-01-february-march.md
index b85fd54..3775057 100644
--- a/_posts/2023-04-01-february-march.md
+++ b/src/content/blog/2023-04-01-february-march.md
@@ -1,12 +1,14 @@
---
-layout: post
-title: Mars og Februar 2023
+title: Februar og Mars 2023
+description: Hva har Webkom gjort i februar og mars 2023?
+pubDate: 2023-04-01
author: haukkagu
---
Velkommen tilbake til enda et innlegg på utviklerbloggen! Du lurer kanskje på hva Webkom har gjort de siste to månedene bortsett fra å sende 100+ ukesmail til hver enkelt abakule? Les videre for å finne ut av akkurat hva vi har jobbet med i februar og mars!
## Aprilsnarr
+
Allerede i februar begynte vi planleggingen av årets aprilsnarr på abakus.no. Vi landet til slutt på idéen om å fake påmeldingen av et stort arrangement (det endte opp med å bli sommerfesten) på 1. april, og å gjøre captchaen for å kunne melde seg på arrangementet så krunglete som mulig. Til slutt fikk vi implementert en påmeldingsknapp som beveger seg fra musepekeren når man er i ferd med å trykke på den. Hvis man klarer å trykke på knappen, blir man mødt med et vanskelig integral som man er nødt til å løse. Deretter må man løse tidenes vanskeligste "Skriv ned bokstavene i bildet" captcha før man til slutt blir gratulert og takket for å ha testet ut det nye captcha systemet til Webkom. Hvis du gikk glipp av moroa, følger noen screenshots av aprilsnarren under
@@ -15,6 +17,7 @@ Allerede i februar begynte vi planleggingen av årets aprilsnarr på abakus.no.
## Ny i Trondheim
+
Til slutt vil jeg snakke om et prosjekt som ikke så mange kjenner til, nemlig Ny i Trondheim! Ny i Trondheim har tidligere vært en nettside med nyttig informasjon for nye studenter i Trondheim. Nettsiden har ligget død en stund, men vi har nylig valgt å gjenopplive prosjektet! Den nye nettsiden kan du finne på [nyitrondheim.no](https://nyitrondheim.no), og her kan du lese deg opp på alt fra hvordan skaffe deg bolig til NTNU-lingo. Nettsiden har kommet ganske langt, men mangler fortsatt litt innhold. Har du noen innspill på hva som bør stå her? Da er det bare å finne frem til [kildekoden](https://github.com/webkom/nyitrondheim) og legge det til selv!
@@ -52,7 +55,6 @@ Til slutt vil jeg snakke om et prosjekt som ikke så mange kjenner til, nemlig N
- ✨ **Diverse funksjonalitetsforbedringer** ([lego-webapp#3532](https://github.com/webkom/lego-webapp/pull/3532)), ([lego-webapp#3555](https://github.com/webkom/lego-webapp/pull/3555)), ([lego-webapp#3577](https://github.com/webkom/lego-webapp/pull/3577))
- 🎨 **Diverse designforbedringer** ([lego-webapp#3525](https://github.com/webkom/lego-webapp/pull/3525)), ([lego-webapp#3680](https://github.com/webkom/lego-webapp/pull/3680)), ([lego-webapp#3677](https://github.com/webkom/lego-webapp/pull/3677)), ([lego-webapp#3594](https://github.com/webkom/lego-webapp/pull/3594))
-
### Fikset
- 🐛 **Større modal**, modaler ser nå bedre ut på alle typer skjermer. Dette fikk vi mye feedback på, og det er bra at dere sier ifra! ([lego-webapp#3531](https://github.com/webkom/lego-webapp/pull/3531))
diff --git a/_posts/2023-06-01-april-may.md b/src/content/blog/2023-06-01-april-may.md
similarity index 79%
rename from _posts/2023-06-01-april-may.md
rename to src/content/blog/2023-06-01-april-may.md
index f42e7a4..c799410 100644
--- a/_posts/2023-06-01-april-may.md
+++ b/src/content/blog/2023-06-01-april-may.md
@@ -1,32 +1,38 @@
---
-layout: post
title: April og Mai 2023
+description: Oppdatering av abakus.no
+pubDate: 2023-06-01
author: haukkagu
---
Velkommen til semesterets siste innlegg på utviklerbloggen 😭. Jeg vet hvor trist det må være for dere fire som faktisk leser disse innleggene. Selv om det har vært eksamensperiode, har vi likevel klart å jobbe en del med abakus.no. Her kommer en liten oppsummering av hva vi har jobbet med i april og mai.
## Ny i Abakus
+
Vi har nylig begynt å jobbe med en side med navn "Ny i Abakus". Denne nettsiden skal fungere som en introduksjon til Abakus for nye studenter på Data og Komtek. Nettsiden gir informasjon om Abakus og fadderperioden, samt tips og triks som kan være nyttig å vite når man skal flytte til Trondheim for første gang. Nettsiden finner du på [ny.abakus.no](https://ny.abakus.no/), og en link til nettsiden kommer til å bli lagt ut på [abakus.no](https://abakus.no) når fadderperioden nærmer seg.
## Diverse screenshots
+
Hovedsiden for de som ikke er logget inn ser nå litt finere ut med illustrasjoner under "Nyttige lenker".
-|**Før**|**Etter**|
-|||
+| **Før** | **Etter** |
+| ------------------------------------------------ | ---------------------------------------------- |
+|  |  |
Netcompany-logoen på hovedsiden er nå mer synlig på dark mode
-|**Før**|**Etter**|
-|||
+| **Før** | **Etter** |
+| ---------------------------------------------------- | --------------------------------------------------- |
+|  |  |
Det var på høytid at avkrysningsbokser og radioknapper ble sentrert i spørreundersøkelser!
-|**Før**|**Etter**|
-|||
+| **Før** | **Etter** |
+| ----------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
+|  |  |
Plausible analytics har blitt lagt til under Statistikk-tabben på adminsiden!

@@ -54,7 +60,7 @@ Plausible analytics har blitt lagt til under Statistikk-tabben på adminsiden!
- 🎨 **Offentlig hovedside**, lagt til illustrasjoner for Nyttige lenker ([lego-webapp#3793](https://github.com/webkom/lego-webapp/pull/3793))
- 🎨 **Radioknapper**, de ser finere ut :) ([lego-webapp#3791](https://github.com/webkom/lego-webapp/pull/3791))
- ✨ **Kalender**, kalenderen din bruker ikke nå 100 år på å loade alle møtene dine ([lego#3321](https://github.com/webkom/lego/pull/3321))
-- 🐛 **Emojireaksjoner**, fikset bug der emojireaksjoner ikke kunne bli fjernet uten av å reloade
+- 🐛 **Emojireaksjoner**, fikset bug der emojireaksjoner ikke kunne bli fjernet uten av å reloade
- 🐛 **Theme**, fikset bug der ikoner for light/dark theme ikke ble oppdatert etter endring ([lego-webapp#3875](https://github.com/webkom/lego-webapp/pull/3875)) (Takk til [Bestem0r](https://github.com/bestem0r)!!!)
- 🐛 **Spørreundersøkelse**, fikse template picker for spørreundersøkelser ([lego-webapp#3873](https://github.com/webkom/lego-webapp/pull/3873))
- 🧹 **Vote**, mange av "sidene" (pages) har blitt skrevet om i svelte ([vote#570](https://github.com/webkom/vote/pull/570))
diff --git a/_posts/2023-07-30-june-july.md b/src/content/blog/2023-07-30-june-july.md
similarity index 68%
rename from _posts/2023-07-30-june-july.md
rename to src/content/blog/2023-07-30-june-july.md
index ef348ba..72ca016 100644
--- a/_posts/2023-07-30-june-july.md
+++ b/src/content/blog/2023-07-30-june-july.md
@@ -1,27 +1,31 @@
---
-layout: post
title: Juni og Juli 2023
+description: En oppsummering av hva vi har jobbet med i juni og juli 2023
+pubDate: 2023-07-30
author: haukkagu
---
God sommerferie! Vi håper du har hatt en fantastisk ferie, og er klare for et nytt skoleår. Som en liten trøst for at sommeren går mot slutten, kan du nå kose deg med et nytt innlegg på utviklerbloggen vår! I løpet av de to siste månedene har vi blant annet jobbet med [Ny i Abakus](https://ny.abakus.no/) og forbedret designet til mange komponenter på abakus.no.
## Feide
+
Så langt har vi hatt ingen måte å verifisere om en Abakus bruker faktisk tilhører studieprogrammene datateknologi eller komtek. Dette har ført til tilfeller der studenter fra andre linjeforeninger har opprettet Abakus-brukere for å melde seg på arrangementer. Dette er skikkelig teit, da de opptar plasser som ekte Abakus-medlemmer kunne ha brukt. For å takle dette problemet jobber vi aktivt med å implementere feideverifikasjon på abakus.no. Planen vår er at nye brukere må verifisere seg gjennom Feide, slik at vi kan være sikre på at de faktisk er tilknyttet Abakus.
## Diverse screenshots
Den offentlige forsiden ser nå mye cleanere ut
-| **Før** | **Etter** |
-| | |
+| **Før** | **Etter** |
+| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ |
+| | |
I tillegg ser mange komponenter nicere ut
-| **Før** | **Etter** |
-| | |
-| | |
-| | |
+| **Før** | **Etter** |
+| ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
+| | |
+| | |
+| | |
## Endringslogg for LEGO (abakus.no) April og Mai 2023
@@ -41,7 +45,7 @@ I tillegg ser mange komponenter nicere ut
- 🎨 **Ikoner** som man kan trykke på ser ut som knapper ([lego-webapp#4029](https://github.com/webkom/lego-webapp/pull/4029))
- 🎨 **Offentlig forside** ser nicere ut ([lego-webapp#3991](https://github.com/webkom/lego-webapp/pull/3991))
- 🎨 **Tabs** ser nicere ut ([lego-webapp#4030](https://github.com/webkom/lego-webapp/pull/4030), [lego-webapp#4043](https://github.com/webkom/lego-webapp/pull/4043))
-- 🎨 **Knapper** ser nicere ut ([lego-webapp#4020](https://github.com/webkom/lego-webapp/pull/4020), [lego-webapp#4028](https://github.com/webkom/lego-webapp/pull/4028))
+- 🎨 **Knapper** ser nicere ut ([lego-webapp#4020](https://github.com/webkom/lego-webapp/pull/4020), [lego-webapp#4028](https://github.com/webkom/lego-webapp/pull/4028))
- 🎨 **Kommentarer** ser nicere ut ([lego-webapp#4018](https://github.com/webkom/lego-webapp/pull/4018))
- 🎨 **Diagram** ser nicere ut ([lego-webapp#3977](https://github.com/webkom/lego-webapp/pull/3977))
- 🎨 **Tooltip** ser, believe it or not, nicere ut ([lego-webapp#3987](https://github.com/webkom/lego-webapp/pull/3987), [lego-webapp#4010](https://github.com/webkom/lego-webapp/pull/4010))
diff --git a/src/content/config.ts b/src/content/config.ts
new file mode 100644
index 0000000..819b2d2
--- /dev/null
+++ b/src/content/config.ts
@@ -0,0 +1,20 @@
+import { defineCollection, z } from "astro:content";
+
+const blog = defineCollection({
+ schema: z.object({
+ title: z.string(),
+ description: z.string(),
+ pubDate: z
+ .string()
+ .or(z.date())
+ .transform((val) => new Date(val)),
+ updatedDate: z
+ .string()
+ .or(z.date())
+ .optional()
+ .transform((str) => (str ? new Date(str) : undefined)),
+ author: z.string(),
+ }),
+});
+
+export const collections = { blog };
diff --git a/src/env.d.ts b/src/env.d.ts
new file mode 100644
index 0000000..acef35f
--- /dev/null
+++ b/src/env.d.ts
@@ -0,0 +1,2 @@
+///
+///
diff --git a/src/layouts/BlogPost.astro b/src/layouts/BlogPost.astro
new file mode 100644
index 0000000..e5915c2
--- /dev/null
+++ b/src/layouts/BlogPost.astro
@@ -0,0 +1,98 @@
+---
+import type { CollectionEntry } from "astro:content";
+import BaseHead from "../components/BaseHead.astro";
+import Header from "../components/Header.astro";
+import Footer from "../components/Footer.astro";
+import FormattedDate from "../components/FormattedDate.astro";
+
+type Props = CollectionEntry<"blog">["data"];
+
+const { title, author, description, pubDate, updatedDate } = Astro.props;
+---
+
+
+
+
+
+
+
+
+
+
+