PCは命の綱のように大切ではありますが、今年や来年くらいは何も買えないなぁという思いが強まってます。
原因は、「AI PC」という、AIを基準とした新しいPCの性能指標が登場してしまい、PCがどうなっていくのか全く不透明になってしまったためです。
この手の新しいものって、あわてて飛びつくと「先に飛び込んで偉い」ではなくて、「低スペックの時に高いお金出してよく買ったな」と後ろ足で砂をかけられるのが常。
実際、先日、インテルが意気揚々と発表した「Core Ultraプロセッサ」ことメテオレイクですが、あっという間に時代遅れになってしまいました。
最初に搭載したNPUの性能が、後追いで発表された「AI PC」にはとても届かない低スペック(40 TOPS必要なのに、12 TOPSしか無い)だというのです。
時期的に、今後の新型プロセッサに手を出す意欲を失わせる、あんまりなやり方、という他ありません。
怒り(?)のインテルは、逆転の「ルナレイク」を発表しましたが、今度は、「CPU+NPU+GPUの総合で」120 TOPSをアピールして来たので、NPUの立ち位置がますます分からん。
TOPSが高いと何がどうなるのか、実感もできないうちに、ユーザー置き去りで競争だけ激化させないで欲しい。
アンサーとしては、PCなんぞ買えるけぇ!!今はスマートフォーンを買うわ!!!!ってなりましたのです。
このブログを見て下さった皆様に、心より感謝申し上げます。名前はゲームブログですが、立ち上げ当初に付けた名前を大切に守っているだけで、今や内容は総合的です。(大好きな写真/映像/カメラ、ペン、コンピュータ、食べ物、映画、クルマ、家電製品などなど)。感動した事を素直に書くブログです。 なにとぞ、これからもよろしくお願いいたします。皆様あってのブログです。公開コンテンツもよろしかったらご覧下さい!!■こちらです→(もりもり公開コンテンツ)
2024/06/04
2024/04/07
(PC) ZenBook 13のWindows Updateが失敗し出した!!回復の方法
なんと、ZenBook 13のWindows 11が「Windows Updateのダウンロードエラー」による更新失敗が続くようになってしまった。
結論から言うと、PowerShellを管理者モードで起動して(コマンドプロンプトの管理者モードでもOKのはず)、以下のようにシステムの修復系コマンドを実行したら治りました。
これの実行が終わったら、安心して終了してはいけません。
続いて次のコマンドを実行して終了まで待ちます。
このコマンドを実行し終えたら、ダウンロードエラーで止まっていたアップデートが進行するようになり、再起動するとちゃんとシステムの更新がかかるようになりました。
その後は、Windows Updateを再スキャンしまして、無事にバグってる間に溜まっていたと見られるWindows Updateがダウンロードされて来るようになりました。
あやうく、Windows 11を再インストールするところでした。
システムファイルがどうして破損したのか分からないですが...
結論から言うと、PowerShellを管理者モードで起動して(コマンドプロンプトの管理者モードでもOKのはず)、以下のようにシステムの修復系コマンドを実行したら治りました。
DISM.exe /Online /Cleanup-image /Restorehealth
これの実行が終わったら、安心して終了してはいけません。
続いて次のコマンドを実行して終了まで待ちます。
sfc /scannow
このコマンドを実行し終えたら、ダウンロードエラーで止まっていたアップデートが進行するようになり、再起動するとちゃんとシステムの更新がかかるようになりました。
その後は、Windows Updateを再スキャンしまして、無事にバグってる間に溜まっていたと見られるWindows Updateがダウンロードされて来るようになりました。
あやうく、Windows 11を再インストールするところでした。
システムファイルがどうして破損したのか分からないですが...
2024/01/27
(PC) powerShellによる小技。デスクトップだけ表示や復帰、タスクビューをコマンドで表示する方法
今回の記事は、powerShellによる小技です。
別にコマンドでやらなくとも良いじゃないか、でも、コマンドでやってみたいという小技です。
↑このコマンドを入力すると、デスクトップがパッと表示されます。
↑実行すると、最小化してどかしていたウインドウが元に戻りデスクトップは再び覆われます。
ウインドウの順番はここでは考えないものとします。
ショートカットなんだっけ、おおコマンドなら分かるぞという事もあるし...(ん??)
↑私はよほど頭が悪いのか、ショートカットキーとか、数字の羅列とか覚えられないんですよね。
逆にpowerShellコマンドだと覚えやすい。
まぁ実際は関数とかにして短く使う感じですが...
ちなみに今回もSurface Go2です。
別にコマンドでやらなくとも良いじゃないか、でも、コマンドでやってみたいという小技です。
他のウインドウを最小化し、デスクトップだけ表示する
他のウインドウを全て最小化し、デスクトップだけを表示するコマンドです。
#基本コマンド(一回だけ入力して置けば他のコマンドでも使えます)
$SHELL = (NEW-OBJECT -COMOBJECT Shell.Application)
#ウィンドウをどけて、デスクトップを表示する
(NEW-OBJECT -COMOBJECT Shell.Application).MinimizeAll()
$SHELL.MinimizeAll() #でも良い
逆に、他のウインドウを元に戻す
さっきとは逆に、最小化したウインドウを元に戻して、デスクトップ画面を覆うパティーンが次のコマンドです。
(NEW-OBJECT -COMOBJECT Shell.Application).UndoMinimizeAll()
$SHELL.UndoMinimizeAll() #でも良い
ウインドウの順番はここでは考えないものとします。
タスクビューを表示する
いや別に[Winキー]+[Tab]でええやん、という話なんですが、ぶっちゃけショートカットよりもpowerShellコマンドの方が覚えやすい...時もある、かも知れない。ショートカットなんだっけ、おおコマンドなら分かるぞという事もあるし...(ん??)
(NEW-OBJECT -COMOBJECT Shell.Application).WindowSwitcher()
$SHELL.WindowSwitcher() #でも良い
逆にpowerShellコマンドだと覚えやすい。
まぁ実際は関数とかにして短く使う感じですが...
ちなみに今回もSurface Go2です。
(PC)PS5があれば、Surface Go2も優秀なゲーミングデバイスになる!!
もう私にとっては絶対に無くてはならないPCの「Surface Go2」ですが、ゲーミングからは遠い存在のように思われます。
しかし!!それは思うだけであって、実際にはPS5がありさえすれば!!極めて優秀なゲーミングデバイスになってしまいます!!
とんでもなく非常に簡単でして、ソニーの「リモートプレイアプリ」をインストールして実行する、これだけ!!
↑Surface Go2でリモートプレイアプリを実行するだけ!!
ただし、PC系やPS系は、ユーザーにある程度の知識と責任を求めるのが常でして、リモートプレイアプリが求めるのは「快適に使うためのネットワークは自己責任で用意すること」です。
私の場合は、家の中を複数のルーターで包み込む「メッシュWiFi」を構築し、家の中や周辺(駐車してる愛車の中など)は無線の穴が無いようにしています。
リモートプレイで大きく遅延したり、途切れたり、画質が低下する場合は、文句を言ってると「自分のせい」という自爆になる事もあるのが注意点です。
↑PS5リモートプレイは、当たり前田亜季大好きな話ですが、ゲーミングの処理を全て外部の「超大馬力ゲーミングエンジン=PS5」がやってくれるので、PS5レベルのハイクオリティゲームを、そのまんまPS5が動かしてくれます!!
だから、「サイバーパンク2077」のような高度な処理能力を要求するゲームも、PS5レベルのゲームも、そのままPS5本人が実行してくれるので苦労がありません。
PS5リモートプレイは、確かにゲーミングエンジンが離れているため、遅延などはありますが、メリットの大きさが凄まじいです。
まず、PC本体に負荷が大してかからない。
サイバーパンク2077を実行してても、CPUの「Core m3」や内蔵GPUに大した負荷がかかっていないのはありがたい。
また、ゲームについても、自分がPCをゲームに合わせる努力をするのではなく、逆方向で、メーカーの方がPS5に合わせて全力で調整してくれるので、その安心感たるや盤石です。
PS5は、ご存知、世界最高のゲームコンピューターであり、生まれながらにして高負荷をさばくように出来ている、安心の専用機です。
その力を、汎用性抜群のPCのアプリケーションの一つのように使えるのは、世界が広がって広がって嬉しくて小躍りしてしまうくらい。
↑PCとPS5の組み合わせで、最近の大きな進化と言えば「コパイロット」です!!
PS5をプレイしながら、AIとの対話が、絵に描いた餅なんかではなく、普通にラクラクに出来る!!
未来のPS6ではAIを統合するという話もありますが、別にそこまで待たずとも、PS5ゲームしながらAIと会話したりアドバイスもらったり、こっちの工夫でもうやれているよという感じ。
まぁPS6が今から作り始めているAIを待つより、もうこっちでどんどん活用して行く方が良いかな。
今後の予定じゃなくて、今もうやれている話の方が強いですわな。
PCとPSのコンビネーションは、本当に素晴らしいです。
しかし!!それは思うだけであって、実際にはPS5がありさえすれば!!極めて優秀なゲーミングデバイスになってしまいます!!
Windows 11の中で、PS5という最高のゲーミングが生きる!!
Surface Go2とPS5を連携させるのは、どうやるか。とんでもなく非常に簡単でして、ソニーの「リモートプレイアプリ」をインストールして実行する、これだけ!!
↑Surface Go2でリモートプレイアプリを実行するだけ!!
ただし、PC系やPS系は、ユーザーにある程度の知識と責任を求めるのが常でして、リモートプレイアプリが求めるのは「快適に使うためのネットワークは自己責任で用意すること」です。
私の場合は、家の中を複数のルーターで包み込む「メッシュWiFi」を構築し、家の中や周辺(駐車してる愛車の中など)は無線の穴が無いようにしています。
リモートプレイで大きく遅延したり、途切れたり、画質が低下する場合は、文句を言ってると「自分のせい」という自爆になる事もあるのが注意点です。
↑PS5リモートプレイは、当たり前田亜季大好きな話ですが、ゲーミングの処理を全て外部の「超大馬力ゲーミングエンジン=PS5」がやってくれるので、PS5レベルのハイクオリティゲームを、そのまんまPS5が動かしてくれます!!
だから、「サイバーパンク2077」のような高度な処理能力を要求するゲームも、PS5レベルのゲームも、そのままPS5本人が実行してくれるので苦労がありません。
PS5リモートプレイは、確かにゲーミングエンジンが離れているため、遅延などはありますが、メリットの大きさが凄まじいです。
まず、PC本体に負荷が大してかからない。
サイバーパンク2077を実行してても、CPUの「Core m3」や内蔵GPUに大した負荷がかかっていないのはありがたい。
また、ゲームについても、自分がPCをゲームに合わせる努力をするのではなく、逆方向で、メーカーの方がPS5に合わせて全力で調整してくれるので、その安心感たるや盤石です。
PCのパワーとPS5の安定性が組み合わさって、最強のゲーミング環境爆誕!!
PCからPS5をプレイするメリットは、何と言っても、PCの汎用性をそのまま活用しながら、ゲームはPS5に任せる事が出来る!!PS5は、ご存知、世界最高のゲームコンピューターであり、生まれながらにして高負荷をさばくように出来ている、安心の専用機です。
その力を、汎用性抜群のPCのアプリケーションの一つのように使えるのは、世界が広がって広がって嬉しくて小躍りしてしまうくらい。
↑PCとPS5の組み合わせで、最近の大きな進化と言えば「コパイロット」です!!
PS5をプレイしながら、AIとの対話が、絵に描いた餅なんかではなく、普通にラクラクに出来る!!
未来のPS6ではAIを統合するという話もありますが、別にそこまで待たずとも、PS5ゲームしながらAIと会話したりアドバイスもらったり、こっちの工夫でもうやれているよという感じ。
まぁPS6が今から作り始めているAIを待つより、もうこっちでどんどん活用して行く方が良いかな。
今後の予定じゃなくて、今もうやれている話の方が強いですわな。
PCとPSのコンビネーションは、本当に素晴らしいです。
2024/01/22
(PC) powerShellによる仮想メモリ初期化、Surface Go2だと動く...
前の記事で、ROG FLOW Z13で試して動かなかった「powerShellによる、自作の仮想メモリ初期化スクリプト、VMEM-RESET」ですが、Surface Go2だと普通に動いたので、一応コードを記載させていただきます。
↑動く,..ROGだと何で動かなかったのだろう。
仮想メモリの初期化(クリーンナップ・実行したら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()}
}
2024/01/21
(PC) powerShellで「仮想メモリ」の状況を見る方法(初期化は手動...)
前回の記事で、メインRAM(メモリ)の状況を見たり、クリーンアップする方法を書かせて頂きましたが、今回の記事では、「仮想メモリ」に踏み込んでみたいと思います。
メインRAMは、ぶっとびの超高速ではあるのですが容量が少なく、電源を切ると中身が消えるという泣き所があります。
それをカバーするのが仮想メモリなのですが、こっちはこっちで、ストレージの容量がその分消費されるのと、速度が(たとえGen.4x4の超高速SSDであっても)メインRAMとは桁違いに遅く、仮想メモリを使う状況だと、確実にPCのパフォーマンスが格段に落ちてしまう事にあります。
そういう一般論はともかく、モバイルPCは、まだまだ潤沢なストレージを搭載する気のないモデルも多く、酷いのになると64GBで済ませようとするし、Surface Go2シリーズもメインは128GBと余裕はなく、とても高価なSurface Pro 9ですらも256GBです(超高価なプレミアムモデルは1TBだけど買ってられん)。
仮想メモリの様子を見て、必要なら初期化するのもアリかと思われます。
powerShellは管理者モードで起動して、もしスクリプトファイルにするなら、文字コードはUTF8やShift JISではなく、UTF8 with BOMにすると、Windows PowerShellと、マルチプラットホームのpowerShellの両方で文字コードが共有できます。
↑ROG FLOW Z13で実行してますが、「VMEM」と入力するだけで仮想メモリの状況が分かります。
swapfile.sysが膨らんでいると、メインRAMでは足りない分を肩代わりして膨張したな、という目安になります。
Windows 10まではpowerShellからリセット可能でしたが、同じものはWindows 11では動かなくなっていました。
現状は、いったん手動で以下の方法ですかね。
仮想メモリって何
仮想メモリとは、語弊があるのを承知で一言で言うと「メイン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()}
}
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が必要である事をご了承下さい。
これをROG FLOW Z13で実行すると以下のようになります。
↑タスクマネージャーやARMOURY CREATEを開かなくとも、「MEM」コマンドをpowerShell(管理者モード)でメモリの全体・残量・使用中が見られます。
ここからが本題で、で、見られたからなんなの?という先の話となります。
前の記事のrktools.exeをインストールし、例によって管理者モードでpowerShellを起動するのが前提で、「EMPTY」コマンドを入力すると、メモリが解放されます。
コマンドは以下です。
↑上の方のMEMコマンドを呼び出して、解放後の状況を自動で通知してくれるようにしています。
いつもながら私の勝手な自作なので、内容は自由に変えてやって下さい。
ここがMS PC Managerとの大きな違いです。
もちろん、モグラ叩きという表現の通り、すぐにボコボコ復活してくるので、打つべし、打つべし!!です。
当初、8GB台の消費量があっという間に4GB台に下がったのがお分かりかと思います。
そんな、打つべし、打つべしって、手作業で何回もやってらんねぇ!!という時は、次に自動実行コマンド「AUTO-EMPTY」です。
これはパラメーターが必要で、たとえば1秒間隔であれば「AUTO-EMPTY 1000」とします。
ただ、あんまり頻繁に動かすと、CPUによっては、Excelなどのアプリの実行速度を遅くしてしまう可能性もあるので、10秒間隔がおすすめ。
「AUTO-EMPTY 10000」で10秒間隔となります。
↑ROG FLOW Z13で実行しています。
10秒間隔だと、その間にメモリ使用量が復活して来て、前よりも使用量が多くなったりしてますが。
後ろでこの処理を実行していると、たとえメインRAMを8GBしか搭載してないPCでも、開発用にSQL-Serverをまともに運用できたりします。
SQL-Serverはメモリがなくなるとどうなるか、たとえ一行のSELECT文、一項目のCREATE TABLEでも、結果が数分間も帰って来なくなったりします。
まぁ、マイクロソフト非公開ツールがバックの自作コマンドなので、使って欲しいとはとても言えませんが、このようにして工夫してやってますというエピソードとして捉えてもらえれば幸いです。
メモリを解放するためには、前回の記事で紹介したマイクロソフト公式ツール(現在非公開)の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;
}
いつもながら私の勝手な自作なので、内容は自由に変えてやって下さい。
連打が可能!!ここが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;
}
}
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は、なんと、Windows Server 2003に連動して公式に公開されていたツールで、Windows 10の時代までは公開されていたのです。
名前が怪しい感じですが、正真正銘の、マイクロソフトが公開していた公式ツールです。
このファイルは、現在非公開になっていて、自力であれこれ探さないと見つからないようになっています。
マイクロソフトが非公開にされているのと、運用中の企業サーバーで使ったらどうなるか、私もさすがに試した事がないので、入手方法などはご容赦下さい。
また、利用もそれぞれ環境が異なるために、医薬品のように自分に合うかどうかの自己検証は必要です!!
利用そのものは超カンタンですが、かつての、Windows Mobile搭載スマートフォーンのように、PCの知識レベルで言うと、マキシマム、最高水準レベルの熟練者以外は触れてはいけない類のツールですかねこれ。
ただ前回の記事でも書かせて頂いたのですが、個人的には、以前まで公開されていた「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にもインストールし、(現時点での)最新版を確認してみました。
検索結果画面ですぐにダウンロード出来ました。
↑そりゃあ、今やAIの時代なんですが、AIの教えてくれる情報の確認・比較作業はまだ自己責任なので、従来の観点から使えるサーチエンジンは必要ですよね...
そのサーチエンジンは、思う所あって、Bingにほぼ切り替えています。
↑PCにダウンロードされるファイルを実行するだけで、特に癖のある選択肢なども無く、さくさくとインストールまで完了です。
自動的に起動するかどうかは、一旦OFFにしています。
MS PC Managerは、適用するPCの個体差もあるかもですが、旧バージョンだと挙動が不安定だったので、まだお試し使用ですかね...
期待を込めて最新版を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」をやめるわけにはいかないというのが現状です。
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)powerShellでコンピューターのストレージ利用状況を確認する方法
今回の記事は、powerShellでコンピューターのストレージ利用状況を確認する方法です。
SSDが256GBや512GBもあればそんな気にしなくても良いかも知れませんが、(今はもうほぼ無いかもだけど)64GBのストレージのマシンとかだと、コマンドで頻繁に容量を確認しないと残量不足でヤバい事になるので、コマンドでパッと状況が知れるのは結構良い感じです。
powerShellを管理者モードで開き、STORAGEと入力するだけです。
↑ちなみに、スクリプトファイルに記述しなくとも、このままコマンドをコピーしてpowerShellのウインドウに貼り付けるだけでも実行可能です。
powerShellの画面は複数のスクリプト入力に対応しています。
↑ちなみに複数行のコマンドをドバッと貼り付けようとすると、Windows 10であれば、無言でパッと貼り付くのですが、Windows 11の最新状態だとこのように警告が出てきます。
間違ってクリップボードの中をドバッと入れてしまった、というミスを回避できるので良い仕様になったなぁと。
↑このように複数行のコマンドも貼り付け可能です。
↑実行は「STORAGE」コマンドだけです。
ROG FLOW Z13で実行しているので、SSDが512GBで、メモリカードドライブが512GBの、合計で1TB分のストレージがあります。
512GBは心底ありがたく、何をインストールしても、ストレージ残量にヒリヒリする必要がないのは心の健康になります。
最近まで、ストレージ64GBで散々サバイバルしてたので、512GBのありがたみが骨身にしみます。
余談ですが、初代ROG PHONEって、数年前のスマートデバイスなのにもう512GB搭載してたっけ...ROG凄すぎ。
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の画面は複数のスクリプト入力に対応しています。
↑ちなみに複数行のコマンドをドバッと貼り付けようとすると、Windows 10であれば、無言でパッと貼り付くのですが、Windows 11の最新状態だとこのように警告が出てきます。
間違ってクリップボードの中をドバッと入れてしまった、というミスを回避できるので良い仕様になったなぁと。
↑このように複数行のコマンドも貼り付け可能です。
↑実行は「STORAGE」コマンドだけです。
ROG FLOW Z13で実行しているので、SSDが512GBで、メモリカードドライブが512GBの、合計で1TB分のストレージがあります。
512GBは心底ありがたく、何をインストールしても、ストレージ残量にヒリヒリする必要がないのは心の健康になります。
最近まで、ストレージ64GBで散々サバイバルしてたので、512GBのありがたみが骨身にしみます。
余談ですが、初代ROG PHONEって、数年前のスマートデバイスなのにもう512GB搭載してたっけ...ROG凄すぎ。
(PC) powerShellで初回に知っていると便利なコマンド
powerShellを使おうとすると、初回にあると便利だなぁというコマンドが色々あります。
場合によっては1回しか使わないので、すっかり忘れてしまう事もあるので、備忘録代わりにここに記載させて下さい。
凄いですよね、スクリプトファイルの拡張子が何と.PS1のまま!!
てっきりWindows 7で爆誕したpowerShell 1.xxにあやかってのPS1であり、数ヶ月の暫定処置だろうなぁと思ったら...まさか5.xxの時代になろうとも、マルチプラットホームの7.xxになろうとも、正式に.PS1とは。
Windowsの64bitシステムフォルダがsystem32なのと同じ感じですかね。
普通はプロファイル(初期実行スクリプトファイル)に入れておいて、後は忘れる類のコマンドだと思いますが、途中で好きに変更も可能です。
↑ROG FLOW Z13で実行してます。
こんな感じで、現在のフォルダ名になります。
フルパスにすると便利ですが、プロンプトが長すぎてコマンド入力する場所が無くなる悩みがあるので、私は仕事でもこれにしてます。
場所は簡単で「$PROFILE」と入力するだけでフルパスで表示されます!!
その次の段階の話です。
プロファイルの場所をエクスプローラーで直接開きたい!!場合は以下のコマンドです。
↑ROG FLOW Z13で実行してますが、このようにエクスプローラーがふわっと開きます。
場合によっては、powerShellのウインドウの後ろ側に表示される事があるので、タスクバーの表示に注視です。
なんですが、なんと、初回はスクリプトを格納するフォルダが作られていないんですよね。
一瞬、あまりにもガードがガチガチなので、マイクロソフトはpowerShellを使って欲しくないのかな?と不安になりますが、それは逆で、強力無比なシェルのためこうして門を閉めておかないと怖すぎるという事なんですよね、きっと。
それはそれとして、初回だと「フォルダがないっす」というようなエラーが出てくるんで、以下のように、「無かったら作り、あったら粛々と開く」コマンドで行けます。
初回だけだから別に手作業でいいよと言われたらそれまでですが。
ちなみに、IIは、Invoke-Itemの略称ですが、あまりにもIIしか使わないので正式なコマンド名を忘れてしまった私です。
↑powerShellとSQL-SERVERが大好き。
なんかこう、生まれて初めてパソコンの操作を知った「X68000」のX-BASICやHuman-68Kの思い出が美化されて胸の中に蘇るんですよね。
場合によっては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;
なんかこう、生まれて初めてパソコンの操作を知った「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にして欲しいです。
日本語のメッセージを使っているので、文字コードを間違うとエラーになっちゃうんですよね。
あと管理者モードで動かして欲しいです。
↑ちなみに、ROG FLOW Z13ですが、(ROG専用の設定アプリで)サイレントモードにして運用してるので、Surface Go2と同等の完全無音サイレントです。
冷却ファン全然回さなくとも、液体金属(!!)と、ベイパーチェンバーによる放熱のみで全然間に合う、ROGテクノロジーには脱帽です...
稼働率をパーセンテージで表示するだけでなく、視覚的にバーグラフ表示してます。
ただ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の併用は、そこそこにハードルがあります。
機能的な問題はあるとして、その前段階でパッと出てくるのが何と言っても日本語「文字コードの壁」であります。
以下スクリーンショットですが、上から「Shift_JIS」「UTF8 with BOM」「UTF8」となっておりますが、Windows専用PowerShellだと、UTF8がドカーンと文字化けしているのが分かると思います。
なんでやねんという感じですが、このままだと、見た目だけでなく、スクリプト実行時にエラーが出たりするので日本語使えない事になってしまうという...
↑えー今どき、Windows専用と言えども、UTF8でいいんでないの、と思うと、そうではなかったです。
UTF8文字化けするやんののののの。
UTF8 with BOMでないと、Windows専用版で文字化けしてしまう。
↑マルチプラットホーム版のPowerShellなら、UTF8 with BOM大丈夫なので、両方大丈夫!!
これでいってみようと。
大好きだった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/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について、小さな記事を今後も色々書かせて頂きたいと思います。
この設定してないと、どちらも使えないんですよね。
備忘録になってしまうかもですが、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)早くもgitHub無いとかなり厳しい状況になりました
gitHubを使って、個人でもドキュメントやプログラムソースのバージョン管理をやり出しましたが、もう早くもgitHubが無いとかなり厳しい状況になって来ました。
部屋ごとにそれぞれのPCを置いて、その部屋に居る時はそのPCで作業する...というようにしました。
↑居間ではROG FLOW Z13で作業し、自室ではSurface Go2で作業する...という感じですが、そうするとファイルにボコボコと差分が生じるので、バージョン管理システム(gitHub)無い事にはかなりヤバい感じです。
今まではOneDriveで共有してたんですが、OneDriveは「時として更新が即時に反映されず、変更のタイミングがぐちゃぐちゃになる」という泣き所があり、複数PCで行ったり来たりするのには実はあんまり適してない...
gitHubありがたやです。
仕事ではバージョン管理システムの利用は当たり前田亜季大好きですが、複数PCを均等に使うような事をすると、個人でも(バージョン管理システムが)あると小さな幸せですね。
部屋ごとに違うPC置いて作業してるので、gitHub必須に近い...
ROG FLOW Z13が来てくれたお陰で、頼もしいWindows 11のPCが増えてくれたので、もうPC持って部屋を移動するのをやめました。部屋ごとにそれぞれのPCを置いて、その部屋に居る時はそのPCで作業する...というようにしました。
↑居間ではROG FLOW Z13で作業し、自室ではSurface Go2で作業する...という感じですが、そうするとファイルにボコボコと差分が生じるので、バージョン管理システム(gitHub)無い事にはかなりヤバい感じです。
今まではOneDriveで共有してたんですが、OneDriveは「時として更新が即時に反映されず、変更のタイミングがぐちゃぐちゃになる」という泣き所があり、複数PCで行ったり来たりするのには実はあんまり適してない...
gitHubありがたやです。
仕事ではバージョン管理システムの利用は当たり前田亜季大好きですが、複数PCを均等に使うような事をすると、個人でも(バージョン管理システムが)あると小さな幸せですね。
(PC) gitHubの話。自分より先に別な更新が入ってしまった(コンフリクト)時について!
昨日の記事で、個人でもプログラムソースやドキュメントのバージョン管理をgitHubでもってする話をさせて頂きました。
今回は、そのバージョン管理の真骨頂というか、起きると場合によってはパニクる「コンフリクト(競合)」についての記事です。
承知の上でやってるならともかく、完全に忘れてバリバリの違う変更とかやっちゃうと、場合によってはパニクるヤツです。
こういうのを、コンフリクト(競合)と言いますが、これが起きた時こそが、バージョン管理システムを使っている意味が濃ゆくなるというか、真骨頂と言えるかも知れません。
↑実は今朝、このバッティングをやらかしてしまいました。
ROG FLOW Z13でファイル編集して、gitHubに反映(プッシュ/コミット)したのですが、その前にSurface Go2で別の修正をやってる途中だというのをすっかり忘れてました。
Surface Go2を起動して、gitHub Desktopアプリを開くと...(画面はSurface Go2になります)
↑しまった!!やらかした!!自分(Surface Go2)で編集中のファイルよりも、もっと新しいファイルがgitHubのリポジトリ(ファイルや更新履歴を管理するオンラインの基地)に反映されてるじゃないかー。
こんな時にどうする?!というのが、今回の記事のテーマとなります。
それは「スタッシュ機能」です。
これは何かというと、とりあえず自分のやった変更を「別の場所に退避/セーブ」しておく!!というありがたい機能です。
↑難しい事は何もなく(ここが重要)、スタッシュするか? と質問して来るので、「はい」と答えれば自分が変更したファイルを一発で別の場所に退避してくれます。
↑すると、しのごの言わずに、まずは自分のローカルにあるファイルが、リポジトリに反映されていた「みんなと共通の(正しい)状態」になります。
ここで、まずは状況がひとまず整理されるので、わやくちゃパニックの第一段階が落ち着く感じですね。
次に、じゃあ自分がやってた変更はどこに行ったんだ?!という段階になるわけですが...
↑View stashというボタンを押すと、コンフリクト(競合)したファイルと、どのようにコンフリクトしているのか?という状態が見えるように表示されます!!
↑このように、ただコンフリクトしてるよ終わり、ではなくて、どこがコンフリクトしちゃってるのか?というのも分かりやすく表示してくれるのが、バージョン管理システム(gitHubはその一種)の腕の見せどころです。
このあたりの見せ方の違いで、色々あるバージョン管理システムに、それぞれ人によって好き嫌いが出てくるポイントでもありますね。
コンフリクトしているのは分かったが、その変更はやっぱり必要なので残したい(Restore)か、もう破棄してなかった事にする(Discard)かを選択します。
問題は、やっぱり必要なので残したい(Restore)を選んだ時ですね...そりゃそうだ。
↑コンフリクトしてしまったら、どのように解決するのかは個人の判断になりますので、自動でどうこうではなくて手作業での解決を自力でやる必要があります。
将来的には、AIが全部見てて全自動になるかも知れませんが、今は、人力での解決が必要です。
いきなり外側からエクスプローラーで当該ファイルを開いても何にもならないので、gitHub Desktopの中から、当該ファイルを右クリックメニュー>Open in Visual Studio Codeで、コンフリクト情報付きのファイルを開きます。
いつも思うんですが、ついこの間生まれたばかりと思っていたVisual Studio Codeですが、あっという間に定番エディタになりましたねー。
↑Visual Studio Codeを、gitHub Desktopから開くと、コンフリクトしている部分が「マーカー」としてテキストにて提示されていますので、思ったように修正して行けばOKです。
<<<<<<< Updated upstream というマーカーごと緑色にシェードされている部分が、リポジトリ側の内容です。
>>>>>>> Stashed changes というマーカーごと青色にシェードされている部分が、スタッシュされた側の内容です。
リポジトリ側をやめたければ、そっちをマーカーごと削除し、逆ならスタッシュ側をマーカーごと削除すれば良いです。
↑スタッシュした内容を修正し、コンフリクトが無くなると、このように「No content changes found」と表示されて、綺麗になります!!
今回は、そのバージョン管理の真骨頂というか、起きると場合によってはパニクる「コンフリクト(競合)」についての記事です。
今のPCで変更中のファイルなのに、他のPCで別の変更入れてしまった!!(コンフリクト)
私のように、3台のPCの間で、気ままに同じファイルを更新するような事をやってるといつか遭遇するのが、「今のPCで変更中のファイルなのに、先に他のPCで変更しちゃった!!」というバッティングです。承知の上でやってるならともかく、完全に忘れてバリバリの違う変更とかやっちゃうと、場合によってはパニクるヤツです。
こういうのを、コンフリクト(競合)と言いますが、これが起きた時こそが、バージョン管理システムを使っている意味が濃ゆくなるというか、真骨頂と言えるかも知れません。
↑実は今朝、このバッティングをやらかしてしまいました。
ROG FLOW Z13でファイル編集して、gitHubに反映(プッシュ/コミット)したのですが、その前にSurface Go2で別の修正をやってる途中だというのをすっかり忘れてました。
Surface Go2を起動して、gitHub Desktopアプリを開くと...(画面はSurface Go2になります)
↑しまった!!やらかした!!自分(Surface Go2)で編集中のファイルよりも、もっと新しいファイルがgitHubのリポジトリ(ファイルや更新履歴を管理するオンラインの基地)に反映されてるじゃないかー。
こんな時にどうする?!というのが、今回の記事のテーマとなります。
まずは「スタッシュ」という機能を使います!!スタッシュあれば怖くない?!
こんな時は、慌てず騒がず、救済措置があります。それは「スタッシュ機能」です。
これは何かというと、とりあえず自分のやった変更を「別の場所に退避/セーブ」しておく!!というありがたい機能です。
↑難しい事は何もなく(ここが重要)、スタッシュするか? と質問して来るので、「はい」と答えれば自分が変更したファイルを一発で別の場所に退避してくれます。
↑すると、しのごの言わずに、まずは自分のローカルにあるファイルが、リポジトリに反映されていた「みんなと共通の(正しい)状態」になります。
ここで、まずは状況がひとまず整理されるので、わやくちゃパニックの第一段階が落ち着く感じですね。
次に、じゃあ自分がやってた変更はどこに行ったんだ?!という段階になるわけですが...
↑View stashというボタンを押すと、コンフリクト(競合)したファイルと、どのようにコンフリクトしているのか?という状態が見えるように表示されます!!
↑このように、ただコンフリクトしてるよ終わり、ではなくて、どこがコンフリクトしちゃってるのか?というのも分かりやすく表示してくれるのが、バージョン管理システム(gitHubはその一種)の腕の見せどころです。
このあたりの見せ方の違いで、色々あるバージョン管理システムに、それぞれ人によって好き嫌いが出てくるポイントでもありますね。
コンフリクトしているのは分かったが、その変更はやっぱり必要なので残したい(Restore)か、もう破棄してなかった事にする(Discard)かを選択します。
問題は、やっぱり必要なので残したい(Restore)を選んだ時ですね...そりゃそうだ。
↑コンフリクトしてしまったら、どのように解決するのかは個人の判断になりますので、自動でどうこうではなくて手作業での解決を自力でやる必要があります。
将来的には、AIが全部見てて全自動になるかも知れませんが、今は、人力での解決が必要です。
いきなり外側からエクスプローラーで当該ファイルを開いても何にもならないので、gitHub Desktopの中から、当該ファイルを右クリックメニュー>Open in Visual Studio Codeで、コンフリクト情報付きのファイルを開きます。
いつも思うんですが、ついこの間生まれたばかりと思っていたVisual Studio Codeですが、あっという間に定番エディタになりましたねー。
↑Visual Studio Codeを、gitHub Desktopから開くと、コンフリクトしている部分が「マーカー」としてテキストにて提示されていますので、思ったように修正して行けばOKです。
<<<<<<< Updated upstream というマーカーごと緑色にシェードされている部分が、リポジトリ側の内容です。
>>>>>>> Stashed changes というマーカーごと青色にシェードされている部分が、スタッシュされた側の内容です。
リポジトリ側をやめたければ、そっちをマーカーごと削除し、逆ならスタッシュ側をマーカーごと削除すれば良いです。
↑スタッシュした内容を修正し、コンフリクトが無くなると、このように「No content changes found」と表示されて、綺麗になります!!
登録:
投稿 (Atom)






















































