2024/01/25

(PC) どうなる携帯ゲーム機型PC

AI時代が本格的に始まり、それに合わせるかのように携帯ゲーム機型PCがますます百花繚乱の様相を呈して来ました。

何を差し置いても魅力は、超高性能なWindows 11(今年はWindows 12になるか?!)コンピューターとして使える点にあります。

小型画面のビジネスPCは、どうしても、バッテリーの持続力や安定性を重視しないといけないため、インテルが用意した「それ用の」モバイルプロセッサーを横並びで採用しないと商売にならないのか、正直、低スペック・高価格という状況になっているため、多少荒い部分はあれども、小型画面PCに高性能を求めるなら今(から)がチャンスという状況になっています。


価格が10万円前後なら大バーゲン

圧倒的な高性能を誇る、携帯ゲーム機型PCですが、いかんせんその相手にするゲームは、世界最高のゲームコンピューターである「プレイステーション」レベルという、高い目標が設定されています。

そのため、携帯ゲーム機型PCの中でも既に結構な競争が起きていて、ハイエンドスマホみたいに20万円が見えている状況になりつつあります。

そんな中では、やはり10万円前後の価格帯のマシンは大バーゲンと言わざるを得ないです。

具体的には、やはり、個人的にも一度は買いに出かけた「ROG ALLY」ですね。

ただ遊んで終わりで、その後に続くものが何もないゲーム機ではなく、Windows 11(12)マシンとして、自分のやり方で果てしなく用途が広がって行くワクワク感はすごい。

2024/01/22

(PC) powerShellによる仮想メモリ初期化、Surface Go2だと動く...

前の記事で、ROG FLOW Z13で試して動かなかった「powerShellによる、自作の仮想メモリ初期化スクリプト、VMEM-RESET」ですが、Surface Go2だと普通に動いたので、一応コードを記載させていただきます。


仮想メモリの初期化(クリーンナップ・実行したらPC再起動が必要です)


#仮想メモリクリーンアップ
function VMEM-RESET($INIT, $MAX) {
    $VMEM_INFO=Get-WMIOBJECT Win32_PageFileSetting | ?{$_.Name -eq 'C:\pagefile.sys'}
    $VMEM_INFO.InitialSize =$INIT
    $VMEM_INFO.MaximumSize =$MAX
    $VMEM_INFO.put()

    #仮想メモリ内容
    VMEM
    WRITE-HOST "---【注意】再起動が必要です!!---"
}

#仮想メモリを表示
function global:VMEM() {
    WRITE-HOST "---仮想メモリ状況---"
    WRITE-HOST "〇ストレージ使用容量"
    $VMEM_STORAGE = GET-CHILDITEM "C:\" -FORCE | ?{$_.Name -match "pagefile.sys|hiberfil.sys|swapfile.sys"} 
    $VMEM_STORAGE | %{$_.Name + "(MB) " + ($_.Length/[Math]::Pow(1024,2)).ToString(".000")}
    
    WRITE-HOST "〇設定情報"
    $VMEM_INFO=Get-CimInstance -Class Win32_PageFileSetting | ?{$_.Name -eq 'C:\pagefile.sys'}
    $VMEM_INFO | %{"初期(MB)="+($_.InitialSize).ToString() + " 最大(MB)="+($_.MaximumSize).ToString()}
}


↑動く,..ROGだと何で動かなかったのだろう。

2024/01/21

(PC) powerShellで「仮想メモリ」の状況を見る方法(初期化は手動...)

前回の記事で、メインRAM(メモリ)の状況を見たり、クリーンアップする方法を書かせて頂きましたが、今回の記事では、「仮想メモリ」に踏み込んでみたいと思います。


仮想メモリって何

仮想メモリとは、語弊があるのを承知で一言で言うと「メインRAM(メモリ)に入り切らない分を、ストレージで肩代わりしてもらう技術」です。

メインRAMは、ぶっとびの超高速ではあるのですが容量が少なく、電源を切ると中身が消えるという泣き所があります。

それをカバーするのが仮想メモリなのですが、こっちはこっちで、ストレージの容量がその分消費されるのと、速度が(たとえGen.4x4の超高速SSDであっても)メインRAMとは桁違いに遅く、仮想メモリを使う状況だと、確実にPCのパフォーマンスが格段に落ちてしまう事にあります。

そういう一般論はともかく、モバイルPCは、まだまだ潤沢なストレージを搭載する気のないモデルも多く、酷いのになると64GBで済ませようとするし、Surface Go2シリーズもメインは128GBと余裕はなく、とても高価なSurface Pro 9ですらも256GBです(超高価なプレミアムモデルは1TBだけど買ってられん)。

仮想メモリの様子を見て、必要なら初期化するのもアリかと思われます。


仮想メモリの状況を見る「VMEM」コマンド

また私の独学の勝手コマンドで恐縮ですが、VMEMコマンドで仮想メモリがどんくらいストレージを消費してるのか?をすぐに見る事が出来ます。

powerShellは管理者モードで起動して、もしスクリプトファイルにするなら、文字コードはUTF8やShift JISではなく、UTF8 with BOMにすると、Windows PowerShellと、マルチプラットホームのpowerShellの両方で文字コードが共有できます。



#仮想メモリを表示
function VMEM() {
    WRITE-HOST "---仮想メモリ状況---"
    WRITE-HOST "〇ストレージ使用容量"
    $VMEM_STORAGE = GET-CHILDITEM "C:\" -FORCE | ?{$_.Name -match "pagefile.sys|hiberfil.sys|swapfile.sys"} 
    $VMEM_STORAGE | %{$_.Name + "(MB) " + ($_.Length/[Math]::Pow(1024,2)).ToString(".000")}
    
    WRITE-HOST "〇設定情報"
    $VMEM_INFO=Get-CimInstance -Class Win32_PageFileSetting | ?{$_.Name -eq 'C:\pagefile.sys'}
    $VMEM_INFO | %{"初期(MB)="+($_.InitialSize).ToString() + " 最大(MB)="+($_.MaximumSize).ToString()}
}

↑ROG FLOW Z13で実行してますが、「VMEM」と入力するだけで仮想メモリの状況が分かります。

swapfile.sysが膨らんでいると、メインRAMでは足りない分を肩代わりして膨張したな、という目安になります。


仮想メモリの初期化をする方法は...

仮想メモリですが、「swapfile.sys」が膨らんでしまって手に負えないよ、という時にどうするべきか。

Windows 10まではpowerShellからリセット可能でしたが、同じものはWindows 11では動かなくなっていました。

現状は、いったん手動で以下の方法ですかね。



(1)スタートボタンを右クリックし、[設定]をクリックします。
(2)[システム] → [バージョン情報] を選択します。
(3)関連リンクにある [システムの詳細設定] をクリックします。
(4)パフォーマンスの [設定] をクリックします。
(5)[詳細設定] タブを選択し、仮想メモリの [変更] をクリックします。
(6)[すべてのドライブのページングファイルのサイズを自動的に管理する] のチェックを外します。
(7)仮想メモリを設定したいドライブを選択し、[カスタムサイズ] を選択します。
(8)初期サイズと最大サイズを入力します。一般的には、実装メモリ (RAM)の約3倍に設定することが推奨されています。
(9)[設定] をクリックし、[OK] をクリックします。
(10)コンピューターを再起動します。


(PC) powerShellでメモリの状況を見る、メモリを解放する方法!!

今回の記事は、例によって私のつたない自作コマンドなのですが、powerShellで、PCのメモリの状況を確認する方法と、併せて、メモリを解放する方法です。

メモリを解放するためには、前回の記事で紹介したマイクロソフト公式ツール(現在非公開)のrktools.exeが必要である事をご了承下さい。


メモリの状況を見る「MEM」コマンド

powerShellでメモリの状況を見る「MEM」コマンドです。



#メインRAMのモニター
function MEM() {
    $all=(Get-CimInstance -Class Win32_OperatingSystem | %{($_.TotalVisibleMemorySize)});
    $free=(Get-CimInstance -Class Win32_OperatingSystem | %{($_.FreePhysicalMemory)});
    $use=$all-$free;

    $all=[Math]::Round(($all/[Math]::Pow(1024,2)),3,[MidpointRounding]::AwayFromZero);
    $free=[Math]::Round(($free/[Math]::Pow(1024,2)),3,[MidpointRounding]::AwayFromZero);
    $use=[Math]::Round(($use/[Math]::Pow(1024,2)),3,[MidpointRounding]::AwayFromZero);
    
    $OutputEncoding = [console]::OutputEncoding;
    Write-Host "---メインRAM ---";
    Write-Host "ALL (GB)= " ($all).ToString();
    Write-Host "FREE(GB)= " ($free).ToString();
    Write-Host "USED(GB)= " ($use).ToString();
}


これをROG FLOW Z13で実行すると以下のようになります。


↑タスクマネージャーやARMOURY CREATEを開かなくとも、「MEM」コマンドをpowerShell(管理者モード)でメモリの全体・残量・使用中が見られます。

ここからが本題で、で、見られたからなんなの?という先の話となります。

前の記事のrktools.exeをインストールし、例によって管理者モードでpowerShellを起動するのが前提で、「EMPTY」コマンドを入力すると、メモリが解放されます。

コマンドは以下です。



#メインRAMをクリーンアップ
function EMPTY() {
    CMD /C "empty *";
    #CLEAR-HOST;
    MEM;
}

↑上の方のMEMコマンドを呼び出して、解放後の状況を自動で通知してくれるようにしています。

いつもながら私の勝手な自作なので、内容は自由に変えてやって下さい。


連打が可能!!ここがMS PC Managerとの大きな違い!!

このEMPTYコマンドですが、連打が可能です。

ここがMS PC Managerとの大きな違いです。

もちろん、モグラ叩きという表現の通り、すぐにボコボコ復活してくるので、打つべし、打つべし!!です。

当初、8GB台の消費量があっという間に4GB台に下がったのがお分かりかと思います。


そんな、打つべし、打つべしって、手作業で何回もやってらんねぇ!!という時は、次に自動実行コマンド「AUTO-EMPTY」です。


定期的にEMPTYを実行できる「AUTO-EMPTY」コマンド。ミリ秒単位で実行間隔が選べるよ

EMPTYコマンドを自分で連打するのは、めんどくさすぎる!!という場合は、以下に自動実行のAUTO-EMPTYをご用意しております。

これはパラメーターが必要で、たとえば1秒間隔であれば「AUTO-EMPTY 1000」とします。

ただ、あんまり頻繁に動かすと、CPUによっては、Excelなどのアプリの実行速度を遅くしてしまう可能性もあるので、10秒間隔がおすすめ。

「AUTO-EMPTY 10000」で10秒間隔となります。



#自動メモリ解放
function AUTO-EMPTY($waitTime) {
    $CNT = 0;
    while ($true) {
        EMPTY;
        $CNT++;
        WRITE-OUTPUT ("メインRAMを自動開放中 [ "+(([float]$waitTime/1000).ToString("0.0000"))+" ] 秒間隔");
        WRITE-OUTPUT ("開放回数 [ " + ($CNT) + " ] 回")  
        START-SLEEP -M $waitTime;
    }

}

↑ROG FLOW Z13で実行しています。

10秒間隔だと、その間にメモリ使用量が復活して来て、前よりも使用量が多くなったりしてますが。

後ろでこの処理を実行していると、たとえメインRAMを8GBしか搭載してないPCでも、開発用にSQL-Serverをまともに運用できたりします。

SQL-Serverはメモリがなくなるとどうなるか、たとえ一行のSELECT文、一項目のCREATE TABLEでも、結果が数分間も帰って来なくなったりします。

まぁ、マイクロソフト非公開ツールがバックの自作コマンドなので、使って欲しいとはとても言えませんが、このようにして工夫してやってますというエピソードとして捉えてもらえれば幸いです。

(PC) 非公開になったが、今でも個人的に超弩級重要メモリ解放ツール「rktools.exe」

マイクロソフトは、公式に「 target="morimori_window"Microsoft PC Manager(ベータ版)」を公開し、今後はメモリ解放ツールとして推すのはコレだ!!という事になっています。

ただ前回の記事でも書かせて頂いたのですが、個人的には、以前まで公開されていた「rktools.exe」の代わりにはまだならないかなぁというところ。

いかんせんマイクロソフトが非公開にしたので、私が勝手にダウンロード先を紹介する事は出来ませんが...

今回の記事は、このrktools.exeを、「もりもりはこのように使っている」という記事です。


非公開でも超弩級重要なrktools.exe

rktools.exeをPCにインストールすると、「empty」コマンドというのが使えるようになり、これがPC利用の根幹に関わるほど超重要ツールなのです(個人的には)。


↑rktools.exeは、なんと、Windows Server 2003に連動して公式に公開されていたツールで、Windows 10の時代までは公開されていたのです。

名前が怪しい感じですが、正真正銘の、マイクロソフトが公開していた公式ツールです。

このファイルは、現在非公開になっていて、自力であれこれ探さないと見つからないようになっています。

マイクロソフトが非公開にされているのと、運用中の企業サーバーで使ったらどうなるか、私もさすがに試した事がないので、入手方法などはご容赦下さい。

また、利用もそれぞれ環境が異なるために、医薬品のように自分に合うかどうかの自己検証は必要です!!

利用そのものは超カンタンですが、かつての、Windows Mobile搭載スマートフォーンのように、PCの知識レベルで言うと、マキシマム、最高水準レベルの熟練者以外は触れてはいけない類のツールですかねこれ。


インストールするとpowerShellで「EMPTY」コマンドを使える!!

ちょっと長くなってしまったので、このツールをインストールすると、powerShellで自作コマンドですが「EMPTY」コマンドや、定期実行のメモリ解放「AUTO-EMPTY」が使えるようになるよ!!という記事を次回で書かせて頂きたいと思います。


(PC) メインRAMの解放をしたい!!「Microsoft PC Manager」編

WindowsのメインRAM(メモリ)を簡単にクリーンナップする事も出来る公式ツール「Microsoft PC Manager」ですが、まだ現時点でもBeta版ではあるものの、順調に進化しておりました。

ROG FLOW Z13にもインストールし、(現時点での)最新版を確認してみました。


Bing検索するとダウンロードまで一撃

私は、最近では完全にBing検索をサーチエンジンのメインにさせて頂いており、そのBingであれば、単に「Microsoft PC Manager」で検索するだけ。

検索結果画面ですぐにダウンロード出来ました。


↑そりゃあ、今やAIの時代なんですが、AIの教えてくれる情報の確認・比較作業はまだ自己責任なので、従来の観点から使えるサーチエンジンは必要ですよね...

そのサーチエンジンは、思う所あって、Bingにほぼ切り替えています。


↑PCにダウンロードされるファイルを実行するだけで、特に癖のある選択肢なども無く、さくさくとインストールまで完了です。

自動的に起動するかどうかは、一旦OFFにしています。

MS PC Managerは、適用するPCの個体差もあるかもですが、旧バージョンだと挙動が不安定だったので、まだお試し使用ですかね...


メモリ解放ツールとしては、力不足のように今は感じる...

まだBeta版とは言えども、どんどん機能改善はされているMS PC Manager。

期待を込めて最新版をROG FLOW Z13にインストールして使用してみました。

結論を先に言うと、アンインストールするまでではないが、メモリ解放ツールとして常用したくなる魅力に乏しく、あとワンパン欲しいかなぁと。


↑ROG FLOW Z13で使用してみましたが、もうワンパン欲しい部分ですが、そもそも「画面を使った実行しかできない」というのが物足りない。

この手のツールは、powerShellやコマンドプロンプト(CMD.exe)等のシェルから、コマンドで粛々と実行できてナンボなので、画面を開いてボタンを押しますというのは悪いとは言わないがちょっと厳しい。

また、安全性第一なのかもですが、解放を連発できない(一度ボタンを押すと、一定時間は「もう押せない」)。

マイクロソフトが以前まで公開していた、サーバー用のメモリ解放ツール「rktools.exe」は、今も私を助けてくれる超弩級重要ツールですが、これだと、モグラたたきのようにメモリ解放をしまくれていたので、それとはやっぱり考え方が違うんかな。

MS PC Managerだと、メインRAMの容量が8GBのマシンでは、到底SQL-Serverの開発運用は無理かな、というのが実体験から分かります。

SQL-Serverは、メインRAMに凄い勢いでテンポラリーを作るので、モグラ叩き方式でメモリ解放しまくらないと、8GBはおろか、16GBですらも少しスタミナが長いだけで力尽きてしまう。

逆にモグラ叩き解放が出来れば、8GBでも粘り強く開発での運用はやれる!!というくらい極端に変わります。

これはイメージで言ってるのではなく、実際に開発で使っているのでハッキリと言えます。


↑最新版はスマートブーストと言って、「ヤバくなったら自動で実行」が出来るようにはなっています。

でもこの画面を起動してないといけないし、まだ「rktools.exe」をやめるわけにはいかないというのが現状です。

2024/01/20

(PC) まだ付き合い短いですが、ROG FLOW Z13とCore i9の凄さに武者震い。RTX2050姫はまだお眠り中...

まだまだ全然短い付き合いなので、あんまり強くは言えないのがもどかしいですが、ROG FLOW Z13の見事な設計とCore i9の見事さには武者震いが止まりません。

Core i9の安定性・パワー・完成度全てに脱帽

ROG FLOW Z13は、言ったら薄型モバイルPCの一種なのですが、Core i9が搭載されています。

だったら、もう熱い、冷却ファンがうるさい、不安定も覚悟しなければならないか?と身構えていたのですが、良い意味で真逆でした。

圧倒的な高い完成度に惚れ惚れです。

まず、底力がものすごいわけです。

底力があるので、私の望む普段のビジネス的な処理は、全力を出さなくとも僅か何割かの力でこなせるというのが予想外にでかい。

また、Core i9である事が重要で、スペック数字は他と似通っていたとしても、高品質のチップが選抜されてのi9なので、i9というだけでかなりの品質が保証されている精神的な安寧もでかい。



クロックを上げると熱くなり、冷却ファンが回りだして騒音が出る...という道筋があると思うのですが、Core i9は、クロックを上げなくともめちゃくちゃに強い!!

論理20 CPU(コア)というのもクロック上げなくとも良い理由になってるかも。

↑SQL-Server 2022において、20 CPU見られるのは感慨深いです...

個人宅でこんなに必要なのか問題はあるけれど。

このCore i9が多少なりとも発する熱をさばく、肝心の冷却システムが奮っていて、さすがはROGという完成度です。

「ROGインテリジェントクーリングシステム」が数世代掛けて成熟して来たか、もう見事に機能しており、ビジネス的な処理、プログラム開発くらいだと、完全無音のまま乗り切れてしまいます(東北の冬だから?真夏の猛暑時は無理かも)

ピークパワーに一喜一憂するのではなく、底力をバランスよく発散する美しい挙動は実際に自分に合わせて稼働させてみないと行き着かなかった現実であります。


不安だったEコアと内蔵型GPU(Xe)の高い実力に瞠目

当初、あまり期待してなかった「Eコア」と、内蔵型GPU(Xe)の隠し持った高い実力にも驚かされる毎日です。

というか、EコアがCore i9のジェントルな挙動を支え、内蔵型GPU(Xe)は、自分の用途なら全てこれでOKという威力。

思えば、PCって、なんでもかんでもすぐに、世界最高のゲーム専用コンピューターである「プレイステーション・シリーズ」と対抗しようとするから、爆発的なパワーを持つGPU以外は全部下げまくってしまう悪循環。

Core i9の内臓GPU(Xe)、そういう過激な事を抜きにすると、まさに御の字、十二分に凄いべぇと、私はそう思うわけだ。


RTX2050姫はまだまだ眠ったまま...

くどいようですが、単独のGPUとして、生まれて初めて好きになって、欲しくて欲しくて転げ回った「RTX2050」姫ですが、とにかくCore i9内蔵型GPU(Xe)がとにかく強いため、RTX2050姫が目覚める事がない...!!

↑内蔵型のXeが全部の敵をやっつけてくれるので、RTX2050姫が出てくる必要がない...!!

Core i9もRTX2050も、負荷がかからないので、寿命が伸びて嬉しい!!

なんか当初の予定と全然違うけど、結果オーライです。

(PC)powerShellでコンピューターのストレージ利用状況を確認する方法

今回の記事は、powerShellでコンピューターのストレージ利用状況を確認する方法です。

SSDが256GBや512GBもあればそんな気にしなくても良いかも知れませんが、(今はもうほぼ無いかもだけど)64GBのストレージのマシンとかだと、コマンドで頻繁に容量を確認しないと残量不足でヤバい事になるので、コマンドでパッと状況が知れるのは結構良い感じです。

powerShellを管理者モードで開き、STORAGEと入力するだけです。


ストレージの利用状況を表示する方法



#Byte=>GB変換(小数点以下3桁まで)
function ConvertGB([double]$value) {
    $compute = [Math]::Round($value/[Math]::Pow(1024,3),3);
    
    return $compute;
}
#ストレージ状況
function STORAGE() {
    $LINE="-" * 80;
    $STORAGE_SOURCES = GET-PSDRIVE | ?{$_.Provider -match "FileSystem"}
    WRITE-HOST "---ストレージ使用状況---"
    WRITE-HOST $LINE;
    foreach($STORAGE_SOURCE in $STORAGE_SOURCES) {
        $MES = (
            $STORAGE_SOURCE.Name + "ドライブ"+
            " ☆空き(GB)=" +(ConvertGB ($STORAGE_SOURCE.Free)).ToString(".000")+
            " 使用中(GB)=" +(ConvertGB ($STORAGE_SOURCE.Used)).ToString(".000")+
            " 全容量(GB)=" +(ConvertGB ($STORAGE_SOURCE.Used + $STORAGE_SOURCE.Free)).ToString(".000")
        );
        WRITE-HOST $MES;
        if((ConvertGB $STORAGE_SOURCE.Free) -lt 18.0) {
            WRITE-OUTPUT ((" "*10)+"【容量注意】"); #WRITE-HOSTではないので注意
        }
        WRITE-HOST $LINE;
    }
}


↑ちなみに、スクリプトファイルに記述しなくとも、このままコマンドをコピーしてpowerShellのウインドウに貼り付けるだけでも実行可能です。

powerShellの画面は複数のスクリプト入力に対応しています。


↑ちなみに複数行のコマンドをドバッと貼り付けようとすると、Windows 10であれば、無言でパッと貼り付くのですが、Windows 11の最新状態だとこのように警告が出てきます。

間違ってクリップボードの中をドバッと入れてしまった、というミスを回避できるので良い仕様になったなぁと。


↑このように複数行のコマンドも貼り付け可能です。


↑実行は「STORAGE」コマンドだけです。

ROG FLOW Z13で実行しているので、SSDが512GBで、メモリカードドライブが512GBの、合計で1TB分のストレージがあります。

512GBは心底ありがたく、何をインストールしても、ストレージ残量にヒリヒリする必要がないのは心の健康になります。

最近まで、ストレージ64GBで散々サバイバルしてたので、512GBのありがたみが骨身にしみます。

余談ですが、初代ROG PHONEって、数年前のスマートデバイスなのにもう512GB搭載してたっけ...ROG凄すぎ。

(PC) powerShellで初回に知っていると便利なコマンド

powerShellを使おうとすると、初回にあると便利だなぁというコマンドが色々あります。

場合によっては1回しか使わないので、すっかり忘れてしまう事もあるので、備忘録代わりにここに記載させて下さい。


動かんぜ...スクリプトは!と言われた時の対処

Windows 11になっても、初期設定ではpowerShellのスクリプトファイル(.PS1)が動かないようになってます。

凄いですよね、スクリプトファイルの拡張子が何と.PS1のまま!!

てっきりWindows 7で爆誕したpowerShell 1.xxにあやかってのPS1であり、数ヶ月の暫定処置だろうなぁと思ったら...まさか5.xxの時代になろうとも、マルチプラットホームの7.xxになろうとも、正式に.PS1とは。

Windowsの64bitシステムフォルダがsystem32なのと同じ感じですかね。


#スクリプトファイルが動かないと言われた時の対処(例)

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser





プロンプトの表示を現在のフォルダ名にする

powerShellのプロンプト表示を「現在のフォルダ名>」にするコマンドです。

普通はプロファイル(初期実行スクリプトファイル)に入れておいて、後は忘れる類のコマンドだと思いますが、途中で好きに変更も可能です。




#プロンプト表示を現在のフォルダ名にする
function prompt() {
    (Split-Path (Get-Location).Path -Leaf) + ">";
}





↑ROG FLOW Z13で実行してます。

こんな感じで、現在のフォルダ名になります。

フルパスにすると便利ですが、プロンプトが長すぎてコマンド入力する場所が無くなる悩みがあるので、私は仕事でもこれにしてます。


そもそもプロファイルの場所を知る方法と、フォルダ開く方法

powerShellを実行すると、自動的に実行されるスクリプトファイルを「プロファイル」と言いますが、それってどこにあるの?!という問題があります。

場所は簡単で「$PROFILE」と入力するだけでフルパスで表示されます!!

その次の段階の話です。

プロファイルの場所をエクスプローラーで直接開きたい!!場合は以下のコマンドです。





#プロファイルの場所を開く(初期実行スクリプトファイルを格納する場所)
II (SPLIT-PATH $PROFILE)




↑ROG FLOW Z13で実行してますが、このようにエクスプローラーがふわっと開きます。

場合によっては、powerShellのウインドウの後ろ側に表示される事があるので、タスクバーの表示に注視です。


なんですが、なんと、初回はスクリプトを格納するフォルダが作られていないんですよね。

一瞬、あまりにもガードがガチガチなので、マイクロソフトはpowerShellを使って欲しくないのかな?と不安になりますが、それは逆で、強力無比なシェルのためこうして門を閉めておかないと怖すぎるという事なんですよね、きっと。


それはそれとして、初回だと「フォルダがないっす」というようなエラーが出てくるんで、以下のように、「無かったら作り、あったら粛々と開く」コマンドで行けます。

初回だけだから別に手作業でいいよと言われたらそれまでですが。

ちなみに、IIは、Invoke-Itemの略称ですが、あまりにもIIしか使わないので正式なコマンド名を忘れてしまった私です。




#ただし初回はフォルダ自体が作られていないので、無かったら作る。
$myProfile = (SPLIT-PATH $PROFILE);
if(!(TEST-PATH $myProfile)) {NEW-ITEM -ItemType Directory $myProfile;}; 
II $myProfile;


↑powerShellとSQL-SERVERが大好き。

なんかこう、生まれて初めてパソコンの操作を知った「X68000」のX-BASICやHuman-68Kの思い出が美化されて胸の中に蘇るんですよね。

(PC) powerShellでCPUの稼働率を表示する方法

今回の記事は、powerShellでCPUの稼働率を表示する方法です。

稼働率をパーセンテージで表示するだけでなく、視覚的にバーグラフ表示してます。

ただ1%でバー一本なので、解像度によってはバー長過ぎ問題になるかもなので、2%で1本にするとか適宜改造してもらえればと思います。

昔は、GET-WMIOBJECTコマンドレットを使っていましたが、今やこれは非推奨になってしまったので、新しいGET-CIMINSTANCEコマンドレットを使っています。

windows専用の5.xxでも、マルチプラットホームのpowerShell 7.xxでも両方で動かす場合は、文字コードを必ずUTF8 with BOMにして欲しいです。

日本語のメッセージを使っているので、文字コードを間違うとエラーになっちゃうんですよね。

あと管理者モードで動かして欲しいです。




#CPU情報の表示
function CPU() {
    $CPU = Get-CimInstance -Class Win32_PerfFormattedData_PerfOS_Processor;
    #$SPEED = Get-CimInstance -Class Win32_Processor;
    Write-Output ("---CPU利用率---");
    $__N="[CPU] ";
    $CPU|`
    SORT {if($_.NAME -eq "_Total"){$_.NAME}else{[int]$_.NAME}} |`
    %{$__P = " : " + $_.PercentProcessorTime.ToString("000") + "%";
       if($_.Name -eq "_Total"){ 
           Write-Output ("****************************************");   
           Write-Output ($__N+"**総力"+$__P+" "+(dispProgress $_.PercentProcessorTime 1));
           Write-Output ("****************************************");
       }else{
           Write-Output ($__N + ([int]$_.Name+1).ToString("00") + "号機"+$__P+" "+(dispProgress $_.PercentProcessorTime 1));
       }
    };
}

#進捗率をバーグラフにする($ratioでバー1本)
function dispProgress($value=0, $ratio =1) {
    $dispRes = New-Object System.Text.StringBuilder # StringBuilderクラスのインスタンスを作成
    for($i=0;$i -lt $value;$i+=$ratio) { # -ltに修正
        $dispRes.Append("|") | Out-Null # Appendメソッドで文字列を追加
    }

    return $dispRes.ToString() # ToStringメソッドで文字列に変換して返す
}



ROG FLOW Z13で動かすと、驚異の(論理)CPUコアが20基!!

ROG FLOW Z13で動かすと、論理コアが驚異の20基になるので、10年以上に渡って「最高が論理8基が最高にして究極なり!!」の状態で来ていた私にとっては、ちょっと衝撃が大きい!!

↑ちなみに、ROG FLOW Z13ですが、(ROG専用の設定アプリで)サイレントモードにして運用してるので、Surface Go2と同等の完全無音サイレントです。

冷却ファン全然回さなくとも、液体金属(!!)と、ベイパーチェンバーによる放熱のみで全然間に合う、ROGテクノロジーには脱帽です...

2024/01/19

(PC)Windows 11において、2種類のPowerShell併用における文字コード悩み

私は、Windows 11において、Windows専用のPowerShell(Windows PowerShell 5.XX)と、マルチプラットホームのPowerShell 7.xxの2種類を併用しています。

大好きだったPS3 Linux終了のショックがまだ尾を引いていて、Linuxはプライベートではやっておりません...(やりたいけど、PS3破棄ショックが巨大過ぎた)

それはそれとして、Windows 11の中でも、この二種類のPowerShellの併用は、そこそこにハードルがあります。

機能的な問題はあるとして、その前段階でパッと出てくるのが何と言っても日本語「文字コードの壁」であります。


結論はUTF8 with BOMを使う!!

文字コードですが、Windows PowerShellは、推奨が昔ながらのShift JISになっているのですが、結論を言うと、文字コードはUTF8 with BOMというコードに変えて運用しております。

以下スクリーンショットですが、上から「Shift_JIS」「UTF8 with BOM」「UTF8」となっておりますが、Windows専用PowerShellだと、UTF8がドカーンと文字化けしているのが分かると思います。

なんでやねんという感じですが、このままだと、見た目だけでなく、スクリプト実行時にエラーが出たりするので日本語使えない事になってしまうという...


↑えー今どき、Windows専用と言えども、UTF8でいいんでないの、と思うと、そうではなかったです。

UTF8文字化けするやんののののの。

UTF8 with BOMでないと、Windows専用版で文字化けしてしまう。


↑マルチプラットホーム版のPowerShellなら、UTF8 with BOM大丈夫なので、両方大丈夫!!

これでいってみようと。

2024/01/18

(音楽) WF-1000XM5のイヤホンを初の紛失!!というか、ワイヤレスイヤホンの初紛失!!

ソニーのワイヤレスイヤホン「WF-1000XM5」ですが、なんと、ワイヤレスイヤホン史上初の紛失をしてしまった!!

結論を言うと、翌日には見つかったのですが、本当に無くなっているのに気が付かない、トゥルー・ロストで、私にとっては超高価なイヤホンなのでプチパニックになってしまった。


外で音楽聴くか!!とケースをパシッ!!と開けたら、片方がなーーーーーーーーーーーい。

いやどこにも落とした記憶ねーーーーーーーーー。

あああああああああああああああああPPPPPPPPPPPPPPPP

なんかあれか、異世界転生してしまったのか?!(混乱)


もうだめだー。

ん、なんだこの飴玉。

あったーーー...
↑翌日には、

2024/01/16

(PC) SQL-Server ハッシュ値によるパスワード管理について

SQL-Server 2022ですが、よくあるログイン等で、ユーザー様が入力してくれたパスワードをどのように管理(データベースに登録)しておくかという話です。

暗号化まではしないパターン。

ハッシュ値に変換する事によって、パッとみて平文じゃなかったら良いじゃないか、というポリシーで良い時の話です。


ハッシュ値を使ったパスワード管理の考え方



-- -------------------------------------------
--ハッシュ値を使ったパスワード管理方法
-- -------------------------------------------

-- --------------------------
-- 管理側の準備
-- --------------------------


--パスワードとソルトを宣言する
DECLARE @dbPass NVARCHAR(MAX) = 'testpass1234567890';
DECLARE @dbSalt VARBINARY(MAX) = CRYPT_GEN_RANDOM(32);

--パスワードとソルトを結合して、パスワードのハッシュ値を求める
DECLARE @dbHash VARBINARY(MAX) = HASHBYTES('SHA2_256', @dbPass + CAST(@dbSalt AS NVARCHAR(50)));

--[データベース登録のつもり]ハッシュ値とソルトを仮にデータベースに登録したとする。
IF OBJECT_ID('tempdb.dbo.#dbData','U') IS NOT NULL BEGIN DROP TABLE #dbData; END;
SELECT @dbHash AS HASH
      ,@dbSalt AS SALT
  INTO #dbData;

-- --------------------------
-- 利用側
-- --------------------------
--ユーザーが画面からパスワード入力としたとする。
DECLARE @userPass NVARCHAR(MAX) = 'testpass1234567890';--OKとなるパスワード


-- --------------------------
-- 検査側
-- --------------------------
--検査
DECLARE @userSalt VARBINARY(MAX) = (SELECT SALT FROM #dbData);

DECLARE @userHash VARBINARY(MAX) = HASHBYTES('SHA2_256',@userPass + CAST(@userSalt AS NVARCHAR(50)));

IF @userHash != @dbHash
BEGIN
    print '(NG)パスワードは間違っています!!';
END
ELSE BEGIN
    print '(OK)';
END;

-- --------------------------
-- 特記事項
-- --------------------------
-- CONVERT(NVARCHAR(MAX),値,2)という具合に、文字列変換パラメーターに2を付けると、
-- バイナリの先頭から0xを省いた文字列に出来ます。
SELECT HASH
      ,SALT
      ,CONVERT(NVARCHAR(MAX),HASH,2) AS STRING_HASH --0x除外の文字列
      ,CONVERT(NVARCHAR(MAX),SALT,2) AS STRING_SALT --0x除外の文字列
  FROM #dbData



(PC) SQL-Server 新規立ち上げ時の設定

今、手持ち三台のPCについて、SQL-Serverを全てExpress版をやめて、無償フル機能版のSQL Server 2022 Developer版に入れ直しました。

備忘録になってしまうかもですが、SQL-Serverについて、小さな記事を今後も色々書かせて頂きたいと思います。

サーバー新規立ち上げ時の初期設定

外側の世界と簡単に通じる事が出来る、xp_cmdshell関数と、OpenRowSet関数を使えるようにする設定です。

この設定してないと、どちらも使えないんですよね。


EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;


2024/01/14

(PC)10年以上ぶりに、デスクトップPCへ大興味「ROG NUC」発表の特上衝撃

今まで、10年以上もの長い間、デスクトップPCは避けて避けて避けまくっていました。

その理由を語ると暗い話になるのでそこはやめて、とにかく、いよいよデスクトップPCに対する気持ちに、パッと明るい光が差してきたというのが今回の話です。


ROG NUC発表の特上衝撃!!

ROG NUCは、確かに据え置き機ではあるのですが、小さい上にデザインも整っていて非常に格好良い!!

超高性能PCブランドの「ROG(アール・オー・ジー)」のデスクトップは既にありますが、実物を見に行くと「設備」と思えるくらいデカくて重くて、何かあった時に気軽に移動出来ない感じが怖かった。


しかしROG NUCは、インテルが提唱した「NUC」という小型デスクトップコンピューターを継承しているため、その怖い問題がクリアされています。

実物はまだ当然見られていませんが、新型の次世代ゲーム機みたいな感じでもって、超高性能コンピューターが生み出されるわけで、気持ち的には10年に1回くらいの革新が来ているような気分です。


それに、PCでやれること、学ぶことが爆発的に濃くなっています。

やはり、日常生活や仕事に直接影響を与えるAIの登場と急激な普及によって、世の中が一変したのが大きい。

少なくとも私の中では、2023年を堺に、AI前とAI後の時代に区別された、という歴史が誕生しており、その荒波を乗り越えるのに頼れるのはPCしかない、という変化が決定的にデカい状況です。




ゲームも何もかも、PCありきへの回帰!!

そんな中、ゲームの中核を担ってくれている「プレイステーション(PS5)」も、既に私の使い方では、単独での利用はありません。

PCからのリモートプレイという形となりますが、既にプレイステーションはPCと統合されていると言っても過言ではなく、実質は超大馬力ゲーミングエンジンとしてPCに統合されています。

ゲーム機だけでなく、スマートフォーン(Xperia, ROG Phone)も、OneDriveを介してPCありきでの運用となっています。

必要な全てがPCを中心に回っている状態です。

こういう時代になっていますから、PCはますます強化しないといけないと決心しているところ、このROG NUCは可能であれば導入したい逸品です。


PCは、ハードウェアばかり言ってる場合ではなく、とにかく、システムやアプリケーションがゲーム機とは決定的の決定的に違い過ぎるくらい違う。

大げさでなく、未来的と言ってしまえる状態で長足の進化を遂げているので、正直、命を削って稼ぐお金の使い道としては、どうにもゲーム機ではなくて、PCを優先させたいというのが自然な気持ちです。

理想のPCは、SurfaceスタイルのPCではあるのですが、どうしてもモバイル機では手が出なかった世界(拡張性や、パーツ交換、周辺機器の自由度など)を、ROGブランドでもって何とか出来るのであれば、願ってもない素晴らしいことです。

ただ、どこまで行っても、ハードルは「価格」ですね。

ROGは、超高性能PCブランドであるため、中身の凄さから考えたら安いと言えども、払う金額はどうしても生半可じゃない。

そうそう手に入るシロモノではないのがわかり切っているだけに、今はハラハラしているところです。

(PC)早くもgitHub無いとかなり厳しい状況になりました

gitHubを使って、個人でもドキュメントやプログラムソースのバージョン管理をやり出しましたが、もう早くもgitHubが無いとかなり厳しい状況になって来ました。


部屋ごとに違うPC置いて作業してるので、gitHub必須に近い...

ROG FLOW Z13が来てくれたお陰で、頼もしいWindows 11のPCが増えてくれたので、もうPC持って部屋を移動するのをやめました。

部屋ごとにそれぞれのPCを置いて、その部屋に居る時はそのPCで作業する...というようにしました。


↑居間ではROG FLOW Z13で作業し、自室ではSurface Go2で作業する...という感じですが、そうするとファイルにボコボコと差分が生じるので、バージョン管理システム(gitHub)無い事にはかなりヤバい感じです。

今まではOneDriveで共有してたんですが、OneDriveは「時として更新が即時に反映されず、変更のタイミングがぐちゃぐちゃになる」という泣き所があり、複数PCで行ったり来たりするのには実はあんまり適してない...

gitHubありがたやです。

仕事ではバージョン管理システムの利用は当たり前田亜季大好きですが、複数PCを均等に使うような事をすると、個人でも(バージョン管理システムが)あると小さな幸せですね。

(カメラ)どんと祭...の前に正月飾りを置いてきました

今日は、お正月飾りを燃やす「どんと祭」の日ですが、お祭りするには気分が全く乗らない年であるので、朝のうちに神社にお正月飾りを置くにとどめました。


↑朝なので当然まだ正月飾りは燃えていませんが、消火用と思われる水缶が置かれており、凍結しておりました。


↑神社にお参りだけして、あとは記念に風景を写真撮影して帰りました。


↑最近カメラは専用機に回帰しているのですが、その中でも、特に本格派の操作性を持ちつつも手のひら小型サイズのPowerShot G5Xを持ち出しました。

PowerShot G5Xは、何度も語っているように、きょうび、処理性能は牧歌的ですが普遍の良さを持つカメラであり、購入当時よりも今の方がずっとずっと好きになっています。