2011年7月21日 #mac

System PreferencesのTrackPadを早速開きました。

Point & Click Tab

最初のTap to clickはなかなか便利で、ずっとほしい機能でした。やっとMacbookのトラックパッドをクリックする音が消えました
そしてThree finger dragは三本指でアプリの位置を移動したり、テキストを選択したり、Finderでファイルを選択したりして、いろんな機能があります。動作としては「クリックをホールディングしながらドラックする」感じなので、よく使えばだいぶ効率が上がりそうです。
Trackpad_point_click

Scroll & Zoom

ここはScroll direction:naturalのチェックを外しました。デフォルトはチェックした状態なんですが、今まで(Lion以前)の動きと真逆なので全然慣れません。。

Trackpad_scroll_zoom

More Gestures

Lionの新しいジェスチャーを学びましょう。

  • 四本指で左右スワイプはフルスクリーンアプリの切り替え
  • 四本指で上スワイプはMission Control などなど

Trackpad_more_gestures

まとめ

Tap to clickとThree finger dragは新しい、大変便利な機能でオススメです。
Scroll direction:naturalは2本指スクロールが今までの動きと真逆なんで慣れない方はチェックを外してください。
その他はMission ControlとLaunchpadを覚えておけばいいかと〜

2011年7月21日 #tool #rss #firefox

Google Readerでフィードに100以上のアイテムがある場合途中まで読んで、読んだ分だけを既読にしたいですね。FIrefoxならそれが実現できます。

現時点で使ってるFirefoxは5.0.1です。

手順

  • https://addons.mozilla.org/ja/firefox/addon/greasemonkey/でGreasemonkeyをインストールし、Firefoxを再起動
  • http://userscripts.org/scripts/show/47830右上のInstallをクリック
  • Google Readerを開けば"Mark below as read"と"Mark above as read"ボタンが上のツールバーに現れる
  • 一つのアイテムを選択し(展開/折り畳みのどちらでもOK)、ボタンを押す
  • ショートカットはq 下のアイテムを既読にw 上のアイテムを既読に
2011年7月20日 #php #facebook

今はほとんどのサイトがLike(いいね!)ボタンを置いてますが、Likeボタンがどれだけクリックされたか、その数は気になりますね。

Facebook独自のFQL(文法はSQLに似ている)を使って複数URLのLikeされた数が取れます。Facebook公式ドキュメントはこちらにあります。

下記はPHPでのサンプルコードです。

coffee-scriptをMacportsを使ってインストールし、TextMateのcoffee-script bundleでコンパイルするメモです。
注意すべきなのはたとえターミナルでcoffeeが実行できても、TextMateはPATHをインクルードしないので(インクルードしているのは/usr/binらしい)、/usr/binにcoffeeのシンボリックを作る必要があります。
またcoffee-scriptをコンパイルするにはnodejsとnpm(Node Package Manager)が前提条件となるため、それらのインストールも必要です。

# don't forget to update your port tree first
sudo port selfupdate
# install coffee script using macport
sudo port install nodejs
node -v
# install npm - the Node Package Manager
git clone http://github.com/isaacs/npm.git
cd npm
sudo make install
npm -v
# now install coffee-script!
sudo npm install -g coffee-script
coffee -v
# because TextMate doesn't inherit your regular PATH
# you need to set a symbol link to /usr/bin
# so that you can run coffee in your textmate
which node
/opt/local/bin/node
which coffee
/opt/local/bin/coffee
cd /usr/bin
sudo ln -s /opt/local/bin/node
sudo ln -s /opt/local/bin/coffee
# install textmate coffee-script bundle
mkdir -p ~/Library/Application\ Support/TextMate/Bundles
cd ~/Library/Application\ Support/TextMate/Bundles
git clone git://github.com/jashkenas/coffee-script-tmbundle CoffeeScript.tmbundle
# now you can use command + B to compile and display javascript in your textmate!
view raw gistfile1.bash hosted with ❤ by GitHub

これでtextmateでcommand + Bでコンパイル後のJavascriptが表示できるようになります!

2011年7月 3日 #wordpress #github

gistでソースをjavascriptタグで表示したらRSSには出力できません。また毎回githubから呼びこむのはパフォーマンスも悪いですね。

これらの問題を解消してくれるプラグインがEmbed GitHub Gistです。
Embed GitHub Gistはgistから内容を取得して本文に出力するためRSSでも表示できるようになります。
記述ルールはとても簡単で**にgist id=12345のように書けば終わりです。詳細は上記のリンクで確認してください。
デフォルトのキャッシュは一日です。今のバージョン0.8ではまだ他の値に設定できませんが、簡単で十分だと思います。

2011年7月 2日 #jquery

一年くらい使ってなかったので、ほぼ忘れてしまいました。そのためのメモという感じです。

// idがwrapperの中の最初のdivを取る
$("#wrapper").find("div:first")

この:xxxがBasic Filter(基本フィルタ)と読んで、他にもいろいろあります。

:first 先頭の要素を選択する。
:last 末尾の要素を選択する。
:not(selector) 指定したセレクターを除外した要素を選択する。
:even 偶数番の要素を選択する。
:odd 奇数番の要素を選択する。
:eq(index) インデックス指定した要素を選択する。
:gt(index) 指定したインデックスより後の要素を選択する。
:lt(index) 指定したインデックスより前の要素を選択する。
:header h1,h2などのヘッダ要素を選択する。
:animated アニメーション中の要素を選択する。

英語API
日本語API

2011年6月27日 #ruby #nokogiri #https

Nokogiriでurlをparseするときは普通こんなコードになります。

doc = Nokogiri::HTML(open('http://example.com/'))

しかし接続先のプロトコールがhttpsの場合はNo such file or directoryのエラーとなります。
一旦net/httpsで取ってからそれをnokogiriでparseするような工夫が必要です。

require 'net/https'
require 'nokogiri'
url = "https://example.com"
url = URI.parse( url )
http = Net::HTTP.new( url.host, url.port )
http.use_ssl = true if url.port == 443
http.verify_mode = OpenSSL::SSL::VERIFY_NONE if url.port == 443
path = url.path
path += "?" + url.query unless url.query.nil?
res, data = http.get( path )
case res
when Net::HTTPSuccess, Net::HTTPRedirection
# parse link
doc = Nokogiri::HTML(data)
# do what you want ...
else
return "failed" + res.to_s
end