1年前にはてブにブクマしたサイトを見る

ちょうど1年前にブクマしたフィードが取得できるっていう何かがあった気がしたんだけど、それはフィードだけが提供されて、各自でRSSリーダーやらなんやらにぶち込む必要があった。
個人的にはRSSリーダーはオワコンなので、知らない間に使わなくなっていた。

でも、過去にブックマークしたサイトって本人にとっては面白いもののはずだし、その頃何を考えていたのかも思い出せるので重宝していました。

というわけで、そんなサイトを金土日の間に作ってみます。

—土曜日追記—
やっぱり創るモチベーションがわかないのでやめました。
作りたいものってなんだろうなぁ。

ytplayerを使って全画面のYouTube動画を背景にする

Youtubeの動画を半透明なbackgroundにしてしまうという手法を、おしゃれなティザーページなどで見かけることが多くなってきましたね。
どうやってやるのかなぁと思って調べてみました。

すると、とても簡単に実装できそうなjQueryのプラグインのytplayerというものがありました。
とりあえずデモっぽいものを動かしてみました。


http://serima.co/youtube/watch

ついでにyoutubeの動画のvパラメータをそのままくっつければ、再生されるようにしてみました。
何もパラメータを指定しないでアクセスしたときは、都内のドライブ映像を流し続けます。

以下は、指定したバージョン。

http://serima.co/youtube/watch?v=ognrTXHoutU

勝手にリピート再生するようになっています。

watchというファイルをphpとして動作させるため、MIMEタイプを.htaccessで制御しています。
.htaccessを配置したディレクトリ以下のファイルすべてに対して、phpとして動作させるように設定。
その上で、拡張子ごとにForceTypeしてMIMEタイプをオーバーライド。

[php]
ForceType application/x-httpd-php

ForceType text/html


ForceType text/css


ForceType text/javascript


ForceType image/gif


ForceType image/jpeg


ForceType image/png

[/php]

MIMEタイプについては以下に。
http://mikeneko.creator.club.ne.jp/~lab/web/htaccess/mime.html

ytplayerのドキュメントやらなんやらは以下からどうぞ。
https://github.com/pupunzi/jquery.mb.YTPlayer

Cyberduckが重いときの対処法

MacのFTP/SFTPクライアントといえば、Cyberduckと言われるくらい大御所なのに、普通に使ってるだけでガンガン重くなって、しまいには起動に何十秒もかかるようになってくる…信じられない!

サーバーの設定が悪いのかなと思いきや、ちょっと調べてみるとCyberduck自体のせいっぽい。

僕の場合は以下のファイルを消して、Cyberduckを再起動したら軽くなりました。

/Users/xxx(ユーザ名)/Library/Preferences/ch.sudo.cyberduck.plist

定期的にやるの面倒だなぁ。とはいえ、FileZillaを使うのはWindowsライクな感じがするので、またしばらくは使います。

スマホ/PCからのアクセスを厳密に判定する方法

User-Agentを利用して、スマートフォンからのアクセスなのか、PCからのアクセスなのかを判定することは既に記事が数多く出ていますね。

しかし、User-AgentはPCからのブラウザで簡単に偽装が可能です。
ガラケーの場合は、User-Agentが偽装されていたとしても、IPアドレスやUIDなど契約者固有IDによって、実際の携帯電話からのアクセスなのか判定できていました。

スマートフォンの場合は、Wifi経由でアクセスされることもある上に、契約者固有IDが取得できないため(というか、スマートフォンはほぼPCなので基本的には何でもあり)、User-Agentが偽装されてしまうと判定ができなくなってしまうわけです。

3G回線のみでアクセスされることを前提にするならば、厳密に検出することはスマートフォンでも可能です。

NTTドコモ – IPアドレス帯域(spモード)
KDDI – IPアドレス帯域
Softbank – IPアドレス帯域

しかし、この方法は現実的ではありません。

IPアドレスは使えない、User-Agentも偽装されてしまう。
こうなると、検出方法がないのでは?と思い、はてなで質問もしてみました。

スマートフォン用のサイトを制作しています。PCブラウザでスマートフォンのUserAgentに偽装されても、アクセスを受け付けないようにする方法ってあるのでしょうか。
http://q.hatena.ne.jp/1330229019

バッチリな回答はもらえなかったものの、ヒントは得ることができました。
クライアントサイドスクリプトのコマンド有無による判定が使えるかも?とのことです。

モバイル用のブラウザには、touch判定用のJavascriptのイベントハンドラが実装されています。
かたやPC用のブラウザにはそのようなイベントハンドラはありません。画面に直接触って操作するのではないから、当たり前ですね。

これを判定するためには、HTML5/CSS3の仕様をブラウザごとに判別してくれるライブラリ、Modernizrで出来そうです。
HTML5のサイトを作っていると、どのCSSプロパティが、どのブラウザのどのバージョンに対応しているか、このタグはこのブラウザには非対応…など悩まされるかと思います。
ModernizrはHTMLタグに、どの機能が有効なのかをクラスとして書きだしてくれます。

そのような機能を提供しているぐらいなので、このライブラリにはスマートフォンを検出するメソッドも用意されています。
Modernizrを読み込んだ上で、以下のように記述すると判定できるようです。

if (Modernizr.touch){
// bind to touchstart, touchmove, etc and watch event.streamId
} else {
// bind to normal click, mousemove, etc
}

詳細は以下のドキュメントをご覧下さい。

Modenizr Documantation

また以下のページでは、どのイベントハンドラがどのブラウザで有効/無効になるのかが一覧になっていてとても便利ですね。

Modernizr Touch tests

ライブラリを使わず、もっとシンプルに実装したければ以下のように書いておけば、ある程度は判定できると思います。
もう少し厳密にしたければ、window.orientationの角度検出イベントの有無やnavigator.platformなどのチェックを複合的に行えばよいかと。

ちなみに、chromeにはこのようなイベントハンドラ自体を付加するextensionが存在します。
(そこまで有効ではなさそうですが。)

Touch用のイベントハンドラを実装したブラウザ自体を作られてしまう可能性を考えると、ガラケーのように100%の判定は不可能ですが、たいていはこれで判定できるのではないでしょうか。

iPhoneで絵文字が表示されない件

iPhoneのMMS/SMS(メッセージ)でメールをしていて気付いた。

今月の上旬くらい(2012年3月)から相手から送られてきたメールの絵文字がどうやらスペースになってしまって、表示されなくなってしまった。

というよりも、iOS5.1の人がMMS/SMSでメールを送ると、相手側に表示されないという現象っぽい。

調べてみると、3月8日にリリースされたiOS5.1のアップデートによる不具合だそう。
日本語版でもついにSiriが使えるようになった大きなバージョンアップだったため、多くの人が既にアップデートしているかもしれません。

iOS5.1リリース時にこんな記事が出てたようです。
iOS5.1、MMSで相手側に絵文字が表示されない不具合が発生

そして、ついこないだソフトバンクはこっそりと絵文字問題について公式発表していたとのこと。
ソフトバンク、iOS5.1の絵文字問題について「MMSではご利用いただけません」とこっそり公式発表していた

ここの記事によると、Softbankはこの問題を次のバージョンでは修正する方針だそうですが、簡単に修正できる不具合ではないため、現実的にはいつになることやら、という感じだそうです。

iOS5.1のメッセージ(MMS/SMS)で絵文字を送る方法まとめ(@softbank.ne.jp)

これを使えば、なんとか絵文字を送ることは出来るそうですが、毎回コピペしたりするのは面倒なので、よく使う顔文字だけをユーザー辞書に登録するといいかもしれません。
(登録するときは、絵文字キーボードから入力するのではなく、上のサイトからコピー&ペーストしないとだめです)

とりあえずいろいろ面倒なので僕は絵文字の代わりに顔文字を使うことにしました。
そして、絵文字キーボードを非表示にしました。

Brown's Book&Cafeに行って来ました

下北沢に越してきて2年が経つが、近くにお気に入りのカフェを見つけた。
週末(土・日)のみ営業する「Brown’s Book & Cafe」というお店。

小洒落たビルの5階にあり、たいへん見つけにくい。

そのビルには、中村屋@West Park Cafeというラーメン屋さんが1階に入居していたのだが、いつ通ってもお客さんの入りが良くないので、潰れてしまうのではないかと心配だったが、ついにこの前撤退してしまったようだ。
吉祥寺では大盛況なのにな、やっぱり下北沢の外れのほうにあるし仕方ないのかなぁ。
と思っていた立地のビルの5階にあるということは、、どんなものなのかなと期待しないで行ってみましたが、良い意味で期待を裏切られました。

そもそも、近くで無線LANが使えるカフェってないのかなぁと探していたのがきっかけ。
いろいろ調べているとどうやらFREESPOTが入るらしいと、PCを持って出かけたのですが雰囲気と本がステキでPCを開くのはもったいないと思い並べられている本を読んでいました。

みうらじゅん、岡本太郎、北野武など独特なパワーを持った著者の作品が多かった印象です。
店内は落ち着いた雰囲気でとても良かったです。

アップルパイを頼んだら、ホットサンドメーカーのようなもので温めてくださった。
とても美味しかったなあ。

平日は、BARFOUT!という雑誌の編集部として稼動しているそうです。
店内にはおしゃれなポスターがたくさん貼ってありました。

ホームページはこちら。

http://brownsbooks.jp/booksandcafe/

いごっそうなデザイナー、梅原真。熱を持った人の伴走者。

録画していたプロフェショナル仕事の流儀を観た。
高知でデザイナーとして活躍している梅原さんという方のプロフェッショナル論。

第175回 梅原真 プロフェッショナル仕事の流儀(2012年2月20日放送)

いごっそうとは、土佐弁で「頑固で気骨のある男」という意味だそう。
確かにそのような印象を受ける。でも、笑顔は懐の深さを垣間見ることができ、とてもやさしい方なんだろうなと感じた。

梅原さんは地方、農林漁業の依頼しか受けず、
しかも、志で動くというポリシーを貫いている。
仕事を引き受けるかどうかは現場を見てから決めるようにしている。
そこで、依頼主の本気度を見るようにしているそうだ。

「宝は、すぐ足元にある」
というキーワードが番組のあちらこちらで現れる。

「コンプレックスに目を向けて、そこにちょっとデザインを加えてやることで新しい価値を生むことができるでしょ。」

ここでいうコンプレックスとは、かつては地方を支えた農産物などの1次産品。
時代の変化により、いつのまにか売れなくなってしまったことで、皮肉にもその地方のコンプレックスとなってしまう。
しかし、ここに再び光を当てようと奮闘する地元の方たちもいる。

梅原さんは地方の1次産業にこだわる理由を問われ、
日本の風景を残したいと思うようになったからだという。

大学卒業後、就職したのは地元のTV制作会社。大道具をつくる会社。
しかし、なかなか自分がいいと思うデザインができない。
次第に上司や周りと衝突することが多くなり、フリーで活動することに。

がむしゃらに仕事をこなしていく中で、自分は何か残せているのだろうか?と感じるようになったそうだ。

「それはそれでやったんだけど、それは明日なくなっちゃうかもしれない。
そっちのほうがお金は稼げるかもしれないけど、続かないよね。」

彼の哲学だそうだが、僕もまた伴走者として生きていくほうが自分もまた熱を持つことができるような気がしていた。
そんななか、この一言はちょっと自分に刺さりました。

いいなと思ったこと。
広いバルコニーにソファ置いて、ぼんやり季節を楽しみたい。
霧島の天空の森のような感じ、あんなところで暮らしたいかもなあ。
スタッフが梅原さん含めて3人だけってところ。二人とも綺麗な女性なこと。
時間の流れがゆるやかそう、でもピシッとしてそう。


高知県産業振興センターの特集記事より

nokogiriがファイルの最後までパースしてくれなかった件

RubyでXpath/CSS3 selectorを使ってパースするときの選択肢のひとつ。
スクレイピングする必要がありインストールしたのですが、使えるようになるまで地味にハマったのでメモ。

http://nokogiri.org/

普通にインストールして、試してみようかと思った矢先。

[ruby]
require ‘open-uri’ require ‘nokogiri’

doc = Nokogiri::HTML(open(“http://serima.co”))
p doc
ac = doc.xpath(“//a”)
puts ac.size
[/ruby]
* こんな感じでnokogiri.rbを作成

[shell]
% ruby nokogiri.rb
#]>
0
[/shell]

なんかおかしい…1行目しか取得できてないよ…
なにがおかしいのか…と色々調べていると、こんなページを発見。

CentOS 5.5にNokogiriをインストールしたらうまくパースできなかったという話

症状が似ている。どうやらlibxml2のバージョンが古いとダメらしい。
ということで、さらに調べてみると

公式のinstallationのページにたどり着く。
http://nokogiri.org/tutorials/installing_nokogiri.html

CentOS 5 (and RHEL5) come installed with libxml 2.6.26 which, while not as offensively out-of-date as Mac Leopard, is still pretty damn old (released June 2006) and has known issues.

If you’re affected by any known bugs or are seeing odd behavior, you may want to consider uninstalling the RPMs for libxml2 and libxslt, and building them from source.

えっ

[shell]
% nokogiri -v
# Nokogiri (1.5.2)

warnings: []

nokogiri: 1.5.2
ruby:
version: 1.9.2
platform: x86_64-linux
description: ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]
engine: ruby
libxml:
binding: extension
compiled: 2.6.26
loaded: 2.6.26
[/shell]

見事にlibxmlのバージョンが2.6.26ですね。
最初に気づくべきでしたが、まぁ今気付けただけでもよしとしましょう。

先ほどのブログ記事の方は、アップデートによる影響が怖いということでnokogiriのみ新しいバージョンのlibxmlを参照するようにするということだったので、それにならいます。

[shell]
# cd /usr/local/src
# wget http://xmlsoft.org/source/libxml2/libxml2-2.7.8.tar.gz
# tar xvzf libxml2-2.7.8.tar.gz
# cd libxml2-2.7.8
# ./configure –prefix=/usr/local/libxml2
# make
# make install
[/shell]

ここまでやったところで、もう一度確認。
[shell]
% nokogiri -v
WARNING: Nokogiri was built against LibXML version 2.6.26, but has dynamically loaded 2.7.8
# Nokogiri (1.5.2)

warnings:
– Nokogiri was built against LibXML version 2.6.26, but has dynamically loaded 2.7.8
nokogiri: 1.5.2
ruby:
version: 1.9.2
platform: x86_64-linux
description: ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]
engine: ruby
libxml:
binding: extension
compiled: 2.6.26
loaded: 2.7.8
[/shell]

あれ、compiledとloadedのversionが違う。
例のブログ記事によると、libxsltもインストールしないとダメなケースもあるらしい。

ので、入れる。

[shell]
# cd /usr/local/src
# wget http://xmlsoft.org/source/libxslt-1.1.26.tar.gz
# tar xvzf libxslt-1.1.26.tar.gz
# cd libxslt-1.1.26
# ./configure –prefix=/usr/local/libxslt –with-libxml-prefix=/usr/local/libxml2
# make
# make install
[/shell]

[shell]
% nokogiri -v
# Nokogiri (1.5.2)

warnings: []

nokogiri: 1.5.2
ruby:
version: 1.9.2
platform: x86_64-linux
description: ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]
engine: ruby
libxml:
binding: extension
compiled: 2.7.8
loaded: 2.7.8
[/shell]

おお、無事にできた。
これで、最初に書いたサンプルスクリプトを走らせてみる。

[shell]
% ruby nokogiri.rb
#, #, #]>, #]>]>, #, #, #] children=[#] children=[#, #]>, #, #]>, #, #, #]>, #, #, #] children=[#, #] children=[#, #, #, #, #, #]>, #]>, #, #] children=[#, #]>]>, #, #] children=[#, #]>]>, #, #] children=[#, #]>]>, #, #] children=[#, #]>]>]>, #]>]>, #, #]>]>]>]>
4
[/shell]

これで、無事に全文取得できた!

#結局、libxml 2.6.26のバグが原因のようですが、installationのページの注意文言、太字とか赤字などしてもう少し目立たせてほしいなと思った次第です。
https://github.com/tenderlove/nokogiri/issues/243

THEY LIVE AND WE SLEEP

マスメディア、消費社会、プロパガンダなどのキーワードにピンとくる人にはおすすめなSF。
途中のムダに長すぎるプロレスシーンも有名らしい。

1980年代にかつてないほどに増大した通俗的な商業主義に対する、カーペンター監督の嫌悪感が表現されている。カーペンター監督はかつて次のようにコメントしたことがある。「ふたたびテレビを見てすぐに気づいたことは、テレビ画面に映し出される映像は全て、我々に何かを売りつける意図のもとにデザインされているということです。映像は全て、我々に何かを買いたいという欲望を起こさせることを意図して作られているのです。彼ら(映像の作り手)がやりたいことと言えば、我々のお金を奪うことだけです」

Wikipedia ゼイリブより

lsコマンドの出力結果にfiletypeごとに色を設定する

lsしたときに、デフォルトだと全部同じ色で、どれがファイルでどれがディレクトリなのかさっぱり分からずストレスが溜まりますね。
で、これじゃあさすがにということで、今まではls=’ls –color=auto’とaliasに設定していました。

しかし、黒背景に青字とか超絶見にくい。
輝度上げまくってなんとか耐えてた自分にドロップキックして、色設定を変更してみた。

lsコマンドのカラー出力で256色拡張の色を使用する
http://d.hatena.ne.jp/kakurasan/20080707/p1

上記の通りに設定してみましたが、かなり細かくFiletypeごとに色分けがされていて便利です。なにより背景が黒ベースな方には見やすくなるかと。
必要になったら自分でカスタマイズできますね。

これにあたって、iterm2では、たぶん”xterm-256color”って設定する必要があるはず。
iTermのPreference->Profiles->(自分の設定したいaccount)->Terminal->Terminal Emulation->Report Terminal Type

* before
before
* after
after