PMPの流儀

我が家の流儀

我が家で気になったことを夫婦で取り上げていきます

MENU

Programming

WPFでのデータの持ち方(MVVMのMODEL)

WPF アプリケーションでのデータの持ち方を紹介します。 MVVM の利用有無にかかわらず、アプリケーションのデータをどこでもつか悩みどころです。WPFはフレームワークによるコードの隠蔽化が WinForm より顕著なため、どこからプログラムがスタートするさえ…

WPF Bindingと依存関係プロパティを理解する

WPFの初歩であり難関でもある Binding について仕組みを探ってみます。 はじめに WPF が登場したのは 2006年。約20年の歴史がありますがいまだにメジャーになり切れておらず、いまだにレガシーなFormが使用されています。WPF では MVVM (Model - View - View…

C# スレッドセーフで低負荷なログ出力クラス

C# でマルチスレッド対応の Logクラスを紹介します。また、ログの書き込み処理を別スレッドに実装し、ログ書き込み負荷を抑えます。スレッドセーフとはマルチスレッドでどんなタイミンクでコールされても機能が保証されていることを示します。 概要 ログクラ…

PowerShell で 複数のPowerPoint を結合・連結・マージ

PowerShellから 複数のPowerPoint を連結するプログラムを紹介します。PowerShellの強力なファイル処理を使う事で簡潔に書くことができます。 1.仕様 2.ソースコード 3. 解説 1.仕様 スクリプトのディレクトリ上の pptx から頭が数字のファイルを抽出し、ソ…

プロセスとマルチスレッドの違いについて

WindowsなどのOSが持つプロセスとスレッドの関係について解説します。またCPU用語で最近8core 16thread などのスレッドという単語も出てきていますが、その関係についても触れます。 1. プロセスとは 1.1 メモリ空間 1.2 CPUレジスタ情報 1.3 プロセスの欠点…

C++クラスによるマルチスレッドのデザインパターン

C++によるマルチスレッドプログラムのデザインパターンについて紹介します。マルチスレッドはうまく使えば便利ですが、理解が不完全だと簡単にアクセス違反などの例外が発生します。クラスによるカプセル化によりマルチスレッドの複雑さを限定的にすることで…

【日付計算】何日後、何日前の日付計算を極める by C言語

今日から1万日後の日付けは何日か ?というような日付計算を1から考えました。C#なんかだとライブラリがありますが、あえてC言語でアルゴリズムを考えてみます。最初はシンプルに実現し、完成系は足す値に寄らない高速演算を目指します。日付計算は簡単なよう…

PowerShell フォルダから特定のファイルを抽出

PowerShell をつかうとフォルダ内から条件に一致するファイルを抽出する事が簡単にできます。最大の特徴であるオブジェクトをパイプ渡しする事で、簡潔に記載できるところがポイントです。Where-Object の ? と、For-Each の % を組み合わせることで、様々な…

PowerShell 数値の2進数文字列 取得関数(パイプライン対応)

PowerShell で数値を2進数文字列に変換する関数を紹介します。桁数合わせや間にスペースを入れて見やすくしています。最終形態はPowerShellらしくパイプラインに対応します。 1. 単純な例 2. 自作関数 3. パイプライン対応版 1. 単純な例 PowerShellで2進数…

ネットワーク上のPowerShellスクリプトをバッチファイルから起動する

ネットワークにあるPowerShellスクリプトをバッチファイルから起動する方法を紹介します。PowerShellスクリプトと起動用バッチファイルをセットでどこに配置しても動作する汎用性を持たせます。 概要 解説 解決策1 ネットワークドライブ 解決策2 環境変数 概…

PowerShell ログ出力クラス (前の行からの経過時間つき)

PowerShellで便利なログ出力クラスを紹介します。関数でも良かったのですが、ファイル名称を保持するためにクラス化してすっきりさせました。時間情報と合わせて前の行からの経過時間付きです。 クラスについて ロギングフォーマット コード クラスについて …

C言語でgoto文を適切に使うとメリットがあります

C言語を筆頭として多くのプログラム言語にはgoto文と呼ばれる命令があります。にもかかわらずプログラム界からは長い間忌み嫌われるタブーな命令として君臨しています。 多用すると収拾がつかなくなるのは確かですが、適切な場面(多重ループからの脱出と異常…

PowerShell から Excel を操作(オートメーション)

PowerShell から、Excel をVBAのように使う事が出来ます。VBAよりも PowerShellが好きって方に紹介します。 Excel をプログラムで操作する サンプルプログラム PowerShellとVBA Excel をプログラムで操作する Excelの実体は、COMインターフェースと呼ばれる…

Windows10 標準機能で、ログイン時に音量を下げる方法 (PowerShell)

ログイン時にPCの音量を自動的に下げる方法を紹介します。ツールなどは不要でWindows10の素の状態のままできるのでインストールが禁止されている会社のPCでも安心です。 大きな音がして驚かれた経験がある方はどうぞ 1. 概要 2. スクリプト準備 2.1 AudioVol…

PowerShell CSVファイルにアクセスする

PowerShellからCSVファイルを開いて内容にアクセスする方法を紹介します。以前はWindowsにはテキストのストリームを扱うツールがないため、awk やsed などUnix系のコマンドを使っていましたが、PowerShellでも簡単にアクセスができます。 CSVファイル まずは…

PowerShell UIAutomation Extensionsでアプリを操作(オートメーション)

アプリケーションのウインドウ操作は分かりすく使いやすいですが、同じ作業を何度もやるのは苦痛です。Excelのようにオートメーション機能があるものは限られています。今回は PowerShell から、Win32アプリケーションを操作(オートメーション)する方法を紹…

PowerShell バックアップと過去データの削除

データのバックアップと、古いバックアップを削除するバッチ処理を紹介します。バックアップには定番のrobocopyを使用します。古いディレクトリの削除をどう実現するかがポイントです。 バッチファイルとPowerShellの両方の形式で記載して、両者の違いを比較…

PowerShell 文字コードを16進数に変換する

PowerShell で文字コードを16進数に変換する方法です。 文字を[byte]型に変換した後に、16進数の文字列化をしています。[Convert]は、.Net Framework のクラスです。.Net Frameworkを自由に使えるのはとても便利です。 [char]'A'..[char]'Z' | % { [byte]$_}…

PowerShell 空き(フリー)ドライブレターを探す

PowerShell にてネットワークなどのUNCパスを取り扱う時に、ネットワークドライブに割り付けをしてからローカルドライブとして取り扱う時があります。 Zなど固定で済ませたいところですが、汎用化を考えて空きのドライブレターを探す関数を作ります。 PowerS…

PowerShell ショートカットファイルを実行する

PowerShell からショートカットファイルのリンク先を実行する方法を紹介します。 まず、ショートカットはWsh(Windows Script Host) の力を借りてフィルター関数を作成します。フィルターを作っておくと、パイプとしても使えるのでPowerShellとの親和性が高く…

PowerShell 関数に複数の引数を参照渡し

PowerShellは一癖ある言語で、文法が少し違うのため戸惑う事が多いです。関数に参照渡しの引数を使うのも一苦労。 新しい言語ではこういう基本的なところではまってしまうんですよね。 STEP1 参照に ref をつけるのは、C#等と同じ概念です。こんな感じでコー…

VBA から PowerShell スクリプトをウインドウ非表示で起動する

VBAからPowerShellのスクリプトをウインドウ非表示で起動する方法を紹介します。 PowerShellを非表示で起動するには、こちらで紹介している通りWSHを経由させます。 pmp-style.hatenablog.com その結果、VBA → WSH → PowerShell というコール順になります。 …

PowerShell 実行時にウインドウを非表示にする方法

PowerShell スクリプト実行時は必ずPowerShellのウインドウが開きます。スクリプトをタスクスケジューラーで実行させるようなケースではウインドウが表示されるのは避けたいものです。 PowerShell をウインドウ非表示で実行する方法を紹介します。 スクリプ…

PowerShell プロセスのCPU使用率を取得する

PowerShell でプロセスのCPU使用率を監視することができます。Get-Counter コマンドでパフォーマンスモニタの値を簡単に取得することが可能です。 メモ帳を起動してCPU使用率を監視し続ける 起動した後に、メモ帳のウインドウサイズを変更してみるとCPUの使…

UI Automation PowerShell Extensions の配布サイト

最近 PowerShellがマイブームです。 中でもWin32アプリでもなんでもオートメーションが容易にできる Extension パックが気に入っています。 本家が閉鎖され、今はここで最終版が公開されています。 UI Automation PowerShell ExtensionsのDownload(再配布) –…

C++演算子オーバーロードのサンプル

C++ 演算子のオーバーロードのサンプルを紹介します double 型のラッパークラスとして Double 型を作成します。 なるべく標準型の演算子と同じ意味になるようにするのと、コールコストを減らすためにきめ細かいメンバー関数を準備することが必要になります。…

C++独立性の高いクラス設計(インターフェース)

C++はC言語にオブジェクト指向を無理やり付け加えたため落とし穴が至る所にある言語です。だからといって駆逐されてはおらず、速度を求めたり軽くする個所に必要です。 C++の問題点の認識とそれを解決するクラス設計を紹介します。 C++のクラス設計での問題…

(fciv)複数のファイルのハッシュリストを作成する

マイクロソフトから公開されているツールで複数のファイルをまとめてハッシュ値を取得して保存することができます。 ファイルの整合性確認に使用できます。 ダウンロード https://support.microsoft.com/ja-jp/help/841290/availability-and-description-of-…

社外でMicrosoft Teams, OneDrive を自動起動しない方法

コロナウイルスの影響でリモートでパソコンを使用する機会が増えています。Office365を導入している会社では Microsoft Teams を使用している方も多いでしょう。社外で集中して仕事をするときには起動したくない時があります。ぶっちゃけ仕事外の私用で起動…