見た目が素敵なURLに変えるための mod_rewrite を xampp で使う方法を解説します。
mod_rewriteでできること ここに検索でたどり着いた人は Apacheのモジュール mod_rewrite で何ができるかはしってると思いますが念のために例を上げておくと
http://localhost/index.php?user=foo&name=bar
と書く所を
http://localhost/foo/bar.html
と書ける機能です。
foo/bar.html にアクセスすると内部で
index.php?user=foo&name=bar が呼び出されるわけです。
Xamppの設定方法 xampp は既にインストールして使ってる前提で話を進めますのでインストールがまだの方はインストールしてからまた来てください。
まずApacheの設定ファイル http.conf を開きます。 自分の環境では[ X:\sugarsync\bin*xampp\apache\conf\httpd.conf* ] にありました。
モジュールがコメントアウトされてないか確認する #LoadModule rewrite_module modules/mod_rewrite.so のようになってたら “#” を取って
#LoadModule rewrite_module modules/mod_rewrite.so とします。
リライトの規則を書く。 http.conf にどう表示を転送(書き換え?)するか RewriteRule を記述します。
<IfModule rewrite_module> # bar.htmlを作りドキュメントルートに置いて # http://localhost/foo.html でアクセスできるか確認しましょう。 RewriteEngine On RewriteRule /foo.html /bar.html </IfModule> xampp を再起動 で完了 http://localhost/foo.html にアクセスして bar.html の内容が表示されればOK!
それでも動かない場合 …とここまではGoogleで [Xampp mod_rewrite] で検索すると解説されてるサイトいっぱい出てきたんですが上記の設定だけではうちの環境では動きませんでした。
lispでmapに初めて触れた時は「何、このめんどくさい関数?」と感じ、正直な話あまり触れたくもなかったのですが慣れてくるとこいつはとても便利な賢いやつです。
さてjavascriptでもmapが使えるか調べてみたらjQueryで提供されてました。
mapを使えば配列全部に関数を適用させて、返り値を配列で受け取れます。for文なんて使わなくてもええんやっ!!
使い方の例 定番の累乗を求めるサンプル。
arr = [1,2,3]; arr = $.map(arr, function(n,i){return n*n;}); for(i=0;i<arr.length;i++){ alert(arr[i]); } サンプルには良く使われるけど、実際にプログラミングしてて累乗が必要になったことがないですね。まあサンプルなんで実用性よりも分かりやすさが重要だから当然といえば当然の話しですね。
とりあえずこんな感じの動作がmapはできます。
要素をまとめて取得 たとえばこんなhtmlがあって
<div>1</div> <div>2</div> <div>3</div> 配列で[1,2,3]が欲しいとする。
そんな時もこの map を使えば一発解決さ!(深夜の外人がやってる通販のノリで)
arr = $("div").map(function(){ return $(this).text(); }).get(); これでとれる。注意点は最後の get()。これがなくても配列っぽいのが返ってくるんだけども、これはjQuery-wrapped arrayというものらしく別物とのこと。
for文で実行したり arr[0] で要素のアクセスしたりはできるけどもjoinすると上手く行かない。このjoinがうまくできないのにはまってだいぶ時間を食われました。
arr.constructor でクラスを調べたら
function Array() { [native code] } となるべき所が
function (a, b) { return new e.fn.init(a, b, h); } になってました。この「get() すればよい」という情報を得るためにどれだけ遠回りしたことか…。
とはいえこれで安心してmapをjavascriptでも使えるようになったのでガシガシ使っていこうと思います。
参考 http://api.jquery.com/map/
xamppには標準でpythonが入っているけど残念ながらpythonが入ってないので使いたかったら自分で入れる必要があるらしい。なので入れてみた。
環境 Windows 7 32bit
Xampp 1.7.7
Python 2.6.1 (Portable)
必要なもの “Xampp python”で検索するとmod_pythonの情報が出てきてインストール方法も色々と出てくるんだけれどもmod_pythonのwindows版はpythonのバージョンが2.5までにしか対応してないようで非常にめんどくさそう。
色々探してたら簡単な方法を載せてるサイトが見つかったのでその方法を紹介します。
インストールが必要な物は何もなし。ヽ(´▽`)ノ
設定方法 まず
[xamppをインストールしたディレクトリ]\apache\conf\httpd.conf
を開いて
# # For Python # AddHandler cgi-script .py ScriptInterpreterSource Registry-Strict と追記します。
場所は多分どこでもいいけど、既に
“AddHandler cgi-script .cgi .pl .asp”って書いてる所があるのでその下にでも。
んで、動かしたいpythonスクリプトの行頭に
#!P:\Dropbox\bin\Python26\App\python.exe とpython.exeがある場所を書いておきます。
以上で終わり。
確認 #![python.exeの置いてる場所]\python.exe print "Content-Type: text/plain" print print "hello world." と書いて[xamppのフォルダ]\htdocs\pythontest.py に保存して
xampp_start.exe でサーバーを起動させて
http://localhost/pythontext.py
を開いて “hello world.”が表示されたらOK。
サーバーが起動してる状態で設定したらxamppを一回終了させて再起動させないと動きません。
やっとくと便利なこと http://localhost/index.html が
http://localhost/ でも開けるように
http://localhost/index.py が
http://localhost/ でも開けるように設定しときましょう。
# # DirectoryIndex: sets the file that Apache will serve if a directory # is requested.
こんな感じでHTMLを書いたらFirefoxで背景がうまく表示されなかったので調べてみた。ほげ ほげほげ
何でそうなるかは下の「参考」のリンク先でわかったのだけれども対策がめんどくさい。なのでこうする事にしました。ほげ ほげほげ
マナーはあんまりよくないですね。書きやすさ優先です。
参考 CSSでfloatを指定したボックスを含むボックスの背景が出なくなる件
http://www.fsiki.com/archive/css-doc/float.html
Rubyで外部のプログラムを起動させて標準エラー出力を得るには open3 を使わないとできないが、 fork() を使ってるためWindowsでは代替の win32-open3 を使って実現する。
まず gem で win32-open3 をインストール
C:\Users\tetsuyagem install win32-open3 Successfully installed win32-open3-0.3.2-x86-mswin32-60 1 gem installed Installing ri documentation for win32-open3-0.3.2-x86-mswin32-60... Installing RDoc documentation for win32-open3-0.3.2-x86-mswin32-60... 次にわざとエラを出して標準エラー出力が受け取れるか確認する。
require 'rubygems' require 'win32/open3' stdin, stdout, stderr = *Open3.popen3('ruby -error') stderr.each{|line| print line } その結果
-e:1: undefined local variable or method `rror' for main:Object (NameError) 以上。
外部プログラムでエラーでしかほしい情報を返してくれないやつとかいるのでこれが使えると大変便利。
wshで環境変数のUserのPATHに値を追加したかったので、調べてみたらここがそれっぽいんだけど、
WSHで環境変数を設定する
http://www.atmarkit.co.jp/fwin2k/win2ktips/460envset/envset.html
ここで紹介されてるwsfファイルをWindows 7(32bit)環境で動かすと、UserにSystem側のPathまで全部追加されてしまった。
ExpandEnvironmentStrings(“%Path%”) を使うと全ての設定されてるパスをとってきてしまうらしい。 なので
objEnv=objShell.Environment(“USER”) としといて
objEnv.Item(“path”) で取得すればUserの環境変数だけが取得できるのでこっちを使うと多分良い。 WSHを普段全く触らないからホントに良いのかよくわからないけども、とりあえずうちの環境では下のコードを foo.wsf の名前で utf8n で保存してダブルクリックしたらPATHの値が更新された。
重複確認なんて全くしてないので何個でも追加されるので注意してください。
機能 xyzzyで”wŏ shì rìbĕn rén” などが、そこそこ簡単に打てるようになります。
インストール方法 NetInstallerで以下のパッケージを追加して、”ton input”をインストールして下さい。
http://ironsand.net/xyzzy/packages.l
再起動すると有効になってます。
再起動せずに有効にできそうですが、よくわかりませんでした。
NetInstallerが何かわからない人はこちらを読んでください。
http://xyzzy.s53.xrea.com/wiki/index.php?QuickTour%2Fext%2FNetInstaller
使い方 C-F9 (Controlキーを押しながらF9キーを押す)で Ton Input モードに入ります。
“wo” を打った時点で数字の”3″を押すと “wŏ” になります。
1,2,3,4 でそれぞれの声調に、”0″で声調無しに変化します。
“xian” の最後でキーを押せば一番最後に入力された母音の “a” に声調がつきます。
Ton Input モードを終了させるには、もう一度 C-F9 を入力します。
注意点 Ton Input モード中は数字(0~4)を入力しようとしても入りません。
謝辞 ありがとうございます。 ありがとうございます。
マイナーモードの作り方 [silog]
http://white.s151.xrea.com/wiki/index.php?memo%2Fxyzzy%2Fminor-mode
netinstaller 対応メモ
http://d.hatena.ne.jp/bowbow99/20090710/1247182818
そして、lispでわからないことを教えてくれた2chのxyzzyの名無しさん達がいなければ途中で作るのを諦めてたと思います。 みなさんに感謝を。
はじめに 最初に書いておきます。 SSH でログインした telnet 上ではTwitterのつぶやきが行えることを確認しましたが cron で動かしたり、CGIから呼び出したりはうまくいってません。 その情報がほしい方は他のサイトへどうぞ。 情報をすでに持っている方はぜひ教えてください。
~~~~~~~~前置きここまで~~~~~~~~
Twitterの投稿をPythonを使ってさくらのレンタルサーバで行いたいけども外部モジュールである simplejson や twitter をインストールしないと動かずにImportError: No module named simplejson
やらImportError: No module named twitter
なんかのエラーが出てしまう。
インストールに必要なもの 外部モジュールを使うためには以下の物が必要になってくる。
外部モジュールのファイル本体 さくらのレンタルサーバーのスタンダード以上のプラン FTPクライアント telnet/SSH クライアント 外部モジュールのファイル本体
使いたい外部モジュールのファイルをダウンロードしてサーバーにあげて置かなければいけません。
今回は python-twitter とその依存関係のファイル。
さくらのレンタルサーバーのスタンダード以上のプラン
スタンダード以上のプランでないと telnet/SSH が使えないのでライトプランの人は諦めてください。(ノД`)/~ サヨーナラ
FTPクライアント
なくてもできるんですが、あったほうが便利なので。
現在使ってるのがなければFFFTPを使っておいてください。
telnet/SSH クライアント
次に telnet クライアント。 これも何使っても構わないんですが、既に使ってる別のがないのであればフリーの「PuTTY ごった煮版」を使いましょう。
必要なモジュールファイルのダウンロード “python-twitter-0.8.1.tar.gz”
http://code.google.com/p/python-twitter/
だけをインストールするで良いなら楽なんですが、依存関係が3つあるって上のサイトに書いてますので、指定された
“httplib2-0.6.0.tar.gz” と
http://code.google.com/p/httplib2/
“simplejson-2.1.5.tar.gz” と
http://pypi.python.org/pypi/simplejson
“simplegeo-python-oauth2-debian-1.5.169-0-gaee5557.tar.gz” を
http://github.com/simplegeo/python-oauth2
ダウンロードしてきてFTPクライアントを使ってサーバーにアップロードします。ファイルを展開してからアップロードしても良いんですが、そうすると転送時間が結構かかっちゃうのでtelnet上で展開することにします。
FTPクライアントでファイルのアップロード問題ないでしょうから説明を飛ばします。ホームディレクトリの直下にtempとか適当なフォルダを作ってそこに上げておいてください。
xyzzy の lisp の関数 backward-word, previous-word, forward-word, next-word の動作の違いがよくわからなかったので、試してみた。
黒背景白文字が移動前のカーソルの位置で、灰色背景太字が移動後の場所。
backward-word
123 456 789
123456 789
123 456 789
previous-word
123 456 789
123456 789
123 456 789
forward-word
123456 789
123456789
123 456789
next-word
123 456 789
123456 789
123 456 789
backward-word と previous-word は同じ動作で forward-word と next-word は動作が異なるらしい。 あってんのかな、これ。
PythonかRubyのスクリプトを常駐させたかったので調べてみたらRubyの方が簡単そうだったので試してみた。
環境 OS:Windows 7
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]
gem 1.3.4
Portableバージョンを使ってます。
Win32-ServiceのインストールC:>gem install win32-service するだけです。
ただうちの環境ではこんなエラーが出てしまいました。P:/Dropbox/bin/RailsPortable/App/Rails/bin/ruby.exe extconf.rb checking for strncpy_s()… yes creating Makefile nmake Microsoft(R) Program Maintenance Utility Version 9.00.21022.08 Copyright (C) Microsoft Corporation. All rights reserved. P:\Dropbox\bin\RailsPortable\App\Rails\bin\ruby -e “puts ‘EXPORTS’, ‘Init_api’” > api-i386-mswin32.def cl -nologo -I. -I. -IP:/Dropbox/bin/RailsPortable/App/Rails/lib/ruby/1.8/i386-mswin32 -I. -MD -Zi -O2b2xg- -G6 -DHAVE_STRNCPY_S -c -Tcwin32/api.c cl : コマンド ライン warning D9035 : オプション ‘Og-’ の使用は現在推奨されていません。今後のバージョンからは削除されます。 cl : コマンド ライン warning D9002 : 不明なオプション ‘-G6’ を無視します api.