2013年6月17日星期一

jquerymobile 多點幾次後掛掉

前二天應朋友要求,
寫了一支用jQueryMobile架起來的手機版網站,
但在測試時,出現一個非常奇特的現像:
程式原始碼:
<a href="..." data-role="button">xxx</a>

點擊第一次時OK,點擊第二次時也OK,
結果點擊第三次時,網頁就掛在那邊,
停止回應了。

後來經過高人指點,將程式碼改為:
<a href="..." data-role="button" data-ajax="false">xxx</a>

就正常了,看起來原因是因為ajax引起,但詳細的原因不清楚,
不過改成這樣子就OK了。

2013年6月11日星期二

MAC的SSD硬碟多磁區的noatime掛載


因緣際會買了一台MAC,是SSD的硬碟,
上網查了一下,很多人在教針對SSD優化(延長壽命)的處理,
其中有一個是noatime掛載。

noatime掛載的資料請自行上網搜尋,
網路上很多人在說,
但都沒有提到,如果有第二顆SSD或第二個磁區時,
要如何讓多個磁區都能noatime掛載。

找到最後都沒有現成的,所以最後只好去研究plist裡面的東西到底是怎麼一回事,
在這裡將研究成果寫一下:
我在/Library/LaunchDaemons底下有一個com.tcj.noatime.plist(名稱自訂)檔案,內容如下(紅字為我寫的說明):


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
        "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>(不能變動,因為要給程式判斷用)
        <string>com.tcj.noatime</string>(不能和其他plist的Label內容重覆,否則會無法執行)
        <key>ProgramArguments</key>
        <array>
            <string>mount</string>
            <string>-vuwo</string>
            <string>noatime</string>
            <string>/</string>(要掛載的路徑)
        </array>
        <key>RunAtLoad</key>
        <true />
    </dict>
 </plist>

結論:
了解意思後,再來看如果有多個磁區(路徑)要使用noatime掛載的話,步驟如下:
1.使用不同的檔案(plist)
2.變更Label中的string(以上一例來說就是 com.tcj.noatime 這一串文字,跟檔案沒有關係喔)。
3.重新開機。

這樣就可以了,下方是我掛載二個磁區成功的範例:
/dev/disk0s2 on / (hfs, local, journaled, noatime)

/dev/disk0s4 on /Volumes/Data (hfs, local, journaled, noatime)

二個檔案的差別參考:
1.

檔案1:

  <key>Label</key>(不能變動,因為要給程式判斷用)
  <string>com.tcj.noatime</string>(不能和其他plist的Label內容重覆,否則會無法執行)

  <string>/</string>(要掛載的路徑)


檔案2:


  <key>Label</key>(不能變動,因為要給程式判斷用)
  <string>com.tcjData.noatime</string>(不能和其他plist的Label內容重覆,否則會無法執行)

  <string>/Volumes/Data</string>(要掛載的路徑)


參考資料
https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man5/launchd.plist.5.html