推薦軟硬體、網站

Google Adsense

aNobii網路書櫃

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日 星期五

Thoughts on Apple iPad

Thoughts on Apple iPad  by iPluto

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。


Powered By Blogger

Google Analytics