coursegen 0.8.3 → 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/pr.yml +19 -0
- data/.gitignore +3 -0
- data/Gemfile.lock +60 -35
- data/README.md +285 -69
- data/Rakefile +10 -1
- data/coursegen.gemspec +26 -26
- data/lib/coursegen.rb +5 -2
- data/lib/coursegen/cli.rb +49 -14
- data/lib/coursegen/course/data/citem.rb +10 -1
- data/lib/coursegen/course/data/data_adaptor.rb +16 -6
- data/lib/coursegen/course/data/section.rb +1 -1
- data/lib/coursegen/course/helpers/bootstrap_markup.rb +15 -15
- data/lib/coursegen/course/helpers/content_helpers.rb +86 -71
- data/lib/coursegen/course/helpers/formatting_helpers.rb +6 -10
- data/lib/coursegen/course/helpers/ical_feed_helpers.rb +2 -1
- data/lib/coursegen/course/helpers/lecture_helpers.rb +3 -2
- data/lib/coursegen/course/helpers/list_of.rb +40 -20
- data/lib/coursegen/course/helpers/list_of_helpers.rb +20 -14
- data/lib/coursegen/course/helpers/logging_helpers.rb +13 -12
- data/lib/coursegen/course/helpers/navigation_helpers.rb +62 -23
- data/lib/coursegen/course/helpers/sidebar_helpers.rb +19 -18
- data/lib/coursegen/course/helpers/table_helpers.rb +5 -4
- data/lib/coursegen/course/schedule/scheduler.rb +52 -19
- data/lib/coursegen/templates.rb +30 -23
- data/lib/coursegen/version.rb +3 -1
- data/spec/lectures_spec.rb +60 -50
- data/spec/play_spec.rb +24 -12
- data/spec/scheduler_spec.rb +87 -27
- data/tech_debt.md +5 -0
- data/templates/Rules +14 -19
- data/templates/cg_config.rb +105 -21
- data/templates/content/bootstrap/css/custom.css +87 -151
- data/templates/content/bootstrap/css/full-width-pics.css +8 -64
- data/templates/content/bootstrap/css/postit.css +7 -0
- data/templates/content/bootstrap/css/toasty.css +3 -0
- data/templates/content/content/index.md.erb +1 -1
- data/templates/content/content/intro/course_toc.md.erb +0 -1
- data/templates/content/content/intro/welcome.md.erb +1 -3
- data/templates/content/content/lectures/part1/02_here_we_go.md.erb +22 -1
- data/templates/content/content/lectures/part2/01_start_part2.md.erb +2 -1
- data/templates/content/content/lectures/part2/02_continue_part2.md.erb +3 -2
- data/templates/layouts/banner.html.erb +4 -4
- data/templates/layouts/body_footer.html +3 -4
- data/templates/layouts/body_header.html.erb +25 -7
- data/templates/layouts/bottom_includes.html.erb +21 -10
- data/templates/layouts/course.html.erb +7 -21
- data/templates/layouts/helpful_box.html +1 -1
- data/templates/layouts/nav-menus.html.erb +16 -36
- data/templates/layouts/sidebar.html.erb +9 -8
- data/templates/layouts/slides.html.erb +69 -0
- data/templates/layouts/top_includes.html.erb +24 -23
- metadata +32 -24
- data/.DS_Store +0 -0
- data/.vscode/settings.json +0 -2
- data/templates/.DS_Store +0 -0
- data/templates/Guardfile +0 -9
- data/templates/content/bootstrap/css/tipuesearch.css +0 -163
- data/templates/content/bootstrap/js/tipuesearch.js +0 -379
- data/templates/content/bootstrap/js/tipuesearch.min.js +0 -12
- data/templates/content/bootstrap/js/tipuesearch_content.js +0 -13
- data/templates/content/bootstrap/js/tipuesearch_set.js +0 -23
- data/templates/layouts/main_navbar.html.erb +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2c8c20c18654bed952a0b1f5e488977f54e613bb0a0c6934e472d028a4abed89
|
4
|
+
data.tar.gz: 8db99fc9a6fa6aea08b9b6dd4d1f6de1a1e3a9b7e1757f1305482ac781bccd89
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ab21fdc5c79763690101f1ddd93ff37ec94d26033e6d6f0f35f20ce65bee9d4e7294b2ee5bb667d6319455662fa9b258c231bba79e1b181d072f577049f962f
|
7
|
+
data.tar.gz: 981f8abcb7940b83582b8dbb998449871acf2d8a8704d7b575cd8b1b6a072287916850a0187bf0e3dc45f6a50deec36b8843f1b1f8ea7039813b0dabc265e46e
|
@@ -0,0 +1,19 @@
|
|
1
|
+
env:
|
2
|
+
RUBY_VERSION: 2.6
|
3
|
+
name: Gem build
|
4
|
+
on: [pull_request]
|
5
|
+
jobs:
|
6
|
+
rspec-test:
|
7
|
+
name: RSpec
|
8
|
+
runs-on: ubuntu-18.04
|
9
|
+
steps:
|
10
|
+
- uses: actions/checkout@v1
|
11
|
+
- uses: actions/setup-ruby@v1
|
12
|
+
with:
|
13
|
+
ruby-version: ${{ env.RUBY_VERSION }}
|
14
|
+
- name: Install dependencies
|
15
|
+
run: |
|
16
|
+
gem install bundler
|
17
|
+
bundler install
|
18
|
+
- name: Run tests
|
19
|
+
run: bundler exec rake spec
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
coursegen (0.
|
4
|
+
coursegen (0.9.1)
|
5
5
|
activesupport
|
6
6
|
adsf
|
7
7
|
byebug
|
@@ -19,31 +19,31 @@ PATH
|
|
19
19
|
GEM
|
20
20
|
remote: https://rubygems.org/
|
21
21
|
specs:
|
22
|
-
activesupport (6.0.
|
22
|
+
activesupport (6.0.3.1)
|
23
23
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
24
24
|
i18n (>= 0.7, < 2)
|
25
25
|
minitest (~> 5.1)
|
26
26
|
tzinfo (~> 1.1)
|
27
|
-
zeitwerk (~> 2.2)
|
27
|
+
zeitwerk (~> 2.2, >= 2.2.2)
|
28
28
|
addressable (2.7.0)
|
29
29
|
public_suffix (>= 2.0.2, < 5.0)
|
30
30
|
adsf (1.4.3)
|
31
31
|
rack (>= 1.0.0, < 3.0.0)
|
32
|
-
byebug (11.1.
|
33
|
-
coderay (1.1.
|
32
|
+
byebug (11.1.3)
|
33
|
+
coderay (1.1.3)
|
34
34
|
colored (1.2)
|
35
35
|
concurrent-ruby (1.1.6)
|
36
|
-
cri (2.15.
|
36
|
+
cri (2.15.10)
|
37
37
|
ddmemoize (1.0.0)
|
38
38
|
ddmetrics (~> 1.0)
|
39
39
|
ref (~> 2.0)
|
40
40
|
ddmetrics (1.0.1)
|
41
41
|
ddplugin (1.0.2)
|
42
|
-
diff-lcs (1.
|
42
|
+
diff-lcs (1.4.4)
|
43
43
|
equatable (0.6.1)
|
44
|
-
ffi (1.
|
44
|
+
ffi (1.13.1)
|
45
45
|
formatador (0.2.5)
|
46
|
-
guard (2.16.
|
46
|
+
guard (2.16.2)
|
47
47
|
formatador (>= 0.2.4)
|
48
48
|
listen (>= 2.7, < 4.0)
|
49
49
|
lumberjack (>= 1.0.12, < 2.0)
|
@@ -58,35 +58,41 @@ GEM
|
|
58
58
|
guard-compat (~> 1.0)
|
59
59
|
hamster (3.0.0)
|
60
60
|
concurrent-ruby (~> 1.0)
|
61
|
-
i18n (1.8.
|
61
|
+
i18n (1.8.3)
|
62
62
|
concurrent-ruby (~> 1.0)
|
63
63
|
icalendar (2.6.1)
|
64
64
|
ice_cube (~> 0.16)
|
65
65
|
ice_cube (0.16.3)
|
66
|
-
json (2.
|
66
|
+
json (2.3.0)
|
67
67
|
json_schema (0.20.8)
|
68
|
-
kramdown (2.1
|
68
|
+
kramdown (2.2.1)
|
69
|
+
rexml
|
69
70
|
listen (3.2.1)
|
70
71
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
71
72
|
rb-inotify (~> 0.9, >= 0.9.10)
|
72
|
-
lumberjack (1.
|
73
|
-
method_source (0.
|
73
|
+
lumberjack (1.2.5)
|
74
|
+
method_source (1.0.0)
|
74
75
|
mini_portile2 (2.4.0)
|
75
|
-
minitest (5.14.
|
76
|
-
nanoc (4.11.
|
76
|
+
minitest (5.14.1)
|
77
|
+
nanoc (4.11.16)
|
77
78
|
addressable (~> 2.5)
|
78
79
|
colored (~> 1.2)
|
79
|
-
nanoc-
|
80
|
-
nanoc-
|
80
|
+
nanoc-checking (~> 1.0)
|
81
|
+
nanoc-cli (= 4.11.16)
|
82
|
+
nanoc-core (= 4.11.16)
|
83
|
+
nanoc-deploying (~> 1.0)
|
81
84
|
parallel (~> 1.12)
|
82
85
|
tty-command (~> 0.8)
|
83
86
|
tty-which (~> 0.4)
|
84
|
-
nanoc-
|
87
|
+
nanoc-checking (1.0.0)
|
88
|
+
nanoc-cli (~> 4.11, >= 4.11.15)
|
89
|
+
nanoc-core (~> 4.11, >= 4.11.15)
|
90
|
+
nanoc-cli (4.11.16)
|
85
91
|
cri (~> 2.15)
|
86
92
|
diff-lcs (~> 1.3)
|
87
|
-
nanoc-core (= 4.11.
|
93
|
+
nanoc-core (= 4.11.16)
|
88
94
|
zeitwerk (~> 2.1)
|
89
|
-
nanoc-core (4.11.
|
95
|
+
nanoc-core (4.11.16)
|
90
96
|
ddmemoize (~> 1.0)
|
91
97
|
ddmetrics (~> 1.0)
|
92
98
|
ddplugin (~> 1.0)
|
@@ -96,26 +102,44 @@ GEM
|
|
96
102
|
tomlrb (~> 1.2)
|
97
103
|
tty-platform (~> 0.2)
|
98
104
|
zeitwerk (~> 2.1)
|
105
|
+
nanoc-deploying (1.0.0)
|
106
|
+
nanoc-checking (~> 1.0)
|
107
|
+
nanoc-cli (~> 4.11, >= 4.11.15)
|
108
|
+
nanoc-core (~> 4.11, >= 4.11.15)
|
99
109
|
nenv (0.3.0)
|
100
|
-
nokogiri (1.10.
|
110
|
+
nokogiri (1.10.9)
|
101
111
|
mini_portile2 (~> 2.4.0)
|
102
112
|
notiffany (0.1.3)
|
103
113
|
nenv (~> 0.1)
|
104
114
|
shellany (~> 0.0)
|
105
115
|
parallel (1.19.1)
|
106
|
-
pastel (0.7.
|
116
|
+
pastel (0.7.4)
|
107
117
|
equatable (~> 0.6)
|
108
118
|
tty-color (~> 0.5)
|
109
|
-
pry (0.
|
110
|
-
coderay (~> 1.1
|
111
|
-
method_source (~>
|
112
|
-
public_suffix (4.0.
|
119
|
+
pry (0.13.1)
|
120
|
+
coderay (~> 1.1)
|
121
|
+
method_source (~> 1.0)
|
122
|
+
public_suffix (4.0.5)
|
113
123
|
rack (2.2.2)
|
114
|
-
rake (13.0.
|
115
|
-
rb-fsevent (0.10.
|
124
|
+
rake (13.0.1)
|
125
|
+
rb-fsevent (0.10.4)
|
116
126
|
rb-inotify (0.10.1)
|
117
127
|
ffi (~> 1.0)
|
118
128
|
ref (2.0.0)
|
129
|
+
rexml (3.2.4)
|
130
|
+
rspec (3.9.0)
|
131
|
+
rspec-core (~> 3.9.0)
|
132
|
+
rspec-expectations (~> 3.9.0)
|
133
|
+
rspec-mocks (~> 3.9.0)
|
134
|
+
rspec-core (3.9.2)
|
135
|
+
rspec-support (~> 3.9.3)
|
136
|
+
rspec-expectations (3.9.2)
|
137
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
138
|
+
rspec-support (~> 3.9.0)
|
139
|
+
rspec-mocks (3.9.1)
|
140
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
141
|
+
rspec-support (~> 3.9.0)
|
142
|
+
rspec-support (3.9.3)
|
119
143
|
rubytree (1.0.0)
|
120
144
|
json (~> 2.1)
|
121
145
|
structured_warnings (~> 0.3)
|
@@ -124,15 +148,15 @@ GEM
|
|
124
148
|
structured_warnings (0.4.0)
|
125
149
|
thor (1.0.1)
|
126
150
|
thread_safe (0.3.6)
|
127
|
-
tomlrb (1.
|
128
|
-
tty-color (0.5.
|
151
|
+
tomlrb (1.3.0)
|
152
|
+
tty-color (0.5.1)
|
129
153
|
tty-command (0.9.0)
|
130
154
|
pastel (~> 0.7.0)
|
131
|
-
tty-platform (0.
|
132
|
-
tty-which (0.4.
|
133
|
-
tzinfo (1.2.
|
155
|
+
tty-platform (0.3.0)
|
156
|
+
tty-which (0.4.2)
|
157
|
+
tzinfo (1.2.7)
|
134
158
|
thread_safe (~> 0.1)
|
135
|
-
zeitwerk (2.
|
159
|
+
zeitwerk (2.3.0)
|
136
160
|
|
137
161
|
PLATFORMS
|
138
162
|
ruby
|
@@ -141,6 +165,7 @@ DEPENDENCIES
|
|
141
165
|
bundler
|
142
166
|
coursegen!
|
143
167
|
rake
|
168
|
+
rspec
|
144
169
|
|
145
170
|
BUNDLED WITH
|
146
171
|
2.1.4
|
data/README.md
CHANGED
@@ -1,79 +1,295 @@
|
|
1
1
|
# Coursegen
|
2
2
|
|
3
|
-
|
3
|
+
Coursegen is a course curriculum site generator based on [nanoc](https://github.com/nanoc/nanoc), with support for sections, lectures, code examples, homeworks, course calendar and lots more.
|
4
4
|
|
5
|
-
|
5
|
+
## Work in progress
|
6
6
|
|
7
7
|
This gem is still under development. In the current form it can already be used but I will be adding more convenience features in the near future.
|
8
8
|
|
9
|
-
#
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
###
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
9
|
+
# Table of Contents
|
10
|
+
|
11
|
+
- [Install](#install)
|
12
|
+
- [Prerequisites](#prerequisites)
|
13
|
+
- [Getting Started](#getting-started)
|
14
|
+
- [Generating a blank course](#generating-a-blank-course)
|
15
|
+
- [Adding course to Github (Optional)](#adding-course-to-github-optional)
|
16
|
+
- [Adding a lecture](#adding-a-lecture)
|
17
|
+
- [Developing locally](#developing-locally)
|
18
|
+
- [Deploying to S3](#deploying-to-s3)
|
19
|
+
- [Search](#search)
|
20
|
+
- [Configuration](#configuration)
|
21
|
+
- [Examples](#examples)
|
22
|
+
- [Lectures](#lectures)
|
23
|
+
- [Course Sites](#course-sites)
|
24
|
+
- [Features](#features)
|
25
|
+
- [Slides](#slides)
|
26
|
+
- [Open Source Catalog of Topics](#open-source-catalog-of-topics)
|
27
|
+
- [Using course contents from another folder](#using-course-contents-from-another-folder)
|
28
|
+
- [License](#license)
|
29
|
+
|
30
|
+
## Install
|
31
|
+
|
32
|
+
### Prerequisites
|
33
|
+
|
34
|
+
Before installing Coursegen, make sure the following tools are installed.
|
35
|
+
|
36
|
+
- [Ruby >= 2.6](https://www.ruby-lang.org/en/documentation/installation/)
|
37
|
+
- [s3cmd](https://github.com/s3tools/s3cmd) (for deploying to AWS S3)
|
38
|
+
|
39
|
+
Using Coursegen is easy. Install the gem using rubygem.
|
40
|
+
|
41
|
+
```bash
|
42
|
+
gem install coursegen
|
43
|
+
```
|
44
|
+
|
45
|
+
## Getting Started
|
46
|
+
|
47
|
+
While you are welcome to provide your own organization, typically a Coursegen-based application will follow the following organizational structure:
|
48
|
+
|
49
|
+
```bash
|
50
|
+
├── Guardfile
|
51
|
+
├── Rules
|
52
|
+
├── cg_config.rb
|
53
|
+
├── cg_config.rb_sample
|
54
|
+
├── content
|
55
|
+
│ ├── bootstrap
|
56
|
+
│ ├── content
|
57
|
+
│ └── images
|
58
|
+
├── layouts
|
59
|
+
│ ├── banner.html.erb
|
60
|
+
│ ├── body_footer.html
|
61
|
+
│ ├── body_header.html.erb
|
62
|
+
│ └── ...
|
63
|
+
├── lib
|
64
|
+
│ └── default.rb
|
65
|
+
├── nanoc.yaml
|
66
|
+
└── output
|
67
|
+
```
|
68
|
+
|
69
|
+
### Generating a blank course
|
70
|
+
|
71
|
+
First, use `cg new` to create a new course named "MYCOURSE" locally containing the course skeleton.
|
72
|
+
|
73
|
+
```bash
|
74
|
+
cg new MYCOURSE
|
75
|
+
```
|
76
|
+
|
77
|
+
Next, go into the newly created directory and use `cg prepare` to load up the template and basics.
|
78
|
+
|
79
|
+
```bash
|
80
|
+
cd MYCOURSE; cg prepare
|
81
|
+
```
|
82
|
+
|
83
|
+
### Adding course to Github (Optional)
|
84
|
+
|
85
|
+
Follow [Github's instructions](https://help.github.com/en/github/importing-your-projects-to-github/adding-an-existing-project-to-github-using-the-command-line) to create a Github repo for the site.
|
86
|
+
|
87
|
+
### Adding a lecture
|
88
|
+
|
89
|
+
All the course's materials are located under `content/content`.
|
90
|
+
|
91
|
+
```bash
|
92
|
+
content
|
93
|
+
└── content
|
94
|
+
├── extras
|
95
|
+
├── index.md.erb
|
96
|
+
├── intro
|
97
|
+
└── lectures
|
98
|
+
```
|
99
|
+
|
100
|
+
And inside of `lectures` you can find files named like this: `01_first_lecture.md.erb`. These are the lecture files. Each lecture is a erb file with a markdown syntax, here's a lecture example.
|
101
|
+
|
102
|
+
```erb
|
103
|
+
---
|
104
|
+
title: Second Lecture - Here we go
|
105
|
+
---
|
106
|
+
### Continuing
|
107
|
+
This page is the second one in the first part. It is the second lecture of the Sample Course.
|
108
|
+
```
|
109
|
+
|
110
|
+
See [Examples](#examples) for more details.
|
111
|
+
|
112
|
+
### Developing locally
|
113
|
+
|
114
|
+
Coursegen gives you the ability to see your changes on the fly using a combination of `cg compile`, `cg serve`, and `cg view`.
|
115
|
+
|
116
|
+
First, `cg compile` rebuilds the course static html, and save to `/output` based on the newest changes:
|
117
|
+
|
118
|
+
```bash
|
119
|
+
cg compile
|
120
|
+
```
|
121
|
+
|
122
|
+
Then, `cg serve` starts a local webserver running the compiled course site:
|
123
|
+
|
124
|
+
```bash
|
125
|
+
cg serve
|
126
|
+
```
|
127
|
+
|
128
|
+
Lastly, `cg view` opens up your web browser to see the latest change:
|
129
|
+
|
130
|
+
```bash
|
131
|
+
cg view
|
132
|
+
```
|
133
|
+
|
134
|
+
### Deploying to S3
|
135
|
+
|
136
|
+
Coursegen natively supports deploying the course site to AWS S3 service. Before proceeding, makes sure `s3cmd` is installed and correctly configured ([Instructions for setting up](https://github.com/s3tools/s3cmd#simple-s3cmd-howto)).
|
137
|
+
|
138
|
+
To host the course site on S3, you need to create a S3 bucket. Follow [this guide](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/static-website-hosting.html) for creating a S3 bucket.
|
139
|
+
|
140
|
+
After the S3 bucket is created, you can deploy the course site using `cg deploy`. `AWS_BUCKET` is the name of the S3 bucket.
|
141
|
+
|
142
|
+
```bash
|
143
|
+
AWS_BUCKET="cosi165-2014" cg deploy
|
144
|
+
```
|
145
|
+
|
146
|
+
### Search
|
147
|
+
|
148
|
+
Coursegen uses [DocSearch by Algolia](https://docsearch.algolia.com/) to power its search. DocSearch is an external service that indexes the site, and provides search functionality through their API.
|
149
|
+
|
150
|
+
1. Create an application on Algolia (Community Plan is enough for our use case), note the `Application ID`.
|
151
|
+
2. Create an index named "search", `Indices -> Create Index`.
|
152
|
+
3. Note the Search-Only API Key `API Keys -> Your API Keys`.
|
153
|
+
|
154
|
+
Update the following block in `cg_config.rb`,
|
155
|
+
|
156
|
+
```ruby
|
157
|
+
SEARCH_CONFIG = {
|
158
|
+
api_key: '<API_KEY>',
|
159
|
+
index_name: 'search',
|
160
|
+
app_id: '<APP_ID>',
|
161
|
+
debug: false
|
162
|
+
}
|
163
|
+
```
|
164
|
+
|
165
|
+
## Configuration
|
166
|
+
|
167
|
+
The list of configuration directives, and their meaning and intended usage is available in the self documented `cg_config.rb`.
|
168
|
+
|
169
|
+
## Examples
|
170
|
+
|
171
|
+
### Lectures
|
172
|
+
|
173
|
+
```erb
|
174
|
+
---
|
175
|
+
title: Plan of Attack
|
176
|
+
---
|
177
|
+
<%= homework_hdr %>
|
178
|
+
* How does a browser process a URL? When I type http://www.salas.com:8080/toplevel?p=1 what happens inside the browser, what actions does it take, what messages does it send out, what messages does it receive? <%= deliverable "Research this on the web or in books and come up with a numbered list of actions, with each step in the list being a link to a source on the web that you used to figure that out." %>
|
179
|
+
* <%= deliverable "Programming Assignment 2" %> (Look at <%= link_to_pa :PA2 %> for details) <%= nb ": Extension! Post wherever you are so far, indicate whether you are done or not (to let us know to look at it) but you have until Monday Feb 3 to hand this in." %>
|
180
|
+
|
181
|
+
#### Discussion
|
182
|
+
* Ruby Homework tips
|
183
|
+
* Narrate your screencasts
|
184
|
+
* Run from the command line, not irb or pry
|
185
|
+
* Try to make the output legible not just a screen full of numbers!
|
186
|
+
* 1 or 2 Ruby Questions
|
187
|
+
* How 'require' works, and require_relative
|
188
|
+
|
189
|
+
#### Products: Plan of Attack
|
190
|
+
|
191
|
+
##### Iter2 - "Hello World"
|
192
|
+
* Prepare "dossier" for reviewer as a Google Drive
|
193
|
+
* Paper prototype
|
194
|
+
* Screen Flows
|
195
|
+
* Schema in detail
|
196
|
+
* Pivotal tracker with lots of stories, prioritized
|
197
|
+
* Identify and research 'difficult tech issues'
|
198
|
+
* Complete Model
|
199
|
+
* Initial set of controller and views
|
200
|
+
* authentication
|
201
|
+
* Initial build
|
202
|
+
|
203
|
+
##### Iter 3 - "Pre-Alpha"
|
204
|
+
* Update "dossier", meet with reviewer
|
205
|
+
* Cloud deployment
|
206
|
+
* Unit testing
|
207
|
+
* Feature work
|
208
|
+
* Prettier html, css, javascript
|
209
|
+
* Integration testing
|
210
|
+
* Continuous integration
|
211
|
+
|
212
|
+
##### Iter 4 - "MVP"
|
213
|
+
* Update "dossier", meet with reviewer
|
214
|
+
* Initial beta users, get feedback
|
215
|
+
* Complete MVP feature set
|
216
|
+
* Beautiful user interface
|
217
|
+
|
218
|
+
##### Iter 4 - "Unveiling"
|
219
|
+
* Update "dossier", meet with reviewer
|
220
|
+
* Final touches
|
221
|
+
* Presentations
|
222
|
+
|
223
|
+
#### Iter2: In more detail
|
224
|
+
* Each team tee up a discussion about your product
|
225
|
+
* <%= discussion "What are \"difficult technical issues?\"" %>
|
226
|
+
* <%= discussion "Reviewers" %> (<%= link_to_incubator :reviewer %>)
|
227
|
+
|
228
|
+
#### Look at next class
|
229
|
+
* Review Paper Prototyping homework for: <%= link_to_lecture :dossier %>
|
230
|
+
```
|
231
|
+
|
232
|
+
For more complex example of lectures see [here](https://github.com/pitosalas/cosi236b/tree/master/lectures).
|
233
|
+
|
234
|
+
### Course sites
|
235
|
+
|
236
|
+
- An simple example: <https://github.com/pitosalas/jbscosi2014>
|
237
|
+
- A complex example (but based on a previous version): <https://github.com/pitosalas/cosi236b>
|
238
|
+
- The resultant web site: <https://bit.ly/cosi236b>
|
239
|
+
|
240
|
+
## Features
|
241
|
+
|
242
|
+
### Slides
|
243
|
+
|
244
|
+
*!!! Slides generation is currently in preview stage !!!*
|
245
|
+
|
246
|
+
To enable slides generation in a specific lecture, add `slides: true` to the header of the markdown file.
|
247
|
+
|
248
|
+
```markdown
|
249
|
+
---
|
250
|
+
title: Some Lecture
|
251
|
+
slides: true
|
252
|
+
---
|
253
|
+
...
|
254
|
+
```
|
255
|
+
|
256
|
+
Coursegen uses the tag `<%= slide %>` to properly separate each slide.
|
257
|
+
|
258
|
+
```erb
|
259
|
+
# Slide 1
|
260
|
+
* some lines
|
261
|
+
* some lines
|
262
|
+
|
263
|
+
<%= slide %>
|
264
|
+
|
265
|
+
# Slide 2
|
266
|
+
* some lines
|
267
|
+
```
|
268
|
+
|
269
|
+
To disregard some content from rendering into the slides, add the html element into `cg_config.rb`.
|
270
|
+
|
271
|
+
```ruby
|
272
|
+
SLIDES_CONFIG = {
|
273
|
+
# This ignores any element that is <h4>
|
274
|
+
ignore_selector: ['h4']
|
275
|
+
}
|
276
|
+
```
|
69
277
|
|
70
278
|
## Open Source Catalog of Topics
|
71
|
-
CourseGen comes with a large, shared catalog of topics. Depending on what you teach you may or may not find useful content there. Over time we hope to broaden this catalog. You can review the current set of topics here: https://github.com/pitosalas/coursegen-topics
|
72
279
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
280
|
+
Coursegen comes with a large, shared catalog of topics. Depending on what you teach you may or may not find useful content there. Over time we hope to broaden this catalog. You can review the current set of topics here: <https://github.com/pitosalas/coursegen-topics>
|
281
|
+
|
282
|
+
## Using course contents from another folder
|
283
|
+
|
284
|
+
Coursegen allows course contents to be located outside of the site folder. This is the preferred pattern, used by most coursegen courses.
|
285
|
+
|
286
|
+
To connect them together, simply add a symbolic link between the course and the contents:
|
287
|
+
|
288
|
+
```bash
|
289
|
+
cd MYCOURSE/content
|
290
|
+
ln -s TOPICDIR .
|
291
|
+
```
|
292
|
+
|
293
|
+
## License
|
79
294
|
|
295
|
+
Coursegen is released under the MIT license. See [LICENSE.txt](LICENSE.txt)
|