WPP
Wine を OS が英語モードのまま日本語表示する

internet には Wine に fakecjk とか ipafont とかのフォントを入れて日本語化するという tips を見つけることができます。

しかし、OS が英語モードで動作しているときはそれだけでは、日本語を表示できない。

というのも Linux コンソール(用語が間違っているかもしれない)の設定が日本語になっていないので環境変数正しくを設定する必要があるようです。

$ LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja" wine ./WINAPP.EXE

; あるいは
$ export LANG=ja_JP.UTF-8
$ export LANGUAGE="ja_JP:ja" 
$ wine ./WINAPP.EXE

毎回入力するのは面倒なので 環境変数を設定した上で wine を起動するスクリプトを書くのがいいだろう。

Synology NAS の 5001 ポートを何とかする

Synology の NAS では Web アプリが 5001 で待受けをしています。制限のゆるいネット環境では恐らくなんの問題もなくアクセスできるでしょう。

しかし会社等 PROXY 経由でインターネットに抜ける環境などの制限がきついネットワークでは 5001 ポートにアクセスできないことがあります。逆向きにいうと 443 ポートでないと自由に外に抜けられないことが多いということです。

そんなときに NAS のリバースプロキシを使って解決することができます。

手順

  1. コントロールパネルを開きます。
  2. ログインポータルから Advanced を開きます。
  3. Reverse Proxy をクリックします。
  4. Create ブタンをクリックします。
  5. イメージのように
    Source側
    Protocol: HTTPS
    Hostname: 新サブドメイン.自分のDDNS (例 dsm.ZZXXYY.myde.me 適宜アジャストしてください。)
    Port: 443
    Destination側
    Protocol: HTTPS
    Hostname: localhost
    Port: 5001
    と設定します。
  6. ブラウザで https://dsm.ZZXXYY.myds.me にアクセスして DSM の Web が表示するはずです。

解説

リバースプロキシの設定では外側のプロトコル、ホスト名、ポートの組をどこか他に流すという設定をします。

ところで NSA ホスト名は Synology の DDNS で振り出されるサブドメインを利用していることが多いと思います。自分の環境では、myds.me のサブドメインが振り出されています。ここではダミーサンプルとして ZZXXYY という名前を使用します。実際にはご自分で決めたサブドメインになっているはずです。

ここがポイントなのですが、Synology のDDNS は自分で決めた ZZXXYY の更にしたのレベルのサブドメインを作ってもちゃんと NASに向けて名前解決してくれます。DDNS の内部では * で全部のサブドメインを受けてくれているようです。

要するに、dsm.ZZXXYY.myds.me としても自分の NAS に向けてアクセスしにくるということです。

この tips がインターネットを検索しても見当たらないので記事にしました。せっかく NAS 使用していてもリバースプロキシ使ったらいいのにと思う記事が多く、少しでも知識が広まってくれれば嬉しいです。

Linux Mint を英語モードのままで Mozc を設定する

インターネットで割とよくあるネタではあるのですが、ちょっとハマったので記事にします。
結果からいうと一旦、日本語表示にして設定するというものです。

ハマった状況というのは、Linux Mint を英語モードでインストールしました。

その状態で参考リンクの内容を実行しても日本語を入力できませんでした。

apt でインストールされているモジュール群を確認するも正しい状態のようです。

ふと、日本語表示にしてからやってみたらどうなる? と思いたいたち実行するとあっさりあっさり日本語入力がアクティブになりました。その状態のまま英語表示に変更すると日本語入力ができるようになりました。

という駄話でした。

参考

超簡単!Linux Mint Google日本語入力mozcのインストール方法 | ビバ!Linux

Fcitx – ArchWiki

Linux Mint のスワップファイルを大きくする

今朝、Linux のノートPCをレジュームで起動するとどうやらスワップファイルがパンパンになっているようでほとんど操作ができない状態に陥った。free -h すると 2GB のスワップファイルを使い切っていてどうにも処理が進まない様子だ。

なので、スワップファイルを大きくすることにした。

; もともとあるスワップファイルが swapfile という名前だったので適当に変えた
$ sudo fallocate -l 4G /swapspace

$ sudo chmod 600 /swapspace
$ sudo mkswap /swapspace
$ sudo swapon /swapspace

$ sudo swapoff -v /swapfile

このままだと再起動するとスワップを認識しなくなるので、/etc/fstab に追記する

/swapspace  none  swap  defaults  0  0

これでしばらく様子をみることにしよう。

参考

Linux Mint 21にスワップスペースを追加する方法

スワップ – ArchWiki

CakePHP で .env を使う方法

CakePHP では .env に設定値を逃して env() で読み込むことができると Cookbook: 構成設定 – 5.x に説明されている。だがしかし、説明のとおり.env.example を.env にコピーしても反映されない。(Cookbook は、.env.default となっているが実際のファイルは、.env.examlpe となっている。んー。)

検索すると Qiita にそれっぽいのがあったのでやってみるとビンゴだった。

bootstrap.php の中で .env をロードする処理がコメントアウトされているためだった。

/*
 * See https://github.com/josegonzalez/php-dotenv for API details.
 *
 * Uncomment block of code below if you want to use `.env` file during development.
 * You should copy `config/.env.example` to `config/.env` and set/modify the
 * variables as required.
 *
 * The purpose of the .env file is to emulate the presence of the environment
 * variables like they would be present in production.
 *
 * If you use .env files, be careful to not commit them to source control to avoid
 * security risks. See https://github.com/josegonzalez/php-dotenv#general-security-information
 * for more information for recommended practices.
*/
if (!env('APP_NAME') && file_exists(CONFIG . '.env')) {
    $dotenv = new \josegonzalez\Dotenv\Loader([CONFIG . '.env']);
    $dotenv->parse()
        ->putenv()
        ->toEnv()
        ->toServer();
}

今回、.env ファイルに DB 周りの設定を逃してみた。

こんな感じでホスト名やDB関連のパラメータを設定すると

export DB_HOST="maria"
export DB_ROOT="root"
export DB_ROOT_PASS="DBPASSWORD!"
export DB_NAME="CAKE_DATABASE"
export DB_USER="user"
export DB_PASS="PASSWORD"

app_local.php で env() で読み込む

return[
// 一部抜粋

  'Datasources' => [
        'default' => [
            'host' => env('DB_HOST', null),
            'username' => env('DB_USER', null),
            'password' => env('DB_PASS', null),
            'database' => env('DB_NAME', null),
            //'schema' => 'myapp',
        ],

// 抜粋終わり

CakePHP のドキュメントは割とわかりやすいので嫌いではないが、app_local.php や .env 周辺の説明は相変わらずファイル名の間違いや記述の不足があってわかりにくい。

このへんなんとかならないかな。

参考

CakePHP3で.envファイルを有効化する #PHP – Qiita

docker 内のcakephp ローカルサーバにアクセスできない時

超小ネタ。docker 内に cakephp 5 を入れてとりあえず面倒なので、Webサーバなしで軽く試そうと思い cake のローカルサーバを起動するも外部からアクセスできない現象に遭遇した。

もちろん docker -p や docker-compose.yml ports は正しく構成しています。

答えは、コンテナ内でローカルサーバを起動した画面にすでにありました。

; app に cakephp5 をインスールしています。ご自分の環境に読み替えてください。
# app/bin/cake  server 

Welcome to CakePHP v5.0.6 Console
-------------------------------------------------------------------------------
App : src
Path: /var/www/app/src/
DocumentRoot: /var/www/app/webroot
Ini Path: 
-------------------------------------------------------------------------------
built-in server is running in http://localhost:8765/
You can exit with `CTRL-C`
[Sun Mar 24 10:27:49 2024] PHP 8.3.3 Development Server (http://localhost:8765) started

cake server が localhost にバインドしているので、外からはアクセスできない状態ってことを暗に示しています。

これを動作するようにするには、0.0.0.0 にバインドします。お好みで -p でポートを変更してもいい。

# app/bin/cake server -H 0.0.0.0 

考えてみれば当たり前のことで、 Docker はホストとは別のネットワークを生成します。この時、コンテナ内の localhost へアクセスできません。 0.0.0.0 にバインドするってことは、コンテナにあるすべての NIC で待受することになるので、アクセスできるようになったってことだと思われる。

Android Studio 2023.2.1の “Gradle JDK” から重複項目を削除

Android Studio で Gradle の JDK をダウンロードすると、複数同じ項目が表示されることがある。それを削除する方法です。

参考のくまねこさん記事の内容をやりたいのだが、かの記事は Mac の場合のパス名になっています。自分は今開発機にしているのが Linux Mint なのでパスが異なるのでそれを調べた。要は jdk.table.xml はどこにあるかってことです。

その Gradle の設定画面は、以下の操作で開いた画面のことです。

  1. File メニュー > Settings を選び Settings ダイアログを表示します。
  2. Build, Execution, Deployment > Build Tools > Gradle と左のツリービューをたどり
  3. Gradle JDK: ドロップダウンリスト

ここのことです。

[ここに画像をいれること]

Download JDK でもともと存在する JDK と同じものを指定するとホームディレクトリにダウンロードして名前に (2) とか付加される仕組みのようです。

で、 jdk.table.xml ファイルってどこにあんのよ? って話ですが、ヒントは Android Developer のページにありました。

Troubleshoot Android Studio  |  Android Developers このページによると設定ファイルはホームディレクトリの.config 以下にあるようです。

探してみると /home/mnishi/.config/Google/AndroidStudio2023.2/options フォルダに jdk.table.xml はありました。

見つかった XML ファイルを慎重に編集して Android Studio を再起動すると反映されます。

XML なのでカッコの対応崩れるときっとろくでもないことがおきます。きちんとバックアップとってからいじりましょう。

にしても、Android Studio の環境構築は繊細でやっぱり好きになれない。

参考

Android StudioでGradle JDKのバージョン一覧の整理 – Zenn くまねこさん

Troubleshoot Android Studio  |  Android Developers

WordPress テーマ DecorMe のリストを少し修正

この WP サイトでは Burger Themes というサイトの DecorMe の無料版を使っていますが、番号付きリストに変な黄色い■形が表示されていることに気づきました。

ブラウザでインスペクトしてみると ■形は li の :before で表示しているようです。 ul も ol も 指定がないので両方の箇条書き要素にあたってしまっているようです。実際の CSS はこうなっていました。

.post-items li:before {
    content: "";
    width: 5px;
    height: 5px;
    background-color: var(--bs-primary);
    margin-right: 18px;
    display: inline-block;
    vertical-align: 3px;
    outline: 2px solid rgba(255, 255, 255, 0.2);
    outline-offset: 4px;
}

これの content 属性で文字の装飾として■形が表示されているようです。

li の前に ul を入れて番号なし箇条書きの時のみに当たるようにしてみます。さらに ol の時は表示しないようにします。

WordPress の管理画面で[外観] >[カスタマイズ] と進み、 [追加CSS] の画面で以下を投入します。

これだけで OK かと思いましたが、 ul が左へはみ出すので padding-left も追加します。

.post-items ul li:before {
    content: "";
    width: 5px;
    height: 5px;
    background-color: var(--bs-primary);
    margin-right: 18px;
    display: inline-block;
    vertical-align: 3px;
    outline: 2px solid rgba(255, 255, 255, 0.2);
    outline-offset: 4px;
}

.post-items ol li:before {
    content: initial;
}

/* ul に左padding 指定 */
.post-items ul {
	padding-left: 1rem;
}

これでよさそう。

pipenv の仮想環境をカレントに作る

よくあるネタですが、自分が探しやすいようにメモります。

ここのところ python の仮想環境は pipenv に落ち着いているのですが (venv 使っていた頃より余計な作業が減った気がする)、賛否両論ありますがカレントのプロジェクトフォルダにつくる方法です。

# 一時的に環境変数を経由
$ export PIPENV_VENV_IN_PROJECT=1
$ pipenv shell

# .env 設定ファイルを介して行う方法
$ echo ""PIPENV_VENV_IN_PROJECT=1" >> .env
$ pipenv shell

いちいち忘れるので .env の雛形ファイルを作って雛形フォルダに置いておいた。

これで大丈夫だろう

古いカーネルとカーネルモジュールをアンインストールする

ふと気がつくと /usr/lib/modules の容量が数 GB になっていたりするので、不要な Kernel と module を削除する方法を調べた。

きっとすぐに忘れるだろうからメモしておく。

# インストール済みの カーネル関係のパッケージを確認する
$ dpkg --get-selections |grep -i linu
binutils-x86-64-linux-gnu								install
console-setup-linux											install
libnvpair3linux													install
libselinux1:amd64											install
libselinux1:i386												install
libuutil3linux														install
libzfs4linux														install
libzpool5linux													install
linux-base															install
linux-firmware													install
linux-generic														install
linux-headers-5.15.0-97									install
linux-headers-5.15.0-100								install
linux-headers-5.15.0-100-generic					install
linux-headers-generic										install
linux-image-5.15.0-100-generic					install
linux-image-generic											install
linux-libc-dev:amd64										install
linux-modules-5.15.0-100-generic				install
linux-modules-extra-5.15.0-100-generic		install
linux-sound-base												install
linuxmint-keyring												install
pptp-linux															install
syslinux																install
syslinux-common												install
syslinux-utils														install
util-linux															install
zfsutils-linux														install


# こんな感じで不要なパッケージを削除
$ sudo apt  purge -y linix-headers-5.15.0-97

要するにカーネル関連のパッケージはアンインストールされても残るっぽいので purge で残ったファイルを削除する必要があるらしい。