From d1a143aed5c7b48888eccb690bf3bf69ae3667bc Mon Sep 17 00:00:00 2001 From: Mathieu De Coster Date: Sat, 3 Oct 2015 12:26:48 +0200 Subject: Add translation to Dutch for json --- nl-nl/json.html.markdown | 61 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 nl-nl/json.html.markdown (limited to 'nl-nl') diff --git a/nl-nl/json.html.markdown b/nl-nl/json.html.markdown new file mode 100644 index 00000000..f025481a --- /dev/null +++ b/nl-nl/json.html.markdown @@ -0,0 +1,61 @@ +--- +language: json +filename: learnjson.json +contributors: + - ["Anna Harren", "https://github.com/iirelu"] + - ["Marco Scannadinari", "https://github.com/marcoms"] +translators: + - ["Mathieu De Coster", "https://github.com/m-decoster"] +lang: nl-nl +--- + +Aangezien JSON een extreem eenvoudig data-uitwisselingsformaat is, zal dit waarschijnlijk +de meest eenvoudige Learn X in Y Minutes ooit zijn. + +Puur JSON heeft geen commentaar, maar de meeste parsers zullen commentaar in de stijl +van C (`//`, `/* */`) aanvaarden. In dit voorbeeld zal alles 100% correcte JSON zijn. +Gelukkig spreekt het meeste voor zichzelf. + +```json +{ + "key": "value", + + "keys": "moeten altijd tussen dubbele aanhalingstekens staan", + "getallen": 0, + "strings": "Hellø, world. Alle unicode karakters zijn toegelaten, zo ook \"escaping\".", + "heeft json booleans?": true, + "niets": null, + + "groot getal": 1.2e+100, + + "objecten": { + "commentaar": "De meeste structuur wordt gemaakt met objecten.", + + "array": [0, 1, 2, 3, "Arrays kunnen eender wat bevatten.", 5], + + "nog een object": { + "commentaar": "Hoe handig, we kunnen objecten nesten." + } + }, + + "dwaasheid": [ + { + "bronnen van kalium": ["banenen"] + }, + [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, "neo"], + [0, 0, 0, 1] + ] + ], + + "alternatieve stijl": { + "commentaar": "kijk hier eens naar!" + , "komma locatie": "maakt niet uit - zo lang het voor de value komt, is alles in orde" + , "nog commentaar": "hoe leuk" + }, + + "dat was kort": "Je bent klaar. Je kent nu alles dat JSON kan aanbieden." +} +``` -- cgit v1.2.3 From c2e9577626d60a04409c8568b3fc8ae3d3ef5e96 Mon Sep 17 00:00:00 2001 From: Mathieu De Coster Date: Sat, 3 Oct 2015 12:33:33 +0200 Subject: Fix typo's in nl-nl/json --- nl-nl/json.html.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'nl-nl') diff --git a/nl-nl/json.html.markdown b/nl-nl/json.html.markdown index f025481a..a82f13c4 100644 --- a/nl-nl/json.html.markdown +++ b/nl-nl/json.html.markdown @@ -9,7 +9,7 @@ translators: lang: nl-nl --- -Aangezien JSON een extreem eenvoudig data-uitwisselingsformaat is, zal dit waarschijnlijk +Aangezien JSON een extreem eenvoudig datauitwisselingsformaat is, zal dit waarschijnlijk de meest eenvoudige Learn X in Y Minutes ooit zijn. Puur JSON heeft geen commentaar, maar de meeste parsers zullen commentaar in de stijl @@ -22,7 +22,7 @@ Gelukkig spreekt het meeste voor zichzelf. "keys": "moeten altijd tussen dubbele aanhalingstekens staan", "getallen": 0, - "strings": "Hellø, world. Alle unicode karakters zijn toegelaten, zo ook \"escaping\".", + "strings": "Hellø, world. Alle Unicode-karakters zijn toegelaten, zo ook \"escaping\".", "heeft json booleans?": true, "niets": null, @@ -40,7 +40,7 @@ Gelukkig spreekt het meeste voor zichzelf. "dwaasheid": [ { - "bronnen van kalium": ["banenen"] + "bronnen van kalium": ["bananen"] }, [ [1, 0, 0, 0], -- cgit v1.2.3 From 769bcba250efeeadb3f7723adec09c73d7c512f2 Mon Sep 17 00:00:00 2001 From: Frank van Gemeren Date: Thu, 29 Oct 2015 01:30:15 +0100 Subject: [xml/nl] --- nl-nl/xml-nl.html.markdown | 134 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 nl-nl/xml-nl.html.markdown (limited to 'nl-nl') diff --git a/nl-nl/xml-nl.html.markdown b/nl-nl/xml-nl.html.markdown new file mode 100644 index 00000000..930f7cf4 --- /dev/null +++ b/nl-nl/xml-nl.html.markdown @@ -0,0 +1,134 @@ +--- +language: xml +filename: learnxml-nl.xml +contributors: + - ["João Farias", "https://github.com/JoaoGFarias"] +translators: + - ["Frank van Gemeren", "https://github.com/frvge"] +lang: nl-nl +--- + +XML is een markuptaal die ontwikkeld is om data in te bewaren en data mee te +verzenden. + +Anders dan HTML specificeert XML niet hoe data getoond of geformatteerd moet worden. +Het bevat de data slechts. + +* XML Syntax + +```xml + + + + + + Alledaags Italiaans</titel> + <auteur>Giada De Laurentiis</auteur> + <jaar>2005</jaar> + <prijs>30.00</prijs> + </boek> + <boek categorie="KINDEREN"> + <titel taal="nl">Harry Potter</titel> + <auteur>J K. Rowling</auteur> + <jaar>2005</jaar> + <prijs>29.99</prijs> + </boek> + <boek categorie="WEB"> + <titel taal="en">Learning XML</titel> + <auteur>Erik T. Ray</auteur> + <jaar>2003</jaar> + <prijs>39.95</prijs> + </boek> +</boekenwinkel> + +<!-- Hierboven staat een standaard XML bestand. + Het begint met een declaratie die optionele metadata bevat. + + XML werkt met een boomstructuur. De stamknoop hierboven is 'boekenwinkel'. + Deze heeft drie kinderen die allemaal 'boek' zijn. Deze knopen hebben op + hun beurt weer kinderen, enzovoort... + + Knopen hebben open- en sluittags. Kinderen zijn knopen die zich tussen de + open- en sluittags van hun ouders bevinden. --> + +<!-- XML bevat two soorten data: + 1 - Attributen -> Dit is metadata van een knoop. + Deze informatie wordt meestal door de XML parser gebruikt om de data op + de juiste manier op te slaan. Je herkent het door de syntax in de vorm + van naam="waarde" in de open tag. + 2 - Elementen -> Dit is de pure data + Deze gegevens worden door de parser uit het XML bestand gehaald. + Elementen staan tussen de open- en sluittags. --> + + +<!-- Hieronder staat een element met twee attributen --> +<bestand type="gif" id="4293">computer.gif</bestand> + + +``` + +* Grammaticaal correcte documenten x Validatie + +Een XML document is "grammaticaal correct" of "well-formatted" als de +syntax correct is. Het is ook mogelijk om meer structuur in het document +aan te brengen met document definities zoals DTD en XML Schema. + +Een XML document dat aan een document definitie voldoet wordt "valide" volgens +die document definitie genoemd. + +Met deze gereedschappen kan je de XML data buiten je applicatie logica +controleren. + +```xml + +<!-- Hieronder staat een versimpelde versie voor een boekenwinkel document, + met een toevoeging van een DTD definitie. --> + +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE note SYSTEM "boekenwinkel.dtd"> +<boekenwinkel> + <boek categorie="KOKEN"> + <titel>Alledaags Italiaans</titel> + <prijs>30.00</prijs> + </boek> +</boekenwinkel> + +<!-- De DTD kan er als volgt uitzien:--> + +<!DOCTYPE note +[ +<!ELEMENT boekenwinkel (boek+)> +<!ELEMENT boek (titel,prijs)> +<!ATTLIST boek categorie CDATA "Literatuur"> +<!ELEMENT titel (#PCDATA)> +<!ELEMENT prijs (#PCDATA)> +]> + + +<!-- De DTD begint met een declaratie. + Hierna volgt de declaratie van de stamknoop, die 1 of meer 'boek' kinderen + moet bevatten. + Elk 'boek' moet precies 1 'titel' en 'prijs' element bevatten en een attribuut + 'categorie' hebben waarvan 'Literatuur' de standaard waarde is. + De 'titel' en 'prijs' knopen bevatten parsed character data.--> + +<!-- De DTD kan ook in het XML bestand zelf gedeclareerd worden.--> + +<?xml version="1.0" encoding="UTF-8"?> + +<!DOCTYPE note +[ +<!ELEMENT boekenwinkel (boek+)> +<!ELEMENT boek (titel,prijs)> +<!ATTLIST boek categorie CDATA "Literatuur"> +<!ELEMENT titel (#PCDATA)> +<!ELEMENT prijs (#PCDATA)> +]> + +<boekenwinkel> + <boek categorie="KOKEN"> + <titel>Alledaags Italiaans</titel> + <prijs>30.00</prijs> + </boek> +</boekenwinkel> +``` \ No newline at end of file -- cgit v1.2.3 From c990b720e4416fd5c516af906ba548d0b2b12f0f Mon Sep 17 00:00:00 2001 From: Reinoud Kruithof <reinoud.kruithof@gmail.com> Date: Sat, 31 Oct 2015 12:37:39 +0100 Subject: Added Dutch translation of AMD. --- nl-nl/amd-nl.html.markdown | 235 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 235 insertions(+) create mode 100644 nl-nl/amd-nl.html.markdown (limited to 'nl-nl') diff --git a/nl-nl/amd-nl.html.markdown b/nl-nl/amd-nl.html.markdown new file mode 100644 index 00000000..d5e0022a --- /dev/null +++ b/nl-nl/amd-nl.html.markdown @@ -0,0 +1,235 @@ +--- +category: tool +tool: amd +contributors: + - ["Frederik Ring", "https://github.com/m90"] +translators: + - ["Reinoud Kruithof", "https://github.com/reinoudk"] +filename: learnamd-nl.js +lang: nl-nl +--- + +## Aan de slag met AMD + +De **Asynchronous Module Definition** API specificeert een mechanisme om JavaScript + modules the definiëren zodat de module en dependencies (afhankelijkheden) asynchroon + geladen kunnen worden. Dit is vooral erg geschikt voor de browseromgeving, waar het + synchroon laden van modules zorgt voor problemen qua prestatie, gebruiksvriendelijkheid, + debugging en cross-domain toegangsproblemen. + +### Basis concept +```javascript +// De basis AMD API bestaat uit niks meer dan twee methodes: `define` en `require` +// and gaat vooral over de definitie en gebruik van modules: +// `define(id?, dependencies?, factory)` definieert een module +// `require(dependencies, callback)` importeert een set van dependencies en +// gebruikt ze in de gegeven callback + +// Laten we starten met het gebruiken van define om een nieuwe module (met naam) +// te creëeren, welke geen dependencies heeft. Dit doen we door een naam +// en een zogeheten factory functie door te geven aan define: +define('awesomeAMD', function(){ + var isAMDAwesome = function(){ + return true; + }; + // De return waarde van een module's factory functie is + // wat andere modules of require calls ontvangen wanneer + // ze onze `awesomeAMD` module requiren. + // De geëxporteerde waarde kan van alles zijn: (constructor) functies, + // objecten, primitives, zelfs undefined (hoewel dat niet veel nut heeft). + return isAMDAwesome; +}); + + +// We gaan nu een andere module defineren die afhankelijk is van onze +// `awesomeAMD` module. Merk hierbij op dat er nu een extra functieargument +// is die de dependencies van onze module defineert: +define('schreewlelijk', ['awesomeAMD'], function(awesomeAMD){ + // dependencies worden naar de factory's functieargumenten + // gestuurd in de volgorde waarin ze gespecificeert zijn + var vertelIedereen = function(){ + if (awesomeAMD()){ + alert('Dit is zOoOo cool!'); + } else { + alert('Vrij saai, niet?'); + } + }; + return vertelIedereen; +}); + +// Nu we weten hoe we define moeten gebruiken, kunnen we require gebruiken +// om ons programma mee te starten. De vorm van `require` is +// `(arrayVanDependencies, callback)`. +require(['schreeuwlelijk'], function(schreewlelijk){ + schreeuwlelijk(); +}); + +// Om deze tutorial code uit te laten voeren, gaan we hier een vrij basic +// (niet-asynchrone) versie van AMD implementeren: +function define(naam, deps, factory){ + // merk op hoe modules zonder dependencies worden afgehandeld + define[naam] = require(factory ? deps : [], factory || deps); +} + +function require(deps, callback){ + var args = []; + // we halen eerst alle dependecies op die nodig zijn + // om require aan te roepen + for (var i = 0; i < deps.length; i++){ + args[i] = define[deps[i]]; + } + // voldoe aan alle dependencies van de callback + return callback.apply(null, args); +} +// je kan deze code hier in actie zien (Engels): http://jsfiddle.net/qap949pd/ +``` + +### require.js in de echte wereld + +In contrast met het voorbeeld uit de introductie, implementeert `require.js` + (de meest populaire AMD library) de **A** in **AMD**. Dit maakt het mogelijk + om je modules en hun dependencies asynchroon in the laden via XHR: + +```javascript +/* file: app/main.js */ +require(['modules/someClass'], function(SomeClass){ + // de callback word uitgesteld tot de dependency geladen is + var things = new SomeClass(); +}); +console.log('Dus, hier wachten we!'); // dit wordt als eerste uitgevoerd +``` + +De afspraak is dat je over het algemeen één module in één bestand opslaat. +`require.js` kan module-namen achterhalen gebaseerd op de bestandslocatie, +dus je hoeft je module geen naam te geven. Je kan simpelweg aan ze referen + door hun locatie te gebruiken. +In het voorbeeld nemen we aan dat `someClass` aanwezig is in de `modules` map, + relatief ten opzichte van de `baseUrl` uit je configuratie. + +* app/ + * main.js + * modules/ + * someClass.js + * someHelpers.js + * ... + * daos/ + * things.js + * ... + +Dit betekent dat we `someClass` kunnen defineren zonder een module-id te specificeren: + +```javascript +/* file: app/modules/someClass.js */ +define(['daos/things', 'modules/someHelpers'], function(thingsDao, helpers){ + // definitie van de module gebeurt, natuurlijk, ook asynchroon + function SomeClass(){ + this.method = function(){/**/}; + // ... + } + return SomeClass; +}); +``` +Gebruik `requirejs.config(configObj)` om het gedrag van de standaard mapping + aan te passen in je `main.js`: + +```javascript +/* file: main.js */ +requirejs.config({ + baseUrl : 'app', + paths : { + // je kan ook modules uit andere locatie inladen + jquery : '//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min', + coolLibUitBower : '../bower_components/cool-lib/coollib' + } +}); +require(['jquery', 'coolLibUitBower', 'modules/someHelpers'], function($, coolLib, helpers){ + // een `main` bestand moet require minstens eenmaal aanroepen, + // anders zal er geen code uitgevoerd worden + coolLib.doFancyDingenMet(helpers.transform($('#foo'))); +}); +``` +Op `require.js` gebaseerde apps hebben vaak een enkel beginpunt (`main.js`) + welke toegevoegd wordt aan de `require.js` script tag als een data-attribuut. +Deze zal automisch geladen en uitgevoerd worden als de pagina laadt: + +```html +<!DOCTYPE html> +<html> +<head> + <title>Honder script tags? Nooi meer! + + + + + +``` + +### Een heel project optimaliseren met r.js + +Veel mensen geven er de voorkeur aan om AMD te gebruiken tijdens de + ontwikkelfase om code op een gezonde manier te organiseren maar + willen nog steeds een enkel scriptbestand gebruiken in productie in + plaats van honderderen XHR verzoeken uit te voeren als de pagina laadt. + +`require.js` wordt geleverd met een script genaamd `r.js` (die je waarschijnlijk +uitvoert in node.js, hoewel Rhino ook ondersteund wordt) welke de +dependency book van je project analyseert en een enkel bestand bouwt met daarin +al je module (juist genaamd), geminificeerd en klaar voor productie. + +Instaleren met `npm`: +```shell +$ npm install requirejs -g +``` + +Nu kun je het een configuratiebestand voeden: +```shell +$ r.js -o app.build.js +``` + +Voor ons bovenstaande voorbeeld zou de configuratie er zo uit kunnen zien: +```javascript +/* file : app.build.js */ +({ + name : 'main', // naam van het beginpunt + out : 'main-built.js', // naam van het bestand waar de output naar geschreven wordt + baseUrl : 'app', + paths : { + // `empty:` verteld r.js dat dee nog steeds geladen moet worden van de CDN, + // gebruik makend van de locatie gespecificeert in `main.js` + jquery : 'empty:', + coolLibUitBower : '../bower_components/cool-lib/coollib' + } +}) +``` +Verwissel simpelweg `data-main` om het gebouwde bestand te gebruiken in productie: +```html + +``` + +Een erg gedetaileerd [overzicht van bouwopties](https://github.com/jrburke/r.js/blob/master/build/example.build.js) is +beschikbar in de GitHub repo (Engels). + +Hieronder vind je nog meer informatie over AMD (Engels). + +### Onderwerpen die niet aan bod zijn gekomen +* [Loader plugins / transforms](http://requirejs.org/docs/plugins.html) +* [CommonJS style loading and exporting](http://requirejs.org/docs/commonjs.html) +* [Advanced configuration](http://requirejs.org/docs/api.html#config) +* [Shim configuration (loading non-AMD modules)](http://requirejs.org/docs/api.html#config-shim) +* [CSS loading and optimizing with require.js](http://requirejs.org/docs/optimization.html#onecss) +* [Using almond.js for builds](https://github.com/jrburke/almond) + +### Verder lezen: + +* [Official Spec](https://github.com/amdjs/amdjs-api/wiki/AMD) +* [Why AMD?](http://requirejs.org/docs/whyamd.html) +* [Universal Module Definition](https://github.com/umdjs/umd) + +### Implementaties: + +* [require.js](http://requirejs.org) +* [dojo toolkit](http://dojotoolkit.org/documentation/tutorials/1.9/modules/) +* [cujo.js](http://cujojs.com/) +* [curl.js](https://github.com/cujojs/curl) +* [lsjs](https://github.com/zazl/lsjs) +* [mmd](https://github.com/alexlawrence/mmd) -- cgit v1.2.3 From 5aa692f5f3bbfa7b79224748dcfd8ca5fba7a8bc Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 12 Feb 2016 11:42:25 -0800 Subject: brainfuck->bf --- nl-nl/bf.html.markdown | 86 ++++++++++++++++++++++++++++++++++++++++ nl-nl/brainfuck-nl.html.markdown | 86 ---------------------------------------- 2 files changed, 86 insertions(+), 86 deletions(-) create mode 100644 nl-nl/bf.html.markdown delete mode 100644 nl-nl/brainfuck-nl.html.markdown (limited to 'nl-nl') diff --git a/nl-nl/bf.html.markdown b/nl-nl/bf.html.markdown new file mode 100644 index 00000000..016e2ba2 --- /dev/null +++ b/nl-nl/bf.html.markdown @@ -0,0 +1,86 @@ +--- +language: bf +contributors: + - ["Prajit Ramachandran", "http://prajitr.github.io/"] + - ["Mathias Bynens", "http://mathiasbynens.be/"] +translators: + - ["Jelle Besseling", "https://github.com/Jell-E"] +lang: nl-nl +--- + +Brainfuck (schrijf je niet met een hoofdletter behalve aan het begin van een +zin) is een extreem +minimalistische Turing-complete programmeertaal met maar acht commando's. + +``` +Elk karakter behalve "><+-.,[]" (en de quotes) wordt genegeerd. + +Brainfuck wordt gerepresenteerd door een array met 30.000 cellen die initieel +gevuld is met nullen en een pointer die wijst naar de huidige cel. + +Dit zijn de acht commando's: ++ : Verhoog de huidige cell met 1. +- : Verminder de huidige cell met 1. +> : Beweeg de pointer naar de volgende cell (één naar rechts). +< : Beweeg de pointer naar de vorige cell (één naar links). +. : Print de huidige cell als een ASCII karakter(d.w.z. 65 = 'A'). +, : Lees een karakter in de huidige cell. +[ : Als de huidige cell nul is ga dan naar de bijbehorende ] . + Als het geen nul is, ga dan gewoon verder. +] : Als de huidige cell nul is ga dan gewoon verder. + Als het geen nul is, ga dan terug naar de bijbehorende [ . + +[ en ] maken een while loop. Ze moeten uiteraard wel gebalanceerd zijn + +Laten we een kijkje nemen naar een paar brainfuck programma's. + +++++++ [ > ++++++++++ < - ] > +++++ . + +Dit programma print het karakter 'A'. Eerst verhoogt het cell #1 tot 6. +Cell #1 wordt gebruikt om te loopen. Dan begint het de loop ([) en gaat +naar cell #2. Het verhoogt cell #2 tien keer, gaat terug naar cell #1, en +verlaagt cell #1. Deze loop gebeurt zes keer (na zes keer staat cell #1 +weer op nul, waarna het doorgaat naar het einde van de loop (]) en +verder gaat). + +De pointer staat nu weer op cell #1, deze heeft een waarde van 0, en cell #2 +heeft een waarde van 60. > beweegt de pointer naar cell #2, daarna verhoogt +het de cell vijf keer, waardoor het een waarde van 65 bevat, en print dan +de waarde van cell #2. 65 is 'A' in ASCII, dus 'A' wordt geprint in de terminal. + + +, [ > + < - ] > . + +Dit programma leest een karakter van de gebruiker in put en kopieert dat +karakter in cel #1. Dan start de loop. Ga naar cel #2, verhoog de waarde in +cel #2, ga terug naar cel #1, en verklein de waarde in cel #1. Dit gaat door +totdat cel #1 nul is en cel #2 de oude waarde heeft van cell #1. Omdat we +op cel #1 staan verplaatst > de pointer één naar rechts en . print het +karakter in cel #2. + +Houd wel in gedachten dat de spaties alleen zijn voor leesbaarheid, je kan het +bovenstaande programma net zo goed schrijven als: + +,[>+<-]>. + +Probeer maar eens te bedenken wat het volgende programma doet: + +,>,< [ > [ >+ >+ << -] >> [- << + >>] <<< -] >> + +Dit programma neemt twee getallen als input, en vermenigvuldigt ze. + +In het begin leest het twee karakters in cel #1 en #2. Dan start het de +buitenste loop, met als teller cel #1. Het beweegt naar cel #2, dan start het +de binnenste loop met als teller cel #2, daar verhoogd het cel #3. Maar +dan is er een probleem als cel #2 nul wordt aan het einde van de binnenste loop. +Om dit op te lossen wordt ook cel #4 verhoogd naar het oorspronkelijke getal +uit cel #2 en daarna wordt cel #4 weer gekopieerd naar cell #2. +Het resultaat komt in cel #3 te staan. +``` + +En dat is dan brainfuck. Niet heel moeilijk, toch? Je kan zelf voor de lol +brainfuck programma's gaan schrijven, of je kan een interpreter schrijven +voor brainfuck in een andere taal. Het is namelijk redelijk makkelijk om te +implementeren aangezien brainfuck maar acht commando's heeft. En als je een +masochist bent kan je ook nog proberen om brainfuck te implementeren… in +brainfuck. diff --git a/nl-nl/brainfuck-nl.html.markdown b/nl-nl/brainfuck-nl.html.markdown deleted file mode 100644 index 6062b24c..00000000 --- a/nl-nl/brainfuck-nl.html.markdown +++ /dev/null @@ -1,86 +0,0 @@ ---- -language: brainfuck -contributors: - - ["Prajit Ramachandran", "http://prajitr.github.io/"] - - ["Mathias Bynens", "http://mathiasbynens.be/"] -translators: - - ["Jelle Besseling", "https://github.com/Jell-E"] -lang: nl-nl ---- - -Brainfuck (schrijf je niet met een hoofdletter behalve aan het begin van een -zin) is een extreem -minimalistische Turing-complete programmeertaal met maar acht commando's. - -``` -Elk karakter behalve "><+-.,[]" (en de quotes) wordt genegeerd. - -Brainfuck wordt gerepresenteerd door een array met 30.000 cellen die initieel -gevuld is met nullen en een pointer die wijst naar de huidige cel. - -Dit zijn de acht commando's: -+ : Verhoog de huidige cell met 1. -- : Verminder de huidige cell met 1. -> : Beweeg de pointer naar de volgende cell (één naar rechts). -< : Beweeg de pointer naar de vorige cell (één naar links). -. : Print de huidige cell als een ASCII karakter(d.w.z. 65 = 'A'). -, : Lees een karakter in de huidige cell. -[ : Als de huidige cell nul is ga dan naar de bijbehorende ] . - Als het geen nul is, ga dan gewoon verder. -] : Als de huidige cell nul is ga dan gewoon verder. - Als het geen nul is, ga dan terug naar de bijbehorende [ . - -[ en ] maken een while loop. Ze moeten uiteraard wel gebalanceerd zijn - -Laten we een kijkje nemen naar een paar brainfuck programma's. - -++++++ [ > ++++++++++ < - ] > +++++ . - -Dit programma print het karakter 'A'. Eerst verhoogt het cell #1 tot 6. -Cell #1 wordt gebruikt om te loopen. Dan begint het de loop ([) en gaat -naar cell #2. Het verhoogt cell #2 tien keer, gaat terug naar cell #1, en -verlaagt cell #1. Deze loop gebeurt zes keer (na zes keer staat cell #1 -weer op nul, waarna het doorgaat naar het einde van de loop (]) en -verder gaat). - -De pointer staat nu weer op cell #1, deze heeft een waarde van 0, en cell #2 -heeft een waarde van 60. > beweegt de pointer naar cell #2, daarna verhoogt -het de cell vijf keer, waardoor het een waarde van 65 bevat, en print dan -de waarde van cell #2. 65 is 'A' in ASCII, dus 'A' wordt geprint in de terminal. - - -, [ > + < - ] > . - -Dit programma leest een karakter van de gebruiker in put en kopieert dat -karakter in cel #1. Dan start de loop. Ga naar cel #2, verhoog de waarde in -cel #2, ga terug naar cel #1, en verklein de waarde in cel #1. Dit gaat door -totdat cel #1 nul is en cel #2 de oude waarde heeft van cell #1. Omdat we -op cel #1 staan verplaatst > de pointer één naar rechts en . print het -karakter in cel #2. - -Houd wel in gedachten dat de spaties alleen zijn voor leesbaarheid, je kan het -bovenstaande programma net zo goed schrijven als: - -,[>+<-]>. - -Probeer maar eens te bedenken wat het volgende programma doet: - -,>,< [ > [ >+ >+ << -] >> [- << + >>] <<< -] >> - -Dit programma neemt twee getallen als input, en vermenigvuldigt ze. - -In het begin leest het twee karakters in cel #1 en #2. Dan start het de -buitenste loop, met als teller cel #1. Het beweegt naar cel #2, dan start het -de binnenste loop met als teller cel #2, daar verhoogd het cel #3. Maar -dan is er een probleem als cel #2 nul wordt aan het einde van de binnenste loop. -Om dit op te lossen wordt ook cel #4 verhoogd naar het oorspronkelijke getal -uit cel #2 en daarna wordt cel #4 weer gekopieerd naar cell #2. -Het resultaat komt in cel #3 te staan. -``` - -En dat is dan brainfuck. Niet heel moeilijk, toch? Je kan zelf voor de lol -brainfuck programma's gaan schrijven, of je kan een interpreter schrijven -voor brainfuck in een andere taal. Het is namelijk redelijk makkelijk om te -implementeren aangezien brainfuck maar acht commando's heeft. En als je een -masochist bent kan je ook nog proberen om brainfuck te implementeren… in -brainfuck. -- cgit v1.2.3 From f3b10beb01795bf7513ec8d06c9e90ab98df7a83 Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 12 Feb 2016 23:04:31 -0800 Subject: Clean up various errors --- nl-nl/amd-nl.html.markdown | 235 --------------------------------------------- 1 file changed, 235 deletions(-) delete mode 100644 nl-nl/amd-nl.html.markdown (limited to 'nl-nl') diff --git a/nl-nl/amd-nl.html.markdown b/nl-nl/amd-nl.html.markdown deleted file mode 100644 index d5e0022a..00000000 --- a/nl-nl/amd-nl.html.markdown +++ /dev/null @@ -1,235 +0,0 @@ ---- -category: tool -tool: amd -contributors: - - ["Frederik Ring", "https://github.com/m90"] -translators: - - ["Reinoud Kruithof", "https://github.com/reinoudk"] -filename: learnamd-nl.js -lang: nl-nl ---- - -## Aan de slag met AMD - -De **Asynchronous Module Definition** API specificeert een mechanisme om JavaScript - modules the definiëren zodat de module en dependencies (afhankelijkheden) asynchroon - geladen kunnen worden. Dit is vooral erg geschikt voor de browseromgeving, waar het - synchroon laden van modules zorgt voor problemen qua prestatie, gebruiksvriendelijkheid, - debugging en cross-domain toegangsproblemen. - -### Basis concept -```javascript -// De basis AMD API bestaat uit niks meer dan twee methodes: `define` en `require` -// and gaat vooral over de definitie en gebruik van modules: -// `define(id?, dependencies?, factory)` definieert een module -// `require(dependencies, callback)` importeert een set van dependencies en -// gebruikt ze in de gegeven callback - -// Laten we starten met het gebruiken van define om een nieuwe module (met naam) -// te creëeren, welke geen dependencies heeft. Dit doen we door een naam -// en een zogeheten factory functie door te geven aan define: -define('awesomeAMD', function(){ - var isAMDAwesome = function(){ - return true; - }; - // De return waarde van een module's factory functie is - // wat andere modules of require calls ontvangen wanneer - // ze onze `awesomeAMD` module requiren. - // De geëxporteerde waarde kan van alles zijn: (constructor) functies, - // objecten, primitives, zelfs undefined (hoewel dat niet veel nut heeft). - return isAMDAwesome; -}); - - -// We gaan nu een andere module defineren die afhankelijk is van onze -// `awesomeAMD` module. Merk hierbij op dat er nu een extra functieargument -// is die de dependencies van onze module defineert: -define('schreewlelijk', ['awesomeAMD'], function(awesomeAMD){ - // dependencies worden naar de factory's functieargumenten - // gestuurd in de volgorde waarin ze gespecificeert zijn - var vertelIedereen = function(){ - if (awesomeAMD()){ - alert('Dit is zOoOo cool!'); - } else { - alert('Vrij saai, niet?'); - } - }; - return vertelIedereen; -}); - -// Nu we weten hoe we define moeten gebruiken, kunnen we require gebruiken -// om ons programma mee te starten. De vorm van `require` is -// `(arrayVanDependencies, callback)`. -require(['schreeuwlelijk'], function(schreewlelijk){ - schreeuwlelijk(); -}); - -// Om deze tutorial code uit te laten voeren, gaan we hier een vrij basic -// (niet-asynchrone) versie van AMD implementeren: -function define(naam, deps, factory){ - // merk op hoe modules zonder dependencies worden afgehandeld - define[naam] = require(factory ? deps : [], factory || deps); -} - -function require(deps, callback){ - var args = []; - // we halen eerst alle dependecies op die nodig zijn - // om require aan te roepen - for (var i = 0; i < deps.length; i++){ - args[i] = define[deps[i]]; - } - // voldoe aan alle dependencies van de callback - return callback.apply(null, args); -} -// je kan deze code hier in actie zien (Engels): http://jsfiddle.net/qap949pd/ -``` - -### require.js in de echte wereld - -In contrast met het voorbeeld uit de introductie, implementeert `require.js` - (de meest populaire AMD library) de **A** in **AMD**. Dit maakt het mogelijk - om je modules en hun dependencies asynchroon in the laden via XHR: - -```javascript -/* file: app/main.js */ -require(['modules/someClass'], function(SomeClass){ - // de callback word uitgesteld tot de dependency geladen is - var things = new SomeClass(); -}); -console.log('Dus, hier wachten we!'); // dit wordt als eerste uitgevoerd -``` - -De afspraak is dat je over het algemeen één module in één bestand opslaat. -`require.js` kan module-namen achterhalen gebaseerd op de bestandslocatie, -dus je hoeft je module geen naam te geven. Je kan simpelweg aan ze referen - door hun locatie te gebruiken. -In het voorbeeld nemen we aan dat `someClass` aanwezig is in de `modules` map, - relatief ten opzichte van de `baseUrl` uit je configuratie. - -* app/ - * main.js - * modules/ - * someClass.js - * someHelpers.js - * ... - * daos/ - * things.js - * ... - -Dit betekent dat we `someClass` kunnen defineren zonder een module-id te specificeren: - -```javascript -/* file: app/modules/someClass.js */ -define(['daos/things', 'modules/someHelpers'], function(thingsDao, helpers){ - // definitie van de module gebeurt, natuurlijk, ook asynchroon - function SomeClass(){ - this.method = function(){/**/}; - // ... - } - return SomeClass; -}); -``` -Gebruik `requirejs.config(configObj)` om het gedrag van de standaard mapping - aan te passen in je `main.js`: - -```javascript -/* file: main.js */ -requirejs.config({ - baseUrl : 'app', - paths : { - // je kan ook modules uit andere locatie inladen - jquery : '//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min', - coolLibUitBower : '../bower_components/cool-lib/coollib' - } -}); -require(['jquery', 'coolLibUitBower', 'modules/someHelpers'], function($, coolLib, helpers){ - // een `main` bestand moet require minstens eenmaal aanroepen, - // anders zal er geen code uitgevoerd worden - coolLib.doFancyDingenMet(helpers.transform($('#foo'))); -}); -``` -Op `require.js` gebaseerde apps hebben vaak een enkel beginpunt (`main.js`) - welke toegevoegd wordt aan de `require.js` script tag als een data-attribuut. -Deze zal automisch geladen en uitgevoerd worden als de pagina laadt: - -```html - - - - Honder script tags? Nooi meer! - - - - - -``` - -### Een heel project optimaliseren met r.js - -Veel mensen geven er de voorkeur aan om AMD te gebruiken tijdens de - ontwikkelfase om code op een gezonde manier te organiseren maar - willen nog steeds een enkel scriptbestand gebruiken in productie in - plaats van honderderen XHR verzoeken uit te voeren als de pagina laadt. - -`require.js` wordt geleverd met een script genaamd `r.js` (die je waarschijnlijk -uitvoert in node.js, hoewel Rhino ook ondersteund wordt) welke de -dependency book van je project analyseert en een enkel bestand bouwt met daarin -al je module (juist genaamd), geminificeerd en klaar voor productie. - -Instaleren met `npm`: -```shell -$ npm install requirejs -g -``` - -Nu kun je het een configuratiebestand voeden: -```shell -$ r.js -o app.build.js -``` - -Voor ons bovenstaande voorbeeld zou de configuratie er zo uit kunnen zien: -```javascript -/* file : app.build.js */ -({ - name : 'main', // naam van het beginpunt - out : 'main-built.js', // naam van het bestand waar de output naar geschreven wordt - baseUrl : 'app', - paths : { - // `empty:` verteld r.js dat dee nog steeds geladen moet worden van de CDN, - // gebruik makend van de locatie gespecificeert in `main.js` - jquery : 'empty:', - coolLibUitBower : '../bower_components/cool-lib/coollib' - } -}) -``` -Verwissel simpelweg `data-main` om het gebouwde bestand te gebruiken in productie: -```html - -``` - -Een erg gedetaileerd [overzicht van bouwopties](https://github.com/jrburke/r.js/blob/master/build/example.build.js) is -beschikbar in de GitHub repo (Engels). - -Hieronder vind je nog meer informatie over AMD (Engels). - -### Onderwerpen die niet aan bod zijn gekomen -* [Loader plugins / transforms](http://requirejs.org/docs/plugins.html) -* [CommonJS style loading and exporting](http://requirejs.org/docs/commonjs.html) -* [Advanced configuration](http://requirejs.org/docs/api.html#config) -* [Shim configuration (loading non-AMD modules)](http://requirejs.org/docs/api.html#config-shim) -* [CSS loading and optimizing with require.js](http://requirejs.org/docs/optimization.html#onecss) -* [Using almond.js for builds](https://github.com/jrburke/almond) - -### Verder lezen: - -* [Official Spec](https://github.com/amdjs/amdjs-api/wiki/AMD) -* [Why AMD?](http://requirejs.org/docs/whyamd.html) -* [Universal Module Definition](https://github.com/umdjs/umd) - -### Implementaties: - -* [require.js](http://requirejs.org) -* [dojo toolkit](http://dojotoolkit.org/documentation/tutorials/1.9/modules/) -* [cujo.js](http://cujojs.com/) -* [curl.js](https://github.com/cujojs/curl) -* [lsjs](https://github.com/zazl/lsjs) -* [mmd](https://github.com/alexlawrence/mmd) -- cgit v1.2.3 From c677a9fa9227db77158c4a1357e3a91261bbd8b6 Mon Sep 17 00:00:00 2001 From: Mathieu De Coster Date: Fri, 11 Mar 2016 15:27:03 +0100 Subject: Update json.html.markdown --- nl-nl/json.html.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'nl-nl') diff --git a/nl-nl/json.html.markdown b/nl-nl/json.html.markdown index a82f13c4..bedfb70a 100644 --- a/nl-nl/json.html.markdown +++ b/nl-nl/json.html.markdown @@ -1,6 +1,6 @@ --- language: json -filename: learnjson.json +filename: learnjson-nl.json contributors: - ["Anna Harren", "https://github.com/iirelu"] - ["Marco Scannadinari", "https://github.com/marcoms"] -- cgit v1.2.3