Commit 714ff3d0 authored by Christian Tischer's avatar Christian Tischer
Browse files

Merge branch 'carpentries-style' into 'master'

Carpentries style

See merge request !38
parents b617e91f 8870468f
Pipeline #10608 passed with stage
in 1 minute and 16 seconds
<div class="row">
<div class="col-md-6">
<h3 id="syllabus-shell">The Unix Shell</h3>
<ul>
<li>Files and directories</li>
<li>History and tab completion</li>
<li>Pipes and redirection</li>
<li>Looping over files</li>
<li>Creating and running shell scripts</li>
<li>Finding things</li>
<li><a href="{{site.swc_pages}}/shell-novice/reference/">Reference...</a></li>
</ul>
</div>
<div class="col-md-6">
<h3 id="syllabus-python">Programming in Python</h3>
<ul>
<li>Using libraries</li>
<li>Working with arrays</li>
<li>Reading and plotting data</li>
<li>Creating and using functions</li>
<li>Loops and conditionals</li>
<li>Defensive programming</li>
<li>Using Python from the command line</li>
<li><a href="{{site.swc_pages}}/python-novice-inflammation/reference/">Reference...</a></li>
</ul>
</div>
<!--
<div class="col-md-6">
<h3 id="syllabus-r">Programming in R</h3>
<ul>
<li>Working with vectors and data frames</li>
<li>Reading and plotting data</li>
<li>Creating and using functions</li>
<li>Loops and conditionals</li>
<li>Using R from the command line</li>
<li><a href="{{site.swc_pages}}/r-novice-inflammation/reference/">Reference...</a></li>
</ul>
</div>
-->
<!--
<div class="col-md-6">
<h3 id="syllabus-matlab">Programming in MATLAB</h3>
<ul>
<li>Working with arrays</li>
<li>Reading and plotting data</li>
<li>Creating and using functions</li>
<li>Loops and conditionals</li>
<li>Defensive programming</li>
<li><a href="{{site.swc_pages}}/matlab-novice-inflammation/reference/">Reference...</a></li>
</ul>
</div>
-->
</div>
<div class="row">
<div class="col-md-6">
<h3 id="syllabus-git">Version Control with Git</h3>
<ul>
<li>Creating a repository</li>
<li>Recording changes to files: <code>add</code>, <code>commit</code>, ...</li>
<li>Viewing changes: <code>status</code>, <code>diff</code>, ...</li>
<li>Ignoring files</li>
<li>Working on the web: <code>clone</code>, <code>pull</code>, <code>push</code>, ...</li>
<li>Resolving conflicts</li>
<li>Open licenses</li>
<li>Where to host work, and why</li>
<li><a href="{{site.swc_pages}}/git-novice/reference/">Reference...</a></li>
</ul>
</div>
<!--
<div class="col-md-6">
<h3 id="syllabus-sql">Managing Data with SQL</h3>
<ul>
<li>Reading and sorting data</li>
<li>Filtering with <code>where</code></li>
<li>Calculating new values on the fly</li>
<li>Handling missing values</li>
<li>Combining values using aggregation</li>
<li>Combining information from multiple tables using <code>join</code></li>
<li>Creating, modifying, and deleting data</li>
<li>Programming with databases</li>
<li><a href="{{site.swc_pages}}/sql-novice-survey/reference/">Reference...</a></li>
</ul>
</div>
-->
<div class="col-md-6">
<h3 id="syllabus-r">Open Refine</h3>
<ul>
<li>Introduction to OpenRefine</li>
<li>Importing data</li>
<li>Basic functions</li>
<li>Advanced Functions</li>
<li><a href="{{site.lc_pages}}library-openrefine/reference">Reference...</a></li>
</ul>
</div>
</div>
<p id="who">
<strong>Who:</strong>
The course is aimed at graduate students and other researchers.
<strong>
You don't need to have any previous knowledge of the tools
that will be presented at the workshop.
</strong>
</p>
{% comment %}
Display a break's timings in a box similar to a learning episode's.
{% endcomment %}
<blockquote class="objectives">
<h2>Overview</h2>
<div class="row">
<div class="col-md-3">
<strong>Break:</strong> {{ page.break }} min
</div>
<div class="col-md-9">
</div>
</div>
</blockquote>
{% comment %}
Display key points for an episode.
{% endcomment %}
<blockquote class="keypoints">
<h2>Key Points</h2>
<ul>
{% for keypoint in page.keypoints %}
<li>{{ keypoint|markdownify }}</li>
{% endfor %}
</ul>
</blockquote>
{% comment %}
For some reason, the relative_root_path seems out of scope in this file, so we
need to re-assign it here
{% endcomment %}
{% include base_path.html %}
{% comment %}
Navigation bar for an episode.
{% endcomment %}
<div class="row">
<div class="col-xs-1">
<h3 class="text-left">
{% if page.previous.url %}
<a href="{{ relative_root_path }}{{ page.previous.url }}"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span><span class="sr-only">previous episode</span></a>
{% else %}
<a href="{{ relative_root_path }}/"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span><span class="sr-only">lesson home</span></a>
{% endif %}
</h3>
</div>
<div class="col-xs-10">
{% if include.episode_navbar_title %}
<h3 class="maintitle"><a href="{{ relative_root_path }}/">{{ site.title }}</a></h3>
{% endif %}
</div>
<div class="col-xs-1">
<h3 class="text-right">
{% if page.next.url %}
<a href="{{ relative_root_path }}{{ page.next.url }}"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span><span class="sr-only">next episode</span></a>
{% else %}
<a href="{{ relative_root_path }}/"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span><span class="sr-only">lesson home</span></a>
{% endif %}
</h3>
</div>
</div>
{% comment %}
Display an episode's timings and learning objectives.
{% endcomment %}
<blockquote class="objectives">
<h2>Overview</h2>
<div class="row">
<div class="col-md-3">
<strong>Teaching:</strong> {{ page.teaching }} min
<br/>
<strong>Exercises:</strong> {{ page.exercises }} min
</div>
<div class="col-md-9">
<strong>Questions</strong>
<ul>
{% for question in page.questions %}
<li>{{ question|markdownify }}</li>
{% endfor %}
</ul>
</div>
</div>
<div class="row">
<div class="col-md-3">
</div>
<div class="col-md-9">
<strong>Objectives</strong>
<ul>
{% for objective in page.objectives %}
<li>{{ objective|markdownify }}</li>
{% endfor %}
</ul>
</div>
</div>
</blockquote>
<div class="row">
<div class="col-md-1">
</div>
<div class="col-md-10">
<h1 class="maintitle">{{ page.title }}</h1>
</div>
<div class="col-md-1">
</div>
</div>
{% assign favicon_url = relative_root_path | append: '/assets/favicons/' | append: site.carpentry %}
{% if site.carpentry == 'swc' %}
{% assign carpentry = 'Software Carpentry' %}
{% elsif site.carpentry == 'dc' %}
{% assign carpentry = 'Data Carpentry' %}
{% elsif site.carpentry == 'lc' %}
{% assign carpentry = 'Library Carpentry' %}
{% elsif site.carpentry == 'cp' %}
{% assign carpentry = 'The Carpentries' %}
{% endif %}
<!-- Favicons for everyone -->
<link rel="apple-touch-icon-precomposed" sizes="57x57" href="{{ favicon_url }}/apple-touch-icon-57x57.png" />
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="{{ favicon_url }}/apple-touch-icon-114x114.png" />
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="{{ favicon_url }}/apple-touch-icon-72x72.png" />
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="{{ favicon_url }}/apple-touch-icon-144x144.png" />
<link rel="apple-touch-icon-precomposed" sizes="60x60" href="{{ favicon_url }}/apple-touch-icon-60x60.png" />
<link rel="apple-touch-icon-precomposed" sizes="120x120" href="{{ favicon_url }}/apple-touch-icon-120x120.png" />
<link rel="apple-touch-icon-precomposed" sizes="76x76" href="{{ favicon_url }}/apple-touch-icon-76x76.png" />
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="{{ favicon_url }}/apple-touch-icon-152x152.png" />
<link rel="icon" type="image/png" href="{{ favicon_url }}/favicon-196x196.png" sizes="196x196" />
<link rel="icon" type="image/png" href="{{ favicon_url }}/favicon-96x96.png" sizes="96x96" />
<link rel="icon" type="image/png" href="{{ favicon_url }}/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="{{ favicon_url }}/favicon-16x16.png" sizes="16x16" />
<link rel="icon" type="image/png" href="{{ favicon_url }}/favicon-128.png" sizes="128x128" />
<meta name="application-name" content="{{ carpentry }} - {{ site.title }}"/>
<meta name="msapplication-TileColor" content="#FFFFFF" />
<meta name="msapplication-TileImage" content="{{ favicon_url }}/mstile-144x144.png" />
<meta name="msapplication-square70x70logo" content="{{ favicon_url }}/mstile-70x70.png" />
<meta name="msapplication-square150x150logo" content="{{ favicon_url }}/mstile-150x150.png" />
<meta name="msapplication-wide310x150logo" content="{{ favicon_url }}/mstile-310x150.png" />
<meta name="msapplication-square310x310logo" content="{{ favicon_url }}/mstile-310x310.png" />
{% comment %}
When rendering websites locally, `site.github.url` doesn't get resolved properly
unless a GitHub Personal Access Token is set up and available in the
environment. This leads to warnings and errors when trying to serve the site
locally. To work around this, we use the `jekyll.environment` variable which is
set to `development` when rendering the site locally, and set to `production` on
GitHub where `site.github.url` is defined.
{% endcomment %}
{% if jekyll.environment == "production" %}
{% comment %}
First, get the name of the repository
{% endcomment %}
{% assign repo_name = site.github.repository_name %}
{% comment %}
`site.github.public_repositories` contains comprehensive information for all public repositories for the organization. We use `where` to extract the part
of the metadata that is relevant to the present repository.
{% endcomment %}
{% assign repo_info = site.github.public_repositories | where: "name", repo_name %}
{% comment %}
Now, we can extract the default branch for the repo
{% endcomment %}
{% assign default_branch = repo_info[0].default_branch %}
{% comment %}
Other variables requested by the template
{% endcomment %}
{% assign repo_url = site.github.repository_url %}
{% assign search_domain_url = site.github.url %}
{% assign project_title = site.github.project_title %}
{% assign source_branch = site.github.source.branch %}
{% elsif jekyll.environment == "development" %}
{% assign repo_name = "" %}
{% assign repo_url = "" %}
{% assign default_branch = "" %}
{% assign search_domain_url = "" %}
{% assign project_title = "" %}
{% assign source_branch = "" %}
{% endif %}
<header class="site-header">
<!-- TODO this file has become a mess, refactor it -->
<div class="wrapper">
{% if page.bigimg or page.title %}
<a class="site-title" href="{{ site.baseurl }}/">{{ site.title }}</a>
{% if page.bigimg %}
<div id="header-big-imgs" data-num-img={% if page.bigimg.first %}{{ page.bigimg.size }}{% else %}1{% endif %}
{% for bigimg in page.bigimg %}
{% assign imgnum = forloop.index %}
{% for imginfo in bigimg %}
{% if imginfo[0] %}
data-img-src-{{ imgnum }}="{{ imginfo[0] | relative_url }}"
data-img-desc-{{ imgnum }}="{{ imginfo[1] }}"
{% else %}
data-img-src-{{ imgnum }}="{{ imginfo | relative_url }}"
{% endif %}
{% endfor %}
{% endfor %}
></div>
{% endif %}
<nav class="site-nav">
<a href="#" class="menu-icon">
<svg viewBox="0 0 18 15">
<path fill="#424242" d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"/>
<path fill="#424242" d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"/>
<path fill="#424242" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"/>
</svg>
</a>
<header class="header-section {% if page.bigimg %}has-img{% endif %}">
{% if page.bigimg %}
<div class="big-img intro-header">
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
<div class="{{ include.type }}-heading">
<h1>{% if page.title %}{{ page.title }}{% else %}<br/>{% endif %}</h1>
{% if page.subtitle %}
{% if include.type == "page" %}
<hr class="small">
<span class="{{ include.type }}-subheading">{{ page.subtitle }}</span>
{% else %}
<h2 class="{{ include.type }}-subheading">{{ page.subtitle }}</h2>
{% endif %}
{% endif %}
<div class="trigger">
{% for my_page in site.pages %}
{% if my_page.title %}
<a class="page-link" href="{{ my_page.url | prepend: site.baseurl }}">{{ my_page.title }}</a>
{% endif %}
{% endfor %}
{% if include.type == "post" %}
<span class="post-meta">Posted on {{ page.date | date: "%B %-d, %Y" }}</span>
{% endif %}
</div>
</div>
</nav>
</div>
</div>
<span class='img-desc'></span>
</div>
{% endif %}
<div class="intro-header no-img">
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
<div class="{{ include.type }}-heading">
<h1>{% if page.title %}{{ page.title }}{% else %}<br/>{% endif %}</h1>
{% if page.subtitle %}
{% if include.type == "page" %}
<hr class="small">
<span class="{{ include.type }}-subheading">{{ page.subtitle }}</span>
{% else %}
<h2 class="{{ include.type }}-subheading">{{ page.subtitle }}</h2>
{% endif %}
{% endif %}
{% if include.type == "post" %}
<span class="post-meta">Posted on {{ page.date | date: "%B %-d, %Y" }}</span>
{% endif %}
</div>
</div>
</div>
</div>
</div>
</header>
{% else %}
<div class="intro-header"></div>
{% endif %}
{% comment %}
JavaScript used in lesson and workshop pages.
{% endcomment %}
<script src="{{ relative_root_path }}/assets/js/jquery.min.js"></script>
<script src="{{ relative_root_path }}/assets/js/bootstrap.min.js"></script>
<script src="{{ relative_root_path }}/assets/js/lesson.js"></script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-37305346-2', 'auto');
ga('send', 'pageview');
</script>
<p>
<a href="{{site.lc_site}}">Library Carpentry</a>
is made by people working in library- and information-related roles to help you:
</p>
<ul>
<li>automate repetitive, boring, error-prone tasks</li>
<li>create, maintain and analyze sustainable and reusable data</li>
<li>work effectively with IT and systems colleagues</li>
<li>better understand the use of software in research</li>
<li>and much more...</li>
</ul>
<p align="center">
<em>
Library Carpentry introduces you to the fundamentals of computing
and provides you with a platform for further self-directed learning.
For more information on what we teach and why, please see our paper
"<a href="https://doi.org/10.18352/lq.10176">Library Carpentry: software skills training for library professionals</a>".
</em>
</p>
<div class="row">
<div class="col-md-6">
<h3>Day 1</h3>
<table class="table table-striped">
<tr> <td>09:00</td> <td>Data Intro for Librarians</td> </tr>
<tr> <td>10:30</td> <td>Coffee</td> </tr>
<tr> <td>12:00</td> <td>Lunch break</td> </tr>
<tr> <td>13:00</td> <td>Shell Lessons for Libraries</td> </tr>
<tr> <td>14:30</td> <td>Coffee</td> </tr>
<tr> <td>16:00</td> <td>Wrap-up</td> </tr>
</table>
</div>
<div class="col-md-6">
<h3>Day 2</h3>
<table class="table table-striped">
<tr> <td>09:00</td> <td>Git Intro for Librarians</td> </tr>
<tr> <td>10:30</td> <td>Coffee</td> </tr>
<tr> <td>12:00</td> <td>Lunch break</td> </tr>
<tr> <td>13:00</td> <td>OpenRefine for Librarians</td> </tr>
<tr> <td>14:30</td> <td>Coffee</td> </tr>
<tr> <td>16:00</td> <td>Wrap-up</td> </tr>
</table>
</div>
</div>
<div class="row">
<div class="col-md-6">
<h3 id="syllabus-python">Data Intro</h3>
<ul>
<li>Intro to data</li>
<li>Jargon busting</li>
<li>Keyboard shortcuts</li>
<li>Plain text formats</li>
<li>Naming files</li>
<li>Regular expressions</li>
<li><a href="https://data-lessons.github.io/library-data-intro/reference/">Reference...</a></li>
</ul>
</div>
<div class="col-md-6">
<h3 id="syllabus-shell">The Unix Shell</h3>
<ul>
<li>Files and directories</li>
<li>History and tab completion</li>
<li>Counting and sorting contents in files</li>
<li>Pipes and redirection</li>
<li>Mining or searching in files</li>
<li><a href="https://data-lessons.github.io/library-shell/reference/">Reference...</a></li>
</ul>
</div>
</div>
<div class="row">
<div class="col-md-6">
<h3 id="syllabus-git">Version Control with Git</h3>
<ul>
<li>Creating a repository</li>
<li>Configuring git</li>
<li>Recording changes to files: <code>add</code>, <code>commit</code>, ...</li>
<li>Viewing state changes with <code>status</code></li>
<li>Working on the web: <code>clone</code>, <code>pull</code>, <code>push</code>, ...</li>
<li>Where to host work, and why</li>
<li><a href="https://data-lessons.github.io/library-git/reference">Reference...</a></li>
</ul>
</div>
<div class="col-md-6">
<div class="col-md-6">
<h3 id="syllabus-r">Open Refine</h3>
<ul>
<li>Introduction to OpenRefine</li>
<li>Importing data</li>
<li>Basic functions</li>
<li>Advanced Functions</li>
<li><a href="https://data-lessons.github.io/library-openrefine/reference">Reference...</a></li>
</ul>
</div>
</div>
</div>
<!--div class="row">
<div class="col-md-6">
<h3 id="syllabus-sql">SQL Intro</h3>
<ul>
<li>What is SQL?</li>
<li>Intro to SQLite Manager</li>
<li>Importing a database</li>
<li>Reading and sorting data</li>
<li>Filtering with <code>where</code></li>
<li>Combining values using aggregation</li>
<li>Combining information from multiple tables using <code>join</code></li>
<li><a href="https://data-lessons.github.io//library-sql/reference/">Reference...</a></li>
</ul>
</div>
</div>
-->
<p id="who">
<strong>Who:</strong>
The course is for people working in library- and information-related roles.
<strong>
You don't need to have any previous knowledge of the tools that
will be presented at the workshop.
</strong>
</p>
{% comment %}
Footer for lesson pages.
{% endcomment %}
{% include gh_variables.html %}
<footer>
<div class="row">
<div class="col-md-6 copyright" align="left">
{% if site.carpentry == "swc" %}
Licensed under <a href="{{ site.cc_by_human }}">CC-BY 4.0</a> 2018–{{ 'now' | date: "%Y" }}
by <a href="{{ site.carpentries_site }}">The Carpentries</a>
<br>
Licensed under <a href="{{ site.cc_by_human }}">CC-BY 4.0</a> 2016–2018
by <a href="{{ site.swc_site }}">Software Carpentry Foundation</a>
{% elsif site.carpentry == "dc" %}
Licensed under <a href="{{ site.cc_by_human }}">CC-BY 4.0</a> 2018–{{ 'now' | date: "%Y" }}
by <a href="{{ site.carpentries_site }}">The Carpentries</a>
<br>
Licensed under <a href="{{ site.cc_by_human }}">CC-BY 4.0</a> 2016–2018
by <a href="{{ site.dc_site }}">Data Carpentry</a>
{% elsif site.carpentry == "lc" %}
Licensed under <a href="{{ site.cc_by_human }}">CC-BY 4.0</a> 2016–{{ 'now' | date: "%Y" }}
by <a href="{{ site.lc_site }}">Library Carpentry</a>
{% elsif site.carpentry == "cp" %}
Licensed under <a href="{{ site.cc_by_human }}">CC-BY 4.0</a> 2018–{{ 'now' | date: "%Y" }}
by <a href="{{ site.carpentries_site }}">The Carpentries</a>
{% endif %}
</div>
<div class="col-md-6 help-links" align="right">
{% if page.source %}
{% if page.source == "Rmd" %}
<a href="{{repo_url}}/edit/{{ default_branch }}/{{page.path|replace: "_episodes", "_episodes_rmd" | replace: ".md", ".Rmd"}}" data-checker-ignore>Edit on GitHub</a>
{% endif %}
{% else %}
<a href="{{repo_url}}/edit/{{ default_branch }}/{{page.path}}" data-checker-ignore>Edit on GitHub</a>
{% endif %}
/
<a href="{{ repo_url }}/blob/{{ source_branch }}/CONTRIBUTING.md" data-checker-ignore>Contributing</a>
/
<a href="{{ repo_url }}/">Source</a>
/
<a href="{{ repo_url }}/blob/{{ source_branch }}/CITATION" data-checker-ignore>Cite</a>
/
<a href="mailto:{{ site.email }}">Contact</a>
</div>
</div>
<div class="row">
<div class="col-md-12" align="center">
Adapted from <a href="https://github.com/carpentries/styles/">The Carpentries style</a>
version <a href="https://github.com/carpentries/styles/releases/tag/v9.5.3">9.5.3</a>.
</div>
</div>
</footer>
{% if site.life_cycle == "pre-alpha" %}
<div class="panel panel-default life-cycle">
<div id="life-cycle" class="panel-body pre-alpha">
This lesson is still being designed and assembled (Pre-Alpha version)
</div>
</div>
{% elsif site.life_cycle == "alpha" %}
<div class="panel panel-default life-cycle">
<div id="life-cycle" class="panel-body alpha">
This lesson is in the early stages of development (Alpha version)
</div>
</div>
{% elsif site.life_cycle == "beta" %}