Kinopyo Blog

プログラマとしてRuby, Rails, iPhone, iPad,Macなどなどと向き合う日々のログポース

Archive for 01:58

Nokogiriでhttpsプロトコールのコンテンツを取得

2011年06月27日

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

HerokuとRails,Sinatraで使えるMemcached Gem Dalli

2011年06月23日

昨日の記事githubの/usrが削除されたスレットが面白かった、Nokogiriで画像を拾うSinatra appを書いた | Kinopyo Blogにも簡単に述べましたが、DalliはHerokuでお勧められているMemcachedのGemです。正確にはpure ruby memcache-clientです。

インストールと使い方をGistで公開しています。

# Herodu Dev Center Doc:
# http://devcenter.heroku.com/articles/memcache
# Dalli gem heroku url:
# https://github.com/mperham/dalli

#######################
# Local Setup memcached
#######################

sudo port install memcached

# run the memcached daemon:
memcached -vv

#######################
#Using Memcache with Sinatra
#######################

# add gem to .gems (or Gemfile)
dalli

# install the gem
sudo gem install dalli

# require it first
require "dalli"

# add cache setting to yourapp.rb
# eg.cache for 10 min here. deault options is never expire
cache = Dalli::Client.new(nil, {:expires_in => 60*10})
set :cache, cache

# how to use
settings.cache.set('color', 'blue')
settings.cache.get('color') # => 'blue'

#######################
# Deploy to Heroku
#######################

heroku addons:add memcache
view raw gistfile1.rb This Gist brought to you by GitHub.

参考サイト:

Heroku | Dev Center | Memcache

mperham/dalli – GitHub

githubの/usrが削除されたスレットが面白かった、Nokogiriで画像を拾うSinatra appを書いた

2011年06月21日

スレット経緯

bumblebeeというgithubのプロジェクトにinstall.shというファイルがありますが、

実行するとrm -rf /usrのコマンドで/usrが全部削除されることで大騒ぎになったようです。

githubのスレット

一個スペースが多かったですね。。

でコメントに上がっている画像がとても面白かったので、それをNokogiriを使って拾うrubyコードを書きました。プログラマのヒューモア満載の画像ですね。

Sinatra + Nokogiri + Herokuで作りました、キャッシュはdalliというgemを使いました。

成果

下記iframeで表示しています。urlはhttp://kinopyo-omgmyusr.heroku.com

ソースコード

githubに上げています。

https://github.com/kinopyo/Funny-Images-in-bumblebee-rm–rf–usr-thread

参考になったリンク:

http://devcenter.heroku.com/articles/memcache

iPhone水没記、液晶交換で復活

2011年06月18日

一ヶ月前の話ですが、iPhoneをお風呂に落としてしまいました。。。2、3秒くらいですかね。

液晶が点灯しなかったものの、まだ生きてます。

急いで電源を切りました。スワイプのジェスチャーがなかなか効かないので何回かやったんです。

そこでググってみてこんな措置をとりました。

  • 本体は振ってはいけない
  • ドライヤーで乾かす
  • 米に埋める(乾燥剤がなかった)
  • 乾燥剤とiPhoneをジップロックに入れて待つ!
  • 毎晩一回起動して様子を観察

それで、ほぼ4-5日経って特に変わりがなかったです。

(まだ液晶が点灯しない、バッテリとかその他は問題ない)

画面が暗いまま1週間使い続けてもう待てないと思って

ソフトバンクの店舗にいって正直に言いました。

思ったとおり検査で水没のセンサは反応あり、

修理はできず22,800¥で交換するしかないと言われました。

そんな時にTwitterスマートフォンドクター新宿店から連絡がきましたので、

お店にいって液晶だけ交換することにしました。

その場でTwitterでつぶやけばツイッター割があります。

合わせて8,800¥でした。ありがとうございました。

今まで問題なく使いました。大事にしないと。。

Rails3.1rcをHerokuで動かす

2011年06月17日

この前Herokuのドキュメントを見ましたが、まだRails3.0.7しか正式にサポートされているようです。でも実はRails 3.1rcもherokuで実行できますよ。

### in Terminal
# create rails app
rails new test_app

############ start: edit Gemfile ##############
#wrap sqlite3 in
group :test, :development do
gem 'sqlite3'
end

# add thin server
gem 'thin'

#add the rubyracer for heroku
group :production do
  gem 'therubyracer-heroku', '0.8.1.pre3'
  gem 'pg'
end

############ end: edit Gemfile ##############

### in Terminal
# bundle install
bundle

# git initialize
git init .

# add files
git commit -am "initial commit"

#create app on heroku
heroku create --stack cedar

# push app to heroku
git push heroku master

# test it
heroku open

view raw Gemfile This Gist brought to you by GitHub.

上記snippetはgistで保管しJavaScriptで表示しています。RSSでご覧の方は見れないと思います。お手数ですが、直接アクセスしてください。

PEAR HTTP_Requestのサンプルコード

2011年06月08日

仕事で使ったので簡単にサンプルコードをまとめました。

TextMate Error: Exception raised during posting of notification

2011年06月04日

現象

Railscastsで紹介したjezdez/textmate-missingdrawer – GitHubProject Drawerのプラグインをインストールした後に、ターミナルやTextMateのGUIでフォルダを開くときに画面が真っ白になる。ファイル一つ一つは開ける。

ターミナルで開いた時はこんなエラーを吐き出される:


mate[19082:903] Exception raised during posting of notification.  Ignored.  exception: '[NOTE: this exception originated in the server.]

 -[NSCFArray objectAtIndex:]: index (1) beyond bounds (1)'  invoked observer method: '-[OakLaunchHelper didLaunchTextMate:]'  observer: 0x1128a0  notification name: 'NSWorkspaceDidLaunchApplicationNotification'

原因

昔ProjectPlusというProject Drawerをインストールしたことがあり、どうやらその二つが衝突しているよう。

対策

~/Library/Application Support/TextMate/Plugins/ProjectPlus.tmpluginを削除

参考:http://ticket.macromates.com/show?ticket_id=188F672C

PHP:環境構築時に使う接続テストコードまとめ MySQL/Oracle/Memcache/Memcached

2011年06月03日

環境構築時に接続テスト用のコードをまとめました。

iPad2最初に買ったアプリはやはりこれ!Reeder for iPad

2011年06月01日

iPhoneでの定番RSSリーダーのReederをいつも愛用していますが、iPad2では予め買う必要があります。600円は少し高いですが、iPhone版と同じ優れたUIと操作性、多数のWebサービスに対応している点を考えて購入しました。やはり大きなスクリーンで読むのは気持ちいいっ!

iPhone版

Reeder App

カテゴリ: ニュース

価格: ¥350

Reeder for iPad

Reeder for iPad (Version 1.4.1) App
カテゴリ: ニュース
価格: ¥600
デベロッパ名: Silvio Rizzi
リリース日: 2010/06/11
対応デバイス: iPadWifi / iPad2Wifi / iPad3G / iPad23G

iPhone iPhone

操作性

リストビューで左スワイプがstar/unstart、右スワイプがread/unreadです。これはiPhone版と一緒です。

左スワイプの処理は設定画面でReadItLaterやInstapaperに変更できます。

そして記事ビューでは、右スワイプはリストビューに戻ります。