空いてるポートを取得できる関数の提案No.10574
こみやんま さん 25/02/20 16:49
 
「空きポート」を取得できる getFreePort() のような関数を秀丸マクロに標準搭載
する提案です。

これは、秀丸の個別ブラウザ枠やレンダリング枠でSPA的なページを表示する際に、
http://localhost:port で簡易サーバーを立てるニーズに応えるものです。

長くなるので、

https://github.com/komiyamma/hm_free_port

に提示しました。


意味的には英語圏の人は getAvailablePort とかの方がいいのかもしれないですが、
日本人だと「Available」は相当高確率で綴ミスするのでFreeの方がいいかとw


[ ]
RE:10574 空いてるポートを取得できる関数No.10575
秀丸担当 さん 25/02/21 09:35
 
ご意見ありがとうございます。
他のプログラムがサーバーを立てるために秀丸エディタが空きポートを探すというこ
とだと思いますが、そこまではやりすぎだと思うので、やめておこうと思います。

[ ]
RE:10575 http://localhost作戦No.10576
こみやんま さん 25/02/22 23:43
 

http://localhost作戦 の もう一つの代案としては、
「個別ブラウザ枠」や「レンダリング枠」(特に個別ブラウザ枠)向けに、

> WebView2の「SetVirtualHostNameToFolderMapping」

の機能を使うというものです。
(westernさんも以前話題に出していたと思います)

これは結構強力で、事実上「httpサーバーを立てること無く」
「特定のフォルダーをrootフォルダとみなしてhttpサーバーを一時的に立てたかの如
き」
効果を得られます。

しかもサーバーが実際に立っているわけではないので秀丸外部からはアクセスできま
せん。
(秀丸マクロのcreateHttpServerよりよっぽど安全ですw)

そのURLでアクセスできるのは、あくまでも該当の「SetVirtualHostNameToFolderMap
ping」の設定を行った
WebView2インスタンスだけです。

実装側。WebView2インスタンスの「CoreWebView2のSetVirtualHostNameToFolderMapp
ing」の簡易例
```C# C++でも類似。
webView = new WebView2();
await webView.EnsureCoreWebView2Async(null);
webView.CoreWebView2.SetVirtualHostNameToFolderMapping("localhost", "C:\\あ
いうえお", CoreWebView2HostResourceAccessKind.Allow);
webView.Source = new Uri("https://localhost/index.html");
```

(上の例は「https://localhost/***」とアクセスされると該当のWebview2インスタン
スについては
「httpsプロトコル」で"C:\あいうえお\***"にアクセスする)


## browserpanecommandやrenderpanecommand実装例

browserpanecommand({
   virtualhost: "localhost",
   foldermap:"C:\\あいうえお", // virtualhost が有効な場合にのみ有効。
   url: "http://localhost/index.html",  // C:\\あいうえお\\index.html を htt
pプロトコルで表示する。
   show: 1
}

browserpanecommand({
   virtualhost: "hidemaruo.net", // このようなサイトは無いが、あるかないかは
無関係
   foldermap:"C:\\marumaru", //
   url: "http://hidemaruo.net/index.html", C:\\marumaru\\index.html にアクセス
   show: 1
}


[ ]
RE:10576 http://localhost作戦No.10593
秀丸担当 さん 25/02/25 17:52
 
そういう方法もあるのですね。
前の話題で試したような気がします。
これ以上機能を増やしたくないというものあります。
ご意見参考にさせていただきます。

[ ]