workflow-meetup
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Write
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Help
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Write
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # 39th Workflow Meetup (2021-04-12 Mon) ================================ [20210412 · workflow\-meetup\-jp/workflow\-meetup Wiki](https://github.com/workflow-meetup-jp/workflow-meetup/wiki/20210412) 2021-04-12(Mon) 13:00 - 19:00 まで。 完全リモートのため、全世界どこからでも参加可能。 # 事前計画 ## 全体 - 池田さんより、CWL定義ファイルに stderr や stdoutのキャプチャをする設定をしておいた場合、意図せず - cwltoolの内側で失敗したときに、うまくキャプチャできない。ログが吸い込まれてしまう。 - ジョブスケジューラと連携も考える。 - SGE系だと、STDERRに出力すると、exit status が O でも、エラー。 - 標準出力に出した - https://www.gisaid.org/ - https://www.gisaid.org/hcov19-variants/ ## 石井 - 次回日程を決める - 5月10日を希望したいです。12日か ## 西田 - Rcwl(https://www.bioconductor.org/packages/release/bioc/html/Rcwl.html) と RcwlPipelines(https://bioconductor.org/packages/release/bioc/html/RcwlPipelines.html) を使ってみる ## 丹生 - ep3 いじり ## 坊農 - pitagora-cwlを一部使わせていただいて論文出しました。ありがとうございました。 - Meta-Analysis of Oxidative Transcriptomes in Insects. https://doi.org/10.3390/antiox10030345 - Systematic Analysis for Quantification of Expression (SAQE) https://github.com/bonohu/SAQE - 今後、非CWLの部分のCWL化を進めたい - salmonなど新しいバージョンのcommand line toolを使ったワークフローをSAQEのrepoにアップしていくでよい? - `「良い」` とおもいます(一同) - sra-tools の prefetchをつかっているから、CWL+singularity環境の場合問題がおこる可能性あるかも(おおたさん) ## 池田 # こうなりました ## 全体 - 次回2021年5月12日水曜日 - [20210512 · workflow\-meetup\-jp/workflow\-meetup Wiki](https://github.com/workflow-meetup-jp/workflow-meetup/wiki/20210512) 2021-05-12(Wed) 13:00 - 19:00 まで。 ただし、西田さんが17時までなので、第1回ラップアップを、16時半から行う。 完全リモートのため、全世界どこからでも参加可能。 ### sapporoとCWLの話 この部分の記述を読む前に、おおたさんの本日の作業記録を書いてあることを読んだほうがよいです。 こちらは石井が会話を全部かきとめたかんじなので。 - かくざきさんの画面を見ながら以下の作業 - 知らない人は、ドキュメントをみながら作業ができるのか - ドキュメントの修正 - [ ] Getting Startedのスペルミスおよび登場箇所の修正 - [ ] `jq` のインストールについての記述 - [ ] docker-compose に`-d` がない理由の説明が必要 - [ ] 別窓をひらいてcurlを実行しましょうの記述追加 - [ ] WESについて読む必要がある - [ ] 最初に実行できるワークフローがあることの記述 - [ ] 別ブランチからマージしてももんだいないことの確認(おおた) - [ ] WFの準備の仕方として `git clone`の必要がないことの記述 - [ ] 準備する必要があるファイルと、準備する必要がないファイルの記述 - [ ] `cat` の記述がわかりにくい - [ ] 準備する必要があるファイルとして以下の2つ - [ ] `workflow_params.json` - [ ] `workflow_engine_params.json` こちらはjsonでからだけど必要。echoで、作成する方法を記述 - [ ] WFはURLを教えてあげると、sapporoがとりにいってくれることを記述 - [ ] ダウンロードしてしまうと、相対パスが解決できないので、リモートURLの指定が必須 - [ ] curlでserviceにポストすることは何かを書く。 - [ ] curlでserviceにポストする部分で、tags.jsonが必須でないので、直前までの説明で、tags.jsonを省いた場合は、curlでポストの例でも、はぶいておく - [ ] 実行結果は、sapporo-service以下のrunの中にできる。確認したいなら、別のディレクトリに移動する - [ ] WESについての深い話は、sapporo-serviceのREADMEのしたにある。(ほかにもあるかもしれない)、Getting Startedの先頭の方にかいてあってもよいかもしれない - [ ] runidの説明について - [ ] 実行するたびに違うidがふられるUUIDであることは書いておいたほうが良いだろう。UUIDのバージョンは 4?5?とかは、さらっとあるとうれしい人もいるかもしれないが、Getting Startedレベルかは不明 - [ ] swagger APIについて、リンクがあるか確認する - [ ] sapporo-webは、chromeだと動くことはかいてあるが、ほかのではうごかないかもしれないので、ほかので動かないときは、chromeを推奨するように書く - [ ] jq `.outputs` の部分を `.run_log.stdout` にするなどの例もかく。このとき指定できるのは、swagger API の Modelで確認できる - [ ] 簡単にかけるなら、cwltoolの出力としての改行も正しく取り扱えるコマンドをのせておく - [ ] sapporo webで登録できるAPIサーバーは、ローカルだけでなく、遺伝研上 - [ ] sapporo webで投げたくなるドキュメントを書く - [ ] Register Serviceをしたときの次くらい?に書く - [ ] 登録してあるものを動かすの次が、githubにあるもの(さっきのcurlのやつ)を実行する - [ ] コピペするべき、WFのrawのURLを、コピペしやすい位置に書いておく - [ ] serverの名前と、WFの名前は、別にしておいたほうがよいことを書いておく。 - [ ] WFの名前は、それっぽいタスクなどの名前にする - [ ] 入力ファイルを渡す方法の記述(Getting Startedではないかもしれないけど) - [ ] Register Workflowの手順を記述する - [ ] WFの指定 - [ ] WFエンジンの指定 - [ ] WFエンジンパラメータと、tagsは空でよい - [ ] attachement に、URLだけでなく、ローカルからアタッチする方法もあること、そのやりかたの記述 - [ ] YAMLで記述する方法を紹介したほうが良いだろう。JSONで書くのは、人類の大部分の人にはむずかしいため。 - [ ] sapporo web の "Workflow Attachment as File" にファイルをアタッチする方法を書く - [ ] アップロードするファイルの制限は、どこで行われているか。 - [ ] nginxとかにも制限がある可能性がある。数十GBあるようなファイルを扱いたいとき - [ ] S3におけば、S3からおとすという方法がある。 - [ ] 数十GBあるようなファイルはWESの仕様としては、アタッチするしかないのだが、sapporo web としては、現実として使えるようにどこかにあげたものをURLで指定できるようにしたということの記述 - [ ] アップロードしたものは、runディレクトリの中にあることの記述もしておいた方が良いだろう - [x] かくざきさん - [x] special thanksてきなところに名前を載せても大丈夫か? - 問題ないです!(角崎) - [ ] Workflow Meetup - [ ] special thanksてきなところに名前を載せても大丈夫か? - [ ] かくざきさんより - [ ] Getting Startedにいきつかなかった - [ ] `curl` をどのターミナルの窓に打つか - [ ] `jq` は普通はいっていない。 - [ ] prepare to run a workflow - [ ] ファイルのリンクがあったらダウンロードしちゃうよね - [ ] フォルダの構造があるとうれしい - [ ] APIがいまいちなにをしているかわからない。(何かがサーバー側でうごいていることは感じれたので、よいといえばよい) - [ ] サーバーに詳しい人が前提だろうという印象 - [ ] WES Servicesには走らせたいWFがある - [ ] Runsには、実行結果 - [ ] おおたさんより - [ ] sapporo serviceとsapporo webの連携などを図示したほうがよいのではないか。 - [ ] WFやサービスの名前のつけかたの指針がドキュメントにあったほうがよいだろう。同じ名前はよくない。わかりづらいので。 - [ ] おおたさん、すえたけさんより - [ ] 実行したWFのインポート機能をつけてもよいのではないか。 - [ ] ドキュメントengine parameterとtagsは、隠しておいてもよいかもしれない - [ ] 現状、すえたけさん、いしい以外はほとんど使う人はいないので、大きな面積を確保しておかず展開できるようにしておいてもよいかもしれない - [ ] singularity対応について - [ ] 現状の推奨 - [ ] dockerであることは間違いない - [ ] ローカルインストール可能 - [ ] run.shをいじる。 - [ ] HPC向けにsingularityで実行する方法があってもよい。 - [ ] singularityの辛さ - [ ] singularityはデフォルト、HOMEディレクトリをマウントしてくれるし、仮想ファイルシステム的なところにかくわけではない - [ ] 特定のbioinformaticsのツールとsingularityのコンビネーションが悪い可能性がある。 - [ ] sapporoを強制することで、SSHとかしちゃだめだみたいなことができるかもしれない。 - [ ] データだけ指定してもらって、特定のWFを回すことも可能だろう。 - [ ] 全データがS3にあれば - [ ] Galaxyとの違いについて - [ ] Galaxyは実績もあるが、sapporoを使う理由。 - [ ] stderrのダウンロードの方法をかいたほうがよいだろう `download_logs` について ### CWL の stderrやstdoutは、どこでキャプチャするのがよいか? 異常終了時のエラーのメッセージをみたい。 - ツールがエラーを起こすと、cwltoolが落ちるとstderrが回収できない - stderrがエラー以外のものを出力しているという現実がある - WORKAROUND - CWL定義内でstderrをファイルに記述する部分をコメントアウトする - 結局これがいまのところ - cwltoolとしての出力も極力減らしておく、 `--quiet` をつけるとか、 `--verbose` を切っておくなどと併用。 - 地道にログをみる - cwltoolの前提 - 出力オブジェクトのみが、stdoutに出力され、それ以外がstderrに出力される - cwltoolでのみ起こるのだから、toilで確認しても、それは違うものになってしまう可能性が高い - 結局cwltoolで実行したほうがよい。 - エンジン開発的な観点からすると - エラーログが小さいという前提なら可能な処理も、エラーログが3GBとかあるとか、さらにそれが、言語のオブジェクトになっているとさらにファイルサイズが大きい。 通常の場合 - エンジン側が正しい挙動するならば、CWL定義内に書いておいてよい - パスが同じになるように自分でかいているとか、そういうのはないとする。 - 各ステップの標準出力、標準エラーは、内部表現の話になるので、ユーザーからは直接見えない - なので、エンジン側が適当な名前でつくってもよい - エンジンとして最終的に整合性がとれていればよい考えることができる。 池田さん含め一般的な感想 - cwltoolでだいたい動くことがわかっているツールは、 cwltoolを使うと便利 - よくおこる失敗は、パラメータで渡すファイルを間違える。 - formatについて - 書いてあっても、現状はつかわれていない - make templateしても出力されないので、自分でもう1度書く必要がある - 仕様上は、formatのバリデートの必要がかかれていない - 実装によっては適当なものを書いてもとおってしまうだろうし、きちんとチェックしているものもあるだろう - cwltoolがチェックしているのは、cwltool固有の実装であって、仕様ではない - 未確認だが、例えば、SAMとBAMであれば共通の概念を指定することが可能 - [EDAM \- Bioscientific data analysis ontology \- Alignment format \- Classes \| NCBO BioPortal](https://bioportal.bioontology.org/ontologies/EDAM/?p=classes&conceptid=http%3A%2F%2Fedamontology.org%2Fformat_1921) - そもそも、ファイルを指定してそのファイルの形式が正しいかをチェックするようなツールがない - bio\* 系だと、読めるまで読む。 - GFFはvalidatorがある。 - bioinformaticsらしいといえばらしいケース - fastaをgzipされたものの扱いとか。 - Galaxyは、そのあたりもよしなにやってくれる。 - ツール単独の時間の計測などにはむいていないこともある。 - 前処理、後処理で対応しているようだが、ログには出力されない?ログ ### singluarity CWL+NCBItools+Singularityだと起こる問題で NCBItools+Singularityではおきないし CWL+NCBItools+dockerではおきない - 環境変数でいろいろわたさせるのだが、HOMEのオーバーライドして指定ができない。 - ツールの前提として、HOME以下に書き出すので困ることがある。 - cwltoolとしては、隔離された環境を作ることができない [2\.10\.3 brings vdb\-config \-\-interactive nightmare · Issue \#291 · ncbi/sra\-tools](https://github.com/ncbi/sra-tools/issues/291) インタラクティブが強制発動する>これを回避する方法が提案された>rootでないと動かない方法だった ## 石井 - 次回日程を決めた - その次は6月2日を希望したいです。 - 2021年度は、月の第一週の水曜日13時スタートの方向。ただし、月曜日など他の日になるかもしれないです。 - 既存のツールを組み合わせただけのワークフローで、ジョブファイルを書き換えたら別の研究ができたという事例が紹介された - もう1回あれやるのやだなぁ、という系統の作業をコードゼロで解析できた。 - 得られたTIPS - 変更が予想されるパラメータをそとにだしておく必要があるかもしれない - サブワークフローにしてパラメータをふって、全通り対応させるのも楽だった ## 西田 - RcwlとRcwlPipelinesのvignetteに加え https://liubuntu.github.io/Bioc2020RCWL/articles/Bioc2020RCWL.html もやってみて下記の問題に確信を抱いた ![](https://i.imgur.com/0tKYjmz.png) ``` > atls <- cwlUpdate() ## sync the tools/pipelines Update scripts... trying URL 'https://github.com/hubentu/RcwlRecipes/archive/master.zip' downloaded 316 KB Error in cwlProcess(baseCommand = "table_annovar.pl", requirements = list(req1, : could not find function "cwlProcess" ``` - 確信を抱いたので https://community-bioc.slack.com/ の rcwl チャンネルで報告した。(GitHubでissueを作るのがめんどいと思う人はこれがいいかも。) ### Rcwlのshinyアプリ ``` e1 <- InputParam(id = "flag", type = "boolean", prefix = "-f", doc = "boolean flag") e2 <- InputParam(id = "string", type = "string", prefix = "-s") e3 <- InputParam(id = "option", type = "string", prefix = "-o") e4 <- InputParam(id = "int", type = "int", prefix = "-i", default = 123) e5 <- InputParam(id = "file", type = "File", prefix = "--file=", separate = FALSE) e6 <- InputParam(id = "array", type = "string[]", prefix = "-A", doc = "separated by comma") mulEcho <- cwlParam(baseCommand = "echo", id = "mulEcho", label = "Test parameter types", inputs = InputParamList(e1, e2, e3, e4, e5, e6), stdout = "output.txt") mulEcho inputList <- list(option = c("option1", "option2")) app <- cwlShiny(mulEcho, inputList, upload = TRUE) runApp(app) ``` こんなコードで下記のようなshinyアプリが立ち上がる。 ![](https://i.imgur.com/m4lXLXJ.png) これを使うと、パラメーターだけを変更してそのcwlをrunするだけの環境をユーザーに提供することが可能となるようだ。 ## 丹生 - 就職できました。 - 4月から遺伝研勤務になります。 - NII にも籍はある - ep3 のデバッグ - ep3 内で動かしている medal が何故か終了しない - ログを見ると、medal の処理自体が途中で止まっているように見える - medal 単体で同一コマンドを動かすと正しく終了してくれる - 何が原因か? - ビルドオプションの違い? - release, debug 両方で再現 - musl libc と static link してるのが原因? - これから検証 ## 角崎 - SapporoのGetting Startedのハンズオンをやった - https://github.com/ddbj/sapporo/blob/master/docs/GettingStarted.md - 初心者用のQiita記事を書きたい - Special thanks問題ないです! - protein系のツールのCWL化をちょっと書いた (石井記述:すえたけさんよりghcrがよい。[Packages · Bioinformation and DDBJ Center](https://github.com/orgs/ddbj/packages)。Github Actionを書くだけで良い。わからなかったら、docker channel で質問してもらえると、このあたりどこがよいかをみんなさぐっている) (丹生追記: ghcr.io の公式のドキュメントは[こちら](https://docs.github.com/en/packages/guides/container-guides-for-github-packages)。似たものに package registries がありますが、こちらは沼にハマることになるので触らないほうがいいです) ## 大田 - Sapporo: Getting started の dogfooding w/ たろうさん - docker-compose を -d しない理由, 別窓で開く必要性 - jq へのリンクとインストール方法を書いておくべき - post で投げるときに準備が必要なファイルとそうでないファイルがわかりにくい - `cat` の例がわかりにくい(これを実行するものだと思ってしまう) - フォルダ内の構造があるといいかも - `tags.json` はいらないんじゃね疑惑 - `uuid` を変更する必要ありです - `run_id` に対する説明がない - `POST to run a workflow` でわかるのか (もっといい見出しがあるかも) - RESTful API の routing についての簡単な説明があってもいいのか - 'workflow を register する' という概念について - 'preregistered' という概念について - GUI には複数の service を登録できるよという説明 - GUIのデモに使うワークフローのURLを文字列としてコピーできるようにしておく - `workflow_engine_parameters` と `workflow_params` がわかりにくすぎる問題 - 試しにやるときに "こういう名前をつけましょう" とするのがよい - singularity 対応? - vs Galaxy? - 「Galaxyの二番煎じじゃん」と言われたらどうディフェンスするのか - そもそも Galaxy がヘボいと思って作ったものではない、Galaxy は最高 - Sapporo の - [目的] 色々の言語で書かれたワークフローを再利用したい - 言語の実行方式等々を勉強したくない、ワークフロー指定してパラメータ入れたら走ってほしい - [解決策] 異なるワークフロー言語間の「実行形式」の標準化 - [実装] GA4GH WES API に準拠してランナーを縛らない実装を作った = Sapporo - めも:FSにバックアップを任せられるのが最高 - CWL成功事例 - 某研究プロジェクトで「あのパラメータで試してなかった」「このパラメータ全通りやる」がめちゃくちゃスムーズでした、自分の書いたスクリプトだったらコードまで読みに行かないとパラメータをどう変更すればいいかわからなかったりとかがよくある、スペックがある安心感…… - NCBI sratools 地獄の話 - https://github.com/ncbi/sra-tools/issues/291 - 混ぜるな危険 - `$HOME/.ncbi` に勝手にかつインタラクティブに config を作らせる NCBI sratools - 予め config を作っておく方法でインタラクティブ強制は回避可能だが `$HOME` 以下しか許さないという縛り - ホストのFSから切り離された環境で実行したい CWL - `$HOME` をホストの環境そのままで実行したい singularity - こういう問題が起きる https://github.com/pitagora-network/pitagora-cwl/issues/38#issuecomment-803378567 - ENTRYPOINT 使って $HOME 以下に config を作る workaround を実装することで docker ユーザ権限実行はいけるようになった - https://github.com/inutano/docker-sra-toolkit/blob/fcafeb0ef1e240062acf60e1ba6c57ebeeb6be86/sra-tools/Dockerfile#L7 # 末竹 - taro-san を読んで、sapporo を触ってもらった - WES を知らない人に説明することの大変さ - なんなら bioinfo がわからない人に説明することも多いため、いつも辛さを感じている - 書類仕事とか、細々とした何かしらをやっていた # 池田 - Sapporoのハンズオンがとても興味深いものだった - cwlについていろいろ話を聞くことができて良かった # 後藤 - Singularityについて調べたり - BioConductorのslackを見たり - 計算機システムの仕様書などの書類 # 前回のミートアップから今回のミートアップまでにSlackなどにあったリンクメモ - [GigaScienceさんはTwitterを使っています 「Great to see @NCBI using @CommonWL\. Transcriptome annotation in the cloud: complexity, best practices, and cost https://t\.co/j7Jef4uSJ0 https://t\.co/nkQTI0xYQm」 / Twitter](https://twitter.com/GigaScience/status/1367141591123640323) - [Transcriptome annotation in the cloud: complexity, best practices, and cost \| GigaScience \| Oxford Academic](https://academic.oup.com/gigascience/article/10/2/giaa163/6123656) - [S3のAPIと互換性を持ったオブジェクトストレージの運用についてお話します \- ペパボテックブログ](https://tech.pepabo.com/2021/03/04/about-bayt/) - [ブラウザ自動化ツール カオスマップ風 \- STAC2018 LT](https://www.slideshare.net/hnisiji/stac2018-lt-125349647) - [軽量Dockerイメージに安易にAlpineを使うのはやめたほうがいいという話 \- inductor's blog](https://blog.inductor.me/entry/alpine-not-recommended) - パフォーマンス関連の話もあり - [performance \- Why is the Alpine Docker image over 50% slower than the Ubuntu image? \- Super User](https://superuser.com/questions/1219609/why-is-the-alpine-docker-image-over-50-slower-than-the-ubuntu-image) - コレ自体は2018年のもののようですが、パフォーマンスに関連するポイントはでているもよう - [GoogleContainerTools/distroless: 🥑 Language focused docker images, minus the operating system\.](https://github.com/GoogleContainerTools/distroless) - Alpineとは違う、軽量ベースコンテナ - [slack workspace に emoji を一括で追加する \- bcdeeiloprru](https://scrapbox.io/bcdeeiloprru/slack_workspace_%E3%81%AB_emoji_%E3%82%92%E4%B8%80%E6%8B%AC%E3%81%A7%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B) - Slackに絵文字を一気に追加 - [仏OVHcloudのデータセンターで火災 4棟中1棟が全焼 \- ITmedia NEWS](https://www.itmedia.co.jp/news/articles/2103/11/news074.html) - データセンター火災で消失 - こういうこともあるので、「クラウドにバックアップ」をとるだけでなく、「クラウドのバックアップ」をとることを考えることも大切 - [There are no descriptions about optional types · Issue \#605 · common\-workflow\-language/common\-workflow\-language](https://github.com/common-workflow-language/common-workflow-language/issues/605#issuecomment-444425511) - [Common Workflow Language \(CWL\) Command Line Tool Description, v1\.0\.2](https://www.commonwl.org/v1.0/CommandLineTool.html#CWLType) - [Expressions in default field · Issue \#377 · common\-workflow\-language/common\-workflow\-language](https://github.com/common-workflow-language/common-workflow-language/issues/377) - [vm\.max\_map\_count in docker\-desktop distro for WSL2 · Issue \#5202 · docker/for\-win](https://github.com/docker/for-win/issues/5202) - [Dockerfileのベストプラクティス Top 20 \| Sysdig](https://sysdig.jp/blog/dockerfile-best-practices/) - 2021年らしい感じのアドバイスなどもあり、過去に似たようなものを読んだか方も新しい発見があるかと。 - .dockerignore - distroless - [仕事でPythonコンテナをデプロイする人向けのDockerfile \(2\): distroless編 \| フューチャー技術ブログ](https://future-architect.github.io/articles/20200514/) - コンパイルしたpipをbuilderから持ち込む - > COPY --from=builder /usr/local/lib/python3.7/site-packages /root/.local/lib/python3.7/site-packages - [\.dockerignore アンチパターン \- Qiita](https://qiita.com/munisystem/items/b0f08b28e8cc26132212) - [Linux Foundation、無料のソフトウェア署名サービス「sigstore」を発表 \| スラド オープンソース](https://opensource.srad.jp/story/21/03/11/165237/)

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully