potisanのプログラミングメモ

趣味のプログラマーがプログラミング関係で気になったことや調べたことをいつでも忘れられるようにメモするブログです。はてなブログ無料版なので記事の上の方はたぶん広告です。記事中にも広告挿入されるみたいです。

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

Python&SciPy&matplotlib 2つの正規分布の曲線と重複領域を描画する

SciPyとmatplotlibの学習で書いたコードです。実行するとパラメーターの異なる2つの正規分布とそれらの重複領域を描画します。 import numpy as np from scipy.stats import norm import matplotlib.pyplot as plt # 正規分布のPDF f1 = lambda x: norm.pdf(…

Python&SciPy&matplotlib 正規分布の曲線と下側・上側2.5%領域の塗りつぶし

SciPyとmatplotlibの学習で書いたコードです。実行すると標準正規分布と下側・上側2.5%領域を描画します。 import numpy as np from scipy.stats import norm import matplotlib.pyplot as plt # 正規分布で使う平均値と標準偏差 mean_sd = (0, 1) # グラフ…

C++20&Win API&WIL AMSIプロバイダーのCLSIDと表示名を取得する。

WindowsのAMSI(マルウェア対策スキャンインターフェイス)プロバイダーのCLSIDと表示名を取得するコードです。AMSIについてはMicrosoftの公式ドキュメントを参照ください。 #include <string> #include <vector> #define STRICT #define NOMINMAX #define WIN32_LEAN_AND_ME</vector></string>…

JavaScript クラスのインスタンスからクラスのオブジェクトを取得する

インスタンスのconstructorプロパティでクラスのオブジェクトを取得できます。このオブジェクトを操作すればクラスのオブジェクトプロパティを操作できます。 class Class1 { static X = 123; } const a = new Class1(); console.log(a.constructor.X) //-> …

R 標準ライブラリ・tidyverse系のチップス

Rの自分用チップスです。ちょっとずつ増やしていきたいです。 ベクトルの末尾/先頭N個以外を取り出す ベクトルのインデックスベクトルを安全に返す。 文字列ベクトルを変形する パッケージの関数名一覧を返す。 Rのベースパッケージを検索する summary(lm(.…

JavaScript Canvas APIでアナログ時計を描画する(カスタム要素仕様)

JavaScriptのCanvas APIでアナログ時計を描画するコードです。カスタム要素も使用しています。 本来は類似名前空間やむき出しのオブジェクトよりもモジュールを使った方が適切ですが、ローカルでのデバッグが面倒なので通常のスクリプトとして分割しています…

JavaScript new Boolean(false) === true

JavaScriptには論理型(boolean)のオブジェクトラッパーであるBooleanクラスが存在しており、プリミティブ型のbooleanとは異なる動作をします。Booleanクラスのインスタンスは保持する値に関わらずtrulyです。 console.log(new Boolean(false) === false) /…

JavaScript &&と||はfalsyまたはtrulyを返す(false/trueとは限らない)

JavaScriptの&&と||はC/C++の&&と||と微妙に異なる動作をします。 類似点:左から右へ順次評価する。評価が左側で終われば右側は評価されない。 相違点:結果は最後に評価した値そのもの(C/C++ではtrue/false)。 類似点は次のコードで確認できます。&&では…

C++23 std::optionalのand_then、or_else、transform

C++23ではstd::optionalにand_then、or_else、transformが導入されるそうです。 and_thenはstd::optionalが有効値の場合に変換処理を実行した結果を返します。or_elseはstd::optionalが無効値の場合に変換処理を実行した結果を返します。いずれも変換処理はs…

C++20&MSVC 範囲for文でco_yieldを使う場合は参照で受け取る

MSVCはC++20でもジェネレーターが使えるようにexperimental機能としてstd::experimental::generator<T>を提供しています。このクラスを使うとco_yieldで簡単にジェネレーターを実装できますが、範囲for文と組み合わせる場合は参照で受け取った方が良さそうです</t>…

C# JPEGファイルEXIFデータのWindows用評価とキーワードを取得・設定・削除する

JPEGファイルEXIFデータのWindows用評価とキーワードを取得・設定・削除するサンプルコードです。 #nullable enable using System; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Runtime.Serialization; using Syste…

C# System.Drawing.Imaging.PropertyDataのインスタンスを作成する

System.Drawing.Imaging.PropertyDataはJPEGファイルのEXIFデータを取得・設定する際に必要ですが、コンストラクタが非公開なので通常の方法ではインスタンスを作成できません。これはSystem.Runtime.Serialization.FormatterServicesのGetSafeUninitialized…

C# P/InvokeとCOM呼び出し時、UnmanagedType.LPWStrは強制的にMarshal.FreeCoTaskMemされる

P/InvokeとCOM呼び出し時、UnmanagedType.LPWStrのMarshal.FreeCoTaskMemは不要らしいです。CoTaskMemFreeが必要なLPWSTRはout IntPtrやout SafeHandleで受け取らなくても、out stringで受け取れば自動でMarshal.FreeCoTaskMemされるそうです。 ただし複数回…

C++20&WinAPI &WIL Shell.Applicationでエクスプローラーウィンドウの情報を取得する

Shell.Application(CLSID_Shell)でエクスプローラーウィンドウの情報を取得するサンプルコードです。 VBやC#経由で使う場合はIDispatchを使って名前からメンバーを参照することが多いですが、ここではインターフェイス(IShellWindows、IWebBrowser2)を取…

R&tidyverse tibbleに条件分岐で列を追加する

Rとtidyverse 1.3.1でtibbleに条件分岐で列を追加するサンプルコードです。case_whenは%>% case_when(条件式~値, ...)の形式で条件を満たす値を返します。最後のTRUE~NA_real_はどの条件にも一致しない要素の値を指定しています。NA_real_がNAではないのはca…

ASP.NET Core RazorPages OnPostの注意

RazorPages初心者によるOnPostの注意です。 OnPostはpublicでないと無視される。少なくとも省略(internal)ではOnPostが呼び出されなかった。 OnPostはPOST時にOnGetの代わりに呼び出される。順番に両方呼び出される訳ではない。※ドキュメント未確認 ページ…

公開データ 札幌市の住民基本台帳閲覧状況 委託者

きっかけ オリンピック意向調査の結果を見ようと札幌市のウェブサイトを検索していたら住民基本台帳の閲覧状況が見つかりました。行政機関に混じって野村総研が混じっていることが気になったので概要を確認してみました。 結論 委託者の多くは行政関係(NHK…

C++20&Win API&WIL バッテリーデバイスの名前を列挙する

C++20・Win API・WILでバッテリーデバイスの名前を列挙するサンプルコードです。 #include <functional> #include <string> #include <vector> #define STRICT #define NOMINMAX #include <Windows.h> #include <SetupAPI.h> #pragma comment(lib, "SetupAPI.lib") #include <devguid.h> #include <initguid.h> #include <devpkey.h> #include "wil/</devpkey.h></initguid.h></devguid.h></setupapi.h></windows.h></vector></string></functional>…

C++20&Win API&WIL Process Snapshot APIでプロセスのハンドル型・オブジェクト名を列挙する

Process Snapshot APIを使ってプロセスに所属するハンドルの型やオブジェクト名を列挙するサンプルコードです。 #include <algorithm> #include <filesystem> #include <string> #include <memory> #include <vector> #define STRICT #define NOMINMAX #include <Windows.h> #include <Psapi.h> #include "wil/resource.h" templa</psapi.h></windows.h></vector></memory></string></filesystem></algorithm>…

C++20&Win API プロセスのIDとパスを列挙する

Win32 APIのEnumProcesses関数、QueryFullProcessImageNameW関数を使ってプロセスのIDとパスを列挙するサンプルコードです。 #include <string> #include <memory> #include <vector> #define STRICT #define NOMINMAX #include <Windows.h> #include <Psapi.h> template <DWORD InitSize = 100, DWORD ExpandingSize = 100> std::vector<DWORD> GetAllProces…</dword></dword></psapi.h></windows.h></vector></memory></string>

C++20&WinAPI&WIL ZIPファイルに関連付けられたCLSIDを取得する

ZIPファイルに関連付けられたCLSIDとそのProgIDを取得するコードです。 #include <array> #include <bit> #include <format> #include <string> #include <optional> #define STRICT #include <windows.h> #include "wil/resource.h" std::optional<GUID> GetSystemFileAssociationCLSID(PCWSTR name) noexcept { con</guid></windows.h></optional></string></format></bit></array>…

C++20&WIL プロパティ記述子を列挙する

C++20とWILでプロパティ記述子(IPropertyDescriptor)を列挙するサンプルコードです。実行するとプロパティの正規名と表示名を出力します。 #include <functional> #include <format> #include <iostream> #define STRICT #define NOMINMAX #include <Windows.h> #include <propsys.h> // Microsoft WIL 1.0.2202</propsys.h></windows.h></iostream></format></functional>…

C++20&WIL ごみ箱内の項目の「元の場所」「削除された日時」を取得する

C++20とWILでごみ箱内の項目の「元の場所」と「削除された日時」を取得するサンプルコードです。実行すると表示名とそれらを出力します。 #include <format> #include <functional> #include <iostream> #define STRICT #define NOMINMAX #include <Windows.h> #include <ShlObj.h> #pragma comment(lib, "propsy</shlobj.h></windows.h></iostream></functional></format>…

C++20&WIL ごみ箱内のフォルダの中身を列挙する

C++20とWILでごみ箱内のフォルダの中身を列挙するサンプルコードです。実行するとごみ箱内のフォルダの中身の表示名を出力します。 #include <functional> #include <iostream> #define STRICT #define NOMINMAX #include <Windows.h> #include <ShlObj.h> // Microsoft WIL 1.0.220201.1 #include "wil/</shlobj.h></windows.h></iostream></functional>…

C++20&WIL ごみ箱内の項目を列挙する

C++20とWILでごみ箱内のシェル項目を列挙するサンプルコードです。実行するとごみ箱内の項目の表示名を出力します。 #include <functional> #include <iostream> #define STRICT #define NOMINMAX #include <Windows.h> #include <ShlObj.h> // Microsoft WIL 1.0.220201.1 #include "wil/com.h" void Fo</shlobj.h></windows.h></iostream></functional>…

C++20&WIL ごみ箱のIShellItem取得

C++20とWILでごみ箱のIShellItemインターフェイスを取得するサンプルコードです。実行するとごみ箱の表示名を出力します。 #include <iostream> #define STRICT #define NOMINMAX #include <Windows.h> #include <ShlObj.h> // Microsoft WIL 1.0.220201.1 #include "wil/com.h" int main() </shlobj.h></windows.h></iostream>…

R&tidyverse mutate_atによる列単位変換の列選択方法

tidyverseではmutate_at関数で列を指定して列単位で変換できます。ここでは列選択の方法をいくつか紹介します。 library(tidyverse) data <- as_tibble(iris) # 3列目以降の列を文字列に変換したtibbleを作成する。 # 整数範囲または`vars(n:last_col())`を…

Python 3 Windowsアニメーションカーソル(.ani)の情報を取得する

Windowsアニメーションカーソル(.ani)の情報を取得するサンプルコードです。 #rifffilereader.py from __future__ import annotations from io import FileIO from os import SEEK_SET, SEEK_CUR from typing import Tuple from dataclasses import datacl…

Python 3 WindowsアニメーションカーソルのRIFFヘッダー構造を解析する

Windowsアニメーションカーソル(.ani)のRIFFヘッダー構造を解析するサンプルコードです。実行するとシグネチャとチャンクのデータサイズ、RIFFまたはLISTの場合はフォーム/リストタイプを出力します。 RIFFファイルやaniファイルの構造はソース中コメント…

数学 循環小数n.nnn...=10n/9の証明

循環小数(はの整数)の成立を証明します。