Firefoxのアドレス欄でhttp://が省略されないようにする

Firefoxではデフォルトではアドレス欄のhttp://が省略される。 表示させるには、about:configbrowser.urlbar.trimURLstrueからfalseに 変更すれば良い。 Firefoxの再起動は不要なようだ。

Symantec Endpoint ProtectionとGoogle Chrome

いつものようにMicrosoft Windows 10と古いバージョンのSymantec Endpoint Protectionの ある環境で仕事をせざるを得ない。 このSymantec Endpoint Protectionのバージョンは14.0.xxxである。 すると、例えばGoogle Chrome 80のRenderer Code Integrity機能と競合して、 Google Chromeが一切のウェブページと設定画面のページの描画に失敗する。

回避するには、 Endpoint Protection を使用していると Google Chrome バージョン 78.0.x で "このウェブページの表示中に問題が発生しました" エラーが発生するの ウェブページに記載があるように、レジストリーを編集するか、 --disable-features=RendererCodeIntegritychrome.exe の引数として渡して起動させるしかない。 つまり、 Google Chromeの起動アイコンの「リンク先」を以下のようにすれば良い訳である。

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-features=RendererCodeIntegrity
この問題は、Symantec Endpoint Protection 14.2以降では発生しないらしい。 いつになったら最新のSymantec Endpoint Protectionを使うようになるのか分からないので、 対処法を書いておく。

VLC 3.0.8のウェブUIをNetBSDで使う

NetBSDでは、pkgsrc/multimedia/vlc-3.0.8nb4以降であればウェブUIを使うことができる。 ウェブUIというのは、起動しているVLCの操作UIのことで、ウェブUI内に画像を再生するようなものではないらしい。 起動は以下のようにする。

$ vlc --extraintf=http --http-host 0.0.0.0 --http-port 8080 --http-password 'password'
これをhttp://127.0.0.1:8080/で開いてみると、Basic認証のユーザーIDとパスワードの入力ウィンドウが表示される。 このとき、ユーザーIDは入力しない。パスは引数に設定した値(上例だとpassword)である。

英語のpredeterminer

predeterminerというのは、allとかonceとかが例としてあって、 all this timeと言う時のallや、half an hourと言う際のhalf、 once a dayと言う際のonceなどと言えば分かるように思う。 だが、predeterminerの日本語での定訳というのはないのかもしれない。 ちゃんと文法書を見たのではなく、ウェブ検索しただけだが、 以下のような訳語が見られた。

  • 前限定辞
  • 前決定詞
  • 前置決定詞
  • 前置限定詞

pkgsrcのmake patchでfuzzを許容する方法

pkgsrcのパッケージをアップデートしようとすると、そういう人はPKG_DEVELOPER=YESを設定しているはずなので、 make patchでfuzzが発生してpatchesディレクトリー内の パッチファイルの適用がエラーになることがある。 これはpkgsrcを利用する場合には望ましいのだが、 アップデート作業をするという視点で考えると、fuzzは 気にしないで、できる範囲でパッチファイルを適用してもらいたい場合もある。 この場合には、PATCH_FUZZ_FACTOR=-F2make コマンドに与えれば良い。具体的には以下のようである。

$ make PATCH_FUZZ_FACTOR=-F2 patch

EmEditorの実装を選択する

普段Windowsで扱うファイルのサイズが数GBと大きいので、開くのにEmEditorを使っている。 「テキストの編集」にこだわりが凝縮!定番エディタ「EmEditor」はなぜ他のエディタと違うのか? によると、EmEditorのバイナリーは、SSE2(ee128.exe)や AVX-256(ee256.exe)、 AVX-512(ee512.exe)とそれぞれ対応したものに分かれているらしい。 私の通常利用しているマシンは、AVX-512には対応していないが、AVX-256には 対応しているはずである。

EmEditor.exeを実行すると、実行環境のCPUがサポートする範囲内で、 最も性能が高いものが選択されるようだ。 どれが利用されているかの確認は、taskmgr.exeのプロセスタブで、 EmEditorの行を右クリックしてプロパティーを選択して表示されるファイル名で分かる。 私のマシンでは予想通りee256.exeが実行されていた。

ケーブルの脱着できるUSB 3.0ハブ

ケーブルを外せないUSBハブは、どうやってもケーブルが断線してしまって長く使い続けられなかった。 J5 create JUH340は、 ケーブルが外せるので長持ちしている。セルフパワーUSBハブであるのも良い。 日本で売られているものは、3Aと4AのACアダプターの両方の場合がある。

pkgsrc/print/mupdfでPDFファイルで使用されているフォントを一覧する

これまでPopplerのpdffontsでPDFファイルが使用しているフォントを一覧していたのだが、 pkgsrc/print/mupdfを使うようになったのでmupdfでフォント一覧を見たいと思っていた。 mutool info -Fを使えば良かった。

$ mutool info -F target.pdf
target.pdf:

PDF-1.4
Info object (4075 0 R):
<</CreationDate(D:20090605190151-05'00')/Author(Gregory Brown)/Creator(XSL Formatter V4.3 R1 \(4,3,2008,0424\) for Linux)/Producer(Antenna House PDF Output Library 2.6.0 \(Linux\))/ModDate(D:20090609120839-04'00')/Title(Ruby Best Practices)/Trapped/False>>
Pages: 330

Retrieving info from pages 1-330...
Fonts (9):
        3       (5 0 R):        Type1 'QXKOAR+MyriadPro-SemiboldCond' (1988 0 R)
        5       (9 0 R):        Type0 'QXKOAR+Birka-SemiBoldItalic' Identity-H (1997 0 R)
        5       (9 0 R):        Type0 'QXKOAR+Birka-Italic' Identity-H (1998 0 R)
        6       (27 0 R):       Type0 'QXKOAR+Birka' Identity-H (2003 0 R)
        7       (32 0 R):       Type0 'QXKOAR+ArialUnicodeMS' Identity-H (2006 0 R)
        15      (298 0 R):      Type1 'QXKOAR+TheSansMonoCd-W5Regular' (2012 0 R)
        15      (298 0 R):      Type1 'QXKOAR+TheSansMonoCd-W7Bold' (2014 0 R)
        15      (298 0 R):      Type1 'QXKOAR+TheSansMonoCd-W5RegularItalic' (2013 0 R)
        329     (1979 0 R):     Type0 'QXKOAR+Birka-Bold' Identity-H (2017 0 R)

VLC for iPadOS/iOS/FireでSMBで共有されたビデオファイルを再生する

ビデオファイルがいくつかあるのだが、VLC for iPadOS/iOS/Fireでローカルネットワーク経由で再生する際にどのような方法で ファイルを共有すれば良いのか迷っていたが、SambaでSMBで共有すれば途中からも再生もできた。 Windowsからファイルを格納するのにも便利なので、SMBで良いようだ。

VLC for iPadOSでネットワークのサーバーに接続の保存された設定を削除する方法

私がiPadOS/iOSに慣れていないだけだと思うのだが、VLC for iPadOSで「ネットワーク」メニュー内の「サーバーに接続」の保存された接続設定を削除する方法に迷ってしまった。 左にスワイプすれば赤い削除のボタンが表示されるので、それをタップすれば良い。

Microsoft Visual Studio community 2019でのデバイスドライバーの開発

Microsoft Visual Studio Community 2019は、個人ではどのようなアプリケーションを作成するのにも利用できるようだ。

マイクロソフト ソフトウェア ライセンス条項 MICROSOFT VISUAL STUDIO COMMUNITY 2019より:
a. 個人ライセンス。お客様は、販売またはその他の目的でお客様独自のアプリケーションを開発している個人である場合、本ソフトウェアを使用して、当該アプリケーションを開発およびテストすることができます。
組織では、利用できる用途は限定されているようだが、その利用できる用途にはデバイスドライバーの開発が含まれている。
マイクロソフト ソフトウェア ライセンス条項 MICROSOFT VISUAL STUDIO COMMUNITY 2019より:
お客様のユーザーは、人数に制限なく、本ソフトウェアを使用して、Windows オペレーティング システムのデバイス ドライバーを開発およびテストすることができます。
ここで、個人はWindowsオペレーティングシステムのデバイスドライバーを開発およびテストすることができるかというのが気になった。 以下の文章を読むと、「アプリケーション」には「Windowsオペレーティングシステムのデバイスドライバー」が含まれているように思える。
マイクロソフト ソフトウェア ライセンス条項 MICROSOFT VISUAL STUDIO COMMUNITY 2019より:
お客様がエンタープライズである場合、お客様の従業員および契約社員は本ソフトウェアを使用して、お客様のアプリケーションを開発またはテストすることはできません。ただし、上記で許可されている (i) オープンソース、(ii) Visual Studio の拡張機能、(iii) Windows オペレーティング システムのデバイス ドライバー、(iv) SQL Server の開発、および (v) 教育目的の場合を除きます

PEMファイルの中身をダンプする

PEM形式のファイルの中身を確認するには、以下のようにすれば良い。

$ openssl x509 -in isrgrootx1.pem.txt -noout -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            82:10:cf:b0:d2:40:e3:59:44:63:e0:bb:63:82:8b:00
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = US, O = Internet Security Research Group, CN = ISRG Root X1
        Validity
            Not Before: Jun  4 11:04:38 2015 GMT
            Not After : Jun  4 11:04:38 2035 GMT
        Subject: C = US, O = Internet Security Research Group, CN = ISRG Root X1
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (4096 bit)
                Modulus:
                    00:ad:e8:24:73:f4:14:37:f3:9b:9e:2b:57:28:1c:
                    87:be:dc:b7:df:38:90:8c:6e:3c:e6:57:a0:78:f7:
                    75:c2:a2:fe:f5:6a:6e:f6:00:4f:28:db:de:68:86:
                    6c:44:93:b6:b1:63:fd:14:12:6b:bf:1f:d2:ea:31:
(snip)

Windows 10 1909で、ローカルのDNSキャッシュを消去する

Windows 10 1909で、ローカルのDNSキャッシュを消去するには、コマンドプロンプトで以下のように実行すれば良い。

> ipconfig /flushdns

Windows 10 1909で、IPv6が有効な時に、IPv4のDNSを優先する

自宅のネットワークでは、IPv4でしかDNSサーバーを運用していない。これは、ISC DHCPDとBINDを組み合わせて 動的にホスト名を割り当てるようにしている。 IPv6は、IPoEな接続をそのまま使っているので、IPoE接続側は自宅外のDNSサーバーを配って来る。 こういう環境では、Windows 10 1909は、IPv6の自宅外のDNSサーバーを優先して使ってしまうため、 自宅内の動的に割り当てたホスト名で他のマシンにアクセスできない。 IPv6のDNSサーバーに以下のように手動登録すれば、IPv4のDNSサーバーを優先できる。

ffff:192.168.0.1

The pkgsrc guideとEPUB

この記事は、NetBSD Advent Calendar 2019の22日目の記事です。

はじめに

ちょっと目を離した隙に、Jupyter NotebookがNetBSD/amd64-currentで動かなくなってしまっていたので、 The pkgsrc guideのEPUB版を作る話を書きたいと思います。

以下で作成したEPUBファイルの動作は、iPad Pro上のApple BooksアプリのEPUBビューアー機能で確認しました。

EPUB版The pkgsrc guideを作成する前提条件の確認

2019年1月4日12:15 (UTC)くらい以降のpkgsrcツリーのpkgsrc/doc/guideディレクトリーで作業する必要があります。 distinfoファイルに、pkgsrc-guide/htdocs-share-20200104.tar.gzファイルが登録されていれば大丈夫です。

The pkgsrc guideの生成

The pkgsrc guidleは、以下の形式で作成することができます。 括弧内は、OUTPUTS変数に設定することで生成対象にするときの名前です。

  • 1つのHTMLファイル (html)
  • 章毎に分かれたHTMLファイル (html-split)
  • PDFファイル (pdf)
  • プレインテキストファイル (ascii)
  • EPUBファイル (epub)

標準では、EPUBファイルは生成されません。明示的にEPUBファイルを生成するようにOUTPUTS変数に指定する必要があります。 つまり以下のように実行します。

$ cd /usr/pkgsrc/doc/guide
$ make OUTPUTS=epub
こうすると、${WRKSRC}/pkgsrc.epubとしてEPUB版のThe pkgsrc guideが生成されます。

今後について

The NetBSD guideも少しの修正でEPUB版を生成できるはずですので、 試してみたいと思います。

NetBSDでゲームパッドを使ってシューティングゲームをしてみる

この記事は、NetBSD Advent Calendar 2019の21日目の記事です。

はじめに

NEC PC-9801全盛の時代に、Bio_100%のMarkadiaという縦スクロールシューティングゲームをしたことがありました。 それ以来、ゲームというものには手を出していなかったのですが、久し振りにやってみたいと思いました。 ですが、手元のラップトップは、ゲームでキーボードを酷使して問題ないようには見えません。 ここでゲーミングキーボードを買って来るという選択肢もありましたが、USB接続のゲームパッドを使ってみることにしました。 USB接続のLogicool製のGamepad F310というのを選びました。

ゲームを選ぶ

pkgsrc/games以下には、450以上のゲームが登録されていますが、縦スクロールシューティングゲームに近いものは多くはないようです。 以下が候補になりました。

  • KoboDeluxe
  • naev
  • astromenace
  • chromium-bsu
  • taisei
  • xkobo

今回は、chromium-bsuをやってみることにします。 taiseiも試したのですが、NetBSDでゲームパッドを使うには何か修正が必要なようですので、今回はパスします。

chromium-bsuをインストールする

chromium-bsuのインストールは以下のようにします。

# cd /usr/pkgsrc/games/chromium-bsu
# make install
ここで、chromium-bsuはバージョン0.9.16.1nb1以降を使うようにします。 このバージョンから、SDL2経由でゲームパッドを利用できます。

ゲームパッドを接続する

Logicool Gamepad F310には2つのモードがあります。XモードとDモードです。 背面のスライドスイッチで切り替えが可能です。 Xモードでは、USB Product ID = 0xc21d、Dモードでは、USB Product ID = 0xc216と、モード毎に別々のIDが割り振られています、 スライドスイッチを切り替えると、一度抜き差ししたのと同じような挙動をします。

(Dモードで接続)
uhidev0 at uhub2 port 1 configuration 1 interface 0
uhidev0: Logicool (0x46d) Logicool Dual Action (0xc216), rev 2.00/4.14, addr 6, iclass 3/0
uhid0 at uhidev0: input=8, output=7, feature=0
(Xモードへ切り替え)
uhid0: detached
uhidev0: detached
uhidev0: at uhub2 port 1 (addr 6) disconnected
uhidev0 at uhub2 port 1 configuration 1 interface 0
uhidev0: Logicool (0x46d) Gamepad F310 (0xc21d), rev 2.00/40.14, addr 7, iclass 255/93
uhid0 at uhidev0: input=20, output=6, feature=0

XモードかDモードか

Dモードは旧来のモード、Xモードはより新しいモードであるようです。 SDL2のBSD用のjoystickサポートは、Dモードを前提としているようです。 Xモードのサポートは、Linuxのevdevを前提としているようにも見えます。 実際、XモードのF310では、キャリブレーションをしても使えるようになりませんでした。 NetBSDのUSB HID関連のカーネルソースコードを見ると、XBox用のゲームパッドのサポートコードがあります。 同様にカーネルでのサポートが必要なのかもしれません。

chromium-bsuで遊んでみる

Gamepad F310をUSB接続してDモードに切り替えてから、chromium-bsdを起動させてみると、 正しいキーバインディングで利用できているようです。 しかし、初めてゲームパッドというものを使ったので、良い成績を残すには相当の慣れが必要そうです。

chfs(4)とnandemulator(4)

この記事は、NetBSD Advent Calendar 2019の19日目の記事です。

はじめに

CHFSを使ってみたいと思っていましたが、 サポートするハードウェアが分からないし、おそらく手元に存在しないので試せないと考えていました。 CHFS (CHFS flash file system)は、フラッシュメモリー用のファイルシステムです。

しかし、NANDフラッシュメモリーデバイスについては、nandemulator(4)というエミュレートする仮想的なデバイスが用意されていて、 RAMから割り当てて揮発性のNANDフラッシュメモリーデバイスを作成することが可能でした。 これにより、NetBSD/amd64でもCHFSを試してみることができそうです。

nandemulator(4)のソースコードであるsys/dev/nand/nandemulator.cを読むと、エミュレートされるNANDフラッシュメモリーの サイズは32MBでハードコードされてしまっていますが、CHFSを試してみるという視点では、32MBでも良さそうです。

CHFSを使う準備

カーネル設定ファイルに以下のように追記して、カーネルを作り直しても良さそうですが、最も簡単なのはロード可能なカーネルモジュールを使う方法のように思います。
file-system     CHFS
pseudo-device   nandemulator

以下のようにして、カーネルモジュールを読み込みます。

# modload nandemulator
# modload chfs
これらを実行すると、カーネルブートメッセージに以下のように出力されます。
nandemulator0: NAND emulator
nand0 at nandemulator0: ONFI NAND Flash
nand0: vendor: NETBSD, model: NANDEMULATOR
nand0: manufacturer id: 0x00 (Unknown), device id: 0x00
nand0: page size: 2048 bytes, spare size: 64 bytes, block size: 131072 bytes
nand0: LUN size: 256 blocks, LUNs: 1, total storage size: 32 MB
nand0: column cycles: 2, row cycles: 3, width: x16
nand0: scanning for bad blocks
flash0 at nand0: partition, size 32 MB, offset 0
flash0: erase size 128 KB, page size 2048 bytes, write size 2048 bytes
仮想的なNANDフラッシュメモリーデバイスは、/dev/flash0に割り当てられたようです。

CHFSを使ってみる

mount_chfs(8)のマニュアルページによると、CHFSなフラッシュメモリーデバイスは、 初回マウント時に自動的にnewfs(8)相当のことが実施されるようです。

The file system will be created during the first mount.
ですので、newfs_chfsコマンドはありません。

以下のようにして、/mntにマウントしてみます。

# mount_chfs /dev/flash0 /mnt
状況を確認してみます。
$ mount
/dev/flash0 on /mnt type chfs (local)

$ df -h
/dev/flash0               31M         0B        30M   0% /mnt
どうやら普通に使えそうです。

CHFSは、LinuxやeCosで利用できるJFFS2を意識して作られたようなので、機会があったら比較してみたいと思います。

Firefoxのアドレス欄で<code>http://</code>が省略されないようにする

Firefoxではデフォルトではアドレス欄の http:// が省略される。 表示させるには、 about:config で browser.urlbar.trimURLs を true から false に 変更すれば良い。 Firefoxの再起動は不要なようだ。