目次: Linux
前回(2022年9月3日の日記参照)、Asciidocのプレビュー環境の設定方法を紹介(Chrome or VSCode)しました。今回はさらにAsciidocの便利機能とそのプレビューを使えるようにします。
ちなみにこのプレビュー機能はVSCode限定となります。Chromeでも使えると便利なんですけどね……。
Asciidocにはasciidoctor-diagram extensionがあり、他のツール向けテキストを *.adoc内に記述すると、ツールと連携して自動的に画像を生成し、自動的に文書内に埋め込む機能があります。
例えばUMLをテキストで記述するPlatUMLと連携する場合は、
= Hello
== World
This is hello world.
[plantuml]
----
@startuml
A -> B : ccc
@enduml
----
このように [plantuml] の後にPlantUML向けのテキストを書きます。プレビューや他形式に変換した場合、PlantUMLのテキストの代わりにPlantUMLが出力した画像が表示されていることがわかると思います。
各ツールを起動して画像に変換&リネームしてAsciidocに画像表示の記述を書く方法と比べれば、利便性は天と地の差でしょう。
AsciidoctorやextensionはRubyで実装されているため、Rubyをインストールする必要があります。
Rubyの公式サイト(サイトへのリンク)を見る限り、Windows向けインストールにはRubyInstallerツール(サイトへのリンク)がおススメのようです。
c:\app>ruby --version ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x64-mingw-ucrt]
RubyInstallerはPATHの設定も自動的に行います。インストール後、コマンドプロンプトを起動してrubyを起動できればインストール成功です。
Rubyをインストールしたら、asciidoctor-diagramをインストールします。同時にasciidoctorもインストールされます。
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ディレクトリの配下にスクリプトが配置されるようです。
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を起動できればインストール成功です。
今回は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にインストールしたとすると、
こんな感じでPATHに追加します。
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側のプレビュー設定も変更する必要があります。
まずはAsciiDocの設定ページを開いてasciidoctor_jsによるプレビュー生成を無効化します。asciidoctor_jsはasciidoctor-diagramに対応していないからです。プレビュー画面がエラー表示になるかもしれませんが、気にしないでください。
次にasciidoctorがasciidoctor-diagramを使うように設定します。具体的には起動時のオプションに -r asciidoctor-diagramを追加します。
今までの設定がうまくいっているなら、プレビュー画面が更新されてPlantUMLのテキストの代わりにUMLの画像が表示されるはずです。
手順として書いてみると思ったより長いですが、asciidoctor-diagramはなかなか便利です。描画ツールでUMLを書いて、画像にしてAsciidocに埋め込んで……みたいなウザい作業とはお別れです。
画像を使わずテキストで記述するので、差分取得も容易です。画像ファイルで往々にして発生する、原稿がどっか行って更新できなくなった、などのトラブルも防いでくれることでしょう。
目次: Linux
簡単なドキュメントやメモはMarkDownで書くことが多いですが、気合を入れた文章にはやや不向きで、図表を入れ始めた辺りから表現力不足が辛くなってきます。
MarkDownで強行突破しても良いですが、より表現力がある主にドキュメント向けのマークアップテキスト……となると、太古から続くTeX、最近だとAsciiDoc、reST(reStructured Text)、Sphinx などが覇権を争っているようです。
私は良し悪しを語るほどマークアップテキストに詳しくないですし、特にAsciidocでなければダメってこともなくて、好きなものを使えば良いと思いますが、今回は訳あってAsciidocを使います。
マークアップテキストの読み書きは普段お使いのテキストエディタを使えば良いです。しかしプレビューはテキストエディタではできないことが多く、ちょっと困ります。Asciidocのプレビュー環境として、
私はこの2つを使うことが多いです。下記に設定方法のメモを残しておきます。
ChromeウェブストアからAsciidoctorと検索するだけです。
Chrome AsciiDoctor.js Live Preview
あとはオプションの「オン」と「ファイルのURLへのアクセスを許可する」を有効にすると、
Chromeに *.adocのファイルをドラッグ&ドロップなどして開けば、プレビュー画面が出るはずです。内容を更新すると自動的にプレビューも更新されます。
これでテキストエディタで編集しつつ、Chromeからローカルディスク上のAsciidocがプレビューできます。簡単で良いですね。
VSCodeのExtensionsからasciidocと検索するだけです。
フォルダ内の *.adocファイルを開いて、Ctrl+Shift+Vを押すとプレビュー画面が出るはずです。2分割して右側に出せるので便利ですね。
これでVSCodeからローカルディスク上のAsciidocを編集しながらプレビューできます。これも簡単ですね。
目次: マンガ紹介
久しぶりにお気に入りのマンガ紹介シリーズ。短めの完結作品を2つ。
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 No EEPROM found, the kernel probably does not support your hardware.
SPDがアプリから見えていないことが原因です。本当に未対応のハードウェアを使っている可能性もありますが、大抵はカーネルモジュールを追加でロードすれば使えるようになるはずです。例えば私のマシンはこんなHWとOSです。
下記のモジュールをロードする必要がありました。ee1004がない場合はeepromでも動作します(警告が出ますが)。
modprobe i2c-piix4 modprobe i2c-dev modprobe ee1004
おそらくi2c-piix4とi2c-devをロードした時点で、i2cdetectを実行するとI2Cデバイスが見えます。
# 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 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のケースを開けなくてもメモリモジュールの情報が取得できるのでなかなか便利です。
< | 2022 | > | ||||
<< | < | 09 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | - | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | - |
合計:
本日: