カタバミさんのプログラミングノート

日曜プログラマーがプログラミング関係のメモを記録するブログです。

Python 3のリスト・セット・タプル・辞書の初期化と内包記法、ジェネレーター式

[1,2,3,1,2,3] #リスト {1,2,3,1,2,3} #セット (1,2,3,1,2,3) #タプル {1: 1, "name": "name"} #辞書 [i for i in [1,2,3,1,2,3] if i % 2 == 0] #リスト内包記法 {i for i in [1,2,3,1,2,3] if i % 2 == 0} #セット内包記法 {i*5: i for i in [1,2,3,1,2,3]…

Python 3でURLからHTMLを読み込んで要素一覧を取得する

Python 3でurllib.requestを使用してURLからHTMLを読み込み、Beautiful Soup 4とlxmlを使用して要素一覧を取得するサンプルコードです。読み込むURLはYahoo! JAPANのURLをお借りしています。 サンプルコード 参考 サンプルコード import urllib.request from…

HTML5 SVG要素とPATH要素の有名サイトによる実例

CSSデザインを勉強をしようとGoogle検索のトップページを眺めていたら、検索ボックス左側の虫眼鏡アイコンがSVG要素とPATH要素であると気が付きました。この投稿では、地味だけど良い仕事をする彼らを紹介したいと思います。なお、SVG要素のコードの権利は各…

文字列→UTF-8文字コード変換ツール

JavaScriptを使用して文字列からUTF-8エンコーディングにおける文字コードを取得するツールです。TextEncoderの仕様によりUTF-8以外はサポートしていません。 function exec() { const encoder = new TextEncoder(); text2.value = Array.from(text1.value, …

プレーンテキストの概要・「文字」・その他の形式

身近な存在であるプレーンテキスト(plain text)について考えてみました。なお、ここで扱うプレーンテキストは平文(plaintext)ではなく拡張子.txtのファイルの内容(plain text)です。 プレーンテキストの概要 文字エンコーディングと制御文字程度の規則…

JavaScriptで文字列をUTF-8文字コードとして処理する方法

JavaScriptで文字列をUTF-8文字コードとして処理する方法のメモです。動作確認環境はWindows 10、Google Chrome 79.0.3945.130です。 文字列を16進数UTF-8文字コードに変換して半角スペースで区切る 文字列を文字毎に10進数UTF-8文字コードに変換した二次元…

Uint8Arrayのmap関数の注意あるいはTextEncoder.encodeの戻り値の注意

Uint8Array.of(0, 1, 2).map(x => x) // Uint8Array(3) [0, 1, 2] Uint8Array.of(0, 1, 2).map(x => 0.1) // Uint8Array(3) [0, 0, 0] !? Uint8Array.of(0, 1, 2).map(x => "a") // Uint8Array(3) [0, 0, 0] !? 現在の仕様ではUint8Array.map関数はUint8…

Rで二項分布とパーセント点の垂線を描画する

R

として、二項分布の曲線と95%点の垂線を描画します。 x <- dbinom(0:1000, 1000, 0.5) plot(x, type="l", xlim=c(400, 600), yaxs="i", xlab="X", ylab="Prob.") x1 <- qbinom(1-0.05, 1000, 0.5) #1-0.05 = 0.95 = 95% segments(x1, 0, x1, x[x1])

C#でWin32 API TaskDialog関数を呼び出すサンプルコード

C#でTaskDialogを表示するにはWin32 APIのTaskDialog関数(comctl32.dll)を呼び出すサンプルコードです。適当なC#のWindows フォーム アプリケーション (.NET Framework) プロジェクトのForm1にボタン(Button1)を作成して、Clickイベントの名前を合わせて…

「Windowsの標準コントロール」と「C#の標準コントロール」

本文 前回の記事で平然と(Windows 10の)「標準コントロール」「コモンコントロール」と「C#の標準コントロール」という言葉を使ってしまったのですが、冷静に振り返ればこれらの言葉遣いは正しかったのかなと。多分に想像ですが、以下がその回答に近いかな…

C#でIEnumStringインターフェイスを実装する

C#でIEnumStringインターフェイスを実装するには、System.Runtime.InteropServices.COMTypes名前空間で定義されたC#のIEnumStringインターフェイスが利用できます。このインターフェイスを継承したクラスを実装することでCOMのIEnumStringインターフェイスを…

IShellItem.BindToHandler関数のBHID_StorageEnumとBHID_EnumItemsの違い

IShellItem.BindToHandler関数の引数にBHID_StorageEnumとBHID_EnumItemsを指定した場合、以下の点が異なります。 BHID 概要 BHID_StorageEnum 作成されたIEnumShellItemsはファイルシステムオブジェクトのみ列挙する。 BHID_EnumItems 作成されたIEnumShell…

WindowsのCOM関係レジストリキーの場所

WindowsのCOM関係のレジストリキーは次の場所に存在します。 ProgID、CLSID、Interfaceキー等 基本情報 DebugObjectRPCEnabledキー ノート 参考 ProgID、CLSID、Interfaceキー等 HKEY_LOCAL_MACHINE\Software\Classes HKEY_CURRENT_USER\Software\Classes HK…

HKEY_LOCAL_MACHINE、HKEY_CURRENT_USER、HKEY_CLASSES_ROOT

本文 HKEY_LOCAL_MACHINE、HKEY_CURRENT_USER、HKEY_CLASSES_ROOTは何れもレジストリのルートキーとして扱われる定義済みキー(Predefined Keys)ですが、その内容はログインするユーザーにより異なります。HKEY_LOCAL_MACHINEはどのユーザーでログインして…

JavaScriptのevent.targetとevent.currentTargetの違い

event.targetとevent.currentTargetの値は一般的に異なります。例えば以下のサンプルコードを実行すると次の表が得られます。ボタン2と3はどちらもA要素の子要素です。 クリックした場所 event.target event.currentTarget ボタン1 ボタン1 ボタン1 ボタン2 …

Vue.jsのmethodsやcomputedにおける関数式の種類とthis

Vue.jsのcomputedでアロー関数*1を使ってthisで混乱したので覚え書きとして。結論は以下の通りです。 Vue.jsのmethodsやcomputedでは匿名関数*2を使った方が素直 アロー関数におけるthisの挙動は仕様 thisの仕様については詳細に調べていませんが、サンプル…

C#用IShellFolderのファイル名(表示名)変更に必要な関数のラッパーを提供するクラスと拡張メソッドファイル

概要とコード サンプルコード 概要とコード 動作確認環境:Windows 10 64ビット、Microsoft Visual Studio 2019、C# 7.3 Win32 API IShellFolderインターフェイスのファイル名(表示名)変更に必要な関数のラッパーを提供するクラスと拡張メソッドファイルの…

Win32 API CIDA構造体のラッパークラス

特殊ファイル・フォルダのドロップ受け入れで使用することを目的としたWin32 API CIDA構造体のラッパークラスです。unsafeの使用を避けるためにGCHandleを使用しており、プロジェクトの設定変更が不用な代わりにGCHandleによるコストが発生します。 動作確認…

C# Win32 API STRRET構造体のラッパー構造体

C#でWin32 APIのSTRRET構造体を扱うためのラッパー構造体です。継承や内部データの操作は考慮しておらず、string型(文字列)への変換とメモリ解放処理のみ提供しています。 動作確認環境:Windows 10 64ビット、Microsoft Visual Studio 2019、C# 7.3

C#であるAndroid端末のファイルのドロップ処理を実装する場合の注意

動作確認環境:Windows 10 64ビット、Microsoft Visual Studio 2019、C# 7.3 本文 FileDropフォーマットが存在しないことに対する対処 DragOverイベントハンドラにおけるData.Effect設定の注意 参考 本文 あるAndroid機種はメーカーの公開するドライバをイン…

Google Chrome 76ではクライアントサイドJavaScriptで外部ドメインのHTMLを取得できない

Google Chrome 76のJavaScriptでは以下のどちらの方法でも外部ドメインのHTMLを取得できませんでした。IEや過去のブラウザでは可能な場合もあるそうです。 XMLHttpRequest IFRAME要素のsrc属性に設定してcontentWindow.document 取得先のサーバーを設定でき…

let宣言(JavaScript 1.8.5)はグローバルスコープを作らない

概要 let宣言(ECMAScript 2015、JavaScript 1.8.5)は変数にブロックスコープを与える。グローバルスコープは与えない。 関数の外でletを使ってもグローバル変数は定義されない。 詳細 let宣言はブロックスコープの変数を宣言することで有名ですが、同時に…

var宣言(JavaScript 1.8.5)のスコープ

概要 var宣言(JavaScript 1.8.5、ECMAScript 2015)のスコープは実行コンテキスト(execution context)(MSDN Web Docs、2019/8/2)。 実行コンテキストは関数の内部であればその関数の内部、関数の外であればグローバル。 単にグローバルスコープでも関数…

SlideShareの各カテゴリ日本語全期間ページリンク集

カテゴリ等 URL Most Popular https://www.slideshare.net/popular/language/ja/all-time Art & Photos https://www.slideshare.net/popular/language/ja/category/art-photos/all-time Automotive https://www.slideshare.net/popular/language/ja/category…

SlideShareで日本語のスライドを探すときの注意点

概要 SlideShareで日本語のスライドを探すには適当なカテゴリ等のmore filtersでJapanese、AllTimeを設定する。 AllTimeを設定しないとTodayが既定値となるため、日本語スライドはほぼ表示されない。 本文 SlideShareで日本語のスライドを探そうとして、検索…

XPathとCSS Selectorの各ブラウザ対応

概要 現時点の主要ブラウザはXPath 2.0以降非対応 CSS SelectorはLevel 3まで対応 本文 Windows版のGoogle Chrome 75でXPath 3.1を試してみようと色々とコードを書いてみたのですが、upper-case関数を何度試してもエラーになりました。どうやら現時点でXPath…

C# AngleSharp 0.12.1でHTML要素を追加する

C#

C#のAngleSharpでは、素直にノードのInnerHtmlプロパティへ直接代入(=)または追加(+=)することで要素に子要素を追加できます。例えば、適当なHTMLドキュメントを作成してそのBODY要素にHTML要素を追加するには以下のようにします。 // AngleSharpのusing…

Microsoft Visual Studio 2019 Community付属のSpy++

Microsoft Visual Studio 2019 Communityに付属している便利なソフトウェアSpy++の概要等。 Spy++の概要 ウィンドウをツリーやファインダーで検索して各種情報(親子関係、ハンドル、ウィンドウタイトル、クラス名、その他諸々)を確認できる便利なソフトウ…

VBA7用の64ビット環境対応Win32API Declareステートメント一覧

VBA

VBA7で使用できる64ビット環境対応のWin32API Declareステートメント一覧が以下からダウンロード可能です。 www.microsoft.com 配布形式はインストーラーで、展開後にフォルダ内の「Win32API_PtrSafe.TXT」を開くことで大量のコードが利用可能です。自分の環…

VBAにおける64ビット対応

VBA

概要 ExcelやWord等のMicrosoft Officeで使用されるVBAの64ビット対応の概要。詳細は以下の公式ドキュメントをご覧ください。 docs.microsoft.com 内容 VBAの64ビット対応はVBA7から導入されており、3つの重要な追加機能、条件付きコンパイル定数、型変換関…