気まま研究所ブログ

ITとバイク、思ったことをてきとーに書きます。

プログラミング

コンパレータでソート可能なListViewを実装してみる

以前、ヘッダーでソート可能なListViewを実装してみるといったソート可能なListViewを紹介しましたが、より高度なソートとしてコンパレータを使ってソートする方法も紹介します。 ただし、前回のように汎用的な実装ではないので仕様に際しては工夫が必要です…

WPF RichTextBoxでScrollViewerイベントを捉えて末尾を検知する

こんにちは。 前回に続き、またRichTextBoxネタです。 今回はRichTextBoxの内部で動くScrollViewerのイベントを捉えてスクロールを捕捉してついでに末尾を検知してみようと思います。 やることは単純で、TemplateからPART_ContentHostの名前がついたScrollVi…

WPF RichTextBoxのWordWrappingを無効化する

お久しぶりです。めっきり更新が止まってしまいましたが、辛うじて生きています。 さて、今回はWPFネタで、RichTextBoxコントロールのWordWrapping (TextWrapping) を無効化してテキストに応じて横に伸びてもらいます。 RichTextBoxコントロールは標準でWord…

非同期でファイルを複数ダウンロードしてみる

内製アプリで100ファイルくらいダウンロードするのに3つ並列でダウンロードとかしたかったもののあんまりいい方法が無かったので備忘録がてら残しておきます。 基本的にはTaskを使って実装することになりますが、そのまま並列化してしまうとすごい数の並列ダ…

ヘッダーでソート可能なListViewを実装してみる

お久しぶりです。 最近多忙とブログネタが無かったことが重なって更新がかなり空いてしまいましたが、中の人は普通に生きてます。 今回は久しぶりにC# WPFネタで、GridViewColumnを装備したListViewで各GridViewColumnをクリックするとそのカラムに応じてソ…

Azure Pipelinesで.Net FrameworkとNUnitのテスト実行とカバレッジ計測してみる

すっごい今更ながらCI/CD環境を構築しておこうと思ってAzure Pipelineをイジイジしてました。 しかしながら、.Net FrameworkとNUnitの組み合わせだと情報がほぼ皆無と言っていいほど無く、構築に苦労しまくったので記録として残しておきます。 今回はNUnitの…

WPF TreeViewでアイテムのドラッグ移動を実装する

TreeViewを扱っているとアイテムをドラッグアンドドロップで移動させくなることがあります。 Formsでは結構やり方が乗ってるんですが、WPFとなると一切出てこないので実装してみることに。 本当はコードビハインドに書きたくはなかったのですが、こうする以…

ListBoxにてListBoxItemにTextBoxとButtonを配置してみる

久しぶりにWPFのテクニックを紹介します。 ListBoxでファイルパスを管理する機会があって、TextBoxとButtonでファイルパスを入力して管理するというのをやりました。 ListBoxってただ文字列を配置するだけでなく、意外にも好き放題カスタマイズできるので参…

縮小表示した画像をズームするJavaScript「MagnifyImageJS」

ふとポートフォリオ作ってたら大きな解像度の画像が潰れてしまうのが気になってしまい、Amazonみたいにマウスオーバーでオリジナル画像表示できないかなーと作ってみたシリーズ。 拡大って書いてるけど、2倍表示とか倍率には対応してないあくまでオリジナル…

浮動小数点数演算を模倣して誤差を見てみた

浮動小数点数が値によっては誤差が発生することは広く有名な話だと思います。 例えば、「0.1 + 0.2 == 0.3」は多くの言語処理系において等値ではありません。 というのは私も知っていましたが、ではどうして等値ではないのかと聞かれるとフワーッとしたこと…

jQuery 自動で目次メニューを生成する

最近jQueryばっかじゃねえかと我ながら思うけど作っちゃったからしょうがない。 ってことで今回はH1, H2などの見出しから自動で目次メニューを生成するスクリプトのご紹介です。 静的ページ作ってると意外にだるいのが目次メニューの生成ですが、これを使え…

jQuery クリックやマウスオーバーで画像を切り替える

とあるサイトで欲しくなったシリーズ第二弾、画像をクリックしたりマウスオーバーすると別の画像に切り替わるっていうやつです。 前回の記事はこちらです。 なお、JavaScript/jQueryは専門外なので流行りや効率が必要ならいい感じに書き換えてください。

jQuery マウスオーバーで画像をマウスの横に出す

とあるサイトでリンクをマウスオーバーすると画像が横に出るスクリプトが入っていて、欲しくなったので実装してみました。 元々個人で運用しているブログで使う専用に書いたのですが、更新ネタもないのでこっちにも残しておきます。 これと同時にクリックや…

func(i, i++)の落とし穴 評価順序の違い

Twitterで流れてきてふと気になったので備忘録。 もっぱら高級言語ばっかり触ってきたので一瞬わからなかったのですが、C言語ではこのようなコードはコンパイラ依存で結果が変わります。 ANSI-Cの規格書に目を通したわけではないので間違いがあったらご指摘…

C# 高速にフォアグラウンドのプロセス名を取得する

こんにちは。 最近バイクネタかWindowsネタばかりでしたが、今回はC#ネタを少し。 C#ではProcessクラスよりプロセス名の取得が簡単にできます。 しかしながら、プロセス取得は重い処理なため、取得頻度が多いとボトルネックになることがあります。 そこで今…

Moqでvoidメソッドをテストする

テストをちゃんとできるようにと思ってMoqを使って最近勉強しだしたものの、voidメソッドってどうやってテストすんだ・・・? となり、2時間ほど悩んだところなんとかできたのでその時の備忘録です。 テストはあまり勉強してこなかったのでもうちょっといい…

Roslyn CodeAnalysisでC#ソースの解析をしてみる

お久しぶりです。 多忙によりブログネタが全くできず、今まで放置状態でした。 さて、今日はVisual Studio 2015から導入されたRoslynコンパイラのAPIの一部で、C#ソースを解析するCodeAnalysisを使って解析を行ってみます。 大学の卒研で触ることがあったの…

C言語 未初期化変数の罠

久しぶりにプログラミング関連の話題です。 つい先日友人からC言語で質問がありまして、なぜかprintf関数を入れると正しく動くけどコメントアウトするとバグるというかなり不思議な不具合でした。 スタックの問題だろうなと思ったものの、久しぶりにC言語を…

C# - グローバルキーフックでキーの捕捉と入力を行う

こんにちは、久しぶりにプログラミング関連のネタです。 以前MabinogiKeyConverterというアプリケーションを公開して記事にも適当に書いたのですが、そこで使用しているグローバルキーフックについて残しておきます。 C#では実行アプリケーション上でキーイ…

NodeListインタフェースをオブジェクト指向に導く

お久しぶりです。 最近タスクが溜まりすぎてブログや個人のプロジェクトに一切手が付けられていない状態ですが、生きております。 今回はそのタスクのうち、CyberNeko HTML ParserにてDOM解析をする機会があり、NodeListの設計に疑問を感じたのでそのお話を…

Savannah Manager Telnetサーバへ接続をする

こんにちは。 ブログではほとんどSavannah Managerについて触れてきませんでしたが、ちょっとずつ触れていきます。 今回から数回にかけてSavannah Managerの技術的情報を公開していきます。 一応公開する情報はSavannah Manager Libでも実装しているのでそち…

ウィンドウ透過と透過部分のイベント処理

TwitterをしているとTLでふと見かけたので備忘録。 Windownsフォームアプリケーションを作る際、背景を透過したくなることが稀にあります。 単純にTransparentを指定してもサポートされてない旨のメッセージとともに失敗します。