potisanのプログラミングメモ

プログラミング素人です。昔の自分を育ててくれたネット情報に少しでも貢献できるよう、情報を貯めていこうと思っています。Windows環境のC++やC#がメインです。

2022-01-01から1年間の記事一覧

HTML&JavaScript コメント要素を抜き出す

DOM中のコメント要素はnodeTypeがNode.COMMENT_NODEのノードとして扱われます。なので親要素のchildNodesから取得できます。 // .parent要素からコメント要素を取得する。 const parentNode = document.querySelector(".parent"); const comments = Array.fr…

ExcelVBA 選択範囲のハイパーリンク設定/解除

Excelで選択範囲のハイパーリンクを設定または解除するVBAコードです。よくあるコードです。 Option Explicit Public Sub 選択範囲のハイパーリンク設定() If Not TypeOf Selection Is Range Then MsgBox "セル範囲が選択されていません。", vbExclamation R…

PowerShell7 URL Protocol値の設定されたProgIDを列挙する

レジストリでURL Protocol値の設定されたProgIDを列挙するコードです。Get-ItemPropertyコマンドレットは-Nameに配列を与えれば対応する複数値を取得できることを利用しています。 # 呼び出し側のスコープにHKCRを登録します。 function Register-HKCR { [Ou…

ImageSharpがライセンス変更により.NET財団を離脱

C#

ImageSharpがライセンス変更により.NET財団を離脱したそうです。AngleSharpが.NET財団のメンバープロジェクトであることに安堵していましたが、こういうこともあるみたいです。 経緯や.NET財団のコメントは公式ブログで確認できます。OSSや年間総売上が一定…

C++20&Win API ビデオキャプチャデバイスの情報を取得する

DirectShowを使ってビデオキャプチャデバイスの情報を取得するコードです。ネット上で様々な方がコードを公開しているコードをWIL対応にしたようなコードです。一部の情報はMicrosoft Docsの「キャプチャ デバイスの選択」を参考にしています。 #include <string> #d</string>…

PowerShell7 登録された拡張子のProgIDとProgIDの概要を取得する

PowerShell 7で登録された拡張子のProgIDとProgIDの概要を取得するサンプルコードです。-Pathと-LiteralPathの挙動の違い、Get-ItemPropertyによる高速化(Get-ChildItem比)等を確認するためのコードです。 #呼び出し側のスコープにHKCRを登録します。 func…

C++20&Win API 無線ネットワークのシグナル品質を列挙する

ネイティブWiFi APIを使って無線ネットワークのシグナル強度を列挙するコードです。いくつかのネイティブWiFi APIは独自メモリに確保した構造体に可変長配列を持ちますが、std::unique_ptrとstd::spanを使えば可読性と安全性をまとめて担保できます。 シグナ…

C++20&Win API ファイルセキュリティのグループ名またはユーザー名をまとめて取得する

ファイルのセキュリティ記述子に含まれるグループ名またはユーザー名をまとめて取得するコードです。実際には個々のACEから名前を取得して、それをstd::setでまとめています。 #include <array> #include <string> #include <set> #include <vector> #define STRICT #define NOMINMAX #in</vector></set></string></array>…

C++20&Win API ファイルセキュリティのグループ名またはユーザー名をACE毎に取得する

ファイルのプロパティ、セキュリティタブのグループ名またはユーザー名に表示される名前をACE毎に取得するコードです。セキュリティ記述子とDACLの学習用でもあります。 コード メモ コード #include <array> #include <string> #include <vector> #define STRICT #define NOMINMAX </vector></string></array>…

C++23Preview&Win API ローカルコンピューターのデバイス列挙子とデバイスIDリストの取得

CM系のAPIを使用してローカルコンピューターのデバイス列挙子とデバイスIDリストを取得するコードです。C++23で導入予定のstd::ranges::toを使用しています(MSVCのPreview版)。 #include <ranges> #include <algorithm> #include <iostream> #include <string> #include <vector> #define STRICT #define</vector></string></iostream></algorithm></ranges>…

scales 1.2.1.9000 関数一覧

gpplot2と組み合わせて威力を発揮するscales 1.2.1.9000の関数一覧です。俯瞰するためのものです。 分類された読みやすい詳細はScale Functions for Visualization • scalesのFunction reference • scales、CRANのリファレンスマニュアルをご確認ください。 …

NumPy 1.23 配列作成ルーチンメモ

NumPy 1.23のAPIリファレンスには配列作成のセクションがあり、配列作成に関する関数が7個の分類に分けて紹介されています。ここではその分類に従い、各関数の概要と使用例を紹介します。 現状は公式リファレンスの一部意訳です。詳しい使い方は公式リファレ…

Python3 PEファイルの情報を取得するクラス

標準ライブラリのみ使用してPEファイルの情報を取得するクラスのコードです。現状ではインポート、エクスポート情報のみ対応しています。おそらくインポート情報を持たないファイルだとエラーが発生します。 #test.py from pefileinfo import * with PEFileI…

Python3 more-itertoolsのfirst/first_trueで条件に一致する最初の要素を取得する

Python 3にはmore-itertoolsという外部ライブラリがあり、itertools標準ライブラリでコードのみ紹介された関数やその他の便利な関数が提供されています。この記事はfirstとfirst_trueの紹介です。 more-itertoolsのfirstにジェネレーター式を指定すればC++の…

Python3 リストやタプルの作成はfor構文を[...]*n or 内包表記に変えると要素の型指定が省略できる

型指定してコードを書く場合、for構文でひとつひとつ要素を追加するよりも[...]*nや内包表記、ジェネレーター式+tuple()を使った方が要素の型指定も省略できます。 VSCodeでは次のコードでlist[int]やtuple[int, ...]などが推論されます。 #list1は型指定し…

GitHubでしでかしました

GitHubを個人的な保管庫としてだけ使う方は頻繁にログアウトすることを推奨します。 ログイン状態であることに気付かず変な操作をして、他の方のリポジトリに迷惑をかけました。 具体的には間違えてRevert Changesしました。 キャンセル方法が分からなくてミ…

AngleSharp、JSON.NET、ML.NET、Infer.NETは.NET財団のプロジェクト

C#

AngleSharp、Json.NET、ML.NET、Infer.NET、気づいたらMicrosoft主導の.NET財団のプロジェクトになっていました。AngleSharpは企業ベースだと思いこんでいたので、これまでより使いやすくなりました。 .NET Bioなどの知らなかったプロジェクトもあるので、時…

Python 3&Pandas 1.4.4&SciPy 1.9.1 平均値・標準偏差・標本サイズを持つデータフレームに母平均の95%信頼区間を追加する

平均値・標準偏差・標本サイズを持つデータフレームに母分散既知・未知(標準分布とt分布)の母平均の95%信頼区間を追加するコードです。 from scipy import stats import pandas as pd df = pd.DataFrame({ "mean": (0, 1, 2, 3), "sd": (1, 10, 1, 10), "n…

Python 3&Pandas 1.4.4 データフレームは[]とloc[]でタプルによる列指定結果が違う

Pandas 1.4.4ではデータフレームの列名による列指定に[]とloc[]が使えますが、これらはタプルで列名を指定したときの動作が異なります。[]はタプルをひとつのキーとして扱い、loc[]はデータフレームの持つ列名により動作を変えます。前者はデータフレームが…

Python 3 tkinterでWhiteBrowserの簡単な操作を提供するGUIアプリケーション

2022/12/5更新:タグファイルの作成対応、WBDirInfoクラスの作成、設定ファイル及び一部変数名のアンダーライン削減。 動画管理ソフトWhiteBrowserの簡単な操作を提供するGUIアプリケーションです。Python標準ライブラリーtkinterモジュールの練習で作成して…

Python 3 tkinterのbind("<1>", ...)は左クリックでなく左ボタン降下

tkinterのbind("<1>", ...)あるいはbind("<Button-1>", ...)は左クリックではなく左ボタン降下です。この方法でコールバック関数からポップアップメニューを呼び出すとボタンの表示が降下状態のままになります。 左クリックを検出したい場合はButton(..., command=...)</button-1>…

R&tidyverse ggplot2::stat_smooth既定のLOESSは惰性学習

ggplot2のstat_smooth関数でmethod引数の既定値として使われるLOESSは惰性学習(lazy learning)だそうです。k近傍法と同じで、与えられたデータ自体をモデルとします。回帰分析のように係数を求めたりはしません。 PCAと併用してとりあえず分類するような場…

C++20&Win API SHGetNameFromIDList関数で項目の表示名を取得する

シェル項目の表示名を取得するにはSHGetNameFromIDList関数を使えます。C++環境ではIShellItemインターフェイスを使いますが、Pythonなどでインターフェイスを介したくない場合に便利です。 #include <format> #include <iostream> #define STRICT #define NOMINMAX #include <Windows.h> </windows.h></iostream></format>…

Python 3 ctypesは関数のrestypeにctypes.HRESULTを指定すると自動でエラーを発生する

ctypesモジュールは関数のrestypeにctypes.HRESULTを指定すると戻り値がエラーの場合に自動でraiseするようです。エラーの発生時は手動で握りつぶそうとしていたのですが、可読性のためにctypes.c_intをctypes.HRESULTに変えたらOSErrorが発生するようになり…

R&ggplot2 qqplotrのプロットをpurrrで結合してpatchworkで表示する

qqplotrのプロットをpurrrで結合してpatchworkで表示するコードです。要は次の図を関数主体で作成するコードです。 コード コードの説明 qqplotrパッケージとqqplotr::stat_qq_*関数 ggplot(data, aes(...=!!sym(変数))) | コード library(purrr) library(gg…

C++20&Win API&WIL HTTPSプロトコルのコンテンツを取得する

WinINet APIを使用してHTTPSプロトコルのコンテンツ(https://~)を取得するコードです。 #include <string> #include <span> #include <optional> #include <vector> #define STRICT #define NOMINMAX #include <Windows.h> #pragma comment(lib, "wininet.lib") #include <wininet.h> #include "wil/resource.h" </wininet.h></windows.h></vector></optional></span></string>…

C++20&Win API&WIL IUIAutomationElementを列挙する

COMとWILを使ってIUIAutomationElementを列挙するコードです。 実行例(ExplorerPatcher起動中) Source.cpp #include <format> #include <iostream> #include "string_util.hpp" #define STRICT #define NOMINMAX #include <Windows.h> #include <UIAutomation.h> #include "stl_win.hpp" #include "wil/c</uiautomation.h></windows.h></iostream></format>…

C++20 円柱モデルHSV色クラスとHSV四角形の描画

円柱モデルのHSV色を扱うクラスとそれを利用したHSV四角形(V固定)の描画サンプルです。RGBとHSVの変換はWikipediaのコードを使用しています。 HSVをH:[0, 360)、SとV:[0, 1]で扱うとRGBも[0, 1]で扱う方が簡単です。そのため、[0, 1]のRGBと[0, 255]のRG…

R&tidyverse&openxlsx xlsxファイルのテーブルを読み込む

xlsxファイルでテーブルの名前からデータを読み込むコードです。テーブルの名前からシート名とA1形式範囲の取得はopenxlsx、シート名とA1形式範囲の読み込みにはreadxlを使用しています。 カレントディレクトリに「テーブル1」テーブルを持つxlsxファイルを…

Python&SciPy&matplotlib 2つの正規分布の交点を求めて垂線を描画する。

SciPyとmatplotlibの学習で書いたコードです。実行すると2つの正規分布の解(根)を求め、グラフに交点から横軸への垂線を描画します。根の存在を前提としてコードを簡略化しています。ここではscipy.optimize.root_scalarを使用しますが、sympyを使う方法も…