plot appears in html exam, but not in pdf version











up vote
0
down vote

favorite












I have a problem with the following Rmd to be used with the exams R package. it works for html, but not for pdf and i can't figure out why. I get the plot with 2 panels in html, but it's just missing in teh pdf. thanks!



```{r data generation, echo = FALSE, results = "hide"}
## DATA GENERATION
constr = sample(c("std","centered"),size=1)


n <- sample(35:65,1)

mx <- runif(1, 40, 60)
my <- runif(1, 200, 280)
sx <- runif(1, 9, 12)
sy <- runif(1, 44, 50)
a = runif(1,2,10)
b = sample(c(-3,1.2,3),size = 1)
e = rnorm(n)

r <- round(runif(1, 0.5, 0.9), 2)
x <- rnorm(n, mx, sd = sx)
y <- (r * x/sx + rnorm(n, my/sy - r * mx/sx, sqrt(1 - r^2))) * sy
mod1 = lm(y~x)
x1 = 0
y1 = 0

if (constr == "centered") {
x1 = x - mx
y1 = y - my
} else if (constr == "std") {
x1 = (x - mx) / sx
y1 = (y - my) / sy
}
mod2 = lm(y1~x1-1)


## QUESTION/ANSWER GENERATION
nq = 2
questions <- rep(list(""), nq)
solutions <- rep(list(""), nq)
explanations <- rep(list(""), nq)
type <- rep(list("string"),nq)

questions[[1]] = "What was the treatment we applied to the data? Or answer should either be `centered` or `standardized`. "
if (constr=="centered") {
solutions[[1]] <- "centered"
explanations[[1]] <- "We substracted the mean of each variable"
questions[[2]] = "Give the value of the OLS slope coefficient in the right panel rounded to 3 digits"
solutions[[2]] = round(coef(summary(mod1))[2],3)
explanations[[2]] = "in a centered regression without an intercept, the slope coefficient is identical to the slope of the uncentered data (regression run with intercept)"
} else if (constr == "std") {
solutions[[1]] <- "standardized"
explanations[[1]] <- "You can see that both variables are centered on zero and have a standard deviation of around one."
questions[[2]] = "Give the value of correlation coefficient $r$ between $x$ and $y$ in the left panel rounded to 3 digits"
solutions[[2]] = round(coef(summary(mod2))[1],3)
explanations[[2]] = "in a standardized regression without an intercept, the slope coefficient is identical to correlation coefficient"
}
type[[2]] <- "num"
```

Question
========

We have a dataset with `r n` observations on $x$ and $y$. We apply some treatment to the data and transform it to $y1$ and $x1$. The left panel below is the data before, the right panel is the data after treatment:

```{r baplot,echo=FALSE,fig.align='center',fig.width=8}
par(mfrow=c(1,2))
plot(y~x,main="before")
plot(y1~x1,main="after")
if (constr=="centered"){
abline(mod2)
}
```

and you are given the OLS estimates of a regression `r ifelse(constr=="centered","of y on x with","of y1 on x1 without")` an intercept for the data in the `r ifelse(constr=="centered","left","right")` panel:

```{r,echo=FALSE}
if (constr=="centered"){
coef(mod1)
} else {
coef(mod2)
}
```

```{r questionlist, echo = FALSE, results = "asis"}
answerlist(unlist(questions), markup = "markdown")
```

Solution
========

```{r solutionlist, echo = FALSE, results = "asis"}
answerlist(unlist(solutions),paste(unlist(explanations), ".", sep = ""), markup = "markdown")
```

Meta-information
================
extype: cloze
exsolution: `r paste(solutions, collapse = "|")`
exclozetype: `r paste(type, collapse = "|")`
exname: regconstrained
extol: 0.05









share|improve this question
























  • Can you shorten your example to the bare minimum. Also what is your YAML header?
    – snoram
    Nov 20 at 13:11






  • 1




    This is an exercise for the R/exams package (R-exams.org). Hence this is only an R/Markdown fragment without a YAML header.
    – Achim Zeileis
    Nov 24 at 16:06

















up vote
0
down vote

favorite












I have a problem with the following Rmd to be used with the exams R package. it works for html, but not for pdf and i can't figure out why. I get the plot with 2 panels in html, but it's just missing in teh pdf. thanks!



```{r data generation, echo = FALSE, results = "hide"}
## DATA GENERATION
constr = sample(c("std","centered"),size=1)


n <- sample(35:65,1)

mx <- runif(1, 40, 60)
my <- runif(1, 200, 280)
sx <- runif(1, 9, 12)
sy <- runif(1, 44, 50)
a = runif(1,2,10)
b = sample(c(-3,1.2,3),size = 1)
e = rnorm(n)

r <- round(runif(1, 0.5, 0.9), 2)
x <- rnorm(n, mx, sd = sx)
y <- (r * x/sx + rnorm(n, my/sy - r * mx/sx, sqrt(1 - r^2))) * sy
mod1 = lm(y~x)
x1 = 0
y1 = 0

if (constr == "centered") {
x1 = x - mx
y1 = y - my
} else if (constr == "std") {
x1 = (x - mx) / sx
y1 = (y - my) / sy
}
mod2 = lm(y1~x1-1)


## QUESTION/ANSWER GENERATION
nq = 2
questions <- rep(list(""), nq)
solutions <- rep(list(""), nq)
explanations <- rep(list(""), nq)
type <- rep(list("string"),nq)

questions[[1]] = "What was the treatment we applied to the data? Or answer should either be `centered` or `standardized`. "
if (constr=="centered") {
solutions[[1]] <- "centered"
explanations[[1]] <- "We substracted the mean of each variable"
questions[[2]] = "Give the value of the OLS slope coefficient in the right panel rounded to 3 digits"
solutions[[2]] = round(coef(summary(mod1))[2],3)
explanations[[2]] = "in a centered regression without an intercept, the slope coefficient is identical to the slope of the uncentered data (regression run with intercept)"
} else if (constr == "std") {
solutions[[1]] <- "standardized"
explanations[[1]] <- "You can see that both variables are centered on zero and have a standard deviation of around one."
questions[[2]] = "Give the value of correlation coefficient $r$ between $x$ and $y$ in the left panel rounded to 3 digits"
solutions[[2]] = round(coef(summary(mod2))[1],3)
explanations[[2]] = "in a standardized regression without an intercept, the slope coefficient is identical to correlation coefficient"
}
type[[2]] <- "num"
```

Question
========

We have a dataset with `r n` observations on $x$ and $y$. We apply some treatment to the data and transform it to $y1$ and $x1$. The left panel below is the data before, the right panel is the data after treatment:

```{r baplot,echo=FALSE,fig.align='center',fig.width=8}
par(mfrow=c(1,2))
plot(y~x,main="before")
plot(y1~x1,main="after")
if (constr=="centered"){
abline(mod2)
}
```

and you are given the OLS estimates of a regression `r ifelse(constr=="centered","of y on x with","of y1 on x1 without")` an intercept for the data in the `r ifelse(constr=="centered","left","right")` panel:

```{r,echo=FALSE}
if (constr=="centered"){
coef(mod1)
} else {
coef(mod2)
}
```

```{r questionlist, echo = FALSE, results = "asis"}
answerlist(unlist(questions), markup = "markdown")
```

Solution
========

```{r solutionlist, echo = FALSE, results = "asis"}
answerlist(unlist(solutions),paste(unlist(explanations), ".", sep = ""), markup = "markdown")
```

Meta-information
================
extype: cloze
exsolution: `r paste(solutions, collapse = "|")`
exclozetype: `r paste(type, collapse = "|")`
exname: regconstrained
extol: 0.05









share|improve this question
























  • Can you shorten your example to the bare minimum. Also what is your YAML header?
    – snoram
    Nov 20 at 13:11






  • 1




    This is an exercise for the R/exams package (R-exams.org). Hence this is only an R/Markdown fragment without a YAML header.
    – Achim Zeileis
    Nov 24 at 16:06















up vote
0
down vote

favorite









up vote
0
down vote

favorite











I have a problem with the following Rmd to be used with the exams R package. it works for html, but not for pdf and i can't figure out why. I get the plot with 2 panels in html, but it's just missing in teh pdf. thanks!



```{r data generation, echo = FALSE, results = "hide"}
## DATA GENERATION
constr = sample(c("std","centered"),size=1)


n <- sample(35:65,1)

mx <- runif(1, 40, 60)
my <- runif(1, 200, 280)
sx <- runif(1, 9, 12)
sy <- runif(1, 44, 50)
a = runif(1,2,10)
b = sample(c(-3,1.2,3),size = 1)
e = rnorm(n)

r <- round(runif(1, 0.5, 0.9), 2)
x <- rnorm(n, mx, sd = sx)
y <- (r * x/sx + rnorm(n, my/sy - r * mx/sx, sqrt(1 - r^2))) * sy
mod1 = lm(y~x)
x1 = 0
y1 = 0

if (constr == "centered") {
x1 = x - mx
y1 = y - my
} else if (constr == "std") {
x1 = (x - mx) / sx
y1 = (y - my) / sy
}
mod2 = lm(y1~x1-1)


## QUESTION/ANSWER GENERATION
nq = 2
questions <- rep(list(""), nq)
solutions <- rep(list(""), nq)
explanations <- rep(list(""), nq)
type <- rep(list("string"),nq)

questions[[1]] = "What was the treatment we applied to the data? Or answer should either be `centered` or `standardized`. "
if (constr=="centered") {
solutions[[1]] <- "centered"
explanations[[1]] <- "We substracted the mean of each variable"
questions[[2]] = "Give the value of the OLS slope coefficient in the right panel rounded to 3 digits"
solutions[[2]] = round(coef(summary(mod1))[2],3)
explanations[[2]] = "in a centered regression without an intercept, the slope coefficient is identical to the slope of the uncentered data (regression run with intercept)"
} else if (constr == "std") {
solutions[[1]] <- "standardized"
explanations[[1]] <- "You can see that both variables are centered on zero and have a standard deviation of around one."
questions[[2]] = "Give the value of correlation coefficient $r$ between $x$ and $y$ in the left panel rounded to 3 digits"
solutions[[2]] = round(coef(summary(mod2))[1],3)
explanations[[2]] = "in a standardized regression without an intercept, the slope coefficient is identical to correlation coefficient"
}
type[[2]] <- "num"
```

Question
========

We have a dataset with `r n` observations on $x$ and $y$. We apply some treatment to the data and transform it to $y1$ and $x1$. The left panel below is the data before, the right panel is the data after treatment:

```{r baplot,echo=FALSE,fig.align='center',fig.width=8}
par(mfrow=c(1,2))
plot(y~x,main="before")
plot(y1~x1,main="after")
if (constr=="centered"){
abline(mod2)
}
```

and you are given the OLS estimates of a regression `r ifelse(constr=="centered","of y on x with","of y1 on x1 without")` an intercept for the data in the `r ifelse(constr=="centered","left","right")` panel:

```{r,echo=FALSE}
if (constr=="centered"){
coef(mod1)
} else {
coef(mod2)
}
```

```{r questionlist, echo = FALSE, results = "asis"}
answerlist(unlist(questions), markup = "markdown")
```

Solution
========

```{r solutionlist, echo = FALSE, results = "asis"}
answerlist(unlist(solutions),paste(unlist(explanations), ".", sep = ""), markup = "markdown")
```

Meta-information
================
extype: cloze
exsolution: `r paste(solutions, collapse = "|")`
exclozetype: `r paste(type, collapse = "|")`
exname: regconstrained
extol: 0.05









share|improve this question















I have a problem with the following Rmd to be used with the exams R package. it works for html, but not for pdf and i can't figure out why. I get the plot with 2 panels in html, but it's just missing in teh pdf. thanks!



```{r data generation, echo = FALSE, results = "hide"}
## DATA GENERATION
constr = sample(c("std","centered"),size=1)


n <- sample(35:65,1)

mx <- runif(1, 40, 60)
my <- runif(1, 200, 280)
sx <- runif(1, 9, 12)
sy <- runif(1, 44, 50)
a = runif(1,2,10)
b = sample(c(-3,1.2,3),size = 1)
e = rnorm(n)

r <- round(runif(1, 0.5, 0.9), 2)
x <- rnorm(n, mx, sd = sx)
y <- (r * x/sx + rnorm(n, my/sy - r * mx/sx, sqrt(1 - r^2))) * sy
mod1 = lm(y~x)
x1 = 0
y1 = 0

if (constr == "centered") {
x1 = x - mx
y1 = y - my
} else if (constr == "std") {
x1 = (x - mx) / sx
y1 = (y - my) / sy
}
mod2 = lm(y1~x1-1)


## QUESTION/ANSWER GENERATION
nq = 2
questions <- rep(list(""), nq)
solutions <- rep(list(""), nq)
explanations <- rep(list(""), nq)
type <- rep(list("string"),nq)

questions[[1]] = "What was the treatment we applied to the data? Or answer should either be `centered` or `standardized`. "
if (constr=="centered") {
solutions[[1]] <- "centered"
explanations[[1]] <- "We substracted the mean of each variable"
questions[[2]] = "Give the value of the OLS slope coefficient in the right panel rounded to 3 digits"
solutions[[2]] = round(coef(summary(mod1))[2],3)
explanations[[2]] = "in a centered regression without an intercept, the slope coefficient is identical to the slope of the uncentered data (regression run with intercept)"
} else if (constr == "std") {
solutions[[1]] <- "standardized"
explanations[[1]] <- "You can see that both variables are centered on zero and have a standard deviation of around one."
questions[[2]] = "Give the value of correlation coefficient $r$ between $x$ and $y$ in the left panel rounded to 3 digits"
solutions[[2]] = round(coef(summary(mod2))[1],3)
explanations[[2]] = "in a standardized regression without an intercept, the slope coefficient is identical to correlation coefficient"
}
type[[2]] <- "num"
```

Question
========

We have a dataset with `r n` observations on $x$ and $y$. We apply some treatment to the data and transform it to $y1$ and $x1$. The left panel below is the data before, the right panel is the data after treatment:

```{r baplot,echo=FALSE,fig.align='center',fig.width=8}
par(mfrow=c(1,2))
plot(y~x,main="before")
plot(y1~x1,main="after")
if (constr=="centered"){
abline(mod2)
}
```

and you are given the OLS estimates of a regression `r ifelse(constr=="centered","of y on x with","of y1 on x1 without")` an intercept for the data in the `r ifelse(constr=="centered","left","right")` panel:

```{r,echo=FALSE}
if (constr=="centered"){
coef(mod1)
} else {
coef(mod2)
}
```

```{r questionlist, echo = FALSE, results = "asis"}
answerlist(unlist(questions), markup = "markdown")
```

Solution
========

```{r solutionlist, echo = FALSE, results = "asis"}
answerlist(unlist(solutions),paste(unlist(explanations), ".", sep = ""), markup = "markdown")
```

Meta-information
================
extype: cloze
exsolution: `r paste(solutions, collapse = "|")`
exclozetype: `r paste(type, collapse = "|")`
exname: regconstrained
extol: 0.05






r exams






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 20 at 12:57

























asked Nov 20 at 12:51









Florian Oswald

2,07751827




2,07751827












  • Can you shorten your example to the bare minimum. Also what is your YAML header?
    – snoram
    Nov 20 at 13:11






  • 1




    This is an exercise for the R/exams package (R-exams.org). Hence this is only an R/Markdown fragment without a YAML header.
    – Achim Zeileis
    Nov 24 at 16:06




















  • Can you shorten your example to the bare minimum. Also what is your YAML header?
    – snoram
    Nov 20 at 13:11






  • 1




    This is an exercise for the R/exams package (R-exams.org). Hence this is only an R/Markdown fragment without a YAML header.
    – Achim Zeileis
    Nov 24 at 16:06


















Can you shorten your example to the bare minimum. Also what is your YAML header?
– snoram
Nov 20 at 13:11




Can you shorten your example to the bare minimum. Also what is your YAML header?
– snoram
Nov 20 at 13:11




1




1




This is an exercise for the R/exams package (R-exams.org). Hence this is only an R/Markdown fragment without a YAML header.
– Achim Zeileis
Nov 24 at 16:06






This is an exercise for the R/exams package (R-exams.org). Hence this is only an R/Markdown fragment without a YAML header.
– Achim Zeileis
Nov 24 at 16:06














1 Answer
1






active

oldest

votes

















up vote
0
down vote



accepted










TL;DR Omit fig.align='center'.



Background: Without the fig.align, running knitr::knit() on the .Rmd exercise yields plain Markdown output:



![plot of chunk baplot](figure/baplot-1.png)


However, when including it, knitr::knit() yields HTML:



<img src="figure/baplot-1.png" title="plot of chunk baplot" alt="plot of chunk baplot" style="display: block; margin: auto;" />


This has the desired effect when pandoc converts the Markdown to HTML because it simply preserves the HTML. But when pandoc converts to PDF via LaTeX it does not know how to handle the HTML in the Markdown.



Thus, the very modular design of exams does not work here because such formatting details cannot be represented in standard Markdown. There are Markdown dialects that have such extensions but these are not supported by all Markdown processors. That is why the typical recommendation is that Markdown should be mixed with the desired output markup, typically HTML.



Therefore, for R/exams I typically recommend to keep the formatting as simple as possible so that the exercise works robustly in many possible output formats. And centering probably isn't really essential here.






share|improve this answer





















    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53393420%2fplot-appears-in-html-exam-but-not-in-pdf-version%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    0
    down vote



    accepted










    TL;DR Omit fig.align='center'.



    Background: Without the fig.align, running knitr::knit() on the .Rmd exercise yields plain Markdown output:



    ![plot of chunk baplot](figure/baplot-1.png)


    However, when including it, knitr::knit() yields HTML:



    <img src="figure/baplot-1.png" title="plot of chunk baplot" alt="plot of chunk baplot" style="display: block; margin: auto;" />


    This has the desired effect when pandoc converts the Markdown to HTML because it simply preserves the HTML. But when pandoc converts to PDF via LaTeX it does not know how to handle the HTML in the Markdown.



    Thus, the very modular design of exams does not work here because such formatting details cannot be represented in standard Markdown. There are Markdown dialects that have such extensions but these are not supported by all Markdown processors. That is why the typical recommendation is that Markdown should be mixed with the desired output markup, typically HTML.



    Therefore, for R/exams I typically recommend to keep the formatting as simple as possible so that the exercise works robustly in many possible output formats. And centering probably isn't really essential here.






    share|improve this answer

























      up vote
      0
      down vote



      accepted










      TL;DR Omit fig.align='center'.



      Background: Without the fig.align, running knitr::knit() on the .Rmd exercise yields plain Markdown output:



      ![plot of chunk baplot](figure/baplot-1.png)


      However, when including it, knitr::knit() yields HTML:



      <img src="figure/baplot-1.png" title="plot of chunk baplot" alt="plot of chunk baplot" style="display: block; margin: auto;" />


      This has the desired effect when pandoc converts the Markdown to HTML because it simply preserves the HTML. But when pandoc converts to PDF via LaTeX it does not know how to handle the HTML in the Markdown.



      Thus, the very modular design of exams does not work here because such formatting details cannot be represented in standard Markdown. There are Markdown dialects that have such extensions but these are not supported by all Markdown processors. That is why the typical recommendation is that Markdown should be mixed with the desired output markup, typically HTML.



      Therefore, for R/exams I typically recommend to keep the formatting as simple as possible so that the exercise works robustly in many possible output formats. And centering probably isn't really essential here.






      share|improve this answer























        up vote
        0
        down vote



        accepted







        up vote
        0
        down vote



        accepted






        TL;DR Omit fig.align='center'.



        Background: Without the fig.align, running knitr::knit() on the .Rmd exercise yields plain Markdown output:



        ![plot of chunk baplot](figure/baplot-1.png)


        However, when including it, knitr::knit() yields HTML:



        <img src="figure/baplot-1.png" title="plot of chunk baplot" alt="plot of chunk baplot" style="display: block; margin: auto;" />


        This has the desired effect when pandoc converts the Markdown to HTML because it simply preserves the HTML. But when pandoc converts to PDF via LaTeX it does not know how to handle the HTML in the Markdown.



        Thus, the very modular design of exams does not work here because such formatting details cannot be represented in standard Markdown. There are Markdown dialects that have such extensions but these are not supported by all Markdown processors. That is why the typical recommendation is that Markdown should be mixed with the desired output markup, typically HTML.



        Therefore, for R/exams I typically recommend to keep the formatting as simple as possible so that the exercise works robustly in many possible output formats. And centering probably isn't really essential here.






        share|improve this answer












        TL;DR Omit fig.align='center'.



        Background: Without the fig.align, running knitr::knit() on the .Rmd exercise yields plain Markdown output:



        ![plot of chunk baplot](figure/baplot-1.png)


        However, when including it, knitr::knit() yields HTML:



        <img src="figure/baplot-1.png" title="plot of chunk baplot" alt="plot of chunk baplot" style="display: block; margin: auto;" />


        This has the desired effect when pandoc converts the Markdown to HTML because it simply preserves the HTML. But when pandoc converts to PDF via LaTeX it does not know how to handle the HTML in the Markdown.



        Thus, the very modular design of exams does not work here because such formatting details cannot be represented in standard Markdown. There are Markdown dialects that have such extensions but these are not supported by all Markdown processors. That is why the typical recommendation is that Markdown should be mixed with the desired output markup, typically HTML.



        Therefore, for R/exams I typically recommend to keep the formatting as simple as possible so that the exercise works robustly in many possible output formats. And centering probably isn't really essential here.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 24 at 13:05









        Achim Zeileis

        6,06111925




        6,06111925






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53393420%2fplot-appears-in-html-exam-but-not-in-pdf-version%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Wiesbaden

            To store a contact into the json file from server.js file using a class in NodeJS

            Marschland