ラベル 備忘録 の投稿を表示しています。 すべての投稿を表示
ラベル 備忘録 の投稿を表示しています。 すべての投稿を表示

2026-07-09

KDE Plasma と fcitx5

KDE Plasmaは、KDE コミュニティによって Unix 系 OS 向けに開発されたグラフィカルシェルです。これは、ユーザーと OS 間のインターフェース層として機能し、アプリケーションの起動、ウィンドウの管理、ファイルやシステム設定の操作を行うためのグラフィカルユーザーインターフェース(GUI)およびワークスペース環境を提供します。Plasmaはモジュール式で適応性が高く設計されており、パーソナルコンピュータ向けの「Plasma Desktop」や、スマートフォン向けの「Plasma Mobile」など、特定のデバイスタイプに合わせて最適化されたさまざまなバリエーションが用意されています。

Wikipedia より引用、翻訳、編集

本来は、本ブログに投稿した記事から厳選したコンテンツを note にも公開していく予定でしたが、逆になってしまいました。

参考サイト

  1. Fedora KDEで日本語入力!Fcitx5+Mozcの導入とMac風キー設定(変換・無変換) [2026-02-27]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



このエントリーをはてなブックマークに追加

2026-04-07

【備忘録】SB3 と TensorBoard

Stable Baselines3 (SB3) は、PyTorch をベースに実装した、信頼性の高い強化学習アルゴリズム(PPO, DQN, SAC 等)のオープンソースライブラリです。OpenAI Baselines の改良版で、統一された API により、数行のコードで環境の学習・評価・保存が容易に行えるため、研究やプロトタイピングの効率を大幅に向上できます。

強化学習モデルの学習中に、エピソード毎に解析したい情報を引き出す方法について Microsoft Copilot(以降、単に Copilot)に相談していたところ TensorBoard で可視化する話がでたので、突っ込んで聞いてみました。TensorBoard はその名前から TensorFlow の専用ツールだと勝手に思っていたのですが、全くの誤解でした。

「知らない」っていうのは怖いですね。TensorBoard を利用することで RL(強化学習)モデルの学習時の内部状態を(ほぼ)リアルタイムで確認できるようになりました。

TensorBoard について

Copilot が TensorBoard について下記のようにまとめてくれました。

  • 学習中の指標(episode reward, loss など)をグラフでリアルタイム可視化するツール
  • ブラウザで http://localhost:6006 を開いて眺めるスタイル
  • TensorBoard は TensorFlow 専用ではない
  • ログファイルを読み取るだけの汎用可視化サーバー
  • SB3 は標準で TensorBoard 出力に対応している
  • RL の “見えない内部状態” を可視化する最強ツール

TensorBoard の基本的な使い方

備忘録として、以前とりあげた倒立振子問題 (CartPole) [3] の学習を TensorBoard で可視化します。

動作環境は、パッケージのバージョンが更新されていることを除けば、倒立振子問題 (CartPole) の記事 [3] と同じですが、さらに TensorBoard をインストールします。

$ pip install tensorboard

TensorBoard を利用するには、モデル生成時、tensorboard_log に TensorBoard 用ログの出力ディレクトリ(存在していなくとも良い)を指定します。

model = PPO(
    "MlpPolicy",
    env,
    verbose=1,
    tensorboard_log="./ppo_cartpole_tensorboard/",
)

編集したプログラム cartpole_rl.py を起動して学習を始めた後に、別ターミナルで TensorBoard を起動します。その際に --logdir に、モデル生成時に指定したログの出力ディレクトリを指定します。

$ tensorboard --logdir ./ppo_cartpole_tensorboard/

ブラウザで http://localhost:6006 を開きます。

他の PC からアクセスする場合 [AlmaLinux 10]

LAN 内の他の PC のブラウザからアクセスをしたい場合は、TensorBoard のポート番号がファイアウォールを通るようにしておきます。

$ sudo firewall-cmd --add-port=6006/tcp --permanent
$ sudo firewall-cmd --reload

TensorBoard を起動する時に外部からアクセスできるように --bind_all を付けます。

$ tensorboard --logdir ./ppo_cartpole_tensorboard/ --bind_all

実行例

TensorBoard 用のログを出力できるようにしたプログラム cartpole_rl.py を起動します。

cartpole_rl.py の実行例
$ python cartpole_rl.py
Using cpu device
Wrapping the env in a DummyVecEnv.
Logging to ./ppo_cartpole_tensorboard/PPO_1
---------------------------------
| rollout/           |          |
|    ep_len_mean     | 20.3     |
|    ep_rew_mean     | 20.3     |
| time/              |          |
|    fps             | 46       |
|    iterations      | 1        |
|    time_elapsed    | 44       |
|    total_timesteps | 2048     |
---------------------------------
-----------------------------------------
| rollout/                |             |
|    ep_len_mean          | 26.4        |
|    ep_rew_mean          | 26.4        |
| time/                   |             |
|    fps                  | 46          |
|    iterations           | 2           |
|    time_elapsed         | 88          |
|    total_timesteps      | 4096        |
| train/                  |             |
|    approx_kl            | 0.008908875 |
|    clip_fraction        | 0.0802      |
|    clip_range           | 0.2         |
|    entropy_loss         | -0.686      |
|    explained_variance   | 0.000353    |
|    learning_rate        | 0.0003      |
|    loss                 | 6.18        |
|    n_updates            | 10          |
|    policy_gradient_loss | -0.0121     |
|    value_loss           | 45.3        |
-----------------------------------------
...
(以降省略)

別ターミナルで TensorBoard を起動します。

$ tensorboard --logdir ./ppo_cartpole_tensorboard/

Firefox を起動して http://localhost:6006 にアクセスします。

Firefox 上に表示した TensorBoard(例)

参考サイト

  1. Tensorboard Integration — Stable Baselines3 documentation
  2. tensorflow/tensorboard: TensorFlow's Visualization Toolkit
  3. bitWalk's: 倒立振子問題 (CartPole) [2025-10-03]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



このエントリーをはてなブックマークに追加

2026-01-22

【備忘録】xlwings と QThread

xlwings は、Python を使って Excel を直接操作したり、Excel から Python コードを呼び出したりできるライブラリです[BSD ライセンス]。VBA マクロの代替として Python で Excel の自動化(スクリプト作成、マクロ、ユーザー定義関数(UDF))を実現でき、Excel と Python のデータをシームレスに連携させ、双方の得意な部分を組み合わせて強力な自動化・データ処理を可能にします。

今回の目的
  • PySide6 の GUI アプリから Excel を操作しようと、Excel とやり取りをする部分をスレッド化したところ、うまくいかずにハマってしまいました。
  • 生成 AI から「PySide6 × xlwings を使う人が必ず通る“最大の罠”なんだよ」なんて言われていたのに、二度も同じ間違いをしてしまったので、備忘録にまとめました。

下記の OS 環境で動作確認をしています。

Windows 11 Pro 25H2
Excel 2024 MSO
Python 3.13.9
PySide6 6.10.1
xlwings 0.33.20

簡単なサンプル(GUI 無し)

まずは、xlwings を利用した、ごく簡単な GUI 無しのサンプルです。

import xlwings as xw

if __name__ == "__main__":
    wb = xw.Book()  # 新しいワークブックを開く
    sheet = wb.sheets["Sheet1"]  # シート・オブジェクトをインスタンス化
    sheet["A1"].value = "Python から書き込みました。"  # 値の書き込み
「簡単なサンプル」の実行例

GUI サンプル

GUI のプッシュボタンをクリックして、簡単なサンプル(GUI 無し)と同じ処理を実行するサンプルです。

このサンプルは Excel へ文字列を書き込むだけですが、複雑な処理を加えても GUI のイベントループに影響を与えないように、「別スレッド」で Excel へアクセスする処理をするようにしています。

import sys

import xlwings as xw
from PySide6.QtCore import (
    QObject,
    QThread,
    Signal,
    Slot,
)
from PySide6.QtGui import QCloseEvent
from PySide6.QtWidgets import (
    QApplication,
    QPushButton,
    QVBoxLayout,
    QWidget,
)


class ExcelWorker(QObject):
    def __init__(self):
        super().__init__()
        self.sheet = None

    @Slot()
    def initWorker(self):
        wb = xw.Book()  # 新しいワークブックを開く
        self.sheet = wb.sheets["Sheet1"]  # シート・オブジェクトをインスタンス化

    @Slot(str)
    def excel_write(self, msg: str):
        self.sheet["A1"].value = msg  # 値の書き込み


class SampleXlwings(QWidget):
    requestWorkerInit = Signal()
    requestWrite = Signal(str)

    def __init__(self):
        super().__init__()
        # xlwings用スレッド
        self.thread = thread = QThread()
        self.worker = worker = ExcelWorker()
        worker.moveToThread(thread)
        thread.started.connect(self.requestWorkerInit.emit)
        self.requestWorkerInit.connect(worker.initWorker)
        self.requestWrite.connect(worker.excel_write)
        thread.start()
        # GUI
        layout = QVBoxLayout()
        self.setLayout(layout)
        but = QPushButton("新規 Excel へ文字列を書き込む")
        but.clicked.connect(self.request_write)
        layout.addWidget(but)

    def closeEvent(self, event: QCloseEvent):
        if self.thread is not None:
            self.thread.quit()
            self.thread.wait()
        if self.worker is not None:
            self.worker.deleteLater()
            self.worker = None
        event.accept()

    @Slot()
    def request_write(self):
        msg = "Python から書き込みました。"
        self.requestWrite.emit(msg)


def main():
    app = QApplication(sys.argv)
    win = SampleXlwings()
    win.show()
    sys.exit(app.exec())


if __name__ == "__main__":
    main()

なお、PySide6 では @Slot のデコレータを省略しても動作します。

「GUI サンプル」の実行例

GUI サンプルを実行すると、Excel の新しいワークブックが開きます。

新規 Excel へ文字列を書き込む ボタンをクリックすると、「簡単なサンプル」と同じように、文字列が Excel シートに書き込まれます。

注意点

ExcelWorker クラスのコンストラクタ __init__ メソッドで、以下のように xlwings のインスタンスを定義すると動作しません。

class ExcelWorker(QObject):
    def __init__(self):
        super().__init__()
        wb = xw.Book()  # 新しいワークブックを開く
        self.sheet = wb.sheets["Sheet1"]  # シート・オブジェクトをインスタンス化

この場合、下記のようなエラーが出ます。

pywintypes.com_error: (-2147417842, 'アプリケーションは、別のスレッドにマーシャリングされたインターフェイスを呼び出しました。', None, None)

メインスレッドで ExcelWorker のインスタンスを定義するので、ExcelWorker.__init__ も当然、「メインスレッド」で実行されます。

「別スレッド」で Excel とやり取りをしたければ、「別スレッド」を thread.start() で開始した後に、その「別スレッド」内で xlwings のインスタンスを定義する必要があります。

そういうわけで、「別スレッド」が開始されたときに初期化用のメソッド ExcelWorker.initWorker を実行するようにしています。

self.thread = thread = QThread()
self.worker = worker = ExcelWorker()
worker.moveToThread(thread)
thread.started.connect(self.requestWorkerInit.emit)  # 「別スレッド」が開始されればシグナルを発行
self.requestWorkerInit.connect(worker.initWorker)
self.requestWrite.connect(worker.excel_write)
thread.start()  # 「別スレッド」開始
    @Slot()
    def initWorker(self):
        wb = xw.Book()  # 新しいワークブックを開く
        self.sheet = wb.sheets["Sheet1"]  # シート・オブジェクトをインスタンス化

参考サイト

  1. xlwings Documentation
  2. ASCII.jp:COM(Component Object Model)は古い技術だが、いまだに現役 あらためて解説する (1/2) [2023-04-23]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



このエントリーをはてなブックマークに追加

2025-12-27

【備忘録】PySide6 のダークモード

Fedora Linux は Red Hat 社が支援するコミュニティ Fedora Project で開発されている Linux ディストロです。このディストロは、最新の技術を積極的に取り込むことで知られています。Fedora Linux の開発成果は CentOS Stream に取り込まれます。ここでテストを経て最終的に Red Hat Enterprise Linux, RHEL へ反映されます。Fedora Linux は、おおむね春と秋の年二回の頻度で新しい版がリリースされています。

メインの PC には Fedora Linux Workstaion(以下 Fedora と呼びます)をインストールしています。そのためデスクトップ環境は GNOME で、ダークモード(暗いスタイル)にして利用しています。

GUI アプリを作るときには、もっぱら Qt for Python (PySide6) を利用しているのですが、デスクトップがダークモードでも Qt のウィジェットには反映されません。Ubuntu で同じことをするとダークモードが反映されるのに Fedora ではできません。謎でした。

Fedora Linux 43 Workstation Ubuntu 25.10

PySide6 のウィジェットにデスクトップのダークモードが反映されないことは、それほど深刻な問題ではなかったので放置していました。それでも、マルチプラットフォーム対応のアプリを作っていると、見映えの違いはやっぱり気になるので、いまごろになって生成 AI (Microsoft Copilot) に尋ねてみました。

Microsoft Copilot とのやり取りを抜粋してまとめました。

📌 1. Fedora 公式:「No custom Qt theming for Fedora Workstation」

Fedora 40 以降、QGnomePlatform と adwaita-qt をデフォルトから外すと公式に決定されました(Fedora 39 では非推奨 → Fedora 40 で正式削除)。

理由は Fedora 公式ページに明記されています:

  • これらのプロジェクトは 「outdated and semi-occasionally broken」
  • Fedora Workstation では Qt upstream の標準テーマに戻す方が良い
  • メンテナンスコストが高く、安定性が確保できない

【情報源】

📌 2. GitHub(FedoraQt/adwaita-qt):プロジェクトが非メンテ状態

adwaita-qt の GitHub リポジトリには、はっきりとこう書かれています:

“Adwaita-qt project is unmaintained and no longer actively developed.”

つまり、開発者側が 開発終了を宣言しています。

【情報源】

【補足】

Fedora 39 以前は下記のようなやり方で、デスクトップのモードに追従できたようです。知りませんでした。

sudo dnf install adwaita-qt6

環境変数を設定:

export QT_QPA_PLATFORMTHEME=gnome

📌 3. 開発者 Jan Grulich 氏のブログ

QGnomePlatform と adwaita-qt の主要開発者である Jan Grulich 氏が、これらのプロジェクトの背景と課題を詳しく説明しています。

ポイント:

  • Qt と GNOME の統合は非常に複雑
  • GNOME の UI 変更に追従するのが困難
  • Qt upstream の仕様変更で壊れやすい
  • Fedora でデフォルトにするには負担が大きい

【情報源】

📌 まとめ:なぜ adwaita-qt6 は廃止されたのか?

理由 説明
メンテナンス不能 開発者がプロジェクトを維持できなくなった(GitHub で明言)
壊れやすい GNOME や Qt の更新で頻繁に壊れる(Fedora 公式が指摘)
Fedora の方針変更 GNOME との統合をやめ、Qt upstream の標準テーマに戻す方針へ
開発者の負担 Qt と GNOME の橋渡しは技術的に非常に難しく、継続が困難

自分なりの結論

デスクトップを KDE Plasma に変更すれば、このような問題は解消されます。

ブログの内容の確認を Microsoft Copilot にお願いしたら、いくつもダメ出しがありましたが、そのうちの一つを追記します。

🔍 KDE Plasma に切り替えた場合のメリット

  • KDE Plasma は Qt のネイティブ環境
  • Qt6 が KDE のテーマ API を直接参照
  • GNOME のような “テーマブリッジ” が不要
  • PySide6 の外観が最も安定する

しかし GNOME のミニマリズムな使い方にすっかり慣れてしまって、これが快適だと思っています。そんなわけで、メインのデスクトップ環境を Windows ライクなものに戻せそうにはありません。

Qt の外観については、今まで通り割り切って利用することにします。

最後に落ち穂拾いです。

🌙 Ubuntu で PySide6 がダークモードを拾う理由

Ubuntu は GNOME ですが、Qt アプリの統合を強化しているため:

  • adwaita-qt6 が標準で入っている
  • GNOME のダークモード設定を Qt に橋渡しする仕組みが有効

そのため PySide6 も自然にダークモードになります。

【補足】

ここは論拠が薄かったので Microsoft Copilot と議論を重ねました。結局 Fedora は upstream-first で独自パッチを極力持たない方針であるのに対し、Ubuntu は ユーザー体験のためなら upstream に依存しない文化があるという違いに帰結してしまいました。これが本題ではないのでこのぐらいにしておきます。

参考サイト

  1. Fedora Linux | The Fedora Project
  2. Qt と GTK アプリケーションの外観の統合 - ArchWiki

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



このエントリーをはてなブックマークに追加

2025-12-16

ダイアログを表示後にサイズを固定する 〜 PySide6

PySide (Qt for Python) は、Qt(キュート)の Python バインディングで、GUI などを構築するためのクロスプラットフォームなライブラリです。Linux, macOS および Microsoft Windows をサポートしています。配布ライセンスは LGPL で公開されています。

PySide6 の GUI アプリで表示した後にウィンドウサイズを変更できないようにしたいと思う時があるのですが、いままでしっかり調べたことがありませんでした。Microsoft Copilot に尋ねてみたところ、showEvent を利用すれば簡単にできることを教えてもらいました。

今まで知らなかったことが恥ずかしいのですが、QDialog のサンプルを例に備忘録にしました。

下記の OS 環境で動作確認をしています。

Fedora Linux 43 x86_64
Python 3.13.9
PySide6 6.10.1
qt_dialog_fixed_size.py
qt_dialog_fixed_size.py の実行例

参考サイト

  1. PySide6.QtWidgets.QDialog - Qt for Python
  2. PySide6.QtWidgets.QWidget - Qt for Python

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



このエントリーをはてなブックマークに追加

2025-11-25

AlmaLinux 10 で httpd を設定

Apache HTTP Server (httpd) は、Apache License 2.0 の条件でリリースされるフリーでオープンソースのクロスプラットフォームの Web サーバソフトウェアです。Apache は Apache ソフトウェア財団の支援のもと、開発者のオープンコミュニティによって開発・保守されています。

Wikipedia より抜粋、修正

家庭内 LAN で稼働している AlmaLinux 10 のファイルサーバーに Apache の httpd をインストールしてローカル Web サーバーに設定したメモです。

httpd のインストールと設定

Apache HTTP Server (httpd) をインストールおよび設定をする OS は下記のとおりです。

OS AlmaLinux 10.0 (Purple Lion) x86_64v2

パッケージのインストール

Apache HTTP Server httpd と httpd-devel パッケージをインストールします。

Apache HTTP Server のインストール
$ sudo dnf install httpd httpd-devel

サービスの起動

Apache HTTP Server のサービス、httpd を起動 (start) します。また、OS 起動後にサービスが使えるように有効化 (enable) します。

httpd の起動 
$ sudo systemctl start httpd
$ sudo systemctl enable httpd

ファイアーウォールの設定

HTTP で通信できるようにサービスを追加した後、ファイアーウォールの設定を再ロードします。

ファイアーウォールの設定 
$ sudo firewall-cmd --zone=public --permanent --add-service=http
success
$ sudo firewall-cmd --reload
success

ユーザ毎のディレクトリの設定

ユーザアカウント内の public_html 内をウェブサイトとして利用できるように /etc/httpd/conf.d/userdir.conf を編集します。下記に変更した箇所を赤字で示しました。

/etc/httpd/conf.d/userdir.conf の設定 
#
# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received.
#
# The path to the end user account 'public_html' directory must be
# accessible to the webserver userid.  This usually means that ~userid
# must have permissions of 711, ~userid/public_html must have permissions
# of 755, and documents contained therein must be world-readable.
# Otherwise, the client will only receive a "403 Forbidden" message.
#
<IfModule mod_userdir.c>
    #
    # UserDir is disabled by default since it can confirm the presence
    # of a username on the system (depending on home directory
    # permissions).
    #
    #UserDir disabled

    #
    # To enable requests to /~user/ to serve the user's public_html
    # directory, remove the "UserDir disabled" line above, and uncomment
    # the following line instead:
    # 
    UserDir public_html
</IfModule>

#
# Control access to UserDir directories.  The following is an example
# for a site where these directories are restricted to read-only.
#
<Directory "/home/*/public_html">
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>

ユーザアカウント内に public_html ディレクトリを作成します。この例ではユーザアカウントは bitwalk のみです。パーミッションは下記のようになっています。

ユーザアカウントのディレクトリとパーミッション 
$ cd ~
$ mkdir public_html
$ chmod 755 /home/bitwalk
$ ll -d /home/bitwalk
drwxr-xr-x. 23 bitwalk bitwalk 4096 11月 25 07:25 /home/bitwalk
$ ll -d /home/bitwalk/public_html
drwxr-xr-x. 2 bitwalk bitwalk 6 11月 25 07:25 /home/bitwalk/public_html
$

httpd を再起動します。

httpd サービスの再起動 
$ sudo systemctl restart httpd

SELinux の設定

最後に SELinux 下で httpd がユーザーディレクトリをアクセスできるように httpd_enable_homedirs を有効にします。

SELinux の httpd_enable_homedirs を有効化
$ sudo setsebool -P httpd_enable_homedirs 1

mod_ssl のインストール

SSL/TLS による HTTPS 通信に対応させるため、下記のように mod_ssl をインストールしておきます。

mod_ssl のインストール 
$ sudo dnf -y install mod_ssl

暗号化された HTTP 通信を行なう標準のポート 443 を利用できるようにファイアウォールを設定します。

ファイアーウォールの設定 (2) 
$ sudo firewall-cmd --permanent --add-port=443/tcp
success
$ sudo firewall-cmd --reload
success

httpd を再起動します。

httpd サービスの再起動 
$ sudo systemctl restart httpd

シンボリックリンクに関して

ユーザーアカウント内で作成した ~/public_html 内にシンボリックリンクを作成して、他の PC のブラウザから見ようとしたところアクセスを拒否されてしまいました。

SELinux のログを確認すると、

SELinux により、/usr/sbin/httpd による read アクセスが、ディレクトリー /home/bitwalk/MyProjects で拒否されました。

というエラーが出ていました。

SELinux の Solutions に従って下記のように httpd_read_user_content を実行したところ、シンボリックリンクしたディレクトリ内をブラウザから閲覧できるようになりました。

SELinux の httpd_read_user_content を有効化 
$ sudo setsebool -P httpd_read_user_content 1

ローカルで動かしているなら SELinux は面倒であれば無効化してしまう、という意見を見かけます。SELinux が普及し始めた古い記事だから、と思いたいのですが…。

いざ SELinux が必要な局面になったら途端に狼狽えてしまうことが判っているので、普段から SELinux アリで設定をしようと心がけています。

せっかく、SELinux でセキュリティの高い OS を実現しているというのに、ローカルだからとか VM で利用しているからという理由を言い訳にして無効にするのはもったいないことです。

ディレクトリ・リスティングの文字化け [追記 : 2025-11-29]

index.html がないディレクトリにアクセスすると、ディレクトリの中身の一覧が表示されます(mod_autoindex の機能)。家庭内 LAN では、この機能を積極的に利用していますが、ディレクトリやファイルの名前が日本語の場合、文字化けしてしまいます。

/etc/httpd/conf.d/autoindex.conf の IndexOptions に Charset=UTF-8 を追加して httpd サービスを再起動することで、文字化けの問題は解消されます。

/etc/httpd/conf.d/autoindex.conf の設定 
#
# Directives controlling the display of server-generated directory listings.
#
# Required modules: mod_authz_core, mod_authz_host,
#                   mod_autoindex, mod_alias
#
# To see the listing of a directory, the Options directive for the
# directory must include "Indexes", and the directory must not contain
# a file matching those listed in the DirectoryIndex directive.
#

#
# IndexOptions: Controls the appearance of server-generated directory
# listings.
#
#IndexOptions FancyIndexing HTMLTable VersionSort
IndexOptions FancyIndexing HTMLTable VersionSort Charset=UTF-8

# We include the /icons/ alias for FancyIndexed directory listings.  If
# you do not use FancyIndexing, you may comment this out.
#
Alias /icons/ "/usr/share/httpd/icons/"
...
...

参考サイト

  1. Apache HTTP Server Version 2.4 Documentation - Apache HTTP Server Version 2.4

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



このエントリーをはてなブックマークに追加