テクデップ(Techdep)

コンピュータ、プログラミング、DTP(InDesign)に関する備忘録

Pythonの軽量ウェブフレームワークBottleのデーモン化

Pythonの軽量ウェブフレームワークBottleは非常に便利である。10行にも満たないコードでウェブサーバーが構築できるけれども、せっかく立ち上げたプロセスはデーモン化してないとログアウトしたらkillされる。 今回はこれをデーモン化したい。今回はBottleのデーモン化に特化したBottleDaemonでやってみよう。

BottleDaemonは文字通りBottleのデーモン化に特化したパッケージ。構成ファイルも一つだけというモノシリックな構造だ。

BottleDaemon 0.1.1 : Python Package Index

必要パッケージの導入

次の二つを導入する。

 $ pip install python-daemon
 $ pip install Bottledaemon

ソースコードの書き換え

BottleDaemonの公式ソースコードに少し手を加えたものが以下。通常のBottleアプリケーションと違って、先頭行にbottledaemonのimportを宣言しておく必要がある。

daemon_run()でデーモンとして立ち上げる。公式では何も引数がないが、この例のようにホストやポート番号の指定ができる。

from bottledaemon import daemon_run
from bottle import route

@route("/hello")
def hello():
   return "Hello World"
 
if __name__ == "__main__":
  daemon_run(host='localhost', port=8080)

起動と停止

以下の様に簡単にできる。

$ python exapmle.py start
$ python example.py stop

デーモン化にはそのためのコードを自前で用意したり、簡単にできる場合でも設定ファイルを編集したりと色々準備が必要だが、Bottleに関しては設定ファイルすらも不要でデーモン化ができる。

参考文献

Bottle: Python Web Framework — Bottle 0.13-dev documentation

BottleDaemon 0.1.2 : Python Package Index

意図せざるリダイレクトの原因

Apache 2.4でとつぼにはまったのでメモしておく。

状況としてはウェブアプリケーションのパス(例:/request/list)がどうしても別のパスにリダイレクトされて、困り果てたというもの。原因としては「301リダイレクトのキャッシュ」だったが、意図せざるリダイレクトの原因としては、以下が考えられる。

  • mod_rewirte
  • .htaccess
  • DirectorySlash
  • 301リダイレクトのキャッシュ

mod_rewirteと.htaccess

設定ファイルなどにリダイレクトの設定が残ってないか。

DirectorySlashの設定

「/list」などをディレクトリへのアクセスとApacheが認識して、末尾にスラッシュを補完することがある。

301リダイレクトのキャッシュ

クライアント側に原因があることもある。ステータスコード301のリダイレクトは「恒久的な移動」なので、ブラウザにキャッシュとして残る。以後ブラウザは、同一URLへのアクセスはサ勝手にリダイレクトする*1。302のリダイレクトであればキャッシュはない。ブラウザのキャッシュを削除すれば良い。

参考文献

https://infra.xyz/archives/75

Apacheでスラッシュで終わるURLのリダイレクトを止める - Qiita

*1:サーバのアクセスログには301リダイレクトと残るから尚更判別がしづらい。

ファイルのみ/ディレクトリのみパーミッションを変更

パーミッションの変更

ファイルのみ、パーミッションを変更する

find . -type f -print | xargs chmod 644

ディレクトリのみ、パーミッションを変更する

find . -type d -print | xargs chmod 755

参考文献

http://technique.sonots.com/index.php?UNIX%2F%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%2F%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E7%AE%A1%E7%90%86%2Fchmod

「ガルパンはいいぞ!」な物語論

劇場版ガールズ&パンツァーBlu-rayが発売されました。自分は立川の爆音上映を何度か観ましたが、あの重低音は素晴らしいものですね。さて、例によって、このガールズ&パンツァー劇場版を物語論の観点から解釈しましょう。

続きを読む

「常用漢字表、表外漢字はいわゆる康熙字典体」を実現するInDesign向けの字形変換スクリプトを公開しました

常用漢字表、表外漢字はいわゆる康熙字典体」を実現するInDesign向けの字形変換スクリプトGlyphconv 2を公開しました*1

f:id:seizo_igawa:20160516162408p:plain

目的

字体整理の標準とされる方針「常用漢字表、表外漢字はいわゆる康熙字典体」ですが、DTPでは拡張新字体というものが問題になります。

これを排除する必要がありますが、この作業を手動で行った日には、時間も掛かる上に作業漏れも多数出てくるでしょう。

このスクリプトは上記の作業を自動化したもので、作業時間の大幅な短縮と整理品質の安定を実現させます。

前バージョンからの変更点

以前にVectorで公開したものと比べて、以下の点を変更しました。

  • 常用漢字表(昭和56年)の字形変換設定 → 削除
  • 外部ソフトウェアが必要 → 不要になりました。InDesignのみで動作します

字形変換について

次の様な字形変換が可能です。常用漢字表内での筆押さえの有無を選択することが可能です。いわゆる康煕字典体へ変換すると標準字形に戻せません。

f:id:seizo_igawa:20160516163146p:plain

使用上の注意点

変換時間

字形変換にはある程度時間がかかります。変換時間は使用するパソコンの性能に依存します。一般に「長文」であればあるほど変換時間は長くなります。また、「いわゆる康煕字典体」の設定で変換すると相当時間がかかります。

数万字を超える長文に対して「いわゆる康煕字典体」変換を行うときは、部分ごとで分割して変換することをお勧めします。

利用条件

スクリプトは商用・非商用に関わらず自由に使用できます。ただし、本スクリプトを使用したことで生じた如何なる結果について、スクリプト製作者は責任を負いかねます。

ダウンロード

下記のリンク先よりダウンロードできます。
https://github.com/igawa-seizo/glyphconv2/releases/download/2.0/glyphconv2.zip

インストール方法

ファイルをまとめて、InDesignスクリプトディレクトリに置くだけで完了です。後はInDesignスクリプトパネルから起動できます。
詳細については附属マニュアルをご参照ください。

*1:Vectorにも同様のスクリプトが公開中ですが古いバージョンです。近日中に公開を停止するかもしれません

日比谷カレッジ「情報化時代に考えたい漢字の話」聴講記録

日比谷図書文化館にて催された「情報化時代に考えたい漢字の話」を聴講したので、文字起こしをします。 内容としては大きく三つに分かれており、 - 常用漢字表とは - 平成22年の改訂はどのようにして決まったのか - 常用漢字表の字体・字形に関する指針 でありました。特に「常用漢字表の字体・字形に関する指針(報告)について|文化庁」については2月29日に文化庁が公開したばかりの指針であり、非常にタイムリーなお話です。

講師は文化庁国語課の武田康宏さんです。常用漢字表や今回の指針の策定にも携っている方で、日本の国語政策に関る官僚のお話を聞けた貴重な機会でした。

この文字起こしは当日のレジュメと講師の発言を概ね時系列順に提示しつつ、私の補足や意見を追記する形で行きます。

講師の発言やレジュメの要約は、文章の前にバレットをつけてリスト形式にしています。

続きを読む

VLAN備忘録:タグ付きフレーム/アクセスポート・VLAN非対応スイッチ

VLAN備忘録

VLAN関係で文献であまり取り上げられて居ない事例について調べないといけない機会があったので、記録しておく。

タグ付きフレームはVLAN非対応スイッチを通過できるか?

トランクポートから送出されたフレームは、VLAN IDが格納されたタグ付きフレームとなって、伝送路を流れる。さて、途中でタグ付きフレームがVLAN非対応スイッチを通る場合、どう処理されるのだろうか?

結論としては、大抵の場合は問題なく転送される。イーサネットフレーム長は規格では1518バイトであるが、VLANタグ付きフレームでは4バイトのヘッダが挿入されて1522バイトとなる。今日は大体がジャンボフレーム対応の機器であるから、問題なく通信できるだろう。ジャンボフレーム非対応の機器であると破棄される。

VLAN非対応の機器はフレーム内部に挿入されたVLAN情報を一切見ずに、宛先のMACアドレスに基づいて通常通りに処理をするだけだ。

アクセスポート(アンタグポート)がタグ付きフレームを受信したときどうなるか?

VLAN対応スイッチでは、アクセスポートとトランクポートとを設定できる。アクセスポートは端末をつなぐためのもので、トランクポートはスイッチ間をつなぐためのものだ。トランクポートから送信されるフレームはVLANタグが挿入される。それでは、アクセスポートがタグ付きフレームを受信したとき、そのフレームはどの様に処理されるのか?

調べた限り、タグ付きフレームのVLAN IDとポートのVLAN IDとが一致している場合に限って受信する様だ。

If an access port receives a packet with an 802.1Q tag in the header other than the access VLAN value, that port drops the packet without learning its MAC source address.

Cisco Nexus 5000 Series NX-OS Software Configuration Guide - Configuring Access and Trunk Interfaces [Cisco Nexus 5000 Series Switches] - Cisco

以下のアライドテレシス機器の説明書でも、似た様な説明があった。
AT-DC2552XS コマンドリファレンス 2.5.3.1: L2スイッチング / バーチャルLAN

また、以下のフォーラムでは、QoSフィールドも絡んだ状況下でアクセスポートがタグ付きフレームを受け入れることもあるという発言がある。
https://supportforums.cisco.com/discussion/11899466/vlandoes-access-port-drop-frame-when-it-received-frame-tag