推薦軟硬體、網站

Google Adsense

aNobii網路書櫃

2011年1月25日 星期二

[心得] 電子發票平台的「消費者」入口

目前財政部「電子發票整合服務平台」的「消費者入口」做得實在是有夠不明顯!左邊的登入全都是營業人和政府機關,那一般民眾要如何登入自己的自然人憑證或是載具(iCash、悠遊卡等)呢?

我昨天反而是Google到正確網址後才發現原來首頁有個link可以點= ="。
答案就在中間「一般民眾」欄的「歡迎進入」,其他的都不對。正確網址是:




總之目前電子發票平台對於「消費者」來說非常不友善!登入很不明顯,重要的資訊藏在不明顯的地方,說明文件還很不白話。

以下列幾個有用的網址和b2c頁面的Q&A:
  1. 電子發票試辨作業問與答 (20101217)
  2. 電子發票試辦門市地點資訊 (20101217,共27家)

Q&A

  • Q:什麼是載具?
  • A:載具是您消費時所開立的電子發票中所紀錄可資識別發票所有人的卡片。目前可使用悠遊卡、 icash 、全聯福利卡及萊爾富會員卡。
  • Q:什麼是歸戶?
  • A:歸戶指的是您以自然人憑證在本平台註冊後,即可將您所持有或經授權的載具 ( 卡片 ) 歸至所註冊的帳戶。平台系統對註冊會員提供歸戶載具 ( 卡片 ) 自動對獎及中獎獎金匯款服務。
  • Q:一定要有自然人憑證才能註冊嗎?
  • A:為確保電子發票為您本人所有,並維護您領獎的權益,使用電子發票歸戶註冊之功能請以自然人憑證登入
  • Q:為什麼註冊要填我的帳戶?
  • A:註冊以後,系統將自動幫您對獎,並將您中獎的發票自動匯款至您的帳戶
  • Q:我沒有自然人憑證怎麼辦?
  • A:建議您可以申請一張自然人憑證,或是使用免登入服務,如設定中獎通知等服務。
  • Q:我還是有很多疑問怎麼辦?
  • A:歡迎撥打我們24小時免付費服務專線 0800-057-168

這些算白話的了,我用更淺顯的說法再翻一次:
  • 註冊:就像一般網站的會員註冊,但必須以「自然人憑證」-- 網路上的身分證(戶政事務所申請需工本費$275),來做為身分識別。
  • 載具:消費時的卡片,例如悠遊卡、7-11 iCash、Hi-Life會員卡、全聯福利卡。電子發票是開立在這些載具上的。
  • 歸戶:將多個載具(多張卡片)連結到你的電子發票帳號(網路身分)下。換句話說,每個帳號可以關聯到多個載具,之後載具的發票就跟著帳號一起了。
  • (銀行)帳戶:跟之前註冊的「(電子發票)帳戶」不一樣。填入銀行帳戶,電子發票平台自動對獎以後就能把錢匯入你的銀行帳戶。

2011年1月13日 星期四

test

YouTube test:



2011年1月4日 星期二

[Project] Personalized Photo Ranking System -- Web Version



A simplified Web version of "Personalized Photo Ranking and Selection System".

http://cml18.csie.ntu.edu.tw/~ryanlei/photo_ranking

Authors: 雷禹恆 (Ryan Lei, r99944007), 曾開瑜 (Kai-Yu Tseng, r99944001), MiRA Group, CMLab, NTU.

2010年12月17日 星期五

2010年10月23日 星期六

[Mac] 用Dropbox同步多台電腦的Adium對話記錄



Use Dropbox to Sync Adium Logs Between Computers

隨著越來越常在實驗室的Mac Mini Server和宿舍的MacBook輪流工作,Dropbox對我來說更顯得重要。一般的程式碼、文件都能輕鬆同步,但如果Adium即時通的對話記錄無法同步的話,總會帶來一些困擾。例如我在實驗室丟別人離線訊息,等回宿舍隔天再收到別人的回應時,我已經忘了當初說的是什麼了XD,尤其對方也離線時會更困擾。

其實Dropbox可以透過Unix系統的symbolic link,來同步~/Dropbox資料夾以外的東西,以前已經有人介紹過了。不過同樣是symbolic link,如果想在多台Mac電腦間同步Adium對話記錄,我比較建議「把原本的Logs搬移到Dropbox裡以後,再到原本放Logs的路徑建立symbolic link連到Dropbox」,這樣比起建立symbolic link從Dropbox連到Logs,還要更不會出包和遺失資料,而且至少可以允許不同電腦取不一樣的使用者名稱XD。詳細方法如下:

  1. 首先要說的是,如果過去在多台電腦上有重複聯絡人的Logs,那在第一次同步必須有所取捨,因為同樣檔名的對話只能保留一個,而我不會合併。
  2. 登出Adium,然後到每台電腦Adium存Logs的地方,也就是 ~/Library/Application Support/Adium 2.0/Users/Default ,把Logs資料夾搬移到~/Dropbox內,例如我順便更名為~/Dropbox/Adium_Logs。如果發生1.的情形,請一一小心斟酌,不要把Logs資料夾整個丟進去,否則會全部覆蓋。基本上是挑對你比較重要的記錄保留。
  3. 現在想同步/備份的最大Logs已經在~Dropbox/Adium_Logs裡面了,接下來請在每台電腦開啟終端機來建立symbolic link。
    • cd ~/Library/Application Support/Adium 2.0/Users/Default
    • 用ls確定Logs資料夾已被搬移或刪除
    • ln -s ~/Dropbox/Adium_Logs Logs
    1. Done! 現在每當Adium需要讀取對話或是寫入對話以後,都會到symbolic link指到的~/Dropbox/Adium_Logs裡去讀寫。
    其實如果Adium能像MSN一樣,允許使用者指定存放對話記錄的路徑就省事多了Orz。




    2010年9月12日 星期日

    [食記] 澎湖:龍門海鮮餐廳

    拖稿兩個月在開學前還是趕快寫一下吧XD。

    澎湖出遊前在PTT和網路上到處亂爬文,總算是有貢獻到一次吃的行程,而且值回票價!


    店名:龍門海鮮餐廳

    地址:澎湖縣湖西鄉龍門村58之2號 (沿著204縣道一路往東就對了,餐廳就在馬路邊)

    官方無名:http://www.wretch.cc/blog/canwell37 target="_blank"

    沿著菊島去旅行的介紹:http://goo.gl/r4Mz

    鎮店名菜:水晶小管、糖醋魚球、活跳胭脂蝦

    只要報上自己是PTT或菊島的網友,就能享85折優惠,
    外加官網不時有加贈一道菜的活動喔!


    當初訂位時,考量當天行程,加上想故意餓一點XD,問老闆說如果訂晚上八點會不會太晚。結果他回答可以為了我們開到八點,真是太感人了T.T,一開始就覺得老闆人很好。

    以下照片由於相機品質因素,加上我們筷子動太快了,品質不是很好請多包含XD,其實每一道菜的份量都是不少的!







    鎮店名菜--水晶小管~就是小管冰鎮沙拉啦~這道菜由本店創始的!
    炎炎夏日吃這種涼品別有一番風味,應該是我吃過最棒的一次小管了,八個人吃也很OK!





    生吃海膽:一樣是涼品,記得吃起來軟綿綿的。



    鎮店名菜--糖醋魚球。糖醋很下飯,這道菜蠻快就被清掉了XD。

    很可惜另一道鎮店名菜--活跳胭脂蝦 (活的胭脂蝦,用酒把它迷昏之後,再丟入冰水中冰鎮),因為缺貨所以沒吃到:(



    生吃絲瓜:第三道涼品,夏日好夥伴。我第一次吃生的絲瓜,就像瓜類水果一樣並不可怕,配上冰塊跟醬汁口感很不錯!



    洋蔥炒紅蚵:我們吃速太快了只剩一半Orz。可惜沒有點到顆粒更大的石蚵,覺得大的蚵類吃起來會更爽:p



    鹹魚炒飯:也是客人喜歡點的食物之一,可能因為飯是主食吧。細小的鯖魚埋藏在炒飯中,增添不少味道。網路上的評價是米飯「粒粒分明」,但我覺得老闆這次炒得有點溼不太成功,或許是趕下班吧Orz。



    海鱺生魚片:這份量真是超大方(21塊?)而且又不貴,跟前一天吃到的地雷海鮮店比好太多了!!!



    照片有些遺漏...總之呢,我們八個男生點了大約八菜一湯吧,雖然每道菜總是迅速被清光XD,但整餐下來仍然很滿足,也夠飽,以餐廳快打烊的水準已經算上等好料了。

    PTT板友價85折之後,一人只花380元(湯的單價高蠻多的,所以其實能更省),跟預算較高的一次家聚錢差不多,但這次可是吃海鮮呀呀呀!!!真的是值回票價!

    老闆人也很好,點菜時就給了不錯的建議,甚至問了我們的預算後,還在腦中先幫我們盤算點什麼比較合適。每上一道菜也會做一些解說,其實老闆蠻幽默的,屬於冷面笑匠型,開玩笑時自己都不會笑XD。


    臨走前老闆說他自己有設部落格,希望我們能拍照留念,看著我們比的手勢應該就知道大家今天的評價如何了^__^。最後的最後,好客、大方的老闆還帶我們參觀他們的活海鮮,我記得有看到一條又大、速度又超快的魚。澎湖真是吃海鮮的好地方,只是要挑對店家喔^_<!


    我記得老闆相簿的註解好像是:大口吃冰的八位帥哥?Orz

    2010年7月27日 星期二

    關於Apple以$19,900出貨Mac Mini Server的想法

    昨天晚上回家就看到Apple願意$19,900出貨的消息

    很驚訝(這是Apple Taiwan被罵至今難得白回來的一次啊XD,雖然這次決定應該還是聽命行事。)

    也佩服Apple這次大快人心

    很爽!


    不過昨天邊睡覺邊想邊擔憂...

    真的出貨的話可能會有很「混亂」的現象

    我是說後續效應


    至於怎麼個混亂法

    身為利害關係人現在不方便透漏

    不過市場可能真的會被打亂


    例如敝人從現在起宣布:

    『向敝人諮詢Mac Mini Server改機服務必須收費(笑)。』


    我還是覺得送個幾千元不限商品的Apple Store折價券最實在啦

    雖然少掉賺暴利的機會

    但這應該是最不會影響市場的方式(而且是一個可能「有價無市」的市場)


    甚至折價券送到$19,900可能影響都沒有出貨大

    只想撿便宜的人拿去賣給Apple fans一定會有人撿!


    會這樣想還是因為市場機制的真諦:

    『商品與服務會從對他價值(最)低的人,轉移到對他價值(最)高的人手上。』

    我不管怎麼處置我的Mini Server都會希望符合這個原則

    至於賺個價差只是順便而已XD


    把Mac OS X Server當Mac OS X來用已經夠浪費了(是我的話會這樣)

    如果拿來裝Windows就......


    消保會&消基會似乎把Mac Mini Server當作一般「桌上型電腦」來討論

    http://www.cpc.gov.tw/detail.asp?id=1564

    拜託,差多了好嗎?

    所以真的以$19,900出貨對整體(全球)消費者是不是好事(不只是金錢上)

    我不太樂觀 :(

    應該會讓Mac OS X的使用者經驗先扣分吧Orz(因為用的是Server)



    2010年5月16日 星期日

    [Mac] 用QuickTime X + Soundflower進行含系統音效的螢幕錄製

    Keywords: QuickTime X, audio, screen capture, screen recording.

    Snow Leopard上的一個很大的改變是新的QuickTime X,其中一個好用的功能就是螢幕錄製(screen recording)。可是預設是沒有辦法連同系統音效一起錄製的,只能選擇麥克風當作音源。其實透過 Soundflower 這個套件可以幫我們做到。
    1. 至專案網址 http://code.google.com/p/soundflower/ 下載soundflower的dmg檔。掛載後點選Soundflower.mpkg,照正常的步驟安裝。雖然沒強制,但裝完之後建議重開機。

    2. 至系統偏好設定 -> 聲音 -> 輸出,原本的聲音輸出設備是內建揚聲器,現在改選Soundflower (2ch or 16ch)。


      Note1: 從現在開始會聽不到系統音效,因為所有的音效輸出都被導到Soundflower。

      Note2: 有個方便的切換方法:option + click工具列右上方的喇叭圖示,可直接切換聲音輸出設備。


    3. 開啟QuickTime X -> 檔案 -> 新增螢幕錄製,點選向下箭頭,麥克風選擇剛剛設定的Soundflower (2ch or 16ch),再按下錄製鈕就可以錄製有聲音的畫面了。


      Note:
      錄製的時候仍然聽不到任何聲音,感覺有點怪但是沒辦法XD。

    4. 完成之後再用2.的方法,把聲音輸出設備改回內建揚聲器,才能再聽到聲音。這樣子剛剛錄製的螢幕就含有系統音效了!


    獻醜一段我剛剛錄的一個例子XD


    參考資料:

    1. Snow Leopard – Use Quicktime Player to capture web video and audio | Apple Mac | Tech-Recipes
    2. How to use Snow Leopard’s new QuickTime Screen Recording feature to record Hulu content for your iPhone — Sample the Web

    2010年1月29日 星期五

    2010年1月10日 星期日

    OpenCV: How to print (dump) Matrix (Image) contents with specified range

    After grabbing ideas from Random Noise blog, I created my own printMat() functions

    The first works for single-channel 2D matrices of type CvMat.
    Better yet, it has default arguments (rowBeg, rowEnd, colBeg, colEnd) for you to specify the range.
    If none is specified, the function prints the entire matrix.

    The second is just the overloaded version for the type IplImage, so this function can print both a matrix and an image depending on argument 1.


    Function prototypes:
    void printMat(CvMat *matrix, const char *name, int rowBeg = -1, int rowEnd = -1, int colBeg = -1, int colEnd = -1);

    void printMat(IplImage *img, const char *name, int rowBeg = -1, int rowEnd = -1, int colBeg = -1, int colEnd = -1);


    Function implementations:
    /* Print a single-channel 2D matrix, with default range being the whole matrix */
    void printMat(CvMat *A, const char *name, int rowBeg, int rowEnd, int colBeg, int colEnd) {
    /* If the (row, col) range is all in default => Use the full range */
    if (rowBeg == -1 && rowEnd == -1 && colBeg == -1 && colEnd == -1) {
    rowBeg = 0; rowEnd = A->rows - 1; colBeg = 0; colEnd = A->cols - 1;
    }

    /* Check for validity of the privided (row, col) range */
    if (rowBeg < 0 || rowEnd >= A->rows || rowBeg > rowEnd || colBeg < 0 || colEnd >= A->cols || colBeg > colEnd) {
    error("printMat(): Invalid range of (rowBeg, rowEnd, colBeg, colEnd)." );
    }

    cout << endl << name << "(" << rowBeg << ":" << rowEnd << ", " << colBeg << ":" << colEnd << ") =\n\n";
    for (int i = rowBeg; i <= rowEnd; i++) {
    switch (CV_MAT_DEPTH(A->type)) {
    case CV_32F:
    case CV_64F:
    for (int j = colBeg; j <= colEnd; j++)
    /* Use C's printf() for convenience :p */
    printf("%7.3f ", (float)cvGetReal2D(A, i, j));
    break;
    case CV_8U:
    case CV_8S:
    case CV_16U:
    case CV_16S:
    case CV_32S:
    for (int j = colBeg; j <= colEnd; j++)
    /* Use C's printf() for convenience :p */
    printf("%4d ", (int)cvGetReal2D(A, i, j));
    break;
    default:
    cerr << "printMat(): Matrix type not supported.\n";
    exit(EXIT_FAILURE);
    break;
    }
    cout << endl;
    }
    cout << endl;
    }





    /* Print a single-channel image, with default range being the whole matrix */
    /* This is the overloaded version for IplImage */
    void printMat(IplImage *A, const char *name, int rowBeg, int rowEnd, int colBeg, int colEnd) {
    /* If the (row, col) range is all in default => Use the full range */
    if (rowBeg == -1 && rowEnd == -1 && colBeg == -1 && colEnd == -1) {
    rowBeg = 0; rowEnd = A->height - 1; colBeg = 0; colEnd = A->width - 1;
    }

    /* Check for validity of the privided (row, col) range */
    if (rowBeg < 0 || rowEnd >= A->height || rowBeg > rowEnd || colBeg < 0 || colEnd >= A->width || colBeg > colEnd) {
    error("printMat(): Invalid range of (rowBeg, rowEnd, colBeg, colEnd)." );
    }

    cout << endl << name << "(" << rowBeg << ":" << rowEnd << ", " << colBeg << ":" << colEnd << ") =\n\n";
    for (int i = rowBeg; i <= rowEnd; i++) {
    switch (A->depth) {
    case IPL_DEPTH_32F:
    case IPL_DEPTH_64F:
    for (int j = colBeg; j <= colEnd; j++)
    /* Use C's printf() for convenience :p */
    printf("%7.3f ", (float)cvGetReal2D(A, i, j));
    break;
    case IPL_DEPTH_8U:
    case IPL_DEPTH_8S:
    case IPL_DEPTH_16U:
    case IPL_DEPTH_16S:
    case IPL_DEPTH_32S:
    for (int j = colBeg; j <= colEnd; j++)
    /* Use C's printf() for convenience :p */
    printf("%4d ", (int)cvGetReal2D(A, i, j));
    break;
    case IPL_DEPTH_1U:
    for (int j = colBeg; j <= colEnd; j++)
    /* Use C's printf() for convenience :p */
    printf("%1d ", (int)cvGetReal2D(A, i, j));
    break;
    default:
    cerr << "printMat(): Matrix type not supported.\n";
    exit(EXIT_FAILURE);
    break;
    }
    cout << endl;
    }
    cout << endl;
    }


    2009年12月6日 星期日

    DropBox: 網路硬碟兼到處同步的超好用服務

    像是網路空間又結合自動同步的東西

    概念很好一言難盡

    這篇MR.6的文章說得很不錯

    所謂的「分散式生活」和「Sync到連自己都沒有感覺在Sync」

    應該是技術上的成功關鍵之一 (Ubiquitous Computing??)

    或者直接看DropBox的介紹影片:



    有興趣的板友點我的referral link去申請吧

    推薦人和被推薦人都可以增加250MB喔XD (免費最多到5GB 8GB) [其實這種制度也是很棒的概念]


    --
    終於可以不用帶隨身碟往返台北和新竹了!


    2009年12月2日 星期三

    [Mac] Apple Macbook電池保養

    整理一下Apple官網和從優仕店員那裡聽到的重點:

    1. 盡量不要用到快沒電,到20%就該充電了。
    電量太低時會使電池的「活性」降低。
    這點應該沒爭議。

    2. 也盡量不要「過充」:電量100%還繼續插充電。
    雖然現在筆電多有防過充的設計,但適度讓電子活動也是有必要的。
    至少電腦「關機」或「休眠」時盡量把電源線拔掉,因為這段時間電池本來就幾乎不會放電,拔掉可防止不必要的過充。

    3. 使用循環次數(cycle數)僅供參考,並不是越低越好。
    總充電容量還比較有意義,新品的Macbook(Mid2007)電池是5400~5500mAh,長期正常使用也應維持4000mAh以上。
    昨天優仕說他們有工程師cycle數九百多,總充電容量還能到4000+,倒是如果刻意降低cycle數而都不拔電池反而會長期「過充」,並不是好事。

    4. 長期存放(6個月以上)不使用時,最好將電量維持在50%左右再存放。接近0%或100%時長期存放,對電池都很不好。

    5. 需不需電池校正?見仁見智。
    首先要知道電池校正的用意。我們希望電腦讀到的電池資訊是準確的,如果兩者的數據有偏差,就需要「校正」回來。
    Apple建議每兩個月校正一次電池,但除了步驟麻煩又耗時之外,電池校正會刻意「過充」和「用到乾」,這樣對電池本身是否就不太好?
    所以昨天店員說電池校正是見仁見智,因為這不太算是「保養」的動作。如果確實發現電腦顯示的電池資訊不太準確,可以考慮校正一次。


    [Mac] Apple Macbook顯示「電池維修」

    從10.6 Snow Leopard開始,電池充電時會自動檢查,如果充電時點一下進度看到「電池維修」:

    電池維修:電池運作不正常,且您不會被告知其充電狀態,或其剩餘電量。
    請聯絡 Apple 授權的服務供應商(AASP)來檢查您的電腦。在讓電腦接受檢
    查之前,您可以繼續使用電池,而不會對您的電腦造成傷害。

    就代表電池可能有錯誤,建議送回Apple授權經銷商檢查。

    上禮拜五回台北順便帶去檢查,果真在工程師電腦上顯示出"Replace Battery"的紅字,要把顯示出的錯誤碼送給Apple審核。
    他要收回我電池時還猶豫很久,因為我目前在新竹念書,原本考慮等寒假再修比較方便。
    和上次修手腕附近外殼碎裂(睡眠燈上方)一樣,工程師說目前的檢查結果對我比較有利,等到寒假又多使用了兩個月,可能到時候判斷出來是"正常損耗"的黃字,那就一定不能更換(正常的電池損耗不在保固內,但電池本身有錯誤的話則有機會)。
    而且如果Apple到時候如果修改保固政策,可能會有新變數。

    於是在工程師建議下我就留下電池給Apple審核,讓電腦穿露背裝>///<,拿起來後面空空的,感覺好怪。
    使用時要特別小心不可以斷電,不要讓別人有絆到的機會,並且注意備份資料。保險起見我都沒帶出門,好險也沒事。

    昨天(星期三,所以才過了5天)接到電話說已經修好,可以免費換一顆良品,當下決定直接帶筆電殺一趟優仕,省得之後攜帶麻煩。
    超爽的,買兩年之後還可以換新的電池耶!!!

    附上兩張當場拍下來的數據

    循環次數1 總充電容量5491 送修前是32xx Orz
    寄件者 Mac

    iStat Pro說電池健康度100% 送修前是65%
    寄件者 Mac

    關於昨天看到和聽到的電池保養,見下篇blog post。


    2009年9月26日 星期六

    MATLAB R2009b for Mac: A Simple Performance Test

    中文標題:MATLAB R2009b for Mac: 簡單測試文

    前陣子的文章才提到一些關於MATLAB R2009b的消息,對MacOSX Snow Leopard來說,最好的消息就是R2009b for Mac終於是64-bit啦!安裝的時候有個"Select Architecture",可以選擇"Intel"(3630MB)或"Intel 64"(3802MB),或者是都選(4927MB)。

    如果都選的話,安裝結束可以在 /Applications/MATLAB_R2009b -> 顯示套件內容 -> bin 裡分別看到maci和maci64這兩個資料夾。

    裝完以後以預設64-bit執行,可以看到令人感動的初始畫面:


    要以32-bit執行,在MATLAB_R2009b的 右鍵->簡介 中可以選擇「在32位元模式中開啟」:

    甚至在工具程式->活動監視器(Activity Monitor)裡,MATLAB的「種類」也被標示成「Intel (64位元)」呢!這是我第一次看到non-Apple software被標示成64-bit XD。

    至於大家最關心的速度,我先前已經用過R2009a跑了我影像處理簡介的期末Project,並記下數據了。這次我分別用R2009b(32-bit)和R2009b(64-bit)跑了一次,產生以下的結果(in seconds):


    可以看出R2009b(32-bit)除了encode_img1進步12.69%以外,其他幾乎沒進步甚至還變慢Orz。
    不過R2009b(64-bit)數據可就威了,幾乎都能減少10%甚至是20%的時間!
    而且加速原因是64-bit,而不是版本從a變b喔XD。

    夠不夠厲害可能是自由心證啦,不過我是已經覺得很滿意了!

    2009年9月7日 星期一

    [Mac] Adding a keyboard shortcut to "Show Package Contents"

    中文標題:[Mac] 為"顯示套件內容"添加快速鍵


    雖然說一般安裝/使用軟體不會需要這個功能,不過有時比較進階的操作需要對應用程式按右鍵,然後點選"顯示套件內容"來更動一些細節。

    然而對於一些龜毛的使用者,按右鍵(在筆電上就是ctrl+click或是兩指觸控板+click) -> 移動游標 -> 選擇"顯示套件內容"按下去,三個步驟可能還嫌太慢。XD
    如果想要一步完成該怎麼做呢?

    從Leopard開始,系統偏好設定允許我們自訂這個快速鍵囉!
    方法如下(以下screenshots是用Snow Leopard的):
    1. 進入系統偏好設定(System Preferences) -> 鍵盤(Keyboard) ,Leopard的話是鍵盤與滑鼠(Keyboard & Mouse for Leopard)

    2. 在鍵盤快速鍵分頁(Keyboard Shortcuts tab)的"應用程式快速鍵",按一下"+"。

    3. 應用程式選擇"Finder.app",選單名稱打入"顯示套件內容"。
    For English systems, type "Show Package Contents".
    鍵盤快速鍵,就隨便取一個自己喜歡,而且在Finder裡沒有重複的,例如cmd+P。


    如此就新增一筆鍵盤快速鍵了!
    來測試看看Finder,果然對應用程式按下剛剛自訂的快速鍵,就會新開一個視窗並"顯示套件內容了"。
    一般開啟app是用cmd+O,如果顯示套件內容用cmd+P的話,個人覺得蠻方便的,按鍵就在旁邊。

    2009年9月2日 星期三

    [Mac] MATLAB R2009a on Snow Leopard : An Installation Solution

    If you previously installed MATLAB R2009a on OSX 10.5 Leopard, and then upgraded your OS to OSX 10.6 Snow Leopard, the MATLAB program would work fine.

    But if you try to install MATLAB R2009a on Snow Leopard, you will get the following Java exception: (For those who just want to know the solution, go directly to the second image)
    So I went check the log, saying:

    (Sep 03, 2009 01:35:52)Starting activation process.
    (Sep 03, 2009 01:35:52)Performing interactive activation.
    (Sep 03, 2009 01:35:52)MATHWORKS ACTIVATION IS STARTING UP.
    (Sep 03, 2009 01:35:54)com.mathworks.instutil.JNIException: java.lang.UnsatisfiedLinkError: Cant load library: /Applications/MATLAB_R2009a.app/bin/maci64/libinstutil.jnilib
    java.lang.UnsatisfiedLinkError: Cant load library: /Applications/MATLAB_R2009a.app/bin/maci64/libinstutil.jnilib
    com.mathworks.instutil.NativeUtility.(NativeUtility.java:30)
    com.mathworks.instutil.MachineInfo.(MachineInfo.java:41)
    com.mathworks.activationclient.model.ActivationModelImpl.loadNativeLib(ActivationModelImpl.java:228)
    com.mathworks.activationclient.model.ActivationModelImpl.getMachineInfo(ActivationModelImpl.java:211)
    com.mathworks.activationclient.view.ApplicationViewImpl.getMachineInfo(ApplicationViewImpl.java:260)
    com.mathworks.activationclient.view.ApplicationViewImpl.showGUI(ApplicationViewImpl.java:116)
    com.mathworks.activationclient.controller.ApplicationControllerImpl.start(ApplicationControllerImpl.java:118)
    com.mathworks.activationclient.ActivationClientImpl.start(ActivationClientImpl.java:210)
    com.mathworks.activationclient.ActivationApplication.goInteractive(ActivationApplication.java:186)
    com.mathworks.activationclient.ActivationApplication.go(ActivationApplication.java:172)
    com.mathworks.activationclient.ActivationApplication.main(ActivationApplication.java:135)

    (Sep 03, 2009 01:35:54)java.lang.NullPointerException
    com.mathworks.activationclient.view.ApplicationViewImpl.showGUI(ApplicationViewImpl.java:116)
    com.mathworks.activationclient.controller.ApplicationControllerImpl.start(ApplicationControllerImpl.java:118)
    com.mathworks.activationclient.ActivationClientImpl.start(ActivationClientImpl.java:210)
    com.mathworks.activationclient.ActivationApplication.goInteractive(ActivationApplication.java:186)
    com.mathworks.activationclient.ActivationApplication.go(ActivationApplication.java:172)
    com.mathworks.activationclient.ActivationApplication.main(ActivationApplication.java:135)

    (Sep 03, 2009 01:36:10)There was an unexpected exception:
    null

    Then I checked the MATLAB_R2009a.app (right click => Show Package Content), and found that
    there was no such directory "bin/maci64", but only "bin/maci".
    So I copied and renamed it to "maci", ran the installation again. This time I got another exception:


    (Sep 03, 2009 12:26:51)com.mathworks.instutil.JNIException: java.lang.UnsatisfiedLinkError: /Applications/MATLAB_R2009a.app/bin/maci64/libinstutil.jnilib: no suitable image found. Did find: /Applications/MATLAB_R2009a.app/bin/maci/libinstutil.jnilib: mach-o, but wrong architecture /Applications/MATLAB_R2009a.app/bin/maci64/libinstutil.jnilib: mach-o, but wrong architecture
    java.lang.UnsatisfiedLinkError: /Applications/MATLAB_R2009a.app/bin/maci64/libinstutil.jnilib: no suitable image found. Did find: /Applications/MATLAB_R2009a.app/bin/maci/libinstutil.jnilib: mach-o, but wrong architecture /Applications/MATLAB_R2009a.app/bin/maci64/libinstutil.jnilib: mach-o, but wrong architecture
    ...

    This "wrong architecture" message reminded me to turn to Java settings for the final trial.
    (After all, the activation program was written in Java :p)
    And it worked!!

    Here's the solution:
    1. Use Finder to go to /Applications/Utilities/Java Preferences.
    2. In the Java Application section, set 32-bit as the first priority over the 64-bit by dragging it upward.
    3. Run the MATLAB R2009a installation again.

    As I remember, Java in Leopard had the Java SE 5 (32-bit) as the first priority, but Snow Leopard does not! (all Java SE 6, and 64-bit first)

    Hopefully you will finally see this activation window. I believe everyone knows what to do next :DD
    Upon success, you can see that MATLAB R2009a runs in 32-bit mode.


    I also saw some good news about the coming R2009b release from MATLAB Central blog.
    The R2009b will be a 64-bit version, and will move one step closer to being entirely independent of X11. However the latter is going to take another couple of releases to accomplish...

    I really look forward to the day when 64-bit + native MATLAB application become possible :)

    [Mac] RAM Disk Utility Pro 1.1 on Snow Leopard

    之前"關機需要30+"秒的兇手抓到了= =+

    RAM Disk Utility Pro - 我第一個掏錢支持的國內軟體 雖然很便宜

    剛剛測試v1.1 on OSX10.6的時候得到的結論:
    開啟RDU:20秒
    掛載/卸載:0秒
    關閉RDU:16秒
    最可怕的是,如果沒先把所有掛載的RAM Disk卸載,就按下關機/重開機的話,
    會在沒有桌布、圖示的藍畫面跑時鐘busy icon,長達30~40+秒Orz。
    但是有先把RAM Disk都卸載,並關閉RDU的話,關機就可達到Snow Leopard宣
    稱的那麼快速。(我5秒)

    後來開機至"外接硬碟"的Leopard測試,發現沒有特別慢的問題:
    開啟RDU:5秒
    關閉RDU:忘了,反正也很快
    然後RAM Disk掛載時直接重開機,跑出來也是正常的重開機速度。
    btw,10.5好像圖示一律都會隱藏,但10.6在側邊欄藏不住?

    我的機器是2007暑假買的MacBook, Intel Cuo 2 Duo 2.16 GHz, DDR2 3G RAM,
    照理說應該不會這麼慢的...

    已經寄信給原作者EShensh了,希望能有下文T.T


    [Mac] clean install並用硬碟安裝Snow Leopard

    這是我的心得


    由於後來證實Snow Leopard就是完整版 不需要透過現有作業系統才能升級


    所以到底要直接升級?還是砍掉重練呢?



    p.s.後來抓到讓我Snow Leopard異常變慢的兇手了 是我運氣不好Orz


    所以照PTT板友的說法,可以不用照Windows穩定系統的邏輯來砍掉重灌,直接升級也是很夠的,砍掉重練的必要性就很低了:DD


    不過還是提供一下clean install + 備份還原的方法:

    (clean install需要用到Time Machine和外接硬碟備份)

    (也包含把買來的Snow Leopard做成dmg,並用硬碟安裝的方法[2.1~2.4])


    1. 先用Time Machine備份原本的系統(直接升級者不用)


    2. 如果要加速,可以考慮用"硬碟"來裝Snow Leopard :p

    單純用光碟的話可跳讀2.4。


    2.1 用Disk Utility把硬碟多切出一塊HFS+磁碟區(保險一點切個8~10G)。


    2.2 用Disk Utility把買來的Snow Leopard轉成dmg (謎版的就不用啦XD):


    檔案 -> 新增 -> "Mac OS X Install DVD"的磁碟映像檔 -> 存檔。

    (這個需要20分鐘甚至更久喔 可以同時做其他事)


    2.3 如果直接用Disk Utility的"回復" -> 選擇"來源":映像檔 和 "目的":新切磁區

    的話,會出現錯誤。後來發現先執行 映像檔 -> 掃描回復所需的映像檔 ,

    掃過一遍dmg就可以用"回復"來裝到新磁區了。


    2.4 重開機,按option選擇用剛切的磁碟區開機,進入OSX安裝程式。

    沒錯!2.3的disk copy步驟就是把硬碟磁區弄得像光碟一樣可開機。

    如果是選擇用光碟安裝,那按option後選擇光碟即可。

    然後在正式安裝之前用工具 -> 磁碟工具程式把要砍掉重練的磁區清除。

    (當然只有砍掉重練的人要清,直接升級的就不用了。)


    2.5 接著就是典型的Mac OS X安裝啦!

    據統計用光碟要45分鐘,用硬碟只要30分鐘。

    不過有備份OS光碟習慣的人會選用硬碟,畢竟以後再重灌也方便嘛XD


    3. 第一次進OSX,並還原Time Machine的備份


    3.1 重開機後有問到"使用者名稱"的時候請小心!

    備份的使用者名稱不能和新系統的使用者名稱相同,否則無法由Time Machine還原!

    所以就暫時取另一個名稱,等到還原以後再刪掉這個暫時的使用者。

    (如果不小心取到一樣的,那就暫時不要還原,到系統偏好設定->使用者的地方:

    建立一個具有管理者權限的使用者 -> 然後把同名的刪掉)


    3.2 當安裝程式問到要不要轉移系統時,選擇從Time Machine來還原備份。

    也可選擇稍後再從"系統轉移輔助程式"來還原,看個人習慣。

    如果有3.1臨時多建立使用者情形時,結束以後可以把這些暫時使用者刪掉。


    4. 完成

    如果需要Xcode的話,可考慮順便裝,因為就在Snow Leopard的光碟/磁碟區裡。

    下一步如果有用boot camp的人應該就弄這個吧。不過比較討厭的是,

    跑boot camp前要先把磁碟區合併回一個,最後就只能一個HFS+和一個Win並存。

    如果想要嘗試boot camp + multiple partitions,那就是另一個可怕的地獄了Orz。



    Powered By Blogger

    Google Analytics