Deveroper メモ

記事内容に絶対の保証はなく..どちらかというと自分用のノウハウ蓄積ページ。 それでも良ければ見ていってください。

instance_variable.... #guruby

ブログ書くのが遅れました、忘れちゃいけない系なので残します。

  • ruby で外側からインスタンス変数にアクセスするには、以下のものがあると思います。
attr_reader
attr_writer
attr_accessor
  • 前回の guruby 前までは、この3つしかないと思っていました。
  • しかし、下記のやり方でも外側からインスタンス変数にアクセスする事が出来ます(というか、教わりました)
class Hoge
  def initialize()
    @fuga = nil
  end
end

hoge = Hoge.new()
p hoge.instance_variable_get(:@fuga) #=> nil
hoge.instance_variable_set(:@fuga, "メタプログラミング Ruby")
p hoge.instance_variable_get(:@fuga) #=> メタプログラミング Ruby
hoge.instance_eval("@fuga = 'fuga'")
p hoge.instance_variable_get(:@fuga) #=> fuga
  • なんと、読み込みだけじゃなく、書き込みが出来る!?
  • 特に instance_eval は色々出来てしまいそうで怖い。
  • 自分は使う事はないかも?しれないけど、この辺覚えておいて損はなさそうです。

....

  • すみません。追記です。
  • @korogaru さんが思い出させてくれました。(感謝!)
hoge.instance_variable_set(:@hoge, "hogehoge")

突然国際電話...ios developer program

今日、突然国際電話がかかってきました。

番号は 1-916-.....

知らない番号だし、無視していたら
ご丁寧に留守電メッセージを残してくれていました。

内容は...

Apple社です。ios developer program の有効期限がそろそろ切れます。
切れると Apple Store にアップしてるアプリは消えてしまいますよ。
宜しければ、更新してはいかがでしょうか...

というものでした。

ええ、そりゃあ、もうビックリしました。
まさかの国際電話で Apple からの連絡で...
さらに英語ではなく日本語の案内でしたw

何故国際電話!! 日本支社とかないのかな?
国際電話だと料金パネェなのでは?とか思ってしまう。

まあ、とにかく期限切れを教えてくれたのは助かりました。

PS: どうやら同じ事を味わった人が他にも↓...凄いな Apple
http://d.hatena.ne.jp/pandax381/20110603/1307083034

メモ:ios6 の ajax の挙動

結論から書くと ios6 になってから自作サイトの ajax の挙動がおかしいです。
※自分の iphone は iphone4 の ios6 です。
※ブラウザは safari です。chrome はOKでした。

POST のリクエストを ajax で投げているのだが...一度ページ取得すると、
まるでリクエスト結果をキャッシュしているかのような動きを見せます。

jquery のコードも cache false にしているのに...↓

$.ajax({type: "POST",
        url: "xxxxxx",
        cache: false,
        success: function(response) {....

色々 ググっていたらこんな情報が!
http://dev.classmethod.jp/smartphone/ios6-safari-post-jquery...

マジすか。
POST のリクエストもキャッシュするらしい。

とりあえず、プロトコルヘッダに no-cache を指定してみよう..
自作サイトは sinatra で作ったので とりあえず 以下のコードを入れて対応した

after do
  cache_control :no_cache
end

メモ: 5月の #guruby

ちょっと書くのが遅くなったけど...
次回 guruby 前に残しておきます。

例外処理が起きた時に ruby だと begin rescue を使って
処理することが出来ます。

例:

begin 
   #エラーが起きる処理
rescue
   #エラーが起きた時の処理
end

自分は↑の書き方を主に使うのですが...
#guruby で「初めてのRuby」を読んでいて次の書き方でも出来るという内容が出ました。

begin 
   #エラーが起きる処理
rescue
   #エラーが起きた時の処理
else
   #エラーが起きなかった時の処理
ensure
   #エラーでもエラーが起きなくとも必ず通る
end

自分と何人から出たのは、else を書くと「必ず通るルート -> 例外ルート」
と「それ以外のルート と ん???」に見える。

覚えていれば、解るけど、知らないと はまるかも?
なのでメモを残しておきます。