GithubHelp home page GithubHelp logo

ines / course-starter-r Goto Github PK

View Code? Open in Web Editor NEW
343.0 16.0 85.0 2.89 MB

👩‍🏫🇷 Starter repo for building interactive R courses

Home Page: https://course-starter-r.netlify.com

License: MIT License

R 1.28% JavaScript 38.06% CSS 60.66%
r rstats rstudio online-course gatsby gatsbyjs jupyter binder

course-starter-r's People

Contributors

ines avatar laderast avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

course-starter-r's Issues

Netlify Deploy fails on initial clone

Hello, this demo looks fantastic!

Out of the box, the netlify install seems to fail for reasons that aren't yet clear though.

11:45:38 AM: Build ready to start
11:45:40 AM: build-image version: 6c366b9e0cc38bb3f3a40b7951f398b33cac286d
11:45:40 AM: build-image tag: v3.8.1
11:45:40 AM: buildbot version: 0f3de3d7bd3ff5c1abfa729740350905f7c3f3e8
11:45:40 AM: Building without cache
11:45:40 AM: Starting to prepare the repo for build
11:45:40 AM: No cached dependencies found. Cloning fresh repo
11:45:40 AM: git clone https://github.com/joseph-allen/r-starter-test
11:45:41 AM: Preparing Git Reference refs/heads/master
11:45:41 AM: Parsing package.json dependencies
11:45:42 AM: Starting build script
11:45:42 AM: Installing dependencies
11:45:42 AM: Python version set to 2.7
11:45:43 AM: v12.18.0 is already installed.
11:45:44 AM: Now using node v12.18.0 (npm v6.14.4)
11:45:44 AM: Started restoring cached build plugins
11:45:44 AM: Finished restoring cached build plugins
11:45:44 AM: Attempting ruby version 2.7.2, read from environment
11:45:46 AM: Using ruby version 2.7.2
11:45:46 AM: Using PHP version 5.6
11:45:46 AM: Started restoring cached node modules
11:45:46 AM: Finished restoring cached node modules
11:45:46 AM: Installing NPM modules using NPM version 6.14.4
11:46:25 AM: > [email protected] install /opt/build/repo/node_modules/sharp
11:46:25 AM: > (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)
11:46:27 AM: info sharp Downloading https://github.com/lovell/sharp-libvips/releases/download/v8.7.0/libvips-8.7.0-linux-x64.tar.gz
11:46:29 AM: prebuild-install WARN install No prebuilt binaries found (target=12.18.0 runtime=node arch=x64 libc= platform=linux)
11:46:33 AM: make: Entering directory '/opt/build/repo/node_modules/sharp/build'
11:46:33 AM:   TOUCH Release/obj.target/libvips-cpp.stamp
11:46:33 AM:   CXX(target) Release/obj.target/sharp/src/common.o
11:46:34 AM: In file included from ../src/common.cc:27:0:
11:46:34 AM: ../src/common.h:78:16: error: ‘Handle’ is not a member of ‘v8’
11:46:34 AM:    bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
11:46:34 AM:                 ^
11:46:34 AM: ../src/common.h:78:37: error: expected primary-expression before ‘>’ token
11:46:34 AM:    bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
11:46:34 AM:                                      ^
11:46:34 AM: ../src/common.h:78:39: error: ‘obj’ was not declared in this scope
11:46:34 AM:    bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
11:46:34 AM:                                        ^
11:46:34 AM: ../src/common.h:78:56: error: expected primary-expression before ‘attr’
11:46:34 AM:    bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
11:46:34 AM:                                                         ^
11:46:34 AM: ../src/common.h:78:60: error: expression list treated as compound expression in initializer [-fpermissive]
11:46:34 AM:    bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
11:46:34 AM:                                                             ^
11:46:34 AM: ../src/common.h:79:25: error: ‘Handle’ is not a member of ‘v8’
11:46:34 AM:    std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
11:46:34 AM:                          ^
11:46:34 AM: ../src/common.h:79:46: error: expected primary-expression before ‘>’ token
11:46:34 AM:    std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
11:46:34 AM:                                               ^
11:46:34 AM: ../src/common.h:79:48: error: ‘obj’ was not declared in this scope
11:46:34 AM:    std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
11:46:34 AM:                                                 ^
11:46:34 AM: ../src/common.h:79:65: error: expected primary-expression before ‘attr’
11:46:34 AM:    std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
11:46:34 AM:                                                                  ^
11:46:34 AM: ../src/common.h:80:34: error: ‘Handle’ is not a member of ‘v8’
11:46:34 AM:    std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
11:46:34 AM:                                   ^
11:46:34 AM: ../src/common.h:80:55: error: expected primary-expression before ‘>’ token
11:46:34 AM:    std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
11:46:34 AM:                                                        ^
11:46:34 AM: ../src/common.h:80:57: error: ‘obj’ was not declared in this scope
11:46:34 AM:    std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
11:46:34 AM:                                                          ^
11:46:34 AM: ../src/common.h:80:74: error: expected primary-expression before ‘attr’
11:46:34 AM:    std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
11:46:34 AM:                                                                           ^
11:46:34 AM: ../src/common.h:81:44: error: ‘Handle’ is not a member of ‘v8’
11:46:34 AM:    template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                                             ^
11:46:34 AM: ../src/common.h:81:65: error: expected primary-expression before ‘>’ token
11:46:34 AM:    template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                                                                  ^
11:46:34 AM: ../src/common.h:81:67: error: ‘obj’ was not declared in this scope
11:46:34 AM:    template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                                                                    ^
11:46:34 AM: ../src/common.h:81:84: error: expected primary-expression before ‘attr’
11:46:34 AM:    template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                                                                                     ^
11:46:34 AM: ../src/common.h:81:37: warning: variable templates only available with -std=c++14 or -std=gnu++14
11:46:34 AM:    template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                                      ^
11:46:34 AM: ../src/common.h:81:90: error: expected ‘;’ before ‘{’ token
11:46:34 AM:    template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                                                                                           ^
11:46:34 AM: ../src/common.h:84:33: error: ‘Handle’ is not a member of ‘v8’
11:46:34 AM:    template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                                  ^
11:46:34 AM: ../src/common.h:84:54: error: expected primary-expression before ‘>’ token
11:46:34 AM:    template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                                                       ^
11:46:34 AM: ../src/common.h:84:56: error: ‘obj’ was not declared in this scope
11:46:34 AM:    template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                                                         ^
11:46:34 AM: ../src/common.h:84:73: error: expected primary-expression before ‘attr’
11:46:34 AM:    template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                                                                          ^
11:46:34 AM: ../src/common.h:84:26: warning: variable templates only available with -std=c++14 or -std=gnu++14
11:46:34 AM:    template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                           ^
11:46:34 AM: ../src/common.h:84:79: error: expected ‘;’ before ‘{’ token
11:46:34 AM:    template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                                                                                ^
11:46:34 AM: ../src/common.h:87:33: error: ‘Handle’ is not a member of ‘v8’
11:46:34 AM:    template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
11:46:34 AM:                                  ^
11:46:34 AM: ../src/common.h:87:54: error: expected primary-expression before ‘>’ token
11:46:34 AM:    template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
11:46:34 AM:                                                       ^
11:46:34 AM: ../src/common.h:87:56: error: ‘obj’ was not declared in this scope
11:46:34 AM:    template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
11:46:34 AM:                                                         ^
11:46:34 AM: ../src/common.h:87:61: error: expected primary-expression before ‘int’
11:46:34 AM:    template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
11:46:34 AM:                                                              ^
11:46:34 AM: ../src/common.h:84:26: warning: variable templates only available with -std=c++14 or -std=gnu++14
11:46:34 AM:    template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                           ^
11:46:34 AM: ../src/common.h:87:71: error: expected ‘;’ before ‘{’ token
11:46:34 AM:    template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
11:46:34 AM:                                                                        ^
11:46:34 AM: ../src/common.h:93:5: error: ‘Handle’ is not a member of ‘v8’
11:46:34 AM:      v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
11:46:34 AM:      ^
11:46:34 AM: ../src/common.h:93:26: error: expected primary-expression before ‘>’ token
11:46:34 AM:      v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
11:46:34 AM:                           ^
11:46:34 AM: ../src/common.h:93:28: error: ‘input’ was not declared in this scope
11:46:34 AM:      v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
11:46:34 AM:                             ^
11:46:34 AM: ../src/common.h:93:70: error: expected primary-expression before ‘&’ token
11:46:34 AM:      v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
11:46:34 AM:                                                                       ^
11:46:34 AM: ../src/common.h:93:71: error: ‘buffersToPersist’ was not declared in this scope
11:46:34 AM:      v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
11:46:34 AM:                                                                        ^
11:46:34 AM: ../src/common.h:93:87: error: expression list treated as compound expression in initializer [-fpermissive]
11:46:34 AM:      v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
11:46:34 AM:                                                                                        ^
11:46:34 AM: ../src/common.cc:34:20: error: redefinition of ‘bool sharp::HasAttr’
11:46:34 AM:    bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                     ^
11:46:34 AM: In file included from ../src/common.cc:27:0:
11:46:34 AM: ../src/common.h:78:8: note: ‘bool sharp::HasAttr’ previously defined here
11:46:34 AM:    bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
11:46:34 AM:         ^
11:46:34 AM: ../src/common.cc:34:16: error: ‘Handle’ is not a member of ‘v8’
11:46:34 AM:    bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                 ^
11:46:34 AM: ../src/common.cc:34:37: error: expected primary-expression before ‘>’ token
11:46:34 AM:    bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                                      ^
11:46:34 AM: ../src/common.cc:34:39: error: ‘obj’ was not declared in this scope
11:46:34 AM:    bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                                        ^
11:46:34 AM: ../src/common.cc:34:56: error: expected primary-expression before ‘attr’
11:46:34 AM:    bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                                                         ^
11:46:34 AM: ../src/common.cc:37:29: error: redefinition of ‘std::string sharp::AttrAsStr’
11:46:34 AM:    std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                              ^
11:46:34 AM: In file included from ../src/common.cc:27:0:
11:46:34 AM: ../src/common.h:79:15: note: ‘std::string sharp::AttrAsStr’ previously declared here
11:46:34 AM:    std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
11:46:34 AM:                ^
11:46:34 AM: ../src/common.cc:37:25: error: ‘Handle’ is not a member of ‘v8’
11:46:34 AM:    std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                          ^
11:46:34 AM: ../src/common.cc:37:46: error: expected primary-expression before ‘>’ token
11:46:34 AM:    std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                                               ^
11:46:34 AM: ../src/common.cc:37:48: error: ‘obj’ was not declared in this scope
11:46:34 AM:    std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                                                 ^
11:46:34 AM: ../src/common.cc:37:65: error: expected primary-expression before ‘attr’
11:46:34 AM:    std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                                                                  ^
11:46:34 AM: ../src/common.cc:40:38: error: redefinition of ‘std::vector<double> sharp::AttrAsRgba’
11:46:34 AM:    std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                                       ^
11:46:34 AM: In file included from ../src/common.cc:27:0:
11:46:34 AM: ../src/common.h:80:23: note: ‘std::vector<double> sharp::AttrAsRgba’ previously declared here
11:46:34 AM:    std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
11:46:34 AM:                        ^
11:46:34 AM: ../src/common.cc:40:34: error: ‘Handle’ is not a member of ‘v8’
11:46:34 AM:    std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                                   ^
11:46:34 AM: ../src/common.cc:40:55: error: expected primary-expression before ‘>’ token
11:46:34 AM:    std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                                                        ^
11:46:34 AM: ../src/common.cc:40:57: error: ‘obj’ was not declared in this scope
11:46:34 AM:    std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                                                          ^
11:46:34 AM: ../src/common.cc:40:74: error: expected primary-expression before ‘attr’
11:46:34 AM:    std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
11:46:34 AM:                                                                           ^
11:46:34 AM: ../src/common.cc:654:1: error: expected ‘}’ at end of input
11:46:34 AM:  }  // namespace sharp
11:46:34 AM:  ^
11:46:34 AM: cc1plus: warning: unrecognized command line option ‘-Wno-cast-function-type’
11:46:34 AM: sharp.target.mk:138: recipe for target 'Release/obj.target/sharp/src/common.o' failed
11:46:34 AM: make: *** [Release/obj.target/sharp/src/common.o] Error 1
11:46:34 AM: make: Leaving directory '/opt/build/repo/node_modules/sharp/build'
11:46:34 AM: gyp ERR! build error
11:46:34 AM: gyp ERR! stack Error: `make` failed with exit code: 2
11:46:34 AM: gyp ERR! stack     at ChildProcess.onExit (/opt/buildhome/.nvm/versions/node/v12.18.0/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
11:46:34 AM: gyp ERR! stack     at ChildProcess.emit (events.js:315:20)
11:46:34 AM: gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
11:46:34 AM: gyp ERR! System Linux 4.19.167+
11:46:34 AM: gyp ERR! command "/opt/buildhome/.nvm/versions/node/v12.18.0/bin/node" "/opt/buildhome/.nvm/versions/node/v12.18.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
11:46:34 AM: gyp ERR! cwd /opt/build/repo/node_modules/sharp
11:46:34 AM: gyp ERR! node -v v12.18.0
11:46:34 AM: gyp ERR! node-gyp -v v5.1.0
11:46:34 AM: gyp ERR! not ok
11:46:36 AM: npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/fsevents):
11:46:36 AM: npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
11:46:36 AM: npm ERR! code ELIFECYCLE
11:46:36 AM: npm ERR! errno 1
11:46:36 AM: npm ERR! [email protected] install: `(node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)`
11:46:36 AM: npm ERR! Exit status 1
11:46:36 AM: npm ERR!
11:46:36 AM: npm ERR! Failed at the [email protected] install script.
11:46:36 AM: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
11:46:36 AM: npm ERR! A complete log of this run can be found in:
11:46:36 AM: npm ERR!     /opt/buildhome/.npm/_logs/2021-07-21T10_46_36_396Z-debug.log
11:46:36 AM: Error during NPM install
11:46:36 AM: Build was terminated: Build script returned non-zero exit code: 1
11:46:36 AM: Creating deploy upload records
11:46:36 AM: Failing build: Failed to build site
11:46:36 AM: Failed during stage 'building site': Build script returned non-zero exit code: 1
11:46:36 AM: Finished processing build request in 56.316113869s

/data folder doesn't seem to work

When I add a data folder as I've done here -> https://github.com/UKDataServiceOpen/r-course-starter/tree/master/data

running

# test read in the dataset from /data/test.txt
df <- read.table('data/test.txt', header = FALSE)

causes

Warning message in file(file, "rt"):
“cannot open file 'data/test.txt': No such file or directory”
Error in file(file, "rt"): cannot open the connection
Traceback:

1. read.table("data/test.txt", header = FALSE)
2. file(file, "rt")

meanwhile

# read from web hosted files
df <- read.table("https://s3.amazonaws.com/assets.datacamp.com/blog_assets/test.txt", 
                 header = FALSE)

works

blank page in localhost when click on exercise

Hi - i really love this package thanks for developing it. I'm having a problem with gatsby develop so this may or may not be something you can help with. When i run gatsby develop everything compiles successfully and the index page as well as chapter pages show up fine but now when i click on an exercise it just shows a blank page.

However, when I deploy to netlify everything works fine. Similarly gatsby build works fine and shows all exercises on localhost:9000. The only warning after gatsby build I got was:

success Building production JavaScript and CSS bundles — 45.995 s
success Building static HTML for pages — 4.357 s — 15/15 25.65 pages/second
warn app-bc1df976b41477c5ba00.js is 2.22 MB, and won't be precached. Configure
Generated public/sw.js, which will precache 7 files, totaling 257024 bytes.

Do you have any tips for how I can try and find out what is going wrong with gatsby develop? It's getting a bit annoying to have to commit-push to see changes.

Thanks very much.

Multiple choice quizzes

Hi @ines,

Thanks for your great work on the course framework! It's really awesome! 👍

There is one thing we cannot figure out, is it possible to have multiple choice quizzes instead of just being able to pick one of the given options?

Thanks a lot 🙂

more than one multiple choice question in the same exercise

Hi @ines,

I am trying to build a web-based course for a conference workshop I am giving in August. A colleague set up our site based on your course-starter-r template, and I am trying to figure out how to have 3 multiple choice questions in one exercise. Right now, the first one works fine, but you can't select the options in the other two questions. Do I need to make a separate exercise for each multiple choice question or is there something I missed in the chapter1 markdown that will make it work properly to have all three questions in the same exercise?

Todos

I don't have much experience with R, so I hope that you lovely R people can help me out here 😃

To my surprise, the basics all worked pretty smoothly! There's an R binder that executes code and plots work pretty much out-of-the-box (although they have to be wrapped in print statements due to this issue to prevent a warning from showing up). You can see it in action here: https://course-starter-r.netlify.com

Here's what's still outstanding:

  • A better example. I copy-pasted something together for the current exercises. The example should ideally show a few different things that are possible in the current framework.
  • Testing, especially the plotting stuff.
  • Improve validation when the user clicks "submit".

This part is handled by the testTemplate. For Python, it'd look something like this:

__solution__ = """${solution}"""
${solution}

${test}
try:
    test()
except AssertionError as e:
    print(e)

Under the hood, the app replaces ${solution} with the string value of the submitted user code and ${test} with the contents of the respective test file. So in the above example, we execute the solution, but also make it available as a string. This allows checking the actual objects that were created, but also doing string matches (like, print(doc.text) in __solution__).

For R, I currently have this (which works okay so far):

${solution}

${test}

tryCatch({
    test()
}, error = function(e) {
    cat(paste(e[1]))
})

The tryCatch is supposed to hide the traceback – otherwise, the user would see what caused the error / stop – which is usually a test that reveals the solution.

I haven't vet added the string value, because I'm not sure how to represent multi-line strings like Python's """string"" in R. We have to expect that ${solution} includes various quotation marks, so if we paste it in, we don't want to mess up the string. Alternatively, maybe there's an easy way to escape / unescape quotes etc?

Installation on mac

@ines .. thanks for sharing the frameworK... I think it absolutely wonderful..
To be honest, I am really novice in gatsby and Node.js programming.. I just trying to follow your instructions on you web and
I'm having a hard time, try to using using the template...
Initially I could run the app.. but I don't know what I have done wrongly after having an actualization of Mac and I can not anymore. I see the plugins are the problem.. but I don't have any clue how can I solve it.
(I erase and re-install my Command Line Tool).

Thanks for the help if it's possible
I really appreciate !
Thanks :)

System

OS: macOS 10.15.7
Node: v14.15.0
npm: 6.14.8

Error from Rstudio terminal

> gatsby develop

success open and validate gatsby-configs - 0.050s
error Invalid plugin options for "gatsby-plugin-sass":

- "postCssPlugins[0]" must be of type object
error Invalid plugin options for "gatsby-remark-images":

- "withWebp" must be a boolean
not finished load plugins - 5.182s
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] dev: `gatsby develop`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/fabio/.npm/_logs/2020-11-10T20_02_54_787Z-debug.log

Any plans to add completion confirmation options?

I would like to create a course and then be "sure" that my students have completed it. Any plans to add this sort of functionality? One method would be, once a student has "finished" --- defined in some reasonable manner --- they get issued a hash which they provide to me.

Embedding videos

Hi @ines!

Thanks for your great work and the course templates! 👏

I saw that in your spaCy course you now also have videos. Are you planning to put those in the templates as well?

If you could hint me to the files/relevant lines I could give it a try myself and create a PR.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.