d-42a を SIMロック 解除して楽天モバイル(MNO)で使う


今回は、 docomo の dtab Compact d-42A を、 SIMロック 解除して、 楽天モバイル(MNO) で使うまでの手順を紹介する。
eSIM対応製品へ機種変更をしたので初期設定をしたい | お客様サポート | 楽天モバイル の手順では上手くいかないので、そこらへんから。

はじめに

8インチ程度の小型 SIMフリー Android タブレット。
これを利用しているユーザーたちは、ある共通の悩みを抱えている。
それは、 まともな後継機が存在しないとだ。

HUAWEI が制裁されている今、 8インチ前後の Android タブレットのセルラーモデルに、 ミドルレンジ以上のスペックを持ったものは、 皆無と言って良い。
私も長いこと、本当に長いこと ASUS ZenPad 3 8.0 SIMフリー (Z581KL) を使っていたのだが、いい加減 Android 7 のままなのがキツいし、 電源回りも動作が怪しくなってきた。

そんななか、 昨冬に彗星の如く現れたのが Lenovo の dtab Compact d-42A。
OS は Android 10, SOC は Snapdragon 665, RAM は 4GB と、決して高性能では無いが、一般的な用途には十分なもの。
当然 docomo 専売で、しかも eSIM 専用と大変尖ったモデルだが、 中の構造を見ると nanoSIM も意識したものになっていて、 Lenovo から SIMフリー版 が出るのも時間の問題では!? と期待してしまうには十分だった。 1

しかし 2021年9月現在、 それが出ていないのは周知の通り。

そしてとうとう、我慢に耐えかねて中古の d-42A を買ってしまった。
楽天回線で使うために

楽天回線で使う場合の注意点

続きを読む

次の○曜日 や 来週の○曜日 を取得する JavaScript

JavaScript の標準組込みオブジェクトは、日時関連の処理が非常に貧弱だ。

次の水曜日は何月何日? とか、 来週の月曜日は何月何日? といった値を取得しようと思ったら、タイムゾーン周りの処理と合わさって、思いのほか面倒だった。

とりあえず、動くコードができたので、記事にして紹介する。

続きを読む

puppeteer でファイルをダウンロードするときに、任意のパスと名前を指定して保存する

Puppeteer を使ってファイルをダウンロードする際に、任意のパスと名前で保存したい。

残念ながら、 現時点ではシンプルな方法は提供されていないようだ。
以下の Issue で何年にもわたって議論されているものの、 「コレ!」 という解決方法は無さそう。
Question: How do I get puppeteer to download a file? · Issue #299 · puppeteer/puppeteer

しかし、 この Issue の #issuecomment-668087154 のコメントで、 なかなか泥臭い方法で実現するヒントが書かれていた。
これを参考にして、任意のパスと名前でダウンロードファイルを保存してみよう。

実行方法

あらかじめ、 puppeteer の npm パッケージをローカルにインストールしておく。

npm install puppeteer --save

その状態で、後述の .js ファイルを nodejs で実行すれば OK だ。

node puppeteer-download-with-specify-name.js

コードと解説

続きを読む

Vagrant で Temporary failure resolving となる問題の解決 – イントラネット DNS 編

Vagrant で Ubuntu の VM を立ち上げたとき、 apt 等を行おうとすると、以下のようなエラーに遭遇した。

client: Err:1 http://security.ubuntu.com/ubuntu focal-updates/main amd64 libjpeg-turbo8 amd64 2.0.3-0ubuntu1.20.04.1
client:   Temporary failure resolving 'proxy.local.example'

上記のエラーの内容はプロキシに接続できないというものだが、 問題のポイントはプロキシかどうかはあまり関係が無く、 名前解決に失敗しているという部分だ。
こういうのはだいたい systemd-resolved のスタブリゾルバ周りの問題だと相場が決まっている。

…ということで、順番に確認しながら問題を解決していこう。

なお、 使った box は generic/ubuntu2004 で、 VirtualBox で VM をホストしている。

スタブリゾルバの確認

まず、 resolv.conf を確認してみる。

続きを読む

超簡単に大量の nanaco ギフトを自動登録するツール GUI 版

突然だが、自動車税や固定資産税などの税金を、どのように支払っているだろうか?
支払う額も大きくなりがちなので、なるべくお得に支払いたいのではないだろうか。

そこでオススメなのが nanaco ギフト だ。

(以下略)

この記事は、以前紹介した以下のツールの GUI 版を紹介するものだ。
nanaco ギフトのなんたるかは、以下のページをご参照をば。

端的に言うと、 税金や公共料金をお得に支払える nanaco ギフトだが、 1,000 円単位で提供されることが多く、 大きな額の支払いだとチャージ作業が非常に面倒になるので、 それを自動入力してしまおうという話だ。

前回は、 PowerShell 版を作成して個人的にはこれで完全に事足りていたのだけれど、 ブログの記事にして公開したら、どうやら敷居が高かったらしく 「素人には難しい」とか「Excel で公開して」とかメールやらコメントやらを、いくつもいただいた。
確かに、昨年私が PowerShell 版の記事を出した頃、同じような時期に同じ目的の記事がいろんなブログで書かれるようになった気がするが、どれもこれも、いわゆる「プログラマ」なら簡単に使えるものの、それ以外の人には厳しそうなものばかりだった。

そこで、 専門的な知識がなくても使える、 みんなに易しい GUI (グラフィカルユーザーインターフェイス) で動くツールとして作り直してみたのが、今回のお話。

当初は、 PowerShell版 を流用して簡単に作れるかな~ とかもくろんでいたのだけれど、色々うまくいかず、 結局イチから作り直している。

booth で販売中

続きを読む

CertReq で作成した CSR の文字化けを回避する

Windows Server の certreq.exe を使って、 https 等を目的に サーバー証明書署名要求 (CSR) を作成した際に、 その CSR や署名後の CER で、 サブジェクト字が文字化けしてしまう場合がある。

 

この問題は、 certreq.exe にて、テキストファイル (.inf ファイル) から CSR を作成した場合に発生する。

そしてこれは、 .inf ファイルを BOM付き UTF-16 LE で保存すれば解決する。
(BOM付き/BOMなし の UTF-8 には対応していない)


Windows のメモ帳であれば、 文字コードを Unicode に設定すれば、 OK だ。

対処法は単純だが、原因が少しややこしかったので、少し深堀りしてみる。

CSR が文字化けする要因

続きを読む

.NET Interactive が vscode で使えるようになった

以前、.NET Interactive の C# REPL を Jupyter で などで紹介していた、 .NET Interactive が、 Visual Studio Code (VS Code) の Stable 版で使えるようになっていた。

まぁ、昨年 9月 の .NET Interactive Preview 3: VS Code Insiders and .NET Polyglot Notebooks | .NET Blog の時点で、 VS Code の Insiders ビルドでは使えていたのだが、 最近晴れて Stable 版の VS Code でも動作するようになったようだ。
……まぁ、 .NET Interactive Notebooks 拡張機能自体は、まだ Preview リリースではあるのだけれど。

Android版 Firefox (Fenix) で、任意のアドオンを使えるようにする

この記事では、 Android 版 Firefox Nightly に対して、 TampermonkeyGreasemonkey などの人気のアドオン(拡張機能)を動作させる手順を紹介する。

Firefox とアドオン

Mozilla Firefox (以下 Firefox) といえば、アドオン(拡張機能)と共にあったと言っても過言ではないだろう。

デスクトップ版 Firefox で、処理速度を大幅に向上させた Firefox Quantum の登場とともに、 それまでに使えていたブラウザのアドオンの多くが使えなくなった。
そのために、ただでさえ下降気味だったシェアの低下が更に加速した (筆者調べ) のも、記憶に新しい。

そして 2020年8月、 動作がかなり重かった 旧来 の Firefox for Android (~ v68.11 コードネームFennec) を、 これまた処理速度を大幅に向上させた GeckoView 版 Firefox for Mobile (v79~ コードネーム Fenix) に更新した際にも、 Mozilla は歴史を繰り返した。
それまで使えていた多くのアドオンが Firefox Fenix では使用できなくなり、 Mozilla が認めたごくごく一握りのアドオンしかインストールできなくなってしまったのだ。

誤解して欲しくはないが、 Chrome 等と比べても UI が洗練されていて 動作が軽快な Firefox Fenix を、私はとても気に入っている。
それでもやはり、どうしてもアドオンを使いたいときがあるのだ。

どうやら、 Firefox Fenix に関しては、 技術的に旧来のアドオンが全く動かなくなった訳ではなく、 ポリシー上制限しているだけのようだ。何故そうしているのかわからないけど。

そのためか、 Firefox の実験的なビルドを提供する開発チャンネルである Firefox Nightly に対して、 任意のアドオンをインストールする手段が用意されている。

先に断っておくが、 Nightly 版を常用することはオススメしない
不安定だし、予期しない問題が発生する確率が高いからだ。

それでも、 Stable チャンネルの Firefox Fenix にはインストールできないけど、どうしても動かしてみたい拡張機能がある場合は、有力な選択肢となるだろう。

Firefox に任意のアドオンをインストールする手順

続きを読む

PowerShell でインストール済プログラム一覧を取得する

PowerShell を Windows の管理ツールとしてみたときに、割と昔から意味がわからないと思っていることが 1点 ある。
Windows のインストール済みプログラム一覧を取得するコマンドがないことだ。

もう少し具体的に言うと、appwiz.cpl で開ける、コントロールパネルのプログラムと機能の一覧や、 設定の「アプリと機能」の一覧を取得するコマンドレットがない。
コマンドレットがないだけじゃなく、コードを書いて取得する確立して手段すら存在しないのだ。

とりあえず、それに近い情報がとれる代替方法として、レジストリのアンインストーラー一覧を取得する方法が知られている。
ただ、ググってもあまり PowerShell らしい綺麗 (?) なコードで書かれているサンプルが少なかったので、ワンライナーで書いてみる。

Get-ChildItem -LiteralPath (('HKLM:', 'HKCU:' | %{ "${_}\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" }) + 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall') | Get-ItemProperty -Name DisplayName, DisplayVersion, Publisher, InstallDate -ErrorAction Ignore;

これで取得した内容を | Sort-Object DisplayName, DisplayVersion| Select-Object DisplayName, DisplayVersion などにパイプしてから使うと良いだろう。


ちなみに WMI の Win32_Product クラスを使って取得する方法 (Get-CimInstance -ClassName Win32_Product) は、

  • MSI でインストールしたアプリしか取得できない
  • コンピューターはMSIがインストールされているすべてのアプリケーションを再検証するので、負荷がかかるし遅い

と言うことから使うべきではないとされている。

VPN に繋ぐと WSL2 や Hyper-V VM でネットワークに繋がらなくなる問題を解消する

OpenVPN や Cisco AnyConnect, GlobalProtect 等といった VPN に接続した際、 Hyper-V 仮想マシン内からや、 WSL2 のディストリビューション内、 Windows Sandbox 内、 WSL2 ベースの Docker コンテナ内 等々、 Hyper-V 系の技術を使った仮想環境から、 PC 外のネットワークにアクセスしようとすると、 以下のようなエラーが発生して失敗する。

$ # curl 利用時の例
curl: (6) Could not resolve host: example.com
curl: (5) Could not resolve proxy: proxy.example.com

$ # apt で更新しようとした場合の例
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/focal/InRelease  Temporary failure resolving 'archive.ubuntu.com'
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/focal/InRelease  Temporary failure resolving 'proxy.example.com'

エラーの内容からわかるとおり、アクセス先やプロキシーのドメイン名を DNS で解決できなくなっている。

このような問題が発生することは以前から知っていたのだが、このご時世で VPN 使うことが増えてきて、いい加減鬱陶しくなってきたので、なんとかしようと思う。

解決方法

とりあえず、まずは解決方法から。

続きを読む