メモの日々


2019年09月27日(金) [長年日記]

[windows] Windows 10でファイル共有ができない原因

Windows 10でフォルダを共有しても、他のPCからアクセスできず困った。

設定の[ネットワークとインターネット]→[共有オプション]にある設定を色々変更してみたが解決しない。

共有ができない原因は、ネットワークアダプターの設定にあった。設定の[ネットワークとインターネット]→[アダプターのオプションを変更する]ででる画面で対象アダプタのプロパティを表示すると、

  • Microsoftネットワーク用ファイルとプリンター共有

のチェックが外れていた。ここをチェックすると共有フォルダへ他のPCからアクセスできるようになった。


2019年09月13日(金) [長年日記]

[web][java] TomcatをApacheと連携させる方法

Tomcatの前段にリバースプロキシとしてApacheを配置し、Apache経由でTomcatにアクセスできるようにする方法を少し調べたのでメモ。試したバージョンはTomcat 8.5.39とApache 2.4.29。

リバースプロキシとして動作させるためにはApacheにモジュールを導入する必要があるが、その選択肢として次の3つがある。

モジュール名Apache~Tomcat間のプロトコルメモ
mod_proxy_httpHTTPApacheの同梱モジュールで導入は簡単
mod_proxy_ajpAJPApacheの同梱モジュールで導入はまあ簡単
mod_jkAJPTomcat側で開発されている。試してないけど上記モジュールよりは面倒そう

mod_proxy_httpを使う場合

TomcatはデフォルトでHTTPを受け付けるようになっているので、mod_proxy_httpを使う場合はApache側の設定だけで連携を実現できる。必要な設定はモジュールのロードと要求の転送設定で、次のような感じで指定する。

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so

<IfModule mod_proxy.c>
    ProxyPass /test http://localhost:8080/app1
    ProxyPassReverse /test http://localhost:8080/app1
</IfModule>
  • mod_proxy_httpを動作させるにはmod_proxyも必要なのでそれもロードする。
  • ProxyPassが要求を転送するためのディレクティブ。
  • ProxyPassReverseはリダイレクト先を適切にマッピングするためのディレクティブ。
  • mod_proxyにはほかにも色々なディレクティブがあるので、必要に応じてそれらを使う。

mod_proxy_ajpを使う場合

mod_proxy_ajpを使うには、TomcatがAJPを受け付けるように設定する必要がある。server.xmlの中に

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

というような行があるので、これを生かす(コメントアウトを外す)ようにすればよい。

Apache側の設定はmod_proxy_httpと同様。ロードするモジュール、プロトコル名、ポート番号を変えればよい。

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_ajp_module /usr/lib/apache2/modules/mod_proxy_ajp.so

<IfModule mod_proxy.c>
    ProxyPass /test ajp://localhost:8009/app1
    ProxyPassReverse /test ajp://localhost:8009/app1
</IfModule>

2019年09月12日(木) [長年日記]

[life] toto当せんした(5)

3か月ぶりに当せん。ペース早いが、当せん金はまた890円。100円BIG1119回の5等でした。


2019年09月03日(火) [長年日記]

[dev][hotwo] Githubでフォーク元に追従する

Githubでフォークしたリポジトリをフォーク元の最新に同期する方法について、Githubのヘルプにある方法をメモ。ヘルプは公式で翻訳されている。

フォーク元を登録

まず現状を確認。

$ git remote -v
origin  git@github.com:YOUR_USERNAME/YOUR_FORK.git (fetch)
origin  git@github.com:YOUR_USERNAME/YOUR_FORK.git (push)

まだフォーク元が登録されていないのなら、次を実行して登録する。upstreamという名前で登録している。

$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

フォーク元の最新を取り込む

upstreamをローカルにfetchした後で、upstream/masterをmasterブランチにマージする。

$ git fetch upstream
$ git checkout master
$ git merge upstream/master

問題なければoriginにpushする。

$ git push origin HEAD

2019年08月30日(金) [長年日記]

[web] XML内にXHTML要素を書くとブラウザがHTMLとしてレンダリングしてしまう

XMLファイルをウェブブラウザで開くとそれなりにレンダリングしてくれて、簡易XMLビューワとして使える。

しかし、XML内にXHTMLの要素を含めるとHTMLとしてレンダリングされてしまうようだ。こうなるとXMLビューワとしては使えないので不便。

元々はブラウザで表示が変になるXMLがあるけど何故だろうと調べていて、次のコメントを見てHTMLとしてレンダリングされているのかと気づいた。

this declaration puts the parsers to the XHTML mode and handles the document as an XHTML document. The rendering results makes sense if browsers parsed the document as an XHTML.

以下にFirefox 68での例を示すが、Chrome 76やEdge 44、IE 11でも同様の振る舞いになる。表示モードを切り替えるスイッチがあるといいのだが、あったりするのだろうか?

通常のXMLのレンダリング

次のファイルを用意する。

<?xml version="1.0" encoding="UTF-8"?>
<kenichi xmlns:h="http://www.w3.org/1999/xhtml">
    <hello>こんにちは</hello>
</kenichi>

kenichi要素でXHTMLの名前空間を参照しているが、これは後に示すの例と比較するために書いているだけで本質的なものではない。

上のXMLをFirefoxで開くと、次のようにXML要素がツリー上に表示される。

XMLとしてレンダリングされている様子

XHTML要素を含むXMLのレンダリング

先の例に「<h:s>さようなら</h:s>」という行を追加した次のファイルを用意する。

<?xml version="1.0" encoding="UTF-8"?>
<kenichi xmlns:h="http://www.w3.org/1999/xhtml">
    <hello>こんにちは</hello>
    <h:s>さようなら</h:s>
</kenichi>

上のXMLをFirefoxで開くと、次のようにHTMLとして表示されてしまう。

HTMLとしてレンダリングされている様子