ブログ

割とコンピュータよりの情報をお届けします。

2023年

Windows SandboxでExplorerがクラッシュする問題

10月ごろからWindows Sandboxでエクスプローラを開くとエクスプローラが再起動してしまう。
いまだに修正されない。

10月ごろからWindows Sandboxでエクスプローラを開くとエクスプローラが再起動してしまう状況になっている。
デスクトップなどを表示しているのもExplorerなので、これが再起動されるとタスクバーなども一回消えてしまう。これは以上に使いにくい。
いまだに修正されない。

コマンドラインは使用できるので、デスクトップで行うような操作をコマンドラインで与えるとプログラムの実行などは行える。が、ものすごく使いにくい。

暫定的な回避策が上がっていた。次のような内容の*wsbファイルを作ってそれをつかってWindows Sandboxを開けばいいといっている。

<Configuration>
<MappedFolders>
<MappedFolder>
<HostFolder>C:\Windows\SystemApps\Microsoft.WindowsAppRuntime.CBS_8wekyb3d8bbwe</HostFolder>
<SandboxFolder>C:\Windows\SystemApps\Microsoft.WindowsAppRuntime.CBS_8wekyb3d8bbwe</SandboxFolder>
<ReadOnly>true</ReadOnly>
</MappedFolder>
</MappedFolders>
</Configuration>

≫ 続きを読む

2023/11/25 コンピュータ   TakeMe

ConoHa ISOイメージのダウンロード先はディレクトリ内のインデックス表示が可能である必要がある

ConoHaではVPSにISOイメージからのインストール機能があるというので試してみていたら、意外な制限があった。
ダウンロード先はディレクトリ内のインデックス表示が可能である必要があるのだ。

ConoHa VPSでは、任意のISOイメージを使用して仮想マシンのインストールやリカバリなどが行えるようなことが書かれているのを見たので、やってみたくなった。
最初のサーバーは任意のテンプレートから作成することができる。
そして、そのバーチャルマシンにisoイメージをマウントして起動するとインストールができるということだった。
私は試しに、Manjaroのisoイメージをurlとして渡してみた。あえなく失敗。どうも、ダウンロードするディレクトリが一覧可能になっている必要がある。どうもそのような仕様を知らずにCLIツールでisoイメージをダウンロードしようとしていたが、ことごとく失敗していた。
任意のテンプレートからサーバーを契約してそのサーバーにWebサーバをインストールし、そこにisoイメージを露出させて、それをconoha-isoなどでダウンロードするということで解決する。
なんのエラーも返答されないので、数時間かかるものだとばかり思っていた。

以下はWindows用のチートcmd

SET OS_USERNAME=[APIユーザ名]
SET OS_PASSWORD=[APIパスワード]
SET OS_TENANT_NAME=[テナント名]
SET OS_REGION_NAME=[リージョン名 tyo1など(省略するとtyo1と扱われる)]

rem start "" "C:\Program Files\Google\Chrome\Application\chrome.exe" http://127.0.0.1:6543/
rundll32 url.dll,FileProtocolHandler http://127.0.0.1:6543/
conoha-iso server

≫ 続きを読む

2023/07/09 コンピュータ   TakeMe

.NET 6.0 WPFアプリにCefSharpをつけてWebブラウザ化

WebViewが古すぎた時代にWebView2が登場するまでの間、Webブラウザコントールを組み込むのに非常に役に立ったCefSharpだが、最近使用していなかった。
今一度見直すと、導入が楽になるように進化していた。

試しに.NET 6.0のWPFアプリケーションで使ってみた。

まず、Visual Studio 2022でWPF アプリケーションを新規に作る。.NET Frameworkではなく.NETの方である。
nugetパッケージ CefSharp.Wpf.NETCoreをインストールする。
xmlns:wpf="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"を追加
<wpf:ChromiumWebBrowser x:Name="Browser" Address="www.google.com"/>
を突っ込むだけ。
これだけ…
Quick Startにはいろいろなことが書いているけどAnyCPU対応も特に気にしなくてよいのかな。前に、AnyCPU対応するときに苦労していたのに比べるとCefSharp.Wpf.NETCoreパッケージは比較的スムーズに適用できる。

≫ 続きを読む

2023/06/24 コンピュータ   TakeMe
タグ:WPF

Ubuntu 20.04でのSambaの設定方法を忘れていた

久しくファイル共有サービスのSambaを使っていなかったため、使い方を忘れてしまった。

今一度再確認した。
もう5年近く使用していない。

sudo apt install samba
sudo smbpasswd -a takeme
sudo systemctl restart smbd.service

/etc/samba/smb.configの内容を編集して
sudo systemctl restart smbd.service
を実行する。

[homes]
   comment = Home Directories
   browseable = no
;   browseable = yes

# By default, the home directories are exported read-only. Change the
# next parameter to 'no' if you want to be able to write to them.
;   read only = yes
   read only = no

# File creation mask is set to 0700 for security reasons. If you want to
# create files with group=rw permissions, set next parameter to 0775.
;   create mask = 0700
   create mask = 0775

# Directory creation mask is set to 0700 for security reasons. If you want to
# create dirs. with group=rw permissions, set next parameter to 0775.
;   directory mask = 0700
   directory mask = 0700

# By default, \\server\username shares can be connected to by anyone
# with access to the samba server.
# Un-comment the following parameter to make sure that only "username"
# can connect to \\server\username
# This might need tweaking when using external authentication schemes
   valid users = %S

などなど

≫ 続きを読む

2023/06/22 コンピュータ   TakeMe

オープンソースのロータダイナミクス解析支援ROSS

ROSSを使うと、参考書片手に手間をかけて計算していた回転体の危険速度の計算などをほぼ実装されたまま利用させていただくことができる。

今まで、GNU OctaveやPythonでプログラムを作って行列計算などをしていたが、ROSSなるものが無料で配布されている
ただし参考ページ【ターボ機械シリーズ④】 オープンソースローターダイナミクス解析ソフトROSS)がページ内で参照しているTurboToolsのチュートリアルはross-rotordynamicsのVersion 1.0.0、Numpy 1.2.0以下用になっていてそのまま実行できない。
Numpyの方は軽微な修正でnumpy.complexがなくなったというものなので、complexに置き換えるだけでよい。結構有名なパッケージの仕様変更なので有名である。
ただし、ross-rotordynamicsの方は有名パッケージではないのでversion 1.0.1にバージョン指定をしてインストールした方が良い。GitHubの変更履歴を追ってみると、この後のバージョンで.kxx.plot()の定義がなくなる。

pip install ross-rotordynamics==1.0.1

もしかすると、使用する描画機能にplotlyの出力を抑制するように変化が起こっているかもしれない。
インストールしたrossの中で、numpy.complexを使用している部分を順次complexに置き換えていく作業が必要である。(結構面倒)チュートリアルに頼らないのであれば、このバージョン指定インストールは不要である。ただ、一回参考ページに従ってみたい場合には上のようにしないといけない。

≫ 続きを読む

2023/06/21 コンピュータ   TakeMe
タグ:Python

Pythonでsscanfのようなものはないか

「Python sscanf相当」で検索していると「ない」と検索されることが多いけど、parseライブラリにあるような気がする。

PythonにC言語のsscanf相当のものはないのかということを検索していると、「splitで代用する」ようなものが検索喧嘩の先頭にきていやだ。
標準では厳しいが、parseライブラリにこの辺りの処理の対応がある。
例えば次のような例で使える。

import parse
import numpy as np

if __name__ == '__main__':
    test_string = '2023-06-19T01:20:10.010';
    parsed = parse.parse('{}-{}-{}T{}:{}:{}', '2023-06-19T01:20:10.010');
    
    print(parsed);
    
    parsed = np.array(list(parsed), dtype=float);
    print(parsed);

≫ 続きを読む

2023/06/21 コンピュータ   TakeMe
タグ:Python

Pythonで3次元プロット と回転 matplotlib 3.7.1

matplotlibの2くらいから「パースペクティブ」の解除は一語に代わっていた。

matplotlibでパースペクティブの解除について、昔は少しコードを書かないといけなかった。
がそれは今は昔の話で、ax.set_proj_type('ortho');で一発となっていた。
まえに記事を書いてから5年近くたっているから当然かな。

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D


def rotX(X):
    theta = X / 180.0 * np.pi;
    Rx = np.array([[1,0,0,0],
                   [0,np.cos(theta),np.sin(theta),0],
                   [0,-np.sin(theta),np.cos(theta),0],
                   [0,0,0,1]]);
    return Rx;

def rotY(Y):
    theta = Y / 180.0 * np.pi;
    Ry = np.array([[np.cos(theta),0,-np.sin(theta),0],
                   [0,1,0,0],
                   [np.sin(theta),0,np.cos(theta),0],
                   [0,0,0,1]]);
    return Ry;

def rotZ(Z):
    theta = Z / 180.0 * np.pi;
    Rz = np.array([[np.cos(theta),np.sin(theta),0,0],
                   [-np.sin(theta),np.cos(theta),0,0],
                   [0,0,1,0],
                   [0,0,0,1]]);
    return Rz;

def trans(x):
    Tr = np.array([[1,0,0,x[0]],
                   [0,1,0,x[1]],
                   [0,0,1,x[2]],
                   [0,0,0,1]]);
    return Tr;

def main():

    r = 50.0;
    theta = np.arange(0.0, 360.0, 30.0);
    x = np.array([]);
    y = np.array([]);
    z = np.array([]);

    for i in range(10):
        x_ = r * np.cos(theta / 180.0 * np.pi);
        y_ = r * np.sin(theta / 180.0 * np.pi);
        z_ = 10.0 * i * np.ones(x_.shape[0]);
        
        x = np.append(x, x_);
        y = np.append(y, y_);
        z = np.append(z, z_);
    
    X = np.array([x, y, z, np.ones(x.shape[0])]);
    X = np.dot(rotX(45.0), X);
    X = np.dot(rotY(45.0), X);
    X = np.dot(rotZ(10.0), X);
    X = np.dot(trans([10, 10, -10]), X);
    
    fig = plt.figure()
    ax = fig.add_subplot(projection='3d')
    ax.set_proj_type('ortho');
    ax.scatter3D(X[0], X[1], X[2]);
    ax.set_aspect('equal')
    plt.grid()
    plt.savefig('plot201803.svg');
    plt.show();

if __name__ == '__main__':
    main()
    

しかも、バックエンドとしてWebAggを使用するとWebブラウザから3D図をグリグリ操作できる(tornadoパッケージも必要)。私はWebView2と組み合わせて.NETアプリとPythonアプリの組み合わせで使ってみようかと思っています。
(バックエンドをWebAggに切り替えただけでは、show()のところでWebブラウザが起動してしまうところが問題だがほかのアプリへの組み込み方があるらしい)

if __name__ == '__main__':
    plt.rcParams['webagg.open_in_browser'] = False;
    plt.rcParams['webagg.address'] = '0.0.0.0';
    plt.switch_backend('WebAgg');
    main()
    

≫ 続きを読む

2023/06/19 コンピュータ   TakeMe
タグ:Python

Ubuntu 22.04にMondo Rescueをインストール

Ubuntu 22.04にMondo Rescueをインストールしてみた。22.04用のレポジトリは使えない。20.04用のレポジトリをそのまま流用する。

基本的には、前の記事の通りなのでこちらを確認された方が良い。Ubuntu 22.04であってもUbuntu 20.04用レポジトリを使うことにする。mindi.confの設定内容を変更する必要がある。

http://www.mondorescue.org/ftp/ubuntu/20.04/mondorescue.pubkeyを/etc/apt/keyrings/mondorescue-key.ascにダウンロードして
/etc/apt/sources.list.d/mondorescue.sources.listを作成する。

sudo curl -fsSL http://www.mondorescue.org/ftp/ubuntu/20.04/mondorescue.pubkey -o /etc/apt/keyrings/mondorescue-key.asc

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/mondorescue-key.asc] http://www.mondorescue.org/ftp/ubuntu 20.04 contrib" | sudo tee /etc/apt/sources.list.d/mondorescue.sources.list > /dev/null
echo "deb-src [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/mondorescue-key.asc] http://www.mondorescue.org/ftp/ubuntu 20.04 contrib" | sudo tee -a /etc/apt/sources.list.d/mondorescue.sources.list > /dev/null
echo -e "\n" | sudo tee -a /etc/apt/sources.list.d/mondorescue.sources.list > /dev/null

さて以下の内容を実行してみる

sudo apt update
sudo apt install mondo
sudo apt install isolinux
sudo apt install xorriso

さらに、
sudo vim /etc/mindi/mindi.conf
として

EXTRA_SPACE=1524000
BOOT_SIZE=307200

BIOSレガシー起動のものであればこうだが、EXTRA_SPACEは20.04よりかなり大きくしないと使えなくなった。あまり大きくしすぎても失敗する。まだリストアに成功していないけど

sudo mondoarchive

を実行してみて。…

(2023.06.11 追記 apt-keyは廃止予定になっていたようで記述を変更しました)

UFEI環境では

sudo apt install syslinux-efi

を実行してさらに/usr/sbin/mindiの../libutil.c32のある行を編集する必要がある。

≫ 続きを読む

2023/06/10 コンピュータ   TakeMe

ConoHa VPS 512MBプランではUbuntu 22.04以降はサポートしない

最近話題(もう一年程前から)だが、ConohaやさくらVPSの512MBではUbuntu 22.04が起動しない。

Conoha でVPSをいくつか契約しているUbuntu 20.04である。
そろそろ来年以降どうしていくかを検討中である。
512 MBではUbuntu 22.04以降が起動しない。
あと1年待つと移行用のプランが用意されるのかそれとも今のうちに動き出すべきか。512MBプランの新規受付に制限がつけられていくのか。kernel-panicになっているため、swapを使っていても関係なく起動に失敗する。
今のところConoHaではイメージ保存でイメージを保存しておいて1GBプランに移すことができる。

≫ 続きを読む

2023/06/09 コンピュータ   TakeMe

Ubuntuのtarコマンドは除外の扱いが変わったのか?

古い記事を参考にtarコマンドを使用していたら除外がうまくいかないなど不都合に遭遇した。

古い記事を参考にTarコマンドの引数を扱ってはいけない。

えらい目にあった。
何ら新しいことはないだろうと思っていたtarコマンドでさえ仕様変更が起こっている。思ったように除外が効かなかった。
おおむねの作業の流れは非常にありがたい。


dir /home/takeme/backup
cd /
tar cvpzf "/home/takeme/backup/backup.tar.gz" --exclude="/proc" --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/home/takeme/backup /

今回は思ったところに除外が効いた。(ように見える)

≫ 続きを読む

2023/06/07 コンピュータ   TakeMe