potisanのプログラミングメモ

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

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の証明

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

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

循環小数()の成立を証明します。 の証明 とおくと、 の証明 とおくと、 の証明 (nはの整数)とおくと、

JavaScript idの直打ちによる要素参照が避けられるのはブラウザ仕様差のせい

id="element1"な要素を参照する方法はいくつかありますが、次の2通りが素直です。 // Windowオブジェクトへの名前アクセス element1 window["element1"] // document.getElementByIdメソッド document.getElementById("element1") 前者の方が短いのに後者の…

JavaScript ファイルのドロップを受け入れる

JavaScriptでファイルのドロップを受け入れるサンプルコードです。特殊オブジェクト(デスクトップの「PC」など)が含まれると何も取得されなくなることに注意してください。 ソースコード <html lang="ja"> <head> <meta charset="utf-8"> <title>Sample Document</title> <style> /* 外見を整えるためのスタイル定義です。 */</meta></head></html>…

JavaScript Arrayコード集(20220121)

配列の作成 要素のイテレーター作成 要素数の取得・設定 要素の参照 要素の選択・変換 要素の平坦化 要素を結合した文字列の作成 値による範囲上書き 条件式による要素の検索 値による要素の検索 要素の集約 要素の追加・抽出 要素の内部複写 要素の検索 要…

R&tidyverse filterとkeep/discardの使い分け

filterはデータフレームの行選択、keep/discardはベクトルの要素選択です。 require(dplyr) require(purrr) 1:5 %>% keep(~. %% 2 == 0) # [2, 4] 1:5 %>% discard(~. %% 2 == 0) # [1, 3, 5] tibble(A=1:5, B=11:15) %>% filter(A %% 2 == 0) ## A tibble: …

R purrrパッケージ(tidyverse)のmapメモ

変数の数 使う変数 リスト integerベクトル doubleベクトル characterベクトル logicalベクトル raw データフレーム 無視(元の値) 1個 . .x ..1 map map_int map_dbl map_chr map_lgl map_raw map_dfc, map_dfr walk 2個 . .x .y ..1 ..2 map2 map2_dbl ma…

R&tidyverse purrrパッケージに存在する関数の名前を取得する

purrrパッケージに存在する関数の名前を取得するコードです。ついでに非関数の名前も取得します。 # purrrパッケージに存在する関数の名前を取得する。 require(purrr) x <- lsf.str("package:purrr") print("purrrパッケージの関数:") print(as.character(…

C#9&Win API ドロップされたオブジェクトの表示名を取得する。

Windows APIを使用してごみ箱やPCのような特殊オブジェクトの表示名を取得するコードです。SHCreateShellItemArrayFromDataObject関数を使用しています。 #nullable enable using System; using System.Collections.Generic; using System.Runtime.InteropSe…

R&tidyverse purrr::map系関数とformulaの引数指定

purrr::map系関数はformula(~...)で式を与えられます。引数は.、.x、..1のどれでも指定できます。 require(purrr) 1:10 %>% map_dbl(~.+1) 1:10 %>% map_dbl(~.x+1) 1:10 %>% map_dbl(~..1+1) #> [1] 2 3 4 5 6 7 8 9 10 11 purrr::map2系関数やpurrr::pma…

R&tidyverse purrr::map_intが単純な足し算で失敗する理由

purrr::map_int関数が単純な足し算で失敗したとき、数値リテラルの型が原因かもしれません。 次のコードで(1)はエラー、(2)は成功します。違いは足す数が1か1Lかです。 require(purrr) 1:10 %>% map_int(~.x+1) #> Error: Can't coerce element 1 from a dou…

Power Query M テーブルの列名を先頭・末尾からの個数・条件一致で抜き出す

Power Query Mでテーブルの列名を先頭・末尾から個数あるいは条件一致で抽出するコードです。 let // 列名用のダミーテーブル テーブル1 = #table( {"列1", "列2", "列3", "列4", "列5", "A", "B", "C"}, {} ), // 列名はTable.ColumnNames関数でリストとし…

C++20&Win API&WIL IShellItemで既知フォルダのフォルダIDと名前を列挙する

IShellItemインターフェイスで既知フォルダ(Known Folder)のフォルダID(識別子)と名前を列挙するコードです。実行するとデバッグウィンドウに既知フォルダの数だけ「フォルダID: 名前」を出力します。 #include <format> #include <ranges> #include <vector> #define STRICT #de</vector></ranges></format>…

Power Query M 型は比較方法により結果が異なる

要約 Power Query Mは型の比較に=とType.Is関数がある。 =は完全一致。Type.Isは互換性の判定。 (type number = type number) = true、(type number = Int64.Type) = false。 本文 [ A=type number=type number, // true B=type number=Int64.Type, // false…