Katie 3才になりました

2014年の12月にうちに来てから、あっという間に3才を迎えました。
来たばかりの時は、トイレもできず、ハウスにも入れず、お散歩もすごく引っ張って命がけ・・。
どうなることか?と思っていましたが、毎週末に代々木のドッグランでお友達と遊び、
海・川・雪山で遊び、たまーにトレーナーの先生にコツを教わりつつ、
気づけばそれなりに意思の疎通ができるまでになっていました。

大きいけど、本当にかわいい黒犬。

絶対に噛まないことを覚えてくれて、口に手を入れても、何か食べていても、ひっぱりっこしていても
大丈夫な優しい子になってくれました。

人も、犬も大好きで、番犬には向いていないけど、、

できるだけ長く長く、一緒にいられるといいね。

バースデープレゼントにはベッドをプレゼント。

秘密鍵を設定してFTPクライアントfetchでSFTP接続する覚え書き

仕事柄、いろいろなクライアントのサーバにアクセスすることが多く、最近は秘密鍵をいただいてSFTPで接続することが増えました。
macの環境で使っているFTPクライアントは昔からfetchで、SFTPでの接続はできるけど、設定画面で秘密鍵を選択したりするような機能はなく、以前一度失敗してからはYummyFTP Liteを使っていました。
が、やーっぱり使い慣れているfetchの方が楽なので、今回新たにSFTP接続をすることになったクライアントで再度トライ。
あっけなく、いともあっけなく接続でき、それ以前にエラーで接続できなかったクライアントもできるようになりました。

ただ、やっぱり苦手なターミナルでコマンドを叩く必要アリなので、覚え書きに。

まず、いただいた秘密鍵をデスクトップに展開してあるところから。。
ターミナルを開きます。

1)秘密鍵をsshのフォルダに移動

ターミナル画面で

mv /Users/ファイルまでのパス/秘密鍵名 ~/.ssh/

mv(移動) rsaファイルの場所 移動先の場所

をたたくと、~/.ssh/ ディレクトリに秘密鍵が移動されます。
ls でファイルの一覧を見ると、無事に移動されてます。

2)次に、SFTP接続する先がいくつかあるので、同じ階層にあるconfigファイルを編集。

open config

をたたくと、configファイルの中が表示されて、編集できます。
ホスト名、ユーザ名 秘密鍵の場所とファイル名を入れて ⌘S で保存!

3)あとは、fetchで接続先の設定。
connect using をSFTPを選択し、パスワードは設定不要。
で、接続!!!

と思ったら、エラーが出た。秘密鍵のパーミッションが悪いと言っているので、再度ターミナルで
今回の秘密鍵のパーミッションを変更。秘密鍵パーミッションは400がいいんだって。

4)なので、再度ターミナルでパーミッションを変更

chmod 400 ~/.ssh/秘密鍵名

これで無事に変更。

バッチリ接続できました。

ちなみに、configファイルで、いままで接続できなかったクライアントも追記したら、あっけなくつながりました。
これでもうSFTP接続も怖くない!

simplepie.phpで複数サイトのRSS一覧をアイコンを付けて表示させる覚え書き

イベントのサイトや幾つかのブランドがあるサイトで一つの場所に全部のRSS情報を最新5件、一覧で表示させるというミッションがあり、四苦八苦。
いくつかのrssプラグインを使ってみたものの、個別にアイコンを付ける機能がついているようなプラグインなど無く、wpにもとからあるclass-simplepie.phpを使って表示させることに。

最終的なコードはこちら。

FEED A URL,FEED B URL、、と複数のフィードするURLを指定する。
ここでハマったのが、キャッシュするフォルダを指定していなかったので、エラーが表示されてしまった。
ディレクトリのトップにcacheフォルダを作り、パーミッションを700に指定すればOK。

一覧では、複数のサイトの最新5件を一覧させたかったので、そのように。

<?php include_once(ABSPATH . WPINC . '/class-simplepie.php');
	$feed = new SimplePie();
	$feed->set_feed_url(array(
	'FEED A URL', // サイトAのフィードURL
	'FEED B URL', // サイトBのフィードURL
	'FEED C URL', // サイトCのフィードURL
	));
	 $feed->set_cache_location('./cache');
	 $feed->set_cache_duration(600);
	 $feed->set_item_limit(5);
	 $feed->init();
	 $items = $feed->get_items(0, 5); // 最新5件表示
	 foreach($items as $item)
: ?>

で、後はそのデータを表示させるだけなのだけど、ここでもトラップがいくつか。

1)それぞれのサイト専用のアイコンを表示させるため、preg_matchでアイコンを指定

if(preg_match("/FEED-A/",$item->get_permalink()

とすると、パーマリンク(URL)の中の任意の文字列「FEED-A」が入っている場合は「ic_a.png」をタイトルの横に表示させることになる。
ただ、同じドメインにいくつかのサイトやサービスがある場合、ドメインの文字列を使うと全部同じアイコンになってしまったり、ページタイトルにその文字列が入ってるとややこしくなってしまうため、

if(preg_match("/FEED-B/",$item->get_feed()->get_title()

として、サイトのタイトルを指定して、そこにある文字列で分けることで同じドメインでもOKに!(下のコードでは一応両方設定。)

2)get_descriptionでコンテンツの中身を一部表示させた際、最後の文字が文字化けしてしまった。

通常は echo mb_substr で中身を表示させるのが一般的みたいだけど、日本語は2バイト言語なので、echo mb_strimwidth
の関数を使い、その前で言語とエンコードも指定。

本来は

$len = 10;
echo mb_strimwidth(strip_tags($item->get_description()), 0, $len, "...", "UTF-8"); ?>

とかのほうがいいのかも?

ま、動いたので今回はこれで、、

<dl>	
	<dt><?php echo $item->get_date("Y.n.j"); ?></dt>
	<dd><a href='<?php echo $item->get_permalink(); ?>' title=''>
	<?php echo $item->get_title(); ?></a>&nbsp;&nbsp;&nbsp;
	<?php if(preg_match("/FEED-A/",$item->get_permalink())){echo '<img src="img/ic_a.png" alt="">';}
	else if(preg_match("/FEED-B/",$item->get_feed()->get_title())){echo '<img src="img/ic_b.png" alt="">';}
	else if(preg_match("/FEED-C/",$item->get_permalink())){echo '<img src="img/ic_c" alt="">';} ?><br>
	<p class="siteinfo">by <?php echo $item->get_feed()->get_title(); ?></p>
	<span class="desc">
	<?php mb_language('Japanese');
	mb_internal_encoding('UTF-8'); 
	echo mb_strimwidth(strip_tags($item->get_description()), 0, 360, "..."); ?>
	<a href='<?php echo $item->get_permalink(); ?>' target="_blank">続きを読む</a>
	</span>
	</dd>	
</dl>

基本のコードはこちらのサイトを参考にさせていただきました。ありがとうございます。

» Website Creating RSSフィードで複数サイトの新着一覧アイコン付