投稿

Delphi で無名スレッド実行中に親オブジェクトを破棄するとスレッドはどうなるのか

 Delphi で無名スレッド実行中に親オブジェクトを破棄するとスレッドはどうなるのか → 親オブジェクト破棄後も実行し続ける 以下、MyClass 内の無名スレッドから Caption へカウントダウンを表示するプログラムの抜粋、スレッド開始1秒後に MyClassを破棄しているが、カウントダウンはそのまま続行されます ちなみに TThread.CurrentThread に Terminated プロパティは存在しません type TMyClass = class(TObject) private public FForm: TForm; constructor Create; destructor Destroy; override; procedure StrtThread; end; implementation procedure TMyClass.StrtThread; begin TThread.CreateAnonymousThread( procedure var I: Integer; FFForm: TForm; begin FFForm := FForm; for I := 10 downto 0 do begin TThread.Synchronize(TThread.CurrentThread, procedure() begin FFForm.Caption := IntToStr(I); end); Sleep(1000); end; end).Start; end; // MyClass生成と廃棄 procedure TForm1.Button1Click(Sender: TObject); var MyClass: TMyClass; begin ...

Google AdSense の自動広告に切り替えたら、とんでもないところに広告を挿入された

イメージ
 Google AdSense の自動広告に切り替えてたら、とんでもないところに広告を挿入された 番号付きリストの途中に入れてくるとは... 番号参照する説明だったらズレてしまうって事です

MS-IME (Windows10 20H2) の WM_IME_NOTIFY で IMN_CLOSECANDIDATE が通知されない

イメージ
 Windows10 20H2 に含まれる MS-IME は、WM_IME_NOTIFY で、IMN_CLOSECANDIDATE が通知されない IMN_CLOSESTATUSWINDOW WM_IME_ENDCOMPOSITION は未確認 開始時の IMN_OPENCANDIDATE は通知されているので、仕様変更ではない(単なるバグ)のではと思われるが、意図は不明 一時的な対処方法 言語 → 日本語[オプション] → Microsoft IME[オプション] → 全般 を開き 互換性の「以前のバージョンの Microsoft IME を使う」をオンにする

C# の string オブジェクトの参照値

C#の文字列型(object)の 参照 についていくつか試してみた結果 記事にあったもの static void Main(string[] args) { string a = "hello"; string b = "h"; b += "ello"; Console.WriteLine(a == b); // True Console.WriteLine(object.ReferenceEquals(a, b)); // Flase } 実データはコピーされず、参照先が同じになります static void Main(string[] args) { string a = "hello"; string b = a; Console.WriteLine(a == b); // True Console.WriteLine(object.ReferenceEquals(a, b)); // True } コンパイラの最適化によるものだろうか、定数はまとめられるらしい static void Main(string[] args) { string a = "hello"; string b = "he" + "llo"; Console.WriteLine(a == b); // True Console.WriteLine(object.ReferenceEquals(a, b)); // True } static void Main(string[] args) { string a = "hello"; string b = Hello(); Console.WriteLine(a == b); // True Console.WriteLine(object.ReferenceEquals(a, b)); // True } static string Hello() { string s = "hello"; return s; }

Oracle Cloud の Ubuntu で再起動すると ufw が無効になる

【追記】Oracle Cloud の Ubuntu は ufw ではなく iptables を直接編集するようです https://god-support.blogspot.com/2021/06/oracle-cloud-ubuntu-2004-minimal-nat.html

日本郵政とソフトバンクの裁判 → 2022/9/9 ソフトバンクに108億円賠償命令

イメージ
2015年のネットワーク導入および遅延により起きた、 日本郵政インフォメーションテクノロジー株式会社(JPiT)とソフトバンクによる互いの訴訟 その後どうなったのかと思っていたら、 2020年ソフトバンク株主総会の開示資料 に記載があった 裁判の結果は 継続中らしく、追加業務の報酬額は当時の約149億円から約240億円に膨らんでいるとの記述 日本郵政の資料に記載がなかったのは、JPiTとソフトバンクの問題だからなのか 【追記】2022/9/9 東京地裁  ソフトバンクに108億円賠償命令

Centos7 と Ubuntu18.04 の初期設定に利用するコマンドの違いをメモ

 Centos が Stream へ移行するにあたり、よい機会なのでサーバの一つを Ubuntuへ切り替えた時の初期設定に利用するコマンドの違いメモ CloudAtCostで提供されていたというだけの理由で、Centos7 と Ubuntu 18.04 LTS の違いです SELinux → Ubuntu には搭載されていません (AppArmorってのがそれ? 特に設定に対して障害となるようなことは起きなかった) パッケージ管理 yum → apt # apt update パッケージ一覧の更新 # apt upgrade パッケージの更新 デーモン管理 (Centos7以降なら同じ) → systemctl タイムゾーン設定 (同じ) → timedatectl set-timezone Asia/Tokyo SSHポート変更 (同じ) ※要ファイアウォール設定 # vi /etc/ssh/sshd_config Port ポート番号 PermitRootLogin no (rootログイン禁止) # systemctl restart sshd 反映 visudo (同じ) → visudo ファイアウォールコマンド (実動作はどちらも iptables) firewall-cmd → ufw # ufw enable 有効 # ufw disable 無効 # ufw reload 更新 オープン/クローズ # ufw allow 22/tcp # ufw deny 22/tcp オープン/クローズ(プロトコル指定なし) # ufw allow 22 # ufw deny 22 ルール一覧表示(番号付)と削除(番号から) # ufw status numbered # ufw delete [number] 細かい設定は /etc/ufw/before.rules あたりに記述