2011年10月19日 星期三

讓div並排

div大概是當今html最常用的element,不過div會換行的特性也常常造成排版的困擾。要解決這個問題讓div並排有不少方法,一般最常見的是用float這個attribute:
<div id="1" style="float:left;">aaa</div>
<div id="2" style="float:left;">bbb</div>

需要特別注意的是,如果把position設成absolute,這招就沒用了,詳見這串討論

關於float

  • 設定標籤元素與文字間的相對位置float屬性 :
  • float : right; /*標籤元素向右靠.文字圍繞在左邊*/
  • float : left; /*標籤元素向左靠.文字圍繞在右邊*/
  • float : none; /*以預設位置顯示*/

2011年10月14日 星期五

打亂javascript

因為各種不同的考量,有時候會希望別人看不到自己網頁上的javascript
目前並沒有任何方法可以防止他人看到你的js code
但是可以打亂你的code,在不影響code正常運作的前提下,讓別人無法肉眼辨識你在寫什麼
以下網頁提供這樣的功能:
http://dean.edwards.name/packer/
http://javascriptcompressor.com/

2011年10月13日 星期四

終端機的編碼方式會影響檔案的讀取

今天發現我用vim開某些檔案時,會陷入像是bug的情境,無法正常顯示、編輯該檔案
在terminal中下"cat"指令讀這些檔案,也不會顯示任何東西。更怪的是,這些code還是可以正常執行!
困擾好一陣子,終於得知是編碼問題:
有這些問題的檔案,裡面都有用utf8編碼的中文,可是我昨天為了一些原因,把我的終端機編碼方式改為big5,因此產生這個問題。
改回utf8就ok了

2011年10月12日 星期三

用SyntaxHighlighter在blogger上貼美麗的code

研究了一個下午,終於研究出解法,特此和大家分享:

1.
SyntaxHighlighter官網下載他的source,並把自己需要的部分上傳到自己的空間

其中shCore.js、shCore.css、shThemeDefault.css三份檔案是必備的
其他的則是看自己需求做選擇

噹噹!這步是讓我困擾最久的,因為我一開始不知道要上傳到哪....
不過我現在已經上傳到學校提供的空間,後文會分享連結

2.
修改blogger的html檔,在head標籤中貼上

<link href='http://homepage.ntu.edu.tw/~b97103021/shCore.css' rel='stylesheet' type='text/css'/link> <href='http://homepage.ntu.edu.tw/~b97103021/shThemeDefault.css'rel='stylesheet'type='text/css'>
<script language='javascript' src='http://homepage.ntu.edu.tw/~b97103021/shCore.js'/>

以上三者為必備

以下為選擇性
使用css
<script language='javascript' src='http://homepage.ntu.edu.tw/~b97103021/shBrushCss.js'/>
使用javascript
<script language='javascript' src='http://homepage.ntu.edu.tw/~b97103021/shBrushJScript.js'/>
使用python
<script language='javascript' src='http://homepage.ntu.edu.tw/~b97103021/shBrushPython.js'/>
使用ruby
<script language='javascript' src='http://homepage.ntu.edu.tw/~b97103021/shBrushRuby.js'/>
使用java
<script language='javascript' src='http://homepage.ntu.edu.tw/~b97103021/shBrushJava.js'/>

因為我自己通常只會用到上述5種,所以只有上傳這5種到我的空間上
見者有份,歡迎直接取用;若有自己的空間,則把src改為自己的link

4.
在同一份html檔的body tag中,記得要call SyntaxHighlighter.all() 這個function
例如
<script>
SyntaxHighlighter.all()
</script>

5.
之後寫文章時,就可以用
<pre><code class="language-html">
//code
</code></pre>

<pre class="brush: rb">
#your code
</pre>
之類的語法貼code,如此一來code就會被上色,且會顯示行數

以上的code依序會顯示
//your code
#your code

另外,blogger目前似乎不支援跳脫html字元的功能(有選項,但似乎沒用)
想要顯示html的tag時,分別要用跳脫字元 & l t 和 & g t取代<和> (我為了正確顯示,所以中間加了空白,使用時不需空白)

利用javascript把form的內容儲存在cookie中

有時候user會需要不斷重填某份表單,但這份表單中有些內容是不需重填的,這時候就會希望把不需重填的部份存到cookie,並且在user每次進入網頁時自動讀取,以減少user使用上的麻煩。
我們可以用jquery達到這個目標:
function remember( selector ){
    $(selector).each(
        function(){
            //if this item has been cookied, restore it
            var name = $(this).attr('name');
            if( $.cookie( name ) ){
                    $(this).val( $.cookie(name) );
            }
            //assign a change function to the item to cookie it
            $(this).change(
                function(){
                        $.cookie(name, $(this).val(), { path: '/', expires: 6 });
                }
            );
        }
    );
}
$(document).ready(
    function(){
        if($.cookie('host')=='ptt2')
            $("#host_ptt2").attr("checked","checked");
        else
            $("#host_ptt").attr("checked","checked");
        remember('[name=ptt_ID]');
        remember('[name=aid]');
        remember('[name=board]');
    }
);
本文未完成,有待補完

更改rails server的port

要在啟動rails內建server時更改port(預設為3000),可以在terminal中輸入以下語法
rails server -p xxxx #xxxx為想要的port
rails s -p xxxx #亦可用縮寫s取代server
如此一來,就可以同時測試不同版本的project!