Skip to content

Instantly share code, notes, and snippets.

@ar90n
ar90n / systemd-concept-and-functions-book.md
Last active January 21, 2024 02:53
systemd-concept-and-functions-book-memo

自作Serviceを作成するときに指定すると便利なWants

WantedBy=multi-user.targetを指定するのが一般的。ネットワークが使えるようになったら起動するようにしたい場合は、WantedBy=network-online.targetを指定すると良い。

activeとなるタイミングはtypeによって異なる

たとえばtypeがsimpleの場合は、forkが実行された時点でactiveとなる。 Afterなどで他のサービスと依存関係を持たせる場合、activeになるタイミングに注意する必要がある。 とくに、typeをsimpleとしている場合は、forkが実行された時点でactiveとなるので、Afterとしても実際のプログラムが起動する順番は保証されない。 typeがsimpleなService同士での依存関係を持たせる場合は、ExecStartPostでサービスのプログラムの完了を確認する。

cronの代わりにsystemd-timerを使う

@ar90n
ar90n / PID_memo.md
Last active January 6, 2024 21:11
PID memo
@ar90n
ar90n / setup_pico_env.md
Last active January 14, 2024 14:11
env setup
@ar90n
ar90n / micromamba_env_name_output
Last active December 5, 2023 09:30
micromamba_env_name_output[object Object]
ターミナルに以下のような感じで(env name)が出力される
```bash
~ via 🅒 ros_humble_env on ☁️ (ap-northeast-1) on ☁️ test-830@ar90n-sandbox.iam.gserviceaccount.com
(ros_humble_env)
```
以下のissueを参考に対応。
https://github.com/mamba-org/mamba/issues/2190
@ar90n
ar90n / memo_about_go_100_tips
Last active November 26, 2023 15:02
memo_about_go_100_tips
## No.5 インターフェース汚染
不要な抽象化でコードを埋め尽くし理解をしにくくすること
インターフェースが有用なポイント
* 共通の振る舞い
* 具体的な実装との分離
* 振る舞いの制限
インターフェースは抽象化を行う。抽象化は作成するものではなく、発見するもの。
@ar90n
ar90n / k_extends_keyof_t_in_ts
Last active October 14, 2023 12:42
K extends keyof T in TS
# Typescriptにおける`K extends keyof T`の考え方
`keyof T`は`T`に含まれるキー名のリテラル型のUnionnいなる。
なので、そのUnionに含まれる各リテラル型の値は`extends keyof T`を満たす
@ar90n
ar90n / return_value_is_copied.md
Last active July 16, 2023 10:29
return value is copied

戻り値はコピーされるので注意が必要

以下のようにgenの戻り値はコピーされた値となる。 従って、Stの中でフィールドに対するポインタやスライスと持っているとバグとなる。

const St = struct { addr: usize };

fn gen() St {
 var s = St{ .addr = 0 };
@ar90n
ar90n / add_new_language_support_to_pandoc.md
Last active July 15, 2023 17:44
add new languages support to pandoc

pandocにSyntaxHighlightする言語を追加する

skyhighlightに定義ファイルを追加してビルド

ENV SKYLIGHTING_VERSION 0.13.4
RUN curl -L https://github.com/jgm/skylighting/archive/refs/tags/${SKYLIGHTING_VERSION}.tar.gz | tar xvz
RUN <<EOF

cd skylighting-${SKYLIGHTING_VERSION}/skylighting-core/xml/
@ar90n
ar90n / zig_polymorphism.md
Last active June 27, 2023 14:38
zig_polymorphism.md

zigによる多態性の実現

zigではインタフェースや継承のような機能を言語でサポートしていない。 従って、多態性はユーザーがコードで表現する必要がある。

@fieldParentPtr idiom

0.8頃までしようされていた?LLVMの最適化に難があるため、後述のfat pointerベースの手法に置き換えられた。基本的にはインターフェースからメソッドを実行する際、vtableから対応するメソッドへのポインタを取り出し以下の手順で実行する。

  1. @fieldParamentPtrにてメソッドへのポインタから対応するインスタンスへのポインタを取得
  2. メソッドへのポインタの引数に取得したインスタンスへのポインタをセットして実行