国立研究開発法人防災科学技術研究所(NIED)が提供しするサービス『強震モニタ』( http://www.kmoni.bosai.go.jp/ )のデータをM5Stackを使って監視し、地震の発生を示すデータを見つけたときに予想震度、震源、リアルタイム震度を表示するプログラムを公開します。

実際にしばらく使ってみて、地震発生時に自分がいる場所にいつ地震波が到来するのかわかり、テレビやスマホの緊急地震速報よりもおどろおどろしい音ではないため、気持ちに余裕を持って揺れに備えることができました。

IMG_6392

2021/05/01 10:27ごろに発生した地震

Read More

M5Stackを使ってCO2モニタを自作する(SCD30編)』、『もっと安価にCO2モニタを自作する(SGP30編)』と異なる方式で二酸化炭素濃度を測定してみたところ、驚くほどの差が出てしまったので、どちらの値が正しいのか確かめてみたくなりました。
第3のセンサーを投入し同じ部屋で計測をした記録です。

MH-Z19C

Read More

前回『M5Stackを使ってCO2モニタを自作する(SCD30編)』でM5Stack GrayNDIR型のCO2センサー(SCD30搭載)を使い二酸化炭素濃度モニタを自作してみましたが1万円を超えてしまうので、もっと安価に自作できないものかとM5StickCとM5Stack社から発売されているTVOC/eCO2ガスセンサーユニット(SGP30搭載)の組み合わせなら5000円程度で実現できるのではないかと試してみました。

Read More

新型コロナウイルス感染拡大防止対策の一環として、空気中の二酸化炭素濃度(CO2)をはかって換気のタイミングを知るというのが打ち出されてきたようです。
M5Stack ( https://ja.wikipedia.org/wiki/M5Stack ) という小さいコンピュータとCO2センサーを組み合わせてリアルタイムにCO2濃度を測定・表示する環境モニタを自作してみました。

できあがった環境モニタ

Read More

文字認識が必要になりそうなお仕事で、実装方法と難しさ、文字認識の精度を調べるために作った簡易OCRツールです。
Windows 10に標準搭載されているOCR( Microsoft OCR / Windows.Media.Ocr )を使っただけなのですが、機能として面白かったのでプログラムとソースを公開します。

2021-03-11 (12)

※実行画面のサンプルとして、青空文庫で公開されている『吾輩は猫である』のスクリーンショットを使用しました。

Read More

スマホに貼っているガラスフィルムを交換するときのはがしかたです。

薄いカード上のものをフィルムの隙間にゆっくり差し込みます。

IMG_0019

カードを中心部に向かって押し込みながらぐるっと一周まわすときれいにはがれます。
フィルムを無理に持ち上げようとすると、フィルムにヒビが入ったり割れたりする恐れがあるので注意してください。

IMG_0020

差し込むカードは、本体側のパネルを傷つけないためにも、あまり硬いものではなく紙製でプラスティックコーティングしてあるようなすべりの良いものが適していると思います。

Visual Studio 2019でフォントの変更が行えなくなりました。

前日まで問題なくカスタマイズした状態で好みのフォントが表示されていたのに、今朝立ち上げたときから知らないフォント(おそらくCourier New)に変わっています。

解決までにけっこう時間がかかったので試したことを記録として残します。

Read More

WPFで、あるウインドウから子ウインドウを開き、子ウインドウが閉じたときに元のウインドウにフォーカスが戻らないという現象に遭遇しました。

この現象をネットを検索してみると以前からある問題のようでいろいろな解決方法が提案されていました。
その中からいくつかの方法を試してみたのですが、残念ながら期待通りに動きませんでした。

自分が試してみてうまく機能した方法を紹介します。

public void ForceActivate()
{
	this.Activate();

	System.Threading.Tasks.Task.Run(async () =>
	{
		await System.Threading.Tasks.Task.Delay(100);
		Dispatcher.Invoke(() => this.Focus());
	});
}

Task.Delayメソッドを使って処理をずらすよう工夫したのが効いているようです。
最初はDispatcher.Invokeメソッドのアクションデリゲート内で定番のTopmostプロパティをtrue、falseの順に設定するなども含めていたのですが、ディレイをかけてFocusメソッドを呼び出すだけで良いようです。

xxx.xxx.xxx.xxx形式のIPアドレスから国名を調べる作業をしているとき面倒になって作った関数です。
Excelシート内でユーザ定義関数として使用、またはVBA内で使用することができます。

https://software77.net/geo-ip/ より取得したデータをVLOOKUP関数で拾っているだけですが、データベース上に記載されていない127.0.0.1など予約済みアドレスを関数内でチェックして、該当する場合、適当なネットワーク名を返すようにしています。

手元のマシンでは100万件のデータを2分強で処理できました。

Read More

macOS上の環境でApache HTTP Serverのmod_dav_svn経由でSubversionに大量のファイルをコミットしようとしたところ、下記のようなエラーがApacheのログに記載されていました。

(70007)The timeout specified has expired: [client XXX.XXX.XXX.XXX:XXXXX] An error occurred while reading the request body (URI: リポジトリ上のファイルパス)  [XXX, #0]

(70008)Partial results are valid but processing is incomplete: [client XXX.XXX.XXX.XXX:XXXXX] An error occurred while reading the request body (URI: リポジトリ上のファイルパス)  [XXX, #0]

ファイル名を確認すると少し大きめのファイルをコミットしようとしたタイミングで問題が発生しやすいようです。
そこで、Apacheの設定パラメータのデフォルト値が変更されたことに伴うものかと思いRequestReadTimeoutディレクティブやLimitRequestBodyディレクティブの値を、

RequestReadTimeout header=0 body=0
LimitRequestBody 0

のように変更してみました。
この処置で、一部分はコミットが通るようになったもののスッキリと完全解決までは至りません。

そもそも「少し大きめのファイル」と書いたもののWindows環境からはもっと大きいファイルが問題なくコミットできています。
「じゃあSubversionのクライアントが古いことが原因か?」と考えてもファイルによっては問題なくコミットできています。

ログのメッセージで検索してみると、自分が解決方法を書いていました。
ブラウザのコンソールに「net::ERR_CONNECTION_RESET」「Failed to load resource: ネットワーク接続が切れました。」と表示された場合

ESETのファイアウォール機能を停止しコミットを行ってみると、先ほどまでの状態が嘘のようにあっさりと解決。問題なくコミットされました。

今回もmacOSのESETが原因でした。