-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathslides_index.html
More file actions
198 lines (182 loc) · 9.68 KB
/
slides_index.html
File metadata and controls
198 lines (182 loc) · 9.68 KB
1
2
3
4
5
6
7
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Slides for
Textbook Backend Development
</title>
<link rel="stylesheet" type="text/css" href="stylesheets/style.css" data-turbo-track="reload">
<link rel="stylesheet" type="text/css" href="stylesheets/print.css" media="print">
<link rel="stylesheet" type="text/css" href="stylesheets/highlight.css" data-turbo-track="reload">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="stylesheets/reset.css">
<link rel="stylesheet" href="stylesheets/reveal.css">
<link rel="stylesheet" href="stylesheets/myslide.css" id="theme">
<link rel="stylesheet" href="stylesheets/code.css">
<script src="javascripts/clipboard.js" data-turbo-track="reload"></script>
<script src="javascripts/slides.js" data-turbo-track="reload"></script>
</head>
<body>
<div class="reveal">
<!-- Any section element inside of this container is displayed as a slide -->
<div class="slides">
<section>
<h2>About this Book</h2>
<p>This is a textbook for the second year of a computer
science or "media informatics" degree program. It builds
on <a href="https://web-development.github.com">Web Development</a>
(in german).</p>
<p>This book is not a self-contained work: There are great
resources for learning about backend development with Rails and Node
- this book tries to use
these resources, and bind them together into a coherent study plan.</p>
<p>It was written and published by Brigitte Jellinek
in the hope that it will be useful to lecturers and students
in educational institutions as well as to self-directed learners on the internet.
</p>
<p><small>Slides - use arrow keys to navigate, esc to return to page view, f for fullscreen</small></p>
</section>
<section><a class='slide_break' href='#slide-0'>▻</a>
<h3>On Backend Development</h3>
<p>In this course we will learn backend development with
Ruby on Rails and with node.js.</p>
<p>There are many frameworks in different languages that
could also be used. If you learn
Laravel (with PHP) or Django (with Python) or Play (with Java)
one of many other frameworks you are doing just fine.</p>
<p>We decided on Ruby on Rails in 2008 because the framework seemed well rounded
and modern then, and we have not been disappointed. Rails has not stopped innovating
and improving. In 2024 we can still recommend it both for learning and for building production
ready software. In 2013 we added node.js to cover different aspects of backend development.</p>
</section>
<section><a class='slide_break' href='#slide-1'>▻</a>
<h2>Ruby on Rails</h2>
<dl class="guide-index-list">
<dt><a href="ruby_commandline.html">Ruby Commandline</a></dt><dd>
<p>The essential ruby you need to know to understand rails</p>
</dd> <dt><a href="rails_database_and_model.html">Models and ActiveRecord</a></dt><dd>
<p>How does Rails use the database? Use the rails console to find out.</p>
</dd> <dt><a href="rails_db.html">Database and Migrations</a></dt><dd>
<p>How does Rails use the database? How are models and database tables related?</p>
</dd> <dt><a href="rails_associations_and_validations.html">Associations and Validations</a></dt><dd>
<p>How are relations between models implemented? How can we put restrictions on the data?</p>
</dd> <dt><a href="rails_view_and_controller.html">Routing, View and Controller</a></dt><dd>
<p>How Rails gets from a HTTP Request to a finishd HTML document</p>
</dd> <dt><a href="rails_authentication.html">Simple Authentication</a></dt><dd>
<p>How do we implement "logging in" over statless HTTP? Sessions in rails. Logging in with Passwords or with another service like github, twitter, facebook (using devise and omniauth)</p>
</dd> <dt><a href="assets_and_import_map.html">The Asset Pipeline and Importmaps</a></dt><dd>
<p>How CSS, Fonts, Images and JavaScript are prepared for publishing</p>
</dd> <dt><a href="testing.html">Getting started with Testing</a></dt><dd>
<p>Write your first unit tests and integration tests for Rails</p>
</dd> <dt><a href="refactoring_rails.html">Refactoring Rails</a></dt><dd>
<p>How to improve your code in a systematic way.</p>
</dd> <dt><a href="deploy-to-paas.html">Deploy to PAAS</a></dt><dd>
<p>How to deploy a web app to the cloud with "Platform As A Service"</p>
</dd> <dt><a href="rails_gems.html">Ruby Gems for your Rails Project</a></dt><dd>
<p>How bundler helps with dependencies, and some gems you might need for your first Rails project</p>
</dd> <dt><a href="deploying_rails.html">Deploying Rails</a></dt><dd>
<p>Several options for deploying a Rails App</p>
</dd> </dl>
</section>
<section><a class='slide_break' href='#slide-2'>▻</a>
<h2>Ruby on Rails - Advanced Topics</h2>
<dl class="guide-index-list">
<dt><a href="deploy-to-paas.html">Deploy to PAAS</a></dt><dd>
<p>How to deploy a web app to the cloud with "Platform As A Service"</p>
</dd> <dt><a href="rest-api.html">REST API</a></dt><dd>
<p>Offer an REST stype API as part of your Rails app</p>
</dd> <dt><a href="graphql-api.html">GraphQL API</a></dt><dd>
<p>Offer an GraphQL API as part of your Rails app</p>
</dd> <dt><a href="rails_websockets.html">Websocket in Rails</a></dt><dd>
<p>Websockets offer a permanent connection between client and server. With Actioncable you can use websockets for publish-subscribe communication</p>
</dd> <dt><a href="jobs_and_tasks.html">Jobs and Tasks in Rails</a></dt><dd>
<p>Your web application will need code that is run outside the HTTP Request-Response cycle. Learn about Jobs that run automatically and Tasks that you can start from the commandline</p>
</dd> <dt><a href="rails_security.html">Rails Security</a></dt><dd>
<p>How Rails framework helps with web security</p>
</dd> </dl>
</section>
<section><a class='slide_break' href='#slide-3'>▻</a>
<h2>Overarching Concerns</h2>
<dl class="guide-index-list">
<dt><a href="issue.html">Issue Lifecycle</a></dt><dd>
<p>from definition to implementation to acceptance</p>
</dd> <dt><a href="security.html">Security</a></dt><dd>
<p>Some Security Aspects of using Rails, Node and Next.js</p>
</dd> <dt><a href="adv_authentication.html">Advanced Authentication</a></dt><dd>
<p>Different Scenarios demand different authentication methods - Web Auth, OAuth, JWT,...</p>
</dd> <dt><a href="caching.html">Caching</a></dt><dd>
<p>Speed up your web app through caching</p>
</dd> <dt><a href="advanced_testing.html">Advanced Testing</a></dt><dd>
<p>More testing with test doubles and a headless browser</p>
</dd> <dt><a href="internationalization.html">Internationalization (I18n)</a></dt><dd>
<p>How to prepare you app for many languages, many countries</p>
</dd> <dt><a href="git_rebasing.html">Git Rebasing</a></dt><dd>
<p>How to work with feature branches and rebasing in git</p>
</dd> </dl>
</section>
<section><a class='slide_break' href='#slide-4'>▻</a>
<h2>Nodes.js</h2>
<dl class="guide-index-list">
<dt><a href="node_vs_rails.html">Node vs. Rails</a></dt><dd>
<p>What are the differences, and why should I learn both?</p>
</dd> <dt><a href="node_basics.html">Node Basics</a></dt><dd>
<p>Program your first web server in node</p>
</dd> <dt><a href="node_websockets.html">Node Websockets</a></dt><dd>
<p>Program a chat app with socket.io</p>
</dd> <dt><a href="node_express.html">Node Web App</a></dt><dd>
<p>write a web app in node with express</p>
</dd> <dt><a href="node_cluster.html">Scaling Node</a></dt><dd>
<p>how to scale node up with cluster.js</p>
</dd> </dl>
</section>
<section><a class='slide_break' href='#slide-5'>▻</a>
<h2>Next.js</h2>
<dl class="guide-index-list">
<dt><a href="nextjs.html">Next.js</a></dt><dd>
<p>A Framework for React, including Backend Concerns</p>
</dd> </dl>
</div></section>
</div>
</div>
<!-- End slides. -->
<!-- Required JS files. -->
<script src="javascripts/reveal.js"></script>
<script src="javascripts/search.js"></script>
<script src="javascripts/markdown.js"></script>
<script>
// Also available as an ES module, see:
// https://revealjs.com/initialization/
Reveal.initialize({
controls: false,
progress: true,
center: false,
hash: true,
// The "normal" size of the presentation, aspect ratio will
// be preserved when the presentation is scaled to fit different
// resolutions. Can be specified using percentage units.
width: 1000,
height: 600,
disableLayout: false,
// Factor of the display size that should remain empty around
// the content
margin: 0.05,
// Bounds for smallest/largest possible scale to apply to content
minScale: 0.2,
maxScale: 10.0,
keyboard: {
27: () => {
// do something custom when ESC is pressed
var new_url = window.location.pathname.replace('slides_', '') + window.location.hash.replace('/','slide-');
window.location = new_url;
},
191: 'toggleHelp',
13: 'next', // go to the next slide when the ENTER key is pressed
},
// Learn about plugins: https://revealjs.com/plugins/
plugins: [ RevealSearch, RevealMarkdown ]
});
</script>
</body>
</html>