コグノスケ


link 未来から過去へ表示(*)  link 過去から未来へ表示

link もっと前
2022年9月4日 >>> 2022年8月22日
link もっと後

2022年9月4日

Asciidocをさらに活用

目次: Linux

前回(2022年9月3日の日記参照)、Asciidocのプレビュー環境の設定方法を紹介(Chrome or VSCode)しました。今回はさらにAsciidocの便利機能とそのプレビューを使えるようにします。

ちなみにこのプレビュー機能はVSCode限定となります。Chromeでも使えると便利なんですけどね……。

asciidoctor-diagramで他のツールと連携

Asciidocにはasciidoctor-diagram extensionがあり、他のツール向けテキストを *.adoc内に記述すると、ツールと連携して自動的に画像を生成し、自動的に文書内に埋め込む機能があります。

例えばUMLをテキストで記述するPlatUMLと連携する場合は、

asciidoctor-diagramを使ってPlantUMLと連携

= Hello

== World

This is hello world.

[plantuml]
----
@startuml
A -> B : ccc
@enduml
----

このように [plantuml] の後にPlantUML向けのテキストを書きます。プレビューや他形式に変換した場合、PlantUMLのテキストの代わりにPlantUMLが出力した画像が表示されていることがわかると思います。


asciidoctor-diagramを使った出力例

各ツールを起動して画像に変換&リネームしてAsciidocに画像表示の記述を書く方法と比べれば、利便性は天と地の差でしょう。

Rubyのインストール

AsciidoctorやextensionはRubyで実装されているため、Rubyをインストールする必要があります。

Rubyの公式サイト(サイトへのリンク)を見る限り、Windows向けインストールにはRubyInstallerツール(サイトへのリンク)がおススメのようです。

Rubyの起動確認
c:\app>ruby --version

ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x64-mingw-ucrt]

RubyInstallerはPATHの設定も自動的に行います。インストール後、コマンドプロンプトを起動してrubyを起動できればインストール成功です。

asciidoctor-diagramのインストール

Rubyをインストールしたら、asciidoctor-diagramをインストールします。同時にasciidoctorもインストールされます。

asciidoctor-diagramのインストール
C:\app>gem install asciidoctor-diagram

Fetching asciidoctor-diagram-plantuml-1.2022.5.gem
Fetching asciidoctor-diagram-ditaamini-1.0.3.gem
Fetching asciidoctor-diagram-2.2.3.gem
Fetching asciidoctor-2.0.17.gem
Successfully installed asciidoctor-diagram-plantuml-1.2022.5
Successfully installed asciidoctor-diagram-ditaamini-1.0.3
Successfully installed asciidoctor-2.0.17
Successfully installed asciidoctor-diagram-2.2.3
Parsing documentation for asciidoctor-diagram-plantuml-1.2022.5
Installing ri documentation for asciidoctor-diagram-plantuml-1.2022.5
Parsing documentation for asciidoctor-diagram-ditaamini-1.0.3
Installing ri documentation for asciidoctor-diagram-ditaamini-1.0.3
Parsing documentation for asciidoctor-2.0.17
Installing ri documentation for asciidoctor-2.0.17
Parsing documentation for asciidoctor-diagram-2.2.3
Installing ri documentation for asciidoctor-diagram-2.2.3
Done installing documentation for asciidoctor-diagram-plantuml, asciidoctor-diagram-ditaamini, asciidoctor, asciidoctor-diagram after 4 seconds
4 gems installed

コマンドプロンプトからGemで一発インストール可能で便利です。asciidoctorはRubyのbinディレクトリの配下にスクリプトが配置されるようです。

asciidoctorの起動確認
c:\app>asciidoctor --version

Asciidoctor 2.0.17 [https://asciidoctor.org]
Runtime Environment (ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x64-mingw-ucrt]) (lc:Windows-31J fs:UTF-8 in:UTF-8 ex:UTF-8)

インストール後、コマンドプロンプトからasciidoctorを起動できればインストール成功です。

Javaのインストール

今回はPlantUMLとの連携を試しますので、PlantUMLの環境も整えます。PlantUMLの実行にはJavaが必要です。

PlantUMLを実行するだけならJRE(Java Runtime Environment)で十分ですが、もし今後Java言語での開発を行う予定があれば、OpenJDKをインストールした方が良いです。私はJavaも使うので Oracle OpenJDKのダウンロードサイト からOpenJDKをダウンロードしました。現状の最新版は18.0.2.1でアーカイブのファイル名はopenjdk-18.0.2.1_windows-x64_bin.zipです。

ダウンロードしたzipファイルを展開すると、jdk-18.0.2.1のような名前のディレクトリがあるので適当な場所に移動(= インストールに相当)します。この際にディレクトリ名をリネームしても良いです。

JDKを適当な場所に配置したらPATHを設定します。例えばJDKをc:\app\jdkにインストールしたとすると、


JDKのPATH設定

こんな感じでPATHに追加します。

Javaの起動確認
c:\app>java -version

openjdk version "18.0.2.1" 2022-08-18
OpenJDK Runtime Environment (build 18.0.2.1+1-1)
OpenJDK 64-Bit Server VM (build 18.0.2.1+1-1, mixed mode, sharing)

PATH追加後、コマンドプロンプトからjavaを起動できればインストール成功です。

VSCodeの設定

VSCode側のプレビュー設定も変更する必要があります。

まずはAsciiDocの設定ページを開いてasciidoctor_jsによるプレビュー生成を無効化します。asciidoctor_jsはasciidoctor-diagramに対応していないからです。プレビュー画面がエラー表示になるかもしれませんが、気にしないでください。


asciidoctor_jsによるプレビュー生成を無効化

次にasciidoctorがasciidoctor-diagramを使うように設定します。具体的には起動時のオプションに -r asciidoctor-diagramを追加します。


asciidoctor-diagramを追加

今までの設定がうまくいっているなら、プレビュー画面が更新されてPlantUMLのテキストの代わりにUMLの画像が表示されるはずです。

まとめ

手順として書いてみると思ったより長いですが、asciidoctor-diagramはなかなか便利です。描画ツールでUMLを書いて、画像にしてAsciidocに埋め込んで……みたいなウザい作業とはお別れです。

画像を使わずテキストで記述するので、差分取得も容易です。画像ファイルで往々にして発生する、原稿がどっか行って更新できなくなった、などのトラブルも防いでくれることでしょう。

編集者:すずき(2024/08/21 13:51)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2022年9月3日

MarkDownのその向こう

目次: Linux

簡単なドキュメントやメモはMarkDownで書くことが多いですが、気合を入れた文章にはやや不向きで、図表を入れ始めた辺りから表現力不足が辛くなってきます。

MarkDownで強行突破しても良いですが、より表現力がある主にドキュメント向けのマークアップテキスト……となると、太古から続くTeX、最近だとAsciiDoc、reST(reStructured Text)、Sphinx などが覇権を争っているようです。

私は良し悪しを語るほどマークアップテキストに詳しくないですし、特にAsciidocでなければダメってこともなくて、好きなものを使えば良いと思いますが、今回は訳あってAsciidocを使います。

Asciidocのプレビュー環境

マークアップテキストの読み書きは普段お使いのテキストエディタを使えば良いです。しかしプレビューはテキストエディタではできないことが多く、ちょっと困ります。Asciidocのプレビュー環境として、

  • Google ChromeのAsciidoctor.js Live Preview
  • VSCodeのAsciiDoc Extension

私はこの2つを使うことが多いです。下記に設定方法のメモを残しておきます。

Chrome + Asciidoctor.js Live Preview

ChromeウェブストアからAsciidoctorと検索するだけです。


Chrome AsciiDoctor.js Live Preview

あとはオプションの「オン」と「ファイルのURLへのアクセスを許可する」を有効にすると、


AsciiDoctor.jsのオプション

Chromeに *.adocのファイルをドラッグ&ドロップなどして開けば、プレビュー画面が出るはずです。内容を更新すると自動的にプレビューも更新されます。


ChromeのAsciidocプレビュー画面

これでテキストエディタで編集しつつ、Chromeからローカルディスク上のAsciidocがプレビューできます。簡単で良いですね。

VSCode + AsciiDoc拡張機能

VSCodeのExtensionsからasciidocと検索するだけです。


AsciiDoc Extension

フォルダ内の *.adocファイルを開いて、Ctrl+Shift+Vを押すとプレビュー画面が出るはずです。2分割して右側に出せるので便利ですね。


VSCodeのAsciidocプレビュー画面

これでVSCodeからローカルディスク上のAsciidocを編集しながらプレビューできます。これも簡単ですね。

編集者:すずき(2024/04/16 00:08)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2022年8月29日

マンガ紹介

目次: マンガ紹介

久しぶりにお気に入りのマンガ紹介シリーズ。短めの完結作品を2つ。

赤髪の女商人(全3巻、2020年〜2022年)
最近完結しました。転生ものではない、まっとう?な人生逆転劇です。紹介文には「理不尽はあっても救いはない」とあって不安を煽りますが、理性にあふれ話の通じる人ばかりで、イカレポンチや理不尽な行動をするヤカラは出てこないのでご安心ください(蛮族とすら商売を始めるのです)。読んでてイライラもなく、好きな作品です。あとは作品の尺の関係でしょうか……、展開が早くて一介の商人から王家お抱えまで超スピード出世します。爽快で面白いですね。
死んだ息子の遺品に息子の嫁が入っていた話(全2巻、2020年〜2021年)
最初のページを見たときは不謹慎系のギャグマンガかな?と思いましたが、全く違いました。主人公はアンドロイドですがSF感はあまりなく、人情、良い話系が広がる良い作品です。終わり方も良かったです。2巻で完結していてちょっと短いかな……もっと読みたいな〜とは思いました。
編集者:すずき(2024/08/21 16:22)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2022年8月22日

DDRのSPD情報からCAS Latencyを取得する

DDRメモリモジュールにはSPD (Serial Presence Detect) と呼ばれるEEPROMが搭載されており、メモリモジュールを動作させるためのタイミング設定情報が書き込まれています。PCのBIOSやUEFIは起動時にこの情報を読み出して、メモリモジュールが正常に動作する範囲内にタイミング設定します。

この情報はBIOSやUEFI専用のものではないですから、OS起動後WindowsやLinuxからも読み出すことができます。WindowsだとCPU-Zが有名どころだと思います。

Linuxの場合はdecode-dimmsツールが見やすいと思います。ツールの使い方は非常に簡単なのですが、起動するまでに躓く点があったので、メモがてら簡単に紹介します。

動かないとき

各PCの設定にもよりますが、decode-dimmsを起動したときにこんなメッセージが出る場合があります。

decode-dimmsのエラーメッセージ
# decode-dimms
No EEPROM found, the kernel probably does not support your hardware.

SPDがアプリから見えていないことが原因です。本当に未対応のハードウェアを使っている可能性もありますが、大抵はカーネルモジュールを追加でロードすれば使えるようになるはずです。例えば私のマシンはこんなHWとOSです。

  • CPU: AMD Ryzen 7 5700X
  • Chipset: AMD B550
  • OS: Debian Testing

下記のモジュールをロードする必要がありました。ee1004がない場合はeepromでも動作します(警告が出ますが)。

追加でロードするカーネルモジュール
modprobe i2c-piix4
modprobe i2c-dev
modprobe ee1004

おそらくi2c-piix4とi2c-devをロードした時点で、i2cdetectを実行するとI2Cデバイスが見えます。

i2cdetectの出力例
# i2cdetect -l
i2c-0   smbus           SMBus PIIX4 adapter port 0 at 0b00      SMBus adapter
i2c-1   smbus           SMBus PIIX4 adapter port 2 at 0b00      SMBus adapter
i2c-2   smbus           SMBus PIIX4 adapter port 1 at 0b20      SMBus adapter

もし何も表示されない場合はi2c-piix4ドライバが対応していないチップセットを使っている可能性が高いです。Linuxがマザーボードのチップセットに対応しているかを確認する必要があります。

以上のモジュールを全てロードした後に改めてdecode-dimmsを実行すると下記のような出力になると思います。

decode-dimmsの出力例
# decode-dimms version 4.3

Memory Serial Presence Detect Decoder
By Philip Edelbrock, Christian Zuckschwerdt, Burkart Lingner,
Jean Delvare, Trent Piepho and others


Decoding EEPROM: /sys/bus/i2c/drivers/eeprom/0-0052
Guessing DIMM is in                              bank 3
Kernel driver used                               eeprom

---=== SPD EEPROM Information ===---
EEPROM CRC of bytes 0-125                        OK (0x9BBF)
# of bytes written to SDRAM EEPROM               384
Total number of bytes in EEPROM                  512
Fundamental Memory type                          DDR4 SDRAM
SPD Revision                                     1.1
Module Type                                      UDIMM
EEPROM CRC of bytes 128-253                      OK (0xC6AB)

---=== Memory Characteristics ===---
Maximum module speed                             3200 MT/s (PC4-25600)
Size                                             32768 MB
Banks x Rows x Columns x Bits                    16 x 17 x 10 x 64
SDRAM Device Width                               8 bits
Ranks                                            2
Rank Mix                                         Symmetrical
Primary Bus Width                                64 bits
AA-RCD-RP-RAS (cycles)                           22-22-22-52
Supported CAS Latencies                          28T, 26T, 25T, 24T, 23T, 22T, 21T, 20T, 19T, 18T, 17T, 16T, 15T, 14T, 13T, 12T, 11T, 10T, 9T

---=== Timings at Standard Speeds ===---
AA-RCD-RP-RAS (cycles) as DDR4-3200              22-22-22-52
AA-RCD-RP-RAS (cycles) as DDR4-2933              21-21-21-47
AA-RCD-RP-RAS (cycles) as DDR4-2666              19-19-19-43
AA-RCD-RP-RAS (cycles) as DDR4-2400              17-17-17-39
AA-RCD-RP-RAS (cycles) as DDR4-2133              15-15-15-35
AA-RCD-RP-RAS (cycles) as DDR4-1866              13-13-13-30
AA-RCD-RP-RAS (cycles) as DDR4-1600              11-11-11-26

...

例えばAA-RCD-RP-RASを見ると22-22-22-52となっています。JEDEC規格(DDR3ならJESD79-3F, DDR4ならJESD79-4Dですが有料)のtAA, tRCD, tRP, tRASのことでしょう。

このうちtAAがREADコマンドによる列アドレス指定からRead Dataが出力されるまでの時間のことで、いわゆるCAS Latencyです。私のPCの場合はDDR4-3200で動作させているので22クロックとのこと。普通ですね。

わざわざPCのケースを開けなくてもメモリモジュールの情報が取得できるのでなかなか便利です。

編集者:すずき(2024/08/21 13:51)

コメント一覧

  • hdkさん(2022/08/24 00:03)
    こんな方法があったんですね! DRAMを何枚さしてあるかといった情報はいつもdmidecodeで見ているのですが、dmidecodeはおそらくファームウェアが取得した情報を見ているのでしょうね。
  • すずきさん(2022/08/24 01:19)
    だと思います。私も最初dmidecodeで見てたんですけど、CAS Latencyとかがわからなくて困った挙句に出会えたツールでした。
open/close この記事にコメントする



link もっと前
2022年9月4日 >>> 2022年8月22日
link もっと後

管理用メニュー

link 記事を新規作成

<2022>
<<<09>>>
----123
45678910
11121314151617
18192021222324
252627282930-

最近のコメント5件

  • link 24年10月1日
    すずきさん (10/06 03:41)
    「xrdpで十分動作しているので、Wayl...」
  • link 24年10月1日
    hdkさん (10/03 19:05)
    「GNOMEをお使いでしたら今はWayla...」
  • link 24年10月1日
    すずきさん (10/03 10:12)
    「私は逆にVNCサーバーに繋ぐ使い方をした...」
  • link 24年10月1日
    hdkさん (10/03 08:30)
    「おー、面白いですね。xrdpはすでに立ち...」
  • link 14年6月13日
    2048player...さん (09/26 01:04)
    「最後に、この式を出すのに紙4枚(A4)も...」

最近の記事20件

  • link 24年10月31日
    すずき (11/04 15:17)
    「[DENSOの最終勤務日] 最終勤務日でした、入門カードや会社のPCを返却してきました。在籍期間はNSITEXE(品川のオフィ...」
  • link 22年7月8日
    すずき (11/02 20:34)
    「[マンガ紹介 - まとめリンク] 目次: マンガ紹介一覧が欲しくなったので作りました。5作品乙女ゲームの破滅フラグしかない悪役...」
  • link 24年10月30日
    すずき (11/02 20:33)
    「[マンガ紹介] 目次: マンガ紹介お気に入りのマンガ紹介シリーズ。最近完結した短めの作品を紹介します。マイナススキル持ち四人が...」
  • link 19年3月28日
    すずき (11/02 13:27)
    「[マンガ紹介] 目次: マンガ紹介お気に入りのマンガ紹介シリーズ。こわもてかわもて(全2巻、2019年)(アマゾンへのリンク)...」
  • link 21年6月20日
    すずき (11/02 13:22)
    「[読書一生分が93万円?] 目次: マンガ紹介書籍通販のhontoがこんなキャンペーンをやっています。honto読書一生分プレ...」
  • link 17年10月27日
    すずき (11/02 13:11)
    「[異世界&最強系漫画の種類] 目次: マンガ紹介少し前にアニメ化されて盛り上がって(おそらく負の方向に…)いた「...」
  • link 24年10月28日
    すずき (10/30 23:49)
    「[Linuxからリモートデスクトップ] 目次: Linux開発用のLinuxマシンの画面を見るにはいろいろな手段がありますが、...」
  • link 23年4月10日
    すずき (10/30 23:46)
    「[Linux - まとめリンク] 目次: Linux関係の深いまとめリンク。目次: RISC-V目次: ROCK64/ROCK...」
  • link 24年10月24日
    すずき (10/25 02:35)
    「[ONKYOからM-AUDIOのUSB DACへ] 目次: PCかれこれ10年以上(2013年3月16日の日記参照)活躍してく...」
  • link 24年7月25日
    すずき (10/25 02:24)
    「[OpenSBIを調べる - デバイスツリーの扱い(別方法)] 目次: LinuxOpenSBIのブート部分を調べます。Ope...」
  • link 24年8月7日
    すずき (10/25 02:23)
    「[Debian独自の挙動をするQEMUとbinfmt_misc] 目次: Linux前回はbinfmt_miscの使い方や動作...」
  • link 24年9月9日
    すずき (10/25 02:22)
    「[GDBの便利コマンド] 目次: LinuxGDBは便利ですが、少し使わないでいるとあっという間にコマンドを忘れます。便利&使...」
  • link 24年10月20日
    すずき (10/25 02:22)
    「[ゲームを買ったら遊びましょう2] 目次: ゲーム前回の振り返り(2022年5月13日の日記参照)から2年半経ちました。所持し...」
  • link 24年8月2日
    すずき (10/25 02:21)
    「[Debian on RISC-V] 目次: LinuxOpenSBI + Linuxの環境まで動いたので、次はLinuxのデ...」
  • link 24年8月6日
    すずき (10/25 02:21)
    「[他アーキテクチャ向けバイナリを実行する仕組みbinfmt_misc] 目次: LinuxRISC-V 64bit用の実行ファ...」
  • link 24年8月27日
    すずき (10/25 02:20)
    「[Milk-V Jupiterが届いた] 目次: RISC-VMilk-V Jupiterが届きました。お値段が非常に安かった...」
  • link 24年9月13日
    すずき (10/25 02:20)
    「[OpenSBIを調べる - OpenSBIとRISC-V ISA extensions] 目次: Linux今回はOpenS...」
  • link 24年10月11日
    すずき (10/25 02:19)
    「[企業のドメイン] 今の企業は公式サイトを持っていなほうが珍しいと思いますが、ドメイン名の使い方は各社でバラバラで面白いです。...」
  • link 24年10月21日
    すずき (10/25 02:18)
    「[OpenPilotを調べる - プロセス間通信msgqの仕組み] 目次: OpenPilot最近はOSSの運転支援ソフトウェ...」
  • link 24年10月6日
    すずき (10/25 02:11)
    「[OpenPilotを調べる - ビルドと実行] 目次: OpenPilot最近はOSSの運転支援ソフトウェアOpenPilo...」
link もっとみる

こんてんつ

open/close wiki
open/close Linux JM
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報

合計:  counter total
本日:  counter today

link About www2.katsuster.net
RDFファイル RSS 1.0

最終更新: 11/04 15:17