2011年10月21日 #chrome #extension

すごく簡単なGoogle Chrome Extensionを作りました。

実装自体は結構前にできたんですが、公開するまでもないかと思って自分で使いました。でもせっかく作ったしひょっとしたら使いたいユーザもあるんじゃない?の気持ちで公開しました。詳細はまた時間があったら整理してソースコードと一緒に公開します。

My First Chrome Extension Youku Opener

My First Google Chrome Extension: Youku Opener

公開3日で14weekly usersの数字でした。意外と使おうとするユーザがいますね、unexpected、予想外でした。

2011年10月21日 #ruby #sinatra

目的

Sinatraで静的なhtmlファイルをrenderする方法です。

現状

Sinatraでは色々なビューテンプレートをレンダリングできます。Haml、Erb、Sass、Markdown、CoffeeScript…が対応されていますが、HTMLは対応してないようです。html :indexで書いてもダメですね。

Sinatraのビューテンプレート

解決方法

File.readでファイルとして読み込むことですね。Sinatraはデフォルトの設定だとpublicフォルダ内のものをassetsとするそうです。

でちょっとリファクタリングしてhtml :indexのシンタックスでいけるようにしました。

参考

http://stackoverflow.com/questions/2437390/serving-static-files-with-sinatra

2011年10月18日 #iphone #ipad #ipad #google calendar

この記事で紹介するのはGoogle Appsのアカウント(多くの場合は会社で使うGoogleアカウント:[email protected]のような)のカレンダーをiPhoneに同期する方法です。

手順

(英語の環境設定です)

  • Settingsアプリの"Mail, Contacts, Calendars"を開く
  • Add Account...でOther、Add CalDAV Account
  • アカウント情報を入力 -Server: google.com -Username: [email protected] (ここでフルのメアドを入力してください) -Password: 上記アカウントのパスワード -Description: 適当に

もし接続にSSLが必要であればダイアログが出るので、そのまま「OK」を押せばOKです。
成功すれば"Mail, Contacts, Calendars"にDescriptionで入力したアイテムが表示され、灰色で「Calendars」と表記されるはずです。

普通のGoogleアカウント

普通のGoogleアカウントならカレンダーをiPhone、iPadに同期するのは比較的に簡単だと思います。iOSの"Mail, Contacts, Calendar"設定でGoogleのアカウントを追加し、CalendarsをONに設定すればできるんですね。

参考

http://www.google.com/support/mobile/bin/answer.py?answer=151674

2011年10月18日 #ruby

よくつかうメソッドの nil? empty? blank? のまとめ。

nil? すべてのオブジェクトにある。nilのときにTrueを返す。
empty? 文字の長さが0のとき、配列が空のときにTrueを返す。

blank? railsの拡張。nil, "", " ", **, {} のいずれかでTrueを返す。

素晴らしいまとめですね!ootokageさんに感謝。

PHP使うときはempty(0)でtrueになりますが、上記のメソッドどれも0をチェックしないですね。。.zero?というのメソッドは一応あるようですが。

迷ったらここにいっぱいサンプルがあります。

0.nil? #=> false
0.zero? #= true
0.empty? #=> NoMethodError
0.blank? #=> false
0 == false #=> false

"".nil? #=> false
"".zero? #=> NoMethodError
"".empty? #=> true
"".blank? #=> true
"" == false #=> false

{}.nil? #=> false
{}.zero? #=> NoMethodError
{}.empty? #=> true
{}.blank? #=> true
{} == false #=> false

**.nil? #=> false
**.zero? #=> NoMethodError
**.empty? #=> true
**.blank? #=> true
** == false #=> false

nil.nil? #=> true
nil.zero? #=> NoMethodError
nil.empty? #=> NoMethodError
nil.blank? #=> true
nil == false #=> false

false.nil? #=> false
false.zero? #=> NoMethodError
false.empty? #=> NoMethodError
false.blank? #=> true
false == false #=> true

日本語

shared_context はその名前の通りコンテキスト (テストを行なうときの状況) を共有するための機能です。
shared_context を使うことで複数箇所にちらばる同一処理をまとめることができます。shared_context は shared_context が書かれたファイルを require することでも使えるようになるので別のスペックファイルでも使うことができます。

2011年10月12日 #mac #shortcut #tab

こんなシナリオを想像してみてください。Editorを終了しようとするときに「Don’t Save, Cancel, Save…」のダイアログが出るはずです、その時フォーカスはSaveにあり、Tabでは移動できないからしょうがなくマウスでクリックしてしまう。。これがTabで遷移して操作できたらいいなぁ〜を解決する方法です。

System Preferences -> Keyboard -> Full Keyboard AccessのAll controlsを有効に設定します!

Keyboard All controls

そこでの説明文の通り「In windows and dialogs, press Tab to move keyboard focus between All controls」、Tabであらゆるウィンドウやダイアログのキーボードフォーカスを移動することができます。

Control using tab focus

上記のようなダイアログが出るとしたら、Tab(Shift + Tab)で薄青色のフォーカスを移動して、スペースキーで該当の操作を実行できます。通常の青色はフォーカスの位置と関係なくreturnキーで操作を実行できます。

これでマウスなしでらくらく。

2011年10月12日 #git #git #conflict #merge

git pullとかgit mergeでコンフリクトとなったファイルを編集して、git add、git commitすればいいです。コミットメッセージも必要です。
git mergetoolでビジュアルのDiffソフトで差分を見れたり修正したりできます。

コミットログはこんな感じです。SVNとは違ってコミットログに残るのが何か慣れないです。

$ git log --oneline
63bc3d1 fixed merge conflict
bbfdd9e edit in master
3dcfb2f edit in work
9eedc58 made a
2011年10月12日 #ruby #rails #log

Overview

rails serverで起動する時に盛りだくさんの情報がログに出力されるので、別ファイルで自分がデバッグしたい情報だけをそこに出力する方法です。この方法でtail -f log/custom.logで監視できます

ソースコード

参考

http://robaldred.co.uk/2009/01/custom-log-files-for-your-ruby-on-rails-applications/
http://ianma.wordpress.com/2009/04/08/custom-logging-in-ruby-on-rails/

2011年9月30日 #css #iphone #checkbox #safari

Webkit-baseのブラウザ(Safari, Google Chrome)に適用します。

普通のcheckboxはiphoneのようなスマートフォンで見るときとても小さいです。checkboxはcssでheightやwidthを指定しても効かないため、ちょっとしたトリックが必要です。

実機ではこんなふうになります。2.0, 1.5, 1.0の3つのサンプルです。

2011年9月30日 #safari #safari #useragent

SafariのPreferences-> Advancedタブで"Show Develop menu in menu bar"をチェックします。

Safari-show-develop-menu-in-menu-bar

これでSafariのメニューバーのDevelopメニューでUser Agentを切り替えることができます。

Safari-change-useragent