お知らせ

現在サイトのリニューアル作業中のため、全体的にページの表示が乱れています。

確認環境

Env Ver Misc
golang 1.16.4-alpine3.13 DockerImage
VSCode 1.56.0
golang.go 0.24.2 VSCode 拡張

サンプルコード

Dockerfile

シェルが貧弱なので、ついでに好きなシェルも入れておくのが無難

FROM golang:1.16.4-alpine3.13
RUN apk add git gcc libc-dev
RUN go get golang.org/x/tools/gopls \
    && go get -u github.com/go-delve/delve/cmd/dlv

.vscode/settings.json

  • あとはF5を押せば起動する
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch file",
            "type": "go",
            "request": "launch",
            "mode": "debug",
            "program": "${workspaceFolder}/"
        },
    ]
}

トラブルシュート

デバッグしようとして起きるエラーとか
上のサンプルコードを使っている限り起きないはず

exec: "gcc": executable file not found in $PATH

gccを入れれば解決する

_cgo_export.c:3:10: fatal error: stdlib.h: No such file or directory

libc-devを入れれば解決する

確認環境

Windows 10

Env Ver
Pandoc 2.11.4
Java 1.8.0_291
PlantUML 1.2021.3

やり方

パス書式はMSYS2で流す前提

  1. https://github.com/pandoc/lua-filters/tree/master/diagram-generator からdiagram-generator.luaを落としてくる
  2. https://gist.github.com/andyferra/2554919 を拾ってくる
  3. pandoc Foo.md --self-contained -s -c /c/pandoc/github.css --lua-filter=/c/pandoc/diagram-generator.lua --metadata=plantumlPath:"C:\pandoc\plantuml.jar" --metadata=javaPath:"C:\Program Files\Java\jre1.8.0_291\bin\java.exe" -o Foo.html
    1. --self-contained
      1. バイナリを全部Base64で出力(1ファイルに封じ込める)
    2. -s
      1. 完全なHTMLを出力
    3. -c
      1. CSS
    4. --lua-filter
      1. Luaフィルタ
    5. --metadata=
      1. フィルタに食べさせる引数
  • global.navigatorをモックにする方法
    • モックというか書き換えてるだけ
  • jestのモック機能はプロパティのモックが出来ないので、実オブジェクトを強制的に書き換えて実施する

サンプルコード

  • Object.defineProperty() を利用して実装
    • value, プロパティが返す値
    • configurable, 再定義可能かどうか、設定しないと再実行でコケる
  • 実際の使用ではユーティリティ関数を作っておき、 afterAll()navigator.userAgentを初期値に戻すのが望ましい
Object.defineProperty(global.navigator, 'userAgent', {
  value:
      'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36',
  configurable: true,
});