原來css 套用是有優先權高低的

這邊說得不完全是 inline &  link 的權重,而是 如果處於同樣的等級(ex: 同樣處於引入的css檔案),套用上去的還是有差。

我一直以為是後面的蓋掉前面的,但其實不完全如此,因為我最近碰到好幾次 @@,都想不通是什麼道理(那時候搜尋也沒看到….),看了這篇文章: Don’t use !important 才知道為什麼  =.=  。

簡單的說就是如果有一個div 長這樣

<div id="aa"></div>

你先這樣寫

#aa{  color:red}

然後之後再這樣寫

div{color: blue}

就算 div 的設定  之後才被讀入,也還是不會蓋過去喔!!! 為什麼好多css的書都沒寫,還是我眼殘呢?   我真的不記得有在書上看到阿!!!!

ref: 6.4.3 Calculating a selector’s specificity

p.s 計算方式

*             {}  /* a=0 b=0 c=0 -> specificity =   0 */
LI            {}  /* a=0 b=0 c=1 -> specificity =   1 */
UL LI         {}  /* a=0 b=0 c=2 -> specificity =   2 */
UL OL+LI      {}  /* a=0 b=0 c=3 -> specificity =   3 */
H1 + *[REL=up]{}  /* a=0 b=1 c=1 -> specificity =  11 */
UL OL LI.red  {}  /* a=0 b=1 c=3 -> specificity =  13 */
LI.red.level  {}  /* a=0 b=2 c=1 -> specificity =  21 */
#x34y         {}  /* a=1 b=0 c=0 -> specificity = 100 */
廣告

ramdisk & http server

最近組織內要弄一個 flv player 的網頁來播放一些影片,不過因為預算的關係所以只能買1u 的便宜server。但是又想要僅可能多撐一些使用者上去。所以我就想到如果把flv 的檔案 放到ramdisk 上面不知道效率會不會比較好。

目前的答案是-沒有。我用httperf來打,可以撐上去的連線數總是比另一個放在ext3檔案系統目錄底下的來的少一些。 前端使用 apache2 or nginx 都是一樣。我猜應該是我有什麼地方弄錯了吧…. @@

ajax request in for loop

有時候我會希望發送出許多ajax的請求,然後希望他們回來可以自己更新自己~~~~像是這樣

for(var i=0;i<5;++i){
    var  obj_id ="div_"+i;
    $.get("url here","",function(data){
        $("#obj_id").append(data);
   });
}

不過後來發現,這樣根本無效,因為那個無名函式是個callback function,所以會等到ajax請求完成後才呼叫他,於是那個obj_id(通常) 都是   div_5(因為迴圈一下就跑完了)。  一直不知道怎麼解決這個問題 T_T (太弱了..orz)。

後來發現包在jquery的.each可以成功,也就是改寫如下:

var id_array = [1,2,3,4,5];
$.each(id_array,function(i,val){
    var  obj_id ="div_"+val;
    $.get("url here","",function(data){
        $("#obj_id").append(data);
    });
});

這樣就可以了,所以如果仿照這樣的精神,大概可以寫成下面這樣。 不過不知道是否有更好的作法?….

function ajax_call(i){
    var  obj_id ="div_"+val;
    $.get("url here","",function(data){
        $("#obj_id").append(data);
    });
}

var id_array=[1,2,3,4,5]
for(var i=0;i<di_array.length;++i){
    ajax_call(i);
}

撰寫rake

在rails的框架中有一個超好用的的工具叫做rake,透過它你就可以很輕鬆地清掉log,操作資料庫的版本…..之類的。簡單的說可以把它想成是在rails 中的shell !!!!

如果你在一個rails的專案中打 rake -T  就會看到所有工作的列表,我常用的就是 rake log:clear 跟 rake db:drop , rake db:migrate ….之類的。

但是有時候我們還是會有一些想要擴充的功能,這時候,你就可以自己寫一個rake task !!!!!

目錄在  RAILS_ROOT/lib/tasks/  你可以寫一隻hello.rake 放到底下,內容大概像這樣:

namespace :yournamespace do
desc “clean log,upload file, and tar file"
task :yourtaskname => :environment do |t|
puts “hello world"

end
end

首先你要有一個namespace(可有可無,但為了避免衝突還是加上的好),然後底下 寫下描述 然後緊接著 taks的區塊。  如果你有很多task 可以都仿照這種架構建立。不過挺建議分隔個別的檔案,比較一目了然。

之後在專案的目錄底下打上  rake yournamespace:yourtask 就可以看到 hello world 了!!

目前跟朋友們正在寫一個網站,可是自己的git service 好像不像svn那麼好架@@,然後還沒到可以放在github的階段,所以只好先每天tar起來 然後交給某一個人merge(好啦 我之後會學習如何透過email 來交換git 檔案) 所以就寫了一個task 他會先把log,tmp file 跟上傳的檔案清除。然後再tar 起來。 有需要的可以拿去改一改~~~~

正在填新生資料…

這大概是我看過最特異的自傳填寫法了….. 給了2x個input[type=text],每行限定50個字,但是每個input的欄位寬度大概只能顯示10字左右…..  這樣要怎麼寫阿XD  這樣實在太難過,只好用firebug 把寬度拉寬…….

我相信一定有更好的設計方法的。

community engine

剛剛把rails 的一個plugin-community engine 給裝起來用用看。這個plugin特殊在他可以是一整個網站,也可以透過plugin的模式寄生在宿主的project中。 他的plugin 模式其實就是把原本的網站裝到 vendor/plugin/community_engine 然後透過一些設定讓plugin裡面的網站可以伸出頭來呼吸。  rails 真的很猛…..

最近跟朋友都在研究這一堆plugin,收穫頗豐呢!