potisanのプログラミングメモ

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

まとめ未登録(管理用)

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

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

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

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

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個の分類に分けて紹介されています。ここではその分類に従い、各関数の概要と使用例を紹介します。 現状は公式リファレンスの一部意訳です。詳しい使い方は公式リファレ…

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

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

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されるそうです。 ただし複数回…

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

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

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

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