diff --git a/cards/2021.org b/cards/2021.org index 266e10c..cff9a92 100644 --- a/cards/2021.org +++ b/cards/2021.org @@ -3,12 +3,13 @@ :END: #+title: Anki: 2021 #+date: "2021-05-01 20:20:25 +08:00" -#+date_modified: "2021-05-16 13:58:36 +08:00" +#+date_modified: "2021-05-21 12:09:04 +08:00" #+language: en #+property: anki_deck 2021 +#+property: header_args :exports both #+name: lilypond-paper-config -#+begin_src lilypond :exports none +#+begin_src lilypond :exports none :results none \paper { indent=10\mm oddFooterMarkup=##f @@ -484,6 +485,8 @@ Give various pitfalls and illusions of competence to look out when learning. - *The presence of the material itself* can cause students to foolishly think they already know about the subject. - Similarly, *studying with solutions can be a trap if you focus on the what and how rather than the why*. - Various common practices such as highlighting, rereading, and mind mapping are not as effective and only applicable in specific situations. +- The einstellung mindset, *being invested in an idea that you can't see other solutions*. +- Similarly, *overlearning can occur if you're aiming for complete mastery when you should move on after understanding the concept*. * org-babel :PROPERTIES: @@ -511,9 +514,6 @@ Among the list of features, org-babel makes the following things easier for crea ** Front How to make org-babel pass values between different source code blocks? ** Back -:PROPERTIES: -:ID: 5c959c6a-04fb-4154-becc-86eeb15b20ad -:END: First, configure org-babel to work in functional mode (i.e., ~:results value~) in a source code block. With functional mode, it will return values which will be handled by org-babel. @@ -557,8 +557,7 @@ If so, how? ** Back Yes! -With source code blocks and the [[https://orgmode.org/manual/Noweb-Reference-Syntax.html][noweb]] option enabled, you can make meta-programming in Org. -You can declare a function by assigning a name on the code block (i.e., ~#+name: ${FUNC_NAME}~). +By attaching a name to a code block and [[https://orgmode.org/manual/Evaluating-Code-Blocks.html#Evaluating-Code-Blocks][evaluating]] them, it is possible. Here's an example of a source code block with a default argument. @@ -578,6 +577,7 @@ You can then call the function in different ways: You can then pass header arguments by appending in square brackets (=[]=) before invoking it — e.g., ~call_greeting[:results replaces]()~, ~#+call: greeting[:results replace]()~, ~<>~. + * Org mode: Asciidoctor-styled callouts :PROPERTIES: :ANKI_NOTE_TYPE: Styled cards @@ -671,8 +671,6 @@ Give some ways how to navigate Org mode documents quickly. What function creates a buffer for certain elements in org-mode but it is especially useful for editing source code blocks where it will open with the correct major mode? ** Back ~org-edit-special~ -- The einstellung mindset, *being invested in an idea that you can't see other solutions*. -- Similarly, *overlearning can occur if you're aiming for complete mastery when you should move on after understanding the concept*. * Practices for studying :PROPERTIES: @@ -804,8 +802,8 @@ What notes are displayed (in order)? #+results: [[file:assets/2021/basic-notation-reading-2.png]] -** Back -A C major triad (i.e., C E G). +** Back A +C major triad (i.e., C E G). Then the notes E, F, and A. * Basic music notation reading 3 @@ -828,3 +826,88 @@ What notes are displayed (in order)? ** Back C, D, C-A (a major sixth), E-B (a minor fifth), and G-F (a seventh). + +* Watch the logs of a systemd unit +:PROPERTIES: +:ANKI_NOTE_TYPE: Styled cards +:ANKI_NOTE_ID: 1621570139174 +:END: +** Front +What is happening with the following command? + +#+begin_src shell :results none +journalctl -u backup -fb +#+end_src + +** Back +Watch the logs from the systemd unit ~backup.service~ starting from boot time. + +The command could also be written in the same way. + +#+begin_src shell :results none +journalctl --unit backup --follow --boot +#+end_src + +* Restoring a file in Git +:PROPERTIES: +:ANKI_NOTE_TYPE: Styled cards +:ANKI_NOTE_ID: 1621570139642 +:END: +** Front +How to restore a file in Git? +** Back +#+begin_src shell :results none +git restore $FILE_PATH +#+end_src + +Despite the name, it will also delete the file if it's detected as untracked file in the Git worktree. + +* Setting environment variables with systemd environment directive +:PROPERTIES: +:ANKI_NOTE_TYPE: Styled cards +:ANKI_NOTE_ID: 1621570140918 +:END: +** Front +How to set environment variables with systemd? +** Back +Create an environment directive file in the specified directory. +You can find the search paths and the syntax from =environment.d.5= manual page. + +Basically, it is a shell-like config for setting environment variables. +The following shows that. + +#+begin_src shell :results none +TERM=alacritty +EDITOR=nvim +BROWSER=brave +MANPAGER="nvim +Man!" + +PATH=${PATH:+$PATH:}${GUIX_PROFILE:-$HOME/.guix-profile}/bin +XDG_DATA_DIRS=${GUIX_PROFILE:-$HOME/.guix-profile}/share:${XDG_DATA_DIRS:-/usr/local/share:/usr/share} +#+end_src + +Compared to exporting values with the user shell (e.g., =.bashrc=, =.zshrc=) where they are only applied when the shell is called, environment variables generated from the directive can be recognized from applications that called non-interactively (e.g., GNOME desktop search, Rofi). + +You can also view the resulting environment with ~systemctl show-environment~. + +* Emacs Lisp conditionals +:PROPERTIES: +:ANKI_NOTE_TYPE: Styled cards +:ANKI_NOTE_ID: 1621570142444 +:END: +** Front +Give some functions for creating a conditional in Emacs Lisp. +** Back +Below are the common way to control the flow with Elisp. + +#+begin_src elisp :results none +(if (and nil nil) + (message "Hello there!") + (message "Not hello there, sith lord!")) + +(unless t + (message "Not hello there, sith lord!")) + +(when t + (message "Hello there!")) +#+end_src diff --git a/cards/assets/2021/basic-notation-reading-1-1.eps b/cards/assets/2021/basic-notation-reading-1-1.eps index 0fbfcdb..5e11553 100644 Binary files a/cards/assets/2021/basic-notation-reading-1-1.eps and b/cards/assets/2021/basic-notation-reading-1-1.eps differ diff --git a/cards/assets/2021/basic-notation-reading-1.png b/cards/assets/2021/basic-notation-reading-1.png index 1087c9f..978ffc3 100644 Binary files a/cards/assets/2021/basic-notation-reading-1.png and b/cards/assets/2021/basic-notation-reading-1.png differ diff --git a/cards/assets/2021/basic-notation-reading-3-1.eps b/cards/assets/2021/basic-notation-reading-3-1.eps index c59004b..56ff2bd 100644 Binary files a/cards/assets/2021/basic-notation-reading-3-1.eps and b/cards/assets/2021/basic-notation-reading-3-1.eps differ diff --git a/structured/cli.journalctl.org b/structured/cli.journalctl.org new file mode 100644 index 0000000..79896f0 --- /dev/null +++ b/structured/cli.journalctl.org @@ -0,0 +1,54 @@ +#+title: journalctl +#+date: "2021-05-20 23:07:39 +08:00" +#+date_modified: "2021-05-20 23:27:03 +08:00" +#+language: en +#+property: header-args :results none + + +The logging daemon of systemd. +(Ooooh...) +Not only it can view your logs, you can ask to view specific logs and delete some of them. + +For more information, see =journalctl.1= manual page. + + + + +* Options + +- ~-b, --boot~ - show the logs starting from boot time +- ~-e, --pager-end~ - go to the end of the logs +- ~-f, --follow~ - watch the logs +- ~--user-unit~ - show logs from a user unit +- ~-u, --unit [UNIT]~ - show the logs of a system unit +- ~--vacuum-time=[TIMESPAN]~ - delete logs older than the specified timespan [fn:: View =systemd.time.5= for more information.] +- ~-x, --catalog~ - prints helpful messages such as the documentation URIs + + + + +* Examples + +This tool is already comprehensive. +Needs a comprehensive database of examples to fight against this scope. + + +** Watch the logs from a specific unit at boot time + +#+begin_src shell +journalctl --user-unit borgbackup.service -fb +#+end_src + + +** Delete the logs older than a month + +#+begin_src shell +journalctl --vacuum-time=1m +#+end_src + + +** View the latest logs with helpful messages + +#+begin_src shell +journalctl -xe +#+end_src diff --git a/structured/data.wikidata.org b/structured/data.wikidata.org new file mode 100644 index 0000000..8fe7286 --- /dev/null +++ b/structured/data.wikidata.org @@ -0,0 +1,13 @@ +#+title: Wikidata +#+date: "2021-05-20 21:14:34 +08:00" +#+date_modified: "2021-05-20 21:15:24 +08:00" +#+language: en + + +- A universal database with semi-structured data allowing for natural queries. +- Each item in the database contains statements which in turn contain properties. +- Querying tools are available (e.g., https://query.wikidata.org/, wikibase-cli). +- item + statement + property +- The item itself and its part are assigned a unique ID — e.g., the item "GNU Guix" is assigned to "Q18968627" and it has a logo image statement is which assigned at "P154". +- Wikidata-related SDKs and APIs are available for interacting with the data without using the website. +- [[https://www.wikidata.org/wiki/Special:ApiSandbox][API sandbox]] diff --git a/structured/sysadmin.systemd.org b/structured/sysadmin.systemd.org new file mode 100644 index 0000000..ffd4d8f --- /dev/null +++ b/structured/sysadmin.systemd.org @@ -0,0 +1,60 @@ +#+title: Exploring systemd features +#+date: "2021-05-20 22:37:22 +08:00" +#+date_modified: "2021-05-20 22:59:53 +08:00" +#+language: en + + +systemd is a big tool for a big system. +Let's explore some of them from a perspective of a wannabe power user. + + + + +* systemd at user-level + +systemd has the ability to run at user-level empowering the user to manage their own system with their own settings. +It immensely helps separating user-specific settings from the system-wide settings. + +systemd looks for the units from certain paths. +You can look for them from the =systemd.unit.5= manual page. + +To run systemd as a user instance, simply add a =--user= flag beforehand for =systemctl= and other systemd binaries, if applicable. + +#+begin_src shell :results none +systemctl --user show-units +systemctl --user show-environment +systemctl --user start $SERVICE +#+end_src + + + + +* Timers as cron replacement + +You can schedule tasks with timers. +If systemd is compiled with the feature, it makes cron unnecessary. + +systemd has different ways to denote time. + +- Timespans denote the duration — e.g., =100 seconds=, =5M 3w=. +- Timestamps refer to a specific point in time — e.g., =2021-04-02=, =today=, =now=. +- Calendar events can refer to more than one point of time — e.g., =*-*-4/2=, =Sun,Wed,Fri *-1/2-1/8=. + +Here's an example of setting a timer for an example backup service. +The following timer unit sets it to execute every day at 18:00. + +#+begin_src +[Unit] +Description=A deduplicated backup from my computer +Documentation=man:borg(1) https://borgbackup.readthedocs.io/ + +[Timer] +OnCalendar=*-*-* 18:00:00 +Persistent=true + +[Install] +WantedBy=graphical.target +#+end_src + +You can find more information about it from the =systemd.time.5= manual page. +Furthermore, systemd has a testing tool for time with ~systemd-analyze {timespan,timestamp,calendar}~. diff --git a/structured/lang.lilypond.org b/structured/text.lilypond.org similarity index 100% rename from structured/lang.lilypond.org rename to structured/text.lilypond.org