技術メモの最近のブログ記事
Firefox3(たぶん2.0以降ずっと)、atom形式で送信されるページを開くと、rssフィードなんだろう、ということでライブブックマークに追加しようとします。

あるいは、ご自分でRSSリーダーをLivedoorReaderとかに変えている人は、そっちの画面が出るかもしれません。
この挙動、便利なときは便利なのですが、ATOM形式で結果を返すWEB APIをテストしたいときには、余計なお世話です。ATOM形式だからってRSSフィードだとは限らないですやん。いいからソースを見せてっ!

Firefoxの設定で、Webフィードの所を「Firefoxでプレビュー表示」にすると、処理を毎回聞いてくれるようになります。

で、この状態で右クリックしてソースを表示させると....

ちゃんとrssのソースを表示してくれます。
RSSをブラウザで開いたときどう見えるべきかは、けっこう議論のある所みたいですが、少なくともソースとしてみたら元のファイルが見えるというのは、なかなかいい落としどころのような気がします。
ITMediaさんで紹介されていたEvernote、早速使ってみました。
シゴトハッカーズ:Evernoteの基本的な使い方【チュートリアル編】 - ITmedia Biz.ID
自分の場合、仕事の進捗メモをとるのに使っています。いいめもの開発は今どうなっているのか、何をしようとしているのか、やったらどうなったのか、次は何をするつもりなのか....。
今までは、Pukiwikiを使って自分のサーバ上で書いていたのですが、これだと検索機能が貧弱なので、時系列でメモを書いたら、あるテーマのメモだけ引っ張ってくるというようなことが困難です。evernoteだと、メモごとにタグを貼れるので、テーマごとに引っ張ってくるのが格段に便利になりそうです。
残念ながらエディタとしての性能はあまり高くないので、秀丸エディタで書いたメモをぺたっと貼り付けて使っています。まあ、Pukiwikiの頃だって、秀丸エディタで書いて貼り付けていたのですから、ここはまあ許容できるラインでしょう。
で、本題。evernoteはWEBサイトが用意されているので、書いたメモはブラウザから見ることもできます。iPhoneはアプリケーションが用意されているので、もちろんiPhoneでも見ることができます。evernoteモバイルというのもあるみたいです。じゃあ携帯電話でも....
携帯電話からアクセス可能なEvernote Mobile(閲覧のみQuick Post可能)は、当方のau携帯では日本語が文字化けする。
([月] EVERNOTEに関するメモ)
まあそんな状況です。日本の携帯電話はMobilePhoneじゃないのです...(悲)
手元のW52CAも、日本語が化けちゃって使い物になりませんでした。
あと、DoCoMoF705iも、Cokkieが使えないせいか、そもそもログインができません。
SoftBankについては、通常の携帯ブラウザでもログインしてメモを見ることができました(812SH)。さすがiPhoneのキャリアですね。
AUの携帯電話ですが、PCサイトビューアーを使うと見られるみたいです。
やり方としては、PCサイトビューアーで
https://www.evernote.com/mobile/Login.action?targetUrl=%2Fmobile%2Findex.jsp
にアクセスします。(QRコード)
#公式には https://evernote.com/m/らしいですが、ドメイン違いの証明書付きhttpsなどを経由した末、結局上記にたどり着くみたいです。
で、通常通りにユーザー名とパスワードを入力すればOK.
DoCoMoはF705iしか持っていないので、フルブラウザを試すことができなかったのですが、たぶんフルブラウザというからにはCokkeiとUTF8くらい通してくれるだろうから、たぶん動くんじゃないでしょうか。
とりいそぎ手元の携帯で試したまとめでした。
いいめもも、このブログも、Movable Typeをつかっています。いいめものほう、以前はMovable Type 3だったのですが、サーバを移動させたのを機会に、Movable Type 4に乗り換えました。
で、乗り換えて気づいたこと。そこら中でリンク切れが起きている...
切れたリンクと本来のページを見てみると、どうやら、Movable Type 3のころ、URLに_(アンダースコア)を使っていたページが、勝手に-(ハイフン)に置き換えられてしまった模様。
調べてみると、困っている人もたくさん。
アップデートは計画的に - Nizah Blog
MT4.1 ウェブページのファイル名に「_」アンダースコアは禁物 - 具現 | 蓮華のライフデザイニングブログ
コメントスパム対策さらにその後 - あれているBlog
bq69 collectibles - MT 4.1 upgrade: cont'd
みなさまそれぞれのやり方で対処されたみたいですが、納得いかないっすよねぇ?
自分の場合、必ずしもURLがpost_14.html という形になっているとは限らなくて、this_is_a_pen.htmlみたいなURLになっていることがあるので、単純なredirectではとばすのが困難です。サーバ移行だから、Movable Type3の頃のキャッシュに期待するわけにも行きません。
こういうときは、apacheのmod_rewriteの出番だと思われます。rewrite_ruleを使ってアンダースコアをハイフンに置き換えてリダイレクトしてあげれば、大手サイトからいただいたリンク価値を失うこともなく、問題を一発で解決できるはずです。今こそブログに書くときだ!
...と思ったのですけど、最近忙しかったので、実作業ははてなの皆様にアウトソースさせていただきました^^;
Apacheのmod_rewriteをつかって、URL中のアンダースコアをハイフンに置き換えるRewriteRuleを教えてください。 つまり、 http://example.com/blog/2008/05/post_14.html と.. - 人力検索はてな
期待通り適切な書き方を教えていただけたので、ここでブログ記事として公開する次第。
Movable Type 3から4に移行して、URLがアンダースコアからハイフンに変わってしまって困っている人は、httpd.confに以下のようにかけばリダイレクトさせることができます。
<Directory "hogehoge">
Options FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule ^([0-9]+)/([0-9]+)/([^_]+)_(.+)\.html?$ $1/$2/$3-$4.html [N,L,R]
</Directory>
<Directory "hogehoge"> の部分は、自分のブログが置いてあるディレクトリ(公開設定-公開パス-サイトパスに書いてある)です。
このルールにより、2007/10/post_123.htmlという具合にアンダースコアを含むURLにアクセスしてきた場合、Apacheサーバが「あ、そのファイルはこっちに移動しましたから」(301 Moved Permanently)と新しいURLを案内してくれるようになります。
2007/10/this_is_a_pen.htmlみたいなURLもちゃんと変換してくれます。
今日時点で、もぎゃろぐのなかで一番たくさんブックマークのついている記事がこれ。
[linux]なんでもsvnで管理する - もぎゃろぐ
なんでもといいながら実際には実行ファイルを管理するだけで、それなのにたくさんの方に見ていただいて申し訳ないです。
というわけで、設定ファイルも管理できる目処が立ったので、「[linux]なんでもsvnで管理する2」をお送りします。
設定ファイルの場合、/etc/httpd/conf/httpd.conf も管理したいし、/etc/aliasesも管理したい。だからといって/etc以下を全部svnにつっこむのは、さすがにちょっと怖いでしょ?というのが難点でした。
悩んでも分からなかったので、masuidriveの人に聞いてみました。
なるほど。自分: 以前ブログで、設定ファイルとかもsvnで管理してるよ~的なことをいっていたじゃないですか。 Yuichiro: はいはい、やってます 自分: どういう単位になっているのでしょう? たとえば、/etcしたが丸ごとリポジトリに入っている? Yuichiro: いえ、別においてsym linkしてます 必要なファイルだけ。 apacheとかpostfixとか。 ホスト固有の設定とかありますしね 自分: ふむふむ。じゃあ設定ファイルは全部/var/setting/とかどこかにまとめてあるわけですね。 Yuichiro: そです。
適当なディレクトリを用意して、書き換えたくなりそうなファイルを一式コピーしてきます。
[daisuke@snares ~/tmp/setting] $ ls -la httpd/ total 20 drwxr-xr-x 5 root root 4096 May 10 11:19 . drwxr-xr-x 3 root root 4096 May 10 17:01 .. drwxr-xr-x 3 root root 4096 May 10 16:30 conf drwxr-xr-x 3 root root 4096 May 10 11:19 conf.d [daisuke@snares ~/tmp/setting] $ ls -la httpd/conf total 44 drwxr-xr-x 3 root root 4096 May 10 16:30 . drwxr-xr-x 5 root root 4096 May 10 11:19 .. -rw-r--r-- 1 root root 5975 May 10 16:30 httpd.conf -rw-r--r-- 1 root root 12959 May 10 11:19 magic [daisuke@snares ~/tmp/setting] $ ls -la httpd/conf.d/ total 52 drwxr-xr-x 3 root root 4096 May 10 11:19 . drwxr-xr-x 5 root root 4096 May 10 11:19 .. -rw-r--r-- 1 root root 778 May 10 11:19 manual.conf -rw-r--r-- 1 root root 1827 May 10 11:19 perl.conf -rw-r--r-- 1 root root 560 May 10 11:19 php.conf -rw-r--r-- 1 root root 1438 May 10 11:19 python.conf -rw-r--r-- 1 root root 10919 May 10 11:19 ssl.conf -rw-r--r-- 1 root root 352 May 10 11:19 webalizer.conf -rw-r--r-- 1 root root 299 May 10 11:19 welcome.conf
インポートします。
[daisuke@snares ~/tmp/setting] $ svn import file:///var/svn/repos/httpd_conf/ -m "initial import"
#インポートしてしまえば、もはやこれらのファイルは用済みです。
/var/setting/を用意して、ここにファイルをチェックアウトしてきます。
[daisuke@snares /var/setting] $ sudo svn co file:///var/svn/repos/httpd_conf/ ./ [daisuke@snares /var/setting] $ ls /var/setting/ httpd
元のファイルから、このファイルにsymlinkします。
同様にしてhttpd/conf.dの下もsymlinkに置き換えました。[daisuke@snares /etc/httpd] $ ls conf logs run conf.d modules [daisuke@snares /etc/httpd] $ sudo cp -r conf conf.20080510.1104 [daisuke@snares /etc/httpd] $ sudo cp -r conf.d conf.d.20080510.1104 [daisuke@snares /etc/httpd] $ ls conf conf.20080510.1104 conf.d.20080505 logs run conf.20080505 conf.d conf.d.20080510.1107 modules [daisuke@snares /etc/httpd] $ cd conf [daisuke@snares /etc/httpd] $ ls [daisuke@snares /etc/httpd/conf] $ ls -la total 28 drwxr-xr-x 7 root root 4096 May 10 11:07 . drwxr-xr-x 8 root root 4096 May 10 11:07 .. -rw-r--r-- 1 root root 5975 May 10 16:30 httpd.conf -rw-r--r-- 1 root root 5809 May 10 16:26 httpd.conf~ -rw-r--r-- 1 root root 12959 May 10 11:19 magic drwxr-xr-x 3 root root 4096 May 5 23:41 ssl.crl drwxr-xr-x 3 root root 4096 May 5 23:41 ssl.crt drwxr-xr-x 3 root root 4096 May 5 23:41 ssl.csr drwxr-xr-x 3 root root 4096 May 5 23:41 ssl.key drwxr-xr-x 3 root root 4096 May 5 23:41 ssl.prm [daisuke@snares /etc/httpd/conf] $ sudo rm httpd.conf [daisuke@snares /etc/httpd/conf] $ sudo ln -s /var/setting/httpd/conf/httpd.conf ./ [daisuke@snares /etc/httpd/conf] $ sudo ln -s /var/setting/httpd/conf/magic ./
[daisuke@snares /etc/httpd/conf] $ ls -la total 28 drwxr-xr-x 7 root root 4096 May 10 11:07 . drwxr-xr-x 8 root root 4096 May 10 11:07 .. lrwxrwxrwx 1 root root 34 May 10 11:07 httpd.conf -> /var/setting/httpd/conf/http d.conf lrwxrwxrwx 1 root root 29 May 10 11:07 magic -> /var/setting/httpd/conf/magic drwxr-xr-x 3 root root 4096 May 5 23:41 ssl.crl drwxr-xr-x 3 root root 4096 May 5 23:41 ssl.crt drwxr-xr-x 3 root root 4096 May 5 23:41 ssl.csr drwxr-xr-x 3 root root 4096 May 5 23:41 ssl.key drwxr-xr-x 3 root root 4096 May 5 23:41 ssl.prm
[daisuke@snares /etc/httpd/conf] $ ls -la /etc/httpd/conf.d total 8 drwxr-xr-x 2 root root 4096 May 10 11:08 . drwxr-xr-x 8 root root 4096 May 10 11:07 .. lrwxrwxrwx 1 root root 37 May 10 11:08 manual.conf -> /var/setting/httpd/conf.d/manual.conf lrwxrwxrwx 1 root root 35 May 10 11:08 perl.conf -> /var/setting/httpd/conf.d/perl.conf lrwxrwxrwx 1 root root 34 May 10 11:08 php.conf -> /var/setting/httpd/conf.d/php.conf lrwxrwxrwx 1 root root 37 May 10 11:08 python.conf -> /var/setting/httpd/conf.d/python.conf lrwxrwxrwx 1 root root 34 May 10 11:08 ssl.conf -> /var/setting/httpd/conf.d/ssl.conf lrwxrwxrwx 1 root root 40 May 10 11:08 webalizer.conf -> /var/setting/httpd/conf.d/webalizer.conf lrwxrwxrwx 1 root root 38 May 10 11:08 welcome.conf -> /var/setting/httpd/conf.d/welcome.conf
このあたりで、システムがちゃんと動いているか確認。
ブラウザで各ページを見て回って...大丈夫そうです。[daisuke@snares /etc/httpd/conf] $ sudo /etc/rc.d/init.d/httpd restart Password: Stopping httpd: [ OK ] Starting httpd: [ OK ]
以後は、/etc下は書き換えずに、/var/setting/下のファイルを書き換えるようにします。
で、なにか致命的なミスをしたことに気づいたら、
とすることで、ちゃんと動いていた頃のシステムに戻ることができます。[daisuke@snares /var/setting/httpd/conf] $ sudo rm httpd.conf [daisuke@snares /var/setting/httpd/conf] $ sudo svn update Restored 'httpd.conf' At revision 4.
おまけ:この前後に起こった悲劇。
自分: えらいことになった^^;
Yuichiro: ??
自分: /etcを丸ごとリポジトリに入れる実験をしていたのですが。
元に戻そうと思って、うっかり sudo rm -f /etc とやってしまって、
/etc/passwdがないから、sudo mv etc.20080505.1653 etc と戻すことができない。
Yuichiro: .......
さくらインターネットさんのサポートで、HDDを別サーバにつないでいただいて/etcを書き戻して復旧しました(有償)。
これ、マジでシャレにならないので、皆様ご注意くださいませ^^;
ちょっと思うところがあって、もぎゃろぐのURLが変わりました。
旧:http://mogya.com/blog/
新:http://blog.mogya.com/
こういうとき、旧URLでも記事にアクセスできるようにしておかないと、ソーシャルブックマークとか、ニュースサイトからはっていただいたリンクがもったいない。
こんなときには、Apacheの設定ファイルであるhttpd.confに
Redirect permanent /blog http://blog.mogya.com
というふうに書いて再起動してあげれば、Redirect機能が働くようになる。
以降、http://www.mogya.com/blog/2008/03/linuxsvn.html というふうにアクセスしてきたブラウザには、
HTTP/1.x 301 Moved Permanently
というヘッダとともに新しいURLが返されるようになる。
結果として、ブラウザはちゃんと新しいページを表示してくれるし、えらいソーシャルブックマークだと、自動的にURLをはりかえてくれたりするかもしれない。すくなくともGoogleは「あ、ページが移動したんだな」と認識してページランクを引き継いでくれるらしい。
技術的には当たり前の話なのですが、まあ誰かの役に立つかもしれないのでメモメモ。
linux上で動いているsubversionのサーバに、TortoiseSVNを使ってssh経由で接続してファイルをチェックアウトしようとしたら、
Unable to write to standard output (stderr
というエラーが出てはまったのでメモ。
エラーメッセージでぐぐると、
色々日記(ざ・めも) | subversionが上手く動かなかったのは?
がでてきて、これによると、.cshrcの末尾にsetenv LANG Cしましょう、ということになっているのだけれど。結論から言うと、自分の場合はこれではなかった。
でも、この人のお話を参考に、linuxからssh経由で自分のリポジトリにつないでみると、
[daisuke@snares ~/tmp] $ svn co svn+ssh://snares/var/svn/repos/hogehoge ./hogehoge
stty: standard input: Invalid argument
stty: standard input: Invalid argument
A hogehoge/conf
:
なんかあやしげな警告が。
ググってみると、この人と同じ症状。
[linux-users:29383] rcp, xon error(stty: standard input: Invalid argument)
2台のマシン間で、rcp しようとすると、
 ̄ stty: standard input: Invalid argument
とエラーがでてしまいます
対応としては
sttyコマンドが .bashrc とかに
かいてあると思うので
.bash_profile に移動させてみては
駄目でしょうか。
([linux-users:29385] Re: rcp, xon error)
とのこと。
実際調べてみたら、.bashrcに
stty stop undef
の一行が。
これを.bash_profileに移動させたら解決しました。
.bashrcは、ssh経由で接続するコマンドでも起動されるので、ここに何か出力するコマンド(stty とか、profileとか)を書いてはいけない、ということか。
.bash_profileと.bashrcの違いはとか読んでも、この辺は今一つ読み取れないんだよなぁ。
今月の流行は携帯サイトとPHPのもぎゃです。こんにちは。
携帯絵文字変換スクリプトをPHPで作ってみた。 携帯ホームページを作ろう! -ちょっと詳しいモバイルサイトの作り方-というのがあって、フリーで使えるのはすばらしい!と思ったのですが。
これどうも、ドコモの絵文字が正しく出ません。すくなくとも手元の環境では出ない。
- サーバ:Apache/2.0.52
- PHP:PHP 5.1.6 (cli) (built: Oct 26 2007 13:49:00)
- 携帯:F705i。あと、i-mode HTML Simulator II ver5.1も試したけど出なかった。
しょうがないのでデバッグしました。
結論
emoji.csvをこっちに差し替えると出るみたいです。
emoji.csv
元のファイルとの違いは、iモード絵文字をダブルクオーテーションでくくっただけです。
問題だったこと
作ろうiモードコンテンツ:基本絵文字一覧 | サービス・機能 | NTTドコモを参考に、べたにphpファイルに文字列を貼り付けたら、これは表示できました。
Wiresharkでパケットを拾ってのぞいてみると、データが化けているとかじゃなくて、そもそもデータが出ていません。
さかのぼっていくと、そもそも$emoji_array[1]が空っぽのままみたいです。
fgetcsvでググってみると、どうもこの関数は結構危険らしく。
テレパス・ラボ : fgetcsv()で日本語が読み込めない
iモード絵文字も、SJIS範囲外とはいえ日本語っぽい文字なのは同じなので、環境によって空っぽになってしまうんじゃないでしょうか。上記サイトで言われているように、問題の文字列をダブルクオーテーションでくくってみたら動いたので、とりあえずご報告まで。
いいめものように、メールを受け取ってアレコレするメールアプリケーションを書くことはよくあるかと思います。
メールサーバとしてpostfixを使うと、こんな具合で実現できます。
#cat /etc/aliases : test:"|/var/mailApp/test.rb"test@example.comでメールを受け取ったら/var/mailApp/test.rbを起動する、という具合です。
それはいいのですけど、この状態でtest.rbでエラーが起きると、メール送信者宛にバウンスメッセージというのが送付されます。
This is the Postfix program at host snares.example.com.
:
The Postfix program
>test@example.com< : Command died with
status 1: "/var/MailApp/mailserver/test.rb". Command output:
/usr/lib/ruby/1.8/logger.rb:518:in `initialize': Permission denied -
/var/MailApp/mailserver/../log/MailServer.log (Errno::EACCES)
from /usr/lib/ruby/1.8/logger.rb:518:in `open' from
/usr/lib/ruby/1.8/logger.rb:518:in `open_logfile' from
/usr/lib/ruby/1.8/logger.rb:487:in `initialize' from
/usr/lib/ruby/1.8/logger.rb:263:in `new' from
/usr/lib/ruby/1.8/logger.rb:263:in `initialize' from
/var/MailApp/mailserver/../common.rb:42:in `new' from
/var/MailApp/mailserver/../common.rb:42 from
!!!エンジニアにとっては背筋の凍り付くような内容です。メールアプリケーションのファイル構成から使っているモジュール、自分がどんなミスをしたかまで送信者に筒抜けになってしまいます。
とりあえず、test.rbの内容をこうしましょう。
begin 元のコード rescue => e exit(-1) end
これで、test.rbがエラーを外にはくことはなくなるので、バウンスメールの内容も、ずいぶん穏当なものになります。
>test@example.com< : Command died with status 255: "/var/MailApp/mailserver/test.rb" Action: failed Status: 5.0.0 Diagnostic-Code: X-Postfix; Command died with status 255: "/var/MailApp/mailserver/test.rb"
ちなみに、posfix 2.3から、バウンスメールの内容をカスタマイズできるようになるらしいです。
Postfix manual - bounce(8)
メールサーバのバージョンアップが待ち遠しいなんて、久しく味わっていない感覚です。
Expression Engine Japanese language pack (日本語版)
早速インストール...
すばらしいです。これはありがたい。ビールでもコーヒーでもおごりますよ!
#といったってどこに住んでいる方かもわからないので^^; とりあえずpaypal donateしておきました。
一応インストールのやり方を説明させて頂くと。
ダウンロードしてきて。
[daisuke@snares ~/tmp] $ wget http://expression-engine.jp/uploads/files/ee_strings_jp.tgzexpressionEngineをインストールしたディレクトリにあるlanguageディレクトリにコピーします。
--10:51:24-- http://expression-engine.jp/uploads/files/ee_strings_jp.tgz
=> `ee_strings_jp.tgz'
Resolving expression-engine.jp... 72.51.37.167
Connecting to expression-engine.jp|72.51.37.167|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 77,973 (76K) [application/x-gzip]
0% [ ] 0 --.--K/s
12% [====> ] 9,851 39.92K/s
57% [=========================> ] 44,603 90.37K/s
100%[=============================================>] 77,973 149.24K/s
10:51:25 (148.85 KB/s) - `ee_strings_jp.tgz' saved [77973/77973]
[daisuke@snares ~/tmp] $ tar xzf ee_strings_jp.tgz
[daisuke@snares ~/tmp] $ ls
ee_strings_jp.tgz japanese
[daisuke@snares ~/tmp] $ cp -r japanese /var/www/html/ee/language/この状態で、EEにログインしてCP Home › My Account › Localization Settings を見ると、Japaneseが選択できるようになっていますので、これを選択してupdateすればできあがりです。
[daisuke@snares ~/tmp] $ ls /var/www/root/html/ee/language/
english index.html japanese
