问:
How to stream webcam feed on web page using react js component?
I am new to reactJS and trying to build a component.

I want to build a basic utility where I have a video component that shows live webcam feed and there would be a capture button, to capture and store a snap of the feed to disk. I want it to be in a single component ( video feed + capture button)

This code streams the feed in browser but I want it in a component,

```<code><body>
<div id="container">
    <video autoplay="true" id="videoElement">

    </video>
</div>
<script>
 var video = document.querySelector("#videoElement");

navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia || navigator.oGetUserMedia;

if (navigator.getUserMedia) {
    navigator.getUserMedia({video: true}, handleVideo, videoError);
}

function handleVideo(stream) {
    video.src = window.URL.createObjectURL(stream);
}

function videoError(e) {}
</script>
</body>
</html>
</code>```

This works fine, but not it's not a component.

I tried following in reaact js but it's not working:

```<code><body>
    <div id="container">

    </div>
    <script type="text/jsx">
        var MyComponent = React.createClass({
            handleVideo: function(stream) {
                video.src = window.URL.createObjectURL(stream);
            },
            videoError: function() {

            },
            render: function() {

            var video = document.querySelector("#videoElement");

            navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia || navigator.oGetUserMedia;

            if (navigator.getUserMedia) {
                navigator.getUserMedia({video: true}, this.handleVideo, this.videoError);
            }
                return <div>
                        <video autoplay="true" id="videoElement">
                        </video>
                       </div>;
            }
        });
    React.render( <MyComponent />, document.getElementById('container'));
    </script>
    </body>
</code>```

The error is in handleVideo()

ReferenceError: video is not defined.

My understanding of error is,

since the video tag is coming in later part(in return), it's trying to use before the definition in handleVideo function.
i am confused how to make this work.

Thank you!

答:
You can make use of react-webcam. follow the link below, it already has a "getScreenshot" function which returns the base64 encoded picture of the current frame from the webcam.

https://www.npmjs.com/package/react-webcam

```<code>const WebcamCapture = () => {
  const webcamRef = React.useRef(null);
  const [imgSrc, setimgSrc] = React.useState(null);

  const capture = React.useCallback(
    () => {
      const imageSrc = webcamRef.current.getScreenshot();
      setimgSrc(imageSrc);

    },
    [webcamRef,setimgSrc]
  );

  return (
    <div>
      <Webcam
        audio={false}
        height={720}
        ref={webcamRef}
        screenshotFormat="image/jpeg"
        width={1280}
      />
      <button onClick={capture}>Capture photo</button>
      {imgSrc && (<img src = {imgSrc}/>) }
    </div>
  );
};
</code>```

Happy to help!

Body:
I am new to reactJS and trying to build a component.

I want to build a basic utility where I have a video component that shows live webcam feed and there would be a capture button, to capture and store a snap of the feed to disk. I want it to be in a single component ( video feed + capture button)

This code streams the feed in browser but I want it in a component,

    <video autoplay="true" id="videoElement">

    </video>

This works fine, but not it's not a component.

I tried following in reaact js but it's not working:

The error is in handleVideo()

ReferenceError: video is not defined.

My understanding of error is,

since the video tag is coming in later part(in return), it's trying to use before the definition in handleVideo function.
i am confused how to make this work.

Thank you!

Body:
You can make use of react-webcam. follow the link below, it already has a "getScreenshot" function which returns the base64 encoded picture of the current frame from the webcam.

https://www.npmjs.com/package/react-webcam

const WebcamCapture = () => {
  const webcamRef = React.useRef(null);
  const [imgSrc, setimgSrc] = React.useState(null);

  const capture = React.useCallback(
    () => {
      const imageSrc = webcamRef.current.getScreenshot();
      setimgSrc(imageSrc);

    },
    [webcamRef,setimgSrc]
  );

  return (
    <div>
      <Webcam
        audio={false}
        height={720}
        ref={webcamRef}
        screenshotFormat="image/jpeg"
        width={1280}
      />
      <button onClick={capture}>Capture photo</button>
      {imgSrc && (<img src = {imgSrc}/>) }
    </div>
  );
};

Happy to help!


来源: stackexchange

问:
Unable to deploy React project using XAMPP
How can I build my project so I can put it wherever I want? For example, I would love to see it on, if it's possible, XAMPP?

Whenever I build my react app, index.html is empty.

Here is the whole project on GitHub: https://github.com/slabys/reacty.git

Whenever I use npm run build, my folder build is created with all the content:

index.html from build: https://pastebin.com/WSyAvrwu

package.json

```<code>    {
  "name": "my_react",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@stardust-ui/docs-components": "^0.40.0",
    "@testing-library/jest-dom": "^4.2.4",
    "@testing-library/react": "^9.5.0",
    "@testing-library/user-event": "^7.2.1",
    "bootstrap": "^4.5.0",
    "browser-sync": "^2.26.7",
    "del": "^5.1.0",
    "express": "^4.17.1",
    "express-favicon": "^2.0.1",
    "gulp-autoprefixer": "^7.0.1",
    "gulp-concat": "^2.6.1",
    "gulp-copy": "^4.0.1",
    "gulp-data": "^1.3.1",
    "gulp-plumber": "^1.2.1",
    "gulp-sourcemaps": "^2.6.5",
    "gulp-twig": "^1.2.0",
    "prettier": "^1.4.2",
    "react": "^16.13.1",
    "react-dom": "^16.13.1",
    "react-router": "^5.2.0",
    "react-router-dom": "^5.2.0",
    "react-scripts": "3.4.1",
    "react-sidebar": "^3.0.2"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "description": "This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).",
  "main": "index.js",
  "devDependencies": {
    "@craco/craco": "^5.6.4",
    "@semantic-ui-react/craco-less": "^1.2.1",
    "gulp": "^4.0.2",
    "gulp-sass": "^4.1.0",
    "node-sass": "^4.14.1",
    "semantic-ui-less": "^2.4.1"
  },
  "author": "slabys",
  "license": "ISC",
  "repository": {
    "type": "git",
    "url": "react"
  },
  "optionalDependencies": {}
}
</code>```

答:
Problem solved!

All works fine. Just when I have this projects build in XAMPP htdocs, I put in into a folder. So after moving files from folder directly under localhost EVERYTHING started to work.

ContentLicense: CC BY-SA 4.0

Body:
How can I build my project so I can put it wherever I want? For example, I would love to see it on, if it's possible, XAMPP?

Whenever I build my react app, index.html is empty.

Here is the whole project on GitHub: https://github.com/slabys/reacty.git

Whenever I use npm run build, my folder build is created with all the content:

index.html from build: https://pastebin.com/WSyAvrwu

package.json

    {
  "name": "my_react",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@stardust-ui/docs-components": "^0.40.0",
    "@testing-library/jest-dom": "^4.2.4",
    "@testing-library/react": "^9.5.0",
    "@testing-library/user-event": "^7.2.1",
    "bootstrap": "^4.5.0",
    "browser-sync": "^2.26.7",
    "del": "^5.1.0",
    "express": "^4.17.1",
    "express-favicon": "^2.0.1",
    "gulp-autoprefixer": "^7.0.1",
    "gulp-concat": "^2.6.1",
    "gulp-copy": "^4.0.1",
    "gulp-data": "^1.3.1",
    "gulp-plumber": "^1.2.1",
    "gulp-sourcemaps": "^2.6.5",
    "gulp-twig": "^1.2.0",
    "prettier": "^1.4.2",
    "react": "^16.13.1",
    "react-dom": "^16.13.1",
    "react-router": "^5.2.0",
    "react-router-dom": "^5.2.0",
    "react-scripts": "3.4.1",
    "react-sidebar": "^3.0.2"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "description": "This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).",
  "main": "index.js",
  "devDependencies": {
    "@craco/craco": "^5.6.4",
    "@semantic-ui-react/craco-less": "^1.2.1",
    "gulp": "^4.0.2",
    "gulp-sass": "^4.1.0",
    "node-sass": "^4.14.1",
    "semantic-ui-less": "^2.4.1"
  },
  "author": "slabys",
  "license": "ISC",
  "repository": {
    "type": "git",
    "url": "react"
  },
  "optionalDependencies": {}
}


问:
Command error "amplify configure" : installation error aws amplify
I tried to install aws amplify.  But when I typed those commands in cmd window
then an error message came out.

```<code>>amplify configure

"amplify" is not an internal or external command .....
</code>```

In this case, what should I do?
--I'm using Windows10

答:
You need to install Amplify CLI and configure it first.

Install Node.js in your system

Install amplify cli using the command

```<code>npm install -g @aws-amplify/cli
</code>```

Body:
I tried to install aws amplify.  But when I typed those commands in cmd window
then an error message came out.

>amplify configure

"amplify" is not an internal or external command .....

In this case, what should I do?
--I'm using Windows10

Body:
You need to install Amplify CLI and configure it first.

Install Node.js in your system

Install amplify cli using the command

npm install -g @aws-amplify/cli


问:
for and while loop combined
I'm trying to add a while for my question list of constructs. I want python to only allow answers like "helemaal mee oneens, mee oneens, etc).
I understand how I make this with simple code. But I don't know how I can make all those questions only accept input from the answers I want.
There is raw input, so people have to be able to type their answer. I tried this:

```<code>for Vragenlijst_vriendelijkheid in (list(range(0,8))):
 while Vragenlijst_vriendelijkheid (list(range(0,8))) != "Helemaal niet mee eens" and != "Niet mee eens" and != "Neutraal" and != "Mee eens" and != "Helemaal mee eens":
   print ("Let op: deze vragen zijn hoofdletter gevoelig, elk antwoord dient precies overgenomen te worden.")
</code>```

That didn't work out quite well.. It just printed a lot of "het programma is hoofdletter gevoelig. Er dient niet met hoofdletters geschreven te worden." Can anybody help me?
I'm not good at programming, i have to do this for a school assignment and i really don't get it..

```<code>while Welk_construct != "vriendelijkheid" and Welk_construct != "emotionele stabiliteit" and Welk_construct != "extraversie" and Welk_construct != "consciëntieusheid" and Welk_construct != "autonomie":
  print ("Let op: het programma is hoofdletter gevoelig. Er dient niet met hoofdletters geschreven te worden.")
  Welk_construct = input ("Welk construct wilt je meten? Typ hier een van de vijf constructen.")
  if Welk_construct == ("vriendelijkheid"):
     Antwoord_V1 = input (Vragenlijst_vriendelijkheid [0])
     Antwoord_V2 = input (Vragenlijst_vriendelijkheid [1])
     Antwoord_V3 = input (Vragenlijst_vriendelijkheid [2])
     Antwoord_V4 = input (Vragenlijst_vriendelijkheid [3])
     Antwoord_V5 = input (Vragenlijst_vriendelijkheid [4])
     Antwoord_V6 = input (Vragenlijst_vriendelijkheid [5])
     Antwoord_V7 = input (Vragenlijst_vriendelijkheid [6])
     Antwoord_V8 = input (Vragenlijst_vriendelijkheid [7])
  elif Welk_construct == ("consciëntieusheid"):
     Antwoord_C1 = input (Vragenlijst_consciëntieusheid [0])
     Antwoord_C2 = input (Vragenlijst_consciëntieusheid [1])
     Antwoord_C3 = input (Vragenlijst_consciëntieusheid [2])
     Antwoord_C4 = input (Vragenlijst_consciëntieusheid [3])
     Antwoord_C5 = input (Vragenlijst_consciëntieusheid [4])
     Antwoord_C6 = input (Vragenlijst_consciëntieusheid [5])
     Antwoord_C7 = input (Vragenlijst_consciëntieusheid [6])
     Antwoord_C8 = input (Vragenlijst_consciëntieusheid [7])
  elif Welk_construct == ("autonomie"):
     Antwoord_A1 = input (Vragenlijst_autonomie [0])
     Antwoord_A2 = input (Vragenlijst_autonomie [1])
     Antwoord_A3 = input (Vragenlijst_autonomie [2])
     Antwoord_A4 = input (Vragenlijst_autonomie [3])
     Antwoord_A5 = input (Vragenlijst_autonomie [4])
     Antwoord_A6 = input (Vragenlijst_autonomie [5])
     Antwoord_A7 = input (Vragenlijst_autonomie [6])
     Antwoord_A8 = input (Vragenlijst_autonomie [7])
  elif Welk_construct == ("extraversie"):
     Antwoord_E1 = input (Vragenlijst_extraversie [0])
     Antwoord_E2 = input (Vragenlijst_extraversie [1])
     Antwoord_E3 = input (Vragenlijst_extraversie [2])
     Antwoord_E4 = input (Vragenlijst_extraversie [3])
     Antwoord_E5 = input (Vragenlijst_extraversie [4])
     Antwoord_E6 = input (Vragenlijst_extraversie [5])
     Antwoord_E7 = input (Vragenlijst_extraversie [6])
     Antwoord_E8 = input (Vragenlijst_extraversie [7])
  elif Welk_construct == ("emotionele stabiliteit"):
     Antwoord_ES1 = input (Vragenlijst_emotionele_stabiliteit [0])
     Antwoord_ES2 = input (Vragenlijst_emotionele_stabiliteit [1])
     Antwoord_ES3 = input (Vragenlijst_emotionele_stabiliteit [2])
     Antwoord_ES4 = input (Vragenlijst_emotionele_stabiliteit [3])
     Antwoord_ES5 = input (Vragenlijst_emotionele_stabiliteit [4])
     Antwoord_ES6 = input (Vragenlijst_emotionele_stabiliteit [5])
     Antwoord_ES7 = input (Vragenlijst_emotionele_stabiliteit [6])
     Antwoord_ES8 = input (Vragenlijst_emotionele_stabiliteit [7])
</code>```

this is the whole file:

```<code># antwoorden demografische vragen
Naam = ("onbekend")
Geslacht = ("onbekend")
Leeftijd = ("onbekend")

# overige vragen
Welk_construct = ("onbekend")
Nog_een = ("onbekend")

# antwoorden Vragenlijst_vriendelijkheid
Antwoord_V1 = ("onbekend")
Antwoord_V2 = ("onbekend")
Antwoord_V3 = ("onbekend")
Antwoord_V4 = ("onbekend")
Antwoord_V5 = ("onbekend")
Antwoord_V6 = ("onbekend")
Antwoord_V7 = ("onbekend")
Antwoord_V8 = ("onbekend")

# antwoorden Vragenlijst_consiëntieusheid
Antwoord_C1 = ("onbekend")
Antwoord_C2 = ("onbekend")
Antwoord_C3 = ("onbekend")
Antwoord_C4 = ("onbekend")
Antwoord_C5 = ("onbekend")
Antwoord_C6 = ("onbekend")
Antwoord_C7 = ("onbekend")
Antwoord_C8 = ("onbekend")

# antwoorden Vragenlijst_autonomie
Antwoord_A1 = ("onbekend")
Antwoord_A2 = ("onbekend")
Antwoord_A3 = ("onbekend")
Antwoord_A4 = ("onbekend")
Antwoord_A5 = ("onbekend")
Antwoord_A6 = ("onbekend")
Antwoord_A7 = ("onbekend")
Antwoord_A8 = ("onbekend")

# antwoorden Vragenlijst_extraversie
Antwoord_E1 = ("onbekend")
Antwoord_E2 = ("onbekend")
Antwoord_E3 = ("onbekend")
Antwoord_E4 = ("onbekend")
Antwoord_E5 = ("onbekend")
Antwoord_E6 = ("onbekend")
Antwoord_E7 = ("onbekend")
Antwoord_E8 = ("onbekend")

# antwoorden Vragenijst_emotionele_stabiliteit
Antwoord_ES1 = ("onbekend")
Antwoord_ES2 = ("onbekend")
Antwoord_ES3 = ("onbekend")
Antwoord_ES4 = ("onbekend")
Antwoord_ES5 = ("onbekend")
Antwoord_ES6 = ("onbekend")
Antwoord_ES7 = ("onbekend")
Antwoord_ES8 = ("onbekend")

# vragenlijsten

Demografische_vragen = (["Wat is uw naam? Typ hier uw naam.", "Wat is uw geslacht? Typ hier Man, Vrouw of Anders.", "Wat is uw leeftijd? Typ hier uw leeftijd in jaren."])

Vragenlijst_vriendelijkheid = (["Vraag V1: Ik heb vertrouwen in anderen. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", " Vraag V2: Ik gebruik en manipuleer anderen om mijn zin te krijgen. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag V3: Ik help anderen graag. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraaga V4: Ik hou van strijd en een stevige discussie. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag V5: Ik vind mezelf beter dan anderen. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag V6: Ik heb medelijden met daklozen. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag V7: Ik denk dat mensen in principe goede bedoelingen hebben. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag V8: Ik vind het niet erg om te bedriegen om hogerop te komen. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens."])

Vragenlijst_consciëntieusheid = (["Vraag C1: Ik breng taken tot een goed einde. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C2: Ik hou niet van wandorde en ruim graag op. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C3: Ik hou mijn beloftes. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C4: Ik ben een harde werker. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C5: Ik ben altijd voorbereid. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C6: Ik ben erg spontaan en reageer zonder na te denken. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C7: Ik doe de dingen die k doe altijd goed. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C8: Ik vergeet vaak dingen op de juiste plaats terug te leggen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens."])

Vragenlijst_autonomie = (["Vraag A1: Ik heb een levendige fantasie. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A2: Ik vind kunst belangrijk. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A3: Ik ervaar sterke en gevarieerde emoties. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A4: Ik verkies afwisseling oven routine. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A5: Ik lees graag uitdagende boeken en artikelen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A6: Ik verkies politiek die voor verandering is en progressief. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A7: Ik laat mijn verbeelding graag de vrije loop. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A8: Ik zie de schoonheid van dingen die anderen niet opvallen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens."])

Vragenlijst_extraversie = (["Vraag E1: Ik maak gemakkelijk vrienden. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E2: Ik hou van grote feesten en bijeenkomsten. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E3: Ik neem graag de leiding in situaties en bij gebeurtenissen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E4: Ik heb moeite om anderen te benaderen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E5: Ik hou van opwinding en spanning. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E6: Ik ben een heel vrolijk persoon. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E7: Ik voel me op mijn gemak bij andere mensen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E8: Ik praat met veel verschillende mensen op feestjes. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens."])

Vragenlijst_emotionele_stabiliteit = (["Vraag ES1: Ik maak me veel zorgen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES2: Ik word snel boos. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES3: Ik voel me vaak verdrietig. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES4: Ik laat me regelmatig gaan wat betreft genieten. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES5: Ik ben snel in paniek. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES6: Ik vrees vaak het ergste.  Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES7: Ik ben altijd bezig en druk met dingen.  Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES8: Ik raak snel geïrriteerd.  Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens." ])

# demografische vragen
print ("Hallo! Voordat we met de vragenlijst gaan beginnen, komen er een paar vragen over u. Zo kunnen we uw gegevens het best verwerken.")
Naam = input (Demografische_vragen [0])

while Geslacht != "Man" and Geslacht != "man" and Geslacht != "Vrouw"  and Geslacht != "vrouw"and Geslacht != "Anders" and Geslacht != "anders":
  Geslacht = input (Demografische_vragen [1])

invalide = True
while invalide:
  Leeftijd = int (input (Demografische_vragen [2]))
  if Leeftijd >=16 and Leeftijd <=99:
    invalide= False
  else:
    print ("Sorry" ,(Naam),", je moet tussen de 16 en 99 zijn")

# intro vragenlijst
print ("Welkom" ,(Naam),", je gaat nu een vragenlijst invullen voor één van de Big Five persoonijkheidstrekken.")
print ("Elk onderdeel heeft 8 vragen. Deze zullen ongeveer 2 minuten duren.")
print ("Je kunt kiezen uit: vriendelijkheid, emotionele stabiliteit, extraversie, consciëntieusheid en autonomie")

# Welk construct wil je meten
while Welk_construct != "vriendelijkheid" and Welk_construct != "emotionele stabiliteit" and Welk_construct != "extraversie" and Welk_construct != "consciëntieusheid" and Welk_construct != "autonomie":
  print ("Let op: het programma is hoofdletter gevoelig. Er dient niet met hoofdletters geschreven te worden.")
  Welk_construct = input ("Welk construct wilt je meten? Typ hier een van de vijf constructen.")
  if Welk_construct == ("vriendelijkheid"):
     Antwoord_V1 = input (Vragenlijst_vriendelijkheid [0])
     Antwoord_V2 = input (Vragenlijst_vriendelijkheid [1])
     Antwoord_V3 = input (Vragenlijst_vriendelijkheid [2])
     Antwoord_V4 = input (Vragenlijst_vriendelijkheid [3])
     Antwoord_V5 = input (Vragenlijst_vriendelijkheid [4])
     Antwoord_V6 = input (Vragenlijst_vriendelijkheid [5])
     Antwoord_V7 = input (Vragenlijst_vriendelijkheid [6])
     Antwoord_V8 = input (Vragenlijst_vriendelijkheid [7])
  elif Welk_construct == ("consciëntieusheid"):
     Antwoord_C1 = input (Vragenlijst_consciëntieusheid [0])
     Antwoord_C2 = input (Vragenlijst_consciëntieusheid [1])
     Antwoord_C3 = input (Vragenlijst_consciëntieusheid [2])
     Antwoord_C4 = input (Vragenlijst_consciëntieusheid [3])
     Antwoord_C5 = input (Vragenlijst_consciëntieusheid [4])
     Antwoord_C6 = input (Vragenlijst_consciëntieusheid [5])
     Antwoord_C7 = input (Vragenlijst_consciëntieusheid [6])
     Antwoord_C8 = input (Vragenlijst_consciëntieusheid [7])
  elif Welk_construct == ("autonomie"):
     Antwoord_A1 = input (Vragenlijst_autonomie [0])
     Antwoord_A2 = input (Vragenlijst_autonomie [1])
     Antwoord_A3 = input (Vragenlijst_autonomie [2])
     Antwoord_A4 = input (Vragenlijst_autonomie [3])
     Antwoord_A5 = input (Vragenlijst_autonomie [4])
     Antwoord_A6 = input (Vragenlijst_autonomie [5])
     Antwoord_A7 = input (Vragenlijst_autonomie [6])
     Antwoord_A8 = input (Vragenlijst_autonomie [7])
  elif Welk_construct == ("extraversie"):
     Antwoord_E1 = input (Vragenlijst_extraversie [0])
     Antwoord_E2 = input (Vragenlijst_extraversie [1])
     Antwoord_E3 = input (Vragenlijst_extraversie [2])
     Antwoord_E4 = input (Vragenlijst_extraversie [3])
     Antwoord_E5 = input (Vragenlijst_extraversie [4])
     Antwoord_E6 = input (Vragenlijst_extraversie [5])
     Antwoord_E7 = input (Vragenlijst_extraversie [6])
     Antwoord_E8 = input (Vragenlijst_extraversie [7])
  elif Welk_construct == ("emotionele stabiliteit"):
     Antwoord_ES1 = input (Vragenlijst_emotionele_stabiliteit [0])
     Antwoord_ES2 = input (Vragenlijst_emotionele_stabiliteit [1])
     Antwoord_ES3 = input (Vragenlijst_emotionele_stabiliteit [2])
     Antwoord_ES4 = input (Vragenlijst_emotionele_stabiliteit [3])
     Antwoord_ES5 = input (Vragenlijst_emotionele_stabiliteit [4])
     Antwoord_ES6 = input (Vragenlijst_emotionele_stabiliteit [5])
     Antwoord_ES7 = input (Vragenlijst_emotionele_stabiliteit [6])
     Antwoord_ES8 = input (Vragenlijst_emotionele_stabiliteit [7])

# wil je nog een construct meten?
while Nog_een != "ja" and Nog_een != "nee":
 print ("Let op: het antwoord moet expliciet ja of nee zijn en het programma is hoofdlettergevoelig.")
 Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")

# Nee
 if Nog_een == "nee":
  print ("Bedankt voor je deelname!")

 # ja
 if Nog_een == "ja":
     Welk_construct = input ("Welk construct wilt je meten? Typ hier een van de vijf constructen.")
     while Welk_construct != "vriendelijkheid" and Welk_construct != "emotionele stabiliteit" and Welk_construct != "extraversie" and Welk_construct != "consciëntieusheid" and Welk_construct != "autonomie":
      print ("Let op: het programma is hoofdletter gevoelig. Er dient niet met hoofdletters geschreven te worden.")
      Welk_construct = input ("Welk construct wilt je meten? Typ hier een van de vijf constructen.")
     if Welk_construct == ("vriendelijkheid"):
        Antwoord_V1 = input (Vragenlijst_vriendelijkheid [0])
        Antwoord_V2 = input (Vragenlijst_vriendelijkheid [1])
        Antwoord_V3 = input (Vragenlijst_vriendelijkheid [2])
        Antwoord_V4 = input (Vragenlijst_vriendelijkheid [3])
        Antwoord_V5 = input (Vragenlijst_vriendelijkheid [4])
        Antwoord_V6 = input (Vragenlijst_vriendelijkheid [5])
        Antwoord_V7 = input (Vragenlijst_vriendelijkheid [6])
        Antwoord_V8 = input (Vragenlijst_vriendelijkheid [7])
        Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")
        if Nog_een == "nee":
         print ("Bedankt voor je deelname!")
     elif Welk_construct == ("consciëntieusheid"):
        Antwoord_C1 = input (Vragenlijst_consciëntieusheid [0])
        Antwoord_C2 = input (Vragenlijst_consciëntieusheid [1])
        Antwoord_C3 = input (Vragenlijst_consciëntieusheid [2])
        Antwoord_C4 = input (Vragenlijst_consciëntieusheid [3])
        Antwoord_C5 = input (Vragenlijst_consciëntieusheid [4])
        Antwoord_C6 = input (Vragenlijst_consciëntieusheid [5])
        Antwoord_C7 = input (Vragenlijst_consciëntieusheid [6])
        Antwoord_C8 = input (Vragenlijst_consciëntieusheid [7])
        Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")
        if Nog_een == "nee":
         print ("Bedankt voor je deelname!")
     elif Welk_construct == ("autonomie"):
        Antwoord_A1 = input (Vragenlijst_autonomie [0])
        Antwoord_A2 = input (Vragenlijst_autonomie [1])
        Antwoord_A3 = input (Vragenlijst_autonomie [2])
        Antwoord_A4 = input (Vragenlijst_autonomie [3])
        Antwoord_A5 = input (Vragenlijst_autonomie [4])
        Antwoord_A6 = input (Vragenlijst_autonomie [5])
        Antwoord_A7 = input (Vragenlijst_autonomie [6])
        Antwoord_A8 = input (Vragenlijst_autonomie [7])
        Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")
        if Nog_een == "nee":
         print ("Bedankt voor je deelname!")
     elif Welk_construct == ("extraversie"):
        Antwoord_E1 = input (Vragenlijst_extraversie [0])
        Antwoord_E2 = input (Vragenlijst_extraversie [1])
        Antwoord_E3 = input (Vragenlijst_extraversie [2])
        Antwoord_E4 = input (Vragenlijst_extraversie [3])
        Antwoord_E5 = input (Vragenlijst_extraversie [4])
        Antwoord_E6 = input (Vragenlijst_extraversie [5])
        Antwoord_E7 = input (Vragenlijst_extraversie [6])
        Antwoord_E8 = input (Vragenlijst_extraversie [7])
        Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")
        if Nog_een == "nee":
         print ("Bedankt voor je deelname!")
     elif Welk_construct == ("emotionele stabiliteit"):
        Antwoord_ES1 = input (Vragenlijst_emotionele_stabiliteit [0])
        Antwoord_ES2 = input (Vragenlijst_emotionele_stabiliteit [1])
        Antwoord_ES3 = input (Vragenlijst_emotionele_stabiliteit [2])
        Antwoord_ES4 = input (Vragenlijst_emotionele_stabiliteit [3])
        Antwoord_ES5 = input (Vragenlijst_emotionele_stabiliteit [4])
        Antwoord_ES6 = input (Vragenlijst_emotionele_stabiliteit [5])
        Antwoord_ES7 = input (Vragenlijst_emotionele_stabiliteit [6])
        Antwoord_ES8 = input (Vragenlijst_emotionele_stabiliteit [7])
        Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")
        if Nog_een == "nee":
         print ("Bedankt voor je deelname!")

# opslaan antwoorden
antwoorden_demografische_vragen = [Naam, Leeftijd, Geslacht]
antwoorden_vriendelijkheid = [Antwoord_V1, Antwoord_V2, Antwoord_V3, Antwoord_V4, Antwoord_V5, Antwoord_V6, Antwoord_V7, Antwoord_V8]
antwoorden_consciëntieusheid = [Antwoord_C1, Antwoord_C2, Antwoord_C3, Antwoord_C4, Antwoord_C5, Antwoord_C6, Antwoord_C7, Antwoord_C8]
antwoorden_autonomie = [Antwoord_A1, Antwoord_A2, Antwoord_A3, Antwoord_A4, Antwoord_A5, Antwoord_A6, Antwoord_A7, Antwoord_A8]
antwoorden_extraversie = [Antwoord_E1, Antwoord_E2, Antwoord_E3, Antwoord_E4, Antwoord_E5, Antwoord_E6, Antwoord_E7, Antwoord_E8]
antwoorden_emotionele_stabiliteit = [Antwoord_ES1, Antwoord_ES2, Antwoord_ES3, Antwoord_ES4, Antwoord_ES5, Antwoord_ES6, Antwoord_ES7, Antwoord_ES8, ]

data = open("antwoorden vragenijst", "a")
data.writelines(str(antwoorden_demografische_vragen) + "\n")
data.writelines(str(antwoorden_vriendelijkheid) + "\n")
data.writelines(str(antwoorden_consciëntieusheid) + "\n")
data.writelines(str(antwoorden_autonomie) + "\n")
data.writelines(str(antwoorden_extraversie) + "\n")
data.writelines(str(antwoorden_extraversie) + "\n")
data.writelines(str(antwoorden_emotionele_stabiliteit) + "\n")
data.close()
</code>```

答:
I wish I spoke Dutch so I could understand this code well enough to be able to show you exactly how to write it more simply (I see enough copy+paste in here that I think you could shrink it down to about 1/20th of its current size), but I suspect it'd come out illegible due to the spoken language barrier, so I'll have to give general tips instead.  :)

In general, any time you find yourself doing something like this:

```<code>  if Welk_construct == ("vriendelijkheid"):
     Antwoord_V1 = input (Vragenlijst_vriendelijkheid [0])
     Antwoord_V2 = input (Vragenlijst_vriendelijkheid [1])
     Antwoord_V3 = input (Vragenlijst_vriendelijkheid [2])
     Antwoord_V4 = input (Vragenlijst_vriendelijkheid [3])
     Antwoord_V5 = input (Vragenlijst_vriendelijkheid [4])
     Antwoord_V6 = input (Vragenlijst_vriendelijkheid [5])
     Antwoord_V7 = input (Vragenlijst_vriendelijkheid [6])
     Antwoord_V8 = input (Vragenlijst_vriendelijkheid [7])
</code>```

you don't want to have 8 different named strings, you want to just have a list of 8 strings:

```<code>  if Welk_construct == ("vriendelijkheid"):
     antwoord = [input(question) for question in Vragenlijst_vriendelijkheid]
</code>```

If you want to validate that input matches a certain set of words, you can use an actual set.  You can also use functions like lower() to get rid of case differences.  So this:

```<code>while Geslacht != "Man" and Geslacht != "man" and Geslacht != "Vrouw"  and Geslacht != "vrouw"and Geslacht != "Anders" and Geslacht != "anders":
  Geslacht = input (Demografische_vragen [1])
</code>```

can be written much more briefly as:

```<code>while Geslacht.lower() not in {"man", "vrouw", "anders"}:
  Geslacht = input(Demografische_vragen[1])
</code>```

Another way to validate input as fitting a certain pattern is to use an Enum:

```<code>from enum import Enum
class Geslacht(Enum):
    MAN = "man"
    VROUW = "vrouw"
    ANDERS = "anders"

while True:
    try:
        geslacht = Geschlact(input(Demografische_vragen[1]))
    except ValueError as error:
        # the loop will continue and try again
        print(error)
    else:
        # geslacht is now guaranteed to be a valid Geslacht enum value
        break
</code>```

The benefit of using an Enum is that if you typo the string somewhere, you'll get an immediate error.  If you use an IDE, enums will also autocomplete nicely (since the IDE can see the enum definition, as soon as you start typing Geslacht. it'll show you a list of all the valid values), and if you use mypy, you can have full confidence that you're always getting a valid value of a particular type, even without having to run the code and test it.

In this particular loop:

```<code>for Vragenlijst_vriendelijkheid in (list(range(0,8))):
 while Vragenlijst_vriendelijkheid (list(range(0,8))) != "Helemaal niet mee eens" and != "Niet mee eens" and != "Neutraal" and != "Mee eens" and != "Helemaal mee eens":
   print ("Let op: deze vragen zijn hoofdletter gevoelig, elk antwoord dient precies overgenomen te worden.")
</code>```

you're reassigning Vragenlijst_vriendelijkheid, which I don't think you want to do (that's your question list, right)?  I think you might want to do something more like:

```<code>for question in Vragenlijst_vriendelijkheid:
    if question not in {
        "Helemaal niet mee eens",
        "Niet mee eens",
        "Neutraal",
        "Mee eens",
        "Helemaal mee eens"
    }:
        print("Let op: deze vragen zijn hoofdletter gevoelig, "
              "elk antwoord dient precies overgenomen te worden.")
</code>```

but I don't actually know what this loop is supposed to be doing so I'm not sure how much closer that gets you.  (Should it be iterating over the answers instead?  If so, it's extra important to be putting your answers into a list instead of eight differently-named variables!)

Title: for and while loop combined

Body:
I'm trying to add a while for my question list of constructs. I want python to only allow answers like "helemaal mee oneens, mee oneens, etc).
I understand how I make this with simple code. But I don't know how I can make all those questions only accept input from the answers I want.
There is raw input, so people have to be able to type their answer. I tried this:

for Vragenlijst_vriendelijkheid in (list(range(0,8))):
 while Vragenlijst_vriendelijkheid (list(range(0,8))) != "Helemaal niet mee eens" and != "Niet mee eens" and != "Neutraal" and != "Mee eens" and != "Helemaal mee eens":
   print ("Let op: deze vragen zijn hoofdletter gevoelig, elk antwoord dient precies overgenomen te worden.")

That didn't work out quite well.. It just printed a lot of "het programma is hoofdletter gevoelig. Er dient niet met hoofdletters geschreven te worden." Can anybody help me?
I'm not good at programming, i have to do this for a school assignment and i really don't get it..

while Welk_construct != "vriendelijkheid" and Welk_construct != "emotionele stabiliteit" and Welk_construct != "extraversie" and Welk_construct != "consciëntieusheid" and Welk_construct != "autonomie":
  print ("Let op: het programma is hoofdletter gevoelig. Er dient niet met hoofdletters geschreven te worden.")
  Welk_construct = input ("Welk construct wilt je meten? Typ hier een van de vijf constructen.")
  if Welk_construct == ("vriendelijkheid"):
     Antwoord_V1 = input (Vragenlijst_vriendelijkheid [0])
     Antwoord_V2 = input (Vragenlijst_vriendelijkheid [1])
     Antwoord_V3 = input (Vragenlijst_vriendelijkheid [2])
     Antwoord_V4 = input (Vragenlijst_vriendelijkheid [3])
     Antwoord_V5 = input (Vragenlijst_vriendelijkheid [4])
     Antwoord_V6 = input (Vragenlijst_vriendelijkheid [5])
     Antwoord_V7 = input (Vragenlijst_vriendelijkheid [6])
     Antwoord_V8 = input (Vragenlijst_vriendelijkheid [7])
  elif Welk_construct == ("consciëntieusheid"):
     Antwoord_C1 = input (Vragenlijst_consciëntieusheid [0])
     Antwoord_C2 = input (Vragenlijst_consciëntieusheid [1])
     Antwoord_C3 = input (Vragenlijst_consciëntieusheid [2])
     Antwoord_C4 = input (Vragenlijst_consciëntieusheid [3])
     Antwoord_C5 = input (Vragenlijst_consciëntieusheid [4])
     Antwoord_C6 = input (Vragenlijst_consciëntieusheid [5])
     Antwoord_C7 = input (Vragenlijst_consciëntieusheid [6])
     Antwoord_C8 = input (Vragenlijst_consciëntieusheid [7])
  elif Welk_construct == ("autonomie"):
     Antwoord_A1 = input (Vragenlijst_autonomie [0])
     Antwoord_A2 = input (Vragenlijst_autonomie [1])
     Antwoord_A3 = input (Vragenlijst_autonomie [2])
     Antwoord_A4 = input (Vragenlijst_autonomie [3])
     Antwoord_A5 = input (Vragenlijst_autonomie [4])
     Antwoord_A6 = input (Vragenlijst_autonomie [5])
     Antwoord_A7 = input (Vragenlijst_autonomie [6])
     Antwoord_A8 = input (Vragenlijst_autonomie [7])
  elif Welk_construct == ("extraversie"):
     Antwoord_E1 = input (Vragenlijst_extraversie [0])
     Antwoord_E2 = input (Vragenlijst_extraversie [1])
     Antwoord_E3 = input (Vragenlijst_extraversie [2])
     Antwoord_E4 = input (Vragenlijst_extraversie [3])
     Antwoord_E5 = input (Vragenlijst_extraversie [4])
     Antwoord_E6 = input (Vragenlijst_extraversie [5])
     Antwoord_E7 = input (Vragenlijst_extraversie [6])
     Antwoord_E8 = input (Vragenlijst_extraversie [7])
  elif Welk_construct == ("emotionele stabiliteit"):
     Antwoord_ES1 = input (Vragenlijst_emotionele_stabiliteit [0])
     Antwoord_ES2 = input (Vragenlijst_emotionele_stabiliteit [1])
     Antwoord_ES3 = input (Vragenlijst_emotionele_stabiliteit [2])
     Antwoord_ES4 = input (Vragenlijst_emotionele_stabiliteit [3])
     Antwoord_ES5 = input (Vragenlijst_emotionele_stabiliteit [4])
     Antwoord_ES6 = input (Vragenlijst_emotionele_stabiliteit [5])
     Antwoord_ES7 = input (Vragenlijst_emotionele_stabiliteit [6])
     Antwoord_ES8 = input (Vragenlijst_emotionele_stabiliteit [7])

this is the whole file:

# antwoorden demografische vragen
Naam = ("onbekend")
Geslacht = ("onbekend")
Leeftijd = ("onbekend")

# overige vragen
Welk_construct = ("onbekend")
Nog_een = ("onbekend")

# antwoorden Vragenlijst_vriendelijkheid
Antwoord_V1 = ("onbekend")
Antwoord_V2 = ("onbekend")
Antwoord_V3 = ("onbekend")
Antwoord_V4 = ("onbekend")
Antwoord_V5 = ("onbekend")
Antwoord_V6 = ("onbekend")
Antwoord_V7 = ("onbekend")
Antwoord_V8 = ("onbekend")

# antwoorden Vragenlijst_consiëntieusheid
Antwoord_C1 = ("onbekend")
Antwoord_C2 = ("onbekend")
Antwoord_C3 = ("onbekend")
Antwoord_C4 = ("onbekend")
Antwoord_C5 = ("onbekend")
Antwoord_C6 = ("onbekend")
Antwoord_C7 = ("onbekend")
Antwoord_C8 = ("onbekend")

# antwoorden Vragenlijst_autonomie
Antwoord_A1 = ("onbekend")
Antwoord_A2 = ("onbekend")
Antwoord_A3 = ("onbekend")
Antwoord_A4 = ("onbekend")
Antwoord_A5 = ("onbekend")
Antwoord_A6 = ("onbekend")
Antwoord_A7 = ("onbekend")
Antwoord_A8 = ("onbekend")

# antwoorden Vragenlijst_extraversie
Antwoord_E1 = ("onbekend")
Antwoord_E2 = ("onbekend")
Antwoord_E3 = ("onbekend")
Antwoord_E4 = ("onbekend")
Antwoord_E5 = ("onbekend")
Antwoord_E6 = ("onbekend")
Antwoord_E7 = ("onbekend")
Antwoord_E8 = ("onbekend")

# antwoorden Vragenijst_emotionele_stabiliteit
Antwoord_ES1 = ("onbekend")
Antwoord_ES2 = ("onbekend")
Antwoord_ES3 = ("onbekend")
Antwoord_ES4 = ("onbekend")
Antwoord_ES5 = ("onbekend")
Antwoord_ES6 = ("onbekend")
Antwoord_ES7 = ("onbekend")
Antwoord_ES8 = ("onbekend")

# vragenlijsten

Demografische_vragen = (["Wat is uw naam? Typ hier uw naam.", "Wat is uw geslacht? Typ hier Man, Vrouw of Anders.", "Wat is uw leeftijd? Typ hier uw leeftijd in jaren."])

Vragenlijst_vriendelijkheid = (["Vraag V1: Ik heb vertrouwen in anderen. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", " Vraag V2: Ik gebruik en manipuleer anderen om mijn zin te krijgen. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag V3: Ik help anderen graag. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraaga V4: Ik hou van strijd en een stevige discussie. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag V5: Ik vind mezelf beter dan anderen. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag V6: Ik heb medelijden met daklozen. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag V7: Ik denk dat mensen in principe goede bedoelingen hebben. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag V8: Ik vind het niet erg om te bedriegen om hogerop te komen. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens."])

Vragenlijst_consciëntieusheid = (["Vraag C1: Ik breng taken tot een goed einde. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C2: Ik hou niet van wandorde en ruim graag op. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C3: Ik hou mijn beloftes. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C4: Ik ben een harde werker. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C5: Ik ben altijd voorbereid. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C6: Ik ben erg spontaan en reageer zonder na te denken. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C7: Ik doe de dingen die k doe altijd goed. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C8: Ik vergeet vaak dingen op de juiste plaats terug te leggen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens."])

Vragenlijst_autonomie = (["Vraag A1: Ik heb een levendige fantasie. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A2: Ik vind kunst belangrijk. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A3: Ik ervaar sterke en gevarieerde emoties. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A4: Ik verkies afwisseling oven routine. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A5: Ik lees graag uitdagende boeken en artikelen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A6: Ik verkies politiek die voor verandering is en progressief. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A7: Ik laat mijn verbeelding graag de vrije loop. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A8: Ik zie de schoonheid van dingen die anderen niet opvallen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens."])

Vragenlijst_extraversie = (["Vraag E1: Ik maak gemakkelijk vrienden. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E2: Ik hou van grote feesten en bijeenkomsten. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E3: Ik neem graag de leiding in situaties en bij gebeurtenissen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E4: Ik heb moeite om anderen te benaderen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E5: Ik hou van opwinding en spanning. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E6: Ik ben een heel vrolijk persoon. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E7: Ik voel me op mijn gemak bij andere mensen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E8: Ik praat met veel verschillende mensen op feestjes. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens."])

Vragenlijst_emotionele_stabiliteit = (["Vraag ES1: Ik maak me veel zorgen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES2: Ik word snel boos. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES3: Ik voel me vaak verdrietig. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES4: Ik laat me regelmatig gaan wat betreft genieten. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES5: Ik ben snel in paniek. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES6: Ik vrees vaak het ergste.  Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES7: Ik ben altijd bezig en druk met dingen.  Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES8: Ik raak snel geïrriteerd.  Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens." ])

# demografische vragen
print ("Hallo! Voordat we met de vragenlijst gaan beginnen, komen er een paar vragen over u. Zo kunnen we uw gegevens het best verwerken.")
Naam = input (Demografische_vragen [0])

while Geslacht != "Man" and Geslacht != "man" and Geslacht != "Vrouw"  and Geslacht != "vrouw"and Geslacht != "Anders" and Geslacht != "anders":
  Geslacht = input (Demografische_vragen [1])

invalide = True
while invalide:
  Leeftijd = int (input (Demografische_vragen [2]))
  if Leeftijd >=16 and Leeftijd <=99:
    invalide= False
  else:
    print ("Sorry" ,(Naam),", je moet tussen de 16 en 99 zijn")

# intro vragenlijst
print ("Welkom" ,(Naam),", je gaat nu een vragenlijst invullen voor één van de Big Five persoonijkheidstrekken.")
print ("Elk onderdeel heeft 8 vragen. Deze zullen ongeveer 2 minuten duren.")
print ("Je kunt kiezen uit: vriendelijkheid, emotionele stabiliteit, extraversie, consciëntieusheid en autonomie")

# Welk construct wil je meten
while Welk_construct != "vriendelijkheid" and Welk_construct != "emotionele stabiliteit" and Welk_construct != "extraversie" and Welk_construct != "consciëntieusheid" and Welk_construct != "autonomie":
  print ("Let op: het programma is hoofdletter gevoelig. Er dient niet met hoofdletters geschreven te worden.")
  Welk_construct = input ("Welk construct wilt je meten? Typ hier een van de vijf constructen.")
  if Welk_construct == ("vriendelijkheid"):
     Antwoord_V1 = input (Vragenlijst_vriendelijkheid [0])
     Antwoord_V2 = input (Vragenlijst_vriendelijkheid [1])
     Antwoord_V3 = input (Vragenlijst_vriendelijkheid [2])
     Antwoord_V4 = input (Vragenlijst_vriendelijkheid [3])
     Antwoord_V5 = input (Vragenlijst_vriendelijkheid [4])
     Antwoord_V6 = input (Vragenlijst_vriendelijkheid [5])
     Antwoord_V7 = input (Vragenlijst_vriendelijkheid [6])
     Antwoord_V8 = input (Vragenlijst_vriendelijkheid [7])
  elif Welk_construct == ("consciëntieusheid"):
     Antwoord_C1 = input (Vragenlijst_consciëntieusheid [0])
     Antwoord_C2 = input (Vragenlijst_consciëntieusheid [1])
     Antwoord_C3 = input (Vragenlijst_consciëntieusheid [2])
     Antwoord_C4 = input (Vragenlijst_consciëntieusheid [3])
     Antwoord_C5 = input (Vragenlijst_consciëntieusheid [4])
     Antwoord_C6 = input (Vragenlijst_consciëntieusheid [5])
     Antwoord_C7 = input (Vragenlijst_consciëntieusheid [6])
     Antwoord_C8 = input (Vragenlijst_consciëntieusheid [7])
  elif Welk_construct == ("autonomie"):
     Antwoord_A1 = input (Vragenlijst_autonomie [0])
     Antwoord_A2 = input (Vragenlijst_autonomie [1])
     Antwoord_A3 = input (Vragenlijst_autonomie [2])
     Antwoord_A4 = input (Vragenlijst_autonomie [3])
     Antwoord_A5 = input (Vragenlijst_autonomie [4])
     Antwoord_A6 = input (Vragenlijst_autonomie [5])
     Antwoord_A7 = input (Vragenlijst_autonomie [6])
     Antwoord_A8 = input (Vragenlijst_autonomie [7])
  elif Welk_construct == ("extraversie"):
     Antwoord_E1 = input (Vragenlijst_extraversie [0])
     Antwoord_E2 = input (Vragenlijst_extraversie [1])
     Antwoord_E3 = input (Vragenlijst_extraversie [2])
     Antwoord_E4 = input (Vragenlijst_extraversie [3])
     Antwoord_E5 = input (Vragenlijst_extraversie [4])
     Antwoord_E6 = input (Vragenlijst_extraversie [5])
     Antwoord_E7 = input (Vragenlijst_extraversie [6])
     Antwoord_E8 = input (Vragenlijst_extraversie [7])
  elif Welk_construct == ("emotionele stabiliteit"):
     Antwoord_ES1 = input (Vragenlijst_emotionele_stabiliteit [0])
     Antwoord_ES2 = input (Vragenlijst_emotionele_stabiliteit [1])
     Antwoord_ES3 = input (Vragenlijst_emotionele_stabiliteit [2])
     Antwoord_ES4 = input (Vragenlijst_emotionele_stabiliteit [3])
     Antwoord_ES5 = input (Vragenlijst_emotionele_stabiliteit [4])
     Antwoord_ES6 = input (Vragenlijst_emotionele_stabiliteit [5])
     Antwoord_ES7 = input (Vragenlijst_emotionele_stabiliteit [6])
     Antwoord_ES8 = input (Vragenlijst_emotionele_stabiliteit [7])

# wil je nog een construct meten?
while Nog_een != "ja" and Nog_een != "nee":
 print ("Let op: het antwoord moet expliciet ja of nee zijn en het programma is hoofdlettergevoelig.")
 Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")

# Nee
 if Nog_een == "nee":
  print ("Bedankt voor je deelname!")

 # ja
 if Nog_een == "ja":
     Welk_construct = input ("Welk construct wilt je meten? Typ hier een van de vijf constructen.")
     while Welk_construct != "vriendelijkheid" and Welk_construct != "emotionele stabiliteit" and Welk_construct != "extraversie" and Welk_construct != "consciëntieusheid" and Welk_construct != "autonomie":
      print ("Let op: het programma is hoofdletter gevoelig. Er dient niet met hoofdletters geschreven te worden.")
      Welk_construct = input ("Welk construct wilt je meten? Typ hier een van de vijf constructen.")
     if Welk_construct == ("vriendelijkheid"):
        Antwoord_V1 = input (Vragenlijst_vriendelijkheid [0])
        Antwoord_V2 = input (Vragenlijst_vriendelijkheid [1])
        Antwoord_V3 = input (Vragenlijst_vriendelijkheid [2])
        Antwoord_V4 = input (Vragenlijst_vriendelijkheid [3])
        Antwoord_V5 = input (Vragenlijst_vriendelijkheid [4])
        Antwoord_V6 = input (Vragenlijst_vriendelijkheid [5])
        Antwoord_V7 = input (Vragenlijst_vriendelijkheid [6])
        Antwoord_V8 = input (Vragenlijst_vriendelijkheid [7])
        Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")
        if Nog_een == "nee":
         print ("Bedankt voor je deelname!")
     elif Welk_construct == ("consciëntieusheid"):
        Antwoord_C1 = input (Vragenlijst_consciëntieusheid [0])
        Antwoord_C2 = input (Vragenlijst_consciëntieusheid [1])
        Antwoord_C3 = input (Vragenlijst_consciëntieusheid [2])
        Antwoord_C4 = input (Vragenlijst_consciëntieusheid [3])
        Antwoord_C5 = input (Vragenlijst_consciëntieusheid [4])
        Antwoord_C6 = input (Vragenlijst_consciëntieusheid [5])
        Antwoord_C7 = input (Vragenlijst_consciëntieusheid [6])
        Antwoord_C8 = input (Vragenlijst_consciëntieusheid [7])
        Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")
        if Nog_een == "nee":
         print ("Bedankt voor je deelname!")
     elif Welk_construct == ("autonomie"):
        Antwoord_A1 = input (Vragenlijst_autonomie [0])
        Antwoord_A2 = input (Vragenlijst_autonomie [1])
        Antwoord_A3 = input (Vragenlijst_autonomie [2])
        Antwoord_A4 = input (Vragenlijst_autonomie [3])
        Antwoord_A5 = input (Vragenlijst_autonomie [4])
        Antwoord_A6 = input (Vragenlijst_autonomie [5])
        Antwoord_A7 = input (Vragenlijst_autonomie [6])
        Antwoord_A8 = input (Vragenlijst_autonomie [7])
        Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")
        if Nog_een == "nee":
         print ("Bedankt voor je deelname!")
     elif Welk_construct == ("extraversie"):
        Antwoord_E1 = input (Vragenlijst_extraversie [0])
        Antwoord_E2 = input (Vragenlijst_extraversie [1])
        Antwoord_E3 = input (Vragenlijst_extraversie [2])
        Antwoord_E4 = input (Vragenlijst_extraversie [3])
        Antwoord_E5 = input (Vragenlijst_extraversie [4])
        Antwoord_E6 = input (Vragenlijst_extraversie [5])
        Antwoord_E7 = input (Vragenlijst_extraversie [6])
        Antwoord_E8 = input (Vragenlijst_extraversie [7])
        Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")
        if Nog_een == "nee":
         print ("Bedankt voor je deelname!")
     elif Welk_construct == ("emotionele stabiliteit"):
        Antwoord_ES1 = input (Vragenlijst_emotionele_stabiliteit [0])
        Antwoord_ES2 = input (Vragenlijst_emotionele_stabiliteit [1])
        Antwoord_ES3 = input (Vragenlijst_emotionele_stabiliteit [2])
        Antwoord_ES4 = input (Vragenlijst_emotionele_stabiliteit [3])
        Antwoord_ES5 = input (Vragenlijst_emotionele_stabiliteit [4])
        Antwoord_ES6 = input (Vragenlijst_emotionele_stabiliteit [5])
        Antwoord_ES7 = input (Vragenlijst_emotionele_stabiliteit [6])
        Antwoord_ES8 = input (Vragenlijst_emotionele_stabiliteit [7])
        Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")
        if Nog_een == "nee":
         print ("Bedankt voor je deelname!")

# opslaan antwoorden
antwoorden_demografische_vragen = [Naam, Leeftijd, Geslacht]
antwoorden_vriendelijkheid = [Antwoord_V1, Antwoord_V2, Antwoord_V3, Antwoord_V4, Antwoord_V5, Antwoord_V6, Antwoord_V7, Antwoord_V8]
antwoorden_consciëntieusheid = [Antwoord_C1, Antwoord_C2, Antwoord_C3, Antwoord_C4, Antwoord_C5, Antwoord_C6, Antwoord_C7, Antwoord_C8]
antwoorden_autonomie = [Antwoord_A1, Antwoord_A2, Antwoord_A3, Antwoord_A4, Antwoord_A5, Antwoord_A6, Antwoord_A7, Antwoord_A8]
antwoorden_extraversie = [Antwoord_E1, Antwoord_E2, Antwoord_E3, Antwoord_E4, Antwoord_E5, Antwoord_E6, Antwoord_E7, Antwoord_E8]
antwoorden_emotionele_stabiliteit = [Antwoord_ES1, Antwoord_ES2, Antwoord_ES3, Antwoord_ES4, Antwoord_ES5, Antwoord_ES6, Antwoord_ES7, Antwoord_ES8, ]

data = open("antwoorden vragenijst", "a")
data.writelines(str(antwoorden_demografische_vragen) + "\n")
data.writelines(str(antwoorden_vriendelijkheid) + "\n")
data.writelines(str(antwoorden_consciëntieusheid) + "\n")
data.writelines(str(antwoorden_autonomie) + "\n")
data.writelines(str(antwoorden_extraversie) + "\n")
data.writelines(str(antwoorden_extraversie) + "\n")
data.writelines(str(antwoorden_emotionele_stabiliteit) + "\n")
data.close()

Body:
I wish I spoke Dutch so I could understand this code well enough to be able to show you exactly how to write it more simply (I see enough copy+paste in here that I think you could shrink it down to about 1/20th of its current size), but I suspect it'd come out illegible due to the spoken language barrier, so I'll have to give general tips instead.  :)

In general, any time you find yourself doing something like this:

  if Welk_construct == ("vriendelijkheid"):
     Antwoord_V1 = input (Vragenlijst_vriendelijkheid [0])
     Antwoord_V2 = input (Vragenlijst_vriendelijkheid [1])
     Antwoord_V3 = input (Vragenlijst_vriendelijkheid [2])
     Antwoord_V4 = input (Vragenlijst_vriendelijkheid [3])
     Antwoord_V5 = input (Vragenlijst_vriendelijkheid [4])
     Antwoord_V6 = input (Vragenlijst_vriendelijkheid [5])
     Antwoord_V7 = input (Vragenlijst_vriendelijkheid [6])
     Antwoord_V8 = input (Vragenlijst_vriendelijkheid [7])

you don't want to have 8 different named strings, you want to just have a list of 8 strings:

  if Welk_construct == ("vriendelijkheid"):
     antwoord = [input(question) for question in Vragenlijst_vriendelijkheid]

If you want to validate that input matches a certain set of words, you can use an actual set.  You can also use functions like lower() to get rid of case differences.  So this:

while Geslacht != "Man" and Geslacht != "man" and Geslacht != "Vrouw"  and Geslacht != "vrouw"and Geslacht != "Anders" and Geslacht != "anders":
  Geslacht = input (Demografische_vragen [1])

can be written much more briefly as:

while Geslacht.lower() not in {"man", "vrouw", "anders"}:
  Geslacht = input(Demografische_vragen[1])

Another way to validate input as fitting a certain pattern is to use an Enum:

from enum import Enum
class Geslacht(Enum):
    MAN = "man"
    VROUW = "vrouw"
    ANDERS = "anders"

while True:
    try:
        geslacht = Geschlact(input(Demografische_vragen[1]))
    except ValueError as error:
        # the loop will continue and try again
        print(error)
    else:
        # geslacht is now guaranteed to be a valid Geslacht enum value
        break

The benefit of using an Enum is that if you typo the string somewhere, you'll get an immediate error.  If you use an IDE, enums will also autocomplete nicely (since the IDE can see the enum definition, as soon as you start typing Geslacht. it'll show you a list of all the valid values), and if you use mypy, you can have full confidence that you're always getting a valid value of a particular type, even without having to run the code and test it.

In this particular loop:

for Vragenlijst_vriendelijkheid in (list(range(0,8))):
 while Vragenlijst_vriendelijkheid (list(range(0,8))) != "Helemaal niet mee eens" and != "Niet mee eens" and != "Neutraal" and != "Mee eens" and != "Helemaal mee eens":
   print ("Let op: deze vragen zijn hoofdletter gevoelig, elk antwoord dient precies overgenomen te worden.")

you're reassigning Vragenlijst_vriendelijkheid, which I don't think you want to do (that's your question list, right)?  I think you might want to do something more like:

for question in Vragenlijst_vriendelijkheid:
    if question not in {
        "Helemaal niet mee eens",
        "Niet mee eens",
        "Neutraal",
        "Mee eens",
        "Helemaal mee eens"
    }:
        print("Let op: deze vragen zijn hoofdletter gevoelig, "
              "elk antwoord dient precies overgenomen te worden.")

but I don't actually know what this loop is supposed to be doing so I'm not sure how much closer that gets you.  (Should it be iterating over the answers instead?  If so, it's extra important to be putting your answers into a list instead of eight differently-named variables!)


问:
Visual Studio Code: Run button shows for Python Scripts but not for Ruby
I use Visual Studio Code for my IDE, and I typically write Python. I just installed Ruby on my Windows 10 Computer and for some reason Visual Studio Code will not give me the Option to run a ruby file.

I downloaded the extension to ruby, and it appears installed, so I don't understand why this is happening. Does Anybody know how to fix this?

答:
You need to go to extensions and type ruby and install VSCode Ruby after that set the path C:\Ruby27-x64\bin in System properties > Environment Variables > Edit Environment Variables

Restart VS Code Editor that it that should do the trick


问:
Not able to set cookie from the express app hosted on Heroku
I have hosted both frontend and backend in Heroku.

Frontend - xxxxxx.herokuapp.com (react app)

Backend - yyyyyy.herokuapp.com (express)

I'm trying to implement Google authentication. After getting the token from Google OAuth2, I'm trying to set the id_token and user details in the cookie through the express app.

Below is the piece of code that I have in the backend,

```<code>authRouter.get('/token', async (req, res) => {
    try {
        const result = await getToken(String(req.query.code))
        const { id_token, userId, name, exp } = result;
        const cookieConfig = { domain: '.herokuapp.com', expires: new Date(exp * 1000), secure: true }
        res.status(201)
            .cookie('auth_token', id_token, {
                httpOnly: true,
                ...cookieConfig

            })
            .cookie('user_id', userId, cookieConfig)
            .cookie('user_name', name, cookieConfig)
            .send("Login succeeded")
    } catch (err) {
        res.status(401).send("Login failed");
    }
});
</code>```

It is working perfectly for me on my local but it is not working on heroku.

These are the domains I tried out already - .herokuapp.com herokuapp.com. Also, I tried out without specifying the domain field itself.

I can see the Set-Cookie details on the response headers but the /token endpoint is failing without returning any status code and I can't see the cookies set on the application tab.

Please see the below images,

I can't see any status code here but it says it is failed.

These are cookie information that I can see but it is not available if I check via application tab.

What am I missing here? Could someone help me?

答:
May you should try secure as:
secure: req.secure || req.headers['x-forwarded-proto'] === 'https'

Body:
I have hosted both frontend and backend in Heroku.

Frontend - xxxxxx.herokuapp.com (react app)

Backend - yyyyyy.herokuapp.com (express)

I'm trying to implement Google authentication. After getting the token from Google OAuth2, I'm trying to set the id_token and user details in the cookie through the express app.

Below is the piece of code that I have in the backend,

authRouter.get('/token', async (req, res) => {
    try {
        const result = await getToken(String(req.query.code))
        const { id_token, userId, name, exp } = result;
        const cookieConfig = { domain: '.herokuapp.com', expires: new Date(exp * 1000), secure: true }
        res.status(201)
            .cookie('auth_token', id_token, {
                httpOnly: true,
                ...cookieConfig

            })
            .cookie('user_id', userId, cookieConfig)
            .cookie('user_name', name, cookieConfig)
            .send("Login succeeded")
    } catch (err) {
        res.status(401).send("Login failed");
    }
});

It is working perfectly for me on my local but it is not working on heroku.

These are the domains I tried out already - .herokuapp.com herokuapp.com. Also, I tried out without specifying the domain field itself.

I can see the Set-Cookie details on the response headers but the /token endpoint is failing without returning any status code and I can't see the cookies set on the application tab.

Please see the below images,

I can't see any status code here but it says it is failed.

These are cookie information that I can see but it is not available if I check via application tab.

What am I missing here? Could someone help me?


问:
Why cannot I get 2 gigabytes from malloc?
Having this:

```<code>#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define GB (1<<30)
#define N 10000L //number of virtual blocks(arrays)

int main (void) {

    int *ar[N];
    for(int i =0; i<N ; i++)
    {
        ar[i]=malloc(GB); //alloc virtually one GB
        if(!ar[i]){
            printf("done at %i\n",i);
            return 0;
        }
    }
    printf("allocated %li blocks\n",N);

    for(int i =0; i<N ; i++)
    {
        memset(ar[i],2,GB); // get physical gigs for that array
        printf("wrote to %i GB\n",i+1);
    }

    return 0;
}
</code>```

But I will not get even one:

```<code>allocated 10000 blocks //virtual memory (one block==1GB)
wrote to 1 GB //real memory (not really

Command terminated

Press ENTER or type command to continue
</code>```

I know I have at leaset 4 gigs on my machine and I also know OS has some limit it needs to operate, however I cannot get even 2 GB for user space? That is strange. Can someone explain please?

$uname -a:
`4.19.0-9-amd64 #1 SMP Debian 4.19.118-2 (2020-04-29) x86_64 GNU/Linux

EDIT:
It gets stranger:
Now if I run (after an hour from the previous output):

```<code>allocated 10000 blocks
wrote to 1 GB
wrote to 2 GB

Command terminated

Press ENTER or type command to continue
</code>```

so it gets through 2 time in for loop, and allocates 2GB of real memory, but before an hour, I catch only 1GB and something (not full 2GB).

addition info:
$free -h:

```<code>    total        used        free      shared  buff/cache   available
Mem:          3.7Gi       1.1Gi       2.2Gi       236Mi       404Mi       2.2Gi
Swap:            0B          0B          0B
</code>```

How can I take advantage from these information? So it is I said -> I have 4GB (total), but can get 2GB. That is maximum for user space?

答:
Possibly a memory or swap limitation.

On a 4GB Ubuntu 18 VM, I get:

```<code>$ gcc -o alloc -Wall alloc.c
$ free -h
              total        used        free      shared  buff/cache   available
Mem:           3.9G        154M        3.1G         23M        572M        3.5G
Swap:          2.0G          0B        2.0G
$ uname -a
Linux ub18 4.15.0-101-generic #102-Ubuntu SMP Mon May 11 10:07:26 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
$./alloc
allocated 10000 blocks
wrote to 1 GB
wrote to 2 GB
wrote to 3 GB
wrote to 4 GB
wrote to 5 GB
Killed
$ free -h
              total        used        free      shared  buff/cache   available
Mem:           3.9G        127M        3.7G        1.6M         60M        3.6G
Swap:          2.0G        112M        1.9G
$
</code>```

syslog says:

```<code>May 30 17:57:56 ub18 kernel: [  240.723065] alloc invoked oom-killer: gfp_mask=0x14280ca(GFP_HIGHUSER_MOVABLE|__GFP_ZERO), nodemask=(null), order=0, oom_score_adj=0
May 30 17:57:56 ub18 kernel: [  240.723067] alloc cpuset=/ mems_allowed=0
May 30 17:57:56 ub18 kernel: [  240.723072] CPU: 0 PID: 3062 Comm: alloc Not tainted 4.15.0-101-generic #102-Ubuntu
May 30 17:57:56 ub18 kernel: [  240.723072] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
May 30 17:57:56 ub18 kernel: [  240.723073] Call Trace:
May 30 17:57:56 ub18 kernel: [  240.723088]  dump_stack+0x6d/0x8e
May 30 17:57:56 ub18 kernel: [  240.723094]  dump_header+0x71/0x285
May 30 17:57:56 ub18 kernel: [  240.723096]  oom_kill_process+0x21f/0x420
May 30 17:57:56 ub18 kernel: [  240.723097]  out_of_memory+0x116/0x4e0
May 30 17:57:56 ub18 kernel: [  240.723100]  __alloc_pages_slowpath+0xa53/0xe00
May 30 17:57:56 ub18 kernel: [  240.723102]  __alloc_pages_nodemask+0x29a/0x2c0
May 30 17:57:56 ub18 kernel: [  240.723104]  alloc_pages_vma+0x88/0x1f0
May 30 17:57:56 ub18 kernel: [  240.723107]  __handle_mm_fault+0x8b7/0x1290
May 30 17:57:56 ub18 kernel: [  240.723109]  handle_mm_fault+0xb1/0x210
May 30 17:57:56 ub18 kernel: [  240.723112]  __do_page_fault+0x281/0x4b0
May 30 17:57:56 ub18 kernel: [  240.723114]  do_page_fault+0x2e/0xe0
May 30 17:57:56 ub18 kernel: [  240.723115]  ? page_fault+0x2f/0x50
May 30 17:57:56 ub18 kernel: [  240.723116]  page_fault+0x45/0x50
May 30 17:57:56 ub18 kernel: [  240.723118] RIP: 0033:0x7f6d13bd7963
May 30 17:57:56 ub18 kernel: [  240.723119] RSP: 002b:00007ffeede7e608 EFLAGS: 00010206
May 30 17:57:56 ub18 kernel: [  240.723120] RAX: 00007f6b93b16010 RBX: 0000000000000000 RCX: 00007f6bb0993000
May 30 17:57:56 ub18 kernel: [  240.723121] RDX: 00007f6bd3b16000 RSI: 0000000000000002 RDI: 00007f6b93b16010
May 30 17:57:56 ub18 kernel: [  240.723122] RBP: 00007ffeede91eb0 R08: 0000000000000000 R09: 0000000000000000
May 30 17:57:56 ub18 kernel: [  240.723122] R10: 0000000000000000 R11: 0000000000000246 R12: 0000559df7b44640
May 30 17:57:56 ub18 kernel: [  240.723123] R13: 00007ffeede91f90 R14: 0000000000000000 R15: 0000000000000000
May 30 17:57:56 ub18 kernel: [  240.723124] Mem-Info:
May 30 17:57:56 ub18 kernel: [  240.723127] active_anon:780631 inactive_anon:158435 isolated_anon:0
May 30 17:57:56 ub18 kernel: [  240.723127]  active_file:13 inactive_file:10 isolated_file:1
May 30 17:57:56 ub18 kernel: [  240.723127]  unevictable:0 dirty:0 writeback:2 unstable:0
May 30 17:57:56 ub18 kernel: [  240.723127]  slab_reclaimable:4568 slab_unreclaimable:7013
May 30 17:57:56 ub18 kernel: [  240.723127]  mapped:196 shmem:364 pagetables:15033 bounce:0
May 30 17:57:56 ub18 kernel: [  240.723127]  free:21182 free_pcp:60 free_cma:0
May 30 17:57:56 ub18 kernel: [  240.723130] Node 0 active_anon:3122524kB inactive_anon:633740kB active_file:52kB inactive_file:40kB unevictable:0kB isolated(anon):0kB isolated(file):4kB mapped:784kB dirty:0kB writeback:8kB shmem:1456kB shmem_thp: 0kB shmem_pmdmapped: 0kB anon_thp: 0kB writeback_tmp:0kB unstable:0kB all_unreclaimable? no
May 30 17:57:56 ub18 kernel: [  240.723131] Node 0 DMA free:15736kB min:268kB low:332kB high:396kB active_anon:168kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:15992kB managed:15908kB mlocked:0kB kernel_stack:0kB pagetables:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
May 30 17:57:56 ub18 kernel: [  240.723133] lowmem_reserve[]: 0 3421 3867 3867 3867
May 30 17:57:56 ub18 kernel: [  240.723135] Node 0 DMA32 free:61252kB min:59536kB low:74420kB high:89304kB active_anon:2779728kB inactive_anon:629972kB active_file:20kB inactive_file:24kB unevictable:0kB writepending:48kB present:3653568kB managed:3566076kB mlocked:0kB kernel_stack:80kB pagetables:51412kB bounce:0kB free_pcp:120kB local_pcp:120kB free_cma:0kB
May 30 17:57:56 ub18 kernel: [  240.723138] lowmem_reserve[]: 0 0 446 446 446
May 30 17:57:56 ub18 kernel: [  240.723139] Node 0 Normal free:7740kB min:7772kB low:9712kB high:11652kB active_anon:342620kB inactive_anon:3748kB active_file:28kB inactive_file:8kB unevictable:0kB writepending:0kB present:524288kB managed:457424kB mlocked:0kB kernel_stack:2096kB pagetables:8720kB bounce:0kB free_pcp:120kB local_pcp:120kB free_cma:0kB
May 30 17:57:56 ub18 kernel: [  240.723142] lowmem_reserve[]: 0 0 0 0 0
May 30 17:57:56 ub18 kernel: [  240.723143] Node 0 DMA: 0*4kB 1*8kB (M) 1*16kB (M) 1*32kB (U) 3*64kB (UM) 1*128kB (U) 2*256kB (UM) 1*512kB (M) 2*1024kB (UM) 0*2048kB 3*4096kB (M) = 15736kB
May 30 17:57:56 ub18 kernel: [  240.723149] Node 0 DMA32: 439*4kB (UME) 357*8kB (UME) 202*16kB (UME) 103*32kB (UE) 37*64kB (UME) 15*128kB (UME) 13*256kB (UME) 9*512kB (UE) 1*1024kB (E) 0*2048kB 9*4096kB (M) = 61252kB
May 30 17:57:56 ub18 kernel: [  240.723156] Node 0 Normal: 621*4kB (UMEH) 285*8kB (UMEH) 110*16kB (UMEH) 34*32kB (UEH) 2*64kB (MH) 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 7740kB
May 30 17:57:57 ub18 kernel: [  240.723162] Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=2048kB
May 30 17:57:57 ub18 kernel: [  240.723162] 3052 total pagecache pages
May 30 17:57:57 ub18 kernel: [  240.723164] 2652 pages in swap cache
May 30 17:57:57 ub18 kernel: [  240.723168] Swap cache stats: add 527798, delete 525146, find 859/1742
May 30 17:57:57 ub18 kernel: [  240.723168] Free swap  = 0kB
May 30 17:57:57 ub18 kernel: [  240.723169] Total swap = 2104316kB
May 30 17:57:57 ub18 kernel: [  240.723169] 1048462 pages RAM
May 30 17:57:57 ub18 kernel: [  240.723170] 0 pages HighMem/MovableOnly
May 30 17:57:57 ub18 kernel: [  240.723170] 38610 pages reserved
May 30 17:57:57 ub18 kernel: [  240.723171] 0 pages cma reserved
May 30 17:57:57 ub18 kernel: [  240.723171] 0 pages hwpoisoned
May 30 17:57:57 ub18 kernel: [  240.723172] [ pid ]   uid  tgid total_vm      rss pgtables_bytes swapents oom_score_adj name
May 30 17:57:57 ub18 kernel: [  240.723175] [  396]     0   396    23715       11   217088      164             0 systemd-journal
May 30 17:57:57 ub18 kernel: [  240.723177] [  417]     0   417    24427        0    90112       51             0 lvmetad
May 30 17:57:57 ub18 kernel: [  240.723178] [  418]     0   418    11706       43   118784      590         -1000 systemd-udevd
May 30 17:57:57 ub18 kernel: [  240.723179] [  586] 62583   586    35483        0   184320      151             0 systemd-timesyn
May 30 17:57:57 ub18 kernel: [  240.723181] [  755]   100   755    20044        8   176128      176             0 systemd-network
May 30 17:57:57 ub18 kernel: [  240.723182] [  782]   101   782    17659       10   172032      157             0 systemd-resolve
May 30 17:57:57 ub18 kernel: [  240.723183] [  957]     0   957    17650        8   180224      172             0 systemd-logind
May 30 17:57:57 ub18 kernel: [  240.723184] [  959]     0   959    71564       14   200704      214             0 accounts-daemon
May 30 17:57:57 ub18 kernel: [  240.723185] [  961]   102   961    65760        0   163840      284             0 rsyslogd
May 30 17:57:57 ub18 kernel: [  240.723186] [  962]     0   962     7083        3   102400       49             0 atd
May 30 17:57:57 ub18 kernel: [  240.723188] [  963]     0   963     7507        0   102400       75             0 cron
May 30 17:57:57 ub18 kernel: [  240.723189] [  996]     0   996    42276      102   217088     1841             0 networkd-dispat
May 30 17:57:57 ub18 kernel: [  240.723190] [  997]     0   997   160115      231   233472     4850          -900 snapd
May 30 17:57:57 ub18 kernel: [  240.723191] [ 1008]     0  1008    23885        0    77824       73             0 lxcfs
May 30 17:57:57 ub18 kernel: [  240.723193] [ 1012]   103  1012    12571        1   139264      202          -900 dbus-daemon
May 30 17:57:57 ub18 kernel: [  240.723194] [ 1094]     0  1094   101403       29   401408      641             0 NetworkManager
May 30 17:57:57 ub18 kernel: [  240.723195] [ 1095]     0  1095    11308        6   122880      131             0 wpa_supplicant
May 30 17:57:57 ub18 kernel: [  240.723196] [ 1110]     0  1110   108581       10   356352      344             0 ModemManager
May 30 17:57:57 ub18 kernel: [  240.723197] [ 1167]     0  1167    72221        0   212992      208             0 polkitd
May 30 17:57:57 ub18 kernel: [  240.723198] [ 1283]     0  1283    46486       96   249856     1879             0 unattended-upgr
May 30 17:57:57 ub18 kernel: [  240.723200] [ 1450]     0  1450     3722        0    69632       33             0 agetty
May 30 17:57:57 ub18 kernel: [  240.723201] [ 1531]     0  1531    18075       11   184320      177         -1000 sshd
May 30 17:57:57 ub18 kernel: [  240.723202] [ 1571]   111  1571    79693       19   331776      484          -900 postgres
May 30 17:57:57 ub18 kernel: [  240.723203] [ 1578]   111  1578    79781        4   335872      500          -900 postgres
May 30 17:57:57 ub18 kernel: [  240.723204] [ 1603]   111  1603    79781        1   294912      500             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723205] [ 1604]   111  1604    79781       10   311296      500             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723207] [ 1605]   111  1605    79781        2   303104      507             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723208] [ 1606]   111  1606    79883       97   311296      521             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723209] [ 1607]   111  1607    43543        7   282624      509             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723210] [ 1608]   111  1608    79882       58   303104      528             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723211] [ 1611]   111  1611    79693        0   299008      501             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723212] [ 1612]   111  1612    79693       19   311296      495             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723213] [ 1613]   111  1613    79693        0   307200      506             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723214] [ 1614]   111  1614    79794       71   315392      530             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723216] [ 1615]   111  1615    43457       13   282624      511             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723217] [ 1616]   111  1616    79771       46   307200      532             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723218] [ 2896]     0  2896    26997        7   249856      245             0 sshd
May 30 17:57:57 ub18 kernel: [  240.723219] [ 2908]  1000  2908    19166        0   180224      277             0 systemd
May 30 17:57:57 ub18 kernel: [  240.723220] [ 2909]  1000  2909    48429        0   266240      593             0 (sd-pam)
May 30 17:57:57 ub18 kernel: [  240.723221] [ 3026]  1000  3026    26997       11   245760      243             0 sshd
May 30 17:57:57 ub18 kernel: [  240.723223] [ 3027]  1000  3027     5823        1    81920      461             0 bash
May 30 17:57:57 ub18 kernel: [  240.723224] [ 3062]  1000  3062 2621451127   934324 93466624   504770             0 alloc
May 30 17:57:57 ub18 kernel: [  240.723225] [ 3089]   111  3089    79921      271   319488      468             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723226] [ 3090]   111  3090    79921      331   319488      415             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723227] [ 3091]     0  3091     8646       38    98304        0             0 sshd
May 30 17:57:57 ub18 kernel: [  240.723228] Out of memory: Kill process 3062 (alloc) score 951 or sacrifice child
May 30 17:57:57 ub18 kernel: [  240.723268] Killed process 3062 (alloc) total-vm:10485804508kB, anon-rss:3737288kB, file-rss:8kB, shmem-rss:0kB
May 30 17:57:57 ub18 kernel: [  240.916591] oom_reaper: reaped process 3062 (alloc), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
$
</code>```

Body:
Having this:

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define GB (1<<30)
#define N 10000L //number of virtual blocks(arrays)

int main (void) {

    int *ar[N];
    for(int i =0; i<N ; i++)
    {
        ar[i]=malloc(GB); //alloc virtually one GB
        if(!ar[i]){
            printf("done at %i\n",i);
            return 0;
        }
    }
    printf("allocated %li blocks\n",N);

    for(int i =0; i<N ; i++)
    {
        memset(ar[i],2,GB); // get physical gigs for that array
        printf("wrote to %i GB\n",i+1);
    }

    return 0;
}

But I will not get even one:

allocated 10000 blocks //virtual memory (one block==1GB)
wrote to 1 GB //real memory (not really

Command terminated

Press ENTER or type command to continue

I know I have at leaset 4 gigs on my machine and I also know OS has some limit it needs to operate, however I cannot get even 2 GB for user space? That is strange. Can someone explain please?

$uname -a:
`4.19.0-9-amd64 #1 SMP Debian 4.19.118-2 (2020-04-29) x86_64 GNU/Linux

EDIT:
It gets stranger:
Now if I run (after an hour from the previous output):

allocated 10000 blocks
wrote to 1 GB
wrote to 2 GB

Command terminated

Press ENTER or type command to continue

so it gets through 2 time in for loop, and allocates 2GB of real memory, but before an hour, I catch only 1GB and something (not full 2GB).

addition info:
$free -h:

    total        used        free      shared  buff/cache   available
Mem:          3.7Gi       1.1Gi       2.2Gi       236Mi       404Mi       2.2Gi
Swap:            0B          0B          0B

How can I take advantage from these information? So it is I said -> I have 4GB (total), but can get 2GB. That is maximum for user space?

Body:
Possibly a memory or swap limitation.

On a 4GB Ubuntu 18 VM, I get:

$ gcc -o alloc -Wall alloc.c
$ free -h
              total        used        free      shared  buff/cache   available
Mem:           3.9G        154M        3.1G         23M        572M        3.5G
Swap:          2.0G          0B        2.0G
$ uname -a
Linux ub18 4.15.0-101-generic #102-Ubuntu SMP Mon May 11 10:07:26 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
$./alloc
allocated 10000 blocks
wrote to 1 GB
wrote to 2 GB
wrote to 3 GB
wrote to 4 GB
wrote to 5 GB
Killed
$ free -h
              total        used        free      shared  buff/cache   available
Mem:           3.9G        127M        3.7G        1.6M         60M        3.6G
Swap:          2.0G        112M        1.9G
$

syslog says:

May 30 17:57:56 ub18 kernel: [  240.723065] alloc invoked oom-killer: gfp_mask=0x14280ca(GFP_HIGHUSER_MOVABLE|__GFP_ZERO), nodemask=(null), order=0, oom_score_adj=0
May 30 17:57:56 ub18 kernel: [  240.723067] alloc cpuset=/ mems_allowed=0
May 30 17:57:56 ub18 kernel: [  240.723072] CPU: 0 PID: 3062 Comm: alloc Not tainted 4.15.0-101-generic #102-Ubuntu
May 30 17:57:56 ub18 kernel: [  240.723072] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
May 30 17:57:56 ub18 kernel: [  240.723073] Call Trace:
May 30 17:57:56 ub18 kernel: [  240.723088]  dump_stack+0x6d/0x8e
May 30 17:57:56 ub18 kernel: [  240.723094]  dump_header+0x71/0x285
May 30 17:57:56 ub18 kernel: [  240.723096]  oom_kill_process+0x21f/0x420
May 30 17:57:56 ub18 kernel: [  240.723097]  out_of_memory+0x116/0x4e0
May 30 17:57:56 ub18 kernel: [  240.723100]  __alloc_pages_slowpath+0xa53/0xe00
May 30 17:57:56 ub18 kernel: [  240.723102]  __alloc_pages_nodemask+0x29a/0x2c0
May 30 17:57:56 ub18 kernel: [  240.723104]  alloc_pages_vma+0x88/0x1f0
May 30 17:57:56 ub18 kernel: [  240.723107]  __handle_mm_fault+0x8b7/0x1290
May 30 17:57:56 ub18 kernel: [  240.723109]  handle_mm_fault+0xb1/0x210
May 30 17:57:56 ub18 kernel: [  240.723112]  __do_page_fault+0x281/0x4b0
May 30 17:57:56 ub18 kernel: [  240.723114]  do_page_fault+0x2e/0xe0
May 30 17:57:56 ub18 kernel: [  240.723115]  ? page_fault+0x2f/0x50
May 30 17:57:56 ub18 kernel: [  240.723116]  page_fault+0x45/0x50
May 30 17:57:56 ub18 kernel: [  240.723118] RIP: 0033:0x7f6d13bd7963
May 30 17:57:56 ub18 kernel: [  240.723119] RSP: 002b:00007ffeede7e608 EFLAGS: 00010206
May 30 17:57:56 ub18 kernel: [  240.723120] RAX: 00007f6b93b16010 RBX: 0000000000000000 RCX: 00007f6bb0993000
May 30 17:57:56 ub18 kernel: [  240.723121] RDX: 00007f6bd3b16000 RSI: 0000000000000002 RDI: 00007f6b93b16010
May 30 17:57:56 ub18 kernel: [  240.723122] RBP: 00007ffeede91eb0 R08: 0000000000000000 R09: 0000000000000000
May 30 17:57:56 ub18 kernel: [  240.723122] R10: 0000000000000000 R11: 0000000000000246 R12: 0000559df7b44640
May 30 17:57:56 ub18 kernel: [  240.723123] R13: 00007ffeede91f90 R14: 0000000000000000 R15: 0000000000000000
May 30 17:57:56 ub18 kernel: [  240.723124] Mem-Info:
May 30 17:57:56 ub18 kernel: [  240.723127] active_anon:780631 inactive_anon:158435 isolated_anon:0
May 30 17:57:56 ub18 kernel: [  240.723127]  active_file:13 inactive_file:10 isolated_file:1
May 30 17:57:56 ub18 kernel: [  240.723127]  unevictable:0 dirty:0 writeback:2 unstable:0
May 30 17:57:56 ub18 kernel: [  240.723127]  slab_reclaimable:4568 slab_unreclaimable:7013
May 30 17:57:56 ub18 kernel: [  240.723127]  mapped:196 shmem:364 pagetables:15033 bounce:0
May 30 17:57:56 ub18 kernel: [  240.723127]  free:21182 free_pcp:60 free_cma:0
May 30 17:57:56 ub18 kernel: [  240.723130] Node 0 active_anon:3122524kB inactive_anon:633740kB active_file:52kB inactive_file:40kB unevictable:0kB isolated(anon):0kB isolated(file):4kB mapped:784kB dirty:0kB writeback:8kB shmem:1456kB shmem_thp: 0kB shmem_pmdmapped: 0kB anon_thp: 0kB writeback_tmp:0kB unstable:0kB all_unreclaimable? no
May 30 17:57:56 ub18 kernel: [  240.723131] Node 0 DMA free:15736kB min:268kB low:332kB high:396kB active_anon:168kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:15992kB managed:15908kB mlocked:0kB kernel_stack:0kB pagetables:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
May 30 17:57:56 ub18 kernel: [  240.723133] lowmem_reserve[]: 0 3421 3867 3867 3867
May 30 17:57:56 ub18 kernel: [  240.723135] Node 0 DMA32 free:61252kB min:59536kB low:74420kB high:89304kB active_anon:2779728kB inactive_anon:629972kB active_file:20kB inactive_file:24kB unevictable:0kB writepending:48kB present:3653568kB managed:3566076kB mlocked:0kB kernel_stack:80kB pagetables:51412kB bounce:0kB free_pcp:120kB local_pcp:120kB free_cma:0kB
May 30 17:57:56 ub18 kernel: [  240.723138] lowmem_reserve[]: 0 0 446 446 446
May 30 17:57:56 ub18 kernel: [  240.723139] Node 0 Normal free:7740kB min:7772kB low:9712kB high:11652kB active_anon:342620kB inactive_anon:3748kB active_file:28kB inactive_file:8kB unevictable:0kB writepending:0kB present:524288kB managed:457424kB mlocked:0kB kernel_stack:2096kB pagetables:8720kB bounce:0kB free_pcp:120kB local_pcp:120kB free_cma:0kB
May 30 17:57:56 ub18 kernel: [  240.723142] lowmem_reserve[]: 0 0 0 0 0
May 30 17:57:56 ub18 kernel: [  240.723143] Node 0 DMA: 0*4kB 1*8kB (M) 1*16kB (M) 1*32kB (U) 3*64kB (UM) 1*128kB (U) 2*256kB (UM) 1*512kB (M) 2*1024kB (UM) 0*2048kB 3*4096kB (M) = 15736kB
May 30 17:57:56 ub18 kernel: [  240.723149] Node 0 DMA32: 439*4kB (UME) 357*8kB (UME) 202*16kB (UME) 103*32kB (UE) 37*64kB (UME) 15*128kB (UME) 13*256kB (UME) 9*512kB (UE) 1*1024kB (E) 0*2048kB 9*4096kB (M) = 61252kB
May 30 17:57:56 ub18 kernel: [  240.723156] Node 0 Normal: 621*4kB (UMEH) 285*8kB (UMEH) 110*16kB (UMEH) 34*32kB (UEH) 2*64kB (MH) 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 7740kB
May 30 17:57:57 ub18 kernel: [  240.723162] Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=2048kB
May 30 17:57:57 ub18 kernel: [  240.723162] 3052 total pagecache pages
May 30 17:57:57 ub18 kernel: [  240.723164] 2652 pages in swap cache
May 30 17:57:57 ub18 kernel: [  240.723168] Swap cache stats: add 527798, delete 525146, find 859/1742
May 30 17:57:57 ub18 kernel: [  240.723168] Free swap  = 0kB
May 30 17:57:57 ub18 kernel: [  240.723169] Total swap = 2104316kB
May 30 17:57:57 ub18 kernel: [  240.723169] 1048462 pages RAM
May 30 17:57:57 ub18 kernel: [  240.723170] 0 pages HighMem/MovableOnly
May 30 17:57:57 ub18 kernel: [  240.723170] 38610 pages reserved
May 30 17:57:57 ub18 kernel: [  240.723171] 0 pages cma reserved
May 30 17:57:57 ub18 kernel: [  240.723171] 0 pages hwpoisoned
May 30 17:57:57 ub18 kernel: [  240.723172] [ pid ]   uid  tgid total_vm      rss pgtables_bytes swapents oom_score_adj name
May 30 17:57:57 ub18 kernel: [  240.723175] [  396]     0   396    23715       11   217088      164             0 systemd-journal
May 30 17:57:57 ub18 kernel: [  240.723177] [  417]     0   417    24427        0    90112       51             0 lvmetad
May 30 17:57:57 ub18 kernel: [  240.723178] [  418]     0   418    11706       43   118784      590         -1000 systemd-udevd
May 30 17:57:57 ub18 kernel: [  240.723179] [  586] 62583   586    35483        0   184320      151             0 systemd-timesyn
May 30 17:57:57 ub18 kernel: [  240.723181] [  755]   100   755    20044        8   176128      176             0 systemd-network
May 30 17:57:57 ub18 kernel: [  240.723182] [  782]   101   782    17659       10   172032      157             0 systemd-resolve
May 30 17:57:57 ub18 kernel: [  240.723183] [  957]     0   957    17650        8   180224      172             0 systemd-logind
May 30 17:57:57 ub18 kernel: [  240.723184] [  959]     0   959    71564       14   200704      214             0 accounts-daemon
May 30 17:57:57 ub18 kernel: [  240.723185] [  961]   102   961    65760        0   163840      284             0 rsyslogd
May 30 17:57:57 ub18 kernel: [  240.723186] [  962]     0   962     7083        3   102400       49             0 atd
May 30 17:57:57 ub18 kernel: [  240.723188] [  963]     0   963     7507        0   102400       75             0 cron
May 30 17:57:57 ub18 kernel: [  240.723189] [  996]     0   996    42276      102   217088     1841             0 networkd-dispat
May 30 17:57:57 ub18 kernel: [  240.723190] [  997]     0   997   160115      231   233472     4850          -900 snapd
May 30 17:57:57 ub18 kernel: [  240.723191] [ 1008]     0  1008    23885        0    77824       73             0 lxcfs
May 30 17:57:57 ub18 kernel: [  240.723193] [ 1012]   103  1012    12571        1   139264      202          -900 dbus-daemon
May 30 17:57:57 ub18 kernel: [  240.723194] [ 1094]     0  1094   101403       29   401408      641             0 NetworkManager
May 30 17:57:57 ub18 kernel: [  240.723195] [ 1095]     0  1095    11308        6   122880      131             0 wpa_supplicant
May 30 17:57:57 ub18 kernel: [  240.723196] [ 1110]     0  1110   108581       10   356352      344             0 ModemManager
May 30 17:57:57 ub18 kernel: [  240.723197] [ 1167]     0  1167    72221        0   212992      208             0 polkitd
May 30 17:57:57 ub18 kernel: [  240.723198] [ 1283]     0  1283    46486       96   249856     1879             0 unattended-upgr
May 30 17:57:57 ub18 kernel: [  240.723200] [ 1450]     0  1450     3722        0    69632       33             0 agetty
May 30 17:57:57 ub18 kernel: [  240.723201] [ 1531]     0  1531    18075       11   184320      177         -1000 sshd
May 30 17:57:57 ub18 kernel: [  240.723202] [ 1571]   111  1571    79693       19   331776      484          -900 postgres
May 30 17:57:57 ub18 kernel: [  240.723203] [ 1578]   111  1578    79781        4   335872      500          -900 postgres
May 30 17:57:57 ub18 kernel: [  240.723204] [ 1603]   111  1603    79781        1   294912      500             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723205] [ 1604]   111  1604    79781       10   311296      500             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723207] [ 1605]   111  1605    79781        2   303104      507             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723208] [ 1606]   111  1606    79883       97   311296      521             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723209] [ 1607]   111  1607    43543        7   282624      509             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723210] [ 1608]   111  1608    79882       58   303104      528             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723211] [ 1611]   111  1611    79693        0   299008      501             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723212] [ 1612]   111  1612    79693       19   311296      495             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723213] [ 1613]   111  1613    79693        0   307200      506             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723214] [ 1614]   111  1614    79794       71   315392      530             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723216] [ 1615]   111  1615    43457       13   282624      511             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723217] [ 1616]   111  1616    79771       46   307200      532             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723218] [ 2896]     0  2896    26997        7   249856      245             0 sshd
May 30 17:57:57 ub18 kernel: [  240.723219] [ 2908]  1000  2908    19166        0   180224      277             0 systemd
May 30 17:57:57 ub18 kernel: [  240.723220] [ 2909]  1000  2909    48429        0   266240      593             0 (sd-pam)
May 30 17:57:57 ub18 kernel: [  240.723221] [ 3026]  1000  3026    26997       11   245760      243             0 sshd
May 30 17:57:57 ub18 kernel: [  240.723223] [ 3027]  1000  3027     5823        1    81920      461             0 bash
May 30 17:57:57 ub18 kernel: [  240.723224] [ 3062]  1000  3062 2621451127   934324 93466624   504770             0 alloc
May 30 17:57:57 ub18 kernel: [  240.723225] [ 3089]   111  3089    79921      271   319488      468             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723226] [ 3090]   111  3090    79921      331   319488      415             0 postgres
May 30 17:57:57 ub18 kernel: [  240.723227] [ 3091]     0  3091     8646       38    98304        0             0 sshd
May 30 17:57:57 ub18 kernel: [  240.723228] Out of memory: Kill process 3062 (alloc) score 951 or sacrifice child
May 30 17:57:57 ub18 kernel: [  240.723268] Killed process 3062 (alloc) total-vm:10485804508kB, anon-rss:3737288kB, file-rss:8kB, shmem-rss:0kB
May 30 17:57:57 ub18 kernel: [  240.916591] oom_reaper: reaped process 3062 (alloc), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
$


问:
Webscraping, read_html() - Error in open.connection(x, "rb") : SSL certificate problem: certificate has expired
I am currently trying to build a small webscraper.

I am using the following code to scrape a website:

```<code>webpage <- "https://www.whisky.de/shop/Schottland/Single-Malt/Macallan-Triple-Cask-15-Jahre.html"
content <- read_html(webpage)
</code>```

However, when I run the second line with the read_html command, I get the following error message:

Error in open.connection(x, "rb") :
  SSL certificate problem: certificate has expired

Does anyone of you know where this is coming from? When I used it a few days ago, I did not have any trouble with it.

I am using Mac OS X 10.15.5, RStudio (1.2.5033)
I also installed the library "rvest"

Many thanks for your help in advance!

答:
Try using the GET function.

```<code>webpage <- "https://www.whisky.de/shop/Schottland/Single-Malt/Macallan-Triple-Cask-15-Jahre.html"
content <- read_html(GET(webpage))
</code>```

I should have mentioned the GET function is part of the httr R package.  Make sure you use GET and not get.

Body:
I am currently trying to build a small webscraper.

I am using the following code to scrape a website:

webpage <- "https://www.whisky.de/shop/Schottland/Single-Malt/Macallan-Triple-Cask-15-Jahre.html"
content <- read_html(webpage)

However, when I run the second line with the read_html command, I get the following error message:

Error in open.connection(x, "rb") :
  SSL certificate problem: certificate has expired

Does anyone of you know where this is coming from? When I used it a few days ago, I did not have any trouble with it.

I am using Mac OS X 10.15.5, RStudio (1.2.5033)
I also installed the library "rvest"

Many thanks for your help in advance!

Body:
Try using the GET function.

webpage <- "https://www.whisky.de/shop/Schottland/Single-Malt/Macallan-Triple-Cask-15-Jahre.html"
content <- read_html(GET(webpage))

I should have mentioned the GET function is part of the httr R package.  Make sure you use GET and not get.