星之一角

What have you found for these years?

2015-07-28

Using PostgreSQL JSONB with Rails 4.1

So we just upgraded PostgreSQL to 9.4 and I was so excited to migrate to
JSONB in order to use various querying functions which don't have
equivalents for JSON.

After migration was written, all API tests were passed, then I realized
that this won't work for Rails 4.1 because it didn't recognize JSONB.
(We run API tests first, then Rails tests)

Doh. We can't upgrade Rails because we're locked at an older version of
devise (3.0.4 to be specific), which won't work with Rails 4.2.

Then I finally made my mind to remove devise, rewrite everything, and
upgrade Rails. This was a very hard decision because then I need to figure
out the black magic inside devise, which would be a very painful process.

Fortunately, @wildjcrt sent me a quote from @boriscy:

One note, Rails 4.1 supports json but not jsonb, you need to add

serialize :col, JSON

to make work jsonb in rails 4.1
p.s. I was too lazy to search around because I am so tired of fixing black magic
and I just want to rewrite everything to make things under control.

That's not a full solution but an hint that it's not that broken,
and it could probably be easily patched to work. After some time
playing around, I was able to make JSONB work for Rails 4.1 without
touching all the models we have. Because it would also be painful to
edit all the models using JSONB.

This is the patch to make JSONB work with Rails 4.1.

Basically, register the OID for jsonb and after all the models were
loaded, walk through all the columns which data type is jsonb and
default to '{}::jsonb' (because we only use it this way and the others
could come from que which I shouldn't be patching with)

Sequel was used here because we have it and it works great. If you
want to work with ActiveRecord to fight with this, go ahead, I think
it should also work.

After this patch was applied, all tests passed.

Here's the other thread on twitter.

2015-06-29

Guild Wars 2 中 Mesmer WvW zerg build

Facebook group 中複製過來的。

June 26 at 4:36am

個人不喜 roaming, 所以主要都是跟 zerg. 目前是打算這樣玩
http://intothemists.com/calc/...

以前都是以 phantasm 為主,現在也不例外。不過這次 specialization 的
改版把 shatter 弄到好強,所以依然點了一些。不愛 shatter 的主因是在
zerg 中 illusion 都死很快,幾乎一上場就被秒殺了,沒啥機會可以 shatter.

主要打法大概就是遠遠打和放輔助技能,應該沒什麼特別的。有幾項我還不太確定就是了:

* 原本我都有點 focus CDR 和 reflect, 不過這次為了要 Protected Phantasm 的
distortion 就沒點了(根據經驗,沒這個 phantasm 一出來就死,打不到人)。既然 focus
都不能 reflect 了,好像也可以考慮換 off hand, 但不確定要換什麼好

* Confounding Suggestions (Domination I) 說不定是個不錯的選擇,因為
Master of Fragmentation (Illusions VIII) 會讓 Diversion (F3) 可以一次
daze 五個敵人,如果能一次 stun 五個人還滿誘人的...

* Temporal Enchanter (Inspiration IX) 用了三個 Glamour, 會想用也是自然吧。
可是很難放棄 Illusionary Inspiration (Inspiration VIII) XD 畢竟每次放
phantasm 時都會得到 distortion + reflection (from Master of Fragmentation)
+ 給五名隊友 (Inspiring Distortion) + 移除一個 condition
(Blurred Inscription (Domination V)) + 把 boon 都給五名隊友
(Signet of Inspiration),這實在是讓人感覺良好呀 XD

* * *

以下今天寫的 (2015-06-29)

我的考量重點是由於在 zerg 戰中瞬息萬變,再加上 illusions 應該都活不過兩秒鐘,
基本上是沒辦法放什麼連續技,出任何招都要考慮下一秒會因為種種因素而中斷。與其
考慮 burst damage 不如考慮 DPS, 因此 cooldown reduction 比 shattering
要來得重要多了。

這兩天的心得目前是,決定把 Null Field 換成 Blink, 因為 Mender's Purity 和
Blurred Inscription 使得解狀態的需求下降(放一次 Signet of the Ether 可以
解三個耶),所以就嘗試看看 Blink, 然後發現用 Blink 使得生存率大幅上升,比
Decoy 還好用 XD

原因是我主要都是死於紅圈,重點其實不是 cloak/stealth 而是 break stun, 用
Decoy 比較容易死是因為 break stun 後還是在紅圈中,有時候會隱身時就倒地...
但用 Blink 就能有效閃出紅圈外,基本上 Blink 出去除非閃錯邊不然是不會死的 XD

另一個則是考慮把 Time Warp 換成 Signet of Humanity, 因為感覺平原戰時
Time Warp 效果不是很好,畢竟平原戰時都是不斷移動不可能停下來的(除非僵持中),
那 quickness/slow 的效果就不顯著。當然攻城或是隘口之類的是另一回事就是了。
我一直覺得 Mesmer 的 elite skill 都很雞肋,寧可換成 utility, 這樣還能用
Null Field 或 Feedback 應該都還比較好用。

想換成 Signet of Humanity 的原因是這樣多一個解狀態和 distortion 的機會。
變鳥雖然也沒什麼用,不過在移動的路上遭遇 roamer 時會有點用,加上扣著不發
也有減少 cc 的時間也是不錯,畢竟 cc 才是真正的殺招 ><

至於 offhand 到底該用什麼武器,我現在還沒什麼好想法。focus 有點 reflect 的話,
非常好用,因為 Temporal Curtain (focus 4) 並不真的是可以取代的。swiftness
是真的沒差,除非是死了要跑回去。但 reflect 的話,cooldown 比
Wall of Reflection 要來得短很多,雖然在 specialization 之後 ground target
的優勢沒有了(現在 Consecration 內建 ground target 了...),但跨越的敵人有
cripple, 快結束時還能 pull 一下,再加上這個 pull 可是唯一一個可以把敵人從
城牆上拉下來的技能!多人連續拉的話,還可以把敵人從 Arrow Cart 上直接拉下城牆,
應該是最強的 cc 技之一吧...

至於 Phantasmal Warden (focus 5), 對倒地的敵人放是不錯啦,不過我覺得還好。
這招在 zerg 戰中確實不是很有用,我用來主要還是為了 reflect 或是 bleed
(以前有點 fury 和 critical 時 bleed, Dueling 那排) 和 retaliation 和
shatter 用。

有誰的技能可以取代的話我覺得也不是很重要的考量,畢竟技能也不是重複的。除了
Symbol of Swiftness 確實取代掉了所有 swiftness 的考量外... 還有
Stand Your Ground 確實也使絕大部分的 stability 相形失色...。

我目前是考慮 Sword 或 Pistol, 不考慮 Torch. 原因是我覺得在 zerg 戰中,
clock 其實對生存影響不大。我曾經被 Ranger 偷打過,這種時候會有點危險,
但現在有一堆 distortion 的技能和 Blink 已經足夠躲過了,不需要再多一個隱形。
當然,如果要玩 portal bomb, 那 Torch 自然一定要帶!這種時候愈多隱形愈好 XD

Phantasmal Mage (torch 5) 我覺得還滿沒用的。ㄟ等等等,這招改了喔? @_@
居然從 confusion 改成 burning 了 @@ 時間還 6 秒喔?超級長。看來這招
要重新評估了。多個 fury 雖然只有 3 秒,不過不無小補。

Sword 的好處是多一個 block 也多一個 illusion 機會,或是 daze.
phantasm 攻擊力很高,不過要靠近才能打人,zerg 中大概沒機會打到...。

Pistol 的好處則是最強的單體 stun 和 phantasm 是遠程的,這樣有機會打到人。
之前我是用 Sword, 現在換 Pistol 試試。

All texts are licensed under CC Attribution 3.0