かすみん日記

暇なときに何か喋ります

MacのVSCode v1.63で日本語入力がおかしい

MacVSCode v1.63で日本語入力の変換がおかしくなった。

解決法

VSCodeのバージョンをひとつ前に戻す。

下記サイトから、バージョン1.62のものをDLする。

code.visualstudio.com

症状・試行錯誤

  • VSCode上のみで発症
  • アプリ、OSの再起動でも改善なし
  • macOSを最新版にアプデしても改善無し
  • VSCode(最新版v1.63)の再インストールでも改善なし

最近VSCodeをアプデした気がするので、多分それが原因。

結局、上で書いた通りv16.2のものをインストールして起動すると、そのバグは見受けられなくなった。

環境

参考までに

  • 日付:2021年12月21日
  • macOS Monterey v12.1
  • VSCode
    • v1.63で発症
    • v1.62ではバグ無し

以上。

【ポケモン】効率良く6Vを作る両親の掛け合わせ方法【ダイパリメイク】

大抵は5Vで十分なのですが、両刀のポケモンを作ろうと思うと6Vにしたくなります。

以下の話は、剣盾でもダイパリメイクでも最近のものなら仕様は同じかと思います。

仕様を勘違いしているところがあったら教えてください。

基本となる仕様の説明

預かり屋にポケモンを2匹預けて、タマゴを孵化させる方法で固体値を厳選します。

預けるポケモンのうち少なくとも1匹に「あかいいと」を持たせることで、6 x 2 = 12個ある両親の固体値のうちから5つが子供に遺伝します。

つまり、遺伝プロセスとしては、以下のように考えるとわかりやすいです。

  1. まず、6つあるステータス(HP、攻撃、etc)から5つが選ばれる
  2. 次に、これらのステータスそれぞれに対し、等しい確率で母親または父親の固体値が選ばれる
  3. 遺伝しなかった残りの1つのステータスについては、ランダムに固体値が決まる(0 ~ 31の32通り)

という感じなので、6Vの子供を作るには少なくとも遺伝しなかったステータスで1 / 32の確率を突破する必要がありますが、厳選効率は預ける両親の固体値に依存します。

以下で効率の良い両親の組み合わせを考えます。

5V x 5Vで6Vをつくる

ここでは最終プロセスである 5V x 5Vの両親から6Vの子供を作る手順のみ述べます。

5Vまでは頑張って用意してください。

5V同士を掛け合わせる場合、次の2つのパターンがあるかと思います。

  1. 両親のVでない箇所が同じである場合
  2. 両親のVでない箇所が異なる場合

例えば、両親がどちらもHP以外がVであるのは初めの方の場合であり、母親がHP以外Vで父親が攻撃以外Vである場合は後の方の場合に該当します。

結果から言えば、後の方の「固体値がVでないステータスの箇所が異なる両親」を掛け合わせた方が、6Vの子供ができる確率が高くなります。

以下では、それぞれの場合において6Vの子供が産まれる確率を計算します。

両親のVでない箇所が同じである場合

両親がどちらもHP以外のステータスがVであるような状況を想像してください。

ステータス 母親 父親
HP - -
攻撃 V V
防御 V V
特攻 V V
特防 V V
素早 V V

まず、遺伝する5つのステータスのうちHPが選ばれない場合を考えると、その確率は1 / 6である。

HP以外は両親ともに全てVであるから、子供のこれらのステータスは確実にVとなる。

HPは遺伝しなかったので、子供のHPは1 / 32の確率でVとなる。

よって、この場合に子供が6Vである確率は(1 / 6) x (1 / 32)である。

次に、遺伝する5つのステータスのうちHPが選ばれる場合を考えると、VでないHPの固体値が必ず遺伝してしまうので、この場合は6Vになりえない。

したがって、両親のVでない箇所が同じである場合に、子供が6Vとなる確率は(1 / 6) x (1 / 32)である。

両親のVでない箇所が異なる場合

今度は、母親はHP以外がVで、父親は攻撃以外がVであるような状況を想像してください。

ステータス 母親 父親
HP - V
攻撃 V -
防御 V V
特攻 V V
特防 V V
素早 V V

まず、遺伝する5つのステータスのうち、HPは含まれているが攻撃は含まれていない場合を考えると、その確率は1 / 6である。

遺伝する5つのステータスのうち、HP以外は両親ともにVであるから、子供のこれらのステータス(防御・特攻・特防・素早)は確実にVとなる。

遺伝するHPでは、父親の固体値が選ばれれば、子供のHPはVとなり、その確率は1 / 2である。

攻撃は遺伝しなかったので、子供の攻撃は1 / 32の確率でVとなる。

この議論は、遺伝しないステータスが攻撃ではなくHPとしても同様である。

よって、遺伝する5つのステータスのうち、HPまたは攻撃のいずれかが含まれていない場合において、子供が6Vとなる確率は(1 / 6) x (1 / 2) x (1 / 32) x 2である。

次に、遺伝する5つのステータスのうち、HPも攻撃も含まれている場合を考えると、その確率は4 / 6である。

遺伝するHPと攻撃以外の3つのステータスは、両親ともにVであるから、子供のこれらの3つのステータスは確実にVとなる。

遺伝するHPは父親のものが、攻撃は母親のものが遺伝すれば、子供のHPと攻撃はともにVとなり、その確率は(1 / 2) x (1 / 2)である。

遺伝しなかったステータスでは、子供のそれがVとなる確率は1 / 32である。

よって、遺伝する5つのステータスのうち、HPも攻撃も含まれている場合において、子供が6Vとなる確率は(4 / 6) x (1 / 2) x (1 / 2) x (1 / 32)である。

したがって、以上の議論から、両親のVでない箇所が異なる場合に、子供が6Vとなる確率は

(1 / 6) x (1 / 2) x (1 / 32) x 2 + (4 / 6) x (1 / 2) x (1 / 2) x (1 / 32)
= (1 / 6) x (1 / 32) + (1 / 6) x (1 / 32)
= (1 / 3) x (1 / 32)

である。

まとめ

5Vの親を掛け合わせてたときに、6Vの子供が産まれる確率は

  • 両親のVでない箇所が同じである場合には(1 / 6) x (1 / 32)
  • 両親のVでない箇所が異なる場合には(1 / 3) x (1 / 32)

となることがわかった。

後の方が、初めの方よりも確率が2倍大きい。

したがって、6Vを作るときは「Vでない箇所が異なる両親」を掛け合わせた方が良い。

以上!

macOS Monteteyでテキスト認識を使う

iOSでも追加されたテキスト認識の機能だが、当然Macでも使える。

しかし、現状では日本語非対応とのことで、Monteteyにアプデしてもデフォルトではオフになっている。

有効にするには、「システム環境設定」の「言語と地域」にある「テキスト認識表示」にチェックを入れ、対応アプリを(既に起動していれば)再起動する。

f:id:geniusium:20211214164245p:plain

そうすれば、例えば写真アプリでテキスト部分をドラッグすればテキストを選択できるようになる。

しかし、冒頭でも言ったようにやはり日本語には非対応らしい。

例えば以下の画像からテキストを抽出すると、、、

f:id:geniusium:20211214164439j:plain

こんな感じになる:

20歲末满の者の喫煙讨、
法律飞禁 机 寸。
喫煙仕、樣久本疾病亿龙
石危險性老高为、古本大
の健康寿命在短( 百书
仁付依存性龙布 东寸。

漢字がいけるなら平仮名ぐらいさっさと対応してほしいが、文法やら文脈の情報も利用して精度を上げてるんだろうか。

とまあこんなところです。以上!

参考

applech2.com

ファイル分割でdcumute.styのinputコマンドを使うときの目次出力について【LaTeX】

dcumute.styで再定義された\inputコマンドを使うときの目次出力コマンド\tableofcontentsについての備忘録です。

以下のサンプルのtexファイルはuplatex + dvipdfmxでタイプセットすることを想定しています。

普通のinputコマンド

LaTeXで規模の大きい文書を作るとき、セクションごとにファイルを分割したくなります。

標準搭載されている\inputコマンドを使えば、別のtexファイルの中身を呼び出すことができます。

例えば親ファイル(parent.tex)として以下のような内容のtexファイルを作ります:

%% parent.tex
\documentclass[uplatex]{jsarticle}
\begin{document}
親ファイル
\input{child.tex}
\end{document}

同じディレクトリに以下の内容の子ファイル(child.tex)を作ります:

%% child.tex
\section{子ファイル}
ほげほげ

そうすると、親ファイルparent.texをタイプセットすれば\input{...}と書いた部分が子ファイルchild.texの内容で置き換わります。

しかしこれでは、子ファイル単体でのタイプセットはできず、子ファイルの更新を確認するには毎回親ファイルのタイプセットを行わないといけず、面倒です。

子ファイル中に\documentclassコマンドやdocument環境があると、それがそのまま親ファイル中に挿入されるのでエラーが出ます。

そこでdocumute.styで再定義された\inputコマンドを使います。

docmute.styのinputコマンド

docmute.styを使うと、親ファイルから\inputコマンドで子ファイルを呼び出すとき、子ファイルの\begin{document}から\end{document}の中身だけを抽出するようになります。

つまり、次のように書き直すことができます。

親ファイル:

%% parent.tex
\documentclass[uplatex]{jsarticle}
\usepackage{docmute} % これを使う
\begin{document}
親ファイル
\input{child.tex}
\end{document}

子ファイル:

%% child.tex
\documentclass[uplatex]{jsarticle}
\begin{document}
\section{子ファイル}
ほげほげ
\end{document}

子ファイルを上のように書けば、texファイルとして完結しているので、これ単体でもタイプセットできます。

子ファイルの目次

目次は\tableofcontentsコマンドで出力できます。

\inputコマンドで挿入した子ファイルの内容の見出しもちゃんと目次に出力してくれます。

しかし、\tableofcontentsが使えるのはtex文書全体を通じて一度のみです。

つまり、親ファイル冒頭で\tableofcontentsを使っていて、単体でタイプセット可能になった子ファイル中でも\tableofcontentsを使っていた場合、親ファイルをタイプセットした際にエラーとなります。

せっかくファイル分割したので、子ファイルの内容分だけの目次も作業中は確認できるようにしたいですが、親ファイルのタイプセット時に毎回それをコメントアウトするのは面倒です。

ということで、二度目以降に現れる\tableofcontentsコマンドは無視するように再定義します。

親ファイルのプリアンブルに以下のコマンドを書きます:

%% 最初に現れた\tableofcontents以外は無視
\let\oldTableofcontents\tableofcontents
\renewcommand\tableofcontents{
  \oldTableofcontents
  \renewcommand\tableofcontents\relax
}

これで、子ファイルの中でも通しでタイプセットするときを気にせずに\tableofcontentsコマンドが使えます。

以上です。

Inkscapeのインストール【Mac, Homebrew】

InkscapeはHomebrewでインストールできます。

% brew search inkscape
==> Casks
inkscape

InkscapeはFormulaeではなくCasksなので、一応--caskオプションをつけてインストールします:

% brew install --cask inkscape
Updating Homebrew...
==> Downloading https://media.inkscape.org/dl/resources/file/Inkscape-1.1.1.dmg
######################################################################## 100.0%
==> Installing Cask inkscape
==> Moving App 'Inkscape.app' to '/Applications/Inkscape.app'
==> Linking Binary 'inkscape.wrapper.sh' to '/usr/local/bin/inkscape'
🍺  inkscape was successfully installed!

ちゃんとインストールできました;

% which inkscape
/usr/local/bin/inkscape

% inkscape --version
Inkscape 1.1.1 (c3084ef, 2021-09-22)

ここでインストールしたInkscapeは、コマンドラインinkscapeと打つか、/Applications/ディレクトリにあるInkscape.appを開くことで起動できます。

もちろんランチャー画面にもアプリアイコンが表示されます。

以上です。

【brew】Warning: Error searching on GitHub: GitHub API Error: Bad credentials

個人的な備忘録です。

検索エンジンから飛んできた人は参考にしないでください。

やったこと

brew searchコマンドを打ったら以下のような警告が出た:

Warning: Error searching on GitHub: GitHub API Error: Bad credentials
The GitHub credentials in the macOS keychain may be invalid.
Clear them with:
  printf "protocol=https\nhost=github.com\n" | git credential-osxkeychain erase
Create a GitHub personal access token:
    https://github.com/settings/tokens/new?scopes=gist,public_repo,workflow&description=Homebrew
  echo 'export HOMEBREW_GITHUB_API_TOKEN=your_token_here' >> ~/.zshrc

またGitHubトークン絡みですかね。

ほんまありがた迷惑ですわGitHubさん。

ほんで、思考停止で下記のコマンド打ちました:

printf "protocol=https\nhost=github.com\n" | git credential-osxkeychain erase

そいだら警告消えましたわ。意味わからんけど。

調べずに思考停止でコマンド打っちゃったので、一応その備忘録。

暇な人がいましたら、ワイは一体何の警告に対して、何を行ったのか教えてください^^

^^

PDFのパスワードを削除する【QPDF】

ロックがかけられたPDFファイルは、開くたびに毎回パスワードを打たなくてはいけません。

(キーチェーンにパスワード覚えさせれば、次回からパスワード確認なしで開けますが)

面倒なのでロックを解除します。

QPDFというコマンドラインプログラムで、ファイルのパスワードを削除できます。

qpdfのインストール

Homebrewからインストールできます:

brew install qpdf

公式サイトからもDLできます。

バージョン確認:

% qpdf --version
qpdf version 10.3.2
Run qpdf --copyright to see copyright and license information.

パスワードの削除

以下のようにしてPDFファイルのパスワードを削除します:

qpdf --password=パスワード --decrypt 入力ファイル 出力ファイル

以上です。簡単でした。

参考

texwiki.texjp.org

qiita.com