2013年12月6日金曜日

JavaScript get json depth

中の人です。

Jsonの階層数を取りたかった。いい物がなかったので
書いてみた。
それっぽく動いている気がする・・・。
凄く深い場合はリニアじゃない方法で数字を与えればいいけど
そこまでの階層のものは必要ないのでとりあえずこれで。
function getJsonDepth(j){
    var depth=0;
    var cnt=0;
    var ret=0;
    var target = JSON.stringify(j).replace(/[^\{\}]/g,'').replace(/^\{/,'').replace(/\}$/,'').replace(/\}\{/,'');
    var r
    if(target=='') return 1;
    for(cnt=1;;cnt++){
        r = new RegExp("[^\}]{" + cnt + "}","g");
        ret = target.match(r)
        if(!ret)break;
    }
    return cnt;
}

2013年12月2日月曜日

RubyMine6.0のデバッガがゾンビ化しなくなった?[勘違い]

中の人です。

デバッガを急に止めたりするとゾンビアイコンが表示されて
従来は何をしても元に戻れずに溜息付きながらリブートしていました。

RubyMine6.0になってからはゾンビアイコンをクリックすると
復旧することが増えました。気のせい?


→気のせい。ゾンビアイコンが表示されている時間が延びた為と思われる。

2013年11月30日土曜日

人気のあるソフトウェアについて書くと良く読まれます。

中の人です。

VMWareの原因不明だったエラーについて書いた記事など
人気のあるソフトのいやらしい部分について書いた記事が人気です。

ニッチな情報が重要ですね。

こんな雑感は読まれない。

JavaScript(jQuery) JSON shift unshift

中の人です。

JavaScriptのJSONでshiftやunshiftがしたい・・・


json unshift
data = {"foo": 123, "bar":"345"}
test = $.extend({"test":true},data)
test = $.extend({"test":true},test) //not work
json shift
#json keyを取得...
function jsonKeys(j){
    var keys = []
    if(isObj(j)){
        for(k in j){
            keys.push(k)
        }
    }else{
        keys.push(j)
    }
    return keys
}
  keys=jsonKeys(test)
delete test[keys[0]]


目的は達成できるのでよしとしよう。
GoogleBlogはコードのサンプルが書きづらくて仕方がない。。。



2013年11月12日火曜日

Ruby及びRailsの構文チェックについて(rubyMine 5)

中の人です。

Ruby、Railsで構文確認する方法を色々と模索したところ
rubyMineのinspectionsに頼るのが一番簡単との結論に・・・。

Rubyがコンパイルできないかとか探しましたが、動かないコードのまま
実行ファイルになっても意味無いですよ!
(JRubyによるコンパイルなどなど・・・)

初期状態のinspectionsの設定が非常に手厳しいので
少々設定を外してから確認すれば便利でした。
(ruby1.8.7では動くけど1.9では動かないコードなども見つけてくれる。)

プロジェクトツリーを右クリックしてInspecting CodeでScopeを指定して実行。
とりあえず、Holeで実行して食事してこよう!


2013年5月24日金曜日

Amazon RDS MySQL LOAD DATA LOCAL INFILEでLost connection to MySQL server during queryとなる(解決)

中の人です。

Amazon RDS MySQLに2GB程度のファイルをLOAD DATA LOCAL INFILEで
取り込もうとしました。

"Lost connection to MySQL server during query"と表示されて止まってしまいました。

ローカルでは取り込めていたので気にしていなかったわけです。

RDS(small)なので貧弱なのか。
その後、小さなファイルでも取り込めなくなったので再起動。
小さいファイルが取り込めるように回復。

大きいファイルは・・・

split -l 50000 hoge.sql @hoge_
とかして分割。それぞれを読み込みました。

スクリプト書けばそれなりに運用できるかも。

2013年5月23日木曜日

Amazon ec2 Response contains invalid JSON

中の人です。

インスタンスをランチ(lanch)する際にAMIを選択する画面で
「Response contains invalid JSON」と出てしまう。

これはClassicスタイルの画面で出る為、クイックランチから登録しました。

「Edit details」からセキュリティグループ(Security Settings)を設定しないと
新規にセキュリティグループを作成してしまいます。


2013年5月1日水曜日

Rails3.2 console ActiveRecordの実行ログに日時(datetime)を併せて表示する

中の人です。

rails cからHoge.find(1)とかすると以下のようなログがでるけれど
これの先頭に日時(タイムスタンプ)を出したい。

(1 ms) SELECT * FROM hoges


ActiveRecord::Base.logger.datetime_formatを修正しても
反映されないのでFormatterを設定しなおす。
ActiveRecord::Base.logger.formatter = Logger::Formatter.new
Hoge.find(1)
I, [2013-05-01 16:09:47#2308]  INFO -- : (1 ms) SELECT * FROM hoges

これで、処理時刻がQueryログベースで確認できる・・・。

2013年3月13日水曜日

WinMergeのファイルフィルタでsubversionのフォルダ(.svn)を比較しない

中の人です。

WinMergeのファイルフィルタでsubversionのフォルダ(.svn)を比較しないようにしました。



ファイルフィルタ
exclude_svn.flt
## This is a directory/file filter template for WinMerge
name: exclude .svn Directories
desc:

## Select if filter is inclusive or exclusive
## Inclusive (loose) filter lets through all items not matching rules
## Exclusive filter lets through only items that match to rule
## include or exclude
def: include

## exclude .svn directories
d: \.svn$ ## EXCLUDE SVN

使いやすくなりました・・・。

2013年1月22日火曜日

ruby(rails)で多次元Hashから指定したキーに合致する値を取得する


中の人です。

探したけどなかったから作りました。

#=scan
#多次元ハッシュのキーを配列で指定、先頭から順にハッシュを取得する
#配列が終わった時点で値を返す。
#該当するキーが無ければnil
#==params
#overwrap::false キーの途中でHash以外が返った場合はnilを返す。
#        ::true  キーの途中でHash以外が返った場合は値を返す。
module HashScan
def self.scan(hash_obj,keys=[],overwrap=false)
 if keys==[]
   hash_obj
 elsif !(hash_obj.instance_of? Hash)
   if overwrap
     hash_obj
   else
     nil
   end
 elsif hash_obj.key?(keys.first)
   key=keys.shift
   scan(hash_obj[key],keys,overwrap)
 else
   nil
 end
end
end
module HashScanInclude
  def scan(keys=[],overwrap=false)
    HashScan.scan(self,keys,overwrap)
  end
end
class Hash
  include HashScanInclude
end

h={"1"=>{:key=>{:key2=>{"2"=>'value'}}}}
h.scan(["1",:key,:key2])
=> {"2"=>"value"}
h.scan(["1",:key,:key2,"2","NONE"],true)
=> "value"
h.scan(["1",:key,:key2,"2","NONE"],false)
=> nil

2013年1月16日水曜日

jquery-cookieを使ったcookieの上書き(削除できない?正しい削除方法がある)

中の人です。

jquery-cookieで
$.cookie(cookie_name,null)なんてしてみても削除できないよと困ってソースみたら
$.removeCookieがあった。
呼んでみたところ素直に消えた。

ちゃんとマニュアル読もうぜ!

2013/3/13
これでも消えないことがありました。下記のサイトの内容で設定がクリアされるので
その後、$.removeCookieすることで完全に削除されました。

jquery.cookie|null指定でクッキー削除されないケースあり

以上です。

2013年1月12日土曜日

VMWare WorkstationのLinux(cent os6)環境でスタンバイから復帰やログアウト・ログインするとクリップボード共有が利かない?(VMWareTools)

最近SEO関連の仕事なんてとんとやっていませんが

中の人です。

クリップボード共有が利かなくなると面倒なのでメモ。
rootで(sudo su)
#service vmware-tools restart
#vmware-user &

なおることが多いようだ。
再起動はcentosは遅くてやってられない。