Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • R3/school/courses
  • vilem.ded/courses
  • todor.kondic/courses
  • noua.toukourou/courses
  • nene.barry/courses
  • laurent.heirendt/courses
  • marina.popleteeva/courses
  • jenny.tran/courses
8 results
Show changes
Commits on Source (446)
Showing
with 413 additions and 106 deletions
<div id="lap-cookies-banner" class="presentation-banner">
<div class="banner-intro">
<div class="close-button">
<a class="lap-refuse">
<i class="fa fa-times" aria-hidden="true"></i>
</a>
</div>
<div class="banner-img">
<img src="https://analytics.lcsb.uni.lu/lap/static/logos/r3-logo.svg" type="image/svg+xml"/>
</div>
<div class="banner-title">This website needs some cookies and similar means to function.</div>
<div class="banner-text">If you permit us, we will use those means to collect data on your visits for aggregated
statistics to improve our service.
</div>
</div>
<div class="banner-buttons">
<a class="btn lap-accept">Accept cookies for aggregated statistics</a>
<a class="btn lap-refuse">No thanks, only technically necessary cookies</a>
<a class="btn lap-cookies-more" href="https://courses.lcsb.uni.lu/privacy-policy">More information</a>
</div>
</div>
\ No newline at end of file
<script>
const settings = {
expires: "180",
matomoURL: "https://analytics.lcsb.uni.lu/hub/",
siteID: "8", //you get this siteID by sending an email to lcsb-r3@uni.lu
accept_all_text: "Aggregate statistics cookies accepted",
only_necessary_text: "Only necessary cookies accepted",
doNotTrack_text: "Do Not Track is enabled",
cookieName: "lap",
bots: /bot|crawler|spider|crawling/i,
timeout_hidebanner: "500",
cookieDomain: "courses.lcsb.uni.lu"
};
</script>
<script src="https://analytics.lcsb.uni.lu/lap/static/js/jquery.min.js"></script>
<script src="https://analytics.lcsb.uni.lu/lap/static/js/lap.js"></script>
<link rel="stylesheet" type="text/css" href="https://analytics.lcsb.uni.lu/lap/static/css/lap.css" />
<div class="bottomPrivacy">
<a href="https://courses.lcsb.uni.lu/privacy-policy">Privacy Policy</a>
(<span id="doNotTrack-text"><span id="gdpr-result-text"></span> - <a href="javascript: showBanner();">change</a></span>)
</div>
\ No newline at end of file
#!/bin/bash
PAGEURL="https://r3.pages.uni.lu/school/courses"
PAGEURL="https://courses.lcsb.uni.lu"
rootDir=$(pwd)
echo $rootDir
# clean previous builds
rm -rf $rootDir/public
rm -rf $rootDir/theme
mkdir $rootDir/public
if [[ $CI_COMMIT_REF_NAME == "develop" ]]; then
version="latest";
elif [[ $CI_COMMIT_REF_NAME == "master" ]]; then
version="stable";
else
version="unstable";
fi
# build the unstable version - can be optimized
git submodule update --init --recursive
# add matomo
sed -i "/matomohead/r./.ci/analytics/head.html" theme/templates/_index.html
sed -i "/matomopolicy/r./.ci/analytics/policy.html" theme/templates/_index.html
sed -i "/matomobanner/r./.ci/analytics/gdpr-banner.html" theme/templates/_index.html
echo " > LAP included"
# loop through all the presentations
nBlades=0
for d in $(find . -maxdepth 1 -type d)
do
if [[ "${d}" == *20* ]]; then
cd "${d}"
pushd "${d}"
echo "changed to ${d}"
for d1 in $(find . -maxdepth 1 -type d)
do
if [[ ${#d1} -ge 2 ]]; then
let "nBlades+=1"
#blades[$nBlades]="$tutorial"
BLADE=${d1:2}
echo " > -----------------------------------------------------"
echo "Building ... ${d1}"
# create the required folders in public
mkdir $rootDir/public/$BLADE
mkdir $rootDir/public/$BLADE/unstable
mkdir $rootDir/public/$BLADE/latest
mkdir $rootDir/public/$BLADE/stable
# change to the blade directory to be built
cd $BLADE
mkdir -p $rootDir/public/$BLADE/$version
# build the unstable version - can be optimized
git config submodule.theme.url https://$CI_DEPLOY_USER:$CI_DEPLOY_PASSWORD@git-r3lab.uni.lu/R3-core/outreach/theme.git
git submodule update --recursive --init
echo "going to $BLADE..."
pushd $BLADE
# run contribute
cp ../../template/Gruntfile.coffee .
ln -s ../../theme/package.json package.json
ln -s ../../theme theme
cp -v ../../template/Gruntfile.coffee .
ln -sv ../../theme/package.json package.json
ln -sv ../../theme theme
# install npm
#npm install -g npm@latest yo grunt-cli generator-reveal
#npm install
yarn global add grunt-cli generator-reveal
echo "installing deps"
yarn add grunt-cli generator-reveal grunt
yarn install
grunt dist
mv public/* $rootDir/public/$BLADE/unstable/.
echo " > unstable built for file set ${BLADE}"
# build the master version into stable
git fetch --tags
latestTag=$(git describe --tags `git rev-list --tags --max-count=1`)
git stash
git checkout $latestTag
git submodule update --init
grunt dist
mv public/* $rootDir/public/$BLADE/stable/.
echo " > stable built for file set ${BLADE}"
# build the develop version into latest
git stash
git checkout -f develop
git fetch origin develop
git reset --hard origin/develop
git submodule update --init
grunt dist
mv public/* $rootDir/public/$BLADE/latest/.
echo "running dist"
yarn exec grunt dist
echo "copying to common public dir"
cp -rLv public/* $rootDir/public/$BLADE/$version/.
echo " > latest built for file set ${BLADE}"
# auto redirect file to the stable version
......@@ -85,9 +78,10 @@ do
echo "autoredirect file set"
# move back out
cd ..
popd
echo " > -----------------------------------------------------"
fi
done
popd
fi
done
import os, re
from os import path
def build_link(title, href):
return f'- <a href="{href}">{title}</a>\n'
def build_section_start(title):
return f'\n' #<h3>{title}</h3>\n
def build_section_end():
return "" #\t\t</ul>\n\t</div>
def camel_to_snake(name):
name = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', name)
return re.sub('([a-z0-9])([A-Z])', r'\1_\2', name).lower()
# loop through the entire internal tree
localroot = os.getcwd()
# generate the index properly speaking
cardDirs = ["2023", "2022", "2021", "2020", "2019"]
index=''
# determine first the directories
for direct in cardDirs:
if path.isdir(direct):
dirs = os.listdir(direct)
dirs.sort(reverse=True);
index += "\n# " + direct + "\n\n"
for d in dirs:
if d[0] != ".":
href = 'https://courses.lcsb.uni.lu/'+d
linkText = camel_to_snake(d)
linkText = linkText.replace("_", " ")
linkText = linkText.title()
# special rules
linkText = linkText.replace("Dm", "Data Management")
linkText = linkText.replace("It", "IT")
linkText = linkText.replace("Siu", "SIU")
index += build_link(linkText, href)
# output the index
print(index)
# Read in the file
repoName = "courses.lcsb.uni.lu"
os.chdir(repoName)
indexFile = "index.md"
filedata = ""
with open(indexFile, 'r') as file :
for line in file:
filedata += line
# stop reading once the index place holder has been reached
if re.search("<!-- index -->", line):
filedata += "[[ index ]]"
break
# Replace the target string
filedata = filedata.replace('[[ index ]]', index)
# Write the file out again
with open(indexFile, 'w') as file:
file.write(filedata)
print("\n > New index generated and saved in " + indexFile)
os.chdir("..")
*.ai
site/
courses.lcsb.uni.lu
index.html
package-lock.json
dist/
......@@ -20,3 +23,4 @@ package.json
./theme/package.json
__pycache__/
contribute.egg-info/
.*.swp
image: digitallyseamless/nodejs-bower-grunt
stages:
- retrieve
- generate
- build
- deploy
pages:
stage: deploy
retrieve:repo:
image:
name: alpine/git:latest
entrypoint: [""]
stage: retrieve
script:
- bash .ci/deploy.sh
- git clone https://$CI_DEPLOY_TOKEN:$CI_DEPLOY_PASSWORD@git-r3lab.uni.lu/R3/school/courses.lcsb.uni.lu.git
artifacts:
expire_in: 1 day
paths:
- courses.lcsb.uni.lu
rules:
- if: $CI_COMMIT_BRANCH == "develop"
- if: $CI_COMMIT_BRANCH == "master"
generate:index:
image: python
stage: generate
rules:
- if: $CI_COMMIT_BRANCH == "develop"
- if: $CI_COMMIT_BRANCH == "master"
script:
- python .ci/generateIndex.py
artifacts:
expire_in: 1 day
paths:
- courses.lcsb.uni.lu
build:website:
image: git-r3lab.uni.lu:4567/r3/docker/jekyll-lcsb
stage: build
rules:
- if: $CI_COMMIT_BRANCH == "develop"
- if: $CI_COMMIT_BRANCH == "master"
before_script:
- cd courses.lcsb.uni.lu
- gem install bundler -v2.0.2
- bundle install && bundle update jekyll-theme-lcsb-default && bundle update jekyll-theme-lcsb-frozen-components
- cd ..
script:
- cd courses.lcsb.uni.lu
- bundle exec jekyll build -d site --config "_config.yml"
- mv site ../.
- cd ..
artifacts:
expire_in: 1 week
expire_in: 1 day
paths:
- site
variables:
JEKYLL_ENV: production
build:courses:
image: node:19-bullseye
stage: build
rules:
- if: $CI_COMMIT_BRANCH == "develop"
- if: $CI_COMMIT_BRANCH == "master"
script:
- bash .ci/deploy.sh
artifacts:
expire_in: 1 day
paths:
- public
upload:
stage: deploy
image: alpine
before_script:
- apk add rsync
- 'which ssh-agent || ( apk add --update openssh )'
- eval $(ssh-agent -s)
- echo "$B64SSHPRIVKEY" | base64 -d | tr -d '\r' | ssh-add - > /dev/null
- mkdir -p ~/.ssh && chmod 700 ~/.ssh
- 'echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
- echo "$KNOWNHOSTS" > ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
rules:
- if: $CI_COMMIT_BRANCH == "develop"
- if: $CI_COMMIT_BRANCH == "master"
script:
- rsync -ravu --info=progress2 -e "ssh -p $SSHPORT" site/* $SSHCONNECT:~/web/latest
- rsync -ravu --info=progress2 -e "ssh -p $SSHPORT" public/* $SSHCONNECT:~/web/latest
[submodule "theme"]
path = theme
url = https://git-r3lab.uni.lu/R3/outreach/theme.git
url = https://gitlab.lcsb.uni.lu/R3/outreach/theme.git
......@@ -38,5 +38,5 @@
Contact us if you need help:
r3lab.core@uni.lu
lcsb-r3@uni.lu
......@@ -2,5 +2,5 @@
<br>
https://howto.lcsb.uni.lu/
<center>
<iframe data-src="https://howto.lcsb.uni.lu/" height="600px" width="1200px"></iframe>
<img src="slides/img/howtocard.png" width="50%" style="border: 1px solid #555;">
</center>
2019/2019-08-22_IT101-DM/slides/img/howtocard.png

120 KiB

......@@ -7,5 +7,5 @@
<center>
Contact us if you need help:
<a href="mailto:r3lab.core@uni.lu">r3lab.core@uni.lu</a>
<a href="mailto:lcsb-r3@uni.lu">lcsb-r3@uni.lu</a>
</center>
......@@ -4,5 +4,5 @@
Contact us if you need help:
<a href="mailto:r3lab.core@uni.lu">r3lab.core@uni.lu</a>
<a href="mailto:lcsb-r3@uni.lu">lcsb-r3@uni.lu</a>
......@@ -38,5 +38,5 @@
Contact us if you need help:
r3lab.core@uni.lu
lcsb-r3@uni.lu
......@@ -4,5 +4,5 @@
Contact us if you need help:
<a href="mailto:r3lab.core@uni.lu">r3lab.core@uni.lu</a>
<a href="mailto:lcsb-r3@uni.lu">lcsb-r3@uni.lu</a>
#+TITLE: Entry Level GNU/Linux Course at LCSB
* Outline
** Before the shell
- SSH
- SSH Clients
- Client installation Win (Mac?)
- RSA key generation
- Logging into a *nix server
** University's identity credentials management system : LUMS
- Submitting keys
- Other things one can do
** Effective shell usage
Overview of the capabilities and possibilities.
*** Basics
**** Filesystem
- ls/cd/mv/rm/cp
- scp (rsync?)
- what goes where (home,dev,proc,etc,usr)
**** Documentation systems
- info
- man
**** Permissions
- (Super)users and groups
- read, write, execute
- chmod, chgrp, chown
**** Environment
- environment variables
- PATH, HOME
- .profile and friends
- source (.)
*** Effective use
**** SSH agent on remote server
- adapt the (bash)_profile
**** History commands
- !, !!, !-N, ^...^, ....
**** find
**** grep
**** sed
# Best practices
* Fetch the upstream before creating a new branch.
* Work on your <font color="red">own</font> branch (in your own fork), and **not** on `master` and **not** on `develop`
* Get your code **reviewed** by your peers (submit a PR!)
* Submit a PR **often**!
* `Push` often - avoid conflicts
Remember: **A `push` a day keeps conflicts away!**
# Development scheme
Generally, in a repository, there are guidelines for contributing.
<div class="fragment">
A common development scheme is dual with a:
- **development** version of the code on `develop`
- **stable** version of the code on `master`
A **version** of the code/text is referred to as a **branch**.
<div class="fragment">
<font color="red">In the `howto-cards-internal` repository, the development branch is called `develop`!</font>
<div class="fragment">
![bulb](slides/img/bulb.png) Use this dual development scheme for your own repositories!
# Branches
A **version** of the code (i.e., a **branch**) is made up of a sequence of code changes.
<div class="fragment">
These individual code changes are called **commits**.
For instance, the `master` and `develop` branches can be represented as a timeline:
<img src="slides/img/branch-master.png" class="branch-master" height="500em"/>
# Switch between branches
<img src="slides/img/icon-live-demo.png" height="100px">
# Create your own version
Assume that you want to work on a file:
<div class="fragment">
<font color="red">Create a new **branch** and start editing!</font>
<img src="slides/img/icon-live-demo.png" height="100px">
<img src="slides/img/branch-create.png" class="branch-create" height="500em"/>
# How to configure `git`?
```bash
$ git config --global user.name "Firstname Lastname"
$ git config --global user.email "first.last@uni.lu"
```
Test whether your username and email have been registered
```bash
$ git config --list
```
This should list the configuration with `user.name` and `user.email`.
# What is an SSH key?
An SSH key is a secure access credential.
**Principle**: <br><br>
Communicate **securely** with Github/Gitlab **without** entering the username/password.
# How do I get and set my SSH key?
Check if you already have an SSH key:
```bash
$ ls -al ~/.ssh
```
If there are 2 files named `id_rsa`, you have an SSH key.
If you don’t have yet an SSH key, you have to generate one:
```bash
$ ssh-keygen -t rsa # -b 4096
```
Then, add the SSH key to your profile on git-r3lab.
On Windows, please unmount `P:\` (your personal atlas folder) first.
<img src="slides/img/icon-live-demo.png" height="100px">
\ No newline at end of file
# What is a `fork`?
<br><br>
<center><img src="slides/img/fork.jpg" class="as-is" height="500em"/></center>
<!--http://www.cndajin.com/data/wls/246/22302193.jpg-->
# Not really ...
<br><br>
<center><img src="slides/img/fork-crossed.png" class="as-is" height="500em"/></center>
# What is a `fork`?
- In general, when contributing to a repository, you only have **read** access.
- In other words, you can only **pull** (unless it is your own repository or access has been granted).
- In general, you **cannot write** changes. In other words, you do not have **push** access.
- You have to work on your **own copy**.
- In other words, you have to work on your own <font color="red">**fork**</font>.
<br>
<h2>How to get a fork?</h1>
Browse to the original repository and click on the button `Fork`:
![Fork the repo](https://help.github.com/assets/images/help/repository/fork_button.jpg)
# How to update my fork?
As you have your own fork, it will not automatically be updated once the original repository is updated.
![bulb](slides/img/bulb.png) You have to update it yourself!
<img src="slides/img/icon-live-demo.png" height="100px">
**More on that during the demo!**
# Time to practice!
Fork the howto-cards (internal) repository: <br><br>
https://git-r3lab.uni.lu/R3-core/howto-cards-internal/
<img src="slides/img/icon-live-demo.png" height="100px">
\ No newline at end of file