今年度から稼動している教育システムはファイルシステムが TSUBAME がホスティングしている CIFS サーバということがあって、少し妙なことになっています。整理すると、こういうことかな?
– 裏のファイルシステムは Linux なので、パーミションは Windows からは隠れている
– でも、ウェブサーバは Linux なので、パーミションの問題は重要
– どうやら、Cygwin からはファイルサーバのパーミションが見える
で、Linux がわかっている人ならば、public_html のパーミションは TSUBAME にログインして、すぐに変更できます。
ところが、これを新入生にやらせるのは無理があります。Windows のコマンドインタフェイスも知らない人に ssh と Linux コマンドを教えるわけにはいきません。
ということで、どうにかして彼らが簡単に public_html フォルダを作成し、適切なパーミションを設定できるようなユーティリティを作りたいと思ったわけです。生兵法は怪我のもとでした。
+ .py な拡張子のファイルをダブルクリックすると Python インタプリタが起動してそれを処理してくれる
+ .py で public_html を作成し、モードを設定するプログラムを作ると適切な Linux パーミションが設定できた
+ でも、(2) のスクリプトをダブルクリックして実行してもうまくいかない???
よく考えてみればわかることなんですが、教育システムには二種類の Python がインストールされていて、ダブルクリックして起動するのは Windows 版、Cygwin からのコマンド行から起動していたのは Cygwin 版という別のシステムだったのです。
悔しいので、ダブルクリックして起動する Windows 版 Python から Cygwin 版 Python を起動するスクリプトを作りました。同じ悩みを持っている人は少ないだろうけれども、ちょっと面白いので公開します。”sys.platform” を出力しているので、最初に Windows 版の Python が、次に Cygwin 版の Python が起動する様子が見られますよ。
#!/usr/bin/python
# vim: set fileencoding=utf-8
import sys
import os
import codecs
sys.stdout = codecs.getwriter(‘utf_8’)(sys.stdout)
print sys.platform
if sys.platform == ‘win32’:
fp = os.popen(‘c:\cygwin\bin\cygpath ‘ + sys.argv[0], ‘r’)
script_path = file.readline(fp).rstrip()
file.close(fp)
os.execl(‘c:\cygwin\bin\python’, ‘python’, script_path)
import time
time.sleep(20)
# vim: sw=4 smartindent autoindent