感謝長輩 gslin 提供網頁:Maximum value of z-index

看起來現在通行的幾個 browser(IE, Firefox3, Safari4, Opera9) 都是吃 2147483647 這個值。

會需要指定 z-index 最大值的狀況,是要確保指定 element 顯示一定要在最上層不會被蓋掉。

不過我遇到的狀況還滿有趣的:我要確保廣告不被使用者的自訂元件所蓋掉,但同時有一些站方提供元件又不能被廣告所蓋住。

解法是將這些元件都設定 inline style z-index: 2147483647 (inline style 的優先權最高)。在同樣的 z-index 值的狀況下,會根據在 dom 裡的順序決定誰在上層,越後面的越高。於是廣告要放在比較前面的地方,然後依序將要保留的官方元件補上去。同時確保使用者的自訂元件在 dom 裡不會在廣告版位之後出現即可。

Posted by Manic at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(41)

save 可以接收一個參數 :perform_validation => true/false,預設為 true。
當 perform_validation 被設為 false 時不會過 validation.

save! 沒有任何額外參數,一定會過 validation.

在執行 save 時,如果有任一個 before_* validation 失敗,整個 save 會回傳 false。

而在執行 save! 時,before_* validation 失敗則是會丟一個例外 ActiveRecord::RecordNotSaved 回來。

所以在應用上:

  • 在 controller 裡一般使用 save,免得每一個 save 失敗都要做 rescue,因為使用者的輸入錯誤是很自然會發生的;
  • 而在像是 rake 或 test 中,就應該使用 save!,方便 debug.

 

參考:Rails API - Class:ActiveRecord::Base#save

Posted by Manic at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(52)

這篇文章講的很清楚:attributes= (ActiveRecord::Base) - APIdock

這樣要繞過 attr_protected 的 column 時就不用一個一個手動指定了。

Posted by Manic at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(81)

1. 使用 Model.increment_counter(counter_name, id):

003:0> User.increment_counter(:hit_counter, 1)
User Update (0.8ms)   UPDATE `users` SET `hit_counter` = COALESCE(`hit_counter`, 0) + 1 WHERE (`id` = 1)

2. 使用 Model.update_counters(id, attribute => ammount)

011:0> User.update_counters(1, :hit_counter => 50)
User Update (0.7ms)   UPDATE `users` SET `hit_counter` = COALESCE(`hit_counter`, 0) + 50 WHERE (`id` = 1)

第1個方法可以單純的做+1動作,第2個方法多了指定要加多少。

另外,Rails 還有一個 instance method: increment,但我其實不建議使用它。因為他不是用 sql 的加法來達成 incrment.

013:0> user = User.first
014:0> user.increment(:hit_counter, 2)
015:0> user.save
User Update (0.2ms)   UPDATE `users` SET `updated_at` = '2009-10-26 04:09:00', `hit_counter` = 163 WHERE `id` = 1

這種方式有可能出現 race condition.

Posted by Manic at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(59)

這裡主要是講 database 使用 mysql 的狀況。

在 Rails 裡,對於 text 的指定只有一種。

而有時我們需要更大的欄位,比方說 medium text, big text。因為有時候,大一點還是比較好。

這時候在 migration 裡的作法有兩種個方式:

第一種是以指定 limit 大小的方式讓 mysql 自行將欄位設定為 medium text (請注意 "content" ):

  1. class CreateArticles < ActiveRecord::Migration
  2.   def self.up
  3.     create_table :articles do |t|
  4.       t.string    :title
  5.       t.text      :content, :limit => 64.kilobytes + 1
  6.       t.timestamps
  7.     end
  8.   end
  9.  
  10.   def self.down
  11.     drop_table :articles
  12.   end
  13. end
  14.  

第二種是在 self.up 後再 exeucte 自行生成你要的欄位:

  1. class CreateArticles < ActiveRecord::Migration
  2.   def self.up
  3.     create_table :articles do |t|
  4.       t.string    :title
  5.       t.timestamps
  6.     end
  7.     execute "ALTER TABLE articles ADD `content` MEDIUMTEXT NOT NULL AFTER `title`"
  8.   end
  9.  
  10.   def self.down
  11.     drop_table :articles
  12.   end
  13. end

Posted by Manic at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(82)

雙子座 ジェミニ PV 影片截圖

這首歌的作曲者是 Dixie ,他的作品我們之前也有介紹過,《Just Be Friend.》

《雙子座》則是他的 Nico 出道作。

而對繪師紙飛行機(グライダー)來說,這是他第一個以 Vocaloid 雙子(鏡音鈴,鏡音蓮)為主角的的PV,之後所作的PV作品也都是以雙子為主角。

很可愛!(重點)

也因為這部作品的關係,之後 Dixie 出的個人專輯《Fragments》,就請紙飛行機擔當專輯的視覺設計。

專輯也很棒喔!

接下來就請看鏡音雙子唱雙子吧

 

Posted by Manic at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(78)

在 Rails 裡對做 CRUD 時,有個方便的實作。

params 表示 form parameters,為 hash 型式 (column => value),這樣子若要把 form 的資料接過來只需要一行。

除了 new 之外,還支援這樣的方式:

方便歸方便,但也衍生了一個問題,那就是使用者的 form 表單裡塞了一些我們不希望被修改的 column 時,這些指令依然會被執行。

比方說帳號欄位,我們通常是不希望被修改的。

於是這時候可以使用 attr_accessible 或 attr_protected 來保護這些欄位

attr_protected :account

這樣在使用 new, attributes=(attributes), update_attributes(attributes) 時,account 欄位會被保護,不被這些 method 改變其值。

而如果我們真的要改變的話,需要自行指定。

以下是 Rails api 給的範例,可以更清楚我在講什麼

Posted by Manic at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(108)

白虎野少女的原曲來自於電影 Paprika
(台灣翻譯為盜夢偵探,改編自筒井康降的SF小說),
平澤進所作。這也是他和今敏的再度合作。
paprika.jpg
這部電影的配音卡司很強喔,仔細看會發現有林原惠,古谷徹,大塚明夫等人。

由於這部電影的主題是夢境,
所以身為片尾曲的白虎野少女的歌曲也充滿的奇幻風格。
而在 Nico 動畫上就有人用 KAITO 重唱一遍,
這一唱就成了 KAITO 經典名曲之一。

這首曲子我曾介紹給友人聽,
聽完後經我說明才驚覺這首歌是由虛擬人聲所唱,
可見上傳者調教 KAITO 聲音的功力實在了不起。

今天要介紹的版本又多了PV(上面的版本只有靜態圖),
而且這個 PV 是由台灣人畫的!繪師名: 紙飛行機,BLOG 人間徒然雜記
 

清爽的畫風與奇幻的歌曲成了絕妙組合,
使得當年還在國軍 online 的我也因此 loop 了數十回...
然後就 Nico 中毒了。(最後還成了付費會員)

紙飛行機還做了許多的 PV,每個 PV 都很可愛好看!
有機會的話還會介紹給大家。

Posted by Manic at 痞客邦 PIXNET Comments(1) Trackback(0) Hits(310)

在 Nico 動畫眾多繪師中,Bravo山田是一個很特殊的存在。
5418829_s.jpg

許多人在畫萌圖的時候他都在畫這類玩意兒。

特長是畫一些沒穿什麼衣服擺著神奇姿勢的男性。

Posted by Manic at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(129)

您累了嗎?聽一首歌吧.....

我是上傳者的母親。
體弱多病的兒子,因為第一次的上傳動畫好像很高興的樣子
請大家務必,務必照顧一下兒子的動畫。

您的一個點擊,可以挽回一條生命!請大家告訴大家吧!(無誤!)

 

Posted by nico at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(159)

在 Nico 動畫中常會看到像這樣的標題:アコギで弾いてみた

然後我對 アコギ 一直有點疑惑,想說吉它不是就叫ギター嗎
後來查了一下才知道是アコースティック・ギター(Acoustic Guitar)的簡稱,也就是木吉它的意思。

會特地寫下來的原因是我有很長的時間把アコギ看成アシコキ(紳士連結,慎入)的相關物,真是太對不起木吉它了。

話說此篇內容和影片也是一點關係都沒有,也真是抱歉啊

Posted by nico at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(101)

作者commet:

曲名 1.志方あきこ/ロマの娘  2.ICO/Castle in the Mist  3.zabadak/遠い音楽  4.有坂美香/月迷風影  5.猫叉Master/Caring Dance  6.河井英里/シャ・リオン  7.Sound Horizon/エルの絵本【笛吹き男とパレード】  8.Shanachie/King Of The Fairies  9.清浦夏実/旅の途中  10.村井聖夜/Tir na n'Og  11.霜月はるか/精霊祀  12.zabadak/二月の丘  13.kirche/Schwarz Nacht  14.Sound Horizon/辿りつく詩  15.猫叉Master/サヨナラ・ヘヴン  16.志方あきこ/Kalliope-カリオペ-   17.Shanachie/月の庭 Sally Garden's  18.大神/「Reset」~「ありがとう」バージョン~   mylist mylist/7649914 

Posted by nico at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(151)

這世上,有人喜歡用【贏家】與【輸家】來區分他人。

我比較喜歡用【強者】與【弱者】,因為輸贏有時很表面,但強弱可以很真實。

而對我來說,兩者的差別在於

強者不畏輸,弱者只想贏。

 

要解釋可以寫很多,但我覺得光這一句話就說很多了。

Posted by Manic at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(117)

今天上的是第四堂健身課,依舊從踩腳踏車開始。

前5分鐘力度4,然後6,最後5分鐘8。後面好累啊。

和前面三堂課不太一樣的是今天做的都是新器材,而且比較徧腿部的訓練。

所以我現在腿還抖抖的.........

下一次的課是在星期三早上,所以星期日或一要挑一天去自主訓練兼看正妹!

注意重點:

  • 呼吸還不是很直覺,一不注意就會自己憋氣。
  • 我好容易緊張啊,而且都是不自覺的。要學會怎麼放鬆才對。
  • 我的肌肉柔軟度真是爛斃了。

==

本日紀錄:

2430 昨天睡覺的時間
1000 起床
午餐 阿忠排骨的招牌飯(炸雞翅, 高麗菜, 豆干, 炸蝦, 香腸)
晚餐 羊肉炒麵

Posted by Manic at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(113)

發現之前的介紹有許多謬誤,再重新發表一次。

在這裡有很清楚的描寫:Git Submodule Tutorial

如何 Check out 內含 submodule 的 repository (Ex: super)

#git clone {REPO_PATH}/super
#cd super
#git submodule update --init (這行會對 .git/config 補上 submodule 的敍述,同時更新所有的 submodule)

在 super repo 底下更新所有的 submodule repo

# (在 super 根目錄下)
#git pull (會發現有些 submodule 變成 modified)
#git submodule update --init

修改 submodule 的 commit push 流程(Ex: sub-repo)

#(在 sub-repo 下修修改改後)
#git commit -m 'commit log'
#git push
#(回到 super 的根目錄)
#git commit -a -m 'submodule modified'
#git push

要注意的是,使用 git submodule update --init 所 checkout 的 submodule branch 為一個 no name branch. 所以要直接在有 super repo 底下的 submodule 裡做 commit 的話,要先切到可以提交 push 的 branch.(Ex: git checkout master)

在 super repo 下新增 submodule repo: sub-repo2

#(在 super 根目錄下)
#git submodule add {REPO_PATH}/sub-repo2 sub-repo2 (後面的 sub-repo2 可以自訂為你想要的 path name,比方說 loli
#git commit -m 'add submodule sub-repo2'
#git push
#git submodule init sub-repo2 (這行會對 .git/config 補上 submodule 的敍述)

 

刪除 submodule 原文寫的很清楚了,這裡就不再提。

 

Posted by Manic at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(472)