[Unix] jq – コマンドラインJSONプロセッサ

JSON形式で出力されるAWS CLIの実行結果をシェルスクリプトで処理する必要あり。シェルから使えるJSON処理ツールを探したところjqが見つかった。jqは軽量かつ柔軟なJSONデータ処理ツールである。

インストール

Amazon Linux

Ubuntu

使い方

以下のようなJSONがあると仮定する。

Addresses配列の内容を取得する。

スクリプトから呼び出す場合。

参考サイト

GitHub – jqlang/jq: Command-line JSON processor
https://github.com/jqlang/jq

Linux – JSON データ読み込み! – mk-mode BLOG
https://www.mk-mode.com/blog/2018/09/26/linux-json-reading/
2018-09-26

JSON配列をシェルスクリプトで一覧に変換 – Qiita
https://qiita.com/r18j21/items/73a37f10877750defed7
2021-07-12

[ソフト] CINEBENCHを使ってCPU/GPUのベンチマークをする

参考記事に倣って、CINEBENCHを使用して、CPUとGPUのベンチマークを実行してみた。

CINEBENCHのダウンロード

まず、CINEBENCHをダウンロードする。

Cinebench Release 23 Installers – Maxon
https://www.maxon.net/ja/downloads/cinebench-2024-downloads

DOWNLOAD CINEBENCH 2024▼
CINEBENCH 2024 FOR WINDOWS X86_64

ダウンロードされたファイルは1.3GBもある。
Cinebench2024_win_x86_64.zip 1,373,360KB

ファイルを解凍すると2GBの容量があった。

CINEBENCHの実行

Cinebench.exeを実行する。

初回起動時にはEnd User License Agreement(利用許諾契約)に同意する必要あり。同意した後、メインウィンドウが表示される。

メインウィンドウで、”PERFORMANCE” タブの下にある “GPU [Start]” ボタンをクリックすると、GPUを使ったレンダリングテストが開始される。このテストは10分で終了。

GPUのテストが終了した後、せっかくなのでCPUのテストも実行してみた。”CPU(Multi Core)” と “CPU(Single Core)” のテストをそれぞれ選択して開始。

CPUテスト中はファンが回ってかなり煩い。ちなみに自分の自作PCは水冷のCPUファンを搭載している。

ベンチマーク結果

YOUR SYSTEM

  • Processor: 12th Gen Intel Core i7-12700K
  • Cores x GHz: 12 Cores, 20 Threads @ 3.61 GHz
  • GPU: NVIDIA GeForce RTX 2060 (CUDA, Driver Version:537.13)
  • Operating System: Windows 11 64 Bit, Professional Edition (build 22621)

PERFORMANCE

  • GPU 5236 pts
  • CPU (Multi Core) 1007 pts
  • CPU (Single Core) 104 pts, MP Ratio 9.70x

GPUがCPUの5倍速いという結果が出たようだ。

参考サイト

無料ベンチマークアプリ「Cinebench」がGPUの性能測定に対応したので使ってみた – GIGAZINE
https://gigazine.net/news/20230906-cinebench-2024-gpu-performance-benchmark/
2023年09月06日

[Python] Anaconda + VSCode 動作確認

Anacondaのローカル環境が正しく動作するか確認する。

Anaconda

  1. Anacondaを開いて、Anaconda Prompt (anaconda3) を起動する。
    (base) という表示があるのは、現在の仮想環境が “base” という名前で動作していることを示している。
  2. Anaconda Navigatorを開き、”Environment” を確認する。
    “base (root)” という環境が存在し、インストールされているPythonのバージョンは3.9.7であることがわかる。
  3. Anaconda Navigatorの機能を試してみる。
    [Create] をクリックすると、Pythonのバージョンを指定して新しい仮想環境を作成できる。再生ボタン [>] をクリックすると、選択した仮想環境を起動してターミナルを開くことができる。不要になった仮想環境は [Delete] をクリックして削除できる。

VSCode

エディタとしてVSCodeを利用しよう。

  • VSCodeのEXPLORERでファイルを作成し、Pythonのコードを書くことができる。
  • ファイルを右クリックして[Run Python File in Terminal] を選択すると、TERMINALが開いてPythonのコードが実行できる。

VSCodeから仮想環境のPythonを簡単に呼び出すことができるのは便利だ。

参考サイト

独習Python(山田 祥寛)|翔泳社の本
https://www.shoeisha.co.jp/book/detail/9784798163642

Python in Visual Studio Code
https://code.visualstudio.com/docs/languages/python

Visual Studio Codeの設定「虎の巻」:Python編:特集:Visual Studio Codeを使いこなそう!(1/3 ページ) – @IT
https://atmarkit.itmedia.co.jp/ait/articles/1711/24/news034.html
2018年04月24日

[Python] ローカルで学習環境を作る

Pythonを学ぶためにローカルのWindows上に環境を作りたい。

Python環境の選択肢

Pythonを使うための選択肢にはいくつかある。大まかな選択肢は、python.orgとAnacondaの2つ。

python.org

  • pythonコマンド: py
  • 仮想環境の作成: venv
  • 公式サイトからインストール
  • パッケージのダウンロード元: PyPI https://pypi.org/
  • パッケージのインストールはpip installコマンドを使う

Anaconda

  • pythonコマンド: python
  • 仮想環境の作成: conda create
  • データサイエンスや機械学習に関連する多くのパッケージが同梱されている
  • 最小構成のMinicondaも利用できる
  • パッケージのダウンロード元: Anaconda https://www.anaconda.com/download/
  • パッケージのインストールはconda installコマンドを使う

仮想環境の作成という項目があるが、なぜ仮想環境が必要かと言うと、以下の場合があるから:

  1. プロジェクトごとに異なるPythonのバージョンを使いたい場合
  2. プロジェクトごとに異なるモジュールやパッケージをインストールしたい場合
  3. ローカル環境をきれいに保ちたい場合

これら2つの選択肢のどちらを選ぶかだが、ネットを検索すると、Anacondaに対して否定的な意見が割と沢山見つかった。その理由としては、PyPIとAnacondaでパッケージの名前が異なること、pipとcondaを混ぜて使ったことで問題が起きてしまったこと、などに言及されていた。パッケージ自体の問題ではなく、ユーザの使い方の問題のようだ。

結局Anacondaをインストール

自分は最終的にAnacondaを選択した。手持ちのPythonの教本がAnacondaを使った演習を掲載していたからだ。Anacondaをインストールすると、以下のプログラムがWindowsに登録された。

  • Anaconda3 (64-bit)
  • Anaconda Navigator (anaconda3)
  • Anaconda Powershell Prompt (anaconda3)
  • Anaconda Prompt (anaconda3)
  • Jupyter Notebook (anaconda3)
  • Spyder (anaconda3)

Anaconda Navigatorを起動すると、以下のカテゴリが表示された

  • ホーム
  • 環境 – 仮想環境
    • ベース環境
  • 学習リソース
  • コミュニティ

この環境でPythonの勉強を進めていこう。

参考サイト

独習Python(山田 祥寛)|翔泳社の本
https://www.shoeisha.co.jp/book/detail/9784798163642

Pythonディストリビューション使い分けのポイントを考えてみよう(Windows編):Python環境構築入門 – @IT
https://atmarkit.itmedia.co.jp/ait/articles/2203/23/news027.html
2022年03月23日

【Mac大手術】ぐちゃぐちゃだったPythonの環境構築をやり直した話【さよならAnaconda】 – Qiita
https://qiita.com/mohki7/items/88e3f5f3428744ff3473
2023-04-30

Windows PCで機械学習環境を作る方法まとめ – Qiita
https://qiita.com/FukuharaYohei/items/8fb34107dda208f79bca
2019-09-23

TensorFlowをWindowsにインストール Python初心者でも簡単だった件 – Qiita
https://qiita.com/FukuharaYohei/items/d8f82c827e0bae70096a
2019-09-23

condaとpip:混ぜるな危険 – onoz000’s blog
https://onoz000.hatenablog.com/entry/2018/02/11/142347
2018-02-11

[Obsidian] 画像の表示サイズを指定する

Obsidianのメモに画像を埋め込む際、画像がオリジナルサイズで表示されると、画面が画像でいっぱいになってしまうことがある。しかし、画像の表示サイズを調整することは可能だ。

以下は公式サイトのヘルプから抜粋:

埋め込み形式には、[[image.png|100×100]] を利用してください。
アスペクト比に応じた画像スケールにしたい場合は、高さを省いて [[image.png|100]] としてください。

参考サイト

ファイルを埋め込む – Obsidian 日本語ヘルプ – Obsidian Publish
https://publish.obsidian.md/help-ja/%E3%82%AC%E3%82%A4%E3%83%89/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E5%9F%8B%E3%82%81%E8%BE%BC%E3%82%80

[Obsidian] プレーンテキストとしてコピーする

Obsidianのメモはマークダウン記法で書かれているので、そのままコピーすると、非マークダウン記法のアプリにペーストするには適さない形式となる。今回は、プレーンテキストとしてコピーするにはどうするか、という話。

Obsidianのノートには「editing」と「reading」の表示モードがある。プレーンテキストとしてコピーしたければ、表示モードを「reading」に変更した上で、メモの一部を選択してコピーすれば良い。

こうすることで、メモの内容がマークダウン記法ではなくプレーンテキストとしてコピーされ、MS-Word、メモ帳、エディタにそのまま貼り付けることが可能になる。

できることなら、表示モードを切り替えるひと手間も省略したいものだ。その方法も追々探していこう。

参考サイト

Obsidianのノートの内容をプレーンテキストで他のアプリにコピー&ペーストする方法
https://teineini.net/20220825-obsidian-copy/
2022年8月25日

[Obsidian] メモの1行目をファイル名に割り当てる

Evernoteで重宝していた機能の1つに、ノートの先頭行が自動的にノートのタイトルになる、というものがあった。タイトル欄と本文欄でカーソルを移動する必要が無いし、先にタイトルを決めずともメモを書き始めることができるなど、この機能は地味かもしれないが、メモの作成頻度が高い自分にとっては欠かせない機能だった。

同じことをObsidianでやりたくてプラグインを探してみたが、完全に実現できるものは見つからず。ネットの記事を読み漁っていると、Templaterプラグインを使って類似機能を実現した事例を発見。それに倣って自分も実装してみた。手順は以下の通り。

  1. Templaterプラグインをインストールする。
  2. Template/Naming.mdというファイルを作成する。
    正規表現部分はくどい記述になっているが、後から除外文字を追加していったせいでこうなった。気に入らなければ整理すればいいだろう。
  3. Templaterプラグインの設定で、2で作成したファイルをTemplate Hotkeysに登録し、Templaterから実行できるようにする。
  4. ホットキーを追加する。たとえば以下のように:
    Templater: Insert Template/Naming.md: Ctrl+Shift+S

新しいノートを作成したら、デフォルトで「Untitled」というファイル名になるのは既定動作通り。メモを書いた後にCtrl+Shift+Sを押すと、このテンプレートが機能して、メモの1行目をファイル名としてノートがリネームされるという仕組み。

参考サイト

GitHub – SilentVoid13/Templater: A template plugin for obsidian
https://github.com/SilentVoid13/Templater

Obsidian TemplaterでJavascriptを走らせる – Jazzと読書の日々
https://wineroses.hatenablog.com/entry/2023/02/02/214022
2023年2月2日

Obsidianの一行目をファイル名にするアクション – Jazzと読書の日々
https://wineroses.hatenablog.com/entry/2023/02/15/125336
2023年2月15日

[Obsidian] 現在日時を自動入力する

Evernoteで重宝していた機能の1つに、カーソル位置への現在日時の挿入機能がある。作業ログを書く時など、メモに日付を付記する必要がある場合には必須だ。自分の指が Ctrl+; というショートカットキーを覚えてしまい、Microsoft Wordなどの別なアプリを使っているときでも無意識に押してしまうほど。これと同じことをObsidianでもやりたい。

調べてみると、日時を挿入するためのプラグインがあった。設定手順は以下の通り。

  1. Natural Lauguage Datesというプラグインをインストールする。
  2. プラグインの設定画面で、次の機能にホットキー(ショートカットキー)を設定する。
    Natural Language Dates: Insert the current date and time: Ctrl + ;

これでEvernoteと同じく、Ctrl+;の押下でカーソル位置に現在日時が挿入できるようになった。また1つ、自分にとってのObsidianの使い勝手が上がったな。

参考サイト

GitHub – argenos/nldates-obsidian: Work with dates in natural language in Obsidian
https://github.com/argenos/nldates-obsidian

Natural Language Dates in Obsidian – Danny Hatcher
https://dannyhatcher.com/natural-language-dates-in-obsidian/
2023-02-05

[Obsidian] Evernoteライクなビューを実現する

Evernoteから移行して最初の違和感は、ファイルエクスローラーの操作だった。

自分のEvernoteの使い方は、画面を3つのペインに分割し、左からノートブック一覧、ノートリスト、ノートの順に表示することで、ノートをカテゴリ分けして管理できるようにしていた。このUIのおかげで、たとえ1つのノートブックに何百という大量のノートが含まれていても、ストレスを感じずに目的のノートを見つけ出すことができた。

しかしObsidianは、フォルダとノートをまとめてファイルエクスプローラ(ツリー表示)で管理するので、ツリー中のフォルダを開くと、その下に数百のノートがぶら下がることになる。結果として、目的のノートを見つけるためには延々と画面スクロールが必要になる。これは非常に使い勝手が悪い操作である。

ObsidianをEvernoteの代替として移行したユーザは少なくないに違いない。そう思って「Obsidian Evernote file tree」といったキーワードでネット検索して方策を探すと、以下のプラグインが見つかった。まさにObsidianでEvernoteライクなUIを実現するためのもの。

GitHub – ozntel/file-tree-alternative:
This Obsidian Plugin allows users to have a different file explorer experience.

https://github.com/ozntel/file-tree-alternative

このプラグインのおかげで操作性は大幅に向上した。さらには、できれば以下のような機能が追加されることを期待したい。

  • ドラッグ&ドロップによるフォルダやファイルの移動
  • フォルダ内でのコンテンツを絞った検索(現在はファイル名の検索のみ可能)

[Obsidian] Evernoteからの移行ツール

以下がEvernoteに蓄積した2万件のメモをObsidianに移行するのに使ったツール。

GitHub – akosbalasko/yarle: Yarle – The ultimate converter of Evernote notes to Markdown
https://github.com/akosbalasko/yarle

このツールは本当に優れている。

  • 1つのメモが1つのファイル(.md)に出力される
  • メモ内の外部リンクも維持できる
  • メモ内のテキスト修飾(太字やハイライトなど)も保持できる
  • メモ内の埋め込み画像も保持できる(_resourcesディレクトリに保存)

自分はEvernoteでノートブックを階層的に管理していたので、移行後も同じ階層が維持されるよう、まずハードディスクにEvernoteを模したディレクトリ階層を作成。そして、階層ごとにEvernoteのノートブックをエクスポートした後に、このツールを使ってマークダウン形式へ変換した。

マークダウン化する際の懸案点として、Evernoteで管理されていたノートの作成日/更新日をマークダウン形式でどのように引き継ぐかという点があった。このツールは、Evernoteのノートの作成日/更新日を読み取って、生成するマークダウン形式の冒頭にタグを追加してくれる機能がある。しかし、自分はEvernoteのノートのタイトルに作成日付を「2023-01-01 メモ」といったように付加するルールで運用していたので、この機能を使うには及ばなかった。

実際に変換してみるといろいろ気に要らない点もあったが、とにかく移行を完了してObsidianの使用を開始した。この先きっと、気に入らない点や馴染めない点がいろいろ出てくるだろう。しかし、根気強く改善して手に馴染むメモツールにしていきたい。