<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
   <title>kakitomeru note</title>
   <link rel="alternate" type="text/html" href="http://www.smallmake.com/note/" />
   <link rel="self" type="application/atom+xml" href="http://www.smallmake.com/note/atom.xml" />
   <id>tag:www.smallmake.com,2008:/note//4</id>
   <updated>2008-04-17T14:00:58Z</updated>
   <subtitle>ちょっとしたことを書き留めるためのスペースです。</subtitle>
   <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.1</generator>


<entry>
   <title>Phickrで写真が取得できない  buildImgUrl()挙動</title>
   <link rel="alternate" type="text/html" href="http://www.smallmake.com/note/2008/04/phickr_buildimgurl.html" />
   <id>tag:www.smallmake.com,2008:/note//4.58</id>
   
   <published>2008-04-17T13:44:13Z</published>
   <updated>2008-04-17T14:00:58Z</updated>
   
   <summary>Flickr API のPHPでのラッパー Phickr を使ってみました。 し...</summary>
   <author>
      <name></name>
      <uri>http://www.smallmake.com/</uri>
   </author>
   
   <category term="3" label="PHP" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="ja" xml:base="http://www.smallmake.com/note/">
      Flickr API のPHPでのラッパー Phickr を使ってみました。
しかし、 buildImgUrl() で取得したURLがどうも違うような感じなのです。
http://static.flickr.com/3257/2147483647_fcc073382d_m.jpg
と来ているのですが、実際のアクセスできるものには、URLの先頭に farm3 とか farm4 とかが着いていたりします。例えば、
http://farm4.static.flickr.com/3257/2147483647_fcc073382d_m.jpg
という感じです。
それで、このことについて書いているサイトはないか探しました。以下のサイトを見つけました。
      http://www.symfony-project.org/forum/index.php/t/12388/
まさしく僕が思っていたとおりのことを書いています。
それで、ここに書いてあるように、Photo.php に手を加えてみました。
僕の場合、pearでインストールしたので、Photo.php は
/usr/local/share/pear/Phlickr
にありました。

public function getFarm(){
    if (!isset($this-&gt;_cachedXml[&apos;farm&apos;])) {
        $this-&gt;load();
    }
    return (integer) $this-&gt;_cachedXml[&apos;farm&apos;];
}

というのを付け加え、 

public function buildImgUrl($size = self::SIZE_240PX)

の最後の方のURLを生成するところで、

$url = sprintf(&quot;http://farm%d.static.flickr.com/%d/%s_%s%s.%s&quot;,
$this-&gt;getFarm(), $this-&gt;getServer(), $this-&gt;getId(), $this-&gt;getSecret(), $sizeStr, $type);
return $url;

とやるだけですね。

しかし、これでは結局うまくいきませんでした。
はっきりしたことはわからないのですが、むしろキャッシュを使うタイミングがずれているみたいな感じがします。
そして、この問題は未解決なのですが、結局JavaScriptで読み出すことに方針を変更したため、保留とします。
また、機会があれば調べてみたいと思います。
   </content>
</entry>

<entry>
   <title>scp をwwwユーザーで起動</title>
   <link rel="alternate" type="text/html" href="http://www.smallmake.com/note/2008/03/scp_www.html" />
   <id>tag:www.smallmake.com,2008:/note//4.57</id>
   
   <published>2008-03-29T00:36:21Z</published>
   <updated>2008-03-29T00:58:54Z</updated>
   
   <summary>PHPのexec() を使って scp を起動し、リモートコンピュータへファイル...</summary>
   <author>
      <name></name>
      <uri>http://www.smallmake.com/</uri>
   </author>
   
   
   <content type="html" xml:lang="ja" xml:base="http://www.smallmake.com/note/">
      PHPのexec() を使って scp を起動し、リモートコンピュータへファイル転送するプログラムをつくりました。PHPを使っているのでscp の起動はwwwユーザー（apaheユーザー）によるものになるわけなのですが、セキュリティ上 wwwユーザーにはユーザーディレクトリを持たせていないので、つまり自身の .ssh/ フォルダがありません。しかし、scp ははじめてリモートとつながるときに&quot;continue connect(yes/no)?&quot; と聞いてきて、yes と答えると、fingerprint を取得して、通常 .ssh/ の known_hosts に収納します。この known_hosts がないと、毎回毎回&quot;continue connect(yes/no)?&quot;と聞いてくることになり、うっとおしいです。解決方法は？まず以下のように考えました。
      <![CDATA[最初に考えたのは（というか実は知人から教えてもらったのですが）apacheにsuexec を導入する方法です。しかし、少し検討して、これは没にしました。なぜなら最初に書いたように、scp はPHPから起動していて、転送が成功したかどうかを返値で見ていたのですが、suexecでは通常URLとしてたたく場合のCGIに有効な手法なので、それが（不可能ではないものの）容易にはできなかったことによります。
もっとお手軽な方法がありました。それが実際にやった方法なのですが、www以外のユーザーディレクトリを持つユーザーでまずscp をして、そのユーザーディレクトリにできた known_hosts を、件のPHPで起動するscpから参照させることができるのです。
そのオプションとは -o UserKnownHostsFile=/home/xxxx/.ssh/known_hosts というものです。つまり
scp -1 -o UserKnownHostsFile=/home/xxxx/.ssh/known_hosts -i <key> <sorce> <destination>
のような感じで記述できます。]]>
   </content>
</entry>

<entry>
   <title>FreeBSDのディスクをWinにマウント</title>
   <link rel="alternate" type="text/html" href="http://www.smallmake.com/note/2008/03/freebsdwin.html" />
   <id>tag:www.smallmake.com,2008:/note//4.56</id>
   
   <published>2008-03-26T11:42:58Z</published>
   <updated>2008-03-26T12:42:48Z</updated>
   
   <summary>FFS File System Driver for Windowsを使って簡単...</summary>
   <author>
      <name></name>
      <uri>http://www.smallmake.com/</uri>
   </author>
   
   
   <content type="html" xml:lang="ja" xml:base="http://www.smallmake.com/note/">
      <![CDATA[<a href="http://sourceforge.jp/projects/ffsdrv/" target="_blank">FFS File System Driver for Windows</a>を使って簡単にできる。
注意しなければならないのは、Disklabel: などの指定の仕方。
FreeBDSの場合、ボリュームは
/dev/ad8s1a
/dev/ad8s1e
/dev/ad8s1d
/dev/ad8s1f
などと表す。これらが例えば下記の対応になる。]]>
      /dev/ad8s1a  =&gt; /
/dev/ad8s1e  =&gt; /home
/dev/ad8s1d  =&gt; /usr
/dev/ad8s1f  =&gt; /var
この /home をFFS File System Driver for Windowsで、マウントする場合の指定は、
FFSDISK: 2
Partition: 1
Disklabel: 4
となる。つまり、/home は /dev/文字列の末尾が &quot;e&quot; なので（&quot;a&quot; を 0 とすると）4ということになるわけだ。
なお、FFSDISK は多分つなげたHDDの台数目でいいだろうし、Partitionも大抵 1 だと思われる。
また、私の場合接続には(株)センチュリーの「裸族の頭 IDE+SATA」を使用した。特に問題はなかったことを報告します。
さらに補足。これを試みる前に、MacOSXにマウントできないかと試みましたが、できませんでした。FreeBSDのファイルシステムは ufs で、MacOSXは mount は対応していません。 mount_ufs というコマンドも残念ながらありませんでした。


   </content>
</entry>

<entry>
   <title>UTF-8のバックスラッシュは¥ではない</title>
   <link rel="alternate" type="text/html" href="http://www.smallmake.com/note/2007/10/utf8.html" />
   <id>tag:www.smallmake.com,2007:/note//4.48</id>
   
   <published>2007-10-25T05:30:16Z</published>
   <updated>2007-10-25T05:52:55Z</updated>
   
   <summary>多分、誰もが知っていることなのでしょうけれど、私は1時間くらい悩みました。 Dr...</summary>
   <author>
      <name></name>
      <uri>http://www.smallmake.com/</uri>
   </author>
   
   
   <content type="html" xml:lang="ja" xml:base="http://www.smallmake.com/note/">
      <![CDATA[多分、誰もが知っていることなのでしょうけれど、私は1時間くらい悩みました。
DreamWeaverを使ってUTF-8のソースコードでPHPのソースを書いていました。
文字列を普通に例えば
$str = "He said ¥"Where is the bus stop No.32?¥" I answerd ¥"I don't know, Sir.¥"<br />¥n";
などと変数代入を記述して動かすと、この部分でシンタックス・エラーになってしまいます。
なにか書き方が間違っているのだろうと思い、かなり長い時間コードを精査し、書き直してみたりしました。
やっとわかったことは以下のことです。
]]>
      まず、ソースコードの文字コードを シフトJISやEUCにすれば、この部分は問題なく通ることに気がつきました。ということはシフトJISやEUCでは￥はバックスラッシュなのですが、UTF-8には￥ではない本当の＼があるのではないかとやっと思い至るわけです。
Macを使っていたのでMacでのバックスラッシュ入力をgoogleしてみました。
Option＋￥キーでバックスラッシュ入力であるということを、はじめて知りました。
しかし、DreamWeaverのコードビューで実際にOption＋￥を入力してみても、表示は＼ではなく、￥が入力されます。ここでまたもや悩みます。「Option＋￥キーでバックスラッシュ入力である」ということ自体が嘘なのか？しかし、とりあえずエスケープ文字としての￥を全部Option＋￥キーで置き換えてみましたところ、無事動くようになりました。
￥が表示されてしまうのはOsakaフォントが＼を￥で表示しているからでした。コードビューのフォントを環境設定で欧文フォント（例えばCourier）に変更すれば、＼がちゃんと表示されるようになります。
とんだことで時間を浪費してしまいました。
   </content>
</entry>

<entry>
   <title>Macでportforward設定</title>
   <link rel="alternate" type="text/html" href="http://www.smallmake.com/note/2006/07/macportforward.html" />
   <id>tag:www.smallmake.com,2006:/note//4.49</id>
   
   <published>2006-07-09T06:06:04Z</published>
   <updated>2007-10-25T06:07:25Z</updated>
   
   <summary>自宅PCをWindowsからMacに置き換えているという話の続きです。今回はPo...</summary>
   <author>
      <name></name>
      <uri>http://www.smallmake.com/</uri>
   </author>
   
   
   <content type="html" xml:lang="ja" xml:base="http://www.smallmake.com/note/">
      自宅PCをWindowsからMacに置き換えているという話の続きです。今回はPortFowardの試み。
今仕事に使っているお客さんのサーバーがあるプロバイダにおいてあるのですが、そこには外からは遮断されている（というか、ようするに社内LAN内でしか使えないようにしている）WEBサーバー（テストサーバーですね）があって、これへの外からのアクセスはそのプロバイダに設置してもらっているSSHのゲートウェイを経由することになっているのです。
      さて、今までWindowsマシンからはTeraTermのSSH ForwardやPortForwarderというわりと手軽なツールを使ってPort Forwardしていました。
これと同じことをMacでやる場合どうするかということなのですが、MacOSXはunixなのですから、当然上のようなツールは必要なく自力でできるはずです。でも、実をいうとunixでどうやるのかよくしりませんでした。
そこで参考にしたのは下記のサイトです。
http://www2.i-e-c.co.jp/ssh16.html
これによると
ssh -L 8080:server1.lan.i-e-c.co.jp:80 gateway.i-e-c.co.jp
で、よいことがわかりました。これで解決しました。
と思ったのですがこれには暗号キーのファイルの指定とゲートウェイへのログイン名の指定が足りません。キーファイルの指定は -i オプション、ログイン名は -l オプションのようです。キーは .ssh/ フォルダにいれましたので、こんな（下記）感じです。
ssh -L 8080:server1.lan.i-e-c.co.jp:80 gateway.i-e-c.co.jp -i .ssh/id_rsa -l taro
起動後暗号キーのパスフレーズの入れれば完了です。
これでWebブラウザでURL http://localhost:8080/ を指定すればアクセスできます。
僕の場合、上記コマンドをシェルスクリプトにしておくことにしました。
   </content>
</entry>

<entry>
   <title>WinからMacのUSB Printerにプリント</title>
   <link rel="alternate" type="text/html" href="http://www.smallmake.com/note/2006/07/winmacusb_printer.html" />
   <id>tag:www.smallmake.com,2006:/note//4.50</id>
   
   <published>2006-07-07T06:08:18Z</published>
   <updated>2007-10-25T06:09:02Z</updated>
   
   <summary>自宅の据え置きパソコンをWindowsPCからMac-mini に置き換えること...</summary>
   <author>
      <name></name>
      <uri>http://www.smallmake.com/</uri>
   </author>
   
   
   <content type="html" xml:lang="ja" xml:base="http://www.smallmake.com/note/">
      自宅の据え置きパソコンをWindowsPCからMac-mini に置き換えることにしました。PCはテレビの録画や留守番電話、FAX、メール転送、ファイル共有、プリンタサーバーなどかなりいろんなことに使っているので、これはなかなな大変なことなのです。いろんな問題が発生したのですが、今回はMacをプリンタサーバーにしようと試行錯誤してしまったことの顛末記を書きます。
      ある解説サイトによるとMacのOSXにあるWindows共有設定さえしてあれば普通にWindowsの「プリンタとFAX」項目にMacのプリンタのアイコンが見えてこれをWindowsで「プリンタ追加」すればよいとのことでした。そして確かにその方法でプリンタ追加はできました。ところが、実際は Windowsからプリントしようとしてもプリンタは全く反応しませんでした。
Windowsでプリンタのプロパティを開いてポートをみてみるとポート「Samba Printer Port」とあり、プリンタ名には「FrashPaper, LP-900, iP_8100」などとMacにつながっているプリンタを全部コンマで区切って表示しています。どう考えてもこんな特定のない表示はありえません。もしかすると複数台のプリンタがつながっていること自体に対応していないのかもしれません。あるいは、別途詳しく書くつもりですがプリンタ共有の設定をする前にファイル共有のために SharePoints を導入していたので、このせいかとも疑いました。
ほとんど一日中これを解決しようと試行錯誤してました。SharePointsのアンインストールも試みました。しかし、結局この日は一日かけて解決できませんでした。それが昨日のことです。
さて、それで今朝になってなにげに下記のページと記事を見つけました。
　http://members.at.infoseek.co.jp/MACFreak/
　「2006年04月 26日(水）　PCからMac接続USB PrinterにPrint」
ここで述べられている Bonjour については昨日いろいろ調べていて内容も知っているつもりでいたのですが（僕はこれはTCP/IPの名前解決のための技術だと思っていました）、ところが上記によるとプリンタ共有につかえるらしいのです。
早速、Bonjour for Windows をダウンロードし設定を開始。プリンタ共有のためのウィザードもついていて、あっというまにプリンタ共有に成功しました。
いったい昨日の苦労は何だったのかという感じです。
   </content>
</entry>

<entry>
   <title>Ajaxがよいソリューションとは限らないこと</title>
   <link rel="alternate" type="text/html" href="http://www.smallmake.com/note/2006/05/ajax.html" />
   <id>tag:www.smallmake.com,2006:/note//4.4</id>
   
   <published>2006-05-10T13:09:11Z</published>
   <updated>2006-09-27T15:56:11Z</updated>
   
   <summary>このところXML＋JavaScriptでの対応をいくつも試みてきた。 JKL.P...</summary>
   <author>
      <name></name>
      <uri>http://www.smallmake.com/</uri>
   </author>
   
      <category term="JavaScript" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://www.smallmake.com/note/">
      このところXML＋JavaScriptでの対応をいくつも試みてきた。
JKL.PearseXML や prototype.js を使っていろいろ試みた。
パブロアマリンゴのサイトでは問題は、 MacIE5 である。
smallmakeにおける問題は、onLoad時にAjaxを使うことの正当性である。
そう、いかなるケースにおいてAjaxが正統といえるのかをちゃんと考えておくべきだろう。
上記の二つのケースにおける具体的なことを以下に書く。
      パブロアマリンゴにおいては、少なくとも絵画のサイズや価格は表示してあげるべきだと思った。
エレベータや画像の拡大表示はできないのは仕方ないにしても、上記の情報は少なくとも必要。
だとすれば XML読み込み自体をやめるしかない。
なお、代わりに JSONを導入したが、実はこれがMacIE5でうまく動くかどうかはこれから確認する。

第2のケース。onLoad時にXMLを読み込む問題。これは考えてみればまずいことは明らかである。そのページがキャッシュから読み込まれればJavaScriptは動かないからだ。
Ajaxが有効なのはクリックなどのアクションを受けてJavaScriptを動かすことが確実な場合だけである。
   </content>
</entry>

<entry>
   <title>JKL.ParseXML かPrototype.js か</title>
   <link rel="alternate" type="text/html" href="http://www.smallmake.com/note/2006/05/jklparsexml_prototypejs.html" />
   <id>tag:www.smallmake.com,2006:/note//4.3</id>
   
   <published>2006-05-08T16:21:41Z</published>
   <updated>2006-09-27T15:56:11Z</updated>
   
   <summary>問題はやはりMacである。両方ともMacIE5には対応していない。 JKL.Pa...</summary>
   <author>
      <name></name>
      <uri>http://www.smallmake.com/</uri>
   </author>
   
      <category term="JavaScript" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://www.smallmake.com/note/">
      問題はやはりMacである。両方ともMacIE5には対応していない。
JKL.ParseXMLはsafari 1.x にも対応していない。Prototype.js は safari 1.2以降であれば大丈夫であるらしい。
Prototype.js を使うのが最低限の選択であるとすれば、もはやMacIE5は切り捨てるしかなさそうである。
そこで2点。

１）MacIE5に対してはどのような代替表示をすべきかということも併せて考えるべし。
２）MacIE5を判別する方法を確立すべし。
      <![CDATA[２）についてなのだが、究極の判別ツールを見つけた....つもりだった。
しかし、これは結局 MacIE5の判別はできていないようである。なぜなのか？できるかのように書いてあるのに。
<a href="http://www.minc.ne.jp/~konda/web_resoce/js/js-support.html">http://www.minc.ne.jp/~konda/web_resoce/js/js-support.html</a>

以下のようなものもある。
<a href="http://www.mozilla-japan.org/docs/web-developer/sniffer/browser_type.html">http://www.mozilla-japan.org/docs/web-developer/sniffer/browser_type.html</a>]]>
   </content>
</entry>

<entry>
   <title>FireFox で windows.onload の設定ができない</title>
   <link rel="alternate" type="text/html" href="http://www.smallmake.com/note/2006/05/firefox_windowsonload.html" />
   <id>tag:www.smallmake.com,2006:/note//4.2</id>
   
   <published>2006-05-06T11:15:59Z</published>
   <updated>2006-09-27T15:56:11Z</updated>
   
   <summary>グローバル変数を得るために var xml =  new JKL.ParseXM...</summary>
   <author>
      <name></name>
      <uri>http://www.smallmake.com/</uri>
   </author>
   
      <category term="JavaScript" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://www.smallmake.com/note/">
      グローバル変数を得るために
var xml =  new JKL.ParseXML();
var data = xml.parse();
とJavascriptの先頭で書いていたのだが、JKL.ParseXML() を引数なして呼び出すことによって、実際にはスクリプト全体の中でエラーが起きていたのである。
このため、そのスクリプトの最後に記していた windows.onload が効かなくなっていたということに過ぎなかった。
      IEでは問題がなかったので、これが問題ではなくFireFoxのonload自体に問題があるのだろうと思ってしまって、その観点から調べるのにすごく時間を費やしてしまった。残念である。

また、そのほかに FireFoxでは innerHTML に代入した値も表示されないという問題があったが、これも同じ問題で、上記でエラーがおこっていたので data 変数がグローバルとして生きてはいなかったのである。

具体的対処としては、
var xml =  new JKL.ParseXML( data_dir + &apos;200604171951.xml&apos; );;
var data = xml.parse();
とダミーの xmlを設定すること。これにより解決した。
   </content>
</entry>

<entry>
   <title>画像の差し替えとNowLoading処理</title>
   <link rel="alternate" type="text/html" href="http://www.smallmake.com/note/2006/05/nowloading.html" />
   <id>tag:www.smallmake.com,2006:/note//4.1</id>
   
   <published>2006-05-05T03:33:49Z</published>
   <updated>2006-09-27T15:56:11Z</updated>
   
   <summary>画像の差し替えは document.getElementById(&apos;data_p...</summary>
   <author>
      <name></name>
      <uri>http://www.smallmake.com/</uri>
   </author>
   
      <category term="JavaScript" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://www.smallmake.com/note/">
      画像の差し替えは
document.getElementById(&apos;data_pict&apos;).width = imgwidth;
document.getElementById(&apos;data_pict&apos;).height = imgheight;
document.getElementById(&apos;data_pict&apos;).src = imgsrc;
document.getElementById(&apos;data_pict&apos;).alt = imgalt;
で行えばよい。
しかし、この場合にローディング中に「ロード中」と表示するにはどうするか。
      var pictImg = new Image();
pictImg.onload = showData2;
pictImg.width = imgwidth;
pictImg.height = imgheight;
pictImg.src = imgfile;
pictImg.alt = &quot;&quot;;
とする。このとき、onloadの設定は src の設定よりも前に行わなければならないようである。

そして、
function showData() {
document.getElementById(&apos;data_pict&apos;).width = pictImg.width;
document.getElementById(&apos;data_pict&apos;).height = pictImg.height;
document.getElementById(&apos;data_pict&apos;).src = pictImg.src;
document.getElementById(&apos;data_pict&apos;).alt = pictImg.alt;
document.getElementById(&apos;data_text&apos;).innerHTML = info;
}
   </content>
</entry>

<entry>
   <title>PHP DOMXMLを使う UTF-8のこと</title>
   <link rel="alternate" type="text/html" href="http://www.smallmake.com/note/2006/04/php_domxml_utf8.html" />
   <id>tag:www.smallmake.com,2006:/note//4.51</id>
   
   <published>2006-04-18T06:10:12Z</published>
   <updated>2007-10-25T06:11:17Z</updated>
   
   <summary>トップページの small dialy のところは携帯で撮った写真をそのままメー...</summary>
   <author>
      <name></name>
      <uri>http://www.smallmake.com/</uri>
   </author>
   
   
   <content type="html" xml:lang="ja" xml:base="http://www.smallmake.com/note/">
      トップページの small dialy のところは携帯で撮った写真をそのままメールで専用のアカウントに送って、自作のPHPプログラムを起動すると自動的に追加されるように作ったものなのですが、このときPHPがサーバー上に保存するファイルを XMLにしています。表示はこれをパースして表示しているわけです。
ところで、XMLの生成にはDOMXMLを使ってみることにしました。PHP5では搭載されていないのですが、このプロバイダのPHPは4でDOMXMLも組み込んであったので、とりあえず使ってみることにしたのです。それで、悩んだ点を以下に記載しておきます。
      <![CDATA[XMLは基本的にUTF-8で保存するのだということはわかっていたのですが、たとえば以下のようにしてUTF-8に変換してテキストノードを作ります。

    $dom->create_text_node(mb_convert_encoding($d->subject, "UTF-8", "SJIS"))

それで以下のメソッドで保存した場合なのですが、

    $dom->dump_file($fname,false,true)

保存された漢字コードがどうしても、たとえば&#x5915;&#x98EF;&#x306F;といった文字列になってしまうのです。（こういう文字列を何というのでしたでしょうか。特殊コード？すみません忘れてしまいました。）このようではなく、「生」のUTF-8コードでファイルを作って欲しいのです。
結論的には dump_file() メソッドを使うべきではありませんでした。
dumpmem()メソッドであれば、エンコード指定ができるのです。そして、その指定さえすれば「生」のコードで出力できます。
よって出力はたとえば以下のような記述をするのがよいのだとわかりました。

    $content = $dom->dumpmem(true,"UTF-8");
    $fp = fopen($fname, "w");
    fputs($fp, $content, strlen($content));
    fclose($fp);

これであれば<?xml version="1.0" encoding="UTF-8"?>という形でencode指定も書き出してくれました。]]>
   </content>
</entry>

</feed>

