Appleの歴史を知る。

もうすぐMacを使い始めて一年。
何となくAppleの歴史を詳しく知りたくなり購入。

アップル・コンフィデンシャル2.5J(上)

アップル・コンフィデンシャル2.5J(上)

アップル・コンフィデンシャル2.5J(下)

アップル・コンフィデンシャル2.5J(下)

合わせて、近頃、Appleに入社された増井俊之氏の著書を購入。

デザインパターン。

何となくデザインパターンを復習。すっかり忘れてしまっていて悲しい。
とりあえず、こちらで公開されているAdapterパターン、Singletonパターンを自分なりに書き直してみた。

Adapterパターン

継承を使った場合
class Banner
  def initialize(str)
    @str = str
  end
  def show_with_paren
    puts("(#{@str})")
  end
  def show_with_aster
    puts("*#{@str}*")
  end
end

class PrintBanner < Banner
  alias print1 show_with_paren
  alias print2 show_with_aster
end

pb = PrintBanner.new('Hello!')
pb.print1
pb.print2
委譲を使った場合
require 'forwardable'

class Banner
  def initialize(str)
    @str = str
  end
  def show_with_paren
    puts("(#{@str})")
  end
  def show_with_aster
    puts("*#{@str}*")
  end
end

class PrintBanner
  extend Forwardable
  def initialize(str)
    @banner = Banner.new(str)
  end
  def_delegator :@banner, :show_with_paren, :print1
  def_delegator :@banner, :show_with_aster, :print2
end

pb = PrintBanner.new('Hello!')
pb.print1
pb.print2

結果。

(Hello!)
 *Hello!*

Singletonパターン

require 'singleton'

class SingletonSample
  include Singleton
end

# コンストラクタはprivateなのでインスタンスを
# 取得するにはinstanceメソッドを使用する
sin1 = SingletonSample.instance
sin2 = SingletonSample.instance

p sin1 == sin2
p sin1.object_id
p sin2.object_id

begin
  sin3 = SingletonSample.new
rescue => err
  puts(err)
end

結果。

true
21612680
21612680
private method `new' called for SingletonSample:Class

YouTubeのAPIを使ってみる。

RubyGemsで「おもしろいモジュールないかなぁ」と漁っていたらyoutubeなるモジュールを発見、さくっとインストール。

gem install youtube

使ってみる。

require 'rubygems'
require 'youtube'
require 'pp'

# http://www.youtube.com/devから取得する
DEV_ID = 'dev_id'

youtube = YouTube::Client.new(DEV_ID)

# tagで検索
videos = youtube.videos_by_tag('kitty')

# 閲覧数の多い順にソート
videos.sort { |a, b| b.view_count <=> a.view_count }.each do |video|
  pp video
end

# 人気の動画
youtube.featured_videos.each do |video|
  pp video
end

他にもいろんなモジュールがあった。

Flickrの画像をはてなに貼り付けるためのHTMLを取得するスクリプト。

ここにFlickrにアップロードした画像を貼り付ける際、今まではFlickItというウィジェットと使っていたのですが、近頃、正常に動作しないし、一枚ずつ手作業で貼り付けるのは面倒だということで、Rubyスクリプトを作成。
アップロードした日付で処理したかったけど、方法がわからなかったので、直近の10枚を取得し、貼り付け用のHTML作成しています。

require 'rubygems'
require 'flickr'

flickr = Flickr.new

#usersメソッドの第1引数にはFlickrに登録したメールアドレスを設定
user = flickr.users('email')
user.photos[0, 10].each do |photo|
  puts <<EOS
<a href="#{photo.url}" title="#{photo.title}"><img src="#{photo.source}", width="400" height="300" alt="#{photo.title}"/></a>
EOS
end

使うには前準備が必要で、まずは、

gem install flickr

として、flickrモジュールをインストール。
続いてこちらからAPI Keyを取得。
取得したAPI Keyをflickr.rbにあるFlickrクラスのコンストラクタの第1引数に設定します。

.screenrcメモ

現在のscreenの設定をメモ。

# 修飾キーをctrl + t
escape ^Tt

# 最終行のウィンドウ一覧を表示
hardstatus alwayslastline "%w"

# 最終行に時刻を表示
hardstatus alwayslastline "[%02c] %`%-w%{=b bw}%n %t%{-}%+w"

# スタートメッセージを表示させない
startup_message off

# ビープを鳴らさない
vbell off

ディレクトリ内のファイルを再帰的に処理。

第1版とあまり内容は変わっていないらしい、衝動的に買ってしまったRubyレシピブックの第2版が届いた。
パラパラと眺めていて目に止まったのが以下の処理。

require 'find'

Find.find(File.expand_path('~/')) do |path|
  next unless File.directory?(path)
  puts path
end

指定されたディレクトリ内の全ファイルを再帰的に処理している。
この手の処理は今まで、何度も自分でチマチマと書いていたので何か悔しい。
これから、何か書くときはレシピブックを眺めてからにしよう。


Rubyレシピブック 第2版 268の技

Rubyレシピブック 第2版 268の技

MacBookへの貢ぎ物第二弾。

さすがにキーボードカバーだけじゃご機嫌は直らないだろうということで、併せてMacBook SeeThru case-CLEARなるプロテクタをこちらで購入。
MacBook SeeThru case-CLEAR 1
取り付けは簡単。説明書がありますが、無くても全く問題なく、MacBook本体にツメを引っかけるだけです。
MacBook SeeThru case-CLEAR 2
表面にラインが入っています。ちょっとメカメカしくなって格好いいです。
MacBook SeeThru case-CLEAR 3
底面には廃熱のための切り込みが入っています。
タダでさえ熱いMacBookですのでいろいろと心配ですが、非常に寒い昨今、とりあえず目をつぶることにしています。
MacBook SeeThru case-CLEAR 4
排気口部はバッチリ開いています。
MacBook SeeThru case-CLEAR 5
コネクタ類、DVDへのアクセスも問題ありません。
MacBook SeeThru case-CLEAR 6

単に本体保護のためだけのものと思っていたのですが、ちょっと格好良くなって棚からぼた餅気分。
これできっとMacBookも機嫌を直してくれることでしょう。