Category:study

我が家では妻も仕事やゲーム等でネットにつないでPCを使う関係上、家庭内LANを組んでいるのですが、二人で共有するファイルもありますのでいわゆるNAS(ネットワークに直に接続するタイプの記憶装置)のHDDを利用しています。

これまではアイオー・データ社のLANDISKシリーズの一番最初の型(たぶんもう商品ラインナップに無いくらい古いもの)を使用していたのですが、老朽化著しく、たまに異音を出したり繋がらなかったり、なにより転送速度の遅さが現状に即さなくなってきており、段々と使わなくなってきていました。

でも最近になって、写真を二人とも結構な数撮るようになり、共通のフォルダに同時にアクセスしたい、しかも連れのPCが起動していないときにもアクセスしたいってことで、改めてNASの使用を検討しまして、既に増設していたUSBHDDのメーカーに合わせるということもあり、今回はBUFFALO社のLinkStationシリーズを購入しました。

転送速度は、これまで使っていた初期のものに比べやはり劇的に改善されており、そこそこストレス無くアクセスできます。やはり買ってよかったなあというのが実感ですが、いくつか問題は発生しました。詳細は以下。

まずこの製品、USBでの増設が可能なのですが、HDDのフォーマット形式がFATおよびNTFSの場合は読み取り専用になってしまいます。FATって割と一般的に広く用いられている形式だと思っていたのですが、案外そうでもないんでしょうか。これはちょっときついなと思いました。

LinkStationから自由に読み書きできるフォーマットもあり、それで再フォーマットしてしまえばよいのですが、そうすると今度はPCにつないだときに認識されなくなってしまうようです。それはそれで困ります。事前の調査不足といえばそこまでなのですが、LinkStationにぶら下がってwindowsから自由に使えるようなイメージで考えていましたのでこれちょっとショックでした。結局、USBHDDは普通にPCにつないで用い、LinkStationに増設する場合にはまっさらのHDD買ってつなぐことに。

さてもう一つ、これはこの製品の問題ではないと思うのですが、MACから共有したときに発生する、FATでは使用できない文字列や命名規則のファイル、具体的には「.AppleDouble」など「.」で始まるファイルなどが、windowsからうまく扱えませんでした。

今回は以前のLANDISKからの買い替えなわけでデータの移行が必要となりますが、windows上では一括でコピーできないという状況に陥ってしまいました。windows上でドラッグドロップしてコピーをさせていると、appledoubleが存在するフォルダに行き着いた時点で「じゃん!」と音がしてコピーが中断されてしまいます。どうやらappledoubleは、MACから扱ったことがある全てのフォルダに発生しているらしく、それこそ星の数ほどあるみたいです。いちいちそれをよけながらコピーするのって結構な手間で大変です。

結局これは、コマンドプロンプトから直接その手のファイルを消すことで解決しました。参考までにその内容を以下に書いておきます。

スタートメニュー>全てのプログラム>アクセサリ>コマンドプロンプトと辿ってコマンドプロンプトのウインドウを起動し、以下を一行ずつ入力してリターンを押します。
※一番左のアルファベット:>という表示はドライブ表示で、システムが勝手に表示するものです。

c:>z:
z:>attrib -r -h .* /s /d
/******ここで処理待ち******/
z:>del .* /s

処理の概要としてはまず1行目で該当ドライブに移動し、2行目でファイルの属性を変えます。そして3行目で一括して削除しています。

-rとか/sとかはその処理を行う際の詳細な条件を指定しています。こういうところを見れば詳しく書いてあります。

「.*」という部分がファイル名なのですが、「*」は、「何か文字列が存在する」という条件を指定する役割を持つ、コマンドの一部とも言える特殊な文字です。今回の場合は「.」で始まる全てのファイルを指定しています。

コマンドプロンプトはwindows上でできる処理のほとんどを文字列による命令で行うことができ、実はcopyもコマンド指定で行うことができます。こちらのほうが処理は軽いことが多く、例えば一つのフォルダに数千のファイルが入っている場合などwindows上ではファイルの管理に時間を取ってしまうためか、一つ一つのファイルが軽くてもものすごい時間がかかってしまうのですが、コマンドプロンプトだと比較的短い時間で処理を進めることができます。

ってことで、これを書いている今現在もバックグランドでコピー処理がごりごり進められています。これが終わんないとなんか落ち着かない。早く終わってくれないかなあ・・・

メモ。

画像が埋め込みになっているイラレでデザインデータを貰ったときなどに、諸事情から元画像を抽出したい場合の手法。

  1. イラレをpdfで保存
  2. 保存したpdfをadobe acrobatで開く
  3. メニューから 書き出し>名前をつけて画像を抽出 を実行
  4. 選択したフォルダに、「指定したファイル名_連番」で書き出されるのを確認

色が少し変になってしまうので、気になるレベルだったら修正は必要かも。

解像度や画像サイズもなんか色々在るみたいなので調整は適宜。

普通にイラレ>フォトショのコピペでもできるけど、その場合画像サイズがイラレのサイズでのコピペになる。(元の大きさには依存しない)(じゃあイラレ上で原寸にしてからコピペすればよい?)←この辺調査不足

flickrにアップした写真をFlashに取り込んでサムネイルを出したく思い、このたび初めてflickr apiを利用してみました。今更ですよね。タグに今更ってつけちゃおうかな。

えっとまあぶっちゃけapiとは何かなんて根本的なとこは今ひとつわかってないんですけど、要はwebサービスに自分の好きな形でアクセスする為の手段として用意されてる色んな何か、って認識で一つ。ええ。もし、ここが間違ってても利用にはなんら問題ないんでいいかな、と。

で、実際の使用方法(ここからは自分用メモ)

まず、flickrのapiがまとめてあるページはここ

http://www.flickr.com/services/api/

使用にあたってはapi keyが必要ですので、以下のページから取得

http://www.flickr.com/services/api/keys/apply/

取得したら、そのkeyと色んなパラメータを混ぜ込んだurlでサーバーに要求をかけて、データを貰ったり、自分のページにアクセスして何か処理をさせたりといった流れになります。 今回僕は自分がアップした写真の一覧がほしかったので、flickr.photos.searchを使ってみました。 urlに含めてて条件を渡すことで、その条件に基づいた検索結果をxmlで返してくれます。詳しくは以下のページにて。 (rssをそのまま使用しても良かったのですが、flickrのrssのxmlは僕には少し難しかったので、apiでなるべく簡単な構造のxmlを生成して使うことにしました。)

http://www.flickr.com/services/api/flickr.photos.search.html

実際にサーバーにリクエストするurlの例は以下の通り

http://www.flickr.com/services/rest/?method=flickr.photos.search&api_key={ここに取得したapi key} &user_id={今回は自分のid}

上のurl書く時に迷ったのですが、自分自身のuser_idって案外知らなくないですか?正式にはどこかで見れるのかもしれませんが、僕はとりあえず自分のページの下部からリンクされているfeedのURL中に含まれるid=XXXXの数値を用いました。

さて、上のurlで要求をかけると、多少はしょってありますが大体以下のような書式のxmlが返ってきますので、適当にパースして使えばOKです。Arguments(urlの末尾、?の後ろについてるやつ)を色々指定してやれば、返ってくるxml自体をカスタマイズできるみたいですね。

<photos page="2" pages="89" perpage="10" total="881">
<photo id="2636" owner="47058503995@N01" secret="a123456" server="2" title="test_04" ispublic="1" isfriend="0" isfamily="0" />
<photo id="2635" owner="47058503995@N01" secret="b123456" server="2" title="test_03" ispublic="0" isfriend="1" isfamily="1" />
</photos>

ところで返ってきたxmlを見るとわかるとおり、データには検索した画像のurlは含まれていませんので、返ってきた値を組み合わせて画像のurlを生成する必要があります。その際の書式は以下にあります。

http://www.flickr.com/services/api/misc.urls.html

例えばサムネイルを取得したい場合、書式は以下のようなものとなりますので

http://farm{farm-id}.static.flickr.com/{server-id}/{id}_{secret}_s.jpg

xmlを展開してFlash内の各変数に格納処理した後、以下のように書きました。(一例です。変数名は実際に使用したものでなく、わかりやすいようにxmlの値と名称をそろえています。)

imageURL = "http://farm" + farm + ".static.flickr.com/" + server + "/" + id + "_" + secret + "_s.jpg";

あとは普通にloadMovie的処理をすればOKです。

さて、ここまで書いといてなんなんですが、Flashからxmlを読み込む場合にはクロスドメイン問題という問題が存在します。Flashは自分自身が置かれているドメインと異なるドメインからxmlを読み込めない仕様になっているんです。これは主にポリシーファイルにて解決(このドメインからのアクセスはOKって定義したファイルを読み込みされる側に置いてもらう)するわけですが、webサービスの場合はいちいちそんな対応してくれるわけがありません。※ネットの情報によればflickrは昔対応していたらしいのですが、今はダメみたいですね。

で、xml取得の方法としてはJavaScriptと組み合わせたり、phpをはさんだりの迂回路を探すことになります。僕の場合はphpを使用してます。といってもごくごく簡単な以下のようなコードを書いてサーバーにそのファイルを置いて、リクエストかける先をそのファイルにして、GETで値を渡すとかその程度です。

<?php
$loadurl = $_GET['xml_URL'];
readfile($loadurl);
?>

以上で、無事Flashにflickrのサムネイル画像を出すことに成功しました。実際にはさらにFlash内で50%縮小処理とかしてますが、そこから先はもうFlashの処理なので特に問題なかったです。ってことで、メモ、でした。