昔から使い続けているソフトに、BunBackup というのがある。
http://nagatsuki.la.coocan.jp/bunbackup/
ファイルをバックアップしてくれるソフトだ。
フォルダの中の更新されたファイルだけをバックアップ先のフォルダにコピーしたりすることができて、
実行すれば、バックアップ元とバックアップ先の同期が取れるというやつ。
プログラムのソースコードなんかのバックアップにはもってこいなのだ。
バックアップ方法の設定で、条件指定ができるのだが、これにちょっとしたトラップがある。
条件指定には、次の4つの項目が選択できる。
新しいファイル
異なるサイズ
新しい時刻
異なる時刻
デフォルトでは、
新しいファイル
異なるサイズ
新しい時刻
の3つが有効になっている。
普通はこれでいい。
しかし、バックアップ先フォルダを誰かと共有していた場合はこれだと駄目。
もしもバックアップ先のフォルダに、新しい時刻のファイルがあった場合に、
バックアップを実行してしまうと、こちら側にある古いファイルが、バックアップ先にコピーされて、
時刻が古いファイルに置き換わってしまう。
なんで、こんなことになるのかとしばし悩んだが、答えはこうだ。
大抵、時刻が更新されたファイルというのは、サイズが変わっているものである。
上記の条件だと、異なるサイズのファイルがあった場合にもバックアップが行われるから、
日付が古くてもコピーされてしまうのだ。
ということで、これを回避するには、
条件設定の 異なるサイズ をOFFにするとよい。
そうすれば、バックアップによって、ファイルが古くなってしまうことはなくなる。
このソフト、このデフォルト動作を変更することはできなさそうです。
2025年06月24日
BunBackup のトラップ
posted by sjoe at 11:34| 日記
2025年05月26日
Delphi の TEdgeBrowser を使いたい!
Delphi で TEdgeBrowser コンポーネントを使うと、Chromium ブラウザの機能を自作アプリに搭載できるというのは、とても魅力的。既存のJavaScript フレームワークを使って、リッチな画面描画もできる。
でも、そのアプリの中のDelphi側でマウス操作のイベントを掴んでなにか操作を行うのはちょいと難しいらしく、Web検索ではその方法が解らなかった。何やら Timer を使ってごにょごにょやると実現できるらしいのだが、具体的にはわからん。
そういうときは、同一アプリにWebサーバーの機能とブラウザの機能を両方付けてしまえばいい。
ブラウザ側でリンクを踏んで、イベントをつかんだら、JavaScriptでデータをWebサーバーに送ることができる。サーバー側でそれを受け取ったら、それに応じて処理を行えばいいのだ。
ということに気づき、早速実装。
アプリにWebサーバーを搭載するのと、いままで使っていた TWebBrowser をTEdgeBrowserに交換するのを両方いっぺんにやったので、結構大がかりな改変になったが、動けば大満足。画面描画も美しい。
非同期通信だから、Webサーバー側でイベントを受け取ったあとの処理は、自分自身にWindowsメッセージを送信して、Windowsアプリ部分でメッセージを受け取り、ダイアログ画面をだす。なんてことが必要になることもある。その辺がポイントかな。ちょっとややこしいが、なんだか高度なことをやってる気になれるので、その分できあがった時の喜びも大きい。
でも、そのアプリの中のDelphi側でマウス操作のイベントを掴んでなにか操作を行うのはちょいと難しいらしく、Web検索ではその方法が解らなかった。何やら Timer を使ってごにょごにょやると実現できるらしいのだが、具体的にはわからん。
そういうときは、同一アプリにWebサーバーの機能とブラウザの機能を両方付けてしまえばいい。
ブラウザ側でリンクを踏んで、イベントをつかんだら、JavaScriptでデータをWebサーバーに送ることができる。サーバー側でそれを受け取ったら、それに応じて処理を行えばいいのだ。
ということに気づき、早速実装。
アプリにWebサーバーを搭載するのと、いままで使っていた TWebBrowser をTEdgeBrowserに交換するのを両方いっぺんにやったので、結構大がかりな改変になったが、動けば大満足。画面描画も美しい。
非同期通信だから、Webサーバー側でイベントを受け取ったあとの処理は、自分自身にWindowsメッセージを送信して、Windowsアプリ部分でメッセージを受け取り、ダイアログ画面をだす。なんてことが必要になることもある。その辺がポイントかな。ちょっとややこしいが、なんだか高度なことをやってる気になれるので、その分できあがった時の喜びも大きい。
posted by sjoe at 13:37| 日記
2025年05月03日
ブラウザの戻るボタンと進むボタン
Delphi で作成した、自前のWindows フォームアプリで、キーボードやマウスに付いてる「戻る」と「進む」のボタンをどうやって使うのか。
これらのボタンが押されると、WM_APPCOMMAND っていうメッセージがアプリに飛んできている。
だからそれを横取りしてやればいい。
それには、TForm1 に、
procedure WMAppCommand(var Msg: TMessage); message WM_APPCOMMAND;
というプロシージャを設置するんだ。
具体的なソースコードは、「くろねこ研究所」さんにあったよ。
https://www.blackcat.xyz/article.php/ProgramingFAQ_del0077
感謝。
このブログでソースコードを載せる方法がわからん。
これらのボタンが押されると、WM_APPCOMMAND っていうメッセージがアプリに飛んできている。
だからそれを横取りしてやればいい。
それには、TForm1 に、
procedure WMAppCommand(var Msg: TMessage); message WM_APPCOMMAND;
というプロシージャを設置するんだ。
具体的なソースコードは、「くろねこ研究所」さんにあったよ。
https://www.blackcat.xyz/article.php/ProgramingFAQ_del0077
感謝。
このブログでソースコードを載せる方法がわからん。
posted by sjoe at 17:58| 日記
2025年04月02日
VLC for Android でWindows共有ファイルの動画再生
WindowsマシンやlinuxマシンでLANを組んでて、smbファイル共有で動画を共有している。
アンドロイド スマホのVLC という動画プレーヤをつかうと、共有動画を再生できるんだが、これがちょっと曲者。
ユーザー認証が失敗すると、
DOMAIN;username
password
を入力しろ、ってでてくる。
こんな書式は他では見ないけども、これに従うと認証できる。
DOMAINのところは大文字で入力しないとダメだ。
domain.local とかじゃだめ。
それと区切り記号はセミコロン「 ; 」だ。ほかでは見ないなあ。
JohnDoe@example.com(UPN表記)とか、
EXAMPLEDOMAIN¥exampleuser とかなら見るんだけども。
ワークグループ環境だったらWORKGROUPとか書くんだろうけど、うちはアクティブディレクトリでドメイン環境つくちゃってるので、ワークグループ環境はよくわかりません。
あとファイルサーバー側で、 SMB1.0/CIFS のプロトコルをサポートしてないとだめだ。
linux のsambaなら、
server min protocol = NT1
という設定が必要。
windowsなら「windowsの機能」とかで設定できるはず。
セキュリティ的にはSMB1.0を使わないほうがいいというのだが、これは vlc が対応してないのでしょうがない。vlc for android は更新が止まってるらしいけど、なんとかしてくれ。
アンドロイド スマホのVLC という動画プレーヤをつかうと、共有動画を再生できるんだが、これがちょっと曲者。
ユーザー認証が失敗すると、
DOMAIN;username
password
を入力しろ、ってでてくる。
こんな書式は他では見ないけども、これに従うと認証できる。
DOMAINのところは大文字で入力しないとダメだ。
domain.local とかじゃだめ。
それと区切り記号はセミコロン「 ; 」だ。ほかでは見ないなあ。
JohnDoe@example.com(UPN表記)とか、
EXAMPLEDOMAIN¥exampleuser とかなら見るんだけども。
ワークグループ環境だったらWORKGROUPとか書くんだろうけど、うちはアクティブディレクトリでドメイン環境つくちゃってるので、ワークグループ環境はよくわかりません。
あとファイルサーバー側で、 SMB1.0/CIFS のプロトコルをサポートしてないとだめだ。
linux のsambaなら、
server min protocol = NT1
という設定が必要。
windowsなら「windowsの機能」とかで設定できるはず。
セキュリティ的にはSMB1.0を使わないほうがいいというのだが、これは vlc が対応してないのでしょうがない。vlc for android は更新が止まってるらしいけど、なんとかしてくれ。
posted by sjoe at 10:33| 日記
2023年03月01日
CentOS 7からRocky Linux に乗り換えた
CentOS 7のサポート期間もあと一年ぐらいなので、Rocky Linuxを試してみたら、
ほぼ、CentOS 8 と同じなので、こりゃあいいやって感じで、完全に乗り換えました。
GUIは使ってないから、あまり複雑なこともなく、そんなに苦労せずにできた。
Rocky Linux のサポート期間はリリースから10年らしいのでまあ安心。
そのころには自分は死んでるかも。笑。
うちのLinuxは2台あるけど、GUIは入れてなくて、片方はsambaでファイルサーバー、Djangoでアプリサーバーを稼働している。
もう片方はSambaでファイルサーバーと、Baculaでバックアップサーバー。
だから、GUIはほぼ必要なし。Baculaのウェブインターフェース(Baculum)は使ってるけど。
そういうわけで現在のうちのLinuxサーバーは、
Ubuntu Server 22.04
Rocky Linux 9.2
になりました。パッケージ管理はapt系とdnf(yum)系の両方使いになった。
別に同じ系統を2台でも良かったのだけど、興味もあるし、いろいろあってこうなった。
ほぼ、CentOS 8 と同じなので、こりゃあいいやって感じで、完全に乗り換えました。
GUIは使ってないから、あまり複雑なこともなく、そんなに苦労せずにできた。
Rocky Linux のサポート期間はリリースから10年らしいのでまあ安心。
そのころには自分は死んでるかも。笑。
うちのLinuxは2台あるけど、GUIは入れてなくて、片方はsambaでファイルサーバー、Djangoでアプリサーバーを稼働している。
もう片方はSambaでファイルサーバーと、Baculaでバックアップサーバー。
だから、GUIはほぼ必要なし。Baculaのウェブインターフェース(Baculum)は使ってるけど。
そういうわけで現在のうちのLinuxサーバーは、
Ubuntu Server 22.04
Rocky Linux 9.2
になりました。パッケージ管理はapt系とdnf(yum)系の両方使いになった。
別に同じ系統を2台でも良かったのだけど、興味もあるし、いろいろあってこうなった。
posted by sjoe at 18:12| 日記
2023年02月27日
baculum 13
linux で動くバックアップシステム bacula がバーション13になった。
centos 7 に設定したリポジトリのおかげで、yum update で自動的にアップデートされた。
だが、baculaのリポジトリに GUIインターフェース baculum の新バージョンがなかなか登録されないため、
baculum は11のままだった。
どうやら baculum 13 はマニュアルインストールしなきゃならないらしい。
マニュアルインスト−ルの方法は、以下のリンク先に書いてあった。
バージョン11の情報だが、13でも同じだ。
https://baculum.app/doc/brief/installation.html#manual-installation
この通りにやれば、インストールは完了。
それでGUIを試してみたら、php-jsonのエラーが出る。
CentOS 7 のPHP のバージョンが古いせいだ。
なので PHPをバージョンアップしなきゃならない。
https://qiita.com/inakadegaebal/items/b57cf10339978d638305
ここにCensOS7 にPHP7をインストールする方法が書いてある。
PHP7にしたら、baculum のエラーも出なくなった。
なるほど、baculum13がリポジトリに登録されない理由がわかった。
PHPまでアップグレードしなきゃならないからだな。
centos 7 に設定したリポジトリのおかげで、yum update で自動的にアップデートされた。
だが、baculaのリポジトリに GUIインターフェース baculum の新バージョンがなかなか登録されないため、
baculum は11のままだった。
どうやら baculum 13 はマニュアルインストールしなきゃならないらしい。
マニュアルインスト−ルの方法は、以下のリンク先に書いてあった。
バージョン11の情報だが、13でも同じだ。
https://baculum.app/doc/brief/installation.html#manual-installation
この通りにやれば、インストールは完了。
それでGUIを試してみたら、php-jsonのエラーが出る。
CentOS 7 のPHP のバージョンが古いせいだ。
なので PHPをバージョンアップしなきゃならない。
https://qiita.com/inakadegaebal/items/b57cf10339978d638305
ここにCensOS7 にPHP7をインストールする方法が書いてある。
PHP7にしたら、baculum のエラーも出なくなった。
なるほど、baculum13がリポジトリに登録されない理由がわかった。
PHPまでアップグレードしなきゃならないからだな。
posted by sjoe at 23:01| 日記
2019年05月25日
windows server 2016 のIIS 資格情報が無効
windows server 2016 のIISの設定で。
役割の追加とかで、IISをインストールしたら、普通のブラウザで何の気なしに
http://ServerName/
にアクセスしても
「権限がありません: 資格情報が無効のためアクセスが拒否されました」
と、つれない返事。
これは匿名認証のユーザー( IUSR )に、フォルダやファイルへの読み取りと実行のアクセス権限を与えることで解決。
ん? これユーザーグループ名かな?アイコンがグループのアイコンになってるから。。。
ちょっとよくわからん。
役割の追加とかで、IISをインストールしたら、普通のブラウザで何の気なしに
http://ServerName/
にアクセスしても
「権限がありません: 資格情報が無効のためアクセスが拒否されました」
と、つれない返事。
これは匿名認証のユーザー( IUSR )に、フォルダやファイルへの読み取りと実行のアクセス権限を与えることで解決。
ん? これユーザーグループ名かな?アイコンがグループのアイコンになってるから。。。
ちょっとよくわからん。
posted by sjoe at 17:05| 日記
2019年05月13日
自宅内のPC同士は通信できるのに、インターネットにはつながらない
Windows10である。自宅内PCは全てLANで接続されていて、さっきまでは、インターネットにもアクセスできていた。
でも、何かのきっかけで、インターネットに接続できなくなることがある。
自宅内のwebサーバーやファイル共有領域にはアクセスできるのに。だ。
プロンプトを立ち上げて、
route print
とかやってみても、異常はない。
それでもインターネットにはwebやFTPなどで接続不可能となる。しかし、なぜかping は通る。udpは通るってことなのかも。
他のPCはどうか?
これは異常なし。
ある特定のPCだけが、インターネット接続不能。
PCを再起動してもダメ。
あれこれやってみた結果、PCを一度セーフモードで立ち上げて、もう一度ふつうに再起動すると直るということを発見した。
Windows10のセーフモードってどうやるの?
とGoogle先生に聞いてみると、教えてくれる。あー。そんな方法かー。知らなかった。とてもややこしい方法だなあ。セーフモードに世話になることもあまりなくなってきたから、こんなややこしくなったのかね。
でも、接続不能になる原因はよくわからない。
うちのPCでは、power DVDというソフトが調子悪く、ブルーレイの再生ができなくなってて、あれこれやってるうちに、インターネットに出られなくなる、ということはわかってますけど、それも、このPCだけだし。
Windows10をまっさらな状態からインストールした方がいい、って気がしてますよ。
2016年08月29日
VMware ESXi 5.5 でHDD増設のメモ
VMware ESXi 5.5 でHDD増設のメモ 2016/8/29
物理的にHDDを増設したら、物理マシンを起動。
vSphere Client でクライアントマシンから接続。
datastore1を拡張する。
仮想マシンの設定で、HDDのサイズを変更する。
増設するHDDのサイズが大きい時は、仮想マシンはシャットダウンしておかなきゃならない
小さい場合は稼働中に変更できる。
100G を 200G に増やすのはできたが、1.5T を2.5T に増やそうとしたら、それは拒否された。
仮想マシンを起動。
◎仮想マシンがWindows Server の場合。
コンピュータの管理を開き、ディスクの管理。
Cドライブの拡張をすれば、GUIで簡単。
◎仮想マシンがCnetOS 7 の場合。
1. HDDのパーティションをつくる。
/dev/sdaの容量が大きくなったので、その分が空き領域になっている。
fdisk /dev/sda
で、拡張された部分のパーティションを作る。
今回は /dev/sda3 を作成。System id を 8e (Linux LVM)にするのを忘れずに。
その後、
partprobe を実行。
2. LVMでの操作
pvcreate /dev/sda3
vgextend centos /dev/sda3
lvextend -L +50G /dev/centos/home
lvextend -l +100%FREE /dev/centos/smbshare
これでlv が大きくなった。
3. ファイルシステムを拡張する。
ファイルシステムは XFS なので、
xfs_growfs /home
xfs_growfs /smbshare
このコマンドは一瞬でおわる。ホントにやったのか?ってくらい。
それこそテキストを表示する時間ぐらいしかかかってないんじゃないの?ってくらい。
df で確認すると、確かに増えてる。
物理的にHDDを増設したら、物理マシンを起動。
vSphere Client でクライアントマシンから接続。
datastore1を拡張する。
仮想マシンの設定で、HDDのサイズを変更する。
増設するHDDのサイズが大きい時は、仮想マシンはシャットダウンしておかなきゃならない
小さい場合は稼働中に変更できる。
100G を 200G に増やすのはできたが、1.5T を2.5T に増やそうとしたら、それは拒否された。
仮想マシンを起動。
◎仮想マシンがWindows Server の場合。
コンピュータの管理を開き、ディスクの管理。
Cドライブの拡張をすれば、GUIで簡単。
◎仮想マシンがCnetOS 7 の場合。
1. HDDのパーティションをつくる。
/dev/sdaの容量が大きくなったので、その分が空き領域になっている。
fdisk /dev/sda
で、拡張された部分のパーティションを作る。
今回は /dev/sda3 を作成。System id を 8e (Linux LVM)にするのを忘れずに。
その後、
partprobe を実行。
2. LVMでの操作
pvcreate /dev/sda3
vgextend centos /dev/sda3
lvextend -L +50G /dev/centos/home
lvextend -l +100%FREE /dev/centos/smbshare
これでlv が大きくなった。
3. ファイルシステムを拡張する。
ファイルシステムは XFS なので、
xfs_growfs /home
xfs_growfs /smbshare
このコマンドは一瞬でおわる。ホントにやったのか?ってくらい。
それこそテキストを表示する時間ぐらいしかかかってないんじゃないの?ってくらい。
df で確認すると、確かに増えてる。
2015年09月07日
ゆうちょダイレクトのログイン時のエラー
ゆうちょダイレクト便利です。
ゆうちょの口座のインターネットバンクシステムです。
ゆうちょ同士の振込手数料が、月5回までなら無料だし。
結構重宝してます。
しかし最近このゆうちょダイレクト、ログインの時に必ず一回は失敗するようになった。
まず「お客様番号」を入力して「次へ」をクリックした後に、
##################
「お客さま番号」の桁数は4桁−4桁−5桁(半角)です。
お確かめの上、もう一度ご入力ください。
##################
というメッセージがでて、もう一度お客様番号を入力させられることになる。
もちろん「お客さま番号」は桁数どころか、なにも間違っていない。
そしてもう一度入力してみると、今度は先に進めてちゃんとログインできる。
なにこれ、フィッシング詐欺?
かと思うような動きだが、パスワードは入力していない時点でこんな動きになるので、
詐欺の手口としては意味がない。
サポートに電話して聞いてみたが、なかなか事態は改善されない。
でもサポートとのやりとりの中にウィルス対策ソフトとの相性があるような話があった。
僕が使っている「avast!無料アンチウィルス」は相性が悪いんだって。
なるほど。
じゃあ、やってみようということで、avast!の機能を一時的に無効にしてみたら
あっさりログインできました。
そういうことで、
ゆうちょダイレクトにアクセスするときは
avast! というアンチウィルスソフトを無効にしておこう。と言う話。
ゆうちょの口座のインターネットバンクシステムです。
ゆうちょ同士の振込手数料が、月5回までなら無料だし。
結構重宝してます。
しかし最近このゆうちょダイレクト、ログインの時に必ず一回は失敗するようになった。
まず「お客様番号」を入力して「次へ」をクリックした後に、
##################
「お客さま番号」の桁数は4桁−4桁−5桁(半角)です。
お確かめの上、もう一度ご入力ください。
##################
というメッセージがでて、もう一度お客様番号を入力させられることになる。
もちろん「お客さま番号」は桁数どころか、なにも間違っていない。
そしてもう一度入力してみると、今度は先に進めてちゃんとログインできる。
なにこれ、フィッシング詐欺?
かと思うような動きだが、パスワードは入力していない時点でこんな動きになるので、
詐欺の手口としては意味がない。
サポートに電話して聞いてみたが、なかなか事態は改善されない。
でもサポートとのやりとりの中にウィルス対策ソフトとの相性があるような話があった。
僕が使っている「avast!無料アンチウィルス」は相性が悪いんだって。
なるほど。
じゃあ、やってみようということで、avast!の機能を一時的に無効にしてみたら
あっさりログインできました。
そういうことで、
ゆうちょダイレクトにアクセスするときは
avast! というアンチウィルスソフトを無効にしておこう。と言う話。