diff --git a/.gitignore b/.gitignore index 78ba8d55..75b2f595 100644 --- a/.gitignore +++ b/.gitignore @@ -1,18 +1,9 @@ -# Ignore vim temporary files -*~ -*.swp -*.swo - -# Ignore subversion files -.svn* - -_site -.sass-cache +*.gem +.bundle/ +.jekyll-cache/ .jekyll-metadata - -# Bundler vendor folder -vendor -.bundle - -# macOS ignores -.DS_Store +.sass-cache/ +Gemfile.lock +_site/ +node_modules/ +vendor/ diff --git a/.htaccess b/.htaccess deleted file mode 100644 index 06092fab..00000000 --- a/.htaccess +++ /dev/null @@ -1,22 +0,0 @@ ---- ---- -RewriteEngine On - -RedirectMatch 404 /\.git - -# Redirect signups to the google form -RewriteRule ^gdrive$ https://drive.google.com/drive/folders/1RJk3uFtdeT3ZF2ZfwyeFPIbeZBMp3oPg [R=302,L] -RewriteRule ^slack$ https://fco.slack.com [R=302,L] -RewriteRule ^syllabus(\.pdf)?$ https://docs.google.com/document/u/4/d/e/2PACX-1vQwMYxii-b0OLO7qEbnSvq4MP9fp95XORznytEuK-FWMlIzx_WLvivUIcZ2yIfNzHdwBAJGorebaGxf/pub [R=302,L,NC] - -{% for item in site.data.materials %} -{% if item.slides %} -RewriteRule ^slides/{{item.id}}$ {{item.slides}} [R=302,L] -{% endif %} -{% if item.video %} -RewriteRule ^video/{{item.id}}$ {{item.video}} [R=302,L] -{% endif %} -{% if item.lab %} -RewriteRule ^labs/{{item.id}}$ {{item.lab}} [R=302,L] -{% endif %} -{% endfor %} diff --git a/Gemfile b/Gemfile index b362d960..37f5eaa4 100644 --- a/Gemfile +++ b/Gemfile @@ -1,7 +1,2 @@ -source "https://rubygems.org" - -gem "jekyll", "~> 3.6.3" - -# Windows does not include zoneinfo files, so bundle the tzinfo-data gem -gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] - +source 'https://rubygems.org' +gem 'github-pages', group: :jekyll_plugins diff --git a/Gemfile.lock b/Gemfile.lock index cab6c204..b1a29f14 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,54 +1,265 @@ GEM remote: https://rubygems.org/ specs: - addressable (2.5.2) - public_suffix (>= 2.0.2, < 4.0) + activesupport (6.0.3.4) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) + minitest (~> 5.1) + tzinfo (~> 1.1) + zeitwerk (~> 2.2, >= 2.2.2) + addressable (2.7.0) + public_suffix (>= 2.0.2, < 5.0) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.11.1) colorator (1.1.0) - ffi (1.9.25) + commonmarker (0.17.13) + ruby-enum (~> 0.5) + concurrent-ruby (1.1.7) + dnsruby (1.61.4) + simpleidn (~> 0.1) + em-websocket (0.5.2) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0.6.0) + ethon (0.12.0) + ffi (>= 1.3.0) + eventmachine (1.2.7) + eventmachine (1.2.7-x64-mingw32) + execjs (2.7.0) + faraday (1.0.1) + multipart-post (>= 1.2, < 3) + ffi (1.13.1) + ffi (1.13.1-x64-mingw32) forwardable-extended (2.6.0) - jekyll (3.6.3) + gemoji (3.0.1) + github-pages (209) + github-pages-health-check (= 1.16.1) + jekyll (= 3.9.0) + jekyll-avatar (= 0.7.0) + jekyll-coffeescript (= 1.1.1) + jekyll-commonmark-ghpages (= 0.1.6) + jekyll-default-layout (= 0.1.4) + jekyll-feed (= 0.15.1) + jekyll-gist (= 1.5.0) + jekyll-github-metadata (= 2.13.0) + jekyll-mentions (= 1.6.0) + jekyll-optional-front-matter (= 0.3.2) + jekyll-paginate (= 1.1.0) + jekyll-readme-index (= 0.3.0) + jekyll-redirect-from (= 0.16.0) + jekyll-relative-links (= 0.6.1) + jekyll-remote-theme (= 0.4.2) + jekyll-sass-converter (= 1.5.2) + jekyll-seo-tag (= 2.6.1) + jekyll-sitemap (= 1.4.0) + jekyll-swiss (= 1.0.0) + jekyll-theme-architect (= 0.1.1) + jekyll-theme-cayman (= 0.1.1) + jekyll-theme-dinky (= 0.1.1) + jekyll-theme-hacker (= 0.1.2) + jekyll-theme-leap-day (= 0.1.1) + jekyll-theme-merlot (= 0.1.1) + jekyll-theme-midnight (= 0.1.1) + jekyll-theme-minimal (= 0.1.1) + jekyll-theme-modernist (= 0.1.1) + jekyll-theme-primer (= 0.5.4) + jekyll-theme-slate (= 0.1.1) + jekyll-theme-tactile (= 0.1.1) + jekyll-theme-time-machine (= 0.1.1) + jekyll-titles-from-headings (= 0.5.3) + jemoji (= 0.12.0) + kramdown (= 2.3.0) + kramdown-parser-gfm (= 1.1.0) + liquid (= 4.0.3) + mercenary (~> 0.3) + minima (= 2.5.1) + nokogiri (>= 1.10.4, < 2.0) + rouge (= 3.23.0) + terminal-table (~> 1.4) + github-pages-health-check (1.16.1) + addressable (~> 2.3) + dnsruby (~> 1.60) + octokit (~> 4.0) + public_suffix (~> 3.0) + typhoeus (~> 1.3) + html-pipeline (2.14.0) + activesupport (>= 2) + nokogiri (>= 1.4) + http_parser.rb (0.6.0) + i18n (0.9.5) + concurrent-ruby (~> 1.0) + jekyll (3.9.0) addressable (~> 2.4) colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 0.7) jekyll-sass-converter (~> 1.0) - jekyll-watch (~> 1.1) - kramdown (~> 1.14) + jekyll-watch (~> 2.0) + kramdown (>= 1.17, < 3) liquid (~> 4.0) mercenary (~> 0.3.3) pathutil (~> 0.9) - rouge (>= 1.7, < 3) + rouge (>= 1.7, < 4) safe_yaml (~> 1.0) + jekyll-avatar (0.7.0) + jekyll (>= 3.0, < 5.0) + jekyll-coffeescript (1.1.1) + coffee-script (~> 2.2) + coffee-script-source (~> 1.11.1) + jekyll-commonmark (1.3.1) + commonmarker (~> 0.14) + jekyll (>= 3.7, < 5.0) + jekyll-commonmark-ghpages (0.1.6) + commonmarker (~> 0.17.6) + jekyll-commonmark (~> 1.2) + rouge (>= 2.0, < 4.0) + jekyll-default-layout (0.1.4) + jekyll (~> 3.0) + jekyll-feed (0.15.1) + jekyll (>= 3.7, < 5.0) + jekyll-gist (1.5.0) + octokit (~> 4.2) + jekyll-github-metadata (2.13.0) + jekyll (>= 3.4, < 5.0) + octokit (~> 4.0, != 4.4.0) + jekyll-mentions (1.6.0) + html-pipeline (~> 2.3) + jekyll (>= 3.7, < 5.0) + jekyll-optional-front-matter (0.3.2) + jekyll (>= 3.0, < 5.0) + jekyll-paginate (1.1.0) + jekyll-readme-index (0.3.0) + jekyll (>= 3.0, < 5.0) + jekyll-redirect-from (0.16.0) + jekyll (>= 3.3, < 5.0) + jekyll-relative-links (0.6.1) + jekyll (>= 3.3, < 5.0) + jekyll-remote-theme (0.4.2) + addressable (~> 2.0) + jekyll (>= 3.5, < 5.0) + jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0) + rubyzip (>= 1.3.0, < 3.0) jekyll-sass-converter (1.5.2) sass (~> 3.4) - jekyll-watch (1.5.1) + jekyll-seo-tag (2.6.1) + jekyll (>= 3.3, < 5.0) + jekyll-sitemap (1.4.0) + jekyll (>= 3.7, < 5.0) + jekyll-swiss (1.0.0) + jekyll-theme-architect (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-cayman (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-dinky (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-hacker (0.1.2) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-leap-day (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-merlot (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-midnight (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-minimal (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-modernist (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-primer (0.5.4) + jekyll (> 3.5, < 5.0) + jekyll-github-metadata (~> 2.9) + jekyll-seo-tag (~> 2.0) + jekyll-theme-slate (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-tactile (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-time-machine (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-titles-from-headings (0.5.3) + jekyll (>= 3.3, < 5.0) + jekyll-watch (2.2.1) listen (~> 3.0) - kramdown (1.17.0) - liquid (4.0.1) - listen (3.1.5) - rb-fsevent (~> 0.9, >= 0.9.4) - rb-inotify (~> 0.9, >= 0.9.7) - ruby_dep (~> 1.2) + jemoji (0.12.0) + gemoji (~> 3.0) + html-pipeline (~> 2.2) + jekyll (>= 3.0, < 5.0) + kramdown (2.3.0) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.3) + listen (3.2.1) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.3.6) + mini_portile2 (2.4.0) + minima (2.5.1) + jekyll (>= 3.5, < 5.0) + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) + minitest (5.14.2) + multipart-post (2.1.1) + nokogiri (1.10.10) + mini_portile2 (~> 2.4.0) + nokogiri (1.10.10-x64-mingw32) + mini_portile2 (~> 2.4.0) + octokit (4.18.0) + faraday (>= 0.9) + sawyer (~> 0.8.0, >= 0.5.3) pathutil (0.16.2) forwardable-extended (~> 2.6) - public_suffix (3.0.3) - rb-fsevent (0.10.3) - rb-inotify (0.10.0) + public_suffix (3.1.1) + rb-fsevent (0.10.4) + rb-inotify (0.10.1) ffi (~> 1.0) - rouge (2.2.1) - ruby_dep (1.5.0) - safe_yaml (1.0.4) - sass (3.7.2) + rexml (3.2.4) + rouge (3.23.0) + ruby-enum (0.8.0) + i18n + rubyzip (2.3.0) + safe_yaml (1.0.5) + sass (3.7.4) sass-listen (~> 4.0.0) sass-listen (4.0.0) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) + sawyer (0.8.2) + addressable (>= 2.3.5) + faraday (> 0.8, < 2.0) + simpleidn (0.1.1) + unf (~> 0.1.4) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + thread_safe (0.3.6) + typhoeus (1.4.0) + ethon (>= 0.9.0) + tzinfo (1.2.7) + thread_safe (~> 0.1) + unf (0.1.4) + unf_ext + unf_ext (0.0.7.7) + unf_ext (0.0.7.7-x64-mingw32) + unicode-display_width (1.7.0) + zeitwerk (2.4.0) PLATFORMS ruby + x64-mingw32 DEPENDENCIES - jekyll (~> 3.6.3) - tzinfo-data + github-pages BUNDLED WITH - 1.16.0 + 2.1.4 diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index 10e03a38..00000000 --- a/Jenkinsfile +++ /dev/null @@ -1,55 +0,0 @@ -pipeline { - agent { - label 'slave' - } - - options { - ansiColor('xterm') - timeout(time: 1, unit: 'HOURS') - disableConcurrentBuilds() - } - - stages { - stage('check-gh-trust') { - steps { - checkGitHubAccess('0xcf') - } - } - - stage('bundle') { - steps { - sh 'make bundle' - } - } - - stage('build') { - steps { - sh 'make build' - } - } - - stage('deploy') { - when { - branch 'master' - } - steps { - sshagent (credentials: ['decal-ssh-key']) { - sh 'make deploy' - } - } - } - } - - post { - failure { - emailNotification('decal+jenkins@ocf.berkeley.edu') - } - always { - node(label: 'slave') { - ircNotification('#decal-spam') - } - } - } -} - -// vim: ft=groovy diff --git a/LICENSE b/LICENSE index 385bca20..8892f7fb 100644 --- a/LICENSE +++ b/LICENSE @@ -1,438 +1,21 @@ -Attribution-NonCommercial-ShareAlike 4.0 International - -======================================================================= - -Creative Commons Corporation ("Creative Commons") is not a law firm and -does not provide legal services or legal advice. Distribution of -Creative Commons public licenses does not create a lawyer-client or -other relationship. Creative Commons makes its licenses and related -information available on an "as-is" basis. Creative Commons gives no -warranties regarding its licenses, any material licensed under their -terms and conditions, or any related information. Creative Commons -disclaims all liability for damages resulting from their use to the -fullest extent possible. - -Using Creative Commons Public Licenses - -Creative Commons public licenses provide a standard set of terms and -conditions that creators and other rights holders may use to share -original works of authorship and other material subject to copyright -and certain other rights specified in the public license below. The -following considerations are for informational purposes only, are not -exhaustive, and do not form part of our licenses. - - Considerations for licensors: Our public licenses are - intended for use by those authorized to give the public - permission to use material in ways otherwise restricted by - copyright and certain other rights. Our licenses are - irrevocable. Licensors should read and understand the terms - and conditions of the license they choose before applying it. - Licensors should also secure all rights necessary before - applying our licenses so that the public can reuse the - material as expected. Licensors should clearly mark any - material not subject to the license. This includes other CC- - licensed material, or material used under an exception or - limitation to copyright. More considerations for licensors: - wiki.creativecommons.org/Considerations_for_licensors - - Considerations for the public: By using one of our public - licenses, a licensor grants the public permission to use the - licensed material under specified terms and conditions. If - the licensor's permission is not necessary for any reason--for - example, because of any applicable exception or limitation to - copyright--then that use is not regulated by the license. Our - licenses grant only permissions under copyright and certain - other rights that a licensor has authority to grant. Use of - the licensed material may still be restricted for other - reasons, including because others have copyright or other - rights in the material. A licensor may make special requests, - such as asking that all changes be marked or described. - Although not required by our licenses, you are encouraged to - respect those requests where reasonable. More_considerations - for the public: - wiki.creativecommons.org/Considerations_for_licensees - -======================================================================= - -Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International -Public License - -By exercising the Licensed Rights (defined below), You accept and agree -to be bound by the terms and conditions of this Creative Commons -Attribution-NonCommercial-ShareAlike 4.0 International Public License -("Public License"). To the extent this Public License may be -interpreted as a contract, You are granted the Licensed Rights in -consideration of Your acceptance of these terms and conditions, and the -Licensor grants You such rights in consideration of benefits the -Licensor receives from making the Licensed Material available under -these terms and conditions. - - -Section 1 -- Definitions. - - a. Adapted Material means material subject to Copyright and Similar - Rights that is derived from or based upon the Licensed Material - and in which the Licensed Material is translated, altered, - arranged, transformed, or otherwise modified in a manner requiring - permission under the Copyright and Similar Rights held by the - Licensor. For purposes of this Public License, where the Licensed - Material is a musical work, performance, or sound recording, - Adapted Material is always produced where the Licensed Material is - synched in timed relation with a moving image. - - b. Adapter's License means the license You apply to Your Copyright - and Similar Rights in Your contributions to Adapted Material in - accordance with the terms and conditions of this Public License. - - c. BY-NC-SA Compatible License means a license listed at - creativecommons.org/compatiblelicenses, approved by Creative - Commons as essentially the equivalent of this Public License. - - d. Copyright and Similar Rights means copyright and/or similar rights - closely related to copyright including, without limitation, - performance, broadcast, sound recording, and Sui Generis Database - Rights, without regard to how the rights are labeled or - categorized. For purposes of this Public License, the rights - specified in Section 2(b)(1)-(2) are not Copyright and Similar - Rights. - - e. Effective Technological Measures means those measures that, in the - absence of proper authority, may not be circumvented under laws - fulfilling obligations under Article 11 of the WIPO Copyright - Treaty adopted on December 20, 1996, and/or similar international - agreements. - - f. Exceptions and Limitations means fair use, fair dealing, and/or - any other exception or limitation to Copyright and Similar Rights - that applies to Your use of the Licensed Material. - - g. License Elements means the license attributes listed in the name - of a Creative Commons Public License. The License Elements of this - Public License are Attribution, NonCommercial, and ShareAlike. - - h. Licensed Material means the artistic or literary work, database, - or other material to which the Licensor applied this Public - License. - - i. Licensed Rights means the rights granted to You subject to the - terms and conditions of this Public License, which are limited to - all Copyright and Similar Rights that apply to Your use of the - Licensed Material and that the Licensor has authority to license. - - j. Licensor means the individual(s) or entity(ies) granting rights - under this Public License. - - k. NonCommercial means not primarily intended for or directed towards - commercial advantage or monetary compensation. For purposes of - this Public License, the exchange of the Licensed Material for - other material subject to Copyright and Similar Rights by digital - file-sharing or similar means is NonCommercial provided there is - no payment of monetary compensation in connection with the - exchange. - - l. Share means to provide material to the public by any means or - process that requires permission under the Licensed Rights, such - as reproduction, public display, public performance, distribution, - dissemination, communication, or importation, and to make material - available to the public including in ways that members of the - public may access the material from a place and at a time - individually chosen by them. - - m. Sui Generis Database Rights means rights other than copyright - resulting from Directive 96/9/EC of the European Parliament and of - the Council of 11 March 1996 on the legal protection of databases, - as amended and/or succeeded, as well as other essentially - equivalent rights anywhere in the world. - - n. You means the individual or entity exercising the Licensed Rights - under this Public License. Your has a corresponding meaning. - - -Section 2 -- Scope. - - a. License grant. - - 1. Subject to the terms and conditions of this Public License, - the Licensor hereby grants You a worldwide, royalty-free, - non-sublicensable, non-exclusive, irrevocable license to - exercise the Licensed Rights in the Licensed Material to: - - a. reproduce and Share the Licensed Material, in whole or - in part, for NonCommercial purposes only; and - - b. produce, reproduce, and Share Adapted Material for - NonCommercial purposes only. - - 2. Exceptions and Limitations. For the avoidance of doubt, where - Exceptions and Limitations apply to Your use, this Public - License does not apply, and You do not need to comply with - its terms and conditions. - - 3. Term. The term of this Public License is specified in Section - 6(a). - - 4. Media and formats; technical modifications allowed. The - Licensor authorizes You to exercise the Licensed Rights in - all media and formats whether now known or hereafter created, - and to make technical modifications necessary to do so. The - Licensor waives and/or agrees not to assert any right or - authority to forbid You from making technical modifications - necessary to exercise the Licensed Rights, including - technical modifications necessary to circumvent Effective - Technological Measures. For purposes of this Public License, - simply making modifications authorized by this Section 2(a) - (4) never produces Adapted Material. - - 5. Downstream recipients. - - a. Offer from the Licensor -- Licensed Material. Every - recipient of the Licensed Material automatically - receives an offer from the Licensor to exercise the - Licensed Rights under the terms and conditions of this - Public License. - - b. Additional offer from the Licensor -- Adapted Material. - Every recipient of Adapted Material from You - automatically receives an offer from the Licensor to - exercise the Licensed Rights in the Adapted Material - under the conditions of the Adapter's License You apply. - - c. No downstream restrictions. You may not offer or impose - any additional or different terms or conditions on, or - apply any Effective Technological Measures to, the - Licensed Material if doing so restricts exercise of the - Licensed Rights by any recipient of the Licensed - Material. - - 6. No endorsement. Nothing in this Public License constitutes or - may be construed as permission to assert or imply that You - are, or that Your use of the Licensed Material is, connected - with, or sponsored, endorsed, or granted official status by, - the Licensor or others designated to receive attribution as - provided in Section 3(a)(1)(A)(i). - - b. Other rights. - - 1. Moral rights, such as the right of integrity, are not - licensed under this Public License, nor are publicity, - privacy, and/or other similar personality rights; however, to - the extent possible, the Licensor waives and/or agrees not to - assert any such rights held by the Licensor to the limited - extent necessary to allow You to exercise the Licensed - Rights, but not otherwise. - - 2. Patent and trademark rights are not licensed under this - Public License. - - 3. To the extent possible, the Licensor waives any right to - collect royalties from You for the exercise of the Licensed - Rights, whether directly or through a collecting society - under any voluntary or waivable statutory or compulsory - licensing scheme. In all other cases the Licensor expressly - reserves any right to collect such royalties, including when - the Licensed Material is used other than for NonCommercial - purposes. - - -Section 3 -- License Conditions. - -Your exercise of the Licensed Rights is expressly made subject to the -following conditions. - - a. Attribution. - - 1. If You Share the Licensed Material (including in modified - form), You must: - - a. retain the following if it is supplied by the Licensor - with the Licensed Material: - - i. identification of the creator(s) of the Licensed - Material and any others designated to receive - attribution, in any reasonable manner requested by - the Licensor (including by pseudonym if - designated); - - ii. a copyright notice; - - iii. a notice that refers to this Public License; - - iv. a notice that refers to the disclaimer of - warranties; - - v. a URI or hyperlink to the Licensed Material to the - extent reasonably practicable; - - b. indicate if You modified the Licensed Material and - retain an indication of any previous modifications; and - - c. indicate the Licensed Material is licensed under this - Public License, and include the text of, or the URI or - hyperlink to, this Public License. - - 2. You may satisfy the conditions in Section 3(a)(1) in any - reasonable manner based on the medium, means, and context in - which You Share the Licensed Material. For example, it may be - reasonable to satisfy the conditions by providing a URI or - hyperlink to a resource that includes the required - information. - 3. If requested by the Licensor, You must remove any of the - information required by Section 3(a)(1)(A) to the extent - reasonably practicable. - - b. ShareAlike. - - In addition to the conditions in Section 3(a), if You Share - Adapted Material You produce, the following conditions also apply. - - 1. The Adapter's License You apply must be a Creative Commons - license with the same License Elements, this version or - later, or a BY-NC-SA Compatible License. - - 2. You must include the text of, or the URI or hyperlink to, the - Adapter's License You apply. You may satisfy this condition - in any reasonable manner based on the medium, means, and - context in which You Share Adapted Material. - - 3. You may not offer or impose any additional or different terms - or conditions on, or apply any Effective Technological - Measures to, Adapted Material that restrict exercise of the - rights granted under the Adapter's License You apply. - - -Section 4 -- Sui Generis Database Rights. - -Where the Licensed Rights include Sui Generis Database Rights that -apply to Your use of the Licensed Material: - - a. for the avoidance of doubt, Section 2(a)(1) grants You the right - to extract, reuse, reproduce, and Share all or a substantial - portion of the contents of the database for NonCommercial purposes - only; - - b. if You include all or a substantial portion of the database - contents in a database in which You have Sui Generis Database - Rights, then the database in which You have Sui Generis Database - Rights (but not its individual contents) is Adapted Material, - including for purposes of Section 3(b); and - - c. You must comply with the conditions in Section 3(a) if You Share - all or a substantial portion of the contents of the database. - -For the avoidance of doubt, this Section 4 supplements and does not -replace Your obligations under this Public License where the Licensed -Rights include other Copyright and Similar Rights. - - -Section 5 -- Disclaimer of Warranties and Limitation of Liability. - - a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE - EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS - AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF - ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, - IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, - WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, - ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT - KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT - ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. - - b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE - TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, - NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, - INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, - COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR - USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR - DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR - IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. - - c. The disclaimer of warranties and limitation of liability provided - above shall be interpreted in a manner that, to the extent - possible, most closely approximates an absolute disclaimer and - waiver of all liability. - - -Section 6 -- Term and Termination. - - a. This Public License applies for the term of the Copyright and - Similar Rights licensed here. However, if You fail to comply with - this Public License, then Your rights under this Public License - terminate automatically. - - b. Where Your right to use the Licensed Material has terminated under - Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided - it is cured within 30 days of Your discovery of the - violation; or - - 2. upon express reinstatement by the Licensor. - - For the avoidance of doubt, this Section 6(b) does not affect any - right the Licensor may have to seek remedies for Your violations - of this Public License. - - c. For the avoidance of doubt, the Licensor may also offer the - Licensed Material under separate terms or conditions or stop - distributing the Licensed Material at any time; however, doing so - will not terminate this Public License. - - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public - License. - - -Section 7 -- Other Terms and Conditions. - - a. The Licensor shall not be bound by any additional or different - terms or conditions communicated by You unless expressly agreed. - - b. Any arrangements, understandings, or agreements regarding the - Licensed Material not stated herein are separate from and - independent of the terms and conditions of this Public License. - - -Section 8 -- Interpretation. - - a. For the avoidance of doubt, this Public License does not, and - shall not be interpreted to, reduce, limit, restrict, or impose - conditions on any use of the Licensed Material that could lawfully - be made without permission under this Public License. - - b. To the extent possible, if any provision of this Public License is - deemed unenforceable, it shall be automatically reformed to the - minimum extent necessary to make it enforceable. If the provision - cannot be reformed, it shall be severed from this Public License - without affecting the enforceability of the remaining terms and - conditions. - - c. No term or condition of this Public License will be waived and no - failure to comply consented to unless expressly agreed to by the - Licensor. - - d. Nothing in this Public License constitutes or may be interpreted - as a limitation upon, or waiver of, any privileges and immunities - that apply to the Licensor or You, including from the legal - processes of any jurisdiction or authority. - -======================================================================= - -Creative Commons is not a party to its public -licenses. Notwithstanding, Creative Commons may elect to apply one of -its public licenses to material it publishes and in those instances -will be considered the “Licensor.” The text of the Creative Commons -public licenses is dedicated to the public domain under the CC0 Public -Domain Dedication. Except for the limited purpose of indicating that -material is shared under a Creative Commons public license or as -otherwise permitted by the Creative Commons policies published at -creativecommons.org/policies, Creative Commons does not authorize the -use of the trademark "Creative Commons" or any other trademark or logo -of Creative Commons without its prior written consent including, -without limitation, in connection with any unauthorized modifications -to any of its public licenses or any other arrangements, -understandings, or agreements concerning use of licensed material. For -the avoidance of doubt, this paragraph does not form part of the -public licenses. - -Creative Commons may be contacted at creativecommons.org. - +MIT License + +Copyright (c) 2019 Kevin Lin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Makefile b/Makefile deleted file mode 100644 index 6f473f3c..00000000 --- a/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -LISTEN_IP := 0.0.0.0 -RANDOM_PORT := $(shell expr $$(( 8000 + (`id -u` % 1000) + 2 ))) - -.PHONY: dev -dev: bundle - bundle exec jekyll serve --host $(LISTEN_IP) -P $(RANDOM_PORT) - -.PHONY: local-dev -local-dev: LISTEN_IP=127.0.0.1 -local-dev: dev - -.PHONY: local-dev -local-dev: bundle - bundle exec jekyll serve - -.PHONY: bundle -bundle: - bundle install --deployment - -.PHONY: build -build: - bundle exec jekyll build --verbose --trace - -.PHONY: clean -clean: - rm -rf .bundle vendor - -.PHONY: deploy -deploy: - rsync -avzpce "ssh -o StrictHostKeyChecking=no" --del _site/ --exclude static --exclude archives decal@ssh.ocf.berkeley.edu:public_html diff --git a/README.md b/README.md index 6f3c806d..c57b888e 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,24 @@ -# OCF/XCF DeCal Website +# OCF/XCF Linux SysAdmin DeCal Website [![Build Status](https://jenkins.ocf.berkeley.edu/buildStatus/icon?job=decal-web/master)](https://jenkins.ocf.berkeley.edu/job/decal-web/) -This is the source of the OCF/XCF Unix System Administration DeCal website, -currently available at [decal.ocf.berkeley.edu](https://decal.ocf.berkeley.edu). +This is the source of the OCF/XCF Unix System Administration DeCal website, currently available at [decal.ocf.berkeley.edu](https://decal.ocf.berkeley.edu). The current iteration uses Jekyll to produce pages. -### Preparation +## Development -Install ruby development tools and bundler: +decal-web is built for [Jekyll](https://jekyllrb.com), a static site generator. View the [quick start guide](https://jekyllrb.com/docs/) for more information. -`sudo apt-get install ruby-dev && sudo gem install bundler` - -### Running webserver - -`make dev` or `make local-dev` for local deployments. - -When adding new lab markdown files, please don't forget to add the front matter -at the top of the document, otherwise the markdown will not be rendered. e.g. - - --- - title: Lab 1 - Unix, the Shell, OSS - layout: lab - --- +1. Install Jekyll +```bash +$ bundle install +``` +1. Start your local Jekyll server. +```bash +$ bundle exec jekyll serve +``` +1. Point your web browser to [http://localhost:4000](http://localhost:4000) +1. Reload your web browser after making a change to preview its effect. +For more information, refer to [Just the Docs](https://pmarsceill.github.io/just-the-docs/). diff --git a/_announcements/week-0.md b/_announcements/week-0.md new file mode 100644 index 00000000..6ac638c5 --- /dev/null +++ b/_announcements/week-0.md @@ -0,0 +1,12 @@ +--- +title: Week 0 Announcement +week: 0 +date: 2021-1-1 +--- + +1. **The Linux SysAdmin Decal is back for Spring 2021!** +1. If you'd like to receive more info on how to enroll, [fill out the interest form](https://docs.google.com/forms/d/e/1FAIpQLSdE6qRi1S3WyrzdhoEqHrn0qqgCft6cqZUrLjP9ak2R7Vv91g/viewform)! +1. Learn more about the course at the [about page](/about). +1. There will be two identical infosessions on **Tuesday, Jan. 26** and **Thursday, Jan. 28** at **8pm** on [ocf.io/decalzoom](https://ocf.io/decalzoom) (starts Berkeley time). +1. Lab 0, which must be complete prior to enrolling, will be released after the infosessions. +1. Any questions? Contact us at [mailto:decal@ocf.berkeley.edu](decal@ocf.berkeley.edu)! \ No newline at end of file diff --git a/_config.yml b/_config.yml index d375bb76..f41c4c1b 100644 --- a/_config.yml +++ b/_config.yml @@ -1,27 +1,77 @@ -title: Hands-On Linux System Administration DeCal -shorttitle: Linux SysAdmin DeCal -email: decal@ocf.berkeley.edu -description: >- - The OCF/XCF Linux SysAdmin DeCal at UC Berkeley -baseurl: "" -url: "https://decal.ocf.berkeley.edu" +# Welcome to Jekyll! +# +# This config file is meant for settings that affect your whole site, values +# which you are expected to set up once and rarely edit after that. If you find +# yourself editing these this file very often, consider using Jekyll's data files +# feature for the data you need to update frequently. +# +# For technical reasons, this file is *NOT* reloaded automatically when you use +# 'jekyll serve'. If you change this file, please restart the server process. -# Build settings -markdown: kramdown +# Site settings +# These are used to personalize your new site. If you look in the HTML files, +# you will see them accessed via {{ site.title }}, {{ site.github_repo }}, and so on. +# You can create any custom variable you would like, and they will be accessible +# in the templates via {{ site.myvariable }}. +title: Sysadmin DeCal +tagline: Linux System Administration Decal +description: A course covering the basics of setting up and administering a production-quality Linux server environment. +author: Nikhil Jha, Ben Cuan +baseurl: '/' # the subpath of your site, e.g. /blog +url: 'https://decal.ocf.berkeley.edu/' # the base hostname & protocol for your site, e.g. http://example.com +exclude: ["Gemfile", "Gemfile.lock", "LICENSE", "README.md", vendor] -include: - - ".htaccess" +# Theme settings +remote_theme: pmarsceill/just-the-docs@v0.3.3 +color_scheme: light +search_enabled: true +heading_anchors: true +permalink: pretty +aux_links: + OCF: + - 'https://ocf.berkeley.edu/' + XCF: + - 'https://xcf.berkeley.edu/' +aux_links_new_tab: true +# footer_content: "This website is licensed under the terms of the CC BY-NC-SA 4.0 License. Source Code is available on GitHub." +# Collections for website data collections: - - sections + staffers: + modules: + schedules: + announcements: +# Default layouts for each collection type +defaults: + - scope: + path: '' + type: staffers + values: + layout: staffer + subpath: 'assets/images/' + - scope: + path: '' + type: modules + values: + layout: module + - scope: + path: '' + type: schedules + values: + layout: schedule + - scope: + path: '' + type: announcements + values: + layout: announcement -# A list of files or directories to exclude from processing when building the -# site, like any dependency management files, build files, etc. -exclude: - - Gemfile - - Gemfile.lock - - Jenkinsfile - - LICENSE - - Makefile - - README.md - - vendor/bundle/ +compress_html: + clippings: all + comments: all + endings: all + startings: [] + blanklines: false + profile: false + +plugins: + - jekyll-seo-tag diff --git a/_data/advanced_calendar.yaml b/_data/advanced_calendar.yaml deleted file mode 100644 index 97b725cb..00000000 --- a/_data/advanced_calendar.yaml +++ /dev/null @@ -1,72 +0,0 @@ -# There should be an entry here for each day of class for the advanced track. -# Lecture and Lab IDs should correspond to IDs in materials.yaml. -# The lecturenote key can be used to display a message about the lecture -# (which will probably be a cancellation). - -- date: 2020-09-08 - week: 0 - id: 0 - labdue: 2020-09-12 - -- date: 2020-09-10 - week: 0 - id: 0 - labdue: 2020-09-12 - -- date: 2020-09-17 - week: 1 - id: a1 - labdue: 2020-09-24 - -- date: 2020-09-24 - week: 2 - id: a2 - labdue: 2020-10-01 - -- date: 2020-10-01 - week: 3 - id: a3 - labdue: 2020-10-08 - -- date: 2020-10-08 - week: 4 - id: a4 - labdue: 2020-10-15 - -- date: 2020-10-15 - week: 5 - id: a5 - labdue: 2020-10-22 - -- date: 2020-10-22 - week: 6 - id: a6 - labdue: 2020-10-29 - -- date: 2020-10-29 - week: 7 - id: a7 - labdue: 2020-11-05 - -- date: 2020-11-05 - week: 8 - id: a8 - labdue: 2020-11-12 - -- date: 2020-11-12 - week: 9 - id: a9 - labdue: 2020-11-19 - -- date: 2020-11-19 - week: 10 - id: a10 - labdue: 2020-12-15 - -- date: 2020-11-24 - week: 11 - id: thanksgiving - -- date: 2020-12-03 - week: 12 - id: bonus diff --git a/_data/beginner_calendar.yaml b/_data/beginner_calendar.yaml deleted file mode 100644 index ceec8354..00000000 --- a/_data/beginner_calendar.yaml +++ /dev/null @@ -1,72 +0,0 @@ -# There should be an entry here for each day of class of the beginner track. -# Lecture and Lab IDs should correspond to IDs in materials.yaml. -# The lecturenote key can be used to display a message about the lecture -# (which will probably be a cancellation). - -- date: 2020-09-08 - week: 0 - id: 0 - labdue: 2020-09-12 - -- date: 2020-09-10 - week: 0 - id: 0 - labdue: 2020-09-12 - -- date: 2020-09-15 - week: 1 - id: b1 - labdue: 2020-09-22 - -- date: 2020-09-22 - week: 2 - id: b2 - labdue: 2020-09-29 - -- date: 2020-09-29 - week: 3 - id: b3 - labdue: 2020-10-06 - -- date: 2020-10-06 - week: 4 - id: b4 - labdue: 2020-10-13 - -- date: 2020-10-13 - week: 5 - id: b5 - labdue: 2020-10-20 - -- date: 2020-10-20 - week: 6 - id: b6 - labdue: 2020-10-27 - -- date: 2020-10-27 - week: 7 - id: b7 - labdue: 2020-11-05 - -- date: 2020-11-03 - week: 8 - id: b8 - labdue: 2020-11-10 - -- date: 2020-11-10 - week: 9 - id: b9 - labdue: 2020-11-17 - -- date: 2020-11-17 - week: 10 - id: b10 - labdue: 2020-12-15 - -- date: 2020-11-26 - week: 11 - id: thanksgiving - -- date: 2020-12-03 - week: 12 - id: bonus diff --git a/_data/materials.yaml b/_data/materials.yaml index 10196492..7258a4d7 100644 --- a/_data/materials.yaml +++ b/_data/materials.yaml @@ -1,181 +1,112 @@ # If links to slides, labs, or lecture videos are included here, those pages will # redirect to the provided link. -- id: 0 - name: Infosession - slides: https://docs.google.com/presentation/d/1lTx2vAodmr0i5evZ5VFUOEZDVm0v6PGL7IGJM1M7Jro/edit?usp=sharing - video: https://www.youtube.com/watch?v=QCUXD8fwVS4 - lab: https://docs.google.com/forms/d/1lFVW7TQ0414qH15bRbeuwxYWXIw8lOxLL9n_hnwIBgA/ - lecturer: '-' -# beginner - -- id: b1 - name: History of UNIX, intro to shell, FOSS - slides: https://docs.google.com/presentation/d/1AtnXiOZniLuP9QcnG8_OT1lwmhISRk2_zeANpXgycaY/edit?usp=sharing - video: https://youtu.be/pkSYJpxb9hk - lab: labs/b1 - lecturer: Ben Cuan - hidelink: false - -- id: b2 - name: Core Shell - slides: https://docs.google.com/presentation/d/1o7CWAAa21JYll_isRd-oR3dhurBAPzQA5desEhxvwH0/edit?usp=sharing - video: https://www.youtube.com/watch?v=TXNpIIlcHm4&feature=youtu.be - lab: labs/b2 - lecturer: Nikhil Jha - hidelink: false - -- id: b3 - name: Shell Scripting - slides: https://docs.google.com/presentation/d/1LG8G_fbduqo9K2NOtQDjHkmNCMim0kQOmo-0q3fvmRc/edit?usp=sharing - video: https://www.youtube.com/watch?v=7xAGcmhkflM - lab: labs/b3 - lecturer: Richard Huang - hidelink: false - -- id: b4 - name: Compiling, Distros, and Packaging - slides: https://docs.google.com/presentation/d/1UJHO7fXok-6RN7DAJ5SPTqcCXiRSR8hpGZx9OQMnMOU/edit?usp=sharing - video: https://youtu.be/Uh7N86zjYm4 - lab: labs/b4 - lecturer: Ethan Smith - hidelink: false - -- id: b5 - name: Networking 101 - slides: https://docs.google.com/presentation/d/1DCN2fViHjAS7PoS98dsVC-LNwPN_jvaAKIuVFaRJrM0/edit?usp=sharing - video: https://youtu.be/cPkLsSFKwPM - lab: labs/b5 - lecturer: Tony Lian - hidelink: false - -- id: b6 - name: Processes - slides: https://docs.google.com/presentation/d/1AS1BYX8jdBQGBviBGgcZPREIePrsgkT7pc-9Wk_RkS0/edit?usp=sharing - video: https://youtu.be/Z_q1zkeWEFs - lab: labs/b6 - lecturer: Ryan Chan - hidelink: false - -- id: b7 - name: Services - slides: https://docs.google.com/presentation/d/1N67saQd3NWrBLrk1oEOE2UdLa4Ny_qjDBUAZQolXsUE/edit?usp=sharing - video: https://youtu.be/y3mIzYtCPeY - lab: labs/b7 - lecturer: Kevin Mo - hidelink: false - -- id: b8 - name: Security Fundamentals - slides: https://docs.google.com/presentation/d/1tKAhg5-0jeh7ZBynQFukkK10saKHeouJpyQcerboPYg/edit?usp=sharing - video: https://www.youtube.com/watch?v=hqrWBYm5-Zg&feature=youtu.be - lab: labs/b8 - lecturer: Stefan Kuklinsky - hidelink: false - -- id: b9 - name: Version Control and Backups - slides: https://docs.google.com/presentation/d/1NxdvuLkWSzRvtnj41AkvGU00ub_XUbk8wlIxWxm0ok4/edit - video: https://youtu.be/X4yGMr9c64U - lab: labs/b9 - lecturer: Edric Xiang - hidelink: false - -- id: b10 - name: Cloud, Containers, and Config Management - slides: https://docs.google.com/presentation/d/1aiSnR1zT2qM-RcLnrCC1FhTqjnzKOQvMyR5r_hJr9V0/edit?usp=sharing - video: https://www.youtube.com/watch?v=JhgEg1YTO7c&feature=youtu.be - lab: labs/b10 - lecturer: Richard Huang - hidelink: false - -# advanced - -- id: a1 - name: Advanced Introduction to UNIX - slides: https://docs.google.com/presentation/d/1P4HcAr1NcxFEL1m9bIokiBP1zOODHj8YQMPFSafeWko/edit?usp=sharing - lab: labs/a1 - video: https://www.youtube.com/watch?v=TBsxgbGwtnA - lecturer: Bernard Zhao - hidelink: false - -- id: a2 - name: Packages - slides: https://docs.google.com/presentation/d/1RMNPRHNoh4a5KWwXY8fBWJ49nBafxbo4g-OvSZZ85V8/edit?usp=sharing - video: https://youtu.be/M0vPXQycer0 - lab: labs/a2 - lecturer: Daniel Kessler - hidelink: false - -- id: a3 - name: DIY Linux Pre-Install - slides: https://docs.google.com/presentation/d/1oLtsjsEIsvChOI31_5YYFhILfzGlyx7Hk9DsL1Nv-mc/edit?usp=sharing - video: https://www.youtube.com/watch?v=MnsUBRIw-74&feature=youtu.be - lab: labs/a3 - lecturer: Edric Xiang - hidelink: false - -- id: a4 - name: Linux Post-Install - slides: https://docs.google.com/presentation/d/1b5nggnCS-qzkpp62xvnq5eGrJcgsYAvqlwIsx-Z6ETI/edit?usp=sharing - video: https://youtu.be/BVbHnEv8L9s - lab: labs/a4 - lecturer: Ben Cuan - hidelink: false - -- id: a5 - name: Processes and Services - slides: https://docs.google.com/presentation/d/1sv5Bxw9Fet9utjFU8xGDntawLVmBOT9YpCt9mJ2V6Dg/edit - video: https://youtu.be/AS293JoAr8s - lab: labs/a5 - lecturer: Christopher Cooper - hidelink: false - -- id: a6 - name: Networking 102 - slides: https://docs.google.com/presentation/d/14XXyjUxUohINsg93qD-8SHP1mPpTTnBoZ3NHmMVTJqY/edit?usp=sharing - video: https://youtu.be/DPKRivN9ga4 - lab: labs/a6 - lecturer: Abizer Lokhandwala - hidelink: false - -- id: a7 - name: Networked Services - slides: https://docs.google.com/presentation/d/11nMxy5iJTS3YDBLqT3O5i8cbbRdtS2Hxf4QRbHJiGBo/edit - video: https://youtu.be/5clc5xi5FDo - lab: labs/a7 - lecturer: Loren McIntyre - hidelink: false - -- id: a8 - name: Config Management - slides: https://docs.google.com/presentation/d/1ZAXSwjM9_SncvD8GGQgbPI2g3KlSsIZi2-xxeHwfSWA/edit - video: https://youtu.be/T9hakIIYUkk - lab: labs/a8 - lecturer: Ja (Thanakul) Wattanawong - hidelink: false - -- id: a9 - name: Advanced Security - slides: https://docs.google.com/presentation/d/12ypck2LSIaNGq5RpLmIb4gbAX-GP2pCSgf4l9VMuq1k/edit - video: https://youtu.be/j4ryvaVJURs - lab: labs/a9 - lecturer: Mathew Cha - hidelink: false - -- id: a10 - name: Virtualization, Containers, Distributed Architecture - slides: https://docs.google.com/presentation/d/1EEUT0Z-odYYEmdC9Z1AAh7gVFLH3L2om9CHpqpklhOk/edit?usp=sharing - video: https://www.youtube.com/watch?v=tCg77GmZUqo - lab: labs/a10 - lecturer: Benjamin Zhang - hidelink: false - -# Extras - -- id: thanksgiving - name: 'No Lecture - Thanksgiving Week' - lecturer: '-' - -- id: bonus - name: 'TBD' +- id: 1 + date: 2/8/2021 + beginner-name: History of UNIX, intro to shell, FOSS + beginner-slides: https://docs.google.com/presentation/d/1AtnXiOZniLuP9QcnG8_OT1lwmhISRk2_zeANpXgycaY/edit?usp=sharing + beginner-video: https://youtu.be/pkSYJpxb9hk + advanced-name: Advanced Introduction to UNIX + advanced-slides: https://docs.google.com/presentation/d/1P4HcAr1NcxFEL1m9bIokiBP1zOODHj8YQMPFSafeWko/edit?usp=sharing + advanced-video: https://www.youtube.com/watch?v=TBsxgbGwtnA + labdue: Fri. 2/12 + hidelink: true + +- id: 2 + date: 2/15/2021 + beginner-name: Core Shell + beginner-slides: https://docs.google.com/presentation/d/1o7CWAAa21JYll_isRd-oR3dhurBAPzQA5desEhxvwH0/edit?usp=sharing + beginner-video: https://www.youtube.com/watch?v=TXNpIIlcHm4&feature=youtu.be + advanced-name: Packages + advanced-slides: https://docs.google.com/presentation/d/1RMNPRHNoh4a5KWwXY8fBWJ49nBafxbo4g-OvSZZ85V8/edit?usp=sharing + advanced-video: https://youtu.be/M0vPXQycer0 + labdue: Fri. 2/19 + hidelink: true + +- id: 3 + date: 2/22/2021 + beginner-name: Shell Scripting + beginner-slides: https://docs.google.com/presentation/d/1LG8G_fbduqo9K2NOtQDjHkmNCMim0kQOmo-0q3fvmRc/edit?usp=sharing + beginner-video: https://www.youtube.com/watch?v=7xAGcmhkflM + advanced-name: DIY Linux Pre-Install + advanced-slides: https://docs.google.com/presentation/d/1oLtsjsEIsvChOI31_5YYFhILfzGlyx7Hk9DsL1Nv-mc/edit?usp=sharing + advanced-video: https://www.youtube.com/watch?v=MnsUBRIw-74&feature=youtu.be + labdue: Fri. 2/26 + hidelink: true + +- id: 4 + date: 3/1/2021 + beginner-name: Compiling, Distros, and Packaging + beginner-slides: https://docs.google.com/presentation/d/1UJHO7fXok-6RN7DAJ5SPTqcCXiRSR8hpGZx9OQMnMOU/edit?usp=sharing + beginner-video: https://youtu.be/Uh7N86zjYm4 + advanced-name: Linux Post-Install + advanced-slides: https://docs.google.com/presentation/d/1b5nggnCS-qzkpp62xvnq5eGrJcgsYAvqlwIsx-Z6ETI/edit?usp=sharing + advanced-video: https://youtu.be/BVbHnEv8L9s + labdue: Fri. 3/5 + hidelink: true + +- id: 5 + date: 3/8/2021 + beginner-name: Networking 101 + beginner-slides: https://docs.google.com/presentation/d/1DCN2fViHjAS7PoS98dsVC-LNwPN_jvaAKIuVFaRJrM0/edit?usp=sharing + beginner-video: https://youtu.be/cPkLsSFKwPM + advanced-name: Processes and Services + advanced-slides: https://docs.google.com/presentation/d/1sv5Bxw9Fet9utjFU8xGDntawLVmBOT9YpCt9mJ2V6Dg/edit + advanced-video: https://youtu.be/AS293JoAr8s + labdue: Fri. 3/12 + hidelink: true + +- id: 6 + date: 3/15/2021 + beginner-name: Processes + beginner-slides: https://docs.google.com/presentation/d/1AS1BYX8jdBQGBviBGgcZPREIePrsgkT7pc-9Wk_RkS0/edit?usp=sharing + beginner-video: https://youtu.be/Z_q1zkeWEFs + advanced-name: Networking 102 + advanced-slides: https://docs.google.com/presentation/d/14XXyjUxUohINsg93qD-8SHP1mPpTTnBoZ3NHmMVTJqY/edit?usp=sharing + advanced-video: https://youtu.be/DPKRivN9ga4 + labdue: Fri. 3/19 + hidelink: true + +- id: 7 + date: 3/29/2021 + beginner-name: Services + beginner-slides: https://docs.google.com/presentation/d/1N67saQd3NWrBLrk1oEOE2UdLa4Ny_qjDBUAZQolXsUE/edit?usp=sharing + beginner-video: https://youtu.be/y3mIzYtCPeY + advanced-name: Networked Services + advanced-slides: https://docs.google.com/presentation/d/11nMxy5iJTS3YDBLqT3O5i8cbbRdtS2Hxf4QRbHJiGBo/edit + advanced-video: https://youtu.be/5clc5xi5FDo + labdue: Fri. 4/2 + hidelink: true + +- id: 8 + date: 4/5/2021 + beginner-name: Security Fundamentals + beginner-slides: https://docs.google.com/presentation/d/1tKAhg5-0jeh7ZBynQFukkK10saKHeouJpyQcerboPYg/edit?usp=sharing + beginner-video: https://www.youtube.com/watch?v=hqrWBYm5-Zg&feature=youtu.be + advanced-name: Config Management + advanced-slides: https://docs.google.com/presentation/d/1ZAXSwjM9_SncvD8GGQgbPI2g3KlSsIZi2-xxeHwfSWA/edit + advanced-video: https://youtu.be/T9hakIIYUkk + labdue: Fri. 4/9 + hidelink: true + +- id: 9 + date: 4/12/2021 + beginner-name: Version Control and Backups + beginner-slides: https://docs.google.com/presentation/d/1NxdvuLkWSzRvtnj41AkvGU00ub_XUbk8wlIxWxm0ok4/edit + beginner-video: https://youtu.be/X4yGMr9c64U + advanced-name: Advanced Security + advanced-slides: https://docs.google.com/presentation/d/12ypck2LSIaNGq5RpLmIb4gbAX-GP2pCSgf4l9VMuq1k/edit + advanced-video: https://youtu.be/j4ryvaVJURs + labdue: Fri. 4/16 + hidelink: true + +- id: 10 + date: 4/19/2021 + beginner-name: Cloud, Containers, and Config Management + beginner-slides: https://docs.google.com/presentation/d/1aiSnR1zT2qM-RcLnrCC1FhTqjnzKOQvMyR5r_hJr9V0/edit?usp=sharing + beginner-video: https://www.youtube.com/watch?v=JhgEg1YTO7c&feature=youtu.be + advanced-name: Virtualization, Containers, Distributed Architecture + advanced-slides: https://docs.google.com/presentation/d/1EEUT0Z-odYYEmdC9Z1AAh7gVFLH3L2om9CHpqpklhOk/edit?usp=sharing + advanced-video: https://www.youtube.com/watch?v=tCg77GmZUqo + labdue: Fri. 4/23 + hidelink: true diff --git a/_data/staff.yaml b/_data/staff.yaml deleted file mode 100644 index 05c7d9e2..00000000 --- a/_data/staff.yaml +++ /dev/null @@ -1,72 +0,0 @@ -- name: Stefan Kuklinsky - title: Facilitator - img: images/skuklinsky.jpg - description: Junior CS major. Looking forward to teaching this semester! -- name: Christopher Cooper - title: Head Facilitator - img: images/cooperc.jpg - description: sentient table learning to tame computers -- name: Bernard Zhao - title: Head Facilitator - img: images/bernardzhao.jpg - description: They tryna be cray -- name: Ben Cuan - title: Head Facilitator - img: images/bencuan.jpg - description: your friendly neighborhood panda -- name: Andy Lo - title: Facilitator - img: images/andy.jpg - description: reincarnation of wittl here to bring balance to the universe -- name: Tony Lian - title: Facilitator - img: images/tony.jpg - description: This person has existed and hopefully is existing in the world. -- name: Frank Dai - title: Facilitator - img: images/fydai.jpg - description: I'm the one who wears the 12-year old penguin costume -- name: Ja (Thanakul) Wattanawong - title: Facilitator - img: images/jaw.jpg - description: master of copying commands from the internet -- name: Aditya Srivastava - title: Facilitator - img: images/aditya.jpg - description: the sleeper must awaken -- name: Kevin Kuehler - title: Secret Agent - img: images/keur.jpg - description: i use arch btw -- name: Ning Zhang - title: Facilitator - img: images/zhangning.jpg - description: A very average person -- name: Ethan Smith - title: Facilitator - img: images/ethanhs.jpg - description: Doer of things -- name: Rachel Gregory - title: Facilitator - img: images/regex.jpg - description: i dont do much but im here anyways -- name: Liam Porr - title: Facilitator - img: images/wporr.jpg - description: None of these things are comprehensible to you -- name: George Lee - title: Facilitator - img: images/gleeb.jpg - description: The inner machinations of my mind are an enigma -- name: Mathew Cha - title: Guest Lecturer - img: images/mdcha.jpg - description: Resident OCF weirdo. -- name: Richard Huang - title: Facilitator - description: Apparently penguins do have knees. - img: images/rihu.jpg -- name: Benjamin Zhang - title: Facilitator - description: hi - img: images/bzh.jpg diff --git a/_includes/announcements.html b/_includes/announcements.html deleted file mode 100644 index 7914a840..00000000 --- a/_includes/announcements.html +++ /dev/null @@ -1,13 +0,0 @@ -
- - {{ site.sections | where:"slug","announcements" | content }} -
- - diff --git a/_includes/calendar-table.html b/_includes/calendar-table.html deleted file mode 100644 index 063fa75e..00000000 --- a/_includes/calendar-table.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - {% for entry in include.data %} - - - - {% if entry.note %} - - {% else %} - {% for item in site.data.materials %} - {% if item.id == entry.id %} - - - - - {% endif %} - {% endfor %} - {% endif %} - - {% endfor %} - -
WeekDateLecture TitleLecturerLabLab Due Date
{{ entry.week | default: - }}{{ entry.date | date: "%a. %m/%d" }} - {{ entry.note }} - - {% if item.video and item.hidelink != true %} - - {% endif %} - {{ item.name | default: - }} - {% if item.video %} - - {% endif %} - - {% if item.slides and item.hidelink != true %} - (slides) - {% endif %} - - - {{ item.lecturer | default: "TBA" | xml_escape }} - - {% if item.lab %} - {% if item.hidelink %} - Lab {{ item.id }} - {% else %} - - Lab {{ item.id }} - - {% endif %} - {% else %} - - - {% endif %} - {{ entry.labdue | date: "%a. %m/%d" }}
diff --git a/_includes/calendar.html b/_includes/calendar.html deleted file mode 100644 index e3b916e3..00000000 --- a/_includes/calendar.html +++ /dev/null @@ -1,9 +0,0 @@ -
-

Beginner Track Calendar

- {% include calendar-table.html data=site.data.beginner_calendar %} -
- -
-

Advanced Track Calendar

- {% include calendar-table.html data=site.data.advanced_calendar %} -
diff --git a/_includes/footer.html b/_includes/footer.html deleted file mode 100644 index 16d700dd..00000000 --- a/_includes/footer.html +++ /dev/null @@ -1,43 +0,0 @@ - diff --git a/_includes/footer_custom.html b/_includes/footer_custom.html new file mode 100644 index 00000000..8b8f3d40 --- /dev/null +++ b/_includes/footer_custom.html @@ -0,0 +1,55 @@ + diff --git a/_includes/head.html b/_includes/head.html deleted file mode 100644 index 7edf7a43..00000000 --- a/_includes/head.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - {% if page.title %}{{ page.title | escape }}{% else %}{{ site.title | escape }}{% endif %} - - - - - - - - - - - - - - - - diff --git a/_includes/interestform.html b/_includes/interestform.html deleted file mode 100644 index ff75a17a..00000000 --- a/_includes/interestform.html +++ /dev/null @@ -1,11 +0,0 @@ -
-
- -
-
- -
-
-

(Interest form not loading? Click here!)

diff --git a/_includes/minutes.liquid b/_includes/minutes.liquid new file mode 100644 index 00000000..c3207ae4 --- /dev/null +++ b/_includes/minutes.liquid @@ -0,0 +1,20 @@ +{% capture _minutes_workspace %} + {% comment %} + Return the number of minutes between midnight and the given time string (e.g. '9:30 AM'). + + Parameters: + `time` (string): the time to convert. + {% endcomment %} + + {% assign _time = include.time %} + {% assign _hhmm = _time | split: ' ' | first | split: ':' %} + {% assign _hours = _hhmm | first | to_integer %} + {% assign _minutes = _hhmm | last | to_integer %} + {% assign _ampm = _time | split: ' ' | last | upcase %} + + {% if _ampm == 'AM' and _hours == 12 %} + {% assign _hours = _hours | minus: 12 %} + {% elsif _ampm == 'PM' and _hours != 12 %} + {% assign _hours = _hours | plus: 12 %} + {% endif %} +{% endcapture %}{% assign _minutes_workspace = '' %}{{ _hours | times: 60 | plus: _minutes }} diff --git a/_includes/staff.html b/_includes/staff.html deleted file mode 100644 index 8fe19b92..00000000 --- a/_includes/staff.html +++ /dev/null @@ -1,22 +0,0 @@ - -
-
-

Course Staff

-
- {% for member in site.data.staff %} -
- Picture of {{ member.name }} -

{{ member.name }} - {{ member.title }} -

-

{{ member.description }}

-
- {% cycle '', '', '
' %} - {% cycle '', '
' %} - {% endfor %} -
diff --git a/_includes/toc.html b/_includes/toc.html new file mode 100644 index 00000000..8c710072 --- /dev/null +++ b/_includes/toc.html @@ -0,0 +1,182 @@ +{% capture tocWorkspace %} + {% comment %} + Copyright (c) 2017 Vladimir "allejo" Jimenez + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, + copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following + conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + {% endcomment %} + {% comment %} + Version 1.1.0 + https://github.com/allejo/jekyll-toc + + "...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe + + Usage: + {% include toc.html html=content sanitize=true class="inline_toc" id="my_toc" h_min=2 h_max=3 %} + + Parameters: + * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll + + Optional Parameters: + * sanitize (bool) : false - when set to true, the headers will be stripped of any HTML in the TOC + * class (string) : '' - a CSS class assigned to the TOC + * id (string) : '' - an ID to assigned to the TOC + * h_min (int) : 1 - the minimum TOC header level to use; any header lower than this value will be ignored + * h_max (int) : 6 - the maximum TOC header level to use; any header greater than this value will be ignored + * ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list + * item_class (string) : '' - add custom class(es) for each list item; has support for '%level%' placeholder, which is the current heading level + * submenu_class (string) : '' - add custom class(es) for each child group of headings; has support for '%level%' placeholder which is the current "submenu" heading level + * base_url (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content + * anchor_class (string) : '' - add custom class(es) for each anchor element + * skip_no_ids (bool) : false - skip headers that do not have an `id` attribute + + Output: + An ordered or unordered list representing the table of contents of a markdown block. This snippet will only + generate the table of contents and will NOT output the markdown given to it + {% endcomment %} + + {% capture newline %} + {% endcapture %} + {% assign newline = newline | rstrip %} + + {% capture deprecation_warnings %}{% endcapture %} + + {% if include.baseurl %} + {% capture deprecation_warnings %}{{ deprecation_warnings }}{{ newline }}{% endcapture %} + {% endif %} + + {% if include.skipNoIDs %} + {% capture deprecation_warnings %}{{ deprecation_warnings }}{{ newline }}{% endcapture %} + {% endif %} + + {% capture jekyll_toc %}{% endcapture %} + {% assign orderedList = include.ordered | default: false %} + {% assign baseURL = include.base_url | default: include.baseurl | default: '' %} + {% assign skipNoIDs = include.skip_no_ids | default: include.skipNoIDs | default: false %} + {% assign minHeader = include.h_min | default: 1 %} + {% assign maxHeader = include.h_max | default: 6 %} + {% assign nodes = include.html | strip | split: ' maxHeader %} + {% continue %} + {% endif %} + + {% assign _workspace = node | split: '' | first }}>{% endcapture %} + {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %} + + {% if include.item_class and include.item_class != blank %} + {% capture listItemClass %} class="{{ include.item_class | replace: '%level%', currLevel | split: '.' | join: ' ' }}"{% endcapture %} + {% endif %} + + {% if include.submenu_class and include.submenu_class != blank %} + {% assign subMenuLevel = currLevel | minus: 1 %} + {% capture subMenuClass %} class="{{ include.submenu_class | replace: '%level%', subMenuLevel | split: '.' | join: ' ' }}"{% endcapture %} + {% endif %} + + {% capture anchorBody %}{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}{% endcapture %} + + {% if htmlID %} + {% capture anchorAttributes %} href="{% if baseURL %}{{ baseURL }}{% endif %}#{{ htmlID }}"{% endcapture %} + + {% if include.anchor_class %} + {% capture anchorAttributes %}{{ anchorAttributes }} class="{{ include.anchor_class | split: '.' | join: ' ' }}"{% endcapture %} + {% endif %} + + {% capture listItem %}{{ anchorBody }}{% endcapture %} + {% elsif skipNoIDs == true %} + {% continue %} + {% else %} + {% capture listItem %}{{ anchorBody }}{% endcapture %} + {% endif %} + + {% if currLevel > lastLevel %} + {% capture jekyll_toc %}{{ jekyll_toc }}<{{ listModifier }}{{ subMenuClass }}>{% endcapture %} + {% elsif currLevel < lastLevel %} + {% assign repeatCount = lastLevel | minus: currLevel %} + + {% for i in (1..repeatCount) %} + {% capture jekyll_toc %}{{ jekyll_toc }}{% endcapture %} + {% endfor %} + + {% capture jekyll_toc %}{{ jekyll_toc }}{% endcapture %} + {% else %} + {% capture jekyll_toc %}{{ jekyll_toc }}{% endcapture %} + {% endif %} + + {% capture jekyll_toc %}{{ jekyll_toc }}{{ listItem }}{% endcapture %} + + {% assign lastLevel = currLevel %} + {% assign firstHeader = false %} + {% endfor %} + + {% assign repeatCount = minHeader | minus: 1 %} + {% assign repeatCount = lastLevel | minus: repeatCount %} + {% for i in (1..repeatCount) %} + {% capture jekyll_toc %}{{ jekyll_toc }}{% endcapture %} + {% endfor %} + + {% if jekyll_toc != '' %} + {% assign rootAttributes = '' %} + {% if include.class and include.class != blank %} + {% capture rootAttributes %} class="{{ include.class | split: '.' | join: ' ' }}"{% endcapture %} + {% endif %} + + {% if include.id and include.id != blank %} + {% capture rootAttributes %}{{ rootAttributes }} id="{{ include.id }}"{% endcapture %} + {% endif %} + + {% if rootAttributes %} + {% assign nodes = jekyll_toc | split: '>' %} + {% capture jekyll_toc %}<{{ listModifier }}{{ rootAttributes }}>{{ nodes | shift | join: '>' }}>{% endcapture %} + {% endif %} + {% endif %} +{% endcapture %}{% assign tocWorkspace = '' %}{{ deprecation_warnings }}{{ jekyll_toc }} diff --git a/_layouts/announcement.html b/_layouts/announcement.html new file mode 100644 index 00000000..3451611f --- /dev/null +++ b/_layouts/announcement.html @@ -0,0 +1,14 @@ +
+

{{ page.title }}

+ + {% if page.date %} + {{ page.date | date: '%b %e' }} + · + {% endif %} + {% assign minutes = content | strip_html | number_of_words | divided_by: 180.0 | round %} + {{ minutes }} min read + +
+ {{ content }} +
+
diff --git a/_layouts/default.html b/_layouts/default.html deleted file mode 100644 index a07d5190..00000000 --- a/_layouts/default.html +++ /dev/null @@ -1,12 +0,0 @@ - - -{% include head.html %} - - - {{ content }} - - {% include footer.html %} - - - - diff --git a/_layouts/home.html b/_layouts/home.html deleted file mode 100644 index 56aa31ca..00000000 --- a/_layouts/home.html +++ /dev/null @@ -1,64 +0,0 @@ ---- -layout: default ---- - - - -
- {{ site.sections | where:"slug","intro" | first | content }} - - {% include announcements.html %} - - {% include calendar.html %} - - {{ site.sections | where:"slug","policies" | first | content }} - - {% include staff.html %} -
diff --git a/_layouts/lab.html b/_layouts/lab.html index 8e66e99b..b1c0ecd8 100644 --- a/_layouts/lab.html +++ b/_layouts/lab.html @@ -1,33 +1,74 @@ - - - - - - - - - -{% if page.title %}{{ page.title | escape }} - {% endif %}{{ site.title | escape }} - -
- {% if page.title %}

{{ page.title }}

{% endif %} - {{ content }} + -
-{% include footer.html %} -
+ +{% include head.html %} + + {% include css/just-the-docs.scss.liquid %} + + + + + Link + + + + + + + +
+
+ {% unless page.url == "/" %} + {% if page.parent %} + + {% endif %} + {% endunless %} +
+

{{ page.title }}

+ {% assign minutes = content | strip_html | number_of_words | divided_by: 180.0 | round %} + {{ minutes }} min read + {% if site.heading_anchors != false %} + {% include vendor/anchor_headings.html html=content beforeHeading="true" anchorBody="" anchorClass="anchor-heading" %} + {% else %} + {{ content }} + {% endif %} +
+ {% include footer_custom.html %} +
+
+
+ + + + diff --git a/_layouts/schedule.html b/_layouts/schedule.html new file mode 100644 index 00000000..c0c25477 --- /dev/null +++ b/_layouts/schedule.html @@ -0,0 +1,34 @@ +{% assign start_time = page.timeline | first %} +{% capture offset %}{% include minutes.liquid time=start_time %}{% endcapture %} +
+
    + {% for time in page.timeline %} +
  • {{ time }}
  • + {% endfor %} +
+
    + {% for day in page.schedule %} +
  • +

    {{ day.name }}

    + {% if day.events %} +
      + {% for event in day.events %} + {% capture start %}{% include minutes.liquid time=event.start %}{% endcapture %} + {% capture end %}{% include minutes.liquid time=event.end %}{% endcapture %} + {% assign top = start | minus: offset | times: 40 | divided_by: 30 %} + {% assign height = end | minus: start | times: 40 | divided_by: 30 %} +
    • +
      {{ event.name }}
      +
      {{ event.start }}–{{ event.end }}
      + {% if event.location %} +
      {{ event.location }}
      + {% endif %} +
    • + {% endfor %} +
    + {% endif %} +
  • + {% endfor %} +
+
diff --git a/_layouts/staffer.html b/_layouts/staffer.html new file mode 100644 index 00000000..6a5e894e --- /dev/null +++ b/_layouts/staffer.html @@ -0,0 +1,27 @@ +
+ {% if page.photo %} + + {% endif %} +
+

+ {% if page.website %} + {{ page.name }} + {% else %} + {{ page.name }} + {% endif %} + {% if page.pronouns %} + {{ page.pronouns }} + {% endif %} +

+ {% if page.email %} +

{{ page.email }}

+ {% endif %} + {% if page.section %} +

Quiz Section: {{ page.section | markdownify | strip_html }}

+ {% endif %} + {% if page.office-hours %} +

Office Hours: {{ page.office-hours | markdownify | strip_html }}

+ {% endif %} + {{ content }} +
+
diff --git a/_sass/custom/announcement.scss b/_sass/custom/announcement.scss new file mode 100644 index 00000000..c0fd1464 --- /dev/null +++ b/_sass/custom/announcement.scss @@ -0,0 +1,11 @@ +.announcement { + @extend %card; + + h1, h2 { + @extend .text-gamma; + } + + .announcement-meta { + @extend .text-epsilon; + } +} diff --git a/_sass/custom/card.scss b/_sass/custom/card.scss new file mode 100644 index 00000000..7d3b6d63 --- /dev/null +++ b/_sass/custom/card.scss @@ -0,0 +1,33 @@ +@mixin abstract-card() { + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.07), 0 4px 14px rgba(0, 0, 0, 0.05); + margin: $sp-4 (-$gutter-spacing-sm); + + @include mq(md) { + border-radius: $border-radius; + margin: $sp-4 0; + } +} + +%card { + @include abstract-card(); + display: flex; + flex-direction: column; + min-width: 0; + padding: 0 $sp-4; + position: relative; + word-wrap: break-word; + + >:first-child { + border-top: none !important; + } + + >:last-child { + border-bottom: none !important; + } + + .label { + border-radius: $border-radius; + margin-left: 0; + user-select: none; + } +} diff --git a/_sass/custom/custom.scss b/_sass/custom/custom.scss new file mode 100644 index 00000000..674b62ac --- /dev/null +++ b/_sass/custom/custom.scss @@ -0,0 +1,151 @@ +// Just the Class dependencies +@import 'card'; + +// Just the Class styles +@import 'announcement'; +@import 'module'; +@import 'schedule'; +@import 'staffer'; + +// Custom styles +@import 'footer'; + +// Overrides +a abbr[title] { + border-bottom: none; +} + +abbr[title] { + text-decoration: none; +} + +code { + font-size: 14px; + padding: 0.2em 0.4em; + border: none; +} + +div.highlighter-rouge[overlay] { + position: relative; + + &::after { + @extend .label, .text-grey-dk-100; + + background-color: $white; + border-radius: $border-radius; + bottom: $sp-2; + content: attr(overlay); + position: absolute; + right: 0; + user-select: none; + } +} + +details { + margin: 0 40px 1em; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + align-items: center; + display: flex; +} + +iframe, +summary { + max-width: 100%; +} + +summary { + @extend .btn, .btn-outline; +} + +.main-content-wrap { + max-width: $content-width; + margin: auto; +} + +.main-content { + a { + overflow-wrap: anywhere; + white-space: normal; + } + + dl { + display: block; + grid-template-columns: none; + } + + dt { + font-weight: 700; + text-align: start; + + &::after { + content: normal; + } + } + + dd { + font-weight: normal; + + +dt { + margin-top: 1em; + } + } + + .katex { + font-size: 1.1em; + } +} + +[style*="--aspect-ratio"]> :first-child { + width: 100%; +} + +[style*="--aspect-ratio"]>img { + height: auto; +} + +@supports (--custom:property) { + [style*="--aspect-ratio"] { + position: relative; + } + + [style*="--aspect-ratio"]::before { + content: ""; + display: block; + padding-bottom: calc(100% / (var(--aspect-ratio))); + } + + [style*="--add-height"]::before { + padding-bottom: calc(100% / (var(--aspect-ratio)) + (var(--add-height))); + } + + [style*="--aspect-ratio"]> :first-child { + position: absolute; + top: 0; + left: 0; + height: 100%; + } +} + +@media (min-width: 66.5rem) { + .main { + margin-left: min(600px, calc((100% - 1064px) / 2 + 264px)) !important; + } + + .side-bar { + max-width: 500px; + } +} + +.theme-btn { + margin-left: 20px; + margin-bottom: 50px; + align-self: center; + display: flex; +} \ No newline at end of file diff --git a/_sass/custom/footer.scss b/_sass/custom/footer.scss new file mode 100644 index 00000000..83ec9818 --- /dev/null +++ b/_sass/custom/footer.scss @@ -0,0 +1,23 @@ +footer { + font-size: 12px; + + p { + display: flex; + justify-content: center; + align-content: center; + flex-direction: row; + align-items: center; + } + + img { + padding-right: 10px; + } + + a.no-underline { + background-image: none; + } + + .text { + margin: auto; + } +} diff --git a/_sass/custom/module.scss b/_sass/custom/module.scss new file mode 100644 index 00000000..87c327c2 --- /dev/null +++ b/_sass/custom/module.scss @@ -0,0 +1,99 @@ +.main-content .module, +.module { + @extend %card; + + h1, + h2, + h3, + h4, + h5, + h6 { + &:first-child { + margin-top: $sp-4; + } + } + + >dl { + border-bottom: $border $border-color; + border-top: $border $border-color; + display: grid; + grid-template-columns: max-content 2fr; + margin: $sp-2 (-$sp-4); + + &:first-child { + margin-top: 0; + } + + &:last-child { + margin-bottom: 0; + } + + @include mq(lg) { + grid-template-columns: 2fr 6fr; + } + + %module-item { + margin: 0; + padding: $sp-2; + + @include mq(sm) { + padding: $sp-2 $sp-4; + } + } + + >dt { + @extend %module-item; + border-top: $border $border-color; + font-weight: normal; + text-align: right; + + +dd { + border-top: $border $border-color; + } + + &:first-child { + border-top: none; + + +dd { + border-top: none; + } + } + + &::after { + content: ":"; + } + } + + >dd { + @extend %module-item; + + +dd { + padding-top: 0; + } + + ol, + ul, + dl { + margin: 0; + } + + dl { + display: flex; + flex-direction: column; + + @include mq(sm) { + flex-direction: row; + } + + dt { + flex: 0 0 62.5%; + margin: 0; + } + + dd { + margin: 0; + } + } + } + } +} \ No newline at end of file diff --git a/_sass/custom/schedule.scss b/_sass/custom/schedule.scss new file mode 100644 index 00000000..f5b4d583 --- /dev/null +++ b/_sass/custom/schedule.scss @@ -0,0 +1,103 @@ +.schedule { + @include abstract-card(); + overflow-x: scroll; + position: relative; + + li::before { + display: none; + } + + ul.schedule-timeline, + ul.schedule-group, + ul.schedule-events { + margin-top: 0; + padding-left: 0; + } + + ul.schedule-timeline { + margin: 40px auto 0; + position: absolute; + width: 100%; + } + + .schedule-time { + @extend .fs-2; + color: $grey-dk-000; + height: 40px; + margin: 0; + padding: $sp-2; + position: relative; + + &::after { + background-color: $border-color; + content: ''; + height: 1px; + left: 0; + position: absolute; + top: 0; + width: 100%; + } + } + + .schedule-group { + display: flex; + margin-bottom: 0; + position: relative; + } + + .schedule-day { + border-left: $border $border-color; + flex: 1 0 0; + margin: 0; + min-width: 130px; + + &:first-of-type { + border-left: 0; + } + } + + h2.schedule-header { + align-items: center; + display: flex; + font-size: 18px !important; + height: 40px; + justify-content: center; + margin: 0; + } + + .schedule-events { + display: flex; + padding: 0; + position: relative; + } + + .schedule-event { + background-color: $grey-dk-000; + border-radius: $border-radius; + box-shadow: 0 10px 20px rgba(0, 0, 0, .1), inset 0 -3px 0 rgba(0, 0, 0, .2); + color: $white; + float: left; + height: 100%; + margin: 0; + padding: $sp-1 $sp-2; + position: absolute; + width: 100%; + + .name { + @extend .fs-3, .fw-700; + } + + .time, + .location { + @extend .fs-2; + } + + &.beginner-lab { + background-color: $blue-000; + } + + &.advanced-lab { + background-color: $red-000; + } + } +} diff --git a/_sass/custom/staffer.scss b/_sass/custom/staffer.scss new file mode 100644 index 00000000..18630e06 --- /dev/null +++ b/_sass/custom/staffer.scss @@ -0,0 +1,23 @@ +.staffer { + display: flex; + margin: $sp-4; + + .staffer-image { + border-radius: 50%; + height: 100px; + margin-right: $sp-4; + } + + p, + .staffer-name { + margin: $sp-1 !important; + } + + .staffer-pronouns { + @extend .label, .text-grey-dk-100, .bg-grey-lt-200; + } + + .staffer-meta { + @extend .text-grey-dk-000; + } +} diff --git a/_schedules/weekly.md b/_schedules/weekly.md new file mode 100644 index 00000000..93e944ab --- /dev/null +++ b/_schedules/weekly.md @@ -0,0 +1,26 @@ +--- +timeline: + - '7:30 PM' + - '8:00 PM' + - '8:30 PM' + - '9:00 PM' + - '9:30 PM' + - '10:00 PM' + +schedule: + - name: Monday + - name: Tuesday + events: + - name: Beginner Lab + start: 8:00 PM + end: 9:00 PM + location: ocf.io/decalzoom + - name: Wednesday + - name: Thursday + events: + - name: Advanced Lab + start: 8:00 PM + end: 9:00 PM + location: ocf.io/decalzoom + - name: Friday +--- diff --git a/_sections/announcements.md b/_sections/announcements.md deleted file mode 100644 index 6665d430..00000000 --- a/_sections/announcements.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -# This is the first part of the main page. This is included from _includes/announcements.html. ---- -## Announcements - - - The link to all live meetings is [ocf.io/decalzoom](https://ocf.io/decalzoom). - - **All labs are due by Dec. 15!** You will need a total of **10** completed labs by this date to receive a P in the course. - - **View a lecture** by clicking on the lecture title! - - **Lab 10 has been released!** This is the last lab of the semester, and is due by Dec. 15. - - Remember that **only two late labs are allowed.** If you are falling behind, please contact us to discuss accommodations! - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/_sections/intro.md b/_sections/intro.md deleted file mode 100644 index e46c5b79..00000000 --- a/_sections/intro.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -# This is the first part of the main page. This is included from _layouts/home.html. ---- -# Welcome to the Linux System Administration DeCal! - -#### Fall 2020 - -This course will cover the basics of setting up and administering a -production-quality Linux server environment. By the end of this -course, we expect you to: - -* be comfortable using GNU/Linux -* understand how different parts of the OS work together, e.g. init, - processes, daemons, filesystems, etc. -* understand basic networking on Linux -* have a good sense about maintaining system security -* understand system administration essentials -* get a practical taste of what sysadmins do in industry. - -The course will be taught in two sections: a "Beginner" section for -students with minimal background in GNU/Linux or system -administration, and an "Advanced" section for students with more -experience. - -While we expect many students will have a CS background, **the only -real prerequisite is a desire to learn** about new and unfamiliar -technologies, which is a critical skill for sysadmins. The Beginner -section has been designed to introduce new users to Linux, and the -Advanced section has been designed to give more experienced users a -taste of what Linux is capable of. diff --git a/_sections/policies.md b/_sections/policies.md deleted file mode 100644 index e75a8fba..00000000 --- a/_sections/policies.md +++ /dev/null @@ -1,107 +0,0 @@ ---- -# This is a section on the main page. This is included from _layouts/home.html. ---- -## Administrivia - -### Enrollment -This is a **2 unit DeCal**. Since it is a DeCal, the course is P/NP. **You must -attend an infosession and complete Lab 0 to apply.** If you are selected for the -course, we will send you a course enrollment code by September 14. - -### Lecture -Lectures are scheduled for **Tuesdays** for the Beginner section and -**Thursdays** for the Advanced section, from **8 to 9pm.** Due to the online -nature of this semester, we will hold lectures over Zoom or a comparable -streaming platform (to be announced). Additionally, lecture recordings will -be made available on this website. - - - -While we normally mandate attendance, this will no longer be a requirement for -Fall 2020 given the remote nature of the course. Nonetheless, students will be -expected to view all lectures, as knowledge of their content will be assumed in -lab assignments. - -**Lecture will double as office hours** for students to come in and ask -questions about lab work or covered material. The one-hour lecture slot will -include some lecturing but will also include time to to work on the lab assignment -with the help of present facilitators. - - - -### Labs -The primary assignment in this course will be **weekly lab work**. -Labs are designed to be be significantly hands-on. You will be working on -real systems, configuring, and fixing things, setting up services, and so on. - -Each lecture corresponds with a lab, labeled by a "b" or "a" (for Beginner or -Advanced) and the week number. Except for b1 and a1, labs will general be -released about a week ahead of the corresponding lecture. You are *highly -encouraged* to look over the lab, and try to start it, *before* coming to -lecture each week. This will allow you to better utilize the help of the -facilitators, and will help you understand the lecture in a concrete way. - -Each lab will be due **before the following lecture**. For example, lab a1 will -be due by **8pm on Thursday, 9/24** which is when Lecture a2 will be held. Please stay on -top of lab work! If extenuating circumstances prevent you from completing your -lab on time, please let us know as soon as possible and we will try to be -accommodating. - -**You must complete all labs to receive credit for taking the course.** However, -we will allow **two unexcused late labs** to be turned in before the semester ends. - -## FAQ - -### Will the DeCal be offered in the Spring 2021 semester? -It is very likely that the DeCal will be back next semester! Fill out the [interest form][interestform] to get updates! - -### How does enrollment work? -When we are open for enrollment, Lab 0 will be published on this site. We will send enrollment codes to those who complete Lab 0 by the deadline. Do note that we often have more applicants than space in the course, so getting an enrollment code is unfortunately not guaranteed. - -### How do I know which track is best for me? -**Beginner Track** is intended for those who have little to no prior experience of -using Linux-based systems. We will be providing an overview to several important -concepts in systems administration, such as networking, shell scripting, version -control, and security. It's perfectly OK if you've never worked with or heard of -these concepts before- but if you're familiar with them, we recommend you opt -for the advanced track. Overall, we welcome everyone to this track! - -**Advanced Track** is intended for those who have used Linux-based systems before -and are at least somewhat familiar with some of the concepts mentioned in the -beginner track description above. While there are no hard/enforced prerequisites, -we do recommend that you have experience with one or more of the following: - - Using Linux as a primary/secondary OS - - Using a package manager such as `apt` or `pacman` - - Writing scripts to automate basic tasks - - Basic networking (such as working with IP addresses) - -If you are still unsure about which track to choose, -you can email us at [decal@ocf.berkeley.edu][email]. - -### I don't want units / wasn't accepted / am not a student. Can I audit this course? -We are working hard to get all of our materials online this semester for everyone to -access! Since we are no longer bound by physical constraints, feel free to attend -any of our scheduled lectures or complete any of the labs on your own. (You will -need your own Linux VM though- you can -[install one locally](https://blog.storagecraft.com/the-dead-simple-guide-to-installing-a-linux-virtual-machine-on-windows/) -or get one from a provider such as [DigitalOcean](https://www.digitalocean.com/).) - -### I'm stuck on a lab/concept! Where can I find help? -The best way to get support with course content is to either join our Slack channel at [#decal-general][slack], our Discord channel at [#decal-general][discord], or -ask us during scheduled lecture times. - -### I have another question! -Email us at [decal@ocf.berkeley.edu][email]. - -[email]: mailto:decal@ocf.berkeley.edu -[slack]: https://fco.slack.com/archives/CN0FQ9BUN -[discord]: https://ocf.io/discord -[interestform]: https://docs.google.com/forms/d/e/1FAIpQLSdE6qRi1S3WyrzdhoEqHrn0qqgCft6cqZUrLjP9ak2R7Vv91g/viewform \ No newline at end of file diff --git a/_staffers/bencuan.md b/_staffers/bencuan.md new file mode 100644 index 00000000..7901bf9d --- /dev/null +++ b/_staffers/bencuan.md @@ -0,0 +1,9 @@ +--- +name: Ben Cuan +role: Head Facilitator +email: contact@bencuan.me +website: https://bencuan.me +photo: bencuan.jpg +--- + +Super Awesome Content diff --git a/_staffers/sample.md b/_staffers/sample.md new file mode 100644 index 00000000..713f1551 --- /dev/null +++ b/_staffers/sample.md @@ -0,0 +1,9 @@ +--- +name: Vacuum Cleaner +role: Facilitator +email: me@example.com +website: https://google.com +photo: kevin.jpg +--- + +[Schedule an appointment](https://www.youtube.com/watch?v=dQw4w9WgXcQ){: .btn .btn-outline } diff --git a/about.md b/about.md new file mode 100644 index 00000000..9c989e11 --- /dev/null +++ b/about.md @@ -0,0 +1,103 @@ +--- +layout: page +title: About +nav_order: 2 +description: >- + Course policies and information. +--- + +# About +{:.no_toc} + +## Table of contents +{: .no_toc .text-delta } + +1. TOC +{:toc} + +--- + +# Course Description + +This course covers the basics of setting up and administering a production-quality Linux server environment. By the end of this course, we expect that you will... + +* be comfortable using GNU/Linux +* understand how different parts of the OS work together, e.g. init, processes, daemons, filesystems, etc. +* understand basic networking on Linux +* have a good sense about maintaining system security +* understand system administration essentials +* get a practical taste of what sysadmins do in industry. + +The course will be taught in two sections: a "Beginner" section for students with minimal background in GNU/Linux or system administration, and an "Advanced" section for students with more experience. + +While we expect many students will have a CS background, **the only real prerequisite is a desire to learn** about new and unfamiliar technologies, which is a critical skill for sysadmins. The Beginner section has been designed to introduce new users to Linux, and the Advanced section has been designed to give more experienced users a taste of what Linux is capable of. + +# Administrivia + +## Enrollment +This is a **2 unit DeCal**. Since it is a DeCal, the course is P/NP. **You must attend an infosession and complete Lab 0 to apply.** If you are selected for the course, we will send you a course enrollment code by February 5. + +## Lecture +Lectures are scheduled for **Tuesdays** for the Beginner section and **Thursdays** for the Advanced section, from **8 to 9pm.** Due to the online nature of this semester, we will offer pre-recorded lectures, posted weekly on this website. Lab sections and office hours will be held over Zoom at [ocf.io/decalzoom](https://ocf.io/decalzoom). + + + +While we normally mandate attendance, this will no longer be a requirement for Spring 2021 given the remote nature of the course. Nonetheless, students will be expected to view all lectures, as knowledge of their content will be assumed in lab assignments. + + + + + +## Labs +The primary assignment in this course will be **weekly lab work**. Labs are designed to be be significantly hands-on. You will be working on real systems, configuring, and fixing things, setting up services, and so on. + +Each lecture corresponds with a lab, labeled by a "b" or "a" (for Beginner or Advanced) and the week number. Except for b1 and a1, labs will general be released the week before the corresponding lecture. You are *highly encouraged* to look over the lab, and try to start it, *before* coming to section each week. This will allow you to better utilize the help of the facilitators, and will help you understand the lecture in a concrete way. + +Each lab will be due **before the following lecture**. For example, lab a1 will be due by **8pm on Thursday, 9/24** which is when Lecture a2 will be held. Please stay on top of lab work! If extenuating circumstances prevent you from completing your lab on time, please let us know as soon as possible and we will try to be accommodating. + +**You must complete all labs to receive credit for taking the course.** However, we will allow **two unexcused late labs** to be turned in before the semester ends. + +## Live Sessions +In a typical semester, lectures are delivered live during the scheduled Tuesday and Thursday sections. However, due to the online nature of Spring 2021 we plan on converting these sections into lab sections, where facilitators will give additional information and demos related to the lab, and hold office hours to answer any questions that may arise. While attendance is not required, you are **highly encouraged** to attend since the information covered will make completing labs a shorter and more enjoyable experience. + +# FAQ + +## Will the DeCal be offered next semester? +It's too early to say at this point. Please check back in several months to see if there are any updates! + +## How do I know which track is best for me? +**Beginner Track** is intended for those who have little to no prior experience of using Linux-based systems. We will be providing an overview to several important concepts in systems administration, such as networking, shell scripting, version control, and security. It's perfectly OK if you've never worked with or heard of these concepts before- but if you're familiar with them, we recommend you opt for the advanced track. Overall, we welcome everyone to this track! + +**Advanced Track** is intended for those who have used Linux-based systems before and are at least somewhat familiar with some of the concepts mentioned in the beginner track description above. While there are no hard/enforced prerequisites, we do recommend that you have experience with one or more of the following: + + - Using Linux as a primary/secondary OS + - Using a package manager such as `apt` or `pacman` + - Writing scripts to automate basic tasks + - Basic networking (such as working with IP addresses) + +If you are still unsure about which track to choose, you can email us at [decal@ocf.berkeley.edu][email]. + +## I don't want units / wasn't accepted / am not a student. Can I audit this course? +We are working hard to get all of our materials online this semester for everyone to access! Since we are no longer bound by physical constraints, feel free to attend any of our scheduled lectures or complete any of the labs on your own. (You will +need your own Linux VM though- you can [install one locally](https://blog.storagecraft.com/the-dead-simple-guide-to-installing-a-linux-virtual-machine-on-windows/) or get one from a provider such as [DigitalOcean](https://www.digitalocean.com/).) + +## I'm stuck on a lab/concept! Where can I find help? +The best way to get support with course content is to either join our Slack channel at [#decal-general][slack], or ask us during scheduled lecture times. + +## I have another question! +Email us at [decal@ocf.berkeley.edu][email]. + +[email]: mailto:decal@ocf.berkeley.edu +[slack]: https://fco.slack.com/archives/CN0FQ9BUN + +# After this Course + +There's no substitute for real-world experience. If you'd like to get experience in a low-risk but real-world setting, consider [joining the OCF](https://ocf.io/getinvolved) as a volunteer staff member. There, you'll be able to put the things you learn in this course to use, and help other students while you're at it. Best of all- **there's no application process**! Just drop by and say hi :) diff --git a/announcements.md b/announcements.md new file mode 100644 index 00000000..c5afe2f7 --- /dev/null +++ b/announcements.md @@ -0,0 +1,15 @@ +--- +layout: page +title: Announcements +nav_order: 3 +description: A feed containing all of the class announcements. +--- + +# Announcements + +Check back to this page periodically to find out about new assignments, special events, and more! + +{% assign announcements = site.announcements | reverse %} +{% for announcement in announcements %} +{{ announcement }} +{% endfor %} diff --git a/archive.md b/archive.md new file mode 100644 index 00000000..47440096 --- /dev/null +++ b/archive.md @@ -0,0 +1,35 @@ +--- +layout: page +title: Archive +nav_order: 5 +description: >- + Past offerings of the course. +--- + +

Unix System Administration Decal

+ +

Below are previous semesters' archived course websites:

+ + diff --git a/archives.html b/archives.html deleted file mode 100644 index a2bb38e0..00000000 --- a/archives.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - Unix System Adminstration DeCal Archives - - - -

Unix System Administration Decal

- -

Below are previous semesters' archived course websites:

- - - - - Hosted by the OCF - - - diff --git a/images/bencuan.jpg b/assets/images/bencuan.jpg similarity index 100% rename from images/bencuan.jpg rename to assets/images/bencuan.jpg diff --git a/images/digitalocean.png b/assets/images/digitalocean.png old mode 100755 new mode 100644 similarity index 100% rename from images/digitalocean.png rename to assets/images/digitalocean.png diff --git a/assets/images/kevin.jpg b/assets/images/kevin.jpg new file mode 100644 index 00000000..83dd323f Binary files /dev/null and b/assets/images/kevin.jpg differ diff --git a/images/linode.png b/assets/images/linode.png old mode 100755 new mode 100644 similarity index 100% rename from images/linode.png rename to assets/images/linode.png diff --git a/assets/round-about.css b/assets/round-about.css deleted file mode 100644 index 177c7e6e..00000000 --- a/assets/round-about.css +++ /dev/null @@ -1,18 +0,0 @@ -/*! - * Start Bootstrap - Round About (http://startbootstrap.com/) - * Copyright 2013-2016 Start Bootstrap - * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap/blob/gh-pages/LICENSE) - */ - -body { - padding-top: 70px; /* Required padding for .navbar-fixed-top. Remove if using .navbar-static-top. Change if height of navigation changes. */ - font-size: 16px; -} - -.img-center { - margin: 0 auto; -} - -footer { - margin: 50px 0; -} \ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 00000000..df54e811 Binary files /dev/null and b/favicon.ico differ diff --git a/images/aditya.jpg b/images/aditya.jpg deleted file mode 100644 index e1ee3937..00000000 Binary files a/images/aditya.jpg and /dev/null differ diff --git a/images/andy.jpg b/images/andy.jpg deleted file mode 100644 index d6f96a53..00000000 Binary files a/images/andy.jpg and /dev/null differ diff --git a/images/bernardzhao.jpg b/images/bernardzhao.jpg deleted file mode 100644 index 3dcc0970..00000000 Binary files a/images/bernardzhao.jpg and /dev/null differ diff --git a/images/bzh.png b/images/bzh.png deleted file mode 100644 index 2255c245..00000000 Binary files a/images/bzh.png and /dev/null differ diff --git a/images/cooperc.jpg b/images/cooperc.jpg deleted file mode 100644 index e7ea75af..00000000 Binary files a/images/cooperc.jpg and /dev/null differ diff --git a/images/ethanhs.jpg b/images/ethanhs.jpg deleted file mode 100644 index 20219332..00000000 Binary files a/images/ethanhs.jpg and /dev/null differ diff --git a/images/fydai.jpg b/images/fydai.jpg deleted file mode 100644 index e4825d0e..00000000 Binary files a/images/fydai.jpg and /dev/null differ diff --git a/images/gleeb.jpg b/images/gleeb.jpg deleted file mode 100644 index dfa4ff2c..00000000 Binary files a/images/gleeb.jpg and /dev/null differ diff --git a/images/jaw.jpg b/images/jaw.jpg deleted file mode 100644 index 10e2c832..00000000 Binary files a/images/jaw.jpg and /dev/null differ diff --git a/images/keur.jpg b/images/keur.jpg deleted file mode 100644 index 24f0d70d..00000000 Binary files a/images/keur.jpg and /dev/null differ diff --git a/images/labs/a9/XOR.GIF b/images/labs/a9/XOR.GIF deleted file mode 100644 index 13101311..00000000 Binary files a/images/labs/a9/XOR.GIF and /dev/null differ diff --git a/images/labs/a9/certificate.png b/images/labs/a9/certificate.png deleted file mode 100644 index fdd3e79f..00000000 Binary files a/images/labs/a9/certificate.png and /dev/null differ diff --git a/images/labs/b2/tmux-layout.png b/images/labs/b2/tmux-layout.png deleted file mode 100644 index 2919b3cb..00000000 Binary files a/images/labs/b2/tmux-layout.png and /dev/null differ diff --git a/images/mdcha.jpg b/images/mdcha.jpg deleted file mode 100644 index 8030c2fe..00000000 Binary files a/images/mdcha.jpg and /dev/null differ diff --git a/images/regex.jpg b/images/regex.jpg deleted file mode 100644 index b9db5317..00000000 Binary files a/images/regex.jpg and /dev/null differ diff --git a/images/rihu.jpg b/images/rihu.jpg deleted file mode 100644 index c32cb456..00000000 Binary files a/images/rihu.jpg and /dev/null differ diff --git a/images/skuklinsky.jpg b/images/skuklinsky.jpg deleted file mode 100644 index 1cae4d82..00000000 Binary files a/images/skuklinsky.jpg and /dev/null differ diff --git a/images/tony.jpg b/images/tony.jpg deleted file mode 100644 index 32e731af..00000000 Binary files a/images/tony.jpg and /dev/null differ diff --git a/images/wporr.jpg b/images/wporr.jpg deleted file mode 100644 index dc4e2da2..00000000 Binary files a/images/wporr.jpg and /dev/null differ diff --git a/images/zhangning.jpg b/images/zhangning.jpg deleted file mode 100644 index 4ffc2b16..00000000 Binary files a/images/zhangning.jpg and /dev/null differ diff --git a/index.md b/index.md index b903acd3..ff5cb788 100644 --- a/index.md +++ b/index.md @@ -1,7 +1,67 @@ --- -# This file controls the introductory text for the website. -# To mess with the navbar, look in _layouts/home.html. -# Calendar and Staff list HTML is in _includes/ -# Look in _data/ to modify actual data. layout: home +title: Home +nav_order: 1 +seo: + type: Course + name: Linux Sysadmin Decal --- + +# {{ site.tagline }} +{: .mb-2 } +{{ site.description }} +{: .fs-6 .fw-300 } + +{% if site.announcements %} +{{ site.announcements.last }} +[Announcements](announcements.md){: .btn .btn-outline .fs-3 } +{% endif %} + +## Weekly Schedule +{% for schedule in site.schedules %} +{{ schedule }} +{% endfor %} + +# Calendar + +
+## Week 0: 1/25/2021 +{: .text-gamma } + +Infosession +: **Infosession**{: .label .label-yellow}[ocf.io/decalzoom](https://ocf.io/decalzoom) + : [Slides](https://docs.google.com/presentation/d/1lTx2vAodmr0i5evZ5VFUOEZDVm0v6PGL7IGJM1M7Jro/edit?usp=sharing) +: **Lab**{: .label .label-yellow}Lab 0 (To be released) + : **Lab due Fri. 1/29** +
+{% for week in site.data.materials %} +
+## Week {{week.id}}: {{week.date}} +{: .text-gamma } + +{% if week.hidelink %} +Beginner Track +: **Lecture**{: .label .label-green}{{week.beginner-name}} +: **Lab**{: .label .label-blue}Lab b{{week.id}} + : **Lab due {{week.labdue}}** + +Advanced Track +: **Lecture**{: .label .label-purple }{{week.advanced-name}} +: **Lab**{: .label .label-red}Lab a{{week.id}} + : **Lab due {{week.labdue}}** + +{% else %} +Beginner Track +: **Lecture**{: .label .label-green}[{{week.beginner-name}}]({{week.beginner-video}}) + : [Slides]({{week.beginner-slides}}) +: **Lab**{: .label .label-blue}[Lab b{{week.id}}](/labs/b{{week.id}}) (Solution) + : **Lab due {{week.labdue}}** + +Advanced Track +: **Lecture**{: .label .label-purple }[{{week.advanced-name}}]({{week.advanced-video}}) + : [Slides]({{week.advanced-slides}}){:target="_blank"} +: **Lab**{: .label .label-red}[Lab a{{week.id}}](/labs/a{{week.id}}) (Solution) + : **Lab due {{week.labdue}}** +{% endif %} +
+{% endfor %} \ No newline at end of file diff --git a/labs/a1.md b/labs/a1.md index 491af368..35ae0b02 100644 --- a/labs/a1.md +++ b/labs/a1.md @@ -1,12 +1,18 @@ --- -title: Advanced Lab 1 +title: Lab a1 - Shell Scripting layout: lab +nav_exclude: true --- -* Navigation +## Table of contents +{: .no_toc .text-delta } + +1. TOC {:toc} -### A Note on Labs +--- + +# A Note on Labs Labs are graded on completion. Treat this lab as seeds of exploration instead of just a grade. @@ -17,12 +23,12 @@ If you ever find yourself confused, stuck, and/or curious to learn more, **talk [slack]: https://fco.slack.com/archives/CN0FQ9BUN -### Workflow +## Workflow This lab can be done on your own UNIX-like machine, or you can ssh into `tsunami.ocf.berkeley.edu` using your OCF account to finish the lab there. As always, `man` and Google will be your friends. -## Question 1 +# Question 1 At some point, everyone has looked at a problem and thought to themselves: "Hey, I can do this in one line!" @@ -64,7 +70,7 @@ Hints: Submit your one line solution! -## Question 2 +# Question 2 With the invention of the `.norm` file format, file extension innovation is at its peak![^xkcd] @@ -106,7 +112,7 @@ use [shell parameter expansion][1]. [1]: https://stackoverflow.com/questions/965053/extract-filename-and-extension-in-bash -## Question 3 +# Question 3 I like Lisp and Scheme, and miss `car` and `cdr` in my usual programming tasks.[^carcdr] @@ -142,7 +148,7 @@ Hint: The easiest way to do this is with one very short command. [carcdrarticle]: https://medium.com/@aleksandrasays/my-other-car-is-a-cdr-3058e6743c15 -## Question 4 (Extra) +# Question 4 (Extra) This question is optional but it's quite fun and you should do it if you have the time! @@ -193,7 +199,7 @@ You may want to look into `dd`[^dd] and the `iflag=fullblock` argument, `/dev/urandom`, or "unlimited random", is a useful source when such randomness is not cryptographically critical. -## Submission +# Submission Submit your solutions on Gradescope! There'll be some extra feedback questions as well that we would appreciate you filling out. -## Footnotes +# Footnotes diff --git a/labs/a10.md b/labs/a10.md index 7b8c7338..65bd9f0d 100644 --- a/labs/a10.md +++ b/labs/a10.md @@ -1,11 +1,17 @@ --- title: Lab 10 - Containerization and Docker layout: lab +nav_exclude: true --- -* Navigation +## Table of contents +{: .no_toc .text-delta } + +1. TOC {:toc} +--- + ## Docker This exercise is designed to give you some hands-on experience with Docker! By the end of this assignment, you should be able to: diff --git a/labs/a2.md b/labs/a2.md index 7d614231..a0ac0f7e 100644 --- a/labs/a2.md +++ b/labs/a2.md @@ -1,11 +1,17 @@ --- title: Advanced Lab 2 - Packages and Packaging and Troubleshooting layout: lab +nav_exclude: true --- -* Navigation +## Table of contents +{: .no_toc .text-delta } + +1. TOC {:toc} +--- + ### Grading note Labs are graded on completion. Treat this lab as seeds of exploration instead of just a grade. diff --git a/labs/a3.md b/labs/a3.md index f532bf48..d0761b9d 100644 --- a/labs/a3.md +++ b/labs/a3.md @@ -1,11 +1,17 @@ --- title: Advanced Lab 3 - Pre-install Setup and Installation layout: lab +nav_exclude: true --- -* Navigation +## Table of contents +{: .no_toc .text-delta } + +1. TOC {:toc} +--- + > **PLEASE READ**: Some people have been having issues with the Create > Filesystems -> Wiping section of the lab, where executing the > commands causes the Arch VM to reboot into the UEFI shell. To avoid diff --git a/labs/a4.md b/labs/a4.md index 6ecd2171..7e545e37 100644 --- a/labs/a4.md +++ b/labs/a4.md @@ -1,11 +1,17 @@ --- title: Lab 4 - Linux Post-Install layout: lab +nav_exclude: true --- -* Navigation +## Table of contents +{: .no_toc .text-delta } + +1. TOC {:toc} +--- + ### Topics Covered We covered a lot of material in the diff --git a/labs/a5.md b/labs/a5.md index b592c88f..0af5bdf3 100644 --- a/labs/a5.md +++ b/labs/a5.md @@ -1,11 +1,17 @@ --- title: Advanced Lab 5 - Processes and Services layout: lab +nav_exclude: true --- -* Navigation +## Table of contents +{: .no_toc .text-delta } + +1. TOC {:toc} +--- + ## Overview For this lab, we are going to deep dive into the components and systemd. We will do this by writing our own systemd service from scratch, while showing the benefits of running a service with systemd. This lab should be completed on your decal VM. diff --git a/labs/a6.md b/labs/a6.md index fa3e6006..2068dd5d 100644 --- a/labs/a6.md +++ b/labs/a6.md @@ -1,11 +1,17 @@ --- title: Lab 6 - Networking 102 layout: lab +nav_exclude: true --- -* Navigation +## Table of contents +{: .no_toc .text-delta } + +1. TOC {:toc} +--- + ## Overview This lab will go over some concepts of networking and how certain parts of a network stack are implemented and configured in linux systems. **It is assumed that you are familiar with basic networking concepts such as those presented in [Lab b5][basic-lab].** diff --git a/labs/a7.md b/labs/a7.md index 32932e1d..18c20ee8 100644 --- a/labs/a7.md +++ b/labs/a7.md @@ -1,11 +1,17 @@ --- title: Lab 7 - Networked Services layout: lab +nav_exclude: true --- -* Navigation +## Table of contents +{: .no_toc .text-delta } + +1. TOC {:toc} +--- + ## Overview Networking is key to many services because it allows processes and computers to diff --git a/labs/a8.md b/labs/a8.md index d3bc5de4..10ef05a3 100644 --- a/labs/a8.md +++ b/labs/a8.md @@ -1,11 +1,17 @@ --- title: Lab 8 - Configuration Management layout: lab +nav_exclude: true --- -* Navigation +## Table of contents +{: .no_toc .text-delta } + +1. TOC {:toc} +--- + ## The Setting You’re suddenly awoken by an alarm. Still drowsy from sleep, you check the time diff --git a/labs/a9.md b/labs/a9.md index 32664f1f..ed3536d4 100644 --- a/labs/a9.md +++ b/labs/a9.md @@ -1,11 +1,17 @@ --- title: Lab 9 - Security layout: lab +nav_exclude: true --- -* Navigation +## Table of contents +{: .no_toc .text-delta } + +1. TOC {:toc} +--- + ## Overview This lab is a bit unique compared to the rest, very little programming is involved. diff --git a/labs/b1.md b/labs/b1.md index ab9e0e3f..af06e8ec 100644 --- a/labs/b1.md +++ b/labs/b1.md @@ -1,11 +1,17 @@ --- title: Beginner Lab 1 - Unix, the Shell, OSS layout: lab +nav_exclude: true --- -* Navigation +## Table of contents +{: .no_toc .text-delta } + +1. TOC {:toc} +--- + Welcome to the first lab! Here are some commands you might find helpful: `cat, cd, emacs, file, grep, less, ls, man, nano, tar, wget, vim` diff --git a/labs/b10.md b/labs/b10.md index dbc70e82..41ec4a4f 100644 --- a/labs/b10.md +++ b/labs/b10.md @@ -1,11 +1,17 @@ --- title: Lab 10 - Containers and Configuration Management layout: lab +nav_exclude: true --- -* Navigation +## Table of contents +{: .no_toc .text-delta } + +1. TOC {:toc} +--- + ## Overview This lab is designed to give you some hands-on experience with Docker and Puppet! By the end of this assignment, you should be able to: diff --git a/labs/b2.md b/labs/b2.md index 5abaa1a8..322423e8 100644 --- a/labs/b2.md +++ b/labs/b2.md @@ -1,11 +1,17 @@ --- title: Beginner Lab 2 - Core Shell layout: lab +nav_exclude: true --- -* Navigation +## Table of contents +{: .no_toc .text-delta } + +1. TOC {:toc} +--- + Welcome to Lab 2! In this lab you will be learning how to work productively in a shell. Remember to submit your answers in the Gradescope assignment! diff --git a/labs/b3.md b/labs/b3.md index 2585dcab..14a5998d 100644 --- a/labs/b3.md +++ b/labs/b3.md @@ -1,11 +1,17 @@ --- title: Lab 3 - Shell Scripting layout: lab +nav_exclude: true --- -* Navigation +## Table of contents +{: .no_toc .text-delta } + +1. TOC {:toc} +--- + # Overview Many of the tasks that someone would like to perform on a computer are regular, diff --git a/labs/b4.md b/labs/b4.md index 8c586a1d..8acf0a26 100644 --- a/labs/b4.md +++ b/labs/b4.md @@ -1,11 +1,17 @@ --- title: Beginner Lab 4 - Debian, packages, compiling software layout: lab +nav_exclude: true --- -* Navigation +## Table of contents +{: .no_toc .text-delta } + +1. TOC {:toc} +--- + ## What is a distribution? A Linux distribution (often abbreviated as distro) is an operating system made from a diff --git a/labs/b5.md b/labs/b5.md index c5910a8f..641d9c7c 100644 --- a/labs/b5.md +++ b/labs/b5.md @@ -1,11 +1,17 @@ --- title: Lab 5 - Introduction to Networking layout: lab +nav_exclude: true --- -* Navigation +## Table of contents +{: .no_toc .text-delta } + +1. TOC {:toc} +--- + # Overview It is undeniable that the internet is an important system that has redefined our world. The ability to develop networks and allow devices to communicate is critical to modern day computer systems. This lab will take a look into the basics of computer networking and then examine networks through the perspective of a sysadmin. diff --git a/labs/b6.md b/labs/b6.md index 8a829592..8401345f 100644 --- a/labs/b6.md +++ b/labs/b6.md @@ -1,11 +1,17 @@ --- title: Lab 6 - Processes and Services layout: lab +nav_exclude: true --- -* Navigation +## Table of contents +{: .no_toc .text-delta } + +1. TOC {:toc} +--- + ## Overview At any given moment, there are anywhere from dozens to thousands of process running on a Unix system. The large majority of these processes, called daemons, run in the background. Daemons are crucial to having a usable system and provide much of a system’s core functionality, including the graphics server, sound server, and networking services to name a few. diff --git a/labs/b7.md b/labs/b7.md index 5a60b1c6..c382153d 100644 --- a/labs/b7.md +++ b/labs/b7.md @@ -1,11 +1,17 @@ --- title: Lab 7 - Services layout: lab +nav_exclude: true --- -* Navigation +## Table of contents +{: .no_toc .text-delta } + +1. TOC {:toc} +--- + ## Using systemd ### What services are running right now? diff --git a/labs/b8.md b/labs/b8.md index 91d9690c..732e40a4 100644 --- a/labs/b8.md +++ b/labs/b8.md @@ -1,11 +1,17 @@ --- title: Lab 8 - Security Fundamentals (Fall 2020) layout: lab +nav_exclude: true --- -* Navigation +## Table of contents +{: .no_toc .text-delta } + +1. TOC {:toc} +--- + For this lab, we will use [GnuPG](https://gnupg.org) (also referred to as GPG), a free implementation of the [OpenPGP standard](https://openpgp.org/). As stated by GPG's website: >GnuPG allows you to encrypt and sign your data and communications; it features a versatile key management system, along with access modules for all kinds of public key directories. diff --git a/labs/b9.md b/labs/b9.md index 29e5afff..1e88d2ed 100644 --- a/labs/b9.md +++ b/labs/b9.md @@ -1,13 +1,21 @@ --- title: Lab 9 - Version Control and Backups -layout: lab +layout: page +nav_exclude: true --- ## Git IRL -* Navigation + + +## Table of contents +{: .no_toc .text-delta } + +1. TOC {:toc} +--- + In this lab, we'll be learning how to use Git and typical best practices for version control! diff --git a/staff.md b/staff.md new file mode 100644 index 00000000..04699d4d --- /dev/null +++ b/staff.md @@ -0,0 +1,26 @@ +--- +layout: page +title: Staff +nav_order: 4 +description: A listing of all the course staff members. +--- + +# Staff + +## Head Facilitators + +{% assign heads = site.staffers | where: 'role', 'Head Facilitator' %} +{% for staffer in heads %} +{{ staffer }} +{% endfor %} + +{% assign facilitators = site.staffers | where: 'role', 'Facilitator' %} +{% assign num_facilitators = facilitators | size %} +{% if num_facilitators != 0 %} + +## Facilitators + +{% for staffer in facilitators %} +{{ staffer }} +{% endfor %} +{% endif %}