投稿

.NETのメッセージボックス

 .NETのFormとかWPFなどのGUIでは、UIイベント処理中は普通は他のイベントは処理されない。ただし、メッセージボックス表示中はTimer.Tick等は動いてしまう。 参考: Timer.Tick イベントでMessageBoxを呼ぶと死ぬ件について(https://lets-csharp.com/death-of-messagebox/) しかし、常にそうとは限らないようだ。  WPFで以下のようなコードを書くと、DefaultDesktopOnlyの場合だけ、メッセージボックス表示中にtimer_Tickが呼ばれていないようだ。 Class MainWindow     Private timer as System .Windows.Threading.DispatcherTimer     Private Sub Window_Loaded ( sender as Object , args as EventArgs )         timer = new System.Windows.Threading.DispatcherTimer         timer. Interval = TimeSpan. FromMilliseconds ( 200 )         AddHandler timer.Tick, AddressOf timer_Tick         timer. Start ()     End Sub     Private Sub timer_Tick ( sender as Object , args as EventArgs )         ClockText. Text = DateTime .Now. ToString ( "HH:mm:ss" )     End Sub     Private Sub Butt...

バッファローのEasyMeshの有線LANバックホールが使えるはほぼウソ(2024年3月時点)

イメージ
無線LAN親機を1階に設置していたが、2階の電波が弱かったので、無線LAN親機を買い足した。 既設はバッファローのWSR-3200AX4Sで、EasyMesh対応機 追加はバッファローの WSR-5400AX6Bで、これもEasyMesh対応機 1階と2階の間は有線LAN敷設済み EasyMeshのバックホールに有線LANが使用できることは、マニュアル等で確認済  5600AX6Bの方をコントローラとしてEasyMeshの設定を実施。   設定画面等でEasyMeshの設定が完了していることを確認。 その後、エージェントにした3200AX4Sを2階に移動。   そうすると、LANがダウンしてしまう。 どうやら、バックホールが無線になってしまい、有線LANとの間でループを起こしてしまうらしい。 ネット検索したところ、価格.comにこんな口コミが   『【注意】EasyMeshをハブを介して有線LAN接続するとループする』 「スイッチングハブを介しての動作は確認していません」って、専用線なんか引けるか! できないなら Easy にこだわるのやめて、手動切り替えにすればいいのに。   自宅だからよかったけど、会社でこれやってLANをダウンさえたら大目玉を喰らうところだ。

電気ケトルの注ぎ口

イメージ
 電気ケトルの注ぎ口に段ボール箱の留め具を付けてみた。  

同軸ケーブルLAN

家の通信用配管が細すぎてLANケーブルを通すことができなかったため、同軸モデムを買いました。 買ったのは ゼクセロンZWX-2000CSW2-HN   通信速度は2Gbpsもありますが、有線LANは1000BASE-Tで無線LANはIEEE802.11acまでなので、1対1通信では真価を発揮できないでしょう。 うちはフレッツTVなので、同軸ケーブルは電気的に他所と断絶しているし、TVアンテナも無いので近所に迷惑かける心配もなし。 念のため、フレッツTVのコンバーターの手前にハイパスフィルター付けました。(ハイパスフィルターはセットで購入したけど、製品に付属してたので買う必要なかった。)  今のところ、通信は安定しているし、TVにも影響なし。

Blogger APIを使ってみたときのコード

BLOGを移行するときに、Blogger APIを使ってみたのだが、情報が少なくて苦労したので、自分が使ったコードをサンプルとして貼っておきます。 APIを使えるようにする手続きについては、他のサイトを参考にしてください。 Movable Type形式のエキスポートファイルを読み込んで登録する実装になっているが、タイトルと日付と本文しか読んでない。タグに対応するのはコードが書ける人ならすぐできると思う。  APIに、1日当たりの利用数制限があるようで、一度に100件を超えたあたりでエラーになる。 改行コードは、BIGLOBEではBRタグに変換されていたが、Bloggerではそのままのようなので、自動で変換させてもいいと思う。 画像等はBlogger APIからは登録できないので、Bloggerの投稿画面で手で差し替えた。 using System ; using System . IO ; using System . Threading ; using System . Threading . Tasks ; using Google . Apis . Auth . OAuth2 ; using Google . Apis . Services ; using Google . Apis . Util . Store ; using Google . Apis . Blogger . v3 ; namespace Books . ListMyLibrary {     internal class Program     {         enum SECTION { HEAD , BODY_TAG , BODY , OTHER };         const string BLOG_ID = " BLOG ID " ;         const int COUNT_PER_SERVICE = 5 ;         const int SLEEP_PER_SERVICE = 60 ;   ...

BIGLOBEから移転してきた

 BIGLOBEのBLOGサービスが閉鎖されるので、Bloggerに移転した。 BIGLOBEで書いてたもので、まだ賞味期限が切れてなさそうなのだけ、こっちでも公開することにする。

スチールラックを拡張

イメージ
すっかりテレワークが基本になり、作業場所がスチールラックだけでは手狭になってきたので、拡張してみた。 手前のキーボードスペースは、元々つけていたもので折り畳み可能。 左右は今回足したもので、ホームセンターで売っている壁に取り付けるタイプの棚足と棚板を使っていて、取り外し可能。 棚柱は、付属しているのは木ネジなので、ボルトと大きめのスペーサーを使って固定した。 左側はラックのボルトと棚足のフックが干渉するので、割り箸を切ってスペーサー代わりにした。 これで、狭い場所で使いにくい思いをしなくて済むようになった。 スチールラックのキタジマ カラーアングル30型 1800mm ホワイト 20本セット 和気産業 1×4ピラシェル棚受 1×4材 3枚用左 白 WPS022 ピラシェルシリーズ棚受 和気産業 ピラシェル棚柱 300mm 白 WPS013 自由に棚受を設置できる棚柱 化粧棚板 (900×400×18, アイボリー、多サイズ選択可能)

中空ポリカの内窓を付けた

イメージ
台所の窓から、結構熱が逃げてる気がしていた。 台所なのでカーテンだと風であおられると火事の危険があるので、プラダンのようなものをつけようと思って調べていたら、中空ポリカーボネートの内窓キットが、買いやすい値段で売ってたので買って付けた。 切るのが大変だったけど、割ときれいにできた。 断熱効果はあると思う。窓枠がアルミなので窓枠が隠れる位置にしたほうが断熱効果が高そうだが、物が置けなくなるので、窓に近い位置につけた。 参考にAmazonのリンク貼りますが、Amazonマーケットプレイスの品は高すぎるので、私は楽天で買った。 アクリサンデー エコな簡易内窓セット ブラウン MW1800×H900以内 (PU-S M BR)

XBox360コントローラドライバのせいでコア分離セキュリティが有効にできない場合

コア分離を有効化しようとしたらxusb21.sys(XBox360コントローラドライバ)が対応していないので、有効化できなかった。 このコントローラはこのPCでは使ってなかったので、 pnputil -d oem~.inf ※oem~.infはコア分離に失敗したときに表示されていたファイル名。pnputil -eでも調べられる。 で、ドライバストアからxusb21.sysを削除して、コア分離を有効化できた。

ODBCのAddWithValue

Timestampで検索条件に使った、自動テストがエラーになるので、原因を調べてたらOdbcParameterCollection.AddWithValueが、引数の型によらず、すべて文字列として扱ってることが分かった。 using System ; namespace AddWithValue {      class Program     {          static void Main ( string []  args )         {              Console . WriteLine ( "ODBC" );              using ( var cmd  =  new System . Data . Odbc . OdbcCommand ())             {                  String str  =  "str" ;                  cmd . Parameters . AddWithValue ( "String" ,  str );      ...

Tomcat10 + log4j2

log4j はlog4j2になって、設定が自動読み込みされるようになった。 Tomcat等Webアプリの場合の設定ファイルの置き場は マニュアル によると、 サーブレットコンテクストに場所が指定されていれば、その場所を探す。 場所が指定されていなければ、WEB-INFディレクト内のlog4j2で始まるファイル名のファイルを探す。 classpathとか、(Webアプリではない場合と同じ)通常の設定ファイル検索を行う。 となっている。 そこでTomcat10でWEB-INFにlog4j2.xmlを置いたのだが、無視されてしまう。 src直下にlog4j2.xmlを置くと、自動で読み込んでくれた。 なぜ、WEB-INF配下のを読まないのか、log4jのデバッグ出力を有効にしたりして、ソースを追いかけたところ、org.apache.logging.log4j.util.Constantsのコメントにこんな記述を発見。 if we think we are running in a web container, based on the boolean value of system property "log4j2.is.webapp", or (if this system property is not set) whether the javax.servlet.Servlet class is present in the classpath. Tomcat10ではサーブレットがjavax.servlet.*からjakarta.servlet.*に変わってしまったので、log4j2はWebアプリと判別できなくなってしまったようだ。

WPFの地域設定

イメージ
Thread.CurrentCultureはOSの地域設定から自動で設定されるが、XmlLanguageはOSの既定の設定によらずen-US固定のようです。 例えば、以下のようにXAMLで画面を作ると、 < Window x:Class = "WPF.MainWindow"          xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"          xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"          xmlns:d = "http://schemas.microsoft.com/expression/blend/2008"          xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006"          xmlns:local = "clr-namespace:WPF"          mc:Ignorable = "d"          Title = "MainWindow" Height = "450" Width = "800" >      < Grid >          < Grid.ColumnDefinitions >     ...