再度跟 rails 撞名
跑這行:
if defined?(object)
好像永遠為 true... 吐出 local_variables 確實有 object.
害我一直以為是我寫錯。之前用 VC++ 也是跟他的 STL 撞名過。
大家都知道 VC++ 的 STL 是 Dinkumware 做的吧?
雖然他好像一直是最完整實作 C99, C++03, TR1, 等等 library 的廠商,
只是... 那次撞名給我的印象真的很差。
這表示你最好不要用 using std:: 什麼的,因為一用就等於把 name expose
在 global namespace 裡面。我看過有人說一個 common practice 是一律
使用 using std::, 因為這樣就有機會使用從 candidates 中選出更好的 function.
問題是 VC++ 所使用的名稱,我忘記是哪個了,不知道是 swap 還是 sort?
他的使用方式跟被衝突的名稱是毫無關係的。所以 compiler 就吐出奇怪的錯誤...
我真的查很久,直到 trace 到他的 header 細看才發現這件事。
*
原本覺得 gcc, sgi stl, 等等名稱都用得很爛,各種怪名字,每次都 __ 開頭,
一堆縮寫什麼的。直到那次才忽然驚覺,其實這樣做才是對的...
library 實作者,不應該把內部的名稱跟外部的名稱混在一起!
8 retries:
ruby 強調函式名要直覺,所以撞名機率很大 @@
library 實作者要有所自覺,但 standard library 又是另一回事
更何況,internal 和 public 又是不同的事
只能說,越用越覺得 rails 還相當不適合流量極大的 production
連 ruby 都不夠穩了,遑論 rails.
有機會想試試 merb 看看會不會比較好
(亂入
Ruby1.8.6對編碼等等的支援還真是一團混亂 Orz
敢問碰上什麼問題了嗎?
我自己固定使用 utf-8 好像沒特別遇上什麼麻煩
我用Dir[*]抓出來的檔案名稱,想用Regexp去比對,不管怎樣都比對不到 Orz
regexp後面接/u也試過了,先全部轉utf8也試過了,就是match不到Q_Q
我剛剛試了一下手上的 ruby, 分別是 1.8.6-p144, 1.8.7-p72
兩個用 regexp 去跑中文 utf-8 字串,倒是都正常 @_@
"中文測試" =~ /文/
=> 3
有沒有加 u 結果都是 3.
測試 \w 的話:
"中文測試" =~ /\w/
=> nil
"中文測試" =~ /\w/u
=> 0
*
不知道是怎麼失敗的? @_@
中文 windows 上檔名可能是 big5 或 utf-16 或 ucs-2,
我猜 1.8 應該只吃 utf-8?
不是很確定,因為 1.8 encoding 確實滿有問題的 @@
我失敗的情況是隨便去日本網站複製一段日文下來,建立一堆各種語系混和的檔案
然後Regexp裡面也是日文,這樣就match不到了 Orz
不過我覺得這一路下來可能編碼出問題的地方太多了 囧 實在難以確定阿
...@_@
那試試 1.9 好了... XD
1.9 對 encoding 真的下了不少功夫
雖然到現在都還有不少 bug report...
Post a Comment
Note: Only a member of this blog may post a comment.