Learning Circle : cdist #6 - update 1
This commit is contained in:
parent
a21705179c
commit
e28b8cbcbd
5 changed files with 116 additions and 172 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -2,3 +2,4 @@
|
||||||
/youngjin.han/cdist.org~
|
/youngjin.han/cdist.org~
|
||||||
/youngjin.han/dot-cdist/type/__colourful_file/file/colourful~
|
/youngjin.han/dot-cdist/type/__colourful_file/file/colourful~
|
||||||
/youngjin.han/dot-cdist/type/__colourful_file/manifest~
|
/youngjin.han/dot-cdist/type/__colourful_file/manifest~
|
||||||
|
/youngjin.han/dot-cdist/type/__all_in_one/manifest~
|
||||||
|
|
|
@ -8,7 +8,7 @@ case "$__target_host" in
|
||||||
# __colourful_file --colour yellow --colour blue --colour red --colour green
|
# __colourful_file --colour yellow --colour blue --colour red --colour green
|
||||||
# __my_dotfiles
|
# __my_dotfiles
|
||||||
# __my_nginx_site $__target_host
|
# __my_nginx_site $__target_host
|
||||||
# __all_in_one $__target_host --with-x --extra-packages tree --extra-packages htop
|
# __all_in_one --with-x --extra-packages tree --extra-packages htop
|
||||||
__my_firewall --file /etc/my-nftables
|
__my_firewall --file /etc/my-nftables
|
||||||
;;
|
;;
|
||||||
jafo.laptop)
|
jafo.laptop)
|
||||||
|
|
|
@ -1,12 +1,10 @@
|
||||||
#!/bin/sh -e
|
#!/bin/sh -e
|
||||||
|
|
||||||
os="$(cat "$__global/explorer/os")"
|
os="$(cat "$__global/explorer/os")"
|
||||||
default_package_name="socat sipalc sudo"
|
default_package_name="socat sipcalc sudo"
|
||||||
|
|
||||||
if [ -f "$__object/parameter/with-x" ]; then
|
if [ -f "$__object/parameter/with-x" ]; then
|
||||||
with_x="$(cat "$__object/parameter/with-x")"
|
with_x="$(cat "$__object/parameter/with-x")"
|
||||||
else
|
|
||||||
with_x="$__object_id"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case "$os" in
|
case "$os" in
|
||||||
|
@ -14,7 +12,7 @@ case "$os" in
|
||||||
name_netcat="netcat-openbsd"
|
name_netcat="netcat-openbsd"
|
||||||
name_wireshark="tshark"
|
name_wireshark="tshark"
|
||||||
;;
|
;;
|
||||||
debian)
|
debian|devuan)
|
||||||
name_netcat="netcat"
|
name_netcat="netcat"
|
||||||
name_wireshark="tshark"
|
name_wireshark="tshark"
|
||||||
;;
|
;;
|
||||||
|
@ -33,12 +31,12 @@ all_package_name="$default_package_name $name_netcat $name_wireshark"
|
||||||
|
|
||||||
__package_update_index
|
__package_update_index
|
||||||
|
|
||||||
for package in $all_package_name;
|
for package in $all_package_name; do
|
||||||
do require="__apt_update_index" __package $package --state=present
|
require="__package_update_index" __package $package --state=present
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ -f "$__object/parameter/extra-packages" ]; then
|
if [ -f "$__object/parameter/extra-packages" ]; then
|
||||||
for package in $(cat "$__object/parameter/extra-packages"); do
|
for package in $(cat "$__object/parameter/extra-packages"); do
|
||||||
require="__apt_update_index" __package $package --state=present
|
require="__package_update_index" __package $package --state=present
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
0
youngjin.han/dot-cdist/type/__all_in_one/singleton
Normal file
0
youngjin.han/dot-cdist/type/__all_in_one/singleton
Normal file
|
@ -20,7 +20,7 @@
|
||||||
Alpine/Debian/Fedora, output an error message and abort the
|
Alpine/Debian/Fedora, output an error message and abort the
|
||||||
manifest with exit code 1
|
manifest with exit code 1
|
||||||
- Additionally install all packages specified by the *--extra-packages* parameter
|
- Additionally install all packages specified by the *--extra-packages* parameter
|
||||||
***** Steps 2: *__firewall* (1.25h)
|
***** TODO Steps 2: *__firewall* (1.25h)
|
||||||
- Create a new type *__my_firewall*
|
- Create a new type *__my_firewall*
|
||||||
- Add a *type explorer* to find out whether nft is present on
|
- Add a *type explorer* to find out whether nft is present on
|
||||||
the target system
|
the target system
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
ruleset by generating code in *gencode-remote*
|
ruleset by generating code in *gencode-remote*
|
||||||
- If the filename specified by the *file* parameter is *-* (the
|
- If the filename specified by the *file* parameter is *-* (the
|
||||||
minus sign), then the type should read from *stdin*
|
minus sign), then the type should read from *stdin*
|
||||||
***** Step 3: manifest (0.5h)
|
***** TODO Step 3: manifest (0.5h)
|
||||||
- Create a new manifest in the folder that contains the initial manifest
|
- Create a new manifest in the folder that contains the initial manifest
|
||||||
- Name the new manifest *firewall*
|
- Name the new manifest *firewall*
|
||||||
- Source the *firewall* manifest in the *initial* manifest
|
- Source the *firewall* manifest in the *initial* manifest
|
||||||
|
@ -127,201 +127,146 @@
|
||||||
***** DONE As usual commit all changes to your ungleich-learning-circle repo
|
***** DONE As usual commit all changes to your ungleich-learning-circle repo
|
||||||
CLOSED: [2020-05-15 금 21:07]
|
CLOSED: [2020-05-15 금 21:07]
|
||||||
* 2020-05-06
|
* 2020-05-06
|
||||||
** cdist #2: Your first cdist type
|
*** cdist #2: Your first cdist type
|
||||||
**** Lecture content
|
**** Lecture content
|
||||||
***** Objective
|
***** Objective
|
||||||
****** Begin to understand how cdist types function
|
****** Begin to understand how cdist types function
|
||||||
***** Steps
|
***** Steps
|
||||||
****** DONE Create a new type named `__my_computer`
|
****** Create a new type named `__my_computer`
|
||||||
CLOSED: [2020-05-06 수 22:53]
|
- Mark the type as a singleton type
|
||||||
******* DONE Mark the type as a singleton type
|
- Create a `manifest` file in it
|
||||||
CLOSED: [2020-05-06 수 22:53]
|
- Use this type to install the following packages: zsh, mosh, emacs, nmap, sipcalc
|
||||||
******* DONE Create a `manifest` file in it
|
- Edit the *initial manifest* and use **__my_computer** for **localhost**
|
||||||
CLOSED: [2020-05-06 수 22:53]
|
- Match using the $__target_host variable
|
||||||
******* DONE Use this type to install the following packages: zsh, mosh, emacs, nmap, sipcalc
|
****** Modify your type to use a *for loop* to install the packages
|
||||||
CLOSED: [2020-05-06 수 22:53]
|
****** Deploy / manage your ~/.emacs file in this type
|
||||||
******* DONE Edit the *initial manifest* and use **__my_computer** for **localhost**
|
- Ensure that permissions and ownership are correct
|
||||||
CLOSED: [2020-05-06 수 22:53]
|
****** Use different *verbosity* levels when configuring
|
||||||
******* DONE Match using the $__target_host variable
|
****** Ensure that all your changes are committed and pushed in your ungleich-learning-circle repository
|
||||||
CLOSED: [2020-05-06 수 22:53]
|
- Use magit inside emacs for that
|
||||||
****** DONE Modify your type to use a *for loop* to install the packages
|
***** Documentation steps to be done in cdist.org
|
||||||
CLOSED: [2020-05-06 수 22:53]
|
- Create a new org document named `cdist.org` in the same folder as the learning.org file
|
||||||
****** DONE Deploy / manage your ~/.emacs file in this type
|
- Explain the difference between a singleton and non-singleton type
|
||||||
CLOSED: [2020-05-06 수 22:53]
|
- Explain the difference between the different verbosity levels
|
||||||
******* DONE Ensure that permissions and ownership are correct
|
- Document (copy&paste) some of the cdist runs in a "log" section```
|
||||||
CLOSED: [2020-05-06 수 22:53]
|
|
||||||
****** DONE Use different *verbosity* levels when configuring
|
|
||||||
CLOSED: [2020-05-06 수 22:54]
|
|
||||||
****** DONE Ensure that all your changes are committed and pushed in your ungleich-learning-circle repository
|
|
||||||
CLOSED: [2020-05-06 수 22:54]
|
|
||||||
******* DONE Use magit inside emacs for that
|
|
||||||
CLOSED: [2020-05-06 수 22:54]
|
|
||||||
***** DONE Documentation steps to be done in cdist.org
|
|
||||||
CLOSED: [2020-05-06 수 23:02]
|
|
||||||
****** DONE Create a new org document named `cdist.org` in the same folder as the learning.org file
|
|
||||||
CLOSED: [2020-05-06 수 23:02]
|
|
||||||
****** DONE Explain the difference between a singleton and non-singleton type
|
|
||||||
CLOSED: [2020-05-06 수 23:02]
|
|
||||||
****** DONE Explain the difference between the different verbosity levels
|
|
||||||
CLOSED: [2020-05-06 수 23:02]
|
|
||||||
****** Document (copy&paste) some of the cdist runs in a "log" section```
|
|
||||||
* 2020-05-04
|
* 2020-05-04
|
||||||
*** cdist #1: Introduction
|
*** cdist #1: Introduction
|
||||||
**** Lecture content
|
**** Lecture content
|
||||||
***** Objective
|
***** Objective
|
||||||
****** Begin to use cdist
|
- Begin to use cdist
|
||||||
***** Steps
|
***** Steps
|
||||||
****** DONE Checkout cdist quickstart https://www.cdi.st/manual/latest/cdist-quickstart.html
|
- Checkout cdist quickstart https://www.cdi.st/manual/latest/cdist-quickstart.html
|
||||||
CLOSED: [2020-05-04 월 22:32]
|
- Install cdist locally
|
||||||
****** DONE Install cdist locally
|
- Create a new cdist configuration directory in ~/ungleich-learning-circle/USERNAME/dot-cdist
|
||||||
CLOSED: [2020-05-04 월 22:32]
|
- Create an empty initial manifest ("use touch")
|
||||||
****** DONE Create a new cdist configuration directory in ~/ungleich-learning-circle/USERNAME/dot-cdist
|
- Commit that status
|
||||||
CLOSED: [2020-05-04 월 22:32]
|
- Ensure that you can login as root to localhost via ssh without a password
|
||||||
****** DONE Create an empty initial manifest ("use touch")
|
- Configure cdist to configures the motd of your localhost
|
||||||
CLOSED: [2020-05-04 월 22:32]
|
- Ensure you have a case block matching on $__target_host
|
||||||
****** DONE Commit that status
|
- Use the -c parameter to cdist to specify the configuration directory
|
||||||
CLOSED: [2020-05-04 월 22:37]
|
- Use the -vv parameter to get more verbose output
|
||||||
****** DONE Ensure that you can login as root to localhost via ssh without a password
|
- Search for / understand what MOTD stands for
|
||||||
CLOSED: [2020-05-04 월 22:37]
|
- Configure cdist to create the file /etc/cdist-configured
|
||||||
****** DONE Configure cdist to configures the motd of your localhost
|
- Configure cdist to setup the timezone on your local computer
|
||||||
CLOSED: [2020-05-05 화 00:42]
|
- Configure cdist to ensure emacs is installed
|
||||||
******* DONE Ensure you have a case block matching on $__target_host
|
- Ensure that in the end all changes are committed in your repository
|
||||||
CLOSED: [2020-05-05 화 00:21]
|
|
||||||
******* DONE Use the -c parameter to cdist to specify the configuration directory
|
|
||||||
CLOSED: [2020-05-04 월 23:58]
|
|
||||||
******* DONE Use the -vv parameter to get more verbose output
|
|
||||||
CLOSED: [2020-05-04 월 23:57]
|
|
||||||
******* DONE Search for / understand what MOTD stands for
|
|
||||||
CLOSED: [2020-05-05 화 00:41]
|
|
||||||
****** DONE Configure cdist to create the file /etc/cdist-configured
|
|
||||||
CLOSED: [2020-05-04 월 23:33]
|
|
||||||
****** DONE Configure cdist to setup the timezone on your local computer
|
|
||||||
CLOSED: [2020-05-04 월 23:33]
|
|
||||||
****** DONE Configure cdist to ensure emacs is installed
|
|
||||||
CLOSED: [2020-05-04 월 23:47]
|
|
||||||
****** DONE Ensure that in the end all changes are committed in your repository
|
|
||||||
CLOSED: [2020-05-05 화 00:42]
|
|
||||||
* 2020-05-01
|
* 2020-05-01
|
||||||
*** Organisation #5: Emacs refresher
|
*** Organisation #5: Emacs refresher
|
||||||
**** Lecture content
|
**** Lecture content
|
||||||
***** Objective: get confident with emacs commands
|
***** Objective: get confident with emacs commands
|
||||||
***** Find out and document how to do the following steps
|
***** Find out and document how to do the following steps
|
||||||
****** DONE Search for something forward C-s
|
- Search for something forward C-s
|
||||||
CLOSED: [2020-05-01 금 21:40]
|
- How to continue searching C-s C-s
|
||||||
****** DONE How to continue searching C-s C-s
|
- Search for something backward C-r
|
||||||
CLOSED: [2020-05-01 금 21:43]
|
- Search for regular expressions instead of string (forward, backward) C-M-s C-M-r
|
||||||
****** DONE Search for something backward C-r
|
- Go to the beginning of the line C-a
|
||||||
CLOSED: [2020-05-01 금 21:55]
|
- Go to the end of the line C-e
|
||||||
****** DONE Search for regular expressions instead of string (forward, backward) C-M-s C-M-r
|
- Delete a word in front (to the right of the cursor) M-d
|
||||||
CLOSED: [2020-05-01 금 22:25]
|
- Delete a word in back (to the left of the cursor) M-BackSpace
|
||||||
****** DONE Go to the beginning of the line C-a
|
- List all "occurences" of a word in a file M-s o
|
||||||
CLOSED: [2020-05-01 금 22:16]
|
- You can copy above instructions into an emacs buffer
|
||||||
****** DONE Go to the end of the line C-e
|
- And test it by showing all occurences of the word "Search"
|
||||||
CLOSED: [2020-05-01 금 22:16]
|
- Search (GREP) for a word in all files in a directory RECURSIVELY M-x rgrep
|
||||||
****** DONE Delete a word in front (to the right of the cursor) M-d
|
- Save the CURRENT buffer C-x C-s
|
||||||
CLOSED: [2020-05-01 금 22:17]
|
- Save ALL open files C-x-s
|
||||||
****** DONE Delete a word in back (to the left of the cursor) M-BackSpace
|
- Split the window/buffer vertically C-x 2
|
||||||
CLOSED: [2020-05-01 금 22:18]
|
- Split the window/buffer horizontally C-x 3
|
||||||
****** DONE List all "occurences" of a word in a file M-s o
|
- Switch between the different windows C-x o
|
||||||
CLOSED: [2020-05-01 금 22:53]
|
- Close all buffers besides the active one C-x 1
|
||||||
******* You can copy above instructions into an emacs buffer
|
- Don't kill it!
|
||||||
******* And test it by showing all occurences of the word "Search"
|
- Close only the active buffer C-x 0
|
||||||
****** DONE Search (GREP) for a word in all files in a directory RECURSIVELY M-x rgrep
|
-* Don't kill it!
|
||||||
CLOSED: [2020-05-01 금 22:46]
|
- Kill the active buffer C-x k
|
||||||
****** DONE Save the CURRENT buffer C-x C-s
|
- Describe/Explain the difference between closing and killing
|
||||||
CLOSED: [2020-05-01 금 21:55]
|
- closing is that emac do not display the buffer. and the contents on the buffer are kept on behined screen.
|
||||||
****** DONE Save ALL open files C-x-s
|
- killing is that emac delete the buffer. and if contents are not stored, it is losted
|
||||||
CLOSED: [2020-05-01 금 22:22]
|
- Switch between buffers that are not shown C-x b
|
||||||
****** DONE Split the window/buffer vertically C-x 2
|
- Document two very similar, but slightly different ways
|
||||||
CLOSED: [2020-05-01 금 21:48]
|
- C-x b is that the selected buffer is displayed on the focused window
|
||||||
****** DONE Split the window/buffer horizontally C-x 3
|
- C-x C-b is that all buffers is dispalayed on the new window
|
||||||
CLOSED: [2020-05-01 금 21:48]
|
- C-x 4 b is that the selected buffer is displayed on the new window
|
||||||
****** DONE Switch between the different windows C-x o
|
|
||||||
CLOSED: [2020-05-01 금 21:48]
|
|
||||||
****** DONE Close all buffers besides the active one C-x 1
|
|
||||||
CLOSED: [2020-05-01 금 21:47]
|
|
||||||
******* Don't kill it!
|
|
||||||
****** DONE Close only the active buffer C-x 0
|
|
||||||
CLOSED: [2020-05-01 금 21:54]
|
|
||||||
******* Don't kill it!
|
|
||||||
****** DONE Kill the active buffer C-x k
|
|
||||||
CLOSED: [2020-05-01 금 21:44]
|
|
||||||
****** DONE Describe/Explain the difference between closing and killing
|
|
||||||
CLOSED: [2020-05-01 금 22:09]
|
|
||||||
******* closing is that emac do not display the buffer. and the contents on the buffer are kept on behined screen.
|
|
||||||
******* killing is that emac delete the buffer. and if contents are not stored, it is losted
|
|
||||||
****** DONE Switch between buffers that are not shown C-x b
|
|
||||||
CLOSED: [2020-05-01 금 21:51]
|
|
||||||
******* DONE Document two very similar, but slightly different ways
|
|
||||||
CLOSED: [2020-05-01 금 23:28]
|
|
||||||
******** C-x b is that the selected buffer is displayed on the focused window
|
|
||||||
******** C-x C-b is that all buffers is dispalayed on the new window
|
|
||||||
******** C-x 4 b is that the selected buffer is displayed on the new window
|
|
||||||
***** Outcome
|
***** Outcome
|
||||||
****** DONE Document all above commands in your learning org sheet
|
- Document all above commands in your learning org sheet
|
||||||
CLOSED: [2020-05-01 금 23:28]
|
- Share your documentation at the end of the session (not before)
|
||||||
****** DONE Share your documentation at the end of the session (not before)
|
|
||||||
CLOSED: [2020-05-01 금 23:28]
|
|
||||||
|
|
||||||
* 2020-04-29
|
* 2020-04-29
|
||||||
*** Organisation #4: Organising yourself
|
*** Organisation #4: Organising yourself
|
||||||
**** Lecture content
|
**** Lecture content
|
||||||
***** Objective: have a todo list based on org mode
|
***** Objective: have a todo list based on org mode
|
||||||
***** Steps
|
***** Steps
|
||||||
****** Configure the "org-directory" to be ~/ungleich-learning-circle/USERNAME/
|
- Configure the "org-directory" to be ~/ungleich-learning-circle/USERNAME/
|
||||||
******* This is important as it will be used by the todo function later
|
- This is important as it will be used by the todo function later
|
||||||
****** Extend your function from the organisation #1 session
|
- Extend your function from the organisation #1 session
|
||||||
******* Instead of opening a fixed file, we include two variable parts:
|
- Instead of opening a fixed file, we include two variable parts:
|
||||||
******** The hostname of the machine
|
- The hostname of the machine
|
||||||
******** The year
|
- The year
|
||||||
******* Pressing F3 should open ~/ungleich-learning-circle/USERNAME/learning-$(hostname)-$(year).org
|
- Pressing F3 should open ~/ungleich-learning-circle/USERNAME/learning-$(hostname)-$(year).org
|
||||||
******** we call this "your personal agenda"
|
- we call this "your personal agenda"
|
||||||
****** Configure mu4e to create a org-mode tasks from an email
|
- Configure mu4e to create a org-mode tasks from an email
|
||||||
******* Store these tasks in ~/ungleich-learning-circle/USERNAME/todo.org
|
- Store these tasks in ~/ungleich-learning-circle/USERNAME/todo.org
|
||||||
****** Configure emacs to open the "org-agenda" with "C-c a"
|
- Configure emacs to open the "org-agenda" with "C-c a"
|
||||||
****** List all TODO entries
|
- List all TODO entries
|
||||||
****** List the agenda of the day
|
- List the agenda of the day
|
||||||
****** List the agenda of the week
|
- List the agenda of the week
|
||||||
****** Bind F8 to open the "org-todo-list"
|
- Bind F8 to open the "org-todo-list"
|
||||||
****** Create some sample tasks in it
|
- Create some sample tasks in it
|
||||||
***** From now on, maintaining tasks should be
|
***** From now on, maintaining tasks should be
|
||||||
****** Pressing F3 to open your personal "logfile"
|
- Pressing F3 to open your personal "logfile"
|
||||||
****** Adding a TODO item
|
- Adding a TODO item
|
||||||
****** Pressing F8 to see the tasks with priorities
|
- Pressing F8 to see the tasks with priorities
|
||||||
***** Bonus tasks
|
***** Bonus tasks
|
||||||
****** Configure mu4e to store org-mode tasks in .../todo-$(hostname)-$(year).org
|
- Configure mu4e to store org-mode tasks in .../todo-$(hostname)-$(year).org
|
||||||
* 2020-04-27
|
* 2020-04-27
|
||||||
*** Organisation #3: Managing your emails
|
*** Organisation #3: Managing your emails
|
||||||
**** Lecture content
|
**** Lecture content
|
||||||
***** Objective
|
***** Objective
|
||||||
****** Be able to manage all your mails in mu4e
|
- Be able to manage all your mails in mu4e
|
||||||
***** Description
|
***** Description
|
||||||
****** All email is synchronised using isync/mbsync
|
- All email is synchronised using isync/mbsync
|
||||||
****** Email is indexed with mu (xapian backend)
|
- Email is indexed with mu (xapian backend)
|
||||||
****** Email is viewed in mu4e
|
- Email is viewed in mu4e
|
||||||
****** All new emails arrive in the inbox
|
- All new emails arrive in the inbox
|
||||||
***** Steps
|
***** Steps
|
||||||
****** Install mu4e
|
- Install mu4e
|
||||||
****** Start mu4e in emacs
|
- Start mu4e in emacs
|
||||||
****** Configure mbsync for your ungleich mail account
|
- Configure mbsync for your ungleich mail account
|
||||||
******* Synchronise all mails into ~/Maildir/ungleich
|
- Synchronise all mails into ~/Maildir/ungleich
|
||||||
******* This structure leaves room for other mail accounts, like ~/Maildir/gmail
|
- This structure leaves room for other mail accounts, like ~/Maildir/gmail
|
||||||
****** Verify that mbsync synchronises the mail
|
- Verify that mbsync synchronises the mail
|
||||||
****** Index mails using `mu` on the command line (only first time)
|
- Index mails using `mu` on the command line (only first time)
|
||||||
****** Configure mu4e to get email with mbsync -a
|
- Configure mu4e to get email with mbsync -a
|
||||||
****** Configure mu4e to "archive" emails into ~/Maildir/ungleich/YEAR/
|
- Configure mu4e to "archive" emails into ~/Maildir/ungleich/YEAR/
|
||||||
******* This gives you a good performance / organisation for the next decades
|
- This gives you a good performance / organisation for the next decades
|
||||||
****** Configure mu4e/emacs for sending emails
|
- Configure mu4e/emacs for sending emails
|
||||||
****** Send other participants an email via mu4e
|
- Send other participants an email via mu4e
|
||||||
****** Verify that it arrives
|
- Verify that it arrives
|
||||||
****** "Archive" it afterwards
|
- "Archive" it afterwards
|
||||||
* 2020-04-24
|
* 2020-04-24
|
||||||
*** Organisation #2: Creating, managing and sharing with "magit"
|
*** Organisation #2: Creating, managing and sharing with "magit"
|
||||||
**** Lecture content
|
**** Lecture content
|
||||||
***** Install "magit" for emacs
|
***** Install "magit" for emacs
|
||||||
***** Bind C-x g to open magit-status in ~/.emacs
|
***** Bind C-x g to open magit-status in ~/.emacs
|
||||||
***** Create a new directory ~/ungleich-learning-circle/ (with emacs)
|
***** Create a new directory ~/ungleich-learning-circle/ (with emacs)
|
||||||
****** Use C-h b in dired mode to find out how to
|
- Use C-h b in dired mode to find out how to
|
||||||
***** Create a sub directory ~/ungleich-learning-circle/YOURNAME/ (with emacs)
|
***** Create a sub directory ~/ungleich-learning-circle/YOURNAME/ (with emacs)
|
||||||
***** Move your previously created learning.org file into ~/ungleich-learning-circle/YOURNAME/ (with emacs)
|
***** Move your previously created learning.org file into ~/ungleich-learning-circle/YOURNAME/ (with emacs)
|
||||||
***** Initialise it with git (with magit)
|
***** Initialise it with git (with magit)
|
||||||
|
@ -342,4 +287,4 @@
|
||||||
***** Create a function that opens ~/learning.org in your ~/.emacs
|
***** Create a function that opens ~/learning.org in your ~/.emacs
|
||||||
***** Bind that function to "f3" (configure it in .emacs)
|
***** Bind that function to "f3" (configure it in .emacs)
|
||||||
***** Create a new item named "2020-04-10"
|
***** Create a new item named "2020-04-10"
|
||||||
****** Create a sub item "ungleich learning circle"
|
- Create a sub item "ungleich learning circle"
|
||||||
|
|
Loading…
Add table
Reference in a new issue