犬ターネット

Archive : 2012年04月

windows7 で wget 使う

http://sourceforge.net/projects/gnuwin32/files/wget/1.11.4-1/ から wget-1.11.4-1-bin.zip と wget-1.11.4-1-dep.zip をダウンロードして解凍。

wget-1.11.4-1-bin/bin/ の中に wget-1.11.4-1-deb/bin/の dll をコピー。こんな構成。

wget-1.11.4-1-bin/bin/
  wget.exe
  libeay32.dll
  libiconv2.dll
  libintl3.dll
  libssl32.dll

コマンドプロンプトで wget-1.11.4-1-bin/bin/ に移動、実行できるか確認。

> wget.exe -nv http://www.yahoo.co.jp/
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = c:	oolwget-1.11.4-1-bin/etc/wgetrc
2012-04-26 17:07:19 URL:http://www.yahoo.co.jp/ [26194] -> "index.html" [1]

sqlite3 の dump と import と auto_vacuum

db の内容を dump するには以下。dump.sql にSQLが出力される。

$ sqlite3 db
sqlite> .output dump.sql
sqlite> .dump
sqlite> .exit

dump.sql を db_new に import するには以下。

$ sqlite3 db_new
sqlite> .read dump.sql

auto_vacuum は「PRAGMA auto_vacuum = 1」を実行すればできるはずなんだけど、いくらやっても設定できない。

$ sqlite3 db
sqlite> PRAGMA auto_vacuum = 1;
sqlite> PRAGMA auto_vacuum;
0 ←0のまま...

で、auto_vacuum のドキュメントをちゃんと読んでみると、

Therefore, auto-vacuuming must be turned on before any tables are created.
It is not possible to enable or disable auto-vacuum after a table has been created.

なるほど、テーブル作る前に実行しろと... ということで、CREATE TABLE 実行するまえに PRAGMA auto_vacuum = 1 したら設定できた。

$ sqlite3 db_new
sqlite> PRAGMA auto_vacuum = 1;
sqlite> PRAGMA auto_vacuum;
1

ちなみに、auto_vacuum が 1 or 2 の場合は、

sqlite> VACUUM; PRAGMA auto_vacuum=0;

みたいにすれば auto_vacuum を 0 に戻せる。逆はできない。


mod_speling

暇だからapacheのモジュールリスト見てたら mod_speling ってのあったから触ってみた。ドキュメントはこれ↓

http://httpd.apache.org/docs/2.4/ja/mod/mod_speling.html

使い方は、.htaccessなり httpd.conf なりに

CheckSpelling On

と書いとけば、1文字までの綴りミス+大文字小文字違いを勝手に修正してくれる。例えば

unko.html

てファイルがあったら、

Unko.html
UNKO.HTML
uNKO.HTML
unki.html
unk.html

にアクセスしても unko.html にリダイレクトしてくれる。

ちなみに、.htaccess なり httpd.conf なりに

CheckSpelling On
CheckCaseOnly On

こう書いておくと、大文字小文字の違いだけチェックするようになる。

お節介機能。いらない。


X-Frame-Options と X-Powered-By

恥ずかしながら X-Frame-Options の存在を今日知ったわけでして、さっそくぶっこんだ。

それと、X-Powered-By: PHP のヘッダも出ちゃってるんだけど、iniファイルいじる権限がないので、レスポンスヘッダ上書きして隠ぺいした。

結果こんな具合になった。

20120425110826

expose_php が OFF になってるわけじゃないから、以下イースターエッグでちゃうんだけど、まあ無料サーバだし文句はいえない...

?=PHPE9568F34-D428-11d2-A769-00AA001ACF42
?=PHPE9568F35-D428-11d2-A769-00AA001ACF42


apache2.2 に mod_layout 突っ込んだ

mod_layout、メンテされなくなってしばらく経つみたいだけど、ドキュメントっぽいのはここに、

http://www.musc.edu/webserver/mod_layout.html

最新ソース(ver 5.1)はここにあった。

http://linux.softpedia.com/get/Internet/HTTP-WWW-/mod-layout-5-23623.shtml

で、とりあえず、ダウンロードしてインストール。

$ tar -xzvf mod_layout-5.1.tar.gz
$ cd mod_layout-5.1
$ vim Makefile
APXS=/usr/local/apache/bin/apxs ←環境にあわせて書き換え
APACHECTL=/usr/local/apache/bin/apachectl ←環境にあわせて書き換え
$ make
$ make install

httpd.conf に以下の一行があることを確認してapache再起動。

LoadModule layout_module modules/mod_layout.so

さっそく使ってみる。.htaccess に以下を記述しレスポンスヘッダが text/html の場合に LAYOUT フィルタをかける設定にする。

AddOutputFilterByType LAYOUT text/html

LayoutHeader と LayoutFooter 使ってヘッダとフッタを自動追加。<body>の直後にヘッダが、</body>の直前にフッタが追加される。bodyタグがない場合は、ファイル先頭と末尾にそれぞれ追加される。

AddOutputFilterByType LAYOUT text/html
LayoutHeader /header.html
LayoutFooter /footer.html

<!--COPYRIGHT--> の部分を copyright.html で置換。

AddOutputFilterByType LAYOUT text/html
LayoutHeader /header.html
LayoutFooter /footer.html
Layout "<!--COPYRIGHT-->" /copyright.html replace
# LayoutHeader か LayoutFooter 呼び出さないと Layout が動かないっぽい

ignore.html へのアクセスは mod_layout 無視してそのまま出力。

AddOutputFilterByType LAYOUT text/html
LayoutHeader /header.html
LayoutFooter /footer.html
LayoutIgnoreURI /ignore.html

LayoutDisplayOriginal を Off にすると、header.html と footer.html しか表示されなくなる。なんに使うんだこれ。

AddOutputFilterByType LAYOUT text/html
LayoutHeader /header.html
LayoutFooter /footer.html
LayoutDisplayOriginal Off

他にもいろいろディレクティブがあるんだけど使えないの多い、おれの環境だけなのかな...

mod_layout 使うんだったら、mod_ext_filter のほうが柔軟に処理できる気も。

つうか、みんな何つかってんだろ。


5日連続福しん(福しんのステマ)

土日を挟んで今日で5日連続昼飯が福しんだった。

1日目:レバニラ炒め定食
2日目:餃子定食
3日目:レバニラ炒め定食
4日目:イカ焼きそば
5日目:餃子定食

そんで4日目に

ってつぶやいたら、福しんの公式twitterアカウントに

って怒られたから、なるべくはさまないように頑張る。明日は何を食べようかなあ。


ギターポップ

月に1回、2時間ばかしスタジオに入って、よくわからないノイズを出して、自己満足して帰ってくる。仕事とか子育てとかその他いろんなストレス、それをフィードバックとループに乗っけて吐きだす。そういう作業が大事なんだと、三十路を越えてよく思う。

どんな些細なものでもアウトプットが重要だって俺の尊敬するエンジニアが言ってた。


ピンポーン、はーい、ガチャ

「あ、わたしね、すぐ下の102の木村ってものですが、はじめまして。あなた、新聞はとってらっしゃる?あ、とってないの。ほら、最近地震とか多いじゃない?それで、うちでとってる新聞にとってもいいお話が載ってたからね、だから皆さんにこうしてコピーを配っているのね、あ、これコピー、はいどうぞ。あら?小さいお子さんいらっしゃるの?おいくつ?2歳?お名前は?あそう、かわいいわねえ、ところでおたく、お名前は?あそう。じゃ、さっきのコピーよく読んでくださいね、新聞もとったらいいんじゃないかしらね、じゃあよろしくね」

つって渡されたのがこれ

実家にいた頃も、この新聞とれとれってしつこく勧誘してくるおばさんがいて、親が根負けして一カ月だけとったんだけど、掲載されてる4コママンガがつまんねーから見てなかったですね。

おれはインータネット教信者です


タバタさんの腹写真集めたよ

タバタさんの腹を堪能しています。


RedirectMatch で リダイレクトさせてきた

http://mgng.getcloudigniter.com/ が今月末に死ぬので、このサイトへのリダイレクト設定を .htaccess に書いてきた。

RedirectMatch permanent ^/(.*) http://www6.atpages.jp/mgngmgng/$1

これで

http://mgng.getcloudigniter.com/kaidan?k=29http://www6.atpages.jp/mgngmgng/kaidan?k=29

になるし

http://mgng.getcloudigniter.com/apw?k=MV8zM18xXzdfMjI3http://www6.atpages.jp/mgngmgng/apw?k=MV8zM18xXzdfMjI3

になる。

さようなら、cloudigniter。


atpages で PHP 動かすときの注意

無料でPHP使えてMySQL使えてディスクスペース1G使える atpages.jp だけど、PHP動かすときにちょっとはまるので、もし atpages 使う人は参考にされたし。

  • まず、PHPのバージョンが5.2系なので諸々あきらめる
  • .htaccess で php_flag、php_value が許可されてないから、ini_set でどうにかする
  • magic_quotes_gpc が On になってるキチガイ仕様なんだけど、上記の理由で .htaccess で OFF にできないから、以下みたいなスクリプト呼び出して対処する(ヌルバイトの削除とmagic_quotes_gpc = On 対策)

  • REST API 作りたい場合は、適切に Content-Type 吐いてあげれば mod_layout 回避できるから広告レスポンス除外できる。たとえば JSON 返したいんだったらこんな感じ。

といった感じで今のところどうにかしてるけど、atpagesよりも条件がいい無料ホスティング環境があったら乗り換えたい。おれは無料が好きだ。金なんか持ってない。


PHP fog 試した

前回の heroku に関連して、PHP fog を少し試してみた。以下手順。

  • https://www.phpfog.com/ にアクセス、メアドとパスワードいれて [TRY IT FREE] クリック、登録完了(え...)
  • Step 1: Choose an application で [Use Your Own Code] にある php のアイコンクリック
  • Step 2: Application Details で [Password for MySQL] にパスワードを入力、[Domain] に好きなドメイン入力して [Create App] クリックすると、App Console 画面が表示されて、準備が整った様子。
  • 次にローカルの環境構築。前提として git が必要なんだけど、この前 heroku 環境作ったときに Git Bash いれたのでそれを使う。コマンドライン開いて以下で Git Bash 起動
    "c:Program Files (x86)Gitinsh.exe" --login -i
  • sshの共有キーを作成する。
    $ mkdir ~/.ssh
    $ ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/c/Users/mgng/.ssh/id_rsa):[enter]
    Enter passphrase (empty for no passphrase):[パスワード入力]
    Enter same passphrase again:[パスワード入力]
  • https://www.phpfog.com/account#/ssh_keys にアクセス、以下コマンドを実行して表示されたsshの公開鍵を PHPfog に登録、Nicknameは適当に。
    $ cat ~/.ssh/id_rsa.pub
  • これで環境構築完了。次はローカルに phpfog 作業ディレクトリ作る。手元の環境では c:/work/phpfog に作った。
    $ mkdir -p /c/work/phpfog
    $ cd /c/work/phpfog
  • で、git clone してソース持ってくる。mgng.phpfogapp.com ていうディレクトリができた。
    $ git clone git@git01.phpfog.com:mgng.phpfogapp.com
    $ ls
    mgng.phpfogapp.com
  • index.php てファイルがあるからちょっといじってみる。
    $ cd mgng.phpfogapp.com
    $ vim index.php
    <?php echo 'unko';
  • で、コミットして git push 。
    $ git add .
    $ git commit -m "unko"
    $ git push
  • できた。http://mgng.phpfogapp.com/

PHP fog、heroku と違ってファイルの読み書き簡単にできるんだけど、無料版のせいか外部URLへのアクセスが許可されてないから、おれのしたいことはなんにもできなかった。うーん...もっと遊びたかったら金払えってことか。でもおれはクレジットカードを持ってないんですよ、誰かおごってください。


移行

mgng.getcloudigniter.com から一応移行完了。上部に広告が出るのは仕様です。動かないところあるかもしんないからこれから細かく確認。

読む人いないかもしんないけど、 RSSもあります


cloudigniter 死亡

ここんとこ調子悪かった cloudigniter、今月末に死ぬってメール来てた。

Hi all, 
Just a final reminder.
We are shutting down CloudIgniter on April 30th.
No action is necessary to close your account. 
We will remove all data from the hosting servers April 30th.
Please make plans to migrate your sites before that date. 

ということでこのサーバも死ぬから、古巣の atpages への移行を考えております。

http://www6.atpages.jp/mgngmgng/

めんどくせー


安藤裕子あいしてる

久々にグッときたので8tracks作った。

201204 from mgng on 8tracks.

安藤裕子は底力がある、と思う。

skillkills は今度 zazen boys と 2 マンやるね。

CONVEX LEVEL は我らサラリーマンの星。

SHIKIJIKA は as meias の vo さんから教えてもらった。けっこー前に解散してる。


HC SVNT DRACONES って

Muxtape っつうmp3をアップロードして自分だけのオリジナルmixを公開できるサイトの跡地ソースみてたらこういう記述があって、

<meta name="warning" content="HC SVNT DRACONES" />

なんだろこのmeta宣言は? warning? HC SVNT DRACONES?

気になって調べたら「HC SVNT DRACONES」は「Here be dragons」のラテン語表記で、危険なor未知の領域を表すフレーズだと。

"Here be dragons" is a phrase used to denote dangerous or unexplored territories, in imitation of the medieval practice of putting sea serpents and other mythological creatures in uncharted areas of maps.
http://en.wikipedia.org/wiki/Here_be_dragons

このサイトは危険だから近づくなっつうジョークのつもりなのかな。


heroku で PHP 動かした

heroku 触らないと死ぬらしいので、heroku 触って PHP を動かしてみた。環境は windows7(64bit)環境。以下手順。

  • http://heroku.com/ にアクセスしてsign up
  • https://toolbelt.heroku.com/ にアクセスして heroku toolbelt をインストール
  • デスクトップに Git Bash のショートカットできるから実行、以下コマンドを入力してSSHの公開鍵を登録
    $ heroku login
    Enter your Heroku credentials.
    Email: (登録したメールアドレス)
    Password(typing will be hidden): (登録したパスワード)
    Could not find an existing public key.
    Would you like to generate one? [Yn] Y
    Generating new SSH public key.
    Uploading ssh public key C:/Users/mgng/.ssh/id_rsa.pub
  • とりあえずサンプルスクリプトを C:/work/heroku/mgng/ に作成
    $ mkdir -p /C/work/heroku/mgng/
    $ cd /C/work/heroku/mgng/
    $ vi index.php
    <?php echo "Hello, mgng index";
  • で、gitリポジトリ作ってとりあえずコミット
    $ git init
    $ git config --global user.name "mgng"
    $ git config --global user.email mgng@local
    $ git add .
    $ git commit -m "initial commit"
  • で、heroku にアプリケーションを作成。アプリケーション名はとりあえずいつもの mgng で。
    $ heroku create --stack cedar mgng
  • で、デプロイ。ちなみに、index.php がないと「Heroku push rejected, no Cedar-supported app detected」ってエラーが出てデプロイできない。
    $ git push heroku master

  • http://blog.candycane.jp/archives/1375 を参考に、mbstringも動かせるようにして終了。

で、.htaccessだとか、php.ini だとか設定してとりあえず動いてるのがこれ。

http://mgng.herokuapp.com

拍子抜けするくらい簡単。


本番環境と検証環境のURLを同じにする話

とある Rest API、検証環境と本番環境でIPアドレスもURLも違ってて、あ、以下のような感じ、

  • 検証環境:http://172.22.0.150/test/api.php
  • 本番環境:http://192.168.10.20/honban/api.php

検証の都度APIのURL書き換えるのめんどくさい、本番用URLのまま検証用URLにリクエスト飛ばしたい、ということでいろいろ調べた結果、とりあえず以下のようにして解決。

1.自分のマシンに本番環境のIPアドレスを割りあてる

1台のPCに複数IPアドレス割りあてられるの知らんかった... 手元のWindows7環境だと、以下の手順で出来た。

  • コントロールパネル
  • ネットワークと共有センター
  • ローカルエリア接続
  • プロパティ
  • TCP/IPv4 のプロパティ
  • 詳細設定
  • IP設定タブの「追加」クリックして本番環境のIPアドレス入力

これで、自分のマシンに 192.168.10.20 を割りあてられたから、http://192.168.10.20/ でも http://127.0.0.1/ でもローカルの httpd にリクエストがとんでいく。

2.リバースプロキシ使って検証環境にリクエスト飛ばす

ローカル の httpd.conf に以下設定を書いて httpd を再起動。

<IfModule mod_proxy.c>
  ProxyRequests off
  ProxyPass /honban/api.php http://172.22.0.150/test/api.php
  ProxyPassReverse /honban/api.php http://172.22.0.150/test/api.php
</IfModule>

これで、http://192.168.10.20/honban/api.php にアクセスすると http://172.22.0.150/test/api.php にリクエストがとんでいく。

もっと簡単な方法はないのか

たとえばhostsファイルのような書き方で

172.22.0.150/test/api.php 192.168.10.20/honban/api.php

ていうのできればすごく楽なんだけど、ちょっとやりかたわかんない。


Iron(chrome)で日本語入力ができなくなったけど Flash を入れなおしたら直った

chrome派生ブラウザの Iron Portable を使っていたら半角/全角ボタン効かなくなって日本語が打てなくなったけど、Flash を入れなおしたら直った。以下手順。

  • アドレスバーに about://plugins 入力、Flashを無効に
  • Iron 閉じる(バックグラウンド実行してる場合もあるからちゃんと閉じること)
  • http://get.adobe.com/jp/flashplayer/ にアクセスしてFlashインストール
  • Iron 起動
  • アドレスバーに about://plugins 入力、Flashを有効に

chrome と Flash の相性がよくないのは既知の問題っぽい。


森ボーイ暴走の原因について

このサーバ上でtwitterボットを何個か動かしているんだけど、昨日の夕方あたりから 森ボーイ が暴走をはじめた。一部抜粋。

 @bombknee DCPRG at ニトリ 長岡川崎店 ( ´ ▽ ` )ノ
 @bombknee すごくいい優しい顔するんです。。何もあるので、やぶれない丈夫すぎる仕立ては不都合
 @bombknee OMFG!!!
 @bombknee 分請求、この人もカバーするダスティスプリングフィールドのバリーマン、シンシアワイル名曲を、その後が何言って
 @bombknee やぁ…

森ボーイは3分おきにmentionくれた人チェックして1回だけReplyするんだけど、気が狂ったように @bombknee にReplyを続けている。bombknee さんすいませんでした

------

原因究明のために、まずsshでサーバにログインしたら、返信IDチェック用ファイルのファイルサイズが0になってた。なにそれありえない

仕方ないから処理止めるためにソースコード編集しようとしたら「write error」みたいなのでて編集できねえ。どうなってんの

どうにもならないからローカルに保存してたソースコード編集してアップロードしたら「disk full」みたいなエラーが出てファイルサイズが0になった。死んだ。でもおかげで処理止まった。

------

もしやと思い df -a (ディスクの空き容量調べるコマンド) 実行したら、

ああ、ハードディスク使い切ってる...多分ログとかが肥大化してるんだろうけど、おれroot権限なくてなんにもできないし、眠いし、寝た。

------

今朝起きたら空き容量できてた。中の人が対応してくれた様子。よかった。んで、プログラムも修正。これで暴走しなくなるはず。

------

ハードディスク使い切るなんてありえないと思っていたけど、世の中には絶対なんて言葉はないっつうことがよおくわかった。つまり幽霊の存在は否定できない


Eclipse EGit で新規ファイル作成しただけじゃ上位ディレクトリに「>」が表示されないんだけど

Eclipse Egit な環境で既存ファイル編集すると

みたいに上位ディレクトリにも「>」が表示されて「ああ、ここ編集してたっけ」ってのが一発でわかるんだけど、新規ファイル追加しただけだと、

のように新規ファイルには「?」がつくんだけど、上位ディレクトリには何も変化がないのでわかりにくい。

でも、新規ファイル上で「右クリック→チーム→索引に追加」を選ぶと、

のように上位ディレクトリに「*」が表示されて「ああ、ここに新規ファイル作成したっけ」ってのがわかるようになる。

索引に追加 って、git add コマンドね... 日本語だとなんかピンとこなかった...


chrome 18 + gdipp でフォントぶっ壊れたから Iron にした

chrome 18 + gdipp 環境だとこんな感じになる。ひどい。

原因はChrome18からテキスト描画方法が変更されたため。gdipp本家でも炎上中。これ治るのかな...

ということで、Chromeベースの Iron っつうブラウザに移行。表示はこうなった。

拡張も問題なく入るし、gdippの問題が解決するまではこいつでしばらく様子見。


Chrome の autocomplete のやつ

これはすごい! フォーム最適化に役立つグーグル提案のautocomplete新仕様 | Web担当者Forum

なんかやばいにおいがするなあと思ってちょっと試したら、

  • x-autocompletetype が3個以上ないと設定されない
  • hidden には設定されない
  • display:none; には設定されない
  • opacity:0; だと設定される

といった感じだった(2012-04-04 Chrome 18.0.1025.142 で確認)

だから、以下みたいに入力欄をopacity使って見えなくしとけば、知らない間に住所とか抜ける、っていう話(※送信押してもサーバと通信したりしません、ソース見てね)

メール:
姓:
名:

まだまだ改善の余地ありそうですね。

※追記:はまちちゃんさんも検証してた